UNPKG

@cocalc/static

Version:

CoCalc's static frontend Webpack-based build system and framework

1 lines 8.2 kB
"use strict";(self.webpackChunk_cocalc_static=self.webpackChunk_cocalc_static||[]).push([[583],{30583:(e,t,n)=>{n.r(t),n.d(t,{UnknownEditor:()=>j});var r=n(32295),a=n(95788),c=n(97636),i=n(32217),o=n(18760),l=n(24809),s=n(82044),u=n(29180),f=n(98410),p=n(24620),m=n(19990),h=n(44651),d=n(5010);function y(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function b(e,t,n,r,a,c,i){try{var o=e[c](i),l=o.value}catch(e){return void n(e)}o.done?t(l):Promise.resolve(l).then(r,a)}function E(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var c=e.apply(t,n);function i(e){b(c,r,a,i,o,"next",e)}function o(e){b(c,r,a,i,o,"throw",e)}i(void 0)}))}}function g(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function w(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable})))),r.forEach((function(t){g(e,t,n[t])}))}return e}function R(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,c=[],i=!0,o=!1;try{for(n=n.call(e);!(i=(r=n.next()).done)&&(c.push(r.value),!t||c.length!==t);i=!0);}catch(e){o=!0,a=e}finally{try{i||null==n.return||n.return()}finally{if(o)throw a}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return y(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(n):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?y(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}var v=function(e,t){var n,r,a,c,i={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]};return c={next:o(0),throw:o(1),return:o(2)},"function"==typeof Symbol&&(c[Symbol.iterator]=function(){return this}),c;function o(c){return function(o){return function(c){if(n)throw new TypeError("Generator is already executing.");for(;i;)try{if(n=1,r&&(a=2&c[0]?r.return:c[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,c[1])).done)return a;switch(r=0,a&&(c=[2&c[0],a.value]),c[0]){case 0:case 1:a=c;break;case 4:return i.label++,{value:c[1],done:!1};case 5:i.label++,r=c[1],c=[0];continue;case 7:c=i.ops.pop(),i.trys.pop();continue;default:if(!((a=(a=i.trys).length>0&&a[a.length-1])||6!==c[0]&&2!==c[0])){i=0;continue}if(3===c[0]&&(!a||c[1]>a[0]&&c[1]<a[3])){i.label=c[1];break}if(6===c[0]&&i.label<a[1]){i.label=a[1],a=c;break}if(a&&i.label<a[2]){i.label=a[2],i.ops.push(c);break}a[2]&&i.ops.pop(),i.trys.pop();continue}c=t.call(e,i)}catch(e){c=[6,e],r=0}finally{n=a=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}([c,o])}}},x=i.Z.Text,_={margin:"0 auto",padding:"20px",maxWidth:"1000px"};function k(){return(k=E((function(e){var t,n,r,a,i,o,l,s,u,f,p,m,h,d,y;return v(this,(function(b){switch(b.label){case 0:t=e.project_id,n=e.path,r=e.set_mime,a=e.set_err,i=e.set_snippet,b.label=1;case 1:return b.trys.push([1,4,,5]),o="",[4,c.webapp_client.project_client.exec({project_id:t,command:"file",args:["-b","--mime-type",n]})];case 2:return l=b.sent(),s=l.stdout,0!=(u=l.exit_code)?a("Error: exit_code1 = ".concat(u)):(o=s.split("\n")[0].trim(),r(o)),f=!o.startsWith("text/"),p=f?{command:"hexdump",args:["-C","-n","512",n]}:{command:"head",args:["-c","2000",n]},[4,c.webapp_client.project_client.exec(w({project_id:t},p))];case 3:return m=b.sent(),h=m.stdout,0!=(d=m.exit_code)?a("Error: exit_code2 = ".concat(d)):i(f?h:h.trim().slice(0,1600).split(/(.{0,80})/g).filter((function(e){return!!e})).join("")),[3,5];case 4:return y=b.sent(),a(y.toString()),[3,5];case 5:return[2]}}))}))).apply(this,arguments)}var j=function(e){var t=function(){return r.React.createElement(x,{strong:!0},r.React.createElement(x,{code:!0},"*.",i))},n=e.path,c=e.project_id,i=(0,p.filename_extension_notilde)(n).toLowerCase(),y=(0,r.useTypedRedux)("customize","site_name"),b=(0,r.useActions)({project_id:c}),g=R(r.React.useState(""),2),w=g[0],j=g[1],S=R(r.React.useState(""),2),O=S[0],A=S[1],T=R(r.React.useState(""),2),Z=T[0],C=T[1];r.React.useEffect((function(){w||function(e){k.apply(this,arguments)}({project_id:c,path:n,set_mime:j,set_err:A,set_snippet:C})}),[]),r.React.useEffect((function(){if(null!=b)switch(w){case"inode/directory":E((function(){return v(this,(function(e){switch(e.label){case 0:return b.open_directory(n),[4,(0,a.delay)(1)];case 1:return e.sent(),b.close_file(n),[2]}}))}))();break;case"text/plain":i&&((0,f.D)({ext:[i],component:h.M,Actions:d.e}),E((function(){return v(this,(function(e){switch(e.label){case 0:return b.close_file(n),[4,(0,a.delay)(1)];case 1:return e.sent(),b.open_file({path:n}),[2]}}))}))())}}),[w]);var P=r.React.useMemo((function(){return"inode/x-empty"==w?r.React.createElement("span",null,"This file is empty and has the unknown file-extension: ",t(),"."):w.startsWith("text/")?r.React.createElement("span",null,"This file might contain plain text, but the file-extension:"," ",t(),"is unknown. Try the Code Editor!"):r.React.createElement("span",null,"This is likely a binary file and the file-extension: ",t()," is unknown. Preferrably, you have to open this file via a library/package in a programming environment, like a Jupyter Notebook.")}),[w]);function I(){return I=E((function(e,t){return v(this,(function(r){switch(r.label){case 0:return"code"!==t?(console.warn("Unknown editor of type ".concat(t,", aborting.")),[2]):((0,f.D)({ext:[e],component:h.M,Actions:d.e}),null==b?(console.warn("Project Actions for ".concat(c," not available – shouldn't happen.")),[2]):(b.close_file(n),[4,(0,a.delay)(1)]));case 1:return r.sent(),b.open_file({path:n}),[2]}}))})),I.apply(this,arguments)}return r.React.createElement("div",{style:{overflow:"auto"}},r.React.createElement("div",{style:_},O?r.React.createElement(o.Z,{type:"error",message:"Error",showIcon:!0,description:O}):r.React.createElement(u.Z,{gutter:[24,24]},w?r.React.createElement(r.React.Fragment,null,r.React.createElement(s.Z,{flex:1},r.React.createElement("h1",null,"Unknown file extension")),r.React.createElement(s.Z,{flex:1},r.React.createElement("div",null,y," does not know what to do with this file with the extension"," ",t(),". For this session, you can register one of the editors to open up this file.")),r.React.createElement(s.Z,{flex:1},function(){if(!w.startsWith("text/"))return r.React.createElement(o.Z,{message:"Warning",description:"Opening binary files could possibly modify and hence damage them. If this happens, you can use Files → Backup to restore them.",type:"warning",showIcon:!0})}()),r.React.createElement(s.Z,{flex:1},r.React.createElement(r.React.Fragment,null,r.React.createElement("div",null,y," detected that the file's content has the MIME code"," ",r.React.createElement(x,{strong:!0},r.React.createElement(x,{code:!0},w)),". ",P),r.React.createElement("div",null,"The following editors are available:"),r.React.createElement("ul",null,r.React.createElement("li",null,r.React.createElement(l.Z,{onClick:function(){return function(e,t){return I.apply(this,arguments)}(i,"code")}},"Open ",t()," using ",r.React.createElement(x,{code:!0},"Code Editor")))),r.React.createElement("div",null,r.React.createElement(x,{type:"secondary"},r.React.createElement(x,{strong:!0},"Note:")," by clicking this button this file will open immediately. This will be remembered until you open up ",y," ","again or refresh this page. Alternatively, rename this file's file extension.")))),r.React.createElement(s.Z,{flex:1},function(){if(Z)return r.React.createElement(r.React.Fragment,null,r.React.createElement("div",null,"The content of this file starts like that:"),r.React.createElement("div",null,r.React.createElement("pre",{style:{fontSize:"70%"}},Z)))}())):r.React.createElement(m.Loading,{theme:"medium"}))))}}}]);