@cloudcome/utils-browser 1.2.16 → 1.2.18
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 +72 -73
- package/dist/base64.cjs +21 -8
- package/dist/base64.cjs.map +1 -1
- package/dist/base64.mjs +22 -11
- package/dist/base64.mjs.map +1 -1
- package/dist/cache.cjs +91 -79
- package/dist/cache.cjs.map +1 -1
- package/dist/cache.d.ts +1 -1
- package/dist/cache.mjs +91 -82
- package/dist/cache.mjs.map +1 -1
- package/dist/canvas.cjs +64 -48
- package/dist/canvas.cjs.map +1 -1
- package/dist/canvas.mjs +64 -51
- package/dist/canvas.mjs.map +1 -1
- package/dist/clipboard.cjs +34 -15
- package/dist/clipboard.cjs.map +1 -1
- package/dist/clipboard.mjs +35 -17
- package/dist/clipboard.mjs.map +1 -1
- package/dist/cookie.cjs +42 -41
- package/dist/cookie.cjs.map +1 -1
- package/dist/cookie.mjs +42 -44
- package/dist/cookie.mjs.map +1 -1
- package/dist/dom.cjs +30 -11
- package/dist/dom.cjs.map +1 -1
- package/dist/dom.mjs +30 -13
- package/dist/dom.mjs.map +1 -1
- package/dist/download.cjs +24 -12
- package/dist/download.cjs.map +1 -1
- package/dist/download.mjs +25 -15
- package/dist/download.mjs.map +1 -1
- package/dist/image.cjs +45 -34
- package/dist/image.cjs.map +1 -1
- package/dist/image.mjs +45 -35
- package/dist/image.mjs.map +1 -1
- package/dist/index.cjs +8 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +9 -5
- package/dist/index.mjs.map +1 -1
- package/dist/timer.cjs +40 -37
- package/dist/timer.cjs.map +1 -1
- package/dist/timer.mjs +40 -38
- package/dist/timer.mjs.map +1 -1
- package/dist/video.cjs +25 -14
- package/dist/video.cjs.map +1 -1
- package/dist/video.mjs +26 -16
- package/dist/video.mjs.map +1 -1
- package/package.json +51 -52
package/dist/image.mjs
CHANGED
|
@@ -1,38 +1,48 @@
|
|
|
1
1
|
import { setStyle } from "./dom.mjs";
|
|
2
|
+
//#region src/image.ts
|
|
3
|
+
/**
|
|
4
|
+
* 加载图片并返回一个包含 HTMLImageElement 的 Promise
|
|
5
|
+
* @param {string} url - 图片的 URL 地址
|
|
6
|
+
* @returns {Promise<HTMLImageElement>} 返回一个包含 HTMLImageElement 的 Promise
|
|
7
|
+
* @example
|
|
8
|
+
* const img = await imageLoad('https://example.com/image.png');
|
|
9
|
+
* @throws {Error} 如果图片加载失败,抛出错误
|
|
10
|
+
*/
|
|
2
11
|
async function imageLoad(url) {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
12
|
+
return new Promise((resolve, reject) => {
|
|
13
|
+
const image = new Image();
|
|
14
|
+
let finished = false;
|
|
15
|
+
const onFinish = (isError) => {
|
|
16
|
+
if (finished) return;
|
|
17
|
+
finished = true;
|
|
18
|
+
image.onload = image.onerror = null;
|
|
19
|
+
document.body.removeChild(image);
|
|
20
|
+
if (isError) reject(/* @__PURE__ */ new Error("图片加载失败"));
|
|
21
|
+
else resolve(image);
|
|
22
|
+
};
|
|
23
|
+
image.onload = () => onFinish();
|
|
24
|
+
image.onerror = () => onFinish(true);
|
|
25
|
+
image.crossOrigin = "anonymous";
|
|
26
|
+
image.src = url;
|
|
27
|
+
setStyle(image, {
|
|
28
|
+
visibility: "hidden",
|
|
29
|
+
position: "absolute",
|
|
30
|
+
top: "-99999%",
|
|
31
|
+
left: "-99999%",
|
|
32
|
+
maxWidth: "none",
|
|
33
|
+
maxHeight: "none",
|
|
34
|
+
border: "0",
|
|
35
|
+
width: "auto",
|
|
36
|
+
height: "auto",
|
|
37
|
+
margin: "0",
|
|
38
|
+
padding: "0",
|
|
39
|
+
transform: ""
|
|
40
|
+
});
|
|
41
|
+
document.body.appendChild(image);
|
|
42
|
+
if (image.complete && image.width > 0) onFinish();
|
|
43
|
+
});
|
|
34
44
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
//# sourceMappingURL=image.mjs.map
|
|
45
|
+
//#endregion
|
|
46
|
+
export { imageLoad };
|
|
47
|
+
|
|
48
|
+
//# sourceMappingURL=image.mjs.map
|
package/dist/image.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image.mjs","sources":["../src/image.ts"],"sourcesContent":["import { setStyle } from './dom';\n\n/**\n * 加载图片并返回一个包含 HTMLImageElement 的 Promise\n * @param {string} url - 图片的 URL 地址\n * @returns {Promise<HTMLImageElement>} 返回一个包含 HTMLImageElement 的 Promise\n * @example\n * const img = await imageLoad('https://example.com/image.png');\n * @throws {Error} 如果图片加载失败,抛出错误\n */\nexport async function imageLoad(url: string) {\n return new Promise<HTMLImageElement>((resolve, reject) => {\n const image = new Image();\n let finished = false;\n const onFinish = (isError?: boolean) => {\n if (finished) return;\n finished = true;\n image.onload = image.onerror = null;\n document.body.removeChild(image);\n isError
|
|
1
|
+
{"version":3,"file":"image.mjs","names":[],"sources":["../src/image.ts"],"sourcesContent":["import { setStyle } from './dom';\n\n/**\n * 加载图片并返回一个包含 HTMLImageElement 的 Promise\n * @param {string} url - 图片的 URL 地址\n * @returns {Promise<HTMLImageElement>} 返回一个包含 HTMLImageElement 的 Promise\n * @example\n * const img = await imageLoad('https://example.com/image.png');\n * @throws {Error} 如果图片加载失败,抛出错误\n */\nexport async function imageLoad(url: string) {\n return new Promise<HTMLImageElement>((resolve, reject) => {\n const image = new Image();\n let finished = false;\n const onFinish = (isError?: boolean) => {\n if (finished) return;\n finished = true;\n image.onload = image.onerror = null;\n document.body.removeChild(image);\n if (isError) {\n reject(new Error('图片加载失败'));\n } else {\n resolve(image);\n }\n };\n image.onload = () => onFinish();\n image.onerror = () => onFinish(true);\n image.crossOrigin = 'anonymous';\n image.src = url;\n\n // ios 拍照产生的图片,如果没有插入的 DOM 中获取到的图片尺寸是相反的\n setStyle(image, {\n visibility: 'hidden',\n position: 'absolute',\n top: '-99999%',\n left: '-99999%',\n maxWidth: 'none',\n maxHeight: 'none',\n border: '0',\n width: 'auto',\n height: 'auto',\n margin: '0',\n padding: '0',\n transform: '',\n });\n document.body.appendChild(image);\n\n if (image.complete && image.width > 0) onFinish();\n });\n}\n\n// 图片缩放函数\n"],"mappings":";;;;;;;;;;AAUA,eAAsB,UAAU,KAAa;CAC3C,OAAO,IAAI,SAA2B,SAAS,WAAW;EACxD,MAAM,QAAQ,IAAI,OAAO;EACzB,IAAI,WAAW;EACf,MAAM,YAAY,YAAsB;GACtC,IAAI,UAAU;GACd,WAAW;GACX,MAAM,SAAS,MAAM,UAAU;GAC/B,SAAS,KAAK,YAAY,MAAM;GAChC,IAAI,SACF,uBAAO,IAAI,MAAM,SAAS,CAAC;QAE3B,QAAQ,MAAM;;EAGlB,MAAM,eAAe,UAAU;EAC/B,MAAM,gBAAgB,SAAS,KAAK;EACpC,MAAM,cAAc;EACpB,MAAM,MAAM;EAGZ,SAAS,OAAO;GACd,YAAY;GACZ,UAAU;GACV,KAAK;GACL,MAAM;GACN,UAAU;GACV,WAAW;GACX,QAAQ;GACR,OAAO;GACP,QAAQ;GACR,QAAQ;GACR,SAAS;GACT,WAAW;GACZ,CAAC;EACF,SAAS,KAAK,YAAY,MAAM;EAEhC,IAAI,MAAM,YAAY,MAAM,QAAQ,GAAG,UAAU;GACjD"}
|
package/dist/index.cjs
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
|
|
2
|
+
//#region src/index.ts
|
|
3
|
+
/**
|
|
4
|
+
* `@cloudcome/utils-browser` 版本号
|
|
5
|
+
*/
|
|
6
|
+
var VERSION = "1.2.18";
|
|
7
|
+
//#endregion
|
|
4
8
|
exports.VERSION = VERSION;
|
|
5
|
-
|
|
9
|
+
|
|
10
|
+
//# sourceMappingURL=index.cjs.map
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../src/index.ts"],"sourcesContent":["/**\n * `@cloudcome/utils-browser` 版本号\n */\nexport const VERSION = PKG_VERSION;\n"],"
|
|
1
|
+
{"version":3,"file":"index.cjs","names":[],"sources":["../src/index.ts"],"sourcesContent":["/**\n * `@cloudcome/utils-browser` 版本号\n */\nexport const VERSION = PKG_VERSION;\n"],"mappings":";;;;;AAGA,IAAa,UAAA"}
|
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
//#region src/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* `@cloudcome/utils-browser` 版本号
|
|
4
|
+
*/
|
|
5
|
+
var VERSION = "1.2.18";
|
|
6
|
+
//#endregion
|
|
7
|
+
export { VERSION };
|
|
8
|
+
|
|
9
|
+
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../src/index.ts"],"sourcesContent":["/**\n * `@cloudcome/utils-browser` 版本号\n */\nexport const VERSION = PKG_VERSION;\n"],"
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../src/index.ts"],"sourcesContent":["/**\n * `@cloudcome/utils-browser` 版本号\n */\nexport const VERSION = PKG_VERSION;\n"],"mappings":";;;;AAGA,IAAa,UAAA"}
|
package/dist/timer.cjs
CHANGED
|
@@ -1,41 +1,44 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
|
|
2
|
+
let _cloudcome_utils_core_timer = require("@cloudcome/utils-core/timer");
|
|
3
|
+
//#region src/timer.ts
|
|
4
|
+
/**
|
|
5
|
+
* 创建一个基于 `requestAnimationFrame` 的间隔定时器
|
|
6
|
+
*
|
|
7
|
+
* @param callback - 每次间隔执行的回调函数,接收定时器状态和可选的 `next` 函数
|
|
8
|
+
* @param options - 配置选项
|
|
9
|
+
* @returns {TimerHandler} 返回包含控制方法的对象
|
|
10
|
+
*/
|
|
4
11
|
function frameInterval(callback, options) {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
resume();
|
|
34
|
-
} else {
|
|
35
|
-
rafId = requestAnimationFrame(resume);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
};
|
|
12
|
+
let rafId;
|
|
13
|
+
const { canStart, start, canStop, stop, canPause, pause, canResume, resume, execute } = (0, _cloudcome_utils_core_timer.makeInterval)((call) => {
|
|
14
|
+
rafId = requestAnimationFrame(call);
|
|
15
|
+
}, callback);
|
|
16
|
+
return {
|
|
17
|
+
start() {
|
|
18
|
+
if (!canStart()) return;
|
|
19
|
+
if (options?.leading) start();
|
|
20
|
+
else rafId = requestAnimationFrame(start);
|
|
21
|
+
},
|
|
22
|
+
stop() {
|
|
23
|
+
if (!canStop()) return;
|
|
24
|
+
if (options?.trailing) execute();
|
|
25
|
+
cancelAnimationFrame(rafId);
|
|
26
|
+
stop();
|
|
27
|
+
},
|
|
28
|
+
pause() {
|
|
29
|
+
if (!canPause()) return;
|
|
30
|
+
if (options?.trailing) execute();
|
|
31
|
+
cancelAnimationFrame(rafId);
|
|
32
|
+
pause();
|
|
33
|
+
},
|
|
34
|
+
resume(immediate) {
|
|
35
|
+
if (!canResume()) return;
|
|
36
|
+
if (immediate || options?.leading) resume();
|
|
37
|
+
else rafId = requestAnimationFrame(resume);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
39
40
|
}
|
|
41
|
+
//#endregion
|
|
40
42
|
exports.frameInterval = frameInterval;
|
|
41
|
-
|
|
43
|
+
|
|
44
|
+
//# sourceMappingURL=timer.cjs.map
|
package/dist/timer.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timer.cjs","sources":["../src/timer.ts"],"sourcesContent":["import { type TimerHandler, type TimerOptions, type TimerState
|
|
1
|
+
{"version":3,"file":"timer.cjs","names":[],"sources":["../src/timer.ts"],"sourcesContent":["import { makeInterval, type TimerHandler, type TimerOptions, type TimerState } from '@cloudcome/utils-core/timer';\n\n/**\n * 创建一个基于 `requestAnimationFrame` 的间隔定时器\n *\n * @param callback - 每次间隔执行的回调函数,接收定时器状态和可选的 `next` 函数\n * @param options - 配置选项\n * @returns {TimerHandler} 返回包含控制方法的对象\n */\nexport function frameInterval(\n callback: (state: TimerState, next?: () => void) => unknown,\n options?: TimerOptions,\n): TimerHandler {\n let rafId: number;\n const { canStart, start, canStop, stop, canPause, pause, canResume, resume, execute } = makeInterval((call) => {\n rafId = requestAnimationFrame(call);\n }, callback);\n\n return {\n start() {\n if (!canStart()) return;\n\n if (options?.leading) {\n start();\n } else {\n rafId = requestAnimationFrame(start);\n }\n },\n\n stop() {\n if (!canStop()) return;\n if (options?.trailing) execute();\n\n cancelAnimationFrame(rafId);\n stop();\n },\n\n pause() {\n if (!canPause()) return;\n if (options?.trailing) execute();\n\n cancelAnimationFrame(rafId);\n pause();\n },\n\n resume(immediate?: boolean) {\n if (!canResume()) return;\n\n if (immediate || options?.leading) {\n resume();\n } else {\n rafId = requestAnimationFrame(resume);\n }\n },\n };\n}\n"],"mappings":";;;;;;;;;;AASA,SAAgB,cACd,UACA,SACc;CACd,IAAI;CACJ,MAAM,EAAE,UAAU,OAAO,SAAS,MAAM,UAAU,OAAO,WAAW,QAAQ,aAAA,GAAA,4BAAA,eAA0B,SAAS;EAC7G,QAAQ,sBAAsB,KAAK;IAClC,SAAS;CAEZ,OAAO;EACL,QAAQ;GACN,IAAI,CAAC,UAAU,EAAE;GAEjB,IAAI,SAAS,SACX,OAAO;QAEP,QAAQ,sBAAsB,MAAM;;EAIxC,OAAO;GACL,IAAI,CAAC,SAAS,EAAE;GAChB,IAAI,SAAS,UAAU,SAAS;GAEhC,qBAAqB,MAAM;GAC3B,MAAM;;EAGR,QAAQ;GACN,IAAI,CAAC,UAAU,EAAE;GACjB,IAAI,SAAS,UAAU,SAAS;GAEhC,qBAAqB,MAAM;GAC3B,OAAO;;EAGT,OAAO,WAAqB;GAC1B,IAAI,CAAC,WAAW,EAAE;GAElB,IAAI,aAAa,SAAS,SACxB,QAAQ;QAER,QAAQ,sBAAsB,OAAO;;EAG1C"}
|
package/dist/timer.mjs
CHANGED
|
@@ -1,41 +1,43 @@
|
|
|
1
1
|
import { makeInterval } from "@cloudcome/utils-core/timer";
|
|
2
|
+
//#region src/timer.ts
|
|
3
|
+
/**
|
|
4
|
+
* 创建一个基于 `requestAnimationFrame` 的间隔定时器
|
|
5
|
+
*
|
|
6
|
+
* @param callback - 每次间隔执行的回调函数,接收定时器状态和可选的 `next` 函数
|
|
7
|
+
* @param options - 配置选项
|
|
8
|
+
* @returns {TimerHandler} 返回包含控制方法的对象
|
|
9
|
+
*/
|
|
2
10
|
function frameInterval(callback, options) {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
resume();
|
|
32
|
-
} else {
|
|
33
|
-
rafId = requestAnimationFrame(resume);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
};
|
|
11
|
+
let rafId;
|
|
12
|
+
const { canStart, start, canStop, stop, canPause, pause, canResume, resume, execute } = makeInterval((call) => {
|
|
13
|
+
rafId = requestAnimationFrame(call);
|
|
14
|
+
}, callback);
|
|
15
|
+
return {
|
|
16
|
+
start() {
|
|
17
|
+
if (!canStart()) return;
|
|
18
|
+
if (options?.leading) start();
|
|
19
|
+
else rafId = requestAnimationFrame(start);
|
|
20
|
+
},
|
|
21
|
+
stop() {
|
|
22
|
+
if (!canStop()) return;
|
|
23
|
+
if (options?.trailing) execute();
|
|
24
|
+
cancelAnimationFrame(rafId);
|
|
25
|
+
stop();
|
|
26
|
+
},
|
|
27
|
+
pause() {
|
|
28
|
+
if (!canPause()) return;
|
|
29
|
+
if (options?.trailing) execute();
|
|
30
|
+
cancelAnimationFrame(rafId);
|
|
31
|
+
pause();
|
|
32
|
+
},
|
|
33
|
+
resume(immediate) {
|
|
34
|
+
if (!canResume()) return;
|
|
35
|
+
if (immediate || options?.leading) resume();
|
|
36
|
+
else rafId = requestAnimationFrame(resume);
|
|
37
|
+
}
|
|
38
|
+
};
|
|
37
39
|
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
//# sourceMappingURL=timer.mjs.map
|
|
40
|
+
//#endregion
|
|
41
|
+
export { frameInterval };
|
|
42
|
+
|
|
43
|
+
//# sourceMappingURL=timer.mjs.map
|
package/dist/timer.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timer.mjs","sources":["../src/timer.ts"],"sourcesContent":["import { type TimerHandler, type TimerOptions, type TimerState
|
|
1
|
+
{"version":3,"file":"timer.mjs","names":[],"sources":["../src/timer.ts"],"sourcesContent":["import { makeInterval, type TimerHandler, type TimerOptions, type TimerState } from '@cloudcome/utils-core/timer';\n\n/**\n * 创建一个基于 `requestAnimationFrame` 的间隔定时器\n *\n * @param callback - 每次间隔执行的回调函数,接收定时器状态和可选的 `next` 函数\n * @param options - 配置选项\n * @returns {TimerHandler} 返回包含控制方法的对象\n */\nexport function frameInterval(\n callback: (state: TimerState, next?: () => void) => unknown,\n options?: TimerOptions,\n): TimerHandler {\n let rafId: number;\n const { canStart, start, canStop, stop, canPause, pause, canResume, resume, execute } = makeInterval((call) => {\n rafId = requestAnimationFrame(call);\n }, callback);\n\n return {\n start() {\n if (!canStart()) return;\n\n if (options?.leading) {\n start();\n } else {\n rafId = requestAnimationFrame(start);\n }\n },\n\n stop() {\n if (!canStop()) return;\n if (options?.trailing) execute();\n\n cancelAnimationFrame(rafId);\n stop();\n },\n\n pause() {\n if (!canPause()) return;\n if (options?.trailing) execute();\n\n cancelAnimationFrame(rafId);\n pause();\n },\n\n resume(immediate?: boolean) {\n if (!canResume()) return;\n\n if (immediate || options?.leading) {\n resume();\n } else {\n rafId = requestAnimationFrame(resume);\n }\n },\n };\n}\n"],"mappings":";;;;;;;;;AASA,SAAgB,cACd,UACA,SACc;CACd,IAAI;CACJ,MAAM,EAAE,UAAU,OAAO,SAAS,MAAM,UAAU,OAAO,WAAW,QAAQ,YAAY,cAAc,SAAS;EAC7G,QAAQ,sBAAsB,KAAK;IAClC,SAAS;CAEZ,OAAO;EACL,QAAQ;GACN,IAAI,CAAC,UAAU,EAAE;GAEjB,IAAI,SAAS,SACX,OAAO;QAEP,QAAQ,sBAAsB,MAAM;;EAIxC,OAAO;GACL,IAAI,CAAC,SAAS,EAAE;GAChB,IAAI,SAAS,UAAU,SAAS;GAEhC,qBAAqB,MAAM;GAC3B,MAAM;;EAGR,QAAQ;GACN,IAAI,CAAC,UAAU,EAAE;GACjB,IAAI,SAAS,UAAU,SAAS;GAEhC,qBAAqB,MAAM;GAC3B,OAAO;;EAGT,OAAO,WAAqB;GAC1B,IAAI,CAAC,WAAW,EAAE;GAElB,IAAI,aAAa,SAAS,SACxB,QAAQ;QAER,QAAQ,sBAAsB,OAAO;;EAG1C"}
|
package/dist/video.cjs
CHANGED
|
@@ -1,18 +1,29 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
//#region src/video.ts
|
|
3
|
+
/**
|
|
4
|
+
* 加载视频并返回一个包含 HTMLVideoElement 的 Promise
|
|
5
|
+
* @param {string} url - 视频的 URL 地址
|
|
6
|
+
* @returns {Promise<HTMLVideoElement>} 返回一个包含 HTMLVideoElement 的 Promise
|
|
7
|
+
* @example
|
|
8
|
+
* const video = await videoLoad('https://example.com/video.mp4');
|
|
9
|
+
* @throws {Error} 如果视频加载失败,抛出错误
|
|
10
|
+
*/
|
|
3
11
|
async function videoLoad(url) {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
return new Promise((resolve, reject) => {
|
|
13
|
+
const video = document.createElement("video");
|
|
14
|
+
const onFinish = (isError) => {
|
|
15
|
+
video.onload = video.onerror = null;
|
|
16
|
+
if (isError) reject(/* @__PURE__ */ new Error("视频加载失败"));
|
|
17
|
+
else resolve(video);
|
|
18
|
+
};
|
|
19
|
+
video.src = url;
|
|
20
|
+
video.crossOrigin = "anonymous";
|
|
21
|
+
video.currentTime = 1;
|
|
22
|
+
video.onloadedmetadata = () => onFinish();
|
|
23
|
+
video.onerror = () => onFinish(true);
|
|
24
|
+
});
|
|
16
25
|
}
|
|
26
|
+
//#endregion
|
|
17
27
|
exports.videoLoad = videoLoad;
|
|
18
|
-
|
|
28
|
+
|
|
29
|
+
//# sourceMappingURL=video.cjs.map
|
package/dist/video.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"video.cjs","sources":["../src/video.ts"],"sourcesContent":["/**\n * 加载视频并返回一个包含 HTMLVideoElement 的 Promise\n * @param {string} url - 视频的 URL 地址\n * @returns {Promise<HTMLVideoElement>} 返回一个包含 HTMLVideoElement 的 Promise\n * @example\n * const video = await videoLoad('https://example.com/video.mp4');\n * @throws {Error} 如果视频加载失败,抛出错误\n */\nexport async function videoLoad(url: string) {\n return new Promise<HTMLVideoElement>((resolve, reject) => {\n const video = document.createElement('video');\n const onFinish = (isError?: boolean) => {\n video.onload = video.onerror = null;\n isError
|
|
1
|
+
{"version":3,"file":"video.cjs","names":[],"sources":["../src/video.ts"],"sourcesContent":["/**\n * 加载视频并返回一个包含 HTMLVideoElement 的 Promise\n * @param {string} url - 视频的 URL 地址\n * @returns {Promise<HTMLVideoElement>} 返回一个包含 HTMLVideoElement 的 Promise\n * @example\n * const video = await videoLoad('https://example.com/video.mp4');\n * @throws {Error} 如果视频加载失败,抛出错误\n */\nexport async function videoLoad(url: string) {\n return new Promise<HTMLVideoElement>((resolve, reject) => {\n const video = document.createElement('video');\n const onFinish = (isError?: boolean) => {\n video.onload = video.onerror = null;\n if (isError) {\n reject(new Error('视频加载失败'));\n } else {\n resolve(video);\n }\n };\n\n video.src = url;\n video.crossOrigin = 'anonymous';\n video.currentTime = 1;\n video.onloadedmetadata = () => onFinish();\n video.onerror = () => onFinish(true);\n });\n}\n"],"mappings":";;;;;;;;;;AAQA,eAAsB,UAAU,KAAa;CAC3C,OAAO,IAAI,SAA2B,SAAS,WAAW;EACxD,MAAM,QAAQ,SAAS,cAAc,QAAQ;EAC7C,MAAM,YAAY,YAAsB;GACtC,MAAM,SAAS,MAAM,UAAU;GAC/B,IAAI,SACF,uBAAO,IAAI,MAAM,SAAS,CAAC;QAE3B,QAAQ,MAAM;;EAIlB,MAAM,MAAM;EACZ,MAAM,cAAc;EACpB,MAAM,cAAc;EACpB,MAAM,yBAAyB,UAAU;EACzC,MAAM,gBAAgB,SAAS,KAAK;GACpC"}
|
package/dist/video.mjs
CHANGED
|
@@ -1,18 +1,28 @@
|
|
|
1
|
+
//#region src/video.ts
|
|
2
|
+
/**
|
|
3
|
+
* 加载视频并返回一个包含 HTMLVideoElement 的 Promise
|
|
4
|
+
* @param {string} url - 视频的 URL 地址
|
|
5
|
+
* @returns {Promise<HTMLVideoElement>} 返回一个包含 HTMLVideoElement 的 Promise
|
|
6
|
+
* @example
|
|
7
|
+
* const video = await videoLoad('https://example.com/video.mp4');
|
|
8
|
+
* @throws {Error} 如果视频加载失败,抛出错误
|
|
9
|
+
*/
|
|
1
10
|
async function videoLoad(url) {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
return new Promise((resolve, reject) => {
|
|
12
|
+
const video = document.createElement("video");
|
|
13
|
+
const onFinish = (isError) => {
|
|
14
|
+
video.onload = video.onerror = null;
|
|
15
|
+
if (isError) reject(/* @__PURE__ */ new Error("视频加载失败"));
|
|
16
|
+
else resolve(video);
|
|
17
|
+
};
|
|
18
|
+
video.src = url;
|
|
19
|
+
video.crossOrigin = "anonymous";
|
|
20
|
+
video.currentTime = 1;
|
|
21
|
+
video.onloadedmetadata = () => onFinish();
|
|
22
|
+
video.onerror = () => onFinish(true);
|
|
23
|
+
});
|
|
14
24
|
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
//# sourceMappingURL=video.mjs.map
|
|
25
|
+
//#endregion
|
|
26
|
+
export { videoLoad };
|
|
27
|
+
|
|
28
|
+
//# sourceMappingURL=video.mjs.map
|
package/dist/video.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"video.mjs","sources":["../src/video.ts"],"sourcesContent":["/**\n * 加载视频并返回一个包含 HTMLVideoElement 的 Promise\n * @param {string} url - 视频的 URL 地址\n * @returns {Promise<HTMLVideoElement>} 返回一个包含 HTMLVideoElement 的 Promise\n * @example\n * const video = await videoLoad('https://example.com/video.mp4');\n * @throws {Error} 如果视频加载失败,抛出错误\n */\nexport async function videoLoad(url: string) {\n return new Promise<HTMLVideoElement>((resolve, reject) => {\n const video = document.createElement('video');\n const onFinish = (isError?: boolean) => {\n video.onload = video.onerror = null;\n isError
|
|
1
|
+
{"version":3,"file":"video.mjs","names":[],"sources":["../src/video.ts"],"sourcesContent":["/**\n * 加载视频并返回一个包含 HTMLVideoElement 的 Promise\n * @param {string} url - 视频的 URL 地址\n * @returns {Promise<HTMLVideoElement>} 返回一个包含 HTMLVideoElement 的 Promise\n * @example\n * const video = await videoLoad('https://example.com/video.mp4');\n * @throws {Error} 如果视频加载失败,抛出错误\n */\nexport async function videoLoad(url: string) {\n return new Promise<HTMLVideoElement>((resolve, reject) => {\n const video = document.createElement('video');\n const onFinish = (isError?: boolean) => {\n video.onload = video.onerror = null;\n if (isError) {\n reject(new Error('视频加载失败'));\n } else {\n resolve(video);\n }\n };\n\n video.src = url;\n video.crossOrigin = 'anonymous';\n video.currentTime = 1;\n video.onloadedmetadata = () => onFinish();\n video.onerror = () => onFinish(true);\n });\n}\n"],"mappings":";;;;;;;;;AAQA,eAAsB,UAAU,KAAa;CAC3C,OAAO,IAAI,SAA2B,SAAS,WAAW;EACxD,MAAM,QAAQ,SAAS,cAAc,QAAQ;EAC7C,MAAM,YAAY,YAAsB;GACtC,MAAM,SAAS,MAAM,UAAU;GAC/B,IAAI,SACF,uBAAO,IAAI,MAAM,SAAS,CAAC;QAE3B,QAAQ,MAAM;;EAIlB,MAAM,MAAM;EACZ,MAAM,cAAc;EACpB,MAAM,cAAc;EACpB,MAAM,yBAAyB,UAAU;EACzC,MAAM,gBAAgB,SAAS,KAAK;GACpC"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,44 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cloudcome/utils-browser",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.18",
|
|
4
4
|
"description": "cloudcome utils for browser",
|
|
5
|
-
"
|
|
6
|
-
|
|
5
|
+
"main": "./dist/index.cjs",
|
|
6
|
+
"module": "./dist/index.mjs",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"typesVersions": {
|
|
9
|
+
"*": {
|
|
10
|
+
"base64": [
|
|
11
|
+
"./dist/base64.d.ts"
|
|
12
|
+
],
|
|
13
|
+
"cache": [
|
|
14
|
+
"./dist/cache.d.ts"
|
|
15
|
+
],
|
|
16
|
+
"canvas": [
|
|
17
|
+
"./dist/canvas.d.ts"
|
|
18
|
+
],
|
|
19
|
+
"clipboard": [
|
|
20
|
+
"./dist/clipboard.d.ts"
|
|
21
|
+
],
|
|
22
|
+
"cookie": [
|
|
23
|
+
"./dist/cookie.d.ts"
|
|
24
|
+
],
|
|
25
|
+
"dom": [
|
|
26
|
+
"./dist/dom.d.ts"
|
|
27
|
+
],
|
|
28
|
+
"download": [
|
|
29
|
+
"./dist/download.d.ts"
|
|
30
|
+
],
|
|
31
|
+
"image": [
|
|
32
|
+
"./dist/image.d.ts"
|
|
33
|
+
],
|
|
34
|
+
"timer": [
|
|
35
|
+
"./dist/timer.d.ts"
|
|
36
|
+
],
|
|
37
|
+
"video": [
|
|
38
|
+
"./dist/video.d.ts"
|
|
39
|
+
]
|
|
40
|
+
}
|
|
7
41
|
},
|
|
8
|
-
"engineStrict": true,
|
|
9
42
|
"sideEffects": false,
|
|
10
43
|
"exports": {
|
|
11
44
|
".": {
|
|
@@ -65,64 +98,30 @@
|
|
|
65
98
|
"require": "./dist/video.cjs"
|
|
66
99
|
}
|
|
67
100
|
},
|
|
68
|
-
"typesVersions": {
|
|
69
|
-
"*": {
|
|
70
|
-
"base64": [
|
|
71
|
-
"./dist/base64.d.ts"
|
|
72
|
-
],
|
|
73
|
-
"cache": [
|
|
74
|
-
"./dist/cache.d.ts"
|
|
75
|
-
],
|
|
76
|
-
"canvas": [
|
|
77
|
-
"./dist/canvas.d.ts"
|
|
78
|
-
],
|
|
79
|
-
"clipboard": [
|
|
80
|
-
"./dist/clipboard.d.ts"
|
|
81
|
-
],
|
|
82
|
-
"cookie": [
|
|
83
|
-
"./dist/cookie.d.ts"
|
|
84
|
-
],
|
|
85
|
-
"dom": [
|
|
86
|
-
"./dist/dom.d.ts"
|
|
87
|
-
],
|
|
88
|
-
"download": [
|
|
89
|
-
"./dist/download.d.ts"
|
|
90
|
-
],
|
|
91
|
-
"image": [
|
|
92
|
-
"./dist/image.d.ts"
|
|
93
|
-
],
|
|
94
|
-
"timer": [
|
|
95
|
-
"./dist/timer.d.ts"
|
|
96
|
-
],
|
|
97
|
-
"video": [
|
|
98
|
-
"./dist/video.d.ts"
|
|
99
|
-
]
|
|
100
|
-
}
|
|
101
|
-
},
|
|
102
|
-
"main": "./dist/index.cjs",
|
|
103
|
-
"module": "./dist/index.mjs",
|
|
104
|
-
"types": "./dist/index.d.ts",
|
|
105
101
|
"files": [
|
|
106
102
|
"dist"
|
|
107
103
|
],
|
|
108
|
-
"
|
|
109
|
-
"
|
|
104
|
+
"engines": {
|
|
105
|
+
"node": ">=22"
|
|
110
106
|
},
|
|
111
|
-
"
|
|
112
|
-
"
|
|
113
|
-
"url": "git+https://github.com/cloudcome/utils.git"
|
|
107
|
+
"dependencies": {
|
|
108
|
+
"@cloudcome/utils-core": "~1.20.1"
|
|
114
109
|
},
|
|
115
110
|
"keywords": [
|
|
116
|
-
"utils",
|
|
117
111
|
"cloudcome",
|
|
112
|
+
"utils",
|
|
113
|
+
"utils-browser",
|
|
118
114
|
"utils-core",
|
|
119
|
-
"utils-
|
|
115
|
+
"utils-node",
|
|
120
116
|
"utils-react",
|
|
121
117
|
"utils-uni",
|
|
122
|
-
"utils-
|
|
123
|
-
"utils-browser"
|
|
118
|
+
"utils-vue"
|
|
124
119
|
],
|
|
125
|
-
"homepage": "https://github.
|
|
120
|
+
"homepage": "https://cloudcome.github.io/utils/",
|
|
126
121
|
"license": "MIT",
|
|
127
|
-
"author": "云淡然 <hi@ydr.me> (https://ydr.me/)"
|
|
122
|
+
"author": "云淡然 <hi@ydr.me> (https://ydr.me/)",
|
|
123
|
+
"repository": {
|
|
124
|
+
"type": "git",
|
|
125
|
+
"url": "git+https://github.com/cloudcome/utils.git"
|
|
126
|
+
}
|
|
128
127
|
}
|