@yimou6/common-ui 1.10.7 → 1.10.9

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 (58) hide show
  1. package/cdn/index.cdn.js +30 -17
  2. package/cdn/index.cdn.js.map +1 -1
  3. package/cdn/index.cdn.mjs +28 -15
  4. package/cdn/index.cdn.mjs.map +1 -1
  5. package/cdn/index.css +1 -1
  6. package/es/components/tenant-enterprise/src/tenant-enterprise.vue2.mjs +12 -3
  7. package/es/components/tenant-enterprise/src/tenant-enterprise.vue2.mjs.map +1 -1
  8. package/es/components/tzj-player/index.d.ts +5066 -3
  9. package/es/components/tzj-player/src/easyPlayer.vue.d.ts +104 -8
  10. package/es/components/tzj-player/src/easyPlayer.vue2.mjs +179 -62
  11. package/es/components/tzj-player/src/easyPlayer.vue2.mjs.map +1 -1
  12. package/es/components/tzj-player/src/tzj-player.d.ts +19 -2
  13. package/es/components/tzj-player/src/tzj-player.mjs +47 -1
  14. package/es/components/tzj-player/src/tzj-player.mjs.map +1 -1
  15. package/es/components/tzj-player/src/tzj-player.vue.d.ts +5066 -3
  16. package/es/components/tzj-player/src/tzj-player.vue2.mjs +129 -36
  17. package/es/components/tzj-player/src/tzj-player.vue2.mjs.map +1 -1
  18. package/es/components/tzj-player/src/ysPlayer.vue.d.ts +2 -2
  19. package/es/components/tzj-player/src/ysPlayer.vue2.mjs +40 -29
  20. package/es/components/tzj-player/src/ysPlayer.vue2.mjs.map +1 -1
  21. package/es/components/tzj-player/src/yunzhiyan.d.ts +6 -0
  22. package/es/components/tzj-player/src/yunzhiyan.mjs +306 -0
  23. package/es/components/tzj-player/src/yunzhiyan.mjs.map +1 -0
  24. package/es/components/tzj-player/src/yunzhiyanPlayer.vue.d.ts +1519 -0
  25. package/es/components/tzj-player/src/yunzhiyanPlayer.vue.mjs +6 -0
  26. package/es/components/tzj-player/src/yunzhiyanPlayer.vue.mjs.map +1 -0
  27. package/es/components/tzj-player/src/yunzhiyanPlayer.vue2.mjs +637 -0
  28. package/es/components/tzj-player/src/yunzhiyanPlayer.vue2.mjs.map +1 -0
  29. package/es/utils/provide.d.ts +3 -3
  30. package/es/utils/provide.mjs.map +1 -1
  31. package/lib/components/tenant-enterprise/src/tenant-enterprise.vue2.js +12 -3
  32. package/lib/components/tenant-enterprise/src/tenant-enterprise.vue2.js.map +1 -1
  33. package/lib/components/tzj-player/index.d.ts +5066 -3
  34. package/lib/components/tzj-player/src/easyPlayer.vue.d.ts +104 -8
  35. package/lib/components/tzj-player/src/easyPlayer.vue2.js +177 -60
  36. package/lib/components/tzj-player/src/easyPlayer.vue2.js.map +1 -1
  37. package/lib/components/tzj-player/src/tzj-player.d.ts +19 -2
  38. package/lib/components/tzj-player/src/tzj-player.js +47 -0
  39. package/lib/components/tzj-player/src/tzj-player.js.map +1 -1
  40. package/lib/components/tzj-player/src/tzj-player.vue.d.ts +5066 -3
  41. package/lib/components/tzj-player/src/tzj-player.vue2.js +125 -32
  42. package/lib/components/tzj-player/src/tzj-player.vue2.js.map +1 -1
  43. package/lib/components/tzj-player/src/ysPlayer.vue.d.ts +2 -2
  44. package/lib/components/tzj-player/src/ysPlayer.vue2.js +40 -29
  45. package/lib/components/tzj-player/src/ysPlayer.vue2.js.map +1 -1
  46. package/lib/components/tzj-player/src/yunzhiyan.d.ts +6 -0
  47. package/lib/components/tzj-player/src/yunzhiyan.js +313 -0
  48. package/lib/components/tzj-player/src/yunzhiyan.js.map +1 -0
  49. package/lib/components/tzj-player/src/yunzhiyanPlayer.vue.d.ts +1519 -0
  50. package/lib/components/tzj-player/src/yunzhiyanPlayer.vue.js +10 -0
  51. package/lib/components/tzj-player/src/yunzhiyanPlayer.vue.js.map +1 -0
  52. package/lib/components/tzj-player/src/yunzhiyanPlayer.vue2.js +641 -0
  53. package/lib/components/tzj-player/src/yunzhiyanPlayer.vue2.js.map +1 -0
  54. package/lib/utils/provide.d.ts +3 -3
  55. package/lib/utils/provide.js.map +1 -1
  56. package/package.json +4 -2
  57. package/theme-default/i-tzj-player.css +1 -1
  58. package/theme-default/index.css +1 -1
@@ -1,26 +1,122 @@
1
1
  declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
2
2
  url: {
3
3
  type: StringConstructor;
4
- required: true;
4
+ default: string;
5
+ };
6
+ accessToken: {
7
+ type: StringConstructor;
8
+ default: string;
9
+ };
10
+ areaName: {
11
+ type: StringConstructor;
12
+ default: string;
13
+ };
14
+ deviceSerial: {
15
+ type: StringConstructor;
16
+ default: string;
17
+ };
18
+ platformTypeName: {
19
+ type: StringConstructor;
20
+ default: string;
21
+ };
22
+ debug: {
23
+ type: BooleanConstructor;
24
+ default: boolean;
5
25
  };
6
26
  }>, {
7
- props: any;
27
+ props: import("@vue/shared").LooseRequired<Readonly<import("vue").ExtractPropTypes<{
28
+ url: {
29
+ type: StringConstructor;
30
+ default: string;
31
+ };
32
+ accessToken: {
33
+ type: StringConstructor;
34
+ default: string;
35
+ };
36
+ areaName: {
37
+ type: StringConstructor;
38
+ default: string;
39
+ };
40
+ deviceSerial: {
41
+ type: StringConstructor;
42
+ default: string;
43
+ };
44
+ platformTypeName: {
45
+ type: StringConstructor;
46
+ default: string;
47
+ };
48
+ debug: {
49
+ type: BooleanConstructor;
50
+ default: boolean;
51
+ };
52
+ }>> & Readonly<{
53
+ onPlay?: ((...args: any[]) => any) | undefined;
54
+ onPause?: ((...args: any[]) => any) | undefined;
55
+ onError?: ((...args: any[]) => any) | undefined;
56
+ onVideoInfo?: ((...args: any[]) => any) | undefined;
57
+ onTimeout?: ((...args: any[]) => any) | undefined;
58
+ onMute?: ((...args: any[]) => any) | undefined;
59
+ }> & {}>;
60
+ emits: (event: "error" | "play" | "pause" | "videoInfo" | "timeout" | "mute", ...args: any[]) => void;
61
+ slots: Readonly<{
62
+ [name: string]: import("vue").Slot<any> | undefined;
63
+ }>;
64
+ customBar: import("vue").ComputedRef<import("vue").Slot<any> | undefined>;
8
65
  player: any;
9
66
  id: string;
10
- playerRef: import("vue").ShallowRef<HTMLElement | undefined, HTMLElement | undefined>;
67
+ playerRef: import("vue").ShallowRef<HTMLDivElement | undefined, HTMLDivElement | undefined>;
11
68
  playSuccess: import("vue").Ref<boolean, boolean>;
12
69
  playUrl: import("vue").Ref<string, string>;
70
+ isFullscreen: import("vue").Ref<boolean, boolean>;
71
+ videoInfo: import("vue").Ref<any, any>;
72
+ play: (url?: string) => void;
73
+ playerPause: () => void;
74
+ playerScreenShot: () => void;
75
+ playerFullscreen: (fullscreen: boolean) => void;
76
+ formatUrl: (url: string) => string;
13
77
  initPlayer: (url: string) => Promise<void>;
14
78
  removePlayerDom: () => void;
15
79
  createPlayerDom: () => void;
16
80
  createPlayer: () => Promise<void>;
17
81
  destroy: () => void;
18
- play: (url?: string) => void;
19
- formatUrl: (url: string) => string;
20
- }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
82
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("error" | "play" | "pause" | "videoInfo" | "timeout" | "mute")[], "error" | "play" | "pause" | "videoInfo" | "timeout" | "mute", import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
21
83
  url: {
22
84
  type: StringConstructor;
23
- required: true;
85
+ default: string;
86
+ };
87
+ accessToken: {
88
+ type: StringConstructor;
89
+ default: string;
24
90
  };
25
- }>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
91
+ areaName: {
92
+ type: StringConstructor;
93
+ default: string;
94
+ };
95
+ deviceSerial: {
96
+ type: StringConstructor;
97
+ default: string;
98
+ };
99
+ platformTypeName: {
100
+ type: StringConstructor;
101
+ default: string;
102
+ };
103
+ debug: {
104
+ type: BooleanConstructor;
105
+ default: boolean;
106
+ };
107
+ }>> & Readonly<{
108
+ onPlay?: ((...args: any[]) => any) | undefined;
109
+ onPause?: ((...args: any[]) => any) | undefined;
110
+ onError?: ((...args: any[]) => any) | undefined;
111
+ onVideoInfo?: ((...args: any[]) => any) | undefined;
112
+ onTimeout?: ((...args: any[]) => any) | undefined;
113
+ onMute?: ((...args: any[]) => any) | undefined;
114
+ }>, {
115
+ url: string;
116
+ accessToken: string;
117
+ debug: boolean;
118
+ deviceSerial: string;
119
+ areaName: string;
120
+ platformTypeName: string;
121
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
26
122
  export default _default;
@@ -20,16 +20,27 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
20
20
  name: "EasyPlayer"
21
21
  },
22
22
  __name: "easyPlayer",
23
- props: {
24
- url: {}
25
- },
26
- setup(__props, { expose: __expose }) {
23
+ props: tzjPlayer.TzjPlayerProps,
24
+ emits: [
25
+ "timeout",
26
+ "error",
27
+ "play",
28
+ "pause",
29
+ "mute",
30
+ "videoInfo"
31
+ ],
32
+ setup(__props, { expose: __expose, emit: __emit }) {
27
33
  const props = __props;
34
+ const emits = __emit;
35
+ const slots = vue.useSlots();
36
+ const customBar = vue.computed(() => slots.customBar);
28
37
  let player = null;
29
38
  const id = tzjPlayer.uuid();
30
39
  const playerRef = vue.shallowRef();
31
40
  const playSuccess = vue.ref(true);
32
41
  const playUrl = vue.ref("");
42
+ const isFullscreen = vue.ref(false);
43
+ const videoInfo = vue.ref(null);
33
44
  vue.onMounted(() => {
34
45
  initPlayer(props.url || "");
35
46
  });
@@ -40,20 +51,96 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
40
51
  }
41
52
  );
42
53
  vue.onBeforeUnmount(() => {
54
+ if (props.debug) {
55
+ console.log("\u7EC4\u4EF6\u5378\u8F7D");
56
+ }
43
57
  playUrl.value = "";
44
58
  destroy();
45
59
  });
60
+ const play = /* @__PURE__ */ __name((url) => {
61
+ if (url) {
62
+ initPlayer(url);
63
+ } else {
64
+ if (player) {
65
+ player.play(playUrl.value);
66
+ } else {
67
+ destroy();
68
+ }
69
+ }
70
+ }, "play");
71
+ const playerPause = /* @__PURE__ */ __name(() => {
72
+ var _a;
73
+ if (props.debug) {
74
+ console.log("\u6682\u505C");
75
+ }
76
+ (_a = player == null ? void 0 : player.pause) == null ? void 0 : _a.call(player);
77
+ }, "playerPause");
78
+ const playerScreenShot = /* @__PURE__ */ __name(() => {
79
+ var _a;
80
+ if (props.debug) {
81
+ console.log("\u622A\u56FE");
82
+ }
83
+ (_a = player == null ? void 0 : player.screenshot) == null ? void 0 : _a.call(
84
+ player,
85
+ `${props.areaName}_${(/* @__PURE__ */ new Date()).getTime()}`,
86
+ "png",
87
+ 0.5,
88
+ "download"
89
+ );
90
+ }, "playerScreenShot");
91
+ const playerFullscreen = /* @__PURE__ */ __name((fullscreen) => {
92
+ var _a, _b, _c;
93
+ if (props.debug) {
94
+ console.log("\u5168\u5C4F");
95
+ }
96
+ if (typeof document !== "undefined") {
97
+ if (fullscreen) {
98
+ (_a = document.exitFullscreen) == null ? void 0 : _a.call(document);
99
+ } else {
100
+ (_c = (_b = playerRef.value) == null ? void 0 : _b.requestFullscreen) == null ? void 0 : _c.call(_b);
101
+ }
102
+ }
103
+ isFullscreen.value = !fullscreen;
104
+ }, "playerFullscreen");
46
105
  __expose({
47
106
  play,
48
- destroy
107
+ destroy,
108
+ getPlayer: /* @__PURE__ */ __name(() => player, "getPlayer"),
109
+ pause: playerPause,
110
+ screenshot: playerScreenShot,
111
+ fullscreen: playerFullscreen,
112
+ isMute: /* @__PURE__ */ __name(() => {
113
+ var _a;
114
+ return (_a = player == null ? void 0 : player.isMute) == null ? void 0 : _a.call(player);
115
+ }, "isMute"),
116
+ setMute: /* @__PURE__ */ __name((mute) => {
117
+ var _a;
118
+ (_a = player == null ? void 0 : player.setMute) == null ? void 0 : _a.call(player, mute);
119
+ }, "setMute")
49
120
  });
121
+ const formatUrl = /* @__PURE__ */ __name((url) => {
122
+ if (!url) return "";
123
+ if (url.startsWith("http://") || url.startsWith("https://")) {
124
+ return url;
125
+ }
126
+ if (typeof window !== "undefined" && window.location) {
127
+ return `${window.location.origin}${url.startsWith("/") ? "" : "/"}${url}`;
128
+ }
129
+ return url;
130
+ }, "formatUrl");
50
131
  async function initPlayer(url) {
132
+ if (props.debug) {
133
+ console.log("\u521D\u59CB\u5316\u64AD\u653E\u5668", url);
134
+ }
51
135
  removePlayerDom();
52
136
  if (url) {
53
137
  playUrl.value = formatUrl(url);
54
- if (window == null ? void 0 : window.EasyPlayerPro) {
138
+ if (props.debug) {
139
+ console.log("\u683C\u5F0F\u5316\u540E\u7684url", playUrl.value);
140
+ }
141
+ if (typeof window !== "undefined" && (window == null ? void 0 : window.EasyPlayerPro)) {
55
142
  createPlayer();
56
- } else {
143
+ } else if (typeof window !== "undefined") {
57
144
  const timer = setInterval(() => {
58
145
  if (window == null ? void 0 : window.EasyPlayerPro) {
59
146
  createPlayer();
@@ -65,49 +152,93 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
65
152
  }
66
153
  __name(initPlayer, "initPlayer");
67
154
  function removePlayerDom() {
68
- const dom = document.getElementById(id);
69
- dom && dom.remove();
155
+ if (typeof document !== "undefined") {
156
+ const dom = document.getElementById(id);
157
+ dom && dom.remove();
158
+ }
70
159
  }
71
160
  __name(removePlayerDom, "removePlayerDom");
72
161
  function createPlayerDom() {
73
162
  var _a;
74
163
  removePlayerDom();
75
- const dom = document.createElement("div");
76
- dom.id = id;
77
- dom.style.width = "100%";
78
- dom.style.height = "100%";
79
- (_a = playerRef.value) == null ? void 0 : _a.appendChild(dom);
164
+ if (typeof document !== "undefined") {
165
+ const dom = document.createElement("div");
166
+ dom.id = id;
167
+ dom.style.width = "100%";
168
+ dom.style.height = "100%";
169
+ (_a = playerRef.value) == null ? void 0 : _a.appendChild(dom);
170
+ }
80
171
  }
81
172
  __name(createPlayerDom, "createPlayerDom");
82
173
  async function createPlayer() {
174
+ if (props.debug) {
175
+ console.log("\u521B\u5EFA\u64AD\u653E\u5668");
176
+ }
177
+ videoInfo.value = null;
83
178
  createPlayerDom();
84
179
  await vue.nextTick();
85
- player = new window.EasyPlayerPro(document.getElementById(id), {
86
- isLive: true,
87
- // 是否直播
88
- hasAudio: true,
89
- // 是否解析音频
90
- bufferTime: 0.2,
91
- // 缓存时长
92
- stretch: true,
93
- // 加视频拉伸
94
- MSE: false,
95
- WCS: false,
96
- WASM: true,
97
- debug: false,
98
- operateBtns: {
99
- performance: false
100
- }
101
- });
102
- player.on("timeout", () => {
103
- playSuccess.value = false;
104
- destroy();
105
- });
106
- player.on("error", () => {
107
- playSuccess.value = false;
108
- destroy();
109
- });
110
- play(props.url);
180
+ if (typeof window !== "undefined" && typeof document !== "undefined") {
181
+ player = new window.EasyPlayerPro(document.getElementById(id), {
182
+ isLive: true,
183
+ // 是否直播
184
+ hasAudio: true,
185
+ // 是否解析音频
186
+ bufferTime: 0.2,
187
+ // 缓存时长
188
+ stretch: true,
189
+ // 加视频拉伸
190
+ MSE: false,
191
+ WCS: false,
192
+ WASM: true,
193
+ debug: false,
194
+ operateBtns: {
195
+ performance: false
196
+ }
197
+ });
198
+ }
199
+ if (player) {
200
+ player.play(playUrl.value);
201
+ const videoInfoTimer = setTimeout(() => {
202
+ if (!videoInfo.value) {
203
+ props.debug && console.log("15s\u672A\u83B7\u53D6\u5230\u89C6\u9891\u4FE1\u606F");
204
+ emits("error");
205
+ playSuccess.value = false;
206
+ destroy();
207
+ }
208
+ }, 3e3);
209
+ player.on("timeout", () => {
210
+ clearTimeout(videoInfoTimer);
211
+ props.debug && console.log("\u52A0\u8F7D\u8D85\u65F6");
212
+ emits("timeout");
213
+ playSuccess.value = false;
214
+ destroy();
215
+ });
216
+ player.on("error", () => {
217
+ props.debug && console.log("\u64AD\u653E\u5F02\u5E38");
218
+ emits("error");
219
+ playSuccess.value = false;
220
+ destroy();
221
+ });
222
+ player.on("play", () => {
223
+ playSuccess.value = true;
224
+ props.debug && console.log("\u64AD\u653E");
225
+ emits("play");
226
+ });
227
+ player.on("pause", () => {
228
+ props.debug && console.log("\u6682\u505C");
229
+ emits("pause");
230
+ });
231
+ player.on("videoInfo", (info) => {
232
+ clearTimeout(videoInfoTimer);
233
+ props.debug && console.log("\u89C6\u9891\u4FE1\u606F", info);
234
+ videoInfo.value = info;
235
+ emits("videoInfo", info);
236
+ });
237
+ player.on("mute", (mute) => {
238
+ props.debug && console.log("\u9759\u97F3");
239
+ emits("mute", mute);
240
+ });
241
+ }
111
242
  }
112
243
  __name(createPlayer, "createPlayer");
113
244
  function destroy() {
@@ -118,36 +249,22 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
118
249
  removePlayerDom();
119
250
  }
120
251
  __name(destroy, "destroy");
121
- function play(url) {
122
- if (player && (url || props.url)) {
123
- playUrl.value = formatUrl(url || props.url);
124
- player.play(playUrl.value);
125
- } else {
126
- initPlayer(url || props.url);
127
- }
128
- }
129
- __name(play, "play");
130
- function formatUrl(url) {
131
- if (url.startsWith("/")) {
132
- return `${window.location.origin}${url}`;
133
- }
134
- return url;
135
- }
136
- __name(formatUrl, "formatUrl");
137
252
  return (_ctx, _cache) => {
138
253
  return vue.openBlock(), vue.createElementBlock(
139
254
  "div",
140
255
  {
141
256
  ref_key: "playerRef",
142
257
  ref: playerRef,
143
- class: "i-tzj-player"
258
+ class: vue.normalizeClass(["i-tzj-easyPlayer", customBar.value ? "i-tzj-easyPlayer--custom" : ""])
144
259
  },
145
260
  [
146
261
  !playSuccess.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1, "\u65E0\u4FE1\u53F7")) : vue.createCommentVNode("v-if", true),
147
- !playUrl.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2, "\u65E0\u64AD\u653E\u5730\u5740")) : vue.createCommentVNode("v-if", true)
262
+ !playUrl.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2, "\u65E0\u64AD\u653E\u5730\u5740")) : vue.createCommentVNode("v-if", true),
263
+ vue.createCommentVNode(" \u64AD\u653E\u5668\u5E95\u90E8\u64CD\u4F5C\u680F "),
264
+ vue.renderSlot(_ctx.$slots, "customBar")
148
265
  ],
149
- 512
150
- /* NEED_PATCH */
266
+ 2
267
+ /* CLASS */
151
268
  );
152
269
  };
153
270
  }
@@ -1 +1 @@
1
- {"version":3,"file":"easyPlayer.vue2.js","sources":["../../../../../../../packages/components/tzj-player/src/easyPlayer.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport {\n nextTick,\n onBeforeUnmount,\n onMounted,\n ref,\n shallowRef,\n watch,\n} from \"vue\";\nimport { uuid } from \"./tzj-player\";\n\ndefineOptions({\n name: \"EasyPlayer\",\n});\n\nconst props = defineProps<{\n url: string;\n}>();\n\nlet player: any = null;\nconst id = uuid();\nconst playerRef = shallowRef<HTMLElement>();\nconst playSuccess = ref(true);\nconst playUrl = ref(\"\");\n\nonMounted(() => {\n initPlayer(props.url || \"\");\n});\n\nwatch(\n () => props.url,\n (newUrl) => {\n initPlayer(newUrl || \"\");\n },\n);\n\nonBeforeUnmount(() => {\n playUrl.value = \"\";\n destroy();\n});\n\ndefineExpose({\n play,\n destroy,\n});\n\nasync function initPlayer(url: string) {\n removePlayerDom();\n if (url) {\n playUrl.value = formatUrl(url);\n\n if (window?.EasyPlayerPro) {\n createPlayer();\n } else {\n const timer = setInterval(() => {\n if (window?.EasyPlayerPro) {\n createPlayer();\n clearInterval(timer);\n }\n }, 100);\n }\n }\n}\n\n// 移除播放器DOM\nfunction removePlayerDom() {\n const dom = document.getElementById(id);\n dom && dom.remove();\n}\n\n// 创建播放器DOM\nfunction createPlayerDom() {\n removePlayerDom();\n const dom = document.createElement(\"div\");\n dom.id = id;\n dom.style.width = \"100%\";\n dom.style.height = \"100%\";\n playerRef.value?.appendChild(dom);\n}\n\nasync function createPlayer() {\n createPlayerDom();\n await nextTick();\n player = new window.EasyPlayerPro(document.getElementById(id), {\n isLive: true, // 是否直播\n hasAudio: true, // 是否解析音频\n bufferTime: 0.2, // 缓存时长\n stretch: true, // 加视频拉伸\n MSE: false,\n WCS: false,\n WASM: true,\n debug: false,\n operateBtns: {\n performance: false,\n },\n });\n\n // 加载超时\n player.on(\"timeout\", () => {\n playSuccess.value = false;\n destroy();\n });\n // 播放异常\n player.on(\"error\", () => {\n playSuccess.value = false;\n destroy();\n });\n play(props.url);\n}\n\nfunction destroy() {\n if (player) {\n player.destroy();\n player = null;\n }\n removePlayerDom();\n}\n\nfunction play(url?: string) {\n if (player && (url || props.url)) {\n playUrl.value = formatUrl(url || props.url);\n player.play(playUrl.value);\n } else {\n initPlayer(url || props.url);\n }\n}\n\n/**\n * 格式化url\n * 当url为相对路径时,添加baseUrl。baseUrl为当前页面的url\n * @param url\n * @example\n * formatUrl('/test.mp4') => 'http://192.168.111.206:8080/test.mp4'\n * formatUrl('http://192.168.111.206:8080/test.mp4') => 'http://192.168.111.206:8080/test.mp4'\n */\nfunction formatUrl(url: string) {\n if (url.startsWith(\"/\")) {\n return `${window.location.origin}${url}`;\n }\n return url;\n}\n</script>\n\n<template>\n <div ref=\"playerRef\" class=\"i-tzj-player\">\n <div v-if=\"!playSuccess\" class=\"i-tzj-player__error\">无信号</div>\n <div v-if=\"!playUrl\" class=\"i-tzj-player__error\">无播放地址</div>\n </div>\n</template>\n"],"names":["uuid","shallowRef","ref","onMounted","watch","onBeforeUnmount","nextTick","_createElementBlock"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAeA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAId,IAAA,IAAI,MAAc,GAAA,IAAA;AAClB,IAAA,MAAM,KAAKA,cAAK,EAAA;AAChB,IAAA,MAAM,YAAYC,cAAwB,EAAA;AAC1C,IAAM,MAAA,WAAA,GAAcC,QAAI,IAAI,CAAA;AAC5B,IAAM,MAAA,OAAA,GAAUA,QAAI,EAAE,CAAA;AAEtB,IAAAC,aAAA,CAAU,MAAM;AACd,MAAW,UAAA,CAAA,KAAA,CAAM,OAAO,EAAE,CAAA;AAAA,KAC3B,CAAA;AAED,IAAAC,SAAA;AAAA,MACE,MAAM,KAAM,CAAA,GAAA;AAAA,MACZ,CAAC,MAAW,KAAA;AACV,QAAA,UAAA,CAAW,UAAU,EAAE,CAAA;AAAA;AACzB,KACF;AAEA,IAAAC,mBAAA,CAAgB,MAAM;AACpB,MAAA,OAAA,CAAQ,KAAQ,GAAA,EAAA;AAChB,MAAQ,OAAA,EAAA;AAAA,KACT,CAAA;AAED,IAAa,QAAA,CAAA;AAAA,MACX,IAAA;AAAA,MACA;AAAA,KACD,CAAA;AAED,IAAA,eAAe,WAAW,GAAa,EAAA;AACrC,MAAgB,eAAA,EAAA;AAChB,MAAA,IAAI,GAAK,EAAA;AACP,QAAQ,OAAA,CAAA,KAAA,GAAQ,UAAU,GAAG,CAAA;AAE7B,QAAA,IAAI,iCAAQ,aAAe,EAAA;AACzB,UAAa,YAAA,EAAA;AAAA,SACR,MAAA;AACL,UAAM,MAAA,KAAA,GAAQ,YAAY,MAAM;AAC9B,YAAA,IAAI,iCAAQ,aAAe,EAAA;AACzB,cAAa,YAAA,EAAA;AACb,cAAA,aAAA,CAAc,KAAK,CAAA;AAAA;AACrB,aACC,GAAG,CAAA;AAAA;AACR;AACF;AAfa,IAAA,MAAA,CAAA,UAAA,EAAA,YAAA,CAAA;AAmBf,IAAA,SAAS,eAAkB,GAAA;AACzB,MAAM,MAAA,GAAA,GAAM,QAAS,CAAA,cAAA,CAAe,EAAE,CAAA;AACtC,MAAA,GAAA,IAAO,IAAI,MAAO,EAAA;AAAA;AAFX,IAAA,MAAA,CAAA,eAAA,EAAA,iBAAA,CAAA;AAMT,IAAA,SAAS,eAAkB,GAAA;;AACzB,MAAgB,eAAA,EAAA;AAChB,MAAM,MAAA,GAAA,GAAM,QAAS,CAAA,aAAA,CAAc,KAAK,CAAA;AACxC,MAAA,GAAA,CAAI,EAAK,GAAA,EAAA;AACT,MAAA,GAAA,CAAI,MAAM,KAAQ,GAAA,MAAA;AAClB,MAAA,GAAA,CAAI,MAAM,MAAS,GAAA,MAAA;AACnB,MAAU,CAAA,EAAA,GAAA,SAAA,CAAA,KAAA,KAAV,mBAAiB,WAAY,CAAA,GAAA,CAAA;AAAA;AANtB,IAAA,MAAA,CAAA,eAAA,EAAA,iBAAA,CAAA;AAST,IAAA,eAAe,YAAe,GAAA;AAC5B,MAAgB,eAAA,EAAA;AAChB,MAAA,MAAMC,YAAS,EAAA;AACf,MAAA,MAAA,GAAS,IAAI,MAAO,CAAA,aAAA,CAAc,QAAS,CAAA,cAAA,CAAe,EAAE,CAAG,EAAA;AAAA,QAC7D,MAAQ,EAAA,IAAA;AAAA;AAAA,QACR,QAAU,EAAA,IAAA;AAAA;AAAA,QACV,UAAY,EAAA,GAAA;AAAA;AAAA,QACZ,OAAS,EAAA,IAAA;AAAA;AAAA,QACT,GAAK,EAAA,KAAA;AAAA,QACL,GAAK,EAAA,KAAA;AAAA,QACL,IAAM,EAAA,IAAA;AAAA,QACN,KAAO,EAAA,KAAA;AAAA,QACP,WAAa,EAAA;AAAA,UACX,WAAa,EAAA;AAAA;AACf,OACD,CAAA;AAGD,MAAO,MAAA,CAAA,EAAA,CAAG,WAAW,MAAM;AACzB,QAAA,WAAA,CAAY,KAAQ,GAAA,KAAA;AACpB,QAAQ,OAAA,EAAA;AAAA,OACT,CAAA;AAED,MAAO,MAAA,CAAA,EAAA,CAAG,SAAS,MAAM;AACvB,QAAA,WAAA,CAAY,KAAQ,GAAA,KAAA;AACpB,QAAQ,OAAA,EAAA;AAAA,OACT,CAAA;AACD,MAAA,IAAA,CAAK,MAAM,GAAG,CAAA;AAAA;AA3BD,IAAA,MAAA,CAAA,YAAA,EAAA,cAAA,CAAA;AA8Bf,IAAA,SAAS,OAAU,GAAA;AACjB,MAAA,IAAI,MAAQ,EAAA;AACV,QAAA,MAAA,CAAO,OAAQ,EAAA;AACf,QAAS,MAAA,GAAA,IAAA;AAAA;AAEX,MAAgB,eAAA,EAAA;AAAA;AALT,IAAA,MAAA,CAAA,OAAA,EAAA,SAAA,CAAA;AAQT,IAAA,SAAS,KAAK,GAAc,EAAA;AAC1B,MAAI,IAAA,MAAA,KAAW,GAAO,IAAA,KAAA,CAAM,GAAM,CAAA,EAAA;AAChC,QAAA,OAAA,CAAQ,KAAQ,GAAA,SAAA,CAAU,GAAO,IAAA,KAAA,CAAM,GAAG,CAAA;AAC1C,QAAO,MAAA,CAAA,IAAA,CAAK,QAAQ,KAAK,CAAA;AAAA,OACpB,MAAA;AACL,QAAW,UAAA,CAAA,GAAA,IAAO,MAAM,GAAG,CAAA;AAAA;AAC7B;AANO,IAAA,MAAA,CAAA,IAAA,EAAA,MAAA,CAAA;AAiBT,IAAA,SAAS,UAAU,GAAa,EAAA;AAC9B,MAAI,IAAA,GAAA,CAAI,UAAW,CAAA,GAAG,CAAG,EAAA;AACvB,QAAA,OAAO,CAAG,EAAA,MAAA,CAAO,QAAS,CAAA,MAAM,GAAG,GAAG,CAAA,CAAA;AAAA;AAExC,MAAO,OAAA,GAAA;AAAA;AAJA,IAAA,MAAA,CAAA,SAAA,EAAA,WAAA,CAAA;;4BASP,EAAAC,sBAAA;AAAA,QAGM,KAAA;AAAA,QAAA;AAAA,iBAHG,EAAA,WAAA;AAAA,UAAJ,GAAI,EAAA,SAAA;AAAA,UAAY,KAAM,EAAA;AAAA;;WACb,WAAA,CAAW,wBAAvB,EAAAA,sBAAA,CAA8D,KAA9D,EAAA,UAAA,EAAqD,oBAAG,CAAA;WAC5C,OAAA,CAAO,wBAAnB,EAAAA,sBAAA,CAA4D,KAA5D,EAAA,UAAA,EAAiD,gCAAK,CAAA;;;;;;;;;;;"}
1
+ {"version":3,"file":"easyPlayer.vue2.js","sources":["../../../../../../../packages/components/tzj-player/src/easyPlayer.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport {\n computed,\n nextTick,\n onBeforeUnmount,\n onMounted,\n ref,\n shallowRef,\n useSlots,\n watch,\n} from \"vue\";\nimport { TzjPlayerProps, uuid } from \"./tzj-player\";\n\ndefineOptions({\n name: \"EasyPlayer\",\n});\n\nconst props = defineProps(TzjPlayerProps);\nconst emits = defineEmits([\n \"timeout\",\n \"error\",\n \"play\",\n \"pause\",\n \"mute\",\n \"videoInfo\",\n]);\nconst slots = useSlots();\nconst customBar = computed(() => slots.customBar);\n\nlet player: any = null;\nconst id = uuid();\nconst playerRef = shallowRef<HTMLDivElement>();\nconst playSuccess = ref(true);\nconst playUrl = ref(\"\");\nconst isFullscreen = ref(false);\nconst videoInfo = ref<any>(null);\n\nonMounted(() => {\n initPlayer(props.url || \"\");\n});\n\nwatch(\n () => props.url,\n (newUrl: string) => {\n initPlayer(newUrl || \"\");\n },\n);\n\nonBeforeUnmount(() => {\n if (props.debug) {\n console.log(\"组件卸载\");\n }\n playUrl.value = \"\";\n destroy();\n});\n\nconst play = (url?: string) => {\n if (url) {\n initPlayer(url);\n } else {\n if (player) {\n player.play(playUrl.value);\n } else {\n destroy();\n }\n }\n};\n\nconst playerPause = () => {\n if (props.debug) {\n console.log(\"暂停\");\n }\n player?.pause?.();\n};\n\nconst playerScreenShot = () => {\n if (props.debug) {\n console.log(\"截图\");\n }\n player?.screenshot?.(\n `${props.areaName}_${new Date().getTime()}`,\n \"png\",\n 0.5,\n \"download\",\n );\n};\n\nconst playerFullscreen = (fullscreen: boolean) => {\n if (props.debug) {\n console.log(\"全屏\");\n }\n // 自定义全屏逻辑\n if (typeof document !== \"undefined\") {\n if (fullscreen) {\n document.exitFullscreen?.();\n } else {\n playerRef.value?.requestFullscreen?.();\n }\n }\n isFullscreen.value = !fullscreen;\n};\ndefineExpose({\n play,\n destroy,\n getPlayer: () => player,\n pause: playerPause,\n screenshot: playerScreenShot,\n fullscreen: playerFullscreen,\n isMute: () => {\n return player?.isMute?.();\n },\n setMute: (mute: number) => {\n player?.setMute?.(mute);\n },\n});\n\n/**\n * 格式化URL,确保使用完整的URL\n * @param url - 原始URL\n * @returns 格式化后的URL\n */\nconst formatUrl = (url: string): string => {\n if (!url) return \"\";\n\n // 如果已经是完整URL,直接返回\n if (url.startsWith(\"http://\") || url.startsWith(\"https://\")) {\n return url;\n }\n\n // 检查是否在浏览器环境中,避免SSR环境下的location访问错误\n if (typeof window !== \"undefined\" && window.location) {\n // 如果是相对路径,添加当前域名\n return `${window.location.origin}${url.startsWith(\"/\") ? \"\" : \"/\"}${url}`;\n }\n\n // SSR 环境下返回相对路径\n return url;\n};\n\nasync function initPlayer(url: string) {\n if (props.debug) {\n console.log(\"初始化播放器\", url);\n }\n removePlayerDom();\n if (url) {\n playUrl.value = formatUrl(url);\n if (props.debug) {\n console.log(\"格式化后的url\", playUrl.value);\n }\n if (typeof window !== \"undefined\" && window?.EasyPlayerPro) {\n createPlayer();\n } else if (typeof window !== \"undefined\") {\n const timer = setInterval(() => {\n if (window?.EasyPlayerPro) {\n createPlayer();\n clearInterval(timer);\n }\n }, 100);\n }\n }\n}\n\n/**\n * 移除播放器DOM\n */\nfunction removePlayerDom() {\n if (typeof document !== \"undefined\") {\n const dom = document.getElementById(id);\n dom && dom.remove();\n }\n}\n\n/**\n * 创建播放器DOM\n */\nfunction createPlayerDom() {\n removePlayerDom();\n if (typeof document !== \"undefined\") {\n const dom = document.createElement(\"div\");\n dom.id = id;\n dom.style.width = \"100%\";\n dom.style.height = \"100%\";\n playerRef.value?.appendChild(dom);\n }\n}\n\nasync function createPlayer() {\n if (props.debug) {\n console.log(\"创建播放器\");\n }\n videoInfo.value = null;\n createPlayerDom();\n await nextTick();\n if (typeof window !== \"undefined\" && typeof document !== \"undefined\") {\n player = new window.EasyPlayerPro(document.getElementById(id), {\n isLive: true, // 是否直播\n hasAudio: true, // 是否解析音频\n bufferTime: 0.2, // 缓存时长\n stretch: true, // 加视频拉伸\n MSE: false,\n WCS: false,\n WASM: true,\n debug: false,\n operateBtns: {\n performance: false,\n },\n });\n }\n if (player) {\n player.play(playUrl.value);\n\n // 15s未获取到视频信息,认为播放失败\n const videoInfoTimer = setTimeout(() => {\n if (!videoInfo.value) {\n props.debug && console.log(\"15s未获取到视频信息\");\n emits(\"error\");\n playSuccess.value = false;\n destroy();\n }\n }, 3000);\n // 加载超时\n player.on(\"timeout\", () => {\n clearTimeout(videoInfoTimer);\n props.debug && console.log(\"加载超时\");\n emits(\"timeout\");\n playSuccess.value = false;\n destroy();\n });\n // 播放异常\n player.on(\"error\", () => {\n props.debug && console.log(\"播放异常\");\n emits(\"error\");\n playSuccess.value = false;\n destroy();\n });\n player.on(\"play\", () => {\n playSuccess.value = true;\n props.debug && console.log(\"播放\");\n emits(\"play\");\n });\n player.on(\"pause\", () => {\n props.debug && console.log(\"暂停\");\n emits(\"pause\");\n });\n player.on(\"videoInfo\", (info: any) => {\n clearTimeout(videoInfoTimer);\n props.debug && console.log(\"视频信息\", info);\n videoInfo.value = info;\n emits(\"videoInfo\", info);\n });\n player.on(\"mute\", (mute: false) => {\n props.debug && console.log(\"静音\");\n emits(\"mute\", mute);\n });\n }\n}\n\nfunction destroy() {\n if (player) {\n player.destroy();\n player = null;\n }\n removePlayerDom();\n}\n</script>\n\n<template>\n <div\n ref=\"playerRef\"\n class=\"i-tzj-easyPlayer\"\n :class=\"customBar ? 'i-tzj-easyPlayer--custom' : ''\"\n >\n <div v-if=\"!playSuccess\" class=\"i-tzj-player__error\">无信号</div>\n <div v-if=\"!playUrl\" class=\"i-tzj-player__error\">无播放地址</div>\n\n <!-- 播放器底部操作栏 -->\n <slot name=\"customBar\" />\n </div>\n</template>\n"],"names":["useSlots","computed","uuid","shallowRef","ref","onMounted","watch","onBeforeUnmount","nextTick","_createElementBlock","_normalizeClass","_createCommentVNode","_renderSlot"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import type { ExtractPropTypes } from 'vue';
2
- import type TzjPlayer from './tzj-player.vue';
1
+ import type { ExtractPropTypes } from "vue";
2
+ import type TzjPlayer from "./tzj-player.vue";
3
3
  export declare const TzjPlayerProps: {
4
4
  url: {
5
5
  type: StringConstructor;
@@ -9,8 +9,25 @@ export declare const TzjPlayerProps: {
9
9
  type: StringConstructor;
10
10
  default: string;
11
11
  };
12
+ areaName: {
13
+ type: StringConstructor;
14
+ default: string;
15
+ };
16
+ deviceSerial: {
17
+ type: StringConstructor;
18
+ default: string;
19
+ };
20
+ platformTypeName: {
21
+ type: StringConstructor;
22
+ default: string;
23
+ };
24
+ debug: {
25
+ type: BooleanConstructor;
26
+ default: boolean;
27
+ };
12
28
  };
13
29
  export declare function uuid(): string;
14
30
  export declare function isSupportedProtocol(url: string): boolean;
31
+ export declare function getVideoType(url: string): string;
15
32
  export type TzjPlayerPropsType = ExtractPropTypes<typeof TzjPlayerProps>;
16
33
  export type TzjPlayerInstance = InstanceType<typeof TzjPlayer>;
@@ -3,13 +3,44 @@
3
3
  var __defProp = Object.defineProperty;
4
4
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
5
5
  const TzjPlayerProps = {
6
+ /**
7
+ * 视频地址
8
+ */
6
9
  url: {
7
10
  type: String,
8
11
  default: ""
9
12
  },
13
+ /**
14
+ * 访问令牌
15
+ */
10
16
  accessToken: {
11
17
  type: String,
12
18
  default: ""
19
+ },
20
+ /**
21
+ * 视频标题
22
+ */
23
+ areaName: {
24
+ type: String,
25
+ default: ""
26
+ },
27
+ /**
28
+ * 视频ID
29
+ */
30
+ deviceSerial: {
31
+ type: String,
32
+ default: ""
33
+ },
34
+ /**
35
+ * 视频平台类型名称
36
+ */
37
+ platformTypeName: {
38
+ type: String,
39
+ default: ""
40
+ },
41
+ debug: {
42
+ type: Boolean,
43
+ default: false
13
44
  }
14
45
  };
15
46
  function uuid() {
@@ -31,8 +62,24 @@ function isSupportedProtocol(url) {
31
62
  return protocolRegex.test(url.trim());
32
63
  }
33
64
  __name(isSupportedProtocol, "isSupportedProtocol");
65
+ function getVideoType(url) {
66
+ if (!url || typeof url !== "string") {
67
+ return "";
68
+ }
69
+ const pathWithoutQuery = url.split("?")[0];
70
+ const lowerPath = pathWithoutQuery.toLowerCase();
71
+ if (lowerPath.endsWith(".flv")) {
72
+ return "flv";
73
+ }
74
+ if (lowerPath.endsWith("/hls.m3u8")) {
75
+ return "hls";
76
+ }
77
+ return "";
78
+ }
79
+ __name(getVideoType, "getVideoType");
34
80
 
35
81
  exports.TzjPlayerProps = TzjPlayerProps;
82
+ exports.getVideoType = getVideoType;
36
83
  exports.isSupportedProtocol = isSupportedProtocol;
37
84
  exports.uuid = uuid;
38
85
  //# sourceMappingURL=tzj-player.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tzj-player.js","sources":["../../../../../../../packages/components/tzj-player/src/tzj-player.ts"],"sourcesContent":["import type { ExtractPropTypes } from 'vue';\nimport type TzjPlayer from './tzj-player.vue';\n\nexport const TzjPlayerProps = {\n url: {\n type: String,\n default: '',\n },\n accessToken: {\n type: String,\n default: '',\n },\n};\n\nexport function uuid(): string {\n return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, c => {\n const r = (Math.random() * 16) | 0;\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n\n/**\n * 是否为支持的协议\n * 支持:http,https,ws,wss,ezopen(萤石云)\n * * 当URL不包含协议时(相对地址),也返回true\n */\nexport function isSupportedProtocol(url: string): boolean {\n if (!url || typeof url !== 'string') {\n return false;\n }\n\n // 如果URL不包含协议部分(相对地址),返回true\n if (!url.includes('://')) {\n return true;\n }\n\n const protocolRegex = /^(https?|wss?|ezopen):\\/\\/.+$/i;\n return protocolRegex.test(url.trim());\n}\n\nexport type TzjPlayerPropsType = ExtractPropTypes<typeof TzjPlayerProps>;\nexport type TzjPlayerInstance = InstanceType<typeof TzjPlayer>;\n"],"names":[],"mappings":";;;;AAGO,MAAM,cAAiB,GAAA;AAAA,EAC5B,GAAK,EAAA;AAAA,IACH,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA;AAAA,GACX;AAAA,EACA,WAAa,EAAA;AAAA,IACX,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA;AAAA;AAEb;AAEO,SAAS,IAAe,GAAA;AAC7B,EAAO,OAAA,kCAAA,CAAmC,OAAQ,CAAA,OAAA,EAAS,CAAK,CAAA,KAAA;AAC9D,IAAA,MAAM,CAAK,GAAA,IAAA,CAAK,MAAO,EAAA,GAAI,EAAM,GAAA,CAAA;AACjC,IAAA,MAAM,CAAI,GAAA,CAAA,KAAM,GAAM,GAAA,CAAA,GAAK,IAAI,CAAO,GAAA,CAAA;AACtC,IAAO,OAAA,CAAA,CAAE,SAAS,EAAE,CAAA;AAAA,GACrB,CAAA;AACH;AANgB,MAAA,CAAA,IAAA,EAAA,MAAA,CAAA;AAaT,SAAS,oBAAoB,GAAsB,EAAA;AACxD,EAAA,IAAI,CAAC,GAAA,IAAO,OAAO,GAAA,KAAQ,QAAU,EAAA;AACnC,IAAO,OAAA,KAAA;AAAA;AAIT,EAAA,IAAI,CAAC,GAAA,CAAI,QAAS,CAAA,KAAK,CAAG,EAAA;AACxB,IAAO,OAAA,IAAA;AAAA;AAGT,EAAA,MAAM,aAAgB,GAAA,gCAAA;AACtB,EAAA,OAAO,aAAc,CAAA,IAAA,CAAK,GAAI,CAAA,IAAA,EAAM,CAAA;AACtC;AAZgB,MAAA,CAAA,mBAAA,EAAA,qBAAA,CAAA;;;;;;"}
1
+ {"version":3,"file":"tzj-player.js","sources":["../../../../../../../packages/components/tzj-player/src/tzj-player.ts"],"sourcesContent":["import type { ExtractPropTypes } from \"vue\";\nimport type TzjPlayer from \"./tzj-player.vue\";\n\nexport const TzjPlayerProps = {\n /**\n * 视频地址\n */\n url: {\n type: String,\n default: \"\",\n },\n /**\n * 访问令牌\n */\n accessToken: {\n type: String,\n default: \"\",\n },\n /**\n * 视频标题\n */\n areaName: {\n type: String,\n default: \"\",\n },\n /**\n * 视频ID\n */\n deviceSerial: {\n type: String,\n default: \"\",\n },\n /**\n * 视频平台类型名称\n */\n platformTypeName: {\n type: String,\n default: \"\",\n },\n debug: {\n type: Boolean,\n default: false,\n },\n};\n\nexport function uuid(): string {\n return \"xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx\".replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c === \"x\" ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n\n/**\n * 是否为支持的协议\n * 支持:http,https,ws,wss,ezopen(萤石云)\n * 当URL不包含协议时(相对地址),也返回true\n */\nexport function isSupportedProtocol(url: string): boolean {\n if (!url || typeof url !== \"string\") {\n return false;\n }\n\n // 如果URL不包含协议部分(相对地址),返回true\n if (!url.includes(\"://\")) {\n return true;\n }\n\n const protocolRegex = /^(https?|wss?|ezopen):\\/\\/.+$/i;\n return protocolRegex.test(url.trim());\n}\n\n/**\n * 从路径中获取视频类型\n * @param url 视频路径\n * @returns 视频类型\n * /asdasd.flv?asdaslkg=123 => flv\n * /asdasd.live.flv?asdaslkg=123 => flv\n * /asdasd/hls.m3u8?asdaslkg=123 => hls\n */\nexport function getVideoType(url: string): string {\n if (!url || typeof url !== \"string\") {\n return \"\";\n }\n\n // 移除查询参数部分(?及其之后的内容)\n const pathWithoutQuery = url.split(\"?\")[0];\n\n // 转换为小写进行不区分大小写的匹配\n const lowerPath = pathWithoutQuery.toLowerCase();\n\n // 判断是否以.flv结尾\n if (lowerPath.endsWith(\".flv\")) {\n return \"flv\";\n }\n\n // 判断是否以/hls.m3u8结尾\n if (lowerPath.endsWith(\"/hls.m3u8\")) {\n return \"hls\";\n }\n\n // 如果都不匹配,返回空字符串\n return \"\";\n}\n\nexport type TzjPlayerPropsType = ExtractPropTypes<typeof TzjPlayerProps>;\nexport type TzjPlayerInstance = InstanceType<typeof TzjPlayer>;\n"],"names":[],"mappings":";;;;AAGO,MAAM,cAAiB,GAAA;AAAA;AAAA;AAAA;AAAA,EAI5B,GAAK,EAAA;AAAA,IACH,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA;AAAA,GACX;AAAA;AAAA;AAAA;AAAA,EAIA,WAAa,EAAA;AAAA,IACX,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA;AAAA,GACX;AAAA;AAAA;AAAA;AAAA,EAIA,QAAU,EAAA;AAAA,IACR,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA;AAAA,GACX;AAAA;AAAA;AAAA;AAAA,EAIA,YAAc,EAAA;AAAA,IACZ,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA;AAAA,GACX;AAAA;AAAA;AAAA;AAAA,EAIA,gBAAkB,EAAA;AAAA,IAChB,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA;AAAA,GACX;AAAA,EACA,KAAO,EAAA;AAAA,IACL,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA;AAAA;AAEb;AAEO,SAAS,IAAe,GAAA;AAC7B,EAAA,OAAO,kCAAmC,CAAA,OAAA,CAAQ,OAAS,EAAA,CAAC,CAAM,KAAA;AAChE,IAAA,MAAM,CAAK,GAAA,IAAA,CAAK,MAAO,EAAA,GAAI,EAAM,GAAA,CAAA;AACjC,IAAA,MAAM,CAAI,GAAA,CAAA,KAAM,GAAM,GAAA,CAAA,GAAK,IAAI,CAAO,GAAA,CAAA;AACtC,IAAO,OAAA,CAAA,CAAE,SAAS,EAAE,CAAA;AAAA,GACrB,CAAA;AACH;AANgB,MAAA,CAAA,IAAA,EAAA,MAAA,CAAA;AAaT,SAAS,oBAAoB,GAAsB,EAAA;AACxD,EAAA,IAAI,CAAC,GAAA,IAAO,OAAO,GAAA,KAAQ,QAAU,EAAA;AACnC,IAAO,OAAA,KAAA;AAAA;AAIT,EAAA,IAAI,CAAC,GAAA,CAAI,QAAS,CAAA,KAAK,CAAG,EAAA;AACxB,IAAO,OAAA,IAAA;AAAA;AAGT,EAAA,MAAM,aAAgB,GAAA,gCAAA;AACtB,EAAA,OAAO,aAAc,CAAA,IAAA,CAAK,GAAI,CAAA,IAAA,EAAM,CAAA;AACtC;AAZgB,MAAA,CAAA,mBAAA,EAAA,qBAAA,CAAA;AAsBT,SAAS,aAAa,GAAqB,EAAA;AAChD,EAAA,IAAI,CAAC,GAAA,IAAO,OAAO,GAAA,KAAQ,QAAU,EAAA;AACnC,IAAO,OAAA,EAAA;AAAA;AAIT,EAAA,MAAM,gBAAmB,GAAA,GAAA,CAAI,KAAM,CAAA,GAAG,EAAE,CAAC,CAAA;AAGzC,EAAM,MAAA,SAAA,GAAY,iBAAiB,WAAY,EAAA;AAG/C,EAAI,IAAA,SAAA,CAAU,QAAS,CAAA,MAAM,CAAG,EAAA;AAC9B,IAAO,OAAA,KAAA;AAAA;AAIT,EAAI,IAAA,SAAA,CAAU,QAAS,CAAA,WAAW,CAAG,EAAA;AACnC,IAAO,OAAA,KAAA;AAAA;AAIT,EAAO,OAAA,EAAA;AACT;AAvBgB,MAAA,CAAA,YAAA,EAAA,cAAA,CAAA;;;;;;;"}