@lazycatcloud/vue-media-preview 0.1.0-preview.34 → 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 +14 -12
- package/dist/components/MediaPreview.vue.d.ts +2 -2
- package/dist/components/PreviewStage.vue.d.ts +5 -2
- package/dist/core/rendering/image.d.ts +17 -0
- package/dist/core/resources/bitmap/client.d.ts +4 -0
- package/dist/core/resources/bitmap/decode.worker.d.ts +1 -0
- package/dist/core/resources/bitmap/types.d.ts +14 -0
- package/dist/core/resources/imageLimits.d.ts +1 -1
- package/dist/core/resources/imageOwnership.d.ts +8 -0
- package/dist/core/resources/imageRequest.d.ts +1 -1
- package/dist/core/resources/imageResource.d.ts +11 -0
- package/dist/core/resources/imageStore.d.ts +3 -0
- package/dist/core/resources/imageTransport.d.ts +4 -4
- package/dist/core/resources/validation/image.d.ts +13 -0
- package/dist/core/video/source/session.d.ts +8 -0
- package/dist/core/video/source/types.d.ts +8 -0
- package/dist/core/video/timeline/buffered.d.ts +12 -0
- package/dist/core/video/timeline/index.d.ts +15 -0
- package/dist/core/video/timeline/time.d.ts +3 -0
- package/dist/core/video/useVideoPlayback.d.ts +22 -6
- package/dist/core/video/useVideoSource.d.ts +3 -3
- package/dist/index.d.ts +2 -0
- package/dist/renderers/ImageCanvasRenderer.vue.d.ts +12 -3
- package/dist/renderers/LivePhotoRenderer.vue.d.ts +2 -2
- package/dist/renderers/VideoDomRenderer.vue.d.ts +23 -7
- package/dist/vue-media-preview.cjs +2 -1
- package/dist/vue-media-preview.css +1 -1
- package/dist/vue-media-preview.js +1718 -1457
- package/docs/testing.md +15 -4
- package/docs/vue-media-preview.md +26 -8
- package/package.json +6 -3
package/README.md
CHANGED
|
@@ -49,10 +49,10 @@ pnpm pack --pack-destination .delivery
|
|
|
49
49
|
|
|
50
50
|
## 接入
|
|
51
51
|
|
|
52
|
-
|
|
52
|
+
安装组件库:
|
|
53
53
|
|
|
54
54
|
```bash
|
|
55
|
-
pnpm add @lazycatcloud/vue-media-preview
|
|
55
|
+
pnpm add @lazycatcloud/vue-media-preview vue
|
|
56
56
|
```
|
|
57
57
|
|
|
58
58
|
```ts
|
|
@@ -65,7 +65,7 @@ import type { PreviewMedia, PreviewAnchor } from '@lazycatcloud/vue-media-previe
|
|
|
65
65
|
|
|
66
66
|
详见 [接入与架构](docs/vue-media-preview.md) 和 [测试说明](docs/testing.md)。
|
|
67
67
|
|
|
68
|
-
|
|
68
|
+
大原图通过独立适屏资源预览;默认原图上限为 32MiB / 6400 万像素,`resourcePolicy.maxOriginalPixels` 同时用于原图请求前检查和实际图片尺寸检查,未实现瓦片式超大图。真实相册业务与特殊格式边界见接入文档。
|
|
69
69
|
|
|
70
70
|
## npm 发布
|
|
71
71
|
|
|
@@ -79,25 +79,27 @@ make npm-publish-dry-run
|
|
|
79
79
|
预演会执行类型检查、测试、库与 Demo 构建,并显示包内容,不上传包、不修改版本。
|
|
80
80
|
发布包包含 `dist/`、`docs/`、README、MIT LICENSE 和包元数据。
|
|
81
81
|
|
|
82
|
-
|
|
82
|
+
版本统一采用 `x.x.x`,初始版本为 `0.1.0`,默认发布到 `latest`。
|
|
83
|
+
首次登录有 `@lazycatcloud` 发布权限的 npm 账号,然后发布当前版本:
|
|
83
84
|
|
|
84
85
|
```bash
|
|
85
86
|
npm login --registry https://registry.npmjs.org/
|
|
86
87
|
make npm-publish
|
|
87
88
|
```
|
|
88
89
|
|
|
89
|
-
|
|
90
|
-
直接运行 `npm publish` 也会先检查、测试和构建,包配置默认标签为 `next`,正式发布时需显式指定 `--tag latest`。
|
|
91
|
-
|
|
92
|
-
后续递增预览版本并发布:
|
|
90
|
+
后续发布使用以下命令自动管理版本,无需手动修改 `package.json`:
|
|
93
91
|
|
|
94
92
|
```bash
|
|
95
|
-
|
|
93
|
+
pnpm release # 补丁版本,例如 0.1.0 → 0.1.1
|
|
94
|
+
pnpm release:minor # 次版本,例如 0.1.1 → 0.2.0
|
|
95
|
+
pnpm release:major # 主版本,例如 0.2.0 → 1.0.0
|
|
96
96
|
```
|
|
97
97
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
98
|
+
自动发布会先完成检查、测试和构建,再验证登录状态,随后递增版本并上传。
|
|
99
|
+
也可使用等价的 `make npm-release`、`make npm-release-minor`、`make npm-release-major`。
|
|
100
|
+
需要指定确切版本时执行 `make npm-release VERSION=0.2.0`;仅接受不带后缀的三段版本号。
|
|
101
|
+
如果上传失败,本地保留已递增的版本,使用 `make npm-publish` 重试该版本。
|
|
102
|
+
版本更新不创建 Git 提交或标签;发布成功后手动提交版本变更。
|
|
101
103
|
需要验证码时附加 `NPM_OTP=123456`,可通过 `NPM_REGISTRY`、`NPM_ACCESS`、`NPM_TAG` 覆盖发布目标。
|
|
102
104
|
这些参数同样适用于预演命令;账号凭据通过 npm 登录管理,不写入仓库。
|
|
103
105
|
|
|
@@ -94,7 +94,7 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_WithDefaults<__VLS
|
|
|
94
94
|
closing: () => void;
|
|
95
95
|
change: (index: number) => void;
|
|
96
96
|
close: () => void;
|
|
97
|
-
ready: (index: number, quality: "
|
|
97
|
+
ready: (index: number, quality: "full" | "thumbnail" | "screen") => void;
|
|
98
98
|
originalState: (media: PreviewMedia, status: OriginalStatus, reason: string) => void;
|
|
99
99
|
opened: (index: number) => void;
|
|
100
100
|
loadMore: (index: number) => void;
|
|
@@ -118,7 +118,7 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_WithDefaults<__VLS
|
|
|
118
118
|
};
|
|
119
119
|
}>>> & {
|
|
120
120
|
onError?: ((error: Error, media: PreviewMedia) => any) | undefined;
|
|
121
|
-
onReady?: ((index: number, quality: "
|
|
121
|
+
onReady?: ((index: number, quality: "full" | "thumbnail" | "screen") => any) | undefined;
|
|
122
122
|
onOriginalState?: ((media: PreviewMedia, status: OriginalStatus, reason: string) => any) | undefined;
|
|
123
123
|
onChange?: ((index: number) => any) | undefined;
|
|
124
124
|
onClose?: (() => any) | undefined;
|
|
@@ -55,13 +55,16 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_WithDefaults<__V
|
|
|
55
55
|
togglePlayback: () => void;
|
|
56
56
|
toggleFullscreen: () => Promise<void>;
|
|
57
57
|
captureFrame: () => {
|
|
58
|
+
image: HTMLImageElement | ImageBitmap;
|
|
59
|
+
scale: number;
|
|
60
|
+
} | {
|
|
58
61
|
image: HTMLCanvasElement | HTMLImageElement | HTMLVideoElement;
|
|
59
62
|
scale: number;
|
|
60
63
|
};
|
|
61
64
|
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
62
65
|
error: (error: Error) => void;
|
|
63
66
|
close: () => void;
|
|
64
|
-
ready: (quality: "
|
|
67
|
+
ready: (quality: "full" | "thumbnail" | "screen") => void;
|
|
65
68
|
originalState: (status: OriginalStatus, reason: string) => void;
|
|
66
69
|
liveState: (status: LivePhotoStatus) => void;
|
|
67
70
|
liveEnded: () => void;
|
|
@@ -93,7 +96,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_WithDefaults<__V
|
|
|
93
96
|
paging: boolean;
|
|
94
97
|
}>>> & {
|
|
95
98
|
onError?: ((error: Error) => any) | undefined;
|
|
96
|
-
onReady?: ((quality: "
|
|
99
|
+
onReady?: ((quality: "full" | "thumbnail" | "screen") => any) | undefined;
|
|
97
100
|
onOriginalState?: ((status: OriginalStatus, reason: string) => any) | undefined;
|
|
98
101
|
onLiveState?: ((status: LivePhotoStatus) => any) | undefined;
|
|
99
102
|
onLiveEnded?: (() => any) | undefined;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { PreviewRotation, PreviewSize } from "../types";
|
|
2
|
+
export interface ImageFrame {
|
|
3
|
+
viewport: PreviewSize;
|
|
4
|
+
size: PreviewSize;
|
|
5
|
+
offsetX: number;
|
|
6
|
+
offsetY: number;
|
|
7
|
+
rotation: PreviewRotation;
|
|
8
|
+
}
|
|
9
|
+
/** Visible rectangle in the unrotated image's rendered CSS pixels. */
|
|
10
|
+
export declare function visibleImageRect(frame: ImageFrame): {
|
|
11
|
+
x: number;
|
|
12
|
+
y: number;
|
|
13
|
+
width: number;
|
|
14
|
+
height: number;
|
|
15
|
+
};
|
|
16
|
+
/** Crop before sampling so zoomed originals do not resample offscreen pixels. */
|
|
17
|
+
export declare function drawViewportImage(context: CanvasRenderingContext2D, image: HTMLImageElement | ImageBitmap, frame: ImageFrame, moving: boolean): void;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { PreparedBitmaps } from "./types";
|
|
2
|
+
export declare function closeBitmaps({ full, motion }: PreparedBitmaps): void;
|
|
3
|
+
/** Each queued store load owns its worker; cancellation terminates its decode/resize work. */
|
|
4
|
+
export declare function prepareJpegBitmaps(blob: Blob, maxMotionPixels: number, signal: AbortSignal): Promise<PreparedBitmaps>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface DecodeRequest {
|
|
2
|
+
blob: Blob;
|
|
3
|
+
maxMotionPixels: number;
|
|
4
|
+
}
|
|
5
|
+
export interface PreparedBitmaps {
|
|
6
|
+
full: ImageBitmap;
|
|
7
|
+
motion: ImageBitmap;
|
|
8
|
+
}
|
|
9
|
+
export type DecodeResult = ({
|
|
10
|
+
status: "ready";
|
|
11
|
+
} & PreparedBitmaps) | {
|
|
12
|
+
status: "error";
|
|
13
|
+
message: string;
|
|
14
|
+
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/** Resource budgets shared by transport, caching and Canvas renderers. */
|
|
2
2
|
export declare const imageLimits: {
|
|
3
|
-
readonly maxDecodedPixels:
|
|
3
|
+
readonly maxDecodedPixels: 64000000;
|
|
4
4
|
readonly maxCanvasPixels: 6000000;
|
|
5
5
|
readonly maxDevicePixelRatio: 2.5;
|
|
6
6
|
readonly maxOriginalBytes: number;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ImageLease } from "./imageStore";
|
|
2
|
+
/** Request replacement must not release pixels that are still displayed. */
|
|
3
|
+
export declare function createImageOwnership(): {
|
|
4
|
+
replace(leases: ImageLease[]): void;
|
|
5
|
+
display(lease: ImageLease): void;
|
|
6
|
+
clearDisplay(): void;
|
|
7
|
+
dispose(): void;
|
|
8
|
+
};
|
|
@@ -11,5 +11,5 @@ interface ImageRequest {
|
|
|
11
11
|
originalReason: string;
|
|
12
12
|
}
|
|
13
13
|
/** Decide resource tiers and safety before the renderer acquires any transport leases. */
|
|
14
|
-
export declare function planImageRequest(media: PreviewMedia, requestedQuality: ImageQuality, policy: ImagePolicy, resolveSource: ImageSourceResolver, targetWidth: number): ImageRequest;
|
|
14
|
+
export declare function planImageRequest(media: PreviewMedia, requestedQuality: ImageQuality, policy: ImagePolicy, resolveSource: ImageSourceResolver, targetWidth: number, originalEnabled?: boolean): ImageRequest;
|
|
15
15
|
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** The DOM image supplies geometry and the public media handle; Canvas uses the prepared pixel source. */
|
|
2
|
+
export interface ImageResource {
|
|
3
|
+
image: HTMLImageElement;
|
|
4
|
+
source: HTMLImageElement | ImageBitmap;
|
|
5
|
+
motionSource: HTMLImageElement | ImageBitmap;
|
|
6
|
+
bytes: number;
|
|
7
|
+
dispose: () => void;
|
|
8
|
+
}
|
|
9
|
+
export declare function imageElementResource(image: HTMLImageElement): ImageResource;
|
|
10
|
+
/** Blob decoding avoids Chromium's scale-dependent lazy JPEG decode during drawImage. */
|
|
11
|
+
export declare function prepareImageResource(image: HTMLImageElement, blob: Blob, signal: AbortSignal): Promise<ImageResource>;
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import type { ImageLoader } from "./imageTransport";
|
|
2
|
+
import type { ImageResource } from "./imageResource";
|
|
2
3
|
export interface ImageLease {
|
|
3
4
|
ready: Promise<HTMLImageElement>;
|
|
5
|
+
resource: Promise<ImageResource>;
|
|
4
6
|
release: () => void;
|
|
5
7
|
}
|
|
6
8
|
export interface ImageRequestOptions {
|
|
7
9
|
priority?: number;
|
|
8
10
|
maxBytes?: number;
|
|
11
|
+
maxPixels?: number;
|
|
9
12
|
}
|
|
10
13
|
/** Shared ownership, bounded fetch/decode concurrency and cancellation of unowned requests. */
|
|
11
14
|
export declare class ImageStore {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
}
|
|
1
|
+
import type { ImageResource } from "./imageResource";
|
|
2
|
+
export { ImageLimitError } from "./validation/image";
|
|
4
3
|
export interface ImageLoadOptions {
|
|
5
4
|
signal: AbortSignal;
|
|
6
5
|
readonly maxBytes: number;
|
|
6
|
+
readonly maxPixels: number;
|
|
7
7
|
}
|
|
8
|
-
export type ImageLoader = (url: string, options: ImageLoadOptions) => Promise<
|
|
8
|
+
export type ImageLoader = (url: string, options: ImageLoadOptions) => Promise<ImageResource>;
|
|
9
9
|
export declare const loadImage: ImageLoader;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare class ImageLimitError extends Error {
|
|
2
|
+
constructor(message: string);
|
|
3
|
+
}
|
|
4
|
+
/** Apply the same decoded-pixel boundary to downloads and every cached-resource owner. */
|
|
5
|
+
export declare function assertImagePixels(image: HTMLImageElement, maxPixels: number): void;
|
|
6
|
+
export declare const originalLimitReason = "\u539F\u56FE\u8D85\u8FC7\u8D44\u6E90\u9650\u5236";
|
|
7
|
+
export declare function originalLoadFailure(error: unknown): {
|
|
8
|
+
status: "blocked";
|
|
9
|
+
reason: string;
|
|
10
|
+
} | {
|
|
11
|
+
status: "error";
|
|
12
|
+
reason: string;
|
|
13
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { PreviewMedia } from "../../types";
|
|
2
|
+
import type { VideoSourceLoader, VideoSourceObserver } from "./types";
|
|
3
|
+
/** Retire callbacks before cleanup can dispatch queued media/transport events. */
|
|
4
|
+
export declare function createVideoSourceSession(observer: VideoSourceObserver): {
|
|
5
|
+
clear: () => void;
|
|
6
|
+
dispose: () => void;
|
|
7
|
+
start(video: HTMLVideoElement, media: PreviewMedia, loader: VideoSourceLoader): void;
|
|
8
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { PreviewMedia } from "../../types";
|
|
2
|
+
/** Hosts own transport; the component owns playback and the effective timeline. */
|
|
3
|
+
export type VideoSourceLoader = (video: HTMLVideoElement, media: PreviewMedia, reportError: (error: Error) => void, reportDuration: (seconds: number) => void) => () => void;
|
|
4
|
+
export interface VideoSourceObserver {
|
|
5
|
+
error: (error: Error) => void;
|
|
6
|
+
duration: (seconds: number) => void;
|
|
7
|
+
reset: () => void;
|
|
8
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface BufferedRange {
|
|
2
|
+
start: number;
|
|
3
|
+
end: number;
|
|
4
|
+
}
|
|
5
|
+
export type CompletedBuffer = {
|
|
6
|
+
kind: "pending";
|
|
7
|
+
} | {
|
|
8
|
+
kind: "retained";
|
|
9
|
+
end: number;
|
|
10
|
+
};
|
|
11
|
+
/** Preserve holes and normalize the retained tail once playback has reached its end. */
|
|
12
|
+
export declare function readBufferedRanges(video: HTMLVideoElement, duration: number, completed: CompletedBuffer): BufferedRange[];
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type BufferedRange } from "./buffered";
|
|
2
|
+
export interface VideoTimelineSnapshot {
|
|
3
|
+
duration: number;
|
|
4
|
+
time: number;
|
|
5
|
+
buffered: number;
|
|
6
|
+
bufferedRanges: BufferedRange[];
|
|
7
|
+
}
|
|
8
|
+
export declare function emptyVideoTimeline(): VideoTimelineSnapshot;
|
|
9
|
+
/** One source of timing truth for text, seek bounds, playback and retained buffers. */
|
|
10
|
+
export declare function createVideoTimeline(): {
|
|
11
|
+
setDuration(seconds: number): void;
|
|
12
|
+
complete(video: HTMLVideoElement): void;
|
|
13
|
+
reset(): void;
|
|
14
|
+
read(video: HTMLVideoElement, ended: boolean): VideoTimelineSnapshot;
|
|
15
|
+
};
|
|
@@ -1,22 +1,30 @@
|
|
|
1
|
-
export
|
|
1
|
+
export { formatVideoTime } from "./timeline/time";
|
|
2
2
|
/** Playback owns media state; the preview still owns navigation and transitions. */
|
|
3
3
|
export declare function useVideoPlayback(video: () => HTMLVideoElement, reportError: (error: Error) => void): {
|
|
4
4
|
state: {
|
|
5
|
-
playing: boolean;
|
|
6
|
-
buffering: boolean;
|
|
7
|
-
duration: number;
|
|
8
|
-
time: number;
|
|
9
|
-
buffered: number;
|
|
10
5
|
muted: boolean;
|
|
11
6
|
ended: boolean;
|
|
12
7
|
scrubbing: boolean;
|
|
13
8
|
scrubTime: number;
|
|
14
9
|
status: "loading" | "ready" | "error";
|
|
10
|
+
duration: number;
|
|
11
|
+
time: number;
|
|
12
|
+
buffered: number;
|
|
13
|
+
bufferedRanges: {
|
|
14
|
+
start: number;
|
|
15
|
+
end: number;
|
|
16
|
+
}[];
|
|
17
|
+
playing: boolean;
|
|
18
|
+
buffering: boolean;
|
|
15
19
|
};
|
|
16
20
|
seekable: import("vue").ComputedRef<boolean>;
|
|
17
21
|
displayTime: import("vue").ComputedRef<number>;
|
|
18
22
|
progress: import("vue").ComputedRef<number>;
|
|
19
23
|
bufferedProgress: import("vue").ComputedRef<number>;
|
|
24
|
+
bufferedRanges: import("vue").ComputedRef<{
|
|
25
|
+
left: number;
|
|
26
|
+
width: number;
|
|
27
|
+
}[]>;
|
|
20
28
|
events: {
|
|
21
29
|
loadedmetadata: () => void;
|
|
22
30
|
durationchange: () => void;
|
|
@@ -24,6 +32,7 @@ export declare function useVideoPlayback(video: () => HTMLVideoElement, reportEr
|
|
|
24
32
|
progress: () => void;
|
|
25
33
|
loadeddata: () => void;
|
|
26
34
|
canplay: () => void;
|
|
35
|
+
canplaythrough: () => void;
|
|
27
36
|
play: () => void;
|
|
28
37
|
playing: () => void;
|
|
29
38
|
pause: () => void;
|
|
@@ -42,5 +51,12 @@ export declare function useVideoPlayback(video: () => HTMLVideoElement, reportEr
|
|
|
42
51
|
endScrub: (commit?: boolean) => void;
|
|
43
52
|
toggleMuted: () => void;
|
|
44
53
|
retry: () => void;
|
|
54
|
+
setSourceDuration: (seconds: number) => void;
|
|
55
|
+
resetSource: () => void;
|
|
56
|
+
sourceObserver: {
|
|
57
|
+
error: (error: Error) => void;
|
|
58
|
+
duration: (seconds: number) => void;
|
|
59
|
+
reset: () => void;
|
|
60
|
+
};
|
|
45
61
|
dispose: () => void;
|
|
46
62
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { PreviewMedia } from "../types";
|
|
2
|
-
|
|
3
|
-
export type VideoSourceLoader
|
|
2
|
+
import type { VideoSourceLoader, VideoSourceObserver } from "./source/types";
|
|
3
|
+
export type { VideoSourceLoader } from "./source/types";
|
|
4
4
|
export declare const nativeVideoSource: VideoSourceLoader;
|
|
5
|
-
export declare function useVideoSource(video: () => HTMLVideoElement, media: () => PreviewMedia, enabled: () => boolean, loader: () => VideoSourceLoader,
|
|
5
|
+
export declare function useVideoSource(video: () => HTMLVideoElement, media: () => PreviewMedia, enabled: () => boolean, loader: () => VideoSourceLoader, observer: VideoSourceObserver): () => number;
|
package/dist/index.d.ts
CHANGED
|
@@ -12,6 +12,8 @@ export { default as VirtualTimeline } from "./components/VirtualTimeline.vue";
|
|
|
12
12
|
export { defaultImagePolicy, defaultImageSource } from "./core/resources/imagePolicy";
|
|
13
13
|
export type { ImagePolicy, ImageSourceResolver, ImageQuality, OriginalStatus, } from "./core/resources/imagePolicy";
|
|
14
14
|
export { previewImageStore, ImageStore } from "./core/resources/imageStore";
|
|
15
|
+
export type { ImageLease, ImageRequestOptions } from "./core/resources/imageStore";
|
|
16
|
+
export type { ImageResource } from "./core/resources/imageResource";
|
|
15
17
|
export type { TimelineGroup, VirtualTimelineHandle } from "./core/timeline/layout";
|
|
16
18
|
export { nativeVideoSource } from "./core/video/useVideoSource";
|
|
17
19
|
export type { VideoSourceLoader } from "./core/video/useVideoSource";
|
|
@@ -8,6 +8,7 @@ type __VLS_Props = {
|
|
|
8
8
|
rendering?: boolean;
|
|
9
9
|
requestVersion?: number;
|
|
10
10
|
loadEnabled?: boolean;
|
|
11
|
+
originalEnabled?: boolean;
|
|
11
12
|
priority?: number;
|
|
12
13
|
resourcePolicy?: ImagePolicy;
|
|
13
14
|
resolveSource?: ImageSourceResolver;
|
|
@@ -18,32 +19,40 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_WithDefaults<__V
|
|
|
18
19
|
initialImage: () => InitialImage;
|
|
19
20
|
rendering: boolean;
|
|
20
21
|
loadEnabled: boolean;
|
|
22
|
+
originalEnabled: boolean;
|
|
21
23
|
requestVersion: number;
|
|
22
24
|
priority: number;
|
|
23
25
|
resourcePolicy: () => ImagePolicy;
|
|
24
26
|
resolveSource: ImageSourceResolver;
|
|
25
|
-
}>,
|
|
27
|
+
}>, {
|
|
28
|
+
captureFrame: () => {
|
|
29
|
+
image: HTMLImageElement | ImageBitmap;
|
|
30
|
+
scale: number;
|
|
31
|
+
};
|
|
32
|
+
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
26
33
|
error: (error: Error) => void;
|
|
27
|
-
ready: (quality: "
|
|
34
|
+
ready: (quality: "full" | "thumbnail" | "screen") => void;
|
|
28
35
|
originalState: (status: OriginalStatus, reason: string) => void;
|
|
29
36
|
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<__VLS_Props>, {
|
|
30
37
|
quality: string;
|
|
31
38
|
initialImage: () => InitialImage;
|
|
32
39
|
rendering: boolean;
|
|
33
40
|
loadEnabled: boolean;
|
|
41
|
+
originalEnabled: boolean;
|
|
34
42
|
requestVersion: number;
|
|
35
43
|
priority: number;
|
|
36
44
|
resourcePolicy: () => ImagePolicy;
|
|
37
45
|
resolveSource: ImageSourceResolver;
|
|
38
46
|
}>>> & {
|
|
39
47
|
onError?: ((error: Error) => any) | undefined;
|
|
40
|
-
onReady?: ((quality: "
|
|
48
|
+
onReady?: ((quality: "full" | "thumbnail" | "screen") => any) | undefined;
|
|
41
49
|
onOriginalState?: ((status: OriginalStatus, reason: string) => any) | undefined;
|
|
42
50
|
}, {
|
|
43
51
|
quality: ImageQuality;
|
|
44
52
|
rendering: boolean;
|
|
45
53
|
requestVersion: number;
|
|
46
54
|
loadEnabled: boolean;
|
|
55
|
+
originalEnabled: boolean;
|
|
47
56
|
priority: number;
|
|
48
57
|
resourcePolicy: ImagePolicy;
|
|
49
58
|
resolveSource: ImageSourceResolver;
|
|
@@ -37,7 +37,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_WithDefaults<__V
|
|
|
37
37
|
captureFrame: typeof captureFrame;
|
|
38
38
|
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
39
39
|
error: (error: Error) => void;
|
|
40
|
-
ready: (quality: "
|
|
40
|
+
ready: (quality: "full" | "thumbnail" | "screen") => void;
|
|
41
41
|
originalState: (status: OriginalStatus, reason: string) => void;
|
|
42
42
|
liveState: (status: LivePhotoStatus) => void;
|
|
43
43
|
liveEnded: () => void;
|
|
@@ -55,7 +55,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_WithDefaults<__V
|
|
|
55
55
|
resolveSource: ImageSourceResolver;
|
|
56
56
|
}>>> & {
|
|
57
57
|
onError?: ((error: Error) => any) | undefined;
|
|
58
|
-
onReady?: ((quality: "
|
|
58
|
+
onReady?: ((quality: "full" | "thumbnail" | "screen") => any) | undefined;
|
|
59
59
|
onOriginalState?: ((status: OriginalStatus, reason: string) => any) | undefined;
|
|
60
60
|
onLiveState?: ((status: LivePhotoStatus) => any) | undefined;
|
|
61
61
|
onLiveEnded?: (() => any) | undefined;
|
|
@@ -54,21 +54,29 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_WithDefaults<__V
|
|
|
54
54
|
toggleFullscreen: typeof toggleFullscreen;
|
|
55
55
|
playback: {
|
|
56
56
|
state: {
|
|
57
|
-
playing: boolean;
|
|
58
|
-
buffering: boolean;
|
|
59
|
-
duration: number;
|
|
60
|
-
time: number;
|
|
61
|
-
buffered: number;
|
|
62
57
|
muted: boolean;
|
|
63
58
|
ended: boolean;
|
|
64
59
|
scrubbing: boolean;
|
|
65
60
|
scrubTime: number;
|
|
66
61
|
status: "loading" | "ready" | "error";
|
|
62
|
+
duration: number;
|
|
63
|
+
time: number;
|
|
64
|
+
buffered: number;
|
|
65
|
+
bufferedRanges: {
|
|
66
|
+
start: number;
|
|
67
|
+
end: number;
|
|
68
|
+
}[];
|
|
69
|
+
playing: boolean;
|
|
70
|
+
buffering: boolean;
|
|
67
71
|
};
|
|
68
72
|
seekable: import("vue").ComputedRef<boolean>;
|
|
69
73
|
displayTime: import("vue").ComputedRef<number>;
|
|
70
74
|
progress: import("vue").ComputedRef<number>;
|
|
71
75
|
bufferedProgress: import("vue").ComputedRef<number>;
|
|
76
|
+
bufferedRanges: import("vue").ComputedRef<{
|
|
77
|
+
left: number;
|
|
78
|
+
width: number;
|
|
79
|
+
}[]>;
|
|
72
80
|
events: {
|
|
73
81
|
loadedmetadata: () => void;
|
|
74
82
|
durationchange: () => void;
|
|
@@ -76,6 +84,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_WithDefaults<__V
|
|
|
76
84
|
progress: () => void;
|
|
77
85
|
loadeddata: () => void;
|
|
78
86
|
canplay: () => void;
|
|
87
|
+
canplaythrough: () => void;
|
|
79
88
|
play: () => void;
|
|
80
89
|
playing: () => void;
|
|
81
90
|
pause: () => void;
|
|
@@ -94,12 +103,19 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_WithDefaults<__V
|
|
|
94
103
|
endScrub: (commit?: boolean) => void;
|
|
95
104
|
toggleMuted: () => void;
|
|
96
105
|
retry: () => void;
|
|
106
|
+
setSourceDuration: (seconds: number) => void;
|
|
107
|
+
resetSource: () => void;
|
|
108
|
+
sourceObserver: {
|
|
109
|
+
error: (error: Error) => void;
|
|
110
|
+
duration: (seconds: number) => void;
|
|
111
|
+
reset: () => void;
|
|
112
|
+
};
|
|
97
113
|
dispose: () => void;
|
|
98
114
|
};
|
|
99
115
|
captureFrame: typeof captureFrame;
|
|
100
116
|
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
101
117
|
error: (error: Error) => void;
|
|
102
|
-
ready: (quality: "
|
|
118
|
+
ready: (quality: "full" | "thumbnail" | "screen") => void;
|
|
103
119
|
originalState: (status: OriginalStatus, reason: string) => void;
|
|
104
120
|
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<__VLS_Props>, {
|
|
105
121
|
initialImage: () => InitialImage;
|
|
@@ -122,7 +138,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_WithDefaults<__V
|
|
|
122
138
|
controlsTarget: string;
|
|
123
139
|
}>>> & {
|
|
124
140
|
onError?: ((error: Error) => any) | undefined;
|
|
125
|
-
onReady?: ((quality: "
|
|
141
|
+
onReady?: ((quality: "full" | "thumbnail" | "screen") => any) | undefined;
|
|
126
142
|
onOriginalState?: ((status: OriginalStatus, reason: string) => any) | undefined;
|
|
127
143
|
}, {
|
|
128
144
|
active: boolean;
|