⚝
One Hat Cyber Team
⚝
Your IP:
216.73.216.19
Server IP:
41.128.143.86
Server:
Linux host.raqmix.cloud 6.8.0-1025-azure #30~22.04.1-Ubuntu SMP Wed Mar 12 15:28:20 UTC 2025 x86_64
Server Software:
Apache
PHP Version:
8.3.23
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
proc
/
self
/
root
/
usr
/
share
/
grafana
/
public
/
build
/
View File Name :
3541.8d063e3d43d55745d89b.js.map
{"version":3,"file":"3541.8d063e3d43d55745d89b.js","mappings":"6hBAoBA,MAAMA,EAAiB,IAAM,CAC3B,MAAMC,KAAS,MAAWC,CAAS,EAC7BC,EAAU,IAAM,OAAO,KAAK,kDAAmD,QAAQ,EAC7F,OACE,gBAACC,EAAA,EAAK,CAAC,IAAK,IACV,gBAAC,OAAI,UAAWH,EAAO,iBAAiB,6CAAqD,EAC7F,gBAACI,GAAA,EAAO,CAAC,UAAU,MAAM,QAAS,2BAA4B,MAAM,QAClE,gBAACC,GAAA,EAAI,CAAC,KAAK,cAAc,KAAK,KAAK,UAAWL,EAAO,SAAU,QAAAE,CAAA,CAAkB,CACnF,CACF,CAEJ,EAEaI,EAAmBC,GAAyBA,EAAI,QAAQ,GAAG,IAAM,GAEvE,SAASC,EAAiBC,EAA8B,CAC7D,KAAM,CAAE,MAAAC,CAAM,EAAID,EAGZE,EAA+B,CACnC,iBAHwBC,GAAuBN,EAAgBM,CAAU,EAIzE,iBAAkBb,CACpB,EAEMc,EAAuB,CAC3B,eAAgB,GAChB,eAAiBH,GAAU,CAACJ,EAAgBI,CAAK,CACnD,EAEA,OACE,gBAACI,EAAA,IACC,SAAU,GACV,SAAS,GACT,WAAY,GACZ,iBAAkBJ,GAAO,IACzB,gBAAiB,kBAAgB,YAChC,GAAGD,EACJ,gBAAiB,wBAAsB,KACvC,UAAAI,EACA,cAAAF,CAAA,CACF,CAEJ,CAEA,MAAMV,EAAac,IAA0B,CAC3C,mBAAiB;AAAA,aACNA,EAAM,OAAO,QAAQ;AAAA;AAAA;AAAA,IAIhC,YAAU;AAAA,aACCA,EAAM,OAAO,QAAQ;AAAA;AAAA;AAAA;AAAA,GAKlC,G,cCrCO,MAAMC,EAAoB,IAEpBC,EAAwB,CAACC,EAAmBC,IAAqC,CAC5F,MAAMC,KAAW,eAAY,KAI7B,aAAU,IAAM,CACdA,KAAS,OAAsB,CAAE,gBAAiB,IAA0B,CAAC,CAAC,CAChF,EAAG,CAACA,CAAQ,CAAC,EAGb,MAAMC,KADoBC,EAAA,GAA4BC,GAAUA,EAAM,UAAU,EAC/B,IAAyB,EAoB1E,MAAO,CAAE,iBAlBcC,GAAA,IAA0B,IAAyB,EACtC,KAAMC,GAAMA,EAAE,MAAQP,CAAS,GAAG,QAAU,CAAC,GAG9E,IAA8BQ,GAAU,CACvC,MAAMC,EAAgBC,EAAmBF,CAAK,EAC9C,MAAO,CACL,MAAOA,EAAM,KACb,MAAOA,EAAM,KACb,YAAaA,EAAM,UAAY,MAE/B,WAAaP,EAA0C,GAAhBQ,EACvC,cAAAA,CACF,CACF,CAAC,EAEA,KAAKE,EAAW,EAEI,QAASR,GAAwB,OAAQ,CAClE,EAEMO,EAAsBF,GACnBA,EAAM,MAAM,KAChBI,MAAS,OAAmBA,EAAK,SAAS,GAAK,EAAQA,EAAK,UAAU,cAAc,UACvF,EAGID,GAAc,CAACE,EAA4BC,IACxCD,EAAE,OAAO,cAAcC,EAAE,OAAS,EAAE,GAAK,EAG5CC,GAAyB,CAACP,EAAgCQ,IACvDR,EAAM,OAAO,YAAY,EAAE,SAASQ,EAAM,YAAY,CAAC,EAGzD,SAASC,GAAe,CAC7B,uBAAAd,EACA,wBAAAF,CACF,EAGG,CACD,KAAM,CACJ,UAAW,CAAE,OAAAiB,CAAO,EACpB,MAAAC,EACA,SAAAC,EACA,QAAAC,CACF,KAAI,MAA+B,EAE7BvC,KAAS,MAAW,CAAS,EAE7BwC,EAASH,EAAM,QAAQ,EACvBX,EAAQW,EAAM,OAAO,EAErB,CAAE,aAAAI,EAAc,QAAAC,CAAQ,EAAIzB,EAAsBuB,GAAQ,KAAO,GAAIrB,CAAuB,EAE5F,CAACwB,EAAkBC,CAAmB,KAAI,YAAS,EAAK,EACxD,CAACC,EAA2BC,CAA4B,KAAI,YAAS,EAAK,EAE1EC,EAA4B,IAAMH,EAAoB,EAAI,EAC1DI,EAAqC,IAAMF,EAA6B,EAAI,EAE5EG,EAAwBT,GAAmB,CAC/CU,GAAW,EACXZ,EAAS,SAAUE,CAAM,EACzBI,EAAoB,EAAK,CAC3B,EAEMO,GAA0B,CAACC,EAAmBC,IAA+B,CACjFf,EAAS,QAASc,CAAS,EAC3Bd,EAAS,gBAAiBe,CAAkB,EAC5CP,EAA6B,EAAK,CACpC,EAEMI,MAAa,eAAY,IAAM,CACnCZ,EAAS,QAAS,EAAE,CACtB,EAAG,CAACA,CAAQ,CAAC,EAEPgB,MAAa,eACjB,MAAOpB,GAAkB,CACvB,MAAMqB,EAAUrB,EAAQO,EAAa,OAAQf,IAAUO,GAAuBP,GAAOQ,CAAK,CAAC,EAAIO,EAC/F,SAAO,QAAKc,EAASvC,CAAiB,CACxC,EACA,CAACyB,CAAY,CACf,EAEMe,MAAkB,WAAQ,OACvB,YAASF,GAAY,IAAK,CAAE,QAAS,EAAK,CAAC,EACjD,CAACA,EAAU,CAAC,EAETG,GAAoB/B,EAAQ,CAAE,MAAOA,EAAO,MAAOA,CAAM,EAAI,OAEnE,OACE,gBAAC,OAAI,UAAW1B,EAAO,WACrB,gBAACG,EAAA,EAAK,CAAC,WAAW,UAEd,gBAACuD,EAAA,GACC,MACE,gBAACC,EAAA,EAAK,CAAC,QAAQ,SAAS,YAAa,uCAAuC,QAE5E,EAEF,UAAW3D,EAAO,UAClB,MAAOoC,EAAO,QAAQ,QACtB,cAAY,iBAEZ,gBAACjC,EAAA,EAAK,CAAC,UAAU,MAAM,WAAW,UAC9B,CAACwC,GACD,gCACE,gBAACiB,EAAA,GACC,OAAQ,CAAC,CAAE,MAAO,CAAE,IAAAC,EAAK,GAAGC,CAAM,CAAE,IAClC,gBAAC,OAAI,MAAO,CAAE,MAAO,GAAI,GACvB,gBAACtD,EAAA,CACC,QAAQ,SACR,QAAS,CAAC,CAAC4B,EAAO,QAAQ,QACzB,GAAG0B,EACJ,YAAa,GACb,SAAU,CAAC,CAAE,MAAAC,GAAO,IAAAC,CAAI,IAAM,CAC5BF,EAAM,SAAS,CAAE,MAAAC,GAAO,IAAAC,CAAI,CAAC,EAC7Bd,GAAW,CACb,EACF,CACF,EAEF,KAAK,SACL,MAAO,CACL,SAAU,CAAE,MAAO,GAAM,QAAS,iBAAkB,EACpD,SAAU,CACR,cAAgBV,MAAmB,MAAsBA,EAAO,GAAG,CACrE,CACF,EACF,EACA,gBAACyB,EAAA,EAAI,CAAC,MAAM,aAAY,IAAE,EAC1B,gBAACC,EAAA,IACC,QAASnB,EACT,KAAK,SACL,KAAK,OACL,KAAK,UACL,QAAQ,YACR,SAAU,CAAC,MAAW,cAAc,sBAAoB,aAAa,GACtE,YAED,CACF,GACI,gBAAC,WAAI,wBAAsB,CACnC,CACF,EAEDJ,GACC,gBAACwB,GAAA,CAAoB,SAAUlB,EAAsB,QAAS,IAAML,EAAoB,EAAK,EAAG,CAEpG,EAECD,GACC,gBAACwB,GAAA,CAAoB,SAAUlB,EAAsB,QAAS,IAAML,EAAoB,EAAK,EAAG,EAGlG,gBAACzC,EAAA,EAAK,CAAC,WAAW,UAChB,gBAAC,OAAI,MAAO,CAAE,MAAO,GAAI,GACvB,gBAACuD,EAAA,GACC,MAAM,mBACN,cAAY,eACZ,YAAY,sFACZ,UAAW1D,EAAO,UAClB,MAAOoC,EAAO,OAAO,QACrB,QAAS,CAAC,CAACA,EAAO,OAAO,SAEzB,gBAACwB,EAAA,GACC,OAAQ,CAAC,CAAE,MAAO,CAAE,IAAAC,EAAK,GAAGC,CAAM,EAAG,WAAAM,EAAW,IAC9C,gBAAC,OACC,SAAU,CAAC5B,GAAUE,EACrB,QAAQ,QACR,OAAK,YAAS,EACb,GAAGoB,EACJ,SAAWpC,GAAU,CACnBoC,EAAM,SAASpC,EAAM,OAAS,EAAE,CAClC,EACA,UAAWgB,EACX,QAAS,EAAQF,GAAW,CAACd,GAAS,EAAQ0C,GAAW,MACzD,YAAaZ,GACb,aAAY,GACZ,eAAgB,oBAChB,aAAcC,GACd,eAAgBhB,EAChB,eAAiB4B,GACf,gBAAC,WACC,gBAAC,YAAMA,EAAO,KAAM,EACnBA,EAAO,eACN,gCACG,IACD,gBAACC,GAAA,GAAiB,IAAC,CACrB,CAEJ,EAEF,YAAa,gCACf,EAEF,KAAK,QACL,QAAA/B,EACA,MAAO,CACL,SAAU,CAAE,MAAO,GAAM,QAAS,yBAA0B,EAC5D,SAAU,CACR,cAAgBgC,MAAmB,MAAsBA,CAAM,CACjE,CACF,EACF,CACF,CACF,EACA,gBAACC,GAAA,EAAG,CAAC,UAAW,EAAG,IAAK,EAAG,QAAS,OAAQ,WAAY,UACtD,gBAACP,EAAA,EAAI,CAAC,MAAM,aAAY,IAAE,EAC1B,gBAACC,EAAA,IACC,QAASlB,EACT,KAAK,SACL,KAAK,OACL,KAAK,UACL,QAAQ,YACR,SAAU,CAACR,CAAA,EACZ,sBAED,CACF,EACCK,GACC,gBAAC4B,GAAA,CACC,SAAUtB,GACV,QAAS,IAAML,EAA6B,EAAK,EACjD,uBAAAzB,CAAA,CACF,CAEJ,CACF,CAEJ,CAEA,SAAS8C,GAAoB,CAC3B,QAAAO,EACA,SAAAC,CACF,EAGuB,CACrB,MAAM3E,KAAS,MAAW,CAAS,EAE7B,CAAC+D,EAAOa,CAAQ,KAAI,YAAS,EAAE,EAC/BC,EAAW,SAAY,CAC3B,MAAMC,EAAY,QAAM,OAAa,CAAE,MAAAf,CAAa,CAAC,EACrD,GAAI,CAACe,EAAU,IAAK,CAClB,IAAU,KAAK,MAAU,WAAY,CAAC,6BAA6B,CAAC,EACpE,OAGF,MAAMtC,EAAiB,CAAE,MAAOsC,EAAU,MAAO,IAAKA,EAAU,GAAI,EACpEH,EAASnC,CAAM,EACf,IAAU,KAAK,MAAU,aAAc,CAAC,iBAAkB,IAAI,CAAC,CACjE,EAEMuC,EAAQzE,EAAgByD,CAAK,EAEnC,OACE,gBAACiB,EAAA,EAAK,CAAC,UAAWhF,EAAO,MAAO,OAAQ,GAAM,MAAO,aAAc,UAAW0E,EAAS,gBAAiBA,CAAA,EACtG,gBAAC,OAAI,UAAW1E,EAAO,YAAY,wCAAsC,EAEzE,gBAAC,QAAK,SAAA6E,CAAA,EACJ,gBAACnB,EAAA,GACC,MAAO,gBAACC,EAAA,EAAK,CAAC,QAAQ,UAAS,aAAW,EAC1C,MAAO,wCACP,QAASoB,CAAA,EAET,gBAACE,EAAA,GACC,UAAW,GACX,GAAG,aACH,YAAY,eACZ,MAAOlB,EACP,SAAWmB,GAAMN,EAASM,EAAE,cAAc,KAAK,EAC/C,UAAWlF,EAAO,UACpB,CACF,EAEA,gBAACgF,EAAA,EAAM,UAAN,KACC,gBAACd,EAAA,GAAM,CAAC,QAAQ,YAAY,KAAK,SAAS,QAASQ,CAAA,EAAS,QAE5D,EACA,gBAACR,EAAA,GAAM,CAAC,KAAK,SAAS,SAAU,CAACH,GAASgB,CAAA,EAAO,QAEjD,CACF,CACF,CACF,CAEJ,CAEA,SAASN,GAA6B,CACpC,QAAAC,EACA,SAAAC,EACA,uBAAAtD,CACF,EAIuB,CACrB,MAAMrB,KAAS,MAAW,CAAS,EAC7B6E,EAAW,IAAM,CACrBF,EAASQ,EAAU,OAAO,EAAGA,EAAU,eAAe,CAAC,CACzD,EAEM,CAAE,MAAA9C,CAAM,KAAI,MAA+B,EAE3C+C,EAAkB,mBAClB,CAAChC,EAAWxC,CAAU,EAAIyB,EAAM,CAAC,QAAS,cAAc,CAAC,EAEzDgD,GACHhE,GAA0BA,EAAuBT,CAAU,GAAG,KAAM0E,GAAMA,EAAE,OAASlC,CAAS,GAAG,QAAU,CAAC,EAEzGmC,EAAW,IAAM,CACrBb,EAAQ,CACV,EAEMc,KAAU,MAAQ,CACtB,cAAe,CAAE,MAAO,GAAI,cAAe,EAAG,EAC9C,KAAM,WACN,iBAAkB,EACpB,CAAC,EAEK,CAAE,SAAAC,EAAU,aAAAC,EAAc,UAAAC,EAAW,UAAAR,CAAU,EAAIK,EAEzD,OACE,gBAACR,EAAA,GACC,UAAWhF,EAAO,MAClB,OAAQ,GACR,MAAO,uBACP,UAAWuF,EACX,gBAAiBA,CAAA,EAEjB,gBAAC,OAAI,UAAWvF,EAAO,YAAY,2DAAyD,EAE5F,gBAAC,KAAY,CAAE,GAAGwF,CAAA,EAChB,gBAAC,QAAK,SAAUE,EAAa,IAAMb,EAAS,CAAC,GAC3C,gBAACnB,EAAA,GACC,MAAO,gBAACC,EAAA,EAAK,CAAC,QAAS,SAAS,uBAAqB,EACrD,MAAOgC,EAAU,OAAO,OAAO,QAC/B,QAAS,CAAC,CAACA,EAAU,OAAO,OAE5B,gBAACV,EAAA,GACC,UAAWjF,EAAO,UAClB,UAAW,GACX,GAAI,QACJ,YAAY,eACX,GAAGyF,EAAS,QAAS,CAAE,SAAU,CAAE,MAAO,GAAM,QAAS,WAAY,CAAE,CAAC,EAC3E,CACF,EAEA,gBAAC/B,EAAA,GACC,MAAOiC,EAAU,OAAO,eAAe,QACvC,QAAS,CAAC,CAACA,EAAU,OAAO,cAC5B,MACE,gBAAChC,EAAA,GACC,QAASyB,EACT,YAAY,4EACb,qBAED,GAGF,gBAACH,EAAA,GACC,UAAWjF,EAAO,UAClB,GAAIoF,EACJ,YAAY,UACX,GAAGK,EAAS,mBAAiB,OAA+BJ,CAAU,CAAC,EAC1E,CACF,EACA,gBAACL,EAAA,EAAM,UAAN,KACC,gBAACd,EAAA,GAAM,CAAC,QAAQ,YAAY,KAAK,SAAS,QAASqB,CAAA,EAAU,QAE7D,EACA,gBAACrB,EAAA,GAAM,CAAC,KAAK,SAAS,SAAU,CAACyB,EAAU,SAAS,QAEpD,CACF,CACF,CACF,CACF,CAEJ,CAEA,MAAM,EAAa5E,IAA0B,CAC3C,aAAW;AAAA;AAAA;AAAA;AAAA,iBAIIA,EAAM,YAAY,OAAO;AAAA;AAAA,IAGxC,aAAW;AAAA;AAAA,IAGX,SAAO;AAAA,aACIA,EAAM,YAAY,OAAO;AAAA,IAEpC,cAAY;AAAA,aACDA,EAAM,OAAO,KAAK;AAAA,qBACVA,EAAM,QAAQ,CAAC;AAAA,GAEpC,G,eC3bA,MAAM6E,GAA6B,CACjC,CAAE,MAAO,KAA0B,SAAU,MAAO,UAAW,EAC/D,CAAE,MAAO,KAA0B,OAAQ,MAAO,SAAU,EAC5D,CAAE,MAAO,KAA0B,GAAI,MAAO,IAAK,EACnD,CAAE,MAAO,KAA0B,MAAO,MAAO,OAAQ,EACzD,CAAE,MAAO,KAA0B,SAAU,MAAO,iBAAkB,CACxE,EAEaC,GAA0B,CAAC,CAAE,cAAAC,EAAe,aAAAC,EAAc,GAAGtF,CAAM,IAAa,CAC3F,MAAMuF,KAAO,WAAQ,IACdF,EAGAC,EAGEH,GAFEA,GAAQ,OAAQK,GAAQA,EAAI,QAAU,KAA0B,KAAK,EAHrEL,GAAQ,OAAQK,GAAQA,EAAI,QAAU,KAA0B,MAAM,EAM9E,CAACH,EAAeC,CAAY,CAAC,EAChC,OAAO,gBAACG,GAAA,GAAM,CAAC,QAASF,EAAO,GAAGvF,CAAA,CAAO,CAC3C,E,0BCGO,MAAM0F,GAAwB,GAE/BC,GAAwBC,IAA4C,CACxE,SAAU,CACR,MAAO,GACP,QAAS,WACX,EACA,SAAW3F,GAAkB,CAE3B,GAAIA,IAAU,IACZ,MAAO,GAGT,GAAI,CACF,MAAM4F,KAAY,MAAwB5F,CAAK,EAG/C,GAAI4F,IAAc,EAChB,MAAO,GAGT,GAAI,CACF,MAAMC,KAAc,MAAwBF,CAAa,EACzD,OAAOC,GAAaC,EAChB,GACA,0EACN,MAAE,CAGA,MAAO,EACT,CACF,OAASxB,EAAP,CACA,OAAOA,aAAiB,MAAQA,EAAM,QAAU,0BAClD,CACF,CACF,GAEMyB,GAAgB,CAAChE,EAAgBd,IAAkB,CACvD,KAAM,CAAE,aAAAe,CAAa,EAAIxB,EAAsBuB,EAAQ,EAAK,EAM5D,MAAO,IAJuB,eAC3B+B,GAAmB9B,EAAa,KAAMgE,GAAyCA,EAAY,QAAUlC,CAAM,EAC5G,CAAC9B,CAAY,CACf,EAC8Bf,CAAK,CACrC,EAEA,SAASgF,EAAiC,CACxC,cAAAL,EACA,iBAAAM,EACA,wBAAAxF,CACF,EAIG,CACD,MAAMnB,KAAS,MAAW,EAAS,EAC7B,CAAE,MAAAqC,EAAO,SAAAC,EAAU,UAAA6C,CAAU,KAAI,MAA+B,EAChE,CAACyB,EAAgBC,CAAiB,KAAI,YAAS,EAAK,EAEpD,CAACzD,EAAWlC,EAAWN,CAAU,EAAIyB,EAAM,CAAC,QAAS,aAAc,cAAc,CAAC,EAGlFhB,KADoBC,EAAA,GAA4BC,GAAUA,EAAM,UAAU,EAC/B,IAAyB,EAGpEuF,KADoBtF,GAAA,IAA0B,IAAyB,EACjC,KAAMuF,GAAOA,EAAG,MAAQ7F,CAAS,EACvE8F,EAAgBF,GAAmB,OAAO,KAAMxB,GAAMA,EAAE,OAASlC,CAAS,EAE1E6D,EAAaT,GAActF,GAAa,GAAIkC,CAAS,KAE3D,aAAU,IAAM,CACV,CAAC6D,GAAcD,GAAe,UAChCL,EAAiBK,EAAc,QAAQ,CAE3C,EAAG,CAACL,EAAkBM,EAAY3E,EAAU0E,CAAa,CAAC,EAE1D,MAAME,GAAsB,CAACC,EAAQ,KAAU,CACxCA,MACH,OAAQ,MAAY,oBAAoB,EAE1CN,EAAkB,EAAK,CACzB,EAEMO,GAAuB,IAAMP,EAAkB,EAAI,EAEnDQ,GAAoBhG,GAAwB,SAAW4F,GAAc,CAAC/F,GAAa,CAACkC,EAEpFkE,GAAwC,CAC5C,KAAM1G,EACN,YAAa,KACb,OAAQ,CAAC,CACX,EACM2G,GAAgC,CAAE,KAAMnE,EAAW,SAAUiD,EAAe,MAAO,CAAC,EAAG,OAAQ,CAAC,CAAE,EAExG,OACE,gBAAC,WACC,gBAAClE,GAAA,CACC,uBAAwBd,GAAwB,OAChD,wBAAAF,CAAA,CACF,EACCP,GAAcgG,GACb,gBAAC,OACC,UAAWE,GAAqBQ,GAChC,MAAON,GAAiBO,GACxB,UAAArG,EACA,QAAS,IAAMgG,GAAoB,EACnC,iBAAgB,GAChB,WAAY,GACd,EAEDtG,GAAcwC,GACb,gBAAC,OAAI,UAAWpD,EAAO,qBACrB,gBAACG,EAAA,EAAK,CAAC,UAAU,SAAS,IAAK,GAC7B,gBAAC,OAAI,UAAWH,EAAO,WACrB,gBAACG,EAAA,EAAK,CAAC,UAAU,SAAS,IAAK,GAC5BgF,EAAU,OAAO,GAAKA,EAAU,eAAe,GAC9C,gBAAC,YAAK,uDACiDkB,EAAc,IAAE,IACpE,CAACY,GACA,gBAACO,GAAA,GACC,KAAK,MACL,aAAW,OACX,SAAUH,GACV,QAASD,EAAA,CACX,CAEJ,CAEJ,CACF,CACF,CACF,CAEJ,CAEJ,CAEA,SAASK,GAAS,CAAE,cAAApB,CAAc,EAA8B,CAC9D,MAAMrG,KAAS,MAAW,EAAS,EAC7B,CACJ,SAAAyF,EACA,UAAW,CAAE,OAAArD,CAAO,CACtB,KAAI,MAA+B,EAE7BsF,EAAgB,iBAEtB,OACE,gBAACvH,EAAA,EAAK,CAAC,UAAU,MAAM,kBAAgB,aAAa,cAAY,cAC9D,gBAACuD,EAAA,GACC,MACE,gBAACC,EAAA,GACC,QAAQ,cACR,YAAY,+FACb,gBAED,EAEF,UAAW3D,EAAO,YAClB,MAAOoC,EAAO,aAAa,QAC3B,QAAS,CAAC,CAACA,EAAO,aAAa,QAC/B,oCAAqC,IAErC,gBAAC6C,EAAA,EAAK,CAAC,GAAIyC,EAAe,MAAO,EAAI,GAAGjC,EAAS,cAAeW,GAAqBC,CAAa,CAAC,EAAG,CACxG,CACF,CAEJ,CAEA,SAASsB,IAAiB,CACxB,MAAMC,EAAW,6FAEjB,OACE,gBAACzH,EAAA,EAAK,CAAC,UAAU,MAAM,IAAK,GAAK,WAAW,YAC1C,gBAAC8D,EAAA,EAAI,CAAC,QAAQ,YAAY,MAAM,aAAY,yCAE5C,EACA,gBAAC4D,GAAA,GACC,YAAY,uOACZ,aAAcD,EACd,SAAU,wBACV,MAAM,aACR,CACF,CAEJ,CAEO,SAASE,GAA0B,CACxC,cAAAzB,EACA,iBAAAM,EACA,SAAAoB,EACA,wBAAA5G,CACF,EAKG,CACD,MAAMnB,KAAS,MAAW,EAAS,EAC7B,CAACgI,EAAmBC,CAAoB,KAAI,YAAS,EAAK,EAE1D,CAAE,MAAA5F,EAAO,SAAAC,CAAS,KAAI,MAA+B,EAErD4F,EAAW7F,EAAM,UAAU,EAEjC,OAEE,gBAAC8F,GAAA,EAAiB,CAAC,OAAQ,EAAG,MAAM,0BAA0B,YAAaR,GAAe,GACxF,gBAACxH,EAAA,EAAK,CAAC,UAAU,SAAS,kBAAgB,aAAa,cAAY,cACjE,gBAACuG,EAAA,CACC,iBAAAC,EACA,cAAAN,EACA,wBAAAlF,CAAA,CACF,EACA,gBAACsG,GAAA,CAAS,cAAApB,CAAA,CAA8B,EAEvC0B,GACC,gBAACrE,EAAA,EAAK,CAAC,QAAQ,sBACb,gBAACE,EAAA,GACC,OAAQ,IACN,gBAACzD,EAAA,EAAK,CAAC,IAAK,EAAG,UAAU,MAAM,WAAW,UACxC,gBAACiI,EAAA,GACC,GAAG,cACH,SAAW1H,GAAU,CACnB4B,EAAS,WAAY5B,EAAM,cAAc,OAAO,CAClD,EACA,MAAO,EAAQwH,CAAQ,CACzB,EACA,gBAAC,SAAM,QAAQ,cAAc,UAAWlI,EAAO,aAAa,mBAE1D,gBAACI,GAAA,EAAO,CAAC,UAAU,MAAM,QAAQ,mDAAmD,MAAO,QACzF,gBAACC,GAAA,EAAI,CAAC,SAAU,EAAG,KAAK,cAAc,KAAK,KAAK,UAAWL,EAAO,SAAU,CAC9E,CACF,CACF,EAEF,KAAK,WACP,CACF,CAEJ,EACA,gBAACqI,GAAA,GACC,YAAa,CAACL,EACd,SAAWM,GAAcL,EAAqB,CAACK,CAAS,EACxD,KAAK,uCACP,EACCN,GACC,gCACE,gBAACtE,EAAA,EAAK,CAAC,QAAQ,sBAAsB,MAAM,iDACzC,gBAACE,EAAA,GACC,OAAQ,CAAC,CAAE,MAAO,CAAE,SAAA2E,EAAU,IAAA1E,EAAK,GAAGC,CAAM,CAAE,IAC5C,gBAAC+B,GAAA,CACE,GAAG/B,EACJ,QAAQ,sBACR,MAAO,GACP,cAAe,GACf,aAAc,GACd,SAAWpD,GAAU6H,EAAS7H,GAAO,KAAK,EAC5C,EAEF,KAAK,cACP,CACF,EACA,gBAACgD,EAAA,EAAK,CAAC,QAAQ,uBAAuB,MAAM,6CAC1C,gBAACE,EAAA,GACC,OAAQ,CAAC,CAAE,MAAO,CAAE,SAAA2E,EAAU,IAAA1E,EAAK,GAAGC,CAAM,CAAE,IAC5C,gBAAC+B,GAAA,CACE,GAAG/B,EACJ,QAAQ,uBACR,MAAO,GACP,cAAe,GACf,aAAc,GACd,SAAWpD,GAAU6H,EAAS7H,GAAO,KAAK,EAC5C,EAEF,KAAK,eACP,CACF,CACF,CAEJ,CAEJ,CAEA,MAAM,GAAaK,IAA0B,CAC3C,eAAa;AAAA;AAAA,IAGb,iBAAe;AAAA,oBACGA,EAAM,QAAQ,CAAC;AAAA,IAEjC,uBAAqB;AAAA,aACVA,EAAM,OAAO,KAAK;AAAA,iBACdA,EAAM,YAAY,OAAO;AAAA,iBACzBA,EAAM,WAAW,KAAK;AAAA,IAErC,wBAAsB;AAAA,qBACHA,EAAM,QAAQ,CAAC;AAAA,IAElC,eAAa;AAAA;AAAA,oBAEKA,EAAM,QAAQ,CAAC;AAAA,aACtBA,EAAM,OAAO,QAAQ;AAAA,IAEhC,YAAU;AAAA;AAAA,IAGV,kBAAgB;AAAA,aACLA,EAAM,OAAO,QAAQ;AAAA,IAEhC,QAAM;AAAA;AAAA,IAGN,iBAAe;AAAA,kBACCA,EAAM,QAAQ,CAAC;AAAA,oBACbA,EAAM,QAAQ,CAAC;AAAA,IAEjC,aAAW;AAAA,kBACKA,EAAM,QAAQ,CAAC;AAAA,IAE/B,eAAa,OAAI;AAAA,aACNA,EAAM,OAAO,KAAK;AAAA;AAAA,gBAEfA,EAAM,WAAW,UAAU;AAAA,GACxC,CACH,E,8UClWA,MAAMyH,GAAkC,IACtC,gBAACC,GAAA,EAAK,CAAC,SAAS,UAAU,MAAM,8CAA6C,oCAC1C,gBAAC,cAAQ,IAAO,gBAAgB,WAAY,EAAS,mCAEtF,gBAAC,SAAG,EAAE,iEAER,E,0BCcF,MAAMC,GAAiB,GAEvB,SAASC,GAAS,CAAE,QAAAC,EAAS,MAAA7D,CAAM,EAAyC,CAC1E,OAAIA,EACK,gBAAC8D,EAAA,EAAK,CAAC,MAAM,MAAM,KAAK,qBAAqB,KAAM,QAAS,QAASD,CAAA,CAAS,EAE9E,gBAACC,EAAA,EAAK,CAAC,MAAM,SAAS,KAAK,uBAAuB,KAAM,UAAW,QAASD,CAAA,CAAS,CAEhG,CAEA,MAAME,EAAqBC,GAAuB,CAChD,GAAI,CACF,MAAMC,KAAW,MAAwBD,CAAU,EAMnD,MAJI,EAAAC,EAAW,IAAwB,KAInCA,GAAY,IAAwB,OAAU,EAKpD,MAAE,CACA,MAAO,EACT,CACF,EAKaC,GAAqB,CAAC,CAAE,2BAAAC,CAA2B,IAAsD,CACpH,MAAMlJ,KAAS,OAAWC,EAAS,EAE7B,CAAE,MAAAoC,CAAM,KAAI,MAA2B,EACvC8G,EAAkB9G,EAAM,eAAe,EACvC+G,EAAyB,CAASD,EAElCE,EAAkCH,EACrC,MAAM,EACN,IAAI,CAACpH,EAAoBwH,KAAW,CACnC,GAAIA,EACJ,QAAM,OAAaxH,EAAMqH,CAAe,CAC1C,EAAE,EACD,KACC,CAACI,EAAQC,OAAW,MAAqBD,EAAO,KAAK,WAAW,KAAI,MAAqBC,EAAO,KAAK,WAAW,CAClH,EAEIC,KAA2C,WAAQ,IAChD,CACL,CACE,GAAI,YACJ,MAAO,QACP,WAAY,CAAC,CAAE,KAAM,CAAE,UAAAC,CAAU,CAAE,IAC1B,gCAAGA,CAAU,EAEtB,KAAM,OACR,EACA,CACE,GAAI,MACJ,MAAO,iBACP,WAAY,CAAC,CAAE,KAAM,CAAE,YAAAC,CAAY,CAAE,IAC5B,gCAAGA,CAAY,EAExB,KAAM,EACR,EACA,CACE,GAAI,oBACJ,MAAO,QACP,WAAY,CAAC,CAAE,KAAM,CAAE,kBAAmBC,CAAkB,CAAE,IACxDR,EACK,gBAACT,GAAA,CAAS,QAAQ,6BAA8B,GAElDG,EAAkBK,CAAe,EAGlCS,IAAsB,EAEtB,gBAACjB,GAAA,CAAS,QAAQ,6EAA6E,MAAK,GAAC,EAGhG,gCAAGiB,CAAkB,EAPrB,gBAACjB,GAAA,CAAS,QAAS,qCAAsC,MAAK,GAAC,EAW5E,KAAM,EACR,CACF,EACC,CAACQ,EAAiBC,CAAsB,CAAC,EAE5C,OACE,gBAAC,OAAI,UAAWpJ,EAAO,cACrB,gBAAC6J,GAAA,EAAY,CAAC,MAAOR,EAAM,KAAMI,EAAS,WAAY,CAAE,aAAcf,EAAe,EAAG,CAC1F,CAEJ,EAQaoB,GAAkCC,IAA4C,CACzF,SAAU,CACR,MAAO,GACP,QAAS,WACX,EACA,SAAW1D,GAA0B,CACnC,GAAI,CACF,MAAM2C,KAAW,MAAwB3C,CAAa,EAEtD,OAAI2C,EAAW,IAAwB,IAC9B,uBAAuB,eAG5BA,GAAY,IAAwB,OAAU,EACzC,yBAAyB,kBAE9B,MAA+Be,EAAO1D,CAAa,EAAE,SAAW,EAC3D,GAEA,+HAEX,OAAStB,EAAP,CACA,OAAOA,aAAiB,MAAQA,EAAM,QAAU,0BAClD,CACF,CACF,GAYO,SAASiF,GAAoBvJ,EAAuC,CACzE,KAAM,CAAE,UAAAwJ,EAAW,MAAAvI,EAAO,QAAAgD,EAAS,iBAAAwF,EAAkB,UAAAhJ,CAAU,EAAIT,EAE7DT,KAAS,OAAWC,EAAS,EAC7BmB,KAAW,gBAAY,EACvB,CAAE,QAAAsB,EAAS,MAAAqC,GAAO,WAAAoF,EAAW,KACjC7I,GAAA,GAA4BC,GAAUA,EAAM,4BAA4B,GAAK,MACzE6I,MAAY,OAAmB,EAE/BC,MAAgB,WACpB,KAAmB,CACjB,iBAAe,MAAuBJ,CAAS,EAAE,KACjD,UAAWvI,EAAM,KACjB,cAAeA,EAAM,UAAY,EACnC,GACA,CAACuI,EAAWvI,CAAK,CACnB,EAEM4I,MAAkB,MAAmBL,EAAU,WAAW,EAC1DM,EAAwBD,KAAoB,KAG5CE,KAAsB,MAAuBP,CAAS,EAAE,QAExDQ,GAAiBF,EAAwB,SAAW,eAG1D,aAAU,IAAM,CACVJ,IAAc,CAACzH,GAAW,CAACqC,IAC7BL,EAAQ,EAAI,CAEhB,EAAG,CAACyF,GAAYzH,EAASgC,EAASK,EAAK,CAAC,KAExC2F,GAAA,GAAYnJ,GAAWA,EAAM,gBAAgB,6BAA+B,KAAyB,EACrG,MAAMsD,GAAY8F,GAAuB,CAEvC,MAAMC,EAAmBL,KACrB,MAAuBI,EAAO,cAAeH,CAAmB,EAChEG,EAAO,cAEXvJ,KACE,MAAmC,CACjC,gBAAAkJ,GACA,UAAW5I,EAAM,KACjB,aAAciJ,EAAO,UACrB,cAAeV,EAAU,KACzB,iBAAAW,EACA,cAAeD,EAAO,eAAiB,OACvC,UAAAzJ,CACF,CAAC,CACH,CACF,EAEMsE,MAAU,MAAoB,CAClC,KAAM,SACN,cAAA6E,GACA,iBAAkB,EACpB,CAAC,EAEK,CACJ,aAAA3E,GACA,SAAAD,GACA,MAAApD,GACA,UAAW,CAAE,QAAAwI,GAAS,OAAAzI,CAAO,CAC/B,EAAIoD,GAEEsF,GAAY,IAAM,CACtBV,GAAU,MAAM,6DAA6D,CAC/E,EAEMlB,MAA6B,WACjCxH,EAAM,MAAM,IAAKqJ,GAAMA,EAAE,SAAS,EAAE,OAAQjJ,GAAS,IAAC,OAAqBA,CAAI,CAAC,CAClF,EACMkJ,GAA0B9B,GAA2B,OAAS,EAC9D+B,GACJf,GAAoBK,EAAwB,wBAA0B,qCAExE,OACE,gBAACvF,EAAA,EAAK,CAAC,UAAWhF,EAAO,MAAO,OAAQ,GAAM,MAAOiL,GAAY,UAAWvG,EAAS,gBAAiBA,CAAA,EACpG,gBAAC,KAAY,CAAE,GAAGc,EAAA,EAChB,gBAAC,QAAK,SAAWN,GAAMA,EAAE,eAAe,EAAG,IAAK,KAAK,UAAUmF,EAAa,GAC1E,gCACG,CAAC5J,EAAM,YACN,gBAACN,EAAA,EAAK,CAAC,IAAK,EAAG,WAAY,UACzB,gBAACuD,EAAA,GACC,UAAW1D,EAAO,UAClB,MACE,gBAAC2D,EAAA,GACC,QAAQ,gBACR,YACE,CAAC4G,GACD,wFAGDE,EACH,EAEF,QAAS,CAAC,CAACrI,EAAO,cAClB,MAAOA,EAAO,eAAe,SAE7B,gBAAC6C,EAAA,GACC,GAAG,gBACH,SAAUiF,GAAoBK,EAC7B,GAAG9E,GAAS,gBAAiB,CAC5B,SAAU,6BACZ,CAAC,EACH,CACF,EACC8E,GAAyB9J,EAAM,WAC9B,gBAAC,MACC,KAAMA,EAAM,UACZ,MAAM,eACN,QAAQ,YACR,KAAK,cACL,OAAO,SACT,CAEJ,EAEF,gBAACiD,EAAA,GACC,MAAO,gBAACC,EAAA,EAAK,CAAC,QAAQ,aAAY,uBAAqB,EACvD,QAAS,CAAC,CAACvB,EAAO,UAClB,MAAOA,EAAO,WAAW,SAEzB,gBAAC6C,EAAA,GACC,UAAW,GACX,GAAG,YACH,SAAUiF,EACT,GAAGzE,GAAS,YAAa,CACxB,SAAU,oCACZ,CAAC,EACH,CACF,EACA,gBAAC/B,EAAA,GACC,MACE,gBAACC,EAAA,GACC,QAAQ,gBACR,YAAY,4EAEZ,gBAACxD,EAAA,EAAK,CAAC,IAAK,IAAK,qBAAmB,CACtC,EAEF,QAAS,CAAC,CAACiC,EAAO,cAClB,MAAOA,EAAO,eAAe,SAE7B,gBAAC6C,EAAA,GACC,GAAG,gBACH,YAAY,KACX,GAAGQ,GAAS,gBAAiBqE,GAA+BZ,EAA0B,CAAC,EAC1F,CACF,KAEC,KAAmC7G,GAAM,eAAe,CAAC,EAAE,cAC1D,gBAACmG,GAA+B,IAAC,EAGlC,CAACwC,IAA2B,gBAAC,WAAI,0CAAwC,EACzEA,IACC,gCACE,gBAAC,WAAI,yCAAuC,EAC5C,gBAAC,OAAI,UAAWhL,EAAO,mBAAmB,sFAE1C,EACA,gBAACiJ,GAAA,CAAmB,2BAAAC,EAAA,CAAwD,CAC9E,EAGF,gBAAC,OAAI,UAAWlJ,EAAO,cACrB,gBAACgF,EAAA,EAAM,UAAN,KACC,gBAACd,EAAA,IACC,QAAQ,YACR,KAAK,SACL,SAAUxB,EACV,QAAS,IAAMgC,EAAQ,EAAK,EAC5B,KAAK,WACN,QAED,EACA,gBAACR,EAAA,IACC,KAAK,SACL,SAAU,CAAC2G,IAAWnI,EACtB,QAASgD,GAAciF,GAAW9F,GAAS8F,CAAM,EAAGG,EAAS,GAE5DpI,EAAU,YAAc,MAC3B,CACF,CACF,CACF,CACF,CACF,CACF,CAEJ,CAEA,MAAMzC,GAAac,IAA0B,CAC3C,SAAO;AAAA;AAAA,IAGP,gBAAc;AAAA;AAAA;AAAA,IAId,aAAW;AAAA;AAAA,IAGX,gBAAc;AAAA,kBACEA,EAAM,QAAQ,CAAC;AAAA,qBACZA,EAAM,QAAQ,CAAC;AAAA;AAAA,IAGlC,qBAAmB;AAAA,iBACJA,EAAM,WAAW,UAAU;AAAA,GAE5C,E,8DCtXO,SAASmK,GAAiB,CAC/B,SAAO,WAAQ,OAAM,MAAe,EAAG,CAAC,CAAC,CAC3C,C","sources":["webpack://grafana/./public/app/features/alerting/unified/components/rule-editor/RuleFolderPicker.tsx","webpack://grafana/./public/app/features/alerting/unified/components/rule-editor/FolderAndGroup.tsx","webpack://grafana/./public/app/features/alerting/unified/components/rule-editor/GrafanaAlertStatePicker.tsx","webpack://grafana/./public/app/features/alerting/unified/components/rule-editor/GrafanaEvaluationBehavior.tsx","webpack://grafana/./public/app/features/alerting/unified/components/InvalidIntervalWarning.tsx","webpack://grafana/./public/app/features/alerting/unified/components/rules/EditRuleGroupModal.tsx","webpack://grafana/./public/app/features/alerting/unified/utils/accessControlHooks.ts"],"sourcesContent":["import { css } from '@emotion/css';\nimport React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { Icon, Stack, Tooltip, useStyles2 } from '@grafana/ui';\nimport { Props as FolderPickerProps, OldFolderPicker } from 'app/core/components/Select/OldFolderPicker';\nimport { PermissionLevelString, SearchQueryType } from 'app/types';\n\nimport { CustomAdd, FolderWarning } from '../../../../../core/components/Select/OldFolderPicker';\n\nexport interface Folder {\n title: string;\n uid: string;\n}\n\nexport interface RuleFolderPickerProps extends Omit
{\n value?: Folder;\n invalid?: boolean;\n}\n\nconst SlashesWarning = () => {\n const styles = useStyles2(getStyles);\n const onClick = () => window.open('https://github.com/grafana/grafana/issues/42947', '_blank');\n return (\n
\n
Folders with '/' character are not allowed.
\n
\n
\n
\n
\n );\n};\n\nexport const containsSlashes = (str: string): boolean => str.indexOf('/') !== -1;\n\nexport function RuleFolderPicker(props: RuleFolderPickerProps) {\n const { value } = props;\n const warningCondition = (folderName: string) => containsSlashes(folderName);\n\n const folderWarning: FolderWarning = {\n warningCondition: warningCondition,\n warningComponent: SlashesWarning,\n };\n\n const customAdd: CustomAdd = {\n disallowValues: true,\n isAllowedValue: (value) => !containsSlashes(value),\n };\n\n return (\n
\n );\n}\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n slashNotAllowed: css`\n color: ${theme.colors.warning.main};\n font-size: 12px;\n margin-bottom: 2px;\n `,\n infoIcon: css`\n color: ${theme.colors.warning.main};\n font-size: 12px;\n margin-bottom: 2px;\n cursor: pointer;\n `,\n});\n","import { css } from '@emotion/css';\nimport { debounce, take, uniqueId } from 'lodash';\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { FormProvider, useForm, useFormContext } from 'react-hook-form';\n\nimport { AppEvents, GrafanaTheme2, SelectableValue } from '@grafana/data';\nimport {\n AsyncSelect,\n Box,\n Button,\n Field,\n Input,\n InputControl,\n Label,\n Modal,\n Stack,\n Text,\n useStyles2,\n} from '@grafana/ui';\nimport appEvents from 'app/core/app_events';\nimport { contextSrv } from 'app/core/services/context_srv';\nimport { createFolder } from 'app/features/manage-dashboards/state/actions';\nimport { AccessControlAction, useDispatch } from 'app/types';\nimport { CombinedRuleGroup } from 'app/types/unified-alerting';\nimport { RulerRulesConfigDTO } from 'app/types/unified-alerting-dto';\n\nimport { useCombinedRuleNamespaces } from '../../hooks/useCombinedRuleNamespaces';\nimport { useUnifiedAlertingSelector } from '../../hooks/useUnifiedAlertingSelector';\nimport { fetchRulerRulesAction } from '../../state/actions';\nimport { RuleFormValues } from '../../types/rule-form';\nimport { GRAFANA_RULES_SOURCE_NAME } from '../../utils/datasource';\nimport { MINUTE } from '../../utils/rule-form';\nimport { isGrafanaRulerRule } from '../../utils/rules';\nimport { ProvisioningBadge } from '../Provisioning';\nimport { evaluateEveryValidationOptions } from '../rules/EditRuleGroupModal';\n\nimport { containsSlashes, Folder, RuleFolderPicker } from './RuleFolderPicker';\nimport { checkForPathSeparator } from './util';\n\nexport const MAX_GROUP_RESULTS = 1000;\n\nexport const useFolderGroupOptions = (folderUid: string, enableProvisionedGroups: boolean) => {\n const dispatch = useDispatch();\n\n // fetch the ruler rules from the database so we can figure out what other \"groups\" are already defined\n // for our folders\n useEffect(() => {\n dispatch(fetchRulerRulesAction({ rulesSourceName: GRAFANA_RULES_SOURCE_NAME }));\n }, [dispatch]);\n\n const rulerRuleRequests = useUnifiedAlertingSelector((state) => state.rulerRules);\n const groupfoldersForGrafana = rulerRuleRequests[GRAFANA_RULES_SOURCE_NAME];\n\n const grafanaFolders = useCombinedRuleNamespaces(GRAFANA_RULES_SOURCE_NAME);\n const folderGroups = grafanaFolders.find((f) => f.uid === folderUid)?.groups ?? [];\n\n const groupOptions = folderGroups\n .map
>((group) => {\n const isProvisioned = isProvisionedGroup(group);\n return {\n label: group.name,\n value: group.name,\n description: group.interval ?? MINUTE,\n // we include provisioned folders, but disable the option to select them\n isDisabled: !enableProvisionedGroups ? isProvisioned : false,\n isProvisioned: isProvisioned,\n };\n })\n\n .sort(sortByLabel);\n\n return { groupOptions, loading: groupfoldersForGrafana?.loading };\n};\n\nconst isProvisionedGroup = (group: CombinedRuleGroup) => {\n return group.rules.some(\n (rule) => isGrafanaRulerRule(rule.rulerRule) && Boolean(rule.rulerRule.grafana_alert.provenance) === true\n );\n};\n\nconst sortByLabel = (a: SelectableValue
, b: SelectableValue
) => {\n return a.label?.localeCompare(b.label ?? '') || 0;\n};\n\nconst findGroupMatchingLabel = (group: SelectableValue
, query: string) => {\n return group.label?.toLowerCase().includes(query.toLowerCase());\n};\n\nexport function FolderAndGroup({\n groupfoldersForGrafana,\n enableProvisionedGroups,\n}: {\n groupfoldersForGrafana?: RulerRulesConfigDTO | null;\n enableProvisionedGroups: boolean;\n}) {\n const {\n formState: { errors },\n watch,\n setValue,\n control,\n } = useFormContext
();\n\n const styles = useStyles2(getStyles);\n\n const folder = watch('folder');\n const group = watch('group');\n\n const { groupOptions, loading } = useFolderGroupOptions(folder?.uid ?? '', enableProvisionedGroups);\n\n const [isCreatingFolder, setIsCreatingFolder] = useState(false);\n const [isCreatingEvaluationGroup, setIsCreatingEvaluationGroup] = useState(false);\n\n const onOpenFolderCreationModal = () => setIsCreatingFolder(true);\n const onOpenEvaluationGroupCreationModal = () => setIsCreatingEvaluationGroup(true);\n\n const handleFolderCreation = (folder: Folder) => {\n resetGroup();\n setValue('folder', folder);\n setIsCreatingFolder(false);\n };\n\n const handleEvalGroupCreation = (groupName: string, evaluationInterval: string) => {\n setValue('group', groupName);\n setValue('evaluateEvery', evaluationInterval);\n setIsCreatingEvaluationGroup(false);\n };\n\n const resetGroup = useCallback(() => {\n setValue('group', '');\n }, [setValue]);\n\n const getOptions = useCallback(\n async (query: string) => {\n const results = query ? groupOptions.filter((group) => findGroupMatchingLabel(group, query)) : groupOptions;\n return take(results, MAX_GROUP_RESULTS);\n },\n [groupOptions]\n );\n\n const debouncedSearch = useMemo(() => {\n return debounce(getOptions, 300, { leading: true });\n }, [getOptions]);\n\n const defaultGroupValue = group ? { value: group, label: group } : undefined;\n\n return (\n
\n
\n {\n
\n Folder\n \n }\n className={styles.formInput}\n error={errors.folder?.message}\n data-testid=\"folder-picker\"\n >\n
\n {(!isCreatingFolder && (\n <>\n
(\n
\n
{\n field.onChange({ title, uid });\n resetGroup();\n }}\n />\n
\n )}\n name=\"folder\"\n rules={{\n required: { value: true, message: 'Select a folder' },\n validate: {\n pathSeparator: (folder: Folder) => checkForPathSeparator(folder.uid),\n },\n }}\n />\n
or
\n
\n New folder\n
\n >\n )) ||
Creating new folder...
}\n
\n
\n }\n {isCreatingFolder && (\n
setIsCreatingFolder(false)} />\n )}\n
\n\n {isCreatingFolder && (\n
setIsCreatingFolder(false)} />\n )}\n\n
\n
\n
\n
(\n
{\n field.onChange(group.label ?? '');\n }}\n isLoading={loading}\n invalid={Boolean(folder) && !group && Boolean(fieldState.error)}\n loadOptions={debouncedSearch}\n cacheOptions\n loadingMessage={'Loading groups...'}\n defaultValue={defaultGroupValue}\n defaultOptions={groupOptions}\n getOptionLabel={(option: SelectableValue
) => (\n
\n
{option.label}
\n {option['isProvisioned'] && (\n <>\n {' '}\n
\n >\n )}\n
\n )}\n placeholder={'Select an evaluation group...'}\n />\n )}\n name=\"group\"\n control={control}\n rules={{\n required: { value: true, message: 'Must enter a group name' },\n validate: {\n pathSeparator: (group_: string) => checkForPathSeparator(group_),\n },\n }}\n />\n
\n
\n
\n
or
\n
\n New evaluation group\n
\n
\n {isCreatingEvaluationGroup && (\n
setIsCreatingEvaluationGroup(false)}\n groupfoldersForGrafana={groupfoldersForGrafana}\n />\n )}\n
\n
\n );\n}\n\nfunction FolderCreationModal({\n onClose,\n onCreate,\n}: {\n onClose: () => void;\n onCreate: (folder: Folder) => void;\n}): React.ReactElement {\n const styles = useStyles2(getStyles);\n\n const [title, setTitle] = useState('');\n const onSubmit = async () => {\n const newFolder = await createFolder({ title: title });\n if (!newFolder.uid) {\n appEvents.emit(AppEvents.alertError, ['Folder could not be created']);\n return;\n }\n\n const folder: Folder = { title: newFolder.title, uid: newFolder.uid };\n onCreate(folder);\n appEvents.emit(AppEvents.alertSuccess, ['Folder Created', 'OK']);\n };\n\n const error = containsSlashes(title);\n\n return (\n
\n
Create a new folder to store your rule
\n\n
\n
Folder name}\n error={\"The folder name can't contain slashes\"}\n invalid={error}\n >\n
setTitle(e.currentTarget.value)}\n className={styles.formInput}\n />\n
\n\n
\n
\n Cancel\n
\n
\n Create\n
\n
\n
\n
\n );\n}\n\nfunction EvaluationGroupCreationModal({\n onClose,\n onCreate,\n groupfoldersForGrafana,\n}: {\n onClose: () => void;\n onCreate: (group: string, evaluationInterval: string) => void;\n groupfoldersForGrafana?: RulerRulesConfigDTO | null;\n}): React.ReactElement {\n const styles = useStyles2(getStyles);\n const onSubmit = () => {\n onCreate(getValues('group'), getValues('evaluateEvery'));\n };\n\n const { watch } = useFormContext
();\n\n const evaluateEveryId = 'eval-every-input';\n const [groupName, folderName] = watch(['group', 'folder.title']);\n\n const groupRules =\n (groupfoldersForGrafana && groupfoldersForGrafana[folderName]?.find((g) => g.name === groupName)?.rules) ?? [];\n\n const onCancel = () => {\n onClose();\n };\n\n const formAPI = useForm({\n defaultValues: { group: '', evaluateEvery: '' },\n mode: 'onChange',\n shouldFocusError: true,\n });\n\n const { register, handleSubmit, formState, getValues } = formAPI;\n\n return (\n
\n
Create a new evaluation group to use for this alert rule.
\n\n
\n
onSubmit())}>\n
Evaluation group name}\n error={formState.errors.group?.message}\n invalid={!!formState.errors.group}\n >\n
\n
\n\n
\n Evaluation interval\n \n }\n >\n
\n
\n
\n
\n Cancel\n
\n
\n Create\n
\n
\n
\n
\n
\n );\n}\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n container: css`\n display: flex;\n flex-direction: column;\n align-items: baseline;\n max-width: ${theme.breakpoints.values.lg}px;\n justify-content: space-between;\n `,\n formInput: css`\n flex-grow: 1;\n `,\n modal: css`\n width: ${theme.breakpoints.values.sm}px;\n `,\n modalTitle: css`\n color: ${theme.colors.text.secondary};\n margin-bottom: ${theme.spacing(2)};\n `,\n});\n","import React, { useMemo } from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { Select } from '@grafana/ui';\nimport { SelectBaseProps } from '@grafana/ui/src/components/Select/types';\nimport { GrafanaAlertStateDecision } from 'app/types/unified-alerting-dto';\n\ntype Props = Omit
, 'options'> & {\n includeNoData: boolean;\n includeError: boolean;\n};\n\nconst options: SelectableValue[] = [\n { value: GrafanaAlertStateDecision.Alerting, label: 'Alerting' },\n { value: GrafanaAlertStateDecision.NoData, label: 'No Data' },\n { value: GrafanaAlertStateDecision.OK, label: 'OK' },\n { value: GrafanaAlertStateDecision.Error, label: 'Error' },\n { value: GrafanaAlertStateDecision.KeepLast, label: 'Keep Last State' },\n];\n\nexport const GrafanaAlertStatePicker = ({ includeNoData, includeError, ...props }: Props) => {\n const opts = useMemo(() => {\n if (!includeNoData) {\n return options.filter((opt) => opt.value !== GrafanaAlertStateDecision.NoData);\n }\n if (!includeError) {\n return options.filter((opt) => opt.value !== GrafanaAlertStateDecision.Error);\n }\n return options;\n }, [includeNoData, includeError]);\n return
;\n};\n","import { css } from '@emotion/css';\nimport React, { useCallback, useEffect, useState } from 'react';\nimport { RegisterOptions, useFormContext } from 'react-hook-form';\n\nimport { GrafanaTheme2, SelectableValue } from '@grafana/data';\nimport {\n Field,\n Icon,\n IconButton,\n Input,\n InputControl,\n Label,\n Stack,\n Switch,\n Text,\n Tooltip,\n useStyles2,\n} from '@grafana/ui';\n\nimport { CombinedRuleGroup, CombinedRuleNamespace } from '../../../../../types/unified-alerting';\nimport { LogMessages, logInfo } from '../../Analytics';\nimport { useCombinedRuleNamespaces } from '../../hooks/useCombinedRuleNamespaces';\nimport { useUnifiedAlertingSelector } from '../../hooks/useUnifiedAlertingSelector';\nimport { RuleFormValues } from '../../types/rule-form';\nimport { GRAFANA_RULES_SOURCE_NAME } from '../../utils/datasource';\nimport { parsePrometheusDuration } from '../../utils/time';\nimport { CollapseToggle } from '../CollapseToggle';\nimport { EditCloudGroupModal } from '../rules/EditRuleGroupModal';\n\nimport { FolderAndGroup, useFolderGroupOptions } from './FolderAndGroup';\nimport { GrafanaAlertStatePicker } from './GrafanaAlertStatePicker';\nimport { NeedHelpInfo } from './NeedHelpInfo';\nimport { RuleEditorSection } from './RuleEditorSection';\n\nexport const MIN_TIME_RANGE_STEP_S = 10; // 10 seconds\n\nconst forValidationOptions = (evaluateEvery: string): RegisterOptions => ({\n required: {\n value: true,\n message: 'Required.',\n },\n validate: (value: string) => {\n // parsePrometheusDuration does not allow 0 but does allow 0s\n if (value === '0') {\n return true;\n }\n\n try {\n const millisFor = parsePrometheusDuration(value);\n\n // 0 is a special value meaning for equals evaluation interval\n if (millisFor === 0) {\n return true;\n }\n\n try {\n const millisEvery = parsePrometheusDuration(evaluateEvery);\n return millisFor >= millisEvery\n ? true\n : 'Pending period must be greater than or equal to the evaluation interval.';\n } catch (err) {\n // if we fail to parse \"every\", assume validation is successful, or the error messages\n // will overlap in the UI\n return true;\n }\n } catch (error) {\n return error instanceof Error ? error.message : 'Failed to parse duration';\n }\n },\n});\n\nconst useIsNewGroup = (folder: string, group: string) => {\n const { groupOptions } = useFolderGroupOptions(folder, false);\n\n const groupIsInGroupOptions = useCallback(\n (group_: string) => groupOptions.some((groupInList: SelectableValue
) => groupInList.label === group_),\n [groupOptions]\n );\n return !groupIsInGroupOptions(group);\n};\n\nfunction FolderGroupAndEvaluationInterval({\n evaluateEvery,\n setEvaluateEvery,\n enableProvisionedGroups,\n}: {\n evaluateEvery: string;\n setEvaluateEvery: (value: string) => void;\n enableProvisionedGroups: boolean;\n}) {\n const styles = useStyles2(getStyles);\n const { watch, setValue, getValues } = useFormContext
();\n const [isEditingGroup, setIsEditingGroup] = useState(false);\n\n const [groupName, folderUid, folderName] = watch(['group', 'folder.uid', 'folder.title']);\n\n const rulerRuleRequests = useUnifiedAlertingSelector((state) => state.rulerRules);\n const groupfoldersForGrafana = rulerRuleRequests[GRAFANA_RULES_SOURCE_NAME];\n\n const grafanaNamespaces = useCombinedRuleNamespaces(GRAFANA_RULES_SOURCE_NAME);\n const existingNamespace = grafanaNamespaces.find((ns) => ns.uid === folderUid);\n const existingGroup = existingNamespace?.groups.find((g) => g.name === groupName);\n\n const isNewGroup = useIsNewGroup(folderUid ?? '', groupName);\n\n useEffect(() => {\n if (!isNewGroup && existingGroup?.interval) {\n setEvaluateEvery(existingGroup.interval);\n }\n }, [setEvaluateEvery, isNewGroup, setValue, existingGroup]);\n\n const closeEditGroupModal = (saved = false) => {\n if (!saved) {\n logInfo(LogMessages.leavingRuleGroupEdit);\n }\n setIsEditingGroup(false);\n };\n\n const onOpenEditGroupModal = () => setIsEditingGroup(true);\n\n const editGroupDisabled = groupfoldersForGrafana?.loading || isNewGroup || !folderUid || !groupName;\n\n const emptyNamespace: CombinedRuleNamespace = {\n name: folderName,\n rulesSource: GRAFANA_RULES_SOURCE_NAME,\n groups: [],\n };\n const emptyGroup: CombinedRuleGroup = { name: groupName, interval: evaluateEvery, rules: [], totals: {} };\n\n return (\n
\n
\n {folderName && isEditingGroup && (\n
closeEditGroupModal()}\n intervalEditOnly\n hideFolder={true}\n />\n )}\n {folderName && groupName && (\n
\n
\n
\n
\n {getValues('group') && getValues('evaluateEvery') && (\n
\n All rules in the selected group are evaluated every {evaluateEvery}.{' '}\n {!isNewGroup && (\n
\n )}\n
\n )}\n
\n
\n
\n
\n )}\n
\n );\n}\n\nfunction ForInput({ evaluateEvery }: { evaluateEvery: string }) {\n const styles = useStyles2(getStyles);\n const {\n register,\n formState: { errors },\n } = useFormContext
();\n\n const evaluateForId = 'eval-for-input';\n\n return (\n
\n
\n Pending period\n \n }\n className={styles.inlineField}\n error={errors.evaluateFor?.message}\n invalid={!!errors.evaluateFor?.message}\n validationMessageHorizontalOverflow={true}\n >\n
\n
\n
\n );\n}\n\nfunction getDescription() {\n const docsLink = 'https://grafana.com/docs/grafana/latest/alerting/fundamentals/alert-rules/rule-evaluation/';\n\n return (\n
\n
\n Define how the alert rule is evaluated.\n
\n
\n
\n );\n}\n\nexport function GrafanaEvaluationBehavior({\n evaluateEvery,\n setEvaluateEvery,\n existing,\n enableProvisionedGroups,\n}: {\n evaluateEvery: string;\n setEvaluateEvery: (value: string) => void;\n existing: boolean;\n enableProvisionedGroups: boolean;\n}) {\n const styles = useStyles2(getStyles);\n const [showErrorHandling, setShowErrorHandling] = useState(false);\n\n const { watch, setValue } = useFormContext
();\n\n const isPaused = watch('isPaused');\n\n return (\n // TODO remove \"and alert condition\" for recording rules\n
\n
\n
\n
\n\n {existing && (\n
\n
(\n
\n
{\n setValue('isPaused', value.currentTarget.checked);\n }}\n value={Boolean(isPaused)}\n />\n
\n Pause evaluation\n
\n
\n
\n
\n
\n )}\n name=\"isPaused\"\n />\n
\n )}\n
\n
setShowErrorHandling(!collapsed)}\n text=\"Configure no data and error handling\"\n />\n {showErrorHandling && (\n <>\n
\n
(\n
onChange(value?.value)}\n />\n )}\n name=\"noDataState\"\n />\n
\n
\n
(\n
onChange(value?.value)}\n />\n )}\n name=\"execErrState\"\n />\n
\n >\n )}\n
\n );\n}\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n inlineField: css`\n margin-bottom: 0;\n `,\n evaluateLabel: css`\n margin-right: ${theme.spacing(1)};\n `,\n evaluationContainer: css`\n color: ${theme.colors.text.secondary};\n max-width: ${theme.breakpoints.values.sm}px;\n font-size: ${theme.typography.size.sm};\n `,\n intervalChangedLabel: css`\n margin-bottom: ${theme.spacing(1)};\n `,\n warningIcon: css`\n justify-self: center;\n margin-right: ${theme.spacing(1)};\n color: ${theme.colors.warning.text};\n `,\n infoIcon: css`\n margin-left: 10px;\n `,\n warningMessage: css`\n color: ${theme.colors.warning.text};\n `,\n bold: css`\n font-weight: bold;\n `,\n alignInterval: css`\n margin-top: ${theme.spacing(1)};\n margin-left: -${theme.spacing(1)};\n `,\n marginTop: css`\n margin-top: ${theme.spacing(1)};\n `,\n switchLabel: css(`\n color: ${theme.colors.text.primary},\n cursor: 'pointer',\n fontSize: ${theme.typography.bodySmall.fontSize},\n `),\n});\n","import React from 'react';\n\nimport { config } from '@grafana/runtime';\nimport { Alert } from '@grafana/ui';\n\nconst EvaluationIntervalLimitExceeded = () => (\n
\n A minimum evaluation interval of
{config.unifiedAlerting.minInterval}
has been configured in\n Grafana.\n
\n Please contact the administrator to configure a lower interval.\n
\n);\n\nexport { EvaluationIntervalLimitExceeded };\n","import { css } from '@emotion/css';\nimport { compact } from 'lodash';\nimport React, { useEffect, useMemo } from 'react';\nimport { FormProvider, RegisterOptions, useForm, useFormContext } from 'react-hook-form';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { Badge, Button, Field, Input, Label, LinkButton, Modal, useStyles2, Stack } from '@grafana/ui';\nimport { useAppNotification } from 'app/core/copy/appNotification';\nimport { useCleanup } from 'app/core/hooks/useCleanup';\nimport { useDispatch } from 'app/types';\nimport { CombinedRuleGroup, CombinedRuleNamespace } from 'app/types/unified-alerting';\nimport { RulerRuleDTO } from 'app/types/unified-alerting-dto';\n\nimport { useUnifiedAlertingSelector } from '../../hooks/useUnifiedAlertingSelector';\nimport { rulesInSameGroupHaveInvalidFor, updateLotexNamespaceAndGroupAction } from '../../state/actions';\nimport { checkEvaluationIntervalGlobalLimit } from '../../utils/config';\nimport { getRulesSourceName, GRAFANA_RULES_SOURCE_NAME } from '../../utils/datasource';\nimport { initialAsyncRequestState } from '../../utils/redux';\nimport { AlertInfo, getAlertInfo, isRecordingRulerRule } from '../../utils/rules';\nimport { parsePrometheusDuration, safeParseDurationstr } from '../../utils/time';\nimport { DynamicTable, DynamicTableColumnProps, DynamicTableItemProps } from '../DynamicTable';\nimport { EvaluationIntervalLimitExceeded } from '../InvalidIntervalWarning';\nimport { decodeGrafanaNamespace, encodeGrafanaNamespace } from '../expressions/util';\nimport { MIN_TIME_RANGE_STEP_S } from '../rule-editor/GrafanaEvaluationBehavior';\n\nconst ITEMS_PER_PAGE = 10;\n\nfunction ForBadge({ message, error }: { message: string; error?: boolean }) {\n if (error) {\n return
;\n } else {\n return
;\n }\n}\n\nconst isValidEvaluation = (evaluation: string) => {\n try {\n const duration = parsePrometheusDuration(evaluation);\n\n if (duration < MIN_TIME_RANGE_STEP_S * 1000) {\n return false;\n }\n\n if (duration % (MIN_TIME_RANGE_STEP_S * 1000) !== 0) {\n return false;\n }\n\n return true;\n } catch (error) {\n return false;\n }\n};\n\ntype AlertsWithForTableColumnProps = DynamicTableColumnProps
;\ntype AlertsWithForTableProps = DynamicTableItemProps
;\n\nexport const RulesForGroupTable = ({ rulesWithoutRecordingRules }: { rulesWithoutRecordingRules: RulerRuleDTO[] }) => {\n const styles = useStyles2(getStyles);\n\n const { watch } = useFormContext
();\n const currentInterval = watch('groupInterval');\n const unknownCurrentInterval = !Boolean(currentInterval);\n\n const rows: AlertsWithForTableProps[] = rulesWithoutRecordingRules\n .slice()\n .map((rule: RulerRuleDTO, index) => ({\n id: index,\n data: getAlertInfo(rule, currentInterval),\n }))\n .sort(\n (alert1, alert2) => safeParseDurationstr(alert1.data.forDuration) - safeParseDurationstr(alert2.data.forDuration)\n );\n\n const columns: AlertsWithForTableColumnProps[] = useMemo(() => {\n return [\n {\n id: 'alertName',\n label: 'Alert',\n renderCell: ({ data: { alertName } }) => {\n return <>{alertName}>;\n },\n size: '330px',\n },\n {\n id: 'for',\n label: 'Pending period',\n renderCell: ({ data: { forDuration } }) => {\n return <>{forDuration}>;\n },\n size: 0.5,\n },\n {\n id: 'numberEvaluations',\n label: '#Eval',\n renderCell: ({ data: { evaluationsToFire: numberEvaluations } }) => {\n if (unknownCurrentInterval) {\n return
;\n } else {\n if (!isValidEvaluation(currentInterval)) {\n return
;\n }\n if (numberEvaluations === 0) {\n return (\n
\n );\n } else {\n return <>{numberEvaluations}>;\n }\n }\n },\n size: 0.4,\n },\n ];\n }, [currentInterval, unknownCurrentInterval]);\n\n return (\n
\n
\n
\n );\n};\n\ninterface FormValues {\n namespaceName: string;\n groupName: string;\n groupInterval: string;\n}\n\nexport const evaluateEveryValidationOptions = (rules: RulerRuleDTO[]): RegisterOptions => ({\n required: {\n value: true,\n message: 'Required.',\n },\n validate: (evaluateEvery: string) => {\n try {\n const duration = parsePrometheusDuration(evaluateEvery);\n\n if (duration < MIN_TIME_RANGE_STEP_S * 1000) {\n return `Cannot be less than ${MIN_TIME_RANGE_STEP_S} seconds.`;\n }\n\n if (duration % (MIN_TIME_RANGE_STEP_S * 1000) !== 0) {\n return `Must be a multiple of ${MIN_TIME_RANGE_STEP_S} seconds.`;\n }\n if (rulesInSameGroupHaveInvalidFor(rules, evaluateEvery).length === 0) {\n return true;\n } else {\n return `Invalid evaluation interval. Evaluation interval should be smaller or equal to 'For' values for existing rules in this group.`;\n }\n } catch (error) {\n return error instanceof Error ? error.message : 'Failed to parse duration';\n }\n },\n});\n\nexport interface ModalProps {\n namespace: CombinedRuleNamespace;\n group: CombinedRuleGroup;\n onClose: (saved?: boolean) => void;\n intervalEditOnly?: boolean;\n folderUrl?: string;\n folderUid?: string;\n hideFolder?: boolean;\n}\n\nexport function EditCloudGroupModal(props: ModalProps): React.ReactElement {\n const { namespace, group, onClose, intervalEditOnly, folderUid } = props;\n\n const styles = useStyles2(getStyles);\n const dispatch = useDispatch();\n const { loading, error, dispatched } =\n useUnifiedAlertingSelector((state) => state.updateLotexNamespaceAndGroup) ?? initialAsyncRequestState;\n const notifyApp = useAppNotification();\n\n const defaultValues = useMemo(\n (): FormValues => ({\n namespaceName: decodeGrafanaNamespace(namespace).name,\n groupName: group.name,\n groupInterval: group.interval ?? '',\n }),\n [namespace, group]\n );\n\n const rulesSourceName = getRulesSourceName(namespace.rulesSource);\n const isGrafanaManagedGroup = rulesSourceName === GRAFANA_RULES_SOURCE_NAME;\n\n // parse any parent folders the alert rule might be stored in\n const nestedFolderParents = decodeGrafanaNamespace(namespace).parents;\n\n const nameSpaceLabel = isGrafanaManagedGroup ? 'Folder' : 'Namespace';\n\n // close modal if successfully saved\n useEffect(() => {\n if (dispatched && !loading && !error) {\n onClose(true);\n }\n }, [dispatched, loading, onClose, error]);\n\n useCleanup((state) => (state.unifiedAlerting.updateLotexNamespaceAndGroup = initialAsyncRequestState));\n const onSubmit = (values: FormValues) => {\n // make sure that when dealing with a nested folder for Grafana managed rules we encode the folder properly\n const newNamespaceName = isGrafanaManagedGroup\n ? encodeGrafanaNamespace(values.namespaceName, nestedFolderParents)\n : values.namespaceName;\n\n dispatch(\n updateLotexNamespaceAndGroupAction({\n rulesSourceName: rulesSourceName,\n groupName: group.name,\n newGroupName: values.groupName,\n namespaceName: namespace.name,\n newNamespaceName: newNamespaceName,\n groupInterval: values.groupInterval || undefined,\n folderUid,\n })\n );\n };\n\n const formAPI = useForm
({\n mode: 'onBlur',\n defaultValues,\n shouldFocusError: true,\n });\n\n const {\n handleSubmit,\n register,\n watch,\n formState: { isDirty, errors },\n } = formAPI;\n\n const onInvalid = () => {\n notifyApp.error('There are errors in the form. Correct the errors and retry.');\n };\n\n const rulesWithoutRecordingRules = compact(\n group.rules.map((r) => r.rulerRule).filter((rule) => !isRecordingRulerRule(rule))\n );\n const hasSomeNoRecordingRules = rulesWithoutRecordingRules.length > 0;\n const modalTitle =\n intervalEditOnly || isGrafanaManagedGroup ? 'Edit evaluation group' : 'Edit namespace or evaluation group';\n\n return (\n
\n
\n
e.preventDefault()} key={JSON.stringify(defaultValues)}>\n <>\n {!props.hideFolder && (\n
\n
\n {nameSpaceLabel}\n \n }\n invalid={!!errors.namespaceName}\n error={errors.namespaceName?.message}\n >\n
\n
\n {isGrafanaManagedGroup && props.folderUrl && (\n
\n )}\n
\n )}\n
Evaluation group name}\n invalid={!!errors.groupName}\n error={errors.groupName?.message}\n >\n
\n
\n
\n
Evaluation interval
\n \n }\n invalid={!!errors.groupInterval}\n error={errors.groupInterval?.message}\n >\n
\n
\n\n {checkEvaluationIntervalGlobalLimit(watch('groupInterval')).exceedsLimit && (\n
\n )}\n\n {!hasSomeNoRecordingRules &&
This group does not contain alert rules.
}\n {hasSomeNoRecordingRules && (\n <>\n
List of rules that belong to this group
\n
\n #Eval column represents the number of evaluations needed before alert starts firing.\n
\n
\n >\n )}\n\n
\n
\n
onClose(false)}\n fill=\"outline\"\n >\n Cancel\n
\n
onSubmit(values), onInvalid)}\n >\n {loading ? 'Saving...' : 'Save'}\n
\n
\n
\n >\n
\n
\n
\n );\n}\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n modal: css`\n max-width: 560px;\n `,\n modalButtons: css`\n top: -24px;\n position: relative;\n `,\n formInput: css`\n flex: 1;\n `,\n tableWrapper: css`\n margin-top: ${theme.spacing(2)};\n margin-bottom: ${theme.spacing(2)};\n height: 100%;\n `,\n evalRequiredLabel: css`\n font-size: ${theme.typography.bodySmall.fontSize};\n `,\n});\n","import { useMemo } from 'react';\n\nimport { getRulesAccess } from './access-control';\n\nexport function useRulesAccess() {\n return useMemo(() => getRulesAccess(), []);\n}\n"],"names":["SlashesWarning","styles","getStyles","onClick","Stack","Tooltip","Icon","containsSlashes","str","RuleFolderPicker","props","value","folderWarning","folderName","customAdd","OldFolderPicker","theme","MAX_GROUP_RESULTS","useFolderGroupOptions","folderUid","enableProvisionedGroups","dispatch","groupfoldersForGrafana","useUnifiedAlertingSelector","state","useCombinedRuleNamespaces","f","group","isProvisioned","isProvisionedGroup","sortByLabel","rule","a","b","findGroupMatchingLabel","query","FolderAndGroup","errors","watch","setValue","control","folder","groupOptions","loading","isCreatingFolder","setIsCreatingFolder","isCreatingEvaluationGroup","setIsCreatingEvaluationGroup","onOpenFolderCreationModal","onOpenEvaluationGroupCreationModal","handleFolderCreation","resetGroup","handleEvalGroupCreation","groupName","evaluationInterval","getOptions","results","debouncedSearch","defaultGroupValue","Field","Label","InputControl","ref","field","title","uid","Text","Button","FolderCreationModal","fieldState","option","Provisioning","group_","Box","EvaluationGroupCreationModal","onClose","onCreate","setTitle","onSubmit","newFolder","error","Modal","Input","e","getValues","evaluateEveryId","groupRules","g","onCancel","formAPI","register","handleSubmit","formState","options","GrafanaAlertStatePicker","includeNoData","includeError","opts","opt","Select","MIN_TIME_RANGE_STEP_S","forValidationOptions","evaluateEvery","millisFor","millisEvery","useIsNewGroup","groupInList","FolderGroupAndEvaluationInterval","setEvaluateEvery","isEditingGroup","setIsEditingGroup","existingNamespace","ns","existingGroup","isNewGroup","closeEditGroupModal","saved","onOpenEditGroupModal","editGroupDisabled","emptyNamespace","emptyGroup","IconButton","ForInput","evaluateForId","getDescription","docsLink","NeedHelpInfo","GrafanaEvaluationBehavior","existing","showErrorHandling","setShowErrorHandling","isPaused","RuleEditorSection","Switch","CollapseToggle","collapsed","onChange","EvaluationIntervalLimitExceeded","Alert","ITEMS_PER_PAGE","ForBadge","message","Badge","isValidEvaluation","evaluation","duration","RulesForGroupTable","rulesWithoutRecordingRules","currentInterval","unknownCurrentInterval","rows","index","alert1","alert2","columns","alertName","forDuration","numberEvaluations","DynamicTable","evaluateEveryValidationOptions","rules","EditCloudGroupModal","namespace","intervalEditOnly","dispatched","notifyApp","defaultValues","rulesSourceName","isGrafanaManagedGroup","nestedFolderParents","nameSpaceLabel","useCleanup","values","newNamespaceName","isDirty","onInvalid","r","hasSomeNoRecordingRules","modalTitle","useRulesAccess"],"sourceRoot":""}