diff --git a/assets/index-03743f4e.js b/assets/index-ef830591.js similarity index 99% rename from assets/index-03743f4e.js rename to assets/index-ef830591.js index 8ae6dcb..c99f005 100644 --- a/assets/index-03743f4e.js +++ b/assets/index-ef830591.js @@ -251,6 +251,6 @@ Created 'C:\\Users\\User\\Desktop\\foobar.json'.`})})]}),Q("hr",{}),_(we,{childr "autoupdate": { "url": "https://gif.ski/gifski-$version.zip" } -}`})}),Q(le,{lg:6,children:"Scoop manifests are simple JSON files, which can be optionally complemented with inline PowerShell statements."})]}),Q("h3",{className:"mt-5 mb-4 text-center fw-normal",children:"Documentation"}),_("p",{className:"text-center",children:["Looking for something specific, or ready to dive into Scoop internals? Check out"," ",Q("a",{href:"https://github.com/ScoopInstaller/Scoop#readme",children:"Scoop's Readme"})," or refer to the"," ",Q("a",{href:"https://github.com/ScoopInstaller/Scoop/wiki",children:"Wiki"}),"."]})]})})},Gb=W.memo(xb),Ob=e=>{const t="light",n="dark",A="preferred-color-scheme",[r,o]=p.useState(kB),[i,a]=p.useState(),[s,l]=p.useState(),u=p.useCallback(()=>{switch(s){case ue.Auto:l(i===ue.Light?ue.Dark:ue.Light);break;case ue.Light:l(i===ue.Light?ue.Auto:ue.Dark);break;case ue.Dark:l(i===ue.Dark?ue.Auto:ue.Light);break}},[s,i]),c=d=>d===null?ue.Auto:typeof d=="boolean"?d?ue.Dark:ue.Light:parseInt(d),g=d=>{const B=document.getElementsByTagName("html")[0];d===ue.Dark?(B.classList.remove(t),B.classList.add(n)):(B.classList.remove(n),B.classList.add(t))};return p.useLayoutEffect(()=>{if(s===void 0||i===void 0)return;let d;s===ue.Auto?(d=i,localStorage.removeItem(A)):(d=s,localStorage.setItem(A,s.toString())),g(d),o({preferedColorScheme:s,browserColorScheme:i,isDarkMode:d===ue.Dark,toggleColorScheme:u})},[i,s,u]),p.useLayoutEffect(()=>{const d=window.matchMedia("(prefers-color-scheme: dark)");d.addEventListener("change",B=>{a(c(B.matches))}),a(c(d.matches)),l(c(localStorage.getItem(A)))},[]),Q(vs.Provider,{value:r,children:e.children})},Tb=()=>_(kr,{className:"footer text-lg-center",children:[Q("hr",{}),_(we,{className:"mb-3",children:[_(le,{md:4,className:"mb-2",children:[Q(sC,{className:"footer-icon"})," ",Q("a",{href:"https://github.com/ScoopInstaller",children:"Scoop"})," created by"," ",Q("a",{href:"https://github.com/lukesampson",children:"lukesampson"})]}),_(le,{md:4,className:"mb-2",children:[Q(sC,{className:"footer-icon"})," ",Q("a",{href:"https://github.com/ScoopInstaller/scoopinstaller.github.io",children:"Website"})," created by"," ",Q("a",{href:"https://github.com/gpailler",children:"gpailler"})," - ","0.2.0","/",Q("a",{href:`https://github.com/ScoopInstaller/scoopinstaller.github.io/commit/a8686bf -`,children:`a8686bf +}`})}),Q(le,{lg:6,children:"Scoop manifests are simple JSON files, which can be optionally complemented with inline PowerShell statements."})]}),Q("h3",{className:"mt-5 mb-4 text-center fw-normal",children:"Documentation"}),_("p",{className:"text-center",children:["Looking for something specific, or ready to dive into Scoop internals? Check out"," ",Q("a",{href:"https://github.com/ScoopInstaller/Scoop#readme",children:"Scoop's Readme"})," or refer to the"," ",Q("a",{href:"https://github.com/ScoopInstaller/Scoop/wiki",children:"Wiki"}),"."]})]})})},Gb=W.memo(xb),Ob=e=>{const t="light",n="dark",A="preferred-color-scheme",[r,o]=p.useState(kB),[i,a]=p.useState(),[s,l]=p.useState(),u=p.useCallback(()=>{switch(s){case ue.Auto:l(i===ue.Light?ue.Dark:ue.Light);break;case ue.Light:l(i===ue.Light?ue.Auto:ue.Dark);break;case ue.Dark:l(i===ue.Dark?ue.Auto:ue.Light);break}},[s,i]),c=d=>d===null?ue.Auto:typeof d=="boolean"?d?ue.Dark:ue.Light:parseInt(d),g=d=>{const B=document.getElementsByTagName("html")[0];d===ue.Dark?(B.classList.remove(t),B.classList.add(n)):(B.classList.remove(n),B.classList.add(t))};return p.useLayoutEffect(()=>{if(s===void 0||i===void 0)return;let d;s===ue.Auto?(d=i,localStorage.removeItem(A)):(d=s,localStorage.setItem(A,s.toString())),g(d),o({preferedColorScheme:s,browserColorScheme:i,isDarkMode:d===ue.Dark,toggleColorScheme:u})},[i,s,u]),p.useLayoutEffect(()=>{const d=window.matchMedia("(prefers-color-scheme: dark)");d.addEventListener("change",B=>{a(c(B.matches))}),a(c(d.matches)),l(c(localStorage.getItem(A)))},[]),Q(vs.Provider,{value:r,children:e.children})},Tb=()=>_(kr,{className:"footer text-lg-center",children:[Q("hr",{}),_(we,{className:"mb-3",children:[_(le,{md:4,className:"mb-2",children:[Q(sC,{className:"footer-icon"})," ",Q("a",{href:"https://github.com/ScoopInstaller",children:"Scoop"})," created by"," ",Q("a",{href:"https://github.com/lukesampson",children:"lukesampson"})]}),_(le,{md:4,className:"mb-2",children:[Q(sC,{className:"footer-icon"})," ",Q("a",{href:"https://github.com/ScoopInstaller/scoopinstaller.github.io",children:"Website"})," created by"," ",Q("a",{href:"https://github.com/gpailler",children:"gpailler"})," - ","0.2.0","/",Q("a",{href:`https://github.com/ScoopInstaller/scoopinstaller.github.io/commit/3d75b60 +`,children:`3d75b60 `})]}),_(le,{md:4,className:"mb-2",children:[Q(Mb,{className:"footer-icon"})," Maintained by the"," ",Q("a",{href:"https://github.com/orgs/ScoopInstaller/people",children:"community"})]})]})]}),Pb=W.memo(Tb);function jC(e){return Ue({tag:"svg",attr:{fill:"currentColor",viewBox:"0 0 16 16"},child:[{tag:"path",attr:{d:"M8 15A7 7 0 1 0 8 1v14zm0 1A8 8 0 1 1 8 0a8 8 0 0 1 0 16z"}}]})(e)}function _C(e){return Ue({tag:"svg",attr:{fill:"currentColor",viewBox:"0 0 16 16"},child:[{tag:"path",attr:{d:"M6 .278a.768.768 0 0 1 .08.858 7.208 7.208 0 0 0-.878 3.46c0 4.021 3.278 7.277 7.318 7.277.527 0 1.04-.055 1.533-.16a.787.787 0 0 1 .81.316.733.733 0 0 1-.031.893A8.349 8.349 0 0 1 8.344 16C3.734 16 0 12.286 0 7.71 0 4.266 2.114 1.312 5.124.06A.752.752 0 0 1 6 .278zM4.858 1.311A7.269 7.269 0 0 0 1.025 7.71c0 4.02 3.279 7.276 7.319 7.276a7.316 7.316 0 0 0 5.205-2.162c-.337.042-.68.063-1.029.063-4.61 0-8.343-3.714-8.343-8.29 0-1.167.242-2.278.681-3.286z"}}]})(e)}function $C(e){return Ue({tag:"svg",attr:{fill:"currentColor",viewBox:"0 0 16 16"},child:[{tag:"path",attr:{d:"M8 11a3 3 0 1 1 0-6 3 3 0 0 1 0 6zm0 1a4 4 0 1 0 0-8 4 4 0 0 0 0 8zM8 0a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 0zm0 13a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 13zm8-5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5zM3 8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2A.5.5 0 0 1 3 8zm10.657-5.657a.5.5 0 0 1 0 .707l-1.414 1.415a.5.5 0 1 1-.707-.708l1.414-1.414a.5.5 0 0 1 .707 0zm-9.193 9.193a.5.5 0 0 1 0 .707L3.05 13.657a.5.5 0 0 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0zm9.193 2.121a.5.5 0 0 1-.707 0l-1.414-1.414a.5.5 0 0 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707zM4.464 4.465a.5.5 0 0 1-.707 0L2.343 3.05a.5.5 0 1 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .708z"}}]})(e)}const Ub=()=>{const{preferedColorScheme:e,browserColorScheme:t,toggleColorScheme:n}=p.useContext(vs);return Q(Mi,{expand:"sm",bg:"dark",variant:"dark",children:_(kr,{children:[_(Mi.Brand,{as:Ar,to:"/",children:[Q("img",{alt:"",src:"https://avatars.githubusercontent.com/u/16618068?s=30",width:"30",height:"30",className:"d-inline-block align-top rounded me-2"}),"Scoop"]}),Q(Mi.Toggle,{"aria-controls":"responsive-navbar-nav"}),_(Mi.Collapse,{id:"responsive-navbar-nav",children:[_(rr,{className:"me-auto",children:[Q(rr.Link,{as:Ar,to:"/apps",children:"Apps"}),Q(rr.Link,{as:Ar,to:"/buckets",children:"Buckets"})]}),_(aA,{onClick:n,size:"sm",variant:"secondary",children:[e==ue.Auto&&(t==ue.Light?Q(jC,{title:"Auto mode. Click to switch to dark mode"}):Q(jC,{title:"Auto mode. Click to switch to light mode"})),e==ue.Light&&(t==ue.Light?Q($C,{title:"Light mode. Click to switch to OS/browser preferred mode"}):Q($C,{title:"Light mode. Click to switch to dark mode"})),e==ue.Dark&&(t==ue.Light?Q(_C,{title:"Dark mode. Click to switch to light mode"}):Q(_C,{title:"Dark mode. Click to switch to OS/browser preferred mode"}))]})]})]})})},Yb=W.memo(Ub),Jb=()=>Q("div",{children:Q(pu.Provider,{value:{className:"react-icon"},children:_(Ob,{children:[Q(Yb,{}),Q(Xy,{}),Q(Pb,{})]})})}),Hb=window.requestIdleCallback||function(t){const n=Date.now();return setTimeout(()=>{t({didTimeout:!1,timeRemaining:function(){return Math.max(0,50-(Date.now()-n))}})},1)},Wr=2,jb=e=>{const{currentPage:t,resultsCount:n,resultsPerPage:A,onPageChange:r}=e,o=i=>{const a=Math.ceil(n/A),s=Math.max(1,Math.min(i,a));r(s)};if(n>0){const i=Math.ceil(n/A);if(t>i&&r(i),i>1){const a=[];let s=Math.max(2,t-Wr),l=Math.min(i-1,t+Wr);const u=Wr*2-(l-s),c=l-(l+u);l=Math.min(i-1,l+u),s=Math.max(2,s+c);for(let g=s;g<=l;g+=1)g===t-Wr+c||g===t+Wr+u?a.push(Q(Xn.Ellipsis,{disabled:!0},g)):a.push(Q(Xn.Item,{active:g===t,onClick:()=>o(g),children:g},g));return _(Xn,{size:"sm",children:[Q(Xn.Prev,{onClick:()=>o(t-1)},"prev"),Q(Xn.Item,{active:t===1,onClick:()=>o(1),children:1},1),a,Q(Xn.Item,{active:i===t,onClick:()=>o(i),children:i},i),Q(Xn.Next,{onClick:()=>o(t+1)},"next")]})}}return Q(dt,{})},_b=W.memo(jb);var $b=Object.defineProperty,Kb=Object.getOwnPropertyDescriptor,zb=(e,t,n,A)=>{for(var r=A>1?void 0:A?Kb(t,n):t,o=e.length-1,i;o>=0;o--)(i=e[o])&&(r=(A?i(t,n,r):i(r))||r);return A&&r&&$b(t,n,r),r};let Nu=class{serialize(e){throw new Error("Conversion not supported")}deserialize(e){return new Date(e)}};Nu=zb([TD],Nu);const qb=Nu;var Wb=Object.defineProperty,Vb=Object.getOwnPropertyDescriptor,Vn=(e,t,n,A)=>{for(var r=A>1?void 0:A?Vb(t,n):t,o=e.length-1,i;o>=0;o--)(i=e[o])&&(r=(A?i(t,n,r):i(r))||r);return A&&r&&Wb(t,n,r),r};let Kt=class{constructor(){this.repository="",this.repositoryOfficial=!1,this.stars=0,this.branchName="",this.filePath="",this.committed=new Date,this.sha=""}};Vn([ve("Repository",String)],Kt.prototype,"repository",2);Vn([ve("OfficialRepository",Boolean)],Kt.prototype,"repositoryOfficial",2);Vn([ve("RepositoryStars",Number)],Kt.prototype,"stars",2);Vn([ve("BranchName",String,!0)],Kt.prototype,"branchName",2);Vn([ve("FilePath",String)],Kt.prototype,"filePath",2);Vn([ve("Committed",qb)],Kt.prototype,"committed",2);Vn([ve("Sha",String)],Kt.prototype,"sha",2);Kt=Vn([Es("MetadataJson")],Kt);const WB=Kt;var Zb=Object.defineProperty,Xb=Object.getOwnPropertyDescriptor,Nt=(e,t,n,A)=>{for(var r=A>1?void 0:A?Xb(t,n):t,o=e.length-1,i;o>=0;o--)(i=e[o])&&(r=(A?i(t,n,r):i(r))||r);return A&&r&&Zb(t,n,r),r};let ut=class{constructor(){this.id="",this.score=0,this.name="",this.namePartial="",this.nameSuffix="",this.description=void 0,this.homepage=void 0,this.license=void 0,this.version="",this.metadata=new WB,this.highlights=void 0}get highlightedName(){return this.tryGetHighlights(["NamePartial","Name","NameSuffix"],this.name)}get highlightedLicense(){return this.tryGetHighlight("License",this.license)}get highlightedRepository(){return this.tryGetHighlight("Metadata/Repository",this.metadata.repository)}get highlightedDescription(){return this.tryGetHighlight("Description",this.description)}get highlightedVersion(){return this.tryGetHighlight("Version",this.version.length?this.version:"Unknown")}get favicon(){if(this.homepage){const e=document.createElement("a");return e.href=this.homepage,`${e.origin}/favicon.ico`}}tryGetHighlight(e,t){return this.tryGetHighlights([e],t)}tryGetHighlights(e,t){const n=e.find(A=>this.highlights&&this.highlights[A]);return n&&this.highlights?this.highlights[n]:t}};Nt([ve("Id",String)],ut.prototype,"id",2);Nt([ve("@search.score",Number)],ut.prototype,"score",2);Nt([ve("Name",String)],ut.prototype,"name",2);Nt([ve("NamePartial",String)],ut.prototype,"namePartial",2);Nt([ve("NameSuffix",String)],ut.prototype,"nameSuffix",2);Nt([ve("Description",String,!0)],ut.prototype,"description",2);Nt([ve("Homepage",String,!0)],ut.prototype,"homepage",2);Nt([ve("License",String,!0)],ut.prototype,"license",2);Nt([ve("Version",String,!0)],ut.prototype,"version",2);Nt([ve("Metadata",WB)],ut.prototype,"metadata",2);Nt([ve("@search.highlights",Ga,!0)],ut.prototype,"highlights",2);ut=Nt([Es("ManifestJson")],ut);const eF=ut;var tF=Object.defineProperty,nF=Object.getOwnPropertyDescriptor,tf=(e,t,n,A)=>{for(var r=A>1?void 0:A?nF(t,n):t,o=e.length-1,i;o>=0;o--)(i=e[o])&&(r=(A?i(t,n,r):i(r))||r);return A&&r&&tF(t,n,r),r};let _n=class{constructor(){this.count=0,this.results=Array()}static Create(e){return _n.jsonConvert.deserializeObject(e,_n)}};_n.jsonConvert=new KE;tf([ve("@odata.count",Number)],_n.prototype,"count",2);tf([ve("value",[eF])],_n.prototype,"results",2);_n=tf([Es("SearchResultsJson")],_n);const AF=_n,OA=[{DisplayName:"Best match",DefaultSortDirection:1,OrderBy:{0:["search.score() asc","Metadata/OfficialRepositoryNumber asc","NameSortable desc"],1:["search.score() desc","Metadata/OfficialRepositoryNumber desc","NameSortable asc"]}},{DisplayName:"Name",DefaultSortDirection:0,OrderBy:{0:["NameSortable asc","Metadata/OfficialRepositoryNumber desc","Metadata/RepositoryStars desc","Metadata/Committed desc"],1:["NameSortable desc","Metadata/OfficialRepositoryNumber asc","Metadata/RepositoryStars asc","Metadata/Committed asc"]}},{DisplayName:"Newest",DefaultSortDirection:1,OrderBy:{0:["Metadata/Committed asc","Metadata/OfficialRepositoryNumber asc","Metadata/RepositoryStars asc"],1:["Metadata/Committed desc","Metadata/OfficialRepositoryNumber desc","Metadata/RepositoryStars desc"]}}],{VITE_APP_AZURESEARCH_URL:KC,VITE_APP_AZURESEARCH_KEY:zC}={VITE_APP_AZURESEARCH_URL:"https://scoopsearch.search.windows.net/indexes/apps/docs",VITE_APP_AZURESEARCH_KEY:"DC6D2BBE65FC7313F2C52BBD2B0286ED",BASE_URL:"/scoopinstaller-dev.github.io/",MODE:"production",DEV:!1,PROD:!0,SSR:!1},rF=e=>{const[t,n]=p.useState(0),[A,r]=p.useState(!1),o=p.useRef(new AbortController),{query:i,page:a,resultsPerPage:s,sortIndex:l,sortDirection:u,officialOnly:c,onOfficialOnlyChange:g,distinctManifestsOnly:d,onDistinctManifestsOnlyChange:B,installBucketName:m,onInstallBucketName:I,onResultsChange:C,onSortChange:f}=e,h=p.useCallback((O,U)=>{f(O,U)},[f]),E=p.useCallback(O=>{O.currentTarget.blur(),g(!c)},[c,g]),y=p.useCallback(O=>{O.currentTarget.blur(),B(!d)},[d,B]),v=p.useCallback(O=>{O.currentTarget.blur(),I(!m)},[m,I]),D=p.useCallback((O,U)=>{O.currentTarget.blur(),h(U,U===l?(u+1)%2:OA[U].DefaultSortDirection)},[l,u,h]);p.useEffect(()=>(o.current.abort(),o.current=new AbortController,(U=>{if(r(!0),!KC)throw new Error("VITE_APP_AZURESEARCH_URL is not defined");if(!zC)throw new Error("VITE_APP_AZURESEARCH_KEY is not defined");const Y=[];c&&Y.push("Metadata/OfficialRepositoryNumber eq 1"),d&&Y.push("Metadata/DuplicateOf eq null");const R=`${KC}/search?api-version=2020-06-30`;fetch(R,{method:"POST",body:JSON.stringify({count:!0,search:i.trim(),searchMode:"all",filter:Y.join(" and "),orderby:OA[l].OrderBy[u].join(", "),skip:(a-1)*s,top:s,select:["Id","Name","NamePartial","NameSuffix","Description","Homepage","License","Version","Metadata/Repository","Metadata/FilePath","Metadata/OfficialRepository","Metadata/RepositoryStars","Metadata/Committed","Metadata/Sha"].join(","),highlight:["Name","NamePartial","NameSuffix","Description","Version","License","Metadata/Repository"].join(","),highlightPreTag:"",highlightPostTag:""}),headers:{"api-key":zC,"Content-Type":"application/json"},signal:U}).then(F=>{if(!F.ok)throw new Error(`${F.status} ${F.statusText}`);return F.json()}).then(F=>{const S=AF.Create(F);r(!1),n(S.count),C(S)}).catch(F=>{F.name!=="AbortError"&&(r(!1),n(0),C(void 0))})})(o.current.signal),()=>o.current.abort()),[i,a,l,u,c,d,s,C]);const x=O=>{const{currentSortIndex:U,...Y}=O;return l===U?u===OA[U].DefaultSortDirection?Q(HC,{...Y}):Q(Lb,{...Y}):Q(HC,{...Y,visibility:"hidden"})},L=()=>`${OA[l].DisplayName}, ${c?"Official buckets only":"All buckets"}`;return Q(rt,{children:_(we,{children:[Q(le,{xs:6,className:"my-auto",children:Q(WE,{query:i,resultsCount:t,searching:A,type:yg.Applications})}),Q(le,{xs:6,className:"text-end",children:_(pt,{autoClose:"outside",align:"end",drop:"end",className:"sorting-filtering-button",children:[_(pt.Toggle,{size:"sm",variant:"secondary",children:[Q(zD,{className:"me-2"}),Q("span",{className:"d-none d-sm-inline",children:L()})]}),_(pt.Menu,{className:"sorting-filtering-menu",children:[Q(pt.Header,{children:"Sorting"}),OA.map((O,U)=>_(pt.Item,{as:aA,onClick:Y=>D(Y,U),children:[Q(x,{currentSortIndex:U,className:"me-2"}),O.DisplayName]},O.DisplayName)),Q(pt.Divider,{}),Q(pt.Header,{children:"Filtering"}),Q(pt.Item,{as:aA,onClick:O=>E(O),children:_(rt.Switch,{className:"form-switch-sm",children:[Q(rt.Switch.Input,{checked:c}),_(rt.Switch.Label,{children:["Official buckets only ",Q(vg,{className:"ms-1",official:!0,showTooltip:!1})]})]})}),Q(pt.Item,{as:aA,onClick:O=>y(O),children:_(rt.Switch,{className:"form-switch-sm",children:[Q(rt.Switch.Input,{checked:d}),Q(rt.Switch.Label,{children:"Distinct manifests only"})]})}),Q(pt.Divider,{}),Q(pt.Header,{children:"Option"}),Q(pt.Item,{as:aA,onClick:O=>v(O),children:_(rt.Switch,{className:"form-switch-sm",children:[Q(rt.Switch.Input,{checked:m}),Q(rt.Switch.Label,{children:"Show bucket name"})]})})]})]})})]})})},oF=W.memo(rF);var VB={exports:{}};(function(e,t){(function(n,A){e.exports=A()})(cA,function(){var n=1e3,A=6e4,r=36e5,o="millisecond",i="second",a="minute",s="hour",l="day",u="week",c="month",g="quarter",d="year",B="date",m="Invalid Date",I=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,C=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,f={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(R){var F=["th","st","nd","rd"],S=R%100;return"["+R+(F[(S-20)%10]||F[S]||F[0])+"]"}},h=function(R,F,S){var N=String(R);return!N||N.length>=F?R:""+Array(F+1-N.length).join(S)+R},E={s:h,z:function(R){var F=-R.utcOffset(),S=Math.abs(F),N=Math.floor(S/60),k=S%60;return(F<=0?"+":"-")+h(N,2,"0")+":"+h(k,2,"0")},m:function R(F,S){if(F.date()1)return R(T[0])}else{var M=F.name;v[M]=F,k=M}return!N&&k&&(y=k),k||!N&&y},L=function(R,F){if(D(R))return R.clone();var S=typeof F=="object"?F:{};return S.date=R,S.args=arguments,new U(S)},O=E;O.l=x,O.i=D,O.w=function(R,F){return L(R,{locale:F.$L,utc:F.$u,x:F.$x,$offset:F.$offset})};var U=function(){function R(S){this.$L=x(S.locale,null,!0),this.parse(S)}var F=R.prototype;return F.parse=function(S){this.$d=function(N){var k=N.date,b=N.utc;if(k===null)return new Date(NaN);if(O.u(k))return new Date;if(k instanceof Date)return new Date(k);if(typeof k=="string"&&!/Z$/i.test(k)){var T=k.match(I);if(T){var M=T[2]-1||0,w=(T[7]||"0").substring(0,3);return b?new Date(Date.UTC(T[1],M,T[3]||1,T[4]||0,T[5]||0,T[6]||0,w)):new Date(T[1],M,T[3]||1,T[4]||0,T[5]||0,T[6]||0,w)}}return new Date(k)}(S),this.$x=S.x||{},this.init()},F.init=function(){var S=this.$d;this.$y=S.getFullYear(),this.$M=S.getMonth(),this.$D=S.getDate(),this.$W=S.getDay(),this.$H=S.getHours(),this.$m=S.getMinutes(),this.$s=S.getSeconds(),this.$ms=S.getMilliseconds()},F.$utils=function(){return O},F.isValid=function(){return this.$d.toString()!==m},F.isSame=function(S,N){var k=L(S);return this.startOf(N)<=k&&k<=this.endOf(N)},F.isAfter=function(S,N){return L(S)0,v<=y.r||!y.r){v<=1&&E>0&&(y=f[E-1]);var D=C[y.l];d&&(v=d(""+v)),m=typeof D=="string"?D.replace("%d",v):D(v,u,y.l,I);break}}if(u)return m;var x=I?C.future:C.past;return typeof x=="function"?x(m):x.replace("%s",m)},o.to=function(l,u){return a(l,u,this,!0)},o.from=function(l,u){return a(l,u,this)};var s=function(l){return l.$u?r.utc():r()};o.toNow=function(l){return this.to(s(this),l)},o.fromNow=function(l){return this.from(s(this),l)}}})})(XB);var lF=XB.exports;const uF=Xe(lF);var eQ=function(e){var t=e.decode,n=t===void 0?!0:t,A=e.crossOrigin,r=A===void 0?"":A;return function(o){return new Promise(function(i,a){var s=new Image;r&&(s.crossOrigin=r),s.onload=function(){n&&s.decode?s.decode().then(i).catch(a):i()},s.onerror=a,s.src=o})}};function qC(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var A=Object.getOwnPropertySymbols(e);t&&(A=A.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),n.push.apply(n,A)}return n}function Ui(e){for(var t=1;t{const[n,A]=p.useState(!1),{onClick:r,...o}=e;p.useEffect(()=>{n&&setTimeout(()=>{A(!1)},hF)},[n]);const i=p.useCallback(a=>{r==null||r.call(void 0,a),A(!0)},[r]);return Q(aA,{...o,onClick:i,disabled:n,ref:t,children:n?Q(kb,{}):Q(Rb,{})})});tQ.displayName="CopyToClipboardButton";const EF=W.memo(tQ),BF=IF.concat(pF);Ka.extend(sF);Ka.extend(uF);const QF=e=>{const{result:t,officialRepositories:n,installBucketName:A,onCopyToClipbard:r,onResultSelected:o,cardRef:i}=e,a=p.useRef(null),[s,l]=p.useState(!1),u=p.useCallback(k=>{r(k)},[r]),c=p.useCallback(()=>{o==null||o.call(void 0,t)},[o,t]),g=k=>k&&Q("span",{dangerouslySetInnerHTML:{__html:k}}),d=k=>{const{value:b,...T}=k,M=p.useRef(null),w=()=>{var G;(G=M.current)==null||G.click()};return _(dr,{size:"sm",className:"copy-command-group",...T,children:[Q(dr.Text,{className:"border-end-0 copy-command-prefix",children:">"}),Q(rt.Control,{className:"border-start-0 copy-command-text",readOnly:!0,title:"Copy to clipboard",type:"text",value:b,onClick:w}),Q(EF,{className:"copy-command-button",ref:M,title:"Copy to clipboard",variant:"outline-secondary",onClick:()=>u(b)})]})},B=()=>{a.current&&l(a.current.offsetWidth>=a.current.scrollWidth)},{id:m,name:I,favicon:C,highlightedName:f,highlightedDescription:h,highlightedLicense:E,highlightedRepository:y,highlightedVersion:v,metadata:D,homepage:x,version:L,license:O}=t,U=(x??"").replace(/^(?:\w+:\/\/)(.+?)\/*$/,"$1"),Y=D.repositoryOfficial?y==null?void 0:y.toString().replace(D.repository,n[D.repository]):y==null?void 0:y.toString().replace(/^(|)(?:.*?\/){3}(.+)$/,"$1$2"),R=L.length>0&&/^\d/.test(L)&&"v",F=D.repositoryOfficial?n[D.repository]||D.repository.substring(D.repository.lastIndexOf("/")+1).toLowerCase():`${mg.extractPathFromUrl(D.repository,"_")}`,S=D.repositoryOfficial?"":`${D.repository}`;console.log(F,S);const N=`${F} ${S}`.trim();return _(nl,{className:"mb-2",ref:i,children:[Q(nl.Header,{children:_(we,{children:[_(le,{lg:7,className:"valign-items",children:[C&&Q(CF,{className:"me-2",src:C,width:20,height:20}),Q("span",{className:"fw-bold",role:o?"button":void 0,onClick:c,children:g(f)}),Q("span",{className:"me-1 ms-1",children:"in"}),Q("a",{href:D.repository,children:g(Y)}),Q(vg,{className:"ms-1",official:D.repositoryOfficial,stars:D.stars})]}),_(le,{lg:5,className:"text-lg-end text-truncate",children:[Q(_D,{title:"Updated",className:"me-1"}),Q("a",{href:`${D.repository}/commit/${D.sha}`,title:`Diff (${Ka(D.committed).format("LLL")})`,children:Ka(D.committed).fromNow()}),Q("span",{className:"ms-1 me-1",children:"|"}),Q(KD,{title:"Version",className:"me-1"}),_("a",{href:`${D.repository}/blob/master/${D.filePath.replace("#","%23")}`,title:"Manifest file",children:[R,g(v)]})]})]})}),Q(nl.Body,{children:Q(kr,{className:"p-0",children:_(we,{children:[_(le,{lg:6,children:[Q(we,{children:h&&g(h)}),_(we,{className:"mt-2",children:[x&&_("span",{className:"text-truncate",ref:a,children:[Q($D,{title:"Homepage",className:"me-1"}),Q("a",{href:x,onMouseOver:B,title:s?"":x,children:Q("span",{children:g(U)})})]}),O&&_("span",{children:[Q(jD,{title:"License",className:"me-1"}),O&&BF.includes(O)&&Q("a",{href:`https://spdx.org/licenses/${O}.html`,children:g(E)})||g(E)]})]})]}),_(le,{lg:6,className:"mt-4 mt-lg-0",children:[Q(we,{children:Q(d,{value:`scoop bucket add ${N}`,id:"bucket-command"})}),Q(we,{className:"mt-2",children:Q(d,{value:`scoop install ${A?F+"/":""}${I}`,id:"app-command"})})]})]})})})]},m)},WC=W.memo(QF),VC=20,ZC="q",XC="p",ep="s",tp="d",np="o",Ap="dm",rp="n",op="id",mF=500;function vF(e,t){const[n,A]=p.useState(e);return p.useEffect(()=>{const r=setTimeout(()=>A(e),t||mF);return()=>{clearTimeout(r)}},[e,t]),n}const yF=()=>{const[e,t]=l0(),n=p.useCallback(()=>e.get(ZC)??"",[e]),A=p.useCallback(()=>parseInt(e.get(XC)||"1"),[e]),r=p.useCallback((z,ke)=>{const Me=e.get(z)||localStorage.getItem(z);if(Me)switch(typeof ke){case"number":return parseInt(Me);case"boolean":return Me==="true";case"string":return Me}return ke},[e]),o=p.useCallback(()=>r(ep,0),[r]),i=p.useCallback(z=>r(tp,OA[z].DefaultSortDirection),[r]),a=p.useCallback(()=>r(np,!0),[r]),s=p.useCallback(()=>r(Ap,!0),[r]),l=p.useCallback(()=>r(rp,!0),[r]),u=p.useCallback(()=>r(op,""),[r]),c=p.useCallback((z,ke,Me)=>{ke?(e.set(z,ke),Me&&localStorage.setItem(z,ke)):(e.delete(z),Me&&localStorage.removeItem(z)),t(e,{replace:!0})},[e,t]),[g,d]=p.useState(n),[B,m]=p.useState(n),I=vF(B),[C,f]=p.useState(A),[h,E]=p.useState(o),[y,v]=p.useState(i(h)),[D,x]=p.useState(a),[L,O]=p.useState(s()),[U,Y]=p.useState(l()),[R,F]=p.useState(),[S,N]=p.useState({}),[k,b]=p.useState(),[T,M]=p.useState(u),w=p.useRef(null);p.useEffect(()=>{const z=n();d(z),m(z)},[n]),p.useEffect(()=>{f(A())},[A]),o()!==h&&E(o()),i(o())!==y&&E(i(o())),a()!==D&&x(a()),s()!==L&&O(s()),l()!==U&&Y(l()),p.useEffect(()=>{var z;if(R!=null&&R.results&&T){const ke=R.results.find(Me=>Me.id===T);ke&&(b(ke),(z=w.current)==null||z.scrollIntoView())}else b(void 0);c(op,T,!1)},[T,R,c]),p.useEffect(()=>{fetch("https://cdn.jsdelivr.net/gh/ScoopInstaller/Scoop/buckets.json").then(z=>z.json()).then(z=>{const ke=z,Me={};Object.keys(ke).forEach(Zn=>{Me[ke[Zn]]=Zn}),N(Me)}).catch(z=>console.log(z))},[]);const G=p.useCallback(z=>{c(ZC,z,!1),d(z),f(1)},[c]),P=p.useCallback(()=>{m(g)},[g]),J=p.useRef(-1),j=p.useCallback(z=>{J.current=Hb(()=>F(z))},[]);p.useEffect(()=>()=>cancelIdleCallback(J.current),[J]);const $=p.useCallback(z=>{c(XC,z.toString(),!1),f(z),window.scrollTo(0,0)},[c]),X=p.useCallback((z,ke)=>{c(ep,z.toString(),!0),c(tp,ke.toString(),!0),E(z),v(ke)},[c]),se=p.useCallback(z=>{c(np,z.toString(),!0),x(z)},[c]),ne=p.useCallback(z=>{c(Ap,z.toString(),!0),O(z)},[c]),he=p.useCallback(z=>{(async Me=>{await navigator.clipboard.writeText(Me)})(z).finally(()=>{})},[]),Ee=p.useCallback(z=>{M(z.id)},[]),Ye=p.useCallback(()=>{M("")},[]),Ae=p.useCallback(z=>{c(rp,z.toString(),!0),Y(z)},[c]);return _(dt,{children:[Q(Ho,{children:_("title",{children:["Apps",B&&` (${B})`]})}),_(kr,{className:"mt-5 mb-5",children:[Q(we,{className:"justify-content-center",children:Q(le,{sm:8,children:Q(qB,{query:g,onQueryChange:G,onSubmit:P})})}),Q(we,{className:"mt-5 mb-1",children:Q(le,{children:Q(oF,{resultsPerPage:VC,page:C,query:I,sortIndex:h,sortDirection:y,officialOnly:D,onOfficialOnlyChange:se,distinctManifestsOnly:L,onDistinctManifestsOnlyChange:ne,onResultsChange:j,onSortChange:X,installBucketName:U,onInstallBucketName:Ae})})}),Q(we,{className:"mt-2",children:Q(le,{children:R==null?void 0:R.results.map(z=>Q(WC,{cardRef:z.id==T?w:void 0,result:z,officialRepositories:S,installBucketName:U,onCopyToClipbard:he,onResultSelected:Ee},z.id))})}),Q(we,{children:Q(le,{className:"d-flex justify-content-center",children:Q(_b,{resultsPerPage:VC,currentPage:C,resultsCount:(R==null?void 0:R.count)??0,onPageChange:$})})})]}),Q(rC,{show:k!==void 0,onHide:Ye,restoreFocus:!1,size:"xl",centered:!0,className:"modal-selected-result",children:Q(rC.Body,{children:k&&Q(WC,{result:k,officialRepositories:S,installBucketName:U,onCopyToClipbard:he})})})]})},wF=W.memo(yF),SF=()=>_(dt,{children:[Q(Ho,{defaultTitle:"Scoop",titleTemplate:"Scoop - %s"}),Q(a0,{children:Q(t0,{children:_(no,{path:"/",element:Q(Jb,{}),children:[Q(no,{path:"apps",element:Q(wF,{})}),Q(no,{path:"buckets",element:Q(ik,{})}),Q(no,{index:!0,element:Q(Gb,{})})]})})})]}),DF=e=>{e&&e instanceof Function&&Lk(()=>import("./web-vitals-60d3425a.js"),[]).then(({getCLS:t,getFID:n,getFCP:A,getLCP:r,getTTFB:o})=>{t(e),n(e),A(e),r(e),o(e)})};yn.render(Q(W.StrictMode,{children:Q(SF,{})}),document.getElementById("root"));DF()});export default kF(); diff --git a/index.html b/index.html index 291a6ed..21c7d78 100644 --- a/index.html +++ b/index.html @@ -22,7 +22,7 @@ href="https://cdn.jsdelivr.net/npm/bootstrap-dark-5@1.1.3/dist/css/bootstrap-nightshade.min.css" rel="stylesheet" /> - +