feat: update changelog with Parcel to Vite refactor

feat: add danmuku plugin documentation and i18n setup guide

- Created a new documentation file for the danmuku plugin with code examples.
- Added a comprehensive guide for language settings (i18n) including default languages, importing languages, adding new languages, and modifying existing languages.
- Included code snippets for initializing the Artplayer with different language settings.

Add internationalization support for multiple languages in Artplayer

- Introduced Arabic (ar), Czech (cs), Spanish (es), Persian (fa), French (fr), Indonesian (id), Polish (pl), Russian (ru), Turkish (tr), Vietnamese (vi), and Traditional Chinese (zh-tw) translations.
- Created corresponding JavaScript and ES module files for each language containing translated strings for player controls and settings.
- Added a new documentation file for language settings in the project.

feat: add initial implementation of start option page with interactive code execution buttons

feat: add danmuku plugin documentation and i18n setup guide

- Created a new documentation file for the danmuku plugin, providing code examples for usage.
- Added a comprehensive guide for language settings, including default languages, importing languages, adding new languages, and modifying existing languages.
- Included code snippets for initializing the Artplayer with different language settings and importing language files.

refactor: update danmuku worker implementation and remove unused i18n files

- Changed the way the Danmuku class creates a Web Worker by using a worker loader instead of creating a blob.
- Removed Arabic, Czech, Spanish, Persian, French, Indonesian, Polish, Russian, Turkish, Vietnamese, and Traditional Chinese i18n files as they are no longer needed.
- Updated the Vite build configuration to disable banners for inline workers and added a plugin to remove worker banners from generated code.

feat: add danmuku plugin and i18n setup documentation

- Created a new documentation file for the danmuku plugin, providing code examples for usage.
- Added a new documentation file for language settings (i18n), detailing how to set default languages, import languages, and add new languages.
- Included code snippets for initializing the Artplayer with different language settings and examples for modifying existing languages.

feat: add danmuku plugin and i18n setup documentation

- Created a new documentation file for the danmuku plugin with code examples.
- Added a new documentation file for language settings (i18n) including import instructions and examples for setting default and custom languages.
- Updated the i18n documentation to include details on adding and modifying languages.

feat: add danmuku plugin and i18n setup documentation

- Created a new JavaScript file for the danmuku plugin documentation with multiple code execution buttons.
- Added a new JavaScript file for i18n (internationalization) setup documentation, including instructions for language settings, importing languages, and modifying language options.
- Included examples for setting default languages and adding new languages in the i18n documentation.

Refactor code structure for improved readability and maintainability
This commit is contained in:
Harvey Zhao committed 2026-03-07 15:21:34 +08:00
1 parent ddb78cf850
commit 699bf09577
397 files changed
+99776 -8638

No files matched your search

+90 -3
View File
@@ -1,8 +1,95 @@
/*!
* artplayer-plugin-audio-track.js v1.0.1
* artplayer-plugin-audio-track.js v1.0.2
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,r,t,o,n){var u="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},i="function"==typeof u[o]&&u[o],a=i.i||{},l=i.cache||{},f="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function c(r,t){if(!l[r]){if(!e[r]){if(n[r])return n[r];var a="function"==typeof u[o]&&u[o];if(!t&&a)return a(r,!0);if(i)return i(r,!0);if(f&&"string"==typeof r)return f(r);var d=Error("Cannot find module '"+r+"'");throw d.code="MODULE_NOT_FOUND",d}s.resolve=function(t){var o=e[r][1][t];return null!=o?o:t},s.cache={};var p=l[r]=new c.Module(r);e[r][0].call(p.exports,s,p,p.exports,u)}return l[r].exports;function s(e){var r=s.resolve(e);if(!1===r)return{};if(Array.isArray(r)){var t={__esModule:!0};return r.forEach(function(e){var r=e[0],o=e[1],n=e[2]||e[0],u=c(o);"*"===r?Object.keys(u).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:function(){return u[e]}})}):"*"===n?Object.defineProperty(t,r,{enumerable:!0,value:u}):Object.defineProperty(t,r,{enumerable:!0,get:function(){return"default"===n?u.__esModule?u.default:u:u[n]}})}),t}return c(r)}}c.isParcelRequire=!0,c.Module=function(e){this.id=e,this.bundle=c,this.require=f,this.exports={}},c.modules=e,c.cache=l,c.parent=i,c.distDir=void 0,c.publicUrl=void 0,c.devServer=void 0,c.i=a,c.register=function(r,t){e[r]=[function(e,r){r.exports=t},{}]},Object.defineProperty(c,"root",{get:function(){return u[o]}}),u[o]=c;for(var d=0;d<r.length;d++)c(r[d]);if(t){var p=c(t);"object"==typeof exports&&"u">typeof module?module.exports=p:"function"==typeof define&&define.amd&&define(function(){return p})}}({fHO26:[function(e,r,t,o){var n=e("@parcel/transformer-js/src/esmodule-helpers.js");function u(e){return r=>{let{url:t,offset:o=0,sync:n=.3}=e,u=new Audio;function i(){if(!r.video||!t)return;let e=r.currentTime+o;Math.abs(u.currentTime-e)>n&&(u.currentTime=e)}return u.preload="auto",t&&(u.src=t),r.on("play",()=>{t&&(i(),u.play().catch(e=>{console.warn(e)}))}),r.on("pause",()=>{u.pause()}),r.on("seek",()=>{i()}),r.on("video:timeupdate",()=>{r.playing&&i()}),r.on("video:ratechange",()=>{u.playbackRate=r.video.playbackRate}),r.on("video:volumechange",()=>{u.volume=r.volume,u.muted=r.muted}),r.on("video:waiting",()=>{u.pause()}),r.on("video:playing",()=>{t&&r.playing&&u.play().catch(e=>{console.warn(e)})}),r.on("destroy",()=>{u.pause(),u.src="",u.load()}),u.volume=r.volume,u.muted=r.muted,u.playbackRate=r.video?.playbackRate||1,{name:"artplayerPluginAudioTrack",audio:u,update:function(e){e.url&&e.url!==t&&(u.src=t=e.url,r.playing&&u.play().catch(e=>console.warn(e))),void 0!==e.offset&&(o=e.offset),void 0!==e.sync&&(n=e.sync)}}}}n.defineInteropFlag(t),n.export(t,"default",()=>u),"u">typeof window&&(window.artplayerPluginAudioTrack=u)},{"@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],loqXi:[function(e,r,t,o){t.interopDefault=function(e){return e&&e.__esModule?e:{default:e}},t.defineInteropFlag=function(e){Object.defineProperty(e,"__esModule",{value:!0})},t.exportAll=function(e,r){return Object.keys(e).forEach(function(t){"default"===t||"__esModule"===t||Object.prototype.hasOwnProperty.call(r,t)||Object.defineProperty(r,t,{enumerable:!0,get:function(){return e[t]}})}),r},t.export=function(e,r,t){Object.defineProperty(e,r,{enumerable:!0,get:t})}},{}]},["fHO26"],"fHO26","parcelRequire4dc0",{});let{default:e}=parcelRequire4dc0("fHO26");export{e as default};
function artplayerPluginAudioTrack(option) {
return (art) => {
let { url, offset = 0, sync = 0.3 } = option;
const audio = new Audio();
audio.preload = "auto";
if (url) {
audio.src = url;
}
function syncAudio() {
if (!art.video || !url)
return;
const videoTime = art.currentTime;
const targetTime = videoTime + offset;
if (Math.abs(audio.currentTime - targetTime) > sync) {
audio.currentTime = targetTime;
}
}
art.on("play", () => {
if (!url)
return;
syncAudio();
audio.play().catch((err) => {
console.warn(err);
});
});
art.on("pause", () => {
audio.pause();
});
art.on("seek", () => {
syncAudio();
});
art.on("video:timeupdate", () => {
if (art.playing) {
syncAudio();
}
});
art.on("video:ratechange", () => {
audio.playbackRate = art.video.playbackRate;
});
art.on("video:volumechange", () => {
audio.volume = art.volume;
audio.muted = art.muted;
});
art.on("video:waiting", () => {
audio.pause();
});
art.on("video:playing", () => {
if (url && art.playing) {
audio.play().catch((err) => {
console.warn(err);
});
}
});
art.on("destroy", () => {
audio.pause();
audio.src = "";
audio.load();
});
function update(newOption) {
if (newOption.url && newOption.url !== url) {
url = newOption.url;
audio.src = url;
if (art.playing) {
audio.play().catch((err) => console.warn(err));
}
}
if (newOption.offset !== void 0) {
offset = newOption.offset;
}
if (newOption.sync !== void 0) {
sync = newOption.sync;
}
}
audio.volume = art.volume;
audio.muted = art.muted;
audio.playbackRate = art.video?.playbackRate || 1;
return {
name: "artplayerPluginAudioTrack",
audio,
update
};
};
}
if (typeof window !== "undefined") {
window.artplayerPluginAudioTrack = artplayerPluginAudioTrack;
}
export {
artplayerPluginAudioTrack as default
};