react-lrcplayer
Version:
React 带歌词的简易播放器
8 lines (7 loc) • 8.62 kB
JavaScript
(function(v,m){typeof exports=="object"&&typeof module<"u"?m(exports,require("react")):typeof define=="function"&&define.amd?define(["exports","react"],m):(v=typeof globalThis<"u"?globalThis:v||self,m(v.index={},v.react))})(this,(function(v,m){"use strict";var O={exports:{}},T={};var $;function Q(){if($)return T;$=1;var f=Symbol.for("react.transitional.element"),d=Symbol.for("react.fragment");function i(l,c,t){var u=null;if(t!==void 0&&(u=""+t),c.key!==void 0&&(u=""+c.key),"key"in c){t={};for(var p in c)p!=="key"&&(t[p]=c[p])}else t=c;return c=t.ref,{$$typeof:f,type:l,key:u,ref:c!==void 0?c:null,props:t}}return T.Fragment=d,T.jsx=i,T.jsxs=i,T}var j={};var J;function K(){return J||(J=1,process.env.NODE_ENV!=="production"&&(function(){function f(e){if(e==null)return null;if(typeof e=="function")return e.$$typeof===le?null:e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case k:return"Fragment";case F:return"Profiler";case Y:return"StrictMode";case h:return"Suspense";case P:return"SuspenseList";case ae:return"Activity"}if(typeof e=="object")switch(typeof e.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),e.$$typeof){case C:return"Portal";case w:return e.displayName||"Context";case L:return(e._context.displayName||"Context")+".Consumer";case z:var r=e.render;return e=e.displayName,e||(e=r.displayName||r.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case ne:return r=e.displayName||null,r!==null?r:f(e.type)||"Memo";case I:r=e._payload,e=e._init;try{return f(e(r))}catch{}}return null}function d(e){return""+e}function i(e){try{d(e);var r=!1}catch{r=!0}if(r){r=console;var n=r.error,o=typeof Symbol=="function"&&Symbol.toStringTag&&e[Symbol.toStringTag]||e.constructor.name||"Object";return n.call(r,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",o),d(e)}}function l(e){if(e===k)return"<>";if(typeof e=="object"&&e!==null&&e.$$typeof===I)return"<...>";try{var r=f(e);return r?"<"+r+">":"<...>"}catch{return"<...>"}}function c(){var e=D.A;return e===null?null:e.getOwner()}function t(){return Error("react-stack-top-frame")}function u(e){if(G.call(e,"key")){var r=Object.getOwnPropertyDescriptor(e,"key").get;if(r&&r.isReactWarning)return!1}return e.key!==void 0}function p(e,r){function n(){X||(X=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",r))}n.isReactWarning=!0,Object.defineProperty(e,"key",{get:n,configurable:!0})}function _(){var e=f(this.type);return q[e]||(q[e]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),e=this.props.ref,e!==void 0?e:null}function g(e,r,n,o,N,U){var s=n.ref;return e={$$typeof:A,type:e,key:r,props:n,_owner:o},(s!==void 0?s:null)!==null?Object.defineProperty(e,"ref",{enumerable:!1,get:_}):Object.defineProperty(e,"ref",{enumerable:!1,value:null}),e._store={},Object.defineProperty(e._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(e,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(e,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:N}),Object.defineProperty(e,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:U}),Object.freeze&&(Object.freeze(e.props),Object.freeze(e)),e}function y(e,r,n,o,N,U){var s=r.children;if(s!==void 0)if(o)if(oe(s)){for(o=0;o<s.length;o++)E(s[o]);Object.freeze&&Object.freeze(s)}else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else E(s);if(G.call(r,"key")){s=f(e);var R=Object.keys(r).filter(function(se){return se!=="key"});o=0<R.length?"{key: someKey, "+R.join(": ..., ")+": ...}":"{key: someKey}",Z[s+o]||(R=0<R.length?"{"+R.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
let props = %s;
<%s {...props} />
React keys must be passed directly to JSX without using spread:
let props = %s;
<%s key={someKey} {...props} />`,o,s,R,s),Z[s+o]=!0)}if(s=null,n!==void 0&&(i(n),s=""+n),u(r)&&(i(r.key),s=""+r.key),"key"in r){n={};for(var W in r)W!=="key"&&(n[W]=r[W])}else n=r;return s&&p(n,typeof e=="function"?e.displayName||e.name||"Unknown":e),g(e,s,n,c(),N,U)}function E(e){S(e)?e._store&&(e._store.validated=1):typeof e=="object"&&e!==null&&e.$$typeof===I&&(e._payload.status==="fulfilled"?S(e._payload.value)&&e._payload.value._store&&(e._payload.value._store.validated=1):e._store&&(e._store.validated=1))}function S(e){return typeof e=="object"&&e!==null&&e.$$typeof===A}var b=m,A=Symbol.for("react.transitional.element"),C=Symbol.for("react.portal"),k=Symbol.for("react.fragment"),Y=Symbol.for("react.strict_mode"),F=Symbol.for("react.profiler"),L=Symbol.for("react.consumer"),w=Symbol.for("react.context"),z=Symbol.for("react.forward_ref"),h=Symbol.for("react.suspense"),P=Symbol.for("react.suspense_list"),ne=Symbol.for("react.memo"),I=Symbol.for("react.lazy"),ae=Symbol.for("react.activity"),le=Symbol.for("react.client.reference"),D=b.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,G=Object.prototype.hasOwnProperty,oe=Array.isArray,M=console.createTask?console.createTask:function(){return null};b={react_stack_bottom_frame:function(e){return e()}};var X,q={},B=b.react_stack_bottom_frame.bind(b,t)(),H=M(l(t)),Z={};j.Fragment=k,j.jsx=function(e,r,n){var o=1e4>D.recentlyCreatedOwnerStacks++;return y(e,r,n,!1,o?Error("react-stack-top-frame"):B,o?M(l(e)):H)},j.jsxs=function(e,r,n){var o=1e4>D.recentlyCreatedOwnerStacks++;return y(e,r,n,!0,o?Error("react-stack-top-frame"):B,o?M(l(e)):H)}})()),j}var V;function ee(){return V||(V=1,process.env.NODE_ENV==="production"?O.exports=Q():O.exports=K()),O.exports}var a=ee();const x={"nextlrc-container":"_nextlrc-container_hw62x_26","nextlrc-placeholder":"_nextlrc-placeholder_hw62x_32","lrcplayer-container":"_lrcplayer-container_hw62x_36","lrcplayer-display":"_lrcplayer-display_hw62x_41","lrcplayer-header":"_lrcplayer-header_hw62x_50","lrcplayer-title":"_lrcplayer-title_hw62x_59","lrcplayer-slide":"_lrcplayer-slide_hw62x_1","lrcplayer-fade":"_lrcplayer-fade_hw62x_1","lrcplayer-none":"_lrcplayer-none_hw62x_1"};function re(f){const{src:d,cover:i,title:l="",subTitle:c="",lrc:t,placeholder:u="空",animate:p={type:"lrcplayer-fade",duration:.5},nextLrc:_={display:!1,number:5},offset:g=0}=f,[y,E]=m.useState(a.jsx(a.Fragment,{})),[S,b]=m.useState(a.jsx(a.Fragment,{})),[A,C]=m.useState(a.jsx(a.Fragment,{}));m.useEffect(()=>{C(a.jsx("div",{className:x["lrcplayer-display"],style:{animationName:x[p.type],"--animate-duration":p.duration+"s"},children:y===""?a.jsx("i",{style:{color:"grey"},children:u}):y},`lrcplayer-lrc_${Math.random()}`))},[y]);const k=Y=>{const{currentTime:F}=Y.target;t.forEach((L,w)=>{F>=t[w].t+g&&(E(L.c),b(a.jsx("div",{className:x["nextlrc-container"],children:Array.from(new Array(_.number).keys()).map(h=>{const P=w+1+h<t.length?t[w+1+h].c:"";return P===""?a.jsx("span",{className:x["nextlrc-placeholder"],children:u},h):a.jsx("span",{children:P},h)})})))})};return a.jsxs("div",{className:x["lrcplayer-container"],children:[a.jsxs("div",{className:x["lrcplayer-header"],children:[a.jsx("img",{src:i,width:80,alt:"cover"}),a.jsxs("div",{children:[a.jsx("span",{className:x["lrcplayer-title"],children:l}),a.jsx("br",{}),a.jsx("span",{style:{color:"grey"},children:c})]})]}),a.jsxs("div",{style:{textAlign:"center",paddingBlock:15},children:[A,_.display?a.jsx("div",{style:{color:"grey"},children:S}):""]}),a.jsx("audio",{src:d,controls:!0,style:{width:"100%"},onTimeUpdate:k})]})}function te(f){let d=[];if(f.length===0)return[];var i=f.split(`
`);for(var l in i){i[l]=i[l].replace(/(^\s*)|(\s*$)/g,"");var c=i[l].substring(i[l].indexOf("[")+1,i[l].indexOf("]")),t=c.split(":");if(isNaN(parseInt(t[0])))for(var l in d)l!=="ms"&&l===t[0].toLowerCase()&&(d[l]=t[1]);else{var u=i[l].match(/\[(\d+:.+?)\]/g),p=0;for(var _ in u)p+=u[_].length;var g=i[l].substring(p);for(var _ in u){var c=u[_].substring(1,u[_].length-1),t=c.split(":");d.push({t:parseFloat(t[0])*60+parseFloat(t[1]),c:g})}}}return d.sort(function(y,E){return y.t-E.t}),d}v.LRCPlayer=re,v.createLrcObj=te,Object.defineProperty(v,Symbol.toStringTag,{value:"Module"})}));