@cloudcome/utils-browser 1.2.16 → 1.2.17

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.
Files changed (47) hide show
  1. package/README.md +1 -1
  2. package/dist/base64.cjs +21 -8
  3. package/dist/base64.cjs.map +1 -1
  4. package/dist/base64.mjs +22 -11
  5. package/dist/base64.mjs.map +1 -1
  6. package/dist/cache.cjs +91 -79
  7. package/dist/cache.cjs.map +1 -1
  8. package/dist/cache.d.ts +1 -1
  9. package/dist/cache.mjs +91 -82
  10. package/dist/cache.mjs.map +1 -1
  11. package/dist/canvas.cjs +64 -48
  12. package/dist/canvas.cjs.map +1 -1
  13. package/dist/canvas.mjs +64 -51
  14. package/dist/canvas.mjs.map +1 -1
  15. package/dist/clipboard.cjs +34 -15
  16. package/dist/clipboard.cjs.map +1 -1
  17. package/dist/clipboard.mjs +35 -17
  18. package/dist/clipboard.mjs.map +1 -1
  19. package/dist/cookie.cjs +42 -41
  20. package/dist/cookie.cjs.map +1 -1
  21. package/dist/cookie.mjs +42 -44
  22. package/dist/cookie.mjs.map +1 -1
  23. package/dist/dom.cjs +30 -11
  24. package/dist/dom.cjs.map +1 -1
  25. package/dist/dom.mjs +30 -13
  26. package/dist/dom.mjs.map +1 -1
  27. package/dist/download.cjs +24 -12
  28. package/dist/download.cjs.map +1 -1
  29. package/dist/download.mjs +25 -15
  30. package/dist/download.mjs.map +1 -1
  31. package/dist/image.cjs +44 -34
  32. package/dist/image.cjs.map +1 -1
  33. package/dist/image.mjs +44 -35
  34. package/dist/image.mjs.map +1 -1
  35. package/dist/index.cjs +8 -3
  36. package/dist/index.cjs.map +1 -1
  37. package/dist/index.mjs +9 -5
  38. package/dist/index.mjs.map +1 -1
  39. package/dist/timer.cjs +40 -37
  40. package/dist/timer.cjs.map +1 -1
  41. package/dist/timer.mjs +40 -38
  42. package/dist/timer.mjs.map +1 -1
  43. package/dist/video.cjs +24 -14
  44. package/dist/video.cjs.map +1 -1
  45. package/dist/video.mjs +25 -16
  46. package/dist/video.mjs.map +1 -1
  47. package/package.json +46 -47
package/dist/timer.cjs CHANGED
@@ -1,41 +1,44 @@
1
- "use strict";
2
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const timer = require("@cloudcome/utils-core/timer");
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
- let rafId;
6
- const { canStart, start, canStop, stop, canPause, pause, canResume, resume, execute } = timer.makeInterval((call) => {
7
- rafId = requestAnimationFrame(call);
8
- }, callback);
9
- return {
10
- start() {
11
- if (!canStart()) return;
12
- if (options?.leading) {
13
- start();
14
- } else {
15
- rafId = requestAnimationFrame(start);
16
- }
17
- },
18
- stop() {
19
- if (!canStop()) return;
20
- if (options?.trailing) execute();
21
- cancelAnimationFrame(rafId);
22
- stop();
23
- },
24
- pause() {
25
- if (!canPause()) return;
26
- if (options?.trailing) execute();
27
- cancelAnimationFrame(rafId);
28
- pause();
29
- },
30
- resume(immediate) {
31
- if (!canResume()) return;
32
- if (immediate || options?.leading) {
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
- //# sourceMappingURL=timer.cjs.map
43
+
44
+ //# sourceMappingURL=timer.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"timer.cjs","sources":["../src/timer.ts"],"sourcesContent":["import { type TimerHandler, type TimerOptions, type TimerState, makeInterval } 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"],"names":["makeInterval"],"mappings":";;;AASgB,SAAA,cACd,UACA,SACc;AACV,MAAA;AACJ,QAAM,EAAE,UAAU,OAAO,SAAS,MAAM,UAAU,OAAO,WAAW,QAAQ,QAAY,IAAAA,MAAA,aAAa,CAAC,SAAS;AAC7G,YAAQ,sBAAsB,IAAI;AAAA,KACjC,QAAQ;AAEJ,SAAA;AAAA,IACL,QAAQ;AACF,UAAA,CAAC,WAAY;AAEjB,UAAI,SAAS,SAAS;AACd,cAAA;AAAA,MAAA,OACD;AACL,gBAAQ,sBAAsB,KAAK;AAAA,MAAA;AAAA,IAEvC;AAAA,IAEA,OAAO;AACD,UAAA,CAAC,UAAW;AACZ,UAAA,SAAS,SAAkB,SAAA;AAE/B,2BAAqB,KAAK;AACrB,WAAA;AAAA,IACP;AAAA,IAEA,QAAQ;AACF,UAAA,CAAC,WAAY;AACb,UAAA,SAAS,SAAkB,SAAA;AAE/B,2BAAqB,KAAK;AACpB,YAAA;AAAA,IACR;AAAA,IAEA,OAAO,WAAqB;AACtB,UAAA,CAAC,YAAa;AAEd,UAAA,aAAa,SAAS,SAAS;AAC1B,eAAA;AAAA,MAAA,OACF;AACL,gBAAQ,sBAAsB,MAAM;AAAA,MAAA;AAAA,IACtC;AAAA,EAEJ;AACF;;"}
1
+ {"version":3,"file":"timer.cjs","names":[],"sources":["../src/timer.ts"],"sourcesContent":["import {\n makeInterval,\n type TimerHandler,\n type TimerOptions,\n type TimerState,\n} 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 {\n canStart,\n start,\n canStop,\n stop,\n canPause,\n pause,\n canResume,\n resume,\n execute,\n } = 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":";;;;;;;;;;AAcA,SAAgB,cACd,UACA,SACc;CACd,IAAI;CACJ,MAAM,EACJ,UACA,OACA,SACA,MACA,UACA,OACA,WACA,QACA,aAAA,GAAA,4BAAA,eACgB,SAAS;EACzB,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
- let rafId;
4
- const { canStart, start, canStop, stop, canPause, pause, canResume, resume, execute } = makeInterval((call) => {
5
- rafId = requestAnimationFrame(call);
6
- }, callback);
7
- return {
8
- start() {
9
- if (!canStart()) return;
10
- if (options?.leading) {
11
- start();
12
- } else {
13
- rafId = requestAnimationFrame(start);
14
- }
15
- },
16
- stop() {
17
- if (!canStop()) return;
18
- if (options?.trailing) execute();
19
- cancelAnimationFrame(rafId);
20
- stop();
21
- },
22
- pause() {
23
- if (!canPause()) return;
24
- if (options?.trailing) execute();
25
- cancelAnimationFrame(rafId);
26
- pause();
27
- },
28
- resume(immediate) {
29
- if (!canResume()) return;
30
- if (immediate || options?.leading) {
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
- export {
39
- frameInterval
40
- };
41
- //# sourceMappingURL=timer.mjs.map
40
+ //#endregion
41
+ export { frameInterval };
42
+
43
+ //# sourceMappingURL=timer.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"timer.mjs","sources":["../src/timer.ts"],"sourcesContent":["import { type TimerHandler, type TimerOptions, type TimerState, makeInterval } 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"],"names":[],"mappings":";AASgB,SAAA,cACd,UACA,SACc;AACV,MAAA;AACJ,QAAM,EAAE,UAAU,OAAO,SAAS,MAAM,UAAU,OAAO,WAAW,QAAQ,QAAY,IAAA,aAAa,CAAC,SAAS;AAC7G,YAAQ,sBAAsB,IAAI;AAAA,KACjC,QAAQ;AAEJ,SAAA;AAAA,IACL,QAAQ;AACF,UAAA,CAAC,WAAY;AAEjB,UAAI,SAAS,SAAS;AACd,cAAA;AAAA,MAAA,OACD;AACL,gBAAQ,sBAAsB,KAAK;AAAA,MAAA;AAAA,IAEvC;AAAA,IAEA,OAAO;AACD,UAAA,CAAC,UAAW;AACZ,UAAA,SAAS,SAAkB,SAAA;AAE/B,2BAAqB,KAAK;AACrB,WAAA;AAAA,IACP;AAAA,IAEA,QAAQ;AACF,UAAA,CAAC,WAAY;AACb,UAAA,SAAS,SAAkB,SAAA;AAE/B,2BAAqB,KAAK;AACpB,YAAA;AAAA,IACR;AAAA,IAEA,OAAO,WAAqB;AACtB,UAAA,CAAC,YAAa;AAEd,UAAA,aAAa,SAAS,SAAS;AAC1B,eAAA;AAAA,MAAA,OACF;AACL,gBAAQ,sBAAsB,MAAM;AAAA,MAAA;AAAA,IACtC;AAAA,EAEJ;AACF;"}
1
+ {"version":3,"file":"timer.mjs","names":[],"sources":["../src/timer.ts"],"sourcesContent":["import {\n makeInterval,\n type TimerHandler,\n type TimerOptions,\n type TimerState,\n} 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 {\n canStart,\n start,\n canStop,\n stop,\n canPause,\n pause,\n canResume,\n resume,\n execute,\n } = 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":";;;;;;;;;AAcA,SAAgB,cACd,UACA,SACc;CACd,IAAI;CACJ,MAAM,EACJ,UACA,OACA,SACA,MACA,UACA,OACA,WACA,QACA,YACE,cAAc,SAAS;EACzB,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,28 @@
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
- return new Promise((resolve, reject) => {
5
- const video = document.createElement("video");
6
- const onFinish = (isError) => {
7
- video.onload = video.onerror = null;
8
- isError ? reject(new Error("视频加载失败")) : resolve(video);
9
- };
10
- video.src = url;
11
- video.crossOrigin = "anonymous";
12
- video.currentTime = 1;
13
- video.onloadedmetadata = () => onFinish();
14
- video.onerror = () => onFinish(true);
15
- });
12
+ return new Promise((resolve, reject) => {
13
+ const video = document.createElement("video");
14
+ const onFinish = (isError) => {
15
+ video.onload = video.onerror = null;
16
+ isError ? reject(/* @__PURE__ */ new Error("视频加载失败")) : 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
+ });
16
24
  }
25
+ //#endregion
17
26
  exports.videoLoad = videoLoad;
18
- //# sourceMappingURL=video.cjs.map
27
+
28
+ //# sourceMappingURL=video.cjs.map
@@ -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 ? reject(new Error('视频加载失败')) : resolve(video);\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"],"names":[],"mappings":";;AAQA,eAAsB,UAAU,KAAa;AAC3C,SAAO,IAAI,QAA0B,CAAC,SAAS,WAAW;AAClD,UAAA,QAAQ,SAAS,cAAc,OAAO;AACtC,UAAA,WAAW,CAAC,YAAsB;AAChC,YAAA,SAAS,MAAM,UAAU;AAC/B,gBAAU,OAAO,IAAI,MAAM,QAAQ,CAAC,IAAI,QAAQ,KAAK;AAAA,IACvD;AAEA,UAAM,MAAM;AACZ,UAAM,cAAc;AACpB,UAAM,cAAc;AACd,UAAA,mBAAmB,MAAM,SAAS;AAClC,UAAA,UAAU,MAAM,SAAS,IAAI;AAAA,EAAA,CACpC;AACH;;"}
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 isError ? reject(new Error('视频加载失败')) : resolve(video);\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,UAAU,uBAAO,IAAI,MAAM,SAAS,CAAC,GAAG,QAAQ,MAAM;;EAGxD,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,27 @@
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
- return new Promise((resolve, reject) => {
3
- const video = document.createElement("video");
4
- const onFinish = (isError) => {
5
- video.onload = video.onerror = null;
6
- isError ? reject(new Error("视频加载失败")) : resolve(video);
7
- };
8
- video.src = url;
9
- video.crossOrigin = "anonymous";
10
- video.currentTime = 1;
11
- video.onloadedmetadata = () => onFinish();
12
- video.onerror = () => onFinish(true);
13
- });
11
+ return new Promise((resolve, reject) => {
12
+ const video = document.createElement("video");
13
+ const onFinish = (isError) => {
14
+ video.onload = video.onerror = null;
15
+ isError ? reject(/* @__PURE__ */ new Error("视频加载失败")) : resolve(video);
16
+ };
17
+ video.src = url;
18
+ video.crossOrigin = "anonymous";
19
+ video.currentTime = 1;
20
+ video.onloadedmetadata = () => onFinish();
21
+ video.onerror = () => onFinish(true);
22
+ });
14
23
  }
15
- export {
16
- videoLoad
17
- };
18
- //# sourceMappingURL=video.mjs.map
24
+ //#endregion
25
+ export { videoLoad };
26
+
27
+ //# sourceMappingURL=video.mjs.map
@@ -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 ? reject(new Error('视频加载失败')) : resolve(video);\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"],"names":[],"mappings":"AAQA,eAAsB,UAAU,KAAa;AAC3C,SAAO,IAAI,QAA0B,CAAC,SAAS,WAAW;AAClD,UAAA,QAAQ,SAAS,cAAc,OAAO;AACtC,UAAA,WAAW,CAAC,YAAsB;AAChC,YAAA,SAAS,MAAM,UAAU;AAC/B,gBAAU,OAAO,IAAI,MAAM,QAAQ,CAAC,IAAI,QAAQ,KAAK;AAAA,IACvD;AAEA,UAAM,MAAM;AACZ,UAAM,cAAc;AACpB,UAAM,cAAc;AACd,UAAA,mBAAmB,MAAM,SAAS;AAClC,UAAA,UAAU,MAAM,SAAS,IAAI;AAAA,EAAA,CACpC;AACH;"}
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 isError ? reject(new Error('视频加载失败')) : resolve(video);\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,UAAU,uBAAO,IAAI,MAAM,SAAS,CAAC,GAAG,QAAQ,MAAM;;EAGxD,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.16",
3
+ "version": "1.2.17",
4
4
  "description": "cloudcome utils for browser",
5
- "engines": {
6
- "node": ">=22"
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,52 +98,14 @@
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
- "dependencies": {
109
- "@cloudcome/utils-core": "~1.19.1"
104
+ "engines": {
105
+ "node": ">=22"
110
106
  },
111
- "repository": {
112
- "type": "git",
113
- "url": "git+https://github.com/cloudcome/utils.git"
107
+ "dependencies": {
108
+ "@cloudcome/utils-core": "~1.20.0"
114
109
  },
115
110
  "keywords": [
116
111
  "utils",
@@ -124,5 +119,9 @@
124
119
  ],
125
120
  "homepage": "https://github.com/cloudcome/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
  }