mirror of
https://github.com/exogen/vl2-forge.git
synced 2026-01-19 19:44:46 +00:00
1 line
8.3 KiB
JavaScript
1 line
8.3 KiB
JavaScript
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[931],{9343:function(e,t,i){Promise.resolve().then(i.bind(i,2967))},2967:function(e,t,i){"use strict";i.d(t,{Forge:function(){return M}});var n=i(7437),a=i(2265),r=i(7380),s=i(1124),o=i.n(s),l=i(9089),m=i(7311),c=i.n(m);function u(){return(0,n.jsx)("div",{className:c().LoadingBackdrop,children:(0,n.jsx)("div",{className:c().LoadingText,children:"Loading…"})})}var p=i(2744),d=i(6417),g=i(8637),f=i(1273),y=i(7780),h=i(3257),_=i(5201),x=i.n(_);function v(e){let{file:t,onDelete:i,onRename:r}=e,s=(0,a.useMemo)(()=>{var e,i;if(t.dataUri&&(null===(e=t.type)||void 0===e?void 0:e.genericType)==="image")return(0,n.jsx)("img",{className:x().PreviewIcon,src:t.dataUri,width:24,alt:""});if((null===(i=t.type)||void 0===i?void 0:i.genericType)==="audio")return(0,n.jsx)(y.Eow,{});if(/\.cs$/i.test(t.path))return(0,n.jsx)(g.HXH,{});if(/\.mis$/i.test(t.path))return(0,n.jsx)(h.Gw8,{});if(/\.dif$/i.test(t.path))return(0,n.jsx)(d.Mm0,{});if(/\.ter$/i.test(t.path))return(0,n.jsx)(p.seb,{});if(/\.spn$/i.test(t.path))return(0,n.jsx)(f.ekl,{});return null},[t]);return(0,n.jsxs)("div",{className:x().File,children:[(0,n.jsx)("span",{className:x().IconContainer,children:s})," ",(0,n.jsx)("span",{className:x().Path,onDoubleClick:()=>{let e=window.prompt("Rename file (".concat(t.path,"):"),t.path);e&&(e=e.trim().replace(/\/+/g,"/").replace(/^\//,"").replace(/\/$/,"").trim())&&e!==t.path&&r(t.path,e)},children:t.path}),(0,n.jsx)("button",{className:x().DeleteButton,type:"button","aria-label":"Delete",title:"Delete",onClick:e=>{i(t.path)},children:(0,n.jsx)(l.AMf,{})})]})}var w=i(7635),F=i.n(w),j=i(12);function T(e){let t=e.split("/"),i="",n="";return(t.length>1?(i=t.slice(0,-1).join("/"),n=t[t.length-1]):(i="",n=t[0]),i)?"".concat(i,"/").concat(n):(/\.(l|m|h)(male|female|bioderm)\.png$/i.test(n)||/^(vehicle|weapon)_.+png$/i.test(n)||/^dcase\d\d\.png$/i.test(n)?i="textures/skins":/\.(ter|spn)$/i.test(n)?i="terrains":/\.mis$/i.test(n)?i="missions":/\.dif$/i.test(n)&&(i="interiors"),i)?"".concat(i,"/").concat(n):n}function b(e){if(e.type){if(/^image\//i.test(e.type))return{mimeType:e.type,genericType:"image"};if(/^audio\//i.test(e.type))return{mimeType:e.type,genericType:"audio"}}if(/\.png$/i.test(e.name))return{mimeType:"image/png",genericType:"image"};if(/\.jpg$/i.test(e.name))return{mimeType:"image/jpeg",genericType:"image"};if(/\.bmp$/i.test(e.name))return{mimeType:"image/bmp",genericType:"image"};if(/\.webp$/i.test(e.name))return{mimeType:"image/webp",genericType:"image"};if(/\.gif$/i.test(e.name))return{mimeType:"image/gif",genericType:"image"};if(/\.tiff$/i.test(e.name))return{mimeType:"image/tiff",genericType:"image"};if(/\.svg$/i.test(e.name))return{mimeType:"image/svg+xml",genericType:"image"};else if(/\.wav$/i.test(e.name))return{mimeType:"audio/wav",genericType:"audio"};else if(/\.mp3$/i.test(e.name))return{mimeType:"audio/mpeg",genericType:"audio"};return e.type?{mimeType:e.type,genericType:null}:null}async function N(e){let t=await F().loadAsync(e),i=new Map;for(let e in t.files){let r=t.files[e];if(!r.dir){var n,a;let t={path:e=T(e),buffer:await r.async("arraybuffer"),dataUri:null,date:r.date,unixPermissions:r.unixPermissions,dosPermissions:r.dosPermissions,type:b(r)};if((null===(n=t.type)||void 0===n?void 0:n.genericType)==="image"||(null===(a=t.type)||void 0===a?void 0:a.genericType)==="audio"){let e=await r.async("base64");t.dataUri="data:".concat(t.type.mimeType,";base64,").concat(e)}i.set(e,t)}}return i}async function L(e){var t,i;let n;let a=new Map;if(e.path)(n=e.path).startsWith("/")&&(n=n.slice(1));else{if(!e.name)return a;n=e.name}n=T(n);let r=await new Promise((t,i)=>{let n=new FileReader;n.addEventListener("load",e=>{t(e.target.result)}),n.readAsArrayBuffer(e)}),s={path:n,buffer:r,dataUri:null,date:null,unixPermissions:null,dosPermissions:null,type:b(e)};if((null===(t=s.type)||void 0===t?void 0:t.genericType)==="image"||(null===(i=s.type)||void 0===i?void 0:i.genericType)==="audio"){let e=function(e){for(var t,i,n,a,r="",s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",o=new Uint8Array(e),l=o.byteLength,m=l%3,c=l-m,u=0;u<c;u+=3)r+=s[t=(16515072&(a=o[u]<<16|o[u+1]<<8|o[u+2]))>>18]+s[(258048&a)>>12]+s[(4032&a)>>6]+s[63&a];return 1==m?r+=s[t=(252&(a=o[c]))>>2]+s[(3&a)<<4]+"==":2==m&&(r+=s[t=(64512&(a=o[c]<<8|o[c+1]))>>10]+s[(1008&a)>>4]+s[(15&a)<<2]+"="),r}(r);s.dataUri="data:".concat(s.type.mimeType,";base64,").concat(e)}return a.set(n,s),a}async function k(e){return/\.(zip|vl2)$/i.test(e.name)?N(e):L(e)}async function D(e,t){let i=await e.generateAsync({type:"blob",mimeType:"application/octet-stream"});(0,j.saveAs)(i,t)}var $=i(9349),A=i.n($);function P(e){let{fileList:t}=e;return(0,n.jsxs)("form",{className:A().DownloadForm,onSubmit:async e=>{e.preventDefault();let i=e.target.elements.fileName,n=i.value.trim();if(n){if(t.length){let e=function(e){let t=new(F());for(let i of e)t.file(i.path,i.buffer,{date:i.date,dosPermissions:i.dosPermissions,unixPermissions:i.unixPermissions});return t}(t);await D(e,"".concat(n,".vl2"))}else window.alert("Add some files!")}else window.alert("Name thy file."),i.focus()},children:[(0,n.jsx)("div",{className:A().NameInput,children:(0,n.jsx)("input",{name:"fileName",type:"text",placeholder:"name thy file",onChange:e=>{/\.vl2$/i.test(e.target.value)&&(e.target.value=e.target.value.slice(0,-4))}})}),(0,n.jsx)("button",{type:"submit",className:A().DownloadButton,children:"Download"})]})}var C=i(6537),I=i.n(C);function M(){let[e,t]=(0,a.useTransition)(),[i,s]=(0,a.useState)(0),[m,c]=(0,a.useState)(()=>[]),[p,d]=(0,a.useState)(()=>new Map),g=(0,a.useCallback)(async e=>{s(e=>e+1);let i=[],n=new Map;(await Promise.all(e.map(e=>k(e)))).forEach(e=>{e.forEach((e,t)=>{n.has(t)&&i.push({type:"overwrite",path:t}),n.set(t,e)})}),t(()=>{d(e=>new Map([...Array.from(e.entries()),...Array.from(n.entries())])),c(e=>[...e,...i])}),s(e=>e-1)},[]),{getRootProps:f,getInputProps:y,open:h,isDragActive:_}=(0,r.uI)({noClick:!0,onDrop:g}),x=(0,a.useMemo)(()=>o()(Array.from(p.keys()),[e=>e.toLowerCase()],["asc"]).map(e=>p.get(e)),[p]),w=(0,n.jsx)("button",{type:"button",className:I().AddButton,"aria-label":"Add files",title:"Add files",onClick:h,children:"+"}),F=(0,a.useCallback)(e=>{d(t=>{let i=new Map(t);return i.delete(e),i})},[]),j=(0,a.useCallback)((e,t)=>{d(i=>{let n={...i.get(e),path:t},a=new Map(i);return a.delete(e),a.set(t,n),a})},[]),T=e||i>0;return(0,n.jsxs)("section",{className:I().Forge,...f(),children:[(0,n.jsxs)("header",{className:I().Header,children:[(0,n.jsx)("a",{className:I().HeaderLink,href:"https://github.com/exogen/vl2-forge",children:(0,n.jsx)(l.hJX,{"aria-label":"GitHub"})}),(0,n.jsx)("img",{className:I().Logo,width:210,height:188,src:"/vl2-forge/logo-md.png",alt:"VL2 Forge"}),w]}),(0,n.jsx)("input",{...y()}),(0,n.jsxs)("div",{className:I().ListArea,children:[T?(0,n.jsx)(u,{}):null,x.length?(0,n.jsx)("ul",{className:I().FileList,children:x.map(e=>(0,n.jsx)("li",{children:(0,n.jsx)(v,{file:e,onDelete:F,onRename:j})},e.path))}):T?null:(0,n.jsx)("div",{className:I().EmptyMessage,children:"Drop files onto the page or press the add button. No need to extract existing .vl2 files first –\xa0just drop ‘em in and it’ll take care of that!"})]}),(0,n.jsxs)("footer",{className:I().Footer,children:[(0,n.jsx)("a",{className:I().FooterLink,href:"https://github.com/exogen/vl2-forge",children:(0,n.jsx)(l.hJX,{"aria-label":"GitHub"})}),(0,n.jsx)(P,{fileList:x})]})]})}},9349:function(e){e.exports={DownloadForm:"DownloadForm_DownloadForm__xJrhQ",NameInput:"DownloadForm_NameInput__rJoTF",DownloadButton:"DownloadForm_DownloadButton__THR8u"}},5201:function(e){e.exports={File:"FileItem_File__FC9Rk",IconContainer:"FileItem_IconContainer__B0pA0",PreviewIcon:"FileItem_PreviewIcon__CVUKY",Path:"FileItem_Path__6Y42m",DeleteButton:"FileItem_DeleteButton__qYt5o"}},6537:function(e){e.exports={Forge:"Forge_Forge__dDZFe",Footer:"Forge_Footer__ghw3O",ListArea:"Forge_ListArea__OpY_R",FileList:"Forge_FileList__9JOyh",EmptyMessage:"Forge_EmptyMessage__Lrlud",AddButton:"Forge_AddButton__09pXD",Header:"Forge_Header__7t3Qc",HeaderLink:"Forge_HeaderLink__fEDGG",FooterLink:"Forge_FooterLink__gznaM"}},7311:function(e){e.exports={LoadingBackdrop:"Loading_LoadingBackdrop__9nxZJ",LoadingText:"Loading_LoadingText__cJZao"}}},function(e){e.O(0,[132,665,51,212,516,675,240,699,634,971,117,744],function(){return e(e.s=9343)}),_N_E=e.O()}]); |