Archived
chore: 提交 React 前端构建产物(app.js 330KB / auth.js 38KB / app.css 56KB)
为什么:部署不经 node 构建(dockerignore 排除了源码),服务端 直接读 dist/index.html 与 /assets,因此构建产物必须入库; 文件名经 vite 固定(无内容 hash),golden 契约才能跨构建成立。 gzip 后 app.js 97KB / auth.js 12KB / app.css 11KB。
This commit is contained in:
1 parent
8803444755
commit
58853abd3c
6 files changed
+88
No files matched your search
Vendored
+54
@@ -0,0 +1,54 @@
|
||||
(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))r(a);new MutationObserver(a=>{for(const o of a)if(o.type==="childList")for(const f of o.addedNodes)f.tagName==="LINK"&&f.rel==="modulepreload"&&r(f)}).observe(document,{childList:!0,subtree:!0});function n(a){const o={};return a.integrity&&(o.integrity=a.integrity),a.referrerPolicy&&(o.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?o.credentials="include":a.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(a){if(a.ep)return;a.ep=!0;const o=n(a);fetch(a.href,o)}})();var Uu={exports:{}},gs={},Hu={exports:{}},Q={};/**
|
||||
* @license React
|
||||
* react.production.min.js
|
||||
*
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/var Xr=Symbol.for("react.element"),Yp=Symbol.for("react.portal"),Xp=Symbol.for("react.fragment"),Zp=Symbol.for("react.strict_mode"),Jp=Symbol.for("react.profiler"),em=Symbol.for("react.provider"),tm=Symbol.for("react.context"),nm=Symbol.for("react.forward_ref"),rm=Symbol.for("react.suspense"),im=Symbol.for("react.memo"),sm=Symbol.for("react.lazy"),Lc=Symbol.iterator;function am(e){return e===null||typeof e!="object"?null:(e=Lc&&e[Lc]||e["@@iterator"],typeof e=="function"?e:null)}var Bu={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},qu=Object.assign,$u={};function Jn(e,t,n){this.props=e,this.context=t,this.refs=$u,this.updater=n||Bu}Jn.prototype.isReactComponent={};Jn.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};Jn.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function Vu(){}Vu.prototype=Jn.prototype;function Ml(e,t,n){this.props=e,this.context=t,this.refs=$u,this.updater=n||Bu}var zl=Ml.prototype=new Vu;zl.constructor=Ml;qu(zl,Jn.prototype);zl.isPureReactComponent=!0;var Tc=Array.isArray,Qu=Object.prototype.hasOwnProperty,Al={current:null},Wu={key:!0,ref:!0,__self:!0,__source:!0};function Gu(e,t,n){var r,a={},o=null,f=null;if(t!=null)for(r in t.ref!==void 0&&(f=t.ref),t.key!==void 0&&(o=""+t.key),t)Qu.call(t,r)&&!Wu.hasOwnProperty(r)&&(a[r]=t[r]);var p=arguments.length-2;if(p===1)a.children=n;else if(1<p){for(var h=Array(p),g=0;g<p;g++)h[g]=arguments[g+2];a.children=h}if(e&&e.defaultProps)for(r in p=e.defaultProps,p)a[r]===void 0&&(a[r]=p[r]);return{$$typeof:Xr,type:e,key:o,ref:f,props:a,_owner:Al.current}}function lm(e,t){return{$$typeof:Xr,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}function Rl(e){return typeof e=="object"&&e!==null&&e.$$typeof===Xr}function om(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,function(n){return t[n]})}var Pc=/\/+/g;function ca(e,t){return typeof e=="object"&&e!==null&&e.key!=null?om(""+e.key):t.toString(36)}function zi(e,t,n,r,a){var o=typeof e;(o==="undefined"||o==="boolean")&&(e=null);var f=!1;if(e===null)f=!0;else switch(o){case"string":case"number":f=!0;break;case"object":switch(e.$$typeof){case Xr:case Yp:f=!0}}if(f)return f=e,a=a(f),e=r===""?"."+ca(f,0):r,Tc(a)?(n="",e!=null&&(n=e.replace(Pc,"$&/")+"/"),zi(a,t,n,"",function(g){return g})):a!=null&&(Rl(a)&&(a=lm(a,n+(!a.key||f&&f.key===a.key?"":(""+a.key).replace(Pc,"$&/")+"/")+e)),t.push(a)),1;if(f=0,r=r===""?".":r+":",Tc(e))for(var p=0;p<e.length;p++){o=e[p];var h=r+ca(o,p);f+=zi(o,t,n,h,a)}else if(h=am(e),typeof h=="function")for(e=h.call(e),p=0;!(o=e.next()).done;)o=o.value,h=r+ca(o,p++),f+=zi(o,t,n,h,a);else if(o==="object")throw t=String(e),Error("Objects are not valid as a React child (found: "+(t==="[object Object]"?"object with keys {"+Object.keys(e).join(", ")+"}":t)+"). If you meant to render a collection of children, use an array instead.");return f}function gi(e,t,n){if(e==null)return e;var r=[],a=0;return zi(e,r,"","",function(o){return t.call(n,o,a++)}),r}function cm(e){if(e._status===-1){var t=e._result;t=t(),t.then(function(n){(e._status===0||e._status===-1)&&(e._status=1,e._result=n)},function(n){(e._status===0||e._status===-1)&&(e._status=2,e._result=n)}),e._status===-1&&(e._status=0,e._result=t)}if(e._status===1)return e._result.default;throw e._result}var _e={current:null},Ai={transition:null},um={ReactCurrentDispatcher:_e,ReactCurrentBatchConfig:Ai,ReactCurrentOwner:Al};function Ku(){throw Error("act(...) is not supported in production builds of React.")}Q.Children={map:gi,forEach:function(e,t,n){gi(e,function(){t.apply(this,arguments)},n)},count:function(e){var t=0;return gi(e,function(){t++}),t},toArray:function(e){return gi(e,function(t){return t})||[]},only:function(e){if(!Rl(e))throw Error("React.Children.only expected to receive a single React element child.");return e}};Q.Component=Jn;Q.Fragment=Xp;Q.Profiler=Jp;Q.PureComponent=Ml;Q.StrictMode=Zp;Q.Suspense=rm;Q.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=um;Q.act=Ku;Q.cloneElement=function(e,t,n){if(e==null)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+e+".");var r=qu({},e.props),a=e.key,o=e.ref,f=e._owner;if(t!=null){if(t.ref!==void 0&&(o=t.ref,f=Al.current),t.key!==void 0&&(a=""+t.key),e.type&&e.type.defaultProps)var p=e.type.defaultProps;for(h in t)Qu.call(t,h)&&!Wu.hasOwnProperty(h)&&(r[h]=t[h]===void 0&&p!==void 0?p[h]:t[h])}var h=arguments.length-2;if(h===1)r.children=n;else if(1<h){p=Array(h);for(var g=0;g<h;g++)p[g]=arguments[g+2];r.children=p}return{$$typeof:Xr,type:e.type,key:a,ref:o,props:r,_owner:f}};Q.createContext=function(e){return e={$$typeof:tm,_currentValue:e,_currentValue2:e,_threadCount:0,ProviderLine truncated
|
||||
* @license React
|
||||
* react-jsx-runtime.production.min.js
|
||||
*
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/var dm=Mr,fm=Symbol.for("react.element"),pm=Symbol.for("react.fragment"),mm=Object.prototype.hasOwnProperty,hm=dm.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,vm={key:!0,ref:!0,__self:!0,__source:!0};function Yu(e,t,n){var r,a={},o=null,f=null;n!==void 0&&(o=""+n),t.key!==void 0&&(o=""+t.key),t.ref!==void 0&&(f=t.ref);for(r in t)mm.call(t,r)&&!vm.hasOwnProperty(r)&&(a[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps,t)a[r]===void 0&&(a[r]=t[r]);return{$$typeof:fm,type:e,key:o,ref:f,props:a,_owner:hm.current}}gs.Fragment=pm;gs.jsx=Yu;gs.jsxs=Yu;Uu.exports=gs;var i=Uu.exports,Oa={},Xu={exports:{}},Be={},Zu={exports:{}},Ju={};/**
|
||||
* @license React
|
||||
* scheduler.production.min.js
|
||||
*
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/(function(e){function t(A,H){var q=A.length;A.push(H);e:for(;0<q;){var Z=q-1>>>1,G=A[Z];if(0<a(G,H))A[Z]=H,A[q]=G,q=Z;else break e}}function n(A){return A.length===0?null:A[0]}function r(A){if(A.length===0)return null;var H=A[0],q=A.pop();if(q!==H){A[0]=q;e:for(var Z=0,G=A.length,we=G>>>1;Z<we;){var Ze=2*(Z+1)-1,j=A[Ze],at=Ze+1,je=A[at];if(0>a(j,q))at<G&&0>a(je,j)?(A[Z]=je,A[at]=q,Z=at):(A[Z]=j,A[Ze]=q,Z=Ze);else if(at<G&&0>a(je,q))A[Z]=je,A[at]=q,Z=at;else break e}}return H}function a(A,H){var q=A.sortIndex-H.sortIndex;return q!==0?q:A.id-H.id}if(typeof performance=="object"&&typeof performance.now=="function"){var o=performance;e.unstable_now=function(){return o.now()}}else{var f=Date,p=f.now();e.unstable_now=function(){return f.now()-p}}var h=[],g=[],E=1,N=null,b=3,P=!1,I=!1,M=!1,Y=typeof setTimeout=="function"?setTimeout:null,x=typeof clearTimeout=="function"?clearTimeout:null,v=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function w(A){for(var H=n(g);H!==null;){if(H.callback===null)r(g);else if(H.startTime<=A)r(g),H.sortIndex=H.expirationTime,t(h,H);else break;H=n(g)}}function _(A){if(M=!1,w(A),!I)if(n(h)!==null)I=!0,tn(z);else{var H=n(g);H!==null&&Tt(_,H.startTime-A)}}function z(A,H){I=!1,M&&(M=!1,x(F),F=-1),P=!0;var q=b;try{for(w(H),N=n(h);N!==null&&(!(N.expirationTime>H)||A&&!fe());){var Z=N.callback;if(typeof Z=="function"){N.callback=null,b=N.priorityLevel;var G=Z(N.expirationTime<=H);H=e.unstable_now(),typeof G=="function"?N.callback=G:N===n(h)&&r(h),w(H)}else r(h);N=n(h)}if(N!==null)var we=!0;else{var Ze=n(g);Ze!==null&&Tt(_,Ze.startTime-H),we=!1}return we}finally{N=null,b=q,P=!1}}var D=!1,O=null,F=-1,te=5,$=-1;function fe(){return!(e.unstable_now()-$<te)}function _t(){if(O!==null){var A=e.unstable_now();$=A;var H=!0;try{H=O(!0,A)}finally{H?Te():(D=!1,O=null)}}else D=!1}var Te;if(typeof v=="function")Te=function(){v(_t)};else if(typeof MessageChannel<"u"){var Lt=new MessageChannel,Ms=Lt.port2;Lt.port1.onmessage=_t,Te=function(){Ms.postMessage(null)}}else Te=function(){Y(_t,0)};function tn(A){O=A,D||(D=!0,Te())}function Tt(A,H){F=Y(function(){A(e.unstable_now())},H)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(A){A.callback=null},e.unstable_continueExecution=function(){I||P||(I=!0,tn(z))},e.unstable_forceFrameRate=function(A){0>A||125<A?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):te=0<A?Math.floor(1e3/A):5},e.unstable_getCurrentPriorityLevel=function(){return b},e.unstable_getFirstCallbackNode=function(){return n(h)},e.unstable_next=function(A){switch(b){case 1:case 2:case 3:var H=3;break;default:H=b}var q=b;b=H;try{return A()}finally{b=q}},e.unstable_pauseExecution=function(){},e.unstable_requestPaint=function(){},e.unstable_runWithPriority=function(A,H){switch(A){case 1:case 2:case 3:case 4:case 5:break;default:A=3}var q=b;b=A;try{return H()}finally{b=q}},e.unstable_scheduleCallback=function(A,H,q){var Z=e.unstable_now();switch(typeof q=="object"&&q!==null?(q=q.delay,q=typeof q=="number"&&0<q?Z+q:Z):q=Z,A){case 1:var G=-1;break;case 2:G=250;break;case 5:G=1073741823;break;case 4:G=1e4;break;default:G=5e3}return G=q+G,A={id:E++,callback:H,priorityLevel:A,startTime:q,expirationTime:G,sortIndex:-1},q>Z?(A.sortIndex=q,t(g,A),n(h)===null&&A===n(g)&&(M?(x(F),F=-1):M=!0,Tt(_,q-Z))):(A.sortIndex=G,t(h,A),I||P||(I=!0,tn(z))),A},e.unstable_shouldYield=fe,e.unstable_wrapCallback=function(A){var H=b;return function(){var q=b;b=H;try{return A.apply(this,arguments)}finally{b=q}}}})(Ju);Zu.exports=Ju;var gm=Zu.exports;/**
|
||||
* @license React
|
||||
* react-dom.production.min.js
|
||||
*
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/var ym=Mr,He=gm;function L(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var ed=new Set,zr={};function wn(e,t){Qn(e,t),Qn(e+"Capture",t)}function Qn(e,t){for(zr[e]=t,e=0;e<t.length;e++)ed.add(t[e])}var bt=!(typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Da=Object.prototype.hasOwnProperty,xm=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,Ic={},Mc={};function wm(e){return Da.call(Mc,e)?!0:Da.call(Ic,e)?!1:xm.test(e)?Mc[e]=!0:(Ic[e]=!0,!1)}function jm(e,t,n,r){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return r?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function km(e,t,n,r){if(t===null||typeof t>"u"||jm(e,t,n,r))return!0;if(r)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function Le(e,t,n,r,a,o,f){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=a,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=f}var xe={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){xe[e]=new Le(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];xe[t]=new Le(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){xe[e]=new Le(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){xe[e]=new Le(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){xe[e]=new Le(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){xe[e]=new Le(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){xe[e]=new Le(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){xe[e]=new Le(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){xe[e]=new Le(e,5,!1,e.toLowerCase(),null,!1,!1)});var Ol=/[\-:]([a-z])/g;function Dl(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(Ol,Dl);xe[t]=new Le(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(Ol,Dl);xe[t]=new Le(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(Ol,Dl);xe[t]=new Le(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){xe[e]=new Le(e,1,!1,e.toLowerCase(),null,!1,!1)});xe.xlinkHref=new Le("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){xe[e]=new Le(e,1,!1,e.toLowerCase(),null,!0,!0)});function Fl(e,t,n,r){var a=xe.hasOwnProperty(t)?xe[t]:null;(a!==null?a.type!==0:r||!(2<t.length)||t[0]!=="o"&&t[0]!==
Line truncated
|
||||
`+ua+e}var da=!1;function fa(e,t){if(!e||da)return"";da=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(t)if(t=function(){throw Error()},Object.defineProperty(t.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(t,[])}catch(g){var r=g}Reflect.construct(e,[],t)}else{try{t.call()}catch(g){r=g}e.call(t.prototype)}else{try{throw Error()}catch(g){r=g}e()}}catch(g){if(g&&r&&typeof g.stack=="string"){for(var a=g.stack.split(`
|
||||
`),o=r.stack.split(`
|
||||
`),f=a.length-1,p=o.length-1;1<=f&&0<=p&&a[f]!==o[p];)p--;for(;1<=f&&0<=p;f--,p--)if(a[f]!==o[p]){if(f!==1||p!==1)do if(f--,p--,0>p||a[f]!==o[p]){var h=`
|
||||
`+a[f].replace(" at new "," at ");return e.displayName&&h.includes("<anonymous>")&&(h=h.replace("<anonymous>",e.displayName)),h}while(1<=f&&0<=p);break}}}finally{da=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?wr(e):""}function bm(e){switch(e.tag){case 5:return wr(e.type);case 16:return wr("Lazy");case 13:return wr("Suspense");case 19:return wr("SuspenseList");case 0:case 2:case 15:return e=fa(e.type,!1),e;case 11:return e=fa(e.type.render,!1),e;case 1:return e=fa(e.type,!0),e;default:return""}}function Ba(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case _n:return"Fragment";case Cn:return"Portal";case Fa:return"Profiler";case Ul:return"StrictMode";case Ua:return"Suspense";case Ha:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case nd:return(e.displayName||"Context")+".Consumer";case td:return(e._context.displayName||"Context")+".Provider";case Hl:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case Bl:return t=e.displayName||null,t!==null?t:Ba(e.type)||"Memo";case zt:t=e._payload,e=e._init;try{return Ba(e(t))}catch{}}return null}function Nm(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Ba(t);case 8:return t===Ul?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function Yt(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function id(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function Sm(e){var t=id(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var a=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return a.call(this)},set:function(f){r=""+f,o.call(this,f)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(f){r=""+f},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function xi(e){e._valueTracker||(e._valueTracker=Sm(e))}function sd(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=id(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function Wi(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function qa(e,t){var n=t.checked;return se({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function Ac(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=Yt(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function ad(e,t){t=t.checked,t!=null&&Fl(e,"checked",t,!1)}function $a(e,t){ad(e,t);var n=Yt(t.value),r=t.type;if(n!=null)r==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?Va(e,t.type,n):t.hasOwnProperty("defaultValue")&&Va(e,t.type,Yt(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function Rc(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!(r!=="submit"&&r!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function Va(e,t,n){(t!=="number"||Wi(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var jr=Array.isArray;function Fn(e,t,n,r){if(e=e.options,t){t={};for(var a=0;a<n.length;a++)t["$"+n[a]]=!0;for(n=0;n<e.length;n++)a=t.hasOwnProperty("$"+e[n].value),e[n].selected!==a&&(e[n].selected=a),a&&r&&(e[n].defaultSelected=!0)}else{for(n=""+Yt(n),t=null,a=0;a<e.length;a++){if(e[a].value===n){e[a].selected=!0,r&&(e[a].defaultSelected=!0);return}t!==null||e[a].disabled||(t=e[a])}t!==null&&(t.selected=!0)}}function Qa(e,t){if(t.dan
Line truncated
|
||||
`).replace(Ah,"")}function Ci(e,t,n){if(t=su(t),su(e)!==t&&n)throw Error(L(425))}function ts(){}var sl=null,al=null;function ll(e,t){return e==="textarea"||e==="noscript"||typeof t.children=="string"||typeof t.children=="number"||typeof t.dangerouslySetInnerHTML=="object"&&t.dangerouslySetInnerHTML!==null&&t.dangerouslySetInnerHTML.__html!=null}var ol=typeof setTimeout=="function"?setTimeout:void 0,Rh=typeof clearTimeout=="function"?clearTimeout:void 0,au=typeof Promise=="function"?Promise:void 0,Oh=typeof queueMicrotask=="function"?queueMicrotask:typeof au<"u"?function(e){return au.resolve(null).then(e).catch(Dh)}:ol;function Dh(e){setTimeout(function(){throw e})}function Sa(e,t){var n=t,r=0;do{var a=n.nextSibling;if(e.removeChild(n),a&&a.nodeType===8)if(n=a.data,n==="/$"){if(r===0){e.removeChild(a),Fr(t);return}r--}else n!=="$"&&n!=="$?"&&n!=="$!"||r++;n=a}while(n);Fr(t)}function $t(e){for(;e!=null;e=e.nextSibling){var t=e.nodeType;if(t===1||t===3)break;if(t===8){if(t=e.data,t==="$"||t==="$!"||t==="$?")break;if(t==="/$")return null}}return e}function lu(e){e=e.previousSibling;for(var t=0;e;){if(e.nodeType===8){var n=e.data;if(n==="$"||n==="$!"||n==="$?"){if(t===0)return e;t--}else n==="/$"&&t++}e=e.previousSibling}return null}var tr=Math.random().toString(36).slice(2),ut="__reactFiber$"+tr,$r="__reactProps$"+tr,Nt="__reactContainer$"+tr,cl="__reactEvents$"+tr,Fh="__reactListeners$"+tr,Uh="__reactHandles$"+tr;function cn(e){var t=e[ut];if(t)return t;for(var n=e.parentNode;n;){if(t=n[Nt]||n[ut]){if(n=t.alternate,t.child!==null||n!==null&&n.child!==null)for(e=lu(e);e!==null;){if(n=e[ut])return n;e=lu(e)}return t}e=n,n=e.parentNode}return null}function ei(e){return e=e[ut]||e[Nt],!e||e.tag!==5&&e.tag!==6&&e.tag!==13&&e.tag!==3?null:e}function In(e){if(e.tag===5||e.tag===6)return e.stateNode;throw Error(L(33))}function ks(e){return e[$r]||null}var ul=[],Mn=-1;function Jt(e){return{current:e}}function ee(e){0>Mn||(e.current=ul[Mn],ul[Mn]=null,Mn--)}function X(e,t){Mn++,ul[Mn]=e.current,e.current=t}var Xt={},Se=Jt(Xt),Ae=Jt(!1),mn=Xt;function Wn(e,t){var n=e.type.contextTypes;if(!n)return Xt;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var a={},o;for(o in n)a[o]=t[o];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=a),a}function Re(e){return e=e.childContextTypes,e!=null}function ns(){ee(Ae),ee(Se)}function ou(e,t,n){if(Se.current!==Xt)throw Error(L(168));X(Se,t),X(Ae,n)}function Gd(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var a in r)if(!(a in t))throw Error(L(108,Nm(e)||"Unknown",a));return se({},n,r)}function rs(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Xt,mn=Se.current,X(Se,e),X(Ae,Ae.current),!0}function cu(e,t,n){var r=e.stateNode;if(!r)throw Error(L(169));n?(e=Gd(e,t,mn),r.__reactInternalMemoizedMergedChildContext=e,ee(Ae),ee(Se),X(Se,e)):ee(Ae),X(Ae,n)}var xt=null,bs=!1,Ea=!1;function Kd(e){xt===null?xt=[e]:xt.push(e)}function Hh(e){bs=!0,Kd(e)}function en(){if(!Ea&&xt!==null){Ea=!0;var e=0,t=K;try{var n=xt;for(K=1;e<n.length;e++){var r=n[e];do r=r(!0);while(r!==null)}xt=null,bs=!1}catch(a){throw xt!==null&&(xt=xt.slice(e+1)),wd($l,en),a}finally{K=t,Ea=!1}}return null}var zn=[],An=0,is=null,ss=0,Qe=[],We=0,hn=null,wt=1,jt="";function ln(e,t){zn[An++]=ss,zn[An++]=is,is=e,ss=t}function Yd(e,t,n){Qe[We++]=wt,Qe[We++]=jt,Qe[We++]=hn,hn=e;var r=wt;e=jt;var a=32-rt(r)-1;r&=~(1<<a),n+=1;var o=32-rt(t)+a;if(30<o){var f=a-a%5;o=(r&(1<<f)-1).toString(32),r>>=f,a-=f,wt=1<<32-rt(t)+a|n<<a|r,jt=o+e}else wt=1<<o|n<<a|r,jt=e}function Jl(e){e.return!==null&&(ln(e,1),Yd(e,1,0))}function eo(e){for(;e===is;)is=zn[--An],zn[An]=null,ss=zn[--An],zn[An]=null;for(;e===hn;)hn=Qe[--We],Qe[We]=null,jt=Qe[--We],Qe[We]=null,wt=Qe[--We],Qe[We]=null}var Ue=null,Fe=null,ne=!1,nt=null;function Xd(e,t){var n=Ge(5,null,null,0);n.elementType="DELETED",n.stateNode=t,n.return=e,t=e.deletions,t===null?(e.deletions=[n],e.flags|=16):t.push(n)}function uu(e,t){switch(e.tag){case 5:var n=e.type;return t=t.nodeType!==1||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t,t!==null?(e.stateNode=t,Ue=e,Fe=$t(t.firstChild),!0):!1;case 6:return t=e.pendingProps===""||t.nodeType!==3?null:t,t!==null?(e.stateNode=t,Ue=e,Fe=null,!0):!1;case 13:return t=t.nodeType!==8?null:t,t!==null?(n=hn!==null?{id:wt,overflow:jt}:null,e.memoizedState={dehydrated:t,treeContext:n,retryLane:1073741824},n=Ge(18,null,null,0),n.stateNode=t,n.return=e,e.child=n,Ue=e,Fe=null,!0):!1;default:return!1}}function dl(e){return(e.mode&1)!==0&&(e.flags&128)===0}function fl(e){if(ne){var t=Fe;if(t){var n=t;if(!uu(e,t)){if(dl(e))throw Error(L(418));t=$t(n.nextSibling);var r=Ue;t&&uu(e,t)?Xd(r,n):(e.flags=e.flags&-4097|2,ne=!1,Ue=e)}}else{if(dl(e))throw Error(L(418));e.flags=e.flags&-4097|2,ne=!1,Ue=e}}}function du(e){for(e=e.return;e!
Line truncated
|
||||
Error generating stack: `+o.message+`
|
||||
`+o.stack}return{value:e,source:t,stack:a,digest:null}}function Pa(e,t,n){return{value:e,source:null,stack:n??null,digest:t??null}}function vl(e,t){try{console.error(t.value)}catch(n){setTimeout(function(){throw n})}}var Yh=typeof WeakMap=="function"?WeakMap:Map;function Sf(e,t,n){n=kt(-1,n),n.tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){ps||(ps=!0,El=r),vl(e,t)},n}function Ef(e,t,n){n=kt(-1,n),n.tag=3;var r=e.type.getDerivedStateFromError;if(typeof r=="function"){var a=t.value;n.payload=function(){return r(a)},n.callback=function(){vl(e,t)}}var o=e.stateNode;return o!==null&&typeof o.componentDidCatch=="function"&&(n.callback=function(){vl(e,t),typeof r!="function"&&(Qt===null?Qt=new Set([this]):Qt.add(this));var f=t.stack;this.componentDidCatch(t.value,{componentStack:f!==null?f:""})}),n}function xu(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new Yh;var a=new Set;r.set(t,a)}else a=r.get(t),a===void 0&&(a=new Set,r.set(t,a));a.has(n)||(a.add(n),e=uv.bind(null,e,t,n),t.then(e,e))}function wu(e){do{var t;if((t=e.tag===13)&&(t=e.memoizedState,t=t!==null?t.dehydrated!==null:!0),t)return e;e=e.return}while(e!==null);return null}function ju(e,t,n,r,a){return e.mode&1?(e.flags|=65536,e.lanes=a,e):(e===t?e.flags|=65536:(e.flags|=128,n.flags|=131072,n.flags&=-52805,n.tag===1&&(n.alternate===null?n.tag=17:(t=kt(-1,1),t.tag=2,Vt(n,t,1))),n.lanes|=1),e)}var Xh=Ct.ReactCurrentOwner,ze=!1;function Ee(e,t,n,r){t.child=e===null?ef(t,null,n,r):Kn(t,e.child,n,r)}function ku(e,t,n,r,a){n=n.render;var o=t.ref;return qn(t,a),r=fo(e,t,n,r,o,a),n=po(),e!==null&&!ze?(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~a,Et(e,t,a)):(ne&&n&&Jl(t),t.flags|=1,Ee(e,t,r,a),t.child)}function bu(e,t,n,r,a){if(e===null){var o=n.type;return typeof o=="function"&&!bo(o)&&o.defaultProps===void 0&&n.compare===null&&n.defaultProps===void 0?(t.tag=15,t.type=o,Cf(e,t,o,r,a)):(e=Vi(n.type,null,r,t,t.mode,a),e.ref=t.ref,e.return=t,t.child=e)}if(o=e.child,!(e.lanes&a)){var f=o.memoizedProps;if(n=n.compare,n=n!==null?n:Hr,n(f,r)&&e.ref===t.ref)return Et(e,t,a)}return t.flags|=1,e=Gt(o,r),e.ref=t.ref,e.return=t,t.child=e}function Cf(e,t,n,r,a){if(e!==null){var o=e.memoizedProps;if(Hr(o,r)&&e.ref===t.ref)if(ze=!1,t.pendingProps=r=o,(e.lanes&a)!==0)e.flags&131072&&(ze=!0);else return t.lanes=e.lanes,Et(e,t,a)}return gl(e,t,n,r,a)}function _f(e,t,n){var r=t.pendingProps,a=r.children,o=e!==null?e.memoizedState:null;if(r.mode==="hidden")if(!(t.mode&1))t.memoizedState={baseLanes:0,cachePool:null,transitions:null},X(Dn,De),De|=n;else{if(!(n&1073741824))return e=o!==null?o.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e,cachePool:null,transitions:null},t.updateQueue=null,X(Dn,De),De|=e,null;t.memoizedState={baseLanes:0,cachePool:null,transitions:null},r=o!==null?o.baseLanes:n,X(Dn,De),De|=r}else o!==null?(r=o.baseLanes|n,t.memoizedState=null):r=n,X(Dn,De),De|=r;return Ee(e,t,a,n),t.child}function Lf(e,t){var n=t.ref;(e===null&&n!==null||e!==null&&e.ref!==n)&&(t.flags|=512,t.flags|=2097152)}function gl(e,t,n,r,a){var o=Re(n)?mn:Se.current;return o=Wn(t,o),qn(t,a),n=fo(e,t,n,r,o,a),r=po(),e!==null&&!ze?(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~a,Et(e,t,a)):(ne&&r&&Jl(t),t.flags|=1,Ee(e,t,n,a),t.child)}function Nu(e,t,n,r,a){if(Re(n)){var o=!0;rs(t)}else o=!1;if(qn(t,a),t.stateNode===null)Bi(e,t),Nf(t,n,r),hl(t,n,r,a),r=!0;else if(e===null){var f=t.stateNode,p=t.memoizedProps;f.props=p;var h=f.context,g=n.contextType;typeof g=="object"&&g!==null?g=Ye(g):(g=Re(n)?mn:Se.current,g=Wn(t,g));var E=n.getDerivedStateFromProps,N=typeof E=="function"||typeof f.getSnapshotBeforeUpdate=="function";N||typeof f.UNSAFE_componentWillReceiveProps!="function"&&typeof f.componentWillReceiveProps!="function"||(p!==r||h!==g)&&yu(t,f,r,g),At=!1;var b=t.memoizedState;f.state=b,os(t,r,f,a),h=t.memoizedState,p!==r||b!==h||Ae.current||At?(typeof E=="function"&&(ml(t,n,E,r),h=t.memoizedState),(p=At||gu(t,n,p,r,b,h,g))?(N||typeof f.UNSAFE_componentWillMount!="function"&&typeof f.componentWillMount!="function"||(typeof f.componentWillMount=="function"&&f.componentWillMount(),typeof f.UNSAFE_componentWillMount=="function"&&f.UNSAFE_componentWillMount()),typeof f.componentDidMount=="function"&&(t.flags|=4194308)):(typeof f.componentDidMount=="function"&&(t.flags|=4194308),t.memoizedProps=r,t.memoizedState=h),f.props=r,f.state=h,f.context=g,r=p):(typeof f.componentDidMount=="function"&&(t.flags|=4194308),r=!1)}else{f=t.stateNode,nf(e,t),p=t.memoizedProps,g=t.type===t.elementType?p:et(t.type,p),f.props=g,N=t.pendingProps,b=f.context,h=n.contextType,typeof h=="object"&&h!==null?h=Ye(h):(h=Re(n)?mn:Se.current,h=Wn(t,h));var P=n.getDerivedStateFromProps;(E=typeof P=="function"||typeof f.getSnapshotBeforeUpdate=="function")||typeof f.UNSAFE_componentWillReceiveProps!="function"&&typeof f.componentWillReceiveProps!="function"||(p!==N||b!==h)&&yu(t,f,r,h),At=!1,b=t.memoizedState,f.state=b,os(t,r,f,a);var I=t.memoizedState
Line truncated
|
||||
`),u=[];return l.forEach(function(d,m){var y=d.match(/\[(\d{1,3}):(\d{1,2}[.:]?\d*)]/);if(y){var C=parseInt(y[1],10),S=parseFloat(y[2].replace(":","."))||0,T=C*60+S,B=d.replace(/\[\d{1,3}:\d{1,2}[.:]?\d*]/g,"").trim();B=B.replace(/\s\s+/g," "),B&&u.push({time:T,text:B,index:m})}}),u.sort(function(d,m){return d.time-m.time}),u}function lp(s,l){var u=Po(l);if(!u.length)return s;var d={};return s.map(function(m){for(var y=null,C=1/0,S=-1,T=0;T<u.length;T++)if(!d[T]){var B=Math.abs(u[T].time-m.time);if(B>.5){if(u[T].time>m.time+.5)break;continue}if(B<C-1e-9&&(C=B,y=u[T],S=T),B===0)break}if(y&&y.text){d[S]=!0;var Pe={time:m.time,end:m.end,words:m.words,trans:y.text,index:m.index,orig:m.text};return c.settings.lyric2line?Pe.text=m.text+`
|
||||
`+y.text:Pe.text=m.text+" (翻译:"+y.text+")",Pe}return m})}function op(s){var l=[];return String(s||"").split(`
|
||||
`).forEach(function(u){var d=u.match(/^\[(\d+),(\d+)\]/);if(d){var m=parseInt(d[1],10)/1e3,y=parseInt(d[2],10)/1e3;if(!(y<=0)){for(var C=u.slice(d[0].length),S=[],T=/\((\d+),(\d+)(?:,\d+)?\)/g,B;(B=T.exec(C))!==null;)S.push({s:parseInt(B[1],10)/1e3,d:parseInt(B[2],10)/1e3,start:B.index,end:B.index+B[0].length});for(var Pe=[],$e="",Ve=0;Ve<S.length;Ve++){var It=Ve+1<S.length?S[Ve+1].start:C.length,vt=C.slice(S[Ve].end,It);vt&&(Pe.push({c:vt,s:S[Ve].s,d:S[Ve].d}),$e+=vt)}$e=$e.replace(/\s\s+/g," ").trim(),!(!Pe.length||!$e)&&l.push({time:m,end:m+y,text:$e,words:Pe,index:l.length})}}}),l.sort(function(u,d){return u.time-d.time}),l.forEach(function(u,d){u.index=d}),l}function Io(){var s=Po(c.rawLyric||""),l=op(c.rawYrc||"");if(l.length&&l.length>=Math.max(1,Math.ceil(s.length*.5))){var u=l.slice();s.forEach(function(d){var m=l.some(function(y){return Math.abs(y.time-d.time)<=1});m||u.push(d)}),u.sort(function(d,m){return d.time-m.time}),u.forEach(function(d,m){d.index=m}),s=u}return c.rawTlyric&&(s=lp(s,c.rawTlyric)),s}function cp(s,l,u){c.rawLyric=s||"",c.rawTlyric=l||"",c.rawYrc=u||"",c.lyrics=Io(),Fs();var d=e("#lyric-panel");d.hidden=!1,c.lyrics.length||(e("#lyric-box").innerHTML='<div class="lyric-empty">暂无歌词</div>')}function Fs(){var s=e("#lyric-box");if(!c.lyrics.length){s.innerHTML='<div class="lyric-empty">暂无歌词</div>';return}var l=c.settings.lyric2line;s.innerHTML=c.lyrics.map(function(u,d){var m=u.text||"♪",y=c.settings.ktv?"lyric-line ktv":"lyric-line",C;if(c.settings.ktv&&u.words&&u.words.length)y+=" kw-line",C=u.words.map(function(B){return'<span class="kw">'+j(B.c)+"</span>"}).join(""),l&&u.trans?C+='<br><span class="ktr">'+j(u.trans)+"</span>":u.trans&&(C+='<span class="ktr"> (翻译:'+j(u.trans)+")</span>");else if(u.trans){var S=u.orig||m,T=l?S.split(`
|
||||
`)[0]:S.replace(/ \(翻译:.*\)$/,"");C=j(T),l?C+='<br><span class="ktr">'+j(u.trans)+"</span>":C+='<span class="ktr"> (翻译:'+j(u.trans)+")</span>"}else C=l?j(m).replace(/\n/g,"<br>"):j(m);return'<div class="'+y+'" data-i="'+d+'">'+C+"</div>"}).join(""),s.scrollTop=0,c.lastActiveLine=-1,c.ktvFillIdx=-1,c.ktvWordEls=null,c.ktvLineEls=Array.prototype.slice.call(s.children)}e("#lyric-box").addEventListener("click",function(s){var l=s.target.closest(".lyric-line");if(l){var u=parseInt(l.getAttribute("data-i"),10),d=e("#player audio");d&&d.src&&c.lyrics[u]&&(d.currentTime=Math.max(0,c.lyrics[u].time-c.lyricOffset),d.paused&&d.play().catch(function(){}))}});function Mo(s){c.lyricOffset=Math.max(-30,Math.min(30,Math.round((c.lyricOffset+s)*100)/100)),e("#lyric-offset-label").textContent="偏移 "+(c.lyricOffset>0?"+":"")+c.lyricOffset.toFixed(2)+"s",k("歌词偏移:"+(c.lyricOffset>0?"+":"")+c.lyricOffset.toFixed(2)+" 秒","info");var l=e("#player audio");l&&!l.paused&&Uo(l.currentTime)}e("#lyric-delay").addEventListener("click",function(){Mo(.25)}),e("#lyric-advance").addEventListener("click",function(){Mo(-.25)});var zo=.7,Ao=1.6,up=.05;function Ro(s){return typeof s!="number"||!isFinite(s)?1:Math.max(zo,Math.min(Ao,Math.round(s*20)/20))}function nr(){c.settings.lyricFont=Ro(c.settings.lyricFont),e("#lyric-box").style.setProperty("--lyric-fs",String(c.settings.lyricFont)),e("#lyric-fs-val").textContent=Math.round(c.settings.lyricFont*100)+"%",e("#lyric-fs-dec").disabled=c.settings.lyricFont<=zo,e("#lyric-fs-inc").disabled=c.settings.lyricFont>=Ao}function Us(){return!e("#lyric-fs-pop").hidden}function rr(s){e("#lyric-fs-pop").hidden=!s,e("#lyric-fontsize").setAttribute("aria-expanded",s?"true":"false"),document.documentElement.classList.toggle("fs-pop-open",s),s&&nr()}function Oo(s){c.settings.lyricFont=Ro(c.settings.lyricFont+s*up),nr(),f()}e("#lyric-fontsize").addEventListener("click",function(){rr(!Us())}),e("#lyric-fs-inc").addEventListener("click",function(){Oo(1)}),e("#lyric-fs-dec").addEventListener("click",function(){Oo(-1)}),e("#lyric-fs-reset").addEventListener("click",function(){c.settings.lyricFont=1,nr(),f(),k("歌词字号已恢复默认","info")}),document.addEventListener("click",function(s){Us()&&(s.target.closest("#lyric-fs-pop")||s.target.closest("#lyric-fontsize")||rr(!1))},!0),document.addEventListener("keydown",function(s){if(s.key==="Escape"&&Us()){if(document.querySelector(".drawer.show, .modal-mask.show"))return;rr(!1),e("#lyric-fontsize").focus()}},!0);function Do(s){for(var l=-1,u=0;u<c.lyrics.length&&c.lyrics[u].time<=s+.2;u++)l=u;return l}function dp(s,l,u){var d=c.lyrics[l];if(!(!s||!d)&&d.words&&d.words.length){c.ktvFillIdx!==l&&(c.ktvFillIdx=l,c.ktvWordEls=s.querySelectorAll(".kw"));for(var m=c.ktvWordEls,y=0;y<d.words.length;y++){var C=d.words[y],S=m[y];if(!S)break;u>=C.s+C.d?S.classList.contains("on")||(S.classList.add("on"),S.classList.remove("cur")):u>=C.s?(S.classList.contains("cur")||(S.classList.add("cur"),S.classList.remove("on")),S.style.setProperty("--pw",Math.min(100,(u-C.s)/C.d*100)+"%")):(S.classList.contains("on")||S.classList.contains("cur"))&&(S.classList.remove("on"),S.classList.remove("cur"))}}}function Fo(s,l){for(var u=c.ktvLineEls&&c.ktvLineEls.length?c.ktvLineEls:Array.prototype.slice.call(e("#lyric-box").children),d=0;d<u.length;d++)u[d].classList.toggle("active",d===s);if(s>=0&&c.settings.ktv&&dp(u[s],s,l),s>=0&&s!==c.lastActiveLine){c.lastActiveLine=s;var m=e("#lyric-box"),y=u[s];if(y){var C=y.offsetTop-m.clientHeight/2+y.clientHeight/2;m.scrollTo({top:Math.max(0,C),behavior:"smooth"})}}}function Uo(s){var l=s+c.lyricOffset;Fo(Do(l),l)}function Ho(){if(c.ktvRunning){var s=e("#player audio");if(!s||s.paused){c.ktvRunning=!1;return}var l=s.currentTime+c.lyricOffset;Fo(Do(l),l),requestAnimationFrame(Ho)}}function Bo(){!c.ktvRunning&&c.settings.ktv&&(c.ktvRunning=!0,requestAnimationFrame(Ho))}function ir(s,l,u){u&&(l=1,c.commentPage=1,c.commentTotal=0);var d=(l-1)*10;c._commentsLoading=!0,c._commentGen=(c._commentGen||0)+1;var m=c._commentGen;U("/comments",{id:s,limit:10,offset:d}).then(function(y){if(m===c._commentGen){if(y.status!==200)throw new Error(y.message||"获取评论失败");if(!(c.currentSong&&String(c.currentSong.id)!==String(s))){var C=y.data;if(c.commentTotal=C.total||0,e("#comment-count").textContent=c.commentTotal?"("+je(c.commentTotal)+")":"",l===1){var S=C.hotComments||[];e("#comment-hot-title").hidden=!S.length,e("#comment-hot-list").innerHTML=S.length?S.map(qo).join(""):'<div class="comment-empty">暂无热门评论</div>'}var T=C.comments||[];e("#comment-all-list").innerHTML=T.length?T.map(qo).join(""):'<div class="comment-empty">暂无评论</div>',c.commentPage=l,fp()}}}).catch(function(y){m===c._commentGen&&k(y.message||"获取评论失败","error")}).then(function(){m===c._commentGen&&(c._commentsLoading=!1)},function(){m===c._commentGen&&(c._commentsLoading=!1)})}function fp(){var s=Math.max(1,Math.ceil(c.commentTotal/10)),
Line truncated
|
||||
`+u(d.time)+" --> "+u(y)+`
|
||||
`+d.text+`
|
||||
`}).join(`
|
||||
`)}return s.map(function(u){var d=Math.floor(u.time/60),m=u.time-d*60,y=Math.round((m-Math.floor(m))*1e3);return"["+String(d).padStart(2,"0")+":"+String(Math.floor(m)).padStart(2,"0")+"."+String(Math.min(y,999)).padStart(3,"0")+"]"+u.text.replace(/\n/g," / ")}).join(`
|
||||
`)}e("#detail-lyric-download").addEventListener("click",function(){if(!c.currentSong||!c.lyrics.length){k("暂无歌词可下载","warning");return}var s=c.settings.lyricFormat==="srt"?"srt":"lrc",l=hp(c.lyrics,s),u=new Blob([l],{type:"text/plain;charset=utf-8"}),d=URL.createObjectURL(u),m=document.createElement("a");m.href=d,m.download=(c.currentSong.name||"lyric")+"."+s,document.body.appendChild(m),m.click(),document.body.removeChild(m),setTimeout(function(){URL.revokeObjectURL(d)},3e3),k("歌词已下载("+s.toUpperCase()+")","success")});function Wo(s){var l=document.createElement("textarea");l.value=s,document.body.appendChild(l),l.select();try{var u=document.execCommand("copy");u?k("已复制到剪贴板","success"):k("复制失败,请手动复制","error")}catch{k("复制失败,请手动复制","error")}document.body.removeChild(l)}function sr(s){return c.collGen=c.collGen||{},c.collGen[s]=(c.collGen[s]||0)+1,c.collGen[s]}function lt(s,l){return c.collGen[s]!==l}function si(){if(pt()){var s=e("#playlist-input").value.trim(),l=Ze(s);if(!l){k("请输入歌单ID或链接","warning"),e("#playlist-input").focus();return}var u=e("#playlist-btn"),d=sr("playlist");V(u,!0,"解析中..."),U("/playlist",{id:l}).then(function(m){if(!lt("playlist",d)){if(m.status!==200)throw new Error(m.data&&m.data.msg||m.message||"歌单解析失败");Go("playlist",m.data.playlist)}}).catch(function(m){lt("playlist",d)||k(m.message||"歌单解析失败","error")}).then(function(){V(u,!1)},function(){V(u,!1)})}}function vp(s,l){e("#playlist-input").value=s,we("playlist"),e("#playlist-input").focus(),l&&k("正在解析歌单:"+l,"info"),si()}function qs(){if(pt()){var s=e("#album-input").value.trim(),l=Ze(s);if(!l){k("请输入专辑ID或链接","warning"),e("#album-input").focus();return}var u=e("#album-btn"),d=sr("album");V(u,!0,"解析中..."),U("/album",{id:l}).then(function(m){if(!lt("album",d)){if(m.status!==200)throw new Error(m.data&&m.data.msg||m.message||"专辑解析失败");Go("album",m.data.album)}}).catch(function(m){lt("album",d)||k(m.message||"专辑解析失败","error")}).then(function(){V(u,!1)},function(){V(u,!1)})}}function gp(s,l){e("#album-input").value=s,we("album"),e("#album-input").focus(),l&&k("正在解析专辑:"+l,"info"),qs()}function yp(s,l){return'<div class="song-row"><span class="song-meta" style="width:32px;text-align:right;">'+l+'</span><img class="song-cover" src="'+j(s.picUrl||"")+'" loading="lazy" alt="" /><div class="song-info"><div class="song-name"><span class="n">'+j(s.name)+'</span><span class="tag">'+j(s.album||"")+'</span></div><div class="song-meta">'+j(s.artists||"")+'</div></div><div class="song-actions"><button class="btn btn-sm btn-link act-parse" data-id="'+j(s.id)+'" data-name="'+j(s.name)+'" type="button">解析</button><button class="btn btn-sm act-download" data-id="'+j(s.id)+'" data-name="'+j(s.name)+'" type="button">下载</button></div></div>'}var ai=10;function Nn(s,l,u){l=l||[];var d=l.length,m=Math.max(1,Math.ceil(d/ai));u=Math.max(1,Math.min(u||1,m));var y=(u-1)*ai,C=l.slice(y,y+ai),S=e("#"+s+"-tracks");C.length?S.innerHTML=C.map(function(Pe,$e){return yp(Pe,y+$e+1)}).join(""):S.innerHTML='<div class="empty-state"><div class="empty-icon">📄</div>暂无歌曲(可能为受版权保护的歌曲)</div>';var T=e("#"+s+"-pager");T&&(T.hidden=d<=ai,e("#"+s+"-page-info").textContent="第 "+u+" / "+m+" 页",e("#"+s+"-prev").disabled=u<=1,e("#"+s+"-next").disabled=u>=m);var B=e("#"+s+"-download-all");return B&&d&&(B.textContent="⬇ 批量下载全部(共 "+d+" 首)"),c["page_"+s]=u,c["tracks_"+s]=l,u}["playlist","album","artist","personal","global"].forEach(function(s){e("#"+s+"-prev").addEventListener("click",function(){Nn(s,c["tracks_"+s],c["page_"+s]-1)}),e("#"+s+"-next").addEventListener("click",function(){Nn(s,c["tracks_"+s],c["page_"+s]+1)})});function Go(s,l){if(!l){k("解析结果为空","error");return}var u=s;["playlist","album","artist"].forEach(function(C){e("#"+C+"-result").hidden=!0});var d=e("#"+u+"-result");d.hidden=!1;var m=l.tracks||l.songs||[],y=u==="playlist";l.incomplete&&l.missing&&k("注意:该歌单不完整,缺少 "+l.missing+" 首(可能版权受限或接口失败)","warning"),c.currentCollection={type:u,id:l.id,name:l.name},e("#"+u+"-cover").src=l.coverImgUrl||"",e("#"+u+"-name").textContent=l.name||"未知",y?(e("#playlist-creator").textContent="by "+(l.creator||"未知"),e("#playlist-count").textContent=l.trackCount!=null?l.trackCount:m.length,e("#playlist-desc").hidden=!(l.description&&l.description.trim()),e("#playlist-desc").hidden||(e("#playlist-desc").textContent=l.description)):(e("#album-artist").textContent=l.artist?"歌手:"+l.artist:"",e("#album-count").textContent=m.length,e("#album-desc").hidden=!(l.description&&l.description.trim()),e("#album-desc").hidden||(e("#album-desc").textContent=l.description)),Nn(u,m,1),hi(),window.scrollTo({top:d.offsetTop-80,behavior:"smooth"})}e("#playlist-btn").addEventLis
Line truncated
|
||||
确定后将仅打包前 `+l+" 集,是否继续?"))return;u=l}}if(window.confirm("将下载「"+s+"」的单集(最多 "+u+" 集)并打包为 ZIP,大电台耗时较长,确认开始?")){var d=or();U("/podcast/download/batch_zip",{radio_id:c.podcast.radioId,limit:u,quality:e("#podcast-quality").value,task_id:d,device_id:ht()}).then(function(m){if(m.status!==200)throw new Error(m.message||"提交失败");cr({id:d,type:"batch",label:"播客打包 · "+s,total:0,done:0,status:"queued"}),k("打包任务已提交,可在进度悬浮窗查看","success")}).catch(function(m){k(m.message||"打包提交失败","error")})}}}),e("#podcast-episodes").addEventListener("click",function(s){var l=s.target.closest("button[data-act]");if(l){var u=l.getAttribute("data-act"),d=l.getAttribute("data-id"),m=l.getAttribute("data-name");u==="detail"?Zo(d,m,!0,l):u==="direct"?Ep(d,m,l):u==="download"&&Jo(d,m)}});function Xo(s,l){c.podcast.program=s,e("#podcast-program-cover").src=s.cover_url||"",e("#podcast-program-name").textContent=s.name||"",e("#podcast-program-radio").textContent=s.radio_name||"-",e("#podcast-program-dj").textContent=s.dj_name||"-";var u=[];s.duration_text&&u.push("时长 "+s.duration_text),s.create_date&&u.push("发布 "+s.create_date),s.serial_num&&u.push("第 "+s.serial_num+" 集"),e("#podcast-program-meta").textContent=u.join(" · ")||"-";var d=s.audio,m=e("#podcast-program-badges"),y=e("#podcast-program-open"),C=d&&d.url;m.innerHTML=C?'<span class="badge">'+j(d.level_name||d.level||"标准")+'</span><span class="badge badge-green">'+j((d.type||"mp3").toUpperCase())+" · "+j(d.size_formatted||"")+"</span>"+(d.br?'<span class="badge">'+Math.round(d.br/1e3)+" kbps</span>":""):'<span class="badge" style="border-color:var(--color-warning);color:var(--color-warning);">未获取到音频直链</span>';var S=e("#podcast-audio");if(C){try{var T=e("#player audio");T&&!T.paused&&T.pause()}catch{}S.src=d.url,S.hidden=!1;try{typeof pe.volume=="number"&&(S.volume=pe.volume,S.muted=!!pe.muted)}catch{}y.href=d.url,y.hidden=!1,S.onerror=function(){k("试听链接已过期或失效,请重新点击「试听」刷新","warning")},S.play().catch(function(){})}else S.removeAttribute("src"),S.hidden=!0,y.hidden=!0;e("#podcast-program-tip").hidden=!!C,e("#podcast-program-tip").textContent="该单集暂无可用音频(可能已下架或受版权限制)",e("#podcast-program-result").hidden=!1,e("#podcast-radio-result").hidden=!0}function Zo(s,l,u,d){var m=function(){d&&V(d,!1)};d&&V(d,!0,"..."),ui(!0),U("/podcast/parse",{id:s,quality:e("#podcast-quality").value}).then(function(y){if(y.status!==200)throw new Error(y.message||"解析失败");Xo((y.data||{}).program)}).catch(function(y){k(y.message||"解析失败","error")}).finally(function(){ui(!1),m()})}function Ep(s,l,u){var d=function(){u&&V(u,!1)};u&&V(u,!0,"..."),U("/podcast/parse",{id:s,quality:e("#podcast-quality").value}).then(function(m){if(m.status!==200)throw new Error(m.message||"解析失败");var y=((m.data||{}).program||{}).audio;if(!y||!y.url)throw new Error("未获取到音频直链");try{navigator.clipboard.writeText(y.url).then(function(){k("直链已复制:"+l,"success")}).catch(function(){Wo(y.url)})}catch{Wo(y.url)}}).catch(function(m){k(m.message||"获取直链失败","error")}).finally(d)}function Jo(s,l){if(pt()&&Te()){var u=or();U("/podcast/download",{id:s,quality:e("#podcast-quality").value,task_id:u,device_id:ht()}).then(function(d){if(d.status!==200)throw new Error(d.message||"提交失败");cr({id:u,type:"single",label:"播客 · "+(l||s),total:1,done:0,status:"queued"}),k("下载任务已提交:"+l,"success")}).catch(function(d){k(d.message||"下载提交失败","error")})}}e("#podcast-program-download").addEventListener("click",function(){var s=c.podcast.program;s&&Jo(s.id,s.name)});function ec(){if(pt()){var s=e("#podcast-search-input").value.trim();if(!s){k("请输入搜索关键词","warning");return}var l=e("#podcast-search-btn");V(l,!0,"搜索中..."),U("/podcast/search",{keyword:s,limit:20,type:"all"}).then(function(u){if(u.status!==200)throw new Error(u.message||"搜索失败");var d=u.data||{},m=d.radios||[],y=d.voices||[],C=m.map(function(T){var B=[];return T.dj_name&&B.push("主播 "+T.dj_name),T.program_count&&B.push(T.program_count+" 集"),T.sub_count_text&&T.sub_count_text!=="0"&&B.push("订阅 "+T.sub_count_text),'<div class="song-row"><img class="song-cover" src="'+j(T.pic_url||"")+'" loading="lazy" alt="" /><div class="song-info"><div class="song-name"><span class="n">'+j(T.name)+'</span></div><div class="song-meta">'+j(B.join(" · "))+'</div></div><div class="song-actions"><button class="btn btn-primary btn-sm" data-search-radio="'+j(T.id)+'" data-radio-name="'+j(T.name)+'">解析电台</button></div></div>'}).join("");C+=y.map(function(T){var B=[];return T.radio_name&&B.push("来自「"+T.radio_name+"」"),T.duration_text&&B.push(T.duration_text),T.create_date&&B.push(T.create_date),'<div class="song-row"><img
Line truncated
|
||||
删除后将需要重新扫码登录。`)&&(V(e("#admin-cookie-delete"),!0,"删除中..."),U("/admin/cookie/delete",{}).then(function(s){if(s.status!==200)throw new Error(s.message||"删除失败");Pt(),c.adminQrGen=(c.adminQrGen||0)+1,e("#admin-qr-area").hidden=!0,c.adminUnikey="",k("Cookie 已删除,可重新扫码登录","success"),fi(),G()}).catch(function(s){k(s.message||"删除 Cookie 失败","error")}).finally(function(){V(e("#admin-cookie-delete"),!1)}))}e("#admin-enter").addEventListener("click",tc),e("#admin-password").addEventListener("keydown",function(s){s.key==="Enter"&&tc()}),e("#admin-qr-btn").addEventListener("click",_p),e("#admin-cookie-delete").addEventListener("click",Tp),e("#admin-status-refresh").addEventListener("click",fi);var pi=1;function mi(){c.adminAuthed&&U("/admin/logs",{page:pi,page_size:10}).then(function(s){if(s.status!==200)throw new Error(s.message||"获取记录失败");var l=s.data,u=e("#admin-logs-list");!l.items||!l.items.length?u.innerHTML='<div class="comment-empty">暂无解析/下载记录</div>':u.innerHTML=l.items.map(function(m){var y=m.action==="下载"?' style="border-color:var(--color-success);color:var(--color-success);background:rgba(82,196,26,0.1);"':' style="border-color:var(--color-primary);color:var(--color-primary);background:var(--color-primary-bg);"';return'<div class="stat-list-item"><span class="badge" '+y+">"+j(m.action||"-")+'</span><span style="font-family:monospace;color:var(--color-text-secondary);flex:none;">'+j(m.ip||"-")+'</span><span style="flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;">'+j(m.song||"")+'</span><span style="flex:none;color:var(--color-text-tertiary);font-size:12px;">'+j(m.time||"")+"</span></div>"}).join("");var d=Math.max(1,l.pages||1);e("#admin-logs-info").textContent="第 "+l.page+" / "+d+" 页",e("#admin-logs-prev").disabled=l.page<=1,e("#admin-logs-next").disabled=l.page>=d,e("#admin-logs-pager").hidden=l.total<=10}).catch(function(s){k(s.message||"获取记录失败","error")})}e("#admin-logs-refresh").addEventListener("click",mi),e("#admin-logs-prev").addEventListener("click",function(){pi>1&&(pi--,mi())}),e("#admin-logs-next").addEventListener("click",function(){pi++,mi()});function Ws(){U("/user/status",{user_cookie:c.personal.cookie}).then(function(s){if(s.status!==200)throw new Error(s.message||"获取登录状态失败");var l=s.data||{},u=l.cookie||{};u.is_valid&&l.user?(c.personal.authed=!0,c.personal.user=l.user,e("#personal-gate").hidden=!0,e("#personal-content").hidden=!1,rc(),Gs(),G(),hi(),nn()):ar(u.is_valid)}).catch(function(s){k(s.message||"获取登录状态失败","error"),ar(!1)})}function ar(s){c.personal.authed=!1,e("#personal-content").hidden=!0,e("#personal-gate").hidden=!1,e("#personal-qr-area").hidden=!0,e("#personal-refresh").hidden=!s,hi(),nn(),s?(e("#personal-gate-hint").textContent="检测到登录信息已失效(或未关联有效账号),请重新扫码登录。",e("#personal-refresh").hidden=!1):(e("#personal-gate-hint").innerHTML="扫码登录你自己的网易云账号,即可查看收藏的歌单(包括「我喜欢的音乐」)。个人登录仅用于获取你的歌单,<b>解析与下载音乐仍使用管理员全局账号</b>。",e("#personal-refresh").hidden=!0)}function nc(s){return s===11||s===100?'<span class="vip-badge vip-vip">黑胶VIP</span>':s===10||s===110?'<span class="vip-badge vip-svip">黑胶SVIP</span>':s===1?'<span class="vip-badge vip-pkg">音乐包</span>':'<span class="vip-badge" style="background:var(--color-fill);color:var(--color-text-secondary);border:1px solid var(--color-border);">普通用户</span>'}function rc(){var s=c.personal.user||{};e("#personal-avatar").src=s.avatarUrl||"",e("#personal-nickname").innerHTML=j(s.nickname||"未命名用户")+" "+nc(s.vipType),e("#personal-signature").textContent=s.signature||"",rn()}function rn(){var s=e("#personal-toggle-account");c.parseAccount==="user"?(s.textContent="切换为全局账号解析",s.className="btn btn-sm btn-primary"):(s.textContent="切换为个人账号解析",s.className="btn btn-sm")}e("#personal-toggle-account").addEventListener("click",function(){if(c.parseAccount==="admin"){if(!c.personal.authed){k("请先在「个人歌单」扫码登录你自己的账号","warning");return}c.parseAccount="user",k("已切换为个人账号解析与下载(全局菜单均生效)","success")}else c.parseAccount="admin",k("已切换为全局账号解析与下载","success");try{localStorage.setItem("netease_parse_account",c.parseAccount)}catch{}rn(),G()});function Gs(){U("/user/playlists",{user_cookie:c.personal.cookie}).then(function(s){if(s.status!==200)throw new Error(s.message||"获取歌单失败");c.personal.user=s.data.user,rc(),Pp(s.data.playlists||[])}).catch(function(s){s.message&&s.message.indexOf("请先扫码")!==-1?(k(s.message,"warning"),ar(!1)):k(s.message||"获取歌单失败","error")})}function Pp(s){c.personal.playlists=s;var l=e("#personal-pla
Line truncated
|
||||
退出后需要重新扫码才能查看个人歌单。`)&&U("/user/logout",{}).then(function(s){if(s.status!==200)throw new Error(s.message||"退出失败");mt(),c.personal.qrGen=(c.personal.qrGen||0)+1,c.personal.authed=!1,c.personal.user=null,c.personal.playlists=[],c.personal.current=null,c.personal.cookie="";try{localStorage.removeItem("netease_user_cookie")}catch{}if(e("#personal-tracks-wrap").hidden=!0,c.parseAccount==="user"){c.parseAccount="admin";try{localStorage.setItem("netease_parse_account","admin")}catch{}k("已退出个人账号,解析账号已切换为全局账号","warning")}else k("已退出登录","success");rn(),G(),ar(!1)}).catch(function(s){k(s.message||"退出登录失败","error")})}e("#personal-qr-btn").addEventListener("click",Mp),e("#personal-refresh").addEventListener("click",Ws),e("#personal-logout").addEventListener("click",Ap),e("#personal-playlists-refresh").addEventListener("click",Gs),e("#personal-playlists").addEventListener("click",function(s){if(!s.target.closest(".act-uncollect")){var l=s.target.closest(".act-personal-open"),u=s.target.closest(".personal-pl");l?ic(l.getAttribute("data-id"),l.getAttribute("data-name")):u&&ic(u.getAttribute("data-id"),u.getAttribute("data-name"))}}),e("#personal-download-all").addEventListener("click",function(){lr(this,"personal")});function sc(){U("/global/playlists",{}).then(function(s){if(s.status===401){ac();return}if(s.status!==200)throw new Error(s.message||"获取全局账号歌单失败");var l=s.data||{};c.global.user=l.user||null,c.global.playlists=l.playlists||[],e("#global-gate").hidden=!0,e("#global-content").hidden=!1,lc(),cc()}).catch(function(s){k(s.message||"获取全局账号歌单失败","error"),ac()})}function ac(s){e("#global-content").hidden=!0,e("#global-gate").hidden=!1,e("#global-refresh").hidden=!0}function lc(){var s=c.global.user||{};e("#global-avatar").src=s.avatarUrl||"",e("#global-nickname").innerHTML=j(s.nickname||"未命名用户")+" "+nc(s.vipType),e("#global-signature").textContent=s.signature||""}function Rp(){U("/global/playlists",{}).then(function(s){if(s.status!==200)throw new Error(s.message||"获取全局账号歌单失败");c.global.user=s.data.user||null,c.global.playlists=s.data.playlists||[],lc(),cc()}).catch(function(s){k(s.message||"获取全局账号歌单失败","error")})}function oc(s){var l="";return s.specialType===5?l='<span class="badge" style="border-color:var(--color-error);color:var(--color-error);background:rgba(255,77,79,0.1);">❤️ 我喜欢的音乐</span>':s.is_own?l='<span class="badge" style="border-color:var(--color-primary);color:var(--color-primary);">我创建的</span>':l='<span class="badge badge-green">收藏的</span>','<div class="song-row global-pl" data-id="'+j(s.id)+'" data-name="'+j(s.name)+'" style="cursor:pointer;"><img class="song-cover" src="'+j(s.coverImgUrl||"")+'" loading="lazy" alt="" style="border-radius:12px;" /><div class="song-info"><div class="song-name"><span class="n">'+j(s.name)+"</span> "+l+'</div><div class="song-meta">'+je(s.trackCount)+" 首 · 播放 "+je(s.playCount)+(s.creator?" · by "+j(s.creator):"")+'</div></div><div class="song-actions"><button class="btn btn-sm btn-primary act-global-play" data-id="'+j(s.id)+'" data-name="'+j(s.name)+'" type="button">▶ 播放</button><button class="btn btn-sm act-global-api" data-id="'+j(s.id)+'" data-name="'+j(s.name)+'" type="button">🔗 API</button><button class="btn btn-sm btn-link act-global-open" data-id="'+j(s.id)+'" data-name="'+j(s.name)+'" type="button">查看歌曲</button></div></div>'}function cc(){var s=c.global.playlists,l=s.filter(function(d){return d.specialType===5}),u=s.filter(function(d){return d.specialType!==5});e("#global-fav-count").textContent="共 "+l.length+" 个",e("#global-collect-count").textContent="共 "+u.length+" 个",e("#global-fav-playlists").innerHTML=l.length?l.map(oc).join(""):'<div class="empty-state"><div class="empty-icon">📂</div>暂无「我喜欢的音乐」</div>',e("#global-collect-playlists").innerHTML=u.length?u.map(oc).join(""):'<div class="empty-state"><div class="empty-icon">📂</div>暂无收藏的歌单</div>'}function Op(s,l){if(s){c.global.current={id:s,name:l};var u=sr("global");e("#global-tracks-wrap").hidden=!1,e("#global-tracks-title").textContent="歌单歌曲:"+(l||s),e("#global-tracks").innerHTML='<div class="empty-state"><div class="empty-icon">⏳</div><div>加载中...</div></div>',e("#global-play-playlist").hidden=!1,e("#global-play-playlist").setAttribute("data-id",s),e("#global-play-playlist").setAttribute("data-name",l||s),window.scrollTo({top:e("#global-tracks-wrap").offsetTop-80,behavior:"smooth"}),U("/global/playlist",{id:s}).then(function(d){if(!lt("global",u)){if(d.status!==200)throw new Error(d.data&&d.data.msg||d.message||"获取歌单失败");Dp(d.data.playlist||{})}}).catch(function(d){lt("global",u)||(e("#global-tracks").innerHTML='<div class="empty-state"><div class="empty-icon">❌</div><div>'+j(d.message
Line truncated
|
||||
// POST 表单:id=`+(s||"")+"&level=lossless&limit=100&key="+C}}).catch(function(){m===c._apiModalGen&&(e("#api-url").textContent=d)}),xr("api-modal")}function dc(){Rt("api-modal")}function fc(s,l){if(!s)return;function u(){var d=document.createElement("textarea");d.value=s,d.style.position="fixed",d.style.opacity="0",document.body.appendChild(d),d.select();try{var m=document.execCommand("copy");m?k(l||"已复制","success"):k("复制失败,请手动选择文本复制","error")}catch{k("复制失败,请手动选择文本复制","error")}document.body.removeChild(d)}navigator.clipboard&&navigator.clipboard.writeText?navigator.clipboard.writeText(s).then(function(){k(l||"已复制","success")}).catch(u):u()}e("#global-goto-admin").addEventListener("click",function(){we("admin")}),e("#global-refresh").addEventListener("click",sc),e("#global-playlists-refresh").addEventListener("click",Rp),e("#global-api-open").addEventListener("click",function(){Ks("")}),e("#global-play-playlist").addEventListener("click",function(){uc(this.getAttribute("data-id"),this.getAttribute("data-name"),this)}),e("#global-download-all").addEventListener("click",function(){lr(this,"global")});function pc(s){var l=s.target.closest(".act-global-play, .act-global-open, .act-global-api"),u=s.target.closest(".global-pl"),d=l?l.getAttribute("data-id"):u?u.getAttribute("data-id"):"",m=l?l.getAttribute("data-name"):u?u.getAttribute("data-name"):"";d&&(l&&l.classList.contains("act-global-play")?uc(d,m,l):l&&l.classList.contains("act-global-api")?Ks(d):Op(d,m))}e("#global-fav-playlists").addEventListener("click",pc),e("#global-collect-playlists").addEventListener("click",pc),e("#playlist-api-btn").addEventListener("click",function(){var s=c.currentCollection;Ks(s&&s.type==="playlist"?s.id:"")}),e("#api-close").addEventListener("click",dc),e("#api-modal").addEventListener("click",function(s){s.target===this&&dc()}),e("#api-copy-url").addEventListener("click",function(){fc(e("#api-url").textContent,"接口地址已复制")}),e("#api-copy-example").addEventListener("click",function(){fc(e("#api-example").textContent,"请求示例已复制")});function hi(){var s=c.personal.authed,l=e("#collect-playlist-btn"),u=e("#collect-album-btn");if(l&&(l.hidden=!s),u&&(u.hidden=!s),s&&c.currentCollection){var d=c.currentCollection,m=d.type==="playlist"&&(c.personal.playlists||[]).some(function(y){return String(y.id)===String(d.id)});d.type==="album"?d.albumCollected?(e("#collect-album-btn").textContent="✓ 已收藏专辑",e("#collect-album-btn").classList.add("btn-success")):(e("#collect-album-btn").textContent="♡ 收藏专辑",e("#collect-album-btn").classList.remove("btn-success")):m?(e("#collect-playlist-btn").textContent="✓ 已收藏",e("#collect-playlist-btn").classList.add("btn-success")):(e("#collect-playlist-btn").textContent="♡ 收藏歌单",e("#collect-playlist-btn").classList.remove("btn-success"))}}function Ys(s,l,u){if(!c.personal.authed||!c.personal.cookie){k("请先在「个人歌单」扫码登录你的账号","warning"),we("personal");return}var d=u===1?"收藏":"取消收藏";U("/user/collect",{id:l,type:s,action:u,user_cookie:c.personal.cookie}).then(function(m){if(m.status!==200)throw new Error(m.message||d+"失败");k(u===1?"✅ 已收藏到你的个人歌单":"已取消收藏","success"),c.currentCollection&&String(c.currentCollection.id)===String(l)&&(c.currentCollection.albumCollected=s==="album"&&u===1);var y=e(s==="album"?"#collect-album-btn":"#collect-playlist-btn");y&&(u===1?(y.textContent=s==="album"?"✓ 已收藏专辑":"✓ 已收藏",y.classList.add("btn-success")):(y.textContent=s==="album"?"♡ 收藏专辑":"♡ 收藏歌单",y.classList.remove("btn-success"))),c.personal.authed&&Gs(),hi()}).catch(function(m){k(m.message||d+"失败","error")})}e("#collect-playlist-btn").addEventListener("click",function(){if(c.currentCollection){var s=(c.personal.playlists||[]).some(function(l){return String(l.id)===String(c.currentCollection.id)});Ys("playlist",c.currentCollection.id,s?2:1)}}),e("#collect-album-btn").addEventListener("click",function(){c.currentCollection&&Ys("album",c.currentCollection.id,1)}),document.addEventListener("click",function(s){var l=s.target.closest(".act-parse");if(l){sp(l.getAttribute("data-id"),l.getAttribute("data-name"));return}var u=s.target.closest(".act-download");if(u){Vo(u.getAttribute("data-id"),u.getAttribute("data-name"));return}var d=s.target.closest(".act-goto-playlist");if(d){vp(d.getAttribute("data-id"),d.getAttribute("data-name"));return}var m=s.target.closest(".act-goto-album");if(m){gp(m.getAttribute("data-id"),m.getAttribute("data-name"));return}var y=s.target.closest(".act-goto-artist");if(y){xp(y.getAttribute("data-id"),y.getAttribute("data-name"));return}var C=s.target.closest(".act-uncollect");if(C){Ys("playlist",C.getAttribute("data-id"),2);return}});function Fp(s,l,u){var d=document.querySelector('.modal-mask[data-dynamic="1"].show');d&&d.remove();var m=document.createEl
Line truncated
|
||||
//# sourceMappingURL=app.js.map
|
||||
Reference in new issue
Block a user