/* * XmlDigitalTeaching v0.0.1 * Copyright ©Tue May 27 2025 20:10:29 GMT+0800 (中国标准时间) smile * Released under the ISC License. */ var playIcon = "data:image/png;base64,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"; var pauseIcon = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAABrJJREFUeF7lm21sU1UYx//PXbcJQ0d7mREkuixqlqiwRA0MQdqymIAoIOAHooD4Fkkc6R0TSCCMQALK1js00YhRXNTEOExQJBOBtgg6UFFQTAxgggYRYe2GA2EvvY+5hc52Xdt7u1O4y863pv/zvPzuyzn3POcQrkFzqmfLwFQKULEE6XYGFwMoAmAHwQ6GHcBJgE4S8UlN035nSdq51yM3Zzs8yoaDivrQbd1aeJqEnMkMdgK4JUM/IQb2SCTt01hqCiiFJzK0k7SbUADO2tBEytHmgWkegELRwTLQJJHU1IW8rfs8BX+JsC8EgLM+NB0anifwoyKCSmuDcJo17e2wNPSt/oLoF4BrnnhvMjoIYHPAI69JCy2JICMAk9SLI23a5XUgLMrUsch+zNhFGq/yV484aNauaQBONTiHGGsBlJp1lmX9RQCr/IqsmvFjCoDb27KSQXryFm70vl9xzDcaoGEAbrXlJWZ6zajh66z7ya/IY43EYAiA0xusIqDWiEErafyKnDa/tAK3GlzKjI1WSsxoLAzeHlBGPJZKnxKAq651PkhrMOrQijrSuNK3dMTryWJLCsBdF5zAEnaCMcyKiZmJiUmaFfDYt/XVp08Azhq/jQrH7AHjITOOLKtlnGfSKgJK0feJc6k+onZ6W9YTaLllE8ogMP07IqDI09IC0Ke3pPH2DHxYvgsTPRnwOD6MDTThEXCrwW+Z8YDls8kkQMJBv0cenxSAS219HKx9kontVH3Gjs6FTQKOnu5GRzenNJ9vI9wzyoZuDThyqkt0KCCSKn0ee8+oEHcHuLzBrQBmi/TqnXsTykbbIiaPnw3jjb3/Jk1MB7V48lDceXNORH/4VDeUxn9EhgOAT+Qhd9xOpTCkG+4B4PS23U8IfyfS2+S78rD6kfhR9NMjHdjk079bEtsSdwFmjM2P+2PNjgvYe6xTZFhgQk30E7oHgMsbfBVAtUhPC8qHYMH4IXEmU13V2Lsl2qnhwCU0NF8SGZZ+2XveBREAD288U9CVk3sUgL5YKaxZFoCeYZjH6+sHEQDOupaFRLRFWOZXDVkZALO2JlBVVBMB4PIGdwBImCT0F4iVAQD4xq/ID14BoAb/BGNUfxPu3d/SAJgvc3u7nSrUtpIwh38Tnbxuz9IA9AGRUU7ZnPpaHgC0F8lZd66GSFo9GO8AItST2xusZ2DJ4ARA28ilhhrAbHgV1Qwoqz8CAB0mpzf0WbZKWtYHgDZyeYO7AFSYubJGtQMAwCX9HdDIwByjSZnRWR4A4TS51eDbzHjWTGJGtZYHAPxCbjW0kZmXGk3KjM7yAIj2k7MutIyIN5hJzKjW6gAI9BG564JzmfCx0aTM6AYAgA3kqj13HyQpYb3cTKLJtFYHwPpUeOL6NntufjiyPia6WR8Apl79HA4dAfOYQQeAJHsUwMtgfmWQATjgV+TyK0tiamsZsfbjYAJAoA0+xbEidlX4AIBxIiFY+R3AwNSAIn8RAyBUDbC+NC6sWRYAYb/fI0/SE/2/MKK2FhNr+tJ4gSgC7tI8rJwaXxj5/OcOeHf3XRhRKgow/d74wsi6pgvw/Sq2MEJMi31VjjfjAOg/3GpwCzMWigIwLJ+gFzvuKLpS6tKb0tiOw0lqfmWjc+Gde2OP9sS5cKQ0dqEjdT3RZLx/5HTSmN3LHecTALjqQtNArC+RC2t3j7ShvCQXtw7PQeB4Z9oyl64tL8lDWAMCxzqFF0gJtMKnOHqm/gnlcZc3uBnAc8IIWMoQ/XCDzT6hqZI6omElAKhQ/y4Ja7Z9IPF1guvNgpmeClQ5PoiNo889QgNsU6QhrsS0zVflmNVbnHyXWBZXigxFLFZ0lsM0JVDt0Ee5uJYUgLO2pZRySN8pJrxkJjY3Q9Ze8Cuy/m5LaKk3SqrBRWC8Y8iFdUUNfkVOOrSn3SqbzcpR1pkR3vV75GdS+UkLQO88ECEw0BhQ5CfSQTYEYABC2ONXZEO1DsMAIhCse1ok5kJn6cBE1IPVzgvFTWoI1T6PbOpcg6k7INaZSx8hgLVWGCb1550JaiYnTTMGEHkkaltKJYnWZqu0ZuAF1gyG6quSG9Npk/3fLwBRo25v69MMTT8taujFk2mwMf0OAdicbHJjxr4QAFGHrk1tU6CF50HDbJD4o7MENDPwnojEozELBRA16lRbh0MLz5QkaQYzzzRzReK1fIyZvpKAL7VcNAcq5VOZ2+q7Z1YA9HblVFuL0d1dDImKAS6WSBrORHZm2Ak8hIA2ENoAatOYzyCsHerScOjrZUXtohPube8/AMNbG4WK/N0AAAAASUVORK5CYII="; var audioIcon = "data:image/png;base64,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"; var coverLocal = "5d9cf0a5d487a818.png"; var playRepeat = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAaCAMAAADhRa4NAAAAAXNSR0IArs4c6QAAAi5QTFRFAAAAAID/QID/M5n/JJL/SZL/TYD/O4nrQJ/vR47xQIz/OovoQ5DpPYXrPYX1QJLtPo3tRJDuOI//QI/vOpL4QpLwOZzxQI7qRYr4Po/sPo/zPYztPZL5QIvuQJHuOZL1RI3vPYrwQYzwOY7xQo7sQo3tQpHtPY7vQY7zI4XzPI/wQI/sQZDtSpHtP4/uPo3nPo3xQYvuRoDuQY3vQIn1QI/tOpfxP4zvQY3sKrv1MYv1QJDtQI/tPpLwQJDxQo/sQI7tQYzuPI7vQZDvQY3xQI7sM6nyQY3sQJLvPpLtQI/tQI/vRIntQI7uQI7vQY7uQY7tQY3tQo7tPYzxP47wQpDuRJDxQo7tQo7vQI3tQ5PtRI3uQJXxQYvxQZDxQJDuQ5DsQI7uPozsOpPtQY7tQI7tQI7uQI/uQ43sQY7tQI/tQY7tQ43vQ4/tQY7tQovsQI/tQY7uQI/wQo7uQo7tQI/uQYztQ43vQYvtQY7tQI7qQI7vQY3uQo/tQI/rQY7uQY7tQo7uP43vQI3vQY7tQY7rQpDvQY7tQY/tQY7tQY7vQY7sQo7tQ5DrQY7sQY7tQo7tQY7tQI3sQI7qQI7sQI/qQI/tQI/uQY3rQY3sQY3tQY7rQY7sQY7tQY/sQY/tQozsQo3pQo3qQo3sQo3tQo7rQo7sQo7tQo7uQo/qQo/sQo/tQ4nrQ4vuQ4zsQ43sQ47qQ47rQ47sQ4/qQ4/sRIvrRobsSI/qS3/qS5DpVRNwpwAAAJJ0Uk5TAAIEBQcHCg0QEhQWFxkZHB0eICAjIyQkJSkpKiosLDExMjM2Njo6Pz9BRERHSElKSktMTlBUXV1eYmNjZGdsbXN2fH6Ch4iJjI+Pj4+Tk5WZmpqgpaWmq6usrq+wsLGzs7a4ubm8vsLHyMvLy8vMzc/V1tbZ3N3e4ePm5ubp6+vs7e7u8PHy8/T29vj5+vz8/P6b5lOEAAABY0lEQVQYGY3BhztVYRwH8C+XsiIjM3tlFZGSPcsoM5SVUXZ2ocgOmSUj76+Lm3OsZEb/HR5d93iPp8fnAyn3+JzyqlfpoddxoeC6n0QkkJJYtgNkHCqVIpU9CguMTG2gLywFHL+Z3wuPLXHqdpmgKlVAyuuv0GgFjYjpjRpIXJlgFbqQunv49Qk08nbfgxOy+OsW1DzWlzzBK9ivh5pzfyFkDH4o7fFfr/8k4J/7VyFz7V7sQr7eA5x4xrpNwHsx16V820o49lIg6jIHJ+ibSMQ+AcjcpkkS+0zAubNGRC4A3k2VjH8cITvw/FfGXHDM2MZU6HF1gpy+OU4pBma9IeemgFrGchNkbrAOqFnQwUPwauff4MzT5VEznBcn7DlCo32r1xZSUcSiIWE9vPrZF2e0k1SbuTjnZqdIxQFaOGEU1bYznQiO4XNSfR+qTkvOaiaRPoRDzqdokIgYI2qJ0cGlHQE0EGWmZ0WkvQAAAABJRU5ErkJggg=="; var playOnce = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAgCAMAAAA2a+hwAAAAAXNSR0IArs4c6QAAAlJQTFRFAAAAgID/QID/QID/OY7jRovoO4nrSZLtRIjuPIfwQIzyQJnySZLzRpfzQ4X0QIrqQo7sPo3tEN73RI/wPI3yQZDrPo/sQ4ztQ4zzO4jtQY7tPo7uPYvuQI/vOY3vPo3vPIzrQZHwNqL1QI7wRYTrK4b2QY/uP47uR47yQIvvP43rQI/wP5DwSXz0QozuPYvxQY/uQI3uQY3vQI/yQZDzQpDwQ472QI3uPIn3P4vqQo7vQo3tQI3uQJDuQI7uQI3uQI7sQo7sQpHxQY3sPo7vQI7tQI/xQY7tQY3tQY3vPo7vQo/rP5HuQY3uQJDxQorsQo7sQo7vOI3xQovrQo3rQY7tQY3tQI7tQI3sPY/wN5vvQo7vNKPyQY7tQ43tQY/uQorsQI7sQY3uPJfwQI7wPpPuP4/vQY7tTnTsRJPxP47vQYzsPZDvP43uQo7sO5jvQY3uPZDwQ4ftQI7tQo3uQY7uQo7uQY7tQY7tQ43wQY7tQI3tQI7uQI7tQI/wP4zuQ5DtQY7tRJHsQI7tQY7tQI7tQY7uQI7uQY3uQo7tPpHtQI7tQY/sQY7sQY/tQY7tQY7tQY3sQY/uQI7tQY7tQo7uQo/uSY7tQY/tTXnqQY3tQY7tQY7tQY7tQY7tQY7uQY7tPZXtQY3tQY7tQY7tQY7tQo/tP5LqQI/rQI/sQY3sQY7rQY7sQY7tQY/rQY/sQY/tQZDtQozsQo3rQo3sQo3tQo7qQo7rQo7sQo7tQo/tQ4vsQ4zrQ47qQ47sRIfrRInsRI/rRI/sRYnsR4TqR4fqvnKd/wAAAKd0Uk5TAAIECAkLDQ4PERQUFRYXGBsdHyImJykqKisrLS4wMTEzMzQ0NDs7PT1AQURFRklLS0xOUFNVWFxdYWFlZ2doa2xsbW5vb3BxcnJzdHl5fHx8fH+AgIGCg4iJjIyOjpGSkpOUlZeZm56goaKio6OjpKaqqq6vsLO0t7i5vL7GxsfHyMjLy8zN0tTW2trc4ubn6erq7Ozs7Ozu7vHz9Pb3+Pn6+/v9/v6utNnsAAABnklEQVQYGY3BhVsTcQDH4c8QRbCwu7tbVFQsPLu7u3t2YRfYXRhg7r4GMnYzMPm/nLf7nTjkeXxf/lv7I3OoVP+IllCpvg80l39rNiTrkrQymQpqTD4rV7QriabkRx3tnXdP9tQqkDGAP1IPKXw6qy7ZciYCqbLnY6RdkDKBUVI2MUlL39jr8eQV3elATKdTI4kb+6FsMa7NZY/rkWDw8589ielS8qU3FWwquRoAcu0N+Opg3AxNgFalr2rhSd/3qBuece8vwszvOXjGFEiz8dQOC46GRuNK3iMVaDzG+TBct3vgSpGGrpOFse0rPH3blLhGrdkqC2P5OyhUQ3y7ZWEs/AG31RlfUBbGmiLIdQbiC8rC2P8SNkaW4QvKwrgfhkGhu/h2aRKedsVhqGnb/TAOazqend8OAit0BWP4ycbEdXxR2hJIeRJZS6LArc87+K2Xo2n8Len46xsBXAs+fVxFeU3OhJ61wTNL0XPdMarOkPOwLb7M/GIdGNE8rVr1+n1WX3OcYw0oJ32LnKhcjvKGkaDFohOFirm8PQPPL6EvjEOwGD5qAAAAAElFTkSuQmCC"; function parseLrc(lrc_s) { if (lrc_s) { lrc_s = lrc_s.replace(/([^\]^\n])\[/g, (match, p1) => p1 + '\n['); const lyric = lrc_s.split('\n'); const lrc = []; const lyricLen = lyric.length; for (let i = 0; i < lyricLen; i++) { // match lrc time const lrcTimes = lyric[i].match(/\[(\d{2}):(\d{2})(\.(\d{2,3}))?]/g); // match lrc text const lrcText = lyric[i].replace(/.*\[(\d{2}):(\d{2})(\.(\d{2,3}))?]/g, '').replace(/<(\d{2}):(\d{2})(\.(\d{2,3}))?>/g, '').replace(/^\s+|\s+$/g, ''); if (lrcTimes) { // handle multiple time tag const timeLen = lrcTimes.length; for (let j = 0; j < timeLen; j++) { const oneTime = /\[(\d{2}):(\d{2})(\.(\d{2,3}))?]/.exec(lrcTimes[j]); const min2sec = oneTime[1] * 60; const sec2sec = parseInt(oneTime[2]); const msec2sec = oneTime[4] ? parseInt(oneTime[4]) / ((oneTime[4] + '').length === 2 ? 100 : 1000) : 0; const lrcTime = min2sec + sec2sec + msec2sec; lrc.push([lrcTime, lrcText]); } } } // sort by time lrc.sort((a, b) => a[0] - b[0]); return lrc; } else { return []; } } // var script$3 = { props: { currentMusic: { type: Object, required: true }, playStat: { type: Object, required: true } }, data() { return { displayLrc: '', currentLineIndex: 0 }; }, computed: { lrcLines() { return parseLrc(this.displayLrc); }, currentLine() { if (this.currentLineIndex > this.lrcLines.length - 1) { return null; } return this.lrcLines[this.currentLineIndex]; }, transformStyle() { // transform: translateY(0); -webkit-transform: translateY(0); return { transform: `translateY(${-this.currentLineIndex * 16}px)`, webkitTransform: `translateY(${-this.currentLineIndex * 16}px)` }; } }, methods: { applyLrc(lrc) { // if (/^https?:\/\//.test(lrc)) { // this.fetchLrc(lrc) // } else { // this.displayLrc = lrc // } this.fetchLrc(lrc); }, fetchLrc(src) { fetch(src).then(response => response.text()).then(lrc => { this.displayLrc = lrc; }); }, hideLrc() { this.displayLrc = ''; } }, watch: { currentMusic: { deep: true, immediate: true, handler(music) { this.currentLineIndex = 0; if (music.lrc) { this.applyLrc(music.lrc); } else { this.hideLrc(); } } }, 'playStat.playedTime'(playedTime) { for (let i = 0; i < this.lrcLines.length; i++) { const line = this.lrcLines[i]; const nextLine = this.lrcLines[i + 1]; if (playedTime >= line[0] && (!nextLine || playedTime < nextLine[0])) { this.currentLineIndex = i; } } } } }; function normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier /* server only */, shadowMode, createInjector, createInjectorSSR, createInjectorShadow) { if (typeof shadowMode !== 'boolean') { createInjectorSSR = createInjector; createInjector = shadowMode; shadowMode = false; } // Vue.extend constructor export interop. const options = typeof script === 'function' ? script.options : script; // render functions if (template && template.render) { options.render = template.render; options.staticRenderFns = template.staticRenderFns; options._compiled = true; // functional template if (isFunctionalTemplate) { options.functional = true; } } // scopedId if (scopeId) { options._scopeId = scopeId; } let hook; if (moduleIdentifier) { // server build hook = function (context) { // 2.3 injection context = context || // cached call this.$vnode && this.$vnode.ssrContext || // stateful this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext; // functional // 2.2 with runInNewContext: true if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') { context = __VUE_SSR_CONTEXT__; } // inject component styles if (style) { style.call(this, createInjectorSSR(context)); } // register component module identifier for async chunk inference if (context && context._registeredComponents) { context._registeredComponents.add(moduleIdentifier); } }; // used by ssr in case component is cached and beforeCreate // never gets called options._ssrRegister = hook; } else if (style) { hook = shadowMode ? function (context) { style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot)); } : function (context) { style.call(this, createInjector(context)); }; } if (hook) { if (options.functional) { // register for functional component in vue file const originalRender = options.render; options.render = function renderWithStyleInjection(h, context) { hook.call(context); return originalRender(h, context); }; } else { // inject component registration as beforeCreate hook const existing = options.beforeCreate; options.beforeCreate = existing ? [].concat(existing, hook) : [hook]; } } return script; } /* script */ const __vue_script__$3 = script$3; /* template */ var __vue_render__$3 = function () { var _vm = this; var _h = _vm.$createElement; var _c = _vm._self._c || _h; return _c("div", { staticClass: "aplayer-lrc" }, [ _c( "div", { staticClass: "aplayer-lrc-contents", style: _vm.transformStyle }, _vm._l(_vm.lrcLines, function (line, index) { return _c( "p", { key: index, class: { "aplayer-lrc-current": index === _vm.currentLineIndex }, }, [_vm._v("\n " + _vm._s(line[1]) + "\n ")] ) }), 0 ), ]) }; var __vue_staticRenderFns__$3 = []; __vue_render__$3._withStripped = true; /* style */ const __vue_inject_styles__$3 = undefined; /* scoped */ const __vue_scope_id__$3 = undefined; /* module identifier */ const __vue_module_identifier__$3 = undefined; /* functional template */ const __vue_is_functional_template__$3 = false; /* style inject */ /* style inject SSR */ /* style inject shadow dom */ const __vue_component__$3 = /*#__PURE__*/normalizeComponent( { render: __vue_render__$3, staticRenderFns: __vue_staticRenderFns__$3 }, __vue_inject_styles__$3, __vue_script__$3, __vue_scope_id__$3, __vue_is_functional_template__$3, __vue_module_identifier__$3, false, undefined, undefined, undefined ); // var script$2 = { name: 'XmlAudioModalPlayer', components: { lyrics: __vue_component__$3 }, props: { //模式:preview 预览 (默认),editor 编辑 mode: { type: String, default: 'editor' }, playStyle: { type: String, default: 'yuan-wen' }, styleMode: { type: String, default: 'A' }, url: { type: String, default: '', require: true }, title: { type: String, default: '音频文件' }, coverImageUrl: { type: String, default: '' }, //进度是否能控制 scheduleControl: { type: String, default: '' }, loop: { type: Boolean, default: true }, playMode: { type: String, default: 'xun-huan' }, content: { type: String, default: '暂无简介' }, targerLink: { type: String, default: '' }, subTitle: { type: Boolean, default: false }, subTitleSrc: { type: String, default: '' }, subTitleSrcName: { type: String, default: '' } }, computed: { videoAndMusicStop() { let playState = sessionStorage.getItem('SET_PLAY_STATE'); return playState; }, playModeIconSrc() { let srcMap = { 'xun-huan': playRepeat, 'dan-ci': playOnce }; return srcMap[this.playMode]; } }, watch: { url: { handler(newVal) { let _this = this; this.isPlay = false; let ua = navigator.userAgent; /micromessenger/.test(ua.toLowerCase()); let isIOS = !!ua.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); if (isIOS && newVal) { try { this.$nextTick(() => { _this.$refs.musicAudio.muted = true; const playPromise = _this.$refs.musicAudio.play(); _this.$refs.musicAudio.muted = false; if (playPromise) { playPromise.then(() => { _this.$refs.musicAudio.pause(); }).catch(error => { _this.$refs.musicAudio.pause(); console.log(error); }); } }); } catch (error) { console.log(error); this.$message({ type: 'warning', message: error, duration: 5000 }); } } }, immediate: true }, subTitleSrc: { handler(newVal) { this.audio.title = this.title; this.audio.src = this.url; this.audio.pic = this.coverImageUrl || coverLocal; this.audio.lrc = newVal; }, immediate: true }, videoAndMusicStop(val) { console.log('watch', val); let currentPlayStamp = val || '--'; if (`${this.url}__playTimeStamp__${this.lastOperateTimeStamp}` !== currentPlayStamp) { this.musicAudio.pause(); } } }, data() { return { playIcon, pauseIcon, audioIcon, coverLocal, isPlay: false, playTime: 0, playDuration: '00:00', playCurrentTime: '00:00', totalDuration: 0, link: { type: String, default: '' }, //链接地址 lastOperateTimeStamp: '', musicAudio: null, manualPlay: false, audio: { title: '', artist: '', src: '', pic: '', lrc: '' }, playStat: { duration: 0, loadedTime: 0, playedTime: 0 } }; }, mounted() { // 加载完毕后,先获取