zartui 3.1.19 → 3.1.20
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 +23 -23
- package/es/index.d.ts +1 -1
- package/es/index.mjs +1 -1
- package/es/lazyload/vue-lazyload/index.d.ts +55 -55
- package/es/media-picker/MediaPicker.d.ts +14 -1
- package/es/media-picker/MediaPicker.mjs +44 -2
- package/es/media-picker/index.d.ts +10 -1
- package/es/media-picker/type.d.ts +1 -0
- package/es/vue-sfc-shim.d.ts +6 -6
- package/es/vue-tsx-shim.d.ts +23 -23
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/lib/lazyload/vue-lazyload/index.d.ts +55 -55
- package/lib/media-picker/MediaPicker.d.ts +14 -1
- package/lib/media-picker/MediaPicker.js +44 -2
- package/lib/media-picker/index.d.ts +10 -1
- package/lib/media-picker/type.d.ts +1 -0
- package/lib/vue-sfc-shim.d.ts +6 -6
- package/lib/vue-tsx-shim.d.ts +23 -23
- package/lib/web-types.json +1 -1
- package/lib/zartui.cjs.js +45 -3
- package/lib/zartui.es.js +45 -3
- package/lib/zartui.js +45 -3
- package/lib/zartui.min.js +1 -1
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
# ZartUI
|
|
2
|
-
|
|
3
|
-
[ZartUI](https://zartui.egova.com.cn) 是数字政通基于 Vue 研发的一款面向政务场景的移动端组件库。
|
|
4
|
-
|
|
5
|
-
Zart(读音 /zɑːt/)的命名,灵感源自数字政通秉承的理念:让城市治理变得更智慧。Zart = zt + smart, zt是政通的首字母缩写,smart代表公司理念中的“智慧”,将smart中间的“ar”字母包裹于zt之间,体现了ZartUI的核心目标:追求极致的用户体验,致力于做灵活智能的组件库。
|
|
6
|
-
|
|
7
|
-
## 特性
|
|
8
|
-
|
|
9
|
-
1)【组件重构】【组件审核】提供50多个高质量组件,覆盖移动端各类场景;
|
|
10
|
-
|
|
11
|
-
2)【UI重构】基于全新的视觉规范;
|
|
12
|
-
|
|
13
|
-
3)【在线网站】完善的文档、示例、演示效果;
|
|
14
|
-
|
|
15
|
-
4)支持主题定制、按需引入;
|
|
16
|
-
|
|
17
|
-
5)支持Vue3.0、TypeScript;
|
|
18
|
-
|
|
19
|
-
6)性能佳,组件平均体积小(min+gzip);
|
|
20
|
-
|
|
21
|
-
## 浏览器支持
|
|
22
|
-
|
|
23
|
-
ZartUI 3 支持现代浏览器以及 Chrome >= 51、iOS >= 10.0(与 Vue 3 一致)。
|
|
1
|
+
# ZartUI
|
|
2
|
+
|
|
3
|
+
[ZartUI](https://zartui.egova.com.cn) 是数字政通基于 Vue 研发的一款面向政务场景的移动端组件库。
|
|
4
|
+
|
|
5
|
+
Zart(读音 /zɑːt/)的命名,灵感源自数字政通秉承的理念:让城市治理变得更智慧。Zart = zt + smart, zt是政通的首字母缩写,smart代表公司理念中的“智慧”,将smart中间的“ar”字母包裹于zt之间,体现了ZartUI的核心目标:追求极致的用户体验,致力于做灵活智能的组件库。
|
|
6
|
+
|
|
7
|
+
## 特性
|
|
8
|
+
|
|
9
|
+
1)【组件重构】【组件审核】提供50多个高质量组件,覆盖移动端各类场景;
|
|
10
|
+
|
|
11
|
+
2)【UI重构】基于全新的视觉规范;
|
|
12
|
+
|
|
13
|
+
3)【在线网站】完善的文档、示例、演示效果;
|
|
14
|
+
|
|
15
|
+
4)支持主题定制、按需引入;
|
|
16
|
+
|
|
17
|
+
5)支持Vue3.0、TypeScript;
|
|
18
|
+
|
|
19
|
+
6)性能佳,组件平均体积小(min+gzip);
|
|
20
|
+
|
|
21
|
+
## 浏览器支持
|
|
22
|
+
|
|
23
|
+
ZartUI 3 支持现代浏览器以及 Chrome >= 51、iOS >= 10.0(与 Vue 3 一致)。
|
package/es/index.d.ts
CHANGED
package/es/index.mjs
CHANGED
|
@@ -74,7 +74,7 @@ import { TimePicker } from "./time-picker/index.mjs";
|
|
|
74
74
|
import { Timeline } from "./timeline/index.mjs";
|
|
75
75
|
import { Toast } from "./toast/index.mjs";
|
|
76
76
|
import { Uploader } from "./uploader/index.mjs";
|
|
77
|
-
const version = "3.1.
|
|
77
|
+
const version = "3.1.20";
|
|
78
78
|
function install(app) {
|
|
79
79
|
const components = [
|
|
80
80
|
ActionSheet,
|
|
@@ -1,55 +1,55 @@
|
|
|
1
|
-
import type { App } from 'vue';
|
|
2
|
-
|
|
3
|
-
declare type ListenEvent =
|
|
4
|
-
| 'scroll'
|
|
5
|
-
| 'wheel'
|
|
6
|
-
| 'mousewheel'
|
|
7
|
-
| 'resize'
|
|
8
|
-
| 'animationend'
|
|
9
|
-
| 'transitionend'
|
|
10
|
-
| 'touchmove';
|
|
11
|
-
|
|
12
|
-
// eslint-disable-next-line
|
|
13
|
-
declare type Callback = (listener: any, options: LazyloadOptions) => void;
|
|
14
|
-
|
|
15
|
-
declare type Filter = {
|
|
16
|
-
webp?: Callback;
|
|
17
|
-
progressive?: Callback;
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
declare type Adapter = {
|
|
21
|
-
error?: Callback;
|
|
22
|
-
loaded?: Callback;
|
|
23
|
-
loading?: Callback;
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
export declare type LazyloadOptions = {
|
|
27
|
-
error?: string;
|
|
28
|
-
filter?: Filter;
|
|
29
|
-
silent?: boolean;
|
|
30
|
-
adapter?: Adapter;
|
|
31
|
-
loading?: string;
|
|
32
|
-
attempt?: number;
|
|
33
|
-
preLoad?: number;
|
|
34
|
-
observer?: boolean;
|
|
35
|
-
lazyImage?: boolean;
|
|
36
|
-
throttleWait?: number;
|
|
37
|
-
listenEvents?: ListenEvent[];
|
|
38
|
-
dispatchEvent?: boolean;
|
|
39
|
-
lazyComponent?: boolean;
|
|
40
|
-
observerOptions?: IntersectionObserverInit;
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
export declare const Lazyload: {
|
|
44
|
-
install(app: App, options?: LazyloadOptions): void;
|
|
45
|
-
};
|
|
46
|
-
|
|
47
|
-
declare module '@vue/runtime-core' {
|
|
48
|
-
interface ComponentCustomProperties {
|
|
49
|
-
$Lazyload: {
|
|
50
|
-
$on: (event: string, handler: Callback) => void;
|
|
51
|
-
$off: (event: string, handler?: Callback) => void;
|
|
52
|
-
$once: (event: string, handler: Callback) => void;
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
}
|
|
1
|
+
import type { App } from 'vue';
|
|
2
|
+
|
|
3
|
+
declare type ListenEvent =
|
|
4
|
+
| 'scroll'
|
|
5
|
+
| 'wheel'
|
|
6
|
+
| 'mousewheel'
|
|
7
|
+
| 'resize'
|
|
8
|
+
| 'animationend'
|
|
9
|
+
| 'transitionend'
|
|
10
|
+
| 'touchmove';
|
|
11
|
+
|
|
12
|
+
// eslint-disable-next-line
|
|
13
|
+
declare type Callback = (listener: any, options: LazyloadOptions) => void;
|
|
14
|
+
|
|
15
|
+
declare type Filter = {
|
|
16
|
+
webp?: Callback;
|
|
17
|
+
progressive?: Callback;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
declare type Adapter = {
|
|
21
|
+
error?: Callback;
|
|
22
|
+
loaded?: Callback;
|
|
23
|
+
loading?: Callback;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
export declare type LazyloadOptions = {
|
|
27
|
+
error?: string;
|
|
28
|
+
filter?: Filter;
|
|
29
|
+
silent?: boolean;
|
|
30
|
+
adapter?: Adapter;
|
|
31
|
+
loading?: string;
|
|
32
|
+
attempt?: number;
|
|
33
|
+
preLoad?: number;
|
|
34
|
+
observer?: boolean;
|
|
35
|
+
lazyImage?: boolean;
|
|
36
|
+
throttleWait?: number;
|
|
37
|
+
listenEvents?: ListenEvent[];
|
|
38
|
+
dispatchEvent?: boolean;
|
|
39
|
+
lazyComponent?: boolean;
|
|
40
|
+
observerOptions?: IntersectionObserverInit;
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
export declare const Lazyload: {
|
|
44
|
+
install(app: App, options?: LazyloadOptions): void;
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
declare module '@vue/runtime-core' {
|
|
48
|
+
interface ComponentCustomProperties {
|
|
49
|
+
$Lazyload: {
|
|
50
|
+
$on: (event: string, handler: Callback) => void;
|
|
51
|
+
$off: (event: string, handler?: Callback) => void;
|
|
52
|
+
$once: (event: string, handler: Callback) => void;
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ExtractPropTypes, PropType } from 'vue';
|
|
2
|
-
import type { Media, MediaAfterRead, MediaBeforeDelete, MediaBeforeRead, MediaPick, MediaPreview } from './type';
|
|
2
|
+
import type { Media, MediaAfterRead, MediaBeforeDelete, MediaBeforeRead, MediaPick, MediaPreview, MediaSizeType } from './type';
|
|
3
3
|
declare const mediaPickerProps: {
|
|
4
4
|
disabled: BooleanConstructor;
|
|
5
5
|
showTitle: BooleanConstructor;
|
|
@@ -73,6 +73,10 @@ declare const mediaPickerProps: {
|
|
|
73
73
|
afterRead: PropType<MediaAfterRead>;
|
|
74
74
|
beforeDelete: PropType<MediaBeforeDelete>;
|
|
75
75
|
useWx: BooleanConstructor;
|
|
76
|
+
imageSizeType: {
|
|
77
|
+
type: PropType<MediaSizeType>;
|
|
78
|
+
default: MediaSizeType;
|
|
79
|
+
};
|
|
76
80
|
};
|
|
77
81
|
export type MediaPickerProps = ExtractPropTypes<typeof mediaPickerProps>;
|
|
78
82
|
declare const _default: import("vue").DefineComponent<{
|
|
@@ -148,6 +152,10 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
148
152
|
afterRead: PropType<MediaAfterRead>;
|
|
149
153
|
beforeDelete: PropType<MediaBeforeDelete>;
|
|
150
154
|
useWx: BooleanConstructor;
|
|
155
|
+
imageSizeType: {
|
|
156
|
+
type: PropType<MediaSizeType>;
|
|
157
|
+
default: MediaSizeType;
|
|
158
|
+
};
|
|
151
159
|
}, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("update:mediaList" | "delete")[], "update:mediaList" | "delete", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<ExtractPropTypes<{
|
|
152
160
|
disabled: BooleanConstructor;
|
|
153
161
|
showTitle: BooleanConstructor;
|
|
@@ -221,6 +229,10 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
221
229
|
afterRead: PropType<MediaAfterRead>;
|
|
222
230
|
beforeDelete: PropType<MediaBeforeDelete>;
|
|
223
231
|
useWx: BooleanConstructor;
|
|
232
|
+
imageSizeType: {
|
|
233
|
+
type: PropType<MediaSizeType>;
|
|
234
|
+
default: MediaSizeType;
|
|
235
|
+
};
|
|
224
236
|
}>> & {
|
|
225
237
|
"onUpdate:mediaList"?: ((...args: any[]) => any) | undefined;
|
|
226
238
|
onDelete?: ((...args: any[]) => any) | undefined;
|
|
@@ -246,5 +258,6 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
246
258
|
allowPickAudio: boolean;
|
|
247
259
|
allowPickFile: boolean;
|
|
248
260
|
useWx: boolean;
|
|
261
|
+
imageSizeType: MediaSizeType;
|
|
249
262
|
}, {}>;
|
|
250
263
|
export default _default;
|
|
@@ -77,7 +77,8 @@ const mediaPickerProps = {
|
|
|
77
77
|
// 文件删除前的回调函数,返回 false 可终止文件读取,支持返回 Promise
|
|
78
78
|
beforeDelete: Function,
|
|
79
79
|
// 是否强制使用微信
|
|
80
|
-
useWx: Boolean
|
|
80
|
+
useWx: Boolean,
|
|
81
|
+
imageSizeType: makeStringProp("compressed")
|
|
81
82
|
};
|
|
82
83
|
var stdin_default = defineComponent({
|
|
83
84
|
name,
|
|
@@ -285,6 +286,47 @@ var stdin_default = defineComponent({
|
|
|
285
286
|
message: ""
|
|
286
287
|
};
|
|
287
288
|
};
|
|
289
|
+
const transformImageFilesWithoutCompress = (files) => {
|
|
290
|
+
const mediaList = files.map((file) => {
|
|
291
|
+
return file2DataURL(file).then((base64) => {
|
|
292
|
+
const media = {
|
|
293
|
+
showSrc: base64,
|
|
294
|
+
type: "photo",
|
|
295
|
+
file,
|
|
296
|
+
// 需要以原始file的信息作为唯一标识
|
|
297
|
+
uniqueCode: getFileUniqueCode(file),
|
|
298
|
+
lastModified: file.lastModified,
|
|
299
|
+
fileSize: file.size,
|
|
300
|
+
// 修改后大小,水印,压缩等
|
|
301
|
+
fileName: file.name,
|
|
302
|
+
// 修改后名称
|
|
303
|
+
deletable: true,
|
|
304
|
+
message: "",
|
|
305
|
+
originalName: file.name,
|
|
306
|
+
// 原始名称
|
|
307
|
+
originalSize: file.size
|
|
308
|
+
// 原始大小
|
|
309
|
+
};
|
|
310
|
+
return media;
|
|
311
|
+
});
|
|
312
|
+
});
|
|
313
|
+
showLoadingToast({
|
|
314
|
+
message: "\u5904\u7406\u4E2D...",
|
|
315
|
+
forbidClick: true,
|
|
316
|
+
duration: 0
|
|
317
|
+
});
|
|
318
|
+
return Promise.all(mediaList).then((medias) => {
|
|
319
|
+
const _medias = [];
|
|
320
|
+
medias.forEach((media) => {
|
|
321
|
+
if (isDef(media)) {
|
|
322
|
+
_medias.push(media);
|
|
323
|
+
}
|
|
324
|
+
});
|
|
325
|
+
return _medias;
|
|
326
|
+
}).finally(() => {
|
|
327
|
+
closeToast();
|
|
328
|
+
});
|
|
329
|
+
};
|
|
288
330
|
const transformImageFiles = (files) => {
|
|
289
331
|
const promisesTodo = [];
|
|
290
332
|
const resizeOptions = new ResizeOptions(props.maxImageSideLength);
|
|
@@ -369,7 +411,7 @@ var stdin_default = defineComponent({
|
|
|
369
411
|
if (imageFiles.length === 0) {
|
|
370
412
|
promise = Promise.resolve([]);
|
|
371
413
|
} else {
|
|
372
|
-
promise = transformImageFiles(imageFiles);
|
|
414
|
+
promise = props.imageSizeType === "original" ? transformImageFilesWithoutCompress(imageFiles) : transformImageFiles(imageFiles);
|
|
373
415
|
}
|
|
374
416
|
promise.then((medias) => {
|
|
375
417
|
if (medias && medias.length > 0) {
|
|
@@ -61,6 +61,10 @@ export declare const MediaPicker: import("../utils").WithInstall<import("vue").D
|
|
|
61
61
|
afterRead: import("vue").PropType<import("./type").MediaAfterRead>;
|
|
62
62
|
beforeDelete: import("vue").PropType<import("./type").MediaBeforeDelete>;
|
|
63
63
|
useWx: BooleanConstructor;
|
|
64
|
+
imageSizeType: {
|
|
65
|
+
type: import("vue").PropType<import("./type").MediaSizeType>;
|
|
66
|
+
default: import("./type").MediaSizeType;
|
|
67
|
+
};
|
|
64
68
|
}, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("update:mediaList" | "delete")[], "update:mediaList" | "delete", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
|
|
65
69
|
disabled: BooleanConstructor;
|
|
66
70
|
showTitle: BooleanConstructor;
|
|
@@ -124,6 +128,10 @@ export declare const MediaPicker: import("../utils").WithInstall<import("vue").D
|
|
|
124
128
|
afterRead: import("vue").PropType<import("./type").MediaAfterRead>;
|
|
125
129
|
beforeDelete: import("vue").PropType<import("./type").MediaBeforeDelete>;
|
|
126
130
|
useWx: BooleanConstructor;
|
|
131
|
+
imageSizeType: {
|
|
132
|
+
type: import("vue").PropType<import("./type").MediaSizeType>;
|
|
133
|
+
default: import("./type").MediaSizeType;
|
|
134
|
+
};
|
|
127
135
|
}>> & {
|
|
128
136
|
"onUpdate:mediaList"?: ((...args: any[]) => any) | undefined;
|
|
129
137
|
onDelete?: ((...args: any[]) => any) | undefined;
|
|
@@ -149,10 +157,11 @@ export declare const MediaPicker: import("../utils").WithInstall<import("vue").D
|
|
|
149
157
|
allowPickAudio: boolean;
|
|
150
158
|
allowPickFile: boolean;
|
|
151
159
|
useWx: boolean;
|
|
160
|
+
imageSizeType: import("./type").MediaSizeType;
|
|
152
161
|
}, {}>>;
|
|
153
162
|
export default MediaPicker;
|
|
154
163
|
export type { MediaPickerProps } from './MediaPicker';
|
|
155
|
-
export type { Media, MediaType, MediaAddType, MediaUploadStatus, MediaPreview, MediaPick, MediaBeforeRead, MediaAfterRead, MediaBeforeDelete, MediaPickerThemeVars, } from './type';
|
|
164
|
+
export type { Media, MediaType, MediaAddType, MediaUploadStatus, MediaPreview, MediaPick, MediaBeforeRead, MediaAfterRead, MediaBeforeDelete, MediaPickerThemeVars, MediaSizeType, } from './type';
|
|
156
165
|
export { defaultMedia } from './type';
|
|
157
166
|
declare module 'vue' {
|
|
158
167
|
interface GlobalComponents {
|
|
@@ -2,6 +2,7 @@ export type MediaType = 'photo' | 'audio' | 'video' | 'file';
|
|
|
2
2
|
export type MediaAddType = 'take' | 'pick' | 'take_and_pick';
|
|
3
3
|
export type MediaUploadStatus = 'uploading' | 'done' | 'failed';
|
|
4
4
|
export type WxMediaType = 'camera' | 'album';
|
|
5
|
+
export type MediaSizeType = 'original' | 'compressed';
|
|
5
6
|
export type Media = {
|
|
6
7
|
file?: File;
|
|
7
8
|
url?: string;
|
package/es/vue-sfc-shim.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
declare module '*.vue' {
|
|
2
|
-
// eslint-disable-next-line
|
|
3
|
-
import { DefineComponent } from 'vue';
|
|
4
|
-
const Component: DefineComponent;
|
|
5
|
-
export default Component;
|
|
6
|
-
}
|
|
1
|
+
declare module '*.vue' {
|
|
2
|
+
// eslint-disable-next-line
|
|
3
|
+
import { DefineComponent } from 'vue';
|
|
4
|
+
const Component: DefineComponent;
|
|
5
|
+
export default Component;
|
|
6
|
+
}
|
package/es/vue-tsx-shim.d.ts
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import 'vue';
|
|
2
|
-
|
|
3
|
-
type EventHandler = (...args: any[]) => void;
|
|
4
|
-
|
|
5
|
-
declare module 'vue' {
|
|
6
|
-
interface ComponentCustomProps {
|
|
7
|
-
id?: string;
|
|
8
|
-
role?: string;
|
|
9
|
-
tabindex?: number;
|
|
10
|
-
onClick?: EventHandler;
|
|
11
|
-
onTouchend?: EventHandler;
|
|
12
|
-
onTouchmove?: EventHandler;
|
|
13
|
-
onTouchstart?: EventHandler;
|
|
14
|
-
onTouchcancel?: EventHandler;
|
|
15
|
-
onTouchmovePassive?: EventHandler;
|
|
16
|
-
onTouchstartPassive?: EventHandler;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
interface HTMLAttributes {
|
|
20
|
-
onTouchmovePassive?: EventHandler;
|
|
21
|
-
onTouchstartPassive?: EventHandler;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
1
|
+
import 'vue';
|
|
2
|
+
|
|
3
|
+
type EventHandler = (...args: any[]) => void;
|
|
4
|
+
|
|
5
|
+
declare module 'vue' {
|
|
6
|
+
interface ComponentCustomProps {
|
|
7
|
+
id?: string;
|
|
8
|
+
role?: string;
|
|
9
|
+
tabindex?: number;
|
|
10
|
+
onClick?: EventHandler;
|
|
11
|
+
onTouchend?: EventHandler;
|
|
12
|
+
onTouchmove?: EventHandler;
|
|
13
|
+
onTouchstart?: EventHandler;
|
|
14
|
+
onTouchcancel?: EventHandler;
|
|
15
|
+
onTouchmovePassive?: EventHandler;
|
|
16
|
+
onTouchstartPassive?: EventHandler;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
interface HTMLAttributes {
|
|
20
|
+
onTouchmovePassive?: EventHandler;
|
|
21
|
+
onTouchstartPassive?: EventHandler;
|
|
22
|
+
}
|
|
23
|
+
}
|
package/lib/index.d.ts
CHANGED
package/lib/index.js
CHANGED
|
@@ -176,7 +176,7 @@ __reExport(stdin_exports, require("./time-picker"), module.exports);
|
|
|
176
176
|
__reExport(stdin_exports, require("./timeline"), module.exports);
|
|
177
177
|
__reExport(stdin_exports, require("./toast"), module.exports);
|
|
178
178
|
__reExport(stdin_exports, require("./uploader"), module.exports);
|
|
179
|
-
const version = "3.1.
|
|
179
|
+
const version = "3.1.20";
|
|
180
180
|
function install(app) {
|
|
181
181
|
const components = [
|
|
182
182
|
import_action_sheet.ActionSheet,
|
|
@@ -1,55 +1,55 @@
|
|
|
1
|
-
import type { App } from 'vue';
|
|
2
|
-
|
|
3
|
-
declare type ListenEvent =
|
|
4
|
-
| 'scroll'
|
|
5
|
-
| 'wheel'
|
|
6
|
-
| 'mousewheel'
|
|
7
|
-
| 'resize'
|
|
8
|
-
| 'animationend'
|
|
9
|
-
| 'transitionend'
|
|
10
|
-
| 'touchmove';
|
|
11
|
-
|
|
12
|
-
// eslint-disable-next-line
|
|
13
|
-
declare type Callback = (listener: any, options: LazyloadOptions) => void;
|
|
14
|
-
|
|
15
|
-
declare type Filter = {
|
|
16
|
-
webp?: Callback;
|
|
17
|
-
progressive?: Callback;
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
declare type Adapter = {
|
|
21
|
-
error?: Callback;
|
|
22
|
-
loaded?: Callback;
|
|
23
|
-
loading?: Callback;
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
export declare type LazyloadOptions = {
|
|
27
|
-
error?: string;
|
|
28
|
-
filter?: Filter;
|
|
29
|
-
silent?: boolean;
|
|
30
|
-
adapter?: Adapter;
|
|
31
|
-
loading?: string;
|
|
32
|
-
attempt?: number;
|
|
33
|
-
preLoad?: number;
|
|
34
|
-
observer?: boolean;
|
|
35
|
-
lazyImage?: boolean;
|
|
36
|
-
throttleWait?: number;
|
|
37
|
-
listenEvents?: ListenEvent[];
|
|
38
|
-
dispatchEvent?: boolean;
|
|
39
|
-
lazyComponent?: boolean;
|
|
40
|
-
observerOptions?: IntersectionObserverInit;
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
export declare const Lazyload: {
|
|
44
|
-
install(app: App, options?: LazyloadOptions): void;
|
|
45
|
-
};
|
|
46
|
-
|
|
47
|
-
declare module '@vue/runtime-core' {
|
|
48
|
-
interface ComponentCustomProperties {
|
|
49
|
-
$Lazyload: {
|
|
50
|
-
$on: (event: string, handler: Callback) => void;
|
|
51
|
-
$off: (event: string, handler?: Callback) => void;
|
|
52
|
-
$once: (event: string, handler: Callback) => void;
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
}
|
|
1
|
+
import type { App } from 'vue';
|
|
2
|
+
|
|
3
|
+
declare type ListenEvent =
|
|
4
|
+
| 'scroll'
|
|
5
|
+
| 'wheel'
|
|
6
|
+
| 'mousewheel'
|
|
7
|
+
| 'resize'
|
|
8
|
+
| 'animationend'
|
|
9
|
+
| 'transitionend'
|
|
10
|
+
| 'touchmove';
|
|
11
|
+
|
|
12
|
+
// eslint-disable-next-line
|
|
13
|
+
declare type Callback = (listener: any, options: LazyloadOptions) => void;
|
|
14
|
+
|
|
15
|
+
declare type Filter = {
|
|
16
|
+
webp?: Callback;
|
|
17
|
+
progressive?: Callback;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
declare type Adapter = {
|
|
21
|
+
error?: Callback;
|
|
22
|
+
loaded?: Callback;
|
|
23
|
+
loading?: Callback;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
export declare type LazyloadOptions = {
|
|
27
|
+
error?: string;
|
|
28
|
+
filter?: Filter;
|
|
29
|
+
silent?: boolean;
|
|
30
|
+
adapter?: Adapter;
|
|
31
|
+
loading?: string;
|
|
32
|
+
attempt?: number;
|
|
33
|
+
preLoad?: number;
|
|
34
|
+
observer?: boolean;
|
|
35
|
+
lazyImage?: boolean;
|
|
36
|
+
throttleWait?: number;
|
|
37
|
+
listenEvents?: ListenEvent[];
|
|
38
|
+
dispatchEvent?: boolean;
|
|
39
|
+
lazyComponent?: boolean;
|
|
40
|
+
observerOptions?: IntersectionObserverInit;
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
export declare const Lazyload: {
|
|
44
|
+
install(app: App, options?: LazyloadOptions): void;
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
declare module '@vue/runtime-core' {
|
|
48
|
+
interface ComponentCustomProperties {
|
|
49
|
+
$Lazyload: {
|
|
50
|
+
$on: (event: string, handler: Callback) => void;
|
|
51
|
+
$off: (event: string, handler?: Callback) => void;
|
|
52
|
+
$once: (event: string, handler: Callback) => void;
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ExtractPropTypes, PropType } from 'vue';
|
|
2
|
-
import type { Media, MediaAfterRead, MediaBeforeDelete, MediaBeforeRead, MediaPick, MediaPreview } from './type';
|
|
2
|
+
import type { Media, MediaAfterRead, MediaBeforeDelete, MediaBeforeRead, MediaPick, MediaPreview, MediaSizeType } from './type';
|
|
3
3
|
declare const mediaPickerProps: {
|
|
4
4
|
disabled: BooleanConstructor;
|
|
5
5
|
showTitle: BooleanConstructor;
|
|
@@ -73,6 +73,10 @@ declare const mediaPickerProps: {
|
|
|
73
73
|
afterRead: PropType<MediaAfterRead>;
|
|
74
74
|
beforeDelete: PropType<MediaBeforeDelete>;
|
|
75
75
|
useWx: BooleanConstructor;
|
|
76
|
+
imageSizeType: {
|
|
77
|
+
type: PropType<MediaSizeType>;
|
|
78
|
+
default: MediaSizeType;
|
|
79
|
+
};
|
|
76
80
|
};
|
|
77
81
|
export type MediaPickerProps = ExtractPropTypes<typeof mediaPickerProps>;
|
|
78
82
|
declare const _default: import("vue").DefineComponent<{
|
|
@@ -148,6 +152,10 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
148
152
|
afterRead: PropType<MediaAfterRead>;
|
|
149
153
|
beforeDelete: PropType<MediaBeforeDelete>;
|
|
150
154
|
useWx: BooleanConstructor;
|
|
155
|
+
imageSizeType: {
|
|
156
|
+
type: PropType<MediaSizeType>;
|
|
157
|
+
default: MediaSizeType;
|
|
158
|
+
};
|
|
151
159
|
}, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("update:mediaList" | "delete")[], "update:mediaList" | "delete", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<ExtractPropTypes<{
|
|
152
160
|
disabled: BooleanConstructor;
|
|
153
161
|
showTitle: BooleanConstructor;
|
|
@@ -221,6 +229,10 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
221
229
|
afterRead: PropType<MediaAfterRead>;
|
|
222
230
|
beforeDelete: PropType<MediaBeforeDelete>;
|
|
223
231
|
useWx: BooleanConstructor;
|
|
232
|
+
imageSizeType: {
|
|
233
|
+
type: PropType<MediaSizeType>;
|
|
234
|
+
default: MediaSizeType;
|
|
235
|
+
};
|
|
224
236
|
}>> & {
|
|
225
237
|
"onUpdate:mediaList"?: ((...args: any[]) => any) | undefined;
|
|
226
238
|
onDelete?: ((...args: any[]) => any) | undefined;
|
|
@@ -246,5 +258,6 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
246
258
|
allowPickAudio: boolean;
|
|
247
259
|
allowPickFile: boolean;
|
|
248
260
|
useWx: boolean;
|
|
261
|
+
imageSizeType: MediaSizeType;
|
|
249
262
|
}, {}>;
|
|
250
263
|
export default _default;
|
|
@@ -109,7 +109,8 @@ const mediaPickerProps = {
|
|
|
109
109
|
// 文件删除前的回调函数,返回 false 可终止文件读取,支持返回 Promise
|
|
110
110
|
beforeDelete: Function,
|
|
111
111
|
// 是否强制使用微信
|
|
112
|
-
useWx: Boolean
|
|
112
|
+
useWx: Boolean,
|
|
113
|
+
imageSizeType: (0, import_utils.makeStringProp)("compressed")
|
|
113
114
|
};
|
|
114
115
|
var stdin_default = (0, import_vue2.defineComponent)({
|
|
115
116
|
name,
|
|
@@ -317,6 +318,47 @@ var stdin_default = (0, import_vue2.defineComponent)({
|
|
|
317
318
|
message: ""
|
|
318
319
|
};
|
|
319
320
|
};
|
|
321
|
+
const transformImageFilesWithoutCompress = (files) => {
|
|
322
|
+
const mediaList = files.map((file) => {
|
|
323
|
+
return (0, import_media_util.file2DataURL)(file).then((base64) => {
|
|
324
|
+
const media = {
|
|
325
|
+
showSrc: base64,
|
|
326
|
+
type: "photo",
|
|
327
|
+
file,
|
|
328
|
+
// 需要以原始file的信息作为唯一标识
|
|
329
|
+
uniqueCode: (0, import_media_util.getFileUniqueCode)(file),
|
|
330
|
+
lastModified: file.lastModified,
|
|
331
|
+
fileSize: file.size,
|
|
332
|
+
// 修改后大小,水印,压缩等
|
|
333
|
+
fileName: file.name,
|
|
334
|
+
// 修改后名称
|
|
335
|
+
deletable: true,
|
|
336
|
+
message: "",
|
|
337
|
+
originalName: file.name,
|
|
338
|
+
// 原始名称
|
|
339
|
+
originalSize: file.size
|
|
340
|
+
// 原始大小
|
|
341
|
+
};
|
|
342
|
+
return media;
|
|
343
|
+
});
|
|
344
|
+
});
|
|
345
|
+
(0, import_toast.showLoadingToast)({
|
|
346
|
+
message: "\u5904\u7406\u4E2D...",
|
|
347
|
+
forbidClick: true,
|
|
348
|
+
duration: 0
|
|
349
|
+
});
|
|
350
|
+
return Promise.all(mediaList).then((medias) => {
|
|
351
|
+
const _medias = [];
|
|
352
|
+
medias.forEach((media) => {
|
|
353
|
+
if ((0, import_utils.isDef)(media)) {
|
|
354
|
+
_medias.push(media);
|
|
355
|
+
}
|
|
356
|
+
});
|
|
357
|
+
return _medias;
|
|
358
|
+
}).finally(() => {
|
|
359
|
+
(0, import_toast.closeToast)();
|
|
360
|
+
});
|
|
361
|
+
};
|
|
320
362
|
const transformImageFiles = (files) => {
|
|
321
363
|
const promisesTodo = [];
|
|
322
364
|
const resizeOptions = new import_resize_options.ResizeOptions(props.maxImageSideLength);
|
|
@@ -401,7 +443,7 @@ var stdin_default = (0, import_vue2.defineComponent)({
|
|
|
401
443
|
if (imageFiles.length === 0) {
|
|
402
444
|
promise = Promise.resolve([]);
|
|
403
445
|
} else {
|
|
404
|
-
promise = transformImageFiles(imageFiles);
|
|
446
|
+
promise = props.imageSizeType === "original" ? transformImageFilesWithoutCompress(imageFiles) : transformImageFiles(imageFiles);
|
|
405
447
|
}
|
|
406
448
|
promise.then((medias) => {
|
|
407
449
|
if (medias && medias.length > 0) {
|