UNPKG

@cocalc/static

Version:

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

1 lines 221 kB
"use strict";(self.webpackChunk_cocalc_static=self.webpackChunk_cocalc_static||[]).push([[3419],{13419:(e,t,n)=>{n.r(t),n.d(t,{EDITOR_SPEC:()=>Ur,Editor:()=>Fr});var r=n(24620),a=n(28459),l=n(96396),c=n(63697),o=n(32295),i=n(19990),u=n(25730),s=n(53537),d=n(63505),m=s.Z.TabPane,p=function(e){var t=e.frame_id,n=e.type,r=e.actions,a=e.counts;return d.createElement(s.Z,{defaultActiveKey:n,onChange:function(e){r.set_frame_type(t,e)}.bind(void 0),animated:!1},d.createElement(m,{tab:"Students (".concat(a.students,")"),key:"course_students"}),d.createElement(m,{tab:"Assignments (".concat(a.assignments,")"),key:"course_assignments"}),d.createElement(m,{tab:"Handouts (".concat(a.handouts,")"),key:"course_handouts"}),d.createElement(m,{tab:"Configuration",key:"course_configuration"}),d.createElement(m,{tab:"Shared Project",key:"course_shared_project"}))},f=n(18760),h=o.React.memo((function(e){var t,n,r=e.settings,a=e.num_students,l=e.tab,c=e.show_config;return(0,o.useTypedRedux)("customize","is_commercial")?(null!=a?a:0)<=3||r.get("student_pay")||r.get("institute_pay")?o.React.createElement("span",null):(n=(null!=a?a:0)>=20?{background:"red",color:"white",fontSize:"16pt",fontWeight:"bold",margin:"5px 15px"}:{fontSize:"12pt",color:"#666",margin:"5px 15px"},t="configuration"===l?o.React.createElement("span",null,"Please select either the student pay or institute pay option below."):o.React.createElement("span",null,"Please open the ",o.React.createElement("a",{onClick:c},"Configuration page")," for this course and select a pay option."),o.React.createElement(f.Z,{type:"warning",style:n,message:o.React.createElement("div",null,o.React.createElement(i.Icon,{name:"exclamation-triangle",style:{float:"right",marginTop:"3px"}}),o.React.createElement(i.Icon,{name:"exclamation-triangle"}),o.React.createElement(i.Space,null),t)})):o.React.createElement(o.React.Fragment,null)}));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}var y=o.React.memo((function(e){var t=function(){var e=o.redux.getStore(f);return null==e?{students:0,assignments:0,handouts:0}:{students:e.num_students(),assignments:e.num_assignments(),handouts:e.num_handouts()}},n=e.id,a=e.project_id,l=e.path,c=e.font_size,s=e.course_panel,d=e.actions,m=e.desc,f=(0,u.FD)(a,l),g=(0,o.useRedux)(f,"students"),y=(0,o.useRedux)(f,"assignments"),E=(0,o.useRedux)(f,"handouts"),v=(0,o.useRedux)(f,"settings"),_=(0,o.useRedux)(f,"configuring_projects"),b=(0,o.useRedux)(f,"reinviting_students"),R=(0,o.useRedux)(f,"activity"),w=(0,o.useRedux)(f,"error"),x=(0,o.useTypedRedux)("users","user_map"),S=(0,o.useTypedRedux)("projects","project_map");return o.React.createElement("div",{style:{fontSize:"".concat(c,"px"),margin:"0 0 0 15px"},className:"smc-vfill"},function(){if(null==g||null==x||null==S||null==y||null==E||null==v)return o.React.createElement(i.Loading,{theme:"medium"});var e={frame_id:n,name:f,project_id:a,path:l,students:g,user_map:x,project_map:S,assignments:y,handouts:E,configuring_projects:_,reinviting_students:b,settings:v,redux:o.redux,actions:o.redux.getActions(f)};return o.React.createElement(o.React.Fragment,null,function(){if(null!=R)return o.React.createElement(i.ActivityDisplay,{activity:(0,r.values)(R.toJS()),trunc:80,on_clear:function(){var e=o.redux.getActions(f);null!=e&&e.clear_activity()}})}(),function(){if(w)return o.React.createElement(i.ErrorDisplay,{banner:!0,error:w,onClose:function(){var e=o.redux.getActions(f);null!=e&&e.set_error("")}})}(),function(){if(null!=g&&null!=v)return o.React.createElement(h,{show_config:function(){d.set_frame_type(n,"course_configuration")},settings:v,num_students:g.size,tab:m.get("type","").slice("course_".length)})}(),o.React.createElement(p,{actions:d,frame_id:n,type:m.get("type"),counts:t()}),o.React.createElement(s,e))}())}));function E(e){var t=function(t){return o.React.createElement(e,t)};return function(e){return o.React.createElement(y,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){g(e,t,n[t])}))}return e}({},{course_panel:t},e))}}var v=n(33667),_=n(63505),b=n(48853),R=n.n(b),w=n(74591),x=n(63505),S=new(R())({max:250});function k(e){var t=e.rowCount,n=e.rowRenderer,r=e.rowKey,a=e.cacheId,l=(0,_.useRef)(null);(0,_.useEffect)((function(){if(a){var e=l.current;if(null!=e){var t=S.get(a);null!=t&&(e.scrollTop=t)}}}),[]);for(var c=(0,w.Z)((function(e){if(null!=a){var t=e.target.scrollTop;null!=t&&S.set(a,t)}}),75),o=[],i=0;i<t;i++)o.push(n({key:r(i),index:i}));return x.createElement("div",{ref:l,style:{overflowY:"scroll",height:"100%"},onScroll:null!=a?c:void 0},o)}var C=n(29180),j=n(82044),A=n(97636),I=n(85460),T=n(13435),Z={marginBottom:"0px"},O=n(57888);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 D(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,l=[],c=!0,o=!1;try{for(n=n.call(e);!(c=(r=n.next()).done)&&(l.push(r.value),!t||l.length!==t);c=!0);}catch(e){o=!0,a=e}finally{try{c||null==n.return||n.return()}finally{if(o)throw a}}return l}}(e,t)||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,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 P=o.React.memo((function(e){var t=function(){l(),g(""),_([])},n=function(e){if(e.preventDefault(),0===E.length){var n,a=null===(n=o.ReactDOM.findDOMNode(p.current))||void 0===n?void 0:n.firstChild.value;if(null==a)return;r([a])}else r(E);t()},r=e.add_selected,a=e.do_search,l=e.clear_search,c=e.is_searching,u=e.search_results,s=e.item_name,d=void 0===s?"result":s,m=e.none_found,p=(0,o.useRef)(null),f=D((0,o.useState)(""),2),h=f[0],g=f[1],y=D((0,o.useState)([]),2),E=y[0],_=y[1],b=D((0,o.useState)(!1),2),R=b[0],w=b[1];return(0,o.useEffect)((function(){var e,t=null!==(e=null==u?void 0:u.size)&&void 0!==e?e:0;w(t>0)}),[u]),o.React.createElement("div",null,o.React.createElement(i.SearchInput,{autoFocus:!0,default_value:"",value:h,placeholder:"Add or create ".concat(d," by directory name..."),on_change:function(e){return g(e)},on_submit:a,on_clear:t,buttonAfter:c?o.React.createElement(v.zx,null,o.React.createElement(i.Icon,{name:"cocalc-ring",spin:!0})):R?o.React.createElement(v.zx,{onClick:t},o.React.createElement(i.Icon,{name:"times-circle"})):o.React.createElement(v.zx,{onClick:function(){return a(null!=h?h:"")}},o.React.createElement(i.Icon,{name:"search"})),style:Z}),m?function(){if(h){for(var e=h.trim();"/"==e[e.length-1];)e=e.slice(0,e.length-1);if(e)return o.React.createElement(O.Z,{style:{margin:"15px 0"},title:"Create assignment or handout folder"},"Create '",e,"'?",o.React.createElement("br",null),o.React.createElement("br",null),o.React.createElement(v.zx,{onClick:function(){return t()}},"Cancel"),o.React.createElement(i.Space,null),o.React.createElement(v.zx,{bsStyle:"primary",onClick:function(){r([e]),l()}},"Yes, create it"))}}():void 0,R?o.React.createElement(v.cw,null,o.React.createElement(v.NI,{componentClass:"select",multiple:!0,ref:p,size:5,rows:10,onChange:function(e){var t=[],n=!0,r=!1,a=void 0;try{for(var l,c=e.target.selectedOptions[Symbol.iterator]();!(n=(l=c.next()).done);n=!0){var o=l.value;t.push(o.label)}}catch(e){r=!0,a=e}finally{try{n||null==c.return||c.return()}finally{if(r)throw a}}return _(t)},style:{marginTop:"15px"}},function(){if(null!=u)return u.map((function(e){return o.React.createElement("option",{key:e,value:e,label:e},e)})).toArray()}()),o.React.createElement(v.hE,{style:{marginTop:"15px"}},function(){var e,t=null!==(e=null==E?void 0:E.length)&&void 0!==e?e:0,r=function(){if(null==u)return"";switch(u.size){case 0:return"No ".concat(d," found");case 1:return"Add ".concat(d);default:switch(t){case 0:case 1:return"Add selected ".concat(d);default:return"Add ".concat(t," ").concat(d,"s")}}}();return o.React.createElement(v.zx,{disabled:null==u||0===u.size,onClick:n},o.React.createElement(i.Icon,{name:"plus"})," ",r)}(),o.React.createElement(v.zx,{onClick:t},"Cancel"))):void 0)}),(function(e,t){return!(0,r.is_different)(e,t,["search_results","item_name","is_searching","none_found"])})),M=n(63505);function N(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 L(e,t,n,r,a,l,c){try{var o=e[l](c),i=o.value}catch(e){return void n(e)}o.done?t(i):Promise.resolve(i).then(r,a)}function U(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var l=e.apply(t,n);function c(e){L(l,r,a,c,o,"next",e)}function o(e){L(l,r,a,c,o,"throw",e)}c(void 0)}))}}function F(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,l=[],c=!0,o=!1;try{for(n=n.call(e);!(c=(r=n.next()).done)&&(l.push(r.value),!t||l.length!==t);c=!0);}catch(e){o=!0,a=e}finally{try{c||null==n.return||n.return()}finally{if(o)throw a}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return N(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)?N(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 q=function(e,t){var n,r,a,l,c={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]};return l={next:o(0),throw:o(1),return:o(2)},"function"==typeof Symbol&&(l[Symbol.iterator]=function(){return this}),l;function o(l){return function(o){return function(l){if(n)throw new TypeError("Generator is already executing.");for(;c;)try{if(n=1,r&&(a=2&l[0]?r.return:l[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,l[1])).done)return a;switch(r=0,a&&(l=[2&l[0],a.value]),l[0]){case 0:case 1:a=l;break;case 4:return c.label++,{value:l[1],done:!1};case 5:c.label++,r=l[1],l=[0];continue;case 7:l=c.ops.pop(),c.trys.pop();continue;default:if(!((a=(a=c.trys).length>0&&a[a.length-1])||6!==l[0]&&2!==l[0])){c=0;continue}if(3===l[0]&&(!a||l[1]>a[0]&&l[1]<a[3])){c.label=l[1];break}if(6===l[0]&&c.label<a[1]){c.label=a[1],a=l;break}if(a&&c.label<a[2]){c.label=a[2],c.ops.push(l);break}a[2]&&c.ops.pop(),c.trys.pop();continue}l=t.call(e,c)}catch(e){l=[6,e],r=0}finally{n=a=0}if(5&l[0])throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}([l,o])}}};function Y(e,t,n){if(0==e.length)return e;var r=[];return n.filter((function(e){return!e.get("deleted")})).map((function(e){var t=e.get("path");if(t)return r.push(t)})),(e=e.filter((function(e){return!function(e){if(-1!==e.indexOf("-collect")&&-1===t.indexOf("collect"))return!0;if(r.includes(e))return!0;var n=!0,a=!1,l=void 0;try{for(var c,o=r[Symbol.iterator]();!(n=(c=o.next()).done);n=!0){var i=c.value;if(e.startsWith(i+"/"))return!0}}catch(e){a=!0,l=e}finally{try{n||null==o.return||o.return()}finally{if(a)throw l}}return!1}(e)}))).sort(),e}var B=function(e){var t=function(e){return"*".concat(e,"*")},n=function(){R(I.List([])),S(!1)},r=e.search_change,a=e.num_omitted,l=e.project_id,c=e.add_folders,u=e.items,s=e.search,d=e.item_name,m=void 0===d?"item":d,p=e.plural_item_name,f=void 0===p?"item":p,h=(0,o.useIsMountedRef)(),g=(0,o.useRef)(""),y=F((0,o.useState)(!1),2),E=y[0],v=y[1],_=F((0,o.useState)(I.List()),2),b=_[0],R=_[1],w=F((0,o.useState)(!1),2),x=w[0],S=w[1],k=F((0,o.useState)(),2),O=k[0],z=k[1];function D(){return D=U((function(e){var n,r,a,c;return q(this,(function(o){switch(o.label){case 0:if(e=e.trim(),E&&e===g.current)return[2];v(!0),g.current=e,o.label=1;case 1:return o.trys.push([1,3,,4]),[4,A.webapp_client.project_client.find_directories({project_id:l,query:t(e)})];case 2:return n=o.sent(),h.current?[3,4]:[2];case 3:return r=o.sent(),h.current?(v(!1),z(r),R(void 0),[2]):[2];case 4:return 0===n.directories.length?(v(!1),R(I.List([])),S(!0),[2]):(a=Y(n.directories,e,u),c=b&&a.length===b.size?b.merge(a):I.List(a),v(!1),R(c),S(!1),[2])}}))})),D.apply(this,arguments)}return M.createElement("div",null,M.createElement(C.Z,null,M.createElement(j.Z,{md:6},M.createElement(i.SearchInput,{placeholder:"Find ".concat(f,"..."),default_value:s,on_change:r,style:Z})),M.createElement(j.Z,{md:8},a?M.createElement("h5",{style:{textAlign:"center",color:T.COLORS.GRAY_L,marginTop:"5px"}},"(Omitting ",a," ",a>1?f:m,")"):void 0),M.createElement(j.Z,{md:10},M.createElement(P,{add_selected:function(e){return null!=e&&c(e),n()},do_search:function(e){return D.apply(this,arguments)},clear_search:n,is_searching:E,item_name:m,err:O,search_results:b,none_found:x}))))};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}n(63505);var W,H,J={color:T.COLORS.GRAY_D,marginLeft:"10px",whiteSpace:"normal"},$=(W=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){G(e,t,n[t])}))}return e}({},J),H=null!=(H={color:T.COLORS.BS_GREEN_DD})?H:{},Object.getOwnPropertyDescriptors?Object.defineProperties(W,Object.getOwnPropertyDescriptors(H)):function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n.push.apply(n,r)}return n}(Object(H)).forEach((function(e){Object.defineProperty(W,e,Object.getOwnPropertyDescriptor(H,e))})),W),K=o.React.memo((function(e){var t=e.done,n=e.not_done,r=e.step,a=e.skipped;return null==t||null==n||null==r?o.React.createElement("span",null):o.React.createElement("div",{style:0===n?$:J},function(){if(0===n)return o.React.createElement("span",{style:{fontSize:"12pt"}},o.React.createElement(i.Icon,{name:"check-circle"}),o.React.createElement(i.Space,null))}(),a?o.React.createElement(o.React.Fragment,null,"Skipped"):o.React.createElement(o.React.Fragment,null,"(",t," / ",n+t," ",r,")"))})),X=o.React.memo((function(e){var t=e.date;return null==t?null:("string"==typeof t&&(t=(0,r.ISO_to_Date)(t)),o.React.createElement(i.TimeAgo,{popover:!0,date:t}))}),(function(e,t){return!(0,i.is_different_date)(e.date,t.date)})),V=o.React.memo((function(e){var t=function(e,t,n){var a=function(e){switch(e){case"assignment":return{title:"Assign to Student",tip:"This column gives the status of making homework available to students, and lets you copy homework to one student at a time."};case"collect":return{title:"Collect from Student",tip:"This column gives status information about collecting homework from students, and lets you collect from one student at a time."};case"grade":return{title:"Record homework grade.",tip:"Use this column to record the grade the student received on the assignment. Once the grade is recorded, you can return the assignment. You can also export grades to a file in the Configuration tab. Enter anything here; it does not have to be a number."};case"peer_assignment":return{title:"Assign Peer Grading",tip:"This column gives the status of sending out collected homework to students for peer grading."};case"peer_collect":return{title:"Collect Peer Grading",tip:"This column gives status information about collecting the peer grading work that students did, and lets you collect peer grading from one student at a time."};case"return_graded":return{title:"Return to Student",tip:"This column gives status information about when you returned homework to the students. Once you have entered a grade, you can return the assignment."};default:(0,r.unreachable)(e)}throw new Error("unknown key: ".concat(e))}(t),l=a.tip,c=a.title;return o.React.createElement(j.Z,{md:n,key:t},o.React.createElement(i.Tip,{title:c,tip:l},o.React.createElement("b",null,e,". ",c)))},n=e.title,a=e.peer_grade;return o.React.createElement("div",null,o.React.createElement(C.Z,{style:{borderBottom:"2px solid #aaa"}},o.React.createElement(j.Z,{md:4,key:"title"},o.React.createElement(i.Tip,{title:n,tip:"Assignment"===n?"This column gives the directory name of the assignment.":"This column gives the name of the student."},o.React.createElement("b",null,n))),o.React.createElement(j.Z,{md:20,key:"rest"},a?o.React.createElement(C.Z,null,t(1,"assignment",4),t(2,"collect",4),t(3,"peer_assignment",4),t(4,"peer_collect",4),t(5,"grade",4),t(6,"return_graded",4)):o.React.createElement(C.Z,null,t(1,"assignment",6),t(2,"collect",6),t(3,"grade",6),t(4,"return_graded",6)))))})),Q=n(31968),ee=n(98846),te=n(30126),ne=n(63505);function re(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 ae=function(e){var t,n,r=function(e,t){return ne.createElement("div",{key:e,style:{marginBottom:"5px"}},l(e),c(e,t))},a=function(e){v.assignments.open_file_in_collected_assignment(p,h,e)},l=function(e){var t=(0,te.wA)(e);return ne.createElement("div",{style:{fontSize:"12px"}},ne.createElement("a",{style:{fontFamily:"monospace"},onClick:function(){return a(e)}},e),ne.createElement("br",null),ne.createElement("a",{style:{fontFamily:"monospace"},onClick:function(){return a(t)}},t))},c=function(e,t){if("string"==typeof t)return ne.createElement(f.Z,{type:"error",message:t+"\n- try running nbgrader again."});var n,r=[],a=null!==(n=null==m?void 0:m[e])&&void 0!==n?n:[];for(var l in t)a.includes(l)||a.push(l);var c=!0,o=!1,i=void 0;try{for(var s,d=a[Symbol.iterator]();!(c=(s=d.next()).done);c=!0){var p=s.value;null!=t[p]&&r.push(u(e,p,t[p]))}}catch(e){o=!0,i=e}finally{try{c||null==d.return||d.return()}finally{if(o)throw i}}var h={padding:"5px"};return ne.createElement("table",{style:{border:"1px solid lightgray",width:"100%",borderRadius:"3px",borderCollapse:"collapse"}},ne.createElement("thead",null,ne.createElement("tr",{key:"header",style:{border:"1px solid grey"}},ne.createElement("th",{style:h},"Problem"),ne.createElement("th",{style:h},"Score"))),ne.createElement("tbody",null,r))},u=function(e,t,n){var r={padding:"5px",backgroundColor:null==n.score?"#fff1f0":void 0};return ne.createElement("tr",{key:t},ne.createElement("td",{style:r},t),ne.createElement("td",{style:r},function(e,t,n){var r;if(!n.manual)return ne.createElement(ne.Fragment,null,null!==(r=n.score)&&void 0!==r?r:"?");var a="".concat(null!=n.score?n.score:""),l={width:"48px",color:"#666",fontSize:"14px",border:"1px solid lightgrey",display:"inline-block",padding:"1px"};return b.filename==e&&b.id==t?ne.createElement("input",{spellCheck:!1,autoFocus:!0,type:"input",defaultValue:a,onBlur:function(e){return function(e){null!=b.id&&null!=b.filename&&function(e,t,n){var r=parseFloat(n);!isNaN(r)&&isFinite(r)&&v.assignments.set_specific_nbgrader_score(p,h,e,t,r,!0)}(b.filename,b.id,e),R({filename:void 0,id:void 0})}(e.target.value)},style:l}):ne.createElement("span",{style:l,onClick:function(){return R({filename:e,id:t})}},a||"-")}(e,t,n)," / ",n.points,s(n)))},s=function(e){if(e.manual&&null==e.score)return ne.createElement("div",null,ne.createElement(i.Icon,{name:"exclamation-triangle"})," Enter score above")},d=e.nbgrader_scores,m=e.nbgrader_score_ids,p=e.assignment_id,h=e.student_id,g=e.name,y=e.show_all,E=e.set_show_all,v=(0,o.useActions)({name:g}),_=(t=(0,o.useState)({}),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,l=[],c=!0,o=!1;try{for(n=n.call(e);!(c=(r=n.next()).done)&&(l.push(r.value),!t||l.length!==t);c=!0);}catch(e){o=!0,a=e}finally{try{c||null==n.return||n.return()}finally{if(o)throw a}}return l}}(t,n)||function(e,t){if(e){if("string"==typeof e)return re(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)?re(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.")}()),b=_[0],R=_[1],w=(0,ee.KU)(d),x=w.score,S=w.points,k=w.error,C=w.manual_needed,j=!(y||!C&&!k),A=j?"#fff1f0":void 0;return ne.createElement(O.Z,{size:"small",style:{marginTop:"5px",backgroundColor:A},extra:function(e){return ne.createElement("a",{onClick:function(){return null==E?void 0:E()}},e?ne.createElement(ne.Fragment,null,ne.createElement(i.Icon,{name:"exclamation-triangle"})," "):void 0,y?"":"Edit...")}(j),title:function(e,t,n){return ne.createElement("span",null,ne.createElement("b",null,"nbgrader:")," ",n?"error":"".concat(e,"/").concat(t))}(x,S,k),bodyStyle:y?{}:{padding:0}},function(){if(y){var e=[];for(var t in d)e.push(r(t,d[t]));return ne.createElement("div",null,e)}}())};function le(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 ce(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function oe(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,l=[],c=!0,o=!1;try{for(n=n.call(e);!(c=(r=n.next()).done)&&(l.push(r.value),!t||l.length!==t);c=!0);}catch(e){o=!0,a=e}finally{try{c||null==n.return||n.return()}finally{if(o)throw a}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return le(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)?le(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 ie={Assign:!1,Collect:!1,"Peer Assign":!1,Return:!1,"Peer Collect":!1};function ue(){var e=oe((0,o.useState)(ie),2),t=e[0],n=e[1];return[t,function(e,r){n(function(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n.push.apply(n,r)}return n}(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})),e}(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){ce(e,t,n[t])}))}return e}({},t),ce({},e,r)))}]}var se=o.React.memo((function(e){var t,n,a=function(){S.assignments.update_edited_feedback(p.get("assignment_id"),m.get("student_id"))},l=function(){S.assignments.clear_edited_feedback(p.get("assignment_id"),m.get("student_id"))},c=function(e){var t=!1;if(null!=w){var n=w.get(p.get("assignment_id")+"-"+m.get("student_id"));n&&(new Date).valueOf()-n<=6e5&&(t=!0)}return e=t?o.React.createElement("span",null," ",o.React.createElement(i.Icon,{name:"cocalc-ring",spin:!0})," Running nbgrader"):o.React.createElement("span",null,e),o.React.createElement("div",{style:{marginTop:"5px"}},o.React.createElement(v.zx,{key:"nbgrader",disabled:t,bsSize:k,onClick:function(){null!=x.current&&Date.now()-x.current.valueOf()<=3e3||(x.current=new Date,S.assignments.run_nbgrader_for_one_student(p.get("assignment_id"),m.get("student_id")))}},o.React.createElement(i.Icon,{name:"graduation-cap"})," ",e))},u=function(e){var t,n=e.step,a=e.type,l=e.data,c=void 0===l?{}:l,u=e.enable_copy,s=void 0!==u&&u,d=e.copy_tip,m=void 0===d?"":d,p=e.open_tip,f=void 0===p?"":p,h=e.omit_errors,g=void 0!==h&&h,y=function(){return function(e,t,n){return S.assignments.open_assignment(e,t,n)}(a,E.assignment_id,E.student_id)},_=function(){return function(e,t,n){return S.assignments.copy_assignment(e,t,n)}(a,E.assignment_id,E.student_id)},b=[];return s&&(c.start?b.push(function(e,t,n){return o.React.createElement(v.hE,{key:"open_copying"},o.React.createElement(v.zx,{key:"copy",bsStyle:"success",disabled:!0,bsSize:k},o.React.createElement(i.Icon,{name:"cocalc-ring",spin:!0})," ",e,"ing"),o.React.createElement(v.zx,{key:"stop",bsStyle:"danger",onClick:function(){return function(e,t,n){S.assignments.stop_copying_assignment(t,n,e)}(a,E.assignment_id,E.student_id)},bsSize:k},o.React.createElement(i.Icon,{name:"times"})),o.React.createElement(v.zx,{key:"open",onClick:t,bsSize:k},o.React.createElement(i.Icon,{name:"folder-open"})," Open"))}(n,y)):c.time?b.push(function(e,t,n,r,a){var l="Return"===e?"left":"right";return o.React.createElement("div",{key:"open_recopy"},function(e,t,n,r){if(I[e]){var a=[];return a.push(o.React.createElement(v.zx,{key:"recopy_confirm",bsStyle:"danger",bsSize:k,onClick:function(){T(e,!1),t()}},o.React.createElement(i.Icon,{name:"share-square",rotate:-1!==e.indexOf("ollect")?"180":void 0})," ","Yes, ",e.toLowerCase()," again")),a.push(o.React.createElement(v.zx,{key:"copy_cancel",bsSize:k,onClick:function(){return T(e,!1)}},"Cancel")),"assign"===e.toLowerCase()&&a.push(o.React.createElement("div",{key:"what-happens",style:{margin:"5px",display:"inline-block"}},o.React.createElement("a",{target:"_blank",href:"https://doc.cocalc.com/teaching-tips_and_tricks.html#how-exactly-are-assignments-copied-to-students"},"What happens when I assign again?"))),a}return o.React.createElement(v.zx,{key:"copy",bsStyle:"warning",bsSize:k,onClick:function(){return T(e,!0)}},o.React.createElement(i.Tip,{title:e,placement:r,tip:o.React.createElement("span",null,n)},o.React.createElement(i.Icon,{name:"share-square",rotate:-1!==e.indexOf("ollect")?"180":void 0})," ",e,"..."))}(e,n,r,l),o.React.createElement(i.Space,null),o.React.createElement(v.zx,{key:"open",bsSize:k,onClick:t},o.React.createElement(i.Tip,{title:"Open assignment",placement:l,tip:a},o.React.createElement(i.Icon,{name:"folder-open"})," Open")))}(n,y,_,m,f)):b.push(function(e,t,n){var r;return"Return"===e&&(r="left"),o.React.createElement(i.Tip,{key:"copy",title:e,tip:n,placement:r},o.React.createElement(v.zx,{onClick:t,bsStyle:"primary",bsSize:k},o.React.createElement(i.Icon,{name:"share-square",rotate:-1!==e.indexOf("ollect")?"180":void 0})," ",e))}(n,_,m))),c.time&&b.push((t=c.time,o.React.createElement("div",{key:"time",style:{color:"#666"}},o.React.createElement(X,{date:t})))),c.error&&!g&&b.push(function(e,t){return"string"!=typeof t&&(t=(0,r.to_json)(t)),t=-1!==t.indexOf("No such file or directory")||-1!=t.indexOf("ENOENT")?"The student might have renamed or deleted the directory that contained their assignment. Open their project and see what happened. If they renamed it, you could rename it back, then collect the assignment again.\n".concat(t):"Try to ".concat(e.toLowerCase()," again:\n")+t,o.React.createElement(i.ErrorDisplay,{key:"error",error:t,style:{maxHeight:"140px",overflow:"auto",display:"block"}})}(n,c.error)),o.React.createElement(o.React.Fragment,null,b)},s=e.name,d=e.title,m=e.student,p=e.assignment,f=e.grade,h=void 0===f?"":f,g=e.comments,y=void 0===g?"":g,E=e.info,_=e.nbgrader_scores,b=e.nbgrader_score_ids,R=e.is_editing,w=e.nbgrader_run_info,x=(0,o.useRef)(),S=(0,o.useActions)({name:s}),k=(0,te.JU)().bsSize,A=oe(ue(),2),I=A[0],T=A[1],Z=!!p.getIn(["peer_grade","enabled"]),O=!!p.get("skip_grading"),z=!!p.get("skip_assignment"),D=!!p.get("skip_collect");Z?(t=!O&&E.last_peer_collect,n=h||O&&E.last_peer_collect):(t=!O&&E.last_collect||D,n=h||O&&E.last_collect||O&&D);var P=Z?4:6;return o.React.createElement("div",null,o.React.createElement(C.Z,{style:{borderTop:"1px solid #aaa",paddingTop:"5px",paddingBottom:"5px"}},o.React.createElement(j.Z,{md:4,key:"title"},d),o.React.createElement(j.Z,{md:20,key:"rest"},o.React.createElement(C.Z,null,o.React.createElement(j.Z,{md:P,key:"last_assignment"},o.React.createElement(u,{step:"Assign",data:E.last_assignment,type:"assigned",enable_copy:!0,copy_tip:"Copy the assignment from your project to this student's project so they can do their homework.",open_tip:"Open the student's copy of this assignment directly in their project. You will be able to see them type, chat with them, leave them hints, etc.",omit_errors:z})),o.React.createElement(j.Z,{md:P,key:"last_collect"},z||!(null!=E.last_assignment?E.last_assignment.error:void 0)?o.React.createElement(u,{step:"Collect",data:E.last_collect,type:"collected",enable_copy:null!=E.last_assignment||z,copy_tip:"Copy the assignment from your student's project back to your project so you can grade their work.",open_tip:"Open the copy of your student's work in your own project, so that you can grade their work.",omit_errors:D}):void 0),function(){var e;if(Z&&E.peer_assignment&&null==(null===(e=E.last_collect)||void 0===e?void 0:e.error))return o.React.createElement(j.Z,{md:4,key:"peer_assign"},o.React.createElement(u,{step:"Peer Assign",data:E.last_peer_assignment,type:"peer-assigned",enable_copy:null!=E.last_collect,copy_tip:"Copy collected assignments from your project to this student's project so they can grade them.",open_tip:"Open the student's copies of this assignment directly in their project, so you can see what they are peer grading."}))}(),function(){if(Z&&E.peer_collect)return o.React.createElement(j.Z,{md:4,key:"peer_collect"},o.React.createElement(u,{step:"Peer Collect",data:E.last_peer_collect,type:"peer-collected",enable_copy:null!=E.last_peer_assignment,copy_tip:"Copy the peer-graded assignments from various student projects back to your project so you can assign their official grade.",open_tip:"Open your copy of your student's peer grading work in your own project, so that you can grade their work."}))}(),o.React.createElement(j.Z,{md:P,key:"grade"},t&&o.React.createElement(o.React.Fragment,null,function(){if(R)return o.React.createElement(v.zx,{bsStyle:"success",key:"save",bsSize:k,onClick:function(){return l()}},"Save")}(),function(){if(R)return o.React.createElement(Q.o2,{placeholder:"Grade...",value:h||"",onBlur:function(e){S.assignments.set_grade(p.get("assignment_id"),m.get("student_id"),e)},onShiftEnter:function(){return l()},height:"3em",hideHelp:!0,style:{margin:"5px 0"},autoFocus:!0});var e=(null!=h?h:"").trim()||(null!=y?y:"").trim()?"Grade: ".concat(h):"Enter grade...";return o.React.createElement(v.zx,{key:"edit",onClick:function(){return a()},bsStyle:"default",disabled:R,style:{marginRight:"5px"},bsSize:k},e)}(),R?o.React.createElement(Q.o2,{placeholder:"Optional markdown comments...",value:y||"",onBlur:function(e){S.assignments.set_comment(p.get("assignment_id"),m.get("student_id"),e)},onShiftEnter:function(){return l()},height:"7em",hideHelp:!0}):(null==y?void 0:y.trim())?o.React.createElement("div",{style:{width:"100%",paddingRight:"5px"}},o.React.createElement(i.Markdown,{value:y,style:{width:"100%",maxHeight:"4em",overflowY:"auto",padding:"5px",border:"1px solid lightgray",cursor:"pointer",display:"inline-block"},onClick:function(){return a()}})):void 0,_?function(){if(_)return o.React.createElement("div",null,o.React.createElement(ae,{show_all:R,set_show_all:function(){return a()},nbgrader_scores:_,nbgrader_score_ids:b,name:s,student_id:m.get("student_id"),assignment_id:p.get("assignment_id")}),c("Run nbgrader again"))}():p.get("nbgrader")&&!p.get("skip_grading")?c("Run nbgrader"):void 0)),o.React.createElement(j.Z,{md:P,key:"return_graded"},n?o.React.createElement(u,{step:"Return",data:E.last_return_graded,type:"graded",enable_copy:null!=E.last_collect||D,copy_tip:"Copy the graded assignment back to your student's project.",open_tip:"Open the copy of your student's work that you returned to them. This opens the returned assignment directly in their project."}):void 0)))))})),de={},me=(0,r.merge)({border:"1px solid #aaa",boxShadow:"5px 5px 5px #999",borderRadius:"3px",marginBottom:"10px"},de),pe={borderTop:"3px solid #aaa",marginTop:"10px",paddingTop:"5px"};function fe(e){var t;return(0,r.types)(e,{needs_margin:null===(t=r.types.bool)||void 0===t?void 0:t.isRequired}),{marginTop:e.needs_margin?"15px":"0px",float:"right"}}var he=n(4668),ge=n(53707),ye=n(24809),Ee=n(81671),ve=n(99918);function _e(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 be=o.React.memo((function(e){var t,n,a=e.name,l=e.assignment_id,c=function(){var e,t=null!==(e=g.get("nbgrader_parallel"))&&void 0!==e?e:ee.Kk;return o.React.createElement(i.Tip,{title:"Nbgrader parallel limit: grade ".concat(t," students at once"),tip:"This is the max number of students to grade in parallel. Change this in course configuration."},o.React.createElement("div",{style:{marginTop:"5px",fontWeight:400}},"Grade up to ",t," students at once."))},u=(0,o.useActions)(a),s=(0,o.useRedux)([a,"nbgrader_run_info"]),d=(0,o.useRedux)([a,"assignments",l]),m=(t=(0,o.useState)(!1),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,l=[],c=!0,o=!1;try{for(n=n.call(e);!(c=(r=n.next()).done)&&(l.push(r.value),!t||l.length!==t);c=!0);}catch(e){o=!0,a=e}finally{try{c||null==n.return||n.return()}finally{if(o)throw a}}return l}}(t,n)||function(e,t){if(e){if("string"==typeof e)return _e(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)?_e(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.")}()),p=m[0],h=m[1],g=(0,o.useRedux)([a,"settings"]),y=(0,o.useMemo)((function(){if(null!=o.redux.getStore(a))return(0,ve.K)(d)}),[d]),E=(0,o.useMemo)((function(){if(null==s)return!1;var e=s.get(l);return!!(e&&(new Date).valueOf()-e<=6e5)}),[s]),v=E?o.React.createElement("span",null," ",o.React.createElement(i.Icon,{name:"cocalc-ring",spin:!0}),o.React.createElement(i.Space,null)," Nbgrader is running"):o.React.createElement("span",null,"Nbgrader...");return o.React.createElement("div",{style:{margin:"5px 0"}},o.React.createElement(ye.Z,{onClick:function(){return h(!p)}},o.React.createElement(i.Icon,{style:{width:"20px"},name:p?"caret-down":"caret-right"}),o.React.createElement(i.Space,null)," ",v),p&&function(){if(null==y)return o.React.createElement("span",null);var e=y.not_attempted+y.failed,t=y.attempted+y.not_attempted,n=y.failed>0?" ".concat(y.failed," failed autograding."):"",a=y.not_attempted>0?" ".concat(y.not_attempted," not autograded."):"";return o.React.createElement(f.Z,{style:{marginTop:"5px"},type:"success",message:o.React.createElement("span",{style:{fontSize:"14px"}},"Autograded ",y.succeeded,"/",t," assignments.",n,a),description:o.React.createElement("div",null,e>0&&o.React.createElement("span",null,o.React.createElement("br",null),o.React.createElement(ye.Z,{disabled:E,type:"primary",onClick:function(){null==u||u.assignments.run_nbgrader_for_all_students(l,!0)}},"Autograde ",e," not-graded ",(0,r.plural)(e,"assignment"))),y.attempted>0&&o.React.createElement("span",null,o.React.createElement("br",null),o.React.createElement(Ee.Z,{title:"Are you sure you want to autograde ALL ".concat(t," ").concat((0,r.plural)(t,"student"),"?"),onConfirm:function(){null==u||u.assignments.run_nbgrader_for_all_students(l)}},o.React.createElement(ye.Z,{danger:!0,style:{width:"100%",overflow:"hidden"},disabled:E},"Autograde all ",t," ",(0,r.plural)(t,"assignment"),"..."))),c(),u&&o.React.createElement(Re,{actions:u,assignment_id:l,running:E}))})}())}));function Re(e){var t=e.actions,n=e.assignment_id,r=e.running;return o.React.createElement(Ee.Z,{title:"Copy the nbgrader grades to be the assigned grades for all students, even if there are ungraded manual problems, errors or other issues? You probably don't need to do this.",onConfirm:function(){t.assignments.set_nbgrader_scores_for_all_students({assignment_id:n,force:!0,commit:!0})},overlayStyle:{maxWidth:"500px"}},o.React.createElement(ye.Z,{style:{marginTop:"10px",width:"100%",overflow:"hidden"},disabled:r},"Sync grades..."))}var we=n(64445),xe=o.React.memo((function(e){var t,n=function(){return c.getStore(l)},a=e.frame_id,l=e.name,c=e.redux,i=e.assignment,u=e.students,s=e.user_map,d=e.background,m=e.active_student_sort,p=e.active_feedback_edits,f=e.nbgrader_run_info,h=e.search,g=(0,o.useMemo)((function(){var e=te.k1(u,s,c),t=n(),a=(0,r.search_split)(h),l=[],o=!0,i=!1,d=void 0;try{for(var p,f=e[Symbol.iterator]();!(o=(p=f.next()).done);o=!0){var g=p.value;g.deleted||a.length>0&&!(0,r.search_match)(t.get_student_name(g.student_id).toLowerCase(),a)||l.push(g)}}catch(e){i=!0,d=e}finally{try{o||null==f.return||f.return()}finally{if(i)throw d}}return l.sort(te.X$(m.toJS())),m.get("is_descending")&&l.reverse(),l.map((function(e){return e.student_id}))}),[i,u,s,d,m,p,f,h]);return o.React.createElement("div",{style:{height:"70vh",display:"flex",flexDirection:"column"}},o.React.createElement(V,{key:"header",title:"Student",peer_grade:(t=i.get("peer_grade"),!!t&&t.get("enabled"))}),o.React.createElement(k,{rowCount:g.length,rowRenderer:function(e){return function(e){var t=n(),a=t.get_student(e);if(null!=a){var c=te.A(i.get("assignment_id"),e),u=p.get(c);return o.React.createElement(se,{key:e,title:(0,r.trunc_middle)(t.get_student_name(e),40),name:l,student:a,assignment:i,grade:t.get_grade(i.get("assignment_id"),e),nbgrader_scores:t.get_nbgrader_scores(i.get("assignment_id"),e),nbgrader_score_ids:t.get_nbgrader_score_ids(i.get("assignment_id")),comments:t.get_comments(i.get("assignment_id"),e),info:t.student_assignment_info(e,i.get("assignment_id")),is_editing:!!u,nbgrader_run_info:f})}}(e.key)},rowKey:function(e){return g[e]},cacheId:"course-assignment-".concat(i.get("assignment_id"),"-").concat(l,"-").concat(a)}))}),(function(e,t){return!(0,r.is_different)(e,t,["assignment","students","user_map","background","active_student_sort","active_feedback_edits","nbgrader_run_info","search"])})),Se=n(92720),ke=n(32217),Ce=n(14761);function je(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Ae=o.React.memo((function(e){var t=function(e){return null!=e?new Date(e):(0,r.server_days_ago)(-7)},n=function(e){c.assignments.set_peer_grade(l.get("assignment_id"),e)},a=function(e){var r=t(e);n({due_date:null==r?void 0:r.toISOString()})},l=e.assignment,c=e.actions,u=l.get("peer_grade"),s=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){je(e,t,n[t])}))}return e}({number:1,enabled:!1},null==u?void 0:u.toJS());return o.React.createElement(O.Z,{style:{background:"#fcf8e3",whiteSpace:"normal"},title:o.React.createElement("h3",null,o.React.createElement(i.Icon,{name:"users"})," Peer grading")},o.React.createElement(ke.Z.Text,{type:"secondary"},"Use peer grading to randomly (and anonymously) redistribute collected homework to your students, so that they can grade it for you."),function(e){return o.React.createElement(C.Z,{style:{marginTop:"10px"}},o.React.createElement(j.Z,{span:12},o.React.createElement(Se.Z,{checked:e.enabled,onChange:function(e){return n({enabled:e})},style:{display:"inline-block",verticalAlign:"middle"}})),o.React.createElement(j.Z,{span:12},"Enable Peer Grading"))}(s),s.enabled?function(e){return o.React.createElement(o.React.Fragment,null,function(e){var t,r=c.get_store(),a=(null!==(t=null==r?void 0:r.num_students())&&void 0!==t?t:2)-1;return o.React.createElement(C.Z,{style:{marginTop:"10px"}},o.React.createElement(j.Z,{span:12},"Number of students who will grade each assignment"),o.React.createElement(j.Z,{span:12},o.React.createElement(Ce.Z,{onChange:function(e){return n({number:e})},min:1,max:a,value:e.number})))}(e),function(e){var n=o.React.createElement(ke.Z.Paragraph,{ellipsis:{expandable:!0,rows:1,symbol:"more info"}},"Due date:"," ",o.React.createElement(ke.Z.Text,{type:"secondary"},"Set the due date for grading this assignment. Note: you must explicitly click a button to collect graded assignments – they are not automatically collected on the due date. A file is included in the student peer grading assignment telling them when they should finish their grading."));return o.React.createElement(C.Z,{style:{marginTop:"10px"}},o.React.createElement(j.Z,{span:12},n),o.React.createElement(j.Z,{span:12},o.React.createElement(i.DateTimePicker,{style:{width:"100%"},placeholder:"Set Peer Grading Due Date",value:t(e.due_date),onChange:a})))}(e),function(e){return o.React.createElement(C.Z,{style:{marginTop:"10px"}},o.React.createElement(j.Z,{span:12},o.React.createElement(ke.Z.Paragraph,{ellipsis:{expandable:!0,rows:1,symbol:"more info"}},"Grading guidelines:"," ",o.React.createElement(ke.Z.Text,{type:"secondary"},"This text will be made available to students in their grading folder in a file ",o.React.createElement("code",null,we.Dg),". Tell your students how to grade each problem. Since this is a markdown file, you might also provide a link to a publicly shared file or directory with guidelines."))),o.React.createElement(j.Z,{span:12},o.React.createElement("div",{style:{background:"white",padding:"10px",border:"1px solid #ccc",borderRadius:"3px"}},o.React.createElement(i.MarkdownInput,{persist_id:l.get("path")+l.get("assignment_id")+"grading-guidelines",attach_to:c.name,rows:16,placeholder:"Enter your grading guidelines for this assignment...",default_value:e.guidelines,on_save:function(e){return n({guidelines:e})}}))))}(e))}(s):void 0,o.React.createElement("div",{style:{marginTop:"10px"}},o.React.createElement(ye.Z,{onClick:function(){return c.toggle_item_expansion("peer_config",l.get("assignment_id"))}},"Close")))})),Ie=function(e){var t=e.assignment,n=e.step,r=e.actions,a=function(){var e,r=void 0;return t.get("skip_".concat(n))?(e="check-square-o",t.getIn(["peer_grade","enabled"])&&(r=o.React.createElement("span",null,o.React.createElement(i.Space,null)," (Please disable this or peer grading.)"))):e="square-o",{icon:e,extra:r}}(),l=a.icon,c=a.extra;return o.React.createElement(i.Tip,{placement:"left",title:"Skip step in workflow",tip:"Click this checkbox to enable doing the next step after this step, e.g., you can try to collect assignments that you never explicitly assigned (maybe the students put them in place some other way)."},o.React.createElement(ye.Z,{onClick:function(){r.assignments.set_skip(t.get("assignment_id"),n,!t.get("skip_".concat(n)))}},o.React.createElement(i.Icon,{name:l})," Skip ",n," ",c))};function Te(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 Ze(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Oe(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,l=[],c=!0,o=!1;try{for(n=n.call(e);!(c=(r=n.next()).done)&&(l.push(r.value),!t||l.length!==t);c=!0);}catch(e){o=!0,a=e}finally{try{c||null==n.return||n.return()}finally{if(o)throw a}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return Te(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)?Te(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.")}()}function ze(){var e=Oe((0,_.useState)({assignment:!1,collect:!1,peer_assignment:!1,peer_collect:!1,return_graded:!1}),2),t=e[0],n=e[1];return{copy_confirm:t,set:function(e,t){n((function(n){return function(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n.push.apply(n,r)}return n}(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})),e}(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){Ze(e,t,n[t])}))}return e}({},n),Ze({},e,t))}))}}}var De=o.React.memo((function(e){var t=function(){return Pe.get_store()},n=function(){return!!q.getIn(["peer_grade","enabled"])},a=function(e){Pe.assignments.set_due_date(q.get("assignment_id"),null!=e?e.toISOString():void 0)},l=function(e){var r,l=t().get_assignment_status(q.get("assignment_id"));if(null==l)return o.React.createElement(i.Loading,{key:"loading_more"});var c=[],s={borderBottom:"1px solid grey",paddingBottom:"15px",marginBottom:"15px"};c.push(o.React.createElement(C.Z,{key:"header3",style:s},o.React.createElement(j.Z,{md:4},u()),o.React.createElement(j.Z,{md:20},o.React.createElement(C.Z,null,o.React.createElement(j.Z,{md:12,style:{fontSize:"14px"},key:"due"},o.React.createElement(C.Z,null,o.React.createElement(j.Z,{xs:2,style:{marginTop:"8px",color:"#666"}},o.React.createElement(i.Tip,{placement:"top",title:"Set the due date",tip:"Set the due date for the assignment. This changes how the list of assignments is sorted. Note that you must explicitly click a button to collect student assignments when they are due -- they are not automatically collected on the due date. You should also tell students when assignments are due (e.g., at the top of the assignment)."},"Due")),o.React.createElement(j.Z,{xs:22},o.React.createElement(i.DateTimePicker,{placeholder:"Set Due Date",value:q.get("due_date"),onChange:a})))),o.React.createElement(j.Z,{md:12,key:"delete"},o.React.createElement(C.Z,null,o.React.createElement(j.Z,{md:14},L()),o.React.createElement(j.Z,{md:10},o.React.createElement("span",{className:"pull-right"},M())))))))),B&&c.push(o.React.createElement(C.Z,{key:"header2-peer",style:s},o.React.createElement(j.Z,{md:20,offset:4},N()))),ae&&c.push(o.React.createElement(C.Z,{key:"header2-delete",style:s},o.React.createElement(j.Z,{md:20,offset:4},P())));var m=n();if(r=m?4:6,e>0){var p=[],f=function(e){var t=I(l);return p.push(o.React.createElement(j.Z,{md:r,key:e},T(l),t))},h=!0,g=!1,y=void 0;try{for(var E,v=(0,te.Ss)(m)[Symbol.iterator]();!(h=(E=v.next()).done);h=!0){var _=E.value,b=w(_,l);m||"return_graded"!==_||f("skip_grading"),null!=b&&(p.push(o.React.createElement(j.Z,{md:r,key:_},b)),m&&"peer_collect"===_&&f("skip_peer_collect"))}}catch(e){g=!0,y=e}finally{try{h||null==v.return||v.return()}finally{if(g)throw y}}c.push(o.React.createElement(C.Z,{key:"header-control"},o.React.createElement(j.Z,{md:4,key:"search",style:{paddingRight:"15px"}},o.React.createElement(ge.DebounceInput,{debounceTimeout:500,element:he.Z,placeholder:"Find students...",value:Ee,onChange:function(e){return ve(e.target.value)}})),o.React.createElement(j.Z,{md:20,key:"buttons"},o.React.createElement(C.Z,null,p)))),c.push(o.React.createElement(C.Z,{key:"header2-copy"},o.React.createElement(j.Z,{md:20,offset:4},d(l))))}return o.React.createElement("div",{style:{whiteSpace:"normal"}},c)},c=function(){var e;return 0==(null===(e=q.get("listing"))||void 0===e?void 0:e.size)&&Pe.toggle_item_expansion("assignment",q.get("assignment_id")),V.getProjectActions($).open_directory(q.get("path"))},u=function(){return o.React.createElement(i.Tip,{key:"open",title:o.React.createElement("span",null,o.React.createElement(i.Icon,{name:"folder-open"})," Open Directory"),tip:"Open the directory in the current project that contains the original files for this assignment. Edit files in this folder to create the content that your students will see when they receive an assignment."},o.React.createElement(v.zx,{onClick:c},o.React.createElement(i.Icon,{name:"folder-open"})," Open..."))},s=function(){je("assignment",!0),Se(!0);var e=q.get("assignment_id");Pe.assignments.update_listing(e)},d=function(e){var t=(0,te.Ss)(n()),r=[],a=!0,l=!1,c=void 0;try{for(var o,i=t[Symbol.iterator]();!(a=(o=i.next()).done);a=!0){var u=o.value;Ce[u]?r.push(m(u,e)):r.push(void 0)}}catch(e){l=!0,c=e}finally{try{a||null==i.return||i.return()}finally{if(l)throw c}}return r},m=function(e,t){return o.React.createElement("span",{key:"copy_confirm_".concat(e)},0===t[e]?b(e,t):void 0,0!==t[e]?R(e,t):void 0)},p=function(e){return o.React.createElement(v.zx,{key:"cancel",onClick:function(){je(e,!1),De(e,!1),Se(!1),ie(!1)},bsSize:ne},"Close")},h=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=q.get("assignment_id");if(null==r)throw Error("bug");switch(e){case"assignment":Pe.assignments.copy_assignment_to_all_students(r,t,n);break;ca