@devtable/settings-form 9.2.1 → 9.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/settings-form.es.js
CHANGED
|
@@ -1759,7 +1759,7 @@ function Xt({
|
|
|
1759
1759
|
] })
|
|
1760
1760
|
] });
|
|
1761
1761
|
}
|
|
1762
|
-
const Qt = () => import("./package-
|
|
1762
|
+
const Qt = () => import("./package-49759ad0.mjs").then(({
|
|
1763
1763
|
version: t
|
|
1764
1764
|
}) => (console.log(`[@devtable/dashboard] version: ${t}`), t));
|
|
1765
1765
|
export {
|
|
@@ -26,4 +26,4 @@ Check your code at `+a+":"+d+"."}return""}}var ct={};function bn(e){{var a=lt();
|
|
|
26
26
|
|
|
27
27
|
Check the top-level render call using <`+d+">.")}return a}}function ut(e,a){{if(!e._store||e._store.validated||e.key!=null)return;e._store.validated=!0;var d=bn(a);if(ct[d])return;ct[d]=!0;var h="";e&&e._owner&&e._owner!==we.current&&(h=" It was passed a child from "+B(e._owner.type)+"."),W(e),A('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',d,h),W(null)}}function dt(e,a){{if(typeof e!="object")return;if(ve(e))for(var d=0;d<e.length;d++){var h=e[d];Se(h)&&ut(h,a)}else if(Se(e))e._store&&(e._store.validated=!0);else if(e){var S=pe(e);if(typeof S=="function"&&S!==e.entries)for(var T=S.call(e),y;!(y=T.next()).done;)Se(y.value)&&ut(y.value,a)}}}function wn(e){{var a=e.type;if(a==null||typeof a=="string")return;var d;if(typeof a=="function")d=a.propTypes;else if(typeof a=="object"&&(a.$$typeof===g||a.$$typeof===m))d=a.propTypes;else return;if(d){var h=B(a);an(d,e.props,"prop",h,e)}else if(a.PropTypes!==void 0&&!ye){ye=!0;var S=B(a);A("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?",S||"Unknown")}typeof a.getDefaultProps=="function"&&!a.getDefaultProps.isReactClassApproved&&A("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.")}}function yn(e){{for(var a=Object.keys(e.props),d=0;d<a.length;d++){var h=a[d];if(h!=="children"&&h!=="key"){W(e),A("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.",h),W(null);break}}e.ref!==null&&(W(e),A("Invalid attribute `ref` supplied to `React.Fragment`."),W(null))}}function ft(e,a,d,h,S,T){{var y=Qt(e);if(!y){var b="";(e===void 0||typeof e=="object"&&e!==null&&Object.keys(e).length===0)&&(b+=" You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.");var D=vn(S);D?b+=D:b+=lt();var x;e===null?x="null":ve(e)?x="array":e!==void 0&&e.$$typeof===r?(x="<"+(B(e.type)||"Unknown")+" />",b=" Did you accidentally export a JSX literal instead of a component?"):x=typeof e,A("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s",x,b)}var O=mn(e,a,d,S,T);if(O==null)return O;if(y){var k=a.children;if(k!==void 0)if(h)if(ve(k)){for(var Y=0;Y<k.length;Y++)dt(k[Y],e);Object.freeze&&Object.freeze(k)}else A("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else dt(k,e)}return e===s?yn(O):wn(O),O}}function Sn(e,a,d){return ft(e,a,d,!0)}function _n(e,a,d){return ft(e,a,d,!1)}var Cn=_n,Pn=Sn;Z.Fragment=s,Z.jsx=Cn,Z.jsxs=Pn}()),Z}(function(n){process.env.NODE_ENV==="production"?n.exports=wt():n.exports=yt()})(bt);const L=X.Fragment,t=X.jsx,v=X.jsxs;function St(n){n=n||{};const r=Object.keys(n).sort(),i=[];for(let s=0;s<r.length;s++){const u=r[s];if(u!="authentication"&&n[u])i.push(r[s]+"="+(typeof n[u]=="object"?JSON.stringify(n[u]):n[u]));else{const l=Object.keys(n[u]).sort();for(let c=0;c<l.length;c++){const f=l[c];f!="sign"&&n[u][f]&&i.push(l[c]+"="+(typeof n[u][f]=="object"?JSON.stringify(n[u][f]):n[u][f]))}}}return i.sort().join("&")}function _t(n,r){let i=St(n);return i+="&key="+r,ht.MD5(i).toString().toUpperCase()}const z={baseURL:"http://localhost:31200",app_id:"",app_secret:"",getAuthentication(n){if(!this.app_id||!this.app_secret)return;const r=new Date().getTime().toString();return{app_id:this.app_id,nonce_str:r,sign:_t({app_id:this.app_id,nonce_str:r,...n},this.app_secret)}},getRequest(n){return(r,i,s={})=>{const u=window.localStorage.getItem("token"),l={"X-Requested-With":"XMLHttpRequest","Content-Type":s.string?"application/x-www-form-urlencoded":"application/json",authorization:u?`bearer ${u}`:"",...s.headers},c={baseURL:this.baseURL,method:n,url:r,params:n==="GET"?i:s.params,headers:l};return["POST","PUT"].includes(n)&&(c.data=s.string?JSON.stringify(i):i,c.data.authentication=this.getAuthentication(c.data)),gt(c).then(f=>f.data).catch(f=>mt.has(f,"response.data.detail.message")?Promise.reject(new Error(f.response.data.detail.message)):Promise.reject(f))}}};function ne(n){z.baseURL!==n.apiBaseURL&&(z.baseURL=n.apiBaseURL),n.app_id&&(z.app_id=n.app_id),n.app_secret&&(z.app_secret=n.app_secret)}const j={datasource:{list:async()=>await z.getRequest("POST")("/datasource/list",{filter:{},sort:[{field:"create_time",order:"ASC"}],pagination:{page:1,pagesize:100}}),create:async(n,r,i)=>await z.getRequest("POST")("/datasource/create",{type:n,key:r,config:i}),delete:async n=>{await z.getRequest("POST")("/datasource/delete",{id:n})}},account:{login:async(n,r)=>{const i={name:n,password:r};return await z.getRequest("POST")("/account/login",i)},list:async()=>await z.getRequest("POST")("/account/list",{filter:{},sort:[{field:"name",order:"ASC"}],pagination:{page:1,pagesize:100}}),get:async()=>await z.getRequest("GET")("/account/get",{}),update:async(n,r)=>{const i={name:n,email:r};return await z.getRequest("PUT")("/account/update",i)},changepassword:async(n,r)=>{const i={old_password:n,new_password:r};return await z.getRequest("POST")("/account/changepassword",i)},create:async(n,r,i,s)=>await z.getRequest("POST")("/account/create",{name:n,email:r,password:i,role_id:s}),edit:async n=>(n.reset_password||(n.new_password=void 0),await z.getRequest("PUT")("/account/edit",n)),delete:async n=>{if(n)return z.getRequest("POST")("/account/delete",{id:n})}},role:{list:async()=>await z.getRequest("GET")("/role/list",{})},api_key:{list:async()=>await z.getRequest("POST")("/api/key/list",{filter:{search:""},sort:[{field:"name",order:"ASC"}],pagination:{page:1,pagesize:100}}),create:async(n,r)=>z.getRequest("POST")("/api/key/create",{name:n,role_id:r}),delete:async n=>{if(n)return z.getRequest("POST")("/api/key/delete",{id:n})}}},V={size:"sm",spacing:"md",button:{size:"xs"}};function Ct({submit:n,styles:r=V,type:i}){const{control:s,setValue:u,handleSubmit:l}=_.useForm({defaultValues:{type:i,key:"",config:{host:"",port:5432,username:"",password:"",database:""}}});return E.useEffect(()=>{u("type",i)},[u,i]),t(o.Box,{mx:"auto",children:v("form",{onSubmit:l(n),children:[t(_.Controller,{name:"key",control:s,render:({field:c})=>t(o.TextInput,{mb:r.spacing,size:r.size,required:!0,label:"Name",placeholder:"A unique name",...c})}),t(o.Divider,{label:"Connection Info",labelPosition:"center"}),v(o.Group,{grow:!0,children:[t(_.Controller,{name:"config.host",control:s,render:({field:c})=>t(o.TextInput,{mb:r.spacing,size:r.size,required:!0,label:"Host",sx:{flexGrow:1},...c})}),t(_.Controller,{name:"config.port",control:s,render:({field:c})=>t(o.NumberInput,{mb:r.spacing,size:r.size,required:!0,label:"Port",hideControls:!0,sx:{width:"8em"},...c})})]}),t(_.Controller,{name:"config.username",control:s,render:({field:c})=>t(o.TextInput,{mb:r.spacing,size:r.size,required:!0,label:"Username",...c})}),t(_.Controller,{name:"config.password",control:s,render:({field:c})=>t(o.PasswordInput,{mb:r.spacing,size:r.size,required:!0,label:"Password",...c})}),t(_.Controller,{name:"config.database",control:s,render:({field:c})=>t(o.TextInput,{mb:r.spacing,size:r.size,required:!0,label:"Database",...c})}),t(o.Group,{position:"right",mt:r.spacing,children:t(o.Button,{type:"submit",size:r.button.size,children:"Save"})})]})})}const Pt=({value:n,onChange:r})=>{const i=s=>{s&&r(s)};return t(o.Box,{sx:{position:"relative"},children:t(te,{height:"500px",defaultLanguage:"javascript",value:n,onChange:i,theme:"vs-dark",options:{minimap:{enabled:!1}}})})},Pe=E.forwardRef(({value:n,onChange:r,label:i,modalTitle:s,defaultValue:u,styles:l},c)=>{const[f,{setTrue:g,setFalse:w}]=U.useBoolean(),[p,m]=E.useState(n),C=()=>{w(),r(p)},I=()=>{w(),m(n)},q=()=>{m(u)};return E.useEffect(()=>{m(n)},[n]),v(L,{children:[t(o.Button,{variant:"filled",size:l.button.size,onClick:g,sx:{flexGrow:1},children:i}),t(o.Modal,{size:800,title:s,opened:f,onClose:w,closeOnClickOutside:!1,withCloseButton:!1,children:f&&v(o.Stack,{children:[t(Pt,{value:p,onChange:m}),v(o.Group,{position:"apart",children:[t(o.Button,{onClick:q,color:"red",leftIcon:t(N.Recycle,{size:20}),children:"Rest"}),v(o.Group,{position:"right",children:[t(o.Button,{onClick:I,variant:"subtle",children:"Cancel"}),t(o.Button,{onClick:C,children:"OK"})]})]})]})})]})}),re={pre:["function pre_process({ method, url, params, headers, data }, utils) {"," // your code goes here"," return { method, url, params, headers, data }","}"].join(`
|
|
28
28
|
`),post:["function post_process(res, utils) {"," // your code goes here"," return data","}"].join(`
|
|
29
|
-
`)};function Tt({submit:n,styles:r=V}){const{control:i,setValue:s,handleSubmit:u}=_.useForm({defaultValues:{type:"http",key:"",config:{host:"",processing:{pre:re.pre,post:re.post}}}});return t(o.Box,{mx:"auto",children:v("form",{onSubmit:u(n),children:[t(_.Controller,{name:"key",control:i,render:({field:l})=>t(o.TextInput,{mb:r.spacing,size:r.size,required:!0,label:"Name",placeholder:"A unique name",...l})}),t(o.Divider,{label:"Connection Info",labelPosition:"center"}),t(_.Controller,{name:"config.host",control:i,render:({field:l})=>t(o.TextInput,{mb:r.spacing,size:r.size,required:!0,label:"Base URL",sx:{flexGrow:1},...l})}),v(o.Group,{grow:!0,children:[t(_.Controller,{name:"config.processing.pre",control:i,render:({field:l})=>t(Pe,{label:"Pre Processing",modalTitle:"This function will run before sending the request (for scenarios like encryption)",defaultValue:re.pre,...l,styles:r})}),t(_.Controller,{name:"config.processing.post",control:i,render:({field:l})=>t(Pe,{label:"Post Processing",modalTitle:"This function will run after sending the request (for scenarios like decryption)",defaultValue:re.post,...l,styles:r})})]}),t(o.Group,{position:"right",mt:r.spacing,children:t(o.Button,{type:"submit",size:r.button.size,children:"Save"})})]})})}function Rt({styles:n=V}){return t(o.Box,{mx:"auto",children:v(o.Alert,{mt:n.spacing,icon:t(N.AlertCircle,{size:16}),children:["Only ",t("b",{children:"SELECT"})," privilege is needed."]})})}function Et({postSubmit:n,styles:r=V}){const[i,s]=E.useState("postgresql"),u=async({type:f,key:g,config:w})=>{R.showNotification({id:"for-creating",title:"Pending",message:"Adding data source...",loading:!0});try{console.log({type:f,key:g,config:w}),await j.datasource.create(f,g,w),R.updateNotification({id:"for-creating",title:"Successful",message:"Data source is added",color:"green"}),n()}catch(p){R.updateNotification({id:"for-creating",title:"Failed",message:p.message,color:"red"})}},l=i==="postgresql"||i==="mysql",c=i==="http";return v(o.Box,{mx:"auto",children:[t(o.SegmentedControl,{fullWidth:!0,mb:r.spacing,size:r.size,data:[{label:"PostgreSQL",value:"postgresql"},{label:"MySQL",value:"mysql"},{label:"HTTP",value:"http"}],value:i,onChange:f=>s(f)}),l&&t(Rt,{styles:r}),l&&t(Ct,{submit:u,styles:r,type:i}),c&&t(Tt,{submit:u,styles:r})]})}function Te({onSuccess:n,styles:r=V}){const[i,s]=E.useState(!1),u=()=>s(!0),l=()=>s(!1),c=()=>{n(),l()};return v(L,{children:[t(o.Modal,{overflow:"inside",opened:i,onClose:()=>s(!1),title:"Add a data source",trapFocus:!0,onDragStart:f=>{f.stopPropagation()},children:t(Et,{postSubmit:c,styles:r})}),t(o.Button,{size:r.button.size,onClick:u,leftIcon:t(N.PlaylistAdd,{size:20}),children:"Add a Data Source"})]})}const xt=n=>n.replace(/([^:])(\/\/+)/g,"$1/");function Ot(n){E.useEffect(()=>{if(te.loader.__getMonacoInstance())return;console.log("loading monaco for @devtable/settings-form");const i=xt(n);te.loader.config({paths:{vs:i}}),te.loader.init().then(s=>console.log("monaco instance:",s))},[])}function ue(){return ue=Object.assign?Object.assign.bind():function(n){for(var r=1;r<arguments.length;r++){var i=arguments[r];for(var s in i)Object.prototype.hasOwnProperty.call(i,s)&&(n[s]=i[s])}return n},ue.apply(this,arguments)}function zt(n,r){if(n==null)return{};var i,s,u=function(c,f){if(c==null)return{};var g,w,p={},m=Object.keys(c);for(w=0;w<m.length;w++)g=m[w],f.indexOf(g)>=0||(p[g]=c[g]);return p}(n,r);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(n);for(s=0;s<l.length;s++)i=l[s],r.indexOf(i)>=0||Object.prototype.propertyIsEnumerable.call(n,i)&&(u[i]=n[i])}return u}var At=["size","color","stroke"];function Dt(n){var r=n.size,i=r===void 0?24:r,s=n.color,u=s===void 0?"currentColor":s,l=n.stroke,c=l===void 0?2:l,f=zt(n,At);return J.createElement("svg",ue({xmlns:"http://www.w3.org/2000/svg",className:"icon icon-tabler icon-tabler-lock",width:i,height:i,viewBox:"0 0 24 24",strokeWidth:c,stroke:u,fill:"none",strokeLinecap:"round",strokeLinejoin:"round"},f),J.createElement("path",{stroke:"none",d:"M0 0h24v24H0z",fill:"none"}),J.createElement("rect",{x:5,y:11,width:14,height:10,rx:2}),J.createElement("circle",{cx:12,cy:16,r:1}),J.createElement("path",{d:"M8 11v-4a4 4 0 0 1 8 0v4"}))}function Re({id:n,name:r,isProtected:i,onSuccess:s,styles:u=V}){const l=K.useModals(),c=async()=>{n&&(R.showNotification({id:"for-deleting",title:"Pending",message:"Deleting data source...",loading:!0}),await j.datasource.delete(n),R.updateNotification({id:"for-deleting",title:"Successful",message:`Data source [${r}] is deleted`,color:"green"}),s())},f=()=>l.openConfirmModal({title:"Delete this data source?",children:t(o.Text,{size:u.size,children:"This action won't affect your database."}),labels:{confirm:"Confirm",cancel:"Cancel"},onCancel:()=>console.log("Cancel"),onConfirm:c}),g=o.useMantineTheme();return i?t(o.Tooltip,{withArrow:!0,events:{hover:!0,touch:!1,focus:!1},label:"This is a preset datasource, it can not be deleted",children:t("span",{children:t(Dt,{size:16,color:g.colors.gray[7]})})}):t(o.Button,{size:u.button.size,color:"red",onClick:f,leftIcon:t(N.Trash,{size:20}),children:"Delete"})}function jt({styles:n=V,config:r}){Ot(r.monacoPath),ne(r);const{data:i=[],loading:s,refresh:u}=U.useRequest(async()=>{const{data:l}=await j.datasource.list();return l},{refreshDeps:[]});return v(L,{children:[t(o.Group,{pt:n.spacing,position:"right",children:t(Te,{onSuccess:u})}),v(o.Box,{mt:n.spacing,sx:{position:"relative"},children:[t(o.LoadingOverlay,{visible:s}),v(o.Table,{horizontalSpacing:n.spacing,verticalSpacing:n.spacing,fontSize:n.size,highlightOnHover:!0,children:[t("thead",{children:v("tr",{children:[t("th",{children:"Type"}),t("th",{children:"Name"}),t("th",{children:"Action"})]})}),t("tbody",{children:i.map(({id:l,key:c,type:f,is_preset:g})=>v("tr",{children:[t("td",{width:200,children:f}),t("td",{children:c}),t("td",{width:200,children:t(o.Group,{position:"left",children:t(Re,{isProtected:g,id:l,name:c,onSuccess:u})})})]},c))})]})]})]})}const It=E.forwardRef(({label:n,value:r,description:i,...s},u)=>v(o.Stack,{spacing:2,ref:u,...s,children:[t(o.Text,{size:"sm",children:n}),t(o.Text,{size:"xs",color:"dimmed",className:"role-description",children:i})]})),de=E.forwardRef(({styles:n,value:r,onChange:i},s)=>{const{data:u=[],loading:l}=U.useRequest(async()=>(await j.role.list()).map(f=>({label:f.name,value:f.id,description:f.description,disabled:f.id===50})),{refreshDeps:[]});return t(o.Select,{ref:s,mb:n.spacing,size:n.size,required:!0,label:"Role",itemComponent:It,data:u,disabled:l,styles:()=>({item:{"&[data-selected]":{"&, &:hover":{".role-description":{color:"rgba(255,255,255,.8)"}}}}}),value:r,onChange:i})}),F={size:"sm",spacing:"md",button:{size:"xs"}};function kt({postSubmit:n,styles:r=F,initialRoleID:i}){const{control:s,handleSubmit:u}=_.useForm({defaultValues:{name:"",email:"",role_id:i,password:""}}),l=async({name:c,email:f,password:g,role_id:w})=>{try{R.showNotification({id:"for-creating",title:"Pending",message:"Adding account...",loading:!0}),await j.account.create(c,f,g,w),R.updateNotification({id:"for-creating",title:"Successful",message:"Account is added",color:"green"}),n()}catch(p){R.updateNotification({id:"for-creating",title:"Failed",message:p.message,color:"red"})}};return t(o.Box,{mx:"auto",children:v("form",{onSubmit:u(l),children:[t(_.Controller,{name:"name",control:s,render:({field:c})=>t(o.TextInput,{mb:r.spacing,size:r.size,required:!0,label:"Username",...c})}),t(_.Controller,{name:"email",control:s,render:({field:c})=>t(o.TextInput,{mb:r.spacing,size:r.size,required:!0,label:"Email",...c})}),t(_.Controller,{name:"password",control:s,render:({field:c})=>t(o.PasswordInput,{mb:r.spacing,size:r.size,required:!0,label:"Password",description:"Password must be at least 8 characters long",...c})}),t(_.Controller,{name:"role_id",control:s,render:({field:c})=>t(de,{styles:r,...c})}),t(o.Group,{position:"right",mt:r.spacing,children:t(o.Button,{type:"submit",size:r.button.size,children:"Save"})})]})})}function Ee({onSuccess:n,styles:r=F,initialRoleID:i}){const[s,u]=E.useState(!1),l=()=>u(!0),c=()=>u(!1),f=()=>{n(),c()};return v(L,{children:[t(o.Modal,{overflow:"inside",opened:s,onClose:()=>u(!1),title:"Add an Account",trapFocus:!0,onDragStart:g=>{g.stopPropagation()},children:t(kt,{postSubmit:f,styles:r,initialRoleID:i})}),t(o.Button,{size:r.button.size,onClick:l,leftIcon:t(N.PlaylistAdd,{size:20}),children:"Add an Account"})]})}function xe({id:n,name:r,onSuccess:i,styles:s=F}){const u=K.useModals(),l=async()=>{if(n){R.showNotification({id:"for-deleting",title:"Pending",message:"Deleting account...",loading:!0});try{await j.account.delete(n),R.updateNotification({id:"for-deleting",title:"Successful",message:`Account [${r}] is deleted`,color:"green"}),i()}catch(f){R.updateNotification({id:"for-deleting",title:"Failed",message:f.message,color:"red"})}}},c=()=>u.openConfirmModal({title:"Delete this account?",labels:{confirm:"Confirm",cancel:"Cancel"},onCancel:()=>console.log("Cancel"),onConfirm:l});return t(o.Button,{size:s.button.size,color:"red",onClick:c,leftIcon:t(N.Trash,{size:20}),children:"Delete"})}function qt({id:n,name:r,email:i,role_id:s,postSubmit:u,styles:l=F}){const{control:c,handleSubmit:f,watch:g}=_.useForm({defaultValues:{name:r,email:i,role_id:s,reset_password:!1,new_password:""}}),w=async({name:C,email:I,role_id:q,reset_password:fe,new_password:pe})=>{try{R.showNotification({id:"for-updating",title:"Pending",message:"Updating account...",loading:!0}),await j.account.edit({id:n,name:C,email:I,role_id:q,reset_password:fe,new_password:pe}),R.updateNotification({id:"for-updating",title:"Successful",message:"Account is updated",color:"green"}),u()}catch($){R.updateNotification({id:"for-updating",title:"Failed",message:$.message,color:"red"})}},[p,m]=g(["reset_password","new_password"]);return t(o.Box,{mx:"auto",children:v("form",{onSubmit:f(w),children:[t(_.Controller,{name:"name",control:c,render:({field:C})=>t(o.TextInput,{mb:l.spacing,size:l.size,required:!0,label:"Username",...C})}),t(_.Controller,{name:"email",control:c,render:({field:C})=>t(o.TextInput,{mb:l.spacing,size:l.size,required:!0,label:"Email",...C})}),t(_.Controller,{name:"role_id",control:c,render:({field:C})=>t(de,{styles:l,...C})}),t(o.Divider,{my:20,variant:"dashed",label:"",labelPosition:"center"}),t(_.Controller,{name:"reset_password",control:c,render:({field:C})=>t(o.Switch,{mb:l.spacing,size:l.size,label:"Reset password",checked:C.value,onChange:I=>C.onChange(I.currentTarget.checked),styles:{label:{verticalAlign:"middle"}}})}),p&&t(_.Controller,{name:"new_password",control:c,render:({field:C})=>t(o.PasswordInput,{autoComplete:"off",mb:l.spacing,size:l.size,required:!0,description:"Password must be at least 8 characters long",label:"New Password",...C})}),t(o.Group,{position:"right",mt:l.spacing,children:t(o.Button,{type:"submit",size:l.button.size,children:"Submit"})})]})})}function Nt({account:n,onSuccess:r,styles:i=F}){const[s,u]=E.useState(!1),l=()=>u(!0),c=()=>u(!1),f=()=>{r(),c()};return v(L,{children:[t(o.Modal,{overflow:"inside",opened:s,onClose:()=>u(!1),title:`Editing ${n.name}`,trapFocus:!0,onDragStart:g=>{g.stopPropagation()},children:t(qt,{...n,postSubmit:f,styles:i})}),t(o.Button,{size:i.button.size,onClick:l,leftIcon:t(N.Edit,{size:20}),children:"Edit"})]})}function Lt({styles:n=F,config:r}){var w;ne(r);const{data:i=[],loading:s,refresh:u}=U.useRequest(async()=>{const{data:p}=await j.account.list();return p},{refreshDeps:[]}),{data:l=[],loading:c}=U.useRequest(async()=>(await j.role.list()).map(m=>({label:m.name,value:m.id,description:m.description,disabled:m.id===50})),{refreshDeps:[]}),f=E.useMemo(()=>l.reduce((p,m)=>(p.set(m.value,m.label),p),new Map),[l]),g=p=>f.get(p)??p;return v(L,{children:[t(o.Group,{pt:n.spacing,position:"right",children:t(Ee,{onSuccess:u,initialRoleID:((w=l==null?void 0:l[0])==null?void 0:w.value)??0})}),v(o.Box,{mt:n.spacing,sx:{position:"relative"},children:[t(o.LoadingOverlay,{visible:s||c}),v(o.Table,{horizontalSpacing:n.spacing,verticalSpacing:n.spacing,fontSize:n.size,highlightOnHover:!0,children:[t("thead",{children:v("tr",{children:[t("th",{children:"Username"}),t("th",{children:"Email"}),t("th",{children:"Role"}),t("th",{children:"Action"})]})}),t("tbody",{children:i.map(p=>{const{id:m,name:C,email:I,role_id:q}=p;return v("tr",{children:[t("td",{width:200,children:C}),t("td",{width:200,children:I}),t("td",{width:200,children:g(q)}),t("td",{width:200,children:v(o.Group,{position:"left",children:[t(Nt,{account:p,onSuccess:u}),t(xe,{id:m,name:C,onSuccess:u})]})})]},m)})})]})]})]})}function Bt({postSubmit:n,styles:r=F}){const{control:i,handleSubmit:s}=_.useForm({defaultValues:{name:"",password:""}}),u=async({name:l,password:c})=>{try{R.showNotification({id:"for-login",title:"Pending",message:"Loggin in...",loading:!0});const f=await j.account.login(l,c);window.localStorage.setItem("token",f.token),R.updateNotification({id:"for-login",title:"Successful",message:"Logged in",color:"green"}),n(f)}catch(f){R.updateNotification({id:"for-login",title:"Login Failed",message:f.message,color:"red"})}};return t(o.Box,{mx:"auto",children:v("form",{onSubmit:s(u),children:[t(_.Controller,{name:"name",control:i,render:({field:l})=>t(o.TextInput,{mb:r.spacing,size:r.size,required:!0,label:"Username",...l})}),t(_.Controller,{name:"password",control:i,render:({field:l})=>t(o.PasswordInput,{mb:r.spacing,size:r.size,required:!0,label:"Password",...l})}),t(o.Group,{position:"right",mt:r.spacing,children:t(o.Button,{type:"submit",size:r.button.size,children:"Submit"})})]})})}function Mt({styles:n=F,config:r,onSuccess:i}){return ne(r),t(L,{children:t(o.Box,{mt:n.spacing,sx:{position:"relative"},children:t(Bt,{styles:n,postSubmit:i})})})}const ie={size:"sm",spacing:"md",button:{size:"xs"}};function Ft({postSubmit:n,styles:r=ie,initialRoleID:i}){const{control:s,handleSubmit:u}=_.useForm({defaultValues:{name:"",role_id:i}}),l=async({name:c,role_id:f})=>{try{R.showNotification({id:"for-creating",title:"Pending",message:"Adding API Key...",loading:!0});const{app_id:g,app_secret:w}=await j.api_key.create(c,f);R.updateNotification({id:"for-creating",title:"Successful",message:"API Key is added",color:"green"}),n(g,w)}catch(g){R.updateNotification({id:"for-creating",title:"Failed",message:g.message,color:"red"})}};return t(o.Box,{mx:"auto",children:v("form",{onSubmit:u(l),children:[t(_.Controller,{name:"name",control:s,render:({field:c})=>t(o.TextInput,{mb:r.spacing,size:r.size,required:!0,label:"Name",...c})}),t(_.Controller,{name:"role_id",control:s,render:({field:c})=>t(de,{styles:r,...c})}),t(o.Group,{position:"right",mt:r.spacing,children:t(o.Button,{type:"submit",size:r.button.size,children:"Save"})})]})})}function Oe({onSuccess:n,styles:r=ie,initialRoleID:i}){const s=K.useModals(),[u,l]=E.useState(!1),c=()=>l(!0),f=()=>l(!1),g=(w,p)=>{f(),s.openModal({title:"API Key is generated",children:v(o.Stack,{children:[t(o.Text,{color:"dimmed",children:"Make sure you save it - you won't be able to access it again."}),t(o.TextInput,{defaultValue:w,disabled:!0,label:"APP ID",styles:{input:{cursor:"text !important"}}}),t(o.TextInput,{defaultValue:p,disabled:!0,label:"APP Secret",styles:{input:{cursor:"text !important"}}}),t(o.Button,{size:"sm",onClick:()=>{K.closeAllModals()},children:"I've saved this API Key"})]}),onClose:()=>{n()}})};return v(L,{children:[t(o.Modal,{overflow:"inside",opened:u,onClose:()=>l(!1),title:"Add an API Key",trapFocus:!0,onDragStart:w=>{w.stopPropagation()},children:t(Ft,{postSubmit:g,styles:r,initialRoleID:i})}),t(o.Button,{size:r.button.size,onClick:c,leftIcon:t(N.PlaylistAdd,{size:20}),children:"Add an API Key"})]})}function ze({id:n,name:r,onSuccess:i,styles:s=ie}){const u=K.useModals(),l=async()=>{if(n){R.showNotification({id:"for-deleting",title:"Pending",message:"Deleting API Key...",loading:!0});try{await j.api_key.delete(n),R.updateNotification({id:"for-deleting",title:"Successful",message:`API Key [${r}] is deleted`,color:"green"}),i()}catch(f){R.updateNotification({id:"for-deleting",title:"Failed",message:f.message,color:"red"})}}},c=()=>u.openConfirmModal({title:"Delete this api-key?",labels:{confirm:"Confirm",cancel:"Cancel"},onCancel:()=>console.log("Cancel"),onConfirm:l});return t(o.Button,{size:s.button.size,color:"red",onClick:c,leftIcon:t(N.Trash,{size:20}),children:"Delete"})}function $t({styles:n=ie,config:r}){var w;ne(r);const{data:i=[],loading:s,refresh:u}=U.useRequest(async()=>{const{data:p}=await j.api_key.list();return p},{refreshDeps:[]}),{data:l=[],loading:c}=U.useRequest(async()=>(await j.role.list()).map(m=>({label:m.name,value:m.id,description:m.description,disabled:m.id===50})),{refreshDeps:[]}),f=E.useMemo(()=>l.reduce((p,m)=>(p.set(m.value,m.label),p),new Map),[l]),g=p=>f.get(p)??p;return v(L,{children:[t(o.Group,{pt:n.spacing,position:"right",children:t(Oe,{onSuccess:u,initialRoleID:((w=l==null?void 0:l[0])==null?void 0:w.value)??0})}),v(o.Box,{mt:n.spacing,sx:{position:"relative"},children:[t(o.LoadingOverlay,{visible:s||c}),v(o.Table,{horizontalSpacing:n.spacing,verticalSpacing:n.spacing,fontSize:n.size,highlightOnHover:!0,children:[t("thead",{children:v("tr",{children:[t("th",{children:"Name"}),t("th",{children:"APP ID"}),t("th",{children:"Role"}),t("th",{children:"Action"})]})}),t("tbody",{children:i.map(p=>{const{id:m,name:C,app_id:I,role_id:q}=p;return v("tr",{children:[t("td",{width:200,children:C}),t("td",{width:200,children:I}),t("td",{width:200,children:g(q)}),t("td",{width:200,children:t(o.Group,{position:"left",children:t(ze,{id:m,name:C,onSuccess:u})})})]},m)})})]})]})]})}const Ut=()=>Promise.resolve().then(()=>Vt).then(({version:n})=>(console.log(`[@devtable/dashboard] version: ${n}`),n)),Ae="@devtable/settings-form",De="9.2.1",je="Apache-2.0",Ie={access:"public",registry:"https://registry.npmjs.org/"},ke=["dist"],qe="./dist/settings-form.umd.js",Ne="./dist/settings-form.es.js",Le="./dist/index.d.ts",Be={".":{import:"./dist/settings-form.es.js",require:"./dist/settings-form.umd.js"},"./dist/style.css":{import:"./dist/style.css",require:"./dist/style.css"}},Me={"dev-build":"tsc && vite build --watch",build:"tsc && vite build",preview:"vite preview"},Fe={"@monaco-editor/react":"4.4.6","monaco-editor":"0.36.0"},$e={"@emotion/babel-plugin":"11.10.6","@types/crypto-js":"v4.1.1","@types/lodash":"^4.14.182","@types/react":"^18.0.0","@types/react-dom":"^18.0.0","@types/react-grid-layout":"^1.3.2","rollup-plugin-visualizer":"5.6.0",typescript:"^4.6.3","vite-plugin-static-copy":"0.13.1"},Ue={"@emotion/react":"11.10.6","@mantine/core":"5.9.5","@mantine/hooks":"5.9.5","@mantine/modals":"5.9.5","@mantine/notifications":"5.9.5",ahooks:"^3.3.11",axios:"^0.27.2","crypto-js":"^4.1.1",lodash:"^4.17.21",react:"^16.8.0 || 17.x || 18.x","react-dom":"^16.8.0 || 17.x || 18.x","react-hook-form":"^7.31.2","tabler-icons-react":"^1.48.0"},Vt=Object.freeze(Object.defineProperty({__proto__:null,default:{name:Ae,version:De,license:je,publishConfig:Ie,files:ke,main:qe,module:Ne,types:Le,exports:Be,scripts:Me,dependencies:Fe,devDependencies:$e,peerDependencies:Ue},dependencies:Fe,devDependencies:$e,exports:Be,files:ke,license:je,main:qe,module:Ne,name:Ae,peerDependencies:Ue,publishConfig:Ie,scripts:Me,types:Le,version:De},Symbol.toStringTag,{value:"Module"}));P.APIKeyList=$t,P.AccountList=Lt,P.AddAPIKey=Oe,P.AddAccount=Ee,P.AddDataSource=Te,P.DataSourceList=jt,P.DeleteAPIKey=ze,P.DeleteAccount=xe,P.DeleteDataSource=Re,P.Login=Mt,P.getVersion=Ut,Object.defineProperty(P,Symbol.toStringTag,{value:"Module"})});
|
|
29
|
+
`)};function Tt({submit:n,styles:r=V}){const{control:i,setValue:s,handleSubmit:u}=_.useForm({defaultValues:{type:"http",key:"",config:{host:"",processing:{pre:re.pre,post:re.post}}}});return t(o.Box,{mx:"auto",children:v("form",{onSubmit:u(n),children:[t(_.Controller,{name:"key",control:i,render:({field:l})=>t(o.TextInput,{mb:r.spacing,size:r.size,required:!0,label:"Name",placeholder:"A unique name",...l})}),t(o.Divider,{label:"Connection Info",labelPosition:"center"}),t(_.Controller,{name:"config.host",control:i,render:({field:l})=>t(o.TextInput,{mb:r.spacing,size:r.size,required:!0,label:"Base URL",sx:{flexGrow:1},...l})}),v(o.Group,{grow:!0,children:[t(_.Controller,{name:"config.processing.pre",control:i,render:({field:l})=>t(Pe,{label:"Pre Processing",modalTitle:"This function will run before sending the request (for scenarios like encryption)",defaultValue:re.pre,...l,styles:r})}),t(_.Controller,{name:"config.processing.post",control:i,render:({field:l})=>t(Pe,{label:"Post Processing",modalTitle:"This function will run after sending the request (for scenarios like decryption)",defaultValue:re.post,...l,styles:r})})]}),t(o.Group,{position:"right",mt:r.spacing,children:t(o.Button,{type:"submit",size:r.button.size,children:"Save"})})]})})}function Rt({styles:n=V}){return t(o.Box,{mx:"auto",children:v(o.Alert,{mt:n.spacing,icon:t(N.AlertCircle,{size:16}),children:["Only ",t("b",{children:"SELECT"})," privilege is needed."]})})}function Et({postSubmit:n,styles:r=V}){const[i,s]=E.useState("postgresql"),u=async({type:f,key:g,config:w})=>{R.showNotification({id:"for-creating",title:"Pending",message:"Adding data source...",loading:!0});try{console.log({type:f,key:g,config:w}),await j.datasource.create(f,g,w),R.updateNotification({id:"for-creating",title:"Successful",message:"Data source is added",color:"green"}),n()}catch(p){R.updateNotification({id:"for-creating",title:"Failed",message:p.message,color:"red"})}},l=i==="postgresql"||i==="mysql",c=i==="http";return v(o.Box,{mx:"auto",children:[t(o.SegmentedControl,{fullWidth:!0,mb:r.spacing,size:r.size,data:[{label:"PostgreSQL",value:"postgresql"},{label:"MySQL",value:"mysql"},{label:"HTTP",value:"http"}],value:i,onChange:f=>s(f)}),l&&t(Rt,{styles:r}),l&&t(Ct,{submit:u,styles:r,type:i}),c&&t(Tt,{submit:u,styles:r})]})}function Te({onSuccess:n,styles:r=V}){const[i,s]=E.useState(!1),u=()=>s(!0),l=()=>s(!1),c=()=>{n(),l()};return v(L,{children:[t(o.Modal,{overflow:"inside",opened:i,onClose:()=>s(!1),title:"Add a data source",trapFocus:!0,onDragStart:f=>{f.stopPropagation()},children:t(Et,{postSubmit:c,styles:r})}),t(o.Button,{size:r.button.size,onClick:u,leftIcon:t(N.PlaylistAdd,{size:20}),children:"Add a Data Source"})]})}const xt=n=>n.replace(/([^:])(\/\/+)/g,"$1/");function Ot(n){E.useEffect(()=>{if(te.loader.__getMonacoInstance())return;console.log("loading monaco for @devtable/settings-form");const i=xt(n);te.loader.config({paths:{vs:i}}),te.loader.init().then(s=>console.log("monaco instance:",s))},[])}function ue(){return ue=Object.assign?Object.assign.bind():function(n){for(var r=1;r<arguments.length;r++){var i=arguments[r];for(var s in i)Object.prototype.hasOwnProperty.call(i,s)&&(n[s]=i[s])}return n},ue.apply(this,arguments)}function zt(n,r){if(n==null)return{};var i,s,u=function(c,f){if(c==null)return{};var g,w,p={},m=Object.keys(c);for(w=0;w<m.length;w++)g=m[w],f.indexOf(g)>=0||(p[g]=c[g]);return p}(n,r);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(n);for(s=0;s<l.length;s++)i=l[s],r.indexOf(i)>=0||Object.prototype.propertyIsEnumerable.call(n,i)&&(u[i]=n[i])}return u}var At=["size","color","stroke"];function Dt(n){var r=n.size,i=r===void 0?24:r,s=n.color,u=s===void 0?"currentColor":s,l=n.stroke,c=l===void 0?2:l,f=zt(n,At);return J.createElement("svg",ue({xmlns:"http://www.w3.org/2000/svg",className:"icon icon-tabler icon-tabler-lock",width:i,height:i,viewBox:"0 0 24 24",strokeWidth:c,stroke:u,fill:"none",strokeLinecap:"round",strokeLinejoin:"round"},f),J.createElement("path",{stroke:"none",d:"M0 0h24v24H0z",fill:"none"}),J.createElement("rect",{x:5,y:11,width:14,height:10,rx:2}),J.createElement("circle",{cx:12,cy:16,r:1}),J.createElement("path",{d:"M8 11v-4a4 4 0 0 1 8 0v4"}))}function Re({id:n,name:r,isProtected:i,onSuccess:s,styles:u=V}){const l=K.useModals(),c=async()=>{n&&(R.showNotification({id:"for-deleting",title:"Pending",message:"Deleting data source...",loading:!0}),await j.datasource.delete(n),R.updateNotification({id:"for-deleting",title:"Successful",message:`Data source [${r}] is deleted`,color:"green"}),s())},f=()=>l.openConfirmModal({title:"Delete this data source?",children:t(o.Text,{size:u.size,children:"This action won't affect your database."}),labels:{confirm:"Confirm",cancel:"Cancel"},onCancel:()=>console.log("Cancel"),onConfirm:c}),g=o.useMantineTheme();return i?t(o.Tooltip,{withArrow:!0,events:{hover:!0,touch:!1,focus:!1},label:"This is a preset datasource, it can not be deleted",children:t("span",{children:t(Dt,{size:16,color:g.colors.gray[7]})})}):t(o.Button,{size:u.button.size,color:"red",onClick:f,leftIcon:t(N.Trash,{size:20}),children:"Delete"})}function jt({styles:n=V,config:r}){Ot(r.monacoPath),ne(r);const{data:i=[],loading:s,refresh:u}=U.useRequest(async()=>{const{data:l}=await j.datasource.list();return l},{refreshDeps:[]});return v(L,{children:[t(o.Group,{pt:n.spacing,position:"right",children:t(Te,{onSuccess:u})}),v(o.Box,{mt:n.spacing,sx:{position:"relative"},children:[t(o.LoadingOverlay,{visible:s}),v(o.Table,{horizontalSpacing:n.spacing,verticalSpacing:n.spacing,fontSize:n.size,highlightOnHover:!0,children:[t("thead",{children:v("tr",{children:[t("th",{children:"Type"}),t("th",{children:"Name"}),t("th",{children:"Action"})]})}),t("tbody",{children:i.map(({id:l,key:c,type:f,is_preset:g})=>v("tr",{children:[t("td",{width:200,children:f}),t("td",{children:c}),t("td",{width:200,children:t(o.Group,{position:"left",children:t(Re,{isProtected:g,id:l,name:c,onSuccess:u})})})]},c))})]})]})]})}const It=E.forwardRef(({label:n,value:r,description:i,...s},u)=>v(o.Stack,{spacing:2,ref:u,...s,children:[t(o.Text,{size:"sm",children:n}),t(o.Text,{size:"xs",color:"dimmed",className:"role-description",children:i})]})),de=E.forwardRef(({styles:n,value:r,onChange:i},s)=>{const{data:u=[],loading:l}=U.useRequest(async()=>(await j.role.list()).map(f=>({label:f.name,value:f.id,description:f.description,disabled:f.id===50})),{refreshDeps:[]});return t(o.Select,{ref:s,mb:n.spacing,size:n.size,required:!0,label:"Role",itemComponent:It,data:u,disabled:l,styles:()=>({item:{"&[data-selected]":{"&, &:hover":{".role-description":{color:"rgba(255,255,255,.8)"}}}}}),value:r,onChange:i})}),F={size:"sm",spacing:"md",button:{size:"xs"}};function kt({postSubmit:n,styles:r=F,initialRoleID:i}){const{control:s,handleSubmit:u}=_.useForm({defaultValues:{name:"",email:"",role_id:i,password:""}}),l=async({name:c,email:f,password:g,role_id:w})=>{try{R.showNotification({id:"for-creating",title:"Pending",message:"Adding account...",loading:!0}),await j.account.create(c,f,g,w),R.updateNotification({id:"for-creating",title:"Successful",message:"Account is added",color:"green"}),n()}catch(p){R.updateNotification({id:"for-creating",title:"Failed",message:p.message,color:"red"})}};return t(o.Box,{mx:"auto",children:v("form",{onSubmit:u(l),children:[t(_.Controller,{name:"name",control:s,render:({field:c})=>t(o.TextInput,{mb:r.spacing,size:r.size,required:!0,label:"Username",...c})}),t(_.Controller,{name:"email",control:s,render:({field:c})=>t(o.TextInput,{mb:r.spacing,size:r.size,required:!0,label:"Email",...c})}),t(_.Controller,{name:"password",control:s,render:({field:c})=>t(o.PasswordInput,{mb:r.spacing,size:r.size,required:!0,label:"Password",description:"Password must be at least 8 characters long",...c})}),t(_.Controller,{name:"role_id",control:s,render:({field:c})=>t(de,{styles:r,...c})}),t(o.Group,{position:"right",mt:r.spacing,children:t(o.Button,{type:"submit",size:r.button.size,children:"Save"})})]})})}function Ee({onSuccess:n,styles:r=F,initialRoleID:i}){const[s,u]=E.useState(!1),l=()=>u(!0),c=()=>u(!1),f=()=>{n(),c()};return v(L,{children:[t(o.Modal,{overflow:"inside",opened:s,onClose:()=>u(!1),title:"Add an Account",trapFocus:!0,onDragStart:g=>{g.stopPropagation()},children:t(kt,{postSubmit:f,styles:r,initialRoleID:i})}),t(o.Button,{size:r.button.size,onClick:l,leftIcon:t(N.PlaylistAdd,{size:20}),children:"Add an Account"})]})}function xe({id:n,name:r,onSuccess:i,styles:s=F}){const u=K.useModals(),l=async()=>{if(n){R.showNotification({id:"for-deleting",title:"Pending",message:"Deleting account...",loading:!0});try{await j.account.delete(n),R.updateNotification({id:"for-deleting",title:"Successful",message:`Account [${r}] is deleted`,color:"green"}),i()}catch(f){R.updateNotification({id:"for-deleting",title:"Failed",message:f.message,color:"red"})}}},c=()=>u.openConfirmModal({title:"Delete this account?",labels:{confirm:"Confirm",cancel:"Cancel"},onCancel:()=>console.log("Cancel"),onConfirm:l});return t(o.Button,{size:s.button.size,color:"red",onClick:c,leftIcon:t(N.Trash,{size:20}),children:"Delete"})}function qt({id:n,name:r,email:i,role_id:s,postSubmit:u,styles:l=F}){const{control:c,handleSubmit:f,watch:g}=_.useForm({defaultValues:{name:r,email:i,role_id:s,reset_password:!1,new_password:""}}),w=async({name:C,email:I,role_id:q,reset_password:fe,new_password:pe})=>{try{R.showNotification({id:"for-updating",title:"Pending",message:"Updating account...",loading:!0}),await j.account.edit({id:n,name:C,email:I,role_id:q,reset_password:fe,new_password:pe}),R.updateNotification({id:"for-updating",title:"Successful",message:"Account is updated",color:"green"}),u()}catch($){R.updateNotification({id:"for-updating",title:"Failed",message:$.message,color:"red"})}},[p,m]=g(["reset_password","new_password"]);return t(o.Box,{mx:"auto",children:v("form",{onSubmit:f(w),children:[t(_.Controller,{name:"name",control:c,render:({field:C})=>t(o.TextInput,{mb:l.spacing,size:l.size,required:!0,label:"Username",...C})}),t(_.Controller,{name:"email",control:c,render:({field:C})=>t(o.TextInput,{mb:l.spacing,size:l.size,required:!0,label:"Email",...C})}),t(_.Controller,{name:"role_id",control:c,render:({field:C})=>t(de,{styles:l,...C})}),t(o.Divider,{my:20,variant:"dashed",label:"",labelPosition:"center"}),t(_.Controller,{name:"reset_password",control:c,render:({field:C})=>t(o.Switch,{mb:l.spacing,size:l.size,label:"Reset password",checked:C.value,onChange:I=>C.onChange(I.currentTarget.checked),styles:{label:{verticalAlign:"middle"}}})}),p&&t(_.Controller,{name:"new_password",control:c,render:({field:C})=>t(o.PasswordInput,{autoComplete:"off",mb:l.spacing,size:l.size,required:!0,description:"Password must be at least 8 characters long",label:"New Password",...C})}),t(o.Group,{position:"right",mt:l.spacing,children:t(o.Button,{type:"submit",size:l.button.size,children:"Submit"})})]})})}function Nt({account:n,onSuccess:r,styles:i=F}){const[s,u]=E.useState(!1),l=()=>u(!0),c=()=>u(!1),f=()=>{r(),c()};return v(L,{children:[t(o.Modal,{overflow:"inside",opened:s,onClose:()=>u(!1),title:`Editing ${n.name}`,trapFocus:!0,onDragStart:g=>{g.stopPropagation()},children:t(qt,{...n,postSubmit:f,styles:i})}),t(o.Button,{size:i.button.size,onClick:l,leftIcon:t(N.Edit,{size:20}),children:"Edit"})]})}function Lt({styles:n=F,config:r}){var w;ne(r);const{data:i=[],loading:s,refresh:u}=U.useRequest(async()=>{const{data:p}=await j.account.list();return p},{refreshDeps:[]}),{data:l=[],loading:c}=U.useRequest(async()=>(await j.role.list()).map(m=>({label:m.name,value:m.id,description:m.description,disabled:m.id===50})),{refreshDeps:[]}),f=E.useMemo(()=>l.reduce((p,m)=>(p.set(m.value,m.label),p),new Map),[l]),g=p=>f.get(p)??p;return v(L,{children:[t(o.Group,{pt:n.spacing,position:"right",children:t(Ee,{onSuccess:u,initialRoleID:((w=l==null?void 0:l[0])==null?void 0:w.value)??0})}),v(o.Box,{mt:n.spacing,sx:{position:"relative"},children:[t(o.LoadingOverlay,{visible:s||c}),v(o.Table,{horizontalSpacing:n.spacing,verticalSpacing:n.spacing,fontSize:n.size,highlightOnHover:!0,children:[t("thead",{children:v("tr",{children:[t("th",{children:"Username"}),t("th",{children:"Email"}),t("th",{children:"Role"}),t("th",{children:"Action"})]})}),t("tbody",{children:i.map(p=>{const{id:m,name:C,email:I,role_id:q}=p;return v("tr",{children:[t("td",{width:200,children:C}),t("td",{width:200,children:I}),t("td",{width:200,children:g(q)}),t("td",{width:200,children:v(o.Group,{position:"left",children:[t(Nt,{account:p,onSuccess:u}),t(xe,{id:m,name:C,onSuccess:u})]})})]},m)})})]})]})]})}function Bt({postSubmit:n,styles:r=F}){const{control:i,handleSubmit:s}=_.useForm({defaultValues:{name:"",password:""}}),u=async({name:l,password:c})=>{try{R.showNotification({id:"for-login",title:"Pending",message:"Loggin in...",loading:!0});const f=await j.account.login(l,c);window.localStorage.setItem("token",f.token),R.updateNotification({id:"for-login",title:"Successful",message:"Logged in",color:"green"}),n(f)}catch(f){R.updateNotification({id:"for-login",title:"Login Failed",message:f.message,color:"red"})}};return t(o.Box,{mx:"auto",children:v("form",{onSubmit:s(u),children:[t(_.Controller,{name:"name",control:i,render:({field:l})=>t(o.TextInput,{mb:r.spacing,size:r.size,required:!0,label:"Username",...l})}),t(_.Controller,{name:"password",control:i,render:({field:l})=>t(o.PasswordInput,{mb:r.spacing,size:r.size,required:!0,label:"Password",...l})}),t(o.Group,{position:"right",mt:r.spacing,children:t(o.Button,{type:"submit",size:r.button.size,children:"Submit"})})]})})}function Mt({styles:n=F,config:r,onSuccess:i}){return ne(r),t(L,{children:t(o.Box,{mt:n.spacing,sx:{position:"relative"},children:t(Bt,{styles:n,postSubmit:i})})})}const ie={size:"sm",spacing:"md",button:{size:"xs"}};function Ft({postSubmit:n,styles:r=ie,initialRoleID:i}){const{control:s,handleSubmit:u}=_.useForm({defaultValues:{name:"",role_id:i}}),l=async({name:c,role_id:f})=>{try{R.showNotification({id:"for-creating",title:"Pending",message:"Adding API Key...",loading:!0});const{app_id:g,app_secret:w}=await j.api_key.create(c,f);R.updateNotification({id:"for-creating",title:"Successful",message:"API Key is added",color:"green"}),n(g,w)}catch(g){R.updateNotification({id:"for-creating",title:"Failed",message:g.message,color:"red"})}};return t(o.Box,{mx:"auto",children:v("form",{onSubmit:u(l),children:[t(_.Controller,{name:"name",control:s,render:({field:c})=>t(o.TextInput,{mb:r.spacing,size:r.size,required:!0,label:"Name",...c})}),t(_.Controller,{name:"role_id",control:s,render:({field:c})=>t(de,{styles:r,...c})}),t(o.Group,{position:"right",mt:r.spacing,children:t(o.Button,{type:"submit",size:r.button.size,children:"Save"})})]})})}function Oe({onSuccess:n,styles:r=ie,initialRoleID:i}){const s=K.useModals(),[u,l]=E.useState(!1),c=()=>l(!0),f=()=>l(!1),g=(w,p)=>{f(),s.openModal({title:"API Key is generated",children:v(o.Stack,{children:[t(o.Text,{color:"dimmed",children:"Make sure you save it - you won't be able to access it again."}),t(o.TextInput,{defaultValue:w,disabled:!0,label:"APP ID",styles:{input:{cursor:"text !important"}}}),t(o.TextInput,{defaultValue:p,disabled:!0,label:"APP Secret",styles:{input:{cursor:"text !important"}}}),t(o.Button,{size:"sm",onClick:()=>{K.closeAllModals()},children:"I've saved this API Key"})]}),onClose:()=>{n()}})};return v(L,{children:[t(o.Modal,{overflow:"inside",opened:u,onClose:()=>l(!1),title:"Add an API Key",trapFocus:!0,onDragStart:w=>{w.stopPropagation()},children:t(Ft,{postSubmit:g,styles:r,initialRoleID:i})}),t(o.Button,{size:r.button.size,onClick:c,leftIcon:t(N.PlaylistAdd,{size:20}),children:"Add an API Key"})]})}function ze({id:n,name:r,onSuccess:i,styles:s=ie}){const u=K.useModals(),l=async()=>{if(n){R.showNotification({id:"for-deleting",title:"Pending",message:"Deleting API Key...",loading:!0});try{await j.api_key.delete(n),R.updateNotification({id:"for-deleting",title:"Successful",message:`API Key [${r}] is deleted`,color:"green"}),i()}catch(f){R.updateNotification({id:"for-deleting",title:"Failed",message:f.message,color:"red"})}}},c=()=>u.openConfirmModal({title:"Delete this api-key?",labels:{confirm:"Confirm",cancel:"Cancel"},onCancel:()=>console.log("Cancel"),onConfirm:l});return t(o.Button,{size:s.button.size,color:"red",onClick:c,leftIcon:t(N.Trash,{size:20}),children:"Delete"})}function $t({styles:n=ie,config:r}){var w;ne(r);const{data:i=[],loading:s,refresh:u}=U.useRequest(async()=>{const{data:p}=await j.api_key.list();return p},{refreshDeps:[]}),{data:l=[],loading:c}=U.useRequest(async()=>(await j.role.list()).map(m=>({label:m.name,value:m.id,description:m.description,disabled:m.id===50})),{refreshDeps:[]}),f=E.useMemo(()=>l.reduce((p,m)=>(p.set(m.value,m.label),p),new Map),[l]),g=p=>f.get(p)??p;return v(L,{children:[t(o.Group,{pt:n.spacing,position:"right",children:t(Oe,{onSuccess:u,initialRoleID:((w=l==null?void 0:l[0])==null?void 0:w.value)??0})}),v(o.Box,{mt:n.spacing,sx:{position:"relative"},children:[t(o.LoadingOverlay,{visible:s||c}),v(o.Table,{horizontalSpacing:n.spacing,verticalSpacing:n.spacing,fontSize:n.size,highlightOnHover:!0,children:[t("thead",{children:v("tr",{children:[t("th",{children:"Name"}),t("th",{children:"APP ID"}),t("th",{children:"Role"}),t("th",{children:"Action"})]})}),t("tbody",{children:i.map(p=>{const{id:m,name:C,app_id:I,role_id:q}=p;return v("tr",{children:[t("td",{width:200,children:C}),t("td",{width:200,children:I}),t("td",{width:200,children:g(q)}),t("td",{width:200,children:t(o.Group,{position:"left",children:t(ze,{id:m,name:C,onSuccess:u})})})]},m)})})]})]})]})}const Ut=()=>Promise.resolve().then(()=>Vt).then(({version:n})=>(console.log(`[@devtable/dashboard] version: ${n}`),n)),Ae="@devtable/settings-form",De="9.4.0",je="Apache-2.0",Ie={access:"public",registry:"https://registry.npmjs.org/"},ke=["dist"],qe="./dist/settings-form.umd.js",Ne="./dist/settings-form.es.js",Le="./dist/index.d.ts",Be={".":{import:"./dist/settings-form.es.js",require:"./dist/settings-form.umd.js"},"./dist/style.css":{import:"./dist/style.css",require:"./dist/style.css"}},Me={"dev-build":"tsc && vite build --watch",build:"tsc && vite build",preview:"vite preview"},Fe={"@monaco-editor/react":"4.4.6","monaco-editor":"0.36.0"},$e={"@emotion/babel-plugin":"11.10.6","@types/crypto-js":"v4.1.1","@types/lodash":"^4.14.182","@types/react":"^18.0.0","@types/react-dom":"^18.0.0","@types/react-grid-layout":"^1.3.2","rollup-plugin-visualizer":"5.6.0",typescript:"^4.6.3","vite-plugin-static-copy":"0.13.1"},Ue={"@emotion/react":"11.10.6","@mantine/core":"5.9.5","@mantine/hooks":"5.9.5","@mantine/modals":"5.9.5","@mantine/notifications":"5.9.5",ahooks:"^3.3.11",axios:"^0.27.2","crypto-js":"^4.1.1",lodash:"^4.17.21",react:"^16.8.0 || 17.x || 18.x","react-dom":"^16.8.0 || 17.x || 18.x","react-hook-form":"^7.31.2","tabler-icons-react":"^1.48.0"},Vt=Object.freeze(Object.defineProperty({__proto__:null,default:{name:Ae,version:De,license:je,publishConfig:Ie,files:ke,main:qe,module:Ne,types:Le,exports:Be,scripts:Me,dependencies:Fe,devDependencies:$e,peerDependencies:Ue},dependencies:Fe,devDependencies:$e,exports:Be,files:ke,license:je,main:qe,module:Ne,name:Ae,peerDependencies:Ue,publishConfig:Ie,scripts:Me,types:Le,version:De},Symbol.toStringTag,{value:"Module"}));P.APIKeyList=$t,P.AccountList=Lt,P.AddAPIKey=Oe,P.AddAccount=Ee,P.AddDataSource=Te,P.DataSourceList=jt,P.DeleteAPIKey=ze,P.DeleteAccount=xe,P.DeleteDataSource=Re,P.Login=Mt,P.getVersion=Ut,Object.defineProperty(P,Symbol.toStringTag,{value:"Module"})});
|