@ytsaurus/ui 1.14.3 → 1.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/build/cjs/@types/core.d.ts +3 -2
  2. package/build/cjs/server/configs/local.js +1 -0
  3. package/build/cjs/server/configs/local.js.map +1 -1
  4. package/build/cjs/shared/ui-settings.d.ts +1 -0
  5. package/build/cjs/shared/ui-settings.js.map +1 -1
  6. package/build/cjs/ui/UIFactory.d.ts +4 -1
  7. package/build/cjs/ui/UIFactory.js +9 -2
  8. package/build/cjs/ui/UIFactory.js.map +1 -1
  9. package/build/cjs/ui/components/Support/Support.js +6 -4
  10. package/build/cjs/ui/components/Support/Support.js.map +1 -1
  11. package/build/cjs/ui/containers/AppNavigation/AppNavigationComponent.js +50 -5
  12. package/build/cjs/ui/containers/AppNavigation/AppNavigationComponent.js.map +1 -1
  13. package/build/cjs/ui/containers/SupportComponent/SupportComponent.d.ts +5 -0
  14. package/build/cjs/ui/containers/SupportComponent/SupportComponent.js +24 -0
  15. package/build/cjs/ui/containers/SupportComponent/SupportComponent.js.map +1 -0
  16. package/build/cjs/ui/pages/operations/OperationDetail/tabs/details/Details/Details.css +6 -1
  17. package/build/cjs/ui/pages/operations/OperationDetail/tabs/details/Details/Details.css.map +1 -1
  18. package/build/cjs/ui/store/actions/scheduling/expanded-pools.js +1 -1
  19. package/build/cjs/ui/store/actions/scheduling/expanded-pools.js.map +1 -1
  20. package/build/cjs/ui/utils/scheduling/pool-child.js +1 -1
  21. package/build/cjs/ui/utils/scheduling/pool-child.js.map +1 -1
  22. package/build/esm/@types/core.d.ts +3 -2
  23. package/build/esm/server/configs/local.js +2 -1
  24. package/build/esm/server/configs/local.js.map +1 -1
  25. package/build/esm/shared/ui-settings.d.ts +1 -0
  26. package/build/esm/shared/ui-settings.js.map +1 -1
  27. package/build/esm/ui/UIFactory.d.ts +4 -1
  28. package/build/esm/ui/UIFactory.js +9 -2
  29. package/build/esm/ui/UIFactory.js.map +1 -1
  30. package/build/esm/ui/components/Support/Support.js +6 -4
  31. package/build/esm/ui/components/Support/Support.js.map +1 -1
  32. package/build/esm/ui/containers/AppNavigation/AppNavigationComponent.js +50 -5
  33. package/build/esm/ui/containers/AppNavigation/AppNavigationComponent.js.map +1 -1
  34. package/build/esm/ui/containers/SupportComponent/SupportComponent.d.ts +5 -0
  35. package/build/esm/ui/containers/SupportComponent/SupportComponent.js +18 -0
  36. package/build/esm/ui/containers/SupportComponent/SupportComponent.js.map +1 -0
  37. package/build/esm/ui/pages/operations/OperationDetail/tabs/details/Details/Details.css +6 -1
  38. package/build/esm/ui/pages/operations/OperationDetail/tabs/details/Details/Details.css.map +1 -1
  39. package/build/esm/ui/pages/operations/OperationDetail/tabs/details/Details/Details.scss +6 -1
  40. package/build/esm/ui/store/actions/scheduling/expanded-pools.js +1 -1
  41. package/build/esm/ui/store/actions/scheduling/expanded-pools.js.map +1 -1
  42. package/build/esm/ui/utils/scheduling/pool-child.js +1 -1
  43. package/build/esm/ui/utils/scheduling/pool-child.js.map +1 -1
  44. package/dist/public/build/assets-manifest.json +16 -16
  45. package/dist/public/build/css/{89.3546950a.chunk.css → 861.c5a67589.chunk.css} +1 -1
  46. package/dist/public/build/css/861.c5a67589.chunk.css.map +1 -0
  47. package/dist/public/build/css/{main.e919e247.css → main.675cb8c4.css} +2 -2
  48. package/dist/public/build/css/main.675cb8c4.css.map +1 -0
  49. package/dist/public/build/js/861.9703a31c.chunk.js +2 -0
  50. package/dist/public/build/js/861.9703a31c.chunk.js.map +1 -0
  51. package/dist/public/build/js/{943.f6342dd5.chunk.js → 943.40ff6440.chunk.js} +2 -2
  52. package/dist/public/build/js/{943.f6342dd5.chunk.js.map → 943.40ff6440.chunk.js.map} +1 -1
  53. package/dist/public/build/js/main.fb68ce2c.js +3 -0
  54. package/dist/public/build/js/{main.b8adf234.js.map → main.fb68ce2c.js.map} +1 -1
  55. package/dist/public/build/js/runtime.ac9a4336.js +2 -0
  56. package/dist/public/build/js/{runtime.fd8cf219.js.map → runtime.ac9a4336.js.map} +1 -1
  57. package/dist/public/build/manifest.json +12 -12
  58. package/dist/server/configs/local.js +1 -0
  59. package/dist/shared/ui-settings.d.ts +1 -0
  60. package/package.json +2 -2
  61. package/dist/public/build/css/89.3546950a.chunk.css.map +0 -1
  62. package/dist/public/build/css/main.e919e247.css.map +0 -1
  63. package/dist/public/build/js/89.07445d46.chunk.js +0 -2
  64. package/dist/public/build/js/89.07445d46.chunk.js.map +0 -1
  65. package/dist/public/build/js/main.b8adf234.js +0 -3
  66. package/dist/public/build/js/runtime.fd8cf219.js +0 -2
  67. /package/dist/public/build/js/{main.b8adf234.js.LICENSE.txt → main.fb68ce2c.js.LICENSE.txt} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"js/943.f6342dd5.chunk.js","mappings":"0WA6BMA,GAAQC,EAAAA,EAAAA,GAAG,qBAEjB,SAASC,IACL,IAAMC,GAAWC,EAAAA,EAAAA,MAEXC,EAAWC,EAAAA,aACb,SAACC,GCnBF,IAA+BC,EDoB1BL,GCpB0BK,EDoBKD,ECnBhC,CAACE,KAAMC,EAAAA,GAAmBF,KAAAA,IDoB7B,GACA,CAACL,IAGL,OACIQ,EAAAA,EAAAA,KAACC,EAAAA,EAAO,CACJC,YAAa,CACT,CACIC,KAAM,QACNC,MAAMJ,EAAAA,EAAAA,KAACK,EAAY,CAACX,SAAUA,IAC9BY,UAAU,EACVC,iBAAkBlB,EAAM,gBAE5B,CACIc,KAAM,UACNC,MAAMJ,EAAAA,EAAAA,KAACQ,EAAa,CAACd,SAAUA,KAEnC,CACIS,KAAM,QACNC,MAAMJ,EAAAA,EAAAA,KAACS,EAAW,CAACf,SAAUA,KAEjC,CACIS,KAAM,SACNC,MAAMJ,EAAAA,EAAAA,KAACU,EAAY,CAAChB,SAAUA,KAElC,CACIS,KAAM,UACNC,MAAMJ,EAAAA,EAAAA,KAACW,EAAqB,OAKhD,CAEA,SAASN,EAAYO,GAA2D,IAAzDlB,EAAQkB,EAARlB,SACbmB,GAAQC,EAAAA,EAAAA,IAAYC,EAAAA,IAE1B,OACIf,EAAAA,EAAAA,KAACgB,EAAAA,EAAS,CACNH,MAAOA,EACPnB,SAAU,SAACS,GACPT,EAAS,CAACS,KAAAA,GACd,EACAc,YAAY,iCAGxB,CAEA,SAAST,EAAaU,GAA+D,IAA7DxB,EAAQwB,EAARxB,SACdmB,GAAQC,EAAAA,EAAAA,IAAYK,EAAAA,IACpBC,GAAWN,EAAAA,EAAAA,IAAYO,EAAAA,IAEvBC,EAAQ3B,EAAAA,SAAc,WACxB,OAAOyB,EAASG,KAAI,SAACC,GACjB,MAAO,CACHX,MAAOW,EACPC,KAAMD,EAEd,GACJ,GAAG,CAACJ,IAEJ,OACIpB,EAAAA,EAAAA,KAAC0B,EAAAA,EAAY,CACTC,UAAWtC,EAAM,iBACjBuC,MAAM,WACNf,MAAOA,EACPS,MAAOA,EACPO,SAAU,SAACC,GACPpC,EAAS,CAACoC,QAAAA,GACd,GAGZ,CAEA,SAASpB,EAAYqB,GAA8D,IAA5DrC,EAAQqC,EAARrC,SACbmB,GAAQC,EAAAA,EAAAA,IAAYkB,EAAAA,IACpBC,GAAUnB,EAAAA,EAAAA,IAAYoB,EAAAA,IAEtBZ,EAAQ3B,EAAAA,SAAc,WACxB,OAAOsC,EAAQV,KAAI,SAACC,GAChB,MAAO,CACHX,MAAOW,EACPC,KAAMD,EAEd,GACJ,GAAG,CAACS,IAEJ,OACIjC,EAAAA,EAAAA,KAAC0B,EAAAA,EAAY,CACTC,UAAWtC,EAAM,iBACjBuC,MAAM,UACNf,MAAOA,EACPS,MAAOA,EACPO,SAAU,SAACM,GACPzC,EAAS,CAACyC,OAAAA,GACd,GAGZ,CAEA,SAAS1B,EAAW2B,GAA6D,IAA3D1C,EAAQ0C,EAAR1C,SACZmB,GAAQC,EAAAA,EAAAA,IAAYuB,EAAAA,IACpBC,GAASxB,EAAAA,EAAAA,IAAYyB,EAAAA,IAErBjB,EAAQ3B,EAAAA,SAAc,WACxB,OAAO2C,EAAOf,KAAI,SAACC,GACf,MAAO,CACHX,MAAOW,EACPC,KAAMD,EAEd,GACJ,GAAG,CAACc,IACJ,OACItC,EAAAA,EAAAA,KAAC0B,EAAAA,EAAY,CACTC,UAAWtC,EAAM,iBACjBuC,MAAM,SACNf,MAAOA,EACPS,MAAOA,EACPO,SAAU,SAACW,GACP9C,EAAS,CAAC8C,MAAAA,GACd,GAGZ,CAEA,SAAS7B,IACL,IAAMnB,GAAWC,EAAAA,EAAAA,MAEjBgD,EAA8B9C,EAAAA,UAAe,GAAM+C,GAAAC,EAAAA,EAAAA,GAAAF,EAAA,GAA5CG,EAAOF,EAAA,GAAEG,EAAUH,EAAA,GACpBI,GAAUhC,EAAAA,EAAAA,IAAYiC,EAAAA,IAEtBC,GACFhD,EAAAA,EAAAA,KAACiD,EAAAA,EAAmB,CAChBC,UAAWN,EACXtB,MAAOwB,EAAQvB,KAAI,SAAC4B,GAAO,IAADC,EACtB,MAAO,CACHjD,KAAiC,QAA7BiD,EAAEC,EAAAA,GAAkBF,EAAEG,eAAO,IAAAF,EAAAA,EAAIG,EAAAA,EAAOC,cAAcL,EAAEG,QAC5DG,QAASN,EAAEM,QACX5D,KAAM,CACFyD,OAAQH,EAAEG,QAGtB,IACAI,UAAW,SAAC7C,GACR,IAAM8C,EAAa9C,EAAM+C,QAAO,SAACT,GAAC,OAAKA,EAAEM,OAAO,IAAElC,KAAI,SAAC4B,GAAC,OAAKA,EAAEtD,KAAKyD,MAAM,IAC1E9D,GAASqE,EAAAA,EAAAA,IAAsBF,IAC/Bd,GAAW,EACf,EACAiB,SAAU,kBAAMjB,GAAW,EAAM,IAIzC,OACIkB,EAAAA,EAAAA,MAACpE,EAAAA,SAAc,CAAAqE,SAAA,CACVpB,GAAWI,GACZhD,EAAAA,EAAAA,KAACiE,EAAAA,EAAM,CAACC,KAAK,WAAWC,QAAS,kBAAMtB,GAAW,EAAK,EAACmB,SAAC,cAKrE,CAEA,QAAerE,EAAAA,KAAWJ,G,2FE9LnB,SAAS6E,EAAWxD,GAUvB,IATAyD,EAAEzD,EAAFyD,GACAC,EAAO1D,EAAP0D,QACAC,EAAK3D,EAAL2D,MACAC,EAAS5D,EAAT4D,UAOMC,EAAcJ,GAAa,YAAPA,EAAmBA,EAAK,KAElD,OACIrE,EAAAA,EAAAA,KAAC0E,EAAAA,EAAI,CAACC,QAAQ,SAASJ,MAAOA,EAAMP,SAC/BS,GACGV,EAAAA,EAAAA,MAACpE,EAAAA,SAAc,CAAAqE,SAAA,EACXhE,EAAAA,EAAAA,KAAC4E,EAAAA,EAAI,CACDC,MAAON,EACPO,IAAG,IAAAC,OAAMT,EAAO,KAAAS,OAAIC,EAAAA,GAAKC,WAAU,KAAAF,OAAIN,GACvCS,QAAM,EAAAlB,SAELS,IAEJD,IACGxE,EAAAA,EAAAA,KAACmF,EAAAA,EAAe,CACZ1D,KAAMgD,EACNP,KAAK,QACLkB,mBAAiB,EACjBC,eAAa,OAKzB9B,EAAAA,EAAO+B,UAIvB,C,qECzCMC,EAEF,CACAC,KAAM,UACNC,OAAQ,SACRC,OAAQ,UACRC,QAAS,OACTC,UAAW,WAGR,SAASC,EAAWjF,GAAiE,IAA/D4B,EAAK5B,EAAL4B,MACzB,OAAQA,GAGJxC,EAAAA,EAAAA,KAAC8F,EAAAA,EAAK,CAACrE,KAAMe,EAAOqC,MAAOU,EAAU/C,GAAQuD,WAAS,EAACC,YAAU,IAFjEzC,EAAAA,EAAO+B,QAIf,C,qECRMjG,IAAQC,EAAAA,EAAAA,GAAG,qBAUV,SAAS2G,GAAgBrF,GAAmE,IAAjEsF,EAAMtF,EAANsF,OAAQC,EAAKvF,EAALuF,MAAOC,EAAIxF,EAAJwF,KAAMC,EAAOzF,EAAPyF,QAASC,EAAQ1F,EAAR0F,SACtD5C,EAAY,WACVwC,IACAI,SAAAA,EAAWJ,GAEnB,EACA,OAAQA,GACJ,IAAK,OACL,IAAK,SACD,OAAOlG,EAAAA,EAAAA,KAACuG,GAAsB,CAAMJ,MAAAA,EAAOD,OAAAA,EAAQG,QAAAA,EAAS3C,UAAAA,IAChE,IAAK,QACD,OAAO1D,EAAAA,EAAAA,KAACwG,GAAqB,CAAML,MAAAA,EAAOE,QAAAA,EAAS3C,UAAAA,EAAW0C,KAAAA,IAClE,QACI,OAAO,KAEnB,CASA,SAASG,GAAsBrF,GAKsB,IAJjDiF,EAAKjF,EAALiF,MACAD,EAAMhF,EAANgF,OACAG,EAAOnF,EAAPmF,QACA3C,EAASxC,EAATwC,UAEMlE,GAAWiH,EAAAA,EAAAA,KAEjBhE,EAA0B9C,EAAAA,WAAqC+C,GAAAC,EAAAA,EAAAA,GAAAF,EAAA,GAAxDiE,EAAKhE,EAAA,GAAEiE,EAAQjE,EAAA,GAEtB,OACI1C,EAAAA,EAAAA,KAAC4G,EAAAA,GAAU,CACPhE,SAAO,EACPiE,qBAAmB,EACnBC,YAAa,CACTC,OACIhD,EAAAA,EAAAA,MAAAiD,EAAAA,SAAA,CAAAhD,SAAA,CACKT,EAAAA,EAAOC,cAAc0C,GAAS,KAC/BlG,EAAAA,EAAAA,KAAC0E,EAAAA,EAAI,CAACC,QAAQ,WAAWJ,MAAM,YAAWP,SACrCmC,QAKjBc,YAAa,CAACC,UAAU,QAADnC,OAAUmB,EAAM,KAAAnB,OAAIoB,IAC3CgB,MAAO,WACH,OAAO3H,GAAS4H,EAAAA,EAAAA,IAAe,OAAQ,CAACjB,MAAOA,KAC1CkB,MAAK,WACF,MAAe,WAAXnB,EACO1G,GAAS4H,EAAAA,EAAAA,IAAe,SAAU,CAACjB,MAAAA,KAEnC,IAEf,IACCkB,MAAK,WACF3D,IACAiD,OAASW,EACb,IAAE,OACK,SAACZ,GAEJ,MADAC,EAASD,GACHA,CACV,GACR,EACAa,OAAM,CACF,CACIzH,KAAM,QACNK,KAAM,OACNqH,OAAQ,CACJxD,UACID,EAAAA,EAAAA,MAAAiD,EAAAA,SAAA,CAAAhD,SAAA,CAAE,4BAC4BkC,EAAO,cAAY,KAC7ClG,EAAAA,EAAAA,KAAC0E,EAAAA,EAAI,CAACH,MAAM,YAAWP,SAAEmC,IAAa,UAIrDpB,QAAA0C,EAAAA,EAAAA,IACEC,EAAAA,EAAAA,IAAgB,CAAChB,MAExBL,QAASA,GAGrB,CAOA,SAASG,GAAqBzE,GAKS,IAJnCoE,EAAKpE,EAALoE,MACAE,EAAOtE,EAAPsE,QACAD,EAAIrE,EAAJqE,KACA1C,EAAS3B,EAAT2B,UAEMlE,GAAWiH,EAAAA,EAAAA,KACjBkB,EAA0BhI,EAAAA,WAAgBiI,GAAAjF,EAAAA,EAAAA,GAAAgF,EAAA,GAAnCjB,EAAKkB,EAAA,GAAEjB,EAAQiB,EAAA,GAEtB,OACI5H,EAAAA,EAAAA,KAAC4G,EAAAA,GAAU,CACPhE,SAAO,EACPjB,UAAWtC,GAAM,SACjByH,YAAa,CACTC,OACIhD,EAAAA,EAAAA,MAAAiD,EAAAA,SAAA,CAAAhD,SAAA,CAAE,eACe,KACbhE,EAAAA,EAAAA,KAAC0E,EAAAA,EAAI,CAACC,QAAQ,WAAWJ,MAAM,YAAWP,SACrCmC,QAKjBc,YAAa,CAACC,UAAU,gBAADnC,OAAkBoB,IACzCE,QAASA,EACTwB,cAAe,CAACzB,KAAMA,GACtBe,MAAO,SAACW,GACJ,IAAOlC,EAAakC,EAAKC,WAAWC,OAA7BpC,UACP,OAAOpG,GAAS4H,EAAAA,EAAAA,IAAe,QAAS,CAACjB,MAAAA,EAAOP,UAAAA,KAC3CyB,MAAK,WACF3D,IACAiD,OAASW,EACb,IAAE,OACK,SAACZ,GAEJ,MADAC,EAASD,GACHA,CACV,GACR,EACAuB,gBAAiB,SAACzF,GACd,IAAA0F,EAEI1F,EADAwF,OAAS5B,EAAI8B,EAAJ9B,KAAMR,EAASsC,EAATtC,UAEnB,OAAOuC,SAAS/B,IAASR,EAC7B,EACA2B,OAAM,CACF,CACIzH,KAAM,QACNK,KAAM,OACNiI,QAAS,OACTZ,OAAQ,CACJvG,YAAasC,EAAAA,EAAO+B,WAG5B,CACIxF,KAAM,UACNK,KAAM,YACNkI,QACI,6OACJD,QAAS,aAEb,CACItI,KAAM,QACNK,KAAM,kBACNmI,oBAAqB,CACjBC,KAAM,YACNC,SAAU,SAACC,GAAC,OAAKA,CAAC,GAEtBjB,OAAQ,CACJxD,UACIhE,EAAAA,EAAAA,KAAC0E,EAAAA,EAAI,CAACH,MAAM,UAAUI,QAAQ,SAAQX,SAAA,2DAKjDe,QAAA0C,EAAAA,EAAAA,IACEC,EAAAA,EAAAA,IAAgB,CAAChB,OAIpC,CCnLA,IAAMrH,IAAQC,EAAAA,EAAAA,GAAG,uBAEV,SAASoJ,GAAqBC,GACjC,IAAMrE,GAAUxD,EAAAA,EAAAA,IAAY8H,EAAAA,IACtBC,GAAoB/H,EAAAA,EAAAA,IAAYgI,EAAAA,IAChCtJ,GAAWC,EAAAA,EAAAA,MAEjB,OAAOE,EAAAA,aACH,SAACwG,GACO0C,GACAE,YAAW,WACPvJ,GACIwJ,EAAAA,EAAAA,IAAiB,CACbC,OAAQC,EAAAA,EAAYC,KACpBC,MAAM,YACNC,SAAU,CAAC/E,QAAAA,EAASgF,OAAQnD,KAGxC,GAAG,KACHwC,KAEAY,EAAAA,GAAUC,oBAAoB,CAACrD,MAAAA,EAAO7B,QAAAA,GAE9C,GACA,CAACA,EAASqE,EAAYE,EAAmBrJ,GAEjD,CAEO,SAASiK,GAAiB7I,GAc7B,IAbAuF,EAAKvF,EAALuF,MACAC,EAAIxF,EAAJwF,KACAsD,EAAc9I,EAAd8I,eACAC,EAAmB/I,EAAnB+I,oBACArD,EAAQ1F,EAAR0F,SACAsD,EAAUhJ,EAAVgJ,WASAnH,EAAqD9C,EAAAA,WAElD+C,GAAAC,EAAAA,EAAAA,GAAAF,EAAA,GAFIoH,EAAmBnH,EAAA,GAAEoH,EAAqBpH,EAAA,GAI3CqH,EAAQ,CACVC,MAAMhK,EAAAA,EAAAA,KAACiK,EAAAA,EAAI,CAACC,QAAQ,gBACpBzI,KAAM,QACNyE,OAAQ,WACJ4D,EAAsB,QAC1B,GAEEK,EAAO,CACTH,MAAMhK,EAAAA,EAAAA,KAACiK,EAAAA,EAAI,CAACC,QAAQ,gBACpBzI,KAAM,OACNyE,OAAQ,WACJ4D,EAAsB,OAC1B,GAEEM,EAAS,CACXJ,MAAMhK,EAAAA,EAAAA,KAACiK,EAAAA,EAAI,CAACC,QAAQ,cACpBzI,KAAM,SACNyE,OAAQ,WACJ4D,EAAsB,SAC1B,GAGEO,EAA4C,CAAC,CAACN,EAAOI,GAAO,CAACC,IAE7DE,GACFtK,EAAAA,EAAAA,KAACiE,EAAAA,EAAM,CAACC,KAAK,OAAOC,QAAS,kBAAMyF,EAAWzD,EAAM,EAACnC,UACjDhE,EAAAA,EAAAA,KAACiK,EAAAA,EAAI,CAACC,QAAQ,UAItB,OACInG,EAAAA,EAAAA,MAACpE,EAAAA,SAAc,CAAAqE,SAAA,MACcsD,IAAxBuC,IACG7J,EAAAA,EAAAA,KAACiG,GAAgB,CACbE,MAAOA,EACPC,KAAMA,EACNF,OAAQ2D,EACRxD,QAAS,kBAAMyD,OAAsBxC,EAAU,EAC/ChB,SAAUA,IAGjBoD,GACG3F,EAAAA,EAAAA,MAAA,QAAMpC,UAAWtC,GAAM,sBAAuBsK,GAAqB3F,SAAA,EAC/DhE,EAAAA,EAAAA,KAAA,QAAM2B,UAAWtC,GAAM,QAAQ2E,SAAEsG,KAEjCtK,EAAAA,EAAAA,KAAA,QAAM2B,UAAWtC,GAAM,QAAQ2E,UAC3BhE,EAAAA,EAAAA,KAACiE,EAAAA,EAAM,CACH8C,MAAM,QACN5C,QAAS,WACL4F,EAAM7D,QACV,EAAElC,UAEFhE,EAAAA,EAAAA,KAACiK,EAAAA,EAAI,CAACC,QAAQ,qBAItBlK,EAAAA,EAAAA,KAAA,QAAM2B,UAAWtC,GAAM,QAAQ2E,UAC3BhE,EAAAA,EAAAA,KAACiE,EAAAA,EAAM,CACH8C,MAAM,OACN5C,QAAS,WACLgG,EAAKjE,QACT,EAAElC,UAEFhE,EAAAA,EAAAA,KAACiK,EAAAA,EAAI,CAACC,QAAQ,qBAItBlK,EAAAA,EAAAA,KAACiE,EAAAA,EAAM,CACH8C,MAAM,SACN5C,QAAS,WACLiG,EAAOlE,QACX,EAAElC,UAEFhE,EAAAA,EAAAA,KAACiK,EAAAA,EAAI,CAACC,QAAQ,oBAItBnG,EAAAA,EAAAA,MAACpE,EAAAA,SAAc,CAAAqE,SAAA,CACVsG,GACDtK,EAAAA,EAAAA,KAACuK,EAAAA,EAAY,CACTC,UACIxK,EAAAA,EAAAA,KAACiE,EAAAA,EAAM,CAACC,KAAK,OAAMF,UACfhE,EAAAA,EAAAA,KAACiK,EAAAA,EAAI,CAACC,QAAQ,iBAGtB5I,MAAO+I,SAM/B,CCnHA,IAAMhL,IAAQC,EAAAA,EAAAA,GAAG,wBAkOjB,SAASmL,GAAcC,GAMnB,IAADC,EALCrH,EAAMoH,EAANpH,OACAsH,EAAaF,EAAbE,cAKMpL,GAAWC,EAAAA,EAAAA,MACXoL,GAAY/J,EAAAA,EAAAA,IAAYgK,EAAAA,IAC9B,OACI9K,EAAAA,EAAAA,KAAC+K,EAAAA,GAAYC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,CACTC,gBAAc,EACdL,cAAeA,EACftH,OAAQA,EACRyD,MAAgC,QAA3B4D,EAAEtH,EAAAA,GAAkBC,UAAO,IAAAqH,EAAAA,EAAIpH,EAAAA,EAAOC,cAAcF,GACzD4H,UAAQ,GACJL,EAAUvH,IAAO,IACrB6H,WAAY,SAACC,EAAKC,EAAWC,GACzB9L,ELvQT,SACH8D,EACAiI,EACAD,GAEA,OAAO,SAAC9L,EAAUuI,GACd,IAAMyD,GAAgBC,EAAAA,EAAAA,IAA0B1D,KAC1C8C,GAAYa,EAAAA,EAAAA,IAAqBF,EAAe,CAAClI,OAAAA,EAAQiI,MAAAA,GAAQD,GAEvE9L,EAAS,CAACM,KAAMC,EAAAA,GAAmBF,KAAM,CAACgL,UAAAA,IAC9C,CACJ,CK4PyBc,CAAoBP,EAAKC,EAAWC,GACjD,IAGZ,CAEA,SAASM,GAAYC,GAA6B,IAA3BhL,EAAKgL,EAALhL,MACnB,IAAKA,EACD,OAAOb,EAAAA,EAAAA,KAAA,QAAM2B,UAAWtC,GAAM,gBAAgB2E,SAAET,EAAAA,EAAO+B,WAG3D,IAAMwG,EAAevI,EAAAA,EAAOwI,SAASlL,GAC/BmL,EAAYF,EAAKG,YAAY,KACnC,OACIlI,EAAAA,EAAAA,MAACpE,EAAAA,SAAc,CAAAqE,SAAA,EACXhE,EAAAA,EAAAA,KAAA,QAAAgE,SAAO8H,EAAKI,UAAU,EAAGF,MACzBhM,EAAAA,EAAAA,KAAA,OAAAgE,SAAM8H,EAAKI,UAAUF,EAAY,OAG7C,CAEA,SAASG,KACL,IAAM7K,GAAQR,EAAAA,EAAAA,IAAYsL,EAAAA,IACpB9H,GAAUxD,EAAAA,EAAAA,IAAY8H,EAAAA,IAE5ByD,GAAoCC,EAAAA,EAAAA,MAA7B3D,EAAU0D,EAAV1D,WAAY4D,EAAaF,EAAbE,cAGbzJ,EA9QV,SAA4BwB,EAAiBsF,GACzC,IAAM4C,GAAiB1L,EAAAA,EAAAA,IAAY2L,EAAAA,IA4NnC,OA1NyC9M,EAAAA,SAAc,WACnD,IAAM+M,EAAgB,CAClBtG,KAAM,CACFjG,KAAM,OACNwM,QAAQ3M,EAAAA,EAAAA,KAACyK,GAAc,CAACnH,OAAO,SAC/BsJ,OAAM,SAAAhM,GAAS,IAAPiM,EAAGjM,EAAHiM,IACJ,OAAQA,EAAIzG,MAGRpG,EAAAA,EAAAA,KAAC8M,EAAAA,EAAa,CACVnL,UAAWtC,GAAM,QACjBiF,QAASA,EACT8B,KAAM,CAACA,KAAMyG,EAAIzG,KAAM2G,KAAM,cALjCxJ,EAAAA,EAAO+B,QAQf,EACA0H,MAAO,KAEXC,eAAgB,CACZ9M,KAAM,iBACNwM,QAAQ3M,EAAAA,EAAAA,KAACyK,GAAc,CAACnH,OAAO,mBAC/BsJ,OAAM,SAAA1L,GAAS,IAAP2L,EAAG3L,EAAH2L,IACJ,OACI7M,EAAAA,EAAAA,KAAA,QAAM2B,UAAWtC,GAAM,gBAAgB2E,cACXsD,IAAvBuF,EAAII,eACC1J,EAAAA,EAAO+B,SACP/B,EAAAA,EAAO2J,OAAOL,EAAII,iBAGpC,EACAE,MAAO,QACPH,MAAO,KAEXI,UAAW,CACPjN,KAAM,QACNwM,QAAQ3M,EAAAA,EAAAA,KAACyK,GAAc,CAACnH,OAAO,cAC/BsJ,OAAM,SAAA7K,GAAS,IAAP8K,EAAG9K,EAAH8K,IACJ,OACI7M,EAAAA,EAAAA,KAAA,QAAM2B,UAAWtC,GAAM,gBAAgB2E,cAChBsD,IAAlBuF,EAAIO,UACC7J,EAAAA,EAAO+B,SACP/B,EAAAA,EAAO2J,OAAOL,EAAIO,YAGpC,EACAD,MAAO,QACPH,MAAO,KAEXK,aAAc,CACVlN,KAAM,SACNwM,QAAQ3M,EAAAA,EAAAA,KAACyK,GAAc,CAACnH,OAAO,iBAC/BsJ,OAAM,SAAAxK,GAAS,IAAPyK,EAAGzK,EAAHyK,IACJ,OACI7M,EAAAA,EAAAA,KAAA,QAAM2B,UAAWtC,GAAM,gBAAgB2E,cACbsD,IAArBuF,EAAIQ,aACC9J,EAAAA,EAAO+B,SACP/B,EAAAA,EAAO+J,MAAMT,EAAIQ,eAGnC,EACAF,MAAO,QACPH,MAAO,KAEX7K,OAAQ,CACJhC,KAAM,SACNwM,QAAQ3M,EAAAA,EAAAA,KAACyK,GAAc,CAACnH,OAAO,WAC/BsJ,OAAM,SAAAW,GAAS,IAAPV,EAAGU,EAAHV,IACJ,OACI9I,EAAAA,EAAAA,MAACyJ,EAAAA,EAAO,CACJ7L,UAAWtC,GAAM,SAAUA,GAAM,iBACjCoO,QAASlK,EAAAA,EAAOC,cAAcqJ,EAAIa,eAAe1J,SAAA,EAEjDhE,EAAAA,EAAAA,KAAC6F,EAAW,CAACrD,MAAOqK,EAAI1K,SACvB0K,EAAIa,gBACD3J,EAAAA,EAAAA,MAACW,EAAAA,EAAI,CAACH,MAAM,YAAWP,SAAA,CAAC,KAEpBhE,EAAAA,EAAAA,KAACiK,EAAAA,EAAI,CAACC,QAAS,8BAKnC,EACA8C,MAAO,KAEXW,cAAe,CACXxN,KAAM,gBACNwM,QAAQ3M,EAAAA,EAAAA,KAACyK,GAAc,CAACnH,OAAO,gBAAgBsH,eAAa,IAC5DgC,OAAM,SAAAgB,GAAS,IAAPf,EAAGe,EAAHf,IACJ,OAAO7M,EAAAA,EAAAA,KAAC4L,GAAY,CAAC/K,MAAOgM,EAAIc,eACpC,EACAX,MAAO,KAEXa,0BAA2B,CACvB1N,KAAM,4BACNwM,QAAQ3M,EAAAA,EAAAA,KAACyK,GAAc,CAACnH,OAAO,8BAC/BsJ,OAAM,SAAAkB,GAAS,IAAPjB,EAAGiB,EAAHjB,IACJ,OAAO7M,EAAAA,EAAAA,KAAC4L,GAAY,CAAC/K,MAAOgM,EAAIgB,2BACpC,EACAb,MAAO,KAEXe,MAAO,CACH5N,KAAM,QACNwM,QAAQ3M,EAAAA,EAAAA,KAACyK,GAAc,CAACnH,OAAO,UAC/BsJ,OAAM,SAAAoB,GAAS,IAAPnB,EAAGmB,EAAHnB,IACJ,OACI7M,EAAAA,EAAAA,KAAA,QAAM2B,UAAWtC,GAAM,gBAAgB2E,UAAEhE,EAAAA,EAAAA,KAAC8F,EAAAA,EAAK,CAACrE,KAAMoL,EAAIkB,SAElE,EACAf,MAAO,KAEXiB,mCAAoC,CAChC9N,KAAM,qCACNwM,QAAQ3M,EAAAA,EAAAA,KAACyK,GAAc,CAACnH,OAAO,uCAC/BsJ,OAAM,SAAAsB,GAAS,IAAPrB,EAAGqB,EAAHrB,IACJ,OAAO7M,EAAAA,EAAAA,KAAC4L,GAAY,CAAC/K,MAAOgM,EAAIoB,oCACpC,EACAjB,MAAO,KAEXmB,yBAA0B,CACtBhO,KAAM,2BACNwM,QAAQ3M,EAAAA,EAAAA,KAACyK,GAAc,CAACnH,OAAO,2BAA2BsH,eAAa,IACvEgC,OAAM,SAAAwB,GAAS,IAAPvB,EAAGuB,EAAHvB,IACJ,OAAO7M,EAAAA,EAAAA,KAAC4L,GAAY,CAAC/K,MAAOgM,EAAIsB,0BACpC,EACAnB,MAAO,KAEXqB,wBAAyB,CACrBlO,KAAM,0BACNwM,QAAQ3M,EAAAA,EAAAA,KAACyK,GAAc,CAACnH,OAAO,0BAA0BsH,eAAa,IACtEgC,OAAM,SAAA0B,GAAS,IAAPzB,EAAGyB,EAAHzB,IACJ,OAAO7M,EAAAA,EAAAA,KAAC4L,GAAY,CAAC/K,MAAOgM,EAAIwB,yBACpC,EACArB,MAAO,KAEXlL,QAAS,CACL3B,KAAM,UACNwM,QAAQ3M,EAAAA,EAAAA,KAACyK,GAAc,CAACnH,OAAO,YAC/BsJ,OAAM,SAAA2B,GAAS,IAAP1B,EAAG0B,EAAH1B,IACJ,OACI7M,EAAAA,EAAAA,KAAA,OAAK2B,UAAWtC,GAAM,eAAgBA,GAAM,YAAY2E,SAClD6I,EAAI/K,SAGF9B,EAAAA,EAAAA,KAACwO,EAAAA,EAAQ,CAAC7M,UAAWtC,GAAM,cAAeoP,SAAU5B,EAAI/K,UAFxDyB,EAAAA,EAAO+B,UAMvB,EACA0H,MAAO,KAEXxK,MAAO,CACHrC,KAAM,QACNwM,QAAQ3M,EAAAA,EAAAA,KAACyK,GAAc,CAACnH,OAAO,UAC/BsJ,OAAM,SAAA8B,GAAS,IAAP7B,EAAG6B,EAAH7B,IACJ,OACI7M,EAAAA,EAAAA,KAAA,QAAM2B,UAAWtC,GAAM,gBAAgB2E,UACnChE,EAAAA,EAAAA,KAAC6F,EAAW,CAACrD,MAAOqK,EAAIrK,SAGpC,EACAwK,MAAO,MAIT2B,EAAMnC,EAAejL,KAAI,SAAC4B,GAAC,OAAKuJ,EAAcvJ,EAAE,IACtD,MAAM,CACF,CACIhD,KAAM,QACNwM,QAAQ3M,EAAAA,EAAAA,KAACyK,GAAc,CAACnH,OAAO,UAC/BsJ,OAAM,SAAAgC,GAAS,IAAP/B,EAAG+B,EAAH/B,IACJ,OACI9I,EAAAA,EAAAA,MAAA,OAAAC,SAAA,EACIhE,EAAAA,EAAAA,KAAC4E,EAAAA,EAAI,CACDE,IAAG,IAAAC,OAAMT,EAAO,KAAAS,OAAIC,EAAAA,GAAKmE,KAAI,KAAApE,OAAI8H,EAAI1G,OACrCtB,MAAM,UACNK,QAAM,EAAAlB,SAEL6I,EAAI1G,SAETnG,EAAAA,EAAAA,KAACmF,EAAAA,EAAe,CACZ1D,KAAMoL,EAAI1G,MACVjC,KAAK,QACLkB,mBAAiB,EACjBC,eAAa,KAEjBrF,EAAAA,EAAAA,KAAA,OAAAgE,UACIhE,EAAAA,EAAAA,KAACoE,EAAW,CACRC,GAAIwI,EAAIgC,gBACRvK,QAASA,EACTC,MAAM,YACNC,WAAS,QAK7B,IACHO,QAAA0C,EAAAA,EAAAA,GACEkH,GAAG,CACN,CACIxO,KAAM,UACNwM,OAAQ,GACRC,OAAM,SAAAkC,GAAS,IAAPjC,EAAGiC,EAAHjC,IACJ,OACI7M,EAAAA,EAAAA,KAAA,QAAM2B,UAAWtC,GAAM,gBAAgB2E,UACnChE,EAAAA,EAAAA,KAACyJ,GAAiB,CACdtD,MAAO0G,EAAI1G,MACXC,KAAMyG,EAAIzG,KACVwD,WAAYA,KAI5B,EACAuD,MAAO,SACPH,MAAO,KAGnB,GAAG,CAAC1I,EAASkI,EAAgB5C,GAGjC,CAgDoBmF,CAAmBzK,EAFhBoE,GAAqBC,IAIxC,OACI5E,EAAAA,EAAAA,MAACpE,EAAAA,SAAc,CAAAqE,SAAA,EACXhE,EAAAA,EAAAA,KAACgP,EAAAA,GAAW,CACRrN,UAAWtC,KACXgK,SAAU4F,EAAAA,GACVC,YAAU,EACVpM,QAASA,EACTjD,KAAMyB,IAETiL,IAGb,CAEA,SAAe5M,EAAAA,KAAWwM,IC3TnB,SAASgD,KACZ,IAAM3P,GAAWC,EAAAA,EAAAA,MACX2P,EAASzP,EAAAA,aAAkB,WAC7BH,GAAS6P,EAAAA,EAAAA,MACb,GAAG,CAAC7P,IAIJ,OAFA8P,EAAAA,EAAAA,IAAWF,IAEJpP,EAAAA,EAAAA,KAACuP,EAAAA,GAAiB,CAACC,SAASxP,EAAAA,EAAAA,KAACT,EAAmB,IAAKkO,SAASzN,EAAAA,EAAAA,KAACmM,GAAiB,KAC3F,C,mGCVMsD,GAAe,IAAIC,GAAAA,EAElB,SAASC,GAAexJ,GAC3B,OAAO,SAAC3G,EAAUuI,GACdvI,EAAS,CAACM,KAAM8P,EAAAA,GAAYC,QAAShQ,KAAM,CAACiQ,cAAe3J,KAC3D,IAAM3D,EAAQuF,IACRzD,GAAUsE,EAAAA,EAAAA,IAAWpG,GACrBuN,GAAUC,EAAAA,EAAAA,IAAYxN,GAC5B,OAAOyN,EAAAA,GAAAA,GACH,iBACA3L,EACA,CAAC6B,MAAAA,GACD,CACI4J,QAAAA,EACAG,YAAaT,GAAaU,gCAC1BC,gBAAgB,IAGnB/I,MAAK,SAACxH,GACHL,EAAS,CAACM,KAAM8P,EAAAA,GAAYS,QAASxQ,KAAM,CAACA,KAAMA,EAAKyQ,SAC3D,IAAE,OACK,SAAC5J,IACC6J,EAAAA,GAAAA,GAAY7J,IACblH,EAAS,CAACM,KAAM8P,EAAAA,GAAYY,QAAS3Q,KAAM,CAAC6G,MAAAA,IAEpD,GACR,CACJ,CCpCO,IAAM+J,GAAoB,SAACjO,GAAgB,OAAKA,EAAMkO,KAAKpH,OAAOzJ,IAAK,EACjE8Q,GAAqB,SAACnO,GAAgB,OAAKA,EAAMkO,KAAKpH,OAAO5C,KAAM,EAEnEkK,GAA8B,SAACpO,GACxC,IAAAqO,EAA0BrO,EAAMkO,KAAKpH,OAA9BwH,EAAMD,EAANC,OAAQC,EAAOF,EAAPE,QACf,OAAQD,GAAUC,CACtB,EAEaC,GAA0B,SAACxO,GAAgB,IAAAyO,EAAA,OAA2B,QAA3BA,EAAKzO,EAAMkO,KAAKpH,OAAOzJ,YAAI,IAAAoR,OAAA,EAAtBA,EAAwBvK,KAAM,E,2DCJpF,SAASwK,KACZ,IAAM/K,GAAQrF,EAAAA,EAAAA,IAAYqQ,EAAAA,IAC1B,OAAOnR,EAAAA,EAAAA,KAACoR,GAAAA,GAAgB,CAACC,KAAI,+CAAAtM,OAAiDoB,IAClF,C,+FC6HMmL,GAA8D,CAChEC,OAAQ,CACJC,aAAY,SAAC3Q,GACT,MAAO,CAACA,MAAiB,OAAVA,OAAiByG,EAAazG,EACjD,EACA4Q,eAAc,SAAC5Q,EAAY6Q,GACvB,OAAO7Q,aAAK,EAALA,EAAOA,KAClB,GAEJ8Q,KAAM,CACFH,aAAY,SAAC3Q,GACT,MAAO,CAACA,WAAiByG,IAAVzG,EAAsB+Q,KAAKC,UAAUhR,EAAO,KAAM,QAAKyG,EAC1E,EACAmK,eAAc,SAAC5Q,EAAYiR,GACvB,IACI,OAAOF,KAAKG,MAAMlR,EAAMA,MAC5B,CAAE,MAAAmR,GACE,OAAOF,CACX,CACJ,GAEJG,MAAO,CACHT,aAAY,SAAC3Q,GACT,OAAO+Q,KAAKC,UAAUhR,EAC1B,EACA4Q,eAAc,SAAC5Q,EAAY6Q,GACvB,YAAiBpK,IAAVzG,EAAsB+Q,KAAKG,MAAMlR,QAASyG,CACrD,GAEJ4K,oBAAqB,CACjBV,aAAY,SAAC3Q,GACT,OAAOA,EAAQ,CAACA,GAAS,EAC7B,EACA4Q,eAAc,SAAC5Q,EAAsB6Q,GACjC,OAAO7Q,aAAK,EAALA,EAAQ,EACnB,ICvKD,IAAMsR,GAAqB,SAAC3P,GAAgB,OAAKA,EAAMkO,KAAKpF,QAAQzL,IAAK,EACnEuS,GAA0B,SAAC5P,GAAgB,OAAKA,EAAMkO,KAAKpF,QAAQ+G,SAAU,EAC7EC,GAAsB,SAAC9P,GAAgB,OAAKA,EAAMkO,KAAKpF,QAAQ5E,KAAM,E,YCO5E+I,GAAe,IAAIC,GAAAA,EAElB,SAAS6C,GAAsBpM,GAClC,OAAO,SAAC3G,EAAUuI,GACd,IAAMvF,EAAQuF,IACRzD,GAAUsE,EAAAA,EAAAA,IAAWpG,GACrBuN,GAAUC,EAAAA,EAAAA,IAAYxN,GAE5B,OAAOyN,EAAAA,GAAAA,GACH,cACA3L,EACA,CAAC6B,MAAAA,GACD,CACI4J,QAAAA,EACAG,YAAaT,GAAaU,gCAC1BC,gBAAgB,IAGnB/I,MAAK,SAACxH,GACHL,EAAS,CAACM,KAAM0S,EAAAA,GAAanC,QAASxQ,KAAM,CAACA,KAAMA,EAAKyQ,OAAQ+B,UAAWlM,IAC/E,IAAE,OACK,SAACO,IACC6J,EAAAA,GAAAA,GAAY7J,IACblH,EAAS,CAACM,KAAM0S,EAAAA,GAAahC,QAAS3Q,KAAM,CAAC6G,MAAAA,IAErD,GACR,CACJ,C,gBCxBM+I,GAAe,IAAIC,GAAAA,EAElB,SAAS+C,GACZtM,EACAuM,GAEA,OAAO,SAAClT,EAAUuI,GACd,IAAMvF,EAAQuF,IACRzD,GAAUsE,EAAAA,EAAAA,IAAWpG,GACrBuN,GAAUC,EAAAA,EAAAA,IAAYxN,GAG5B,OAFAhD,EAAS,CAACM,KAAM6S,EAAAA,GAAa9C,QAAShQ,KAAM,CAACwS,UAAWlM,MAEjDyM,EAAAA,GAAAA,KACH3C,EAAAA,GAAAA,GACI,mBACA3L,EACA,CAAC6B,MAAAA,GACD,CACI4J,QAAAA,EACAG,YAAaT,GAAaU,gCAC1BC,gBAAgB,IAGxB,CACIyC,YAAa,yBAA2B1M,EACxC2M,kBAAkB,EAClB1C,gBAAiBsC,IAGpBrL,MAAK,SAACxH,GACHL,EAAS,CAACM,KAAM6S,EAAAA,GAAatC,QAASxQ,KAAM,CAACA,KAAMA,EAAKyQ,OAAQ+B,UAAWlM,IAC/E,IAAE,OACK,SAACO,IACC6J,EAAAA,GAAAA,GAAY7J,IACblH,EAAS,CAACM,KAAM6S,EAAAA,GAAanC,QAAS3Q,KAAM,CAAC6G,MAAAA,IAErD,GACR,CACJ,CClDO,IAAMqM,GAAuB,SAACvQ,GAAgB,OAAKA,EAAMkO,KAAKsC,QAAQlC,MAAO,EACvEmC,GAAqB,SAACzQ,GAAgB,OAAKA,EAAMkO,KAAKsC,QAAQnT,IAAK,EACnEqT,GAA0B,SAAC1Q,GAAgB,OAAKA,EAAMkO,KAAKsC,QAAQX,SAAU,EAC7Ec,GAAsB,SAAC3Q,GAAgB,OAAKA,EAAMkO,KAAKsC,QAAQtM,KAAM,ECiC5ErH,IAAQC,EAAAA,EAAAA,GAAG,0BAEjB,SAAS8T,KAGkD,IAADxS,EAAAyS,UAAAC,OAAA,QAAAhM,IAAA+L,UAAA,GAAAA,UAAA,GAAJ,CAAC,EAFnDX,EAAgB9R,EAAhB8R,iBACAa,EAAQ3S,EAAR2S,SAEM/T,GAAWC,EAAAA,EAAAA,MACX0G,GAAQrF,EAAAA,EAAAA,IAAYqQ,EAAAA,IAE1BxR,EAAAA,SAAc,WACNwG,IAAUoN,GACV/T,EAASiT,GAAsBtM,EAAOuM,GAE9C,GAAG,CAACvM,EAAOoN,EAAUb,EAAkBlT,IAEvC,IAAMgU,GAAc1S,EAAAA,EAAAA,IAAYqR,IAC1BE,GAAYvR,EAAAA,EAAAA,IAAYsR,IACxB1L,GAAQ5F,EAAAA,EAAAA,IAAYwR,IACpBmB,GAAkB3S,EAAAA,EAAAA,IAAY4S,GAAAA,GAEpC,MAAO,CAACvN,MAAAA,EAAOqN,YAAAA,EAAanB,UAAAA,EAAW3L,MAAAA,EAAO+M,gBAAAA,EAClD,CAEO,SAASE,KACZ,IAAMnU,GAAWC,EAAAA,EAAAA,MACjBmU,EAAqDR,GAAe,CAACG,UAAU,IAAxE7M,EAAKkN,EAALlN,MAAOP,EAAKyN,EAALzN,MAAOqN,EAAWI,EAAXJ,YAAaC,EAAeG,EAAfH,gBAE5BrE,EAASzP,EAAAA,aAAkB,WACzBwG,GACA3G,EAAS+S,GAAsBpM,GAEvC,GAAG,CAACA,EAAO3G,IAIX,OAFA8P,EAAAA,EAAAA,IAAWF,IAGPrL,EAAAA,EAAAA,MAACpE,EAAAA,SAAc,CAAAqE,SAAA,CACV0C,IAAS1G,EAAAA,EAAAA,KAAC6T,GAAAA,EAAK,CAACC,cAAY,EAACpN,MAAOA,IACnC8M,GACEzP,EAAAA,EAAAA,MAACpE,EAAAA,SAAc,CAAAqE,SAAA,EACXhE,EAAAA,EAAAA,KAAA,OAAK2B,UAAWtC,GAAM,QAAQ2E,UAC1BhE,EAAAA,EAAAA,KAAC+T,GAAqB,CAACR,UAAQ,OAEnCvT,EAAAA,EAAAA,KAACgU,GAAW,CAAC7N,MAAOA,EAAOsN,gBAAiBA,OALpC,OAU5B,CAEA,SAASO,GAAW9S,GAAgF,IAA9EiF,EAAKjF,EAALiF,MAAOsN,EAAevS,EAAfuS,gBACnB5T,GAAOiB,EAAAA,EAAAA,IAAYmS,IACnBvM,GAAQ5F,EAAAA,EAAAA,IAAYqS,IACpBd,GAAYvR,EAAAA,EAAAA,IAAYoS,IACxBpC,GAAShQ,EAAAA,EAAAA,IAAYiS,IAE3B,OAAOV,IAAclM,EAAQ,MACzBpC,EAAAA,EAAAA,MAAA,OAAKpC,UAAWtC,KAAQ2E,SAAA,CACnB0C,IAAS1G,EAAAA,EAAAA,KAAC6T,GAAAA,EAAK,CAAClS,UAAWtC,GAAM,qBAAsBqH,MAAOA,EAAOoN,cAAY,IACjFhD,IACG9Q,EAAAA,EAAAA,KAACiU,GAAAA,EAAI,CACDtS,UAAWtC,GAAM,eACjBwB,MAAOhB,EACPwJ,SAAUoK,EACVS,SAAO,MAK3B,CAEO,SAASH,GAAqBhS,GAQjC,IAPAoS,EAAOpS,EAAPoS,QACAxS,EAASI,EAATJ,UACA4R,EAAQxR,EAARwR,SAMA9Q,EAA8B9C,EAAAA,UAAe,GAAM+C,GAAAC,EAAAA,EAAAA,GAAAF,EAAA,GAA5CG,EAAOF,EAAA,GAAEG,EAAUH,EAAA,GAE1B0R,EAAyDhB,GAAe,CACpEV,kBAAkB,EAClBa,SAAAA,IAFGC,EAAWY,EAAXZ,YAAanB,EAAS+B,EAAT/B,UAAWlM,EAAKiO,EAALjO,MAAOsN,EAAeW,EAAfX,gBAKtC,OACI1P,EAAAA,EAAAA,MAACpE,EAAAA,SAAc,CAAAqE,SAAA,CACTpB,GAAY4Q,GACVxT,EAAAA,EAAAA,KAACqU,GAAqB,CAElBxU,KAAM2T,EACNrN,MAAOA,EACPsN,gBAAiBA,EACjBa,UAAWjC,IAAclM,EACzBE,QAAS,kBAAMxD,GAAW,EAAM,GAL3BwP,GAFe,MAU5BtO,EAAAA,EAAAA,MAACE,GAAAA,EAAM,CACHsQ,KAAK,IACLrQ,KAAMiQ,EAAU,cAAW7M,EAC3B3F,UAAWA,EACXoF,MAAO,eACP5C,QAAS,kBAAMtB,GAAYD,EAAQ,EACnC4R,UAAWhB,EAAYxP,SAAA,EAEvBhE,EAAAA,EAAAA,KAACiK,EAAAA,EAAI,CAACC,QAAS,YACbiK,GAAW,oBAI7B,CAEA,SAASE,GAAqBjS,GAY1B,IAXA+D,EAAK/D,EAAL+D,MACAtG,EAAIuC,EAAJvC,KACAyU,EAASlS,EAATkS,UACAb,EAAerR,EAAfqR,gBACApN,EAAOjE,EAAPiE,QAQM7G,GAAWiH,EAAAA,EAAAA,KACjBkB,EAA0BhI,EAAAA,WAAqCiI,GAAAjF,EAAAA,EAAAA,GAAAgF,EAAA,GAAxDjB,EAAKkB,EAAA,GAAEjB,EAAQiB,EAAA,GAEtB6M,EAAiD9U,EAAAA,SAAc,WAC3D,OLwDD,SAKLE,EAA2ByL,GACzB,IAAMzD,EAAqC,CAAC,EACtC6M,EAGF,CAAC,EACL,MAAO,CACHC,gBAAiBD,EACjB7M,cAAeA,EACfN,OAAQ1H,aAAI,EAAJA,EAAM0B,KAAI,SAACqT,EAAOC,GACtB,IAAMC,EAAU,SAAA/P,OAAY8P,GACtBE,EAAuBlN,EAAsBiN,GAAc,CAAC,EAC5DE,EAAgDJ,EAAMtJ,QAAQ/J,KAAI,SAACC,GACrE,OAhEhB,SACIA,EACAyT,EACAC,EACA5J,GAEA,IAAA6J,EA1JG,SACH3T,EAAuBZ,GAEyC,IAADwU,EAD9D3B,EAAe7S,EAAf6S,gBAAiBa,EAAS1T,EAAT0T,UAEZe,EAAS,CACXlV,KAAMqB,EAAKrB,KACXiI,QAAS7E,EAAAA,EAAOC,cAAchC,EAAKrB,MACnCkI,QAAS7G,EAAK8T,YACdC,UAqFG,CACH/D,aAAY,SAAC3Q,GACT,OAAOA,CACX,EACA4Q,eAAc,SAAC5Q,EAAY6Q,GACvB,OAAO7Q,CACX,IAxFE2G,EAAS,CACXgN,UAAWF,EACXrT,YACIuU,MAJgBhU,EAAjBgU,cAKOC,OAAOjU,EAAKgU,oBACZlO,GAGd,OAAQ9F,EAAK1B,MACT,IAAK,SAAW,IAAD4V,EACX,OAAiB,QAAbA,EAAClU,EAAKS,eAAO,IAAAyT,GAAZA,EAAcpC,QAGftI,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACOqK,GAAM,IACTvV,KAAM,SACN0H,QAAMwD,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACCxD,GAAM,IACTwF,MAAO,MACP1B,QAAS9J,EAAKS,QAAQV,KAAI,SAACV,GACvB,MAAO,CAACA,MAAAA,EAAO4M,QAAS5M,EAC5B,IACA8U,UAAU,IAEdJ,UAAWjE,GAAUY,uBAbzBlH,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAWqK,GAAM,IAAEvV,KAAM,OAAQ0H,OAAAA,IAiBzC,IAAK,OACD,OAAAwD,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACOqK,GAAM,IACTvV,KAAM,UACN0H,OAAAA,EACAoO,aAAgC,QAApBR,EAAE5T,EAAKqU,qBAAa,IAAAT,EAAAA,EAAI5T,EAAKgU,gBAEjD,IAAK,QACL,IAAK,SACL,IAAK,aACD,IAAMM,EAA4B,eAAdtU,EAAK1B,KAAwB,aAAUwH,EACrDyO,EACc,UAAhBD,EACMvS,EAAAA,EAAO+J,MAAM9L,EAAKgU,eAClBjS,EAAAA,EAAO2J,OAAO1L,EAAKgU,eAC7B,OAAAxK,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACOqK,GAAM,IACTvV,KAAM,SACN0H,QAAMwD,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACCxD,GAAM,IACTwO,iBAAiB,EACjB/U,iBAAoCqG,IAAvB9F,EAAKgU,cAA8BO,OAAmBzO,EACnE2O,IAAKzU,EAAK0U,UACVC,IAAK3U,EAAK4U,UACV7S,OAAQuS,EACRO,aAAa,EACbC,UAAU,IAEdf,UAAWjE,GAAUC,SAG7B,IAAK,OACD,OAAAvG,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACOqK,GAAM,IACTvV,KAAM,OACNyW,WAAW,EACX/O,QAAMwD,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACCxD,GAAM,IACTiM,gBAAAA,EACA+C,UAAW,IACXC,YAAajV,EAAKgU,gBAEtBD,UAAWjE,GAAUK,OAE7B,IAAK,OACD,OAAA3G,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAWqK,GAAM,IAAEvV,KAAM,OAAQ0H,OAAAA,IACrC,IAAK,OACD,OAAAwD,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAWqK,GAAM,IAAEvV,KAAM,OAAQ0H,QAAMwD,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAMxD,GAAM,IAAEkP,YAAY,MACrE,QACI,OAAA1L,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAWqK,GAAM,IAAEvV,KAAM,UAErC,CAgE8C6W,CAAqCnV,EAAM8J,GAA9EsK,EAAYT,EAAZS,aAAcL,EAASJ,EAATI,UAAc5G,GAAGiI,EAAAA,GAAAA,GAAAzB,EAAA0B,IAC/B/W,EAAQ6O,EAAR7O,KAKP,OAHAmV,EAAiBzT,EAAKrB,MAAQyV,QAAAA,EAAgBL,EAAU/D,aAAahQ,EAAKqU,eAC1EX,EAAoB1T,EAAKrB,MAAQ,CAACL,KAAMA,EAAOyV,UAAAA,GAExC5G,CACX,CAmDuBmI,CAAgBtV,EAAMuT,EAAoBL,EAAYpJ,EACjE,IAEA,MAAO,CACHnL,KAAM2U,EACN/N,MAAO6N,EAAM7N,MACbjH,KAAM,eACNyH,OAAQyN,EAEhB,IAER,CKrFe+B,CAAsClX,QAAAA,EAAQ,GAAI,CACrDyU,UAAAA,EACAb,gBAAAA,GAER,GAAG,CAAC5T,EAAMyU,EAAWb,IALdlM,EAAMkN,EAANlN,OAAQM,EAAa4M,EAAb5M,cAAe8M,EAAeF,EAAfE,gBAO9B,OACI5Q,EAAAA,EAAAA,MAACpE,EAAAA,SAAc,CAAAqE,SAAA,CACV0C,IAAS1G,EAAAA,EAAAA,KAAC6T,GAAAA,EAAK,CAACC,cAAY,EAACpN,MAAOA,KACrC1G,EAAAA,EAAAA,KAAC4G,EAAAA,GAAU,CACPjF,UAAWtC,GAAM,UACjBkV,KAAK,IACL3R,SAAO,EACPyD,QAASA,EACTc,MAAO,SAACW,GACJ,IAAekP,EAAclP,EAAKC,WAA3BC,OACDA,EAASiP,KACXD,GACA,SAACE,EAAKC,GACF,OAAAnM,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAWkM,GAAQC,EACvB,GACA,CAAC,GAGEC,EAA6BpP,EAA7BoP,0BACDC,EAAWJ,KACbpP,GACA,SAACqP,EAAKC,GACF,OAAAnM,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAWkM,GAAQC,EACvB,GACA,CAAC,GAECG,EAAOL,KACTjP,GACA,SAACkP,EAAKrW,EAAO0W,GACT,IAAMC,EAAWH,EAASE,GACnBhC,EAAaZ,EAAgB4C,GAA7BhC,UACDzD,EAAOyD,EAAU9D,eAAe+F,GAChC/O,EAAI8M,EAAU9D,eAAe5Q,EAAOiR,GAQ1C,OAPIrJ,IAAMqJ,IAEFoF,EAAIK,GADJ9O,SAAuC,KAANA,EACtBA,OAEAnB,GAGZ4P,CACX,GACA,CAACE,0BAAAA,IAGL,OAAO5X,EFtKpB,SACH2G,EACAmF,GAEA,OAAO,SAAC9L,EAAUuI,GACd,IAAMvF,EAAQuF,IACRzD,GAAUsE,EAAAA,EAAAA,IAAWpG,GACrBuN,GAAUC,EAAAA,EAAAA,IAAYxN,GAEtBiV,EAA+C,GAC/CC,EAAiC,CAAC,EAWxC,OATAC,OAAOC,KAAKtM,GAASuM,SAAQ,SAACC,GAC1B,IAAMP,EAAMO,OACSxQ,IAAjBgE,EAAQiM,GACRE,EAAkBM,KAAKR,GAEvBG,EAAeH,GAAOjM,EAAQiM,EAEtC,KAEOtH,EAAAA,GAAAA,GACH,eACA3L,EACA,CAAC6B,MAAAA,EAAOuR,eAAAA,EAAgBD,kBAAAA,GACxB,CAAC1H,QAAAA,IACH1I,MAAK,WACH7H,EAASiT,GAAsBtM,IAC/B3G,EAASmQ,GAAexJ,IACxB3G,EAAS+S,GAAsBpM,GACnC,GACJ,CACJ,CEsIoC6R,CAAgB7R,EAAOmR,IAClCjQ,MAAK,WACFV,OAASW,EACb,IAAE,OACK,SAAC2Q,GAAM,OAAKtR,EAASsR,EAAE,GACtC,EACA1Q,OAAQA,EACRM,cAAeA,EACff,YAAa,CACTC,OACIhD,EAAAA,EAAAA,MAAA,QAAAC,SAAA,CAAM,cACU,KACZhE,EAAAA,EAAAA,KAAC0E,EAAAA,EAAI,CAACwT,UAAQ,EAACvT,QAAQ,WAAWJ,MAAM,YAAWP,SAC9CmC,YAQjC,C,gBCzOO,SAASgS,KAA4B,IAADC,EACjC9T,GAAUxD,EAAAA,EAAAA,IAAY8H,EAAAA,IACtBzC,GAAQrF,EAAAA,EAAAA,IAAYqQ,EAAAA,IAERkH,GAA+D,QAAjFD,EAAwC7O,EAAAA,GAAU+O,uCAA+B,IAAAF,EAAAA,EAAI,CAAC,GAA/EG,UACP,OAAKF,GAIErY,EAAAA,EAAAA,KAACqY,EAAkB,CAAC/T,QAASA,EAAS6B,MAAOA,KAHzCnG,EAAAA,EAAAA,KAACwY,GAAAA,EAAS,GAIzB,CCFO,SAASC,GAAkB7X,GAAqC,IAAnCe,EAASf,EAATe,UAC1B+W,GAAQC,EAAAA,EAAAA,MAERC,GAAY9X,EAAAA,EAAAA,IAAY8H,EAAAA,IACxBiQ,GAAY/X,EAAAA,EAAAA,IAAYqQ,EAAAA,IAExB2H,EAAiBvP,EAAAA,GAAU+O,gCAE3BS,EAAWpZ,EAAAA,SAAc,WAC3B,IAAAuB,EAAwC4X,QAAAA,EAAkB,CAAC,EAApDP,EAASrX,EAATqX,UAAWS,EAAW9X,EAAX8X,YAAajS,EAAK7F,EAAL6F,MACzBkS,EAAcD,IAAgBT,EACpC,OAAOW,EAAAA,GAAAA,IACHR,EAAM5T,IACNqU,EAAAA,IAAiBC,EAAAA,GAAAA,GAAA,GAEZD,EAAAA,GAAkBE,WAAaJ,EAC1B,CACIK,MAAM,EACNC,UAAU,EACVzU,KAAK0U,EAAAA,GAAAA,GAAeR,EAAa,CAACJ,UAAAA,EAAWC,UAAAA,IAC7C9R,MAAAA,GAEJ,CAACuS,KAAMnR,QAAQoQ,UAEzBjR,EAER,GAAG,CAACsR,EAAWC,EAAWH,EAAM5T,IAAKgU,IAE/BW,EAAkBtR,QAAQ2Q,aAAc,EAAdA,EAAgBP,WAChD,OACIxU,EAAAA,EAAAA,MAACpE,EAAAA,SAAc,CAAAqE,SAAA,EACXhE,EAAAA,EAAAA,KAAC0Z,GAAAA,GAAI1O,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,CAACrJ,UAAWA,GAAeoX,GAAQ,IAAE7T,QAAM,MAChDnB,EAAAA,EAAAA,MAAC4V,EAAAA,GAAM,CAAA3V,SAAA,CACFyV,IACGzZ,EAAAA,EAAAA,KAAC4Z,EAAAA,GAAK,CACFvI,KAAI,GAAAtM,OAAK2T,EAAM5T,IAAG,KAAAC,OAAIoU,EAAAA,GAAkBE,YACxCd,UAAWJ,MAGnBnY,EAAAA,EAAAA,KAAC4Z,EAAAA,GAAK,CACFvI,KAAI,GAAAtM,OAAK2T,EAAM5T,IAAG,KAAAC,OAAIoU,EAAAA,GAAkBU,SACxCtB,UAAW5E,MAEf3T,EAAAA,EAAAA,KAAC4Z,EAAAA,GAAK,CACFvI,KAAI,GAAAtM,OAAK2T,EAAM5T,IAAG,KAAAC,OAAIoU,EAAAA,GAAkBW,KACxCvB,UAAWrH,MAEflR,EAAAA,EAAAA,KAAC+Z,EAAAA,GAAQ,CACLC,GAAE,GAAAjV,OAAK2T,EAAM5T,IAAG,KAAAC,OACZ0U,EAAkBN,EAAAA,GAAkBE,WAAaF,EAAAA,GAAkBU,gBAM3F,CChCA,IAAMxa,IAAQC,EAAAA,EAAAA,GAAG,oBAEV,SAAS2a,GAAeC,GAA8C,IAADC,EAClE3a,GAAWC,EAAAA,EAAAA,MACX2a,GAAUC,EAAAA,EAAAA,MACV/V,GAAUxD,EAAAA,EAAAA,IAAY8H,EAAAA,IAErBzC,EAAS+T,EAAMxB,MAAM4B,OAArBnU,MACDiJ,EAASzP,EAAAA,aAAkB,WAC7BH,EAASmQ,GAAexJ,GAC5B,GAAG,CAACA,EAAO3G,IAEXG,EAAAA,WAAgB,WACZ,OAAO,WACHH,EXZD,CAACM,KAAM8P,EAAAA,GAAY2K,UAAW1a,KAAM,CAACiQ,cAAe,KWavD,CACJ,GAAG,CAAC3J,EAAO3G,IAEX,IAAO4G,GAAsC,QAA7C+T,GAAerZ,EAAAA,EAAAA,IAAY2P,WAAkB,IAAA0J,EAAAA,EAAI,CAAC,GAA3C/T,KACDoU,GAAiB1Z,EAAAA,EAAAA,IAAY8P,KAEnCtB,EAAAA,EAAAA,IAAWF,GAEX,IAAA/C,GAAoCC,EAAAA,EAAAA,MAA7B3D,EAAU0D,EAAV1D,WAAY4D,EAAaF,EAAbE,cACb3C,EAAalB,GAAqBC,GAExC,OACI5E,EAAAA,EAAAA,MAAA,OAAKpC,UAAWtC,KAAQ2E,SAAA,EACpBD,EAAAA,EAAAA,MAAA,OAAKpC,UAAWtC,GAAM,UAAU2E,SAAA,EAC5BD,EAAAA,EAAAA,MAACW,EAAAA,EAAI,CAACC,QAAQ,WAAUX,SAAA,CAAC,cACT,KACZhE,EAAAA,EAAAA,KAAC0E,EAAAA,EAAI,CAACC,QAAQ,WAAWJ,MAAM,YAAWP,SACrCmC,OAGRqU,IAAkBxa,EAAAA,EAAAA,KAACya,GAAAA,EAAM,CAAC9Y,UAAWtC,GAAM,UAAWkV,KAAK,OAC5DvU,EAAAA,EAAAA,KAAA,QAAM2B,UAAWtC,GAAM,aAEvBW,EAAAA,EAAAA,KAACyJ,GAAiB,CACdtD,MAAOA,EACPC,KAAMA,EACNsD,gBAAc,EACdpD,SAAU,SAACJ,GACQ,WAAXA,EACAkU,EAAQrC,KAAK,IAADhT,OAAKT,EAAO,KAAAS,OAAIC,EAAAA,GAAKmE,OAEjCiG,GAER,EACAxF,WAAYA,KAEhB5J,EAAAA,EAAAA,KAAA,QAAM2B,UAAWtC,GAAM,QAAQ2E,UAC3BhE,EAAAA,EAAAA,KAAC+T,GAAqB,CAACI,SAAO,UAGtCnU,EAAAA,EAAAA,KAAC0a,GAAgB,KACjB1a,EAAAA,EAAAA,KAAC2a,GAAmB,KACpB3a,EAAAA,EAAAA,KAACyY,GAAkB,CAAC9W,UAAWtC,GAAM,UACpCkN,IAGb,CAEA,SAASmO,KAAoB,IAADE,EAClBlU,GAAQ5F,EAAAA,EAAAA,IAAY6P,IACpBkK,GAAa/Z,EAAAA,EAAAA,IAAYkQ,IACxBtD,GAA+C,QAAtDkN,GAAwB9Z,EAAAA,EAAAA,IAAY2P,WAAkB,IAAAmK,EAAAA,EAAI,CAAC,GAApDlN,cAEP,OACI3J,EAAAA,EAAAA,MAACpE,EAAAA,SAAc,CAAAqE,SAAA,CACV0C,GAAQ1G,EAAAA,EAAAA,KAAC6T,GAAAA,EAAK,CAAClS,UAAWtC,GAAM,SAAUqH,MAAOA,EAAOoN,cAAY,IAAM,KAC1E+G,GACG7a,EAAAA,EAAAA,KAAC6T,GAAAA,EAAK,CACFlH,OAAO,kBACPhL,UAAWtC,GAAM,SACjBqH,MAAO,CAACoU,QAASD,GACjB/G,cAAY,IAEhB,KACHpG,GACG1N,EAAAA,EAAAA,KAAC+a,GAAAA,EAAK,CAACpO,OAAO,gBAAgB7M,KAAK,QAAQgb,QAASpN,EAAeoG,cAAY,IAC/E,OAGhB,CAEA,SAAS6G,KACL,IAAMrW,GAAUxD,EAAAA,EAAAA,IAAY8H,EAAAA,IACtB/I,GAAOiB,EAAAA,EAAAA,IAAY2P,IAEnBnP,EAAqC3B,EAAAA,SAAc,WACrD,IAAAoC,EAWIlC,QAAAA,EAAQ,CAAC,EAVTuG,EAAIrE,EAAJqE,KACA5D,EAAKT,EAALS,MACAuL,EAAKhM,EAALgM,MACAiN,EAAcjZ,EAAdiZ,eACAC,EAAYlZ,EAAZkZ,aACA9Y,EAAMJ,EAANI,OACA+Y,EAAiBnZ,EAAjBmZ,kBACApZ,EAAOC,EAAPD,QACA+L,EAAyB9L,EAAzB8L,0BACAI,EAAkClM,EAAlCkM,mCAGJ7L,EAAsC6Y,QAAAA,EAAgB,CAAC,EAAhDE,EAAU/Y,EAAV+Y,WAAYC,EAAWhZ,EAAXgZ,YAAa/W,EAAEjC,EAAFiC,GAE1BgX,EAAoBF,EAAaG,KAAOH,GAAYI,eAAYjU,EAChEkU,EAAqBJ,EACrBE,KAAOF,GAAaG,UACpBF,EACAI,KAAKC,WACLpU,EAEAqU,EACDN,GAAsBG,EAEjBA,EAAqBH,OADrB/T,EAGV,MAAO,CACH,CACI,CAACiQ,IAAK,SAAU1W,OAAOb,EAAAA,EAAAA,KAAC6F,EAAW,CAACrD,MAAOL,KAC3C,CAACoV,IAAK,QAAS1W,OAAOb,EAAAA,EAAAA,KAAC6F,EAAW,CAACrD,MAAOA,KAC1C,CACI+U,IAAK,OACL1W,MAAOuF,GACHpG,EAAAA,EAAAA,KAAC8M,EAAAA,EAAa,CAACxI,QAASA,EAAS8B,KAAM,CAACA,KAAAA,EAAM2G,KAAM,cAEpDxJ,EAAAA,EAAO+B,UAGf,CAACiS,IAAK,YAAa1W,MAAO0C,EAAAA,EAAO2J,OAAO8N,aAAc,EAAdA,EAAgB/N,iBACxD,CAACsK,IAAK,QAAS1W,MAAO0C,EAAAA,EAAO2J,OAAO8N,aAAc,EAAdA,EAAgB5N,YACpD,CAACmK,IAAK,SAAU1W,MAAO0C,EAAAA,EAAO+J,MAAM0N,aAAc,EAAdA,EAAgB3N,gBAExD,CACI,CAACkK,IAAK,QAAS1W,MAAOkN,GAAQ/N,EAAAA,EAAAA,KAAC8F,EAAAA,EAAK,CAACE,YAAU,EAACvE,KAAMsM,IAAYxK,EAAAA,EAAO+B,UACzE,CAACiS,IAAK,oBAAqB1W,MAAO0C,EAAAA,EAAO2J,OAAOgO,IAChD,CACI3D,IAAK,UACL1W,MAAOiB,GAAU9B,EAAAA,EAAAA,KAACwO,EAAAA,EAAQ,CAACC,SAAU3M,IAAcyB,EAAAA,EAAO+B,UAE9D,CACIiS,IAAKlU,EAAAA,GAA6C,0BAClDxC,MAAO0C,EAAAA,EAAOwI,SAAS8B,IAE3B,CACI0J,IAAKlU,EAAAA,GAAsD,mCAC3DxC,MAAO0C,EAAAA,EAAOwI,SAASkC,KAG/B,CACI,CACIsJ,IAAK,kBACL1W,OACIb,EAAAA,EAAAA,KAAA,OAAK2B,UAAWtC,GAAM,gBAAgB2E,UAClChE,EAAAA,EAAAA,KAACoE,EAAW,CAACC,GAAIA,EAAIC,QAASA,OAI1C,CACIiT,IAAK,qBACL1W,MAAOoa,SAAAA,EAAczY,MACfe,EAAAA,EAAOC,cAAcyX,aAAY,EAAZA,EAAczY,OACnCe,EAAAA,EAAO+B,UAEjB,CACIiS,IAAK,aACL1W,MAAO0C,EAAAA,EAAOwI,SAASoP,IAE3B,CACI5D,IAAK,cACL1W,MAAO0C,EAAAA,EAAOwI,SAASqP,IAE3B,CACI7D,IAAK,WACL1W,MAAO8a,EAAWpY,EAAAA,EAAOqY,aAAaD,GAAYpY,EAAAA,EAAO+B,WAIzE,GAAG,CAACzF,EAAMyE,IAEV,OAAOtE,EAAAA,EAAAA,KAAC6b,GAAAA,GAAS,CAACva,MAAOA,GAC7B,CCnNe,SAASwa,KACpB,OACI9b,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,wBAAuBqC,UAClChE,EAAAA,EAAAA,KAAC+b,EAAAA,EAAa,CAAA/X,UACVD,EAAAA,EAAAA,MAAC4V,EAAAA,GAAM,CAAA3V,SAAA,EACHhE,EAAAA,EAAAA,KAAC4Z,EAAAA,GAAK,CAACvI,KAAI,aAAAtM,OAAeC,EAAAA,GAAKmE,KAAI,WAAWoP,UAAW0B,MACzDja,EAAAA,EAAAA,KAAC4Z,EAAAA,GAAK,CAACvI,KAAI,aAAAtM,OAAeC,EAAAA,GAAKmE,MAAQoP,UAAWpJ,WAKtE,C,wEC2EO,SAASc,EAIZ/J,EACA5B,EACAgW,GAYD,IAAD1Z,EAAAyS,UAAAC,OAAA,QAAAhM,IAAA+L,UAAA,GAAAA,UAAA,GADM,CAAC,EATDnD,EAAWtP,EAAXsP,YACAE,EAAcxP,EAAdwP,eACA4L,EAAYpb,EAAZob,aASE5S,EARKxI,EAAPmP,QAQoB,oBAAsB,GAC9C,OAAO6C,EAAAA,EAAAA,IACHqJ,EAAAA,EAAMC,QAA6B,CAC/BC,OAAQ,OACRrX,IAAI,aAADC,OAAeT,EAAO,KAAAS,OAAImB,GAAMnB,OAAGqE,GACtCvJ,KAAM,CACFya,QAAMtP,EAAAA,EAAAA,GAAA,GAAMsP,IAEhBpK,YAAAA,IAEJ,CACI2C,YAAY,UAAD9N,OAAYmB,GACvB4M,kBAAmBkJ,EACnBA,aAAAA,EACA5L,eAAAA,EACAgM,WAAW,IAADrX,OAAMmB,EAAM,qBAE5BmB,MAAK,SAACgV,GACJ,OAAOA,EAASxc,IACpB,GACJ,C,0JCzHM4P,EAAe,IAAIC,EAAAA,EAElB,SAASL,IACZ,OAAO,SAAC7P,EAAUuI,GACd,IAAMvF,EAAQuF,IACRzD,GAAUsE,EAAAA,EAAAA,IAAWpG,GACrBuN,GAAUC,EAAAA,EAAAA,IAAYxN,GACtBM,GAAU2J,EAAAA,EAAAA,IAA0BjK,GAE1ChD,EAAS,CAACM,KAAMwc,EAAAA,GAAUzM,UAE1B,IAAM0M,GAAgB,IAAMzZ,EAAQ0Z,QAAQ,QAAU,CAAC,QAAmB,GAEpEC,EAAgB,IAAIC,IAAI,CAC1B,kBACA,UACA,QACA,SACA,iBAAe3X,QAAA0C,EAAAA,EAAAA,GACZ3E,GACAyZ,IAGP,OAAOtM,EAAAA,EAAAA,GACH,OACA3L,EACA,CAACqY,YAAUlV,EAAAA,EAAAA,GAAMgV,IACjB,CAAC1M,QAAAA,EAASG,YAAaT,EAAaU,kCAEnC9I,MAAK,SAACxH,GAAU,IAAD+c,EACNtb,EAAQzB,SAAY,QAAR+c,EAAJ/c,EAAMyQ,cAAM,IAAAsM,OAAA,EAAZA,EAAcrb,KAAI,SAAAX,GAAiC,IAA/Bic,EAAMjc,EAANic,OAAMC,EAAAlc,EAAEmc,YAAAA,OAAW,IAAAD,EAAG,CAAC,EAACA,EACtD,OAAA9R,EAAAA,EAAAA,GAAA,CACI7E,MAAO0W,GACJE,EAEX,IAEAvd,EAAS,CAACM,KAAMwc,EAAAA,GAAUjM,QAASxQ,KAAM,CAACA,KAAM,CAACyB,MAAAA,KACrD,IAAE,OACK,SAACoF,IACC6J,EAAAA,EAAAA,GAAY7J,IACblH,EAAS,CAACM,KAAMwc,EAAAA,GAAU9L,QAAS3Q,KAAM,CAAC6G,MAAAA,IAElD,GACR,CACJ,CAEO,SAASU,EAIZlB,EACAoU,GAEyC,IADxC0C,GACuC3J,UAAAC,OAAA,QAAAhM,IAAA+L,UAAA,GAAAA,UAAA,GADG,CAAC,GAA3C2J,aAED,OAAO,SAACxd,EAAUuI,GACd,IAAMvF,EAAQuF,IACRzD,GAAUsE,EAAAA,EAAAA,IAAWpG,GACrBuN,GAAUC,EAAAA,EAAAA,IAAYxN,GAE5B,OAAOyN,EAAAA,EAAAA,GAAc/J,EAAQ5B,EAASgW,EAAQ,CAACvK,QAAAA,IAAU1I,MAAK,SAAC4V,GAI3D,OAHKD,GACDxd,EAAS6P,KAEN4N,CACX,GACJ,CACJ,CAEO,SAASC,EAAiB5C,GAM7B,OAAO,SAAC9a,EAAUuI,GACd,IAAMvF,EAAQuF,IACRzD,GAAUsE,EAAAA,EAAAA,IAAWpG,GACrBuN,GAAUC,EAAAA,EAAAA,IAAYxN,GAErB2D,EAAiDmU,EAAjDnU,MAAOgX,EAA0C7C,EAA1C6C,iBAAkB/W,EAAwBkU,EAAxBlU,KAAM6G,EAAkBqN,EAAlBrN,eACtC,OAAOgD,EAAAA,EAAAA,GACH,SACA3L,EACA,CACI6B,MAAAA,EACAiX,iBAAepS,EAAAA,EAAAA,GAAA,CACXtF,OAAQyX,GAAoBhV,QAAQ/B,GACpC6G,eAAAA,GACI7G,EAAO,CAACA,KAAAA,QAAQkB,IAG5B,CAACyI,QAAAA,EAASiM,aAAa,GAADjX,OAAKoB,EAAK,qBACnC,SAAS,WACN3G,EAAS6P,IACb,GACJ,CACJ,CAEO,SAASxL,EAAsBf,GAClC,OAAO,SAACtD,GACJ,OAAOA,GAAS6d,EAAAA,EAAAA,IAAgB,6BAA8Bva,IAAUuE,MAAK,WACzE7H,EAAS6P,IACb,GACJ,CACJ,C","sources":["webpack://@ytsaurus/ui/./src/ui/pages/chyt/ChytPageList/ChytPageListToolbar.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/chyt/list-fitlers.ts","webpack://@ytsaurus/ui/./src/ui/components/OperationId/OperationId.tsx","webpack://@ytsaurus/ui/./src/ui/pages/chyt/components/CliqueState.tsx","webpack://@ytsaurus/ui/./src/ui/pages/chyt/ChytConfirmation/ChytConfirmation.tsx","webpack://@ytsaurus/ui/./src/ui/pages/chyt/ChytCliqueActions/ChytCliqueActions.tsx","webpack://@ytsaurus/ui/./src/ui/pages/chyt/ChytPageList/ChytPageListTable.tsx","webpack://@ytsaurus/ui/./src/ui/pages/chyt/ChytPageList/ChytPageList.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/chyt/clique.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/chyt/clique.ts","webpack://@ytsaurus/ui/./src/ui/pages/chyt/ChytPageClique/ChytPageCliqueAcl.tsx","webpack://@ytsaurus/ui/./src/ui/components/Dialog/df-dialog-utils.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/chyt/options.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/chyt/speclet.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/chyt/options.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/chyt/speclet.ts","webpack://@ytsaurus/ui/./src/ui/pages/chyt/ChytPageClique/ChytPageCliqueSpeclet.tsx","webpack://@ytsaurus/ui/./src/ui/pages/chyt/ChytPageClique/ChytPageCliqueMonitoring.tsx","webpack://@ytsaurus/ui/./src/ui/pages/chyt/ChytPageClique/ChytPageCliqueTabs.tsx","webpack://@ytsaurus/ui/./src/ui/pages/chyt/ChytPageClique/ChytPageClique.tsx","webpack://@ytsaurus/ui/./src/ui/pages/chyt/ChytPage.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/chyt/api.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/chyt/list.ts"],"sourcesContent":["import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport {Button, TextInput} from '@gravity-ui/uikit';\n\nimport format from '../../../common/hammer/format';\n\nimport {Toolbar} from '../../../components/WithStickyToolbar/Toolbar/Toolbar';\nimport {SelectSingle} from '../../../components/Select/Select';\nimport ColumnSelectorModal from '../../../components/ColumnSelectorModal/ColumnSelectorModal';\n\nimport {chytUpdateListFilters} from '../../../store/actions/chyt/list-fitlers';\nimport {\n getChytListAvailableCreators,\n getChytListAvailableHealths,\n getChytListAvailableStates,\n getChytListColumns,\n getChytListFilterAlias,\n getChytListFilterCreator,\n getChytListFilterHealth,\n getChytListFilterState,\n} from '../../../store/selectors/chyt';\nimport {ChytListFilters} from '../../../store/reducers/chyt/list-filters';\nimport {chytSetVisibleColumns} from '../../../store/actions/chyt/list';\nimport {CHYT_TABLE_TITLES} from '../../../constants/chyt-page';\n\nimport './ChytPageListToolbar.scss';\n\nconst block = cn('chyt-list-toolbar');\n\nfunction ChytPageListToolbar() {\n const dispatch = useDispatch();\n\n const onUpdate = React.useCallback(\n (filters: Partial<ChytListFilters>) => {\n dispatch(chytUpdateListFilters(filters));\n },\n [dispatch],\n );\n\n return (\n <Toolbar\n itemsToWrap={[\n {\n name: 'alias',\n node: <NameIdFilter onUpdate={onUpdate} />,\n growable: true,\n wrapperClassName: block('name-filter'),\n },\n {\n name: 'creator',\n node: <CreatorFilter onUpdate={onUpdate} />,\n },\n {\n name: 'state',\n node: <StateFilter onUpdate={onUpdate} />,\n },\n {\n name: 'health',\n node: <HealthFilter onUpdate={onUpdate} />,\n },\n {\n name: 'columns',\n node: <ChytListColumnsButton />,\n },\n ]}\n />\n );\n}\n\nfunction NameIdFilter({onUpdate}: {onUpdate: (value: {name: string}) => void}) {\n const value = useSelector(getChytListFilterAlias);\n\n return (\n <TextInput\n value={value}\n onUpdate={(name) => {\n onUpdate({name});\n }}\n placeholder=\"Filter by alias name or id...\"\n />\n );\n}\n\nfunction CreatorFilter({onUpdate}: {onUpdate: (value: {creator?: string}) => void}) {\n const value = useSelector(getChytListFilterCreator);\n const creators = useSelector(getChytListAvailableCreators);\n\n const items = React.useMemo(() => {\n return creators.map((item) => {\n return {\n value: item,\n text: item,\n };\n });\n }, [creators]);\n\n return (\n <SelectSingle\n className={block('select-filter')}\n label=\"Creator:\"\n value={value}\n items={items}\n onChange={(creator) => {\n onUpdate({creator});\n }}\n />\n );\n}\n\nfunction HealthFilter({onUpdate}: {onUpdate: (value: {health?: string}) => void}) {\n const value = useSelector(getChytListFilterHealth);\n const choices = useSelector(getChytListAvailableHealths);\n\n const items = React.useMemo(() => {\n return choices.map((item) => {\n return {\n value: item,\n text: item,\n };\n });\n }, [choices]);\n\n return (\n <SelectSingle\n className={block('select-filter')}\n label=\"Health:\"\n value={value}\n items={items}\n onChange={(health) => {\n onUpdate({health});\n }}\n />\n );\n}\n\nfunction StateFilter({onUpdate}: {onUpdate: (value: {state?: string}) => void}) {\n const value = useSelector(getChytListFilterState);\n const states = useSelector(getChytListAvailableStates);\n\n const items = React.useMemo(() => {\n return states.map((item) => {\n return {\n value: item,\n text: item,\n };\n });\n }, [states]);\n return (\n <SelectSingle\n className={block('select-filter')}\n label=\"State:\"\n value={value}\n items={items}\n onChange={(state) => {\n onUpdate({state});\n }}\n />\n );\n}\n\nfunction ChytListColumnsButton() {\n const dispatch = useDispatch();\n\n const [visible, setVisible] = React.useState(false);\n const columns = useSelector(getChytListColumns);\n\n const dialog = (\n <ColumnSelectorModal\n isVisible={visible}\n items={columns.map((i) => {\n return {\n name: CHYT_TABLE_TITLES[i.column] ?? format.ReadableField(i.column),\n checked: i.checked,\n data: {\n column: i.column,\n },\n };\n })}\n onConfirm={(value) => {\n const newColumns = value.filter((i) => i.checked).map((i) => i.data.column);\n dispatch(chytSetVisibleColumns(newColumns));\n setVisible(false);\n }}\n onCancel={() => setVisible(false)}\n />\n );\n\n return (\n <React.Fragment>\n {visible && dialog}\n <Button view=\"outlined\" onClick={() => setVisible(true)}>\n Columns\n </Button>\n </React.Fragment>\n );\n}\n\nexport default React.memo(ChytPageListToolbar);\n","import {ThunkAction} from 'redux-thunk';\n\nimport {CHYT_LIST_FILTERS} from '../../../constants/chyt-page';\nimport {RootState} from '../../../store/reducers';\nimport {ChytInfo} from '../../../store/reducers/chyt/list';\nimport {ChytListFilters, ChytListFiltersAction} from '../../reducers/chyt/list-filters';\nimport {getChytListTableSortState} from '../../../store/selectors/chyt';\nimport {OrderType, updateSortStateArray} from '../../../utils/sort-helpers';\n\ntype ChytFiltersThunkAction<T = unknown> = ThunkAction<\n T,\n RootState,\n unknown,\n ChytListFiltersAction\n>;\n\nexport function chytUpdateListFilters(data: Partial<ChytListFilters>): ChytListFiltersAction {\n return {type: CHYT_LIST_FILTERS, data};\n}\n\nexport function chytToggleSortState(\n column: keyof ChytInfo,\n order: OrderType,\n options: {multisort?: boolean},\n): ChytFiltersThunkAction {\n return (dispatch, getState) => {\n const prevSortState = getChytListTableSortState(getState());\n const sortState = updateSortStateArray(prevSortState, {column, order}, options);\n\n dispatch({type: CHYT_LIST_FILTERS, data: {sortState}});\n };\n}\n","import React from 'react';\n\nimport {Text} from '@gravity-ui/uikit';\n\nimport Link from '../../components/Link/Link';\nimport format from '../../common/hammer/format';\nimport {Page} from '../../../shared/constants/settings';\nimport ClipboardButton from '../../components/ClipboardButton/ClipboardButton';\n\nexport function OperationId({\n id,\n cluster,\n color,\n allowCopy,\n}: {\n id?: string;\n color?: 'secondary';\n cluster: string;\n allowCopy?: boolean;\n}) {\n const operationId = id && id !== '0-0-0-0' ? id : null;\n\n return (\n <Text variant=\"code-1\" color={color}>\n {operationId ? (\n <React.Fragment>\n <Link\n theme={color}\n url={`/${cluster}/${Page.OPERATIONS}/${operationId}`}\n routed\n >\n {operationId}\n </Link>\n {allowCopy && (\n <ClipboardButton\n text={operationId}\n view=\"clear\"\n visibleOnRowHover\n inlineMargins\n />\n )}\n </React.Fragment>\n ) : (\n format.NO_VALUE\n )}\n </Text>\n );\n}\n","import React from 'react';\n\nimport format from '../../../common/hammer/format';\nimport Label from '../../../components/Label/Label';\nimport {ChytCliqueHealthType, ChytCliqueStateType} from '../../../store/actions/chyt/api';\n\nconst THEME_MAP: Partial<\n Record<ChytCliqueStateType | ChytCliqueHealthType, 'danger' | 'success' | 'info' | 'warning'>\n> = {\n good: 'success',\n failed: 'danger',\n active: 'success',\n pending: 'info',\n untracked: 'warning',\n};\n\nexport function CliqueState({state}: {state?: ChytCliqueStateType | ChytCliqueHealthType}) {\n return !state ? (\n format.NO_VALUE\n ) : (\n <Label text={state} theme={THEME_MAP[state]} hideTitle capitalize />\n );\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport {Text} from '@gravity-ui/uikit';\n\nimport format from '../../../common/hammer/format';\n\nimport {YTDFDialog, makeErrorFields} from '../../../components/Dialog/Dialog';\nimport {YTError} from '../../../types';\nimport {useThunkDispatch} from '../../../store/thunkDispatch';\nimport {chytListAction} from '../../../store/actions/chyt/list';\n\nimport './ChytConfirmation.scss';\n\nconst block = cn('chyt-confirmation');\n\nexport type ChytConfirmationProps = {\n action: 'remove' | 'start' | 'stop';\n alias: string;\n pool?: string;\n onClose: () => void;\n onAction?: (action: ChytConfirmationProps['action']) => void;\n};\n\nexport function ChytConfirmation({action, alias, pool, onClose, onAction}: ChytConfirmationProps) {\n const onConfirm = () => {\n if (action) {\n onAction?.(action);\n }\n };\n switch (action) {\n case 'stop':\n case 'remove':\n return <ChytSimpleConfirmation {...{alias, action, onClose, onConfirm}} />;\n case 'start':\n return <ChytStartConfirmation {...{alias, onClose, onConfirm, pool}} />;\n default:\n return null;\n }\n}\n\ntype ConfirmationProps = {\n alias: string;\n pool?: string;\n onClose: () => void;\n onConfirm: () => void;\n};\n\nfunction ChytSimpleConfirmation({\n alias,\n action,\n onClose,\n onConfirm,\n}: ConfirmationProps & {action: 'remove' | 'stop'}) {\n const dispatch = useThunkDispatch();\n\n const [error, setError] = React.useState<YTError | undefined>();\n\n return (\n <YTDFDialog\n visible\n pristineSubmittable\n headerProps={{\n title: (\n <>\n {format.ReadableField(action)}{' '}\n <Text variant=\"header-1\" color=\"secondary\">\n {alias}\n </Text>\n </>\n ),\n }}\n footerProps={{textApply: `Yes, ${action} ${alias}`}}\n onAdd={() => {\n return dispatch(chytListAction('stop', {alias: alias}))\n .then(() => {\n if (action === 'remove') {\n return dispatch(chytListAction('remove', {alias}));\n } else {\n return null;\n }\n })\n .then(() => {\n onConfirm();\n setError(undefined);\n })\n .catch((error: any) => {\n setError(error);\n throw error;\n });\n }}\n fields={[\n {\n type: 'block',\n name: 'text',\n extras: {\n children: (\n <>\n Are you sure you want to {action} the clique{' '}\n <Text color=\"secondary\">{alias}</Text>?\n </>\n ),\n },\n },\n ...makeErrorFields([error]),\n ]}\n onClose={onClose}\n />\n );\n}\n\ntype StartFormValues = {\n pool: string;\n untracked: boolean;\n};\n\nfunction ChytStartConfirmation({\n alias,\n onClose,\n pool,\n onConfirm,\n}: Omit<ConfirmationProps, 'action'>) {\n const dispatch = useThunkDispatch();\n const [error, setError] = React.useState();\n\n return (\n <YTDFDialog<StartFormValues>\n visible\n className={block('start')}\n headerProps={{\n title: (\n <>\n Start clique{' '}\n <Text variant=\"header-1\" color=\"secondary\">\n {alias}\n </Text>\n </>\n ),\n }}\n footerProps={{textApply: `Start clique ${alias}`}}\n onClose={onClose}\n initialValues={{pool: pool}}\n onAdd={(form) => {\n const {untracked} = form.getState().values;\n return dispatch(chytListAction('start', {alias, untracked}))\n .then(() => {\n onConfirm();\n setError(undefined);\n })\n .catch((error: any) => {\n setError(error);\n throw error;\n });\n }}\n isApplyDisabled={(state) => {\n const {\n values: {pool, untracked},\n } = state;\n return Boolean(!pool && !untracked);\n }}\n fields={[\n {\n type: 'plain',\n name: 'pool',\n caption: 'Pool',\n extras: {\n placeholder: format.NO_VALUE,\n },\n },\n {\n type: 'tumbler',\n name: 'untracked',\n tooltip:\n \"YT Operation for a clique in untracked mode is started using the current user's credentials in the user's default pool. Such clique is not tracked by the controller and will not be restarted in case of any failures or speclet updates.\",\n caption: 'Untracked',\n },\n {\n type: 'block',\n name: 'untrackedNotice',\n visibilityCondition: {\n when: 'untracked',\n isActive: (v) => v,\n },\n extras: {\n children: (\n <Text color=\"warning\" variant=\"body-2\">\n {`Usage of untracked cliques is strictly discouraged.`}\n </Text>\n ),\n },\n },\n ...makeErrorFields([error]),\n ]}\n />\n );\n}\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport {Button, DropdownMenu, DropdownMenuItem} from '@gravity-ui/uikit';\n\nimport Icon from '../../../components/Icon/Icon';\nimport {getCluster, isQueryTrackerAllowed} from '../../../store/selectors/global';\nimport {updateQueryDraft} from '../../../pages/query-tracker/module/query/actions';\nimport {QueryEngine} from '../../../pages/query-tracker/module/engines';\nimport UIFactory from '../../../UIFactory';\n\nimport {ChytConfirmation} from '../ChytConfirmation/ChytConfirmation';\n\nimport './ChytCliqueActions.scss';\n\nconst block = cn('chyt-clique-actions');\n\nexport function useCliqueOnSqlAction(openWidget: () => void) {\n const cluster = useSelector(getCluster);\n const allowQueryTracker = useSelector(isQueryTrackerAllowed);\n const dispatch = useDispatch();\n\n return React.useCallback(\n (alias: string) => {\n if (allowQueryTracker) {\n setTimeout(() => {\n dispatch(\n updateQueryDraft({\n engine: QueryEngine.CHYT,\n query: `SELECT 1;`,\n settings: {cluster, clique: alias},\n }),\n );\n }, 500);\n openWidget();\n } else {\n UIFactory.onChytAliasSqlClick({alias, cluster});\n }\n },\n [cluster, openWidget, allowQueryTracker, dispatch],\n );\n}\n\nexport function ChytCliqueActions({\n alias,\n pool,\n showAllButtons,\n allButtonsClassName,\n onAction,\n onSqlClick,\n}: {\n showAllButtons?: boolean;\n allButtonsClassName?: string;\n alias: string;\n pool?: string;\n onSqlClick: (alias: string) => void;\n onAction?: (action: 'remove' | 'start' | 'stop') => void;\n}) {\n const [visibleConfirmation, setVisibleConirmation] = React.useState<\n undefined | 'remove' | 'start' | 'stop'\n >();\n\n const start = {\n icon: <Icon awesome=\"play-circle\" />,\n text: 'Start',\n action: () => {\n setVisibleConirmation('start');\n },\n };\n const stop = {\n icon: <Icon awesome=\"stop-circle\" />,\n text: 'Stop',\n action: () => {\n setVisibleConirmation('stop');\n },\n };\n const remove = {\n icon: <Icon awesome=\"trash-alt\" />,\n text: 'Remove',\n action: () => {\n setVisibleConirmation('remove');\n },\n };\n\n const menuItems: Array<Array<DropdownMenuItem>> = [[start, stop], [remove]];\n\n const sqlButton = (\n <Button view=\"flat\" onClick={() => onSqlClick(alias)}>\n <Icon awesome=\"sql\" />\n </Button>\n );\n\n return (\n <React.Fragment>\n {visibleConfirmation !== undefined && (\n <ChytConfirmation\n alias={alias}\n pool={pool}\n action={visibleConfirmation}\n onClose={() => setVisibleConirmation(undefined)}\n onAction={onAction}\n />\n )}\n {showAllButtons ? (\n <span className={block('chyt-clique-actions', allButtonsClassName)}>\n <span className={block('item')}>{sqlButton}</span>\n\n <span className={block('item')}>\n <Button\n title=\"Start\"\n onClick={() => {\n start.action();\n }}\n >\n <Icon awesome=\"play-circle\" />\n </Button>\n </span>\n\n <span className={block('item')}>\n <Button\n title=\"Stop\"\n onClick={() => {\n stop.action();\n }}\n >\n <Icon awesome=\"stop-circle\" />\n </Button>\n </span>\n\n <Button\n title=\"Remove\"\n onClick={() => {\n remove.action();\n }}\n >\n <Icon awesome=\"trash-alt\" />\n </Button>\n </span>\n ) : (\n <React.Fragment>\n {sqlButton}\n <DropdownMenu\n switcher={\n <Button view=\"flat\">\n <Icon awesome=\"ellipsis-h\" />\n </Button>\n }\n items={menuItems}\n />\n </React.Fragment>\n )}\n </React.Fragment>\n );\n}\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport {Column} from '@gravity-ui/react-data-table';\nimport {Text} from '@gravity-ui/uikit';\n\nimport format from '../../../common/hammer/format';\n\nimport DataTableYT, {\n DATA_TABLE_YT_SETTINGS_UNDER_TOOLBAR,\n} from '../../../components/DataTableYT/DataTableYT';\nimport ClipboardButton from '../../../components/ClipboardButton/ClipboardButton';\nimport ColumnHeader from '../../../components/ColumnHeader/ColumnHeader';\nimport Icon from '../../../components/Icon/Icon';\nimport Link from '../../../components/Link/Link';\nimport {OperationId} from '../../../components/OperationId/OperationId';\nimport {UserCard} from '../../../components/UserLink/UserLink';\nimport Label from '../../../components/Label/Label';\nimport {Tooltip} from '../../../components/Tooltip/Tooltip';\n\nimport {chytToggleSortState} from '../../../store/actions/chyt/list-fitlers';\nimport {getCluster} from '../../../store/selectors/global';\nimport {\n getChytListTableItems,\n getChytListTableSortStateByName,\n getChytListVisibleColumns,\n} from '../../../store/selectors/chyt';\nimport {ChytInfo} from '../../../store/reducers/chyt/list';\nimport {Page} from '../../../../shared/constants/settings';\nimport {CHYT_TABLE_TITLES} from '../../../constants/chyt-page';\nimport {OperationPool} from '../../../components/OperationPool/OperationPool';\nimport {useQueryWidgetSidePanel} from '../../../pages/query-tracker/QueryWidget/side-panel';\n\nimport {CliqueState} from '../components/CliqueState';\n\nimport {ChytCliqueActions, useCliqueOnSqlAction} from '../ChytCliqueActions/ChytCliqueActions';\nimport './ChytPageListTable.scss';\n\nconst block = cn('chyt-page-list-table');\n\nfunction useChytListColumns(cluster: string, onSqlClick: (alias: string) => void) {\n const checkedColumns = useSelector(getChytListVisibleColumns);\n\n const columns: Array<Column<ChytInfo>> = React.useMemo(() => {\n const columnsByName = {\n pool: {\n name: 'pool',\n header: <ChytListHeader column=\"pool\" />,\n render({row}) {\n return !row.pool ? (\n format.NO_VALUE\n ) : (\n <OperationPool\n className={block('pool')}\n cluster={cluster}\n pool={{pool: row.pool, tree: 'physical'}}\n />\n );\n },\n width: 320,\n } as Column<ChytInfo>,\n instance_count: {\n name: 'instance_count',\n header: <ChytListHeader column=\"instance_count\" />,\n render({row}) {\n return (\n <span className={block('one-row-cell')}>\n {row.instance_count === undefined\n ? format.NO_VALUE\n : format.Number(row.instance_count)}\n </span>\n );\n },\n align: 'right',\n width: 120,\n } as Column<ChytInfo>,\n total_cpu: {\n name: 'cores',\n header: <ChytListHeader column=\"total_cpu\" />,\n render({row}) {\n return (\n <span className={block('one-row-cell')}>\n {row.total_cpu === undefined\n ? format.NO_VALUE\n : format.Number(row.total_cpu)}\n </span>\n );\n },\n align: 'right',\n width: 100,\n } as Column<ChytInfo>,\n total_memory: {\n name: 'memory',\n header: <ChytListHeader column=\"total_memory\" />,\n render({row}) {\n return (\n <span className={block('one-row-cell')}>\n {row.total_memory === undefined\n ? format.NO_VALUE\n : format.Bytes(row.total_memory)}\n </span>\n );\n },\n align: 'right',\n width: 120,\n } as Column<ChytInfo>,\n health: {\n name: 'health',\n header: <ChytListHeader column=\"health\" />,\n render({row}) {\n return (\n <Tooltip\n className={block('health', block('one-row-cell'))}\n content={format.ReadableField(row.health_reason)}\n >\n <CliqueState state={row.health} />\n {row.health_reason && (\n <Text color=\"secondary\">\n &nbsp;\n <Icon awesome={'exclamation-triangle'} />\n </Text>\n )}\n </Tooltip>\n );\n },\n width: 120,\n } as Column<ChytInfo>,\n creation_time: {\n name: 'creation_time',\n header: <ChytListHeader column=\"creation_time\" withUndefined />,\n render({row}) {\n return <DateTimeCell value={row.creation_time} />;\n },\n width: 120,\n } as Column<ChytInfo>,\n speclet_modification_time: {\n name: 'speclet_modification_time',\n header: <ChytListHeader column=\"speclet_modification_time\" />,\n render({row}) {\n return <DateTimeCell value={row.speclet_modification_time} />;\n },\n width: 120,\n } as Column<ChytInfo>,\n stage: {\n name: 'stage',\n header: <ChytListHeader column=\"stage\" />,\n render({row}) {\n return (\n <span className={block('one-row-cell')}>{<Label text={row.stage} />}</span>\n );\n },\n width: 120,\n } as Column<ChytInfo>,\n strawberry_state_modification_time: {\n name: 'strawberry_state_modification_time',\n header: <ChytListHeader column=\"strawberry_state_modification_time\" />,\n render({row}) {\n return <DateTimeCell value={row.strawberry_state_modification_time} />;\n },\n width: 120,\n } as Column<ChytInfo>,\n yt_operation_finish_time: {\n name: 'yt_operation_finish_time',\n header: <ChytListHeader column=\"yt_operation_finish_time\" withUndefined />,\n render({row}) {\n return <DateTimeCell value={row.yt_operation_finish_time} />;\n },\n width: 120,\n } as Column<ChytInfo>,\n yt_operation_start_time: {\n name: 'yt_operation_start_time',\n header: <ChytListHeader column=\"yt_operation_start_time\" withUndefined />,\n render({row}) {\n return <DateTimeCell value={row.yt_operation_start_time} />;\n },\n width: 120,\n } as Column<ChytInfo>,\n creator: {\n name: 'creator',\n header: <ChytListHeader column=\"creator\" />,\n render({row}) {\n return (\n <div className={block('one-row-cell', block('creator'))}>\n {!row.creator ? (\n format.NO_VALUE\n ) : (\n <UserCard className={block('full-width')} userName={row.creator} />\n )}\n </div>\n );\n },\n width: 120,\n } as Column<ChytInfo>,\n state: {\n name: 'state',\n header: <ChytListHeader column=\"state\" />,\n render({row}) {\n return (\n <span className={block('one-row-cell')}>\n <CliqueState state={row.state} />\n </span>\n );\n },\n width: 120,\n } as Column<ChytInfo>,\n };\n\n const res = checkedColumns.map((i) => columnsByName[i]);\n return [\n {\n name: 'alias',\n header: <ChytListHeader column=\"alias\" />,\n render({row}) {\n return (\n <div>\n <Link\n url={`/${cluster}/${Page.CHYT}/${row.alias}`}\n theme=\"primary\"\n routed\n >\n {row.alias}\n </Link>\n <ClipboardButton\n text={row.alias}\n view=\"clear\"\n visibleOnRowHover\n inlineMargins\n />\n <div>\n <OperationId\n id={row.yt_operation_id}\n cluster={cluster}\n color=\"secondary\"\n allowCopy\n />\n </div>\n </div>\n );\n },\n } as Column<ChytInfo>,\n ...res,\n {\n name: 'actions',\n header: '',\n render({row}) {\n return (\n <span className={block('one-row-cell')}>\n <ChytCliqueActions\n alias={row.alias}\n pool={row.pool}\n onSqlClick={onSqlClick}\n />\n </span>\n );\n },\n align: 'center',\n width: 60,\n } as Column<ChytInfo>,\n ];\n }, [cluster, checkedColumns, onSqlClick]);\n\n return columns;\n}\n\nfunction ChytListHeader({\n column,\n withUndefined,\n}: {\n column: keyof ChytInfo;\n withUndefined?: boolean;\n}) {\n const dispatch = useDispatch();\n const sortState = useSelector(getChytListTableSortStateByName);\n return (\n <ColumnHeader<typeof column>\n allowUnordered\n withUndefined={withUndefined}\n column={column}\n title={CHYT_TABLE_TITLES[column] ?? format.ReadableField(column)}\n sortable\n {...sortState[column]}\n toggleSort={(col, nextOrder, options) => {\n dispatch(chytToggleSortState(col, nextOrder, options));\n }}\n />\n );\n}\n\nfunction DateTimeCell({value}: {value?: string}) {\n if (!value) {\n return <span className={block('one-row-cell')}>{format.NO_VALUE}</span>;\n }\n\n const time: string = format.DateTime(value);\n const lastSpace = time.lastIndexOf(' ');\n return (\n <React.Fragment>\n <span>{time.substring(0, lastSpace)}</span>\n <div>{time.substring(lastSpace + 1)}</div>\n </React.Fragment>\n );\n}\n\nfunction ChytPageListTable() {\n const items = useSelector(getChytListTableItems);\n const cluster = useSelector(getCluster);\n\n const {openWidget, widgetContent} = useQueryWidgetSidePanel();\n const onSqlClick = useCliqueOnSqlAction(openWidget);\n\n const columns = useChytListColumns(cluster, onSqlClick);\n\n return (\n <React.Fragment>\n <DataTableYT\n className={block()}\n settings={DATA_TABLE_YT_SETTINGS_UNDER_TOOLBAR}\n useThemeYT\n columns={columns}\n data={items}\n />\n {widgetContent}\n </React.Fragment>\n );\n}\n\nexport default React.memo(ChytPageListTable);\n","import React from 'react';\nimport {useDispatch} from 'react-redux';\n\nimport {useUpdater} from '../../../hooks/use-updater';\n\nimport WithStickyToolbar from '../../../components/WithStickyToolbar/WithStickyToolbar';\n\nimport {chytLoadList} from '../../../store/actions/chyt/list';\n\nimport ChytPageListToolbar from './ChytPageListToolbar';\nimport ChytPageListTable from './ChytPageListTable';\n\nexport function ChytPageList() {\n const dispatch = useDispatch();\n const update = React.useCallback(() => {\n dispatch(chytLoadList());\n }, [dispatch]);\n\n useUpdater(update);\n\n return <WithStickyToolbar toolbar={<ChytPageListToolbar />} content={<ChytPageListTable />} />;\n}\n","import {ThunkAction} from 'redux-thunk';\n\nimport {CHYT_CLIQUE} from '../../../constants/chyt-page';\nimport {RootState} from '../../../store/reducers';\nimport {ChytCliqueAction} from '../../../store/reducers/chyt/clique';\nimport {getCluster, isDeveloper} from '../../../store/selectors/global';\nimport CancelHelper, {isCancelled} from '../../../utils/cancel-helper';\nimport {chytApiAction} from './api';\n\ntype ChytCliqueThunkAction<T = void> = ThunkAction<T, RootState, unknown, ChytCliqueAction>;\n\nconst cancelHelper = new CancelHelper();\n\nexport function chytCliqueLoad(alias: string): ChytCliqueThunkAction {\n return (dispatch, getState) => {\n dispatch({type: CHYT_CLIQUE.REQUEST, data: {currentClique: alias}});\n const state = getState();\n const cluster = getCluster(state);\n const isAdmin = isDeveloper(state);\n return chytApiAction(\n 'get_brief_info',\n cluster,\n {alias},\n {\n isAdmin,\n cancelToken: cancelHelper.removeAllAndGenerateNextToken(),\n skipErrorToast: true,\n },\n )\n .then((data) => {\n dispatch({type: CHYT_CLIQUE.SUCCESS, data: {data: data.result}});\n })\n .catch((error) => {\n if (!isCancelled(error)) {\n dispatch({type: CHYT_CLIQUE.FAILURE, data: {error}});\n }\n });\n };\n}\n\nexport function chytResetCurrentClique(): ChytCliqueAction {\n return {type: CHYT_CLIQUE.PARTITION, data: {currentClique: ''}};\n}\n","import {RootState} from '../../../store/reducers';\n\nexport const getChytCliqueData = (state: RootState) => state.chyt.clique.data;\nexport const getChytCliqueError = (state: RootState) => state.chyt.clique.error;\n\nexport const getChytCliqueInitialLoading = (state: RootState) => {\n const {loaded, loading} = state.chyt.clique;\n return !loaded && loading;\n};\n\nexport const getChytCliqueStartError = (state: RootState) => state.chyt.clique.data?.error;\n","import React from 'react';\nimport {useSelector} from 'react-redux';\n\nimport {getChytCurrentAlias} from '../../../store/selectors/chyt';\nimport {AccessContentAcl} from '../../../components/ACL/ACL-connect-helpers';\n\nexport function ChytPageCliqueAcl() {\n const alias = useSelector(getChytCurrentAlias);\n return <AccessContentAcl path={`//sys/access_control_object_namespaces/chyt/${alias}`} />;\n}\n","import {DialogField} from './Dialog';\n\nimport format from '../../common/hammer/format';\nimport {UnipikaSettings} from '../Yson/StructuredYson/StructuredYsonTypes';\n\nexport type OptionsGroup = {\n title: string;\n options: Array<OptionDescription>;\n hidden: boolean;\n};\n\nexport type OptionDescription =\n | (Option<'string', string> & {choices?: Array<string>})\n | Option<'bool', boolean>\n | (Option<'uint64' | 'int64' | 'byte_count', number> & {\n max_value?: number;\n min_value?: number;\n })\n | Option<'yson', JsonAsString>\n | Option<'path' | 'pool', string>;\n\nexport type JsonAsString = string;\n\nexport type Option<TypeName extends string, T> = {\n name: string;\n type: TypeName;\n current_value?: T | null;\n default_value?: T;\n description?: string;\n};\n\nexport function descriptionToDialogField<T = unknown>(\n item: OptionDescription,\n {unipikaSettings, allowEdit}: MakeDialogFieldsOptions,\n): DialogField<T> & {initialValue?: unknown; converter: Converter} {\n const common = {\n name: item.name,\n caption: format.ReadableField(item.name),\n tooltip: item.description,\n converter: makeConverter<any>(),\n };\n const {default_value} = item;\n const extras = {\n disabled: !allowEdit,\n placeholder:\n default_value !== null && default_value !== undefined\n ? String(item.default_value)\n : undefined,\n };\n\n switch (item.type) {\n case 'string': {\n if (!item.choices?.length) {\n return {...common, type: 'text', extras};\n } else {\n return {\n ...common,\n type: 'select',\n extras: {\n ...extras,\n width: 'max',\n options: item.choices.map((value) => {\n return {value, content: value};\n }),\n hasClear: true,\n },\n converter: CONVERTER.string_with_choices,\n };\n }\n }\n case 'bool':\n return {\n ...common,\n type: 'tumbler',\n extras,\n initialValue: item.current_value ?? item.default_value,\n };\n case 'int64':\n case 'uint64':\n case 'byte_count': {\n const valueFormat = item.type === 'byte_count' ? 'Bytes' : undefined;\n const defaultFormatted =\n valueFormat === 'Bytes'\n ? format.Bytes(item.default_value)\n : format.Number(item.default_value);\n return {\n ...common,\n type: 'number',\n extras: {\n ...extras,\n hidePrettyValue: true,\n placeholder: item.default_value !== undefined ? defaultFormatted : undefined,\n min: item.min_value,\n max: item.max_value,\n format: valueFormat,\n integerOnly: true,\n showHint: true,\n },\n converter: CONVERTER.number,\n };\n }\n case 'yson':\n return {\n ...common,\n type: 'json',\n fullWidth: true,\n extras: {\n ...extras,\n unipikaSettings,\n minHeight: 200,\n nullPreview: item.default_value,\n },\n converter: CONVERTER.json,\n };\n case 'path':\n return {...common, type: 'path', extras};\n case 'pool':\n return {...common, type: 'pool', extras: {...extras, allowEmpty: true}};\n default:\n return {...common, type: 'plain'};\n }\n}\n\nfunction makeConverter<T>() {\n return {\n toFieldValue(value: any) {\n return value as T;\n },\n fromFieldValue(value: any, _oldV?: any) {\n return value;\n },\n };\n}\n\nconst CONVERTER: Record<string, ReturnType<typeof makeConverter>> = {\n number: {\n toFieldValue(value: unknown) {\n return {value: value === null ? undefined : (value as number | undefined)};\n },\n fromFieldValue(value: any, _oldV?: any) {\n return value?.value;\n },\n },\n json: {\n toFieldValue(value: unknown) {\n return {value: value !== undefined ? JSON.stringify(value, null, 2) : undefined};\n },\n fromFieldValue(value: any, oldV?: any) {\n try {\n return JSON.parse(value.value);\n } catch {\n return oldV;\n }\n },\n },\n plain: {\n toFieldValue(value: unknown) {\n return JSON.stringify(value);\n },\n fromFieldValue(value: any, _oldV?: any) {\n return value !== undefined ? JSON.parse(value) : undefined;\n },\n },\n string_with_choices: {\n toFieldValue(value: string) {\n return value ? [value] : [];\n },\n fromFieldValue(value: Array<string>, _oldV?: any) {\n return value?.[0];\n },\n },\n};\n\nfunction converterByType(item: OptionDescription) {\n return CONVERTER[item.type] ?? makeConverter<any>();\n}\n\ntype Converter = ReturnType<typeof converterByType>;\n\nfunction makeDialogField<FormValues = any>(\n item: OptionDescription,\n dstInitialValues: any,\n dstConvertersByName: Record<string, {type: DialogField['type']; converter: Converter}>,\n options: MakeDialogFieldsOptions,\n) {\n const {initialValue, converter, ...res} = descriptionToDialogField<FormValues>(item, options);\n const {type} = res;\n\n dstInitialValues[item.name] = initialValue ?? converter.toFieldValue(item.current_value);\n dstConvertersByName[item.name] = {type: type!, converter};\n\n return res;\n}\n\ntype MakeDialogFieldsOptions = {\n allowEdit: boolean;\n unipikaSettings: UnipikaSettings;\n};\n\nexport function makeDialogFieldsFromDescription<\n FormValues extends Record<string, unknown> = Record<string, unknown>,\n>(data: Array<OptionsGroup>, options: MakeDialogFieldsOptions) {\n const initialValues: Record<string, any> = {};\n const typeByName: Record<\n string,\n {type: DialogField['type']; converter: ReturnType<typeof makeConverter>}\n > = {};\n return {\n fieldTypeByName: typeByName,\n initialValues: initialValues,\n fields: data?.map((group) => {\n const sectionFields: Array<DialogField<FormValues>> = group.options.map((item) => {\n return makeDialogField(item, initialValues, typeByName, options);\n });\n\n return {\n section: group.title,\n fields: sectionFields,\n collapsible: true,\n initialCollapsed: group.hidden,\n };\n }),\n };\n}\n\nexport function makeTabbedDialogFieldsFromDescription<\n FormValues extends Record<string, Record<string, unknown>> = Record<\n string,\n Record<string, unknown>\n >,\n>(data: Array<OptionsGroup>, options: MakeDialogFieldsOptions) {\n const initialValues: Partial<FormValues> = {};\n const typeByName: Record<\n string,\n {type: DialogField['type']; converter: ReturnType<typeof makeConverter>}\n > = {};\n return {\n fieldTypeByName: typeByName,\n initialValues: initialValues,\n fields: data?.map((group, index) => {\n const group_name = `group_${index}`;\n const groupInitialValues = ((initialValues as any)[group_name] = {});\n const sectionFields: Array<DialogField<FormValues>> = group.options.map((item) => {\n return makeDialogField(item, groupInitialValues, typeByName, options);\n });\n\n return {\n name: group_name,\n title: group.title,\n type: 'tab-vertical' as const,\n fields: sectionFields,\n };\n }),\n };\n}\n","import {RootState} from '../../reducers';\n\nexport const getChytOptionsData = (state: RootState) => state.chyt.options.data;\nexport const getChytOptionsDataAlias = (state: RootState) => state.chyt.options.dataAlias;\nexport const getChytOptionsError = (state: RootState) => state.chyt.options.error;\n","import {ThunkAction} from 'redux-thunk';\n\nimport CancelHelper, {isCancelled} from '../../../utils/cancel-helper';\nimport {ChytCliqueSpecletAction} from '../../reducers/chyt/speclet';\nimport {RootState} from '../../reducers';\nimport {getCluster, isDeveloper} from '../../selectors/global';\nimport {chytApiAction} from './api';\nimport {CHYT_SPECLET} from '../../../constants/chyt-page';\n\ntype OptionsThunkAction = ThunkAction<Promise<void>, RootState, unknown, ChytCliqueSpecletAction>;\n\nconst cancelHelper = new CancelHelper();\n\nexport function chytLoadCliqueSpeclet(alias: string): OptionsThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const cluster = getCluster(state);\n const isAdmin = isDeveloper(state);\n\n return chytApiAction(\n 'get_speclet',\n cluster,\n {alias},\n {\n isAdmin,\n cancelToken: cancelHelper.removeAllAndGenerateNextToken(),\n skipErrorToast: true,\n },\n )\n .then((data) => {\n dispatch({type: CHYT_SPECLET.SUCCESS, data: {data: data.result, dataAlias: alias}});\n })\n .catch((error) => {\n if (!isCancelled(error)) {\n dispatch({type: CHYT_SPECLET.FAILURE, data: {error}});\n }\n });\n };\n}\n","import {ThunkAction} from 'redux-thunk';\n\nimport CancelHelper, {isCancelled} from '../../../utils/cancel-helper';\nimport {wrapApiPromiseByToaster} from '../../../utils/utils';\nimport {ChytCliqueOptionsAction} from '../../reducers/chyt/options';\nimport {RootState} from '../../reducers';\nimport {getCluster, isDeveloper} from '../../selectors/global';\nimport {ChytListAttributes, ChytListResponseItem, chytApiAction} from './api';\nimport {CHYT_OPTIONS} from '../../../constants/chyt-page';\nimport {chytCliqueLoad} from './clique';\nimport {chytLoadCliqueSpeclet} from './speclet';\n\ntype OptionsThunkAction = ThunkAction<Promise<void>, RootState, unknown, ChytCliqueOptionsAction>;\n\nconst cancelHelper = new CancelHelper();\n\nexport function chytLoadCliqueOptions(\n alias: string,\n showTooltipError?: boolean,\n): OptionsThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const cluster = getCluster(state);\n const isAdmin = isDeveloper(state);\n dispatch({type: CHYT_OPTIONS.REQUEST, data: {dataAlias: alias}});\n\n return wrapApiPromiseByToaster(\n chytApiAction(\n 'describe_options',\n cluster,\n {alias},\n {\n isAdmin,\n cancelToken: cancelHelper.removeAllAndGenerateNextToken(),\n skipErrorToast: true,\n },\n ),\n {\n toasterName: 'chytLoadCliqueOptions_' + alias,\n skipSuccessToast: true,\n skipErrorToast: !showTooltipError,\n },\n )\n .then((data) => {\n dispatch({type: CHYT_OPTIONS.SUCCESS, data: {data: data.result, dataAlias: alias}});\n })\n .catch((error) => {\n if (!isCancelled(error)) {\n dispatch({type: CHYT_OPTIONS.FAILURE, data: {error}});\n }\n });\n };\n}\n\nexport function chytEditOptions(\n alias: string,\n options: Required<ChytListResponseItem>['$attributes'],\n): OptionsThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const cluster = getCluster(state);\n const isAdmin = isDeveloper(state);\n\n const options_to_remove: Array<ChytListAttributes> = [];\n const options_to_set: typeof options = {};\n\n Object.keys(options).forEach((k) => {\n const key = k as ChytListAttributes;\n if (options[key] === undefined) {\n options_to_remove.push(key);\n } else {\n options_to_set[key] = options[key] as any;\n }\n });\n\n return chytApiAction(\n 'edit_options',\n cluster,\n {alias, options_to_set, options_to_remove},\n {isAdmin},\n ).then(() => {\n dispatch(chytLoadCliqueOptions(alias));\n dispatch(chytCliqueLoad(alias));\n dispatch(chytLoadCliqueSpeclet(alias));\n });\n };\n}\n","import {RootState} from '../../reducers';\n\nexport const getChytSpecletLoaded = (state: RootState) => state.chyt.speclet.loaded;\nexport const getChytSpecletData = (state: RootState) => state.chyt.speclet.data;\nexport const getChytSpecletDataAlias = (state: RootState) => state.chyt.speclet.dataAlias;\nexport const getChytSpecletError = (state: RootState) => state.chyt.speclet.error;\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport reduce_ from 'lodash/reduce';\nimport cn from 'bem-cn-lite';\n\nimport {Text} from '@gravity-ui/uikit';\n\nimport Button from '../../../components/Button/Button';\nimport Error from '../../../components/Error/Error';\nimport Icon from '../../../components/Icon/Icon';\nimport {YTDFDialog} from '../../../components/Dialog/Dialog';\nimport Yson from '../../../components/Yson/Yson';\nimport {UnipikaSettings} from '../../../components/Yson/StructuredYson/StructuredYsonTypes';\nimport {makeTabbedDialogFieldsFromDescription} from '../../../components/Dialog/df-dialog-utils';\n\nimport {useUpdater} from '../../../hooks/use-updater';\n\nimport {getChytCurrentAlias} from '../../../store/selectors/chyt';\nimport {\n getChytOptionsData,\n getChytOptionsDataAlias,\n getChytOptionsError,\n} from '../../../store/selectors/chyt/options';\nimport {getEditJsonYsonSettings} from '../../../store/selectors/thor/unipika';\nimport {chytLoadCliqueSpeclet} from '../../../store/actions/chyt/speclet';\nimport {chytEditOptions, chytLoadCliqueOptions} from '../../../store/actions/chyt/options';\nimport {ChytCliqueOptionsState} from '../../../store/reducers/chyt/options';\nimport {\n getChytSpecletData,\n getChytSpecletDataAlias,\n getChytSpecletError,\n getChytSpecletLoaded,\n} from '../../../store/selectors/chyt/speclet';\nimport {useThunkDispatch} from '../../../store/thunkDispatch';\nimport {YTError} from '../../../../@types/types';\n\nimport './ChytPageCliqueSpeclet.scss';\n\nconst block = cn('yt-chyt-clique-speclet');\n\nfunction useSpecletData({\n showTooltipError,\n skipLoad,\n}: {showTooltipError?: boolean; skipLoad?: boolean} = {}) {\n const dispatch = useDispatch();\n const alias = useSelector(getChytCurrentAlias);\n\n React.useMemo(() => {\n if (alias && !skipLoad) {\n dispatch(chytLoadCliqueOptions(alias, showTooltipError));\n }\n }, [alias, skipLoad, showTooltipError, dispatch]);\n\n const specletData = useSelector(getChytOptionsData);\n const dataAlias = useSelector(getChytOptionsDataAlias);\n const error = useSelector(getChytOptionsError);\n const unipikaSettings = useSelector(getEditJsonYsonSettings);\n\n return {alias, specletData, dataAlias, error, unipikaSettings};\n}\n\nexport function ChytPageCliqueSpeclet() {\n const dispatch = useDispatch();\n const {error, alias, specletData, unipikaSettings} = useSpecletData({skipLoad: true});\n\n const update = React.useCallback(() => {\n if (alias) {\n dispatch(chytLoadCliqueSpeclet(alias));\n }\n }, [alias, dispatch]);\n\n useUpdater(update);\n\n return (\n <React.Fragment>\n {error && <Error bottomMargin error={error} />}\n {!specletData ? null : (\n <React.Fragment>\n <div className={block('edit')}>\n <ChytSpecletEditButton skipLoad />\n </div>\n <ChytSpeclet alias={alias} unipikaSettings={unipikaSettings} />\n </React.Fragment>\n )}\n </React.Fragment>\n );\n}\n\nfunction ChytSpeclet({alias, unipikaSettings}: {alias?: string; unipikaSettings: UnipikaSettings}) {\n const data = useSelector(getChytSpecletData);\n const error = useSelector(getChytSpecletError);\n const dataAlias = useSelector(getChytSpecletDataAlias);\n const loaded = useSelector(getChytSpecletLoaded);\n\n return dataAlias !== alias ? null : (\n <div className={block()}>\n {error && <Error className={block('raw-speclet-error')} error={error} bottomMargin />}\n {loaded && (\n <Yson\n className={block('raw-speclet')}\n value={data}\n settings={unipikaSettings}\n folding\n />\n )}\n </div>\n );\n}\n\nexport function ChytSpecletEditButton({\n compact,\n className,\n skipLoad,\n}: {\n compact?: boolean;\n className?: string;\n skipLoad?: boolean;\n}) {\n const [visible, setVisible] = React.useState(false);\n\n const {specletData, dataAlias, alias, unipikaSettings} = useSpecletData({\n showTooltipError: true,\n skipLoad,\n });\n\n return (\n <React.Fragment>\n {!visible || !specletData ? null : (\n <ChytSpecletEditDialog\n key={dataAlias}\n data={specletData}\n alias={alias}\n unipikaSettings={unipikaSettings}\n allowEdit={dataAlias === alias}\n onClose={() => setVisible(false)}\n />\n )}\n <Button\n size=\"m\"\n view={compact ? 'normal' : undefined}\n className={className}\n title={'Edit speclet'}\n onClick={() => setVisible(!visible)}\n disabled={!specletData}\n >\n <Icon awesome={'pencil'} />\n {!compact && 'Edit speclet'}\n </Button>\n </React.Fragment>\n );\n}\n\nfunction ChytSpecletEditDialog({\n alias,\n data,\n allowEdit,\n unipikaSettings,\n onClose,\n}: {\n allowEdit: boolean;\n alias: string;\n data: ChytCliqueOptionsState['data'];\n unipikaSettings: UnipikaSettings;\n onClose: () => void;\n}) {\n const dispatch = useThunkDispatch();\n const [error, setError] = React.useState<YTError | undefined>();\n\n const {fields, initialValues, fieldTypeByName} = React.useMemo(() => {\n return makeTabbedDialogFieldsFromDescription(data ?? [], {\n allowEdit,\n unipikaSettings,\n });\n }, [data, allowEdit, unipikaSettings]);\n\n return (\n <React.Fragment>\n {error && <Error bottomMargin error={error} />}\n <YTDFDialog\n className={block('dialog')}\n size=\"l\"\n visible\n onClose={onClose}\n onAdd={(form) => {\n const {values: formValues} = form.getState();\n const values = reduce_(\n formValues,\n (acc, tabValues) => {\n return {...acc, ...tabValues};\n },\n {},\n );\n\n const {restart_on_speclet_change} = values as any;\n const initials = reduce_(\n initialValues,\n (acc, tabValues) => {\n return {...acc, ...tabValues};\n },\n {},\n );\n const diff = reduce_(\n values as any,\n (acc, value, key) => {\n const oldValue = initials[key as keyof typeof initials];\n const {converter} = fieldTypeByName[key];\n const oldV = converter.fromFieldValue(oldValue);\n const v = converter.fromFieldValue(value, oldV);\n if (v !== oldV) {\n if (v !== null && v !== undefined && v !== '') {\n acc[key] = v;\n } else {\n acc[key] = undefined;\n }\n }\n return acc;\n },\n {restart_on_speclet_change} as Record<string, unknown>,\n );\n\n return dispatch(chytEditOptions(alias, diff))\n .then(() => {\n setError(undefined);\n })\n .catch((e: any) => setError(e));\n }}\n fields={fields}\n initialValues={initialValues}\n headerProps={{\n title: (\n <span>\n Edit clique{' '}\n <Text ellipsis variant=\"header-1\" color=\"secondary\">\n {alias}\n </Text>\n </span>\n ),\n }}\n />\n </React.Fragment>\n );\n}\n","import React from 'react';\nimport {useSelector} from 'react-redux';\n\nimport UIFactory from '../../../UIFactory';\nimport {getCluster} from '../../../store/selectors/global';\nimport {getChytCurrentAlias} from '../../../store/selectors/chyt';\nimport {NoContent} from '../../../components/NoContent/NoContent';\n\nexport function ChytPageCliqueMonitoring() {\n const cluster = useSelector(getCluster);\n const alias = useSelector(getChytCurrentAlias);\n\n const {component: MonitoginComponnet} = UIFactory.getMonitoringComponentForChyt() ?? {};\n if (!MonitoginComponnet) {\n return <NoContent />;\n }\n\n return <MonitoginComponnet cluster={cluster} alias={alias} />;\n}\n","import React from 'react';\nimport {Redirect, Route, Switch, useRouteMatch} from 'react-router';\nimport {useSelector} from 'react-redux';\n\nimport {ChytCliquePageTab} from '../../../constants/chyt-page';\nimport Tabs from '../../../components/Tabs/Tabs';\nimport {getCluster} from '../../../store/selectors/global';\nimport {getChytCurrentAlias} from '../../../store/selectors/chyt';\nimport {makeTabProps} from '../../../utils';\nimport {formatByParams} from '../../../utils/format';\nimport UIFactory from '../../../UIFactory';\n\nimport {ChytPageCliqueAcl} from './ChytPageCliqueAcl';\nimport {ChytPageCliqueSpeclet} from './ChytPageCliqueSpeclet';\nimport {ChytPageCliqueMonitoring} from './ChytPageCliqueMonitoring';\n\nexport function ChytPageCliqueTabs({className}: {className?: string}) {\n const match = useRouteMatch();\n\n const ytCluster = useSelector(getCluster);\n const chytAlias = useSelector(getChytCurrentAlias);\n\n const chytMonitoring = UIFactory.getMonitoringComponentForChyt();\n\n const tabProps = React.useMemo(() => {\n const {component, urlTemplate, title} = chytMonitoring ?? {};\n const useTemplate = urlTemplate && !component;\n return makeTabProps(\n match.url,\n ChytCliquePageTab,\n {\n [ChytCliquePageTab.MONITORING]: useTemplate\n ? {\n show: true,\n external: true,\n url: formatByParams(urlTemplate, {ytCluster, chytAlias}),\n title,\n }\n : {show: Boolean(component)},\n },\n undefined,\n );\n }, [ytCluster, chytAlias, match.url, chytMonitoring]);\n\n const allowMonitoring = Boolean(chytMonitoring?.component);\n return (\n <React.Fragment>\n <Tabs className={className} {...tabProps} routed />\n <Switch>\n {allowMonitoring && (\n <Route\n path={`${match.url}/${ChytCliquePageTab.MONITORING}`}\n component={ChytPageCliqueMonitoring}\n />\n )}\n <Route\n path={`${match.url}/${ChytCliquePageTab.SPECLET}`}\n component={ChytPageCliqueSpeclet}\n />\n <Route\n path={`${match.url}/${ChytCliquePageTab.ACL}`}\n component={ChytPageCliqueAcl}\n />\n <Redirect\n to={`${match.url}/${\n allowMonitoring ? ChytCliquePageTab.MONITORING : ChytCliquePageTab.SPECLET\n }`}\n />\n </Switch>\n </React.Fragment>\n );\n}\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {RouteComponentProps, useHistory} from 'react-router';\nimport moment from 'moment';\nimport cn from 'bem-cn-lite';\n\nimport {Loader, Text} from '@gravity-ui/uikit';\n\nimport format from '../../../common/hammer/format';\n\nimport {useUpdater} from '../../../hooks/use-updater';\nimport Alert from '../../../components/Alert/Alert';\nimport Error from '../../../components/Error/Error';\nimport Label from '../../../components/Label/Label';\nimport {OperationPool} from '../../../components/OperationPool/OperationPool';\nimport MetaTable, {MetaTableItem} from '../../../components/MetaTable/MetaTable';\nimport {OperationId} from '../../../components/OperationId/OperationId';\nimport {UserCard} from '../../../components/UserLink/UserLink';\n\nimport {useQueryWidgetSidePanel} from '../../../pages/query-tracker/QueryWidget/side-panel';\n\nimport {chytCliqueLoad, chytResetCurrentClique} from '../../../store/actions/chyt/clique';\nimport {\n getChytCliqueData,\n getChytCliqueError,\n getChytCliqueInitialLoading,\n getChytCliqueStartError,\n} from '../../../store/selectors/chyt/clique';\nimport {getCluster} from '../../../store/selectors/global';\nimport {Page} from '../../../../shared/constants/settings';\n\nimport {CHYT_TABLE_TITLES} from '../../../constants/chyt-page';\nimport {CliqueState} from '../components/CliqueState';\nimport {ChytCliqueActions, useCliqueOnSqlAction} from '../ChytCliqueActions/ChytCliqueActions';\nimport {ChytPageCliqueTabs} from './ChytPageCliqueTabs';\nimport {ChytSpecletEditButton} from './ChytPageCliqueSpeclet';\n\nimport './ChytPageClique.scss';\n\nconst block = cn('chyt-page-clique');\n\nexport function ChytPageClique(props: RouteComponentProps<{alias: string}>) {\n const dispatch = useDispatch();\n const history = useHistory();\n const cluster = useSelector(getCluster);\n\n const {alias} = props.match.params;\n const update = React.useCallback(() => {\n dispatch(chytCliqueLoad(alias));\n }, [alias, dispatch]);\n\n React.useEffect(() => {\n return () => {\n dispatch(chytResetCurrentClique());\n };\n }, [alias, dispatch]);\n\n const {pool} = useSelector(getChytCliqueData) ?? {};\n const initialLoading = useSelector(getChytCliqueInitialLoading);\n\n useUpdater(update);\n\n const {openWidget, widgetContent} = useQueryWidgetSidePanel();\n const onSqlClick = useCliqueOnSqlAction(openWidget);\n\n return (\n <div className={block()}>\n <div className={block('header')}>\n <Text variant=\"header-1\">\n CHYT clique{' '}\n <Text variant=\"header-1\" color=\"secondary\">\n {alias}\n </Text>\n </Text>\n {initialLoading && <Loader className={block('loader')} size=\"s\" />}\n <span className={block('spacer')} />\n\n <ChytCliqueActions\n alias={alias}\n pool={pool}\n showAllButtons\n onAction={(action) => {\n if (action === 'remove') {\n history.push(`/${cluster}/${Page.CHYT}`);\n } else {\n update();\n }\n }}\n onSqlClick={onSqlClick}\n />\n <span className={block('edit')}>\n <ChytSpecletEditButton compact />\n </span>\n </div>\n <ChytCliqueErrors />\n <ChytCliqueMetaTable />\n <ChytPageCliqueTabs className={block('tabs')} />\n {widgetContent}\n </div>\n );\n}\n\nfunction ChytCliqueErrors() {\n const error = useSelector(getChytCliqueError);\n const startError = useSelector(getChytCliqueStartError);\n const {health_reason} = useSelector(getChytCliqueData) ?? {};\n\n return (\n <React.Fragment>\n {error ? <Error className={block('error')} error={error} bottomMargin /> : null}\n {startError ? (\n <Error\n header=\"Failed to start\"\n className={block('error')}\n error={{message: startError}}\n bottomMargin\n />\n ) : null}\n {health_reason ? (\n <Alert header=\"Health reason\" type=\"alert\" message={health_reason} bottomMargin />\n ) : null}\n </React.Fragment>\n );\n}\n\nfunction ChytCliqueMetaTable() {\n const cluster = useSelector(getCluster);\n const data = useSelector(getChytCliqueData);\n\n const items: Array<Array<MetaTableItem>> = React.useMemo(() => {\n const {\n pool,\n state,\n stage,\n ctl_attributes,\n yt_operation,\n health,\n incarnation_index,\n creator,\n speclet_modification_time,\n strawberry_state_modification_time,\n } = data ?? {};\n\n const {start_time, finish_time, id} = yt_operation ?? {};\n\n const start_time_number = start_time ? moment(start_time).valueOf() : undefined;\n const finish_time_number = finish_time\n ? moment(finish_time).valueOf()\n : start_time_number\n ? Date.now()\n : undefined;\n\n const duration =\n !start_time_number || !finish_time_number\n ? undefined\n : finish_time_number - start_time_number;\n\n return [\n [\n {key: 'Health', value: <CliqueState state={health} />},\n {key: 'State', value: <CliqueState state={state} />},\n {\n key: 'Pool',\n value: pool ? (\n <OperationPool cluster={cluster} pool={{pool, tree: 'physical'}} />\n ) : (\n format.NO_VALUE\n ),\n },\n {key: 'Instances', value: format.Number(ctl_attributes?.instance_count)},\n {key: 'Cores', value: format.Number(ctl_attributes?.total_cpu)},\n {key: 'Memory', value: format.Bytes(ctl_attributes?.total_memory)},\n ],\n [\n {key: 'Stage', value: stage ? <Label capitalize text={stage} /> : format.NO_VALUE},\n {key: 'Incarnation index', value: format.Number(incarnation_index)},\n {\n key: 'Creator',\n value: creator ? <UserCard userName={creator} /> : format.NO_VALUE,\n },\n {\n key: CHYT_TABLE_TITLES['speclet_modification_time'],\n value: format.DateTime(speclet_modification_time),\n },\n {\n key: CHYT_TABLE_TITLES['strawberry_state_modification_time'],\n value: format.DateTime(strawberry_state_modification_time),\n },\n ],\n [\n {\n key: 'YT operation id',\n value: (\n <div className={block('operation-id')}>\n <OperationId id={id} cluster={cluster} />\n </div>\n ),\n },\n {\n key: 'YT operation state',\n value: yt_operation?.state\n ? format.ReadableField(yt_operation?.state)\n : format.NO_VALUE,\n },\n {\n key: 'Start time',\n value: format.DateTime(start_time),\n },\n {\n key: 'Finish time',\n value: format.DateTime(finish_time),\n },\n {\n key: 'Duration',\n value: duration ? format.TimeDuration(duration) : format.NO_VALUE,\n },\n ],\n ];\n }, [data, cluster]);\n\n return <MetaTable items={items} />;\n}\n","import React from 'react';\nimport {Route, Switch} from 'react-router';\n\nimport {Page} from '../../../shared/constants/settings';\n\nimport ErrorBoundary from '../../components/ErrorBoundary/ErrorBoundary';\n\nimport {ChytPageList} from './ChytPageList/ChytPageList';\nimport {ChytPageClique} from './ChytPageClique/ChytPageClique';\n\nexport default function ChytPage() {\n return (\n <div className=\"elements-main-section\">\n <ErrorBoundary>\n <Switch>\n <Route path={`/:cluster/${Page.CHYT}/:alias`} component={ChytPageClique} />\n <Route path={`/:cluster/${Page.CHYT}`} component={ChytPageList} />\n </Switch>\n </ErrorBoundary>\n </div>\n );\n}\n","import axios, {CancelToken} from 'axios';\nimport {wrapApiPromiseByToaster} from '../../../utils/utils';\nimport {YTError} from '../../../../@types/types';\nimport {OptionsGroup} from '../../../components/Dialog/df-dialog-utils';\n\nexport type WithResult<T> = {result: T};\n\nexport type ChytListAttributes = keyof Required<ChytListResponseItem>['$attributes'];\n\nexport type ChytDescribeOptionsType = Array<OptionsGroup>;\n\nexport type ChytApi =\n | {action: 'list'; params: {attributes?: Array<ChytListAttributes>}; response: ChytListResponse}\n | {action: 'start'; params: {alias: string; untracked?: boolean}; response: void}\n | {action: 'stop'; params: {alias: string}; response: void}\n | {action: 'remove'; params: {alias: string}; response: void}\n | {\n action: 'create';\n params: {\n alias: string;\n speclet_options: {\n active: boolean;\n pool?: string;\n instance_count: number;\n };\n };\n response: void;\n }\n | {\n action: 'edit_options';\n params: {\n alias: string;\n options_to_set: Partial<ChytListResponseItem['$attributes']>;\n options_to_remove: Array<ChytListAttributes>;\n };\n response: void;\n }\n | {\n action: 'describe_options';\n params: {alias: string};\n response: WithResult<ChytDescribeOptionsType>;\n }\n | {action: 'get_speclet'; params: {alias: string}; response: WithResult<unknown>}\n | {action: 'get_brief_info'; params: {alias: string}; response: WithResult<ChytStatusResponse>};\n\nexport type ChytStatusResponse = {\n ctl_attributes: {\n instance_count?: number;\n total_cpu?: number;\n total_memory?: number;\n };\n yt_operation: {\n id?: string;\n state?: string;\n start_time?: string;\n finish_time?: string;\n };\n state?: ChytCliqueStateType;\n health?: ChytCliqueHealthType;\n health_reason?: unknown;\n incarnation_index?: number;\n creator?: string;\n speclet_modification_time?: string;\n strawberry_state_modification_time?: string;\n stage?: string;\n\n pool?: string;\n error?: YTError;\n};\n\nexport type ChytListResponse = WithResult<Array<ChytListResponseItem>>;\n\nexport type ChytListResponseItem = {\n $value: string;\n $attributes?: {\n pool?: string;\n creator?: string;\n creation_time?: string;\n health?: ChytCliqueHealthType;\n health_reason?: string;\n instance_count?: number;\n speclet_modification_time?: string;\n stage?: string;\n state?: ChytCliqueStateType;\n strawberry_state_modification_time?: string;\n total_cpu?: number;\n total_memory?: number;\n yt_operation_id?: string;\n yt_operation_finish_time?: string;\n yt_operation_start_time?: string;\n };\n};\n\nexport type ChytCliqueHealthType = 'good' | 'pending' | 'failed';\nexport type ChytCliqueStateType = 'active' | 'inactive' | 'untracked';\n\nexport function chytApiAction<\n T extends ChytApi['action'] = never,\n ApiItem extends ChytApi & {action: T} = ChytApi & {action: T},\n>(\n action: T,\n cluster: string,\n params: ApiItem['params'],\n {\n cancelToken,\n skipErrorToast,\n successTitle,\n isAdmin,\n }: {\n cancelToken?: CancelToken;\n skipErrorToast?: boolean;\n successTitle?: string;\n isAdmin?: boolean;\n } = {},\n) {\n const query = isAdmin ? '?isDeveloper=true' : '';\n return wrapApiPromiseByToaster(\n axios.request<ApiItem['response']>({\n method: 'POST',\n url: `/api/chyt/${cluster}/${action}${query}`,\n data: {\n params: {...params},\n },\n cancelToken,\n }),\n {\n toasterName: `clique-${action}`,\n skipSuccessToast: !successTitle,\n successTitle,\n skipErrorToast,\n errorTitle: `'${action}' action failed`,\n },\n ).then((response) => {\n return response.data;\n });\n}\n","import type {ThunkAction} from 'redux-thunk';\n\nimport type {RootState} from '../../reducers';\nimport type {ChytListAction} from '../../reducers/chyt/list';\nimport {CHYT_LIST} from '../../../constants/chyt-page';\nimport CancelHelper, {isCancelled} from '../../../utils/cancel-helper';\nimport {getCluster, isDeveloper} from '../../../store/selectors/global';\nimport {getChytListVisibleColumns} from '../../../store/selectors/chyt';\n\nimport {ChytApi, chytApiAction} from './api';\nimport {SettingsThunkAction, setSettingByKey} from '../settings';\n\ntype ChytListThunkAction<T> = ThunkAction<Promise<T>, RootState, unknown, ChytListAction>;\n\nconst cancelHelper = new CancelHelper();\n\nexport function chytLoadList(): ChytListThunkAction<void> {\n return (dispatch, getState) => {\n const state = getState();\n const cluster = getCluster(state);\n const isAdmin = isDeveloper(state);\n const columns = getChytListVisibleColumns(state);\n\n dispatch({type: CHYT_LIST.REQUEST});\n\n const extraColumns = -1 === columns.indexOf('pool') ? ['pool' as const] : [];\n\n const attributesSet = new Set([\n 'yt_operation_id' as const,\n 'creator' as const,\n 'state' as const,\n 'health' as const,\n 'health_reason' as const,\n ...columns,\n ...extraColumns,\n ]);\n\n return chytApiAction(\n 'list',\n cluster,\n {attributes: [...attributesSet]},\n {isAdmin, cancelToken: cancelHelper.removeAllAndGenerateNextToken()},\n )\n .then((data) => {\n const items = data?.result?.map(({$value, $attributes = {}}) => {\n return {\n alias: $value,\n ...$attributes,\n };\n });\n\n dispatch({type: CHYT_LIST.SUCCESS, data: {data: {items}}});\n })\n .catch((error) => {\n if (!isCancelled(error)) {\n dispatch({type: CHYT_LIST.FAILURE, data: {error}});\n }\n });\n };\n}\n\nexport function chytListAction<\n T extends ChytApi['action'],\n ApiItem extends ChytApi & {action: T} = ChytApi & {action: T},\n>(\n action: T,\n params: ApiItem['params'],\n {skipLoadList}: {skipLoadList?: boolean} = {},\n): ChytListThunkAction<ApiItem['response']> {\n return (dispatch, getState) => {\n const state = getState();\n const cluster = getCluster(state);\n const isAdmin = isDeveloper(state);\n\n return chytApiAction(action, cluster, params, {isAdmin}).then((d) => {\n if (!skipLoadList) {\n dispatch(chytLoadList());\n }\n return d;\n });\n };\n}\n\nexport function chytCliqueCreate(params: {\n alias: string;\n instance_count: number;\n pool: string;\n runAfterCreation: boolean;\n}): ChytListThunkAction<void> {\n return (dispatch, getState) => {\n const state = getState();\n const cluster = getCluster(state);\n const isAdmin = isDeveloper(state);\n\n const {alias, runAfterCreation, pool, instance_count} = params;\n return chytApiAction(\n 'create',\n cluster,\n {\n alias,\n speclet_options: {\n active: runAfterCreation && Boolean(pool),\n instance_count,\n ...(pool ? {pool} : undefined),\n },\n },\n {isAdmin, successTitle: `${alias} clique created`},\n ).finally(() => {\n dispatch(chytLoadList());\n });\n };\n}\n\nexport function chytSetVisibleColumns(columns: Array<string>): SettingsThunkAction {\n return (dispatch) => {\n return dispatch(setSettingByKey('global::chyt::list_columns', columns)).then(() => {\n dispatch(chytLoadList());\n });\n };\n}\n"],"names":["block","cn","ChytPageListToolbar","dispatch","useDispatch","onUpdate","React","filters","data","type","CHYT_LIST_FILTERS","_jsx","Toolbar","itemsToWrap","name","node","NameIdFilter","growable","wrapperClassName","CreatorFilter","StateFilter","HealthFilter","ChytListColumnsButton","_ref","value","useSelector","getChytListFilterAlias","TextInput","placeholder","_ref2","getChytListFilterCreator","creators","getChytListAvailableCreators","items","map","item","text","SelectSingle","className","label","onChange","creator","_ref3","getChytListFilterHealth","choices","getChytListAvailableHealths","health","_ref4","getChytListFilterState","states","getChytListAvailableStates","state","_React$useState","_React$useState2","_slicedToArray","visible","setVisible","columns","getChytListColumns","dialog","ColumnSelectorModal","isVisible","i","_CHYT_TABLE_TITLES$i$","CHYT_TABLE_TITLES","column","format","ReadableField","checked","onConfirm","newColumns","filter","chytSetVisibleColumns","onCancel","_jsxs","children","Button","view","onClick","OperationId","id","cluster","color","allowCopy","operationId","Text","variant","Link","theme","url","concat","Page","OPERATIONS","routed","ClipboardButton","visibleOnRowHover","inlineMargins","NO_VALUE","THEME_MAP","good","failed","active","pending","untracked","CliqueState","Label","hideTitle","capitalize","ChytConfirmation","action","alias","pool","onClose","onAction","ChytSimpleConfirmation","ChytStartConfirmation","useThunkDispatch","error","setError","YTDFDialog","pristineSubmittable","headerProps","title","_Fragment","footerProps","textApply","onAdd","chytListAction","then","undefined","fields","extras","_toConsumableArray","makeErrorFields","_React$useState3","_React$useState4","initialValues","form","getState","values","isApplyDisabled","_state$values","Boolean","caption","tooltip","visibilityCondition","when","isActive","v","useCliqueOnSqlAction","openWidget","getCluster","allowQueryTracker","isQueryTrackerAllowed","setTimeout","updateQueryDraft","engine","QueryEngine","CHYT","query","settings","clique","UIFactory","onChytAliasSqlClick","ChytCliqueActions","showAllButtons","allButtonsClassName","onSqlClick","visibleConfirmation","setVisibleConirmation","start","icon","Icon","awesome","stop","remove","menuItems","sqlButton","DropdownMenu","switcher","ChytListHeader","_ref16","_CHYT_TABLE_TITLES$co","withUndefined","sortState","getChytListTableSortStateByName","ColumnHeader","_objectSpread","allowUnordered","sortable","toggleSort","col","nextOrder","options","order","prevSortState","getChytListTableSortState","updateSortStateArray","chytToggleSortState","DateTimeCell","_ref17","time","DateTime","lastSpace","lastIndexOf","substring","ChytPageListTable","getChytListTableItems","_useQueryWidgetSidePa","useQueryWidgetSidePanel","widgetContent","checkedColumns","getChytListVisibleColumns","columnsByName","header","render","row","OperationPool","tree","width","instance_count","Number","align","total_cpu","total_memory","Bytes","_ref5","Tooltip","content","health_reason","creation_time","_ref6","speclet_modification_time","_ref7","stage","_ref8","strawberry_state_modification_time","_ref9","yt_operation_finish_time","_ref10","yt_operation_start_time","_ref11","_ref12","UserCard","userName","_ref13","res","_ref14","yt_operation_id","_ref15","useChytListColumns","DataTableYT","DATA_TABLE_YT_SETTINGS_UNDER_TOOLBAR","useThemeYT","ChytPageList","update","chytLoadList","useUpdater","WithStickyToolbar","toolbar","cancelHelper","CancelHelper","chytCliqueLoad","CHYT_CLIQUE","REQUEST","currentClique","isAdmin","isDeveloper","chytApiAction","cancelToken","removeAllAndGenerateNextToken","skipErrorToast","SUCCESS","result","isCancelled","FAILURE","getChytCliqueData","chyt","getChytCliqueError","getChytCliqueInitialLoading","_state$chyt$clique","loaded","loading","getChytCliqueStartError","_state$chyt$clique$da","ChytPageCliqueAcl","getChytCurrentAlias","AccessContentAcl","path","CONVERTER","number","toFieldValue","fromFieldValue","_oldV","json","JSON","stringify","oldV","parse","_unused","plain","string_with_choices","getChytOptionsData","getChytOptionsDataAlias","dataAlias","getChytOptionsError","chytLoadCliqueSpeclet","CHYT_SPECLET","chytLoadCliqueOptions","showTooltipError","CHYT_OPTIONS","wrapApiPromiseByToaster","toasterName","skipSuccessToast","getChytSpecletLoaded","speclet","getChytSpecletData","getChytSpecletDataAlias","getChytSpecletError","useSpecletData","arguments","length","skipLoad","specletData","unipikaSettings","getEditJsonYsonSettings","ChytPageCliqueSpeclet","_useSpecletData","Error","bottomMargin","ChytSpecletEditButton","ChytSpeclet","Yson","folding","compact","_useSpecletData2","ChytSpecletEditDialog","allowEdit","size","disabled","_React$useMemo","typeByName","fieldTypeByName","group","index","group_name","groupInitialValues","sectionFields","dstInitialValues","dstConvertersByName","_descriptionToDialogF","_item$current_value","common","description","converter","default_value","String","_item$choices","hasClear","initialValue","current_value","valueFormat","defaultFormatted","hidePrettyValue","min","min_value","max","max_value","integerOnly","showHint","fullWidth","minHeight","nullPreview","allowEmpty","descriptionToDialogField","_objectWithoutProperties","_excluded","makeDialogField","makeTabbedDialogFieldsFromDescription","formValues","reduce_","acc","tabValues","restart_on_speclet_change","initials","diff","key","oldValue","options_to_remove","options_to_set","Object","keys","forEach","k","push","chytEditOptions","e","ellipsis","ChytPageCliqueMonitoring","_UIFactory$getMonitor","MonitoginComponnet","getMonitoringComponentForChyt","component","NoContent","ChytPageCliqueTabs","match","useRouteMatch","ytCluster","chytAlias","chytMonitoring","tabProps","urlTemplate","useTemplate","makeTabProps","ChytCliquePageTab","_defineProperty","MONITORING","show","external","formatByParams","allowMonitoring","Tabs","Switch","Route","SPECLET","ACL","Redirect","to","ChytPageClique","props","_useSelector","history","useHistory","params","PARTITION","initialLoading","Loader","ChytCliqueErrors","ChytCliqueMetaTable","_useSelector2","startError","message","Alert","ctl_attributes","yt_operation","incarnation_index","start_time","finish_time","start_time_number","moment","valueOf","finish_time_number","Date","now","duration","TimeDuration","MetaTable","ChytPage","ErrorBoundary","successTitle","axios","request","method","errorTitle","response","CHYT_LIST","extraColumns","indexOf","attributesSet","Set","attributes","_data$result","$value","_ref$$attributes","$attributes","skipLoadList","d","chytCliqueCreate","runAfterCreation","speclet_options","setSettingByKey"],"sourceRoot":""}
1
+ {"version":3,"file":"js/943.40ff6440.chunk.js","mappings":"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","sources":["webpack://@ytsaurus/ui/./src/ui/pages/chyt/ChytPageList/ChytPageListToolbar.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/chyt/list-fitlers.ts","webpack://@ytsaurus/ui/./src/ui/components/OperationId/OperationId.tsx","webpack://@ytsaurus/ui/./src/ui/pages/chyt/components/CliqueState.tsx","webpack://@ytsaurus/ui/./src/ui/pages/chyt/ChytConfirmation/ChytConfirmation.tsx","webpack://@ytsaurus/ui/./src/ui/pages/chyt/ChytCliqueActions/ChytCliqueActions.tsx","webpack://@ytsaurus/ui/./src/ui/pages/chyt/ChytPageList/ChytPageListTable.tsx","webpack://@ytsaurus/ui/./src/ui/pages/chyt/ChytPageList/ChytPageList.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/chyt/clique.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/chyt/clique.ts","webpack://@ytsaurus/ui/./src/ui/pages/chyt/ChytPageClique/ChytPageCliqueAcl.tsx","webpack://@ytsaurus/ui/./src/ui/components/Dialog/df-dialog-utils.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/chyt/options.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/chyt/speclet.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/chyt/options.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/chyt/speclet.ts","webpack://@ytsaurus/ui/./src/ui/pages/chyt/ChytPageClique/ChytPageCliqueSpeclet.tsx","webpack://@ytsaurus/ui/./src/ui/pages/chyt/ChytPageClique/ChytPageCliqueMonitoring.tsx","webpack://@ytsaurus/ui/./src/ui/pages/chyt/ChytPageClique/ChytPageCliqueTabs.tsx","webpack://@ytsaurus/ui/./src/ui/pages/chyt/ChytPageClique/ChytPageClique.tsx","webpack://@ytsaurus/ui/./src/ui/pages/chyt/ChytPage.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/chyt/api.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/chyt/list.ts"],"sourcesContent":["import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport {Button, TextInput} from '@gravity-ui/uikit';\n\nimport format from '../../../common/hammer/format';\n\nimport {Toolbar} from '../../../components/WithStickyToolbar/Toolbar/Toolbar';\nimport {SelectSingle} from '../../../components/Select/Select';\nimport ColumnSelectorModal from '../../../components/ColumnSelectorModal/ColumnSelectorModal';\n\nimport {chytUpdateListFilters} from '../../../store/actions/chyt/list-fitlers';\nimport {\n getChytListAvailableCreators,\n getChytListAvailableHealths,\n getChytListAvailableStates,\n getChytListColumns,\n getChytListFilterAlias,\n getChytListFilterCreator,\n getChytListFilterHealth,\n getChytListFilterState,\n} from '../../../store/selectors/chyt';\nimport {ChytListFilters} from '../../../store/reducers/chyt/list-filters';\nimport {chytSetVisibleColumns} from '../../../store/actions/chyt/list';\nimport {CHYT_TABLE_TITLES} from '../../../constants/chyt-page';\n\nimport './ChytPageListToolbar.scss';\n\nconst block = cn('chyt-list-toolbar');\n\nfunction ChytPageListToolbar() {\n const dispatch = useDispatch();\n\n const onUpdate = React.useCallback(\n (filters: Partial<ChytListFilters>) => {\n dispatch(chytUpdateListFilters(filters));\n },\n [dispatch],\n );\n\n return (\n <Toolbar\n itemsToWrap={[\n {\n name: 'alias',\n node: <NameIdFilter onUpdate={onUpdate} />,\n growable: true,\n wrapperClassName: block('name-filter'),\n },\n {\n name: 'creator',\n node: <CreatorFilter onUpdate={onUpdate} />,\n },\n {\n name: 'state',\n node: <StateFilter onUpdate={onUpdate} />,\n },\n {\n name: 'health',\n node: <HealthFilter onUpdate={onUpdate} />,\n },\n {\n name: 'columns',\n node: <ChytListColumnsButton />,\n },\n ]}\n />\n );\n}\n\nfunction NameIdFilter({onUpdate}: {onUpdate: (value: {name: string}) => void}) {\n const value = useSelector(getChytListFilterAlias);\n\n return (\n <TextInput\n value={value}\n onUpdate={(name) => {\n onUpdate({name});\n }}\n placeholder=\"Filter by alias name or id...\"\n />\n );\n}\n\nfunction CreatorFilter({onUpdate}: {onUpdate: (value: {creator?: string}) => void}) {\n const value = useSelector(getChytListFilterCreator);\n const creators = useSelector(getChytListAvailableCreators);\n\n const items = React.useMemo(() => {\n return creators.map((item) => {\n return {\n value: item,\n text: item,\n };\n });\n }, [creators]);\n\n return (\n <SelectSingle\n className={block('select-filter')}\n label=\"Creator:\"\n value={value}\n items={items}\n onChange={(creator) => {\n onUpdate({creator});\n }}\n />\n );\n}\n\nfunction HealthFilter({onUpdate}: {onUpdate: (value: {health?: string}) => void}) {\n const value = useSelector(getChytListFilterHealth);\n const choices = useSelector(getChytListAvailableHealths);\n\n const items = React.useMemo(() => {\n return choices.map((item) => {\n return {\n value: item,\n text: item,\n };\n });\n }, [choices]);\n\n return (\n <SelectSingle\n className={block('select-filter')}\n label=\"Health:\"\n value={value}\n items={items}\n onChange={(health) => {\n onUpdate({health});\n }}\n />\n );\n}\n\nfunction StateFilter({onUpdate}: {onUpdate: (value: {state?: string}) => void}) {\n const value = useSelector(getChytListFilterState);\n const states = useSelector(getChytListAvailableStates);\n\n const items = React.useMemo(() => {\n return states.map((item) => {\n return {\n value: item,\n text: item,\n };\n });\n }, [states]);\n return (\n <SelectSingle\n className={block('select-filter')}\n label=\"State:\"\n value={value}\n items={items}\n onChange={(state) => {\n onUpdate({state});\n }}\n />\n );\n}\n\nfunction ChytListColumnsButton() {\n const dispatch = useDispatch();\n\n const [visible, setVisible] = React.useState(false);\n const columns = useSelector(getChytListColumns);\n\n const dialog = (\n <ColumnSelectorModal\n isVisible={visible}\n items={columns.map((i) => {\n return {\n name: CHYT_TABLE_TITLES[i.column] ?? format.ReadableField(i.column),\n checked: i.checked,\n data: {\n column: i.column,\n },\n };\n })}\n onConfirm={(value) => {\n const newColumns = value.filter((i) => i.checked).map((i) => i.data.column);\n dispatch(chytSetVisibleColumns(newColumns));\n setVisible(false);\n }}\n onCancel={() => setVisible(false)}\n />\n );\n\n return (\n <React.Fragment>\n {visible && dialog}\n <Button view=\"outlined\" onClick={() => setVisible(true)}>\n Columns\n </Button>\n </React.Fragment>\n );\n}\n\nexport default React.memo(ChytPageListToolbar);\n","import {ThunkAction} from 'redux-thunk';\n\nimport {CHYT_LIST_FILTERS} from '../../../constants/chyt-page';\nimport {RootState} from '../../../store/reducers';\nimport {ChytInfo} from '../../../store/reducers/chyt/list';\nimport {ChytListFilters, ChytListFiltersAction} from '../../reducers/chyt/list-filters';\nimport {getChytListTableSortState} from '../../../store/selectors/chyt';\nimport {OrderType, updateSortStateArray} from '../../../utils/sort-helpers';\n\ntype ChytFiltersThunkAction<T = unknown> = ThunkAction<\n T,\n RootState,\n unknown,\n ChytListFiltersAction\n>;\n\nexport function chytUpdateListFilters(data: Partial<ChytListFilters>): ChytListFiltersAction {\n return {type: CHYT_LIST_FILTERS, data};\n}\n\nexport function chytToggleSortState(\n column: keyof ChytInfo,\n order: OrderType,\n options: {multisort?: boolean},\n): ChytFiltersThunkAction {\n return (dispatch, getState) => {\n const prevSortState = getChytListTableSortState(getState());\n const sortState = updateSortStateArray(prevSortState, {column, order}, options);\n\n dispatch({type: CHYT_LIST_FILTERS, data: {sortState}});\n };\n}\n","import React from 'react';\n\nimport {Text} from '@gravity-ui/uikit';\n\nimport Link from '../../components/Link/Link';\nimport format from '../../common/hammer/format';\nimport {Page} from '../../../shared/constants/settings';\nimport ClipboardButton from '../../components/ClipboardButton/ClipboardButton';\n\nexport function OperationId({\n id,\n cluster,\n color,\n allowCopy,\n}: {\n id?: string;\n color?: 'secondary';\n cluster: string;\n allowCopy?: boolean;\n}) {\n const operationId = id && id !== '0-0-0-0' ? id : null;\n\n return (\n <Text variant=\"code-1\" color={color}>\n {operationId ? (\n <React.Fragment>\n <Link\n theme={color}\n url={`/${cluster}/${Page.OPERATIONS}/${operationId}`}\n routed\n >\n {operationId}\n </Link>\n {allowCopy && (\n <ClipboardButton\n text={operationId}\n view=\"clear\"\n visibleOnRowHover\n inlineMargins\n />\n )}\n </React.Fragment>\n ) : (\n format.NO_VALUE\n )}\n </Text>\n );\n}\n","import React from 'react';\n\nimport format from '../../../common/hammer/format';\nimport Label from '../../../components/Label/Label';\nimport {ChytCliqueHealthType, ChytCliqueStateType} from '../../../store/actions/chyt/api';\n\nconst THEME_MAP: Partial<\n Record<ChytCliqueStateType | ChytCliqueHealthType, 'danger' | 'success' | 'info' | 'warning'>\n> = {\n good: 'success',\n failed: 'danger',\n active: 'success',\n pending: 'info',\n untracked: 'warning',\n};\n\nexport function CliqueState({state}: {state?: ChytCliqueStateType | ChytCliqueHealthType}) {\n return !state ? (\n format.NO_VALUE\n ) : (\n <Label text={state} theme={THEME_MAP[state]} hideTitle capitalize />\n );\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport {Text} from '@gravity-ui/uikit';\n\nimport format from '../../../common/hammer/format';\n\nimport {YTDFDialog, makeErrorFields} from '../../../components/Dialog/Dialog';\nimport {YTError} from '../../../types';\nimport {useThunkDispatch} from '../../../store/thunkDispatch';\nimport {chytListAction} from '../../../store/actions/chyt/list';\n\nimport './ChytConfirmation.scss';\n\nconst block = cn('chyt-confirmation');\n\nexport type ChytConfirmationProps = {\n action: 'remove' | 'start' | 'stop';\n alias: string;\n pool?: string;\n onClose: () => void;\n onAction?: (action: ChytConfirmationProps['action']) => void;\n};\n\nexport function ChytConfirmation({action, alias, pool, onClose, onAction}: ChytConfirmationProps) {\n const onConfirm = () => {\n if (action) {\n onAction?.(action);\n }\n };\n switch (action) {\n case 'stop':\n case 'remove':\n return <ChytSimpleConfirmation {...{alias, action, onClose, onConfirm}} />;\n case 'start':\n return <ChytStartConfirmation {...{alias, onClose, onConfirm, pool}} />;\n default:\n return null;\n }\n}\n\ntype ConfirmationProps = {\n alias: string;\n pool?: string;\n onClose: () => void;\n onConfirm: () => void;\n};\n\nfunction ChytSimpleConfirmation({\n alias,\n action,\n onClose,\n onConfirm,\n}: ConfirmationProps & {action: 'remove' | 'stop'}) {\n const dispatch = useThunkDispatch();\n\n const [error, setError] = React.useState<YTError | undefined>();\n\n return (\n <YTDFDialog\n visible\n pristineSubmittable\n headerProps={{\n title: (\n <>\n {format.ReadableField(action)}{' '}\n <Text variant=\"header-1\" color=\"secondary\">\n {alias}\n </Text>\n </>\n ),\n }}\n footerProps={{textApply: `Yes, ${action} ${alias}`}}\n onAdd={() => {\n return dispatch(chytListAction('stop', {alias: alias}))\n .then(() => {\n if (action === 'remove') {\n return dispatch(chytListAction('remove', {alias}));\n } else {\n return null;\n }\n })\n .then(() => {\n onConfirm();\n setError(undefined);\n })\n .catch((error: any) => {\n setError(error);\n throw error;\n });\n }}\n fields={[\n {\n type: 'block',\n name: 'text',\n extras: {\n children: (\n <>\n Are you sure you want to {action} the clique{' '}\n <Text color=\"secondary\">{alias}</Text>?\n </>\n ),\n },\n },\n ...makeErrorFields([error]),\n ]}\n onClose={onClose}\n />\n );\n}\n\ntype StartFormValues = {\n pool: string;\n untracked: boolean;\n};\n\nfunction ChytStartConfirmation({\n alias,\n onClose,\n pool,\n onConfirm,\n}: Omit<ConfirmationProps, 'action'>) {\n const dispatch = useThunkDispatch();\n const [error, setError] = React.useState();\n\n return (\n <YTDFDialog<StartFormValues>\n visible\n className={block('start')}\n headerProps={{\n title: (\n <>\n Start clique{' '}\n <Text variant=\"header-1\" color=\"secondary\">\n {alias}\n </Text>\n </>\n ),\n }}\n footerProps={{textApply: `Start clique ${alias}`}}\n onClose={onClose}\n initialValues={{pool: pool}}\n onAdd={(form) => {\n const {untracked} = form.getState().values;\n return dispatch(chytListAction('start', {alias, untracked}))\n .then(() => {\n onConfirm();\n setError(undefined);\n })\n .catch((error: any) => {\n setError(error);\n throw error;\n });\n }}\n isApplyDisabled={(state) => {\n const {\n values: {pool, untracked},\n } = state;\n return Boolean(!pool && !untracked);\n }}\n fields={[\n {\n type: 'plain',\n name: 'pool',\n caption: 'Pool',\n extras: {\n placeholder: format.NO_VALUE,\n },\n },\n {\n type: 'tumbler',\n name: 'untracked',\n tooltip:\n \"YT Operation for a clique in untracked mode is started using the current user's credentials in the user's default pool. Such clique is not tracked by the controller and will not be restarted in case of any failures or speclet updates.\",\n caption: 'Untracked',\n },\n {\n type: 'block',\n name: 'untrackedNotice',\n visibilityCondition: {\n when: 'untracked',\n isActive: (v) => v,\n },\n extras: {\n children: (\n <Text color=\"warning\" variant=\"body-2\">\n {`Usage of untracked cliques is strictly discouraged.`}\n </Text>\n ),\n },\n },\n ...makeErrorFields([error]),\n ]}\n />\n );\n}\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport {Button, DropdownMenu, DropdownMenuItem} from '@gravity-ui/uikit';\n\nimport Icon from '../../../components/Icon/Icon';\nimport {getCluster, isQueryTrackerAllowed} from '../../../store/selectors/global';\nimport {updateQueryDraft} from '../../../pages/query-tracker/module/query/actions';\nimport {QueryEngine} from '../../../pages/query-tracker/module/engines';\nimport UIFactory from '../../../UIFactory';\n\nimport {ChytConfirmation} from '../ChytConfirmation/ChytConfirmation';\n\nimport './ChytCliqueActions.scss';\n\nconst block = cn('chyt-clique-actions');\n\nexport function useCliqueOnSqlAction(openWidget: () => void) {\n const cluster = useSelector(getCluster);\n const allowQueryTracker = useSelector(isQueryTrackerAllowed);\n const dispatch = useDispatch();\n\n return React.useCallback(\n (alias: string) => {\n if (allowQueryTracker) {\n setTimeout(() => {\n dispatch(\n updateQueryDraft({\n engine: QueryEngine.CHYT,\n query: `SELECT 1;`,\n settings: {cluster, clique: alias},\n }),\n );\n }, 500);\n openWidget();\n } else {\n UIFactory.onChytAliasSqlClick({alias, cluster});\n }\n },\n [cluster, openWidget, allowQueryTracker, dispatch],\n );\n}\n\nexport function ChytCliqueActions({\n alias,\n pool,\n showAllButtons,\n allButtonsClassName,\n onAction,\n onSqlClick,\n}: {\n showAllButtons?: boolean;\n allButtonsClassName?: string;\n alias: string;\n pool?: string;\n onSqlClick: (alias: string) => void;\n onAction?: (action: 'remove' | 'start' | 'stop') => void;\n}) {\n const [visibleConfirmation, setVisibleConirmation] = React.useState<\n undefined | 'remove' | 'start' | 'stop'\n >();\n\n const start = {\n icon: <Icon awesome=\"play-circle\" />,\n text: 'Start',\n action: () => {\n setVisibleConirmation('start');\n },\n };\n const stop = {\n icon: <Icon awesome=\"stop-circle\" />,\n text: 'Stop',\n action: () => {\n setVisibleConirmation('stop');\n },\n };\n const remove = {\n icon: <Icon awesome=\"trash-alt\" />,\n text: 'Remove',\n action: () => {\n setVisibleConirmation('remove');\n },\n };\n\n const menuItems: Array<Array<DropdownMenuItem>> = [[start, stop], [remove]];\n\n const sqlButton = (\n <Button view=\"flat\" onClick={() => onSqlClick(alias)}>\n <Icon awesome=\"sql\" />\n </Button>\n );\n\n return (\n <React.Fragment>\n {visibleConfirmation !== undefined && (\n <ChytConfirmation\n alias={alias}\n pool={pool}\n action={visibleConfirmation}\n onClose={() => setVisibleConirmation(undefined)}\n onAction={onAction}\n />\n )}\n {showAllButtons ? (\n <span className={block('chyt-clique-actions', allButtonsClassName)}>\n <span className={block('item')}>{sqlButton}</span>\n\n <span className={block('item')}>\n <Button\n title=\"Start\"\n onClick={() => {\n start.action();\n }}\n >\n <Icon awesome=\"play-circle\" />\n </Button>\n </span>\n\n <span className={block('item')}>\n <Button\n title=\"Stop\"\n onClick={() => {\n stop.action();\n }}\n >\n <Icon awesome=\"stop-circle\" />\n </Button>\n </span>\n\n <Button\n title=\"Remove\"\n onClick={() => {\n remove.action();\n }}\n >\n <Icon awesome=\"trash-alt\" />\n </Button>\n </span>\n ) : (\n <React.Fragment>\n {sqlButton}\n <DropdownMenu\n switcher={\n <Button view=\"flat\">\n <Icon awesome=\"ellipsis-h\" />\n </Button>\n }\n items={menuItems}\n />\n </React.Fragment>\n )}\n </React.Fragment>\n );\n}\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport {Column} from '@gravity-ui/react-data-table';\nimport {Text} from '@gravity-ui/uikit';\n\nimport format from '../../../common/hammer/format';\n\nimport DataTableYT, {\n DATA_TABLE_YT_SETTINGS_UNDER_TOOLBAR,\n} from '../../../components/DataTableYT/DataTableYT';\nimport ClipboardButton from '../../../components/ClipboardButton/ClipboardButton';\nimport ColumnHeader from '../../../components/ColumnHeader/ColumnHeader';\nimport Icon from '../../../components/Icon/Icon';\nimport Link from '../../../components/Link/Link';\nimport {OperationId} from '../../../components/OperationId/OperationId';\nimport {UserCard} from '../../../components/UserLink/UserLink';\nimport Label from '../../../components/Label/Label';\nimport {Tooltip} from '../../../components/Tooltip/Tooltip';\n\nimport {chytToggleSortState} from '../../../store/actions/chyt/list-fitlers';\nimport {getCluster} from '../../../store/selectors/global';\nimport {\n getChytListTableItems,\n getChytListTableSortStateByName,\n getChytListVisibleColumns,\n} from '../../../store/selectors/chyt';\nimport {ChytInfo} from '../../../store/reducers/chyt/list';\nimport {Page} from '../../../../shared/constants/settings';\nimport {CHYT_TABLE_TITLES} from '../../../constants/chyt-page';\nimport {OperationPool} from '../../../components/OperationPool/OperationPool';\nimport {useQueryWidgetSidePanel} from '../../../pages/query-tracker/QueryWidget/side-panel';\n\nimport {CliqueState} from '../components/CliqueState';\n\nimport {ChytCliqueActions, useCliqueOnSqlAction} from '../ChytCliqueActions/ChytCliqueActions';\nimport './ChytPageListTable.scss';\n\nconst block = cn('chyt-page-list-table');\n\nfunction useChytListColumns(cluster: string, onSqlClick: (alias: string) => void) {\n const checkedColumns = useSelector(getChytListVisibleColumns);\n\n const columns: Array<Column<ChytInfo>> = React.useMemo(() => {\n const columnsByName = {\n pool: {\n name: 'pool',\n header: <ChytListHeader column=\"pool\" />,\n render({row}) {\n return !row.pool ? (\n format.NO_VALUE\n ) : (\n <OperationPool\n className={block('pool')}\n cluster={cluster}\n pool={{pool: row.pool, tree: 'physical'}}\n />\n );\n },\n width: 320,\n } as Column<ChytInfo>,\n instance_count: {\n name: 'instance_count',\n header: <ChytListHeader column=\"instance_count\" />,\n render({row}) {\n return (\n <span className={block('one-row-cell')}>\n {row.instance_count === undefined\n ? format.NO_VALUE\n : format.Number(row.instance_count)}\n </span>\n );\n },\n align: 'right',\n width: 120,\n } as Column<ChytInfo>,\n total_cpu: {\n name: 'cores',\n header: <ChytListHeader column=\"total_cpu\" />,\n render({row}) {\n return (\n <span className={block('one-row-cell')}>\n {row.total_cpu === undefined\n ? format.NO_VALUE\n : format.Number(row.total_cpu)}\n </span>\n );\n },\n align: 'right',\n width: 100,\n } as Column<ChytInfo>,\n total_memory: {\n name: 'memory',\n header: <ChytListHeader column=\"total_memory\" />,\n render({row}) {\n return (\n <span className={block('one-row-cell')}>\n {row.total_memory === undefined\n ? format.NO_VALUE\n : format.Bytes(row.total_memory)}\n </span>\n );\n },\n align: 'right',\n width: 120,\n } as Column<ChytInfo>,\n health: {\n name: 'health',\n header: <ChytListHeader column=\"health\" />,\n render({row}) {\n return (\n <Tooltip\n className={block('health', block('one-row-cell'))}\n content={format.ReadableField(row.health_reason)}\n >\n <CliqueState state={row.health} />\n {row.health_reason && (\n <Text color=\"secondary\">\n &nbsp;\n <Icon awesome={'exclamation-triangle'} />\n </Text>\n )}\n </Tooltip>\n );\n },\n width: 120,\n } as Column<ChytInfo>,\n creation_time: {\n name: 'creation_time',\n header: <ChytListHeader column=\"creation_time\" withUndefined />,\n render({row}) {\n return <DateTimeCell value={row.creation_time} />;\n },\n width: 120,\n } as Column<ChytInfo>,\n speclet_modification_time: {\n name: 'speclet_modification_time',\n header: <ChytListHeader column=\"speclet_modification_time\" />,\n render({row}) {\n return <DateTimeCell value={row.speclet_modification_time} />;\n },\n width: 120,\n } as Column<ChytInfo>,\n stage: {\n name: 'stage',\n header: <ChytListHeader column=\"stage\" />,\n render({row}) {\n return (\n <span className={block('one-row-cell')}>{<Label text={row.stage} />}</span>\n );\n },\n width: 120,\n } as Column<ChytInfo>,\n strawberry_state_modification_time: {\n name: 'strawberry_state_modification_time',\n header: <ChytListHeader column=\"strawberry_state_modification_time\" />,\n render({row}) {\n return <DateTimeCell value={row.strawberry_state_modification_time} />;\n },\n width: 120,\n } as Column<ChytInfo>,\n yt_operation_finish_time: {\n name: 'yt_operation_finish_time',\n header: <ChytListHeader column=\"yt_operation_finish_time\" withUndefined />,\n render({row}) {\n return <DateTimeCell value={row.yt_operation_finish_time} />;\n },\n width: 120,\n } as Column<ChytInfo>,\n yt_operation_start_time: {\n name: 'yt_operation_start_time',\n header: <ChytListHeader column=\"yt_operation_start_time\" withUndefined />,\n render({row}) {\n return <DateTimeCell value={row.yt_operation_start_time} />;\n },\n width: 120,\n } as Column<ChytInfo>,\n creator: {\n name: 'creator',\n header: <ChytListHeader column=\"creator\" />,\n render({row}) {\n return (\n <div className={block('one-row-cell', block('creator'))}>\n {!row.creator ? (\n format.NO_VALUE\n ) : (\n <UserCard className={block('full-width')} userName={row.creator} />\n )}\n </div>\n );\n },\n width: 120,\n } as Column<ChytInfo>,\n state: {\n name: 'state',\n header: <ChytListHeader column=\"state\" />,\n render({row}) {\n return (\n <span className={block('one-row-cell')}>\n <CliqueState state={row.state} />\n </span>\n );\n },\n width: 120,\n } as Column<ChytInfo>,\n };\n\n const res = checkedColumns.map((i) => columnsByName[i]);\n return [\n {\n name: 'alias',\n header: <ChytListHeader column=\"alias\" />,\n render({row}) {\n return (\n <div>\n <Link\n url={`/${cluster}/${Page.CHYT}/${row.alias}`}\n theme=\"primary\"\n routed\n >\n {row.alias}\n </Link>\n <ClipboardButton\n text={row.alias}\n view=\"clear\"\n visibleOnRowHover\n inlineMargins\n />\n <div>\n <OperationId\n id={row.yt_operation_id}\n cluster={cluster}\n color=\"secondary\"\n allowCopy\n />\n </div>\n </div>\n );\n },\n } as Column<ChytInfo>,\n ...res,\n {\n name: 'actions',\n header: '',\n render({row}) {\n return (\n <span className={block('one-row-cell')}>\n <ChytCliqueActions\n alias={row.alias}\n pool={row.pool}\n onSqlClick={onSqlClick}\n />\n </span>\n );\n },\n align: 'center',\n width: 60,\n } as Column<ChytInfo>,\n ];\n }, [cluster, checkedColumns, onSqlClick]);\n\n return columns;\n}\n\nfunction ChytListHeader({\n column,\n withUndefined,\n}: {\n column: keyof ChytInfo;\n withUndefined?: boolean;\n}) {\n const dispatch = useDispatch();\n const sortState = useSelector(getChytListTableSortStateByName);\n return (\n <ColumnHeader<typeof column>\n allowUnordered\n withUndefined={withUndefined}\n column={column}\n title={CHYT_TABLE_TITLES[column] ?? format.ReadableField(column)}\n sortable\n {...sortState[column]}\n toggleSort={(col, nextOrder, options) => {\n dispatch(chytToggleSortState(col, nextOrder, options));\n }}\n />\n );\n}\n\nfunction DateTimeCell({value}: {value?: string}) {\n if (!value) {\n return <span className={block('one-row-cell')}>{format.NO_VALUE}</span>;\n }\n\n const time: string = format.DateTime(value);\n const lastSpace = time.lastIndexOf(' ');\n return (\n <React.Fragment>\n <span>{time.substring(0, lastSpace)}</span>\n <div>{time.substring(lastSpace + 1)}</div>\n </React.Fragment>\n );\n}\n\nfunction ChytPageListTable() {\n const items = useSelector(getChytListTableItems);\n const cluster = useSelector(getCluster);\n\n const {openWidget, widgetContent} = useQueryWidgetSidePanel();\n const onSqlClick = useCliqueOnSqlAction(openWidget);\n\n const columns = useChytListColumns(cluster, onSqlClick);\n\n return (\n <React.Fragment>\n <DataTableYT\n className={block()}\n settings={DATA_TABLE_YT_SETTINGS_UNDER_TOOLBAR}\n useThemeYT\n columns={columns}\n data={items}\n />\n {widgetContent}\n </React.Fragment>\n );\n}\n\nexport default React.memo(ChytPageListTable);\n","import React from 'react';\nimport {useDispatch} from 'react-redux';\n\nimport {useUpdater} from '../../../hooks/use-updater';\n\nimport WithStickyToolbar from '../../../components/WithStickyToolbar/WithStickyToolbar';\n\nimport {chytLoadList} from '../../../store/actions/chyt/list';\n\nimport ChytPageListToolbar from './ChytPageListToolbar';\nimport ChytPageListTable from './ChytPageListTable';\n\nexport function ChytPageList() {\n const dispatch = useDispatch();\n const update = React.useCallback(() => {\n dispatch(chytLoadList());\n }, [dispatch]);\n\n useUpdater(update);\n\n return <WithStickyToolbar toolbar={<ChytPageListToolbar />} content={<ChytPageListTable />} />;\n}\n","import {ThunkAction} from 'redux-thunk';\n\nimport {CHYT_CLIQUE} from '../../../constants/chyt-page';\nimport {RootState} from '../../../store/reducers';\nimport {ChytCliqueAction} from '../../../store/reducers/chyt/clique';\nimport {getCluster, isDeveloper} from '../../../store/selectors/global';\nimport CancelHelper, {isCancelled} from '../../../utils/cancel-helper';\nimport {chytApiAction} from './api';\n\ntype ChytCliqueThunkAction<T = void> = ThunkAction<T, RootState, unknown, ChytCliqueAction>;\n\nconst cancelHelper = new CancelHelper();\n\nexport function chytCliqueLoad(alias: string): ChytCliqueThunkAction {\n return (dispatch, getState) => {\n dispatch({type: CHYT_CLIQUE.REQUEST, data: {currentClique: alias}});\n const state = getState();\n const cluster = getCluster(state);\n const isAdmin = isDeveloper(state);\n return chytApiAction(\n 'get_brief_info',\n cluster,\n {alias},\n {\n isAdmin,\n cancelToken: cancelHelper.removeAllAndGenerateNextToken(),\n skipErrorToast: true,\n },\n )\n .then((data) => {\n dispatch({type: CHYT_CLIQUE.SUCCESS, data: {data: data.result}});\n })\n .catch((error) => {\n if (!isCancelled(error)) {\n dispatch({type: CHYT_CLIQUE.FAILURE, data: {error}});\n }\n });\n };\n}\n\nexport function chytResetCurrentClique(): ChytCliqueAction {\n return {type: CHYT_CLIQUE.PARTITION, data: {currentClique: ''}};\n}\n","import {RootState} from '../../../store/reducers';\n\nexport const getChytCliqueData = (state: RootState) => state.chyt.clique.data;\nexport const getChytCliqueError = (state: RootState) => state.chyt.clique.error;\n\nexport const getChytCliqueInitialLoading = (state: RootState) => {\n const {loaded, loading} = state.chyt.clique;\n return !loaded && loading;\n};\n\nexport const getChytCliqueStartError = (state: RootState) => state.chyt.clique.data?.error;\n","import React from 'react';\nimport {useSelector} from 'react-redux';\n\nimport {getChytCurrentAlias} from '../../../store/selectors/chyt';\nimport {AccessContentAcl} from '../../../components/ACL/ACL-connect-helpers';\n\nexport function ChytPageCliqueAcl() {\n const alias = useSelector(getChytCurrentAlias);\n return <AccessContentAcl path={`//sys/access_control_object_namespaces/chyt/${alias}`} />;\n}\n","import {DialogField} from './Dialog';\n\nimport format from '../../common/hammer/format';\nimport {UnipikaSettings} from '../Yson/StructuredYson/StructuredYsonTypes';\n\nexport type OptionsGroup = {\n title: string;\n options: Array<OptionDescription>;\n hidden: boolean;\n};\n\nexport type OptionDescription =\n | (Option<'string', string> & {choices?: Array<string>})\n | Option<'bool', boolean>\n | (Option<'uint64' | 'int64' | 'byte_count', number> & {\n max_value?: number;\n min_value?: number;\n })\n | Option<'yson', JsonAsString>\n | Option<'path' | 'pool', string>;\n\nexport type JsonAsString = string;\n\nexport type Option<TypeName extends string, T> = {\n name: string;\n type: TypeName;\n current_value?: T | null;\n default_value?: T;\n description?: string;\n};\n\nexport function descriptionToDialogField<T = unknown>(\n item: OptionDescription,\n {unipikaSettings, allowEdit}: MakeDialogFieldsOptions,\n): DialogField<T> & {initialValue?: unknown; converter: Converter} {\n const common = {\n name: item.name,\n caption: format.ReadableField(item.name),\n tooltip: item.description,\n converter: makeConverter<any>(),\n };\n const {default_value} = item;\n const extras = {\n disabled: !allowEdit,\n placeholder:\n default_value !== null && default_value !== undefined\n ? String(item.default_value)\n : undefined,\n };\n\n switch (item.type) {\n case 'string': {\n if (!item.choices?.length) {\n return {...common, type: 'text', extras};\n } else {\n return {\n ...common,\n type: 'select',\n extras: {\n ...extras,\n width: 'max',\n options: item.choices.map((value) => {\n return {value, content: value};\n }),\n hasClear: true,\n },\n converter: CONVERTER.string_with_choices,\n };\n }\n }\n case 'bool':\n return {\n ...common,\n type: 'tumbler',\n extras,\n initialValue: item.current_value ?? item.default_value,\n };\n case 'int64':\n case 'uint64':\n case 'byte_count': {\n const valueFormat = item.type === 'byte_count' ? 'Bytes' : undefined;\n const defaultFormatted =\n valueFormat === 'Bytes'\n ? format.Bytes(item.default_value)\n : format.Number(item.default_value);\n return {\n ...common,\n type: 'number',\n extras: {\n ...extras,\n hidePrettyValue: true,\n placeholder: item.default_value !== undefined ? defaultFormatted : undefined,\n min: item.min_value,\n max: item.max_value,\n format: valueFormat,\n integerOnly: true,\n showHint: true,\n },\n converter: CONVERTER.number,\n };\n }\n case 'yson':\n return {\n ...common,\n type: 'json',\n fullWidth: true,\n extras: {\n ...extras,\n unipikaSettings,\n minHeight: 200,\n nullPreview: item.default_value,\n },\n converter: CONVERTER.json,\n };\n case 'path':\n return {...common, type: 'path', extras};\n case 'pool':\n return {...common, type: 'pool', extras: {...extras, allowEmpty: true}};\n default:\n return {...common, type: 'plain'};\n }\n}\n\nfunction makeConverter<T>() {\n return {\n toFieldValue(value: any) {\n return value as T;\n },\n fromFieldValue(value: any, _oldV?: any) {\n return value;\n },\n };\n}\n\nconst CONVERTER: Record<string, ReturnType<typeof makeConverter>> = {\n number: {\n toFieldValue(value: unknown) {\n return {value: value === null ? undefined : (value as number | undefined)};\n },\n fromFieldValue(value: any, _oldV?: any) {\n return value?.value;\n },\n },\n json: {\n toFieldValue(value: unknown) {\n return {value: value !== undefined ? JSON.stringify(value, null, 2) : undefined};\n },\n fromFieldValue(value: any, oldV?: any) {\n try {\n return JSON.parse(value.value);\n } catch {\n return oldV;\n }\n },\n },\n plain: {\n toFieldValue(value: unknown) {\n return JSON.stringify(value);\n },\n fromFieldValue(value: any, _oldV?: any) {\n return value !== undefined ? JSON.parse(value) : undefined;\n },\n },\n string_with_choices: {\n toFieldValue(value: string) {\n return value ? [value] : [];\n },\n fromFieldValue(value: Array<string>, _oldV?: any) {\n return value?.[0];\n },\n },\n};\n\nfunction converterByType(item: OptionDescription) {\n return CONVERTER[item.type] ?? makeConverter<any>();\n}\n\ntype Converter = ReturnType<typeof converterByType>;\n\nfunction makeDialogField<FormValues = any>(\n item: OptionDescription,\n dstInitialValues: any,\n dstConvertersByName: Record<string, {type: DialogField['type']; converter: Converter}>,\n options: MakeDialogFieldsOptions,\n) {\n const {initialValue, converter, ...res} = descriptionToDialogField<FormValues>(item, options);\n const {type} = res;\n\n dstInitialValues[item.name] = initialValue ?? converter.toFieldValue(item.current_value);\n dstConvertersByName[item.name] = {type: type!, converter};\n\n return res;\n}\n\ntype MakeDialogFieldsOptions = {\n allowEdit: boolean;\n unipikaSettings: UnipikaSettings;\n};\n\nexport function makeDialogFieldsFromDescription<\n FormValues extends Record<string, unknown> = Record<string, unknown>,\n>(data: Array<OptionsGroup>, options: MakeDialogFieldsOptions) {\n const initialValues: Record<string, any> = {};\n const typeByName: Record<\n string,\n {type: DialogField['type']; converter: ReturnType<typeof makeConverter>}\n > = {};\n return {\n fieldTypeByName: typeByName,\n initialValues: initialValues,\n fields: data?.map((group) => {\n const sectionFields: Array<DialogField<FormValues>> = group.options.map((item) => {\n return makeDialogField(item, initialValues, typeByName, options);\n });\n\n return {\n section: group.title,\n fields: sectionFields,\n collapsible: true,\n initialCollapsed: group.hidden,\n };\n }),\n };\n}\n\nexport function makeTabbedDialogFieldsFromDescription<\n FormValues extends Record<string, Record<string, unknown>> = Record<\n string,\n Record<string, unknown>\n >,\n>(data: Array<OptionsGroup>, options: MakeDialogFieldsOptions) {\n const initialValues: Partial<FormValues> = {};\n const typeByName: Record<\n string,\n {type: DialogField['type']; converter: ReturnType<typeof makeConverter>}\n > = {};\n return {\n fieldTypeByName: typeByName,\n initialValues: initialValues,\n fields: data?.map((group, index) => {\n const group_name = `group_${index}`;\n const groupInitialValues = ((initialValues as any)[group_name] = {});\n const sectionFields: Array<DialogField<FormValues>> = group.options.map((item) => {\n return makeDialogField(item, groupInitialValues, typeByName, options);\n });\n\n return {\n name: group_name,\n title: group.title,\n type: 'tab-vertical' as const,\n fields: sectionFields,\n };\n }),\n };\n}\n","import {RootState} from '../../reducers';\n\nexport const getChytOptionsData = (state: RootState) => state.chyt.options.data;\nexport const getChytOptionsDataAlias = (state: RootState) => state.chyt.options.dataAlias;\nexport const getChytOptionsError = (state: RootState) => state.chyt.options.error;\n","import {ThunkAction} from 'redux-thunk';\n\nimport CancelHelper, {isCancelled} from '../../../utils/cancel-helper';\nimport {ChytCliqueSpecletAction} from '../../reducers/chyt/speclet';\nimport {RootState} from '../../reducers';\nimport {getCluster, isDeveloper} from '../../selectors/global';\nimport {chytApiAction} from './api';\nimport {CHYT_SPECLET} from '../../../constants/chyt-page';\n\ntype OptionsThunkAction = ThunkAction<Promise<void>, RootState, unknown, ChytCliqueSpecletAction>;\n\nconst cancelHelper = new CancelHelper();\n\nexport function chytLoadCliqueSpeclet(alias: string): OptionsThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const cluster = getCluster(state);\n const isAdmin = isDeveloper(state);\n\n return chytApiAction(\n 'get_speclet',\n cluster,\n {alias},\n {\n isAdmin,\n cancelToken: cancelHelper.removeAllAndGenerateNextToken(),\n skipErrorToast: true,\n },\n )\n .then((data) => {\n dispatch({type: CHYT_SPECLET.SUCCESS, data: {data: data.result, dataAlias: alias}});\n })\n .catch((error) => {\n if (!isCancelled(error)) {\n dispatch({type: CHYT_SPECLET.FAILURE, data: {error}});\n }\n });\n };\n}\n","import {ThunkAction} from 'redux-thunk';\n\nimport CancelHelper, {isCancelled} from '../../../utils/cancel-helper';\nimport {wrapApiPromiseByToaster} from '../../../utils/utils';\nimport {ChytCliqueOptionsAction} from '../../reducers/chyt/options';\nimport {RootState} from '../../reducers';\nimport {getCluster, isDeveloper} from '../../selectors/global';\nimport {ChytListAttributes, ChytListResponseItem, chytApiAction} from './api';\nimport {CHYT_OPTIONS} from '../../../constants/chyt-page';\nimport {chytCliqueLoad} from './clique';\nimport {chytLoadCliqueSpeclet} from './speclet';\n\ntype OptionsThunkAction = ThunkAction<Promise<void>, RootState, unknown, ChytCliqueOptionsAction>;\n\nconst cancelHelper = new CancelHelper();\n\nexport function chytLoadCliqueOptions(\n alias: string,\n showTooltipError?: boolean,\n): OptionsThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const cluster = getCluster(state);\n const isAdmin = isDeveloper(state);\n dispatch({type: CHYT_OPTIONS.REQUEST, data: {dataAlias: alias}});\n\n return wrapApiPromiseByToaster(\n chytApiAction(\n 'describe_options',\n cluster,\n {alias},\n {\n isAdmin,\n cancelToken: cancelHelper.removeAllAndGenerateNextToken(),\n skipErrorToast: true,\n },\n ),\n {\n toasterName: 'chytLoadCliqueOptions_' + alias,\n skipSuccessToast: true,\n skipErrorToast: !showTooltipError,\n },\n )\n .then((data) => {\n dispatch({type: CHYT_OPTIONS.SUCCESS, data: {data: data.result, dataAlias: alias}});\n })\n .catch((error) => {\n if (!isCancelled(error)) {\n dispatch({type: CHYT_OPTIONS.FAILURE, data: {error}});\n }\n });\n };\n}\n\nexport function chytEditOptions(\n alias: string,\n options: Required<ChytListResponseItem>['$attributes'],\n): OptionsThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const cluster = getCluster(state);\n const isAdmin = isDeveloper(state);\n\n const options_to_remove: Array<ChytListAttributes> = [];\n const options_to_set: typeof options = {};\n\n Object.keys(options).forEach((k) => {\n const key = k as ChytListAttributes;\n if (options[key] === undefined) {\n options_to_remove.push(key);\n } else {\n options_to_set[key] = options[key] as any;\n }\n });\n\n return chytApiAction(\n 'edit_options',\n cluster,\n {alias, options_to_set, options_to_remove},\n {isAdmin},\n ).then(() => {\n dispatch(chytLoadCliqueOptions(alias));\n dispatch(chytCliqueLoad(alias));\n dispatch(chytLoadCliqueSpeclet(alias));\n });\n };\n}\n","import {RootState} from '../../reducers';\n\nexport const getChytSpecletLoaded = (state: RootState) => state.chyt.speclet.loaded;\nexport const getChytSpecletData = (state: RootState) => state.chyt.speclet.data;\nexport const getChytSpecletDataAlias = (state: RootState) => state.chyt.speclet.dataAlias;\nexport const getChytSpecletError = (state: RootState) => state.chyt.speclet.error;\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport reduce_ from 'lodash/reduce';\nimport cn from 'bem-cn-lite';\n\nimport {Text} from '@gravity-ui/uikit';\n\nimport Button from '../../../components/Button/Button';\nimport Error from '../../../components/Error/Error';\nimport Icon from '../../../components/Icon/Icon';\nimport {YTDFDialog} from '../../../components/Dialog/Dialog';\nimport Yson from '../../../components/Yson/Yson';\nimport {UnipikaSettings} from '../../../components/Yson/StructuredYson/StructuredYsonTypes';\nimport {makeTabbedDialogFieldsFromDescription} from '../../../components/Dialog/df-dialog-utils';\n\nimport {useUpdater} from '../../../hooks/use-updater';\n\nimport {getChytCurrentAlias} from '../../../store/selectors/chyt';\nimport {\n getChytOptionsData,\n getChytOptionsDataAlias,\n getChytOptionsError,\n} from '../../../store/selectors/chyt/options';\nimport {getEditJsonYsonSettings} from '../../../store/selectors/thor/unipika';\nimport {chytLoadCliqueSpeclet} from '../../../store/actions/chyt/speclet';\nimport {chytEditOptions, chytLoadCliqueOptions} from '../../../store/actions/chyt/options';\nimport {ChytCliqueOptionsState} from '../../../store/reducers/chyt/options';\nimport {\n getChytSpecletData,\n getChytSpecletDataAlias,\n getChytSpecletError,\n getChytSpecletLoaded,\n} from '../../../store/selectors/chyt/speclet';\nimport {useThunkDispatch} from '../../../store/thunkDispatch';\nimport {YTError} from '../../../../@types/types';\n\nimport './ChytPageCliqueSpeclet.scss';\n\nconst block = cn('yt-chyt-clique-speclet');\n\nfunction useSpecletData({\n showTooltipError,\n skipLoad,\n}: {showTooltipError?: boolean; skipLoad?: boolean} = {}) {\n const dispatch = useDispatch();\n const alias = useSelector(getChytCurrentAlias);\n\n React.useMemo(() => {\n if (alias && !skipLoad) {\n dispatch(chytLoadCliqueOptions(alias, showTooltipError));\n }\n }, [alias, skipLoad, showTooltipError, dispatch]);\n\n const specletData = useSelector(getChytOptionsData);\n const dataAlias = useSelector(getChytOptionsDataAlias);\n const error = useSelector(getChytOptionsError);\n const unipikaSettings = useSelector(getEditJsonYsonSettings);\n\n return {alias, specletData, dataAlias, error, unipikaSettings};\n}\n\nexport function ChytPageCliqueSpeclet() {\n const dispatch = useDispatch();\n const {error, alias, specletData, unipikaSettings} = useSpecletData({skipLoad: true});\n\n const update = React.useCallback(() => {\n if (alias) {\n dispatch(chytLoadCliqueSpeclet(alias));\n }\n }, [alias, dispatch]);\n\n useUpdater(update);\n\n return (\n <React.Fragment>\n {error && <Error bottomMargin error={error} />}\n {!specletData ? null : (\n <React.Fragment>\n <div className={block('edit')}>\n <ChytSpecletEditButton skipLoad />\n </div>\n <ChytSpeclet alias={alias} unipikaSettings={unipikaSettings} />\n </React.Fragment>\n )}\n </React.Fragment>\n );\n}\n\nfunction ChytSpeclet({alias, unipikaSettings}: {alias?: string; unipikaSettings: UnipikaSettings}) {\n const data = useSelector(getChytSpecletData);\n const error = useSelector(getChytSpecletError);\n const dataAlias = useSelector(getChytSpecletDataAlias);\n const loaded = useSelector(getChytSpecletLoaded);\n\n return dataAlias !== alias ? null : (\n <div className={block()}>\n {error && <Error className={block('raw-speclet-error')} error={error} bottomMargin />}\n {loaded && (\n <Yson\n className={block('raw-speclet')}\n value={data}\n settings={unipikaSettings}\n folding\n />\n )}\n </div>\n );\n}\n\nexport function ChytSpecletEditButton({\n compact,\n className,\n skipLoad,\n}: {\n compact?: boolean;\n className?: string;\n skipLoad?: boolean;\n}) {\n const [visible, setVisible] = React.useState(false);\n\n const {specletData, dataAlias, alias, unipikaSettings} = useSpecletData({\n showTooltipError: true,\n skipLoad,\n });\n\n return (\n <React.Fragment>\n {!visible || !specletData ? null : (\n <ChytSpecletEditDialog\n key={dataAlias}\n data={specletData}\n alias={alias}\n unipikaSettings={unipikaSettings}\n allowEdit={dataAlias === alias}\n onClose={() => setVisible(false)}\n />\n )}\n <Button\n size=\"m\"\n view={compact ? 'normal' : undefined}\n className={className}\n title={'Edit speclet'}\n onClick={() => setVisible(!visible)}\n disabled={!specletData}\n >\n <Icon awesome={'pencil'} />\n {!compact && 'Edit speclet'}\n </Button>\n </React.Fragment>\n );\n}\n\nfunction ChytSpecletEditDialog({\n alias,\n data,\n allowEdit,\n unipikaSettings,\n onClose,\n}: {\n allowEdit: boolean;\n alias: string;\n data: ChytCliqueOptionsState['data'];\n unipikaSettings: UnipikaSettings;\n onClose: () => void;\n}) {\n const dispatch = useThunkDispatch();\n const [error, setError] = React.useState<YTError | undefined>();\n\n const {fields, initialValues, fieldTypeByName} = React.useMemo(() => {\n return makeTabbedDialogFieldsFromDescription(data ?? [], {\n allowEdit,\n unipikaSettings,\n });\n }, [data, allowEdit, unipikaSettings]);\n\n return (\n <React.Fragment>\n {error && <Error bottomMargin error={error} />}\n <YTDFDialog\n className={block('dialog')}\n size=\"l\"\n visible\n onClose={onClose}\n onAdd={(form) => {\n const {values: formValues} = form.getState();\n const values = reduce_(\n formValues,\n (acc, tabValues) => {\n return {...acc, ...tabValues};\n },\n {},\n );\n\n const {restart_on_speclet_change} = values as any;\n const initials = reduce_(\n initialValues,\n (acc, tabValues) => {\n return {...acc, ...tabValues};\n },\n {},\n );\n const diff = reduce_(\n values as any,\n (acc, value, key) => {\n const oldValue = initials[key as keyof typeof initials];\n const {converter} = fieldTypeByName[key];\n const oldV = converter.fromFieldValue(oldValue);\n const v = converter.fromFieldValue(value, oldV);\n if (v !== oldV) {\n if (v !== null && v !== undefined && v !== '') {\n acc[key] = v;\n } else {\n acc[key] = undefined;\n }\n }\n return acc;\n },\n {restart_on_speclet_change} as Record<string, unknown>,\n );\n\n return dispatch(chytEditOptions(alias, diff))\n .then(() => {\n setError(undefined);\n })\n .catch((e: any) => setError(e));\n }}\n fields={fields}\n initialValues={initialValues}\n headerProps={{\n title: (\n <span>\n Edit clique{' '}\n <Text ellipsis variant=\"header-1\" color=\"secondary\">\n {alias}\n </Text>\n </span>\n ),\n }}\n />\n </React.Fragment>\n );\n}\n","import React from 'react';\nimport {useSelector} from 'react-redux';\n\nimport UIFactory from '../../../UIFactory';\nimport {getCluster} from '../../../store/selectors/global';\nimport {getChytCurrentAlias} from '../../../store/selectors/chyt';\nimport {NoContent} from '../../../components/NoContent/NoContent';\n\nexport function ChytPageCliqueMonitoring() {\n const cluster = useSelector(getCluster);\n const alias = useSelector(getChytCurrentAlias);\n\n const {component: MonitoginComponnet} = UIFactory.getMonitoringComponentForChyt() ?? {};\n if (!MonitoginComponnet) {\n return <NoContent />;\n }\n\n return <MonitoginComponnet cluster={cluster} alias={alias} />;\n}\n","import React from 'react';\nimport {Redirect, Route, Switch, useRouteMatch} from 'react-router';\nimport {useSelector} from 'react-redux';\n\nimport {ChytCliquePageTab} from '../../../constants/chyt-page';\nimport Tabs from '../../../components/Tabs/Tabs';\nimport {getCluster} from '../../../store/selectors/global';\nimport {getChytCurrentAlias} from '../../../store/selectors/chyt';\nimport {makeTabProps} from '../../../utils';\nimport {formatByParams} from '../../../utils/format';\nimport UIFactory from '../../../UIFactory';\n\nimport {ChytPageCliqueAcl} from './ChytPageCliqueAcl';\nimport {ChytPageCliqueSpeclet} from './ChytPageCliqueSpeclet';\nimport {ChytPageCliqueMonitoring} from './ChytPageCliqueMonitoring';\n\nexport function ChytPageCliqueTabs({className}: {className?: string}) {\n const match = useRouteMatch();\n\n const ytCluster = useSelector(getCluster);\n const chytAlias = useSelector(getChytCurrentAlias);\n\n const chytMonitoring = UIFactory.getMonitoringComponentForChyt();\n\n const tabProps = React.useMemo(() => {\n const {component, urlTemplate, title} = chytMonitoring ?? {};\n const useTemplate = urlTemplate && !component;\n return makeTabProps(\n match.url,\n ChytCliquePageTab,\n {\n [ChytCliquePageTab.MONITORING]: useTemplate\n ? {\n show: true,\n external: true,\n url: formatByParams(urlTemplate, {ytCluster, chytAlias}),\n title,\n }\n : {show: Boolean(component)},\n },\n undefined,\n );\n }, [ytCluster, chytAlias, match.url, chytMonitoring]);\n\n const allowMonitoring = Boolean(chytMonitoring?.component);\n return (\n <React.Fragment>\n <Tabs className={className} {...tabProps} routed />\n <Switch>\n {allowMonitoring && (\n <Route\n path={`${match.url}/${ChytCliquePageTab.MONITORING}`}\n component={ChytPageCliqueMonitoring}\n />\n )}\n <Route\n path={`${match.url}/${ChytCliquePageTab.SPECLET}`}\n component={ChytPageCliqueSpeclet}\n />\n <Route\n path={`${match.url}/${ChytCliquePageTab.ACL}`}\n component={ChytPageCliqueAcl}\n />\n <Redirect\n to={`${match.url}/${\n allowMonitoring ? ChytCliquePageTab.MONITORING : ChytCliquePageTab.SPECLET\n }`}\n />\n </Switch>\n </React.Fragment>\n );\n}\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {RouteComponentProps, useHistory} from 'react-router';\nimport moment from 'moment';\nimport cn from 'bem-cn-lite';\n\nimport {Loader, Text} from '@gravity-ui/uikit';\n\nimport format from '../../../common/hammer/format';\n\nimport {useUpdater} from '../../../hooks/use-updater';\nimport Alert from '../../../components/Alert/Alert';\nimport Error from '../../../components/Error/Error';\nimport Label from '../../../components/Label/Label';\nimport {OperationPool} from '../../../components/OperationPool/OperationPool';\nimport MetaTable, {MetaTableItem} from '../../../components/MetaTable/MetaTable';\nimport {OperationId} from '../../../components/OperationId/OperationId';\nimport {UserCard} from '../../../components/UserLink/UserLink';\n\nimport {useQueryWidgetSidePanel} from '../../../pages/query-tracker/QueryWidget/side-panel';\n\nimport {chytCliqueLoad, chytResetCurrentClique} from '../../../store/actions/chyt/clique';\nimport {\n getChytCliqueData,\n getChytCliqueError,\n getChytCliqueInitialLoading,\n getChytCliqueStartError,\n} from '../../../store/selectors/chyt/clique';\nimport {getCluster} from '../../../store/selectors/global';\nimport {Page} from '../../../../shared/constants/settings';\n\nimport {CHYT_TABLE_TITLES} from '../../../constants/chyt-page';\nimport {CliqueState} from '../components/CliqueState';\nimport {ChytCliqueActions, useCliqueOnSqlAction} from '../ChytCliqueActions/ChytCliqueActions';\nimport {ChytPageCliqueTabs} from './ChytPageCliqueTabs';\nimport {ChytSpecletEditButton} from './ChytPageCliqueSpeclet';\n\nimport './ChytPageClique.scss';\n\nconst block = cn('chyt-page-clique');\n\nexport function ChytPageClique(props: RouteComponentProps<{alias: string}>) {\n const dispatch = useDispatch();\n const history = useHistory();\n const cluster = useSelector(getCluster);\n\n const {alias} = props.match.params;\n const update = React.useCallback(() => {\n dispatch(chytCliqueLoad(alias));\n }, [alias, dispatch]);\n\n React.useEffect(() => {\n return () => {\n dispatch(chytResetCurrentClique());\n };\n }, [alias, dispatch]);\n\n const {pool} = useSelector(getChytCliqueData) ?? {};\n const initialLoading = useSelector(getChytCliqueInitialLoading);\n\n useUpdater(update);\n\n const {openWidget, widgetContent} = useQueryWidgetSidePanel();\n const onSqlClick = useCliqueOnSqlAction(openWidget);\n\n return (\n <div className={block()}>\n <div className={block('header')}>\n <Text variant=\"header-1\">\n CHYT clique{' '}\n <Text variant=\"header-1\" color=\"secondary\">\n {alias}\n </Text>\n </Text>\n {initialLoading && <Loader className={block('loader')} size=\"s\" />}\n <span className={block('spacer')} />\n\n <ChytCliqueActions\n alias={alias}\n pool={pool}\n showAllButtons\n onAction={(action) => {\n if (action === 'remove') {\n history.push(`/${cluster}/${Page.CHYT}`);\n } else {\n update();\n }\n }}\n onSqlClick={onSqlClick}\n />\n <span className={block('edit')}>\n <ChytSpecletEditButton compact />\n </span>\n </div>\n <ChytCliqueErrors />\n <ChytCliqueMetaTable />\n <ChytPageCliqueTabs className={block('tabs')} />\n {widgetContent}\n </div>\n );\n}\n\nfunction ChytCliqueErrors() {\n const error = useSelector(getChytCliqueError);\n const startError = useSelector(getChytCliqueStartError);\n const {health_reason} = useSelector(getChytCliqueData) ?? {};\n\n return (\n <React.Fragment>\n {error ? <Error className={block('error')} error={error} bottomMargin /> : null}\n {startError ? (\n <Error\n header=\"Failed to start\"\n className={block('error')}\n error={{message: startError}}\n bottomMargin\n />\n ) : null}\n {health_reason ? (\n <Alert header=\"Health reason\" type=\"alert\" message={health_reason} bottomMargin />\n ) : null}\n </React.Fragment>\n );\n}\n\nfunction ChytCliqueMetaTable() {\n const cluster = useSelector(getCluster);\n const data = useSelector(getChytCliqueData);\n\n const items: Array<Array<MetaTableItem>> = React.useMemo(() => {\n const {\n pool,\n state,\n stage,\n ctl_attributes,\n yt_operation,\n health,\n incarnation_index,\n creator,\n speclet_modification_time,\n strawberry_state_modification_time,\n } = data ?? {};\n\n const {start_time, finish_time, id} = yt_operation ?? {};\n\n const start_time_number = start_time ? moment(start_time).valueOf() : undefined;\n const finish_time_number = finish_time\n ? moment(finish_time).valueOf()\n : start_time_number\n ? Date.now()\n : undefined;\n\n const duration =\n !start_time_number || !finish_time_number\n ? undefined\n : finish_time_number - start_time_number;\n\n return [\n [\n {key: 'Health', value: <CliqueState state={health} />},\n {key: 'State', value: <CliqueState state={state} />},\n {\n key: 'Pool',\n value: pool ? (\n <OperationPool cluster={cluster} pool={{pool, tree: 'physical'}} />\n ) : (\n format.NO_VALUE\n ),\n },\n {key: 'Instances', value: format.Number(ctl_attributes?.instance_count)},\n {key: 'Cores', value: format.Number(ctl_attributes?.total_cpu)},\n {key: 'Memory', value: format.Bytes(ctl_attributes?.total_memory)},\n ],\n [\n {key: 'Stage', value: stage ? <Label capitalize text={stage} /> : format.NO_VALUE},\n {key: 'Incarnation index', value: format.Number(incarnation_index)},\n {\n key: 'Creator',\n value: creator ? <UserCard userName={creator} /> : format.NO_VALUE,\n },\n {\n key: CHYT_TABLE_TITLES['speclet_modification_time'],\n value: format.DateTime(speclet_modification_time),\n },\n {\n key: CHYT_TABLE_TITLES['strawberry_state_modification_time'],\n value: format.DateTime(strawberry_state_modification_time),\n },\n ],\n [\n {\n key: 'YT operation id',\n value: (\n <div className={block('operation-id')}>\n <OperationId id={id} cluster={cluster} />\n </div>\n ),\n },\n {\n key: 'YT operation state',\n value: yt_operation?.state\n ? format.ReadableField(yt_operation?.state)\n : format.NO_VALUE,\n },\n {\n key: 'Start time',\n value: format.DateTime(start_time),\n },\n {\n key: 'Finish time',\n value: format.DateTime(finish_time),\n },\n {\n key: 'Duration',\n value: duration ? format.TimeDuration(duration) : format.NO_VALUE,\n },\n ],\n ];\n }, [data, cluster]);\n\n return <MetaTable items={items} />;\n}\n","import React from 'react';\nimport {Route, Switch} from 'react-router';\n\nimport {Page} from '../../../shared/constants/settings';\n\nimport ErrorBoundary from '../../components/ErrorBoundary/ErrorBoundary';\n\nimport {ChytPageList} from './ChytPageList/ChytPageList';\nimport {ChytPageClique} from './ChytPageClique/ChytPageClique';\n\nexport default function ChytPage() {\n return (\n <div className=\"elements-main-section\">\n <ErrorBoundary>\n <Switch>\n <Route path={`/:cluster/${Page.CHYT}/:alias`} component={ChytPageClique} />\n <Route path={`/:cluster/${Page.CHYT}`} component={ChytPageList} />\n </Switch>\n </ErrorBoundary>\n </div>\n );\n}\n","import axios, {CancelToken} from 'axios';\nimport {wrapApiPromiseByToaster} from '../../../utils/utils';\nimport {YTError} from '../../../../@types/types';\nimport {OptionsGroup} from '../../../components/Dialog/df-dialog-utils';\n\nexport type WithResult<T> = {result: T};\n\nexport type ChytListAttributes = keyof Required<ChytListResponseItem>['$attributes'];\n\nexport type ChytDescribeOptionsType = Array<OptionsGroup>;\n\nexport type ChytApi =\n | {action: 'list'; params: {attributes?: Array<ChytListAttributes>}; response: ChytListResponse}\n | {action: 'start'; params: {alias: string; untracked?: boolean}; response: void}\n | {action: 'stop'; params: {alias: string}; response: void}\n | {action: 'remove'; params: {alias: string}; response: void}\n | {\n action: 'create';\n params: {\n alias: string;\n speclet_options: {\n active: boolean;\n pool?: string;\n instance_count: number;\n };\n };\n response: void;\n }\n | {\n action: 'edit_options';\n params: {\n alias: string;\n options_to_set: Partial<ChytListResponseItem['$attributes']>;\n options_to_remove: Array<ChytListAttributes>;\n };\n response: void;\n }\n | {\n action: 'describe_options';\n params: {alias: string};\n response: WithResult<ChytDescribeOptionsType>;\n }\n | {action: 'get_speclet'; params: {alias: string}; response: WithResult<unknown>}\n | {action: 'get_brief_info'; params: {alias: string}; response: WithResult<ChytStatusResponse>};\n\nexport type ChytStatusResponse = {\n ctl_attributes: {\n instance_count?: number;\n total_cpu?: number;\n total_memory?: number;\n };\n yt_operation: {\n id?: string;\n state?: string;\n start_time?: string;\n finish_time?: string;\n };\n state?: ChytCliqueStateType;\n health?: ChytCliqueHealthType;\n health_reason?: unknown;\n incarnation_index?: number;\n creator?: string;\n speclet_modification_time?: string;\n strawberry_state_modification_time?: string;\n stage?: string;\n\n pool?: string;\n error?: YTError;\n};\n\nexport type ChytListResponse = WithResult<Array<ChytListResponseItem>>;\n\nexport type ChytListResponseItem = {\n $value: string;\n $attributes?: {\n pool?: string;\n creator?: string;\n creation_time?: string;\n health?: ChytCliqueHealthType;\n health_reason?: string;\n instance_count?: number;\n speclet_modification_time?: string;\n stage?: string;\n state?: ChytCliqueStateType;\n strawberry_state_modification_time?: string;\n total_cpu?: number;\n total_memory?: number;\n yt_operation_id?: string;\n yt_operation_finish_time?: string;\n yt_operation_start_time?: string;\n };\n};\n\nexport type ChytCliqueHealthType = 'good' | 'pending' | 'failed';\nexport type ChytCliqueStateType = 'active' | 'inactive' | 'untracked';\n\nexport function chytApiAction<\n T extends ChytApi['action'] = never,\n ApiItem extends ChytApi & {action: T} = ChytApi & {action: T},\n>(\n action: T,\n cluster: string,\n params: ApiItem['params'],\n {\n cancelToken,\n skipErrorToast,\n successTitle,\n isAdmin,\n }: {\n cancelToken?: CancelToken;\n skipErrorToast?: boolean;\n successTitle?: string;\n isAdmin?: boolean;\n } = {},\n) {\n const query = isAdmin ? '?isDeveloper=true' : '';\n return wrapApiPromiseByToaster(\n axios.request<ApiItem['response']>({\n method: 'POST',\n url: `/api/chyt/${cluster}/${action}${query}`,\n data: {\n params: {...params},\n },\n cancelToken,\n }),\n {\n toasterName: `clique-${action}`,\n skipSuccessToast: !successTitle,\n successTitle,\n skipErrorToast,\n errorTitle: `'${action}' action failed`,\n },\n ).then((response) => {\n return response.data;\n });\n}\n","import type {ThunkAction} from 'redux-thunk';\n\nimport type {RootState} from '../../reducers';\nimport type {ChytListAction} from '../../reducers/chyt/list';\nimport {CHYT_LIST} from '../../../constants/chyt-page';\nimport CancelHelper, {isCancelled} from '../../../utils/cancel-helper';\nimport {getCluster, isDeveloper} from '../../../store/selectors/global';\nimport {getChytListVisibleColumns} from '../../../store/selectors/chyt';\n\nimport {ChytApi, chytApiAction} from './api';\nimport {SettingsThunkAction, setSettingByKey} from '../settings';\n\ntype ChytListThunkAction<T> = ThunkAction<Promise<T>, RootState, unknown, ChytListAction>;\n\nconst cancelHelper = new CancelHelper();\n\nexport function chytLoadList(): ChytListThunkAction<void> {\n return (dispatch, getState) => {\n const state = getState();\n const cluster = getCluster(state);\n const isAdmin = isDeveloper(state);\n const columns = getChytListVisibleColumns(state);\n\n dispatch({type: CHYT_LIST.REQUEST});\n\n const extraColumns = -1 === columns.indexOf('pool') ? ['pool' as const] : [];\n\n const attributesSet = new Set([\n 'yt_operation_id' as const,\n 'creator' as const,\n 'state' as const,\n 'health' as const,\n 'health_reason' as const,\n ...columns,\n ...extraColumns,\n ]);\n\n return chytApiAction(\n 'list',\n cluster,\n {attributes: [...attributesSet]},\n {isAdmin, cancelToken: cancelHelper.removeAllAndGenerateNextToken()},\n )\n .then((data) => {\n const items = data?.result?.map(({$value, $attributes = {}}) => {\n return {\n alias: $value,\n ...$attributes,\n };\n });\n\n dispatch({type: CHYT_LIST.SUCCESS, data: {data: {items}}});\n })\n .catch((error) => {\n if (!isCancelled(error)) {\n dispatch({type: CHYT_LIST.FAILURE, data: {error}});\n }\n });\n };\n}\n\nexport function chytListAction<\n T extends ChytApi['action'],\n ApiItem extends ChytApi & {action: T} = ChytApi & {action: T},\n>(\n action: T,\n params: ApiItem['params'],\n {skipLoadList}: {skipLoadList?: boolean} = {},\n): ChytListThunkAction<ApiItem['response']> {\n return (dispatch, getState) => {\n const state = getState();\n const cluster = getCluster(state);\n const isAdmin = isDeveloper(state);\n\n return chytApiAction(action, cluster, params, {isAdmin}).then((d) => {\n if (!skipLoadList) {\n dispatch(chytLoadList());\n }\n return d;\n });\n };\n}\n\nexport function chytCliqueCreate(params: {\n alias: string;\n instance_count: number;\n pool: string;\n runAfterCreation: boolean;\n}): ChytListThunkAction<void> {\n return (dispatch, getState) => {\n const state = getState();\n const cluster = getCluster(state);\n const isAdmin = isDeveloper(state);\n\n const {alias, runAfterCreation, pool, instance_count} = params;\n return chytApiAction(\n 'create',\n cluster,\n {\n alias,\n speclet_options: {\n active: runAfterCreation && Boolean(pool),\n instance_count,\n ...(pool ? {pool} : undefined),\n },\n },\n {isAdmin, successTitle: `${alias} clique created`},\n ).finally(() => {\n dispatch(chytLoadList());\n });\n };\n}\n\nexport function chytSetVisibleColumns(columns: Array<string>): SettingsThunkAction {\n return (dispatch) => {\n return dispatch(setSettingByKey('global::chyt::list_columns', columns)).then(() => {\n dispatch(chytLoadList());\n });\n };\n}\n"],"names":["block","cn","ChytPageListToolbar","dispatch","useDispatch","onUpdate","React","filters","data","type","CHYT_LIST_FILTERS","_jsx","Toolbar","itemsToWrap","name","node","NameIdFilter","growable","wrapperClassName","CreatorFilter","StateFilter","HealthFilter","ChytListColumnsButton","_ref","value","useSelector","getChytListFilterAlias","TextInput","placeholder","_ref2","getChytListFilterCreator","creators","getChytListAvailableCreators","items","map","item","text","SelectSingle","className","label","onChange","creator","_ref3","getChytListFilterHealth","choices","getChytListAvailableHealths","health","_ref4","getChytListFilterState","states","getChytListAvailableStates","state","_React$useState","_React$useState2","_slicedToArray","visible","setVisible","columns","getChytListColumns","dialog","ColumnSelectorModal","isVisible","i","_CHYT_TABLE_TITLES$i$","CHYT_TABLE_TITLES","column","format","ReadableField","checked","onConfirm","newColumns","filter","chytSetVisibleColumns","onCancel","_jsxs","children","Button","view","onClick","OperationId","id","cluster","color","allowCopy","operationId","Text","variant","Link","theme","url","concat","Page","OPERATIONS","routed","ClipboardButton","visibleOnRowHover","inlineMargins","NO_VALUE","THEME_MAP","good","failed","active","pending","untracked","CliqueState","Label","hideTitle","capitalize","ChytConfirmation","action","alias","pool","onClose","onAction","ChytSimpleConfirmation","ChytStartConfirmation","useThunkDispatch","error","setError","YTDFDialog","pristineSubmittable","headerProps","title","_Fragment","footerProps","textApply","onAdd","chytListAction","then","undefined","fields","extras","_toConsumableArray","makeErrorFields","_React$useState3","_React$useState4","initialValues","form","getState","values","isApplyDisabled","_state$values","Boolean","caption","tooltip","visibilityCondition","when","isActive","v","useCliqueOnSqlAction","openWidget","getCluster","allowQueryTracker","isQueryTrackerAllowed","setTimeout","updateQueryDraft","engine","QueryEngine","CHYT","query","settings","clique","UIFactory","onChytAliasSqlClick","ChytCliqueActions","showAllButtons","allButtonsClassName","onSqlClick","visibleConfirmation","setVisibleConirmation","start","icon","Icon","awesome","stop","remove","menuItems","sqlButton","DropdownMenu","switcher","ChytListHeader","_ref16","_CHYT_TABLE_TITLES$co","withUndefined","sortState","getChytListTableSortStateByName","ColumnHeader","_objectSpread","allowUnordered","sortable","toggleSort","col","nextOrder","options","order","prevSortState","getChytListTableSortState","updateSortStateArray","chytToggleSortState","DateTimeCell","_ref17","time","DateTime","lastSpace","lastIndexOf","substring","ChytPageListTable","getChytListTableItems","_useQueryWidgetSidePa","useQueryWidgetSidePanel","widgetContent","checkedColumns","getChytListVisibleColumns","columnsByName","header","render","row","OperationPool","tree","width","instance_count","Number","align","total_cpu","total_memory","Bytes","_ref5","Tooltip","content","health_reason","creation_time","_ref6","speclet_modification_time","_ref7","stage","_ref8","strawberry_state_modification_time","_ref9","yt_operation_finish_time","_ref10","yt_operation_start_time","_ref11","_ref12","UserCard","userName","_ref13","res","_ref14","yt_operation_id","_ref15","useChytListColumns","DataTableYT","DATA_TABLE_YT_SETTINGS_UNDER_TOOLBAR","useThemeYT","ChytPageList","update","chytLoadList","useUpdater","WithStickyToolbar","toolbar","cancelHelper","CancelHelper","chytCliqueLoad","CHYT_CLIQUE","REQUEST","currentClique","isAdmin","isDeveloper","chytApiAction","cancelToken","removeAllAndGenerateNextToken","skipErrorToast","SUCCESS","result","isCancelled","FAILURE","getChytCliqueData","chyt","getChytCliqueError","getChytCliqueInitialLoading","_state$chyt$clique","loaded","loading","getChytCliqueStartError","_state$chyt$clique$da","ChytPageCliqueAcl","getChytCurrentAlias","AccessContentAcl","path","CONVERTER","number","toFieldValue","fromFieldValue","_oldV","json","JSON","stringify","oldV","parse","_unused","plain","string_with_choices","getChytOptionsData","getChytOptionsDataAlias","dataAlias","getChytOptionsError","chytLoadCliqueSpeclet","CHYT_SPECLET","chytLoadCliqueOptions","showTooltipError","CHYT_OPTIONS","wrapApiPromiseByToaster","toasterName","skipSuccessToast","getChytSpecletLoaded","speclet","getChytSpecletData","getChytSpecletDataAlias","getChytSpecletError","useSpecletData","arguments","length","skipLoad","specletData","unipikaSettings","getEditJsonYsonSettings","ChytPageCliqueSpeclet","_useSpecletData","Error","bottomMargin","ChytSpecletEditButton","ChytSpeclet","Yson","folding","compact","_useSpecletData2","ChytSpecletEditDialog","allowEdit","size","disabled","_React$useMemo","typeByName","fieldTypeByName","group","index","group_name","groupInitialValues","sectionFields","dstInitialValues","dstConvertersByName","_descriptionToDialogF","_item$current_value","common","description","converter","default_value","String","_item$choices","hasClear","initialValue","current_value","valueFormat","defaultFormatted","hidePrettyValue","min","min_value","max","max_value","integerOnly","showHint","fullWidth","minHeight","nullPreview","allowEmpty","descriptionToDialogField","_objectWithoutProperties","_excluded","makeDialogField","makeTabbedDialogFieldsFromDescription","formValues","reduce_","acc","tabValues","restart_on_speclet_change","initials","diff","key","oldValue","options_to_remove","options_to_set","Object","keys","forEach","k","push","chytEditOptions","e","ellipsis","ChytPageCliqueMonitoring","_UIFactory$getMonitor","MonitoginComponnet","getMonitoringComponentForChyt","component","NoContent","ChytPageCliqueTabs","match","useRouteMatch","ytCluster","chytAlias","chytMonitoring","tabProps","urlTemplate","useTemplate","makeTabProps","ChytCliquePageTab","_defineProperty","MONITORING","show","external","formatByParams","allowMonitoring","Tabs","Switch","Route","SPECLET","ACL","Redirect","to","ChytPageClique","props","_useSelector","history","useHistory","params","PARTITION","initialLoading","Loader","ChytCliqueErrors","ChytCliqueMetaTable","_useSelector2","startError","message","Alert","ctl_attributes","yt_operation","incarnation_index","start_time","finish_time","start_time_number","moment","valueOf","finish_time_number","Date","now","duration","TimeDuration","MetaTable","ChytPage","ErrorBoundary","successTitle","axios","request","method","errorTitle","response","CHYT_LIST","extraColumns","indexOf","attributesSet","Set","attributes","_data$result","$value","_ref$$attributes","$attributes","skipLoadList","d","chytCliqueCreate","runAfterCreation","speclet_options","setSettingByKey"],"sourceRoot":""}