vistaview 0.2.0 → 0.3.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 +89 -39
- package/dist/lib/components.d.ts +7 -3
- package/dist/lib/components.d.ts.map +1 -1
- package/dist/lib/defaults.d.ts +9 -0
- package/dist/lib/defaults.d.ts.map +1 -0
- package/dist/lib/types.d.ts +83 -0
- package/dist/lib/types.d.ts.map +1 -0
- package/dist/lib/utils.d.ts +4 -5
- package/dist/lib/utils.d.ts.map +1 -1
- package/dist/lib/vista-view.d.ts +57 -65
- package/dist/lib/vista-view.d.ts.map +1 -1
- package/dist/react.cjs +1 -1
- package/dist/react.d.ts +6 -7
- package/dist/react.d.ts.map +1 -1
- package/dist/react.js +55 -30
- package/dist/solid.cjs +1 -1
- package/dist/solid.d.ts +11 -5
- package/dist/solid.d.ts.map +1 -1
- package/dist/solid.js +37 -21
- package/dist/svelte.cjs +1 -1
- package/dist/svelte.d.ts +3 -5
- package/dist/svelte.d.ts.map +1 -1
- package/dist/svelte.js +17 -21
- package/dist/vistaview.cjs +16 -1
- package/dist/vistaview.css +1 -2
- package/dist/vistaview.d.ts +11 -9
- package/dist/vistaview.d.ts.map +1 -1
- package/dist/vistaview.js +680 -2
- package/dist/vistaview.umd.js +16 -0
- package/dist/vue.cjs +1 -1
- package/dist/vue.d.ts +19 -6
- package/dist/vue.d.ts.map +1 -1
- package/dist/vue.js +48 -21
- package/package.json +3 -9
- package/dist/types.d.ts +0 -2
- package/dist/types.d.ts.map +0 -1
- package/dist/vistaview-B7UMydz4.cjs +0 -14
- package/dist/vistaview-D-ZOkDpV.js +0 -452
package/README.md
CHANGED
|
@@ -24,10 +24,10 @@ npm install vistaview
|
|
|
24
24
|
|
|
25
25
|
```html
|
|
26
26
|
<div id="gallery">
|
|
27
|
-
<a href="/images/photo1-full.jpg"
|
|
27
|
+
<a href="/images/photo1-full.jpg">
|
|
28
28
|
<img src="/images/photo1-thumb.jpg" alt="Photo 1" />
|
|
29
29
|
</a>
|
|
30
|
-
<a href="/images/photo2-full.jpg"
|
|
30
|
+
<a href="/images/photo2-full.jpg">
|
|
31
31
|
<img src="/images/photo2-thumb.jpg" alt="Photo 2" />
|
|
32
32
|
</a>
|
|
33
33
|
</div>
|
|
@@ -37,7 +37,7 @@ npm install vistaview
|
|
|
37
37
|
import 'vistaview/style.css';
|
|
38
38
|
|
|
39
39
|
vistaView({
|
|
40
|
-
|
|
40
|
+
elements: '#gallery a',
|
|
41
41
|
});
|
|
42
42
|
</script>
|
|
43
43
|
```
|
|
@@ -46,13 +46,7 @@ npm install vistaview
|
|
|
46
46
|
|
|
47
47
|
```html
|
|
48
48
|
<div id="gallery">
|
|
49
|
-
<img
|
|
50
|
-
src="/images/thumb1.jpg"
|
|
51
|
-
data-vistaview-src="/images/full1.jpg"
|
|
52
|
-
data-vistaview-width="1920"
|
|
53
|
-
data-vistaview-height="1080"
|
|
54
|
-
alt="Photo 1"
|
|
55
|
-
/>
|
|
49
|
+
<img src="/images/thumb1.jpg" data-vistaview-src="/images/full1.jpg" alt="Photo 1" />
|
|
56
50
|
</div>
|
|
57
51
|
```
|
|
58
52
|
|
|
@@ -77,8 +71,8 @@ vistaView({
|
|
|
77
71
|
```js
|
|
78
72
|
vistaView({
|
|
79
73
|
elements: [
|
|
80
|
-
{ src: '/images/photo1.jpg',
|
|
81
|
-
{ src: '/images/photo2.jpg',
|
|
74
|
+
{ src: '/images/photo1.jpg', thumb: '/images/thumb1.jpg', alt: 'Photo 1' },
|
|
75
|
+
{ src: '/images/photo2.jpg', thumb: '/images/thumb2.jpg', alt: 'Photo 2' },
|
|
82
76
|
],
|
|
83
77
|
});
|
|
84
78
|
```
|
|
@@ -86,10 +80,11 @@ vistaView({
|
|
|
86
80
|
## Options
|
|
87
81
|
|
|
88
82
|
```ts
|
|
83
|
+
import { vistaView, vistaViewDownload } from 'vistaview'
|
|
84
|
+
|
|
89
85
|
vistaView({
|
|
90
|
-
// Required: specify
|
|
91
|
-
|
|
92
|
-
elements: string | NodeList | VistaViewImage[], // Selector, NodeList, or array of images
|
|
86
|
+
// Required: specify elements (string selector, NodeList, or array)
|
|
87
|
+
elements: string | NodeList | VistaViewImage[],
|
|
93
88
|
|
|
94
89
|
// Optional configuration
|
|
95
90
|
animationDurationBase: 333, // Base animation duration in ms (default: 333)
|
|
@@ -97,17 +92,30 @@ vistaView({
|
|
|
97
92
|
detectReducedMotion: true, // Respect prefers-reduced-motion (default: true)
|
|
98
93
|
zoomStep: 500, // Pixels to zoom per step (default: 500)
|
|
99
94
|
maxZoomLevel: 2, // Maximum zoom multiplier (default: 2)
|
|
100
|
-
touchSpeedThreshold:
|
|
95
|
+
touchSpeedThreshold: 0.7, // Swipe speed threshold for navigation (default: 0.7)
|
|
96
|
+
preloads: 1, // Number of adjacent images to preload on each side (default: 1)
|
|
97
|
+
keyboardListeners: true, // Enable keyboard navigation (default: true)
|
|
101
98
|
|
|
102
99
|
// Control placement (defaults shown)
|
|
103
100
|
controls: {
|
|
104
101
|
topLeft: ['indexDisplay'],
|
|
105
|
-
topRight: ['zoomIn', 'zoomOut',
|
|
102
|
+
topRight: ['zoomIn', 'zoomOut', vistaViewDownload(), 'close'],
|
|
106
103
|
topCenter: [],
|
|
107
104
|
bottomLeft: [],
|
|
108
105
|
bottomCenter: ['description'],
|
|
109
106
|
bottomRight: [],
|
|
110
107
|
},
|
|
108
|
+
|
|
109
|
+
// Events
|
|
110
|
+
onOpen: (data) => {}, // Called when lightbox opens
|
|
111
|
+
onClose: (data) => {}, // Called when lightbox closes
|
|
112
|
+
onImageView: (data) => {}, // Called when viewing an image (including on open)
|
|
113
|
+
|
|
114
|
+
// Custom behavior functions (advanced)
|
|
115
|
+
initFunction: (vistaView) => {}, // Custom initialization
|
|
116
|
+
setupFunction: (data) => {}, // Custom setup when navigating
|
|
117
|
+
transitionFunction: (data) => image, // Custom transition animation
|
|
118
|
+
closeFunction: (vistaView) => {}, // Custom cleanup on close
|
|
111
119
|
});
|
|
112
120
|
```
|
|
113
121
|
|
|
@@ -118,7 +126,7 @@ vistaView({
|
|
|
118
126
|
| `indexDisplay` | Shows current image index (e.g., "1 / 5") |
|
|
119
127
|
| `zoomIn` | Zoom into the image |
|
|
120
128
|
| `zoomOut` | Zoom out of the image |
|
|
121
|
-
| `
|
|
129
|
+
| `vistaViewDownload()` | Download the current image |
|
|
122
130
|
| `close` | Close the lightbox |
|
|
123
131
|
| `description` | Shows the image alt text |
|
|
124
132
|
|
|
@@ -127,15 +135,15 @@ vistaView({
|
|
|
127
135
|
Controls are merged with defaults—only the positions you specify are replaced. Provide an object with `name`, `icon`, and `onClick`:
|
|
128
136
|
|
|
129
137
|
```js
|
|
130
|
-
import { vistaView,
|
|
138
|
+
import { vistaView, vistaViewDownload } from 'vistaview';
|
|
131
139
|
|
|
132
140
|
vistaView({
|
|
133
|
-
|
|
141
|
+
elements: '#gallery a',
|
|
134
142
|
controls: {
|
|
135
143
|
topRight: [
|
|
136
144
|
'zoomIn',
|
|
137
145
|
'zoomOut',
|
|
138
|
-
|
|
146
|
+
vistaViewDownload(), // Example: Built-in download helper
|
|
139
147
|
{
|
|
140
148
|
name: 'share',
|
|
141
149
|
icon: '<svg>...</svg>',
|
|
@@ -149,6 +157,39 @@ vistaView({
|
|
|
149
157
|
});
|
|
150
158
|
```
|
|
151
159
|
|
|
160
|
+
## Exported Types & Functions
|
|
161
|
+
|
|
162
|
+
VistaView exports all types for TypeScript users, plus default behavior functions for customization:
|
|
163
|
+
|
|
164
|
+
```ts
|
|
165
|
+
import {
|
|
166
|
+
vistaView,
|
|
167
|
+
vistaViewDownload,
|
|
168
|
+
DefaultOptions,
|
|
169
|
+
// Default behavior functions (can be used as starting points)
|
|
170
|
+
defaultInit,
|
|
171
|
+
defaultSetup,
|
|
172
|
+
defaultTransition,
|
|
173
|
+
defaultClose,
|
|
174
|
+
setTouchActions,
|
|
175
|
+
removeTouchActions,
|
|
176
|
+
} from 'vistaview';
|
|
177
|
+
|
|
178
|
+
import type {
|
|
179
|
+
VistaViewParams, // Full options including `elements`
|
|
180
|
+
VistaViewOptions, // Base options (without `elements`)
|
|
181
|
+
VistaViewImage, // Image object: { src, alt?, thumb? }
|
|
182
|
+
VistaViewImageIndexed, // Image with index and DOM references
|
|
183
|
+
VistaViewInterface, // Return type from vistaView()
|
|
184
|
+
VistaViewData, // Data passed to events/functions
|
|
185
|
+
VistaViewSetupFunction, // Type for setupFunction
|
|
186
|
+
VistaViewTransitionFunction, // Type for transitionFunction
|
|
187
|
+
VistaViewCloseFunction, // Type for closeFunction
|
|
188
|
+
VistaViewInitFunction, // Type for initFunction
|
|
189
|
+
VistaViewCustomControl, // Custom control definition
|
|
190
|
+
} from 'vistaview';
|
|
191
|
+
```
|
|
192
|
+
|
|
152
193
|
## Styling
|
|
153
194
|
|
|
154
195
|
VistaView uses CSS custom properties for easy theming:
|
|
@@ -165,13 +206,11 @@ VistaView uses CSS custom properties for easy theming:
|
|
|
165
206
|
|
|
166
207
|
## Data Attributes
|
|
167
208
|
|
|
168
|
-
| Attribute
|
|
169
|
-
|
|
|
170
|
-
| `data-vistaview-src`
|
|
171
|
-
| `data-vistaview-
|
|
172
|
-
| `data-vistaview-
|
|
173
|
-
| `data-vistaview-alt` | Alt text for the image |
|
|
174
|
-
| `data-vistaview-smallsrc` | Thumbnail URL (optional) |
|
|
209
|
+
| Attribute | Description |
|
|
210
|
+
| ---------------------- | ------------------------------------------ |
|
|
211
|
+
| `data-vistaview-src` | Full-size image URL (for `<img>` elements) |
|
|
212
|
+
| `data-vistaview-alt` | Alt text for the image |
|
|
213
|
+
| `data-vistaview-thumb` | Thumbnail URL (optional) |
|
|
175
214
|
|
|
176
215
|
## Keyboard Navigation
|
|
177
216
|
|
|
@@ -191,22 +230,33 @@ VistaView works in all modern browsers (Chrome, Firefox, Safari, Edge).
|
|
|
191
230
|
|
|
192
231
|
VistaView provides official bindings for popular frameworks:
|
|
193
232
|
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
233
|
+
- **React** — `useVistaView` hook and `<VistaView>` component
|
|
234
|
+
- **Vue 3** — `useVistaView` composable and `<VistaView>` component
|
|
235
|
+
- **Svelte** — `useVistaView` hook
|
|
236
|
+
- **Solid** — `useVistaView` hook and `<VistaView>` component
|
|
237
|
+
- **Angular** — Manual setup example
|
|
238
|
+
- **Vanilla JS** — Works out of the box
|
|
197
239
|
|
|
198
|
-
|
|
199
|
-
import { useVistaView } from 'vistaview/vue';
|
|
240
|
+
👉 **[See full framework integration guide](./framework-integration.md)**
|
|
200
241
|
|
|
201
|
-
|
|
202
|
-
import { useVistaView } from 'vistaview/svelte';
|
|
242
|
+
### Quick Example (React)
|
|
203
243
|
|
|
204
|
-
|
|
205
|
-
import { useVistaView } from 'vistaview/
|
|
244
|
+
```tsx
|
|
245
|
+
import { useVistaView } from 'vistaview/react';
|
|
246
|
+
import 'vistaview/style.css';
|
|
247
|
+
|
|
248
|
+
function Gallery() {
|
|
249
|
+
const { open, close, next, prev } = useVistaView({ elements: '#gallery a' });
|
|
250
|
+
return (
|
|
251
|
+
<div id="gallery">
|
|
252
|
+
<a href="/full.jpg">
|
|
253
|
+
<img src="/thumb.jpg" alt="Photo" />
|
|
254
|
+
</a>
|
|
255
|
+
</div>
|
|
256
|
+
);
|
|
257
|
+
}
|
|
206
258
|
```
|
|
207
259
|
|
|
208
|
-
See [framework-integration.md](./framework-integration.md) for detailed examples.
|
|
209
|
-
|
|
210
260
|
## License
|
|
211
261
|
|
|
212
262
|
MIT
|
package/dist/lib/components.d.ts
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
import { VistaViewCustomControl,
|
|
2
|
-
export declare function
|
|
3
|
-
export declare function
|
|
1
|
+
import { VistaViewCustomControl, VistaViewImageIndexed, VistaViewOptions } from './types';
|
|
2
|
+
export declare function vistaViewDownload(): VistaViewCustomControl;
|
|
3
|
+
export declare function vistaViewItem(el: VistaViewImageIndexed, positionalIndex?: number): HTMLDivElement;
|
|
4
|
+
export declare function vistaViewComponent({ controls, isReducedMotion, }: {
|
|
5
|
+
controls: VistaViewOptions['controls'];
|
|
6
|
+
isReducedMotion: boolean;
|
|
7
|
+
}): DocumentFragment;
|
|
4
8
|
//# sourceMappingURL=components.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../src/lib/components.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,sBAAsB,EACtB,
|
|
1
|
+
{"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../src/lib/components.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,sBAAsB,EACtB,qBAAqB,EACrB,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAWjB,wBAAgB,iBAAiB,IAAI,sBAAsB,CAgB1D;AAsBD,wBAAgB,aAAa,CAAC,EAAE,EAAE,qBAAqB,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,cAAc,CAuBjG;AAED,wBAAgB,kBAAkB,CAAC,EACjC,QAAQ,EACR,eAAe,GAChB,EAAE;IACD,QAAQ,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC;IACvC,eAAe,EAAE,OAAO,CAAC;CAC1B,GAAG,gBAAgB,CAiBnB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { VistaViewCloseFunction, VistaViewSetupFunction, VistaViewTransitionFunction } from './types';
|
|
2
|
+
import { VistaView } from './vista-view';
|
|
3
|
+
export declare function setTouchActions(vistaView: VistaView): void;
|
|
4
|
+
export declare function removeTouchActions(vistaView: VistaView): void;
|
|
5
|
+
export declare const defaultInit: (vistaView: VistaView) => void;
|
|
6
|
+
export declare const defaultSetup: VistaViewSetupFunction;
|
|
7
|
+
export declare const defaultTransition: VistaViewTransitionFunction;
|
|
8
|
+
export declare const defaultClose: VistaViewCloseFunction;
|
|
9
|
+
//# sourceMappingURL=defaults.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/lib/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,sBAAsB,EACtB,2BAA2B,EAC5B,MAAM,SAAS,CAAC;AAEjB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAQ9C,wBAAgB,eAAe,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAoG1D;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAO7D;AAMD,eAAO,MAAM,WAAW,GAAI,WAAW,SAAS,SAE/C,CAAC;AAKF,eAAO,MAAM,YAAY,EAAE,sBAsB1B,CAAC;AAIF,eAAO,MAAM,iBAAiB,EAAE,2BAiD/B,CAAC;AAIF,eAAO,MAAM,YAAY,EAAE,sBAK1B,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { VistaView } from './vista-view';
|
|
2
|
+
export type VistaViewElmProps = {
|
|
3
|
+
objectFit: string;
|
|
4
|
+
borderRadius: string;
|
|
5
|
+
objectPosition: string;
|
|
6
|
+
overflow: string;
|
|
7
|
+
top: number;
|
|
8
|
+
left: number;
|
|
9
|
+
width: number;
|
|
10
|
+
height: number;
|
|
11
|
+
naturalWidth?: number;
|
|
12
|
+
naturalHeight?: number;
|
|
13
|
+
};
|
|
14
|
+
export type VistaViewImage = {
|
|
15
|
+
src: string;
|
|
16
|
+
alt?: string;
|
|
17
|
+
thumb?: string;
|
|
18
|
+
};
|
|
19
|
+
export type VistaViewImageIndexed = {
|
|
20
|
+
index: number;
|
|
21
|
+
imageElm?: HTMLImageElement;
|
|
22
|
+
anchorElm?: HTMLAnchorElement;
|
|
23
|
+
} & VistaViewImage;
|
|
24
|
+
export type VistaViewOptions = {
|
|
25
|
+
animationDurationBase?: number;
|
|
26
|
+
initialZIndex?: number;
|
|
27
|
+
detectReducedMotion?: boolean;
|
|
28
|
+
zoomStep?: number;
|
|
29
|
+
maxZoomLevel?: number;
|
|
30
|
+
touchSpeedThreshold?: number;
|
|
31
|
+
preloads?: number;
|
|
32
|
+
keyboardListeners?: boolean;
|
|
33
|
+
controls?: {
|
|
34
|
+
topLeft?: (VistaViewDefaultControls | VistaViewCustomControl)[];
|
|
35
|
+
topRight?: (VistaViewDefaultControls | VistaViewCustomControl)[];
|
|
36
|
+
topCenter?: (VistaViewDefaultControls | VistaViewCustomControl)[];
|
|
37
|
+
bottomCenter?: (VistaViewDefaultControls | VistaViewCustomControl)[];
|
|
38
|
+
bottomLeft?: (VistaViewDefaultControls | VistaViewCustomControl)[];
|
|
39
|
+
bottomRight?: (VistaViewDefaultControls | VistaViewCustomControl)[];
|
|
40
|
+
};
|
|
41
|
+
onImageView?: (params: VistaViewData) => void;
|
|
42
|
+
onOpen?: (params: VistaViewData) => void;
|
|
43
|
+
onClose?: (params: VistaViewData) => void;
|
|
44
|
+
transitionFunction?: VistaViewTransitionFunction;
|
|
45
|
+
setupFunction?: VistaViewSetupFunction;
|
|
46
|
+
closeFunction?: VistaViewCloseFunction;
|
|
47
|
+
initFunction?: VistaViewInitFunction;
|
|
48
|
+
};
|
|
49
|
+
export type VistaViewDefaultControls = 'indexDisplay' | 'zoomIn' | 'zoomOut' | 'close' | 'description';
|
|
50
|
+
export type VistaViewCustomControl = {
|
|
51
|
+
name: string;
|
|
52
|
+
icon: string;
|
|
53
|
+
onClick: (v: VistaViewImageIndexed) => void | Promise<void>;
|
|
54
|
+
};
|
|
55
|
+
export type VistaViewData = {
|
|
56
|
+
htmlElements: {
|
|
57
|
+
from: HTMLElement[] | null;
|
|
58
|
+
to: HTMLElement[] | null;
|
|
59
|
+
};
|
|
60
|
+
images: {
|
|
61
|
+
from: VistaViewImageIndexed[] | null;
|
|
62
|
+
to: VistaViewImageIndexed[] | null;
|
|
63
|
+
};
|
|
64
|
+
index: {
|
|
65
|
+
from: number | null;
|
|
66
|
+
to: number | null;
|
|
67
|
+
};
|
|
68
|
+
via: {
|
|
69
|
+
next: boolean;
|
|
70
|
+
prev: boolean;
|
|
71
|
+
};
|
|
72
|
+
container: HTMLElement;
|
|
73
|
+
elements: NodeListOf<HTMLElement> | VistaViewImage[];
|
|
74
|
+
isReducedMotion: boolean;
|
|
75
|
+
navActive: boolean;
|
|
76
|
+
isZoomed: HTMLImageElement | false;
|
|
77
|
+
options: VistaViewOptions;
|
|
78
|
+
};
|
|
79
|
+
export type VistaViewTransitionFunction = (params: VistaViewData) => VistaViewImageIndexed | Promise<VistaViewImageIndexed>;
|
|
80
|
+
export type VistaViewSetupFunction = (params: VistaViewData) => void;
|
|
81
|
+
export type VistaViewCloseFunction = (vistaView: VistaView) => void;
|
|
82
|
+
export type VistaViewInitFunction = (vistaView: VistaView) => void;
|
|
83
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/utils.d.ts
CHANGED
|
@@ -1,16 +1,15 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare function getElmProperties(elm: HTMLElement):
|
|
1
|
+
import { VistaViewElmProps } from './types';
|
|
2
|
+
export declare function getElmProperties(elm: HTMLElement): VistaViewElmProps;
|
|
3
3
|
export declare function createTrustedHtml(htmlString: string): DocumentFragment;
|
|
4
4
|
export declare function isNotZeroCssValue(value?: string): false | string | undefined;
|
|
5
|
-
export declare function
|
|
5
|
+
export declare function getFittedSize(img: HTMLImageElement): {
|
|
6
6
|
width: number;
|
|
7
7
|
height: number;
|
|
8
8
|
};
|
|
9
|
-
export declare function
|
|
9
|
+
export declare function getFullSizeDim(img: HTMLImageElement): {
|
|
10
10
|
width: number;
|
|
11
11
|
height: number;
|
|
12
12
|
};
|
|
13
|
-
export declare function makeFullScreenContain(img: HTMLImageElement, setDataAttribute?: boolean): void;
|
|
14
13
|
export declare function getMaxMinZoomLevels(currentWidth: number, currentHeight: number): {
|
|
15
14
|
maxDiffX: number;
|
|
16
15
|
minDiffY: number;
|
package/dist/lib/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEjD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,WAAW,GAAG,iBAAiB,CAepE;AAyBD,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB,CAQtE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,CAI5E;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,gBAAgB,GAAG;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CA8DA;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,gBAAgB,GAAG;IACrD,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAwCA;AAED,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,GACpB;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAgBA"}
|
package/dist/lib/vista-view.d.ts
CHANGED
|
@@ -1,84 +1,76 @@
|
|
|
1
|
-
|
|
2
|
-
objectFit?: string;
|
|
3
|
-
borderRadius?: string;
|
|
4
|
-
objectPosition?: string;
|
|
5
|
-
overflow?: string;
|
|
6
|
-
};
|
|
7
|
-
export type VistaViewImage = {
|
|
8
|
-
src: string;
|
|
9
|
-
width: number;
|
|
10
|
-
height: number;
|
|
11
|
-
alt?: string;
|
|
12
|
-
smallSrc?: string;
|
|
13
|
-
anchor?: HTMLAnchorElement;
|
|
14
|
-
image?: HTMLImageElement;
|
|
15
|
-
onClick?: (e: Event) => void;
|
|
16
|
-
};
|
|
17
|
-
export type VistaViewOptions = {
|
|
18
|
-
animationDurationBase?: number;
|
|
19
|
-
initialZIndex?: number;
|
|
20
|
-
detectReducedMotion?: boolean;
|
|
21
|
-
zoomStep?: number;
|
|
22
|
-
maxZoomLevel?: number;
|
|
23
|
-
touchSpeedThreshold?: number;
|
|
24
|
-
controls?: {
|
|
25
|
-
topLeft?: (VistaViewDefaultControls | VistaViewCustomControl)[];
|
|
26
|
-
topRight?: (VistaViewDefaultControls | VistaViewCustomControl)[];
|
|
27
|
-
topCenter?: (VistaViewDefaultControls | VistaViewCustomControl)[];
|
|
28
|
-
bottomCenter?: (VistaViewDefaultControls | VistaViewCustomControl)[];
|
|
29
|
-
bottomLeft?: (VistaViewDefaultControls | VistaViewCustomControl)[];
|
|
30
|
-
bottomRight?: (VistaViewDefaultControls | VistaViewCustomControl)[];
|
|
31
|
-
};
|
|
32
|
-
};
|
|
33
|
-
export type VistaViewDefaultControls = 'indexDisplay' | 'zoomIn' | 'zoomOut' | 'download' | 'close' | 'description';
|
|
34
|
-
export type VistaViewCustomControl = {
|
|
35
|
-
name: string;
|
|
36
|
-
icon: string;
|
|
37
|
-
onClick: (v: VistaViewImage) => void;
|
|
38
|
-
};
|
|
1
|
+
import { VistaViewCustomControl, VistaViewImage, VistaViewImageIndexed, VistaViewOptions } from './types';
|
|
39
2
|
export declare const DefaultOptions: {
|
|
40
3
|
detectReducedMotion: boolean;
|
|
4
|
+
animationDurationBase: number;
|
|
41
5
|
zoomStep: number;
|
|
42
6
|
maxZoomLevel: number;
|
|
43
7
|
touchSpeedThreshold: number;
|
|
8
|
+
preloads: number;
|
|
9
|
+
keyboardListeners: boolean;
|
|
44
10
|
controls: VistaViewOptions["controls"];
|
|
45
11
|
};
|
|
12
|
+
export declare const GlobalVistaState: {
|
|
13
|
+
somethingOpened: VistaView | null;
|
|
14
|
+
};
|
|
46
15
|
export declare class VistaView {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
16
|
+
options: VistaViewOptions;
|
|
17
|
+
elements: NodeListOf<HTMLElement> | VistaViewImage[];
|
|
18
|
+
isReducedMotion: boolean;
|
|
19
|
+
currentIndex: {
|
|
20
|
+
_value: number | null;
|
|
21
|
+
_vistaView: VistaView | null;
|
|
22
|
+
_via: {
|
|
23
|
+
next: boolean;
|
|
24
|
+
prev: boolean;
|
|
25
|
+
};
|
|
26
|
+
get value(): number | null;
|
|
27
|
+
set value(v: number);
|
|
28
|
+
via: {
|
|
29
|
+
next: boolean;
|
|
30
|
+
prev: boolean;
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
rootElm: HTMLElement | null;
|
|
34
|
+
imageContainerElm: HTMLElement | null;
|
|
35
|
+
customControls: {
|
|
36
|
+
[key: string]: VistaViewCustomControl;
|
|
37
|
+
};
|
|
38
|
+
currentImages: VistaViewImageIndexed[] | null;
|
|
39
|
+
currentItems: HTMLDivElement[] | null;
|
|
40
|
+
navActive: boolean;
|
|
41
|
+
isZoomed: HTMLImageElement | false;
|
|
42
|
+
private onClickElements;
|
|
43
|
+
private onResizeHandler;
|
|
44
|
+
private onKeyDown;
|
|
45
|
+
private userSetup;
|
|
46
|
+
private userTransition;
|
|
47
|
+
private userClose;
|
|
48
|
+
private userInit;
|
|
60
49
|
private onZoomedPointerDown;
|
|
61
50
|
private onZoomedPointerMove;
|
|
62
51
|
private onZoomedPointerUp;
|
|
63
|
-
|
|
64
|
-
private
|
|
65
|
-
private onPointerUp;
|
|
66
|
-
private onKeyDown;
|
|
67
|
-
constructor(elements: VistaViewImage[], options?: VistaViewOptions);
|
|
52
|
+
constructor(elements: NodeListOf<HTMLElement> | VistaViewImage[], options?: VistaViewOptions);
|
|
53
|
+
private swap;
|
|
68
54
|
private setZoomed;
|
|
69
|
-
private setIndexDisplay;
|
|
70
|
-
private setCurrentDescription;
|
|
71
|
-
private getAnimationDurationBase;
|
|
72
55
|
private zoomIn;
|
|
73
56
|
private zoomOut;
|
|
74
57
|
private clearZoom;
|
|
75
|
-
private
|
|
76
|
-
private
|
|
77
|
-
private
|
|
78
|
-
|
|
79
|
-
|
|
58
|
+
private getImages;
|
|
59
|
+
private setInitialDimPos;
|
|
60
|
+
private updateZoomButtonsVisibility;
|
|
61
|
+
private loadImages;
|
|
62
|
+
private setIndexDisplay;
|
|
63
|
+
private setCurrentDescription;
|
|
64
|
+
private getCurrentIndexes;
|
|
65
|
+
private setKeyboardListeners;
|
|
66
|
+
private setResizeListeners;
|
|
67
|
+
open(startIndex?: number): void;
|
|
68
|
+
close(wait?: boolean): Promise<void>;
|
|
80
69
|
destroy(): void;
|
|
81
|
-
view(index: number
|
|
70
|
+
view(index: number, state?: {
|
|
71
|
+
next: boolean;
|
|
72
|
+
prev: boolean;
|
|
73
|
+
}): void;
|
|
82
74
|
next(): void;
|
|
83
75
|
prev(): void;
|
|
84
76
|
getCurrentIndex(): number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vista-view.d.ts","sourceRoot":"","sources":["../../src/lib/vista-view.ts"],"names":[],"mappings":"AAUA,
|
|
1
|
+
{"version":3,"file":"vista-view.d.ts","sourceRoot":"","sources":["../../src/lib/vista-view.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAIV,sBAAsB,EACtB,cAAc,EACd,qBAAqB,EACrB,gBAAgB,EAEjB,MAAM,SAAS,CAAC;AAIjB,eAAO,MAAM,cAAc;;;;;;;;cAcpB,gBAAgB,CAAC,UAAU,CAAC;CAClC,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE;IAAE,eAAe,EAAE,SAAS,GAAG,IAAI,CAAA;CAEjE,CAAC;AAEF,qBAAa,SAAS;IACpB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,QAAQ,EAAE,UAAU,CAAC,WAAW,CAAC,GAAG,cAAc,EAAE,CAAC;IACrD,eAAe,EAAE,OAAO,CAAC;IACzB,YAAY;gBACM,MAAM,GAAG,IAAI;oBACT,SAAS,GAAG,IAAI;;;;;qBAOvB,MAAM,GAAG,IAAI;qBALb,MAAM;aAWR;YAAE,IAAI,EAAE,OAAO,CAAC;YAAC,IAAI,EAAE,OAAO,CAAA;SAAE;MAG3C;IAEF,OAAO,EAAE,WAAW,GAAG,IAAI,CAAQ;IACnC,iBAAiB,EAAE,WAAW,GAAG,IAAI,CAAQ;IAC7C,cAAc,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,sBAAsB,CAAA;KAAE,CAAM;IAC/D,aAAa,EAAE,qBAAqB,EAAE,GAAG,IAAI,CAAQ;IACrD,YAAY,EAAE,cAAc,EAAE,GAAG,IAAI,CAAQ;IAC7C,SAAS,UAAQ;IACjB,QAAQ,EAAE,gBAAgB,GAAG,KAAK,CAAS;IAE3C,OAAO,CAAC,eAAe,CAAqC;IAE5D,OAAO,CAAC,eAAe,CAA6B;IACpD,OAAO,CAAC,SAAS,CAA6C;IAE9D,OAAO,CAAC,SAAS,CAAwC;IACzD,OAAO,CAAC,cAAc,CAAkD;IACxE,OAAO,CAAC,SAAS,CAAwC;IACzD,OAAO,CAAC,QAAQ,CAAsC;IAEtD,OAAO,CAAC,mBAAmB,CAA4C;IACvE,OAAO,CAAC,mBAAmB,CAA4C;IACvE,OAAO,CAAC,iBAAiB,CAA4C;gBAEzD,QAAQ,EAAE,UAAU,CAAC,WAAW,CAAC,GAAG,cAAc,EAAE,EAAE,OAAO,CAAC,EAAE,gBAAgB;YA6C9E,IAAI;IA+ElB,OAAO,CAAC,SAAS;IAiGjB,OAAO,CAAC,MAAM;IAsCd,OAAO,CAAC,OAAO;IA2Df,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,SAAS;IAwBjB,OAAO,CAAC,gBAAgB;IAuBxB,OAAO,CAAC,2BAA2B;IAqCnC,OAAO,CAAC,UAAU;IAkElB,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,qBAAqB;IAK7B,OAAO,CAAC,iBAAiB;IA2BzB,OAAO,CAAC,oBAAoB;IA6B5B,OAAO,CAAC,kBAAkB;IAyB1B,IAAI,CAAC,UAAU,GAAE,MAAU,GAAG,IAAI;IAkJ5B,KAAK,CAAC,IAAI,UAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAgEvC,OAAO,IAAI,IAAI;IASf,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI;IAYnE,IAAI,IAAI,IAAI;IAKZ,IAAI,IAAI,IAAI;IAKZ,eAAe,IAAI,MAAM;CAG1B"}
|
package/dist/react.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react/jsx-runtime"),t=require("react"),l=require("./vistaview.cjs");function f(u){const r=t.useRef(null);return t.useEffect(()=>(r.current=l.vistaView(u),()=>{var e;(e=r.current)==null||e.destroy(),r.current=null}),[]),{open:t.useCallback((e=0)=>{var n;return(n=r.current)==null?void 0:n.open(e)},[]),close:t.useCallback(()=>{var e;return(e=r.current)==null?void 0:e.close()},[]),next:t.useCallback(()=>{var e;return(e=r.current)==null?void 0:e.next()},[]),prev:t.useCallback(()=>{var e;return(e=r.current)==null?void 0:e.prev()},[]),getCurrentIndex:t.useCallback(()=>{var e;return((e=r.current)==null?void 0:e.getCurrentIndex())??-1},[]),view:t.useCallback(e=>{var n;return(n=r.current)==null?void 0:n.view(e)},[])}}function w({children:u,className:r,style:e,selector:n,...a}){const s=t.useRef(null),c=t.useRef(null);return t.useEffect(()=>{if(s.current){if(!n)throw new Error("VistaView: selector is required");return c.current=l.vistaView({...a,elements:s.current.querySelectorAll(n)}),()=>{var i;(i=c.current)==null||i.destroy(),c.current=null}}},[]),o.jsx("div",{ref:s,className:r,style:e,children:u})}exports.VistaView=w;exports.useVistaView=f;
|
package/dist/react.d.ts
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export type {
|
|
3
|
-
type UseVistaViewOptions = Omit<VistaViewOptions, 'parent'>;
|
|
1
|
+
import { VistaViewParams, VistaViewInterface, VistaViewImage } from './vistaview';
|
|
2
|
+
export type { VistaViewParams, VistaViewInterface, VistaViewImage };
|
|
4
3
|
type UseVistaViewReturn = {
|
|
5
|
-
ref: React.RefObject<HTMLDivElement | null>;
|
|
6
4
|
open: (startIndex?: number) => void;
|
|
7
5
|
close: () => void;
|
|
8
6
|
next: () => void;
|
|
@@ -10,11 +8,12 @@ type UseVistaViewReturn = {
|
|
|
10
8
|
getCurrentIndex: () => number;
|
|
11
9
|
view: (index: number) => void;
|
|
12
10
|
};
|
|
13
|
-
export declare function useVistaView(options
|
|
14
|
-
type VistaViewProps =
|
|
11
|
+
export declare function useVistaView(options: VistaViewParams): UseVistaViewReturn;
|
|
12
|
+
type VistaViewProps = VistaViewParams & {
|
|
15
13
|
children: React.ReactNode;
|
|
16
14
|
className?: string;
|
|
17
15
|
style?: React.CSSProperties;
|
|
16
|
+
selector: string;
|
|
18
17
|
};
|
|
19
|
-
export declare function VistaView({ children, className, style, ...options }: VistaViewProps): React.ReactElement;
|
|
18
|
+
export declare function VistaView({ children, className, style, selector, ...options }: VistaViewProps): React.ReactElement;
|
|
20
19
|
//# sourceMappingURL=react.d.ts.map
|
package/dist/react.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../src/react.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../src/react.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAEvF,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,cAAc,EAAE,CAAC;AAEpE,KAAK,kBAAkB,GAAG;IACxB,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,eAAe,EAAE,MAAM,MAAM,CAAC;IAC9B,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/B,CAAC;AAEF,wBAAgB,YAAY,CAAC,OAAO,EAAE,eAAe,GAAG,kBAAkB,CAmBzE;AAED,KAAK,cAAc,GAAG,eAAe,GAAG;IACtC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,wBAAgB,SAAS,CAAC,EACxB,QAAQ,EACR,SAAS,EACT,KAAK,EACL,QAAQ,EACR,GAAG,OAAO,EACX,EAAE,cAAc,GAAG,KAAK,CAAC,YAAY,CAmBrC"}
|