zkit-ui 2.0.4 → 2.0.6
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 +56 -0
- package/android/build.gradle +100 -0
- package/android/src/main/AndroidManifest.xml +1 -0
- package/android/src/main/java/cn/fontree/zkit/ui/preview/NativeImagePreviewLayoutSupport.java +450 -0
- package/android/src/main/java/cn/fontree/zkit/ui/preview/NativeImagePreviewMediaItem.java +36 -0
- package/android/src/main/java/cn/fontree/zkit/ui/preview/NativeImagePreviewModule.kt +43 -0
- package/android/src/main/java/cn/fontree/zkit/ui/preview/NativeImagePreviewPagerAdapter.java +140 -0
- package/android/src/main/java/cn/fontree/zkit/ui/preview/NativeImagePreviewSharedElementGeometry.java +25 -0
- package/android/src/main/java/cn/fontree/zkit/ui/preview/NativeImagePreviewSharedElementNames.java +39 -0
- package/android/src/main/java/cn/fontree/zkit/ui/preview/NativeImagePreviewSharedElementState.java +25 -0
- package/android/src/main/java/cn/fontree/zkit/ui/preview/NativeImagePreviewSourceViewRegistry.java +115 -0
- package/android/src/main/java/cn/fontree/zkit/ui/preview/NativeImagePreviewTransitionSnapshotView.java +60 -0
- package/android/src/main/java/cn/fontree/zkit/ui/preview/NativeImagePreviewVideoPlayerView.java +338 -0
- package/android/src/main/java/cn/fontree/zkit/ui/preview/NativeImagePreviewView.kt +305 -0
- package/android/src/main/java/cn/fontree/zkit/ui/preview/NativeImagePreviewViewerOverlayView.java +636 -0
- package/android/src/main/java/cn/fontree/zkit/ui/preview/NativeImagePreviewViewerPageView.java +357 -0
- package/android/src/main/java/cn/fontree/zkit/ui/preview/NativeImagePreviewViewerTransitionController.java +223 -0
- package/android/src/main/res/layout/native_image_preview_player_view.xml +9 -0
- package/dist/all.d.ts +2 -0
- package/dist/all.d.ts.map +1 -1
- package/dist/all.js +24 -22
- package/dist/ui/NativeImagePreview/NativeImagePreview.d.ts +3 -0
- package/dist/ui/NativeImagePreview/NativeImagePreview.d.ts.map +1 -0
- package/dist/ui/NativeImagePreview/NativeImagePreview.js +99 -0
- package/dist/ui/NativeImagePreview/NativeImagePreview.web.d.ts +4 -0
- package/dist/ui/NativeImagePreview/NativeImagePreview.web.d.ts.map +1 -0
- package/dist/ui/NativeImagePreview/NativeImagePreview.web.js +150 -0
- package/dist/ui/NativeImagePreview/context.d.ts +14 -0
- package/dist/ui/NativeImagePreview/context.d.ts.map +1 -0
- package/dist/ui/NativeImagePreview/context.js +38 -0
- package/dist/ui/NativeImagePreview/index.d.ts +3 -0
- package/dist/ui/NativeImagePreview/index.d.ts.map +1 -0
- package/dist/ui/NativeImagePreview/index.js +5 -0
- package/dist/ui/NativeImagePreview/types.d.ts +68 -0
- package/dist/ui/NativeImagePreview/types.d.ts.map +1 -0
- package/dist/ui/NativeImagePreview/types.js +2 -0
- package/dist/ui/NativeImagePreview/utils.d.ts +8 -0
- package/dist/ui/NativeImagePreview/utils.d.ts.map +1 -0
- package/dist/ui/NativeImagePreview/utils.js +83 -0
- package/dist/ui/NativeImagePreview/web/geometry.d.ts +20 -0
- package/dist/ui/NativeImagePreview/web/geometry.d.ts.map +1 -0
- package/dist/ui/NativeImagePreview/web/geometry.js +121 -0
- package/dist/ui/NativeImagePreview/web/media.d.ts +6 -0
- package/dist/ui/NativeImagePreview/web/media.d.ts.map +1 -0
- package/dist/ui/NativeImagePreview/web/media.js +90 -0
- package/dist/ui/NativeImagePreview/web/styles.css +137 -0
- package/dist/ui/NativeImagePreview/web/transition.d.ts +15 -0
- package/dist/ui/NativeImagePreview/web/transition.d.ts.map +1 -0
- package/dist/ui/NativeImagePreview/web/transition.js +77 -0
- package/dist/ui/NativeImagePreview/web/types.d.ts +74 -0
- package/dist/ui/NativeImagePreview/web/types.d.ts.map +1 -0
- package/dist/ui/NativeImagePreview/web/types.js +3 -0
- package/dist/ui/NativeImagePreview/web/viewer.d.ts +104 -0
- package/dist/ui/NativeImagePreview/web/viewer.d.ts.map +1 -0
- package/dist/ui/NativeImagePreview/web/viewer.js +894 -0
- package/expo-module.config.json +11 -0
- package/ios/NativeImagePreview/NativeImagePreviewImageLoader.swift +73 -0
- package/ios/NativeImagePreview/NativeImagePreviewImageViewInteraction.swift +245 -0
- package/ios/NativeImagePreview/NativeImagePreviewLayoutSupport.swift +143 -0
- package/ios/NativeImagePreview/NativeImagePreviewMedia.swift +28 -0
- package/ios/NativeImagePreview/NativeImagePreviewSourceViewRegistry.swift +80 -0
- package/ios/NativeImagePreview/NativeImagePreviewVideoPlayerView.swift +437 -0
- package/ios/NativeImagePreview/NativeImagePreviewViewerConfiguration.swift +51 -0
- package/ios/NativeImagePreview/NativeImagePreviewViewerController.swift +745 -0
- package/ios/NativeImagePreview/NativeImagePreviewViewerPageView.swift +623 -0
- package/ios/NativeImagePreview/NativeImagePreviewViewerTransitionCoordinator.swift +312 -0
- package/ios/NativeImagePreviewModule.swift +46 -0
- package/ios/NativeImagePreviewView.swift +252 -0
- package/package.json +16 -2
- package/src/all.ts +18 -0
- package/src/services/ImagePreviewService/README.md +19 -0
- package/src/types.d.ts +1 -0
- package/src/ui/NativeImagePreview/NativeImagePreview.tsx +146 -0
- package/src/ui/NativeImagePreview/NativeImagePreview.web.tsx +201 -0
- package/src/ui/NativeImagePreview/README.md +111 -0
- package/src/ui/NativeImagePreview/context.tsx +22 -0
- package/src/ui/NativeImagePreview/index.tsx +18 -0
- package/src/ui/NativeImagePreview/types.ts +94 -0
- package/src/ui/NativeImagePreview/utils.ts +108 -0
- package/src/ui/NativeImagePreview/web/geometry.ts +134 -0
- package/src/ui/NativeImagePreview/web/media.ts +91 -0
- package/src/ui/NativeImagePreview/web/styles.css +137 -0
- package/src/ui/NativeImagePreview/web/transition.ts +111 -0
- package/src/ui/NativeImagePreview/web/types.ts +88 -0
- package/src/ui/NativeImagePreview/web/viewer.ts +1024 -0
- package/zkit-ui.podspec +13 -1
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/// <reference lib="dom" />
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.rectFromDOMRect = rectFromDOMRect;
|
|
5
|
+
exports.rectFromElement = rectFromElement;
|
|
6
|
+
exports.viewportRect = viewportRect;
|
|
7
|
+
exports.normalizeRect = normalizeRect;
|
|
8
|
+
exports.isUsableRect = isUsableRect;
|
|
9
|
+
exports.clamp = clamp;
|
|
10
|
+
exports.fitRect = fitRect;
|
|
11
|
+
exports.sharedGeometryFor = sharedGeometryFor;
|
|
12
|
+
exports.targetGeometryFor = targetGeometryFor;
|
|
13
|
+
exports.intersectRects = intersectRects;
|
|
14
|
+
exports.lerp = lerp;
|
|
15
|
+
exports.lerpRect = lerpRect;
|
|
16
|
+
exports.easeOutCubic = easeOutCubic;
|
|
17
|
+
exports.easeOutQuart = easeOutQuart;
|
|
18
|
+
function rectFromDOMRect(rect) {
|
|
19
|
+
return normalizeRect({
|
|
20
|
+
left: rect.left,
|
|
21
|
+
top: rect.top,
|
|
22
|
+
width: rect.width,
|
|
23
|
+
height: rect.height,
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
function rectFromElement(element) {
|
|
27
|
+
return rectFromDOMRect(element.getBoundingClientRect());
|
|
28
|
+
}
|
|
29
|
+
function viewportRect() {
|
|
30
|
+
return normalizeRect({
|
|
31
|
+
left: 0,
|
|
32
|
+
top: 0,
|
|
33
|
+
width: window.innerWidth,
|
|
34
|
+
height: window.innerHeight,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
function normalizeRect(input) {
|
|
38
|
+
return {
|
|
39
|
+
left: input.left,
|
|
40
|
+
top: input.top,
|
|
41
|
+
width: input.width,
|
|
42
|
+
height: input.height,
|
|
43
|
+
right: input.left + input.width,
|
|
44
|
+
bottom: input.top + input.height,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
function isUsableRect(rect) {
|
|
48
|
+
return !!rect && rect.width > 1 && rect.height > 1;
|
|
49
|
+
}
|
|
50
|
+
function clamp(value, min, max) {
|
|
51
|
+
return Math.max(min, Math.min(max, value));
|
|
52
|
+
}
|
|
53
|
+
function fitRect(mediaSize, container, objectFit) {
|
|
54
|
+
if (objectFit === 'fill') {
|
|
55
|
+
return normalizeRect(container);
|
|
56
|
+
}
|
|
57
|
+
const widthScale = container.width / Math.max(1, mediaSize.width);
|
|
58
|
+
const heightScale = container.height / Math.max(1, mediaSize.height);
|
|
59
|
+
const scale = objectFit === 'cover'
|
|
60
|
+
? Math.max(widthScale, heightScale)
|
|
61
|
+
: Math.min(widthScale, heightScale);
|
|
62
|
+
const width = mediaSize.width * scale;
|
|
63
|
+
const height = mediaSize.height * scale;
|
|
64
|
+
return normalizeRect({
|
|
65
|
+
left: container.left + (container.width - width) / 2,
|
|
66
|
+
top: container.top + (container.height - height) / 2,
|
|
67
|
+
width,
|
|
68
|
+
height,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
function sharedGeometryFor(container, mediaSize, objectFit) {
|
|
72
|
+
var _a;
|
|
73
|
+
const contentFrameInWindow = fitRect(mediaSize, container, objectFit);
|
|
74
|
+
const visibleFrame = (_a = intersectRects(container, contentFrameInWindow)) !== null && _a !== void 0 ? _a : normalizeRect(container);
|
|
75
|
+
const contentFrame = normalizeRect({
|
|
76
|
+
left: contentFrameInWindow.left - visibleFrame.left,
|
|
77
|
+
top: contentFrameInWindow.top - visibleFrame.top,
|
|
78
|
+
width: contentFrameInWindow.width,
|
|
79
|
+
height: contentFrameInWindow.height,
|
|
80
|
+
});
|
|
81
|
+
return { visibleFrame, contentFrame };
|
|
82
|
+
}
|
|
83
|
+
function targetGeometryFor(mediaSize, container) {
|
|
84
|
+
const visibleFrame = fitRect(mediaSize, container, 'contain');
|
|
85
|
+
return {
|
|
86
|
+
visibleFrame,
|
|
87
|
+
contentFrame: normalizeRect({
|
|
88
|
+
left: 0,
|
|
89
|
+
top: 0,
|
|
90
|
+
width: visibleFrame.width,
|
|
91
|
+
height: visibleFrame.height,
|
|
92
|
+
}),
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
function intersectRects(first, second) {
|
|
96
|
+
const left = Math.max(first.left, second.left);
|
|
97
|
+
const top = Math.max(first.top, second.top);
|
|
98
|
+
const right = Math.min(first.right, second.right);
|
|
99
|
+
const bottom = Math.min(first.bottom, second.bottom);
|
|
100
|
+
if (right <= left || bottom <= top) {
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
return normalizeRect({ left, top, width: right - left, height: bottom - top });
|
|
104
|
+
}
|
|
105
|
+
function lerp(start, end, progress) {
|
|
106
|
+
return start + (end - start) * progress;
|
|
107
|
+
}
|
|
108
|
+
function lerpRect(start, end, progress) {
|
|
109
|
+
return normalizeRect({
|
|
110
|
+
left: lerp(start.left, end.left, progress),
|
|
111
|
+
top: lerp(start.top, end.top, progress),
|
|
112
|
+
width: lerp(start.width, end.width, progress),
|
|
113
|
+
height: lerp(start.height, end.height, progress),
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
function easeOutCubic(t) {
|
|
117
|
+
return 1 - Math.pow(1 - t, 3);
|
|
118
|
+
}
|
|
119
|
+
function easeOutQuart(t) {
|
|
120
|
+
return 1 - Math.pow(1 - t, 4);
|
|
121
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { NativeImagePreviewWebImageSize, NativeImagePreviewWebMediaItem, NativeImagePreviewWebResolvedItem } from './types';
|
|
2
|
+
export declare function normalizeItems(items: readonly NativeImagePreviewWebMediaItem[]): NativeImagePreviewWebResolvedItem[];
|
|
3
|
+
export declare function previewSourceFor(item: NativeImagePreviewWebResolvedItem): string;
|
|
4
|
+
export declare function resolveMediaSize(item: NativeImagePreviewWebResolvedItem, fallback?: NativeImagePreviewWebImageSize | null): Promise<NativeImagePreviewWebImageSize>;
|
|
5
|
+
export declare function waitForElementImage(element: Element | null | undefined): Promise<void>;
|
|
6
|
+
//# sourceMappingURL=media.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../../../src/ui/NativeImagePreview/web/media.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,8BAA8B,EAAE,8BAA8B,EAAkC,iCAAiC,EAAE,MAAM,SAAS,CAAC;AAEjK,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,8BAA8B,EAAE,GAAG,iCAAiC,EAAE,CAoBpH;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,iCAAiC,GAAG,MAAM,CAEhF;AAED,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,iCAAiC,EACvC,QAAQ,CAAC,EAAE,8BAA8B,GAAG,IAAI,GAC/C,OAAO,CAAC,8BAA8B,CAAC,CAgBzC;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBtF"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/// <reference lib="dom" />
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.normalizeItems = normalizeItems;
|
|
5
|
+
exports.previewSourceFor = previewSourceFor;
|
|
6
|
+
exports.resolveMediaSize = resolveMediaSize;
|
|
7
|
+
exports.waitForElementImage = waitForElementImage;
|
|
8
|
+
function normalizeItems(items) {
|
|
9
|
+
return items
|
|
10
|
+
.map((item, index) => {
|
|
11
|
+
var _a, _b, _c, _d;
|
|
12
|
+
const src = (_b = (_a = item.src) !== null && _a !== void 0 ? _a : item.url) !== null && _b !== void 0 ? _b : '';
|
|
13
|
+
if (!src.trim()) {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
const type = resolveType(item);
|
|
17
|
+
return {
|
|
18
|
+
id: (_c = item.id) !== null && _c !== void 0 ? _c : String(index),
|
|
19
|
+
type,
|
|
20
|
+
src,
|
|
21
|
+
poster: item.poster,
|
|
22
|
+
width: item.width,
|
|
23
|
+
height: item.height,
|
|
24
|
+
alt: (_d = item.alt) !== null && _d !== void 0 ? _d : `Image ${index + 1}`,
|
|
25
|
+
raw: item,
|
|
26
|
+
};
|
|
27
|
+
})
|
|
28
|
+
.filter((item) => item !== null);
|
|
29
|
+
}
|
|
30
|
+
function previewSourceFor(item) {
|
|
31
|
+
var _a;
|
|
32
|
+
return item.type === 'video' ? (_a = item.poster) !== null && _a !== void 0 ? _a : item.src : item.src;
|
|
33
|
+
}
|
|
34
|
+
async function resolveMediaSize(item, fallback) {
|
|
35
|
+
if (fallback && fallback.width > 0 && fallback.height > 0) {
|
|
36
|
+
return fallback;
|
|
37
|
+
}
|
|
38
|
+
if (item.width && item.height) {
|
|
39
|
+
return { width: item.width, height: item.height };
|
|
40
|
+
}
|
|
41
|
+
const previewSource = previewSourceFor(item);
|
|
42
|
+
if (!previewSource) {
|
|
43
|
+
return { width: 1, height: 1 };
|
|
44
|
+
}
|
|
45
|
+
try {
|
|
46
|
+
return await loadImageSize(previewSource);
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
return { width: 1, height: 1 };
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
function waitForElementImage(element) {
|
|
53
|
+
if (!(element instanceof HTMLImageElement)) {
|
|
54
|
+
return Promise.resolve();
|
|
55
|
+
}
|
|
56
|
+
if (element.complete && element.naturalWidth > 0) {
|
|
57
|
+
return Promise.resolve();
|
|
58
|
+
}
|
|
59
|
+
return new Promise((resolve) => {
|
|
60
|
+
const done = () => {
|
|
61
|
+
element.removeEventListener('load', done);
|
|
62
|
+
element.removeEventListener('error', done);
|
|
63
|
+
resolve();
|
|
64
|
+
};
|
|
65
|
+
element.addEventListener('load', done, { once: true });
|
|
66
|
+
element.addEventListener('error', done, { once: true });
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
function resolveType(item) {
|
|
70
|
+
var _a, _b;
|
|
71
|
+
if (item.type === 'video') {
|
|
72
|
+
return 'video';
|
|
73
|
+
}
|
|
74
|
+
const src = (_b = (_a = item.src) !== null && _a !== void 0 ? _a : item.url) !== null && _b !== void 0 ? _b : '';
|
|
75
|
+
return /\.(mp4|webm|ogg)(\?.*)?$/i.test(src) ? 'video' : 'image';
|
|
76
|
+
}
|
|
77
|
+
function loadImageSize(src) {
|
|
78
|
+
return new Promise((resolve, reject) => {
|
|
79
|
+
const image = new Image();
|
|
80
|
+
image.decoding = 'async';
|
|
81
|
+
image.onload = () => {
|
|
82
|
+
resolve({
|
|
83
|
+
width: image.naturalWidth || image.width || 1,
|
|
84
|
+
height: image.naturalHeight || image.height || 1,
|
|
85
|
+
});
|
|
86
|
+
};
|
|
87
|
+
image.onerror = () => reject(new Error(`Unable to load image: ${src}`));
|
|
88
|
+
image.src = src;
|
|
89
|
+
});
|
|
90
|
+
}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
.native-image-preview-root {
|
|
2
|
+
position: fixed;
|
|
3
|
+
top: 0;
|
|
4
|
+
left: 0;
|
|
5
|
+
z-index: 2147483000;
|
|
6
|
+
width: var(--native-image-preview-vw, 100vw);
|
|
7
|
+
height: var(--native-image-preview-vh, 100vh);
|
|
8
|
+
overflow: hidden;
|
|
9
|
+
color: #fff;
|
|
10
|
+
contain: layout size paint;
|
|
11
|
+
overscroll-behavior: none;
|
|
12
|
+
touch-action: none;
|
|
13
|
+
user-select: none;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.native-image-preview-backdrop {
|
|
17
|
+
position: absolute;
|
|
18
|
+
inset: 0;
|
|
19
|
+
background: #000;
|
|
20
|
+
will-change: opacity;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.native-image-preview-theme-light .native-image-preview-backdrop {
|
|
24
|
+
background: #fff;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.native-image-preview-viewport {
|
|
28
|
+
position: absolute;
|
|
29
|
+
inset: 0;
|
|
30
|
+
z-index: 1;
|
|
31
|
+
overflow: hidden;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.native-image-preview-track {
|
|
35
|
+
position: absolute;
|
|
36
|
+
top: 0;
|
|
37
|
+
left: 0;
|
|
38
|
+
display: flex;
|
|
39
|
+
width: var(--native-image-preview-vw, 100vw);
|
|
40
|
+
height: var(--native-image-preview-vh, 100vh);
|
|
41
|
+
will-change: transform, opacity;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.native-image-preview-slide {
|
|
45
|
+
position: relative;
|
|
46
|
+
display: grid;
|
|
47
|
+
flex: 0 0 var(--native-image-preview-vw, 100vw);
|
|
48
|
+
width: var(--native-image-preview-vw, 100vw);
|
|
49
|
+
height: var(--native-image-preview-vh, 100vh);
|
|
50
|
+
place-items: center;
|
|
51
|
+
overflow: hidden;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.native-image-preview-media {
|
|
55
|
+
display: block;
|
|
56
|
+
max-width: var(--native-image-preview-vw, 100vw);
|
|
57
|
+
max-height: var(--native-image-preview-vh, 100vh);
|
|
58
|
+
object-fit: contain;
|
|
59
|
+
transform-origin: center center;
|
|
60
|
+
will-change: transform;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.native-image-preview-image {
|
|
64
|
+
width: auto;
|
|
65
|
+
height: auto;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.native-image-preview-video {
|
|
69
|
+
width: auto;
|
|
70
|
+
height: auto;
|
|
71
|
+
background: #000;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.native-image-preview-close {
|
|
75
|
+
position: fixed;
|
|
76
|
+
top: max(12px, env(safe-area-inset-top));
|
|
77
|
+
left: max(12px, env(safe-area-inset-left));
|
|
78
|
+
z-index: 3;
|
|
79
|
+
display: grid;
|
|
80
|
+
width: 42px;
|
|
81
|
+
height: 42px;
|
|
82
|
+
padding: 0;
|
|
83
|
+
border: 0;
|
|
84
|
+
border-radius: 999px;
|
|
85
|
+
place-items: center;
|
|
86
|
+
background: rgba(255, 255, 255, 0.12);
|
|
87
|
+
color: #fff;
|
|
88
|
+
cursor: pointer;
|
|
89
|
+
font-size: 30px;
|
|
90
|
+
line-height: 1;
|
|
91
|
+
backdrop-filter: blur(18px);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
.native-image-preview-counter {
|
|
95
|
+
position: fixed;
|
|
96
|
+
right: max(14px, env(safe-area-inset-right));
|
|
97
|
+
bottom: max(18px, env(safe-area-inset-bottom));
|
|
98
|
+
z-index: 3;
|
|
99
|
+
min-width: 58px;
|
|
100
|
+
padding: 8px 11px;
|
|
101
|
+
border-radius: 999px;
|
|
102
|
+
background: rgba(255, 255, 255, 0.12);
|
|
103
|
+
color: #fff;
|
|
104
|
+
font-size: 13px;
|
|
105
|
+
font-weight: 720;
|
|
106
|
+
text-align: center;
|
|
107
|
+
backdrop-filter: blur(18px);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
.native-image-preview-fly-shell {
|
|
111
|
+
position: fixed;
|
|
112
|
+
top: 0;
|
|
113
|
+
left: 0;
|
|
114
|
+
z-index: 2;
|
|
115
|
+
overflow: hidden;
|
|
116
|
+
border-radius: 0;
|
|
117
|
+
pointer-events: none;
|
|
118
|
+
transform-origin: top left;
|
|
119
|
+
will-change: transform, width, height;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
.native-image-preview-fly-media {
|
|
123
|
+
position: absolute;
|
|
124
|
+
top: 0;
|
|
125
|
+
left: 0;
|
|
126
|
+
display: block;
|
|
127
|
+
max-width: none;
|
|
128
|
+
max-height: none;
|
|
129
|
+
object-fit: fill;
|
|
130
|
+
transform-origin: top left;
|
|
131
|
+
will-change: transform, width, height;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
.native-image-preview-fading-out {
|
|
135
|
+
opacity: 0;
|
|
136
|
+
transition: opacity 180ms cubic-bezier(0.22, 1, 0.36, 1);
|
|
137
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { NativeImagePreviewWebResolvedItem } from './types';
|
|
2
|
+
import { type SharedElementGeometry } from './geometry';
|
|
3
|
+
type SharedTransitionOptions = {
|
|
4
|
+
item: NativeImagePreviewWebResolvedItem;
|
|
5
|
+
from: SharedElementGeometry;
|
|
6
|
+
to: SharedElementGeometry;
|
|
7
|
+
duration?: number;
|
|
8
|
+
parent?: HTMLElement;
|
|
9
|
+
beforeStart?: () => void | Promise<void>;
|
|
10
|
+
onProgress?: (progress: number) => void;
|
|
11
|
+
beforeRemove?: () => void | Promise<void>;
|
|
12
|
+
};
|
|
13
|
+
export declare function animateSharedElement({ item, from, to, duration, parent, beforeStart, onProgress, beforeRemove, }: SharedTransitionOptions): Promise<void>;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=transition.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transition.d.ts","sourceRoot":"","sources":["../../../../src/ui/NativeImagePreview/web/transition.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,EAA0B,KAAK,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAGhF,KAAK,uBAAuB,GAAG;IAC7B,IAAI,EAAE,iCAAiC,CAAC;IACxC,IAAI,EAAE,qBAAqB,CAAC;IAC5B,EAAE,EAAE,qBAAqB,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,YAAY,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3C,CAAC;AAEF,wBAAsB,oBAAoB,CAAC,EACzC,IAAI,EACJ,IAAI,EACJ,EAAE,EACF,QAAc,EACd,MAAsB,EACtB,WAAW,EACX,UAAU,EACV,YAAY,GACb,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6CzC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/// <reference lib="dom" />
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.animateSharedElement = animateSharedElement;
|
|
5
|
+
const geometry_1 = require("./geometry");
|
|
6
|
+
const media_1 = require("./media");
|
|
7
|
+
async function animateSharedElement({ item, from, to, duration = 320, parent = document.body, beforeStart, onProgress, beforeRemove, }) {
|
|
8
|
+
const shell = document.createElement('div');
|
|
9
|
+
shell.className = 'native-image-preview-fly-shell';
|
|
10
|
+
shell.style.opacity = '0';
|
|
11
|
+
const media = document.createElement('img');
|
|
12
|
+
media.className = 'native-image-preview-fly-media';
|
|
13
|
+
media.alt = item.alt;
|
|
14
|
+
media.draggable = false;
|
|
15
|
+
media.src = (0, media_1.previewSourceFor)(item);
|
|
16
|
+
shell.append(media);
|
|
17
|
+
applyGeometry(shell, media, from);
|
|
18
|
+
parent.append(shell);
|
|
19
|
+
await waitForFlyMedia(media);
|
|
20
|
+
shell.style.opacity = '1';
|
|
21
|
+
await waitFrames(1);
|
|
22
|
+
await (beforeStart === null || beforeStart === void 0 ? void 0 : beforeStart());
|
|
23
|
+
const startedAt = performance.now();
|
|
24
|
+
return new Promise((resolve) => {
|
|
25
|
+
const render = async (now) => {
|
|
26
|
+
const raw = Math.min(1, (now - startedAt) / duration);
|
|
27
|
+
const progress = (0, geometry_1.easeOutCubic)(raw);
|
|
28
|
+
applyGeometry(shell, media, {
|
|
29
|
+
visibleFrame: (0, geometry_1.lerpRect)(from.visibleFrame, to.visibleFrame, progress),
|
|
30
|
+
contentFrame: (0, geometry_1.lerpRect)(from.contentFrame, to.contentFrame, progress),
|
|
31
|
+
});
|
|
32
|
+
onProgress === null || onProgress === void 0 ? void 0 : onProgress(progress);
|
|
33
|
+
if (raw < 1) {
|
|
34
|
+
requestAnimationFrame(render);
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
await (beforeRemove === null || beforeRemove === void 0 ? void 0 : beforeRemove());
|
|
38
|
+
await waitFrames(1);
|
|
39
|
+
requestAnimationFrame(() => {
|
|
40
|
+
shell.remove();
|
|
41
|
+
resolve();
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
requestAnimationFrame(render);
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
function applyGeometry(shell, media, geometry) {
|
|
48
|
+
const shellRect = geometry.visibleFrame;
|
|
49
|
+
const mediaRect = geometry.contentFrame;
|
|
50
|
+
shell.style.transform = `translate3d(${shellRect.left}px, ${shellRect.top}px, 0)`;
|
|
51
|
+
shell.style.width = `${shellRect.width}px`;
|
|
52
|
+
shell.style.height = `${shellRect.height}px`;
|
|
53
|
+
media.style.transform = `translate3d(${mediaRect.left}px, ${mediaRect.top}px, 0)`;
|
|
54
|
+
media.style.width = `${mediaRect.width}px`;
|
|
55
|
+
media.style.height = `${mediaRect.height}px`;
|
|
56
|
+
}
|
|
57
|
+
function waitFrames(count) {
|
|
58
|
+
return new Promise((resolve) => {
|
|
59
|
+
const step = (remaining) => {
|
|
60
|
+
if (remaining <= 0) {
|
|
61
|
+
resolve();
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
requestAnimationFrame(() => step(remaining - 1));
|
|
65
|
+
};
|
|
66
|
+
step(count);
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
function waitForFlyMedia(image) {
|
|
70
|
+
if (image.complete && image.naturalWidth > 0) {
|
|
71
|
+
return Promise.resolve();
|
|
72
|
+
}
|
|
73
|
+
return Promise.race([
|
|
74
|
+
image.decode().catch(() => undefined),
|
|
75
|
+
new Promise((resolve) => window.setTimeout(resolve, 180)),
|
|
76
|
+
]);
|
|
77
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
export type NativeImagePreviewWebTheme = 'dark' | 'light';
|
|
2
|
+
export type NativeImagePreviewWebMediaType = 'image' | 'video';
|
|
3
|
+
export type NativeImagePreviewWebObjectFit = 'cover' | 'contain' | 'fill';
|
|
4
|
+
export type NativeImagePreviewWebSourceVisibility = 'hidden' | 'visible';
|
|
5
|
+
export type NativeImagePreviewWebCloseReason = 'api' | 'backdrop' | 'button' | 'drag' | 'escape' | 'replace';
|
|
6
|
+
export type NativeImagePreviewWebChangeReason = 'api' | 'swipe';
|
|
7
|
+
export type NativeImagePreviewWebRect = {
|
|
8
|
+
left: number;
|
|
9
|
+
top: number;
|
|
10
|
+
width: number;
|
|
11
|
+
height: number;
|
|
12
|
+
right: number;
|
|
13
|
+
bottom: number;
|
|
14
|
+
};
|
|
15
|
+
export type NativeImagePreviewWebImageSize = {
|
|
16
|
+
width: number;
|
|
17
|
+
height: number;
|
|
18
|
+
};
|
|
19
|
+
export type NativeImagePreviewWebMediaItem = {
|
|
20
|
+
id?: string;
|
|
21
|
+
type?: NativeImagePreviewWebMediaType;
|
|
22
|
+
url?: string;
|
|
23
|
+
src?: string;
|
|
24
|
+
poster?: string;
|
|
25
|
+
width?: number;
|
|
26
|
+
height?: number;
|
|
27
|
+
alt?: string;
|
|
28
|
+
};
|
|
29
|
+
export type NativeImagePreviewWebResolvedItem = {
|
|
30
|
+
id: string;
|
|
31
|
+
type: NativeImagePreviewWebMediaType;
|
|
32
|
+
src: string;
|
|
33
|
+
poster?: string;
|
|
34
|
+
width?: number;
|
|
35
|
+
height?: number;
|
|
36
|
+
alt: string;
|
|
37
|
+
raw: NativeImagePreviewWebMediaItem;
|
|
38
|
+
};
|
|
39
|
+
export type NativeImagePreviewWebChangeMeta = {
|
|
40
|
+
reason: NativeImagePreviewWebChangeReason;
|
|
41
|
+
previousIndex: number;
|
|
42
|
+
index: number;
|
|
43
|
+
item: NativeImagePreviewWebResolvedItem;
|
|
44
|
+
};
|
|
45
|
+
export type NativeImagePreviewWebCloseMeta = {
|
|
46
|
+
reason: NativeImagePreviewWebCloseReason;
|
|
47
|
+
index: number;
|
|
48
|
+
item: NativeImagePreviewWebResolvedItem | null;
|
|
49
|
+
};
|
|
50
|
+
export type NativeImagePreviewWebOpenOptions = {
|
|
51
|
+
items: readonly NativeImagePreviewWebMediaItem[];
|
|
52
|
+
index?: number;
|
|
53
|
+
sourceElement?: HTMLElement | null;
|
|
54
|
+
sourceElements?: readonly (HTMLElement | null | undefined)[];
|
|
55
|
+
getSourceElement?: (index: number, item: NativeImagePreviewWebResolvedItem) => HTMLElement | null | undefined;
|
|
56
|
+
sourceRect?: NativeImagePreviewWebRect | DOMRectReadOnly | null;
|
|
57
|
+
sourceImageSize?: NativeImagePreviewWebImageSize | null;
|
|
58
|
+
objectFit?: NativeImagePreviewWebObjectFit;
|
|
59
|
+
sourceObjectFit?: NativeImagePreviewWebObjectFit;
|
|
60
|
+
sourceVisibility?: NativeImagePreviewWebSourceVisibility;
|
|
61
|
+
theme?: NativeImagePreviewWebTheme;
|
|
62
|
+
closeButton?: boolean;
|
|
63
|
+
counter?: boolean;
|
|
64
|
+
onChange?: (index: number, meta: NativeImagePreviewWebChangeMeta) => void;
|
|
65
|
+
onClose?: (meta: NativeImagePreviewWebCloseMeta) => void;
|
|
66
|
+
};
|
|
67
|
+
export type NativeImagePreviewWebController = {
|
|
68
|
+
open: (options: NativeImagePreviewWebOpenOptions) => Promise<void>;
|
|
69
|
+
close: (reason?: NativeImagePreviewWebCloseReason) => Promise<void>;
|
|
70
|
+
destroy: () => void;
|
|
71
|
+
getIndex: () => number;
|
|
72
|
+
isOpen: () => boolean;
|
|
73
|
+
};
|
|
74
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/ui/NativeImagePreview/web/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import type { NativeImagePreviewWebCloseReason, NativeImagePreviewWebController, NativeImagePreviewWebOpenOptions, NativeImagePreviewWebRect } from './types';
|
|
2
|
+
export declare class NativeImagePreviewWebViewer implements NativeImagePreviewWebController {
|
|
3
|
+
private root;
|
|
4
|
+
private backdrop;
|
|
5
|
+
private viewport;
|
|
6
|
+
private track;
|
|
7
|
+
private closeButton;
|
|
8
|
+
private counter;
|
|
9
|
+
private mediaElements;
|
|
10
|
+
private slideStates;
|
|
11
|
+
private items;
|
|
12
|
+
private options;
|
|
13
|
+
private index;
|
|
14
|
+
private openState;
|
|
15
|
+
private closing;
|
|
16
|
+
private sourceVisibility;
|
|
17
|
+
private sourceElement;
|
|
18
|
+
private sourcePreviousVisibility;
|
|
19
|
+
private pointers;
|
|
20
|
+
private mode;
|
|
21
|
+
private downX;
|
|
22
|
+
private downY;
|
|
23
|
+
private lastX;
|
|
24
|
+
private lastY;
|
|
25
|
+
private downAt;
|
|
26
|
+
private dragX;
|
|
27
|
+
private dragY;
|
|
28
|
+
private pinchStartDistance;
|
|
29
|
+
private pinchStartScale;
|
|
30
|
+
private pinchStartTranslateX;
|
|
31
|
+
private pinchStartTranslateY;
|
|
32
|
+
private pinchStartCenterX;
|
|
33
|
+
private pinchStartCenterY;
|
|
34
|
+
private previousBodyOverflow;
|
|
35
|
+
private previousHtmlOverflow;
|
|
36
|
+
private viewportWidth;
|
|
37
|
+
private viewportHeight;
|
|
38
|
+
open(options: NativeImagePreviewWebOpenOptions): Promise<void>;
|
|
39
|
+
close(reason?: NativeImagePreviewWebCloseReason): Promise<void>;
|
|
40
|
+
destroy(): void;
|
|
41
|
+
getIndex(): number;
|
|
42
|
+
isOpen(): boolean;
|
|
43
|
+
private mount;
|
|
44
|
+
private createMediaElement;
|
|
45
|
+
private performOpenTransition;
|
|
46
|
+
private performCloseTransition;
|
|
47
|
+
private resolveBackdropCloseStartOpacity;
|
|
48
|
+
private showContent;
|
|
49
|
+
private showControls;
|
|
50
|
+
private hideControls;
|
|
51
|
+
private finishClose;
|
|
52
|
+
private unmount;
|
|
53
|
+
private captureViewportSize;
|
|
54
|
+
private applyViewportStyle;
|
|
55
|
+
private viewportRect;
|
|
56
|
+
private resolveSourceGeometry;
|
|
57
|
+
private resolveReturnGeometry;
|
|
58
|
+
private resolveTargetGeometry;
|
|
59
|
+
private resolveCurrentMediaGeometry;
|
|
60
|
+
private resolveSharedMediaSize;
|
|
61
|
+
private resolveSourceObjectFit;
|
|
62
|
+
private resolveSourceElement;
|
|
63
|
+
private hideSourceElement;
|
|
64
|
+
private restoreSourceElement;
|
|
65
|
+
private syncHiddenSourceElement;
|
|
66
|
+
private handlePointerDown;
|
|
67
|
+
private shouldIgnorePointerStart;
|
|
68
|
+
private isPointerInVideoControls;
|
|
69
|
+
private handlePointerMove;
|
|
70
|
+
private handlePointerUp;
|
|
71
|
+
private handleWheel;
|
|
72
|
+
private handleRootClick;
|
|
73
|
+
private handleCloseClick;
|
|
74
|
+
private handleKeyDown;
|
|
75
|
+
private handleResize;
|
|
76
|
+
private handleWindowBlur;
|
|
77
|
+
private handleVisibilityChange;
|
|
78
|
+
private handleLostPointerCapture;
|
|
79
|
+
private handleTap;
|
|
80
|
+
private preparePinchIfNeeded;
|
|
81
|
+
private applyPinch;
|
|
82
|
+
private finishSwipe;
|
|
83
|
+
private goTo;
|
|
84
|
+
private resetDismissDrag;
|
|
85
|
+
private applyDismissDrag;
|
|
86
|
+
private cancelActiveGesture;
|
|
87
|
+
private releasePointerCaptures;
|
|
88
|
+
private updateTrack;
|
|
89
|
+
private applyActiveMediaTransform;
|
|
90
|
+
private clampActiveState;
|
|
91
|
+
private activeState;
|
|
92
|
+
private resetSlideState;
|
|
93
|
+
private createSlideState;
|
|
94
|
+
private updateCounter;
|
|
95
|
+
private pauseInactiveVideos;
|
|
96
|
+
private layoutMediaElements;
|
|
97
|
+
private lockDocumentScroll;
|
|
98
|
+
private unlockDocumentScroll;
|
|
99
|
+
private nextFrame;
|
|
100
|
+
private delay;
|
|
101
|
+
}
|
|
102
|
+
export declare function createNativeImagePreviewWeb(): NativeImagePreviewWebController;
|
|
103
|
+
export declare function sourceRectFromElement(element: HTMLElement): NativeImagePreviewWebRect;
|
|
104
|
+
//# sourceMappingURL=viewer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"viewer.d.ts","sourceRoot":"","sources":["../../../../src/ui/NativeImagePreview/web/viewer.ts"],"names":[],"mappings":"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"}
|