(window.webpackJsonp=window.webpackJsonp||[]).push([[0],{161:function(e,t,a){e.exports=a(417)},166:function(e,t,a){},174:function(e,t,a){},386:function(e,t,a){},389:function(e,t,a){},391:function(e,t,a){},393:function(e,t,a){},395:function(e,t,a){},397:function(e,t,a){},399:function(e,t,a){},417:function(e,t,a){"use strict";a.r(t);var n=a(0),r=a.n(n),s=a(52),i=a.n(s),o=(a(166),a(10)),c=a.n(o),l=a(16),u=a(27),h=a(28),m=a(30),d=a(29),p=a(31),f=a(60),g=a(154),b=a(63),v=a(427),E=a(425),k=a(426),y=a(158),S=a(61),w=a(349),x=a(419),O=a(420),C=(a(174),a(12)),L=a.n(C),A=function(e){function t(e){var a;return Object(u.a)(this,t),(a=Object(m.a)(this,Object(d.a)(t).call(this,e))).state={isLoading:!0,notes:[]},a}return Object(p.a)(t,e),Object(h.a)(t,[{key:"componentDidMount",value:function(){var e=Object(l.a)(c.a.mark(function e(){var t;return c.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(this.props.isAuthenticated){e.next=2;break}return e.abrupt("return");case 2:return e.prev=2,e.next=5,this.notes();case 5:t=e.sent,this.setState({notes:t}),e.next=12;break;case 9:e.prev=9,e.t0=e.catch(2),alert(e.t0);case 12:this.setState({isLoading:!1});case 13:case"end":return e.stop()}},e,this,[[2,9]])}));return function(){return e.apply(this,arguments)}}()},{key:"notes",value:function(){return C.API.get("notes","/notes")}},{key:"renderNotesList",value:function(e){return[{}].concat(e).map(function(e,t){return 0!==t?r.a.createElement(b.LinkContainer,{key:e.noteId,to:"/notes/".concat(e.noteId)},r.a.createElement(w.a,{header:e.content.trim().split("\n")[0]},"Created: "+new Date(e.createdAt).toLocaleString())):r.a.createElement(b.LinkContainer,{key:"new",to:"/notes/new"},r.a.createElement(w.a,null,r.a.createElement("h4",null,r.a.createElement("b",null,"\uff0b")," Create a new note")))})}},{key:"renderLander",value:function(){return r.a.createElement("div",{className:"lander"},r.a.createElement("h1",null,"Scratch"),r.a.createElement("p",null,"A simple note-taking app."),r.a.createElement("div",null,r.a.createElement(f.a,{to:"/login",className:"btn btn-info btn-lg"},"Login"),r.a.createElement(f.a,{to:"/signup",className:"btn btn-success btn-lg"},"Signup")))}},{key:"renderNotes",value:function(){return r.a.createElement("div",{className:"notes"},r.a.createElement(x.a,null,"Your Notes"),r.a.createElement(O.a,null,!this.state.isLoading&&this.renderNotesList(this.state.notes)))}},{key:"render",value:function(){return r.a.createElement("div",{className:"Home"},this.props.isAuthenticated?this.renderNotes():this.renderLander())}}]),t}(n.Component),j=a(37),I=a(422),N=a(423),T=a(428),P=a(38),D=a(421),F=a(388),_=(a(386),function(e){var t=e.isLoading,a=e.text,n=e.loadingText,s=e.className,i=void 0===s?"":s,o=e.disabled,c=void 0!==o&&o,l=Object(P.a)(e,["isLoading","text","loadingText","className","disabled"]);return r.a.createElement(D.a,Object.assign({className:"LoaderButton ".concat(i),disabled:c||t},l),t&&r.a.createElement(F.a,{glyph:"refresh",className:"spinning"}),t?n:a)}),U=(a(389),function(e){function t(e){var a;return Object(u.a)(this,t),(a=Object(m.a)(this,Object(d.a)(t).call(this,e))).handleChange=function(e){a.setState(Object(j.a)({},e.target.id,e.target.value))},a.handleSubmit=function(){var e=Object(l.a)(c.a.mark(function e(t){return c.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t.preventDefault(),a.setState({isLoading:!0}),e.prev=2,e.next=5,C.Auth.signIn(a.state.email,a.state.password);case 5:a.props.userHasAuthenticated(!0),e.next=12;break;case 8:e.prev=8,e.t0=e.catch(2),alert(e.t0.message),a.setState({isLoading:!1});case 12:case"end":return e.stop()}},e,this,[[2,8]])}));return function(t){return e.apply(this,arguments)}}(),a.state={isLoading:!1,email:"",password:""},a}return Object(p.a)(t,e),Object(h.a)(t,[{key:"validateForm",value:function(){return this.state.email.length>0&&this.state.password.length>0}},{key:"render",value:function(){return r.a.createElement("div",{className:"Login"},r.a.createElement("form",{onSubmit:this.handleSubmit},r.a.createElement(I.a,{controlId:"email",bsSize:"large"},r.a.createElement(N.a,null,"Email"),r.a.createElement(T.a,{autoFocus:!0,type:"email",value:this.state.email,onChange:this.handleChange})),r.a.createElement(I.a,{controlId:"password",bsSize:"large"},r.a.createElement(N.a,null,"Password"),r.a.createElement(T.a,{value:this.state.password,onChange:this.handleChange,type:"password"})),r.a.createElement(_,{block:!0,bsSize:"large",disabled:!this.validateForm(),type:"submit",isLoading:this.state.isLoading,text:"Login",loadingText:"Logging in\u2026"})))}}]),t}(n.Component)),R=a(424),z=(a(391),function(e){function t(e){var a;return Object(u.a)(this,t),(a=Object(m.a)(this,Object(d.a)(t).call(this,e))).handleChange=function(e){a.setState(Object(j.a)({},e.target.id,e.target.value))},a.handleSubmit=function(){var e=Object(l.a)(c.a.mark(function e(t){var n,r;return c.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t.preventDefault(),a.setState({isLoading:!0}),e.prev=2,e.next=5,C.Auth.signUp({username:a.state.email,password:a.state.password});case 5:n=e.sent,a.setState({newUser:n}),e.next=25;break;case 9:if(e.prev=9,e.t0=e.catch(2),"UsernameExistsException"!==e.t0.code){e.next=24;break}return e.prev=12,e.next=15,C.Auth.resendSignUp(a.state.email);case 15:r=e.sent,a.setState({newUser:r}),e.next=22;break;case 19:e.prev=19,e.t1=e.catch(12),alert(e.t1.message);case 22:e.next=25;break;case 24:alert(e.t0.message);case 25:a.setState({isLoading:!1});case 26:case"end":return e.stop()}},e,this,[[2,9],[12,19]])}));return function(t){return e.apply(this,arguments)}}(),a.handleConfirmationSubmit=function(){var e=Object(l.a)(c.a.mark(function e(t){return c.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t.preventDefault(),a.setState({isLoading:!0}),e.prev=2,e.next=5,C.Auth.confirmSignUp(a.state.email,a.state.confirmationCode);case 5:return e.next=7,C.Auth.signIn(a.state.email,a.state.password);case 7:a.props.userHasAuthenticated(!0),a.props.history.push("/"),e.next=15;break;case 11:e.prev=11,e.t0=e.catch(2),alert(e.t0.message),a.setState({isLoading:!1});case 15:case"end":return e.stop()}},e,this,[[2,11]])}));return function(t){return e.apply(this,arguments)}}(),a.state={isLoading:!1,email:"",password:"",confirmPassword:"",confirmationCode:"",newUser:null},a}return Object(p.a)(t,e),Object(h.a)(t,[{key:"validateForm",value:function(){return this.state.email.length>0&&this.state.password.length>0&&this.state.password===this.state.confirmPassword}},{key:"validateConfirmationForm",value:function(){return this.state.confirmationCode.length>0}},{key:"renderConfirmationForm",value:function(){return r.a.createElement("form",{onSubmit:this.handleConfirmationSubmit},r.a.createElement(I.a,{controlId:"confirmationCode",bsSize:"large"},r.a.createElement(N.a,null,"Confirmation Code"),r.a.createElement(T.a,{autoFocus:!0,type:"tel",value:this.state.confirmationCode,onChange:this.handleChange}),r.a.createElement(R.a,null,"Please check your email for the code.")),r.a.createElement(_,{block:!0,bsSize:"large",disabled:!this.validateConfirmationForm(),type:"submit",isLoading:this.state.isLoading,text:"Verify",loadingText:"Verifying\u2026"}))}},{key:"renderForm",value:function(){return r.a.createElement("form",{onSubmit:this.handleSubmit},r.a.createElement(I.a,{controlId:"email",bsSize:"large"},r.a.createElement(N.a,null,"Email"),r.a.createElement(T.a,{autoFocus:!0,type:"email",value:this.state.email,onChange:this.handleChange})),r.a.createElement(I.a,{controlId:"password",bsSize:"large"},r.a.createElement(N.a,null,"Password"),r.a.createElement(T.a,{autoFocus:!0,type:"password",value:this.state.password,onChange:this.handleChange})),r.a.createElement(I.a,{controlId:"confirmPassword",bsSize:"large"},r.a.createElement(N.a,null,"Confirm Password"),r.a.createElement(T.a,{autoFocus:!0,type:"password",value:this.state.confirmPassword,onChange:this.handleChange})),r.a.createElement(_,{block:!0,bsSize:"large",disabled:!this.validateForm(),type:"submit",isLoading:this.state.isLoading,text:"Signup",loadingText:"Signing up\u2026"}))}},{key:"render",value:function(){return r.a.createElement("div",{className:"Signup"},null===this.state.newUser?this.renderForm():this.renderConfirmationForm())}}]),t}(n.Component)),M={MAX_ATTACHMENT_SIZE:5e6,s3:{REGION:"us-east-1",BUCKET:"ejsexton82-notes-uploads"},apiGateway:{REGION:"us-east-1",URL:"https://wemmbowi89.execute-api.us-east-1.amazonaws.com/prod"},cognito:{REGION:"us-east-1",USER_POOL_ID:"us-east-1_nDg0EqiVN",APP_CLIENT_ID:"3h81gvlqmld687si08ns4cqs1q",IDENTITY_POOL_ID:"us-east-1:241cc1b3-fcae-4794-85e3-7bde5ac1fee2"}};a(393);function H(e){return G.apply(this,arguments)}function G(){return(G=Object(l.a)(c.a.mark(function e(t){var a,n;return c.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a="".concat(Date.now(),"-").concat(t.name),e.next=3,C.Storage.vault.put(a,t,{contentType:t.type});case 3:return n=e.sent,e.abrupt("return",n.key);case 5:case"end":return e.stop()}},e,this)}))).apply(this,arguments)}var B=function(e){function t(e){var a;return Object(u.a)(this,t),(a=Object(m.a)(this,Object(d.a)(t).call(this,e))).handleChange=function(e){a.setState(Object(j.a)({},e.target.id,e.target.value))},a.handleFileChange=function(e){a.file=e.target.files[0]},a.handleSubmit=function(){var e=Object(l.a)(c.a.mark(function e(t){var n;return c.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(t.preventDefault(),!(a.file&&a.file.size>M.MAX_ATTACHMENT_SIZE)){e.next=4;break}return alert("Please pick a file smaller than ".concat(M.MAX_ATTACHMENT_SIZE/1e6," MB.")),e.abrupt("return");case 4:if(a.setState({isLoading:!0}),e.prev=5,!a.file){e.next=12;break}return e.next=9,H(a.file);case 9:e.t0=e.sent,e.next=13;break;case 12:e.t0=null;case 13:return n=e.t0,e.next=16,a.createNote({attachment:n,content:a.state.content});case 16:a.props.history.push("/"),e.next=23;break;case 19:e.prev=19,e.t1=e.catch(5),alert(e.t1),a.setState({isLoading:!1});case 23:case"end":return e.stop()}},e,this,[[5,19]])}));return function(t){return e.apply(this,arguments)}}(),a.file=null,a.state={isLoading:null,content:""},a}return Object(p.a)(t,e),Object(h.a)(t,[{key:"validateForm",value:function(){return this.state.content.length>0}},{key:"createNote",value:function(e){return C.API.post("notes","/notes",{body:e})}},{key:"render",value:function(){return r.a.createElement("div",{className:"NewNote"},r.a.createElement("form",{onSubmit:this.handleSubmit},r.a.createElement(I.a,{controlId:"content"},r.a.createElement(T.a,{onChange:this.handleChange,value:this.state.content,componentClass:"textarea"})),r.a.createElement(I.a,{controlId:"file"},r.a.createElement(N.a,null,"Attachment"),r.a.createElement(T.a,{onChange:this.handleFileChange,type:"file"})),r.a.createElement(_,{block:!0,bsStyle:"primary",bsSize:"large",disabled:!this.validateForm(),type:"submit",isLoading:this.state.isLoading,text:"Create",loadingText:"Creating\u2026"})))}}]),t}(n.Component),X=(a(395),function(e){function t(e){var a;return Object(u.a)(this,t),(a=Object(m.a)(this,Object(d.a)(t).call(this,e))).handleChange=function(e){a.setState(Object(j.a)({},e.target.id,e.target.value))},a.handleFileChange=function(e){a.file=e.target.files[0]},a.handleSubmit=function(){var e=Object(l.a)(c.a.mark(function e(t){var n;return c.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(t.preventDefault(),!(a.file&&a.file.size>M.MAX_ATTACHMENT_SIZE)){e.next=4;break}return alert("Please pick a file smaller than ".concat(M.MAX_ATTACHMENT_SIZE/1e6," MB.")),e.abrupt("return");case 4:if(a.setState({isLoading:!0}),e.prev=5,!a.file){e.next=13;break}return e.next=9,H(a.file);case 9:if(!(n=e.sent)||!a.state.note.attachment){e.next=13;break}return e.next=13,C.Storage.vault.remove(a.state.note.attachment);case 13:return e.next=15,a.saveNote({content:a.state.content,attachment:n||a.state.note.attachment});case 15:a.props.history.push("/"),e.next=22;break;case 18:e.prev=18,e.t0=e.catch(5),alert(e.t0),a.setState({isLoading:!1});case 22:case"end":return e.stop()}},e,this,[[5,18]])}));return function(t){return e.apply(this,arguments)}}(),a.handleDelete=function(){var e=Object(l.a)(c.a.mark(function e(t){return c.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(t.preventDefault(),window.confirm("Are you sure you want to delete this note?")){e.next=4;break}return e.abrupt("return");case 4:if(a.setState({isDeleting:!0}),e.prev=5,!a.state.note.attachment){e.next=9;break}return e.next=9,a.deleteAttachment();case 9:return e.next=11,a.deleteNote();case 11:a.props.history.push("/"),e.next=18;break;case 14:e.prev=14,e.t0=e.catch(5),alert(e.t0),a.setState({isDeleting:!1});case 18:case"end":return e.stop()}},e,this,[[5,14]])}));return function(t){return e.apply(this,arguments)}}(),a.file=null,a.state={isLoading:null,isDeleting:null,note:null,content:"",attachmentURL:null},a}return Object(p.a)(t,e),Object(h.a)(t,[{key:"componentDidMount",value:function(){var e=Object(l.a)(c.a.mark(function e(){var t,a,n,r;return c.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this.getNote();case 3:if(a=e.sent,n=a.content,!(r=a.attachment)){e.next=9;break}return e.next=8,C.Storage.vault.get(r);case 8:t=e.sent;case 9:this.setState({note:a,content:n,attachmentURL:t}),e.next=15;break;case 12:e.prev=12,e.t0=e.catch(0),alert(e.t0);case 15:case"end":return e.stop()}},e,this,[[0,12]])}));return function(){return e.apply(this,arguments)}}()},{key:"getNote",value:function(){return C.API.get("notes","/notes/".concat(this.props.match.params.id))}},{key:"validateForm",value:function(){return this.state.content.length>0}},{key:"formatFilename",value:function(e){return e.replace(/^\w+-/,"")}},{key:"saveNote",value:function(e){return C.API.put("notes","/notes/".concat(this.props.match.params.id),{body:e})}},{key:"deleteAttachment",value:function(){return C.Storage.vault.remove(this.state.note.attachment)}},{key:"deleteNote",value:function(){return C.API.del("notes","/notes/".concat(this.props.match.params.id))}},{key:"render",value:function(){return r.a.createElement("div",{className:"Notes"},this.state.note&&r.a.createElement("form",{onSubmit:this.handleSubmit},r.a.createElement(I.a,{controlId:"content"},r.a.createElement(T.a,{onChange:this.handleChange,value:this.state.content,componentClass:"textarea"})),this.state.note.attachment&&r.a.createElement(I.a,null,r.a.createElement(N.a,null,"Attachment"),r.a.createElement(T.a.Static,null,r.a.createElement("a",{target:"_blank",rel:"noopener noreferrer",href:this.state.attachmentURL},this.formatFilename(this.state.note.attachment)))),r.a.createElement(I.a,{controlId:"file"},!this.state.note.attachment&&r.a.createElement(N.a,null,"Attachment"),r.a.createElement(T.a,{onChange:this.handleFileChange,type:"file"})),r.a.createElement(_,{block:!0,bsStyle:"primary",bsSize:"large",disabled:!this.validateForm(),type:"submit",isLoading:this.state.isLoading,text:"Save",loadingText:"Saving\u2026"}),r.a.createElement(_,{block:!0,bsStyle:"danger",bsSize:"large",isLoading:this.state.isDeleting,onClick:this.handleDelete,text:"Delete",loadingText:"Deleting\u2026"})))}}]),t}(n.Component)),Z=(a(397),function(){return r.a.createElement("div",{className:"NotFound"},r.a.createElement("h3",null,"Sorry, page not found!"))}),q=function(e){var t=e.component,a=e.props,n=Object(P.a)(e,["component","props"]);return r.a.createElement(S.a,Object.assign({},n,{render:function(e){return r.a.createElement(t,Object.assign({},e,a))}}))},Y=a(157),V=function(e){var t=e.component,a=e.props,n=Object(P.a)(e,["component","props"]);return r.a.createElement(S.a,Object.assign({},n,{render:function(e){return a.isAuthenticated?r.a.createElement(t,Object.assign({},e,a)):r.a.createElement(Y.a,{to:"/login?redirect=".concat(e.location.pathname).concat(e.location.search)})}}))};var W=function(e){var t=e.component,a=e.props,n=Object(P.a)(e,["component","props"]),s=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:window.location.href;e=e.replace(/[[]]/g,"\\$&");var a=new RegExp("[?&]"+e+"(=([^&#]*)|&|#|$)","i").exec(t);return a?a[2]?decodeURIComponent(a[2].replace(/\+/g," ")):"":null}("redirect");return r.a.createElement(S.a,Object.assign({},n,{render:function(e){return a.isAuthenticated?r.a.createElement(Y.a,{to:""===s||null===s?"/":s}):r.a.createElement(t,Object.assign({},e,a))}}))},$=function(e){var t=e.childProps;return r.a.createElement(y.a,null,r.a.createElement(q,{path:"/",exact:!0,component:A,props:t}),r.a.createElement(W,{path:"/login",exact:!0,component:U,props:t}),r.a.createElement(W,{path:"/signup",exact:!0,component:z,props:t}),r.a.createElement(V,{path:"/notes/new",exact:!0,component:B,props:t}),r.a.createElement(V,{path:"/notes/:id",exact:!0,component:X,props:t}),r.a.createElement(S.a,{component:Z}))},J=(a(399),function(e){function t(e){var a;return Object(u.a)(this,t),(a=Object(m.a)(this,Object(d.a)(t).call(this,e))).userHasAuthenticated=function(e){a.setState({isAuthenticated:e})},a.handleLogout=function(){var e=Object(l.a)(c.a.mark(function e(t){return c.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,C.Auth.signOut();case 2:a.userHasAuthenticated(!1),a.props.history.push("/login");case 4:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}(),a.state={isAuthenticated:!1,isAuthenticating:!0},a}return Object(p.a)(t,e),Object(h.a)(t,[{key:"componentDidMount",value:function(){var e=Object(l.a)(c.a.mark(function e(){return c.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,C.Auth.currentSession();case 3:this.userHasAuthenticated(!0),e.next=9;break;case 6:e.prev=6,e.t0=e.catch(0),"No current user"!==e.t0&&alert(e.t0);case 9:this.setState({isAuthenticating:!1});case 10:case"end":return e.stop()}},e,this,[[0,6]])}));return function(){return e.apply(this,arguments)}}()},{key:"render",value:function(){var e={isAuthenticated:this.state.isAuthenticated,userHasAuthenticated:this.userHasAuthenticated};return!this.state.isAuthenticating&&r.a.createElement("div",{className:"App container"},r.a.createElement(v.a,{fluid:!0,collapseOnSelect:!0},r.a.createElement(v.a.Header,null,r.a.createElement(v.a.Brand,null,r.a.createElement(f.a,{to:"/"},"Scratch")),r.a.createElement(v.a.Toggle,null)),r.a.createElement(v.a.Collapse,null,r.a.createElement(E.a,{pullRight:!0},this.state.isAuthenticated?r.a.createElement(k.a,{onClick:this.handleLogout},"Logout"):r.a.createElement(n.Fragment,null,r.a.createElement(b.LinkContainer,{to:"/signup"},r.a.createElement(k.a,null,"Signup")),r.a.createElement(b.LinkContainer,{to:"/login"},r.a.createElement(k.a,null,"Login")))))),r.a.createElement($,{childProps:e}))}}]),t}(n.Component)),K=Object(g.a)(J);Boolean("localhost"===window.location.hostname||"[::1]"===window.location.hostname||window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/));var Q=a(94);L.a.configure({Auth:{mandatorySignIn:!0,region:M.cognito.REGION,userPoolId:M.cognito.USER_POOL_ID,identityPoolId:M.cognito.IDENTITY_POOL_ID,userPoolWebClientId:M.cognito.APP_CLIENT_ID},Storage:{region:M.s3.REGION,bucket:M.s3.BUCKET,identityPoolId:M.cognito.IDENITY_POOL_ID},API:{endpoints:[{name:"notes",endpoint:M.apiGateway.URL,region:M.apiGateway.REGION}]}}),i.a.render(r.a.createElement(Q.a,null,r.a.createElement(K,null)),document.getElementById("root")),"serviceWorker"in navigator&&navigator.serviceWorker.ready.then(function(e){e.unregister()})},72:function(e,t){}},[[161,2,1]]]); //# sourceMappingURL=main.067458fa.chunk.js.map