UNPKG

@cocalc/static

Version:

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

1 lines 34.6 kB
"use strict";(self.webpackChunk_cocalc_static=self.webpackChunk_cocalc_static||[]).push([[9489],{40263:(e,t,n)=>{n.d(t,{X:()=>u});var r=n(32295),a=n(41150),c=n(33667),l=n(81671),o=n(41027),i=n(21707),u=r.React.memo((function(e){var t=e.project_id,n=e.disabled,u=e.text,s=e.bsStyle,m=e.bsSize,p=(0,r.useActions)("projects"),d="running"===(0,a.e)(t).get("state"),f=d?"Restart":"Start",h=d?r.React.createElement(o.Z,null):r.React.createElement(i.Z,null),g=null!=u?u:"".concat(f," Project…"),y=r.React.createElement("div",{style:{maxWidth:"300px"}},"Restarting the project server will terminate all processes, update the project code, and start the project running again. It takes a few seconds, and can fix some issues in case things are not working properly. You'll not lose any files, but you have to start your notebooks and worksheets again.");return r.React.createElement(l.Z,{placement:"bottom",arrowPointAtCenter:!0,title:y,icon:h,onConfirm:function(){return null==p?void 0:p.restart_project(t)},okText:"Yes, restart project",cancelText:"Cancel"},r.React.createElement(c.zx,{disabled:n||null==p,bsSize:m,bsStyle:null!=s?s:"warning"},h," ",g))}))},49489:(e,t,n)=>{n.d(t,{s:()=>Ce,v:()=>xe});var r=n(95788),a=n(32295),c=n(33667),l=n(57031),o=n(92720),i=n(24809),u=n(18760),s=n(81671),m=n(9067),p=n(91195),d=n(46926),f=n(56027),h=n(97636),g=n(24620),y=n(19990),v=n(40263),R=n(60570),b=n(85460),E=n(19889),_=n(17426),w=n(92998),S=n(85215),j=n(50689),k=n(47904),x=n(56393),C=n(94873),T=n(13435),O=n(86506);function Z(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 I(e,t,n,r,a,c,l){try{var o=e[c](l),i=o.value}catch(e){return void n(e)}o.done?t(i):Promise.resolve(i).then(r,a)}function P(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var c=e.apply(t,n);function l(e){I(c,r,a,l,o,"next",e)}function o(e){I(c,r,a,l,o,"throw",e)}l(void 0)}))}}function A(e){return function(e){if(Array.isArray(e))return Z(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return Z(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)?Z(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}var M=function(e,t){var n,r,a,c,l={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(;l;)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 l.label++,{value:c[1],done:!1};case 5:l.label++,r=c[1],c=[0];continue;case 7:c=l.ops.pop(),l.trys.pop();continue;default:if(!((a=(a=l.trys).length>0&&a[a.length-1])||6!==c[0]&&2!==c[0])){l=0;continue}if(3===c[0]&&(!a||c[1]>a[0]&&c[1]<a[3])){l.label=c[1];break}if(6===c[0]&&l.label<a[1]){l.label=a[1],a=c;break}if(a&&l.label<a[2]){l.label=a[2],l.ops.push(c);break}a[2]&&l.ops.pop(),l.trys.pop();continue}c=t.call(e,l)}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])}}},N=T.COLORS.ANTD_RED,U=T.COLORS.ANTD_ORANGE,D=T.COLORS.ANTD_GREEN;function F(e){return e>O.dS?N:e>O.OV?U:D}function L(e){var t=e.pct;return e.total-e.usage<O.Mp?N:t>O.OV?U:D}var B={backgroundColor:N,color:"white",fontWeight:"bold"},X={backgroundColor:U};function z(e,t){var n=function(e,t){switch(F(e/t*100)){case N:return B;case U:return X}return null}(e,t);return null!=n?n:{}}function W(e){return J.apply(this,arguments)}function J(){return(J=P((function(e){return M(this,(function(t){switch(t.label){case 0:return[4,(0,C.oX)(e)];case 1:return[4,t.sent().api.project_info()];case 2:return[2,t.sent()]}}))}))).apply(this,arguments)}function G(e){var t=e.cmdline,n=e.exe;if(1==t.length&&t[0].split(" ").length>2){var r=t[0],a="".concat((0,x.basename)(n),":");return r.startsWith(a)?r.slice(a.length+1):r}return t.slice(1).join(" ")}function H(e,t,n,r){var a=[];return Object.values(e).forEach((function(c){if(c.ppid==t){var l,o="".concat(c.pid),i=H(e,c.pid,n,r);null!=i&&n.push(o);var u,s,m={key:o,pid:c.pid,ppid:c.ppid,name:(0,x.basename)(c.exe),args:G(c),state:c.stat.state,mem:c.stat.mem.rss,cpu_tot:c.cpu.secs,cpu_pct:c.cpu.pct,cocalc:c.cocalc,children:i};"project"===(null===(l=c.cocalc)||void 0===l?void 0:l.type)?(m.children=void 0,a.push(m),null!=i&&(u=a).push.apply(u,A(i))):!function(e){if(1===e.pid)return!1;var t=e.cmdline[2];return!(1===e.ppid&&null!=t&&t.indexOf("/cocalc/init/init.sh")>=0&&t.indexOf("$COCALC_PROJECT_ID")>=0)}(c)?null!=i&&(s=a).push.apply(s,A(i)):(a.push(m),r.nprocs+=1,r.threads+=c.stat.num_threads,r.sum_cpu_time+=c.cpu.secs,r.sum_cpu_pct+=c.cpu.pct,r.sum_memory+=c.stat.mem.rss)}})),a.length>0?a:void 0}function K(e,t){return null==e.children?0:e.children.map((function(e){return e[t]+K(e,t)})).reduce((function(e,t){return e+t}),0)}function Y(e){e.forEach((function(e){if(null==e.children)return{mem:0,cpu_tot:0,cpu_pct:0};e.chldsum={mem:K(e,"mem"),cpu_tot:K(e,"cpu_tot"),cpu_pct:K(e,"cpu_pct")},Y(e.children)}))}var V=n(75967),$=n(72629),q=n.n($);function Q(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 ee(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function te(){return te=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},te.apply(this,arguments)}function ne(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=[],l=!0,o=!1;try{for(n=n.call(e);!(l=(r=n.next()).done)&&(c.push(r.value),!t||c.length!==t);l=!0);}catch(e){o=!0,a=e}finally{try{l||null==n.return||n.return()}finally{if(o)throw a}}return c}}(e,t)||re(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.")}()}function re(e,t){if(e){if("string"==typeof e)return Q(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)?Q(e,t):void 0}}var ae=function(e){var t,n,r,c=e.proc,l=ne(a.React.useState(!1),2),i=l[0],u=l[1];return a.React.createElement(E.Z,{bordered:!0,style:{maxHeight:"35vw",height:"35vw",overflow:"auto"},title:"Process ".concat(c.pid),size:"small",column:2,extra:a.React.createElement(a.React.Fragment,null,"Raw view: ",a.React.createElement(o.Z,{checked:i,onChange:function(e){return u(e)}}))},i?a.React.createElement("div",{style:{fontSize:"85%",whiteSpace:"pre-wrap",fontFamily:"monospace",maxHeight:"50vh",overflow:"auto"}},JSON.stringify(c,null,2)):(t=c.stat.stime+c.stat.utime,n=c.stat.mem.rss.toFixed(1),r=c.stat.cstime+c.stat.cutime,a.React.createElement(a.React.Fragment,null,a.React.createElement(E.Z.Item,{label:"Executable",span:2},a.React.createElement("strong",null,a.React.createElement("code",null,c.exe))),a.React.createElement(E.Z.Item,{label:"Command line",span:2},a.React.createElement("code",null,c.cmdline.join(" "))),a.React.createElement(E.Z.Item,{label:"Uptime"},a.React.createElement("code",null,(0,g.seconds2hms)(c.uptime))),a.React.createElement(E.Z.Item,{label:"Memory"},a.React.createElement("code",null,n," MiB")),a.React.createElement(E.Z.Item,{label:"CPU time"},a.React.createElement("code",null,(0,g.seconds2hms)(t))),a.React.createElement(E.Z.Item,{label:"CPU children"},a.React.createElement("code",null,(0,g.seconds2hms)(r))),a.React.createElement(E.Z.Item,{label:"Nice"},a.React.createElement("code",null,c.stat.nice)),a.React.createElement(E.Z.Item,{label:"Threads"},a.React.createElement("code",null,c.stat.num_threads)))))},ce=a.React.memo((function(e){var t=e.state,n=function(){switch(t){case"S":return[9416,"Sleeping (not using CPU)",{color:T.COLORS.GRAY_L}];case"R":return[9415,"Running (actively uses CPU)",{color:T.COLORS.ANTD_GREEN_D,fontWeight:"bold"}];case"D":return[9401,"Waiting on data from disk/network",void 0];case"Z":return[9423,"Zombie",void 0];case"T":return[9417,"Paused (trace)",{fontWeight:"bold"}];case"W":return[9420,"Paging",void 0];default:(0,g.unreachable)(t)}}();if(null!=n){var r=ne(n,3),c=r[0],l=r[1],o=r[2],i=9417===c?a.React.createElement(j.Z,null):String.fromCharCode(c);return a.React.createElement(y.Tip,{title:l,trigger:["hover","click"]},a.React.createElement("span",{style:o},i))}return a.React.createElement("span",null,t)})),le=a.React.memo((function(e){var t=e.text,n=function(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){ee(e,t,n[t])}))}return e}({},e.style,{whiteSpace:"nowrap"});return a.React.createElement("span",{style:n},t," ",a.React.createElement("span",{style:{color:T.COLORS.GRAY}},a.React.createElement(k.Z,null)))})),oe=a.React.memo((function(e){var t=e.children,n=e.type,r=e.cg_info,c=e.disk_usage;return a.React.createElement(y.Tip,{placement:"bottom",title:function(){switch(n){case"mem":return a.React.createElement("span",null,"Current memory usage of the project's container:"," ",a.React.createElement("code",null,r.mem_rss.toFixed(0),"MiB")," of a maximum of"," ",a.React.createElement("code",null,r.mem_tot.toFixed(0),"MiB"),". This might diverge from the processes individual usages and this value also includes the in-memory ",a.React.createElement("code",null,"/tmp")," directory. The remaining free memory is usually shared with other projects on the underlying machine and hence you might not be able to fully attain it.");case"disk":return a.React.createElement("span",null,"Currently, the files stored in this project use"," ",a.React.createElement("code",null,c.usage.toFixed(0),"MiB")," of a maximum of"," ",a.React.createElement("code",null,c.total.toFixed(0),"MiB"),". Please be aware that a project might not work properly if that limit is reached.");case"cpu":return a.React.createElement("span",null,"This shows your current CPU usage. Right now, this project is using ",a.React.createElement("code",null,r.cpu_usage_rate.toFixed(2),"secs")," CPU time per second with a limit of"," ",a.React.createElement("code",null,r.cpu_usage_limit.toFixed(2),"secs/s"),". Since this project shares the CPU power of the underlying machine with other projects, you might not be able to fully attain the limit.")}}(),trigger:["hover","click"]},t)})),ie=function(e){return"".concat(e.toFixed(0),"%")},ue={format:ie,size:"small"},se={format:ie},me={format:ie,steps:20},pe=a.React.memo((function(e){var t,n,r=e.project_status,l=null!==(t=null==r?void 0:r.get("alerts"))&&void 0!==t?t:b.Map(),o=[],i=!0,u=!1,s=void 0;try{for(var m,p=l[Symbol.iterator]();!(i=(m=p.next()).done);i=!0){var d,f,h=m.value;"component"===h.get("type")&&(d=o).push.apply(d,function(e){if(Array.isArray(e))return Q(e)}(n=null===(f=h.get("names"))||void 0===f?void 0:f.toJS())||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(n)||re(n)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())}}catch(e){u=!0,s=e}finally{try{i||null==p.return||p.return()}finally{if(u)throw s}}return 0==o.length?null:a.React.createElement(c.bZ,{bsStyle:"danger",banner:!0},o.map((function(e){return a.React.createElement("div",{key:e},a.React.createElement("strong",null,e),": ",function(e){return"BlobStore"===e?"This component manages locally stored binary data and it is currently broken. This means for example, images in Jupyter Notebooks will not show up. Most likely the file storage is full. Please delete some files or increase the quota limit.":'Unknown problem "'.concat(e,'"')}(e))})))})),de=a.React.memo((function(e){var t,n=e.have_cgroup,r=e.cg_info,c=e.disk_usage,l=(e.pt_stats,e.start_ts,e.project_status),o=function(){var e=function(e){e!=n&&r(e)},t=ne(a.React.useState({}),2),n=t[0],r=t[1],c=_.ZP.useBreakpoint();return c.xxl?e(me):c.md?e(se):e(ue),n}(),i=(null!==(t=null==l?void 0:l.get("alerts"))&&void 0!==t?t:b.Map()).map((function(e){return e.get("type")})),u=i.includes("cpu-cgroup"),s=i.includes("memoryy"),m=i.includes("disk"),p={backgroundColor:T.COLORS.ATND_BG_RED_L,borderColor:T.COLORS.ANTD_RED_WARN},d=a.React.createElement(oe,{type:"cpu",cg_info:r,disk_usage:c},a.React.createElement(le,{text:"CPU"})),f=a.React.createElement(oe,{type:"mem",cg_info:r,disk_usage:c},a.React.createElement(le,{text:"Memory"})),h=a.React.createElement(oe,{type:"disk",cg_info:r,disk_usage:c},a.React.createElement(le,{text:"Disk"}));return n?a.React.createElement(E.Z,{bordered:!0,column:3,size:"middle"},!1,a.React.createElement(a.React.Fragment,null,a.React.createElement(E.Z.Item,{label:d,style:u?p:void 0},a.React.createElement(oe,{type:"cpu",cg_info:r,disk_usage:c},a.React.createElement(w.Z,te({percent:r.cpu_pct,strokeColor:F(r.cpu_pct)},o)))),a.React.createElement(E.Z.Item,{label:f,style:s?p:void 0},a.React.createElement(oe,{type:"mem",cg_info:r,disk_usage:c},a.React.createElement(w.Z,te({percent:r.mem_pct,strokeColor:F(r.mem_pct)},o)))),a.React.createElement(E.Z.Item,{label:h,style:m?p:void 0},a.React.createElement(oe,{type:"disk",cg_info:r,disk_usage:c},a.React.createElement(w.Z,te({percent:c.pct,strokeColor:L(c)},o)))))):null})),fe=a.React.memo((function(e){var t=e.icon,n=e.path,r=e.project_actions;return a.React.createElement(i.Z,{shape:"round",icon:a.React.createElement(y.Icon,{name:t}),onClick:function(){null==r||r.open_file({path:n,foreground:!0})}},a.React.createElement(y.Tip,{title:a.React.createElement("span",null,"Click to open ",a.React.createElement("code",null,n)),style:{paddingLeft:"1rem"}},function(e){var t=(0,x.basename)(e),n=(0,g.separate_file_extension)(t).name;return(0,g.trunc)(n,12)}(n)))})),he=a.React.memo((function(e){var t=function(e){var t=d.length,r=V.M[e],l=(0,g.plural)(t,"process","processes"),m=q()(d),p=function(e){switch(e){case V.M.Interrupt:return"This is equivalent to `Ctrl-c` in a Terminal or clicking the 'Stop'-Button in a Jupyter Notebook.";case V.M.Terminate:return"Terminating a process tells it to properly close everything and exit – it might ignore the orders, though!";case V.M.Kill:return"Killing a process can't be ignored and will cause the process to exit right away. Try terminating it first!";case V.M.Pause:return"'Pause' means to hold all operations. The process won't use any CPU but will continue to use memory. Use 'Resume' to let it run again.";case V.M.Resume:return"This will continue running a possibly paused process."}return""}(e),f="Are you sure you want to send signal ".concat(r," (").concat(e,") to ").concat(l," ").concat(m,"? ").concat(p).trim(),h=function(e){var t={marginRight:"5px"};switch(e){case 2:return a.React.createElement(y.Icon,{name:"hand-stop",style:t});case 15:return a.React.createElement(y.Icon,{name:"times-circle",style:t});case 9:return a.React.createElement(y.Icon,{unicode:9760,style:t});case 19:return a.React.createElement(y.Icon,{name:"pause",style:t});case 18:return a.React.createElement(y.Icon,{name:"play-circle",style:t})}return null}(e),v=[V.M.Kill,V.M.Interrupt,V.M.Terminate].includes(e),R=a.React.createElement(i.Z,{type:2===e?"primary":9===e?"dashed":void 0,danger:v,icon:h,disabled:u,loading:o},r);return a.React.createElement(s.Z,{title:a.React.createElement("div",{style:{maxWidth:"300px"}},f),onConfirm:function(){return function(e){if(null!=n){var t={cmd:"signal",signal:e,pids:d};n.write(t),c([])}}(e)},okText:"Yes",cancelText:"No",disabled:u},R)},n=e.chan,r=e.selected,c=e.set_selected,o=e.loading,u=e.disabled,m=e.processes,p=["project","sshd"],d=r.filter((function(e){var t,n,r=null===(t=m[e])||void 0===t||null===(n=t.cocalc)||void 0===n?void 0:n.type;return null==r||!p.includes(r)}));return 0==d.length?null:a.React.createElement(l.Z.Item,{label:"Send signal:"},a.React.createElement(S.Z,null,t(V.M.Interrupt),t(V.M.Terminate),t(V.M.Kill),t(V.M.Pause),t(V.M.Resume)))})),ge=n(70919);function ye(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 ve(e,t,n,r,a,c,l){try{var o=e[c](l),i=o.value}catch(e){return void n(e)}o.done?t(i):Promise.resolve(i).then(r,a)}function Re(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var c=e.apply(t,n);function l(e){ve(c,r,a,l,o,"next",e)}function o(e){ve(c,r,a,l,o,"throw",e)}l(void 0)}))}}function be(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ee(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=[],l=!0,o=!1;try{for(n=n.call(e);!(l=(r=n.next()).done)&&(c.push(r.value),!t||c.length!==t);l=!0);}catch(e){o=!0,a=e}finally{try{l||null==n.return||n.return()}finally{if(o)throw a}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return ye(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)?ye(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 _e=function(e,t){var n,r,a,c,l={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(;l;)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 l.label++,{value:c[1],done:!1};case 5:l.label++,r=c[1],c=[0];continue;case 7:c=l.ops.pop(),l.trys.pop();continue;default:if(!((a=(a=l.trys).length>0&&a[a.length-1])||6!==c[0]&&2!==c[0])){l=0;continue}if(3===c[0]&&(!a||c[1]>a[0]&&c[1]<a[3])){l.label=c[1];break}if(6===c[0]&&l.label<a[1]){l.label=a[1],a=c;break}if(a&&l.label<a[2]){l.label=a[2],l.ops.push(c);break}a[2]&&l.ops.pop(),l.trys.pop();continue}c=t.call(e,l)}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])}}},we="Details",Se={mem_rss:NaN,mem_tot:NaN,cpu_pct:NaN,mem_pct:NaN,cpu_usage_rate:NaN,cpu_usage_limit:NaN},je={pct:NaN,usage:NaN,total:NaN},ke={threads:0,nprocs:0,sum_cpu_time:0,sum_cpu_pct:0,sum_memory:0},xe=a.React.memo((function(e){var t,n=e.project_id,b=function(e){if(null!=e.processes){var t,n=[],r=function(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){be(e,t,n[t])}))}return e}({},ke),a=null!==(t=H(e.processes,1,n,r))&&void 0!==t?t:[];Y(a),Q(a),ne(r),ze(n)}},E=function(e){Ue(e)},_=function(e,t){var n=function(e){switch(e){case"cpu_pct":var t,n;return 100*Math.min(1,null!==(n=null==K||null===(t=K.cgroup)||void 0===t?void 0:t.cpu_cores_limit)&&void 0!==n?n:1);case"cpu_tot":return O;case"mem":var r,a=null==K||null===(r=K.cgroup)||void 0===r?void 0:r.mem_stat.hierarchical_memory_limit;return null!=a?a/2:1e3}return 1}(e);return function(r,a){var c=function(t,n){if(0==Fe.length||Fe.includes(n.key)||!Xe.includes(n.key))return t;var r=n.chldsum;return t+(null!=r?r[e]:0)}(r,a);return{props:{style:z(c,n)},children:t(c)}}},w=function(){var e=(null==P?void 0:P.get("alerts").size)>0?"danger":"default";return a.React.createElement(l.Z.Item,null,a.React.createElement(v.X,{project_id:n,text:"Restart…",bsStyle:e,bsSize:"small"}))},S=function(e){var t=e.title,n=e.onClick;return a.React.createElement(i.Z,{shape:"round",onClick:n},t)},j=function(){return a.React.createElement(i.Z,{type:"primary",onClick:function(){return tt(void 0)}},"Ok")},k=function(){if(I){var e=a.React.createElement("div",null,a.React.createElement("p",null,"This panel shows"," ",a.React.createElement("strong",null,"real-time information about this project")," and its resource usage. In particular, you can see which processes are running, and if available, also get a button to ",a.React.createElement(ge.w3,null)," ","specific information or links to the associated file."),a.React.createElement("p",null,'By selecting a process via the checkbox on the left hand side, you can obtain more detailed information via the "',we,'" button or even issue commands like sending a signal to the selected job(s).'),a.React.createElement("p",null,"Sub-processes are shown as a tree. When you collapse a branch, the values you see are the sum of that particular process and all its children. Note that because of this tree structure, sorting happens in each branch, since the tree structure must also be preserved."),a.React.createElement("p",null,"If there are any issues detected, there will be highlights in red. They could be caused by individual processes using CPU non-stop, the total of all processes hitting the overall memory limit, or even the disk space running low. You can use the signals to fix some of these issues by interrupting/terminating a job, or restarting the project. If you're low on disk space, you either have to delete some files or purchase disk space upgrades."));return a.React.createElement(c.JX,{lg:8,lgOffset:2,md:12,mdOffset:0},a.React.createElement(u.Z,{message:e,style:{margin:"10px 0"},type:"info",closable:!0,onClose:function(){return null==C?void 0:C.setState({show_project_info_explanation:!1})}}))}},x=(0,a.useIsMountedRef)(),C=(0,a.useActions)({project_id:n}),T=Ee((0,a.useState)(1800),2),O=T[0],Z=T[1],I=null!==(t=(0,a.useTypedRedux)({project_id:n},"show_project_info_explanation"))&&void 0!==t&&t,P=(0,a.useTypedRedux)({project_id:n},"status"),A=(0,a.useTypedRedux)("projects","project_map"),M=Ee((0,a.useState)(null==A?void 0:A.get(n)),2),N=M[0],U=M[1],D=Ee((0,a.useState)(),2),F=D[0],L=D[1],B=Ee((0,a.useState)(void 0),2),X=B[0],J=B[1],G=Ee((0,a.useState)(void 0),2),K=G[0],V=G[1],$=Ee((0,a.useState)(void 0),2),q=$[0],Q=$[1],ee=Ee((0,a.useState)(ke),2),te=ee[0],ne=ee[1],re=Ee((0,a.useState)(null),2),oe=re[0],ie=re[1],ue=(0,a.useRef)(null),se=Ee((0,a.useState)(null),2),me=se[0],ye=se[1],ve=(0,a.useRef)(null),xe=Ee((0,a.useState)("initializing…"),2),Ce=(xe[0],xe[1]),Te=Ee((0,a.useState)(!0),2),Oe=Te[0],Ze=Te[1],Ie=Ee((0,a.useState)(!0),2),Pe=Ie[0],Ae=Ie[1],Me=Ee((0,a.useState)([]),2),Ne=Me[0],Ue=Me[1],De=Ee((0,a.useState)([]),2),Fe=De[0],Le=De[1],Be=Ee((0,a.useState)([]),2),Xe=Be[0],ze=Be[1],We=Ee((0,a.useState)(Se),2),Je=We[0],Ge=We[1],He=Ee((0,a.useState)(je),2),Ke=He[0],Ye=He[1],Ve=Ee((0,a.useState)(null),2),$e=Ve[0],qe=Ve[1],Qe=Ee((0,a.useState)(void 0),2),et=Qe[0],tt=Qe[1],nt=Ee((0,a.useState)(!1),2),rt=nt[0],at=nt[1];function ct(){return ct=Re((function(){var e,t,c,l;return _e(this,(function(o){switch(o.label){case 0:Ce("connecting…"),o.label=1;case 1:return o.trys.push([1,3,,4]),e=h.webapp_client.project_client.project_info(n),[4,W(n)];case 2:return t=o.sent(),x.current?(c=function(){if(x.current){var t=e.get();null!=t?V(t.toJS()):console.warn("got no data from info_sync.get()")}},e.once("change",(function(){x.current&&(Ze(!1),Ce("receiving…"))})),e.on("change",c),e.once("ready",c),t.on("close",Re((function(){var e;return _e(this,(function(t){switch(t.label){case 0:return x.current?(Ce("websocket closed: reconnecting in 3 seconds…"),ie(null),[4,(0,r.delay)(3e3)]):[2];case 1:return t.sent(),x.current?(Ce("websocket closed: reconnecting now…"),[4,W(n)]):[2];case 2:return e=t.sent(),x.current?(Ce("websocket closed: got new connection…"),ie(e),[2]):(e.end(),[2])}}))}))),ie(t),ye(e),[3,4]):[2];case 3:return l=o.sent(),qe(a.React.createElement(a.React.Fragment,null,a.React.createElement("strong",null,"Project information setup problem:")," ","".concat(l))),[2];case 4:return[2]}}))})),ct.apply(this,arguments)}return a.React.useMemo((function(){null!=A&&U(A.get(n))}),[A]),a.React.useEffect((function(){if(null!=N){var e=N.getIn(["status","start_ts"]);e!=X&&J(e);var t=N.getIn(["state","state"]);t!=F&&L(t)}}),[N]),a.React.useEffect((function(){ue.current=oe}),[oe]),a.React.useEffect((function(){ve.current=me}),[me]),a.React.useEffect((function(){Ae(null==oe||null==me)}),[me,oe]),a.React.useEffect((function(){var e=setTimeout((function(){return at(!0)}),3e4);return function(){return clearTimeout(e)}}),[]),a.React.useEffect((function(){var e;if("running"===F)try{return function(){ct.apply(this,arguments)}(),e=a.redux.getStore("projects").get_idle_timeout(n),Z(e),function(){x.current&&Ce("closing connection"),null!=ue.current&&ue.current.readyState===ue.current.OPEN&&ue.current.end(),null!=ve.current&&ve.current.close()}}catch(e){x.current&&Ce("ERROR: ".concat(e))}}),[F]),a.React.useEffect((function(){if(null!=K){b(K);var e=K.cgroup,t=K.disk_usage;if(null!=e&&null!=(null==t?void 0:t.tmp)){var n=(0,R.r)(e,t.tmp),r=n.mem_rss,a=n.mem_tot,c=n.mem_pct,l=n.cpu_pct;Ge({mem_rss:r,mem_tot:a,mem_pct:c,cpu_pct:l,cpu_usage_rate:e.cpu_usage_rate,cpu_usage_limit:e.cpu_cores_limit})}if(null!=(null==t?void 0:t.project)){var o=t.project,i=o.usage+o.available,u=100*Math.min(1,o.usage/i);Ye({pct:u,usage:o.usage,total:i})}}}),[K]),a.React.createElement(c.X2,{style:{padding:"15px 15px 0 15px"}},a.React.createElement(c.JX,{md:12},function(){if("running"!==F)return a.React.createElement(c.X2,null,a.React.createElement(u.Z,{type:"warning",message:"Project is not running."}))}(),function(){if(null!=$e)return a.React.createElement(c.X2,null,a.React.createElement(u.Z,{message:$e,type:"error"}))}(),a.React.createElement(a.React.Fragment,null,a.React.createElement(pe,{project_status:P}),a.React.createElement(de,{have_cgroup:null!=(null==K?void 0:K.cgroup),cg_info:Je,disk_usage:Ke,pt_stats:te,start_ts:X,project_status:P}),function(){if(null==q)return"running"===F&&null==$e?a.React.createElement(a.React.Fragment,null,a.React.createElement("div",null,a.React.createElement(y.Loading,null)),rt&&a.React.createElement(u.Z,{type:"info",message:a.React.createElement("div",null,a.React.createElement("p",null,"If the Table of Processes does not load, the project might be malfunctioning or saturated by load. Try restarting the project to make it work again."),w())})):null;var e={defaultExpandAllRows:!0,onExpandedRowsChange:function(e){return Le(e)},rowExpandable:function(e){return function(e){return null!=e.children&&e.children.length>0}(e)}},t={selectedRowKeys:Ne,onChange:E,hideSelectAll:!0},n=a.React.createElement(y.Tip,{title:"The role of these processes in this project.",trigger:["hover","click"]},a.React.createElement(le,{text:"Project"})),r=a.React.createElement(y.Tip,{title:"Process state: running means it is actively using CPU, while sleeping means it waits for input.",trigger:["hover","click"]},a.React.createElement(f.Z,null));return a.React.createElement(a.React.Fragment,null,a.React.createElement(c.X2,{style:{marginBottom:"10px",marginTop:"20px"}},a.React.createElement(c.JX,{md:9},a.React.createElement(l.Z,{layout:"inline"},a.React.createElement(l.Z.Item,{label:"Table of Processes"}),function(){var e=Pe||0==Ne.length;if(!e&&null!=(null==K?void 0:K.processes))return a.React.createElement(a.React.Fragment,null,function(){var e,t=1===Ne.length?null==K||null===(e=K.processes)||void 0===e?void 0:e[Ne[0]]:void 0;return a.React.createElement(l.Z.Item,null,a.React.createElement(i.Z,{type:"primary",icon:a.React.createElement(d.Z,null),disabled:null==t,onClick:function(){return tt(t)}},we))}(),a.React.createElement(he,{chan:oe,selected:Ne,set_selected:Ue,loading:Oe,disabled:e,processes:K.processes}))}(),function(){if(Pe)return a.React.createElement(u.Z,{type:"warning",message:"Warning: disconnected …"})}())),a.React.createElement(c.JX,{md:3},a.React.createElement(l.Z,{layout:"inline",style:{float:"right"}},w(),a.React.createElement(l.Z.Item,{label:"Help:"},a.React.createElement(o.Z,{checked:I,onChange:function(e){return null==C?void 0:C.setState({show_project_info_explanation:e})}}))))),a.React.createElement(c.X2,null,k()),a.React.createElement(c.X2,null,a.React.createElement(p.Z,{dataSource:q,size:"small",pagination:!1,scroll:{y:"65vh"},style:{marginBottom:"2rem"},expandable:e,rowSelection:t,loading:Pe||Oe},a.React.createElement(p.Z.Column,{key:"process",title:"Process",width:"58%",align:"left",ellipsis:!0,render:function(e){return a.React.createElement("span",null,a.React.createElement("b",null,e.name)," ",a.React.createElement("span",null,e.args))},sorter:(0,g.field_cmp)("name")}),a.React.createElement(p.Z.Column,{key:"cocalc",title:n,width:"10%",align:"left",render:function(e){return function(e){var t=e.cocalc;if(null!=t)switch(t.type){case"project":return S({title:"Project",onClick:function(){return tt("project")}});case"sshd":return S({title:"SSH",onClick:function(){return tt("ssh")}});case"terminal":return a.React.createElement(fe,{icon:"terminal",path:t.path,project_actions:C});case"jupyter":return a.React.createElement(fe,{icon:"ipynb",path:t.path,project_actions:C});case"x11":return a.React.createElement(fe,{icon:"window-restore",path:t.path,project_actions:C});default:(0,g.unreachable)(t)}}(e)},sorter:(0,g.field_cmp)("cocalc")}),a.React.createElement(p.Z.Column,{key:"pid",title:"PID",width:"10%",align:"left",render:_("pid",(function(e){return null==e.pid?"":"".concat(e.pid)})),sorter:(0,g.field_cmp)("pid")}),a.React.createElement(p.Z.Column,{key:"cpu_state",title:r,width:"5%",align:"right",render:function(e){return a.React.createElement(ce,{state:e.state})},sorter:(0,g.field_cmp)("state")}),a.React.createElement(p.Z.Column,{key:"cpu_pct",title:"CPU%",width:"10%",dataIndex:"cpu_pct",align:"right",render:_("cpu_pct",(function(e){return"".concat(e.toFixed(1),"%")})),sorter:(0,g.field_cmp)("cpu_pct")}),a.React.createElement(p.Z.Column,{key:"cpu_tot",title:"CPU Time",dataIndex:"cpu_tot",width:"10%",align:"right",render:_("cpu_tot",(function(e){return(0,g.seconds2hms)(e)})),sorter:(0,g.field_cmp)("cpu_tot")}),a.React.createElement(p.Z.Column,{key:"mem",title:"Memory",dataIndex:"mem",width:"10%",align:"right",render:_("mem",(function(e){return"".concat(e.toFixed(0),"MiB")})),sorter:(0,g.field_cmp)("mem")}))))}(),function(){switch(et){case"ssh":return a.React.createElement(m.Z,{title:"Project's SSH Daemon",visible:"ssh"===et,footer:j(),onCancel:function(){return tt(void 0)}},a.React.createElement("div",null,"This process allows to SSH into this project. Do not terminate it!",a.React.createElement("br",null),"Learn more: ",a.React.createElement(y.A,{href:"https://doc.cocalc.com/project-settings.html#ssh-keys"},"SSH keys documentation")));case"project":return a.React.createElement(m.Z,{title:"Project's process",visible:"project"===et,footer:j(),onCancel:function(){return tt(void 0)}},a.React.createElement("div",null,"This is the project's own management process. Do not terminate it! If it uses too much resources, you can ",a.React.createElement(s.Z,{title:"Are you sure to restart this project?",onConfirm:function(){var e=a.redux.getActions("projects");null==e||e.restart_project(n)},okText:"Restart",cancelText:"No"},a.React.createElement("a",{href:"#"},"restart this project")),"."));default:if(null!=et&&"string"!=typeof et)return a.React.createElement(m.Z,{title:"Process info",visible:!0,width:"75vw",footer:j(),onCancel:function(){return tt(void 0)}},a.React.createElement(ae,{proc:et}),";")}}(),!1)))})),Ce="Processes"},41150:(e,t,n)=>{n.d(t,{e:()=>o});var r=n(32295),a=n(68038);function c(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}var l=new a.k({state:"opened"});function o(e){var t,n,o=(t=(0,r.useState)(l),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,c=[],l=!0,o=!1;try{for(n=n.call(e);!(l=(r=n.next()).done)&&(c.push(r.value),!t||c.length!==t);l=!0);}catch(e){o=!0,a=e}finally{try{l||null==n.return||n.return()}finally{if(o)throw a}}return c}}(t,n)||function(e,t){if(e){if("string"==typeof e)return c(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)?c(e,t):void 0}}(t,n)||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.")}()),i=o[0],u=o[1],s=(0,r.useRedux)(["projects","project_map",null!=e?e:"","state"]);return(0,r.useEffect)((function(){null!=s&&u(new a.k(s))}),[s]),i}},68038:(e,t,n)=>{n.d(t,{k:()=>r});var r=(0,n(32295).createTypedMap)()},75967:(e,t)=>{var n;t.M=void 0,(n=t.M||(t.M={}))[n.Kill=9]="Kill",n[n.Interrupt=2]="Interrupt",n[n.Terminate=15]="Terminate",n[n.Pause=19]="Pause",n[n.Resume=18]="Resume"},86506:(e,t)=>{var n;t.Mp=t.Mt=t.OV=t.dS=void 0,t.dS=90,t.OV=75,t.Mt=50,t.Mp=100,parseInt(null!==(n={}.COCALC_STATUS_UPDATES_INTERVAL_S)&&void 0!==n?n:"60")},60570:(e,t)=>{t.r=void 0,t.r=function(e,t){var n,r=e.mem_stat.total_rss+(null!==(n=null==t?void 0:t.usage)&&void 0!==n?n:0),a=e.mem_stat.hierarchical_memory_limit;return{mem_rss:r,mem_tot:a,mem_pct:100*Math.min(1,r/a),cpu_pct:100*Math.min(1,e.cpu_usage_rate/e.cpu_cores_limit),cpu_tot:e.cpu_usage}}}}]);