@devtable/settings-form 8.56.0 → 8.57.1

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.
@@ -1,3 +1,3 @@
1
- (function(m,q){typeof exports=="object"&&typeof module<"u"?q(exports,require("/Users/leto/Merico/merico-dev/table/node_modules/react/jsx-runtime.js"),require("@mantine/core"),require("@mantine/notifications"),require("react"),require("tabler-icons-react"),require("axios"),require("crypto-js"),require("lodash"),require("react-hook-form"),require("ahooks"),require("@monaco-editor/react"),require("@mantine/modals")):typeof define=="function"&&define.amd?define(["exports","/Users/leto/Merico/merico-dev/table/node_modules/react/jsx-runtime.js","@mantine/core","@mantine/notifications","react","tabler-icons-react","axios","crypto-js","lodash","react-hook-form","ahooks","@monaco-editor/react","@mantine/modals"],q):(m=typeof globalThis<"u"?globalThis:m||self,q(m["settings-form"]={},m["/Users/leto/Merico/merico-dev/table/node_modules/react/jsx-runtime"].js,m["@mantine/core"],m["@mantine/notifications"],m.react,m["tabler-icons-react"],m.axios,m.CryptoJS,m._,m["react-hook-form"],m.ahooks,m["@monaco-editor/react"],m["@mantine/modals"]))})(this,function(m,q,r,b,z,P,oe,se,le,h,x,I,D){"use strict";function k(t){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const i in t)if(i!=="default"){const a=Object.getOwnPropertyDescriptor(t,i);Object.defineProperty(n,i,a.get?a:{enumerable:!0,get:()=>t[i]})}}return n.default=t,Object.freeze(n)}const B=k(q),O=k(z),C=B.Fragment,e=B.jsx,d=B.jsxs;function ce(t){t=t||{};const n=Object.keys(t).sort(),i=[];for(let a=0;a<n.length;a++){const l=n[a];if(l!="authentication"&&t[l])i.push(n[a]+"="+(typeof t[l]=="object"?JSON.stringify(t[l]):t[l]));else{const o=Object.keys(t[l]).sort();for(let s=0;s<o.length;s++){const c=o[s];c!="sign"&&t[l][c]&&i.push(o[s]+"="+(typeof t[l][c]=="object"?JSON.stringify(t[l][c]):t[l][c]))}}}return i.sort().join("&")}function de(t,n){let i=ce(t);return i+="&key="+n,se.MD5(i).toString().toUpperCase()}const S={baseURL:"http://localhost:31200",app_id:"",app_secret:"",getAuthentication(t){if(!this.app_id||!this.app_secret)return;const n=new Date().getTime().toString();return{app_id:this.app_id,nonce_str:n,sign:de({app_id:this.app_id,nonce_str:n,...t},this.app_secret)}},getRequest(t){return(n,i,a={})=>{const l=window.localStorage.getItem("token"),o={"X-Requested-With":"XMLHttpRequest","Content-Type":a.string?"application/x-www-form-urlencoded":"application/json",authorization:l?`bearer ${l}`:"",...a.headers},s={baseURL:this.baseURL,method:t,url:n,params:t==="GET"?i:a.params,headers:o};return["POST","PUT"].includes(t)&&(s.data=a.string?JSON.stringify(i):i,s.data.authentication=this.getAuthentication(s.data)),oe(s).then(c=>c.data).catch(c=>le.has(c,"response.data.detail.message")?Promise.reject(new Error(c.response.data.detail.message)):Promise.reject(c))}}};function j(t){S.baseURL!==t.apiBaseURL&&(S.baseURL=t.apiBaseURL),t.app_id&&(S.app_id=t.app_id),t.app_secret&&(S.app_secret=t.app_secret)}const v={datasource:{list:async()=>await S.getRequest("POST")("/datasource/list",{filter:{},sort:[{field:"create_time",order:"ASC"}],pagination:{page:1,pagesize:100}}),create:async(t,n,i)=>await S.getRequest("POST")("/datasource/create",{type:t,key:n,config:i}),delete:async t=>{await S.getRequest("POST")("/datasource/delete",{id:t})}},account:{login:async(t,n)=>{const i={name:t,password:n};return await S.getRequest("POST")("/account/login",i)},list:async()=>await S.getRequest("POST")("/account/list",{filter:{},sort:[{field:"name",order:"ASC"}],pagination:{page:1,pagesize:100}}),get:async()=>await S.getRequest("GET")("/account/get",{}),update:async(t,n)=>{const i={name:t,email:n};return await S.getRequest("PUT")("/account/update",i)},changepassword:async(t,n)=>{const i={old_password:t,new_password:n};return await S.getRequest("POST")("/account/changepassword",i)},create:async(t,n,i,a)=>await S.getRequest("POST")("/account/create",{name:t,email:n,password:i,role_id:a}),edit:async t=>(t.reset_password||(t.new_password=void 0),await S.getRequest("PUT")("/account/edit",t)),delete:async t=>{if(t)return S.getRequest("POST")("/account/delete",{id:t})}},role:{list:async()=>await S.getRequest("GET")("/role/list",{})},api_key:{list:async()=>await S.getRequest("POST")("/api/key/list",{filter:{search:""},sort:[{field:"name",order:"ASC"}],pagination:{page:1,pagesize:100}}),create:async(t,n)=>S.getRequest("POST")("/api/key/create",{name:t,role_id:n}),delete:async t=>{if(t)return S.getRequest("POST")("/api/key/delete",{id:t})}}},T={size:"sm",spacing:"md",button:{size:"xs"}};function ue({submit:t,styles:n=T,type:i}){const{control:a,setValue:l,handleSubmit:o}=h.useForm({defaultValues:{type:i,key:"",config:{host:"",port:5432,username:"",password:"",database:""}}});return z.useEffect(()=>{l("type",i)},[l,i]),e(r.Box,{mx:"auto",children:d("form",{onSubmit:o(t),children:[e(h.Controller,{name:"key",control:a,render:({field:s})=>e(r.TextInput,{mb:n.spacing,size:n.size,required:!0,label:"Name",placeholder:"A unique name",...s})}),e(r.Divider,{label:"Connection Info",labelPosition:"center"}),d(r.Group,{grow:!0,children:[e(h.Controller,{name:"config.host",control:a,render:({field:s})=>e(r.TextInput,{mb:n.spacing,size:n.size,required:!0,label:"Host",sx:{flexGrow:1},...s})}),e(h.Controller,{name:"config.port",control:a,render:({field:s})=>e(r.NumberInput,{mb:n.spacing,size:n.size,required:!0,label:"Port",hideControls:!0,sx:{width:"8em"},...s})})]}),e(h.Controller,{name:"config.username",control:a,render:({field:s})=>e(r.TextInput,{mb:n.spacing,size:n.size,required:!0,label:"Username",...s})}),e(h.Controller,{name:"config.password",control:a,render:({field:s})=>e(r.PasswordInput,{mb:n.spacing,size:n.size,required:!0,label:"Password",...s})}),e(h.Controller,{name:"config.database",control:a,render:({field:s})=>e(r.TextInput,{mb:n.spacing,size:n.size,required:!0,label:"Database",...s})}),e(r.Group,{position:"right",mt:n.spacing,children:e(r.Button,{type:"submit",size:n.button.size,children:"Save"})})]})})}const pe=({value:t,onChange:n})=>{const i=a=>{a&&n(a)};return e(r.Box,{sx:{position:"relative"},children:e(I,{height:"500px",defaultLanguage:"javascript",value:t,onChange:i,theme:"vs-dark",options:{minimap:{enabled:!1}}})})},E=z.forwardRef(({value:t,onChange:n,label:i,modalTitle:a,defaultValue:l,styles:o},s)=>{const[c,{setTrue:p,setFalse:f}]=x.useBoolean(),[u,g]=z.useState(t),w=()=>{f(),n(u)},y=()=>{f(),g(t)},_=()=>{g(l)};return z.useEffect(()=>{g(t)},[t]),d(C,{children:[e(r.Button,{variant:"filled",size:o.button.size,onClick:p,sx:{flexGrow:1},children:i}),e(r.Modal,{size:800,title:a,opened:c,onClose:f,closeOnClickOutside:!1,withCloseButton:!1,children:c&&d(r.Stack,{children:[e(pe,{value:u,onChange:g}),d(r.Group,{position:"apart",children:[e(r.Button,{onClick:_,color:"red",leftIcon:e(P.Recycle,{size:20}),children:"Rest"}),d(r.Group,{position:"right",children:[e(r.Button,{onClick:y,variant:"subtle",children:"Cancel"}),e(r.Button,{onClick:w,children:"OK"})]})]})]})})]})}),R={pre:["function pre_process({ method, url, params, headers, data }, utils) {"," // your code goes here"," return { method, url, params, headers, data }","}"].join(`
1
+ (function(m,i){typeof exports=="object"&&typeof module<"u"?i(exports,require("@mantine/core"),require("@mantine/notifications"),require("react"),require("tabler-icons-react"),require("axios"),require("crypto-js"),require("lodash"),require("react-hook-form"),require("../../node_modules/react/jsx-runtime.js"),require("ahooks"),require("@monaco-editor/react"),require("@mantine/modals")):typeof define=="function"&&define.amd?define(["exports","@mantine/core","@mantine/notifications","react","tabler-icons-react","axios","crypto-js","lodash","react-hook-form","../../node_modules/react/jsx-runtime","ahooks","@monaco-editor/react","@mantine/modals"],i):(m=typeof globalThis<"u"?globalThis:m||self,i(m["settings-form"]={},m["@mantine/core"],m["@mantine/notifications"],m.react,m["tabler-icons-react"],m.axios,m.CryptoJS,m._,m["react-hook-form"],m["/Users/leto/Merico/merico-dev/table/node_modules/react/jsx-runtime"].js,m.ahooks,m["@monaco-editor/react"],m["@mantine/modals"]))})(this,function(m,i,b,v,P,le,ce,de,h,ue,A,j,q){"use strict";const D=t=>t&&typeof t=="object"&&"default"in t?t:{default:t};function G(t){if(t&&t.__esModule)return t;const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const r in t)if(r!=="default"){const a=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(n,r,a.get?a:{enumerable:!0,get:()=>t[r]})}}return n.default=t,Object.freeze(n)}const R=D(v),O=G(v),pe=D(le),ge=D(ce),he=D(de),M=G(ue),me=D(j);function fe(t){t=t||{};const n=Object.keys(t).sort(),r=[];for(let a=0;a<n.length;a++){const l=n[a];if(l!="authentication"&&t[l])r.push(n[a]+"="+(typeof t[l]=="object"?JSON.stringify(t[l]):t[l]));else{const o=Object.keys(t[l]).sort();for(let s=0;s<o.length;s++){const c=o[s];c!="sign"&&t[l][c]&&r.push(o[s]+"="+(typeof t[l][c]=="object"?JSON.stringify(t[l][c]):t[l][c]))}}}return r.sort().join("&")}function be(t,n){let r=fe(t);return r+="&key="+n,ge.default.MD5(r).toString().toUpperCase()}const w={baseURL:"http://localhost:31200",app_id:"",app_secret:"",getAuthentication(t){if(!this.app_id||!this.app_secret)return;const n=new Date().getTime().toString();return{app_id:this.app_id,nonce_str:n,sign:be({app_id:this.app_id,nonce_str:n,...t},this.app_secret)}},getRequest(t){return(n,r,a={})=>{const l=window.localStorage.getItem("token"),o={"X-Requested-With":"XMLHttpRequest","Content-Type":a.string?"application/x-www-form-urlencoded":"application/json",authorization:l?`bearer ${l}`:"",...a.headers},s={baseURL:this.baseURL,method:t,url:n,params:t==="GET"?r:a.params,headers:o};return["POST","PUT"].includes(t)&&(s.data=a.string?JSON.stringify(r):r,s.data.authentication=this.getAuthentication(s.data)),pe.default(s).then(c=>c.data).catch(c=>he.default.has(c,"response.data.detail.message")?Promise.reject(new Error(c.response.data.detail.message)):Promise.reject(c))}}};function N(t){w.baseURL!==t.apiBaseURL&&(w.baseURL=t.apiBaseURL),t.app_id&&(w.app_id=t.app_id),t.app_secret&&(w.app_secret=t.app_secret)}const z={datasource:{list:async()=>await w.getRequest("POST")("/datasource/list",{filter:{},sort:[{field:"create_time",order:"ASC"}],pagination:{page:1,pagesize:100}}),create:async(t,n,r)=>await w.getRequest("POST")("/datasource/create",{type:t,key:n,config:r}),delete:async t=>{await w.getRequest("POST")("/datasource/delete",{id:t})}},account:{login:async(t,n)=>{const r={name:t,password:n};return await w.getRequest("POST")("/account/login",r)},list:async()=>await w.getRequest("POST")("/account/list",{filter:{},sort:[{field:"name",order:"ASC"}],pagination:{page:1,pagesize:100}}),get:async()=>await w.getRequest("GET")("/account/get",{}),update:async(t,n)=>{const r={name:t,email:n};return await w.getRequest("PUT")("/account/update",r)},changepassword:async(t,n)=>{const r={old_password:t,new_password:n};return await w.getRequest("POST")("/account/changepassword",r)},create:async(t,n,r,a)=>await w.getRequest("POST")("/account/create",{name:t,email:n,password:r,role_id:a}),edit:async t=>(t.reset_password||(t.new_password=void 0),await w.getRequest("PUT")("/account/edit",t)),delete:async t=>{if(!!t)return w.getRequest("POST")("/account/delete",{id:t})}},role:{list:async()=>await w.getRequest("GET")("/role/list",{})},api_key:{list:async()=>await w.getRequest("POST")("/api/key/list",{filter:{search:""},sort:[{field:"name",order:"ASC"}],pagination:{page:1,pagesize:100}}),create:async(t,n)=>w.getRequest("POST")("/api/key/create",{name:t,role_id:n}),delete:async t=>{if(!!t)return w.getRequest("POST")("/api/key/delete",{id:t})}}},x={size:"sm",spacing:"md",button:{size:"xs"}},y=M.Fragment,e=M.jsx,u=M.jsxs;function we({submit:t,styles:n=x,type:r}){const{control:a,setValue:l,handleSubmit:o}=h.useForm({defaultValues:{type:r,key:"",config:{host:"",port:5432,username:"",password:"",database:""}}});return v.useEffect(()=>{l("type",r)},[l,r]),e(i.Box,{mx:"auto",children:u("form",{onSubmit:o(t),children:[e(h.Controller,{name:"key",control:a,render:({field:s})=>e(i.TextInput,{mb:n.spacing,size:n.size,required:!0,label:"Name",placeholder:"A unique name",...s})}),e(i.Divider,{label:"Connection Info",labelPosition:"center"}),u(i.Group,{grow:!0,children:[e(h.Controller,{name:"config.host",control:a,render:({field:s})=>e(i.TextInput,{mb:n.spacing,size:n.size,required:!0,label:"Host",sx:{flexGrow:1},...s})}),e(h.Controller,{name:"config.port",control:a,render:({field:s})=>e(i.NumberInput,{mb:n.spacing,size:n.size,required:!0,label:"Port",hideControls:!0,sx:{width:"8em"},...s})})]}),e(h.Controller,{name:"config.username",control:a,render:({field:s})=>e(i.TextInput,{mb:n.spacing,size:n.size,required:!0,label:"Username",...s})}),e(h.Controller,{name:"config.password",control:a,render:({field:s})=>e(i.PasswordInput,{mb:n.spacing,size:n.size,required:!0,label:"Password",...s})}),e(h.Controller,{name:"config.database",control:a,render:({field:s})=>e(i.TextInput,{mb:n.spacing,size:n.size,required:!0,label:"Database",...s})}),e(i.Group,{position:"right",mt:n.spacing,children:e(i.Button,{type:"submit",size:n.button.size,children:"Save"})})]})})}const Se=({value:t,onChange:n})=>{const r=a=>{!a||n(a)};return e(i.Box,{sx:{position:"relative"},children:e(me.default,{height:"500px",defaultLanguage:"javascript",value:t,onChange:r,theme:"vs-dark",options:{minimap:{enabled:!1}}})})},U=v.forwardRef(({value:t,onChange:n,label:r,modalTitle:a,defaultValue:l,styles:o},s)=>{const[c,{setTrue:p,setFalse:f}]=A.useBoolean(),[S,g]=v.useState(t),d=()=>{f(),n(S)},C=()=>{f(),g(t)},T=()=>{g(l)};return v.useEffect(()=>{g(t)},[t]),u(y,{children:[e(i.Button,{variant:"filled",size:o.button.size,onClick:p,sx:{flexGrow:1},children:r}),e(i.Modal,{size:800,title:a,opened:c,onClose:f,closeOnClickOutside:!1,withCloseButton:!1,children:c&&u(i.Stack,{children:[e(Se,{value:S,onChange:g}),u(i.Group,{position:"apart",children:[e(i.Button,{onClick:T,color:"red",leftIcon:e(P.Recycle,{size:20}),children:"Rest"}),u(i.Group,{position:"right",children:[e(i.Button,{onClick:C,variant:"subtle",children:"Cancel"}),e(i.Button,{onClick:d,children:"OK"})]})]})]})})]})}),B={pre:["function pre_process({ method, url, params, headers, data }, utils) {"," // your code goes here"," return { method, url, params, headers, data }","}"].join(`
2
2
  `),post:["function post_process(res, utils) {"," // your code goes here"," return data","}"].join(`
3
- `)};function ge({submit:t,styles:n=T}){const{control:i,setValue:a,handleSubmit:l}=h.useForm({defaultValues:{type:"http",key:"",config:{host:"",processing:{pre:R.pre,post:R.post}}}});return e(r.Box,{mx:"auto",children:d("form",{onSubmit:l(t),children:[e(h.Controller,{name:"key",control:i,render:({field:o})=>e(r.TextInput,{mb:n.spacing,size:n.size,required:!0,label:"Name",placeholder:"A unique name",...o})}),e(r.Divider,{label:"Connection Info",labelPosition:"center"}),e(h.Controller,{name:"config.host",control:i,render:({field:o})=>e(r.TextInput,{mb:n.spacing,size:n.size,required:!0,label:"Base URL",sx:{flexGrow:1},...o})}),d(r.Group,{grow:!0,children:[e(h.Controller,{name:"config.processing.pre",control:i,render:({field:o})=>e(E,{label:"Pre Processing",modalTitle:"This function will run before sending the request (for scenarios like encryption)",defaultValue:R.pre,...o,styles:n})}),e(h.Controller,{name:"config.processing.post",control:i,render:({field:o})=>e(E,{label:"Post Processing",modalTitle:"This function will run after sending the request (for scenarios like decryption)",defaultValue:R.post,...o,styles:n})})]}),e(r.Group,{position:"right",mt:n.spacing,children:e(r.Button,{type:"submit",size:n.button.size,children:"Save"})})]})})}function he({styles:t=T}){return e(r.Box,{mx:"auto",children:d(r.Alert,{mt:t.spacing,icon:e(P.AlertCircle,{size:16}),children:["Only ",e("b",{children:"SELECT"})," privilege is needed."]})})}function me({postSubmit:t,styles:n=T}){const[i,a]=z.useState("postgresql"),l=async({type:c,key:p,config:f})=>{b.showNotification({id:"for-creating",title:"Pending",message:"Adding data source...",loading:!0});try{console.log({type:c,key:p,config:f}),await v.datasource.create(c,p,f),b.updateNotification({id:"for-creating",title:"Successful",message:"Data source is added",color:"green"}),t()}catch(u){b.updateNotification({id:"for-creating",title:"Failed",message:u.message,color:"red"})}},o=i==="postgresql"||i==="mysql",s=i==="http";return d(r.Box,{mx:"auto",children:[e(r.SegmentedControl,{fullWidth:!0,mb:n.spacing,size:n.size,data:[{label:"PostgreSQL",value:"postgresql"},{label:"MySQL",value:"mysql"},{label:"HTTP",value:"http"}],value:i,onChange:c=>a(c)}),o&&e(he,{styles:n}),o&&e(ue,{submit:l,styles:n,type:i}),s&&e(ge,{submit:l,styles:n})]})}function G({onSuccess:t,styles:n=T}){const[i,a]=z.useState(!1),l=()=>a(!0),o=()=>a(!1),s=()=>{t(),o()};return d(C,{children:[e(r.Modal,{overflow:"inside",opened:i,onClose:()=>a(!1),title:"Add a data source",trapFocus:!0,onDragStart:c=>{c.stopPropagation()},children:e(me,{postSubmit:s,styles:n})}),e(r.Button,{size:n.button.size,onClick:l,leftIcon:e(P.PlaylistAdd,{size:20}),children:"Add a Data Source"})]})}const fe=t=>t.replace(/([^:])(\/\/+)/g,"$1/");function be(t){z.useEffect(()=>{if(I.loader.__getMonacoInstance())return;console.log("loading monaco for @devtable/settings-form");const i=fe(t);I.loader.config({paths:{vs:i}}),I.loader.init().then(a=>console.log("monaco instance:",a))},[])}function L(){return L=Object.assign?Object.assign.bind():function(t){for(var n=1;n<arguments.length;n++){var i=arguments[n];for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(t[a]=i[a])}return t},L.apply(this,arguments)}function we(t,n){if(t==null)return{};var i,a,l=function(s,c){if(s==null)return{};var p,f,u={},g=Object.keys(s);for(f=0;f<g.length;f++)p=g[f],c.indexOf(p)>=0||(u[p]=s[p]);return u}(t,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(a=0;a<o.length;a++)i=o[a],n.indexOf(i)>=0||Object.prototype.propertyIsEnumerable.call(t,i)&&(l[i]=t[i])}return l}var Se=["size","color","stroke"];function ze(t){var n=t.size,i=n===void 0?24:n,a=t.color,l=a===void 0?"currentColor":a,o=t.stroke,s=o===void 0?2:o,c=we(t,Se);return O.createElement("svg",L({xmlns:"http://www.w3.org/2000/svg",className:"icon icon-tabler icon-tabler-lock",width:i,height:i,viewBox:"0 0 24 24",strokeWidth:s,stroke:l,fill:"none",strokeLinecap:"round",strokeLinejoin:"round"},c),O.createElement("path",{stroke:"none",d:"M0 0h24v24H0z",fill:"none"}),O.createElement("rect",{x:5,y:11,width:14,height:10,rx:2}),O.createElement("circle",{cx:12,cy:16,r:1}),O.createElement("path",{d:"M8 11v-4a4 4 0 0 1 8 0v4"}))}function U({id:t,name:n,isProtected:i,onSuccess:a,styles:l=T}){const o=D.useModals(),s=async()=>{t&&(b.showNotification({id:"for-deleting",title:"Pending",message:"Deleting data source...",loading:!0}),await v.datasource.delete(t),b.updateNotification({id:"for-deleting",title:"Successful",message:`Data source [${n}] is deleted`,color:"green"}),a())},c=()=>o.openConfirmModal({title:"Delete this data source?",children:e(r.Text,{size:l.size,children:"This action won't affect your database."}),labels:{confirm:"Confirm",cancel:"Cancel"},onCancel:()=>console.log("Cancel"),onConfirm:s}),p=r.useMantineTheme();return i?e(r.Tooltip,{withArrow:!0,events:{hover:!0,touch:!1,focus:!1},label:"This is a preset datasource, it can not be deleted",children:e("span",{children:e(ze,{size:16,color:p.colors.gray[7]})})}):e(r.Button,{size:l.button.size,color:"red",onClick:c,leftIcon:e(P.Trash,{size:20}),children:"Delete"})}function ve({styles:t=T,config:n}){be(n.monacoPath),j(n);const{data:i=[],loading:a,refresh:l}=x.useRequest(async()=>{const{data:o}=await v.datasource.list();return o},{refreshDeps:[]});return d(C,{children:[e(r.Group,{pt:t.spacing,position:"right",children:e(G,{onSuccess:l})}),d(r.Box,{mt:t.spacing,sx:{position:"relative"},children:[e(r.LoadingOverlay,{visible:a}),d(r.Table,{horizontalSpacing:t.spacing,verticalSpacing:t.spacing,fontSize:t.size,highlightOnHover:!0,children:[e("thead",{children:d("tr",{children:[e("th",{children:"Type"}),e("th",{children:"Name"}),e("th",{children:"Action"})]})}),e("tbody",{children:i.map(({id:o,key:s,type:c,is_preset:p})=>d("tr",{children:[e("td",{width:200,children:c}),e("td",{children:s}),e("td",{width:200,children:e(r.Group,{position:"left",children:e(U,{isProtected:p,id:o,name:s,onSuccess:l})})})]},s))})]})]})]})}const Pe=z.forwardRef(({label:t,value:n,description:i,...a},l)=>d(r.Stack,{spacing:2,ref:l,...a,children:[e(r.Text,{size:"sm",children:t}),e(r.Text,{size:"xs",color:"dimmed",className:"role-description",children:i})]})),M=z.forwardRef(({styles:t,value:n,onChange:i},a)=>{const{data:l=[],loading:o}=x.useRequest(async()=>(await v.role.list()).map(c=>({label:c.name,value:c.id,description:c.description,disabled:c.id===50})),{refreshDeps:[]});return e(r.Select,{ref:a,mb:t.spacing,size:t.size,required:!0,label:"Role",itemComponent:Pe,data:l,disabled:o,styles:()=>({item:{"&[data-selected]":{"&, &:hover":{".role-description":{color:"rgba(255,255,255,.8)"}}}}}),value:n,onChange:i})}),A={size:"sm",spacing:"md",button:{size:"xs"}};function Ce({postSubmit:t,styles:n=A,initialRoleID:i}){const{control:a,handleSubmit:l}=h.useForm({defaultValues:{name:"",email:"",role_id:i,password:""}}),o=async({name:s,email:c,password:p,role_id:f})=>{try{b.showNotification({id:"for-creating",title:"Pending",message:"Adding account...",loading:!0}),await v.account.create(s,c,p,f),b.updateNotification({id:"for-creating",title:"Successful",message:"Account is added",color:"green"}),t()}catch(u){b.updateNotification({id:"for-creating",title:"Failed",message:u.message,color:"red"})}};return e(r.Box,{mx:"auto",children:d("form",{onSubmit:l(o),children:[e(h.Controller,{name:"name",control:a,render:({field:s})=>e(r.TextInput,{mb:n.spacing,size:n.size,required:!0,label:"Username",...s})}),e(h.Controller,{name:"email",control:a,render:({field:s})=>e(r.TextInput,{mb:n.spacing,size:n.size,required:!0,label:"Email",...s})}),e(h.Controller,{name:"password",control:a,render:({field:s})=>e(r.PasswordInput,{mb:n.spacing,size:n.size,required:!0,label:"Password",description:"Password must be at least 8 characters long",...s})}),e(h.Controller,{name:"role_id",control:a,render:({field:s})=>e(M,{styles:n,...s})}),e(r.Group,{position:"right",mt:n.spacing,children:e(r.Button,{type:"submit",size:n.button.size,children:"Save"})})]})})}function K({onSuccess:t,styles:n=A,initialRoleID:i}){const[a,l]=z.useState(!1),o=()=>l(!0),s=()=>l(!1),c=()=>{t(),s()};return d(C,{children:[e(r.Modal,{overflow:"inside",opened:a,onClose:()=>l(!1),title:"Add an Account",trapFocus:!0,onDragStart:p=>{p.stopPropagation()},children:e(Ce,{postSubmit:c,styles:n,initialRoleID:i})}),e(r.Button,{size:n.button.size,onClick:o,leftIcon:e(P.PlaylistAdd,{size:20}),children:"Add an Account"})]})}function V({id:t,name:n,onSuccess:i,styles:a=A}){const l=D.useModals(),o=async()=>{if(t){b.showNotification({id:"for-deleting",title:"Pending",message:"Deleting account...",loading:!0});try{await v.account.delete(t),b.updateNotification({id:"for-deleting",title:"Successful",message:`Account [${n}] is deleted`,color:"green"}),i()}catch(c){b.updateNotification({id:"for-deleting",title:"Failed",message:c.message,color:"red"})}}},s=()=>l.openConfirmModal({title:"Delete this account?",labels:{confirm:"Confirm",cancel:"Cancel"},onCancel:()=>console.log("Cancel"),onConfirm:o});return e(r.Button,{size:a.button.size,color:"red",onClick:s,leftIcon:e(P.Trash,{size:20}),children:"Delete"})}function ye({id:t,name:n,email:i,role_id:a,postSubmit:l,styles:o=A}){const{control:s,handleSubmit:c,watch:p}=h.useForm({defaultValues:{name:n,email:i,role_id:a,reset_password:!1,new_password:""}}),f=async({name:w,email:y,role_id:_,reset_password:je,new_password:Re})=>{try{b.showNotification({id:"for-updating",title:"Pending",message:"Updating account...",loading:!0}),await v.account.edit({id:t,name:w,email:y,role_id:_,reset_password:je,new_password:Re}),b.updateNotification({id:"for-updating",title:"Successful",message:"Account is updated",color:"green"}),l()}catch(Ne){b.updateNotification({id:"for-updating",title:"Failed",message:Ne.message,color:"red"})}},[u,g]=p(["reset_password","new_password"]);return e(r.Box,{mx:"auto",children:d("form",{onSubmit:c(f),children:[e(h.Controller,{name:"name",control:s,render:({field:w})=>e(r.TextInput,{mb:o.spacing,size:o.size,required:!0,label:"Username",...w})}),e(h.Controller,{name:"email",control:s,render:({field:w})=>e(r.TextInput,{mb:o.spacing,size:o.size,required:!0,label:"Email",...w})}),e(h.Controller,{name:"role_id",control:s,render:({field:w})=>e(M,{styles:o,...w})}),e(r.Divider,{my:20,variant:"dashed",label:"",labelPosition:"center"}),e(h.Controller,{name:"reset_password",control:s,render:({field:w})=>e(r.Switch,{mb:o.spacing,size:o.size,label:"Reset password",checked:w.value,onChange:y=>w.onChange(y.currentTarget.checked),styles:{label:{verticalAlign:"middle"}}})}),u&&e(h.Controller,{name:"new_password",control:s,render:({field:w})=>e(r.PasswordInput,{autoComplete:"off",mb:o.spacing,size:o.size,required:!0,description:"Password must be at least 8 characters long",label:"New Password",...w})}),e(r.Group,{position:"right",mt:o.spacing,children:e(r.Button,{type:"submit",size:o.button.size,children:"Submit"})})]})})}function Ae({account:t,onSuccess:n,styles:i=A}){const[a,l]=z.useState(!1),o=()=>l(!0),s=()=>l(!1),c=()=>{n(),s()};return d(C,{children:[e(r.Modal,{overflow:"inside",opened:a,onClose:()=>l(!1),title:`Editing ${t.name}`,trapFocus:!0,onDragStart:p=>{p.stopPropagation()},children:e(ye,{...t,postSubmit:c,styles:i})}),e(r.Button,{size:i.button.size,onClick:o,leftIcon:e(P.Edit,{size:20}),children:"Edit"})]})}function xe({styles:t=A,config:n}){var f;j(n);const{data:i=[],loading:a,refresh:l}=x.useRequest(async()=>{const{data:u}=await v.account.list();return u},{refreshDeps:[]}),{data:o=[],loading:s}=x.useRequest(async()=>(await v.role.list()).map(g=>({label:g.name,value:g.id,description:g.description,disabled:g.id===50})),{refreshDeps:[]}),c=z.useMemo(()=>o.reduce((u,g)=>(u.set(g.value,g.label),u),new Map),[o]),p=u=>c.get(u)??u;return d(C,{children:[e(r.Group,{pt:t.spacing,position:"right",children:e(K,{onSuccess:l,initialRoleID:((f=o==null?void 0:o[0])==null?void 0:f.value)??0})}),d(r.Box,{mt:t.spacing,sx:{position:"relative"},children:[e(r.LoadingOverlay,{visible:a||s}),d(r.Table,{horizontalSpacing:t.spacing,verticalSpacing:t.spacing,fontSize:t.size,highlightOnHover:!0,children:[e("thead",{children:d("tr",{children:[e("th",{children:"Username"}),e("th",{children:"Email"}),e("th",{children:"Role"}),e("th",{children:"Action"})]})}),e("tbody",{children:i.map(u=>{const{id:g,name:w,email:y,role_id:_}=u;return d("tr",{children:[e("td",{width:200,children:w}),e("td",{width:200,children:y}),e("td",{width:200,children:p(_)}),e("td",{width:200,children:d(r.Group,{position:"left",children:[e(Ae,{account:u,onSuccess:l}),e(V,{id:g,name:w,onSuccess:l})]})})]},g)})})]})]})]})}function Te({postSubmit:t,styles:n=A}){const{control:i,handleSubmit:a}=h.useForm({defaultValues:{name:"",password:""}}),l=async({name:o,password:s})=>{try{b.showNotification({id:"for-login",title:"Pending",message:"Loggin in...",loading:!0});const c=await v.account.login(o,s);window.localStorage.setItem("token",c.token),b.updateNotification({id:"for-login",title:"Successful",message:"Logged in",color:"green"}),t(c)}catch(c){b.updateNotification({id:"for-login",title:"Login Failed",message:c.message,color:"red"})}};return e(r.Box,{mx:"auto",children:d("form",{onSubmit:a(l),children:[e(h.Controller,{name:"name",control:i,render:({field:o})=>e(r.TextInput,{mb:n.spacing,size:n.size,required:!0,label:"Username",...o})}),e(h.Controller,{name:"password",control:i,render:({field:o})=>e(r.PasswordInput,{mb:n.spacing,size:n.size,required:!0,label:"Password",...o})}),e(r.Group,{position:"right",mt:n.spacing,children:e(r.Button,{type:"submit",size:n.button.size,children:"Submit"})})]})})}function _e({styles:t=A,config:n,onSuccess:i}){return j(n),e(C,{children:e(r.Box,{mt:t.spacing,sx:{position:"relative"},children:e(Te,{styles:t,postSubmit:i})})})}const N={size:"sm",spacing:"md",button:{size:"xs"}};function qe({postSubmit:t,styles:n=N,initialRoleID:i}){const{control:a,handleSubmit:l}=h.useForm({defaultValues:{name:"",role_id:i}}),o=async({name:s,role_id:c})=>{try{b.showNotification({id:"for-creating",title:"Pending",message:"Adding API Key...",loading:!0});const{app_id:p,app_secret:f}=await v.api_key.create(s,c);b.updateNotification({id:"for-creating",title:"Successful",message:"API Key is added",color:"green"}),t(p,f)}catch(p){b.updateNotification({id:"for-creating",title:"Failed",message:p.message,color:"red"})}};return e(r.Box,{mx:"auto",children:d("form",{onSubmit:l(o),children:[e(h.Controller,{name:"name",control:a,render:({field:s})=>e(r.TextInput,{mb:n.spacing,size:n.size,required:!0,label:"Name",...s})}),e(h.Controller,{name:"role_id",control:a,render:({field:s})=>e(M,{styles:n,...s})}),e(r.Group,{position:"right",mt:n.spacing,children:e(r.Button,{type:"submit",size:n.button.size,children:"Save"})})]})})}function $({onSuccess:t,styles:n=N,initialRoleID:i}){const a=D.useModals(),[l,o]=z.useState(!1),s=()=>o(!0),c=()=>o(!1),p=(f,u)=>{c(),a.openModal({title:"API Key is generated",children:d(r.Stack,{children:[e(r.Text,{color:"dimmed",children:"Make sure you save it - you won't be able to access it again."}),e(r.TextInput,{defaultValue:f,disabled:!0,label:"APP ID",styles:{input:{cursor:"text !important"}}}),e(r.TextInput,{defaultValue:u,disabled:!0,label:"APP Secret",styles:{input:{cursor:"text !important"}}}),e(r.Button,{size:"sm",onClick:()=>{D.closeAllModals()},children:"I've saved this API Key"})]}),onClose:()=>{t()}})};return d(C,{children:[e(r.Modal,{overflow:"inside",opened:l,onClose:()=>o(!1),title:"Add an API Key",trapFocus:!0,onDragStart:f=>{f.stopPropagation()},children:e(qe,{postSubmit:p,styles:n,initialRoleID:i})}),e(r.Button,{size:n.button.size,onClick:s,leftIcon:e(P.PlaylistAdd,{size:20}),children:"Add an API Key"})]})}function F({id:t,name:n,onSuccess:i,styles:a=N}){const l=D.useModals(),o=async()=>{if(t){b.showNotification({id:"for-deleting",title:"Pending",message:"Deleting API Key...",loading:!0});try{await v.api_key.delete(t),b.updateNotification({id:"for-deleting",title:"Successful",message:`API Key [${n}] is deleted`,color:"green"}),i()}catch(c){b.updateNotification({id:"for-deleting",title:"Failed",message:c.message,color:"red"})}}},s=()=>l.openConfirmModal({title:"Delete this api-key?",labels:{confirm:"Confirm",cancel:"Cancel"},onCancel:()=>console.log("Cancel"),onConfirm:o});return e(r.Button,{size:a.button.size,color:"red",onClick:s,leftIcon:e(P.Trash,{size:20}),children:"Delete"})}function De({styles:t=N,config:n}){var f;j(n);const{data:i=[],loading:a,refresh:l}=x.useRequest(async()=>{const{data:u}=await v.api_key.list();return u},{refreshDeps:[]}),{data:o=[],loading:s}=x.useRequest(async()=>(await v.role.list()).map(g=>({label:g.name,value:g.id,description:g.description,disabled:g.id===50})),{refreshDeps:[]}),c=z.useMemo(()=>o.reduce((u,g)=>(u.set(g.value,g.label),u),new Map),[o]),p=u=>c.get(u)??u;return d(C,{children:[e(r.Group,{pt:t.spacing,position:"right",children:e($,{onSuccess:l,initialRoleID:((f=o==null?void 0:o[0])==null?void 0:f.value)??0})}),d(r.Box,{mt:t.spacing,sx:{position:"relative"},children:[e(r.LoadingOverlay,{visible:a||s}),d(r.Table,{horizontalSpacing:t.spacing,verticalSpacing:t.spacing,fontSize:t.size,highlightOnHover:!0,children:[e("thead",{children:d("tr",{children:[e("th",{children:"Name"}),e("th",{children:"APP ID"}),e("th",{children:"Role"}),e("th",{children:"Action"})]})}),e("tbody",{children:i.map(u=>{const{id:g,name:w,app_id:y,role_id:_}=u;return d("tr",{children:[e("td",{width:200,children:w}),e("td",{width:200,children:y}),e("td",{width:200,children:p(_)}),e("td",{width:200,children:e(r.Group,{position:"left",children:e(F,{id:g,name:w,onSuccess:l})})})]},g)})})]})]})]})}const Oe=()=>Promise.resolve().then(()=>Ie).then(({version:t})=>(console.log(`[@devtable/dashboard] version: ${t}`),t)),J="@devtable/settings-form",Q="8.56.0",W="Apache-2.0",X={access:"public",registry:"https://registry.npmjs.org/"},Y=["dist"],Z="./dist/settings-form.umd.js",H="./dist/settings-form.es.js",ee="./dist/index.d.ts",te={".":{import:"./dist/settings-form.es.js",require:"./dist/settings-form.umd.js"},"./dist/style.css":{import:"./dist/style.css",require:"./dist/style.css"}},ne={"dev-build":"tsc && vite build --watch",build:"tsc && vite build",preview:"vite preview"},ie={"@monaco-editor/react":"4.4.6","monaco-editor":"0.36.0"},re={"@emotion/babel-plugin":"11.7.2","@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"},ae={"@emotion/react":"11.10.0","@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"},Ie=Object.freeze(Object.defineProperty({__proto__:null,default:{name:J,version:Q,license:W,publishConfig:X,files:Y,main:Z,module:H,types:ee,exports:te,scripts:ne,dependencies:ie,devDependencies:re,peerDependencies:ae},dependencies:ie,devDependencies:re,exports:te,files:Y,license:W,main:Z,module:H,name:J,peerDependencies:ae,publishConfig:X,scripts:ne,types:ee,version:Q},Symbol.toStringTag,{value:"Module"}));m.APIKeyList=De,m.AccountList=xe,m.AddAPIKey=$,m.AddAccount=K,m.AddDataSource=G,m.DataSourceList=ve,m.DeleteAPIKey=F,m.DeleteAccount=V,m.DeleteDataSource=U,m.Login=_e,m.getVersion=Oe,Object.defineProperty(m,Symbol.toStringTag,{value:"Module"})});
3
+ `)};function ze({submit:t,styles:n=x}){const{control:r,setValue:a,handleSubmit:l}=h.useForm({defaultValues:{type:"http",key:"",config:{host:"",processing:{pre:B.pre,post:B.post}}}});return e(i.Box,{mx:"auto",children:u("form",{onSubmit:l(t),children:[e(h.Controller,{name:"key",control:r,render:({field:o})=>e(i.TextInput,{mb:n.spacing,size:n.size,required:!0,label:"Name",placeholder:"A unique name",...o})}),e(i.Divider,{label:"Connection Info",labelPosition:"center"}),e(h.Controller,{name:"config.host",control:r,render:({field:o})=>e(i.TextInput,{mb:n.spacing,size:n.size,required:!0,label:"Base URL",sx:{flexGrow:1},...o})}),u(i.Group,{grow:!0,children:[e(h.Controller,{name:"config.processing.pre",control:r,render:({field:o})=>e(U,{label:"Pre Processing",modalTitle:"This function will run before sending the request (for scenarios like encryption)",defaultValue:B.pre,...o,styles:n})}),e(h.Controller,{name:"config.processing.post",control:r,render:({field:o})=>e(U,{label:"Post Processing",modalTitle:"This function will run after sending the request (for scenarios like decryption)",defaultValue:B.post,...o,styles:n})})]}),e(i.Group,{position:"right",mt:n.spacing,children:e(i.Button,{type:"submit",size:n.button.size,children:"Save"})})]})})}function ve({styles:t=x}){return e(i.Box,{mx:"auto",children:u(i.Alert,{mt:t.spacing,icon:e(P.AlertCircle,{size:16}),children:["Only ",e("b",{children:"SELECT"})," privilege is needed."]})})}function Ce({postSubmit:t,styles:n=x}){const[r,a]=v.useState("postgresql"),l=async({type:c,key:p,config:f})=>{b.showNotification({id:"for-creating",title:"Pending",message:"Adding data source...",loading:!0});try{console.log({type:c,key:p,config:f}),await z.datasource.create(c,p,f),b.updateNotification({id:"for-creating",title:"Successful",message:"Data source is added",color:"green"}),t()}catch(S){b.updateNotification({id:"for-creating",title:"Failed",message:S.message,color:"red"})}},o=r==="postgresql"||r==="mysql",s=r==="http";return u(i.Box,{mx:"auto",children:[e(i.SegmentedControl,{fullWidth:!0,mb:n.spacing,size:n.size,data:[{label:"PostgreSQL",value:"postgresql"},{label:"MySQL",value:"mysql"},{label:"HTTP",value:"http"}],value:r,onChange:c=>a(c)}),o&&e(ve,{styles:n}),o&&e(we,{submit:l,styles:n,type:r}),s&&e(ze,{submit:l,styles:n})]})}function K({onSuccess:t,styles:n=x}){const[r,a]=R.default.useState(!1),l=()=>a(!0),o=()=>a(!1),s=()=>{t(),o()};return u(y,{children:[e(i.Modal,{overflow:"inside",opened:r,onClose:()=>a(!1),title:"Add a data source",trapFocus:!0,onDragStart:c=>{c.stopPropagation()},children:e(Ce,{postSubmit:s,styles:n})}),e(i.Button,{size:n.button.size,onClick:l,leftIcon:e(P.PlaylistAdd,{size:20}),children:"Add a Data Source"})]})}const Pe=t=>t.replace(/([^:])(\/\/+)/g,"$1/");function ye(t){v.useEffect(()=>{if(j.loader.__getMonacoInstance())return;console.log("loading monaco for @devtable/settings-form");const r=Pe(t);j.loader.config({paths:{vs:r}}),j.loader.init().then(a=>console.log("monaco instance:",a))},[])}function k(){return k=Object.assign?Object.assign.bind():function(t){for(var n=1;n<arguments.length;n++){var r=arguments[n];for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(t[a]=r[a])}return t},k.apply(this,arguments)}function _e(t,n){if(t==null)return{};var r,a,l=function(s,c){if(s==null)return{};var p,f,S={},g=Object.keys(s);for(f=0;f<g.length;f++)p=g[f],c.indexOf(p)>=0||(S[p]=s[p]);return S}(t,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(a=0;a<o.length;a++)r=o[a],n.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(l[r]=t[r])}return l}var Ae=["size","color","stroke"];function xe(t){var n=t.size,r=n===void 0?24:n,a=t.color,l=a===void 0?"currentColor":a,o=t.stroke,s=o===void 0?2:o,c=_e(t,Ae);return O.createElement("svg",k({xmlns:"http://www.w3.org/2000/svg",className:"icon icon-tabler icon-tabler-lock",width:r,height:r,viewBox:"0 0 24 24",strokeWidth:s,stroke:l,fill:"none",strokeLinecap:"round",strokeLinejoin:"round"},c),O.createElement("path",{stroke:"none",d:"M0 0h24v24H0z",fill:"none"}),O.createElement("rect",{x:5,y:11,width:14,height:10,rx:2}),O.createElement("circle",{cx:12,cy:16,r:1}),O.createElement("path",{d:"M8 11v-4a4 4 0 0 1 8 0v4"}))}function V({id:t,name:n,isProtected:r,onSuccess:a,styles:l=x}){const o=q.useModals(),s=async()=>{!t||(b.showNotification({id:"for-deleting",title:"Pending",message:"Deleting data source...",loading:!0}),await z.datasource.delete(t),b.updateNotification({id:"for-deleting",title:"Successful",message:`Data source [${n}] is deleted`,color:"green"}),a())},c=()=>o.openConfirmModal({title:"Delete this data source?",children:e(i.Text,{size:l.size,children:"This action won't affect your database."}),labels:{confirm:"Confirm",cancel:"Cancel"},onCancel:()=>console.log("Cancel"),onConfirm:s}),p=i.useMantineTheme();return r?e(i.Tooltip,{withArrow:!0,events:{hover:!0,touch:!1,focus:!1},label:"This is a preset datasource, it can not be deleted",children:e("span",{children:e(xe,{size:16,color:p.colors.gray[7]})})}):e(i.Button,{size:l.button.size,color:"red",onClick:c,leftIcon:e(P.Trash,{size:20}),children:"Delete"})}function Te({styles:t=x,config:n}){ye(n.monacoPath),N(n);const{data:r=[],loading:a,refresh:l}=A.useRequest(async()=>{const{data:o}=await z.datasource.list();return o},{refreshDeps:[]});return u(y,{children:[e(i.Group,{pt:t.spacing,position:"right",children:e(K,{onSuccess:l})}),u(i.Box,{mt:t.spacing,sx:{position:"relative"},children:[e(i.LoadingOverlay,{visible:a}),u(i.Table,{horizontalSpacing:t.spacing,verticalSpacing:t.spacing,fontSize:t.size,highlightOnHover:!0,children:[e("thead",{children:u("tr",{children:[e("th",{children:"Type"}),e("th",{children:"Name"}),e("th",{children:"Action"})]})}),e("tbody",{children:r.map(({id:o,key:s,type:c,is_preset:p})=>u("tr",{children:[e("td",{width:200,children:c}),e("td",{children:s}),e("td",{width:200,children:e(i.Group,{position:"left",children:e(V,{isProtected:p,id:o,name:s,onSuccess:l})})})]},s))})]})]})]})}const qe=v.forwardRef(({label:t,value:n,description:r,...a},l)=>u(i.Stack,{spacing:2,ref:l,...a,children:[e(i.Text,{size:"sm",children:t}),e(i.Text,{size:"xs",color:"dimmed",className:"role-description",children:r})]})),E=v.forwardRef(({styles:t,value:n,onChange:r},a)=>{const{data:l=[],loading:o}=A.useRequest(async()=>(await z.role.list()).map(c=>({label:c.name,value:c.id,description:c.description,disabled:c.id===50})),{refreshDeps:[]});return e(i.Select,{ref:a,mb:t.spacing,size:t.size,required:!0,label:"Role",itemComponent:qe,data:l,disabled:o,styles:()=>({item:{"&[data-selected]":{"&, &:hover":{".role-description":{color:"rgba(255,255,255,.8)"}}}}}),value:n,onChange:r})}),_={size:"sm",spacing:"md",button:{size:"xs"}};function De({postSubmit:t,styles:n=_,initialRoleID:r}){const{control:a,handleSubmit:l}=h.useForm({defaultValues:{name:"",email:"",role_id:r,password:""}}),o=async({name:s,email:c,password:p,role_id:f})=>{try{b.showNotification({id:"for-creating",title:"Pending",message:"Adding account...",loading:!0}),await z.account.create(s,c,p,f),b.updateNotification({id:"for-creating",title:"Successful",message:"Account is added",color:"green"}),t()}catch(S){b.updateNotification({id:"for-creating",title:"Failed",message:S.message,color:"red"})}};return e(i.Box,{mx:"auto",children:u("form",{onSubmit:l(o),children:[e(h.Controller,{name:"name",control:a,render:({field:s})=>e(i.TextInput,{mb:n.spacing,size:n.size,required:!0,label:"Username",...s})}),e(h.Controller,{name:"email",control:a,render:({field:s})=>e(i.TextInput,{mb:n.spacing,size:n.size,required:!0,label:"Email",...s})}),e(h.Controller,{name:"password",control:a,render:({field:s})=>e(i.PasswordInput,{mb:n.spacing,size:n.size,required:!0,label:"Password",description:"Password must be at least 8 characters long",...s})}),e(h.Controller,{name:"role_id",control:a,render:({field:s})=>e(E,{styles:n,...s})}),e(i.Group,{position:"right",mt:n.spacing,children:e(i.Button,{type:"submit",size:n.button.size,children:"Save"})})]})})}function $({onSuccess:t,styles:n=_,initialRoleID:r}){const[a,l]=R.default.useState(!1),o=()=>l(!0),s=()=>l(!1),c=()=>{t(),s()};return u(y,{children:[e(i.Modal,{overflow:"inside",opened:a,onClose:()=>l(!1),title:"Add an Account",trapFocus:!0,onDragStart:p=>{p.stopPropagation()},children:e(De,{postSubmit:c,styles:n,initialRoleID:r})}),e(i.Button,{size:n.button.size,onClick:o,leftIcon:e(P.PlaylistAdd,{size:20}),children:"Add an Account"})]})}function J({id:t,name:n,onSuccess:r,styles:a=_}){const l=q.useModals(),o=async()=>{if(!!t){b.showNotification({id:"for-deleting",title:"Pending",message:"Deleting account...",loading:!0});try{await z.account.delete(t),b.updateNotification({id:"for-deleting",title:"Successful",message:`Account [${n}] is deleted`,color:"green"}),r()}catch(c){b.updateNotification({id:"for-deleting",title:"Failed",message:c.message,color:"red"})}}},s=()=>l.openConfirmModal({title:"Delete this account?",labels:{confirm:"Confirm",cancel:"Cancel"},onCancel:()=>console.log("Cancel"),onConfirm:o});return e(i.Button,{size:a.button.size,color:"red",onClick:s,leftIcon:e(P.Trash,{size:20}),children:"Delete"})}function Oe({id:t,name:n,email:r,role_id:a,postSubmit:l,styles:o=_}){const{control:s,handleSubmit:c,watch:p}=h.useForm({defaultValues:{name:n,email:r,role_id:a,reset_password:!1,new_password:""}}),f=async({name:d,email:C,role_id:T,reset_password:I,new_password:Ee})=>{try{b.showNotification({id:"for-updating",title:"Pending",message:"Updating account...",loading:!0}),await z.account.edit({id:t,name:d,email:C,role_id:T,reset_password:I,new_password:Ee}),b.updateNotification({id:"for-updating",title:"Successful",message:"Account is updated",color:"green"}),l()}catch(Ge){b.updateNotification({id:"for-updating",title:"Failed",message:Ge.message,color:"red"})}},[S,g]=p(["reset_password","new_password"]);return e(i.Box,{mx:"auto",children:u("form",{onSubmit:c(f),children:[e(h.Controller,{name:"name",control:s,render:({field:d})=>e(i.TextInput,{mb:o.spacing,size:o.size,required:!0,label:"Username",...d})}),e(h.Controller,{name:"email",control:s,render:({field:d})=>e(i.TextInput,{mb:o.spacing,size:o.size,required:!0,label:"Email",...d})}),e(h.Controller,{name:"role_id",control:s,render:({field:d})=>e(E,{styles:o,...d})}),e(i.Divider,{my:20,variant:"dashed",label:"",labelPosition:"center"}),e(h.Controller,{name:"reset_password",control:s,render:({field:d})=>e(i.Switch,{mb:o.spacing,size:o.size,label:"Reset password",checked:d.value,onChange:C=>d.onChange(C.currentTarget.checked),styles:{label:{verticalAlign:"middle"}}})}),S&&e(h.Controller,{name:"new_password",control:s,render:({field:d})=>e(i.PasswordInput,{autoComplete:"off",mb:o.spacing,size:o.size,required:!0,description:"Password must be at least 8 characters long",label:"New Password",...d})}),e(i.Group,{position:"right",mt:o.spacing,children:e(i.Button,{type:"submit",size:o.button.size,children:"Submit"})})]})})}function Ie({account:t,onSuccess:n,styles:r=_}){const[a,l]=R.default.useState(!1),o=()=>l(!0),s=()=>l(!1),c=()=>{n(),s()};return u(y,{children:[e(i.Modal,{overflow:"inside",opened:a,onClose:()=>l(!1),title:`Editing ${t.name}`,trapFocus:!0,onDragStart:p=>{p.stopPropagation()},children:e(Oe,{...t,postSubmit:c,styles:r})}),e(i.Button,{size:r.button.size,onClick:o,leftIcon:e(P.Edit,{size:20}),children:"Edit"})]})}function je({styles:t=_,config:n}){var f,S;N(n);const{data:r=[],loading:a,refresh:l}=A.useRequest(async()=>{const{data:g}=await z.account.list();return g},{refreshDeps:[]}),{data:o=[],loading:s}=A.useRequest(async()=>(await z.role.list()).map(d=>({label:d.name,value:d.id,description:d.description,disabled:d.id===50})),{refreshDeps:[]}),c=v.useMemo(()=>o.reduce((g,d)=>(g.set(d.value,d.label),g),new Map),[o]),p=g=>{var d;return(d=c.get(g))!=null?d:g};return u(y,{children:[e(i.Group,{pt:t.spacing,position:"right",children:e($,{onSuccess:l,initialRoleID:(S=(f=o==null?void 0:o[0])==null?void 0:f.value)!=null?S:0})}),u(i.Box,{mt:t.spacing,sx:{position:"relative"},children:[e(i.LoadingOverlay,{visible:a||s}),u(i.Table,{horizontalSpacing:t.spacing,verticalSpacing:t.spacing,fontSize:t.size,highlightOnHover:!0,children:[e("thead",{children:u("tr",{children:[e("th",{children:"Username"}),e("th",{children:"Email"}),e("th",{children:"Role"}),e("th",{children:"Action"})]})}),e("tbody",{children:r.map(g=>{const{id:d,name:C,email:T,role_id:I}=g;return u("tr",{children:[e("td",{width:200,children:C}),e("td",{width:200,children:T}),e("td",{width:200,children:p(I)}),e("td",{width:200,children:u(i.Group,{position:"left",children:[e(Ie,{account:g,onSuccess:l}),e(J,{id:d,name:C,onSuccess:l})]})})]},d)})})]})]})]})}function Re({postSubmit:t,styles:n=_}){const{control:r,handleSubmit:a}=h.useForm({defaultValues:{name:"",password:""}}),l=async({name:o,password:s})=>{try{b.showNotification({id:"for-login",title:"Pending",message:"Loggin in...",loading:!0});const c=await z.account.login(o,s);window.localStorage.setItem("token",c.token),b.updateNotification({id:"for-login",title:"Successful",message:"Logged in",color:"green"}),t(c)}catch(c){b.updateNotification({id:"for-login",title:"Login Failed",message:c.message,color:"red"})}};return e(i.Box,{mx:"auto",children:u("form",{onSubmit:a(l),children:[e(h.Controller,{name:"name",control:r,render:({field:o})=>e(i.TextInput,{mb:n.spacing,size:n.size,required:!0,label:"Username",...o})}),e(h.Controller,{name:"password",control:r,render:({field:o})=>e(i.PasswordInput,{mb:n.spacing,size:n.size,required:!0,label:"Password",...o})}),e(i.Group,{position:"right",mt:n.spacing,children:e(i.Button,{type:"submit",size:n.button.size,children:"Submit"})})]})})}function Ne({styles:t=_,config:n,onSuccess:r}){return N(n),e(y,{children:e(i.Box,{mt:t.spacing,sx:{position:"relative"},children:e(Re,{styles:t,postSubmit:r})})})}const L={size:"sm",spacing:"md",button:{size:"xs"}};function Be({postSubmit:t,styles:n=L,initialRoleID:r}){const{control:a,handleSubmit:l}=h.useForm({defaultValues:{name:"",role_id:r}}),o=async({name:s,role_id:c})=>{try{b.showNotification({id:"for-creating",title:"Pending",message:"Adding API Key...",loading:!0});const{app_id:p,app_secret:f}=await z.api_key.create(s,c);b.updateNotification({id:"for-creating",title:"Successful",message:"API Key is added",color:"green"}),t(p,f)}catch(p){b.updateNotification({id:"for-creating",title:"Failed",message:p.message,color:"red"})}};return e(i.Box,{mx:"auto",children:u("form",{onSubmit:l(o),children:[e(h.Controller,{name:"name",control:a,render:({field:s})=>e(i.TextInput,{mb:n.spacing,size:n.size,required:!0,label:"Name",...s})}),e(h.Controller,{name:"role_id",control:a,render:({field:s})=>e(E,{styles:n,...s})}),e(i.Group,{position:"right",mt:n.spacing,children:e(i.Button,{type:"submit",size:n.button.size,children:"Save"})})]})})}function F({onSuccess:t,styles:n=L,initialRoleID:r}){const a=q.useModals(),[l,o]=R.default.useState(!1),s=()=>o(!0),c=()=>o(!1),p=(f,S)=>{c(),a.openModal({title:"API Key is generated",children:u(i.Stack,{children:[e(i.Text,{color:"dimmed",children:"Make sure you save it - you won't be able to access it again."}),e(i.TextInput,{defaultValue:f,disabled:!0,label:"APP ID",styles:{input:{cursor:"text !important"}}}),e(i.TextInput,{defaultValue:S,disabled:!0,label:"APP Secret",styles:{input:{cursor:"text !important"}}}),e(i.Button,{size:"sm",onClick:()=>{q.closeAllModals()},children:"I've saved this API Key"})]}),onClose:()=>{t()}})};return u(y,{children:[e(i.Modal,{overflow:"inside",opened:l,onClose:()=>o(!1),title:"Add an API Key",trapFocus:!0,onDragStart:f=>{f.stopPropagation()},children:e(Be,{postSubmit:p,styles:n,initialRoleID:r})}),e(i.Button,{size:n.button.size,onClick:s,leftIcon:e(P.PlaylistAdd,{size:20}),children:"Add an API Key"})]})}function Q({id:t,name:n,onSuccess:r,styles:a=L}){const l=q.useModals(),o=async()=>{if(!!t){b.showNotification({id:"for-deleting",title:"Pending",message:"Deleting API Key...",loading:!0});try{await z.api_key.delete(t),b.updateNotification({id:"for-deleting",title:"Successful",message:`API Key [${n}] is deleted`,color:"green"}),r()}catch(c){b.updateNotification({id:"for-deleting",title:"Failed",message:c.message,color:"red"})}}},s=()=>l.openConfirmModal({title:"Delete this api-key?",labels:{confirm:"Confirm",cancel:"Cancel"},onCancel:()=>console.log("Cancel"),onConfirm:o});return e(i.Button,{size:a.button.size,color:"red",onClick:s,leftIcon:e(P.Trash,{size:20}),children:"Delete"})}function Le({styles:t=L,config:n}){var f,S;N(n);const{data:r=[],loading:a,refresh:l}=A.useRequest(async()=>{const{data:g}=await z.api_key.list();return g},{refreshDeps:[]}),{data:o=[],loading:s}=A.useRequest(async()=>(await z.role.list()).map(d=>({label:d.name,value:d.id,description:d.description,disabled:d.id===50})),{refreshDeps:[]}),c=v.useMemo(()=>o.reduce((g,d)=>(g.set(d.value,d.label),g),new Map),[o]),p=g=>{var d;return(d=c.get(g))!=null?d:g};return u(y,{children:[e(i.Group,{pt:t.spacing,position:"right",children:e(F,{onSuccess:l,initialRoleID:(S=(f=o==null?void 0:o[0])==null?void 0:f.value)!=null?S:0})}),u(i.Box,{mt:t.spacing,sx:{position:"relative"},children:[e(i.LoadingOverlay,{visible:a||s}),u(i.Table,{horizontalSpacing:t.spacing,verticalSpacing:t.spacing,fontSize:t.size,highlightOnHover:!0,children:[e("thead",{children:u("tr",{children:[e("th",{children:"Name"}),e("th",{children:"APP ID"}),e("th",{children:"Role"}),e("th",{children:"Action"})]})}),e("tbody",{children:r.map(g=>{const{id:d,name:C,app_id:T,role_id:I}=g;return u("tr",{children:[e("td",{width:200,children:C}),e("td",{width:200,children:T}),e("td",{width:200,children:p(I)}),e("td",{width:200,children:e(i.Group,{position:"left",children:e(Q,{id:d,name:C,onSuccess:l})})})]},d)})})]})]})]})}const Me=()=>Promise.resolve().then(()=>ke).then(({version:t})=>(console.log(`[@devtable/dashboard] version: ${t}`),t)),W="@devtable/settings-form",X="8.57.1",Y="Apache-2.0",Z={access:"public",registry:"https://registry.npmjs.org/"},H=["dist"],ee="./dist/settings-form.umd.js",te="./dist/settings-form.es.js",ne="./dist/index.d.ts",ie={".":{import:"./dist/settings-form.es.js",require:"./dist/settings-form.umd.js"},"./dist/style.css":{import:"./dist/style.css",require:"./dist/style.css"}},re={"dev-build":"tsc && vite build --watch",build:"tsc && vite build",preview:"vite preview"},ae={"@monaco-editor/react":"4.4.6","monaco-editor":"0.36.0"},oe={"@emotion/babel-plugin":"11.7.2","@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"},se={"@emotion/react":"11.10.0","@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"},ke=Object.freeze(Object.defineProperty({__proto__:null,name:W,version:X,license:Y,publishConfig:Z,files:H,main:ee,module:te,types:ne,exports:ie,scripts:re,dependencies:ae,devDependencies:oe,peerDependencies:se,default:{name:W,version:X,license:Y,publishConfig:Z,files:H,main:ee,module:te,types:ne,exports:ie,scripts:re,dependencies:ae,devDependencies:oe,peerDependencies:se}},Symbol.toStringTag,{value:"Module"}));m.APIKeyList=Le,m.AccountList=je,m.AddAPIKey=F,m.AddAccount=$,m.AddDataSource=K,m.DataSourceList=Te,m.DeleteAPIKey=Q,m.DeleteAccount=J,m.DeleteDataSource=V,m.Login=Ne,m.getVersion=Me,Object.defineProperties(m,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@devtable/settings-form",
3
- "version": "8.56.0",
3
+ "version": "8.57.1",
4
4
  "license": "Apache-2.0",
5
5
  "publishConfig": {
6
6
  "access": "public",