@budibase/server 2.9.40-alpha.8 → 2.9.40-alpha.9
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.
|
@@ -439,7 +439,7 @@ __p += '`),od&&(r2+=`' +
|
|
|
439
439
|
function print() { __p += __j.call(arguments, '') }
|
|
440
440
|
`:`;
|
|
441
441
|
`)+r2+`return __p
|
|
442
|
-
}`;var G2=M7(function(){return L2(i0,O2+"return "+r2).apply(t1,_0)});if(G2.source=r2,b7(G2))throw G2;return G2}function C7(g1){return am(g1).toLowerCase()}function u$(g1){return am(g1).toUpperCase()}function g9(g1,w1,E1){if(g1=am(g1),g1&&(E1||w1===t1))return x8(g1);if(!g1||!(w1=d3(w1)))return g1;var U1=e_(g1),J1=e_(w1),i0=g0(U1,J1),_0=fd(U1,J1)+1;return Z_(U1,i0,_0).join("")}function b9(g1,w1,E1){if(g1=am(g1),g1&&(E1||w1===t1))return g1.slice(0,P4(g1)+1);if(!g1||!(w1=d3(w1)))return g1;var U1=e_(g1),J1=fd(U1,e_(w1))+1;return Z_(U1,0,J1).join("")}function $9(g1,w1,E1){if(g1=am(g1),g1&&(E1||w1===t1))return g1.replace(p2,"");if(!g1||!(w1=d3(w1)))return g1;var U1=e_(g1),J1=g0(U1,e_(w1));return Z_(U1,J1).join("")}function M8(g1,w1){var E1=P1,U1=H1;if(b_(w1)){var J1="separator"in w1?w1.separator:J1;E1="length"in w1?hd(w1.length):E1,U1="omission"in w1?d3(w1.omission):U1}g1=am(g1);var i0=g1.length;if(I3(g1)){var _0=e_(g1);i0=_0.length}if(E1>=i0)return g1;var k0=E1-L4(U1);if(k0<1)return U1;var L0=_0?Z_(_0,0,k0).join(""):g1.slice(0,k0);if(J1===t1)return L0+U1;if(_0&&(k0+=L0.length-k0),_6(J1)){if(g1.slice(k0).search(J1)){var K0,Z0=L0;for(J1.global||(J1=B_(J1.source,am(Fm.exec(J1))+"g")),J1.lastIndex=0;K0=J1.exec(Z0);)var r2=K0.index;L0=L0.slice(0,r2===t1?k0:r2)}}else if(g1.indexOf(d3(J1),k0)!=k0){var v2=L0.lastIndexOf(J1);v2>-1&&(L0=L0.slice(0,v2))}return L0+U1}function Hd(g1){return g1=am(g1),g1&&Bd.test(g1)?g1.replace(W2,o5):g1}var v9=Ym(function(g1,w1,E1){return g1+(E1?" ":"")+w1.toUpperCase()}),Eg=r_("toUpperCase");function f$(g1,w1,E1){return g1=am(g1),w1=E1?t1:w1,w1===t1?om(g1)?Hg(g1):r5(g1):g1.match(w1)||[]}var M7=Ad(function(g1,w1){try{return i3(g1,t1,w1)}catch(E1){return b7(E1)?E1:new z2(E1)}}),E7=q3(function(g1,w1){return a3(w1,function(E1){E1=Zd(E1),k3(g1,E1,W3(g1[E1],g1))}),g1});function p$(g1){var w1=g1==null?0:g1.length,E1=j2();return g1=w1?bd(g1,function(U1){if(typeof U1[1]!="function")throw new k_(a1);return[E1(U1[0]),U1[1]]}):[],Ad(function(U1){for(var J1=-1;++J1<w1;){var i0=g1[J1];if(i3(i0[0],this,U1))return i3(i0[1],this,U1)}})}function sb(g1){return p5(Mm(g1,f1))}function T7(g1){return function(){return g1}}function y9(g1,w1){return g1==null||g1!==g1?w1:g1}var w9=v8(),d$=v8(!0);function z3(g1){return g1}function z7(g1){return kd(typeof g1=="function"?g1:Mm(g1,f1))}function k9(g1){return U3(Mm(g1,f1))}function S9(g1,w1){return a4(g1,Mm(w1,f1))}var O9=Ad(function(g1,w1){return function(E1){return C3(E1,g1,w1)}}),A9=Ad(function(g1,w1){return function(E1){return C3(g1,E1,w1)}});function L7(g1,w1,E1){var U1=g3(w1),J1=Wm(w1,U1);E1==null&&!(b_(w1)&&(J1.length||!U1.length))&&(E1=w1,w1=g1,g1=this,J1=Wm(w1,g3(w1)));var i0=!(b_(E1)&&"chain"in E1)||!!E1.chain,_0=k5(g1);return a3(J1,function(k0){var L0=w1[k0];g1[k0]=L0,_0&&(g1.prototype[k0]=function(){var K0=this.__chain__;if(i0||K0){var Z0=g1(this.__wrapped__),r2=Z0.__actions__=K_(this.__actions__);return r2.push({func:L0,args:arguments,thisArg:g1}),Z0.__chain__=K0,Z0}return L0.apply(g1,s3([this.value()],arguments))})}),g1}function C9(){return Dm._===this&&(Dm._=S_),this}function P7(){}function m$(g1){return g1=hd(g1),Ad(function(w1){return o6(w1,g1)})}var M9=G4(bd),E9=G4(M6),_$=G4(E6);function I7(g1){return n0(g1)?L6(Zd(g1)):Y_(g1)}function T9(g1){return function(w1){return g1==null?t1:A3(g1,w1)}}var z9=b5(),L9=b5(!0);function D7(){return[]}function B7(){return!1}function P9(){return{}}function I9(){return""}function R7(){return!0}function h$(g1,w1){if(g1=hd(g1),g1<1||g1>X1)return[];var E1=e0,U1=nm(g1,e0);w1=j2(w1),g1-=e0;for(var J1=D6(U1,w1);++E1<g1;)w1(E1);return J1}function D9(g1){return Ed(g1)?bd(g1,Zd):K4(g1)?[g1]:K_(q_(am(g1)))}function B9(g1){var w1=++a5;return am(g1)+w1}var R9=Sg(function(g1,w1){return g1+w1},0),H9=y8("ceil"),N9=Sg(function(g1,w1){return g1/w1},1),V9=y8("floor");function x9(g1){return g1&&g1.length?lm(g1,z3,T_):t1}function F9(g1,w1){return g1&&g1.length?lm(g1,j2(w1,2),T_):t1}function U9(g1){return z6(g1,z3)}function q9(g1,w1){return z6(g1,j2(w1,2))}function j9(g1){return g1&&g1.length?lm(g1,z3,r6):t1}function Q9(g1,w1){return g1&&g1.length?lm(g1,j2(w1,2),r6):t1}var W9=Sg(function(g1,w1){return g1*w1},1),G9=y8("round"),X9=Sg(function(g1,w1){return g1-w1},0);function Y9(g1){return g1&&g1.length?_8(g1,z3):0}function Z9(g1,w1){return g1&&g1.length?_8(g1,j2(w1,2)):0}return E0.after=v$,E0.ary=zb,E0.assign=gb,E0.assignIn=jb,E0.assignInWith=g6,E0.assignWith=bb,E0.at=$b,E0.before=V7,E0.bind=W3,E0.bindAll=E7,E0.bindKey=Lb,E0.castArray=E$,E0.chain=k2,E0.chunk=o_,E0.compact=Vm,E0.concat=i_,E0.cond=p$,E0.conforms=sb,E0.constant=T7,E0.countBy=rm,E0.create=Qb,E0.curry=x7,E0.curryRight=F7,E0.debounce=Pb,E0.defaults=rb,E0.defaultsDeep=N$,E0.defer=y$,E0.delay=d7,E0.difference=Sd,E0.differenceBy=v5,E0.differenceWith=zm,E0.drop=k4,E0.dropRight=m_,E0.dropRightWhile=f6,E0.dropWhile=S4,E0.fill=j3,E0.filter=yd,E0.flatMap=h3,E0.flatMapDeep=A4,E0.flatMapDepth=Km,E0.flatten=__,E0.flattenDeep=Lm,E0.flattenDepth=X8,E0.flip=w$,E0.flow=w9,E0.flowRight=d$,E0.fromPairs=Xb,E0.functions=J7,E0.functionsIn=ob,E0.groupBy=A8,E0.initial=Zb,E0.intersection=pb,E0.intersectionBy=Kb,E0.intersectionWith=X5,E0.invert=t$,E0.invertBy=n$,E0.invokeMap=Z5,E0.iteratee=z7,E0.keyBy=Mb,E0.keys=g3,E0.keysIn=p4,E0.map=C8,E0.mapKeys=j$,E0.mapValues=w7,E0.matches=k9,E0.matchesProperty=S9,E0.memoize=hb,E0.merge=k7,E0.mergeWith=S7,E0.method=O9,E0.methodOf=A9,E0.mixin=L7,E0.negate=Ib,E0.nthArg=m$,E0.omit=X3,E0.omitBy=Q$,E0.once=m7,E0.orderBy=Z8,E0.over=M9,E0.overArgs=_7,E0.overEvery=E9,E0.overSome=_$,E0.partial=h7,E0.partialRight=U7,E0.partition=_b,E0.pick=r$,E0.pickBy=ib,E0.property=I7,E0.propertyOf=T9,E0.pull=Sb,E0.pullAll=db,E0.pullAllBy=Jb,E0.pullAllWith=e7,E0.pullAt=t7,E0.range=z9,E0.rangeRight=L9,E0.rearg=k$,E0.reject=Eb,E0.remove=n7,E0.rest=S$,E0.reverse=Y8,E0.sampleSize=tb,E0.set=o$,E0.setWith=W$,E0.shuffle=g$,E0.slice=O8,E0.sortBy=N7,E0.sortedUniq=Ob,E0.sortedUniqBy=Y5,E0.split=c$,E0.spread=O$,E0.tail=Rd,E0.take=Ab,E0.takeRight=O4,E0.takeRightWhile=Cb,E0.takeWhile=s7,E0.tap=A2,E0.throttle=A$,E0.thru=P2,E0.toArray=Z7,E0.toPairs=i$,E0.toPairsIn=a$,E0.toPath=D9,E0.toPlainObject=y7,E0.transform=G$,E0.unary=C$,E0.union=im,E0.unionBy=l7,E0.unionWith=c7,E0.uniq=u7,E0.uniqBy=f7,E0.uniqWith=p7,E0.unset=X$,E0.unzip=mb,E0.unzipWith=T1,E0.update=Y$,E0.updateWith=Z$,E0.values=ab,E0.valuesIn=K$,E0.without=x1,E0.words=f$,E0.wrap=M$,E0.xor=K1,E0.xorBy=c0,E0.xorWith=v0,E0.zip=R0,E0.zipObject=Q0,E0.zipObjectDeep=n2,E0.zipWith=u2,E0.entries=i$,E0.entriesIn=a$,E0.extend=jb,E0.extendWith=g6,L7(E0,E0),E0.add=R9,E0.attempt=M7,E0.camelCase=n9,E0.capitalize=s$,E0.ceil=H9,E0.clamp=J$,E0.clone=T$,E0.cloneDeep=L$,E0.cloneDeepWith=P$,E0.cloneWith=z$,E0.conformsTo=I$,E0.deburr=l$,E0.defaultTo=y9,E0.divide=N9,E0.endsWith=r9,E0.eq=km,E0.escape=o9,E0.escapeRegExp=i9,E0.every=Vh,E0.find=Ld,E0.findIndex=y5,E0.findKey=V$,E0.findLast=_3,E0.findLastIndex=fm,E0.findLastKey=x$,E0.floor=V9,E0.forEach=C4,E0.forEachRight=M4,E0.forIn=F$,E0.forInRight=U$,E0.forOwn=Wb,E0.forOwnRight=vb,E0.get=Mg,E0.gt=Db,E0.gte=g7,E0.has=e$,E0.hasIn=yb,E0.head=wb,E0.identity=z3,E0.includes=p6,E0.indexOf=Yb,E0.inRange=e9,E0.invoke=q$,E0.isArguments=s8,E0.isArray=Ed,E0.isArrayBuffer=s_,E0.isArrayLike=G3,E0.isArrayLikeObject=j_,E0.isBoolean=w5,E0.isBuffer=K5,E0.isDate=D$,E0.isElement=nb,E0.isEmpty=Bb,E0.isEqual=Rb,E0.isEqualWith=Sm,E0.isError=b7,E0.isFinite=q7,E0.isFunction=k5,E0.isInteger=j7,E0.isLength=Hb,E0.isMap=d6,E0.isMatch=Nb,E0.isMatchWith=Q7,E0.isNaN=Vb,E0.isNative=W7,E0.isNil=xb,E0.isNull=G7,E0.isNumber=$7,E0.isObject=b_,E0.isObjectLike=l_,E0.isPlainObject=m6,E0.isRegExp=_6,E0.isSafeInteger=Fb,E0.isSet=X7,E0.isString=Ub,E0.isSymbol=K4,E0.isTypedArray=h6,E0.isUndefined=qb,E0.isWeakMap=v7,E0.isWeakSet=B$,E0.join=kb,E0.kebabCase=a9,E0.last=m3,E0.lastIndexOf=a_,E0.lowerCase=s9,E0.lowerFirst=l9,E0.lt=Y7,E0.lte=R$,E0.max=x9,E0.maxBy=F9,E0.mean=U9,E0.meanBy=q9,E0.min=j9,E0.minBy=Q9,E0.stubArray=D7,E0.stubFalse=B7,E0.stubObject=P9,E0.stubString=I9,E0.stubTrue=R7,E0.multiply=W9,E0.nth=h_,E0.noConflict=C9,E0.noop=P7,E0.now=Tb,E0.pad=c9,E0.padEnd=u9,E0.padStart=f9,E0.parseInt=p9,E0.random=t9,E0.reduce=K8,E0.reduceRight=J8,E0.repeat=d9,E0.replace=Gb,E0.result=O7,E0.round=G9,E0.runInContext=C0,E0.sample=eb,E0.size=b$,E0.snakeCase=A7,E0.some=$$,E0.sortedIndex=r7,E0.sortedIndexBy=a8,E0.sortedIndexOf=Q3,E0.sortedLastIndex=o7,E0.sortedLastIndexBy=i7,E0.sortedLastIndexOf=a7,E0.startCase=m9,E0.startsWith=_9,E0.subtract=X9,E0.sum=Y9,E0.sumBy=Z9,E0.template=h9,E0.times=h$,E0.toFinite=xm,E0.toInteger=hd,E0.toLength=K7,E0.toLower=C7,E0.toNumber=S5,E0.toSafeInteger=H$,E0.toString=am,E0.toUpper=u$,E0.trim=g9,E0.trimEnd=b9,E0.trimStart=$9,E0.truncate=M8,E0.unescape=Hd,E0.uniqueId=B9,E0.upperCase=v9,E0.upperFirst=Eg,E0.each=C4,E0.eachRight=M4,E0.first=wb,L7(E0,function(){var g1={};return O3(E0,function(w1,E1){Qd.call(E0.prototype,E1)||(g1[E1]=w1)}),g1}(),{chain:!1}),E0.VERSION=r1,a3(["bind","bindKey","curry","curryRight","partial","partialRight"],function(g1){E0[g1].placeholder=E0}),a3(["drop","take"],function(g1,w1){Md.prototype[g1]=function(E1){E1=E1===t1?1:_m(hd(E1),0);var U1=this.__filtered__&&!w1?new Md(this):this.clone();return U1.__filtered__?U1.__takeCount__=nm(E1,U1.__takeCount__):U1.__views__.push({size:nm(E1,e0),type:g1+(U1.__dir__<0?"Right":"")}),U1},Md.prototype[g1+"Right"]=function(E1){return this.reverse()[g1](E1).reverse()}}),a3(["filter","map","takeWhile"],function(g1,w1){var E1=w1+1,U1=E1==B1||E1==F1;Md.prototype[g1]=function(J1){var i0=this.clone();return i0.__iteratees__.push({iteratee:j2(J1,3),type:E1}),i0.__filtered__=i0.__filtered__||U1,i0}}),a3(["head","last"],function(g1,w1){var E1="take"+(w1?"Right":"");Md.prototype[g1]=function(){return this[E1](1).value()[0]}}),a3(["initial","tail"],function(g1,w1){var E1="drop"+(w1?"":"Right");Md.prototype[g1]=function(){return this.__filtered__?new Md(this):this[E1](1)}}),Md.prototype.compact=function(){return this.filter(z3)},Md.prototype.find=function(g1){return this.filter(g1).head()},Md.prototype.findLast=function(g1){return this.reverse().find(g1)},Md.prototype.invokeMap=Ad(function(g1,w1){return typeof g1=="function"?new Md(this):this.map(function(E1){return C3(E1,g1,w1)})}),Md.prototype.reject=function(g1){return this.filter(Ib(j2(g1)))},Md.prototype.slice=function(g1,w1){g1=hd(g1);var E1=this;return E1.__filtered__&&(g1>0||w1<0)?new Md(E1):(g1<0?E1=E1.takeRight(-g1):g1&&(E1=E1.drop(g1)),w1!==t1&&(w1=hd(w1),E1=w1<0?E1.dropRight(-w1):E1.take(w1-g1)),E1)},Md.prototype.takeRightWhile=function(g1){return this.reverse().takeWhile(g1).reverse()},Md.prototype.toArray=function(){return this.take(e0)},O3(Md.prototype,function(g1,w1){var E1=/^(?:filter|find|map|reject)|While$/.test(w1),U1=/^(?:head|last)$/.test(w1),J1=E0[U1?"take"+(w1=="last"?"Right":""):w1],i0=U1||/^find/.test(w1);!J1||(E0.prototype[w1]=function(){var _0=this.__wrapped__,k0=U1?[1]:arguments,L0=_0 instanceof Md,K0=k0[0],Z0=L0||Ed(_0),r2=function(rd){var od=J1.apply(E0,s3([rd],k0));return U1&&v2?od[0]:od};Z0&&E1&&typeof K0=="function"&&K0.length!=1&&(L0=Z0=!1);var v2=this.__chain__,O2=!!this.__actions__.length,T2=i0&&!v2,G2=L0&&!O2;if(!i0&&Z0){_0=G2?_0:new Md(this);var I2=g1.apply(_0,k0);return I2.__actions__.push({func:P2,args:[r2],thisArg:t1}),new jd(I2,v2)}return T2&&G2?g1.apply(this,k0):(I2=this.thru(r2),T2?U1?I2.value()[0]:I2.value():I2)})}),a3(["pop","push","shift","sort","splice","unshift"],function(g1){var w1=D4[g1],E1=/^(?:push|sort|unshift)$/.test(g1)?"tap":"thru",U1=/^(?:pop|shift)$/.test(g1);E0.prototype[g1]=function(){var J1=arguments;if(U1&&!this.__chain__){var i0=this.value();return w1.apply(Ed(i0)?i0:[],J1)}return this[E1](function(_0){return w1.apply(Ed(_0)?_0:[],J1)})}}),O3(Md.prototype,function(g1,w1){var E1=E0[w1];if(E1){var U1=E1.name+"";Qd.call(Bm,U1)||(Bm[U1]=[]),Bm[U1].push({name:w1,func:E1})}}),Bm[W4(t1,b1).name]=[{name:"wrapper",func:t1}],Md.prototype.clone=g8,Md.prototype.reverse=jg,Md.prototype.value=x6,E0.prototype.at=Z2,E0.prototype.chain=ad,E0.prototype.commit=pd,E0.prototype.next=B2,E0.prototype.plant=Td,E0.prototype.reverse=nd,E0.prototype.toJSON=E0.prototype.valueOf=E0.prototype.value=vd,E0.prototype.first=E0.prototype.head,R4&&(E0.prototype[R4]=q2),E0},l3=sg();E4?((E4.exports=l3)._=l3,tg._=l3):Dm._=l3}).call(commonjsGlobal)})(lodash$2,lodash$2.exports);const _=lodash$2.exports,DEFAULT_CONFIG$1={platformUrl:"",logoUrl:void 0,faviconUrl:void 0,emailBrandingEnabled:!0,testimonialsEnabled:!0,platformTitle:"Budibase",loginHeading:void 0,loginButton:void 0,metaDescription:void 0,metaImageUrl:void 0,metaTitle:void 0,docsUrl:void 0,company:"Budibase",oidc:void 0,google:void 0,googleDatasourceConfigured:void 0,oidcCallbackUrl:"",googleCallbackUrl:"",isSSOEnforced:!1,loaded:!1};function createOrganisationStore(){const n1=writable(DEFAULT_CONFIG$1),{subscribe:e1,set:t1}=n1;async function r1(){const i1=get_store_value(auth).tenantId,a1=await API.getTenantConfig(i1);t1({...DEFAULT_CONFIG$1,...a1.config,loaded:!0})}async function o1(i1){const a1=_.cloneDeep(get_store_value(n1));delete a1.oidc,delete a1.google,delete a1.googleDatasourceConfigured,delete a1.oidcCallbackUrl,delete a1.googleCallbackUrl,delete a1.loaded,await API.saveConfig({type:"settings",config:{...a1,...i1}}),await r1()}return{subscribe:e1,set:t1,save:o1,init:r1}}const organisation=createOrganisationStore();function createUsersStore(){const{subscribe:n1,set:e1}=writable({});async function t1(k1={}){const S1=await API.searchUsers(k1);return e1({...S1,...k1}),S1}async function r1(k1){try{return await API.getUser(k1)}catch{return null}}const o1=async()=>await API.getUsers();async function i1(k1){return await API.onboardUsers(k1)}async function a1(k1){return API.inviteUsers(k1)}async function s1(k1,S1,O1,C1){return API.acceptInvite({inviteCode:k1,password:S1,firstName:O1,lastName:C1!=null&&C1.trim()?C1:void 0})}async function l1(k1){return API.getUserInvite(k1)}async function c1(){return API.getUserInvites()}async function u1(k1){return API.updateUserInvite(k1)}async function f1(k1){let S1=k1.users.map(C1=>{const M1={email:C1.email,password:C1.password,roles:{}};switch(C1.forceResetPassword&&(M1.forceResetPassword=C1.forceResetPassword),C1.role){case"appUser":M1.builder={global:!1},M1.admin={global:!1};break;case"developer":M1.builder={global:!0};break;case"admin":M1.admin={global:!0},M1.builder={global:!0};break}return M1});const O1=await API.createUsers({users:S1,groups:k1.groups});return await t1(),O1}async function p1(k1){await API.deleteUser(k1),lodash$2.exports.update(S1=>S1.filter(O1=>O1._id!==k1))}async function d1({appId:k1}){return await API.getUserCountByApp({appId:k1})}async function m1(k1){return API.deleteUsers(k1)}async function _1(k1){return await API.saveUser(k1)}async function h1(k1,S1){return await API.addAppBuilder({userId:k1,appId:S1})}async function b1(k1,S1){return await API.removeAppBuilder({userId:k1,appId:S1})}const $1=k1=>isAdmin(k1)?"admin":isBuilder(k1)?"developer":"appUser",y1=k1=>async(...S1)=>{const O1=await k1(...S1);return await licensing.setQuotaUsage(),O1};return{subscribe:n1,search:t1,get:r1,getUserRole:$1,fetch:o1,invite:a1,onboard:i1,fetchInvite:l1,getInvites:c1,updateInvite:u1,getUserCountByApp:d1,addAppBuilder:h1,removeAppBuilder:b1,acceptInvite:s1,create:y1(f1),save:y1(_1),bulkDelete:y1(m1),delete:y1(p1)}}const users=createUsersStore(),DEFAULT_CONFIG={loaded:!1,multiTenancy:!1,cloud:!1,isDev:!1,disableAccountPortal:!1,accountPortalUrl:"",importComplete:!1,checklist:{apps:{checked:!1},smtp:{checked:!1},adminUser:{checked:!1},sso:{checked:!1}},offlineMode:!1};function createAdminStore(){const n1=writable(DEFAULT_CONFIG);async function e1(){await i1(),await t1(),get_store_value(n1).cloud&&(await o1(),r1()),n1.update(s1=>(s1.loaded=!0,s1))}async function t1(){const s1=await API.getEnvironment();n1.update(l1=>(l1.multiTenancy=s1.multiTenancy,l1.cloud=s1.cloud,l1.disableAccountPortal=s1.disableAccountPortal,l1.accountPortalUrl=s1.accountPortalUrl,l1.isDev=s1.isDev,l1.baseUrl=s1.baseUrl,l1.offlineMode=s1.offlineMode,l1))}const r1=async()=>{var l1,c1;const s1=(c1=(l1=get_store_value(n1))==null?void 0:l1.status)==null?void 0:c1.health;s1!=null&&s1.passing||await banner.showStatus()};async function o1(){const s1=await API.getSystemStatus();n1.update(l1=>(l1.status=s1,l1))}async function i1(){const s1=get_store_value(auth).tenantId,l1=await API.getChecklist(s1);n1.update(c1=>(c1.checklist=l1,c1))}function a1(){n1.update(s1=>(s1.loaded=!1,s1))}return{subscribe:n1.subscribe,init:e1,unload:a1,getChecklist:i1}}const admin=createAdminStore(),DEV_PROPS=["updatedBy","updatedAt"],extractAppId=n1=>{const e1=(n1==null?void 0:n1.split("_"))||[];return e1.length?e1[e1.length-1]:null},getProdAppID=n1=>{if(!n1)return n1;let e1,t1="";if(n1.startsWith("app_dev")){const r1=n1.split("app_dev");r1.shift(),e1=r1.join("app_dev")}else if(!n1.startsWith("app"))e1=n1,t1="_";else return n1;return`app${t1}${e1}`};function createAppStore(){const n1=writable([]);async function e1(){const r1=await API.getApps();if(Array.isArray(r1)){let o1={},i1=r1.filter(l1=>l1.status===AppStatus.DEV),a1=r1.filter(l1=>l1.status===AppStatus.DEPLOYED);i1.forEach(l1=>{const c1=extractAppId(l1.appId);o1[c1]={...l1,devId:l1.appId,devRev:l1._rev}}),a1.forEach(l1=>{const c1=extractAppId(l1.appId);if(!o1[c1])return;let u1={};o1[c1]&&Object.entries(o1[c1]).filter(([p1])=>DEV_PROPS.indexOf(p1)!==-1).forEach(p1=>{u1[p1[0]]=p1[1]}),o1[c1]={...o1[c1],...l1,...u1,prodId:l1.appId,prodRev:l1._rev}});const s1=Object.values(o1);s1.forEach(l1=>{l1.appId=extractAppId(l1.devId),delete l1._id,delete l1._rev}),n1.set(s1)}else n1.set([])}async function t1(r1,o1){await API.saveAppMetadata({appId:r1,metadata:o1}),n1.update(i1=>{const a1=i1.findIndex(s1=>s1.instance._id===r1);if(a1!==-1){let s1=i1[a1];s1={...s1,...o1},i1.apps=i1.splice(a1,1,s1)}return i1})}return{subscribe:n1.subscribe,load:e1,update:t1,extractAppId,getProdAppID}}const apps=createAppStore();function createEmailStore(){const n1=writable({});return{subscribe:n1.subscribe,templates:{fetch:async()=>{const e1=await API.getEmailTemplateDefinitions(),t1=await API.getEmailTemplates();n1.set({definitions:e1,templates:t1})},save:async e1=>{const t1=await API.saveEmailTemplate(e1);e1._rev=t1._rev,e1._id=t1._id,n1.update(r1=>{const o1=r1.templates.findIndex(i1=>i1.purpose===t1.purpose);return r1.templates.splice(o1,1,e1),r1})}}}}const email=createEmailStore();function createAuthStore(){const n1=writable({user:null,accountPortalAccess:!1,tenantId:"default",tenantSet:!1,loaded:!1,postLogout:!1}),e1=derived(n1,l1=>{var c1;return{user:l1.user,accountPortalAccess:l1.accountPortalAccess,tenantId:l1.tenantId,tenantSet:l1.tenantSet,loaded:l1.loaded,postLogout:l1.postLogout,isSSO:!!((c1=l1.user)!=null&&c1.provider)}});function t1(l1){n1.update(c1=>(c1.loaded=!0,c1.user=l1,c1.accountPortalAccess=l1==null?void 0:l1.accountPortalAccess,l1&&(c1.tenantId=l1.tenantId||"default",c1.tenantSet=!0),c1)),l1&&analytics.activate().then(()=>{var c1,u1,f1;analytics.identify(l1._id),analytics.showChat({email:l1.email,created_at:(l1.createdAt||Date.now())/1e3,name:(c1=l1.account)==null?void 0:c1.name,user_id:l1._id,tenant:l1.tenantId,admin:isAdmin(l1),builder:isBuilder(l1),"Company size":(u1=l1.account)==null?void 0:u1.size,"Job role":(f1=l1.account)==null?void 0:f1.profession},!!(l1!=null&&l1.account))}).catch(()=>{})}async function r1(l1){const c1=get_store_value(e1).tenantId;n1.update(u1=>(u1.tenantId=l1,u1.tenantSet=!!l1,u1)),c1!==l1&&await admin.init()}async function o1(l1){return await API.setInitInfo(l1),n1.update(c1=>(c1.initInfo=l1,c1)),l1}function i1(){n1.update(l1=>(l1.postLogout=!0,l1))}async function a1(){const l1=await API.getInitInfo();return n1.update(c1=>(c1.initInfo=l1,c1)),l1}const s1={checkQueryString:async()=>{const l1=new URLSearchParams(window.location.search);if(l1.has("tenantId")){const c1=l1.get("tenantId");await r1(c1)}},setOrg:async l1=>{await r1(l1)},getSelf:async()=>{try{const l1=await API.fetchBuilderSelf();t1(l1)}catch{t1(null)}},login:async l1=>{const c1=get_store_value(e1).tenantId;await API.logIn({username:l1.username,password:l1.password,tenantId:c1}),await s1.getSelf()},logout:async()=>{await API.logOut(),i1(),t1(null),await o1({})},updateSelf:async l1=>{await API.updateSelf({...l1});try{const c1=await API.fetchBuilderSelf();t1(c1)}catch{t1(null)}},forgotPassword:async l1=>{const c1=get_store_value(e1).tenantId;await API.requestForgotPassword({tenantId:c1,email:l1})},resetPassword:async(l1,c1)=>{const u1=get_store_value(e1).tenantId;await API.resetPassword({tenantId:u1,password:l1,resetCode:c1})},generateAPIKey:async()=>API.generateAPIKey(),fetchAPIKey:async()=>{const l1=await API.fetchDeveloperInfo();return l1==null?void 0:l1.apiKey}};return{subscribe:e1.subscribe,setOrganisation:r1,getInitInfo:a1,setInitInfo:o1,...s1}}const auth=createAuthStore(),OIDC_CONFIG={logo:void 0,name:void 0,uuid:void 0};function createOidcStore(){const n1=writable(OIDC_CONFIG),{set:e1,subscribe:t1}=n1;return{subscribe:t1,set:e1,init:async()=>{const r1=get_store_value(auth).tenantId,o1=await API.getOIDCConfig(r1);Object.keys(o1||{}).length?e1(...o1):e1(OIDC_CONFIG)}}}const oidc=createOidcStore();function templatesStore(){const{subscribe:n1,set:e1}=writable([]);return{subscribe:n1,load:async()=>{const t1=await API.getAppTemplates();e1(t1)}}}const templates=templatesStore(),ExpiringKeys={LICENSING_DAYPASS_WARNING_MODAL:"licensing_daypass_warning_90_modal",LICENSING_DAYPASS_WARNING_BANNER:"licensing_daypass_warning_90_banner",LICENSING_PAYMENT_FAILED:"licensing_payment_failed",LICENSING_ACCOUNT_DOWNGRADED_MODAL:"licensing_account_downgraded_modal",LICENSING_APP_LIMIT_MODAL:"licensing_app_limit_modal",LICENSING_ROWS_WARNING_BANNER:"licensing_rows_warning_banner",LICENSING_AUTOMATIONS_WARNING_BANNER:"licensing_automations_warning_banner",LICENSING_QUERIES_WARNING_BANNER:"licensing_queries_warning_banner",LICENSING_USERS_ABOVE_LIMIT_BANNER:"licensing_users_above_limit_banner"},StripeStatus={PAST_DUE:"past_due",ACTIVE:"active"},TENANT_FEATURE_FLAGS={LICENSING:"LICENSING",USER_GROUPS:"USER_GROUPS",ONBOARDING_TOUR:"ONBOARDING_TOUR"},isEnabled=n1=>{var t1;const e1=get_store_value(auth).user;return!!((t1=e1==null?void 0:e1.featureFlags)!=null&&t1.includes(n1))},UNLIMITED=-1,createLicensingStore=()=>{const n1={goToUpgradePage:()=>{},goToPricingPage:()=>{},license:void 0,isFreePlan:!0,isEnterprisePlan:!0,isBusinessPlan:!0,groupsEnabled:!1,backupsEnabled:!1,brandingEnabled:!1,scimEnabled:!1,quotaUsage:void 0,usageMetrics:void 0,quotaResetDaysRemaining:void 0,quotaResetDate:void 0,accountPastDue:void 0,pastDueEndDate:void 0,pastDueDaysRemaining:void 0,accountDowngraded:void 0,userCount:void 0,userLimit:void 0,userLimitReached:!1,errUserLimit:!1},e1=864e5,t1=writable(n1);function r1(s1,l1){return l1===UNLIMITED?!1:s1>=l1}function o1(s1,l1){return l1===UNLIMITED?!1:s1>l1}async function i1(){let s1=get_store_value(admin);return s1.loaded||(await admin.init(),s1=get_store_value(admin)),s1.cloud}const a1={init:async()=>{a1.setNavigation(),a1.setLicense(),await a1.setQuotaUsage()},setNavigation:()=>{var p1;const s1=get_store_value(admin),l1=get_store_value(auth),c1=(p1=l1==null?void 0:l1.user)!=null&&p1.accountPortalAccess?`${s1.accountPortalUrl}/portal/upgrade`:"/builder/portal/account/upgrade",u1=()=>{window.location.href=c1},f1=()=>{window.open("https://budibase.com/pricing/","_blank")};t1.update(d1=>({...d1,goToUpgradePage:u1,goToPricingPage:f1}))},setLicense:()=>{const s1=get_store_value(auth).user.license,l1=s1==null?void 0:s1.plan.type,c1=l1===PlanType.ENTERPRISE,u1=l1===PlanType.FREE,f1=l1===PlanType.BUSINESS,p1=s1.features.includes(Feature.USER_GROUPS),d1=s1.features.includes(Feature.BACKUPS),m1=s1.features.includes(Feature.SCIM),_1=s1.features.includes(Feature.ENVIRONMENT_VARIABLES),h1=s1.features.includes(Feature.ENFORCEABLE_SSO),b1=s1.features.includes(Feature.BRANDING),$1=s1.features.includes(Feature.AUDIT_LOGS),y1=s1.features.includes(Feature.SYNC_AUTOMATIONS),k1=s1.features.includes(Feature.APP_BUILDERS),S1=s1.features.includes(Feature.VIEW_PERMISSIONS);t1.update(O1=>({...O1,license:s1,isEnterprisePlan:c1,isFreePlan:u1,isBusinessPlan:f1,groupsEnabled:p1,backupsEnabled:d1,brandingEnabled:b1,scimEnabled:m1,environmentVariablesEnabled:_1,auditLogsEnabled:$1,enforceableSSO:h1,syncAutomationsEnabled:y1,isViewPermissionsEnabled:S1,perAppBuildersEnabled:k1}))},setQuotaUsage:async()=>{const s1=await API.getQuotaUsage();t1.update(l1=>({...l1,quotaUsage:s1})),await a1.setUsageMetrics()},usersLimitReached:s1=>r1(s1,get_store_value(t1).userLimit),usersLimitExceeded(s1){return o1(s1,get_store_value(t1).userLimit)},setUsageMetrics:async()=>{var s1,l1,c1,u1,f1,p1,d1,m1,_1,h1;if(isEnabled(TENANT_FEATURE_FLAGS.LICENSING)){const b1=get_store_value(t1).quotaUsage,$1=get_store_value(auth).user.license,y1=new Date,k1=(Z1,W1,r0)=>!W1||!r0||!Z1?{}:Z1.reduce((p0,h0)=>{const a0=W1[h0].value,t0=r0[h0]/a0*100;return p0[h0]=a0>-1?Math.floor(t0):-1,p0},{}),S1=k1(["dayPasses","queries","automations"],$1.quotas.usage.monthly,b1.monthly.current),O1=k1(["apps","rows"],$1.quotas.usage.static,b1.usageQuota),C1=(Z1,W1)=>W1>Z1?Math.round((W1.getTime()-Z1.getTime())/e1):0,M1=new Date(b1.quotaReset),z1=C1(y1,M1),P1=((l1=(s1=$1==null?void 0:$1.billing)==null?void 0:s1.subscription)==null?void 0:l1.downgradeAt)&&((u1=(c1=$1==null?void 0:$1.billing)==null?void 0:c1.subscription)==null?void 0:u1.downgradeAt)<=y1.getTime()&&((p1=(f1=$1==null?void 0:$1.billing)==null?void 0:f1.subscription)==null?void 0:p1.status)===StripeStatus.PAST_DUE&&($1==null?void 0:$1.plan.type)===PlanType.FREE,H1=(m1=(d1=$1==null?void 0:$1.billing)==null?void 0:d1.subscription)==null?void 0:m1.pastDueAt,R1=(h1=(_1=$1==null?void 0:$1.billing)==null?void 0:_1.subscription)==null?void 0:h1.downgradeAt;let q1,B1;H1&&R1&&(B1=new Date(R1),q1=C1(new Date(H1),B1));const I1=$1.quotas.usage.static.users,F1=I1==null?void 0:I1.value,j1=b1.usageQuota.users,X1=r1(j1,F1),Y1=o1(j1,F1),e0=await i1()&&$1.plan.model===PlanModel$1.PER_USER&&Y1;t1.update(Z1=>({...Z1,usageMetrics:{...S1,...O1},quotaResetDaysRemaining:z1,quotaResetDate:M1,accountDowngraded:P1,accountPastDue:H1!=null,pastDueEndDate:B1,pastDueDaysRemaining:q1,userCount:j1,userLimit:F1,userLimitReached:X1,errUserLimit:e0}))}}};return{subscribe:t1.subscribe,...a1}},licensing=createLicensingStore();function createGroupsStore(){const n1=writable([]),e1=o1=>{n1.update(i1=>{const a1=i1.findIndex(s1=>s1._id===o1._id);return a1>=0?i1.splice(a1,1,o1):i1.push(o1),i1})},t1=async o1=>{const i1=await API.getGroup(o1);e1(i1)},r1={init:async()=>{if(get_store_value(licensing).groupsEnabled){const o1=await API.getGroups();n1.set(o1.data)}},get:t1,save:async o1=>{const i1=await API.saveGroup(o1);return o1._id=i1._id,o1._rev=i1._rev,e1(o1),o1},delete:async o1=>{await API.deleteGroup({id:o1._id,rev:o1._rev}),n1.update(i1=>(i1=i1.filter(a1=>a1._id!==o1._id),i1))},addUser:async(o1,i1)=>{await API.addUsersToGroup(o1,i1),await t1(o1)},removeUser:async(o1,i1)=>{await API.removeUsersFromGroup(o1,i1),await t1(o1)},addApp:async(o1,i1,a1)=>{await API.addAppsToGroup(o1,[{appId:i1,roleId:a1}]),await t1(o1)},removeApp:async(o1,i1)=>{await API.removeAppsFromGroup(o1,[{appId:i1}]),await t1(o1)},getGroupAppIds:o1=>{var a1;let i1=Object.keys((o1==null?void 0:o1.roles)||{});return(a1=o1==null?void 0:o1.builder)!=null&&a1.apps&&(i1=i1.concat(o1.builder.apps)),i1},addGroupAppBuilder:async(o1,i1)=>await API.addGroupAppBuilder({groupId:o1,appId:i1}),removeGroupAppBuilder:async(o1,i1)=>await API.removeGroupAppBuilder({groupId:o1,appId:i1})};return{subscribe:n1.subscribe,actions:r1}}const groups=createGroupsStore();function createPluginsStore(){const{subscribe:n1,set:e1,update:t1}=writable([]);async function r1(){const s1=await API.getPlugins();e1(s1)}async function o1(s1){await API.deletePlugin(s1),t1(l1=>(l1=l1.filter(c1=>c1._id!==s1),l1))}async function i1(s1,l1,c1=null){let u1={source:s1,url:l1};switch(s1){case PluginSource.URL:u1.headers=c1;break;case PluginSource.GITHUB:u1.githubToken=c1;break}let p1=(await API.createPlugin(u1)).plugin;t1(d1=>{const m1=d1.findIndex(_1=>_1._id===p1._id);return m1>=0?d1.splice(m1,1,p1):d1.push(p1),d1})}async function a1(s1){if(!s1)return;let l1=new FormData;l1.append("file",s1);let u1=(await API.uploadPlugin(l1)).plugins[0];t1(f1=>{const p1=f1.findIndex(d1=>d1._id===u1._id);return p1>=0?f1.splice(p1,1,u1):f1.push(u1),f1})}return{subscribe:n1,load:r1,createPlugin:i1,deletePlugin:o1,uploadPlugin:a1}}const plugins$1=createPluginsStore();function createBackupsStore(){const n1=writable({});function e1(s1){n1.update(l1=>(l1.selectedBackup=s1,l1))}async function t1({appId:s1,trigger:l1,type:c1,page:u1,startDate:f1,endDate:p1}){return API.searchBackups({appId:s1,trigger:l1,type:c1,page:u1,startDate:f1,endDate:p1})}async function r1({appId:s1,backupId:l1,name:c1}){return API.restoreBackup({appId:s1,backupId:l1,name:c1})}async function o1({appId:s1,backupId:l1}){return API.deleteBackup({appId:s1,backupId:l1})}async function i1(s1){return API.createManualBackup(s1)}async function a1({appId:s1,backupId:l1,name:c1}){return API.updateBackup({appId:s1,backupId:l1,name:c1})}return{createManualBackup:i1,searchBackups:t1,selectBackup:e1,deleteBackup:o1,restoreBackup:r1,updateBackup:a1,subscribe:n1.subscribe}}const backups=createBackupsStore();function createEnvironmentStore(){const{subscribe:n1,update:e1}=writable({variables:[],status:{}});async function t1(){const l1=await API.checkEnvironmentVariableStatus();e1(c1=>(c1.status=l1,c1))}async function r1(){if(get_store_value(licensing).environmentVariablesEnabled){const c1=(await API.fetchEnvironmentVariables()).variables.map(u1=>({name:u1}));e1(u1=>(u1.variables=c1,u1))}}async function o1(l1){await API.createEnvironmentVariable(l1);let c1={name:l1.name};e1(u1=>(u1.variables=[c1,...u1.variables],u1))}async function i1(l1){await API.deleteEnvironmentVariable(l1),e1(c1=>(c1.variables=c1.variables.filter(u1=>u1.name!==l1),c1))}async function a1(l1){await API.updateEnvironmentVariable(l1)}async function s1(){await API.publishEvent(EventPublishType.ENV_VAR_UPGRADE_PANEL_OPENED)}return{subscribe:n1,checkStatus:t1,loadVariables:r1,createVariable:o1,deleteVariable:i1,updateVariable:a1,upgradePanelOpened:s1}}const environment=createEnvironmentStore(),menu=derived([admin,auth],([n1,e1])=>{const t1=e1==null?void 0:e1.user,r1=isAdmin(t1),o1=n1==null?void 0:n1.cloud;let i1=[{title:"Users",href:"/builder/portal/users/users"}];isEnabled(TENANT_FEATURE_FLAGS.USER_GROUPS)&&i1.push({title:"Groups",href:"/builder/portal/users/groups"});let a1=[{title:"Apps",href:"/builder/portal/apps"}];if(isGlobalBuilder(t1)&&(a1.push({title:"Users",href:"/builder/portal/users",subPages:i1}),a1.push({title:"Plugins",href:"/builder/portal/plugins"})),r1){let s1=[{title:"Auth",href:"/builder/portal/settings/auth"},{title:"Email",href:"/builder/portal/settings/email"},{title:"Organisation",href:"/builder/portal/settings/organisation"},{title:"Branding",href:"/builder/portal/settings/branding"},{title:"Environment",href:"/builder/portal/settings/environment"}];o1||(s1.push({title:"Version",href:"/builder/portal/settings/version"}),s1.push({title:"Diagnostics",href:"/builder/portal/settings/diagnostics"})),a1.push({title:"Settings",href:"/builder/portal/settings",subPages:s1})}if(isEnabled(TENANT_FEATURE_FLAGS.LICENSING)){let s1=[{title:"Usage",href:"/builder/portal/account/usage"}];r1&&(s1.push({title:"Audit Logs",href:"/builder/portal/account/auditLogs"}),o1||s1.push({title:"System Logs",href:"/builder/portal/account/systemLogs"})),o1&&(t1==null?void 0:t1.accountPortalAccess)?s1.push({title:"Upgrade",href:(n1==null?void 0:n1.accountPortalUrl)+"/portal/upgrade"}):!o1&&r1&&s1.push({title:"Upgrade",href:"/builder/portal/account/upgrade"}),(t1==null?void 0:t1.accountPortalAccess)&&t1.account.stripeCustomerId&&s1.push({title:"Billing",href:(n1==null?void 0:n1.accountPortalUrl)+"/portal/billing"}),a1.push({title:"Account",href:"/builder/portal/account",subPages:s1})}return a1});function createAuditLogsStore(){const{subscribe:n1,update:e1}=writable({events:{},logs:{}});async function t1(i1={}){if(get_store_value(licensing).auditLogsEnabled){const a1=await API.searchAuditLogs(i1);return e1(s1=>({...s1,logs:{...a1,opts:i1}})),a1}}async function r1(){const i1=await API.getEventDefinitions();e1(a1=>({...a1,...i1}))}function o1(i1={}){return API.getDownloadUrl(i1)}return{subscribe:n1,search:t1,getEventDefinitions:r1,getDownloadUrl:o1}}const auditLogs=createAuditLogsStore(),createFeatureStore=()=>{const n1=writable({scim:{isFeatureFlagEnabled:!1,isConfigFlagEnabled:!1}}),e1=writable({isScimEnabled:!1});n1.subscribe(r1=>{e1.update(o1=>({...o1,isScimEnabled:r1.scim.isFeatureFlagEnabled&&r1.scim.isConfigFlagEnabled}))}),licensing.subscribe(r1=>{n1.update(o1=>({...o1,scim:{...o1.scim,isFeatureFlagEnabled:r1.scimEnabled}}))});const t1={init:async()=>{const r1=await API.getConfig(ConfigType.SCIM);n1.update(o1=>{var i1;return{...o1,scim:{...o1.scim,isConfigFlagEnabled:(i1=r1==null?void 0:r1.config)==null?void 0:i1.enabled}}})}};return{subscribe:e1.subscribe,...t1}},features=createFeatureStore(),convertOldFieldFormat=n1=>n1?n1.map(t1=>typeof t1=="string"?{field:t1,active:!0}:typeof(t1==null?void 0:t1.active)!="boolean"?{field:t1.name,active:!0}:t1):[],getComponentForField=(n1,e1)=>{if(!n1||!(e1!=null&&e1[n1]))return null;const t1=e1[n1].type;return FieldTypeToComponentMap[t1]},FieldTypeToComponentMap={string:"stringfield",number:"numberfield",bigint:"bigintfield",options:"optionsfield",array:"multifieldselect",boolean:"booleanfield",longform:"longformfield",datetime:"datetimefield",attachment:"attachmentfield",link:"relationshipfield",json:"jsonfield",barcodeqr:"codescanner"},CAPTURE_VAR_INSIDE_TEMPLATE=/{{([^}]+)}}/g,CAPTURE_VAR_INSIDE_JS=/\$\("([^")]+)"\)/g,getBindableProperties=(n1,e1)=>{const t1=getContextBindings(n1,e1),r1=getUserBindings(),o1=getUrlBindings(n1),i1=getDeviceBindings(),a1=getStateBindings(),s1=getSelectedRowsBindings(n1),l1=getRoleBindings();return[...t1,...o1,...a1,...r1,...i1,...s1,...l1]},getRestBindings=()=>{const n1=get_store_value(licensing).environmentVariablesEnabled;return[...getUserBindings(),...getAuthBindings(),...n1?getEnvironmentBindings():[]]},getAuthBindings=()=>{let n1=[];const e1=Fh("user"),t1=Fh("oauth2"),r1=Fh("accessToken");return n1=[{runtime:`${e1}.${t1}.${r1}`,readable:"Current User.OAuthToken",key:"accessToken",display:{name:"OAuthToken",type:"text"}}].map(i1=>({type:"context",runtimeBinding:i1.runtime,readableBinding:i1.readable,fieldSchema:{type:"string",name:i1.key},providerId:"user",category:"Current User",display:i1.display})),n1},getEnvironmentBindings=()=>get_store_value(environment).variables.map(e1=>({type:"context",runtimeBinding:`env.${Fh(e1.name)}`,readableBinding:`env.${e1.name}`,category:"Environment",icon:"Key",display:{type:"string",name:e1.name}})),toBindingsArray=(n1,e1,t1)=>n1?Object.keys(n1).reduce((r1,o1)=>{if(!o1)return r1;let i1={type:"context",runtimeBinding:o1,readableBinding:`${e1}.${o1}`,icon:"Brackets"};return t1&&(i1.category=t1),r1.push(i1),r1},[]):[],readableToRuntimeMap=(n1,e1)=>!n1||!e1?{}:Object.keys(e1).reduce((t1,r1)=>(t1[r1]=readableToRuntimeBinding(n1,e1[r1]),t1),{}),runtimeToReadableMap=(n1,e1)=>!n1||!e1?{}:Object.keys(e1).reduce((t1,r1)=>(t1[r1]=runtimeToReadableBinding(n1,e1[r1]),t1),{}),getComponentBindableProperties=(n1,e1)=>{if(!n1||!e1)return[];const t1=findComponent(n1.props,e1),r1=store.actions.components.getDefinition(t1==null?void 0:t1._component);return r1!=null&&r1.context?getProviderContextBindings(n1,t1):[]},getContextProviderComponents=(n1,e1,t1,r1={includeSelf:!1})=>{if(!n1||!e1)return[];const o1=findComponentPath(n1.props,e1);return r1!=null&&r1.includeSelf||o1.pop(),o1.filter(i1=>{const a1=store.actions.components.getDefinition(i1._component);return a1!=null&&a1.context?t1?(Array.isArray(a1.context)?a1.context:[a1.context]).find(l1=>l1.type===t1)!=null:!0:!1})},getActionProviderComponents=(n1,e1,t1)=>{if(!n1||!e1)return[];const r1=findComponentPath(n1.props,e1);return r1.pop(),r1.filter(o1=>{var a1;const i1=store.actions.components.getDefinition(o1._component);return(a1=i1==null?void 0:i1.actions)==null?void 0:a1.includes(t1)})},getDatasourceForProvider=(n1,e1)=>{const t1=getComponentSettings(e1==null?void 0:e1._component),r1=t1.find(s1=>s1.type==="dataProvider");if(r1){const s1=e1[r1.key],l1=extractLiteralHandlebarsID(s1),c1=findComponent(n1==null?void 0:n1.props,l1);return getDatasourceForProvider(n1,c1)}const o1=["dataSource","table","schema"],i1=t1.find(s1=>o1.includes(s1.type));if(!i1)return null;const a1=e1[i1==null?void 0:i1.key];return typeof a1=="string"?{tableId:a1,type:"table"}:a1},getContextBindings=(n1,e1)=>{const t1=getContextProviderComponents(n1,e1);return getProviderContextBindings(n1,t1)},getProviderContextBindings=(n1,e1)=>{if(!n1||!e1)return[];Array.isArray(e1)||(e1=[e1]);let t1=[];return e1.forEach(r1=>{const o1=store.actions.components.getDefinition(r1._component);(Array.isArray(o1.context)?o1.context:[o1.context]).forEach(a1=>{var m1;if(!(a1!=null&&a1.type))return;let s1,l1,c1,u1=a1.suffix;if(a1.type==="form")s1=buildFormSchema(r1,n1),c1="Fields";else if(a1.type==="static")s1={},(a1.values||[]).forEach(h1=>{s1[h1.key]={name:h1.label,type:h1.type||"string"}});else if(a1.type==="schema"){const _1=getDatasourceForProvider(n1,r1);if(!_1)return;const h1=getSchemaForDatasource(n1,_1);if(s1=h1.schema,l1=h1.table,_1.type==="jsonarray"){const b1=_1.label.split(".");c1=b1[b1.length-1]}else if(_1.type==="viewV2"){const b1=Object.values((l1==null?void 0:l1.views)||{}).find($1=>$1.id===_1.id);c1=b1==null?void 0:b1.name}else c1=(m1=h1.table)==null?void 0:m1.name}if(!s1)return;const f1=Object.keys(s1).sort();let p1=r1._id;if(u1&&(p1+=`-${u1}`),!filterCategoryByContext(r1,a1))return;const d1=Fh(p1);f1.forEach(_1=>{const h1=s1[_1],b1=_1.split(".").map(Fh).join("."),$1=`${d1}.${b1}`;let y1=r1._instanceName;c1&&(y1+=`.${c1}`),y1+=`.${h1.name||_1}`;const k1=getComponentBindingCategory(r1,a1,o1);t1.push({type:"context",runtimeBinding:$1,readableBinding:y1,fieldSchema:h1,providerId:p1,tableId:l1==null?void 0:l1._id,component:r1._component,category:k1.category,icon:k1.icon,display:{name:h1.name||_1,type:h1.type}})})})}),t1},filterCategoryByContext=(n1,e1)=>{const{_component:t1}=n1;return!(t1.endsWith("formblock")&&(n1.actionType=="Create"&&e1.type==="schema"||n1.actionType=="View"&&e1.type==="form"))},getComponentBindingCategory=(n1,e1,t1)=>{let r1=t1.icon,o1=n1._instanceName;if(n1._component.endsWith("formblock")){let i1={form:"Fields",schema:"Row"};o1=`${n1._instanceName} - ${i1[e1.type]}`,r1=e1.type==="form"?"Form":"Data"}return{icon:r1,category:o1}},getUserBindings=()=>{let n1=[];const{schema:e1}=getSchemaForDatasourcePlus(TableNames.USERS),t1=Object.keys(e1).sort(),r1=Fh("user");return n1=t1.reduce((o1,i1)=>{const a1=e1[i1];return o1.push({type:"context",runtimeBinding:`${r1}.${Fh(i1)}`,readableBinding:`Current User.${i1}`,fieldSchema:a1,providerId:"user",category:"Current User",icon:"User",display:{name:i1}}),o1},[]),n1},getDeviceBindings=()=>{var e1;let n1=[];if((e1=get_store_value(store).clientFeatures)!=null&&e1.deviceAwareness){const t1=Fh("device");n1.push({type:"context",runtimeBinding:`${t1}.${Fh("mobile")}`,readableBinding:"Device.Mobile",category:"Device",icon:"DevicePhone",display:{type:"boolean",name:"mobile"}}),n1.push({type:"context",runtimeBinding:`${t1}.${Fh("tablet")}`,readableBinding:"Device.Tablet",category:"Device",icon:"DevicePhone",display:{type:"boolean",name:"tablet"}})}return n1},getSelectedRowsBindings=n1=>{var t1;let e1=[];if((t1=get_store_value(store).clientFeatures)!=null&&t1.rowSelection){let r1=findAllMatchingComponents(n1==null?void 0:n1.props,a1=>a1._component.endsWith("table"));const o1=Fh("rowSelection");e1=e1.concat(r1.map(a1=>({type:"context",runtimeBinding:`${o1}.${Fh(a1._id)}.${Fh("selectedRows")}`,readableBinding:`${a1._instanceName}.Selected rows`,category:"Selected rows",icon:"ViewRow",display:{name:a1._instanceName}})));let i1=findAllMatchingComponents(n1==null?void 0:n1.props,a1=>a1._component.endsWith("tableblock"));e1=e1.concat(i1.map(a1=>({type:"context",runtimeBinding:`${o1}.${Fh(a1._id+"-table")}.${Fh("selectedRows")}`,readableBinding:`${a1._instanceName}.Selected rows`,category:"Selected rows",icon:"ViewRow",display:{name:a1._instanceName}})))}return e1},makeStateBinding=n1=>({type:"context",runtimeBinding:`${Fh("state")}.${Fh(n1)}`,readableBinding:`State.${n1}`,category:"State",icon:"AutomatedSegment",display:{name:n1}}),getStateBindings=()=>{var e1;let n1=[];return(e1=get_store_value(store).clientFeatures)!=null&&e1.state&&(n1=getAllStateVariables().map(makeStateBinding)),n1},getUrlBindings=n1=>{var s1,l1;const t1=((l1=(s1=n1==null?void 0:n1.routing)==null?void 0:s1.route)!=null?l1:"").split("/");let r1=[];t1.forEach(c1=>{c1.startsWith(":")&&c1.length>1&&r1.push(c1.replace(/:/g,"").replace(/\?/g,""))});const o1=Fh("url"),i1=r1.map(c1=>({type:"context",runtimeBinding:`${o1}.${Fh(c1)}`,readableBinding:`URL.${c1}`,category:"URL",icon:"RailTop",display:{type:"string",name:c1}})),a1={type:"context",runtimeBinding:Fh("query"),readableBinding:"Query params",category:"URL",icon:"RailTop",display:{type:"object",name:"Query params"}};return i1.concat([a1])},getRoleBindings=()=>(get_store_value(roles)||[]).map(n1=>({type:"context",runtimeBinding:`trim "${n1._id}"`,readableBinding:`Role.${n1.name}`,category:"Role",icon:"UserGroup",display:{type:"string",name:n1.name}})),getEventContextBindings=({settingKey:n1,componentInstance:e1,componentId:t1,componentDefinition:r1,asset:o1})=>{var f1;let i1=[];const a1=o1!=null?o1:get_store_value(currentAsset),s1=e1!=null?e1:findComponent(a1.props,t1);if(!s1)return i1;const l1=r1!=null?r1:store.actions.components.getDefinition(s1==null?void 0:s1._component),u1=getComponentSettings(s1==null?void 0:s1._component).find(p1=>p1.key===n1);return(f1=u1==null?void 0:u1.context)!=null&&f1.length&&u1.context.forEach(p1=>{i1.push({readableBinding:p1.label,runtimeBinding:`${Fh("eventContext")}.${Fh(p1.key)}`,category:s1._instanceName,icon:l1.icon,display:{name:p1.label}})}),i1},getActionBindings=(n1,e1)=>{let t1=[];const r1=n1==null?void 0:n1.findIndex(i1=>i1.id===e1);return r1==null||r1===-1||n1.slice(0,r1).forEach((i1,a1)=>{const s1=ActionDefinitions.actions.find(l1=>l1.name===i1["##eventHandlerType"]);s1.context&&s1.context.forEach(l1=>{t1.push({readableBinding:`Action ${a1+1}.${l1.label}`,runtimeBinding:`actions.${a1}.${l1.value}`,category:"Actions",icon:"JourneyAction",display:{name:l1.label}})})}),t1},getSchemaForDatasourcePlus=(n1,e1)=>{const r1=(n1==null?void 0:n1.includes("view_"))?{type:"viewV2",id:n1,tableId:n1.split("_").slice(1,3).join("_")}:{type:"table",tableId:n1};return getSchemaForDatasource(null,r1,e1)},getSchemaForDatasource=(n1,e1,t1)=>{var i1,a1;t1=t1||{};let r1,o1;if(e1){const{type:s1}=e1,l1=get_store_value(tables).list;if(s1==="provider"){const m1=findComponent(n1==null?void 0:n1.props,e1.providerId),_1=getDatasourceForProvider(n1,m1);return getSchemaForDatasource(n1,_1,t1)}else if(s1==="query")o1=get_store_value(queries).list.find(_1=>_1._id===e1._id);else if(s1==="field"){o1={name:e1.fieldName};const{fieldType:m1}=e1;m1==="attachment"?r1={url:{type:"string"},name:{type:"string"}}:m1==="array"&&(r1={value:{type:"string"}})}else if(s1==="jsonarray"){o1=l1.find(_1=>_1._id===e1.tableId);let m1=o1==null?void 0:o1.schema;r1=getJSONArrayDatasourceSchema(m1,e1)}else o1=l1.find(m1=>m1._id===e1.tableId);if(o1&&!r1)if(s1==="view")r1=fp.cloneDeep((a1=(i1=o1.views)==null?void 0:i1[e1.name])==null?void 0:a1.schema);else if(s1==="viewV2"){const m1=Object.values(o1.views||{}).find(_1=>_1.id===e1.id);r1=fp.cloneDeep(m1==null?void 0:m1.schema),Object.keys(r1||{}).forEach(_1=>{r1[_1].visible||delete r1[_1]})}else s1==="query"&&(t1.formSchema||t1.searchableSchema)?(r1={},(o1.parameters||[]).forEach(_1=>{_1!=null&&_1.name&&(r1[_1.name]={..._1,type:"string"})})):r1=fp.cloneDeep(o1.schema);if(r1){let m1={};Object.keys(r1).forEach(_1=>{const h1=r1[_1];if((h1==null?void 0:h1.type)==="json"){const b1=convertJSONSchemaToTableSchema(h1,{squashObjects:!0});Object.keys(b1).forEach($1=>{m1[`${_1}.${$1}`]={type:b1[$1].type,nestedJSON:!0}})}}),r1={...r1,...m1}}const c1=o1&&!o1.sql,u1=["table","link","viewV2"].includes(e1.type);let f1=u1,p1=u1&&c1;t1.formSchema?(f1=!1,p1=!1):t1.searchableSchema&&(f1=u1&&c1),r1&&(f1&&(r1._id={type:"string"}),p1&&(r1._rev={type:"string"}));let d1={};Object.entries(r1||{}).forEach(([m1,_1])=>{typeof _1=="string"?d1[m1]={type:_1,name:m1}:d1[m1]={..._1,name:m1}}),r1=d1}return{schema:r1,table:o1}},buildFormSchema=(n1,e1)=>{var i1;let t1={};if(!n1)return t1;if(n1._component.endsWith("formblock")){let a1={};const s1=getDatasourceForProvider(e1,n1),l1=getSchemaForDatasource(n1,s1);if(!n1.fields)Object.values(l1==null?void 0:l1.schema).filter(({autocolumn:c1,name:u1})=>!c1&&!["_rev","_id"].includes(u1)).forEach(({name:c1})=>{a1[c1]={type:l1==null?void 0:l1.schema[c1].type}});else{const c1=convertOldFieldFormat(n1.fields||[]);c1==null||c1.forEach(({field:u1,active:f1})=>{!f1||l1!=null&&l1.schema[u1]&&(a1[u1]={type:l1==null?void 0:l1.schema[u1].type})})}return a1}const o1=getComponentSettings(n1._component).find(a1=>a1.key==="field"&&a1.type.startsWith("field/"));if(o1&&n1.field){const a1=o1.type.split("field/")[1];a1&&(t1[n1.field]={type:a1})}return(i1=n1._children)==null||i1.forEach(a1=>{const s1=buildFormSchema(a1,e1);t1={...t1,...s1}}),t1},getAllStateVariables=()=>{let n1=[];getAllAssets().forEach(t1=>{findAllMatchingComponents(t1.props,r1=>{getComponentSettings(r1._component).filter(i1=>i1.type==="event").forEach(i1=>{n1.push(r1[i1.key])})})}),get_store_value(store).screens.forEach(t1=>{t1.onLoad&&n1.push(t1.onLoad)});let e1=new Set;return n1.forEach(t1=>{!Array.isArray(t1)||t1.forEach(r1=>{var o1,i1,a1;r1["##eventHandlerType"]==="Update State"&&((o1=r1.parameters)==null?void 0:o1.type)==="set"&&((i1=r1.parameters)==null?void 0:i1.key)&&((a1=r1.parameters)==null?void 0:a1.value)&&e1.add(r1.parameters.key)})}),Array.from(e1)},getAllAssets=()=>{let n1=[];return n1=n1.concat(get_store_value(store).layouts||[]),n1=n1.concat(get_store_value(store).screens||[]),n1},shouldReplaceBinding=(n1,e1,t1)=>{if(!(n1!=null&&n1.includes(e1)))return!1;if(t1==="readableBinding")return!0;const r1=n1.replace(/\s+/g,""),o1=e1.replace(/\s+/g,"");return![`[${o1}]`,`"${o1}"`,`'${o1}'`].find(a1=>r1==null?void 0:r1.includes(a1))},replaceBetween=(n1,e1,t1,r1)=>n1.substring(0,e1)+r1+n1.substring(t1),bindingReplacement=(n1,e1,t1)=>{const r1=Wh(e1);r1&&(e1=qh(e1));const o1=r1?CAPTURE_VAR_INSIDE_JS:CAPTURE_VAR_INSIDE_TEMPLATE,i1=t1==="runtimeBinding"?"readableBinding":"runtimeBinding";if(typeof e1!="string")return e1;const a1=n1.map(c1=>c1[i1]).sort((c1,u1)=>u1.length-c1.length),s1=e1.match(o1)||[];let l1=e1;for(let c1 of s1){let u1=c1,f1=u1;for(let p1 of a1)if(r1||shouldReplaceBinding(u1,p1,t1)){const d1=n1.find(_1=>_1[i1]===p1);let m1;do if(m1=f1.indexOf(p1),m1!==-1){let _1=m1+p1.length,h1=Array(d1[t1].length+1).join("*");f1=replaceBetween(f1,m1,_1,h1),u1=replaceBetween(u1,m1,_1,d1[t1])}while(m1!==-1)}l1=l1.replace(c1,u1)}return r1&&(l1=Hh(l1)),l1},extractLiteralHandlebarsID=n1=>{var e1;return!n1||typeof n1!="string"?null:(e1=n1.match(/{{\s*literal\s*\[+([^\]]+)].*}}/))==null?void 0:e1[1]},readableToRuntimeBinding=(n1,e1)=>bindingReplacement(n1,e1,"runtimeBinding"),runtimeToReadableBinding=(n1,e1)=>bindingReplacement(n1,e1,"readableBinding"),getComponentFieldOptions=(n1,e1,t1,r1=!0)=>{const o1=findClosestMatchingComponent(n1,e1,l1=>l1._component==="@budibase/standard-components/form"),i1=getDatasourceForProvider(n1,o1),a1=getSchemaForDatasource(n1,i1,{formSchema:!0}).schema;let s1=[t1];return r1&&(t1==="field/options"||t1==="field/longform")&&(s1=[t1,"field/string"]),s1=s1.map(l1=>l1.slice(l1.indexOf("/")+1)),Object.entries(a1||{}).filter(l1=>s1.includes(l1[1].type)).map(l1=>l1[0])},createBuilderWebsocket=n1=>{const e1=createWebsocket("/socket/builder");return e1.on("connect",()=>{e1.emit(BuilderSocketEvent.SelectApp,{appId:n1},({users:t1})=>{userStore.actions.init(t1)})}),e1.on("connect_error",t1=>{console.log("Failed to connect to builder websocket:",t1.message)}),e1.on("disconnect",()=>{userStore.actions.reset()}),e1.onOther(SocketEvent.UserUpdate,({user:t1})=>{userStore.actions.updateUser(t1)}),e1.onOther(SocketEvent.UserDisconnect,({sessionId:t1})=>{userStore.actions.removeUser(t1)}),e1.onOther(BuilderSocketEvent.LockTransfer,({userId:t1})=>{var r1,o1;t1===((o1=(r1=get_store_value(auth))==null?void 0:r1.user)==null?void 0:o1._id)&&store.update(i1=>({...i1,hasLock:!0}))}),e1.onOther(BuilderSocketEvent.TableChange,({id:t1,table:r1})=>{tables.replaceTable(t1,r1)}),e1.onOther(BuilderSocketEvent.DatasourceChange,({id:t1,datasource:r1})=>{datasources.replaceDatasource(t1,r1)}),e1.onOther(BuilderSocketEvent.ScreenChange,({id:t1,screen:r1})=>{store.actions.screens.replace(t1,r1)}),e1.onOther(BuilderSocketEvent.AppMetadataChange,({metadata:t1})=>{store.actions.metadata.replace(t1)}),e1.onOther(BuilderSocketEvent.AppPublishChange,async({user:t1,published:r1})=>{await apps.load(),r1&&await deploymentStore.actions.load();const o1=r1?"published":"unpublished";notifications.success(`${getUserLabel(t1)} ${o1} this app`)}),e1.onOther(BuilderSocketEvent.AutomationChange,({id:t1,automation:r1})=>{automationStore.actions.replace(t1,r1)}),e1},INITIAL_FRONTEND_STATE={initialised:!1,apps:[],name:"",url:"",description:"",layouts:[],screens:[],components:[],clientFeatures:{spectrumThemes:!1,intelligentLoading:!1,deviceAwareness:!1,state:!1,rowSelection:!1,customThemes:!1,devicePreview:!1,messagePassing:!1,continueIfAction:!1,showNotificationAction:!1,sidePanel:!1},features:{componentValidation:!1},errors:[],hasAppPackage:!1,libraries:null,appId:"",routes:{},clientLibPath:"",theme:"",customTheme:{},previewDevice:"desktop",highlightedSettingKey:null,propertyFocus:null,builderSidePanel:!1,hasLock:!0,showPreview:!1,selectedScreenId:null,selectedComponentId:null,selectedLayoutId:null,selectedComponentInstance:null,onboarding:!1,tourNodes:null},getFrontendStore=()=>{const n1=writable({...INITIAL_FRONTEND_STATE});let e1;const t1=sequential(async(r1,o1)=>{const a1=get_store_value(n1).screens.find(c1=>c1._id===o1);if(!a1)return;let s1=fp.cloneDeep(a1);if(r1(s1)!==!1)return await n1.actions.screens.save(s1)});return n1.actions={reset:()=>{n1.set({...INITIAL_FRONTEND_STATE}),e1==null||e1.disconnect(),e1=null},initialise:async r1=>{const{layouts:o1,screens:i1,application:a1,clientLibPath:s1,hasLock:l1}=r1;e1||(e1=createBuilderWebsocket(a1.appId)),await n1.actions.components.refreshDefinitions(a1.appId),n1.update(c1=>({...c1,libraries:a1.componentLibraries,name:a1.name,description:a1.description,appId:a1.appId,url:a1.url,layouts:o1||[],screens:i1||[],theme:a1.theme||"spectrum--light",customTheme:a1.customTheme,hasAppPackage:!0,appInstance:a1.instance,clientLibPath:s1,previousTopNavPath:{},version:a1.version,revertableVersion:a1.revertableVersion,upgradableVersion:a1.upgradableVersion,navigation:a1.navigation||{},usedPlugins:a1.usedPlugins||[],hasLock:l1,features:{...INITIAL_FRONTEND_STATE.features,...a1.features},icon:a1.icon||{},initialised:!0})),screenHistoryStore.reset(),automationHistoryStore.reset(),database.set(a1.instance),await datasources.init(),await integrations.init(),await queries.init(),await tables.init()},theme:{save:async r1=>{const o1=get_store_value(n1).appId,i1=await API.saveAppMetadata({appId:o1,metadata:{theme:r1}});n1.update(a1=>(a1.theme=i1.theme,a1))}},customTheme:{save:async r1=>{const o1=get_store_value(n1).appId,i1=await API.saveAppMetadata({appId:o1,metadata:{customTheme:r1}});n1.update(a1=>(a1.customTheme=i1.customTheme,a1))}},navigation:{save:async r1=>{const o1=get_store_value(n1).appId,i1=await API.saveAppMetadata({appId:o1,metadata:{navigation:r1}});n1.update(a1=>(a1.navigation=i1.navigation,a1))}},screens:{select:r1=>{const o1=get_store_value(n1),i1=o1.screens.find(a1=>a1._id===r1);!i1||o1.selectedScreenId!==i1._id&&n1.update(a1=>(a1.selectedScreenId=i1._id,a1))},validate:r1=>{const o1=(a1,s1=[],l1=[])=>{var f1,p1,d1;const c1=a1._component;if(s1.includes(c1)||l1.length&&!l1.includes(c1))return c1;if(!((f1=a1==null?void 0:a1._children)!=null&&f1.length))return;c1==="@budibase/standard-components/sidepanel"&&(s1=[]);const u1=n1.actions.components.getDefinition(a1._component);if(l1=[],(p1=u1==null?void 0:u1.legalDirectChildren)!=null&&p1.length&&(l1=u1.legalDirectChildren.map(m1=>`@budibase/standard-components/${m1}`)),(d1=u1==null?void 0:u1.illegalChildren)!=null&&d1.length){const m1=u1.illegalChildren.map(_1=>`@budibase/standard-components/${_1}`);s1=[...new Set([...s1,...m1])]}for(let m1 of a1._children){const _1=o1(m1,s1,l1);if(_1)return _1}},i1=o1(r1.props);if(i1)throw`You can't place a ${n1.actions.components.getDefinition(i1).name} here`},save:async r1=>{var c1;const o1=get_store_value(n1);(c1=o1.features)!=null&&c1.componentValidation&&n1.actions.screens.validate(r1),n1.actions.screens.enrichEmptySettings(r1);const i1=r1._id===void 0,a1=await API.saveScreen(r1),s1=await API.fetchAppRoutes();let l1=o1.usedPlugins;if(a1.pluginAdded){const{application:u1}=await API.fetchAppPackage(o1.appId);l1=u1.usedPlugins||[]}return n1.update(u1=>{const f1=u1.screens.findIndex(p1=>p1._id===a1._id);return f1!==-1?u1.screens.splice(f1,1,a1):u1.screens.push(a1),i1&&(u1.selectedScreenId=a1._id,u1.selectedComponentId=a1.props._id),u1.routes=s1.routes,u1.usedPlugins=l1,u1}),a1},patch:async(r1,o1)=>{if(o1||(o1=get_store_value(n1).selectedScreenId),!(!o1||!r1))return await t1(r1,o1)},replace:async(r1,o1)=>{if(!!r1)if(!o1)n1.update(i1=>({...i1,screens:i1.screens.filter(a1=>a1._id!==r1)}));else{const i1=get_store_value(n1).screens.findIndex(a1=>a1._id===o1._id);i1===-1?n1.update(a1=>({...a1,screens:[...a1.screens,o1]})):n1.update(a1=>(a1.screens[i1]=o1,a1))}},delete:async r1=>{const o1=Array.isArray(r1)?r1:[r1];let i1=[],a1=[];o1.forEach(c1=>{i1.push(API.deleteScreen({screenId:c1._id,screenRev:c1._rev})),a1.push(c1.routing.route)}),await Promise.all(i1),await n1.actions.links.delete(a1);const s1=o1.map(c1=>c1._id),l1=await API.fetchAppRoutes();return n1.update(c1=>(c1.screens=c1.screens.filter(u1=>!s1.includes(u1._id)),s1.includes(c1.selectedScreenId)&&(c1.selectedScreenId=null,c1.selectedComponentId=null),c1.routes=l1.routes,c1)),null},updateSetting:async(r1,o1,i1)=>{if(!r1||!o1)return;const a1=u1=>{if(!u1||deepGet(u1,o1)===i1)return!1;deepSet(u1,o1,i1)};await n1.actions.screens.patch(a1,r1._id);const s1=get_store_value(n1),l1=s1.screens.find(u1=>u1._id===r1._id);if(!l1)return;const c1=s1.screens.filter(u1=>u1.routing.roleId===l1.routing.roleId&&u1.routing.homeScreen&&u1._id!==r1._id);if(c1.length&&l1.routing.homeScreen){const u1=f1=>{f1.routing.homeScreen=!1};for(let f1 of c1)await n1.actions.screens.patch(u1,f1._id)}},removeCustomLayout:async r1=>{const o1=get_store_value(n1).layouts.find(a1=>a1._id===r1.layoutId),i1=a1=>{a1.layoutId=null,a1.showNavigation=(o1==null?void 0:o1.props.navigation)!=="None",a1.width=(o1==null?void 0:o1.props.width)||"Large"};await n1.actions.screens.patch(i1,r1._id)},enrichEmptySettings:r1=>{findAllMatchingComponents(r1.props,i1=>i1).forEach(i1=>{n1.actions.components.enrichEmptySettings(i1,{screen:r1})})}},preview:{setDevice:r1=>{n1.update(o1=>(o1.previewDevice=r1,o1))},sendEvent:(r1,o1)=>{const{previewEventHandler:i1}=get_store_value(n1);i1==null||i1(r1,o1)},registerEventHandler:r1=>{n1.update(o1=>(o1.previewEventHandler=r1,o1))}},layouts:{select:r1=>{var a1;const o1=get_store_value(n1),i1=o1.layouts.find(s1=>s1._id===r1);!i1||o1.selectedLayoutId===i1._id&&o1.selectedComponentId===((a1=i1.props)==null?void 0:a1._id)||n1.update(s1=>{var l1;return s1.selectedLayoutId=i1._id,s1.selectedComponentId=(l1=i1.props)==null?void 0:l1._id,s1})},delete:async r1=>{!(r1!=null&&r1._id)||(await API.deleteLayout({layoutId:r1._id,layoutRev:r1._rev}),n1.update(o1=>(o1.layouts=o1.layouts.filter(i1=>i1._id!==r1._id),o1)))}},components:{refreshDefinitions:async r1=>{r1||(r1=get_store_value(n1).appId);const o1=await API.fetchComponentLibDefinitions(r1),i1=Object.keys(o1).filter(a1=>a1.startsWith("plugin/"));n1.update(a1=>({...a1,components:o1,customComponents:i1,clientFeatures:{...INITIAL_FRONTEND_STATE.clientFeatures,...o1.features}}))},getDefinition:r1=>r1?get_store_value(n1).components[r1]:null,getDefaultDatasource:()=>{const r1=get_store_value(tables).list.filter(i1=>i1._id!=="ta_users");let o1=r1.find(i1=>i1.sourceId!==BUDIBASE_INTERNAL_DB_ID&&i1.type===DB_TYPE_INTERNAL);return o1||(o1=r1.find(i1=>i1.sourceId===BUDIBASE_INTERNAL_DB_ID&&i1.type===DB_TYPE_INTERNAL),o1)?o1:r1.find(i1=>i1.type===DB_TYPE_EXTERNAL)},enrichEmptySettings:(r1,o1)=>{if(!(r1!=null&&r1._component))return;const i1=n1.actions.components.getDefaultDatasource(),a1=getComponentSettings(r1._component),{parent:s1,screen:l1,useDefaultValues:c1}=o1||{},u1=(s1==null?void 0:s1._id)||r1._id;!l1||a1.forEach(f1=>{var d1,m1;const p1=r1[f1.key];if(p1==null||p1==="")if(f1.type==="multifield"&&f1.selectAllFields)r1[f1.key]=Object.keys((i1==null?void 0:i1.schema)||{});else if((f1.type==="dataSource"||f1.type==="table")&&i1)r1[f1.key]={label:i1.name,tableId:i1._id,resourceId:i1._id,type:"table"};else if(f1.type==="dataProvider"){const h1=findComponentPath(l1.props,u1).filter(b1=>{var $1;return($1=b1._component)==null?void 0:$1.endsWith("/dataprovider")});if(h1.length){const b1=(d1=h1[h1.length-1])==null?void 0:d1._id;r1[f1.key]=`{{ literal ${Fh(b1)} }}`}}else if(f1.type.startsWith("field/")){let _1=getComponentFieldOptions(l1.props,u1,f1.type,!1);const h1=findClosestMatchingComponent(l1.props,u1,$1=>$1._component==="@budibase/standard-components/form"),b1=Object.keys(buildFormSchema(h1)||{});_1=_1.filter($1=>!b1.includes($1)),_1[0]&&(r1[f1.key]=_1[0],r1.label=_1[0])}else c1&&f1.defaultValue!==void 0&&(r1[f1.key]=f1.defaultValue);else if(f1.type==="dataProvider"){const _1=(s1==null?void 0:s1._id)||r1._id,b1=findComponentPath(l1==null?void 0:l1.props,_1).filter(y1=>{var k1;return(k1=y1._component)==null?void 0:k1.endsWith("/dataprovider")});if(!(b1==null?void 0:b1.some(y1=>{var k1;return(k1=p1.includes)==null?void 0:k1.call(p1,y1._id)})))if(b1.length){const y1=(m1=b1[b1.length-1])==null?void 0:m1._id;r1[f1.key]=`{{ literal ${Fh(y1)} }}`}else delete r1[f1.key]}})},createInstance:(r1,o1,i1)=>{const a1=n1.actions.components.getDefinition(r1);if(!a1)return null;let s1={_id:uuid(),_component:a1.component,_styles:{normal:{},hover:{},active:{}},_instanceName:`New ${a1.friendlyName||a1.name}`,...o1};n1.actions.components.enrichEmptySettings(s1,{parent:i1,screen:get_store_value(selectedScreen),useDefaultValues:!0});let l1={};if(a1.hasChildren&&(l1._children=[]),r1.endsWith("/formstep")){const c1=findClosestMatchingComponent(get_store_value(selectedScreen).props,get_store_value(selectedComponent)._id,f1=>f1._component.endsWith("/form")),u1=findAllMatchingComponents(c1,f1=>f1._component.endsWith("/formstep"));l1.step=u1.length+1,l1._instanceName=`Step ${u1.length+1}`}return{...fp.cloneDeep(s1),...l1}},create:async(r1,o1,i1,a1)=>{const s1=get_store_value(n1),l1=n1.actions.components.createInstance(r1,o1,i1);if(!!l1)return i1&&a1!=null?await n1.actions.screens.patch(c1=>{var f1;let u1=findComponent(c1.props,i1);(f1=u1._children)!=null&&f1.length?u1._children.splice(a1,0,l1):u1._children=[l1]}):await n1.actions.screens.patch(c1=>{let u1=s1.selectedComponentId;u1.startsWith(`${c1._id}-`)&&(u1=c1==null?void 0:c1.props._id);const f1=findComponent(c1.props,u1);if(!f1)return!1;let p1;if(f1){const d1=n1.actions.components.getDefinition(f1._component);d1!=null&&d1.hasChildren?p1=f1:p1=findComponentParent(c1.props,f1._id)}else p1=c1.props;if(!p1)return!1;p1._children||(p1._children=[]),p1._children.push(l1)}),n1.update(c1=>(c1.selectedComponentId=l1._id,c1)),analytics.captureEvent(Events.COMPONENT_CREATED,{name:l1._component}),l1},patch:async(r1,o1,i1)=>{if(!o1||!i1){const s1=get_store_value(n1);o1=o1||s1.selectedComponentId,i1=i1||s1.selectedScreenId}if(!o1||!i1||!r1)return;const a1=s1=>{let l1=findComponent(s1.props,o1);return l1?r1(l1,s1):!1};await n1.actions.screens.patch(a1,i1)},delete:async r1=>{if(!r1)return;const o1=get_store_value(n1);let i1;o1.selectedComponentId===r1._id&&(i1=n1.actions.components.getNext(),i1||(i1=n1.actions.components.getPrevious())),await n1.actions.screens.patch(a1=>{if(r1=findComponent(a1.props,r1._id),!r1)return!1;const s1=findComponentParent(a1.props,r1._id);if(!s1)return!1;s1._children=s1._children.filter(l1=>l1._id!==r1._id)}),i1&&n1.update(a1=>(a1.selectedComponentId=i1,a1))},copy:(r1,o1=!1,i1=!0)=>{if(n1.update(a1=>(a1.componentToPaste=fp.cloneDeep(r1),a1.componentToPaste.isCut=o1,a1)),o1&&i1){const a1=get_store_value(selectedScreen),s1=findComponentParent(a1==null?void 0:a1.props,r1._id);s1&&n1.update(l1=>(l1.selectedComponentId=s1._id,l1))}},paste:async(r1,o1,i1)=>{const a1=get_store_value(n1);if(!a1.componentToPaste)return;let s1,l1=fp.cloneDeep(a1.componentToPaste);l1.isCut&&n1.update(f1=>(delete f1.componentToPaste,f1));const c1=f1=>{if(r1=findComponent(f1.props,r1._id),!r1)return!1;const p1=l1.isCut,d1=l1._id;if(delete l1.isCut,p1||(l1=makeComponentUnique(l1)),s1=l1._id,p1){const m1=findComponentParent(f1.props,d1);m1!=null&&m1._children&&(m1._children=m1._children.filter(_1=>_1._id!==d1))}if(o1==="inside"&&(n1.actions.components.getDefinition(r1._component).hasChildren||(o1="below")),o1==="inside")r1._children||(r1._children=[]),r1._children.push(l1);else{const m1=findComponentParent(f1.props,r1._id);if(!(m1!=null&&m1._children))return!1;const _1=m1._children.findIndex(b1=>b1._id===r1._id),h1=o1==="above"?_1:_1+1;m1._children.splice(h1,0,l1)}},u1=(i1==null?void 0:i1._id)||a1.selectedScreenId;await n1.actions.screens.patch(c1,u1),n1.update(f1=>(f1.selectedScreenId=u1,f1.selectedComponentId=s1,f1))},getPrevious:()=>{var u1,f1;const o1=get_store_value(n1).selectedComponentId,i1=get_store_value(selectedScreen),a1=findComponentParent(i1.props,o1),s1=a1==null?void 0:a1._children.findIndex(p1=>p1._id===o1),l1=`${i1._id}-screen`,c1=`${i1._id}-navigation`;if(o1===l1)return null;if(o1===c1)return l1;if(a1._id===i1.props._id&&s1===0)return c1;if(s1>0){const p1=a1._children[s1-1];if((u1=p1._children)!=null&&u1.length){let d1=p1;for(;(f1=d1._children)!=null&&f1.length;)d1=d1._children[d1._children.length-1];return d1._id}return p1._id}return a1._id},getNext:()=>{var m1,_1;const r1=get_store_value(n1),o1=get_store_value(selectedComponent),i1=o1==null?void 0:o1._id,a1=get_store_value(selectedScreen),s1=findComponentParent(a1.props,i1),l1=s1==null?void 0:s1._children.findIndex(h1=>h1._id===i1),c1=`${a1._id}-screen`,u1=`${a1._id}-navigation`;if(r1.selectedComponentId===c1)return u1;if((m1=o1._children)!=null&&m1.length)return o1._children[0]._id;if(!s1)return null;if(l1<s1._children.length-1)return s1._children[l1+1]._id;let f1=s1,p1=findComponentParent(a1.props,f1._id),d1=p1==null?void 0:p1._children.findIndex(h1=>h1._id===f1._id);for(;p1!=null&&d1===((_1=p1._children)==null?void 0:_1.length)-1;)f1=p1,p1=findComponentParent(a1.props,f1._id),d1=p1==null?void 0:p1._children.findIndex(h1=>h1._id===f1._id);return p1?p1._children[d1+1]._id:null},selectPrevious:()=>{const r1=n1.actions.components.getPrevious();r1&&n1.update(o1=>(o1.selectedComponentId=r1,o1))},selectNext:()=>{const r1=n1.actions.components.getNext();r1&&n1.update(o1=>(o1.selectedComponentId=r1,o1))},moveUp:async r1=>{await n1.actions.screens.patch(o1=>{const i1=r1==null?void 0:r1._id,a1=findComponentParent(o1.props,i1),s1=a1==null?void 0:a1._children.findIndex(c1=>c1._id===i1);if(!a1||s1===0&&a1._id===o1.props._id)return;const l1=fp.cloneDeep(a1._children[s1]);if(a1._children=a1._children.filter(c1=>c1._id!==i1),s1>0){const c1=a1._children[s1-1];n1.actions.components.getDefinition(c1._component).hasChildren?c1._children.push(l1):a1._children.splice(s1-1,0,l1)}else if(a1._id!==o1.props._id){const c1=findComponentParent(o1.props,a1._id),u1=c1._children.findIndex(f1=>f1._id===a1._id);c1._children.splice(u1,0,l1)}})},moveDown:async r1=>{await n1.actions.screens.patch(o1=>{var c1;const i1=r1==null?void 0:r1._id,a1=findComponentParent(o1.props,i1);if(!((c1=a1==null?void 0:a1._children)!=null&&c1.length))return!1;const s1=a1._children.findIndex(u1=>u1._id===i1);if(s1===a1._children.length-1&&a1._id===o1.props._id)return;const l1=fp.cloneDeep(a1._children[s1]);if(a1._children=a1._children.filter(u1=>u1._id!==i1),s1<a1._children.length){const u1=a1._children[s1];n1.actions.components.getDefinition(u1._component).hasChildren?u1._children.splice(0,0,l1):a1._children.splice(s1+1,0,l1)}else{const u1=findComponentParent(o1.props,a1._id),f1=u1._children.findIndex(p1=>p1._id===a1._id);u1._children.splice(f1+1,0,l1)}})},updateStyle:async(r1,o1)=>{await n1.actions.components.patch(i1=>{o1==null||o1===""?delete i1._styles.normal[r1]:i1._styles.normal[r1]=o1})},updateStyles:async(r1,o1)=>{const i1=a1=>{a1._styles.normal={...a1._styles.normal,...r1}};await n1.actions.components.patch(i1,o1)},updateCustomStyle:async r1=>{await n1.actions.components.patch(o1=>{o1._styles.custom=r1})},updateConditions:async r1=>{await n1.actions.components.patch(o1=>{o1._conditions=r1})},updateSetting:async(r1,o1)=>{await n1.actions.components.patch(n1.actions.components.updateComponentSetting(r1,o1))},updateComponentSetting:(r1,o1)=>i1=>{if(!r1||!i1||i1[r1]===o1)return!1;const a1=getComponentSettings(i1._component),s1=a1.find(c1=>c1.key===r1),l1=a1.filter(c1=>r1===c1.resetOn);if(l1==null||l1.forEach(c1=>{i1[c1.key]=null}),(s1==null?void 0:s1.type)==="dataSource"||(s1==null?void 0:s1.type)==="table"){const{schema:c1}=getSchemaForDatasource(null,o1),u1=Object.keys(c1||{});a1.filter(p1=>p1.type==="multifield"&&p1.selectAllFields).map(p1=>p1.key).forEach(p1=>{i1[p1]=u1})}i1[r1]=o1},requestEjectBlock:r1=>{n1.actions.preview.sendEvent("eject-block",r1)},handleEjectBlock:async(r1,o1)=>{let i1;await n1.actions.screens.patch(a1=>{var f1;const s1=findComponent(a1.props,r1),l1=findComponentParent(a1.props,r1);if(!s1||!((f1=l1==null?void 0:l1._children)!=null&&f1.length))return!1;const c1=findAllMatchingComponents(o1,p1=>p1._containsSlot)[0];c1&&(delete c1._containsSlot,c1._children=[...c1._children||[],...s1._children||[]]),o1=makeComponentUnique(o1);const u1=l1._children.findIndex(p1=>p1._id===r1);l1._children[u1]=o1,i1=o1._id}),i1&&n1.update(a1=>(a1.selectedComponentId=i1,a1))},addParent:async(r1,o1)=>{if(!r1||!o1)return;const i1=n1.actions.components.createInstance(o1,null,parent);!i1||(await n1.actions.screens.patch(a1=>{let s1=findComponent(a1.props,r1),l1=findComponentParent(a1.props,r1);if(!s1||!l1)return!1;const c1=l1._children.findIndex(u1=>u1._id===r1);if(c1===-1)return!1;l1._children[c1]={...i1,_children:[s1]}}),n1.update(a1=>(a1.selectedComponentId=i1._id,a1)))}},links:{save:async(r1,o1)=>{var s1;const i1=get_store_value(n1).navigation;let a1=[...(s1=i1==null?void 0:i1.links)!=null?s1:[]];a1.find(l1=>l1.url===r1&&l1.text===o1)||(a1.push({text:o1,url:r1}),await n1.actions.navigation.save({...i1,links:[...a1]}))},delete:async r1=>{const o1=get_store_value(n1).navigation;let i1=o1==null?void 0:o1.links;!(i1!=null&&i1.length)||(r1=Array.isArray(r1)?r1:[r1],i1=i1.filter(a1=>!r1.includes(a1.url)),await n1.actions.navigation.save({...o1,links:i1}))}},settings:{highlight:r1=>{n1.update(o1=>({...o1,highlightedSettingKey:r1}))},propertyFocus:r1=>{n1.update(o1=>({...o1,propertyFocus:r1}))}},dnd:{start:r1=>{n1.actions.preview.sendEvent("dragging-new-component",{dragging:!0,component:r1})},stop:()=>{n1.actions.preview.sendEvent("dragging-new-component",{dragging:!1})}},websocket:{selectResource:r1=>{e1.emit(BuilderSocketEvent.SelectResource,{resourceId:r1})}},metadata:{replace:r1=>{n1.update(o1=>({...o1,...r1}))}}},n1},initialAutomationState={automations:[],testResults:null,showTestPanel:!1,blockDefinitions:{TRIGGER:[],ACTION:[]},selectedAutomationId:null},getAutomationStore=()=>{const n1=writable(initialAutomationState);return n1.actions=automationActions(n1),n1},automationActions=n1=>({definitions:async()=>{const e1=await API.getAutomationDefinitions();return n1.update(t1=>(t1.blockDefinitions={TRIGGER:e1.trigger,ACTION:e1.action},t1)),e1},fetch:async()=>{const e1=await Promise.all([API.getAutomations(),API.getAutomationDefinitions()]);n1.update(t1=>(t1.automations=e1[0],t1.automations.sort((r1,o1)=>r1.name<o1.name?-1:1),t1.blockDefinitions={TRIGGER:e1[1].trigger,ACTION:e1[1].action},t1))},create:async(e1,t1)=>{const r1={name:e1,type:"automation",definition:{steps:[],trigger:t1}},o1=await n1.actions.save(r1);return await n1.actions.fetch(),n1.actions.select(o1._id),o1},duplicate:async e1=>{const t1=await n1.actions.save({...e1,name:`${e1.name} - copy`,_id:void 0,_ref:void 0});return await n1.actions.fetch(),n1.actions.select(t1._id),t1},save:async e1=>{const t1=await API.updateAutomation(e1);return n1.update(r1=>{const o1=t1.automation,i1=r1.automations.findIndex(a1=>a1._id===e1._id);return i1!==-1?(r1.automations.splice(i1,1,o1),r1):(r1.automations=[...r1.automations,o1],r1)}),t1.automation},delete:async e1=>{await API.deleteAutomation({automationId:e1==null?void 0:e1._id,automationRev:e1==null?void 0:e1._rev}),n1.update(t1=>{var r1;return t1.automations=t1.automations.filter(o1=>o1._id!==e1._id),e1._id===t1.selectedAutomationId&&n1.actions.select((r1=t1.automations[0])==null?void 0:r1._id),t1}),await n1.actions.fetch()},updateBlockInputs:async(e1,t1)=>{let r1={...e1,inputs:{...e1.inputs,...t1}};Object.keys(r1.inputs).forEach(a1=>{const s1=r1.inputs[a1];(s1==null||s1==="")&&delete r1.inputs[a1]});const o1=get_store_value(selectedAutomation),i1=n1.actions.getUpdatedDefinition(o1,r1);JSON.stringify(i1)!==JSON.stringify(o1)&&await n1.actions.save(i1)},test:async(e1,t1)=>{var o1,i1;const r1=await API.testAutomation({automationId:e1==null?void 0:e1._id,testData:t1});if(!(r1!=null&&r1.trigger)&&!((o1=r1==null?void 0:r1.steps)!=null&&o1.length))throw((i1=r1==null?void 0:r1.err)==null?void 0:i1.code)==="usage_limit_exceeded"?"You have exceeded your automation quota":"Something went wrong testing your automation";n1.update(a1=>(a1.testResults=r1,a1))},getDefinition:e1=>{var t1;return(t1=get_store_value(n1).automations)==null?void 0:t1.find(r1=>r1._id===e1)},getUpdatedDefinition:(e1,t1)=>{var o1;let r1=fp.cloneDeep(e1);if(((o1=e1.definition.trigger)==null?void 0:o1.id)===t1.id)r1.definition.trigger=t1;else{const i1=e1.definition.steps.findIndex(a1=>a1.id===t1.id);r1.definition.steps.splice(i1,1,t1)}return r1},select:e1=>{!e1||e1===get_store_value(n1).selectedAutomationId||n1.update(t1=>(t1.selectedAutomationId=e1,t1.testResults=null,t1.showTestPanel=!1,t1))},getLogs:async({automationId:e1,startDate:t1,status:r1,page:o1}={})=>await API.getAutomationLogs({automationId:e1,startDate:t1,status:r1,page:o1}),clearLogErrors:async({automationId:e1,appId:t1}={})=>await API.clearAutomationLogErrors({automationId:e1,appId:t1}),addTestDataToAutomation:async e1=>{let t1=fp.cloneDeep(get_store_value(selectedAutomation));t1.testData={...t1.testData,...e1},await n1.actions.save(t1)},constructBlock(e1,t1,r1){return{...r1,inputs:r1.inputs||{},stepId:t1,type:e1,id:shortid.exports.generate()}},addBlockToAutomation:async(e1,t1)=>{const r1=get_store_value(selectedAutomation);let o1=fp.cloneDeep(r1);!r1||(o1.definition.steps.splice(t1,0,e1),await n1.actions.save(o1))},toggleRowControl:async(e1,t1)=>{const r1={...e1,rowControl:t1},o1=n1.actions.getUpdatedDefinition(get_store_value(selectedAutomation),r1);await n1.actions.save(o1)},deleteAutomationBlock:async e1=>{var o1;const t1=get_store_value(selectedAutomation);let r1=fp.cloneDeep(t1);((o1=r1.definition.trigger)==null?void 0:o1.id)===e1.id?delete r1.definition.trigger:r1.definition.steps=r1.definition.steps.filter(i1=>i1.id!==e1.id),await n1.actions.save(r1)},replace:async(e1,t1)=>{if(!t1)n1.update(r1=>{var o1;return r1.automations=r1.automations.filter(i1=>i1._id!==e1),e1===r1.selectedAutomationId&&n1.actions.select((o1=r1.automations[0])==null?void 0:o1._id),r1});else{const r1=get_store_value(n1).automations.findIndex(o1=>o1._id===t1._id);r1===-1?n1.update(o1=>({...o1,automations:[...o1.automations,t1]})):n1.update(o1=>(o1.automations[r1]=t1,o1))}}}),getTemporalStore=()=>{const t1=createLocalStorageStore("bb-temporal",{}),r1=(i1,a1,s1)=>{const l1={...a1,expiry:Date.now()+s1*1e3};t1.update(c1=>({...c1,[i1]:l1}))},o1=i1=>{const a1=get_store_value(t1)[i1];return a1?a1.expiry<Date.now()?(t1.update(l1=>(delete l1[i1],l1)),null):a1:void 0};return{subscribe:t1.subscribe,actions:{setExpiring:r1,getExpiring:o1}}},getThemeStore=()=>{const n1=document.documentElement,e1={theme:"darkest"},t1=createLocalStorageStore("bb-theme",e1);return t1.subscribe(r1=>{if(r1.darkMode!==void 0){t1.set(e1);return}Themes.forEach(i1=>{n1.classList.toggle(`spectrum--${i1.class}`,i1.class===r1.theme)});const o1=Themes.find(i1=>i1.class===r1.theme);o1!=null&&o1.base&&n1.classList.add(`spectrum--${o1.base}`)}),t1},getUserStore=()=>{const n1=writable([]);return{...n1,actions:{init:i1=>{n1.set(i1)},updateUser:i1=>{const a1=get_store_value(n1);a1.some(s1=>s1.sessionId===i1.sessionId)?n1.update(s1=>{const l1=s1.findIndex(c1=>c1.sessionId===i1.sessionId);return s1[l1]=i1,s1.slice()}):n1.set([...a1,i1])},removeUser:i1=>{n1.update(a1=>a1.filter(s1=>s1.sessionId!==i1))},reset:()=>{n1.set([])}}}},getDeploymentStore=()=>{let n1=writable([]);const e1=async()=>{try{n1.set(await API.getAppDeployments())}catch{notifications.error("Error fetching deployments")}};return{subscribe:n1.subscribe,actions:{load:e1}}};/*!
|
|
442
|
+
}`;var G2=M7(function(){return L2(i0,O2+"return "+r2).apply(t1,_0)});if(G2.source=r2,b7(G2))throw G2;return G2}function C7(g1){return am(g1).toLowerCase()}function u$(g1){return am(g1).toUpperCase()}function g9(g1,w1,E1){if(g1=am(g1),g1&&(E1||w1===t1))return x8(g1);if(!g1||!(w1=d3(w1)))return g1;var U1=e_(g1),J1=e_(w1),i0=g0(U1,J1),_0=fd(U1,J1)+1;return Z_(U1,i0,_0).join("")}function b9(g1,w1,E1){if(g1=am(g1),g1&&(E1||w1===t1))return g1.slice(0,P4(g1)+1);if(!g1||!(w1=d3(w1)))return g1;var U1=e_(g1),J1=fd(U1,e_(w1))+1;return Z_(U1,0,J1).join("")}function $9(g1,w1,E1){if(g1=am(g1),g1&&(E1||w1===t1))return g1.replace(p2,"");if(!g1||!(w1=d3(w1)))return g1;var U1=e_(g1),J1=g0(U1,e_(w1));return Z_(U1,J1).join("")}function M8(g1,w1){var E1=P1,U1=H1;if(b_(w1)){var J1="separator"in w1?w1.separator:J1;E1="length"in w1?hd(w1.length):E1,U1="omission"in w1?d3(w1.omission):U1}g1=am(g1);var i0=g1.length;if(I3(g1)){var _0=e_(g1);i0=_0.length}if(E1>=i0)return g1;var k0=E1-L4(U1);if(k0<1)return U1;var L0=_0?Z_(_0,0,k0).join(""):g1.slice(0,k0);if(J1===t1)return L0+U1;if(_0&&(k0+=L0.length-k0),_6(J1)){if(g1.slice(k0).search(J1)){var K0,Z0=L0;for(J1.global||(J1=B_(J1.source,am(Fm.exec(J1))+"g")),J1.lastIndex=0;K0=J1.exec(Z0);)var r2=K0.index;L0=L0.slice(0,r2===t1?k0:r2)}}else if(g1.indexOf(d3(J1),k0)!=k0){var v2=L0.lastIndexOf(J1);v2>-1&&(L0=L0.slice(0,v2))}return L0+U1}function Hd(g1){return g1=am(g1),g1&&Bd.test(g1)?g1.replace(W2,o5):g1}var v9=Ym(function(g1,w1,E1){return g1+(E1?" ":"")+w1.toUpperCase()}),Eg=r_("toUpperCase");function f$(g1,w1,E1){return g1=am(g1),w1=E1?t1:w1,w1===t1?om(g1)?Hg(g1):r5(g1):g1.match(w1)||[]}var M7=Ad(function(g1,w1){try{return i3(g1,t1,w1)}catch(E1){return b7(E1)?E1:new z2(E1)}}),E7=q3(function(g1,w1){return a3(w1,function(E1){E1=Zd(E1),k3(g1,E1,W3(g1[E1],g1))}),g1});function p$(g1){var w1=g1==null?0:g1.length,E1=j2();return g1=w1?bd(g1,function(U1){if(typeof U1[1]!="function")throw new k_(a1);return[E1(U1[0]),U1[1]]}):[],Ad(function(U1){for(var J1=-1;++J1<w1;){var i0=g1[J1];if(i3(i0[0],this,U1))return i3(i0[1],this,U1)}})}function sb(g1){return p5(Mm(g1,f1))}function T7(g1){return function(){return g1}}function y9(g1,w1){return g1==null||g1!==g1?w1:g1}var w9=v8(),d$=v8(!0);function z3(g1){return g1}function z7(g1){return kd(typeof g1=="function"?g1:Mm(g1,f1))}function k9(g1){return U3(Mm(g1,f1))}function S9(g1,w1){return a4(g1,Mm(w1,f1))}var O9=Ad(function(g1,w1){return function(E1){return C3(E1,g1,w1)}}),A9=Ad(function(g1,w1){return function(E1){return C3(g1,E1,w1)}});function L7(g1,w1,E1){var U1=g3(w1),J1=Wm(w1,U1);E1==null&&!(b_(w1)&&(J1.length||!U1.length))&&(E1=w1,w1=g1,g1=this,J1=Wm(w1,g3(w1)));var i0=!(b_(E1)&&"chain"in E1)||!!E1.chain,_0=k5(g1);return a3(J1,function(k0){var L0=w1[k0];g1[k0]=L0,_0&&(g1.prototype[k0]=function(){var K0=this.__chain__;if(i0||K0){var Z0=g1(this.__wrapped__),r2=Z0.__actions__=K_(this.__actions__);return r2.push({func:L0,args:arguments,thisArg:g1}),Z0.__chain__=K0,Z0}return L0.apply(g1,s3([this.value()],arguments))})}),g1}function C9(){return Dm._===this&&(Dm._=S_),this}function P7(){}function m$(g1){return g1=hd(g1),Ad(function(w1){return o6(w1,g1)})}var M9=G4(bd),E9=G4(M6),_$=G4(E6);function I7(g1){return n0(g1)?L6(Zd(g1)):Y_(g1)}function T9(g1){return function(w1){return g1==null?t1:A3(g1,w1)}}var z9=b5(),L9=b5(!0);function D7(){return[]}function B7(){return!1}function P9(){return{}}function I9(){return""}function R7(){return!0}function h$(g1,w1){if(g1=hd(g1),g1<1||g1>X1)return[];var E1=e0,U1=nm(g1,e0);w1=j2(w1),g1-=e0;for(var J1=D6(U1,w1);++E1<g1;)w1(E1);return J1}function D9(g1){return Ed(g1)?bd(g1,Zd):K4(g1)?[g1]:K_(q_(am(g1)))}function B9(g1){var w1=++a5;return am(g1)+w1}var R9=Sg(function(g1,w1){return g1+w1},0),H9=y8("ceil"),N9=Sg(function(g1,w1){return g1/w1},1),V9=y8("floor");function x9(g1){return g1&&g1.length?lm(g1,z3,T_):t1}function F9(g1,w1){return g1&&g1.length?lm(g1,j2(w1,2),T_):t1}function U9(g1){return z6(g1,z3)}function q9(g1,w1){return z6(g1,j2(w1,2))}function j9(g1){return g1&&g1.length?lm(g1,z3,r6):t1}function Q9(g1,w1){return g1&&g1.length?lm(g1,j2(w1,2),r6):t1}var W9=Sg(function(g1,w1){return g1*w1},1),G9=y8("round"),X9=Sg(function(g1,w1){return g1-w1},0);function Y9(g1){return g1&&g1.length?_8(g1,z3):0}function Z9(g1,w1){return g1&&g1.length?_8(g1,j2(w1,2)):0}return E0.after=v$,E0.ary=zb,E0.assign=gb,E0.assignIn=jb,E0.assignInWith=g6,E0.assignWith=bb,E0.at=$b,E0.before=V7,E0.bind=W3,E0.bindAll=E7,E0.bindKey=Lb,E0.castArray=E$,E0.chain=k2,E0.chunk=o_,E0.compact=Vm,E0.concat=i_,E0.cond=p$,E0.conforms=sb,E0.constant=T7,E0.countBy=rm,E0.create=Qb,E0.curry=x7,E0.curryRight=F7,E0.debounce=Pb,E0.defaults=rb,E0.defaultsDeep=N$,E0.defer=y$,E0.delay=d7,E0.difference=Sd,E0.differenceBy=v5,E0.differenceWith=zm,E0.drop=k4,E0.dropRight=m_,E0.dropRightWhile=f6,E0.dropWhile=S4,E0.fill=j3,E0.filter=yd,E0.flatMap=h3,E0.flatMapDeep=A4,E0.flatMapDepth=Km,E0.flatten=__,E0.flattenDeep=Lm,E0.flattenDepth=X8,E0.flip=w$,E0.flow=w9,E0.flowRight=d$,E0.fromPairs=Xb,E0.functions=J7,E0.functionsIn=ob,E0.groupBy=A8,E0.initial=Zb,E0.intersection=pb,E0.intersectionBy=Kb,E0.intersectionWith=X5,E0.invert=t$,E0.invertBy=n$,E0.invokeMap=Z5,E0.iteratee=z7,E0.keyBy=Mb,E0.keys=g3,E0.keysIn=p4,E0.map=C8,E0.mapKeys=j$,E0.mapValues=w7,E0.matches=k9,E0.matchesProperty=S9,E0.memoize=hb,E0.merge=k7,E0.mergeWith=S7,E0.method=O9,E0.methodOf=A9,E0.mixin=L7,E0.negate=Ib,E0.nthArg=m$,E0.omit=X3,E0.omitBy=Q$,E0.once=m7,E0.orderBy=Z8,E0.over=M9,E0.overArgs=_7,E0.overEvery=E9,E0.overSome=_$,E0.partial=h7,E0.partialRight=U7,E0.partition=_b,E0.pick=r$,E0.pickBy=ib,E0.property=I7,E0.propertyOf=T9,E0.pull=Sb,E0.pullAll=db,E0.pullAllBy=Jb,E0.pullAllWith=e7,E0.pullAt=t7,E0.range=z9,E0.rangeRight=L9,E0.rearg=k$,E0.reject=Eb,E0.remove=n7,E0.rest=S$,E0.reverse=Y8,E0.sampleSize=tb,E0.set=o$,E0.setWith=W$,E0.shuffle=g$,E0.slice=O8,E0.sortBy=N7,E0.sortedUniq=Ob,E0.sortedUniqBy=Y5,E0.split=c$,E0.spread=O$,E0.tail=Rd,E0.take=Ab,E0.takeRight=O4,E0.takeRightWhile=Cb,E0.takeWhile=s7,E0.tap=A2,E0.throttle=A$,E0.thru=P2,E0.toArray=Z7,E0.toPairs=i$,E0.toPairsIn=a$,E0.toPath=D9,E0.toPlainObject=y7,E0.transform=G$,E0.unary=C$,E0.union=im,E0.unionBy=l7,E0.unionWith=c7,E0.uniq=u7,E0.uniqBy=f7,E0.uniqWith=p7,E0.unset=X$,E0.unzip=mb,E0.unzipWith=T1,E0.update=Y$,E0.updateWith=Z$,E0.values=ab,E0.valuesIn=K$,E0.without=x1,E0.words=f$,E0.wrap=M$,E0.xor=K1,E0.xorBy=c0,E0.xorWith=v0,E0.zip=R0,E0.zipObject=Q0,E0.zipObjectDeep=n2,E0.zipWith=u2,E0.entries=i$,E0.entriesIn=a$,E0.extend=jb,E0.extendWith=g6,L7(E0,E0),E0.add=R9,E0.attempt=M7,E0.camelCase=n9,E0.capitalize=s$,E0.ceil=H9,E0.clamp=J$,E0.clone=T$,E0.cloneDeep=L$,E0.cloneDeepWith=P$,E0.cloneWith=z$,E0.conformsTo=I$,E0.deburr=l$,E0.defaultTo=y9,E0.divide=N9,E0.endsWith=r9,E0.eq=km,E0.escape=o9,E0.escapeRegExp=i9,E0.every=Vh,E0.find=Ld,E0.findIndex=y5,E0.findKey=V$,E0.findLast=_3,E0.findLastIndex=fm,E0.findLastKey=x$,E0.floor=V9,E0.forEach=C4,E0.forEachRight=M4,E0.forIn=F$,E0.forInRight=U$,E0.forOwn=Wb,E0.forOwnRight=vb,E0.get=Mg,E0.gt=Db,E0.gte=g7,E0.has=e$,E0.hasIn=yb,E0.head=wb,E0.identity=z3,E0.includes=p6,E0.indexOf=Yb,E0.inRange=e9,E0.invoke=q$,E0.isArguments=s8,E0.isArray=Ed,E0.isArrayBuffer=s_,E0.isArrayLike=G3,E0.isArrayLikeObject=j_,E0.isBoolean=w5,E0.isBuffer=K5,E0.isDate=D$,E0.isElement=nb,E0.isEmpty=Bb,E0.isEqual=Rb,E0.isEqualWith=Sm,E0.isError=b7,E0.isFinite=q7,E0.isFunction=k5,E0.isInteger=j7,E0.isLength=Hb,E0.isMap=d6,E0.isMatch=Nb,E0.isMatchWith=Q7,E0.isNaN=Vb,E0.isNative=W7,E0.isNil=xb,E0.isNull=G7,E0.isNumber=$7,E0.isObject=b_,E0.isObjectLike=l_,E0.isPlainObject=m6,E0.isRegExp=_6,E0.isSafeInteger=Fb,E0.isSet=X7,E0.isString=Ub,E0.isSymbol=K4,E0.isTypedArray=h6,E0.isUndefined=qb,E0.isWeakMap=v7,E0.isWeakSet=B$,E0.join=kb,E0.kebabCase=a9,E0.last=m3,E0.lastIndexOf=a_,E0.lowerCase=s9,E0.lowerFirst=l9,E0.lt=Y7,E0.lte=R$,E0.max=x9,E0.maxBy=F9,E0.mean=U9,E0.meanBy=q9,E0.min=j9,E0.minBy=Q9,E0.stubArray=D7,E0.stubFalse=B7,E0.stubObject=P9,E0.stubString=I9,E0.stubTrue=R7,E0.multiply=W9,E0.nth=h_,E0.noConflict=C9,E0.noop=P7,E0.now=Tb,E0.pad=c9,E0.padEnd=u9,E0.padStart=f9,E0.parseInt=p9,E0.random=t9,E0.reduce=K8,E0.reduceRight=J8,E0.repeat=d9,E0.replace=Gb,E0.result=O7,E0.round=G9,E0.runInContext=C0,E0.sample=eb,E0.size=b$,E0.snakeCase=A7,E0.some=$$,E0.sortedIndex=r7,E0.sortedIndexBy=a8,E0.sortedIndexOf=Q3,E0.sortedLastIndex=o7,E0.sortedLastIndexBy=i7,E0.sortedLastIndexOf=a7,E0.startCase=m9,E0.startsWith=_9,E0.subtract=X9,E0.sum=Y9,E0.sumBy=Z9,E0.template=h9,E0.times=h$,E0.toFinite=xm,E0.toInteger=hd,E0.toLength=K7,E0.toLower=C7,E0.toNumber=S5,E0.toSafeInteger=H$,E0.toString=am,E0.toUpper=u$,E0.trim=g9,E0.trimEnd=b9,E0.trimStart=$9,E0.truncate=M8,E0.unescape=Hd,E0.uniqueId=B9,E0.upperCase=v9,E0.upperFirst=Eg,E0.each=C4,E0.eachRight=M4,E0.first=wb,L7(E0,function(){var g1={};return O3(E0,function(w1,E1){Qd.call(E0.prototype,E1)||(g1[E1]=w1)}),g1}(),{chain:!1}),E0.VERSION=r1,a3(["bind","bindKey","curry","curryRight","partial","partialRight"],function(g1){E0[g1].placeholder=E0}),a3(["drop","take"],function(g1,w1){Md.prototype[g1]=function(E1){E1=E1===t1?1:_m(hd(E1),0);var U1=this.__filtered__&&!w1?new Md(this):this.clone();return U1.__filtered__?U1.__takeCount__=nm(E1,U1.__takeCount__):U1.__views__.push({size:nm(E1,e0),type:g1+(U1.__dir__<0?"Right":"")}),U1},Md.prototype[g1+"Right"]=function(E1){return this.reverse()[g1](E1).reverse()}}),a3(["filter","map","takeWhile"],function(g1,w1){var E1=w1+1,U1=E1==B1||E1==F1;Md.prototype[g1]=function(J1){var i0=this.clone();return i0.__iteratees__.push({iteratee:j2(J1,3),type:E1}),i0.__filtered__=i0.__filtered__||U1,i0}}),a3(["head","last"],function(g1,w1){var E1="take"+(w1?"Right":"");Md.prototype[g1]=function(){return this[E1](1).value()[0]}}),a3(["initial","tail"],function(g1,w1){var E1="drop"+(w1?"":"Right");Md.prototype[g1]=function(){return this.__filtered__?new Md(this):this[E1](1)}}),Md.prototype.compact=function(){return this.filter(z3)},Md.prototype.find=function(g1){return this.filter(g1).head()},Md.prototype.findLast=function(g1){return this.reverse().find(g1)},Md.prototype.invokeMap=Ad(function(g1,w1){return typeof g1=="function"?new Md(this):this.map(function(E1){return C3(E1,g1,w1)})}),Md.prototype.reject=function(g1){return this.filter(Ib(j2(g1)))},Md.prototype.slice=function(g1,w1){g1=hd(g1);var E1=this;return E1.__filtered__&&(g1>0||w1<0)?new Md(E1):(g1<0?E1=E1.takeRight(-g1):g1&&(E1=E1.drop(g1)),w1!==t1&&(w1=hd(w1),E1=w1<0?E1.dropRight(-w1):E1.take(w1-g1)),E1)},Md.prototype.takeRightWhile=function(g1){return this.reverse().takeWhile(g1).reverse()},Md.prototype.toArray=function(){return this.take(e0)},O3(Md.prototype,function(g1,w1){var E1=/^(?:filter|find|map|reject)|While$/.test(w1),U1=/^(?:head|last)$/.test(w1),J1=E0[U1?"take"+(w1=="last"?"Right":""):w1],i0=U1||/^find/.test(w1);!J1||(E0.prototype[w1]=function(){var _0=this.__wrapped__,k0=U1?[1]:arguments,L0=_0 instanceof Md,K0=k0[0],Z0=L0||Ed(_0),r2=function(rd){var od=J1.apply(E0,s3([rd],k0));return U1&&v2?od[0]:od};Z0&&E1&&typeof K0=="function"&&K0.length!=1&&(L0=Z0=!1);var v2=this.__chain__,O2=!!this.__actions__.length,T2=i0&&!v2,G2=L0&&!O2;if(!i0&&Z0){_0=G2?_0:new Md(this);var I2=g1.apply(_0,k0);return I2.__actions__.push({func:P2,args:[r2],thisArg:t1}),new jd(I2,v2)}return T2&&G2?g1.apply(this,k0):(I2=this.thru(r2),T2?U1?I2.value()[0]:I2.value():I2)})}),a3(["pop","push","shift","sort","splice","unshift"],function(g1){var w1=D4[g1],E1=/^(?:push|sort|unshift)$/.test(g1)?"tap":"thru",U1=/^(?:pop|shift)$/.test(g1);E0.prototype[g1]=function(){var J1=arguments;if(U1&&!this.__chain__){var i0=this.value();return w1.apply(Ed(i0)?i0:[],J1)}return this[E1](function(_0){return w1.apply(Ed(_0)?_0:[],J1)})}}),O3(Md.prototype,function(g1,w1){var E1=E0[w1];if(E1){var U1=E1.name+"";Qd.call(Bm,U1)||(Bm[U1]=[]),Bm[U1].push({name:w1,func:E1})}}),Bm[W4(t1,b1).name]=[{name:"wrapper",func:t1}],Md.prototype.clone=g8,Md.prototype.reverse=jg,Md.prototype.value=x6,E0.prototype.at=Z2,E0.prototype.chain=ad,E0.prototype.commit=pd,E0.prototype.next=B2,E0.prototype.plant=Td,E0.prototype.reverse=nd,E0.prototype.toJSON=E0.prototype.valueOf=E0.prototype.value=vd,E0.prototype.first=E0.prototype.head,R4&&(E0.prototype[R4]=q2),E0},l3=sg();E4?((E4.exports=l3)._=l3,tg._=l3):Dm._=l3}).call(commonjsGlobal)})(lodash$2,lodash$2.exports);const _=lodash$2.exports,DEFAULT_CONFIG$1={platformUrl:"",logoUrl:void 0,faviconUrl:void 0,emailBrandingEnabled:!0,testimonialsEnabled:!0,platformTitle:"Budibase",loginHeading:void 0,loginButton:void 0,metaDescription:void 0,metaImageUrl:void 0,metaTitle:void 0,docsUrl:void 0,company:"Budibase",oidc:void 0,google:void 0,googleDatasourceConfigured:void 0,oidcCallbackUrl:"",googleCallbackUrl:"",isSSOEnforced:!1,loaded:!1};function createOrganisationStore(){const n1=writable(DEFAULT_CONFIG$1),{subscribe:e1,set:t1}=n1;async function r1(){const i1=get_store_value(auth).tenantId,a1=await API.getTenantConfig(i1);t1({...DEFAULT_CONFIG$1,...a1.config,loaded:!0})}async function o1(i1){const a1=_.cloneDeep(get_store_value(n1));delete a1.oidc,delete a1.google,delete a1.googleDatasourceConfigured,delete a1.oidcCallbackUrl,delete a1.googleCallbackUrl,delete a1.loaded,await API.saveConfig({type:"settings",config:{...a1,...i1}}),await r1()}return{subscribe:e1,set:t1,save:o1,init:r1}}const organisation=createOrganisationStore();function createUsersStore(){const{subscribe:n1,set:e1}=writable({});async function t1(k1={}){const S1=await API.searchUsers(k1);return e1({...S1,...k1}),S1}async function r1(k1){try{return await API.getUser(k1)}catch{return null}}const o1=async()=>await API.getUsers();async function i1(k1){return await API.onboardUsers(k1)}async function a1(k1){return API.inviteUsers(k1)}async function s1(k1,S1,O1,C1){return API.acceptInvite({inviteCode:k1,password:S1,firstName:O1,lastName:C1!=null&&C1.trim()?C1:void 0})}async function l1(k1){return API.getUserInvite(k1)}async function c1(){return API.getUserInvites()}async function u1(k1){return API.updateUserInvite(k1)}async function f1(k1){let S1=k1.users.map(C1=>{const M1={email:C1.email,password:C1.password,roles:{}};switch(C1.forceResetPassword&&(M1.forceResetPassword=C1.forceResetPassword),C1.role){case"appUser":M1.builder={global:!1},M1.admin={global:!1};break;case"developer":M1.builder={global:!0};break;case"admin":M1.admin={global:!0},M1.builder={global:!0};break}return M1});const O1=await API.createUsers({users:S1,groups:k1.groups});return await t1(),O1}async function p1(k1){await API.deleteUser(k1),lodash$2.exports.update(S1=>S1.filter(O1=>O1._id!==k1))}async function d1({appId:k1}){return await API.getUserCountByApp({appId:k1})}async function m1(k1){return API.deleteUsers(k1)}async function _1(k1){return await API.saveUser(k1)}async function h1(k1,S1){return await API.addAppBuilder({userId:k1,appId:S1})}async function b1(k1,S1){return await API.removeAppBuilder({userId:k1,appId:S1})}const $1=k1=>isAdmin(k1)?"admin":isBuilder(k1)?"developer":"appUser",y1=k1=>async(...S1)=>{const O1=await k1(...S1);return await licensing.setQuotaUsage(),O1};return{subscribe:n1,search:t1,get:r1,getUserRole:$1,fetch:o1,invite:a1,onboard:i1,fetchInvite:l1,getInvites:c1,updateInvite:u1,getUserCountByApp:d1,addAppBuilder:h1,removeAppBuilder:b1,acceptInvite:s1,create:y1(f1),save:y1(_1),bulkDelete:y1(m1),delete:y1(p1)}}const users=createUsersStore(),DEFAULT_CONFIG={loaded:!1,multiTenancy:!1,cloud:!1,isDev:!1,disableAccountPortal:!1,accountPortalUrl:"",importComplete:!1,checklist:{apps:{checked:!1},smtp:{checked:!1},adminUser:{checked:!1},sso:{checked:!1}},offlineMode:!1};function createAdminStore(){const n1=writable(DEFAULT_CONFIG);async function e1(){await i1(),await t1(),get_store_value(n1).cloud&&(await o1(),r1()),n1.update(s1=>(s1.loaded=!0,s1))}async function t1(){const s1=await API.getEnvironment();n1.update(l1=>(l1.multiTenancy=s1.multiTenancy,l1.cloud=s1.cloud,l1.disableAccountPortal=s1.disableAccountPortal,l1.accountPortalUrl=s1.accountPortalUrl,l1.isDev=s1.isDev,l1.baseUrl=s1.baseUrl,l1.offlineMode=s1.offlineMode,l1))}const r1=async()=>{var l1,c1;const s1=(c1=(l1=get_store_value(n1))==null?void 0:l1.status)==null?void 0:c1.health;s1!=null&&s1.passing||await banner.showStatus()};async function o1(){const s1=await API.getSystemStatus();n1.update(l1=>(l1.status=s1,l1))}async function i1(){const s1=get_store_value(auth).tenantId,l1=await API.getChecklist(s1);n1.update(c1=>(c1.checklist=l1,c1))}function a1(){n1.update(s1=>(s1.loaded=!1,s1))}return{subscribe:n1.subscribe,init:e1,unload:a1,getChecklist:i1}}const admin=createAdminStore(),DEV_PROPS=["updatedBy","updatedAt"],extractAppId=n1=>{const e1=(n1==null?void 0:n1.split("_"))||[];return e1.length?e1[e1.length-1]:null},getProdAppID=n1=>{if(!n1)return n1;let e1,t1="";if(n1.startsWith("app_dev")){const r1=n1.split("app_dev");r1.shift(),e1=r1.join("app_dev")}else if(!n1.startsWith("app"))e1=n1,t1="_";else return n1;return`app${t1}${e1}`};function createAppStore(){const n1=writable([]);async function e1(){const r1=await API.getApps();if(Array.isArray(r1)){let o1={},i1=r1.filter(l1=>l1.status===AppStatus.DEV),a1=r1.filter(l1=>l1.status===AppStatus.DEPLOYED);i1.forEach(l1=>{const c1=extractAppId(l1.appId);o1[c1]={...l1,devId:l1.appId,devRev:l1._rev}}),a1.forEach(l1=>{const c1=extractAppId(l1.appId);if(!o1[c1])return;let u1={};o1[c1]&&Object.entries(o1[c1]).filter(([p1])=>DEV_PROPS.indexOf(p1)!==-1).forEach(p1=>{u1[p1[0]]=p1[1]}),o1[c1]={...o1[c1],...l1,...u1,prodId:l1.appId,prodRev:l1._rev}});const s1=Object.values(o1);s1.forEach(l1=>{l1.appId=extractAppId(l1.devId),delete l1._id,delete l1._rev}),n1.set(s1)}else n1.set([])}async function t1(r1,o1){await API.saveAppMetadata({appId:r1,metadata:o1}),n1.update(i1=>{const a1=i1.findIndex(s1=>s1.instance._id===r1);if(a1!==-1){let s1=i1[a1];s1={...s1,...o1},i1.apps=i1.splice(a1,1,s1)}return i1})}return{subscribe:n1.subscribe,load:e1,update:t1,extractAppId,getProdAppID}}const apps=createAppStore();function createEmailStore(){const n1=writable({});return{subscribe:n1.subscribe,templates:{fetch:async()=>{const e1=await API.getEmailTemplateDefinitions(),t1=await API.getEmailTemplates();n1.set({definitions:e1,templates:t1})},save:async e1=>{const t1=await API.saveEmailTemplate(e1);e1._rev=t1._rev,e1._id=t1._id,n1.update(r1=>{const o1=r1.templates.findIndex(i1=>i1.purpose===t1.purpose);return r1.templates.splice(o1,1,e1),r1})}}}}const email=createEmailStore();function createAuthStore(){const n1=writable({user:null,accountPortalAccess:!1,tenantId:"default",tenantSet:!1,loaded:!1,postLogout:!1}),e1=derived(n1,l1=>{var c1;return{user:l1.user,accountPortalAccess:l1.accountPortalAccess,tenantId:l1.tenantId,tenantSet:l1.tenantSet,loaded:l1.loaded,postLogout:l1.postLogout,isSSO:!!((c1=l1.user)!=null&&c1.provider)}});function t1(l1){n1.update(c1=>(c1.loaded=!0,c1.user=l1,c1.accountPortalAccess=l1==null?void 0:l1.accountPortalAccess,l1&&(c1.tenantId=l1.tenantId||"default",c1.tenantSet=!0),c1)),l1&&analytics.activate().then(()=>{var c1,u1,f1;analytics.identify(l1._id),analytics.showChat({email:l1.email,created_at:(l1.createdAt||Date.now())/1e3,name:(c1=l1.account)==null?void 0:c1.name,user_id:l1._id,tenant:l1.tenantId,admin:isAdmin(l1),builder:isBuilder(l1),"Company size":(u1=l1.account)==null?void 0:u1.size,"Job role":(f1=l1.account)==null?void 0:f1.profession},!!(l1!=null&&l1.account))}).catch(()=>{})}async function r1(l1){const c1=get_store_value(e1).tenantId;n1.update(u1=>(u1.tenantId=l1,u1.tenantSet=!!l1,u1)),c1!==l1&&await admin.init()}async function o1(l1){return await API.setInitInfo(l1),n1.update(c1=>(c1.initInfo=l1,c1)),l1}function i1(){n1.update(l1=>(l1.postLogout=!0,l1))}async function a1(){const l1=await API.getInitInfo();return n1.update(c1=>(c1.initInfo=l1,c1)),l1}const s1={checkQueryString:async()=>{const l1=new URLSearchParams(window.location.search);if(l1.has("tenantId")){const c1=l1.get("tenantId");await r1(c1)}},setOrg:async l1=>{await r1(l1)},getSelf:async()=>{try{const l1=await API.fetchBuilderSelf();t1(l1)}catch{t1(null)}},login:async l1=>{const c1=get_store_value(e1).tenantId;await API.logIn({username:l1.username,password:l1.password,tenantId:c1}),await s1.getSelf()},logout:async()=>{await API.logOut(),i1(),t1(null),await o1({})},updateSelf:async l1=>{await API.updateSelf({...l1});try{const c1=await API.fetchBuilderSelf();t1(c1)}catch{t1(null)}},forgotPassword:async l1=>{const c1=get_store_value(e1).tenantId;await API.requestForgotPassword({tenantId:c1,email:l1})},resetPassword:async(l1,c1)=>{const u1=get_store_value(e1).tenantId;await API.resetPassword({tenantId:u1,password:l1,resetCode:c1})},generateAPIKey:async()=>API.generateAPIKey(),fetchAPIKey:async()=>{const l1=await API.fetchDeveloperInfo();return l1==null?void 0:l1.apiKey}};return{subscribe:e1.subscribe,setOrganisation:r1,getInitInfo:a1,setInitInfo:o1,...s1}}const auth=createAuthStore(),OIDC_CONFIG={logo:void 0,name:void 0,uuid:void 0};function createOidcStore(){const n1=writable(OIDC_CONFIG),{set:e1,subscribe:t1}=n1;return{subscribe:t1,set:e1,init:async()=>{const r1=get_store_value(auth).tenantId,o1=await API.getOIDCConfig(r1);Object.keys(o1||{}).length?e1(...o1):e1(OIDC_CONFIG)}}}const oidc=createOidcStore();function templatesStore(){const{subscribe:n1,set:e1}=writable([]);return{subscribe:n1,load:async()=>{const t1=await API.getAppTemplates();e1(t1)}}}const templates=templatesStore(),ExpiringKeys={LICENSING_DAYPASS_WARNING_MODAL:"licensing_daypass_warning_90_modal",LICENSING_DAYPASS_WARNING_BANNER:"licensing_daypass_warning_90_banner",LICENSING_PAYMENT_FAILED:"licensing_payment_failed",LICENSING_ACCOUNT_DOWNGRADED_MODAL:"licensing_account_downgraded_modal",LICENSING_APP_LIMIT_MODAL:"licensing_app_limit_modal",LICENSING_ROWS_WARNING_BANNER:"licensing_rows_warning_banner",LICENSING_AUTOMATIONS_WARNING_BANNER:"licensing_automations_warning_banner",LICENSING_QUERIES_WARNING_BANNER:"licensing_queries_warning_banner",LICENSING_USERS_ABOVE_LIMIT_BANNER:"licensing_users_above_limit_banner"},StripeStatus={PAST_DUE:"past_due",ACTIVE:"active"},TENANT_FEATURE_FLAGS={LICENSING:"LICENSING",USER_GROUPS:"USER_GROUPS",ONBOARDING_TOUR:"ONBOARDING_TOUR"},isEnabled=n1=>{var t1;const e1=get_store_value(auth).user;return!!((t1=e1==null?void 0:e1.featureFlags)!=null&&t1.includes(n1))},UNLIMITED=-1,createLicensingStore=()=>{const n1={goToUpgradePage:()=>{},goToPricingPage:()=>{},license:void 0,isFreePlan:!0,isEnterprisePlan:!0,isBusinessPlan:!0,groupsEnabled:!1,backupsEnabled:!1,brandingEnabled:!1,scimEnabled:!1,quotaUsage:void 0,usageMetrics:void 0,quotaResetDaysRemaining:void 0,quotaResetDate:void 0,accountPastDue:void 0,pastDueEndDate:void 0,pastDueDaysRemaining:void 0,accountDowngraded:void 0,userCount:void 0,userLimit:void 0,userLimitReached:!1,errUserLimit:!1},e1=864e5,t1=writable(n1);function r1(s1,l1){return l1===UNLIMITED?!1:s1>=l1}function o1(s1,l1){return l1===UNLIMITED?!1:s1>l1}async function i1(){let s1=get_store_value(admin);return s1.loaded||(await admin.init(),s1=get_store_value(admin)),s1.cloud}const a1={init:async()=>{a1.setNavigation(),a1.setLicense(),await a1.setQuotaUsage()},setNavigation:()=>{var p1;const s1=get_store_value(admin),l1=get_store_value(auth),c1=(p1=l1==null?void 0:l1.user)!=null&&p1.accountPortalAccess?`${s1.accountPortalUrl}/portal/upgrade`:"/builder/portal/account/upgrade",u1=()=>{window.location.href=c1},f1=()=>{window.open("https://budibase.com/pricing/","_blank")};t1.update(d1=>({...d1,goToUpgradePage:u1,goToPricingPage:f1}))},setLicense:()=>{const s1=get_store_value(auth).user.license,l1=s1==null?void 0:s1.plan.type,c1=l1===PlanType.ENTERPRISE,u1=l1===PlanType.FREE,f1=l1===PlanType.BUSINESS,p1=s1.features.includes(Feature.USER_GROUPS),d1=s1.features.includes(Feature.BACKUPS),m1=s1.features.includes(Feature.SCIM),_1=s1.features.includes(Feature.ENVIRONMENT_VARIABLES),h1=s1.features.includes(Feature.ENFORCEABLE_SSO),b1=s1.features.includes(Feature.BRANDING),$1=s1.features.includes(Feature.AUDIT_LOGS),y1=s1.features.includes(Feature.SYNC_AUTOMATIONS),k1=s1.features.includes(Feature.APP_BUILDERS),S1=s1.features.includes(Feature.VIEW_PERMISSIONS);t1.update(O1=>({...O1,license:s1,isEnterprisePlan:c1,isFreePlan:u1,isBusinessPlan:f1,groupsEnabled:p1,backupsEnabled:d1,brandingEnabled:b1,scimEnabled:m1,environmentVariablesEnabled:_1,auditLogsEnabled:$1,enforceableSSO:h1,syncAutomationsEnabled:y1,isViewPermissionsEnabled:S1,perAppBuildersEnabled:k1}))},setQuotaUsage:async()=>{const s1=await API.getQuotaUsage();t1.update(l1=>({...l1,quotaUsage:s1})),await a1.setUsageMetrics()},usersLimitReached:s1=>r1(s1,get_store_value(t1).userLimit),usersLimitExceeded(s1){return o1(s1,get_store_value(t1).userLimit)},setUsageMetrics:async()=>{var s1,l1,c1,u1,f1,p1,d1,m1,_1,h1;if(isEnabled(TENANT_FEATURE_FLAGS.LICENSING)){const b1=get_store_value(t1).quotaUsage,$1=get_store_value(auth).user.license,y1=new Date,k1=(Z1,W1,r0)=>!W1||!r0||!Z1?{}:Z1.reduce((p0,h0)=>{const a0=W1[h0].value,t0=r0[h0]/a0*100;return p0[h0]=a0>-1?Math.floor(t0):-1,p0},{}),S1=k1(["dayPasses","queries","automations"],$1.quotas.usage.monthly,b1.monthly.current),O1=k1(["apps","rows"],$1.quotas.usage.static,b1.usageQuota),C1=(Z1,W1)=>W1>Z1?Math.round((W1.getTime()-Z1.getTime())/e1):0,M1=new Date(b1.quotaReset),z1=C1(y1,M1),P1=((l1=(s1=$1==null?void 0:$1.billing)==null?void 0:s1.subscription)==null?void 0:l1.downgradeAt)&&((u1=(c1=$1==null?void 0:$1.billing)==null?void 0:c1.subscription)==null?void 0:u1.downgradeAt)<=y1.getTime()&&((p1=(f1=$1==null?void 0:$1.billing)==null?void 0:f1.subscription)==null?void 0:p1.status)===StripeStatus.PAST_DUE&&($1==null?void 0:$1.plan.type)===PlanType.FREE,H1=(m1=(d1=$1==null?void 0:$1.billing)==null?void 0:d1.subscription)==null?void 0:m1.pastDueAt,R1=(h1=(_1=$1==null?void 0:$1.billing)==null?void 0:_1.subscription)==null?void 0:h1.downgradeAt;let q1,B1;H1&&R1&&(B1=new Date(R1),q1=C1(new Date(H1),B1));const I1=$1.quotas.usage.static.users,F1=I1==null?void 0:I1.value,j1=b1.usageQuota.users,X1=r1(j1,F1),Y1=o1(j1,F1),e0=await i1()&&$1.plan.model===PlanModel$1.PER_USER&&Y1;t1.update(Z1=>({...Z1,usageMetrics:{...S1,...O1},quotaResetDaysRemaining:z1,quotaResetDate:M1,accountDowngraded:P1,accountPastDue:H1!=null,pastDueEndDate:B1,pastDueDaysRemaining:q1,userCount:j1,userLimit:F1,userLimitReached:X1,errUserLimit:e0}))}}};return{subscribe:t1.subscribe,...a1}},licensing=createLicensingStore();function createGroupsStore(){const n1=writable([]),e1=o1=>{n1.update(i1=>{const a1=i1.findIndex(s1=>s1._id===o1._id);return a1>=0?i1.splice(a1,1,o1):i1.push(o1),i1})},t1=async o1=>{const i1=await API.getGroup(o1);e1(i1)},r1={init:async()=>{if(get_store_value(licensing).groupsEnabled){const o1=await API.getGroups();n1.set(o1.data)}},get:t1,save:async o1=>{const i1=await API.saveGroup(o1);return o1._id=i1._id,o1._rev=i1._rev,e1(o1),o1},delete:async o1=>{await API.deleteGroup({id:o1._id,rev:o1._rev}),n1.update(i1=>(i1=i1.filter(a1=>a1._id!==o1._id),i1))},addUser:async(o1,i1)=>{await API.addUsersToGroup(o1,i1),await t1(o1)},removeUser:async(o1,i1)=>{await API.removeUsersFromGroup(o1,i1),await t1(o1)},addApp:async(o1,i1,a1)=>{await API.addAppsToGroup(o1,[{appId:i1,roleId:a1}]),await t1(o1)},removeApp:async(o1,i1)=>{await API.removeAppsFromGroup(o1,[{appId:i1}]),await t1(o1)},getGroupAppIds:o1=>{var a1;let i1=Object.keys((o1==null?void 0:o1.roles)||{});return(a1=o1==null?void 0:o1.builder)!=null&&a1.apps&&(i1=i1.concat(o1.builder.apps)),i1},addGroupAppBuilder:async(o1,i1)=>await API.addGroupAppBuilder({groupId:o1,appId:i1}),removeGroupAppBuilder:async(o1,i1)=>await API.removeGroupAppBuilder({groupId:o1,appId:i1})};return{subscribe:n1.subscribe,actions:r1}}const groups=createGroupsStore();function createPluginsStore(){const{subscribe:n1,set:e1,update:t1}=writable([]);async function r1(){const s1=await API.getPlugins();e1(s1)}async function o1(s1){await API.deletePlugin(s1),t1(l1=>(l1=l1.filter(c1=>c1._id!==s1),l1))}async function i1(s1,l1,c1=null){let u1={source:s1,url:l1};switch(s1){case PluginSource.URL:u1.headers=c1;break;case PluginSource.GITHUB:u1.githubToken=c1;break}let p1=(await API.createPlugin(u1)).plugin;t1(d1=>{const m1=d1.findIndex(_1=>_1._id===p1._id);return m1>=0?d1.splice(m1,1,p1):d1.push(p1),d1})}async function a1(s1){if(!s1)return;let l1=new FormData;l1.append("file",s1);let u1=(await API.uploadPlugin(l1)).plugins[0];t1(f1=>{const p1=f1.findIndex(d1=>d1._id===u1._id);return p1>=0?f1.splice(p1,1,u1):f1.push(u1),f1})}return{subscribe:n1,load:r1,createPlugin:i1,deletePlugin:o1,uploadPlugin:a1}}const plugins$1=createPluginsStore();function createBackupsStore(){const n1=writable({});function e1(s1){n1.update(l1=>(l1.selectedBackup=s1,l1))}async function t1({appId:s1,trigger:l1,type:c1,page:u1,startDate:f1,endDate:p1}){return API.searchBackups({appId:s1,trigger:l1,type:c1,page:u1,startDate:f1,endDate:p1})}async function r1({appId:s1,backupId:l1,name:c1}){return API.restoreBackup({appId:s1,backupId:l1,name:c1})}async function o1({appId:s1,backupId:l1}){return API.deleteBackup({appId:s1,backupId:l1})}async function i1(s1){return API.createManualBackup(s1)}async function a1({appId:s1,backupId:l1,name:c1}){return API.updateBackup({appId:s1,backupId:l1,name:c1})}return{createManualBackup:i1,searchBackups:t1,selectBackup:e1,deleteBackup:o1,restoreBackup:r1,updateBackup:a1,subscribe:n1.subscribe}}const backups=createBackupsStore();function createEnvironmentStore(){const{subscribe:n1,update:e1}=writable({variables:[],status:{}});async function t1(){const l1=await API.checkEnvironmentVariableStatus();e1(c1=>(c1.status=l1,c1))}async function r1(){if(get_store_value(licensing).environmentVariablesEnabled){const c1=(await API.fetchEnvironmentVariables()).variables.map(u1=>({name:u1}));e1(u1=>(u1.variables=c1,u1))}}async function o1(l1){await API.createEnvironmentVariable(l1);let c1={name:l1.name};e1(u1=>(u1.variables=[c1,...u1.variables],u1))}async function i1(l1){await API.deleteEnvironmentVariable(l1),e1(c1=>(c1.variables=c1.variables.filter(u1=>u1.name!==l1),c1))}async function a1(l1){await API.updateEnvironmentVariable(l1)}async function s1(){await API.publishEvent(EventPublishType.ENV_VAR_UPGRADE_PANEL_OPENED)}return{subscribe:n1,checkStatus:t1,loadVariables:r1,createVariable:o1,deleteVariable:i1,updateVariable:a1,upgradePanelOpened:s1}}const environment=createEnvironmentStore(),menu=derived([admin,auth],([n1,e1])=>{const t1=e1==null?void 0:e1.user,r1=isAdmin(t1),o1=n1==null?void 0:n1.cloud;let i1=[{title:"Users",href:"/builder/portal/users/users"}];isEnabled(TENANT_FEATURE_FLAGS.USER_GROUPS)&&i1.push({title:"Groups",href:"/builder/portal/users/groups"});let a1=[{title:"Apps",href:"/builder/portal/apps"}];if(isGlobalBuilder(t1)&&(a1.push({title:"Users",href:"/builder/portal/users",subPages:i1}),a1.push({title:"Plugins",href:"/builder/portal/plugins"})),r1){let s1=[{title:"Auth",href:"/builder/portal/settings/auth"},{title:"Email",href:"/builder/portal/settings/email"},{title:"Organisation",href:"/builder/portal/settings/organisation"},{title:"Branding",href:"/builder/portal/settings/branding"},{title:"Environment",href:"/builder/portal/settings/environment"}];o1||(s1.push({title:"Version",href:"/builder/portal/settings/version"}),s1.push({title:"Diagnostics",href:"/builder/portal/settings/diagnostics"})),a1.push({title:"Settings",href:"/builder/portal/settings",subPages:s1})}if(isEnabled(TENANT_FEATURE_FLAGS.LICENSING)){let s1=[{title:"Usage",href:"/builder/portal/account/usage"}];r1&&(s1.push({title:"Audit Logs",href:"/builder/portal/account/auditLogs"}),o1||s1.push({title:"System Logs",href:"/builder/portal/account/systemLogs"})),o1&&(t1==null?void 0:t1.accountPortalAccess)?s1.push({title:"Upgrade",href:(n1==null?void 0:n1.accountPortalUrl)+"/portal/upgrade"}):!o1&&r1&&s1.push({title:"Upgrade",href:"/builder/portal/account/upgrade"}),(t1==null?void 0:t1.accountPortalAccess)&&t1.account.stripeCustomerId&&s1.push({title:"Billing",href:(n1==null?void 0:n1.accountPortalUrl)+"/portal/billing"}),a1.push({title:"Account",href:"/builder/portal/account",subPages:s1})}return a1});function createAuditLogsStore(){const{subscribe:n1,update:e1}=writable({events:{},logs:{}});async function t1(i1={}){if(get_store_value(licensing).auditLogsEnabled){const a1=await API.searchAuditLogs(i1);return e1(s1=>({...s1,logs:{...a1,opts:i1}})),a1}}async function r1(){const i1=await API.getEventDefinitions();e1(a1=>({...a1,...i1}))}function o1(i1={}){return API.getDownloadUrl(i1)}return{subscribe:n1,search:t1,getEventDefinitions:r1,getDownloadUrl:o1}}const auditLogs=createAuditLogsStore(),createFeatureStore=()=>{const n1=writable({scim:{isFeatureFlagEnabled:!1,isConfigFlagEnabled:!1}}),e1=writable({isScimEnabled:!1});n1.subscribe(r1=>{e1.update(o1=>({...o1,isScimEnabled:r1.scim.isFeatureFlagEnabled&&r1.scim.isConfigFlagEnabled}))}),licensing.subscribe(r1=>{n1.update(o1=>({...o1,scim:{...o1.scim,isFeatureFlagEnabled:r1.scimEnabled}}))});const t1={init:async()=>{const r1=await API.getConfig(ConfigType.SCIM);n1.update(o1=>{var i1;return{...o1,scim:{...o1.scim,isConfigFlagEnabled:(i1=r1==null?void 0:r1.config)==null?void 0:i1.enabled}}})}};return{subscribe:e1.subscribe,...t1}},features=createFeatureStore(),convertOldFieldFormat=n1=>n1?n1.map(t1=>typeof t1=="string"?{field:t1,active:!0}:typeof(t1==null?void 0:t1.active)!="boolean"?{field:t1.name,active:!0}:t1):[],getComponentForField=(n1,e1)=>{if(!n1||!(e1!=null&&e1[n1]))return null;const t1=e1[n1].type;return FieldTypeToComponentMap[t1]},FieldTypeToComponentMap={string:"stringfield",number:"numberfield",bigint:"bigintfield",options:"optionsfield",array:"multifieldselect",boolean:"booleanfield",longform:"longformfield",datetime:"datetimefield",attachment:"attachmentfield",link:"relationshipfield",json:"jsonfield",barcodeqr:"codescanner"},CAPTURE_VAR_INSIDE_TEMPLATE=/{{([^}]+)}}/g,CAPTURE_VAR_INSIDE_JS=/\$\("([^")]+)"\)/g,getBindableProperties=(n1,e1)=>{const t1=getContextBindings(n1,e1),r1=getUserBindings(),o1=getUrlBindings(n1),i1=getDeviceBindings(),a1=getStateBindings(),s1=getSelectedRowsBindings(n1),l1=getRoleBindings();return[...t1,...o1,...a1,...r1,...i1,...s1,...l1]},getRestBindings=()=>{const n1=get_store_value(licensing).environmentVariablesEnabled;return[...getUserBindings(),...getAuthBindings(),...n1?getEnvironmentBindings():[]]},getAuthBindings=()=>{let n1=[];const e1=Fh("user"),t1=Fh("oauth2"),r1=Fh("accessToken");return n1=[{runtime:`${e1}.${t1}.${r1}`,readable:"Current User.OAuthToken",key:"accessToken",display:{name:"OAuthToken",type:"text"}}].map(i1=>({type:"context",runtimeBinding:i1.runtime,readableBinding:i1.readable,fieldSchema:{type:"string",name:i1.key},providerId:"user",category:"Current User",display:i1.display})),n1},getEnvironmentBindings=()=>get_store_value(environment).variables.map(e1=>({type:"context",runtimeBinding:`env.${Fh(e1.name)}`,readableBinding:`env.${e1.name}`,category:"Environment",icon:"Key",display:{type:"string",name:e1.name}})),toBindingsArray=(n1,e1,t1)=>n1?Object.keys(n1).reduce((r1,o1)=>{if(!o1)return r1;let i1={type:"context",runtimeBinding:o1,readableBinding:`${e1}.${o1}`,icon:"Brackets"};return t1&&(i1.category=t1),r1.push(i1),r1},[]):[],readableToRuntimeMap=(n1,e1)=>!n1||!e1?{}:Object.keys(e1).reduce((t1,r1)=>(t1[r1]=readableToRuntimeBinding(n1,e1[r1]),t1),{}),runtimeToReadableMap=(n1,e1)=>!n1||!e1?{}:Object.keys(e1).reduce((t1,r1)=>(t1[r1]=runtimeToReadableBinding(n1,e1[r1]),t1),{}),getComponentBindableProperties=(n1,e1)=>{if(!n1||!e1)return[];const t1=findComponent(n1.props,e1),r1=store.actions.components.getDefinition(t1==null?void 0:t1._component);return r1!=null&&r1.context?getProviderContextBindings(n1,t1):[]},getContextProviderComponents=(n1,e1,t1,r1={includeSelf:!1})=>{if(!n1||!e1)return[];const o1=findComponentPath(n1.props,e1);return r1!=null&&r1.includeSelf||o1.pop(),o1.filter(i1=>{const a1=store.actions.components.getDefinition(i1._component);return a1!=null&&a1.context?t1?(Array.isArray(a1.context)?a1.context:[a1.context]).find(l1=>l1.type===t1)!=null:!0:!1})},getActionProviderComponents=(n1,e1,t1)=>{if(!n1||!e1)return[];const r1=findComponentPath(n1.props,e1);return r1.pop(),r1.filter(o1=>{var a1;const i1=store.actions.components.getDefinition(o1._component);return(a1=i1==null?void 0:i1.actions)==null?void 0:a1.includes(t1)})},getDatasourceForProvider=(n1,e1)=>{const t1=getComponentSettings(e1==null?void 0:e1._component),r1=t1.find(s1=>s1.type==="dataProvider");if(r1){const s1=e1[r1.key],l1=extractLiteralHandlebarsID(s1),c1=findComponent(n1==null?void 0:n1.props,l1);return getDatasourceForProvider(n1,c1)}const o1=["dataSource","table","schema"],i1=t1.find(s1=>o1.includes(s1.type));if(!i1)return null;const a1=e1[i1==null?void 0:i1.key];return typeof a1=="string"?{tableId:a1,type:"table"}:a1},getContextBindings=(n1,e1)=>{const t1=getContextProviderComponents(n1,e1);return getProviderContextBindings(n1,t1)},getProviderContextBindings=(n1,e1)=>{if(!n1||!e1)return[];Array.isArray(e1)||(e1=[e1]);let t1=[];return e1.forEach(r1=>{const o1=store.actions.components.getDefinition(r1._component);(Array.isArray(o1.context)?o1.context:[o1.context]).forEach(a1=>{var m1;if(!(a1!=null&&a1.type))return;let s1,l1,c1,u1=a1.suffix;if(a1.type==="form")s1=buildFormSchema(r1,n1),c1="Fields";else if(a1.type==="static")s1={},(a1.values||[]).forEach(h1=>{s1[h1.key]={name:h1.label,type:h1.type||"string"}});else if(a1.type==="schema"){const _1=getDatasourceForProvider(n1,r1);if(!_1)return;const h1=getSchemaForDatasource(n1,_1);if(s1=h1.schema,l1=h1.table,_1.type==="jsonarray"){const b1=_1.label.split(".");c1=b1[b1.length-1]}else if(_1.type==="viewV2"){const b1=Object.values((l1==null?void 0:l1.views)||{}).find($1=>$1.id===_1.id);c1=b1==null?void 0:b1.name}else c1=(m1=h1.table)==null?void 0:m1.name}if(!s1)return;const f1=Object.keys(s1).sort();let p1=r1._id;if(u1&&(p1+=`-${u1}`),!filterCategoryByContext(r1,a1))return;const d1=Fh(p1);f1.forEach(_1=>{const h1=s1[_1],b1=_1.split(".").map(Fh).join("."),$1=`${d1}.${b1}`;let y1=r1._instanceName;c1&&(y1+=`.${c1}`),y1+=`.${h1.name||_1}`;const k1=getComponentBindingCategory(r1,a1,o1);t1.push({type:"context",runtimeBinding:$1,readableBinding:y1,fieldSchema:h1,providerId:p1,tableId:l1==null?void 0:l1._id,component:r1._component,category:k1.category,icon:k1.icon,display:{name:h1.name||_1,type:h1.type}})})})}),t1},filterCategoryByContext=(n1,e1)=>{const{_component:t1}=n1;return!(t1.endsWith("formblock")&&(n1.actionType=="Create"&&e1.type==="schema"||n1.actionType=="View"&&e1.type==="form"))},getComponentBindingCategory=(n1,e1,t1)=>{let r1=t1.icon,o1=n1._instanceName;if(n1._component.endsWith("formblock")){let i1={form:"Fields",schema:"Row"};o1=`${n1._instanceName} - ${i1[e1.type]}`,r1=e1.type==="form"?"Form":"Data"}return{icon:r1,category:o1}},getUserBindings=()=>{let n1=[];const{schema:e1}=getSchemaForDatasourcePlus(TableNames.USERS),t1=Object.keys(e1).sort(),r1=Fh("user");return n1=t1.reduce((o1,i1)=>{const a1=e1[i1];return o1.push({type:"context",runtimeBinding:`${r1}.${Fh(i1)}`,readableBinding:`Current User.${i1}`,fieldSchema:a1,providerId:"user",category:"Current User",icon:"User",display:{name:i1}}),o1},[]),n1},getDeviceBindings=()=>{var e1;let n1=[];if((e1=get_store_value(store).clientFeatures)!=null&&e1.deviceAwareness){const t1=Fh("device");n1=[{type:"context",runtimeBinding:`${t1}.${Fh("mobile")}`,readableBinding:"Device.Mobile",category:"Device",icon:"DevicePhone",display:{type:"boolean",name:"mobile"}},{type:"context",runtimeBinding:`${t1}.${Fh("tablet")}`,readableBinding:"Device.Tablet",category:"Device",icon:"DevicePhone",display:{type:"boolean",name:"tablet"}},{type:"context",runtimeBinding:`${t1}.${Fh("theme")}`,readableBinding:"App.Theme",category:"Device",icon:"DevicePhone",display:{type:"string",name:"App Theme"}}]}return n1},getSelectedRowsBindings=n1=>{var t1;let e1=[];if((t1=get_store_value(store).clientFeatures)!=null&&t1.rowSelection){let r1=findAllMatchingComponents(n1==null?void 0:n1.props,a1=>a1._component.endsWith("table"));const o1=Fh("rowSelection");e1=e1.concat(r1.map(a1=>({type:"context",runtimeBinding:`${o1}.${Fh(a1._id)}.${Fh("selectedRows")}`,readableBinding:`${a1._instanceName}.Selected rows`,category:"Selected rows",icon:"ViewRow",display:{name:a1._instanceName}})));let i1=findAllMatchingComponents(n1==null?void 0:n1.props,a1=>a1._component.endsWith("tableblock"));e1=e1.concat(i1.map(a1=>({type:"context",runtimeBinding:`${o1}.${Fh(a1._id+"-table")}.${Fh("selectedRows")}`,readableBinding:`${a1._instanceName}.Selected rows`,category:"Selected rows",icon:"ViewRow",display:{name:a1._instanceName}})))}return e1},makeStateBinding=n1=>({type:"context",runtimeBinding:`${Fh("state")}.${Fh(n1)}`,readableBinding:`State.${n1}`,category:"State",icon:"AutomatedSegment",display:{name:n1}}),getStateBindings=()=>{var e1;let n1=[];return(e1=get_store_value(store).clientFeatures)!=null&&e1.state&&(n1=getAllStateVariables().map(makeStateBinding)),n1},getUrlBindings=n1=>{var s1,l1;const t1=((l1=(s1=n1==null?void 0:n1.routing)==null?void 0:s1.route)!=null?l1:"").split("/");let r1=[];t1.forEach(c1=>{c1.startsWith(":")&&c1.length>1&&r1.push(c1.replace(/:/g,"").replace(/\?/g,""))});const o1=Fh("url"),i1=r1.map(c1=>({type:"context",runtimeBinding:`${o1}.${Fh(c1)}`,readableBinding:`URL.${c1}`,category:"URL",icon:"RailTop",display:{type:"string",name:c1}})),a1={type:"context",runtimeBinding:Fh("query"),readableBinding:"Query params",category:"URL",icon:"RailTop",display:{type:"object",name:"Query params"}};return i1.concat([a1])},getRoleBindings=()=>(get_store_value(roles)||[]).map(n1=>({type:"context",runtimeBinding:`trim "${n1._id}"`,readableBinding:`Role.${n1.name}`,category:"Role",icon:"UserGroup",display:{type:"string",name:n1.name}})),getEventContextBindings=({settingKey:n1,componentInstance:e1,componentId:t1,componentDefinition:r1,asset:o1})=>{var f1;let i1=[];const a1=o1!=null?o1:get_store_value(currentAsset),s1=e1!=null?e1:findComponent(a1.props,t1);if(!s1)return i1;const l1=r1!=null?r1:store.actions.components.getDefinition(s1==null?void 0:s1._component),u1=getComponentSettings(s1==null?void 0:s1._component).find(p1=>p1.key===n1);return(f1=u1==null?void 0:u1.context)!=null&&f1.length&&u1.context.forEach(p1=>{i1.push({readableBinding:p1.label,runtimeBinding:`${Fh("eventContext")}.${Fh(p1.key)}`,category:s1._instanceName,icon:l1.icon,display:{name:p1.label}})}),i1},getActionBindings=(n1,e1)=>{let t1=[];const r1=n1==null?void 0:n1.findIndex(i1=>i1.id===e1);return r1==null||r1===-1||n1.slice(0,r1).forEach((i1,a1)=>{const s1=ActionDefinitions.actions.find(l1=>l1.name===i1["##eventHandlerType"]);s1.context&&s1.context.forEach(l1=>{t1.push({readableBinding:`Action ${a1+1}.${l1.label}`,runtimeBinding:`actions.${a1}.${l1.value}`,category:"Actions",icon:"JourneyAction",display:{name:l1.label}})})}),t1},getSchemaForDatasourcePlus=(n1,e1)=>{const r1=(n1==null?void 0:n1.includes("view_"))?{type:"viewV2",id:n1,tableId:n1.split("_").slice(1,3).join("_")}:{type:"table",tableId:n1};return getSchemaForDatasource(null,r1,e1)},getSchemaForDatasource=(n1,e1,t1)=>{var i1,a1;t1=t1||{};let r1,o1;if(e1){const{type:s1}=e1,l1=get_store_value(tables).list;if(s1==="provider"){const m1=findComponent(n1==null?void 0:n1.props,e1.providerId),_1=getDatasourceForProvider(n1,m1);return getSchemaForDatasource(n1,_1,t1)}else if(s1==="query")o1=get_store_value(queries).list.find(_1=>_1._id===e1._id);else if(s1==="field"){o1={name:e1.fieldName};const{fieldType:m1}=e1;m1==="attachment"?r1={url:{type:"string"},name:{type:"string"}}:m1==="array"&&(r1={value:{type:"string"}})}else if(s1==="jsonarray"){o1=l1.find(_1=>_1._id===e1.tableId);let m1=o1==null?void 0:o1.schema;r1=getJSONArrayDatasourceSchema(m1,e1)}else o1=l1.find(m1=>m1._id===e1.tableId);if(o1&&!r1)if(s1==="view")r1=fp.cloneDeep((a1=(i1=o1.views)==null?void 0:i1[e1.name])==null?void 0:a1.schema);else if(s1==="viewV2"){const m1=Object.values(o1.views||{}).find(_1=>_1.id===e1.id);r1=fp.cloneDeep(m1==null?void 0:m1.schema),Object.keys(r1||{}).forEach(_1=>{r1[_1].visible||delete r1[_1]})}else s1==="query"&&(t1.formSchema||t1.searchableSchema)?(r1={},(o1.parameters||[]).forEach(_1=>{_1!=null&&_1.name&&(r1[_1.name]={..._1,type:"string"})})):r1=fp.cloneDeep(o1.schema);if(r1){let m1={};Object.keys(r1).forEach(_1=>{const h1=r1[_1];if((h1==null?void 0:h1.type)==="json"){const b1=convertJSONSchemaToTableSchema(h1,{squashObjects:!0});Object.keys(b1).forEach($1=>{m1[`${_1}.${$1}`]={type:b1[$1].type,nestedJSON:!0}})}}),r1={...r1,...m1}}const c1=o1&&!o1.sql,u1=["table","link","viewV2"].includes(e1.type);let f1=u1,p1=u1&&c1;t1.formSchema?(f1=!1,p1=!1):t1.searchableSchema&&(f1=u1&&c1),r1&&(f1&&(r1._id={type:"string"}),p1&&(r1._rev={type:"string"}));let d1={};Object.entries(r1||{}).forEach(([m1,_1])=>{typeof _1=="string"?d1[m1]={type:_1,name:m1}:d1[m1]={..._1,name:m1}}),r1=d1}return{schema:r1,table:o1}},buildFormSchema=(n1,e1)=>{var i1;let t1={};if(!n1)return t1;if(n1._component.endsWith("formblock")){let a1={};const s1=getDatasourceForProvider(e1,n1),l1=getSchemaForDatasource(n1,s1);if(!n1.fields)Object.values(l1==null?void 0:l1.schema).filter(({autocolumn:c1,name:u1})=>!c1&&!["_rev","_id"].includes(u1)).forEach(({name:c1})=>{a1[c1]={type:l1==null?void 0:l1.schema[c1].type}});else{const c1=convertOldFieldFormat(n1.fields||[]);c1==null||c1.forEach(({field:u1,active:f1})=>{!f1||l1!=null&&l1.schema[u1]&&(a1[u1]={type:l1==null?void 0:l1.schema[u1].type})})}return a1}const o1=getComponentSettings(n1._component).find(a1=>a1.key==="field"&&a1.type.startsWith("field/"));if(o1&&n1.field){const a1=o1.type.split("field/")[1];a1&&(t1[n1.field]={type:a1})}return(i1=n1._children)==null||i1.forEach(a1=>{const s1=buildFormSchema(a1,e1);t1={...t1,...s1}}),t1},getAllStateVariables=()=>{let n1=[];getAllAssets().forEach(t1=>{findAllMatchingComponents(t1.props,r1=>{getComponentSettings(r1._component).filter(i1=>i1.type==="event").forEach(i1=>{n1.push(r1[i1.key])})})}),get_store_value(store).screens.forEach(t1=>{t1.onLoad&&n1.push(t1.onLoad)});let e1=new Set;return n1.forEach(t1=>{!Array.isArray(t1)||t1.forEach(r1=>{var o1,i1,a1;r1["##eventHandlerType"]==="Update State"&&((o1=r1.parameters)==null?void 0:o1.type)==="set"&&((i1=r1.parameters)==null?void 0:i1.key)&&((a1=r1.parameters)==null?void 0:a1.value)&&e1.add(r1.parameters.key)})}),Array.from(e1)},getAllAssets=()=>{let n1=[];return n1=n1.concat(get_store_value(store).layouts||[]),n1=n1.concat(get_store_value(store).screens||[]),n1},shouldReplaceBinding=(n1,e1,t1)=>{if(!(n1!=null&&n1.includes(e1)))return!1;if(t1==="readableBinding")return!0;const r1=n1.replace(/\s+/g,""),o1=e1.replace(/\s+/g,"");return![`[${o1}]`,`"${o1}"`,`'${o1}'`].find(a1=>r1==null?void 0:r1.includes(a1))},replaceBetween=(n1,e1,t1,r1)=>n1.substring(0,e1)+r1+n1.substring(t1),bindingReplacement=(n1,e1,t1)=>{const r1=Wh(e1);r1&&(e1=qh(e1));const o1=r1?CAPTURE_VAR_INSIDE_JS:CAPTURE_VAR_INSIDE_TEMPLATE,i1=t1==="runtimeBinding"?"readableBinding":"runtimeBinding";if(typeof e1!="string")return e1;const a1=n1.map(c1=>c1[i1]).sort((c1,u1)=>u1.length-c1.length),s1=e1.match(o1)||[];let l1=e1;for(let c1 of s1){let u1=c1,f1=u1;for(let p1 of a1)if(r1||shouldReplaceBinding(u1,p1,t1)){const d1=n1.find(_1=>_1[i1]===p1);let m1;do if(m1=f1.indexOf(p1),m1!==-1){let _1=m1+p1.length,h1=Array(d1[t1].length+1).join("*");f1=replaceBetween(f1,m1,_1,h1),u1=replaceBetween(u1,m1,_1,d1[t1])}while(m1!==-1)}l1=l1.replace(c1,u1)}return r1&&(l1=Hh(l1)),l1},extractLiteralHandlebarsID=n1=>{var e1;return!n1||typeof n1!="string"?null:(e1=n1.match(/{{\s*literal\s*\[+([^\]]+)].*}}/))==null?void 0:e1[1]},readableToRuntimeBinding=(n1,e1)=>bindingReplacement(n1,e1,"runtimeBinding"),runtimeToReadableBinding=(n1,e1)=>bindingReplacement(n1,e1,"readableBinding"),getComponentFieldOptions=(n1,e1,t1,r1=!0)=>{const o1=findClosestMatchingComponent(n1,e1,l1=>l1._component==="@budibase/standard-components/form"),i1=getDatasourceForProvider(n1,o1),a1=getSchemaForDatasource(n1,i1,{formSchema:!0}).schema;let s1=[t1];return r1&&(t1==="field/options"||t1==="field/longform")&&(s1=[t1,"field/string"]),s1=s1.map(l1=>l1.slice(l1.indexOf("/")+1)),Object.entries(a1||{}).filter(l1=>s1.includes(l1[1].type)).map(l1=>l1[0])},createBuilderWebsocket=n1=>{const e1=createWebsocket("/socket/builder");return e1.on("connect",()=>{e1.emit(BuilderSocketEvent.SelectApp,{appId:n1},({users:t1})=>{userStore.actions.init(t1)})}),e1.on("connect_error",t1=>{console.log("Failed to connect to builder websocket:",t1.message)}),e1.on("disconnect",()=>{userStore.actions.reset()}),e1.onOther(SocketEvent.UserUpdate,({user:t1})=>{userStore.actions.updateUser(t1)}),e1.onOther(SocketEvent.UserDisconnect,({sessionId:t1})=>{userStore.actions.removeUser(t1)}),e1.onOther(BuilderSocketEvent.LockTransfer,({userId:t1})=>{var r1,o1;t1===((o1=(r1=get_store_value(auth))==null?void 0:r1.user)==null?void 0:o1._id)&&store.update(i1=>({...i1,hasLock:!0}))}),e1.onOther(BuilderSocketEvent.TableChange,({id:t1,table:r1})=>{tables.replaceTable(t1,r1)}),e1.onOther(BuilderSocketEvent.DatasourceChange,({id:t1,datasource:r1})=>{datasources.replaceDatasource(t1,r1)}),e1.onOther(BuilderSocketEvent.ScreenChange,({id:t1,screen:r1})=>{store.actions.screens.replace(t1,r1)}),e1.onOther(BuilderSocketEvent.AppMetadataChange,({metadata:t1})=>{store.actions.metadata.replace(t1)}),e1.onOther(BuilderSocketEvent.AppPublishChange,async({user:t1,published:r1})=>{await apps.load(),r1&&await deploymentStore.actions.load();const o1=r1?"published":"unpublished";notifications.success(`${getUserLabel(t1)} ${o1} this app`)}),e1.onOther(BuilderSocketEvent.AutomationChange,({id:t1,automation:r1})=>{automationStore.actions.replace(t1,r1)}),e1},INITIAL_FRONTEND_STATE={initialised:!1,apps:[],name:"",url:"",description:"",layouts:[],screens:[],components:[],clientFeatures:{spectrumThemes:!1,intelligentLoading:!1,deviceAwareness:!1,state:!1,rowSelection:!1,customThemes:!1,devicePreview:!1,messagePassing:!1,continueIfAction:!1,showNotificationAction:!1,sidePanel:!1},features:{componentValidation:!1},errors:[],hasAppPackage:!1,libraries:null,appId:"",routes:{},clientLibPath:"",theme:"",customTheme:{},previewDevice:"desktop",highlightedSettingKey:null,propertyFocus:null,builderSidePanel:!1,hasLock:!0,showPreview:!1,selectedScreenId:null,selectedComponentId:null,selectedLayoutId:null,selectedComponentInstance:null,onboarding:!1,tourNodes:null},getFrontendStore=()=>{const n1=writable({...INITIAL_FRONTEND_STATE});let e1;const t1=sequential(async(r1,o1)=>{const a1=get_store_value(n1).screens.find(c1=>c1._id===o1);if(!a1)return;let s1=fp.cloneDeep(a1);if(r1(s1)!==!1)return await n1.actions.screens.save(s1)});return n1.actions={reset:()=>{n1.set({...INITIAL_FRONTEND_STATE}),e1==null||e1.disconnect(),e1=null},initialise:async r1=>{const{layouts:o1,screens:i1,application:a1,clientLibPath:s1,hasLock:l1}=r1;e1||(e1=createBuilderWebsocket(a1.appId)),await n1.actions.components.refreshDefinitions(a1.appId),n1.update(c1=>({...c1,libraries:a1.componentLibraries,name:a1.name,description:a1.description,appId:a1.appId,url:a1.url,layouts:o1||[],screens:i1||[],theme:a1.theme||"spectrum--light",customTheme:a1.customTheme,hasAppPackage:!0,appInstance:a1.instance,clientLibPath:s1,previousTopNavPath:{},version:a1.version,revertableVersion:a1.revertableVersion,upgradableVersion:a1.upgradableVersion,navigation:a1.navigation||{},usedPlugins:a1.usedPlugins||[],hasLock:l1,features:{...INITIAL_FRONTEND_STATE.features,...a1.features},icon:a1.icon||{},initialised:!0})),screenHistoryStore.reset(),automationHistoryStore.reset(),database.set(a1.instance),await datasources.init(),await integrations.init(),await queries.init(),await tables.init()},theme:{save:async r1=>{const o1=get_store_value(n1).appId,i1=await API.saveAppMetadata({appId:o1,metadata:{theme:r1}});n1.update(a1=>(a1.theme=i1.theme,a1))}},customTheme:{save:async r1=>{const o1=get_store_value(n1).appId,i1=await API.saveAppMetadata({appId:o1,metadata:{customTheme:r1}});n1.update(a1=>(a1.customTheme=i1.customTheme,a1))}},navigation:{save:async r1=>{const o1=get_store_value(n1).appId,i1=await API.saveAppMetadata({appId:o1,metadata:{navigation:r1}});n1.update(a1=>(a1.navigation=i1.navigation,a1))}},screens:{select:r1=>{const o1=get_store_value(n1),i1=o1.screens.find(a1=>a1._id===r1);!i1||o1.selectedScreenId!==i1._id&&n1.update(a1=>(a1.selectedScreenId=i1._id,a1))},validate:r1=>{const o1=(a1,s1=[],l1=[])=>{var f1,p1,d1;const c1=a1._component;if(s1.includes(c1)||l1.length&&!l1.includes(c1))return c1;if(!((f1=a1==null?void 0:a1._children)!=null&&f1.length))return;c1==="@budibase/standard-components/sidepanel"&&(s1=[]);const u1=n1.actions.components.getDefinition(a1._component);if(l1=[],(p1=u1==null?void 0:u1.legalDirectChildren)!=null&&p1.length&&(l1=u1.legalDirectChildren.map(m1=>`@budibase/standard-components/${m1}`)),(d1=u1==null?void 0:u1.illegalChildren)!=null&&d1.length){const m1=u1.illegalChildren.map(_1=>`@budibase/standard-components/${_1}`);s1=[...new Set([...s1,...m1])]}for(let m1 of a1._children){const _1=o1(m1,s1,l1);if(_1)return _1}},i1=o1(r1.props);if(i1)throw`You can't place a ${n1.actions.components.getDefinition(i1).name} here`},save:async r1=>{var c1;const o1=get_store_value(n1);(c1=o1.features)!=null&&c1.componentValidation&&n1.actions.screens.validate(r1),n1.actions.screens.enrichEmptySettings(r1);const i1=r1._id===void 0,a1=await API.saveScreen(r1),s1=await API.fetchAppRoutes();let l1=o1.usedPlugins;if(a1.pluginAdded){const{application:u1}=await API.fetchAppPackage(o1.appId);l1=u1.usedPlugins||[]}return n1.update(u1=>{const f1=u1.screens.findIndex(p1=>p1._id===a1._id);return f1!==-1?u1.screens.splice(f1,1,a1):u1.screens.push(a1),i1&&(u1.selectedScreenId=a1._id,u1.selectedComponentId=a1.props._id),u1.routes=s1.routes,u1.usedPlugins=l1,u1}),a1},patch:async(r1,o1)=>{if(o1||(o1=get_store_value(n1).selectedScreenId),!(!o1||!r1))return await t1(r1,o1)},replace:async(r1,o1)=>{if(!!r1)if(!o1)n1.update(i1=>({...i1,screens:i1.screens.filter(a1=>a1._id!==r1)}));else{const i1=get_store_value(n1).screens.findIndex(a1=>a1._id===o1._id);i1===-1?n1.update(a1=>({...a1,screens:[...a1.screens,o1]})):n1.update(a1=>(a1.screens[i1]=o1,a1))}},delete:async r1=>{const o1=Array.isArray(r1)?r1:[r1];let i1=[],a1=[];o1.forEach(c1=>{i1.push(API.deleteScreen({screenId:c1._id,screenRev:c1._rev})),a1.push(c1.routing.route)}),await Promise.all(i1),await n1.actions.links.delete(a1);const s1=o1.map(c1=>c1._id),l1=await API.fetchAppRoutes();return n1.update(c1=>(c1.screens=c1.screens.filter(u1=>!s1.includes(u1._id)),s1.includes(c1.selectedScreenId)&&(c1.selectedScreenId=null,c1.selectedComponentId=null),c1.routes=l1.routes,c1)),null},updateSetting:async(r1,o1,i1)=>{if(!r1||!o1)return;const a1=u1=>{if(!u1||deepGet(u1,o1)===i1)return!1;deepSet(u1,o1,i1)};await n1.actions.screens.patch(a1,r1._id);const s1=get_store_value(n1),l1=s1.screens.find(u1=>u1._id===r1._id);if(!l1)return;const c1=s1.screens.filter(u1=>u1.routing.roleId===l1.routing.roleId&&u1.routing.homeScreen&&u1._id!==r1._id);if(c1.length&&l1.routing.homeScreen){const u1=f1=>{f1.routing.homeScreen=!1};for(let f1 of c1)await n1.actions.screens.patch(u1,f1._id)}},removeCustomLayout:async r1=>{const o1=get_store_value(n1).layouts.find(a1=>a1._id===r1.layoutId),i1=a1=>{a1.layoutId=null,a1.showNavigation=(o1==null?void 0:o1.props.navigation)!=="None",a1.width=(o1==null?void 0:o1.props.width)||"Large"};await n1.actions.screens.patch(i1,r1._id)},enrichEmptySettings:r1=>{findAllMatchingComponents(r1.props,i1=>i1).forEach(i1=>{n1.actions.components.enrichEmptySettings(i1,{screen:r1})})}},preview:{setDevice:r1=>{n1.update(o1=>(o1.previewDevice=r1,o1))},sendEvent:(r1,o1)=>{const{previewEventHandler:i1}=get_store_value(n1);i1==null||i1(r1,o1)},registerEventHandler:r1=>{n1.update(o1=>(o1.previewEventHandler=r1,o1))}},layouts:{select:r1=>{var a1;const o1=get_store_value(n1),i1=o1.layouts.find(s1=>s1._id===r1);!i1||o1.selectedLayoutId===i1._id&&o1.selectedComponentId===((a1=i1.props)==null?void 0:a1._id)||n1.update(s1=>{var l1;return s1.selectedLayoutId=i1._id,s1.selectedComponentId=(l1=i1.props)==null?void 0:l1._id,s1})},delete:async r1=>{!(r1!=null&&r1._id)||(await API.deleteLayout({layoutId:r1._id,layoutRev:r1._rev}),n1.update(o1=>(o1.layouts=o1.layouts.filter(i1=>i1._id!==r1._id),o1)))}},components:{refreshDefinitions:async r1=>{r1||(r1=get_store_value(n1).appId);const o1=await API.fetchComponentLibDefinitions(r1),i1=Object.keys(o1).filter(a1=>a1.startsWith("plugin/"));n1.update(a1=>({...a1,components:o1,customComponents:i1,clientFeatures:{...INITIAL_FRONTEND_STATE.clientFeatures,...o1.features}}))},getDefinition:r1=>r1?get_store_value(n1).components[r1]:null,getDefaultDatasource:()=>{const r1=get_store_value(tables).list.filter(i1=>i1._id!=="ta_users");let o1=r1.find(i1=>i1.sourceId!==BUDIBASE_INTERNAL_DB_ID&&i1.type===DB_TYPE_INTERNAL);return o1||(o1=r1.find(i1=>i1.sourceId===BUDIBASE_INTERNAL_DB_ID&&i1.type===DB_TYPE_INTERNAL),o1)?o1:r1.find(i1=>i1.type===DB_TYPE_EXTERNAL)},enrichEmptySettings:(r1,o1)=>{if(!(r1!=null&&r1._component))return;const i1=n1.actions.components.getDefaultDatasource(),a1=getComponentSettings(r1._component),{parent:s1,screen:l1,useDefaultValues:c1}=o1||{},u1=(s1==null?void 0:s1._id)||r1._id;!l1||a1.forEach(f1=>{var d1,m1;const p1=r1[f1.key];if(p1==null||p1==="")if(f1.type==="multifield"&&f1.selectAllFields)r1[f1.key]=Object.keys((i1==null?void 0:i1.schema)||{});else if((f1.type==="dataSource"||f1.type==="table")&&i1)r1[f1.key]={label:i1.name,tableId:i1._id,resourceId:i1._id,type:"table"};else if(f1.type==="dataProvider"){const h1=findComponentPath(l1.props,u1).filter(b1=>{var $1;return($1=b1._component)==null?void 0:$1.endsWith("/dataprovider")});if(h1.length){const b1=(d1=h1[h1.length-1])==null?void 0:d1._id;r1[f1.key]=`{{ literal ${Fh(b1)} }}`}}else if(f1.type.startsWith("field/")){let _1=getComponentFieldOptions(l1.props,u1,f1.type,!1);const h1=findClosestMatchingComponent(l1.props,u1,$1=>$1._component==="@budibase/standard-components/form"),b1=Object.keys(buildFormSchema(h1)||{});_1=_1.filter($1=>!b1.includes($1)),_1[0]&&(r1[f1.key]=_1[0],r1.label=_1[0])}else c1&&f1.defaultValue!==void 0&&(r1[f1.key]=f1.defaultValue);else if(f1.type==="dataProvider"){const _1=(s1==null?void 0:s1._id)||r1._id,b1=findComponentPath(l1==null?void 0:l1.props,_1).filter(y1=>{var k1;return(k1=y1._component)==null?void 0:k1.endsWith("/dataprovider")});if(!(b1==null?void 0:b1.some(y1=>{var k1;return(k1=p1.includes)==null?void 0:k1.call(p1,y1._id)})))if(b1.length){const y1=(m1=b1[b1.length-1])==null?void 0:m1._id;r1[f1.key]=`{{ literal ${Fh(y1)} }}`}else delete r1[f1.key]}})},createInstance:(r1,o1,i1)=>{const a1=n1.actions.components.getDefinition(r1);if(!a1)return null;let s1={_id:uuid(),_component:a1.component,_styles:{normal:{},hover:{},active:{}},_instanceName:`New ${a1.friendlyName||a1.name}`,...o1};n1.actions.components.enrichEmptySettings(s1,{parent:i1,screen:get_store_value(selectedScreen),useDefaultValues:!0});let l1={};if(a1.hasChildren&&(l1._children=[]),r1.endsWith("/formstep")){const c1=findClosestMatchingComponent(get_store_value(selectedScreen).props,get_store_value(selectedComponent)._id,f1=>f1._component.endsWith("/form")),u1=findAllMatchingComponents(c1,f1=>f1._component.endsWith("/formstep"));l1.step=u1.length+1,l1._instanceName=`Step ${u1.length+1}`}return{...fp.cloneDeep(s1),...l1}},create:async(r1,o1,i1,a1)=>{const s1=get_store_value(n1),l1=n1.actions.components.createInstance(r1,o1,i1);if(!!l1)return i1&&a1!=null?await n1.actions.screens.patch(c1=>{var f1;let u1=findComponent(c1.props,i1);(f1=u1._children)!=null&&f1.length?u1._children.splice(a1,0,l1):u1._children=[l1]}):await n1.actions.screens.patch(c1=>{let u1=s1.selectedComponentId;u1.startsWith(`${c1._id}-`)&&(u1=c1==null?void 0:c1.props._id);const f1=findComponent(c1.props,u1);if(!f1)return!1;let p1;if(f1){const d1=n1.actions.components.getDefinition(f1._component);d1!=null&&d1.hasChildren?p1=f1:p1=findComponentParent(c1.props,f1._id)}else p1=c1.props;if(!p1)return!1;p1._children||(p1._children=[]),p1._children.push(l1)}),n1.update(c1=>(c1.selectedComponentId=l1._id,c1)),analytics.captureEvent(Events.COMPONENT_CREATED,{name:l1._component}),l1},patch:async(r1,o1,i1)=>{if(!o1||!i1){const s1=get_store_value(n1);o1=o1||s1.selectedComponentId,i1=i1||s1.selectedScreenId}if(!o1||!i1||!r1)return;const a1=s1=>{let l1=findComponent(s1.props,o1);return l1?r1(l1,s1):!1};await n1.actions.screens.patch(a1,i1)},delete:async r1=>{if(!r1)return;const o1=get_store_value(n1);let i1;o1.selectedComponentId===r1._id&&(i1=n1.actions.components.getNext(),i1||(i1=n1.actions.components.getPrevious())),await n1.actions.screens.patch(a1=>{if(r1=findComponent(a1.props,r1._id),!r1)return!1;const s1=findComponentParent(a1.props,r1._id);if(!s1)return!1;s1._children=s1._children.filter(l1=>l1._id!==r1._id)}),i1&&n1.update(a1=>(a1.selectedComponentId=i1,a1))},copy:(r1,o1=!1,i1=!0)=>{if(n1.update(a1=>(a1.componentToPaste=fp.cloneDeep(r1),a1.componentToPaste.isCut=o1,a1)),o1&&i1){const a1=get_store_value(selectedScreen),s1=findComponentParent(a1==null?void 0:a1.props,r1._id);s1&&n1.update(l1=>(l1.selectedComponentId=s1._id,l1))}},paste:async(r1,o1,i1)=>{const a1=get_store_value(n1);if(!a1.componentToPaste)return;let s1,l1=fp.cloneDeep(a1.componentToPaste);l1.isCut&&n1.update(f1=>(delete f1.componentToPaste,f1));const c1=f1=>{if(r1=findComponent(f1.props,r1._id),!r1)return!1;const p1=l1.isCut,d1=l1._id;if(delete l1.isCut,p1||(l1=makeComponentUnique(l1)),s1=l1._id,p1){const m1=findComponentParent(f1.props,d1);m1!=null&&m1._children&&(m1._children=m1._children.filter(_1=>_1._id!==d1))}if(o1==="inside"&&(n1.actions.components.getDefinition(r1._component).hasChildren||(o1="below")),o1==="inside")r1._children||(r1._children=[]),r1._children.push(l1);else{const m1=findComponentParent(f1.props,r1._id);if(!(m1!=null&&m1._children))return!1;const _1=m1._children.findIndex(b1=>b1._id===r1._id),h1=o1==="above"?_1:_1+1;m1._children.splice(h1,0,l1)}},u1=(i1==null?void 0:i1._id)||a1.selectedScreenId;await n1.actions.screens.patch(c1,u1),n1.update(f1=>(f1.selectedScreenId=u1,f1.selectedComponentId=s1,f1))},getPrevious:()=>{var u1,f1;const o1=get_store_value(n1).selectedComponentId,i1=get_store_value(selectedScreen),a1=findComponentParent(i1.props,o1),s1=a1==null?void 0:a1._children.findIndex(p1=>p1._id===o1),l1=`${i1._id}-screen`,c1=`${i1._id}-navigation`;if(o1===l1)return null;if(o1===c1)return l1;if(a1._id===i1.props._id&&s1===0)return c1;if(s1>0){const p1=a1._children[s1-1];if((u1=p1._children)!=null&&u1.length){let d1=p1;for(;(f1=d1._children)!=null&&f1.length;)d1=d1._children[d1._children.length-1];return d1._id}return p1._id}return a1._id},getNext:()=>{var m1,_1;const r1=get_store_value(n1),o1=get_store_value(selectedComponent),i1=o1==null?void 0:o1._id,a1=get_store_value(selectedScreen),s1=findComponentParent(a1.props,i1),l1=s1==null?void 0:s1._children.findIndex(h1=>h1._id===i1),c1=`${a1._id}-screen`,u1=`${a1._id}-navigation`;if(r1.selectedComponentId===c1)return u1;if((m1=o1._children)!=null&&m1.length)return o1._children[0]._id;if(!s1)return null;if(l1<s1._children.length-1)return s1._children[l1+1]._id;let f1=s1,p1=findComponentParent(a1.props,f1._id),d1=p1==null?void 0:p1._children.findIndex(h1=>h1._id===f1._id);for(;p1!=null&&d1===((_1=p1._children)==null?void 0:_1.length)-1;)f1=p1,p1=findComponentParent(a1.props,f1._id),d1=p1==null?void 0:p1._children.findIndex(h1=>h1._id===f1._id);return p1?p1._children[d1+1]._id:null},selectPrevious:()=>{const r1=n1.actions.components.getPrevious();r1&&n1.update(o1=>(o1.selectedComponentId=r1,o1))},selectNext:()=>{const r1=n1.actions.components.getNext();r1&&n1.update(o1=>(o1.selectedComponentId=r1,o1))},moveUp:async r1=>{await n1.actions.screens.patch(o1=>{const i1=r1==null?void 0:r1._id,a1=findComponentParent(o1.props,i1),s1=a1==null?void 0:a1._children.findIndex(c1=>c1._id===i1);if(!a1||s1===0&&a1._id===o1.props._id)return;const l1=fp.cloneDeep(a1._children[s1]);if(a1._children=a1._children.filter(c1=>c1._id!==i1),s1>0){const c1=a1._children[s1-1];n1.actions.components.getDefinition(c1._component).hasChildren?c1._children.push(l1):a1._children.splice(s1-1,0,l1)}else if(a1._id!==o1.props._id){const c1=findComponentParent(o1.props,a1._id),u1=c1._children.findIndex(f1=>f1._id===a1._id);c1._children.splice(u1,0,l1)}})},moveDown:async r1=>{await n1.actions.screens.patch(o1=>{var c1;const i1=r1==null?void 0:r1._id,a1=findComponentParent(o1.props,i1);if(!((c1=a1==null?void 0:a1._children)!=null&&c1.length))return!1;const s1=a1._children.findIndex(u1=>u1._id===i1);if(s1===a1._children.length-1&&a1._id===o1.props._id)return;const l1=fp.cloneDeep(a1._children[s1]);if(a1._children=a1._children.filter(u1=>u1._id!==i1),s1<a1._children.length){const u1=a1._children[s1];n1.actions.components.getDefinition(u1._component).hasChildren?u1._children.splice(0,0,l1):a1._children.splice(s1+1,0,l1)}else{const u1=findComponentParent(o1.props,a1._id),f1=u1._children.findIndex(p1=>p1._id===a1._id);u1._children.splice(f1+1,0,l1)}})},updateStyle:async(r1,o1)=>{await n1.actions.components.patch(i1=>{o1==null||o1===""?delete i1._styles.normal[r1]:i1._styles.normal[r1]=o1})},updateStyles:async(r1,o1)=>{const i1=a1=>{a1._styles.normal={...a1._styles.normal,...r1}};await n1.actions.components.patch(i1,o1)},updateCustomStyle:async r1=>{await n1.actions.components.patch(o1=>{o1._styles.custom=r1})},updateConditions:async r1=>{await n1.actions.components.patch(o1=>{o1._conditions=r1})},updateSetting:async(r1,o1)=>{await n1.actions.components.patch(n1.actions.components.updateComponentSetting(r1,o1))},updateComponentSetting:(r1,o1)=>i1=>{if(!r1||!i1||i1[r1]===o1)return!1;const a1=getComponentSettings(i1._component),s1=a1.find(c1=>c1.key===r1),l1=a1.filter(c1=>r1===c1.resetOn);if(l1==null||l1.forEach(c1=>{i1[c1.key]=null}),(s1==null?void 0:s1.type)==="dataSource"||(s1==null?void 0:s1.type)==="table"){const{schema:c1}=getSchemaForDatasource(null,o1),u1=Object.keys(c1||{});a1.filter(p1=>p1.type==="multifield"&&p1.selectAllFields).map(p1=>p1.key).forEach(p1=>{i1[p1]=u1})}i1[r1]=o1},requestEjectBlock:r1=>{n1.actions.preview.sendEvent("eject-block",r1)},handleEjectBlock:async(r1,o1)=>{let i1;await n1.actions.screens.patch(a1=>{var f1;const s1=findComponent(a1.props,r1),l1=findComponentParent(a1.props,r1);if(!s1||!((f1=l1==null?void 0:l1._children)!=null&&f1.length))return!1;const c1=findAllMatchingComponents(o1,p1=>p1._containsSlot)[0];c1&&(delete c1._containsSlot,c1._children=[...c1._children||[],...s1._children||[]]),o1=makeComponentUnique(o1);const u1=l1._children.findIndex(p1=>p1._id===r1);l1._children[u1]=o1,i1=o1._id}),i1&&n1.update(a1=>(a1.selectedComponentId=i1,a1))},addParent:async(r1,o1)=>{if(!r1||!o1)return;const i1=n1.actions.components.createInstance(o1,null,parent);!i1||(await n1.actions.screens.patch(a1=>{let s1=findComponent(a1.props,r1),l1=findComponentParent(a1.props,r1);if(!s1||!l1)return!1;const c1=l1._children.findIndex(u1=>u1._id===r1);if(c1===-1)return!1;l1._children[c1]={...i1,_children:[s1]}}),n1.update(a1=>(a1.selectedComponentId=i1._id,a1)))}},links:{save:async(r1,o1)=>{var s1;const i1=get_store_value(n1).navigation;let a1=[...(s1=i1==null?void 0:i1.links)!=null?s1:[]];a1.find(l1=>l1.url===r1&&l1.text===o1)||(a1.push({text:o1,url:r1}),await n1.actions.navigation.save({...i1,links:[...a1]}))},delete:async r1=>{const o1=get_store_value(n1).navigation;let i1=o1==null?void 0:o1.links;!(i1!=null&&i1.length)||(r1=Array.isArray(r1)?r1:[r1],i1=i1.filter(a1=>!r1.includes(a1.url)),await n1.actions.navigation.save({...o1,links:i1}))}},settings:{highlight:r1=>{n1.update(o1=>({...o1,highlightedSettingKey:r1}))},propertyFocus:r1=>{n1.update(o1=>({...o1,propertyFocus:r1}))}},dnd:{start:r1=>{n1.actions.preview.sendEvent("dragging-new-component",{dragging:!0,component:r1})},stop:()=>{n1.actions.preview.sendEvent("dragging-new-component",{dragging:!1})}},websocket:{selectResource:r1=>{e1.emit(BuilderSocketEvent.SelectResource,{resourceId:r1})}},metadata:{replace:r1=>{n1.update(o1=>({...o1,...r1}))}}},n1},initialAutomationState={automations:[],testResults:null,showTestPanel:!1,blockDefinitions:{TRIGGER:[],ACTION:[]},selectedAutomationId:null},getAutomationStore=()=>{const n1=writable(initialAutomationState);return n1.actions=automationActions(n1),n1},automationActions=n1=>({definitions:async()=>{const e1=await API.getAutomationDefinitions();return n1.update(t1=>(t1.blockDefinitions={TRIGGER:e1.trigger,ACTION:e1.action},t1)),e1},fetch:async()=>{const e1=await Promise.all([API.getAutomations(),API.getAutomationDefinitions()]);n1.update(t1=>(t1.automations=e1[0],t1.automations.sort((r1,o1)=>r1.name<o1.name?-1:1),t1.blockDefinitions={TRIGGER:e1[1].trigger,ACTION:e1[1].action},t1))},create:async(e1,t1)=>{const r1={name:e1,type:"automation",definition:{steps:[],trigger:t1}},o1=await n1.actions.save(r1);return await n1.actions.fetch(),n1.actions.select(o1._id),o1},duplicate:async e1=>{const t1=await n1.actions.save({...e1,name:`${e1.name} - copy`,_id:void 0,_ref:void 0});return await n1.actions.fetch(),n1.actions.select(t1._id),t1},save:async e1=>{const t1=await API.updateAutomation(e1);return n1.update(r1=>{const o1=t1.automation,i1=r1.automations.findIndex(a1=>a1._id===e1._id);return i1!==-1?(r1.automations.splice(i1,1,o1),r1):(r1.automations=[...r1.automations,o1],r1)}),t1.automation},delete:async e1=>{await API.deleteAutomation({automationId:e1==null?void 0:e1._id,automationRev:e1==null?void 0:e1._rev}),n1.update(t1=>{var r1;return t1.automations=t1.automations.filter(o1=>o1._id!==e1._id),e1._id===t1.selectedAutomationId&&n1.actions.select((r1=t1.automations[0])==null?void 0:r1._id),t1}),await n1.actions.fetch()},updateBlockInputs:async(e1,t1)=>{let r1={...e1,inputs:{...e1.inputs,...t1}};Object.keys(r1.inputs).forEach(a1=>{const s1=r1.inputs[a1];(s1==null||s1==="")&&delete r1.inputs[a1]});const o1=get_store_value(selectedAutomation),i1=n1.actions.getUpdatedDefinition(o1,r1);JSON.stringify(i1)!==JSON.stringify(o1)&&await n1.actions.save(i1)},test:async(e1,t1)=>{var o1,i1;const r1=await API.testAutomation({automationId:e1==null?void 0:e1._id,testData:t1});if(!(r1!=null&&r1.trigger)&&!((o1=r1==null?void 0:r1.steps)!=null&&o1.length))throw((i1=r1==null?void 0:r1.err)==null?void 0:i1.code)==="usage_limit_exceeded"?"You have exceeded your automation quota":"Something went wrong testing your automation";n1.update(a1=>(a1.testResults=r1,a1))},getDefinition:e1=>{var t1;return(t1=get_store_value(n1).automations)==null?void 0:t1.find(r1=>r1._id===e1)},getUpdatedDefinition:(e1,t1)=>{var o1;let r1=fp.cloneDeep(e1);if(((o1=e1.definition.trigger)==null?void 0:o1.id)===t1.id)r1.definition.trigger=t1;else{const i1=e1.definition.steps.findIndex(a1=>a1.id===t1.id);r1.definition.steps.splice(i1,1,t1)}return r1},select:e1=>{!e1||e1===get_store_value(n1).selectedAutomationId||n1.update(t1=>(t1.selectedAutomationId=e1,t1.testResults=null,t1.showTestPanel=!1,t1))},getLogs:async({automationId:e1,startDate:t1,status:r1,page:o1}={})=>await API.getAutomationLogs({automationId:e1,startDate:t1,status:r1,page:o1}),clearLogErrors:async({automationId:e1,appId:t1}={})=>await API.clearAutomationLogErrors({automationId:e1,appId:t1}),addTestDataToAutomation:async e1=>{let t1=fp.cloneDeep(get_store_value(selectedAutomation));t1.testData={...t1.testData,...e1},await n1.actions.save(t1)},constructBlock(e1,t1,r1){return{...r1,inputs:r1.inputs||{},stepId:t1,type:e1,id:shortid.exports.generate()}},addBlockToAutomation:async(e1,t1)=>{const r1=get_store_value(selectedAutomation);let o1=fp.cloneDeep(r1);!r1||(o1.definition.steps.splice(t1,0,e1),await n1.actions.save(o1))},toggleRowControl:async(e1,t1)=>{const r1={...e1,rowControl:t1},o1=n1.actions.getUpdatedDefinition(get_store_value(selectedAutomation),r1);await n1.actions.save(o1)},deleteAutomationBlock:async e1=>{var o1;const t1=get_store_value(selectedAutomation);let r1=fp.cloneDeep(t1);((o1=r1.definition.trigger)==null?void 0:o1.id)===e1.id?delete r1.definition.trigger:r1.definition.steps=r1.definition.steps.filter(i1=>i1.id!==e1.id),await n1.actions.save(r1)},replace:async(e1,t1)=>{if(!t1)n1.update(r1=>{var o1;return r1.automations=r1.automations.filter(i1=>i1._id!==e1),e1===r1.selectedAutomationId&&n1.actions.select((o1=r1.automations[0])==null?void 0:o1._id),r1});else{const r1=get_store_value(n1).automations.findIndex(o1=>o1._id===t1._id);r1===-1?n1.update(o1=>({...o1,automations:[...o1.automations,t1]})):n1.update(o1=>(o1.automations[r1]=t1,o1))}}}),getTemporalStore=()=>{const t1=createLocalStorageStore("bb-temporal",{}),r1=(i1,a1,s1)=>{const l1={...a1,expiry:Date.now()+s1*1e3};t1.update(c1=>({...c1,[i1]:l1}))},o1=i1=>{const a1=get_store_value(t1)[i1];return a1?a1.expiry<Date.now()?(t1.update(l1=>(delete l1[i1],l1)),null):a1:void 0};return{subscribe:t1.subscribe,actions:{setExpiring:r1,getExpiring:o1}}},getThemeStore=()=>{const n1=document.documentElement,e1={theme:"darkest"},t1=createLocalStorageStore("bb-theme",e1);return t1.subscribe(r1=>{if(r1.darkMode!==void 0){t1.set(e1);return}Themes.forEach(i1=>{n1.classList.toggle(`spectrum--${i1.class}`,i1.class===r1.theme)});const o1=Themes.find(i1=>i1.class===r1.theme);o1!=null&&o1.base&&n1.classList.add(`spectrum--${o1.base}`)}),t1},getUserStore=()=>{const n1=writable([]);return{...n1,actions:{init:i1=>{n1.set(i1)},updateUser:i1=>{const a1=get_store_value(n1);a1.some(s1=>s1.sessionId===i1.sessionId)?n1.update(s1=>{const l1=s1.findIndex(c1=>c1.sessionId===i1.sessionId);return s1[l1]=i1,s1.slice()}):n1.set([...a1,i1])},removeUser:i1=>{n1.update(a1=>a1.filter(s1=>s1.sessionId!==i1))},reset:()=>{n1.set([])}}}},getDeploymentStore=()=>{let n1=writable([]);const e1=async()=>{try{n1.set(await API.getAppDeployments())}catch{notifications.error("Error fetching deployments")}};return{subscribe:n1.subscribe,actions:{load:e1}}};/*!
|
|
443
443
|
* https://github.com/Starcounter-Jack/JSON-Patch
|
|
444
444
|
* (c) 2017-2022 Joachim Wester
|
|
445
445
|
* MIT licensed
|
package/builder/index.html
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
<link href="/builder/fonts/source-sans-pro/600.css" rel="stylesheet" />
|
|
10
10
|
<link href="/builder/fonts/source-sans-pro/700.css" rel="stylesheet" />
|
|
11
11
|
<link href="/builder/fonts/remixicon.css" rel="stylesheet" />
|
|
12
|
-
<script type="module" crossorigin src="/builder/assets/index.
|
|
12
|
+
<script type="module" crossorigin src="/builder/assets/index.62d3d045.js"></script>
|
|
13
13
|
<link rel="stylesheet" href="/builder/assets/index.58460b01.css">
|
|
14
14
|
</head>
|
|
15
15
|
|