@devtable/settings-form 8.50.6 → 8.51.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,29 +1,3 @@
1
- (function(C,o){typeof exports=="object"&&typeof module<"u"?o(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("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","ahooks","@monaco-editor/react","@mantine/modals"],o):(C=typeof globalThis<"u"?globalThis:C||self,o(C["settings-form"]={},C["@mantine/core"],C["@mantine/notifications"],C.React,C["tabler-icons-react"],C.axios,C["crypto-js"],C._,C["react-hook-form"],C.ahooks,C["@monaco-editor/react"],C["@mantine/modals"]))})(this,function(C,o,T,I,B,mt,vt,bt,P,U,re,X){"use strict";const Q=t=>t&&typeof t=="object"&&"default"in t?t:{default:t};function yt(t){if(t&&t.__esModule)return t;const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const i in t)if(i!=="default"){const s=Object.getOwnPropertyDescriptor(t,i);Object.defineProperty(r,i,s.get?s:{enumerable:!0,get:()=>t[i]})}}return r.default=t,Object.freeze(r)}const W=Q(I),Z=yt(I),wt=Q(mt),_t=Q(vt),St=Q(bt),Pt=Q(re);function Ct(t){t=t||{};const r=Object.keys(t).sort(),i=[];for(let s=0;s<r.length;s++){const u=r[s];if(u!="authentication"&&t[u])i.push(r[s]+"="+(typeof t[u]=="object"?JSON.stringify(t[u]):t[u]));else{const l=Object.keys(t[u]).sort();for(let c=0;c<l.length;c++){const f=l[c];f!="sign"&&t[u][f]&&i.push(l[c]+"="+(typeof t[u][f]=="object"?JSON.stringify(t[u][f]):t[u][f]))}}}return i.sort().join("&")}function Rt(t,r){let i=Ct(t);return i+="&key="+r,_t.default.MD5(i).toString().toUpperCase()}const O={baseURL:"http://localhost:31200",app_id:"",app_secret:"",getAuthentication(t){if(!this.app_id||!this.app_secret)return;const r=new Date().getTime().toString();return{app_id:this.app_id,nonce_str:r,sign:Rt({app_id:this.app_id,nonce_str:r,...t},this.app_secret)}},getRequest(t){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:t,url:r,params:t==="GET"?i:s.params,headers:l};return["POST","PUT"].includes(t)&&(c.data=s.string?JSON.stringify(i):i,c.data.authentication=this.getAuthentication(c.data)),wt.default(c).then(f=>f.data).catch(f=>St.default.has(f,"response.data.detail.message")?Promise.reject(new Error(f.response.data.detail.message)):Promise.reject(f))}}};function ie(t){O.baseURL!==t.apiBaseURL&&(O.baseURL=t.apiBaseURL),t.app_id&&(O.app_id=t.app_id),t.app_secret&&(O.app_secret=t.app_secret)}const j={datasource:{list:async()=>await O.getRequest("POST")("/datasource/list",{filter:{},sort:[{field:"create_time",order:"ASC"}],pagination:{page:1,pagesize:100}}),create:async(t,r,i)=>await O.getRequest("POST")("/datasource/create",{type:t,key:r,config:i}),delete:async t=>{await O.getRequest("POST")("/datasource/delete",{id:t})}},account:{login:async(t,r)=>{const i={name:t,password:r};return await O.getRequest("POST")("/account/login",i)},list:async()=>await O.getRequest("POST")("/account/list",{filter:{},sort:[{field:"name",order:"ASC"}],pagination:{page:1,pagesize:100}}),get:async()=>await O.getRequest("GET")("/account/get",{}),update:async(t,r)=>{const i={name:t,email:r};return await O.getRequest("PUT")("/account/update",i)},changepassword:async(t,r)=>{const i={old_password:t,new_password:r};return await O.getRequest("POST")("/account/changepassword",i)},create:async(t,r,i,s)=>await O.getRequest("POST")("/account/create",{name:t,email:r,password:i,role_id:s}),edit:async t=>(t.reset_password||(t.new_password=void 0),await O.getRequest("PUT")("/account/edit",t)),delete:async t=>{if(!!t)return O.getRequest("POST")("/account/delete",{id:t})}},role:{list:async()=>await O.getRequest("GET")("/role/list",{})},api_key:{list:async()=>await O.getRequest("POST")("/api/key/list",{filter:{search:""},sort:[{field:"name",order:"ASC"}],pagination:{page:1,pagesize:100}}),create:async(t,r)=>O.getRequest("POST")("/api/key/create",{name:t,role_id:r}),delete:async t=>{if(!!t)return O.getRequest("POST")("/api/key/delete",{id:t})}}},Y={size:"sm",spacing:"md",button:{size:"xs"}};var ae={exports:{}},H={};/**
2
- * @license React
3
- * react-jsx-runtime.production.min.js
4
- *
5
- * Copyright (c) Facebook, Inc. and its affiliates.
6
- *
7
- * This source code is licensed under the MIT license found in the
8
- * LICENSE file in the root directory of this source tree.
9
- */var Ce;function Tt(){if(Ce)return H;Ce=1;var t=W.default,r=Symbol.for("react.element"),i=Symbol.for("react.fragment"),s=Object.prototype.hasOwnProperty,u=t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,l={key:!0,ref:!0,__self:!0,__source:!0};function c(f,g,y){var _,m={},p=null,z=null;y!==void 0&&(p=""+y),g.key!==void 0&&(p=""+g.key),g.ref!==void 0&&(z=g.ref);for(_ in g)s.call(g,_)&&!l.hasOwnProperty(_)&&(m[_]=g[_]);if(f&&f.defaultProps)for(_ in g=f.defaultProps,g)m[_]===void 0&&(m[_]=g[_]);return{$$typeof:r,type:f,key:p,ref:z,props:m,_owner:u.current}}return H.Fragment=i,H.jsx=c,H.jsxs=c,H}var ee={};/**
10
- * @license React
11
- * react-jsx-runtime.development.js
12
- *
13
- * Copyright (c) Facebook, Inc. and its affiliates.
14
- *
15
- * This source code is licensed under the MIT license found in the
16
- * LICENSE file in the root directory of this source tree.
17
- */var Re;function Et(){return Re||(Re=1,process.env.NODE_ENV!=="production"&&function(){var t=W.default,r=Symbol.for("react.element"),i=Symbol.for("react.portal"),s=Symbol.for("react.fragment"),u=Symbol.for("react.strict_mode"),l=Symbol.for("react.profiler"),c=Symbol.for("react.provider"),f=Symbol.for("react.context"),g=Symbol.for("react.forward_ref"),y=Symbol.for("react.suspense"),_=Symbol.for("react.suspense_list"),m=Symbol.for("react.memo"),p=Symbol.for("react.lazy"),z=Symbol.for("react.offscreen"),q=Symbol.iterator,V="@@iterator";function he(e){if(e===null||typeof e!="object")return null;var a=q&&e[q]||e[V];return typeof a=="function"?a:null}var $=t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function A(e){{for(var a=arguments.length,d=new Array(a>1?a-1:0),h=1;h<a;h++)d[h-1]=arguments[h];Jt("error",e,d)}}function Jt(e,a,d){{var h=$.ReactDebugCurrentFrame,S=h.getStackAddendum();S!==""&&(a+="%s",d=d.concat([S]));var R=d.map(function(w){return String(w)});R.unshift("Warning: "+a),Function.prototype.apply.call(console[e],console,R)}}var Xt=!1,Qt=!1,Zt=!1,Ht=!1,en=!1,We;We=Symbol.for("react.module.reference");function tn(e){return!!(typeof e=="string"||typeof e=="function"||e===s||e===l||en||e===u||e===y||e===_||Ht||e===z||Xt||Qt||Zt||typeof e=="object"&&e!==null&&(e.$$typeof===p||e.$$typeof===m||e.$$typeof===c||e.$$typeof===f||e.$$typeof===g||e.$$typeof===We||e.getModuleId!==void 0))}function nn(e,a,d){var h=e.displayName;if(h)return h;var S=a.displayName||a.name||"";return S!==""?d+"("+S+")":d}function Ye(e){return e.displayName||"Context"}function L(e){if(e==null)return null;if(typeof e.tag=="number"&&A("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case s:return"Fragment";case i:return"Portal";case l:return"Profiler";case u:return"StrictMode";case y:return"Suspense";case _:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case f:var a=e;return Ye(a)+".Consumer";case c:var d=e;return Ye(d._context)+".Provider";case g:return nn(e,e.render,"ForwardRef");case m:var h=e.displayName||null;return h!==null?h:L(e.type)||"Memo";case p:{var S=e,R=S._payload,w=S._init;try{return L(w(R))}catch{return null}}}return null}var G=Object.assign,te=0,Ke,Je,Xe,Qe,Ze,He,et;function tt(){}tt.__reactDisabledLog=!0;function rn(){{if(te===0){Ke=console.log,Je=console.info,Xe=console.warn,Qe=console.error,Ze=console.group,He=console.groupCollapsed,et=console.groupEnd;var e={configurable:!0,enumerable:!0,value:tt,writable:!0};Object.defineProperties(console,{info:e,log:e,warn:e,error:e,group:e,groupCollapsed:e,groupEnd:e})}te++}}function an(){{if(te--,te===0){var e={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:G({},e,{value:Ke}),info:G({},e,{value:Je}),warn:G({},e,{value:Xe}),error:G({},e,{value:Qe}),group:G({},e,{value:Ze}),groupCollapsed:G({},e,{value:He}),groupEnd:G({},e,{value:et})})}te<0&&A("disabledDepth fell below zero. This is a bug in React. Please file an issue.")}}var me=$.ReactCurrentDispatcher,ve;function le(e,a,d){{if(ve===void 0)try{throw Error()}catch(S){var h=S.stack.trim().match(/\n( *(at )?)/);ve=h&&h[1]||""}return`
18
- `+ve+e}}var be=!1,ce;{var on=typeof WeakMap=="function"?WeakMap:Map;ce=new on}function nt(e,a){if(!e||be)return"";{var d=ce.get(e);if(d!==void 0)return d}var h;be=!0;var S=Error.prepareStackTrace;Error.prepareStackTrace=void 0;var R;R=me.current,me.current=null,rn();try{if(a){var w=function(){throw Error()};if(Object.defineProperty(w.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(w,[])}catch(M){h=M}Reflect.construct(e,[],w)}else{try{w.call()}catch(M){h=M}e.call(w.prototype)}}else{try{throw Error()}catch(M){h=M}e()}}catch(M){if(M&&h&&typeof M.stack=="string"){for(var v=M.stack.split(`
19
- `),D=h.stack.split(`
20
- `),E=v.length-1,x=D.length-1;E>=1&&x>=0&&v[E]!==D[x];)x--;for(;E>=1&&x>=0;E--,x--)if(v[E]!==D[x]){if(E!==1||x!==1)do if(E--,x--,x<0||v[E]!==D[x]){var k=`
21
- `+v[E].replace(" at new "," at ");return e.displayName&&k.includes("<anonymous>")&&(k=k.replace("<anonymous>",e.displayName)),typeof e=="function"&&ce.set(e,k),k}while(E>=1&&x>=0);break}}}finally{be=!1,me.current=R,an(),Error.prepareStackTrace=S}var J=e?e.displayName||e.name:"",ht=J?le(J):"";return typeof e=="function"&&ce.set(e,ht),ht}function sn(e,a,d){return nt(e,!1)}function ln(e){var a=e.prototype;return!!(a&&a.isReactComponent)}function ue(e,a,d){if(e==null)return"";if(typeof e=="function")return nt(e,ln(e));if(typeof e=="string")return le(e);switch(e){case y:return le("Suspense");case _:return le("SuspenseList")}if(typeof e=="object")switch(e.$$typeof){case g:return sn(e.render);case m:return ue(e.type,a,d);case p:{var h=e,S=h._payload,R=h._init;try{return ue(R(S),a,d)}catch{}}}return""}var de=Object.prototype.hasOwnProperty,rt={},it=$.ReactDebugCurrentFrame;function fe(e){if(e){var a=e._owner,d=ue(e.type,e._source,a?a.type:null);it.setExtraStackFrame(d)}else it.setExtraStackFrame(null)}function cn(e,a,d,h,S){{var R=Function.call.bind(de);for(var w in e)if(R(e,w)){var v=void 0;try{if(typeof e[w]!="function"){var D=Error((h||"React class")+": "+d+" type `"+w+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof e[w]+"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");throw D.name="Invariant Violation",D}v=e[w](a,w,h,d,null,"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED")}catch(E){v=E}v&&!(v instanceof Error)&&(fe(S),A("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).",h||"React class",d,w,typeof v),fe(null)),v instanceof Error&&!(v.message in rt)&&(rt[v.message]=!0,fe(S),A("Failed %s type: %s",d,v.message),fe(null))}}}var un=Array.isArray;function ye(e){return un(e)}function dn(e){{var a=typeof Symbol=="function"&&Symbol.toStringTag,d=a&&e[Symbol.toStringTag]||e.constructor.name||"Object";return d}}function fn(e){try{return at(e),!1}catch{return!0}}function at(e){return""+e}function ot(e){if(fn(e))return A("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.",dn(e)),at(e)}var ne=$.ReactCurrentOwner,pn={key:!0,ref:!0,__self:!0,__source:!0},st,lt,we;we={};function gn(e){if(de.call(e,"ref")){var a=Object.getOwnPropertyDescriptor(e,"ref").get;if(a&&a.isReactWarning)return!1}return e.ref!==void 0}function hn(e){if(de.call(e,"key")){var a=Object.getOwnPropertyDescriptor(e,"key").get;if(a&&a.isReactWarning)return!1}return e.key!==void 0}function mn(e,a){if(typeof e.ref=="string"&&ne.current&&a&&ne.current.stateNode!==a){var d=L(ne.current.type);we[d]||(A('Component "%s" contains the string ref "%s". Support for string refs will be removed in a future major release. This case cannot be automatically converted to an arrow function. We ask you to manually fix this case by using useRef() or createRef() instead. Learn more about using refs safely here: https://reactjs.org/link/strict-mode-string-ref',L(ne.current.type),e.ref),we[d]=!0)}}function vn(e,a){{var d=function(){st||(st=!0,A("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",a))};d.isReactWarning=!0,Object.defineProperty(e,"key",{get:d,configurable:!0})}}function bn(e,a){{var d=function(){lt||(lt=!0,A("%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",a))};d.isReactWarning=!0,Object.defineProperty(e,"ref",{get:d,configurable:!0})}}var yn=function(e,a,d,h,S,R,w){var v={$$typeof:r,type:e,key:a,ref:d,props:w,_owner:R};return v._store={},Object.defineProperty(v._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:!1}),Object.defineProperty(v,"_self",{configurable:!1,enumerable:!1,writable:!1,value:h}),Object.defineProperty(v,"_source",{configurable:!1,enumerable:!1,writable:!1,value:S}),Object.freeze&&(Object.freeze(v.props),Object.freeze(v)),v};function wn(e,a,d,h,S){{var R,w={},v=null,D=null;d!==void 0&&(ot(d),v=""+d),hn(a)&&(ot(a.key),v=""+a.key),gn(a)&&(D=a.ref,mn(a,S));for(R in a)de.call(a,R)&&!pn.hasOwnProperty(R)&&(w[R]=a[R]);if(e&&e.defaultProps){var E=e.defaultProps;for(R in E)w[R]===void 0&&(w[R]=E[R])}if(v||D){var x=typeof e=="function"?e.displayName||e.name||"Unknown":e;v&&vn(w,x),D&&bn(w,x)}return yn(e,v,D,S,h,ne.current,w)}}var _e=$.ReactCurrentOwner,ct=$.ReactDebugCurrentFrame;function K(e){if(e){var a=e._owner,d=ue(e.type,e._source,a?a.type:null);ct.setExtraStackFrame(d)}else ct.setExtraStackFrame(null)}var Se;Se=!1;function Pe(e){return typeof e=="object"&&e!==null&&e.$$typeof===r}function ut(){{if(_e.current){var e=L(_e.current.type);if(e)return`
22
-
23
- Check the render method of \``+e+"`."}return""}}function _n(e){{if(e!==void 0){var a=e.fileName.replace(/^.*[\\\/]/,""),d=e.lineNumber;return`
24
-
25
- Check your code at `+a+":"+d+"."}return""}}var dt={};function Sn(e){{var a=ut();if(!a){var d=typeof e=="string"?e:e.displayName||e.name;d&&(a=`
26
-
27
- Check the top-level render call using <`+d+">.")}return a}}function ft(e,a){{if(!e._store||e._store.validated||e.key!=null)return;e._store.validated=!0;var d=Sn(a);if(dt[d])return;dt[d]=!0;var h="";e&&e._owner&&e._owner!==_e.current&&(h=" It was passed a child from "+L(e._owner.type)+"."),K(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),K(null)}}function pt(e,a){{if(typeof e!="object")return;if(ye(e))for(var d=0;d<e.length;d++){var h=e[d];Pe(h)&&ft(h,a)}else if(Pe(e))e._store&&(e._store.validated=!0);else if(e){var S=he(e);if(typeof S=="function"&&S!==e.entries)for(var R=S.call(e),w;!(w=R.next()).done;)Pe(w.value)&&ft(w.value,a)}}}function Pn(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=L(a);cn(d,e.props,"prop",h,e)}else if(a.PropTypes!==void 0&&!Se){Se=!0;var S=L(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 Cn(e){{for(var a=Object.keys(e.props),d=0;d<a.length;d++){var h=a[d];if(h!=="children"&&h!=="key"){K(e),A("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.",h),K(null);break}}e.ref!==null&&(K(e),A("Invalid attribute `ref` supplied to `React.Fragment`."),K(null))}}function gt(e,a,d,h,S,R){{var w=tn(e);if(!w){var v="";(e===void 0||typeof e=="object"&&e!==null&&Object.keys(e).length===0)&&(v+=" 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=_n(S);D?v+=D:v+=ut();var E;e===null?E="null":ye(e)?E="array":e!==void 0&&e.$$typeof===r?(E="<"+(L(e.type)||"Unknown")+" />",v=" Did you accidentally export a JSX literal instead of a component?"):E=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",E,v)}var x=wn(e,a,d,S,R);if(x==null)return x;if(w){var k=a.children;if(k!==void 0)if(h)if(ye(k)){for(var J=0;J<k.length;J++)pt(k[J],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 pt(k,e)}return e===s?Cn(x):Pn(x),x}}function Rn(e,a,d){return gt(e,a,d,!0)}function Tn(e,a,d){return gt(e,a,d,!1)}var En=Tn,xn=Rn;ee.Fragment=s,ee.jsx=En,ee.jsxs=xn}()),ee}(function(t){process.env.NODE_ENV==="production"?t.exports=Tt():t.exports=Et()})(ae);const N=ae.exports.Fragment,n=ae.exports.jsx,b=ae.exports.jsxs;function xt({submit:t,styles:r=Y,type:i}){const{control:s,setValue:u,handleSubmit:l}=P.useForm({defaultValues:{type:i,key:"",config:{host:"",port:5432,username:"",password:"",database:""}}});return I.useEffect(()=>{u("type",i)},[u,i]),n(o.Box,{mx:"auto",children:b("form",{onSubmit:l(t),children:[n(P.Controller,{name:"key",control:s,render:({field:c})=>n(o.TextInput,{mb:r.spacing,size:r.size,required:!0,label:"Name",placeholder:"A unique name",...c})}),n(o.Divider,{label:"Connection Info",labelPosition:"center"}),b(o.Group,{grow:!0,children:[n(P.Controller,{name:"config.host",control:s,render:({field:c})=>n(o.TextInput,{mb:r.spacing,size:r.size,required:!0,label:"Host",sx:{flexGrow:1},...c})}),n(P.Controller,{name:"config.port",control:s,render:({field:c})=>n(o.NumberInput,{mb:r.spacing,size:r.size,required:!0,label:"Port",hideControls:!0,sx:{width:"8em"},...c})})]}),n(P.Controller,{name:"config.username",control:s,render:({field:c})=>n(o.TextInput,{mb:r.spacing,size:r.size,required:!0,label:"Username",...c})}),n(P.Controller,{name:"config.password",control:s,render:({field:c})=>n(o.PasswordInput,{mb:r.spacing,size:r.size,required:!0,label:"Password",...c})}),n(P.Controller,{name:"config.database",control:s,render:({field:c})=>n(o.TextInput,{mb:r.spacing,size:r.size,required:!0,label:"Database",...c})}),n(o.Group,{position:"right",mt:r.spacing,children:n(o.Button,{type:"submit",size:r.button.size,children:"Save"})})]})})}const Ot=({value:t,onChange:r})=>{const i=s=>{!s||r(s)};return n(o.Box,{sx:{position:"relative"},children:n(Pt.default,{height:"500px",defaultLanguage:"javascript",value:t,onChange:i,theme:"vs-dark",options:{minimap:{enabled:!1}}})})},Te=I.forwardRef(({value:t,onChange:r,label:i,modalTitle:s,defaultValue:u,styles:l},c)=>{const[f,{setTrue:g,setFalse:y}]=U.useBoolean(),[_,m]=I.useState(t),p=()=>{y(),r(_)},z=()=>{y(),m(t)},q=()=>{m(u)};return I.useEffect(()=>{m(t)},[t]),b(N,{children:[n(o.Button,{variant:"filled",size:l.button.size,onClick:g,sx:{flexGrow:1},children:i}),n(o.Modal,{size:800,title:s,opened:f,onClose:y,closeOnClickOutside:!1,withCloseButton:!1,children:f&&b(o.Stack,{children:[n(Ot,{value:_,onChange:m}),b(o.Group,{position:"apart",children:[n(o.Button,{onClick:q,color:"red",leftIcon:n(B.Recycle,{size:20}),children:"Rest"}),b(o.Group,{position:"right",children:[n(o.Button,{onClick:z,variant:"subtle",children:"Cancel"}),n(o.Button,{onClick:p,children:"OK"})]})]})]})})]})}),oe={pre:["function pre_process({ method, url, params, headers, data }, utils) {"," // your code goes here"," return { method, url, params, headers, data }","}"].join(`
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,y,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),P=B.Fragment,e=B.jsx,u=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:u("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"}),u(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}}})})},G=z.forwardRef(({value:t,onChange:n,label:i,modalTitle:a,defaultValue:l,styles:o},s)=>{const[c,{setTrue:p,setFalse:f}]=x.useBoolean(),[d,g]=z.useState(t),w=()=>{f(),n(d)},C=()=>{f(),g(t)},_=()=>{g(l)};return z.useEffect(()=>{g(t)},[t]),u(P,{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&&u(r.Stack,{children:[e(pe,{value:d,onChange:g}),u(r.Group,{position:"apart",children:[e(r.Button,{onClick:_,color:"red",leftIcon:e(y.Recycle,{size:20}),children:"Rest"}),u(r.Group,{position:"right",children:[e(r.Button,{onClick:C,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(`
28
2
  `),post:["function post_process(res, utils) {"," // your code goes here"," return data","}"].join(`
29
- `)};function zt({submit:t,styles:r=Y}){const{control:i,setValue:s,handleSubmit:u}=P.useForm({defaultValues:{type:"http",key:"",config:{host:"",processing:{pre:oe.pre,post:oe.post}}}});return n(o.Box,{mx:"auto",children:b("form",{onSubmit:u(t),children:[n(P.Controller,{name:"key",control:i,render:({field:l})=>n(o.TextInput,{mb:r.spacing,size:r.size,required:!0,label:"Name",placeholder:"A unique name",...l})}),n(o.Divider,{label:"Connection Info",labelPosition:"center"}),n(P.Controller,{name:"config.host",control:i,render:({field:l})=>n(o.TextInput,{mb:r.spacing,size:r.size,required:!0,label:"Base URL",sx:{flexGrow:1},...l})}),b(o.Group,{grow:!0,children:[n(P.Controller,{name:"config.processing.pre",control:i,render:({field:l})=>n(Te,{label:"Pre Processing",modalTitle:"This function will run before sending the request (for scenarios like encryption)",defaultValue:oe.pre,...l,styles:r})}),n(P.Controller,{name:"config.processing.post",control:i,render:({field:l})=>n(Te,{label:"Post Processing",modalTitle:"This function will run after sending the request (for scenarios like decryption)",defaultValue:oe.post,...l,styles:r})})]}),n(o.Group,{position:"right",mt:r.spacing,children:n(o.Button,{type:"submit",size:r.button.size,children:"Save"})})]})})}function At({postSubmit:t,styles:r=Y}){const[i,s]=I.useState("postgresql"),u=async({type:f,key:g,config:y})=>{T.showNotification({id:"for-creating",title:"Pending",message:"Adding data source...",loading:!0});try{console.log({type:f,key:g,config:y}),await j.datasource.create(f,g,y),T.updateNotification({id:"for-creating",title:"Successful",message:"Data source is added",color:"green"}),t()}catch(_){T.updateNotification({id:"for-creating",title:"Failed",message:_.message,color:"red"})}},l=i==="postgresql"||i==="mysql",c=i==="http";return b(o.Box,{mx:"auto",children:[n(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&&n(xt,{submit:u,styles:r,type:i}),c&&n(zt,{submit:u,styles:r})]})}function Ee({onSuccess:t,styles:r=Y}){const[i,s]=W.default.useState(!1),u=()=>s(!0),l=()=>s(!1),c=()=>{t(),l()};return b(N,{children:[n(o.Modal,{overflow:"inside",opened:i,onClose:()=>s(!1),title:"Add a data source",trapFocus:!0,onDragStart:f=>{f.stopPropagation()},children:n(At,{postSubmit:c,styles:r})}),n(o.Button,{size:r.button.size,onClick:u,leftIcon:n(B.PlaylistAdd,{size:20}),children:"Add a Data Source"})]})}const Dt=t=>t.replace(/([^:])(\/\/+)/g,"$1/");function jt(t){I.useEffect(()=>{if(re.loader.__getMonacoInstance())return;console.log("loading monaco for @devtable/settings-form");const i=Dt(t);re.loader.config({paths:{vs:i}}),re.loader.init().then(s=>console.log("monaco instance:",s))},[])}function pe(){return pe=Object.assign?Object.assign.bind():function(t){for(var r=1;r<arguments.length;r++){var i=arguments[r];for(var s in i)Object.prototype.hasOwnProperty.call(i,s)&&(t[s]=i[s])}return t},pe.apply(this,arguments)}function It(t,r){if(t==null)return{};var i,s,u=function(c,f){if(c==null)return{};var g,y,_={},m=Object.keys(c);for(y=0;y<m.length;y++)g=m[y],f.indexOf(g)>=0||(_[g]=c[g]);return _}(t,r);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(t);for(s=0;s<l.length;s++)i=l[s],r.indexOf(i)>=0||Object.prototype.propertyIsEnumerable.call(t,i)&&(u[i]=t[i])}return u}var kt=["size","color","stroke"];function qt(t){var r=t.size,i=r===void 0?24:r,s=t.color,u=s===void 0?"currentColor":s,l=t.stroke,c=l===void 0?2:l,f=It(t,kt);return Z.createElement("svg",pe({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),Z.createElement("path",{stroke:"none",d:"M0 0h24v24H0z",fill:"none"}),Z.createElement("rect",{x:5,y:11,width:14,height:10,rx:2}),Z.createElement("circle",{cx:12,cy:16,r:1}),Z.createElement("path",{d:"M8 11v-4a4 4 0 0 1 8 0v4"}))}function xe({id:t,name:r,isProtected:i,onSuccess:s,styles:u=Y}){const l=X.useModals(),c=async()=>{!t||(T.showNotification({id:"for-deleting",title:"Pending",message:"Deleting data source...",loading:!0}),await j.datasource.delete(t),T.updateNotification({id:"for-deleting",title:"Successful",message:`Data source [${r}] is deleted`,color:"green"}),s())},f=()=>l.openConfirmModal({title:"Delete this data source?",children:n(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?n(o.Tooltip,{withArrow:!0,events:{hover:!0,touch:!1,focus:!1},label:"This is a preset datasource, it can not be deleted",children:n("span",{children:n(qt,{size:16,color:g.colors.gray[7]})})}):n(o.Button,{size:u.button.size,color:"red",onClick:f,leftIcon:n(B.Trash,{size:20}),children:"Delete"})}function Nt({styles:t=Y,config:r}){jt(r.monacoPath),ie(r);const{data:i=[],loading:s,refresh:u}=U.useRequest(async()=>{const{data:l}=await j.datasource.list();return l},{refreshDeps:[]});return b(N,{children:[n(o.Group,{pt:t.spacing,position:"right",children:n(Ee,{onSuccess:u})}),b(o.Box,{mt:t.spacing,sx:{position:"relative"},children:[n(o.LoadingOverlay,{visible:s}),b(o.Table,{horizontalSpacing:t.spacing,verticalSpacing:t.spacing,fontSize:t.size,highlightOnHover:!0,children:[n("thead",{children:b("tr",{children:[n("th",{children:"Type"}),n("th",{children:"Name"}),n("th",{children:"Action"})]})}),n("tbody",{children:i.map(({id:l,key:c,type:f,is_preset:g})=>b("tr",{children:[n("td",{width:200,children:f}),n("td",{children:c}),n("td",{width:200,children:n(o.Group,{position:"left",children:n(xe,{isProtected:g,id:l,name:c,onSuccess:u})})})]},c))})]})]})]})}const Lt=I.forwardRef(({label:t,value:r,description:i,...s},u)=>b(o.Stack,{spacing:2,ref:u,...s,children:[n(o.Text,{size:"sm",children:t}),n(o.Text,{size:"xs",color:"dimmed",className:"role-description",children:i})]})),ge=I.forwardRef(({styles:t,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 n(o.Select,{ref:s,mb:t.spacing,size:t.size,required:!0,label:"Role",itemComponent:Lt,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 Mt({postSubmit:t,styles:r=F,initialRoleID:i}){const{control:s,handleSubmit:u}=P.useForm({defaultValues:{name:"",email:"",role_id:i,password:""}}),l=async({name:c,email:f,password:g,role_id:y})=>{try{T.showNotification({id:"for-creating",title:"Pending",message:"Adding account...",loading:!0}),await j.account.create(c,f,g,y),T.updateNotification({id:"for-creating",title:"Successful",message:"Account is added",color:"green"}),t()}catch(_){T.updateNotification({id:"for-creating",title:"Failed",message:_.message,color:"red"})}};return n(o.Box,{mx:"auto",children:b("form",{onSubmit:u(l),children:[n(P.Controller,{name:"name",control:s,render:({field:c})=>n(o.TextInput,{mb:r.spacing,size:r.size,required:!0,label:"Username",...c})}),n(P.Controller,{name:"email",control:s,render:({field:c})=>n(o.TextInput,{mb:r.spacing,size:r.size,required:!0,label:"Email",...c})}),n(P.Controller,{name:"password",control:s,render:({field:c})=>n(o.PasswordInput,{mb:r.spacing,size:r.size,required:!0,label:"Password",description:"Password must be at least 8 characters long",...c})}),n(P.Controller,{name:"role_id",control:s,render:({field:c})=>n(ge,{styles:r,...c})}),n(o.Group,{position:"right",mt:r.spacing,children:n(o.Button,{type:"submit",size:r.button.size,children:"Save"})})]})})}function Oe({onSuccess:t,styles:r=F,initialRoleID:i}){const[s,u]=W.default.useState(!1),l=()=>u(!0),c=()=>u(!1),f=()=>{t(),c()};return b(N,{children:[n(o.Modal,{overflow:"inside",opened:s,onClose:()=>u(!1),title:"Add an Account",trapFocus:!0,onDragStart:g=>{g.stopPropagation()},children:n(Mt,{postSubmit:f,styles:r,initialRoleID:i})}),n(o.Button,{size:r.button.size,onClick:l,leftIcon:n(B.PlaylistAdd,{size:20}),children:"Add an Account"})]})}function ze({id:t,name:r,onSuccess:i,styles:s=F}){const u=X.useModals(),l=async()=>{if(!!t){T.showNotification({id:"for-deleting",title:"Pending",message:"Deleting account...",loading:!0});try{await j.account.delete(t),T.updateNotification({id:"for-deleting",title:"Successful",message:`Account [${r}] is deleted`,color:"green"}),i()}catch(f){T.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 n(o.Button,{size:s.button.size,color:"red",onClick:c,leftIcon:n(B.Trash,{size:20}),children:"Delete"})}function Bt({id:t,name:r,email:i,role_id:s,postSubmit:u,styles:l=F}){const{control:c,handleSubmit:f,watch:g}=P.useForm({defaultValues:{name:r,email:i,role_id:s,reset_password:!1,new_password:""}}),y=async({name:p,email:z,role_id:q,reset_password:V,new_password:he})=>{try{T.showNotification({id:"for-updating",title:"Pending",message:"Updating account...",loading:!0}),await j.account.edit({id:t,name:p,email:z,role_id:q,reset_password:V,new_password:he}),T.updateNotification({id:"for-updating",title:"Successful",message:"Account is updated",color:"green"}),u()}catch($){T.updateNotification({id:"for-updating",title:"Failed",message:$.message,color:"red"})}},[_,m]=g(["reset_password","new_password"]);return n(o.Box,{mx:"auto",children:b("form",{onSubmit:f(y),children:[n(P.Controller,{name:"name",control:c,render:({field:p})=>n(o.TextInput,{mb:l.spacing,size:l.size,required:!0,label:"Username",...p})}),n(P.Controller,{name:"email",control:c,render:({field:p})=>n(o.TextInput,{mb:l.spacing,size:l.size,required:!0,label:"Email",...p})}),n(P.Controller,{name:"role_id",control:c,render:({field:p})=>n(ge,{styles:l,...p})}),n(o.Divider,{my:20,variant:"dashed",label:"",labelPosition:"center"}),n(P.Controller,{name:"reset_password",control:c,render:({field:p})=>n(o.Switch,{mb:l.spacing,size:l.size,label:"Reset password",checked:p.value,onChange:z=>p.onChange(z.currentTarget.checked),styles:{label:{verticalAlign:"middle"}}})}),_&&n(P.Controller,{name:"new_password",control:c,render:({field:p})=>n(o.PasswordInput,{autoComplete:"off",mb:l.spacing,size:l.size,required:!0,description:"Password must be at least 8 characters long",label:"New Password",...p})}),n(o.Group,{position:"right",mt:l.spacing,children:n(o.Button,{type:"submit",size:l.button.size,children:"Submit"})})]})})}function Ft({account:t,onSuccess:r,styles:i=F}){const[s,u]=W.default.useState(!1),l=()=>u(!0),c=()=>u(!1),f=()=>{r(),c()};return b(N,{children:[n(o.Modal,{overflow:"inside",opened:s,onClose:()=>u(!1),title:`Editing ${t.name}`,trapFocus:!0,onDragStart:g=>{g.stopPropagation()},children:n(Bt,{...t,postSubmit:f,styles:i})}),n(o.Button,{size:i.button.size,onClick:l,leftIcon:n(B.Edit,{size:20}),children:"Edit"})]})}function $t({styles:t=F,config:r}){var y,_;ie(r);const{data:i=[],loading:s,refresh:u}=U.useRequest(async()=>{const{data:m}=await j.account.list();return m},{refreshDeps:[]}),{data:l=[],loading:c}=U.useRequest(async()=>(await j.role.list()).map(p=>({label:p.name,value:p.id,description:p.description,disabled:p.id===50})),{refreshDeps:[]}),f=I.useMemo(()=>l.reduce((m,p)=>(m.set(p.value,p.label),m),new Map),[l]),g=m=>{var p;return(p=f.get(m))!=null?p:m};return b(N,{children:[n(o.Group,{pt:t.spacing,position:"right",children:n(Oe,{onSuccess:u,initialRoleID:(_=(y=l==null?void 0:l[0])==null?void 0:y.value)!=null?_:0})}),b(o.Box,{mt:t.spacing,sx:{position:"relative"},children:[n(o.LoadingOverlay,{visible:s||c}),b(o.Table,{horizontalSpacing:t.spacing,verticalSpacing:t.spacing,fontSize:t.size,highlightOnHover:!0,children:[n("thead",{children:b("tr",{children:[n("th",{children:"Username"}),n("th",{children:"Email"}),n("th",{children:"Role"}),n("th",{children:"Action"})]})}),n("tbody",{children:i.map(m=>{const{id:p,name:z,email:q,role_id:V}=m;return b("tr",{children:[n("td",{width:200,children:z}),n("td",{width:200,children:q}),n("td",{width:200,children:g(V)}),n("td",{width:200,children:b(o.Group,{position:"left",children:[n(Ft,{account:m,onSuccess:u}),n(ze,{id:p,name:z,onSuccess:u})]})})]},p)})})]})]})]})}function Ut({postSubmit:t,styles:r=F}){const{control:i,handleSubmit:s}=P.useForm({defaultValues:{name:"",password:""}}),u=async({name:l,password:c})=>{try{T.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),T.updateNotification({id:"for-login",title:"Successful",message:"Logged in",color:"green"}),t(f)}catch(f){T.updateNotification({id:"for-login",title:"Login Failed",message:f.message,color:"red"})}};return n(o.Box,{mx:"auto",children:b("form",{onSubmit:s(u),children:[n(P.Controller,{name:"name",control:i,render:({field:l})=>n(o.TextInput,{mb:r.spacing,size:r.size,required:!0,label:"Username",...l})}),n(P.Controller,{name:"password",control:i,render:({field:l})=>n(o.PasswordInput,{mb:r.spacing,size:r.size,required:!0,label:"Password",...l})}),n(o.Group,{position:"right",mt:r.spacing,children:n(o.Button,{type:"submit",size:r.button.size,children:"Submit"})})]})})}function Vt({styles:t=F,config:r,onSuccess:i}){return ie(r),n(N,{children:n(o.Box,{mt:t.spacing,sx:{position:"relative"},children:n(Ut,{styles:t,postSubmit:i})})})}const se={size:"sm",spacing:"md",button:{size:"xs"}};function Gt({postSubmit:t,styles:r=se,initialRoleID:i}){const{control:s,handleSubmit:u}=P.useForm({defaultValues:{name:"",role_id:i}}),l=async({name:c,role_id:f})=>{try{T.showNotification({id:"for-creating",title:"Pending",message:"Adding API Key...",loading:!0});const{app_id:g,app_secret:y}=await j.api_key.create(c,f);T.updateNotification({id:"for-creating",title:"Successful",message:"API Key is added",color:"green"}),t(g,y)}catch(g){T.updateNotification({id:"for-creating",title:"Failed",message:g.message,color:"red"})}};return n(o.Box,{mx:"auto",children:b("form",{onSubmit:u(l),children:[n(P.Controller,{name:"name",control:s,render:({field:c})=>n(o.TextInput,{mb:r.spacing,size:r.size,required:!0,label:"Name",...c})}),n(P.Controller,{name:"role_id",control:s,render:({field:c})=>n(ge,{styles:r,...c})}),n(o.Group,{position:"right",mt:r.spacing,children:n(o.Button,{type:"submit",size:r.button.size,children:"Save"})})]})})}function Ae({onSuccess:t,styles:r=se,initialRoleID:i}){const s=X.useModals(),[u,l]=W.default.useState(!1),c=()=>l(!0),f=()=>l(!1),g=(y,_)=>{f(),s.openModal({title:"API Key is generated",children:b(o.Stack,{children:[n(o.Text,{color:"dimmed",children:"Make sure you save it - you won't be able to access it again."}),n(o.TextInput,{defaultValue:y,disabled:!0,label:"APP ID",styles:{input:{cursor:"text !important"}}}),n(o.TextInput,{defaultValue:_,disabled:!0,label:"APP Secret",styles:{input:{cursor:"text !important"}}}),n(o.Button,{size:"sm",onClick:()=>{X.closeAllModals()},children:"I've saved this API Key"})]}),onClose:()=>{t()}})};return b(N,{children:[n(o.Modal,{overflow:"inside",opened:u,onClose:()=>l(!1),title:"Add an API Key",trapFocus:!0,onDragStart:y=>{y.stopPropagation()},children:n(Gt,{postSubmit:g,styles:r,initialRoleID:i})}),n(o.Button,{size:r.button.size,onClick:c,leftIcon:n(B.PlaylistAdd,{size:20}),children:"Add an API Key"})]})}function De({id:t,name:r,onSuccess:i,styles:s=se}){const u=X.useModals(),l=async()=>{if(!!t){T.showNotification({id:"for-deleting",title:"Pending",message:"Deleting API Key...",loading:!0});try{await j.api_key.delete(t),T.updateNotification({id:"for-deleting",title:"Successful",message:`API Key [${r}] is deleted`,color:"green"}),i()}catch(f){T.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 n(o.Button,{size:s.button.size,color:"red",onClick:c,leftIcon:n(B.Trash,{size:20}),children:"Delete"})}function Wt({styles:t=se,config:r}){var y,_;ie(r);const{data:i=[],loading:s,refresh:u}=U.useRequest(async()=>{const{data:m}=await j.api_key.list();return m},{refreshDeps:[]}),{data:l=[],loading:c}=U.useRequest(async()=>(await j.role.list()).map(p=>({label:p.name,value:p.id,description:p.description,disabled:p.id===50})),{refreshDeps:[]}),f=I.useMemo(()=>l.reduce((m,p)=>(m.set(p.value,p.label),m),new Map),[l]),g=m=>{var p;return(p=f.get(m))!=null?p:m};return b(N,{children:[n(o.Group,{pt:t.spacing,position:"right",children:n(Ae,{onSuccess:u,initialRoleID:(_=(y=l==null?void 0:l[0])==null?void 0:y.value)!=null?_:0})}),b(o.Box,{mt:t.spacing,sx:{position:"relative"},children:[n(o.LoadingOverlay,{visible:s||c}),b(o.Table,{horizontalSpacing:t.spacing,verticalSpacing:t.spacing,fontSize:t.size,highlightOnHover:!0,children:[n("thead",{children:b("tr",{children:[n("th",{children:"Name"}),n("th",{children:"APP ID"}),n("th",{children:"Role"}),n("th",{children:"Action"})]})}),n("tbody",{children:i.map(m=>{const{id:p,name:z,app_id:q,role_id:V}=m;return b("tr",{children:[n("td",{width:200,children:z}),n("td",{width:200,children:q}),n("td",{width:200,children:g(V)}),n("td",{width:200,children:n(o.Group,{position:"left",children:n(De,{id:p,name:z,onSuccess:u})})})]},p)})})]})]})]})}const Yt=()=>Promise.resolve().then(()=>Kt).then(({version:t})=>(console.log(`[@devtable/dashboard] version: ${t}`),t)),je="@devtable/settings-form",Ie="8.50.6",ke="Apache-2.0",qe={access:"public",registry:"https://registry.npmjs.org/"},Ne=["dist"],Le="./dist/settings-form.umd.js",Me="./dist/settings-form.es.js",Be="./dist/index.d.ts",Fe={".":{import:"./dist/settings-form.es.js",require:"./dist/settings-form.umd.js"},"./dist/style.css":{import:"./dist/style.css",require:"./dist/style.css"}},$e={"dev-build":"tsc && vite build --watch",build:"tsc && vite build",preview:"vite preview"},Ue={"@monaco-editor/react":"4.4.6","monaco-editor":"0.36.0"},Ve={"@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"},Ge={"@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"},Kt=Object.freeze(Object.defineProperty({__proto__:null,name:je,version:Ie,license:ke,publishConfig:qe,files:Ne,main:Le,module:Me,types:Be,exports:Fe,scripts:$e,dependencies:Ue,devDependencies:Ve,peerDependencies:Ge,default:{name:je,version:Ie,license:ke,publishConfig:qe,files:Ne,main:Le,module:Me,types:Be,exports:Fe,scripts:$e,dependencies:Ue,devDependencies:Ve,peerDependencies:Ge}},Symbol.toStringTag,{value:"Module"}));C.APIKeyList=Wt,C.AccountList=$t,C.AddAPIKey=Ae,C.AddAccount=Oe,C.AddDataSource=Ee,C.DataSourceList=Nt,C.DeleteAPIKey=De,C.DeleteAccount=ze,C.DeleteDataSource=xe,C.Login=Vt,C.getVersion=Yt,Object.defineProperties(C,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
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:u("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})}),u(r.Group,{grow:!0,children:[e(h.Controller,{name:"config.processing.pre",control:i,render:({field:o})=>e(G,{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(G,{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({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(d){b.updateNotification({id:"for-creating",title:"Failed",message:d.message,color:"red"})}},o=i==="postgresql"||i==="mysql",s=i==="http";return u(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(ue,{submit:l,styles:n,type:i}),s&&e(ge,{submit:l,styles:n})]})}function U({onSuccess:t,styles:n=T}){const[i,a]=z.useState(!1),l=()=>a(!0),o=()=>a(!1),s=()=>{t(),o()};return u(P,{children:[e(r.Modal,{overflow:"inside",opened:i,onClose:()=>a(!1),title:"Add a data source",trapFocus:!0,onDragStart:c=>{c.stopPropagation()},children:e(he,{postSubmit:s,styles:n})}),e(r.Button,{size:n.button.size,onClick:l,leftIcon:e(y.PlaylistAdd,{size:20}),children:"Add a Data Source"})]})}const me=t=>t.replace(/([^:])(\/\/+)/g,"$1/");function fe(t){z.useEffect(()=>{if(I.loader.__getMonacoInstance())return;console.log("loading monaco for @devtable/settings-form");const i=me(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 be(t,n){if(t==null)return{};var i,a,l=function(s,c){if(s==null)return{};var p,f,d={},g=Object.keys(s);for(f=0;f<g.length;f++)p=g[f],c.indexOf(p)>=0||(d[p]=s[p]);return d}(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 we=["size","color","stroke"];function Se(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=be(t,we);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 E({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(Se,{size:16,color:p.colors.gray[7]})})}):e(r.Button,{size:l.button.size,color:"red",onClick:c,leftIcon:e(y.Trash,{size:20}),children:"Delete"})}function ze({styles:t=T,config:n}){fe(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 u(P,{children:[e(r.Group,{pt:t.spacing,position:"right",children:e(U,{onSuccess:l})}),u(r.Box,{mt:t.spacing,sx:{position:"relative"},children:[e(r.LoadingOverlay,{visible:a}),u(r.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:i.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(r.Group,{position:"left",children:e(E,{isProtected:p,id:o,name:s,onSuccess:l})})})]},s))})]})]})]})}const ve=z.forwardRef(({label:t,value:n,description:i,...a},l)=>u(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:ve,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 Pe({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(d){b.updateNotification({id:"for-creating",title:"Failed",message:d.message,color:"red"})}};return e(r.Box,{mx:"auto",children:u("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 u(P,{children:[e(r.Modal,{overflow:"inside",opened:a,onClose:()=>l(!1),title:"Add an Account",trapFocus:!0,onDragStart:p=>{p.stopPropagation()},children:e(Pe,{postSubmit:c,styles:n,initialRoleID:i})}),e(r.Button,{size:n.button.size,onClick:o,leftIcon:e(y.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(y.Trash,{size:20}),children:"Delete"})}function Ce({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:C,role_id:_,reset_password:Ie,new_password:je})=>{try{b.showNotification({id:"for-updating",title:"Pending",message:"Updating account...",loading:!0}),await v.account.edit({id:t,name:w,email:C,role_id:_,reset_password:Ie,new_password:je}),b.updateNotification({id:"for-updating",title:"Successful",message:"Account is updated",color:"green"}),l()}catch(Re){b.updateNotification({id:"for-updating",title:"Failed",message:Re.message,color:"red"})}},[d,g]=p(["reset_password","new_password"]);return e(r.Box,{mx:"auto",children:u("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:C=>w.onChange(C.currentTarget.checked),styles:{label:{verticalAlign:"middle"}}})}),d&&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 ye({account:t,onSuccess:n,styles:i=A}){const[a,l]=z.useState(!1),o=()=>l(!0),s=()=>l(!1),c=()=>{n(),s()};return u(P,{children:[e(r.Modal,{overflow:"inside",opened:a,onClose:()=>l(!1),title:`Editing ${t.name}`,trapFocus:!0,onDragStart:p=>{p.stopPropagation()},children:e(Ce,{...t,postSubmit:c,styles:i})}),e(r.Button,{size:i.button.size,onClick:o,leftIcon:e(y.Edit,{size:20}),children:"Edit"})]})}function Ae({styles:t=A,config:n}){var f;j(n);const{data:i=[],loading:a,refresh:l}=x.useRequest(async()=>{const{data:d}=await v.account.list();return d},{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((d,g)=>(d.set(g.value,g.label),d),new Map),[o]),p=d=>c.get(d)??d;return u(P,{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})}),u(r.Box,{mt:t.spacing,sx:{position:"relative"},children:[e(r.LoadingOverlay,{visible:a||s}),u(r.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:i.map(d=>{const{id:g,name:w,email:C,role_id:_}=d;return u("tr",{children:[e("td",{width:200,children:w}),e("td",{width:200,children:C}),e("td",{width:200,children:p(_)}),e("td",{width:200,children:u(r.Group,{position:"left",children:[e(ye,{account:d,onSuccess:l}),e(V,{id:g,name:w,onSuccess:l})]})})]},g)})})]})]})]})}function xe({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:u("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(P,{children:e(r.Box,{mt:t.spacing,sx:{position:"relative"},children:e(xe,{styles:t,postSubmit:i})})})}const N={size:"sm",spacing:"md",button:{size:"xs"}};function Te({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:u("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,d)=>{c(),a.openModal({title:"API Key is generated",children:u(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:d,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 u(P,{children:[e(r.Modal,{overflow:"inside",opened:l,onClose:()=>o(!1),title:"Add an API Key",trapFocus:!0,onDragStart:f=>{f.stopPropagation()},children:e(Te,{postSubmit:p,styles:n,initialRoleID:i})}),e(r.Button,{size:n.button.size,onClick:s,leftIcon:e(y.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(y.Trash,{size:20}),children:"Delete"})}function qe({styles:t=N,config:n}){var f;j(n);const{data:i=[],loading:a,refresh:l}=x.useRequest(async()=>{const{data:d}=await v.api_key.list();return d},{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((d,g)=>(d.set(g.value,g.label),d),new Map),[o]),p=d=>c.get(d)??d;return u(P,{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})}),u(r.Box,{mt:t.spacing,sx:{position:"relative"},children:[e(r.LoadingOverlay,{visible:a||s}),u(r.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:i.map(d=>{const{id:g,name:w,app_id:C,role_id:_}=d;return u("tr",{children:[e("td",{width:200,children:w}),e("td",{width:200,children:C}),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 De=()=>Promise.resolve().then(()=>Oe).then(({version:t})=>(console.log(`[@devtable/dashboard] version: ${t}`),t)),J="@devtable/settings-form",Q="8.51.1",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"},Oe=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=qe,m.AccountList=Ae,m.AddAPIKey=$,m.AddAccount=K,m.AddDataSource=U,m.DataSourceList=ze,m.DeleteAPIKey=F,m.DeleteAccount=V,m.DeleteDataSource=E,m.Login=_e,m.getVersion=De,Object.defineProperty(m,Symbol.toStringTag,{value:"Module"})});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@devtable/settings-form",
3
- "version": "8.50.6",
3
+ "version": "8.51.1",
4
4
  "license": "Apache-2.0",
5
5
  "publishConfig": {
6
6
  "access": "public",
@@ -32,6 +32,7 @@
32
32
  "monaco-editor": "0.36.0"
33
33
  },
34
34
  "devDependencies": {
35
+ "@emotion/babel-plugin": "11.7.2",
35
36
  "@types/crypto-js": "v4.1.1",
36
37
  "@types/lodash": "^4.14.182",
37
38
  "@types/react": "^18.0.0",