lrc-maker
Version:
歌词滚动姬|可能是你所能见到的最好用的歌词制作工具
1 lines • 94.9 kB
JavaScript
(()=>{var e={2435:(e,t,a)=>{var r={"./en-US.js":5870,"./ja.js":9758,"./ko-KR.js":4089,"./pt-BR.js":378,"./zh-CN.js":2434,"./zh-HK.js":3441,"./zh-TW.js":3237};function n(e){return o(e).then(a)}function o(e){return Promise.resolve().then((()=>{if(!a.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}))}n.keys=()=>Object.keys(r),n.resolve=o,n.id=2435,e.exports=n},4402:(e,t,a)=>{"use strict";a.d(t,{w:()=>p,T:()=>m});var r=a(9099),n=a(5870);const o=()=>{const[e,t]=React.useState(n.language);return[e,React.useCallback((e=>{return n=e,(0,r.mG)(void 0,void 0,void 0,(function*(){const{language:e}=yield a(2435)(`./${n}.js`);t(e)}));var n}),[])]};var i=a(8777),c=a(7844);const{createContext:l,useEffect:s,useMemo:u}=React,m=l(void 0,((e,t)=>{let a=0;return e.lang!==t.lang&&(a|=1),e.prefState.builtInAudio!==t.prefState.builtInAudio&&(a|=2),e.prefState!==t.prefState&&(a|=4),a})),p=({children:e})=>{const[t,a]=(0,i.f6)((()=>localStorage.getItem("lrc-maker-preferences")||"")),[r,n]=o();s((()=>{n(t.lang).catch((e=>{c.N.pub({type:"warning",text:e.message})}))}),[t.lang,n]),s((()=>{document.title=r.app.fullname,document.documentElement.lang=t.lang}),[r,t,t.lang]);const l=u((()=>({lang:r,prefState:t,prefDispatch:a,trimOptions:{trimStart:t.spaceStart>=0,trimEnd:t.spaceEnd>=0}})),[r,a,t]);return React.createElement(m.Provider,{value:l},e)}},8341:(e,t,a)=>{"use strict";a.r(t),a.d(t,{Eidtor:()=>v});var r=a(15),n=a(1189),o=a(1966),i=a(4402),c=a(2537),l=a(7844);const{useCallback:s,useContext:u,useEffect:m,useMemo:p,useRef:d,useState:h}=React,g={autoCapitalize:"none",autoComplete:"off",autoCorrect:"off",spellCheck:!1},f=(e,t)=>{const a=(r=t,n=d(null),null!=r?r:n);var r,n;return m((()=>{a.current&&(a.current.value=e)}),[e,a]),{ref:a,defaultValue:e}},v=({lrcState:e,lrcDispatch:t})=>{const{prefState:a,lang:m,trimOptions:v}=u(i.T),y=s((e=>{t({type:0,payload:{text:e.target.value,options:v}})}),[t,v]),b=s((e=>{const{name:a,value:r}=e.target;t({type:4,payload:{name:a,value:r}})}),[t]),R=(0,r.Pz)(e,a),E=d(null),w=s((()=>{sessionStorage.setItem("editor-details-open",E.current.open.toString())}),[]),x=p((()=>"false"!==sessionStorage.getItem("editor-details-open")),[]),k=d(null),[T,S]=h(void 0),N=s((()=>{S((e=>(e&&URL.revokeObjectURL(e),URL.createObjectURL(new Blob([k.current.value],{type:"text/plain;charset=UTF-8"})))))}),[]),C=s((e=>{if(null===e.target.files||0===e.target.files.length)return;const a=new FileReader;a.addEventListener("load",(()=>{t({type:0,payload:{text:a.result,options:v}})})),a.readAsText(e.target.files[0],"UTF-8")}),[t,v]),L=s((()=>{var e;null===(e=k.current)||void 0===e||e.select(),document.execCommand("copy")}),[]),G=p((()=>(0,o.L)(e.info)),[e.info]),I=p((()=>null!==localStorage.getItem("lrc-maker-oauth-token")&&null!==localStorage.getItem("lrc-maker-gist-id")),[]),O=s((()=>{setTimeout((()=>{const e=prompt(m.editor.saveFileName,G);e&&(0,n.cn)(e,k.current.value).catch((e=>{l.N.pub({type:"warning",text:e.message})}))}),500)}),[G,m]);return React.createElement("div",{className:"app-editor"},React.createElement("details",{ref:E,open:x,onToggle:w},React.createElement("summary",null,m.editor.metaInfo),React.createElement("section",{className:"app-editor-infobox",onBlur:b},React.createElement("label",{htmlFor:"info-ti"},"[ti:"),React.createElement("input",Object.assign({id:"info-ti",name:"ti",placeholder:m.editor.title},g,f(e.info.get("ti")||""))),React.createElement("label",{htmlFor:"info-ti"},"]"),React.createElement("label",{htmlFor:"info-ar"},"[ar:"),React.createElement("input",Object.assign({id:"info-ar",name:"ar",placeholder:m.editor.artist},g,f(e.info.get("ar")||""))),React.createElement("label",{htmlFor:"info-ar"},"]"),React.createElement("label",{htmlFor:"info-al"},"[al:"),React.createElement("input",Object.assign({id:"info-al",name:"al",placeholder:m.editor.album},g,f(e.info.get("al")||""))),React.createElement("label",{htmlFor:"info-al"},"]"))),React.createElement("section",{className:"editor-tools"},React.createElement("label",{className:"editor-tools-item ripple",title:m.editor.uploadText},React.createElement("input",{hidden:!0,type:"file",accept:"text/*, .txt, .lrc",onChange:C}),React.createElement(c.Sb,null)),React.createElement("button",{className:"editor-tools-item ripple",title:m.editor.copyText,onClick:L},React.createElement(c.sT,null)),React.createElement("a",{className:"editor-tools-item ripple",title:m.editor.downloadText,href:T,onClick:N,download:G},React.createElement(c.ID,null)),React.createElement("a",{title:m.editor.saveToGist,href:I?void 0:"#/gist/",className:"editor-tools-item ripple",onClick:I?O:void 0},React.createElement(c.Eo,null)),React.createElement("a",{title:m.editor.utils,href:"/lrc-utils/",className:"editor-tools-item ripple"},React.createElement(c.k3,null))),React.createElement("textarea",Object.assign({className:"app-textarea","aria-label":"lrc input here",onBlur:y},g,f(R,k))))}},8190:(e,t,a)=>{"use strict";a.r(t),a.d(t,{Gist:()=>h});var r=a(1189),n=a(4402),o=a(5912),i=a(2537),c=a(7844);const{useCallback:l,useContext:s,useEffect:u,useMemo:m,useState:p}=React,d={autoCapitalize:"none",autoComplete:"off",autoCorrect:"off",spellCheck:!1},h=({lrcDispatch:e,langName:t})=>{const{lang:a,trimOptions:h}=s(n.T),[f,v]=p((()=>localStorage.getItem("lrc-maker-oauth-token"))),[y,b]=p((()=>localStorage.getItem("lrc-maker-gist-id"))),[R,E]=p(void 0),[w,x]=p((()=>JSON.parse(localStorage.getItem("lrc-maker-gist-file")))),k=m((()=>JSON.parse(sessionStorage.getItem("x-ratelimit"))),[]),T=l((e=>{e.preventDefault();const t=e.target.elements.namedItem("token").value;localStorage.setItem("lrc-maker-oauth-token",t),v(t)}),[]),S=l((()=>{(0,r.xf)().then((e=>{localStorage.setItem("lrc-maker-gist-id",e.id),b(e.id)})).catch((e=>{c.N.pub({type:"warning",text:e.message})}))}),[]),N=l((e=>{e.preventDefault();const t=e.target.elements.namedItem("gist-id").value;localStorage.setItem("lrc-maker-gist-id",t),b(t),(0,r.kf)().catch((e=>{c.N.pub({type:"warning",text:e.message})}))}),[]);u((()=>{null===y&&null!==f&&"HTMLDataListElement"in window&&(0,r.uE)().then((e=>{E(e.filter((e=>"https://lrc-maker.github.io"===e.description&&".lrc-maker"in e.files)).map((({id:e})=>e)))})).catch((e=>{c.N.pub({type:"warning",text:e.message})}))}),[f,y]),u((()=>{null!==y&&(0,r.Lf)().then((e=>{if(null===e)return;const t=Object.values(e.files).filter((e=>e.filename.endsWith(".lrc")));localStorage.setItem("lrc-maker-gist-file",JSON.stringify(t,["filename","content","truncated","raw_url"])),x(t)})).catch((e=>{c.N.pub({type:"warning",text:e.message})}))}),[y]);const C=l((t=>{const a=t.target;if(!("key"in a.dataset))return;const r=Number.parseInt(a.dataset.key,10),n=null==w?void 0:w[r];n&&(n.truncated?fetch(n.raw_url).then((e=>e.text())).then((t=>{e({type:0,payload:{text:t,options:h}})})).catch((e=>{c.N.pub({type:"warning",text:e.message})})):e({type:0,payload:{text:n.content,options:h}}))}),[w,e,h]),L=l((()=>{b(null),v(null)}),[]),G=m((()=>{if(null===k)return!1;const e=new Intl.DateTimeFormat(t,{year:"numeric",month:"short",day:"numeric",hour:"numeric",minute:"numeric",second:"numeric",hour12:!1}).format(new Date(1e3*Number.parseInt(k["x-ratelimit-reset"],10)));return React.createElement("section",{className:"ratelimit"},React.createElement("p",null,"ratelimit-limit: ",k["x-ratelimit-limit"]),React.createElement("p",null,"ratelimit-remaining: ",k["x-ratelimit-remaining"]),React.createElement("p",null,"ratelimit-reset: ",e))}),[k,t]),I=l((()=>null!==y&&null!==f?React.createElement("details",{className:"gist-details"},React.createElement("summary",null,a.gist.info),React.createElement("section",{className:"gist-bar"},React.createElement("section",{className:"gist-info"},React.createElement("p",null,"Gist id: ",React.createElement("a",{href:`https://gist.github.com/${y}`,target:"_blank",rel:"noopener noreferrer",className:"link"},y)),React.createElement("button",{className:"button",onClick:L},a.gist.clearTokenAndGist)),G)):null),[y,f,a.gist.info,a.gist.clearTokenAndGist,L,G]),O=m((()=>{if(null===f)return React.createElement("section",{className:"new-token"},React.createElement(i.H_,null),React.createElement("p",{className:"new-token-tip-text"},a.gist.newTokenTip),React.createElement("a",{className:"new-token-tip button",target:"_blank",rel:"noopener noreferrer",href:"https://github.com/settings/tokens/new?scopes=gist&description=https://lrc-maker.github.io"},a.gist.newTokenButton),React.createElement("form",{className:"new-token-form",onSubmit:T},React.createElement("label",{htmlFor:"github-token"},"Token:"),React.createElement("input",Object.assign({type:"text",className:"new-token-input",id:"github-token",name:"token",key:"token",minLength:40,maxLength:40,required:!0},d)),React.createElement("input",{className:"new-token-submit button",type:"submit"})))}),[f,a.gist.newTokenTip,a.gist.newTokenButton,T]),M=m((()=>{if(null===y){const e=e=>React.createElement("option",{key:e,value:e}),t=R&&React.createElement("datalist",{id:"gist-list"},R.map((t=>e(t))),";");return React.createElement("section",{className:"get-gist-id"},React.createElement(i.H_,null),React.createElement("p",{className:"gist-id-tip-text"},a.gist.newGistTip),React.createElement("button",{className:"create-new-gist button",onClick:S},a.gist.newGistRepoButton),React.createElement("form",{className:"gist-id-form",onSubmit:N},React.createElement("label",{htmlFor:"gist-id"},"Gist id:"),React.createElement("input",Object.assign({type:"text",className:"gist-id-input",id:"gist-id",name:"gist-id",key:"gist-id",list:"gist-list",placeholder:a.gist.gistIdPlaceholder,required:!0},d)),React.createElement("input",{className:"button",type:"submit"}),t))}}),[y,R,a.gist.newGistTip,a.gist.newGistRepoButton,a.gist.gistIdPlaceholder,S,N]),j=m((()=>{if(null!==w){const e=(e,t)=>React.createElement("article",{className:"file-item",key:e.raw_url},React.createElement("section",{className:"file-content"},e.content),React.createElement("hr",null),React.createElement("section",{className:"file-bar"},React.createElement("span",{className:"file-title"},e.filename),React.createElement("span",{className:"file-action"},React.createElement("a",{className:"file-load",href:"#/editor/","data-key":t},React.createElement(i.JF,null)),React.createElement("a",{className:"file-load",href:"#/synchronizer/","data-key":t},React.createElement(i.dZ,null)))));return 0===w.length?React.createElement("section",{className:"gist-no-data"},React.createElement(o.DL,null)):React.createElement("section",{className:"file-list",onClick:C},w.map(e))}}),[w,C]);return React.createElement("div",{className:"gist"},React.createElement(I,null),O||M||j||React.createElement(g,null))},g=()=>React.createElement("section",{className:"gist-loading"},React.createElement(o.WQ,null))},1687:(e,t,a)=>{"use strict";a.r(t),a.d(t,{Preferences:()=>g});var r=a(8777),n=a(15),o=a(9099);var i=a(4402),c=a(5912);const{useCallback:l,useContext:s,useEffect:u,useMemo:m,useRef:p}=React,d={type:"number",step:1},h=(e,t)=>{const a=p(null);u((()=>{const t=a.current;if(t){const a=()=>{t.value=e.toString()};return t.addEventListener("change",a),()=>t.removeEventListener("change",a)}}),[e]);const r=l((e=>{e.target.validity.valid&&t(e)}),[t]);return Object.assign(Object.assign({},d),{ref:a,onChange:r,defaultValue:e})},g=()=>{const{prefState:e,prefDispatch:t,lang:a}=s(i.T,1),d=l((e=>{t({type:"themeColor",payload:e.target.value})}),[t]),g=p(null),f=l((e=>{let a=e.value;e.validity.valid?(3===a.length&&(a=[].map.call(a,(e=>e+e)).join("")),a.length<6&&(a=a.padEnd(6,"0")),t({type:"themeColor",payload:"#"+a})):e.value=e.defaultValue}),[t]),v=l((e=>f(e.target)),[f]),y=l((e=>{e.preventDefault();const t=e.target.elements.namedItem("user-color-input-text");return f(t)}),[f]);u((()=>{g.current.value=e.themeColor.slice(1)}),[e.themeColor]);const b=l((e=>{t({type:e.target.name,payload:e.target.value})}),[t]),R=l((()=>{(0,o.mG)(void 0,void 0,void 0,(function*(){"serviceWorker"in navigator&&(yield caches.keys().then((e=>Promise.all(e.filter((e=>e.startsWith("akari-lrc-maker"))).map((e=>caches.delete(e)))))),yield navigator.serviceWorker.getRegistration().then((e=>{e&&e.unregister().then((()=>{location.reload()}))})))}))}),[]),E=m((()=>{const t=new Date("2022-10-22T10:52:25+08:00");return new Intl.DateTimeFormat(e.lang,{year:"numeric",month:"short",day:"numeric",hour:"numeric",minute:"numeric",second:"numeric",timeZoneName:"short",hour12:!1}).format(t)}),[e.lang]),w=l((e=>{t({type:"lang",payload:e.target.value})}),[t]),x=l((()=>t({type:"builtInAudio",payload:e=>!e.builtInAudio})),[t]),k=l((()=>t({type:"screenButton",payload:e=>!e.screenButton})),[t]),T=l((e=>{t({type:"themeMode",payload:Number.parseInt(e.target.value,10)})}),[t]),S=l((e=>{t({type:"fixed",payload:Number.parseInt(e.target.value,10)})}),[t]),N=m((()=>Object.entries(r.um.languages).map((([e,t])=>React.createElement("option",{key:e,value:e},t)))),[]),C=m((()=>Object.values(r.EN).map((t=>{const a=t===e.themeColor,r=["color-picker","ripple"];return a&&r.push("checked"),React.createElement("label",{className:r.join(" "),key:t,style:{backgroundColor:t}},React.createElement("input",{hidden:!0,type:"radio",name:"theme-color",value:t,checked:a,onChange:d}))}))),[d,e.themeColor]),L=m((()=>({backgroundColor:e.themeColor})),[e.themeColor]),G=m((()=>(0,n.RZ)(" hello 世界~ ",e.spaceStart,e.spaceEnd)),[e.spaceStart,e.spaceEnd]),I=p(null),O=p(null);return u((()=>{"color"===O.current.type&&I.current.removeAttribute("for")}),[]),React.createElement("div",{className:"preferences"},React.createElement("ul",null,React.createElement("li",null,React.createElement("section",{className:"list-item"},React.createElement("span",null,a.preferences.version),React.createElement("span",{className:"select-all"},"5.6.6"))),React.createElement("li",null,React.createElement("section",{className:"list-item"},React.createElement("span",null,a.preferences.commitHash),React.createElement("span",{className:"select-all"},"26783c9"))),React.createElement("li",null,React.createElement("section",{className:"list-item"},React.createElement("span",null,a.preferences.updateTime),React.createElement("span",null,E))),React.createElement("li",null,React.createElement("section",{className:"list-item"},React.createElement("span",null,a.preferences.repo),React.createElement("a",{className:"link",href:"https://github.com/magic-akari/lrc-maker",target:"_blank",rel:"noopener noreferrer"},"Github"))),React.createElement("li",null,React.createElement("section",{className:"list-item"},React.createElement("span",null,a.preferences.help),React.createElement("a",{className:"link",href:"https://github.com/magic-akari/lrc-maker/wiki",target:"_blank",rel:"noopener noreferrer"},"Github Wiki"))),React.createElement("li",null,React.createElement("section",{className:"list-item"},React.createElement("span",null,a.preferences.language),React.createElement("div",{className:"option-select"},React.createElement("select",{value:e.lang,onChange:w,"aria-label":a.preferences.language},N)))),React.createElement("li",null,React.createElement("label",{className:"list-item"},React.createElement("span",null,a.preferences.builtInAudio),React.createElement("label",{className:"toggle-switch"},React.createElement("input",{type:"checkbox",checked:e.builtInAudio,onChange:x,"aria-label":a.preferences.builtInAudio}),React.createElement("span",{className:"toggle-switch-label"})))),React.createElement("li",null,React.createElement("label",{className:"list-item"},React.createElement("span",null,a.preferences.spaceButton),React.createElement("label",{className:"toggle-switch"},React.createElement("input",{type:"checkbox",checked:e.screenButton,onChange:k,"aria-label":a.preferences.spaceButton}),React.createElement("span",{className:"toggle-switch-label"})))),React.createElement("li",null,React.createElement("section",{className:"list-item"},React.createElement("span",null,a.preferences.themeMode.label),React.createElement("div",{className:"option-select"},React.createElement("select",{name:"theme-mode",value:e.themeMode,onChange:T,"aria-label":a.preferences.themeMode.label},React.createElement("option",{value:0},a.preferences.themeMode.auto),React.createElement("option",{value:1},a.preferences.themeMode.light),React.createElement("option",{value:2},a.preferences.themeMode.dark))))),React.createElement("li",null,React.createElement("section",{className:"list-item"},React.createElement("span",null,a.preferences.themeColor),React.createElement("details",{className:"dropdown"},React.createElement("summary",null,React.createElement("span",{className:"color-picker ripple hash",style:L},"#"),React.createElement("span",{className:"current-theme-color"},e.themeColor.slice(1))),React.createElement("form",{className:"dropdown-body color-wall",onSubmit:y},C,React.createElement("label",{className:"color-picker ripple user-color-label hash",htmlFor:"user-color-input-text",style:L,ref:I},"#",React.createElement("input",{type:"color",className:"color-picker pseudo-hidden",value:e.themeColor,onChange:d,ref:O})),React.createElement("input",{ref:g,id:"user-color-input-text",name:"user-color-input-text",className:"user-color-input-text",type:"text",pattern:"[\\da-f]{3,6}",required:!0,autoCapitalize:"none",autoComplete:"off",autoCorrect:"off",spellCheck:!1,defaultValue:e.themeColor.slice(1),onBlur:v}))))),React.createElement("li",null,React.createElement("section",{className:"list-item"},React.createElement("span",null,a.preferences.lrcFormat),React.createElement("span",null,React.createElement("time",{className:"format-example-time"},(0,n.Zr)(83.456,e.fixed)),React.createElement("span",{className:"format-example-text"},G)))),React.createElement("li",null,React.createElement("section",{className:"list-item"},React.createElement("span",null,a.preferences.fixed),React.createElement("div",{className:"option-select"},React.createElement("select",{name:"fixed",value:e.fixed,onChange:S,"aria-label":a.preferences.lrcFormat},React.createElement("option",{value:0},"0"),React.createElement("option",{value:1},"1"),React.createElement("option",{value:2},"2"),React.createElement("option",{value:3},"3"))))),React.createElement("li",null,React.createElement("label",{className:"list-item"},React.createElement("label",{htmlFor:"space-start"},a.preferences.leftSpace),React.createElement("input",Object.assign({name:"spaceStart",id:"space-start",required:!0,min:-1},h(e.spaceStart,b))))),React.createElement("li",null,React.createElement("label",{className:"list-item"},React.createElement("label",{htmlFor:"space-end"},a.preferences.rightSpace),React.createElement("input",Object.assign({name:"spaceEnd",id:"space-end",required:!0,min:-1},h(e.spaceEnd,b))))),React.createElement("li",{className:"ripple",onTransitionEnd:R},React.createElement("section",{className:"list-item"},a.preferences.clearCache))),React.createElement(c.Pp,null))}},5912:(e,t,a)=>{"use strict";a.d(t,{DL:()=>n,Pp:()=>r,WQ:()=>o});const r=()=>React.createElement("img",{className:"akari-hide-wall",alt:"akari-hide-wall",src:"./svg/akari-hide-wall.svg",crossOrigin:"anonymous"}),n=()=>React.createElement("img",{className:"akari-not-found",alt:"not found",src:"./svg/akari-not-found.svg",crossOrigin:"anonymous"}),o=()=>React.createElement("img",{className:"akari-odango-loading start-loading",alt:"loading",src:"./svg/akari-odango-loading.svg",crossOrigin:"anonymous"})},2537:(e,t,a)=>{"use strict";a.d(t,{Cn:()=>w,DP:()=>r,Eo:()=>y,H_:()=>b,ID:()=>h,JF:()=>n,Jm:()=>R,Mq:()=>p,Sb:()=>v,X0:()=>l,b2:()=>d,dZ:()=>o,fm:()=>u,gO:()=>c,gi:()=>m,go:()=>E,hL:()=>g,il:()=>i,k3:()=>x,nf:()=>s,sT:()=>f});const r=()=>React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},React.createElement("path",{fill:"none",d:"M0 0h24v24H0V0z"}),React.createElement("path",{d:"M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z"})),n=()=>React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},React.createElement("path",{fill:"none",d:"M0 0h24v24H0V0z"}),React.createElement("path",{d:"M3 17.46v3.04c0 .28.22.5.5.5h3.04c.13 0 .26-.05.35-.15L17.81 9.94l-3.75-3.75L3.15 17.1c-.1.1-.15.22-.15.36zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z"})),o=()=>React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},React.createElement("path",{fill:"none",d:"M0 0h24v24H0z"}),React.createElement("path",{d:"M4 21h16c.55 0 1-.45 1-1s-.45-1-1-1H4c-.55 0-1 .45-1 1s.45 1 1 1zM3 9.21v5.59c0 .45.54.67.85.35l2.79-2.79c.2-.2.2-.51 0-.71l-2.79-2.8a.5.5 0 0 0-.85.36zM8.6 17H20c.55 0 1-.45 1-1s-.45-1-1-1H8.6c-.55 0-1 .45-1 1s.45 1 1 1zM3 4c0 .55.45 1 1 1h16c.55 0 1-.45 1-1s-.45-1-1-1H4c-.55 0-1 .45-1 1zm5.6 5H20c.55 0 1-.45 1-1s-.45-1-1-1H8.6c-.55 0-1 .45-1 1s.45 1 1 1zm0 4H20c.55 0 1-.45 1-1s-.45-1-1-1H8.6c-.55 0-1 .45-1 1s.45 1 1 1z"})),i=()=>React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},React.createElement("path",{fill:"none",d:"M0 0h24v24H0V0z"}),React.createElement("path",{d:"M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96zM19 18H6c-2.21 0-4-1.79-4-4s1.79-4 4-4h.71C7.37 7.69 9.48 6 12 6c3.04 0 5.5 2.46 5.5 5.5v.5H19c1.66 0 3 1.34 3 3s-1.34 3-3 3z"})),c=()=>React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},React.createElement("path",{fill:"none",d:"M0 0h24v24H0V0z"}),React.createElement("path",{d:"M19.44 12.99l-.01.02c.04-.33.08-.67.08-1.01 0-.34-.03-.66-.07-.99l.01.02 2.44-1.92-2.43-4.22-2.87 1.16.01.01c-.52-.4-1.09-.74-1.71-1h.01L14.44 2H9.57l-.44 3.07h.01c-.62.26-1.19.6-1.71 1l.01-.01-2.88-1.17-2.44 4.22 2.44 1.92.01-.02c-.04.33-.07.65-.07.99 0 .34.03.68.08 1.01l-.01-.02-2.1 1.65-.33.26 2.43 4.2 2.88-1.15-.02-.04c.53.41 1.1.75 1.73 1.01h-.03L9.58 22h4.85s.03-.18.06-.42l.38-2.65h-.01c.62-.26 1.2-.6 1.73-1.01l-.02.04 2.88 1.15 2.43-4.2s-.14-.12-.33-.26l-2.11-1.66zM12 15.5c-1.93 0-3.5-1.57-3.5-3.5s1.57-3.5 3.5-3.5 3.5 1.57 3.5 3.5-1.57 3.5-3.5 3.5z"})),l=()=>React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},React.createElement("path",{d:"M8 6.82v10.36c0 .79.87 1.27 1.54.84l8.14-5.18c.62-.39.62-1.29 0-1.69L9.54 5.98C8.87 5.55 8 6.03 8 6.82z"})),s=()=>React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},React.createElement("path",{d:"M8 19c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2s-2 .9-2 2v10c0 1.1.9 2 2 2zm6-12v10c0 1.1.9 2 2 2s2-.9 2-2V7c0-1.1-.9-2-2-2s-2 .9-2 2z"})),u=()=>React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},React.createElement("path",{d:"M12 5V2.21c0-.45-.54-.67-.85-.35l-3.8 3.79c-.2.2-.2.51 0 .71l3.79 3.79c.32.31.86.09.86-.36V7c3.73 0 6.68 3.42 5.86 7.29-.47 2.26-2.14 3.99-4.39 4.53-3.64.88-6.93-1.6-7.42-4.96-.06-.49-.48-.86-.97-.86-.6 0-1.08.53-1 1.13.63 4.47 4.94 7.75 9.77 6.67 3.09-.69 5.39-3.08 5.99-6.19C20.84 9.48 16.94 5 12 5zm-1.31 8.9l.25-2.17h2.39v.71h-1.7l-.11.92c.03-.02.07-.03.11-.05s.09-.04.15-.05.12-.03.18-.04.13-.02.2-.02c.21 0 .39.03.55.1s.3.16.41.28.2.27.25.45.09.38.09.6c0 .19-.03.37-.09.54s-.15.32-.27.45-.27.24-.45.31-.39.12-.64.12c-.18 0-.36-.03-.53-.08s-.32-.14-.46-.24-.24-.24-.32-.39-.13-.33-.13-.53h.84c.02.18.08.32.19.41s.25.15.42.15c.11 0 .2-.02.27-.06s.14-.1.18-.17.08-.15.11-.25.03-.2.03-.31-.01-.21-.04-.31-.07-.17-.13-.24-.13-.12-.21-.15-.19-.05-.3-.05c-.08 0-.15.01-.2.02s-.11.03-.15.05-.08.05-.12.07-.07.06-.1.09l-.67-.16z"})),m=()=>React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},React.createElement("path",{d:"M18.87 13c-.5 0-.91.37-.98.86-.48 3.37-3.77 5.84-7.42 4.96-2.25-.54-3.91-2.27-4.39-4.53C5.27 10.42 8.22 7 11.95 7v2.79c0 .45.54.67.85.35l3.79-3.79c.2-.2.2-.51 0-.71L12.8 1.85c-.31-.31-.85-.09-.85.35V5c-4.94 0-8.84 4.48-7.84 9.6.6 3.11 2.9 5.5 5.99 6.19 4.83 1.08 9.15-2.2 9.77-6.67.09-.59-.4-1.12-1-1.12zm-6.44 2.15c-.05.07-.11.13-.18.17s-.17.06-.27.06c-.17 0-.31-.05-.42-.15s-.17-.24-.19-.41h-.84c.01.2.05.37.13.53s.19.28.32.39.29.19.46.24.35.08.53.08c.24 0 .46-.04.64-.12s.33-.18.45-.31.21-.28.27-.45.09-.35.09-.54c0-.22-.03-.43-.09-.6s-.14-.33-.25-.45-.25-.22-.41-.28-.34-.1-.55-.1c-.07 0-.14.01-.2.02s-.13.02-.18.04-.1.03-.15.05-.08.04-.11.05l.11-.92h1.7v-.71H10.9l-.25 2.17.67.17c.03-.03.06-.06.1-.09s.07-.05.12-.07.1-.04.15-.05.13-.02.2-.02c.12 0 .22.02.3.05s.16.09.21.15.1.14.13.24.04.19.04.31-.01.22-.03.31-.06.17-.11.24z"})),p=()=>React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},React.createElement("path",{fill:"none",d:"M0 0h24v24H0V0z"}),React.createElement("path",{d:"M19 4H5c-1.11 0-2 .9-2 2v12c0 1.1.9 2 2 2h3c.55 0 1-.45 1-1s-.45-1-1-1H5V8h14v10h-3c-.55 0-1 .45-1 1s.45 1 1 1h3c1.1 0 2-.9 2-2V6c0-1.1-.89-2-2-2zm-7.35 6.35l-2.79 2.79c-.32.32-.1.86.35.86H11v5c0 .55.45 1 1 1s1-.45 1-1v-5h1.79c.45 0 .67-.54.35-.85l-2.79-2.79c-.19-.2-.51-.2-.7-.01z"})),d=()=>React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},React.createElement("path",{fill:"none",d:"M0 0h24v24H0V0z"}),React.createElement("path",{opacity:".3",d:"M12 4c-4.41 0-8 3.59-8 8s3.59 8 8 8 8-3.59 8-8-3.59-8-8-8zm4 10.59L14.59 16 12 13.41 9.41 16 8 14.59 10.59 12 8 9.41 9.41 8 12 10.59 14.59 8 16 9.41 13.41 12 16 14.59z"}),React.createElement("path",{d:"M14.59 8L12 10.59 9.41 8 8 9.41 10.59 12 8 14.59 9.41 16 12 13.41 14.59 16 16 14.59 13.41 12 16 9.41zM12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z"})),h=()=>React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},React.createElement("path",{fill:"none",d:"M0 0h24v24H0V0z"}),React.createElement("path",{d:"M19 13v5c0 .55-.45 1-1 1H6c-.55 0-1-.45-1-1v-5c0-.55-.45-1-1-1s-1 .45-1 1v6c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-6c0-.55-.45-1-1-1s-1 .45-1 1zm-6-.33l1.88-1.88c.39-.39 1.02-.39 1.41 0 .39.39.39 1.02 0 1.41l-3.59 3.59c-.39.39-1.02.39-1.41 0L7.7 12.2c-.39-.39-.39-1.02 0-1.41.39-.39 1.02-.39 1.41 0L11 12.67V4c0-.55.45-1 1-1s1 .45 1 1v8.67z"})),g=()=>React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},React.createElement("path",{fill:"none",d:"M0 0h24v24H0V0z"}),React.createElement("path",{className:"lock-open",d:"M12 13c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm6-5h-1V6c0-2.76-2.24-5-5-5-2.28 0-4.27 1.54-4.84 3.75-.14.54.18 1.08.72 1.22.53.14 1.08-.18 1.22-.72C9.44 3.93 10.63 3 12 3c1.65 0 3 1.35 3 3v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zm0 11c0 .55-.45 1-1 1H7c-.55 0-1-.45-1-1v-8c0-.55.45-1 1-1h10c.55 0 1 .45 1 1v8z"}),React.createElement("path",{className:"lock-close",d:"M18 8h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zm-6 9c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zM9 8V6c0-1.66 1.34-3 3-3s3 1.34 3 3v2H9z"})),f=()=>React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},React.createElement("path",{fill:"none",d:"M0 0h24v24H0V0z"}),React.createElement("path",{d:"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm-1 4H8c-1.1 0-1.99.9-1.99 2L6 21c0 1.1.89 2 1.99 2H19c1.1 0 2-.9 2-2V11l-6-6zM8 21V7h6v5h5v9H8z"})),v=()=>React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},React.createElement("path",{fill:"none",d:"M0 0h24v24H0V0z"}),React.createElement("path",{d:"M9.17 6l2 2H20v10H4V6h5.17M10 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2h-8l-2-2z"})),y=()=>React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},React.createElement("path",{fill:"none",d:"M0 0h24v24H0V0z"}),React.createElement("path",{d:"M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96zM19 18H6c-2.21 0-4-1.79-4-4 0-2.05 1.53-3.76 3.56-3.97l1.07-.11.5-.95C8.08 7.14 9.94 6 12 6c2.62 0 4.88 1.86 5.39 4.43l.3 1.5 1.53.11c1.56.1 2.78 1.41 2.78 2.96 0 1.65-1.35 3-3 3zM8 13h2.55v3h2.9v-3H16l-4-4z"})),b=()=>React.createElement("svg",{className:"github-svg",xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 16 16"},React.createElement("path",{d:"M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z"})),R=()=>React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},React.createElement("path",{fill:"none",d:"M0 0h24v24H0V0z"}),React.createElement("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zM9.29 16.29L5.7 12.7c-.39-.39-.39-1.02 0-1.41.39-.39 1.02-.39 1.41 0L10 14.17l6.88-6.88c.39-.39 1.02-.39 1.41 0 .39.39.39 1.02 0 1.41l-7.59 7.59c-.38.39-1.02.39-1.41 0z"})),E=()=>React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},React.createElement("path",{fill:"none",d:"M0 0h24v24H0V0z"}),React.createElement("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 15c-.55 0-1-.45-1-1v-4c0-.55.45-1 1-1s1 .45 1 1v4c0 .55-.45 1-1 1zm1-8h-2V7h2v2z"})),w=()=>React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},React.createElement("path",{fill:"none",d:"M0 0h24v24H0V0z"}),React.createElement("path",{d:"M2.73 21h18.53c.77 0 1.25-.83.87-1.5l-9.27-16c-.39-.67-1.35-.67-1.73 0l-9.27 16c-.38.67.1 1.5.87 1.5zM13 18h-2v-2h2v2zm-1-4c-.55 0-1-.45-1-1v-2c0-.55.45-1 1-1s1 .45 1 1v2c0 .55-.45 1-1 1z"})),x=()=>React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},React.createElement("path",{fill:"none",d:"M0 0h24v24H0z"}),React.createElement("path",{d:"M8.2 10.5c-.4-.3-1-.5-1.5-.4 0 0-3.6-3-4.3-4.3-.5-1-.6-2.8 0-3.4.6-.6 2.4-.5 3.4 0C7 3.1 10 6.7 10 6.7c0 .6 0 1.1.4 1.6l-2.3 2.2zM18.7 17.8l.3-.2 1 .9 2 3-.5.5-3-1.9-1-1.1.3-.3L14 15l1-1 3.7 3.9z"}),React.createElement("path",{d:"M13.2 7.8c-.5-1.6 0-3.3 1.1-4.5a4.5 4.5 0 0 1 4.4-1.1L16 4.7l.7 2.5 2.5.7 2.5-2.5c.4 1.5 0 3.1-1.1 4.3a4.5 4.5 0 0 1-4.6 1.1L5.6 21.4a2.1 2.1 0 0 1-3 0c-.8-.8-.8-2.2 0-3L13.2 7.8zM3.9 21c.5 0 .8-.3.8-.8a.8.8 0 1 0-1.6 0c0 .5.4.8.8.8z"}))},1542:(e,t,a)=>{"use strict";a.r(t),a.d(t,{Synchronizer:()=>w});var r=a(15),n=a(4369),o=a(755),i=a(4402),c=a(1966),l=a(2537);const{useState:s,useCallback:u}=React,m=React.memo((({syncMode:e,setSyncMode:t,lrcDispatch:a,prefState:n})=>{const[o,i]=s(),[m,p]=s(),d=u((()=>{t((e=>0===e?1:0))}),[t]),h=u((()=>{a({type:7,payload:e=>{const t=(0,r.Pz)(e,n);i((e=>(e&&URL.revokeObjectURL(e),URL.createObjectURL(new Blob([t],{type:"text/plain;charset=UTF-8"}))))),p((0,c.L)(e.info))}})}),[a,n]),g=0===e?"select":"highlight",f=["aside-button","syncmode-button","ripple","glow ",g].join(" ");return React.createElement("aside",{className:"aside-panel"},React.createElement("button",{className:f,onClick:d,"aria-label":`${g} mode`},React.createElement(l.hL,null)),React.createElement("a",{href:o,download:m,className:"aside-button ripple glow",onClick:h},React.createElement(l.ID,null)))}));m.displayName=m.name;const{useState:p,useEffect:d,useRef:h}=React,g=({fixed:e})=>{const t=h(Symbol(g.name)),[a,o]=p(n._m.currentTime),[i,c]=p(n._m.paused),[l,s]=p(n._m.playbackRate);return d((()=>n.uQ.sub(t.current,(e=>{switch(e.type){case 0:c(e.payload);break;case 2:s(e.payload)}}))),[]),d((()=>{const a=[1,10,100,1e3][e]*l;if(i||2*a>60)return n.hh.sub(t.current,(e=>{o(e)}));{const e=setInterval((()=>{o(n._m.currentTime)}),1e3/(2*a));return()=>{clearInterval(e)}}}),[e,i,l]),React.createElement("time",{className:"curser"},(0,r.Zr)(a,e))},{useCallback:f,useContext:v,useEffect:y,useRef:b,useState:R}=React,E=({sync:e})=>React.createElement("button",{className:"space-button",onClick:e},"space"),w=({state:e,dispatch:t})=>{const a=b(Symbol(w.name)),{selectIndex:r,currentIndex:c,lyric:l}=e,{prefState:s,lang:u}=v(i.T);y((()=>{t({type:4,payload:{name:"tool",value:`${u.app.name} https://lrc-maker.github.io`}})}),[t,u]);const[p,d]=R((()=>sessionStorage.getItem("sync-mode")===1..toString()?1:0));y((()=>{sessionStorage.setItem("sync-mode",p.toString())}),[p]);const h=b(null),g={0:r,1:c}[p];y((()=>{var e;const t=null===(e=h.current)||void 0===e?void 0:e.children[g];void 0!==t&&t.scrollIntoView({behavior:"smooth",block:"center",inline:"center"})}),[g]),y((()=>n.hh.sub(a.current,(e=>{t({type:1,payload:e})}))),[t]);const k=f((()=>{n._m.duration&&t({type:2,payload:n._m.currentTime})}),[t]),T=f(((e,a,r)=>{var o;if(!n._m.duration)return;const i=null===(o=l[r])||void 0===o?void 0:o.time;void 0!==i&&t({type:3,payload:n._m.step(e,a,i)})}),[t,l]);y((()=>{const e=e=>{const{code:a,key:n,target:i}=e,c=a||n;if(!(0,o.y)(i))return"Backspace"===c||"Delete"===c||"Del"===c?(e.preventDefault(),void t({type:6,payload:void 0})):"Digit0"===a||"0"===n?(e.preventDefault(),void T(e,0,r)):"Minus"===a||"-"===n||"_"===n?(e.preventDefault(),void T(e,-.5,r)):"Equal"===a||"+"===n||"="===n?(e.preventDefault(),void T(e,.5,r)):void(!0!==e.metaKey&&!0!==e.ctrlKey&&("Space"===a||" "===n||"Spacebar"===n?(e.preventDefault(),k()):["ArrowUp","KeyW","KeyJ","Up","W","w","J","j"].includes(c)?(e.preventDefault(),t({type:5,payload:e=>e-1})):["ArrowDown","KeyS","KeyK","Down","S","s","K","k"].includes(c)?(e.preventDefault(),t({type:5,payload:e=>e+1})):"Home"===c?(e.preventDefault(),t({type:5,payload:()=>0})):"End"===c?(e.preventDefault(),t({type:5,payload:()=>1/0})):"PageUp"===c?(e.preventDefault(),t({type:5,payload:e=>e-10})):"PageDown"===c&&(e.preventDefault(),t({type:5,payload:e=>e+10}))))};return document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)}}),[T,t,r,k]);const S=f((e=>{e.stopPropagation();const a=e.target;if(a.classList.contains("line")){const e=Number.parseInt(a.dataset.key,10)||0;t({type:5,payload:()=>e})}}),[t]),N=f((e=>{if(e.stopPropagation(),!n._m.duration)return;const t=e.target;if(t.classList.contains("line")){const a=Number.parseInt(t.dataset.key,10);T(e,0,a)}}),[T]),C=f(((e,t,a)=>{const n=t===r,o=t===c,i=t>0&&a[t].time<=a[t-1].time,l=Object.entries({line:!0,select:n,highlight:o,error:i}).reduce(((e,[t,a])=>(a&&e.push(t),e)),[]).join(" ");return React.createElement(x,{key:t,index:t,className:l,line:e,select:n,prefState:s})}),[r,c,s]),L=s.screenButton?"lyric-list on-screen-button":"lyric-list";return React.createElement(React.Fragment,null,React.createElement("ul",{ref:h,className:L,onClickCapture:S,onDoubleClickCapture:N},e.lyric.map(C)),React.createElement(m,{syncMode:p,setSyncMode:d,lrcDispatch:t,prefState:s}),s.screenButton&&React.createElement(E,{sync:k}))},x=({line:e,index:t,select:a,className:n,prefState:o})=>{const i=(0,r.Zr)(e.time,o.fixed),c=(0,r.RZ)(e.text,o.spaceStart,o.spaceEnd);return React.createElement("li",{key:t,"data-key":t,className:n},a&&React.createElement(g,{fixed:o.fixed}),React.createElement("time",{className:"line-time"},i),React.createElement("span",{className:"line-text"},c))}},7844:(e,t,a)=>{"use strict";a.d(t,{F:()=>m,N:()=>o});var r=a(3870),n=a(2537);const o=(0,r.P)(),{useCallback:i,useEffect:c,useRef:l,useState:s}=React,u={id:0},m=()=>{const e=l(Symbol(m.name)),[t,a]=s([]);c((()=>{o.sub(e.current,(e=>{a((t=>[Object.assign({id:u.id++},e),...t]))}))}),[]);const r=i((e=>{"slide-out-right"===e.animationName&&a((e=>e.slice(0,-1)))}),[]),p=i((e=>{const t={info:React.createElement(n.go,null),success:React.createElement(n.Jm,null),warning:React.createElement(n.Cn,null)}[e.type];return React.createElement("section",{className:"toast",key:e.id},React.createElement("section",{className:`toast-badge toast-${e.type}`},t),React.createElement("section",{className:"toast-text"},e.text))}),[]);return React.createElement("div",{className:"toast-queue",onAnimationEnd:r},t.map(p))}},418:(e,t,a)=>{"use strict";a.d(t,{h:()=>c,l:()=>n});var r=a(15);const n=(e,t,a)=>e<t?t:e>a?a:e,o=(e,t)=>{switch(t.type){case 0:{const{text:a,options:o}=t.payload,i=(0,r.E2)(a,o),c=n(e.selectIndex,0,i.lyric.length-1);return Object.assign(Object.assign(Object.assign({},e),i),{selectIndex:c})}case 1:{const a=t.payload;if(a>=e.currentTime&&a<e.nextTime)return e;const r=e.lyric.reduce(((e,t,r)=>(t.time&&(t.time<e.nextTime&&t.time>a&&(e.nextTime=t.time,e.nextIndex=r),t.time>e.currentTime&&t.time<=a&&(e.currentTime=t.time,e.currentIndex=r)),e)),{currentTime:-1/0,currentIndex:-1/0,nextTime:1/0,nextIndex:1/0});return((e,t)=>{for(const a in t)if(e[a]!==t[a])return Object.assign(Object.assign({},e),t);return e})(e,r)}case 2:{const a=e.selectIndex,r=e.lyric,i=n(a+1,0,r.length-1);return Object.assign(Object.assign({},o(e,{type:3,payload:t.payload})),{selectIndex:i})}case 3:{const a=t.payload,r=e.selectIndex;let n=e.lyric;if(n[r].time!==a){const e=n.slice();e[r]={text:n[r].text,time:a},n=e}return Object.assign(Object.assign({},e),{lyric:n,currentTime:a,nextTime:-1/0})}case 4:{const{name:a,value:r}=t.payload,n=new Map(e.info);return""===r.trim()?n.delete(a):n.set(a,r.trim()),Object.assign(Object.assign({},e),{info:n})}case 5:{const a=n(t.payload(e.selectIndex),0,e.lyric.length-1);return e.selectIndex===a?e:Object.assign(Object.assign({},e),{selectIndex:a})}case 6:{const{selectIndex:t,currentIndex:a}=e;let r=e.lyric;if(void 0!==r[t].time){const n=r.slice();n[t]={text:r[t].text},r=n;let{currentTime:o,nextTime:i}=e;return t===a&&(o=1/0,i=-1/0),Object.assign(Object.assign({},e),{lyric:r,currentTime:o,nextTime:i})}return e}case 7:return t.payload(e),e}return e},i=e=>{const{text:t,options:a,select:n}=e();return Object.assign(Object.assign({},(0,r.E2)(t,a)),{currentTime:1/0,currentIndex:1/0,nextTime:-1/0,nextIndex:-1/0,selectIndex:n})},c=e=>React.useReducer(o,e,i)},8777:(e,t,a)=>{"use strict";a.d(t,{EN:()=>n,f6:()=>l,um:()=>r});const r=JSON.parse(document.getElementById("app-info").textContent),n={orange:"#ff691f",yellow:"#fab81e",lime:"#7fdbb6",green:"#19cf86",blue:"#91d2fa",navy:"#1b95e0",grey:"#abb8c2",red:"#e81c4f",pink:"#f58ea8",purple:"#c877fe"},o={lang:"en-US",spaceStart:1,spaceEnd:0,fixed:3,builtInAudio:!1,screenButton:!1,themeColor:n.pink,themeMode:0},i=(e,t)=>{const a=t.payload;return Object.assign(Object.assign({},e),{[t.type]:"function"==typeof a?a(e):a})},c=e=>{const t=o,a=navigator.languages||[navigator.language||"en-US"];t.lang=a.map((e=>"zh"===e?"zh-CN":e.startsWith("en")?"en-US":e)).find((e=>e in r.languages))||"en-US";try{const a=JSON.parse(e()),r=Object.keys(o);for(const e of r)e in a&&(t[e]=a[e])}catch(n){}return t},l=e=>React.useReducer(i,e,c)},5870:(e,t,a)=>{"use strict";a.r(t),a.d(t,{language:()=>r});const r={languageName:"English",app:{name:"LRC Maker",fullname:"Akari's LRC Maker"},header:{home:"home",editor:"editor",synchronizer:"synchronizer",gist:"Github Gist",preferences:"preferences"},audio:{loadAudio:"load audio",play:"play",pause:"pause",replay5s:"replay 5s",forward5s:"forward 5s",resetRate:"reset playback rate",error:["audio error","audio aborted by user","audio network error","audio decoding error","audio not supported"]},loadAudio:{file:"File",url:"URL",loadFile:"Click here or drop audio file in this page"},home:{tips:"Tips",tipForLyricText:"Navigate to the editor page and paste lyric text.",tipForUploadAudio:"Click the bottom left button to load audio file.",tipForSynchronizer:"Navigate to synchronizer page and make your lrc :)",tipTopLeft:"Click here come back to this page",tipTopRight:"Click here to navigate to other page",tipBottomLeft:"load audio here, and control the audio",tipBottomRight:"change the playback rate here"},editor:{metaInfo:"meta info",album:"album",title:"title",artist:"artist",uploadText:"upload text",copyText:"select all and copy",downloadText:"download",saveToGist:"save to Github Gist",saveFileName:"Filename",utils:"lrc utils"},gist:{newTokenTip:"LRC Maker use Github Token to fetch and store data to Github Gist",newTokenButton:"Generate a new Github Token",newGistTip:"Create a new Gist repository or assign an existing Gist id",newGistRepoButton:"Create a new Gist Repository",gistIdPlaceholder:"Or assign an existing Gist id",info:"info",clearTokenAndGist:"Clear token and Gist id"},preferences:{version:"Version",commitHash:"Commit hash",updateTime:"Update time",repo:"Repository",help:"Help & tips",language:"Language",builtInAudio:"Use browser built-in audio player",spaceButton:"On-screen space key",themeColor:"Theme color",lrcFormat:"LRC formtat adjust",fixed:"Timestamp fixed",leftSpace:"Left space",rightSpace:"Right space",clearCache:"Clear caches",themeMode:{label:"Theme Mode",auto:"auto",light:"light",dark:"dark"}},notify:{audioLoaded:"Audio loaded."}}},9758:(e,t,a)=>{"use strict";a.r(t),a.d(t,{language:()=>r});const r={languageName:"日本語",app:{name:"歌詞スクロールちゃん",fullname:"あかりの歌詞スクロールちゃん"},header:{home:"ホームページ",editor:"編集",synchronizer:"同期",gist:"Github Gist",preferences:"設定"},audio:{loadAudio:"オーディオファイルを読み込む",play:"再生",pause:"停止",replay5s:"5秒戻る",forward5s:"5秒進む",resetRate:"再生速度をリセット",error:["オーディオエラー","オーディオダウンロードエラー","オーディオネットワークエラー","オーディオデコードエラー","ブラウザでサポートされていないオーディオ"]},loadAudio:{file:"ファイル",url:"URL",loadFile:"ここをクリックするか、このページにオーディオファイルをドロップしてください"},home:{tips:"プロンプト",tipForLyricText:"編集ページに切り替えて歌詞のテキストを貼り付けます。",tipForUploadAudio:"左下のボタンをクリックしてオーディオファイルをロードします。",tipForSynchronizer:"同期ページに切り替えてスクロール歌詞を作り始めます〜",tipTopLeft:"このヘルプページに戻るにはここをクリック",tipTopRight:"ページを切り替えるにはここをクリック",tipBottomLeft:"ここでオーディオをロードして再生を制御できます。",tipBottomRight:"ここでは再生速度を変更できます"},editor:{metaInfo:"メタ情報",album:"アルバム",title:"曲名",artist:"アーティスト名",uploadText:"テキストを読み込む",copyText:"すべて選択してコピー",downloadText:"ダウンロード",saveToGist:"Github Gistに保存",saveFileName:"ファイル名",utils:"lrc utils"},gist:{newTokenTip:"歌詞スクロールちゃんはGithub Gistにデータを取得して保存するためにGithubトークンを使用します",newTokenButton:"新しいGithubトークンを生成する",newGistTip:"新しいGistリポジトリを作成するか、既存のGist IDを割り当てます",newGistRepoButton:"新しいGistリポジトリを作成する",gistIdPlaceholder:"または既存のGist IDを割り当てる",info:"情報",clearTokenAndGist:"クリアトークンとGIST ID"},preferences:{version:"バージョン",commitHash:"Commit hash",updateTime:"更新時間",repo:"プロジェクトURL",help:"について&ヘルプ",language:"言語(language)",builtInAudio:"ブラウザ内蔵のオーディオプレーヤーを使用する",spaceButton:"画面上のスペースキー",themeColor:"テーマカラー",lrcFormat:"歌詞出力フォーマット制御",fixed:"タイムスタンプ小数点",leftSpace:"左側のスペース",rightSpace:"右側スペース",clearCache:"キャッシュをクリア",themeMode:{label:"テーマモード",auto:"自動",light:"ライト",dark:"ダーク"}},notify:{audioLoaded:"オーディオがロードされました"}}},4089:(e,t,a)=>{"use strict";a.r(t),a.d(t,{language:()=>r});const r={languageName:"한국어",app:{name:"LRC 메이커",fullname:"Akari의 LRC 메이커"},header:{home:"홈",editor:"편집기",synchronizer:"동기화",gist:"Github Gist",preferences:"설정"},audio:{loadAudio:"음원 로드하기",play:"재생",pause:"일시 중지",replay5s:"5초 뒤로 가기",forward5s:"5초 건더 뛰기",resetRate:"재생 속도 다시 설정",error:["오디오 오류","사용자가 오디오를 중단됨","오디오 넷워크 오류","오디오 디코딩 오류","오디오 지원하지 앖습니다"]},loadAudio:{file:"파일",url:"링크",loadFile:"여기로 파일 선택하기 또는 오디오 파일을 이 페이지에 드롭하기"},home:{tips:"팁",tipForLyricText:"편집기 페이지에 가사 텍스트를 붙여넣기.",tipForUploadAudio:"왼쪽 하단에는 버튼 클릭하면 오디오 파일 로드하기.",tipForSynchronizer:"동기화 페이기에 당신의 가사를 만드세요 :)",tipTopLeft:"에기에 클릭하면 이 페이지 돌아와세요",tipTopRight:"에기에 다른 페이지 탐색하세요",tipBottomLeft:"여기에 오리오를 로드하고 제어하세요",tipBottomRight:"여기에 재생 속도를 조정하세요"},editor:{metaInfo:"메타 정보",album:"앨범",title:"트랙 이름",artist:"아티스트",uploadText:"텍스트 업로드",copyText:"모두 선택 및 복사",downloadText:"다운로드",saveToGist:"GitHub Gist에 저장하기",saveFileName:"파일 이름",utils:"lrc 도구"},gist:{newTokenTip:"LRC 메이커는 GitHub 토큰으로 GitHub Gist 에서 데이터를 접근하고 저장합니다",newTokenButton:"새로운 GitHub 토큰 생성하기",newGistTip:"Create a new Gist repository or assign an existing Gist id",newGistRepoButton:"Create a new Gist Repository",gistIdPlaceholder:"Or assign an existing Gist id",info:"info",clearTokenAndGist:"Clear token and Gist id"},preferences:{version:"버전",commitHash:"토밋 헤시",updateTime:"업데이트 시간",repo:"저장고",help:"도움말 및 팁",language:"언어(language)",builtInAudio:"브라우저 빌트인 오디오 재생기 사용하기",spaceButton:"온 스크린 스페이스 키",themeColor:"모양색",lrcFormat:"LRC 포멧 조정",fixed:"타임 스템 고치됨",leftSpace:"왼쪽 스페이스",rightSpace:"오른쪽 스페이스",clearCache:"캐시 제거",themeMode:{label:"모양 모드",auto:"자동",light:"라이트",dark:"다크"}},notify:{audioLoaded:"음원 로드됨"}}},378:(e,t,a)=>{"use strict";a.r(t),a.d(t,{language:()=>r});const r={languageName:"Português",app:{name:"Criador de LRC",fullname:"Criador de LRC de Akari"},header:{home:"início",editor:"editor",synchronizer:"sincronizador",gist:"Github Gist",preferences:"preferências"},audio:{loadAudio:"carregar áudio",play:"play",pause:"pausar",replay5s:"repetir 5s",forward5s:"avançar 5s",resetRate:"redefinir a taxa de reprodução",error:["erro de áudio","áudio abortado pelo usuário","erro de rede de áudio","erro de decodificação de áudio","áudio não suportado"]},loadAudio:{file:"Arquivo",url:"URL",loadFile:"Clique aqui ou solte um arquivo de áudio nesta página"},home:{tips:"Dicas",tipForLyricText:"Navegue até a página do editor e cole o texto da letra.",tipForUploadAudio:"Clique no botão inferior esquerdo para carregar o arquivo de áudio.",tipForSynchronizer:"Navegue até a página do sincronizador e faça seu lrc :)",tipTopLeft:"Clique aqui para voltar a esta página",tipTopRight:"Clique aqui para navegar para outra página",tipBottomLeft:"carregue o áudio aqui e controle o áudio",tipBottomRight:"altere a taxa de reprodução aqui"},editor:{metaInfo:"informações meta",album:"álbum",title:"título",artist:"artista",uploadText:"enviar texto",copyText:"selecione tudo e copie",downloadText:"baixar",saveToGist:"salvar no Github Gist",saveFileName:"Nome do arquivo",utils:"lrc utils"},gist:{newTokenTip:"o Criador de LRC usa o Token do Github para recolher e armazenar dados para o Github Gist",newTokenButton:"Gerar um novo Token do Github",newGistTip:"Criar um novo repositório Gist ou atribuir um id Gist existente",newGistRepoButton:"Criar um novo Repositório Gist",gistIdPlaceholder:"Ou atribuir um id Gist existente",info:"informação",clearTokenAndGist:"Limpar Token e id Gist"},preferences:{version:"Versão",commitHash:"Commit hash",updateTime:"Tempo de atualização",repo:"Repositório",help:"Ajuda e dicas",language:"Linguagem",builtInAudio:"Use o player de áudio integrado do navegador",spaceButton:"Tecla de espaço na tela",themeColor:"Cor do tema",lrcFormat:"Ajuste de formato LRC",fixed:"Data-de-tempo fixo",leftSpace:"Espaço esquerdo",rightSpace:"Espaço direito",clearCache:"Limpar cache",themeMode:{label:"Modo de tema",auto:"auto",light:"claro",dark:"escuro"}},notify:{audioLoaded:"Áudio carregado"}}},2434:(e,t,a)=>{"use strict";a.r(t),a.d(t,{language:()=>r});const r={languageName:"简体中文",app:{name:"歌词滚动姬",fullname:"灯里的歌词滚动姬"},header:{home:"主页",editor:"编辑",synchronizer:"打轴",gist:"Github Gist",preferences:"设置"},audio:{loadAudio:"加载音频",play:"播放",pause:"暂停",replay5s:"后退 5 秒",forward5s:"前进 5 秒",resetRate:"重置播放速度",error:["音频错误","音频请求被用户终止","音频网络请求错误","音频解码错误","浏览器无法支持此音频格式"]},loadAudio:{file:"文件",url:"外链",loadFile:"点击这里或直接拖放音频到这个页面"},home:{tips:"提示",tipForLyricText:"切换到编辑页面,粘贴歌词文本。",tipForUploadAudio:"点击左下方按钮,载入音频文件。",tipForSynchronizer:"切换到打轴页面,开始制作滚动歌词吧~",tipTopLeft:"点击这里可以回到这个帮助页面",tipTopRight:"点击这里切换页面",tipBottomLeft:"这里可以加载音频,控制播放",tipBottomRight:"这里可以调节播放速度"},editor:{metaInfo:"元信息",album:"所属专辑",title:"歌曲名",artist:"艺人名",uploadText:"加载文本",copyText:"全选复制",downloadText:"下载",saveToGist:"保存到 Github Gist",saveFileName:"文件名",utils:"实用工具"},gist:{newTokenTip:"歌词滚动姬使用 Github Token 来存取 Github Gist 上的数据",newTokenButton:"生成新的 Github Token",newGistTip:"创建一个新的 Gist 仓库或指定一个已存在的 Gist id",newGistRepoButton:"创建一个新的 Gist 仓库",gistIdPlaceholder:"或指定一个已存在的 Gist id",info:"信息",clearTokenAndGist:"清除 Github Token 和 Gist id"},preferences:{version:"版本",commitHash:"Commit hash",updateTime:"更新时间",repo:"项目地址",help:"关于 & 帮助",language:"语言(language)",builtInAudio:"使用浏览器内建音频播放器",spaceButton:"启用虚拟空格键",themeColor:"主题颜色",lrcFormat:"歌词输出格式控制",fixed:"时间标签小数点",leftSpace:"左侧空格",rightSpace:"右侧空格",clearCache:"清除缓存",themeMode:{label:"主题模式",auto:"跟随系统",light:"亮色模式",dark:"暗色模式"}},notify:{audioLoaded:"音频已载入"}}},3441:(e,t,a)=>{"use strict";a.r(t),a.d(t,{language:()=>r});const r={languageName:"繁體中文(香港)",app:{name:"歌詞滾動姬",fullname:"小明的歌詞滾動姬"},header:{home:"主頁",editor:"編輯",synchronizer:"同步",gist:"Github Gist",preferences:"設定"},audio:{loadAudio:"匯入音訊",play:"播放",pause:"暫停",replay5s:"倒轉 5s",forward5s:"快轉 5s",resetRate:"重設播放速度",error:["音訊錯誤","音訊請求被用戶終止","音訊網絡請求錯誤","音訊解碼錯誤","瀏覽器無法支援此音訊格式"]},loadAudio:{file:"檔案",url:"URL",loadFile:"點選這裏或直接拖放音訊檔案到這個頁面"},home:{tips:"提示",tipForLyricText:"切換到編輯頁面,黏貼歌詞文本。",tipForUploadAudio:"點選左下方按鈕,匯入音訊檔案。",tipForSynchronizer:"切換到同步頁面,開始製作滾動歌詞吧~",tipTopLeft:"點選這裏可以回到這個幫助頁面",tipTopRight:"點選這裏切換頁面",tipBottomLeft:"這裏可以加載音訊,控制播放",tipBottomRight:"這裏可以調節播放速度"},editor:{metaInfo:"元數據",album:"所屬專輯",title:"歌曲名",artist:"藝人名",uploadText:"匯入文本",copyText:"全選拷貝",downloadText:"下載",saveToGist:"保存到 Github Gist",saveFileName:"檔名",utils:"實用工具"},gist:{newTokenTip:"歌詞滾動姬使用 Github Token 來存取 Github Gist 上的數據",newTokenButton:"生成新的 Github Token",newGistTip:"創建一個新的 Gist 儲存庫或指定一個已存在的 Gist id",newGistRepoButton:"創建一個新的 Gist 儲存庫",gistIdPlaceholder:"或指定一個已存在的 Gist id",info:"資訊",clearTokenAndGist:"清除 Github Token 和 Gist id"},preferences:{version:"版本",commitHash:"Commit hash",updateTime:"更新時間",repo:"專案地址",help:"關於 & 幫助",language:"語言(language)",builtInAudio:"使用瀏覽器內建音訊播放器",spaceButton:"啓用螢幕 Space 鍵",them