@staircase/persistence-widget
Version:
Provides React components to use. Uploads a couple of any files to Staircase Persistence Blobs
1 lines • 16.4 kB
JavaScript
function e(e,r){if(r==null||r>e.length)r=e.length;for(var t=0,n=new Array(r);t<r;t++)n[t]=e[t];return n}function r(e){if(Array.isArray(e))return e}function t(e,r,t,n,a,o,i){try{var u=e[o](i);var s=u.value}catch(c){t(c);return}if(u.done){r(s)}else{Promise.resolve(s).then(n,a)}}function n(e){return function(){var r=this,n=arguments;return new Promise(function(a,o){var i=e.apply(r,n);function u(e){t(i,a,o,u,s,"next",e)}function s(e){t(i,a,o,u,s,"throw",e)}u(undefined)})}}function a(e,r){if(!(e instanceof r)){throw new TypeError("Cannot call a class as a function")}}function o(e,r,t){if(r in e){Object.defineProperty(e,r,{value:t,enumerable:true,configurable:true,writable:true})}else{e[r]=t}return e}function i(e,r){var t=e==null?null:(typeof Symbol!=="undefined"&&e[Symbol.iterator]||e["@@iterator"]);if(t==null)return;var n=[];var a=true;var o=false;var i,u;try{for(t=t.call(e);!(a=(i=t.next()).done);a=true){n.push(i.value);if(r&&n.length===r)break}}catch(s){o=true;u=s}finally{try{if(!a&&t["return"]!=null)t["return"]()}finally{if(o)throw u}}return n}function u(){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 s(e){for(var r=1;r<arguments.length;r++){var t=arguments[r]!=null?arguments[r]:{};var n=Object.keys(t);if(typeof Object.getOwnPropertySymbols==="function"){n=n.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))}n.forEach(function(r){o(e,r,t[r])})}return e}function c(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);if(r){n=n.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})}t.push.apply(t,n)}return t}function l(e,r){r=r!=null?r:{};if(Object.getOwnPropertyDescriptors){Object.defineProperties(e,Object.getOwnPropertyDescriptors(r))}else{c(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function p(e,t){return r(e)||i(e,t)||d(e,t)||u()}function d(r,t){if(!r)return;if(typeof r==="string")return e(r,t);var n=Object.prototype.toString.call(r).slice(8,-1);if(n==="Object"&&r.constructor)n=r.constructor.name;if(n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return e(r,t)}import f from"regenerator-runtime";import h from"react";import{useEffect as v,useState as m}from"react";import{ChakraProvider as b,Modal as y,ModalBody as $,ModalCloseButton as x,ModalContent as g,ModalHeader as w,ModalOverlay as _,Spinner as k,useDisclosure as C,Text as P,Flex as S,extendTheme as O}from"@chakra-ui/react";import{ulid as q}from"ulid";import{useForm as j}from"react-hook-form";import{FileUploader as B}from"react-drag-drop-files";import{FormErrorMessage as R,FormControl as F,Input as D,Button as E,Select as I,Text as T,UnorderedList as W,ListItem as z,Flex as L,Tooltip as M}from"@chakra-ui/react";import{Popover as J,PopoverTrigger as U,Button as G,PopoverContent as H,PopoverArrow as A,PopoverCloseButton as N,PopoverHeader as V,PopoverBody as K,Center as Q,SimpleGrid as X}from"@chakra-ui/react";import{useEffect as Y,useState as Z}from"react";import{jsx as ee,jsxs as er}from"react/jsx-runtime";var et=function(e){var r=e.onColorPick;var t=p(Z("gray.200"),2),n=t[0],a=t[1],o=["gray.200","gray.300","gray.400","gray.500","gray.600","orange.200","orange.300","orange.400","orange.500","orange.600","yellow.200","yellow.300","yellow.400","yellow.500","yellow.600","green.200","green.300","green.400","green.500","green.600","cyan.200","cyan.300","cyan.400","cyan.500","cyan.600","blue.200","blue.300","blue.400","blue.500","blue.600","purple.200","purple.300","purple.400","purple.500","purple.600"];return Y(function(){r(n)},[n]),ee(Q,{marginTop:5,children:er(J,{variant:"picker",children:[ee(U,{children:ee(G,{"aria-label":n,background:n,height:"22px",width:"22px",padding:0,minWidth:"unset",borderRadius:3})}),er(H,{width:"170px",children:[ee(A,{bg:n}),ee(N,{color:"white"}),ee(V,{height:"100px",backgroundColor:n,borderTopLeftRadius:5,borderTopRightRadius:5,color:"white",children:ee(Q,{height:"100%",children:n})}),ee(K,{height:"240px",children:ee(X,{columns:5,spacing:2,children:o.map(function(e){return ee(G,{"aria-label":e,background:e,height:"22px",width:"22px",padding:0,minWidth:"unset",borderRadius:3,_hover:{background:e},onClick:function(){a(e)}},e)})})})]})]})})};import{DeleteIcon as en}from"@chakra-ui/icons";import{useState as ea}from"react";import{Fragment as eo,jsx as ei,jsxs as eu}from"react/jsx-runtime";var es=function(e){var r=e.fields,t=e.onFormComplete,n=e.styles;var a=j(),o=a.handleSubmit,i=a.register,u=a.setValue,c=a.formState,d=c.errors,f=c.isSubmitting,h=p(ea([]),2),v=h[0],m=h[1],b=function(e,r,t){var n=v.filter(function(t){return t.name!==e&&t.size!==r});m(n),u(t,n)};return eu("form",{style:{width:"100%"},onSubmit:o(t),children:[r.map(function(e,r){var t=e.name,a=e.placeholder,o=e.type,c=e.validation,p=e.label,f=e.options,h=e.types;{var y;switch(o){case"file":y=eu(L,{direction:"column",children:[ei(B,{id:"fileUploader",handleChange:function(e){m(Array.from(e)),u(t,Array.from(e))},name:"file",types:h==="*"?void 0:h,label:"Drag or Click here to upload",multiple:!0}),v.length?ei(W,{pt:"20px",width:"100%",children:v.map(function(e,r){return ei(z,{padding:"10px",children:eu(L,{alignItems:"center",justifyContent:"space-between",w:"100%",children:[ei(T,{maxW:"80%",children:e.name}),ei(M,{label:"Delete","aria-label":"delete",children:ei(en,{className:"delete-btn",w:"20px",h:"20px",cursor:"pointer",onClick:function(){return b(e.name,e.size,t)},color:"black"})})]})},r)})}):void 0]});break;case"string":case"password":y=ei(D,s({id:t,placeholder:a,sx:n===null||n===void 0?void 0:n.input,type:o==="password"?o:"text",_hover:n["input:hover"],_focus:n["input:focus"],_focusWithin:n["input:focusWithin"],_active:n["input:active"],_visited:n["input:visited"],borderRadius:0,padding:"12px 20px",fontSize:"12px"},i(t,c)));break;case"select":y=ei(I,l(s({id:t,variant:"filled",placeholder:a},i(t,c)),{children:ei(eo,{children:f===null||f===void 0?void 0:f.map(function(e,r){return ei("option",{value:e,children:e},r)})})}));break;case"color":y=ei(et,{onColorPick:function(e){u(t,e)}});break;default:y=ei(D,s({id:t,placeholder:a,sx:n===null||n===void 0?void 0:n.input,_hover:n["input:hover"],_focus:n["input:focus"],_focusWithin:n["input:focusWithin"],_active:n["input:active"],_visited:n["input:visited"],borderRadius:0,padding:"12px 20px",fontSize:"12px"},i(t,c)));break}return eu(F,{pt:"15px",isInvalid:d[t],children:[ei(T,{sx:n===null||n===void 0?void 0:n.inputLabel,color:"#000000",fontSize:"16px",children:p}),y,ei(R,{children:d.name&&d.name.message})]},r)}}),ei(E,{w:"100%",my:"15px",bg:"#04aa6d",borderRadius:0,variant:(n===null||n===void 0?void 0:n.submitButton)||n["submitButton:hover"]?"solid":"staircase",type:"submit",sx:n===null||n===void 0?void 0:n.submitButton,_hover:n["submitButton:hover"]?n["submitButton:hover"]:{bg:"#04aa6dc7"},isLoading:f,children:"Save"})]})};var ec=[{label:"Files you want to upload",name:"files",placeholder:"Upload your files here",type:"file",types:"*",validation:{required:"This is required"}}],el=function(){return ec};import ep from"jwt-decode";var ed=function(e){return ep(e)},ef=function(e){return new Promise(function(r){return setTimeout(r,e)})};import eh from"axios";import ev from"axios-retry";var em=1e3,eb=2,ey=function e(r,t){"use strict";a(this,e);var o=this;this.request=function(){var e=n(f.mark(function e(r){return f.wrap(function e(t){while(1)switch(t.prev=t.next){case 0:t.next=2;return o.axios.request(r).then(function(e){return e.data});case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}},e)}));return function(r){return e.apply(this,arguments)}}();var i=this;this.invokeJob=function(){var e=n(f.mark(function e(r,t,n){return f.wrap(function e(a){while(1)switch(a.prev=a.next){case 0:a.next=2;return i.request({method:"POST",url:"/job/jobs/".concat(r,"/executions"),data:JSON.stringify({request_payload:t,callback_url:n})});case 2:return a.abrupt("return",a.sent);case 3:case"end":return a.stop()}},e)}));return function(r,t,n){return e.apply(this,arguments)}}();var u=this;this.getJobExecutionDetails=function(){var e=n(f.mark(function e(r,t){return f.wrap(function e(n){while(1)switch(n.prev=n.next){case 0:n.next=2;return u.request({method:"GET",url:"/job/jobs/".concat(r,"/executions/").concat(t)});case 2:return n.abrupt("return",n.sent);case 3:case"end":return n.stop()}},e)}));return function(r,t){return e.apply(this,arguments)}}();var s=this;this.resumeJob=function(){var e=n(f.mark(function e(r,t,n){return f.wrap(function e(a){while(1)switch(a.prev=a.next){case 0:a.next=2;return s.request({method:"POST",url:"/job/jobs/".concat(r,"/executions/").concat(t,"/resume"),data:JSON.stringify(n)});case 2:return a.abrupt("return",a.sent);case 3:case"end":return a.stop()}},e)}));return function(r,t,n){return e.apply(this,arguments)}}();var c=this;this.uploadFile=function(){var e=n(f.mark(function e(r,t){return f.wrap(function e(n){while(1)switch(n.prev=n.next){case 0:n.next=2;return c.request({baseURL:r,method:"PUT",headers:{"Content-Type":t.type},data:t});case 2:return n.abrupt("return",n.sent);case 3:case"end":return n.stop()}},e)}));return function(r,t){return e.apply(this,arguments)}}();this.axios=eh.create({baseURL:"https://".concat(r),headers:{"x-api-key":t}}),ev(this.axios,{retries:eb,retryCondition:function(e){return console.log({err:e}),!0},retryDelay:function(e){return em}})};import{jsx as e$,jsxs as ex}from"react/jsx-runtime";var eg=function(){return e$(k,{thickness:"6px",size:"xl",style:{position:"absolute",top:"calc(50% - 4em)",left:"calc(50% - 4em)"}})},ew={brand:{black:"#1C1C1E",grey:"#B8B8C2",inputHoverGrey:"#9C9CAB",lowerBlue:"#001CDB",lightBlue:"#0064FF",green:"#00D200",purple:"#6236FF",errorRed:"#E80000",backgroundColor:"#ECEFFF"}},e8=O({colors:ew,components:{Button:{variants:{staircase:{bg:"brand.lowerBlue",minWidth:"160px",borderRadius:0,color:"white",_disabled:{bg:"brand.lowerBlue"},_hover:{bg:"white",border:"1px solid #001CDB",color:"brand.lowerBlue"}}}}}}),e_=function(e){var r,t,a,o,i,u;var s=C(),c=s.isOpen,l=s.onOpen,d=s.onClose,h=e.token,O=e.onComplete,j=e.onError,B=p(m({outputs:{GenerateBlobs:[]},current_step:"",status:"",request_payload:{styles:{}}}),2),R=B[0],F=B[1],D=p(m(),2),E=D[0],I=D[1],T=p(m([]),2),W=T[0],z=T[1],L=p(m([]),2),M=L[0],J=L[1],U=p(m(!1),2),G=U[0],H=U[1],A=p(m(!1),2),N=A[0],V=A[1],K=p(m(),2),Q=K[0],X=K[1],Y=p(m([]),2),Z=Y[0],ee=Y[1];v(function(){var e=ed(h);try{var r=e.origin,t=e.api_key,n=e.job_name,a=e.execution_id;I({origin:r,api_key:t,job_name:n,execution_id:a})}catch(o){console.log(o),j(o);return}},[]),v(function(){E&&(l(),eo().then())},[E]),v(function(){if(Q)if(Q==="BlobsUploadWaitState"){var e=R.outputs.GenerateBlobs,r=[];e.forEach(function(e){var t=e.response_payload,n=t.blob_id,a=t.presigned_urls,o=t.blob_name;return r.push({blob_id:n,blob_name:o,upload_url:a.upload.url})}),z(r)}else Q==="SUCCEEDED"?(d(),O("SUCCEEDED")):Q==="Execution failed"&&(d(),j("Execution failed"))},[Q]),v(function(){Z&&en().then()},[Z]),v(function(){W&&et().then()},[W]),v(function(){M&&er().then()},[M]);var er=function(){var e=n(f.mark(function e(){var r,t,n,a,o;return f.wrap(function e(i){while(1)switch(i.prev=i.next){case 0:if(E){i.next=2;break}return i.abrupt("return");case 2:r=E.origin,t=E.api_key,n=E.job_name,a=E.execution_id,o=new ey(r,t);i.prev=3;i.next=6;return o.resumeJob(n,a,M);case 6:i.next=11;break;case 8:i.prev=8;i.t0=i["catch"](3);console.log({error:i.t0}),d(),j("Error uploading file");case 11:i.next=13;return eo();case 13:case"end":return i.stop()}},e,null,[[3,8]])}));return function er(){return e.apply(this,arguments)}}(),et=function(){var e=n(f.mark(function e(){var r,t,n,a,o,i,u,s,c,l,p,h,v,m,b,y;return f.wrap(function e(f){while(1)switch(f.prev=f.next){case 0:if(E){f.next=2;break}return f.abrupt("return");case 2:if(!(Z.length!==W.length)){f.next=5;break}d(),j("Error at server side. Please, contact your manager");return f.abrupt("return");case 5:r=E.origin,t=E.api_key,n=new ey(r,t),a=[];o=true,i=false,u=undefined;f.prev=7;s=W[Symbol.iterator]();case 9:if(o=(c=s.next()).done){f.next=26;break}l=c.value,p=l.blob_id,h=l.upload_url,v=l.blob_name;m=Z.findIndex(function(e){return e.name===v}),b=Z[m];f.prev=12;f.next=15;return n.uploadFile(h,b);case 15:y={data:{documents:[{"@type":"document","@id":q(),has_document_name:{has_value:b.name},has_staircase_blob_identifier:{has_value:p},has_document_mime_type:{has_value:b.type}}]},metadata:{version:2,validation:!0}};a.push(y);f.next=23;break;case 19:f.prev=19;f.t0=f["catch"](12);console.log({error:f.t0}),d(),j("Error uploading file");return f.abrupt("return");case 23:o=true;f.next=9;break;case 26:f.next=32;break;case 28:f.prev=28;f.t1=f["catch"](7);i=true;u=f.t1;case 32:f.prev=32;f.prev=33;if(!o&&s.return!=null){s.return()}case 35:f.prev=35;if(!i){f.next=38;break}throw u;case 38:return f.finish(35);case 39:return f.finish(32);case 40:J(a);case 41:case"end":return f.stop()}},e,null,[[7,28,32,40],[12,19],[33,,35,39]])}));return function et(){return e.apply(this,arguments)}}(),en=function(){var e=n(f.mark(function e(){var r,t,n,a,o,i;return f.wrap(function e(u){while(1)switch(u.prev=u.next){case 0:if(E){u.next=2;break}return u.abrupt("return");case 2:r=E.origin,t=E.api_key,n=E.job_name,a=E.execution_id,o=new ey(r,t),i=[];Z.forEach(function(e){var r=e.name;var t=r.lastIndexOf("."),n=r.slice(t);i.push({blob_name:r,extension:n})});u.next=6;return o.resumeJob(n,a,i);case 6:u.next=8;return eo();case 8:case"end":return u.stop()}},e)}));return function en(){return e.apply(this,arguments)}}(),ea=function(){var e=n(f.mark(function e(r){var t;return f.wrap(function e(n){while(1)switch(n.prev=n.next){case 0:t=r.files;V(!0),ee(t);case 2:case"end":return n.stop()}},e)}));return function ea(r){return e.apply(this,arguments)}}(),eo=function(){var e=n(f.mark(function e(){var r;return f.wrap(function e(t){while(1)switch(t.prev=t.next){case 0:H(!0);case 1:t.next=3;return ei();case 3:r=t.sent;if(!r){t.next=7;break}X(r);return t.abrupt("break",11);case 7:t.next=9;return ef(1500);case 9:t.next=1;break;case 11:H(!1);case 12:case"end":return t.stop()}},e)}));return function eo(){return e.apply(this,arguments)}}(),ei=function(){var e=n(f.mark(function e(){var r,t,n,a,o,i,u,s,c,l,p;return f.wrap(function e(d){while(1)switch(d.prev=d.next){case 0:if(E){d.next=2;break}return d.abrupt("return");case 2:r=E.job_name;t=E.execution_id;n=E.origin;a=E.api_key;o=new ey(n,a);d.next=9;return o.getJobExecutionDetails(r,t);case 9:i=d.sent;u=i.status;s=i.current_step;c=i.outputs;l=i.error;p=i.request_payload;d.t0=(F({outputs:c,current_step:s,error:l,status:u,request_payload:p}),u);d.next=d.t0==="SUCCEEDED"?18:d.t0==="FAILED"?19:d.t0==="WAIT_FOR_ACTION"?20:21;break;case 18:return d.abrupt("return","SUCCEEDED");case 19:return d.abrupt("return","Execution failed");case 20:return d.abrupt("return",s);case 21:return d.abrupt("return",l?"Execution failed":void 0);case 22:case"end":return d.stop()}},e)}));return function ei(){return e.apply(this,arguments)}}();return e$(b,{theme:e8,children:G&&!N?e$(eg,{}):E&&(R===null||R===void 0?void 0:(r=R.request_payload)===null||r===void 0?void 0:r.styles)?ex(y,{closeOnOverlayClick:!1,isOpen:c,onClose:d,isCentered:!0,motionPreset:"scale",size:"sm",children:[e$(_,{backdropFilter:"blur(10px) hue-rotate(90deg)"}),ex(g,{sx:R===null||R===void 0?void 0:(t=R.request_payload)===null||t===void 0?void 0:(a=t.styles)===null||a===void 0?void 0:a.root,borderRadius:0,children:[e$(w,{children:e$(P,{sx:R===null||R===void 0?void 0:(o=R.request_payload)===null||o===void 0?void 0:(i=o.styles)===null||i===void 0?void 0:i.title,fontWeight:"bold",children:"Staircase Persistence"})}),e$(x,{}),e$($,{children:e$(S,{w:"100%",minH:"360px",flexDir:"column",alignItems:"flex-start",justifyContent:"flex-start",children:Q==="WaitState"?e$(es,{fields:el(),onFormComplete:ea,styles:R===null||R===void 0?void 0:(u=R.request_payload)===null||u===void 0?void 0:u.styles}):e$(k,{thickness:"6px",size:"xl"})})})]})]}):void 0})};import{render as ek}from"react-dom";import{jsx as e0}from"react/jsx-runtime";var e1=function(e,r,t,n){ek(e0(e_,{token:r,onComplete:t,onError:n}),e)};export{e_ as PersistenceWidget,e1 as renderPersistenceWidget}