Skip to content

Commit 73bafc9

Browse files
committed
feat: Fix dropdown menu bug in dev.js and build.js
1 parent 1192f18 commit 73bafc9

File tree

10 files changed

+95
-91
lines changed

10 files changed

+95
-91
lines changed

Diff for: CHANGELOG_CN.md

+1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
99
- 优化 `setBar` 事件
1010
- 新增 `artplayerPluginChapter` 插件
1111
- 新增 `art.plugins.artplayerPluginDanmuku.load(target)` 参数,用于追加弹幕库
12+
- 修复 `artplayerPluginVttThumbnail` 在移动端不显示的问题
1213
- 修复弹幕插件样式,和字号百分比显示的 `bug`
1314
- 移动端也可以看到 `thumbnails`
1415

Diff for: docs/uncompiled/artplayer-plugin-vtt-thumbnail/index.js

+43-43
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: docs/uncompiled/artplayer-plugin-vtt-thumbnail/index.js.map

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: docs/uncompiled/artplayer-tool-thumbnail/index.js

+10-10
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: docs/uncompiled/artplayer-tool-thumbnail/index.js.map

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: packages/artplayer-plugin-vtt-thumbnail/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"license": "MIT",
3-
"version": "1.0.0",
3+
"version": "1.0.1",
44
"name": "artplayer-plugin-vtt-thumbnail",
55
"types": "types/artplayer-plugin-vtt-thumbnail.d.ts",
66
"description": "vtt thumbnail plugin for ArtPlayer",
@@ -21,4 +21,4 @@
2121
"video",
2222
"player"
2323
]
24-
}
24+
}

Diff for: packages/artplayer-plugin-vtt-thumbnail/src/index.js

+36-32
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,26 @@ export default function artplayerPluginVttThumbnail(option) {
44
return async (art) => {
55
const {
66
constructor: {
7-
utils: { setStyle, clamp },
7+
utils: { setStyle, isMobile },
88
},
99
template: { $progress },
10-
events: { proxy },
1110
} = art;
1211

13-
const vttArray = await getVttArray(option.vtt);
12+
let timer = null;
13+
const thumbnails = await getVttArray(option.vtt);
1414

15-
function getPosFromEvent(art, event) {
16-
const { $progress } = art.template;
17-
const { left } = $progress.getBoundingClientRect();
18-
const width = clamp(event.pageX - left, 0, $progress.clientWidth);
19-
const second = (width / $progress.clientWidth) * art.duration;
20-
return { width, second };
15+
function showThumbnails($control, find, width) {
16+
setStyle($control, 'backgroundImage', `url(${find.url})`);
17+
setStyle($control, 'height', `${find.h}px`);
18+
setStyle($control, 'width', `${find.w}px`);
19+
setStyle($control, 'backgroundPosition', `-${find.x}px -${find.y}px`);
20+
if (width <= find.w / 2) {
21+
setStyle($control, 'left', 0);
22+
} else if (width > $progress.clientWidth - find.w / 2) {
23+
setStyle($control, 'left', `${$progress.clientWidth - find.w}px`);
24+
} else {
25+
setStyle($control, 'left', `${width - find.w / 2}px`);
26+
}
2127
}
2228

2329
art.controls.add({
@@ -26,33 +32,31 @@ export default function artplayerPluginVttThumbnail(option) {
2632
index: 20,
2733
style: option.style || {},
2834
mounted($control) {
29-
proxy($progress, 'mousemove', async (event) => {
30-
setStyle($control, 'display', 'block');
31-
const { second, width } = getPosFromEvent(art, event);
32-
const find = vttArray.find((item) => second >= item.start && second <= item.end);
33-
if (!find) return setStyle($control, 'display', 'none');
35+
art.on('setBar', async (type, percentage, event) => {
36+
const isMobileDroging = type === 'played' && event && isMobile;
3437

35-
setStyle($control, 'backgroundImage', `url(${find.url})`);
36-
setStyle($control, 'height', `${find.h}px`);
37-
setStyle($control, 'width', `${find.w}px`);
38-
setStyle($control, 'backgroundPosition', `-${find.x}px -${find.y}px`);
38+
if (type === 'hover' || isMobileDroging) {
39+
const width = $progress.clientWidth * percentage;
40+
const second = percentage * art.duration;
41+
setStyle($control, 'display', 'flex');
3942

40-
if (width <= find.w / 2) {
41-
setStyle($control, 'left', 0);
42-
} else if (width > $progress.clientWidth - find.w / 2) {
43-
setStyle($control, 'left', `${$progress.clientWidth - find.w}px`);
44-
} else {
45-
setStyle($control, 'left', `${width - find.w / 2}px`);
46-
}
47-
});
43+
const find = thumbnails.find((item) => second >= item.start && second <= item.end);
44+
if (!find) return setStyle($control, 'display', 'none');
4845

49-
proxy($progress, 'mouseleave', () => {
50-
setStyle($control, 'display', 'none');
51-
});
46+
if (width > 0 && width < $progress.clientWidth) {
47+
showThumbnails($control, find, width);
48+
} else {
49+
if (!isMobile) {
50+
setStyle($control, 'display', 'none');
51+
}
52+
}
5253

53-
art.on('hover', (state) => {
54-
if (!state) {
55-
setStyle($control, 'display', 'none');
54+
if (isMobileDroging) {
55+
clearTimeout(timer);
56+
timer = setTimeout(() => {
57+
setStyle($control, 'display', 'none');
58+
}, 500);
59+
}
5660
}
5761
});
5862
},

Diff for: scripts/build.js

-1
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,6 @@ async function runBuild() {
111111
choices: Object.keys(projects).map((name) => ({
112112
title: name,
113113
value: name,
114-
description: projects[name],
115114
})),
116115
initial: 0,
117116
});

Diff for: scripts/dev.js

-1
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,6 @@ async function develop(name) {
8585
choices: Object.keys(projects).map((name) => ({
8686
title: name,
8787
value: name,
88-
description: projects[name],
8988
})),
9089
initial: 0,
9190
});

Diff for: scripts/utils.js

+1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ export function formatDate(date) {
1616
export function getProjects() {
1717
return glob
1818
.sync('packages/*')
19+
.sort()
1920
.filter((item) => !item.endsWith('artplayer-template') && !item.endsWith('artplayer-vitepress'))
2021
.reduce((result, item) => {
2122
const name = item.split(/\/|\\/g).pop();

0 commit comments

Comments
 (0)