@ytsaurus/ui 3.6.0 → 3.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/public/build/assets-manifest.json +37 -37
- package/dist/public/build/css/{main.89a1698b.css → main.eac511a5.css} +2 -2
- package/dist/public/build/css/main.eac511a5.css.map +1 -0
- package/dist/public/build/js/{1394.45bb669a.chunk.js → 1394.9f9c9f9a.chunk.js} +2 -2
- package/dist/public/build/js/{1394.45bb669a.chunk.js.map → 1394.9f9c9f9a.chunk.js.map} +1 -1
- package/dist/public/build/js/4804.2d9406dc.chunk.js +3 -0
- package/dist/public/build/js/4804.2d9406dc.chunk.js.map +1 -0
- package/dist/public/build/js/{accounts-monitoring-prometheus.262cacd8.chunk.js → accounts-monitoring-prometheus.38e8206a.chunk.js} +2 -2
- package/dist/public/build/js/accounts-monitoring-prometheus.38e8206a.chunk.js.map +1 -0
- package/dist/public/build/js/acl.00a69fe0.chunk.js +2 -0
- package/dist/public/build/js/acl.00a69fe0.chunk.js.map +1 -0
- package/dist/public/build/js/{bundle-monitoring-prometheus.d49a9a1a.chunk.js → bundle-monitoring-prometheus.dc8084bb.chunk.js} +2 -2
- package/dist/public/build/js/bundle-monitoring-prometheus.dc8084bb.chunk.js.map +1 -0
- package/dist/public/build/js/components.c4fc1d81.chunk.js +2 -0
- package/dist/public/build/js/components.c4fc1d81.chunk.js.map +1 -0
- package/dist/public/build/js/main.a04f2740.js +3 -0
- package/dist/public/build/js/{main.3e360b19.js.map → main.a04f2740.js.map} +1 -1
- package/dist/public/build/js/navigation.cd66d63f.chunk.js +2 -0
- package/dist/public/build/js/{navigation.8d91701a.chunk.js.map → navigation.cd66d63f.chunk.js.map} +1 -1
- package/dist/public/build/js/{prometheus-dashboard.3c9f3a99.chunk.js → prometheus-dashboard.d3814a09.chunk.js} +2 -2
- package/dist/public/build/js/prometheus-dashboard.d3814a09.chunk.js.map +1 -0
- package/dist/public/build/js/query-navigation.f7f5a1b5.chunk.js +2 -0
- package/dist/public/build/js/{query-navigation.f52623cc.chunk.js.map → query-navigation.f7f5a1b5.chunk.js.map} +1 -1
- package/dist/public/build/js/{runtime.2344fc6d.js → runtime.3af0a91e.js} +2 -2
- package/dist/public/build/js/{runtime.2344fc6d.js.map → runtime.3af0a91e.js.map} +1 -1
- package/dist/public/build/js/scheduling.4f518a8a.chunk.js +2 -0
- package/dist/public/build/js/scheduling.4f518a8a.chunk.js.map +1 -0
- package/dist/public/build/js/{system-monitoring-prometheus.b6ce8ed8.chunk.js → system-monitoring-prometheus.4004494c.chunk.js} +2 -2
- package/dist/public/build/js/system-monitoring-prometheus.4004494c.chunk.js.map +1 -0
- package/dist/public/build/js/{system.08fe4f55.chunk.js → system.2e84d486.chunk.js} +2 -2
- package/dist/public/build/js/{system.08fe4f55.chunk.js.map → system.2e84d486.chunk.js.map} +1 -1
- package/dist/public/build/js/yt-monaco-editor.4ad443b3.chunk.js +2 -0
- package/dist/public/build/js/{yt-monaco-editor.ba9a69f6.chunk.js.map → yt-monaco-editor.4ad443b3.chunk.js.map} +1 -1
- package/dist/public/build/manifest.json +32 -32
- package/package.json +2 -2
- package/dist/public/build/css/main.89a1698b.css.map +0 -1
- package/dist/public/build/js/4804.05d44971.chunk.js +0 -3
- package/dist/public/build/js/4804.05d44971.chunk.js.map +0 -1
- package/dist/public/build/js/accounts-monitoring-prometheus.262cacd8.chunk.js.map +0 -1
- package/dist/public/build/js/acl.91a762f3.chunk.js +0 -2
- package/dist/public/build/js/acl.91a762f3.chunk.js.map +0 -1
- package/dist/public/build/js/bundle-monitoring-prometheus.d49a9a1a.chunk.js.map +0 -1
- package/dist/public/build/js/components.aa32cd54.chunk.js +0 -2
- package/dist/public/build/js/components.aa32cd54.chunk.js.map +0 -1
- package/dist/public/build/js/main.3e360b19.js +0 -3
- package/dist/public/build/js/navigation.8d91701a.chunk.js +0 -2
- package/dist/public/build/js/prometheus-dashboard.3c9f3a99.chunk.js.map +0 -1
- package/dist/public/build/js/query-navigation.f52623cc.chunk.js +0 -2
- package/dist/public/build/js/scheduling.6f68a262.chunk.js +0 -2
- package/dist/public/build/js/scheduling.6f68a262.chunk.js.map +0 -1
- package/dist/public/build/js/system-monitoring-prometheus.b6ce8ed8.chunk.js.map +0 -1
- package/dist/public/build/js/yt-monaco-editor.ba9a69f6.chunk.js +0 -2
- /package/dist/public/build/js/{4804.05d44971.chunk.js.LICENSE.txt → 4804.2d9406dc.chunk.js.LICENSE.txt} +0 -0
- /package/dist/public/build/js/{main.3e360b19.js.LICENSE.txt → main.a04f2740.js.LICENSE.txt} +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_ytsaurus_ui=self.webpackChunk_ytsaurus_ui||[]).push([[4048],{523:(e,t,r)=>{r.d(t,{L:()=>d}),r(77810);var n=r(1335),o=r(45760),a=r(39702),l=r(40319),i=r(64922);const s=function(e){return(0,i.jsx)("svg",(0,l.A)((0,l.A)({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 16 16"},e),{},{children:(0,i.jsx)("path",{fill:"currentColor",fillRule:"evenodd",d:"M3.47 10.97a.75.75 0 1 0 1.06 1.06l3.5-3.5a.75.75 0 0 0 0-1.06l-3.5-3.5a.75.75 0 0 0-1.06 1.06L6.44 8zm5 0a.75.75 0 1 0 1.06 1.06l3.5-3.5a.75.75 0 0 0 0-1.06l-3.5-3.5a.75.75 0 0 0-1.06 1.06L11.44 8z",clipRule:"evenodd"})}))};var u=(0,r(76872).A)("yt-expanded-button"),d=function(e){var t=e.className,r=e.expanded,l=e.inline,d=e.toggleExpanded,c=e.all,f=e.showText,m=e.size,p=e.qa,v=c?"Collapse All":"Collapse",h=c?"Expand All":"Expand";return(0,i.jsxs)(n.$,{className:u({inline:l},t),view:"flat-secondary",title:r?v:h,onClick:d,size:m,qa:p,children:[f&&(r?v:h)+" ",(0,i.jsx)(o.I,{className:u("expand",{expanded:r}),data:c?s:a.A,size:16})]})}},2464:(e,t,r)=>{r.d(t,{oz:()=>b,B6:()=>g});var n=r(40319),o=r(53775),a=r(9736),l=r(28407),i=r(77810),s=r(76872),u=r(41169),d=r(48971),c=r(7787),f=(r(49779),r(64922)),m=(0,s.A)("yt-markdown"),p={result:{html:"",headings:[]},logs:{info:[],warn:[],error:[],disabled:[]}};function v(e){return h.apply(this,arguments)}function h(){return(h=(0,l.A)((0,o.A)().mark((function e(t){var r,a,l,i;return(0,o.A)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.text,a=t.allowHTML,e.prev=1,e.next=4,(0,d.fI)(u.A.post("/api/markdown-to-html",{text:r,allowHTML:a}),{toasterName:"useMarkdown",skipSuccessToast:!0,errorContent:"Failed to transform markdown text"});case 4:return l=e.sent,i=l.data,e.abrupt("return",i);case 9:return e.prev=9,e.t0=e.catch(1),e.abrupt("return",{result:(0,n.A)({},p.result),logs:(0,n.A)((0,n.A)({},p.logs),{},{error:[e.t0.message]})});case 12:case"end":return e.stop()}}),e,null,[[1,9]])})))).apply(this,arguments)}function g(e){var t=e.text,r=e.allowHTML,n=void 0===r||r,s=i.useState(p),u=(0,a.A)(s,2),d=u[0],c=u[1];return i.useEffect((function(){function e(){return(e=(0,l.A)((0,o.A)().mark((function e(){var r;return(0,o.A)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,v({text:t,allowHTML:n});case 3:r=e.sent,c(r),e.next=9;break;case 7:e.prev=7,e.t0=e.catch(0);case 9:case"end":return e.stop()}}),e,null,[[0,7]])})))).apply(this,arguments)}!function(){e.apply(this,arguments)}()}),[t,n]),d}var y=i.forwardRef((function(e,t){var r,n=(null!==(r=g({text:e.text,allowHTML:!0}).result)&&void 0!==r?r:{}).html;return(0,f.jsx)("div",{className:m(null,"yfm"),dangerouslySetInnerHTML:{__html:null!=n?n:""},ref:t})})),b=i.memo((function(e){var t=e.text;if(!t)return null;var r=c.Ay.renderMarkdown({text:t});return null!=r?r:(0,f.jsx)(y,{text:t})}));b.displayName="Markdown"},3764:(e,t,r)=>{r.d(t,{Cj:()=>i,gL:()=>u});var n=r(53775),o=r(28407),a=r(77810),l=r(33882);r(64772),r(13717),r(64922),r(95976);var i=(0,l.A)(a.lazy((0,o.A)((0,n.A)().mark((function e(){return(0,n.A)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",Promise.all([r.e(8096),r.e(9202)]).then(r.bind(r,18876)));case 1:case"end":return e.stop()}}),e)}))))),s=["rgb(77, 162, 241)","rgb(255, 61, 100)","#76a559","#6a72b8","#e98f27","#b67598","#ffdb80","#c6cb8e","#8dcaaf","#bee9ef"];function u(e){return s[e%s.length]}},13491:(e,t,r)=>{r.r(t),r.d(t,{PrometheusDashboard:()=>Me});var n=r(40319),o=r(68175),a=r(13322),l=r(9736),i=r(77810),s=r(76872),u=r(8160),d=r(31285),c=r.n(d),f=r(31542),m=r(73688),p=r(77575),v=r(93836);function h(e){return"//sys/interface-monitoring/".concat(e)}function g(e){return"".concat(e.gridPos.x,":").concat(e.gridPos.y,":").concat(e.type)}var y=r(31229),b=r(54736),A=r(60915),x=r(30380),T=r(33023),w=r(33952),E=r(27859),j=r(68051),L=r(18801),N=r(41169),S=["cluster","id","from","to","pointCount","dashboardType"];function k(e){var t=e.cluster,r=e.id,o=e.from,a=e.to,l=e.pointCount,i=e.dashboardType,s=(0,L.A)(e,S);try{if(!i||void 0===o||isNaN(o)||void 0===a||isNaN(a)||!l)return{data:void 0,error:void 0};var u=a/1e3,d=o/1e3,c=Math.max(1,Math.floor((u-d)/Math.max(10,l))),f={start:d,end:u,step:c};return N.A.post("/api/".concat(t,"/prometheus/chart-data"),(0,n.A)({id:r,start:d,end:u,step:c,dashboardType:i},s),{params:{id:r}}).then((function(e){var t=e.data;return{data:(0,n.A)({responseData:t},f),error:void 0}}),(function(e){return{error:e}}))}catch(e){return{error:e}}}function M(e){var t=e.cluster,r=e.dashboardType,n=e.params;if(!e.hasValuesToDiscover||!r)return{data:void 0};try{return N.A.post("/api/".concat(t,"/prometheus/discover-values"),{dashboardType:r,params:n}).then((function(e){var t,r=e.data;return{data:null==r||null===(t=r.results)||void 0===t?void 0:t.reduce((function(e,t){return e[t.key]=t,e}),{})}}),(function(e){return{error:e}}))}catch(e){return{error:e}}}var _=j.v.injectEndpoints({endpoints:function(e){return{prometheusFetch:e.query({queryFn:k}),prometheusDiscoverValues:e.query({queryFn:M})}}}),C=_.usePrometheusFetchQuery,R=_.usePrometheusDiscoverValuesQuery,B=r(57623),I=r(89362),P=r(49141),O=r(52797),F=r(82474),H=r(2464),V=r(64922),D=(0,s.A)("yt-prometheus-text"),z=r(523),$=r(63936),q=["data"],X=r(75414),J=r.n(X),Y=r(55339),G=r(64772),Q=r(33547),U=r(99621),W=r(32806),K=i.forwardRef((function(e,t){var r,n=e.className,o=e.children,a=i.useState(null),s=(0,l.A)(a,2),u=s[0],d=s[1],c=(null!==(r=(0,W.r)({element:u,options:{threshold:[0,1]}}))&&void 0!==r?r:{}).intersectionRatio,f=void 0===c?0:c,m=(0,U.N)(d,t);return(0,V.jsx)("div",{ref:m,className:n,children:f>0?o:null})}));K.displayName="IntersectionObserverContainer";var Z=r(3764),ee=r(56796),te=r(48971);function re(e){var t=e.error;return t?(0,V.jsxs)("span",{className:"yt-error-inline",children:[t.message||"An error occured."," ",(0,V.jsx)(ee.S,{onClick:function(){return(0,te.eW)(t)},children:"Details"})]}):null}var ne=r(84549),oe=r(80908),ae=r(1335),le=r(45760),ie=r(80682);const se=function(e){return(0,V.jsx)("svg",(0,n.A)((0,n.A)({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 16 16"},e),{},{children:(0,V.jsx)("path",{fill:"currentColor",fillRule:"evenodd",d:"M15.25 6.993a.75.75 0 0 0 0-1.5H10.5V.75a.75.75 0 1 0-1.5 0v5.493c0 .414.336.75.75.75zM.75 9.007a.75.75 0 1 0 0 1.5H5.5v4.743a.75.75 0 0 0 1.5 0V9.757a.75.75 0 0 0-.75-.75z",clipRule:"evenodd"})}))};var ue=r(11089),de=i.createContext({expandedId:void 0,toggleExpanded:ce,timeRangeFilter:{shortcutValue:"1h"},setTimeRangeFilter:ce});function ce(){throw new Error("Please make sure you are using <PrometheusDashboardContext.Provider /> in parents.")}function fe(e){var t=e.children,r=e.type,n=(0,u.wA)(),o=(0,u.d4)((function(e){return e.prometheusDashboard.expandedPanels})),a=(null!=o?o:{})[r],l=(0,I.ti)(),s=l.timeRange,d=l.setTimeRange,c=i.useMemo((function(){return{expandedId:a,toggleExpanded:function(e){n(e===a?ue.JF.actions.setExpandedId({type:r,id:void 0}):ue.JF.actions.setExpandedId({type:r,id:e}))},timeRangeFilter:s,setTimeRangeFilter:d}}),[a,s,d,r,n]);return(0,V.jsx)(de.Provider,{value:c,children:t})}function me(){return i.useContext(de)}var pe=(0,s.A)("yt-prometheus-widget-toolbar");function ve(e){var t=e.id,r=me(),n=r.expandedId,o=r.toggleExpanded,a=i.useState(null),s=(0,l.A)(a,2),u=s[0],d=s[1];i.useEffect((function(){var e;return t===n&&(e=setTimeout((function(){return null==u?void 0:u.scrollIntoView()}),300)),function(){clearTimeout(e)}}),[t,n,u]);var c=t===n;return(0,V.jsxs)(i.Fragment,{children:[(0,V.jsx)("div",{className:pe(),children:(0,V.jsx)(ae.$,{view:"flat-secondary",onClick:function(){return o(t)},size:"xs",children:(0,V.jsx)(le.I,{data:c?se:ie.A})})}),(0,V.jsx)("div",{ref:d})]})}var he=r(44458),ge=["elementRef"],ye=(0,s.A)("yt-prometheus-timeseries");function be(e){var t=e.elementRef,r=(0,L.A)(e,ge),o=me(),a=o.expandedId,l=o.timeRangeFilter,i=l.from,s=l.to;return(0,V.jsx)(K,{className:ye({expanded:r.id===a}),ref:t,children:(0,V.jsx)(Ae,(0,n.A)((0,n.A)({},r),{},{from:i,to:s}))},r.id)}function Ae(e){var t,r=e.data,o=e.id,a=e.from,s=e.to,u=r.title,d=i.useState(null),c=(0,l.A)(d,2),f=c[0],m=c[1],p=function(e){var t=e.id,r=e.data,o=r.title,a=r.targets,l=r.params,s=r.fieldConfig,u=e.pointCount,d=e.from,c=e.to,f=l.__ytDashboardType,m=C({cluster:Q.YT.cluster,dashboardType:f,id:t,from:d,to:c,pointCount:u,params:l}),p=m.data,v=m.isLoading,h=m.error,g=i.useMemo((function(){var e,t;return{showLegend:!(null!=s&&null!==(e=s.defaults)&&void 0!==e&&null!==(e=e.custom)&&void 0!==e&&null!==(e=e.hideForm)&&void 0!==e&&e.legend),axisLabel:null==s||null===(t=s.defaults)||void 0===t||null===(t=t.custom)||void 0===t?void 0:t.axisLabel,propertiesByRefId:J()(null==s?void 0:s.overrides,(function(e,t){var r=t.matcher,n=t.properties;return"byFrameRefID"!==r.id||(e[r.options]=J()(n,(function(e,t){return e[t.id]=t.value,e}),{})),e}),{})}}),[s]);return i.useMemo((function(){if(h)return{error:h};if(!p||null==p||!p.responseData)return{isLoading:v};var e=p.responseData,t=p.start,r=p.end,i=p.step,s=e.results;return{data:xe((0,n.A)({title:o},g),a,s,{end:r,start:t,step:i},l)}}),[p,h,l,a,o,g,v])}({id:o,data:r,pointCount:null===(t=(0,oe.L)({element:f}))||void 0===t?void 0:t.contentRect.width,from:a,to:s}),v=p.error,h=p.data,g=p.isLoading,y=i.useState(),b=(0,l.A)(y,2),A=b[0],x=b[1];return i.useEffect((function(){return null==A||A.subscribe(),function(){null==A||A.unsubscribe()}}),[A]),(0,V.jsxs)(i.Fragment,{children:[(0,V.jsx)(Y.s,{ref:m,className:ye("widget"),direction:"column",id:o,children:h?(0,V.jsx)(Z.Cj,{type:"yagr",data:h,onChartLoad:function(e){x(e.widget)}}):(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)("div",{className:ye("widget-title"),children:u}),v&&(0,V.jsx)("div",{className:ye("error"),children:(0,V.jsx)(re,{error:v})}),!h&&g&&(0,V.jsx)(ne.A,{visible:!0,centered:!0})]})}),(0,V.jsx)(ve,{id:o})]})}function xe(e,t,r,o,a){for(var i=e.title,s=e.axisLabel,u=e.propertiesByRefId,d=e.showLegend,c=o.end,f=o.start,m=o.step,p={data:{graphs:[],timeline:[]},libraryConfig:{title:{text:i},legend:{show:d},tooltip:{show:function(e){return e.state.isMouseOver},title:{y:function(e){var t=e.x;return G.A.DateTime(t/1e3)}},sort:{y:function(e,t){var r=e.value,n=t.value;return isNaN(r)?1:isNaN(n)?-1:(0,he.IP)(r,n,-1,-1)}}},axes:{y:{label:s}},cursor:{sync:"yt-timeseries-cursor"}}},h=f;h-.5*m<c;h+=m)p.data.timeline.push(1e3*h);for(var g=p.data.timeline,y=[],b=0;b<(null==r?void 0:r.length);++b)for(var A,x=t[b],T=x.legendFormat,w=(null!==(A=u[x.refId])&&void 0!==A?A:{}).unit,E=0;E<(null!==(j=null===(L=r[b])||void 0===L||null===(L=L.data)||void 0===L||null===(L=L.result)||void 0===L?void 0:L.length)&&void 0!==j?j:0);++E){var j,L,N,S=null===(N=r[b])||void 0===N||null===(N=N.data)||void 0===N?void 0:N.result[E];if(S){var k=S.values,M=void 0===k?[]:k,_=S.metric,C={name:null!=T&&T.length?(0,v.jN)(T,(0,n.A)((0,n.A)({},a),_),v.Ym):void 0,data:new Array(g.length),formatter:"bytes"===w?G.A.Bytes:G.A.NumberSmart,color:(0,Z.gL)(p.data.graphs.length)};if(!C.name){var R=p.data.graphs.length;y.push({metric:_,graphIndex:R})}if(p.data.graphs.push(C),M.length){for(var B=0;B<M.length;++B){var I=(0,l.A)(M[B],2),P=I[0],O=I[1],F=Math.round((P-f)/m);C.data[F]=Number(O)}0===B&&p.data.graphs.pop()}}}for(var H=0;H<y.length;++H)Te(p.data.graphs,y,H);return p}function Te(e,t,r){var n,o,a=null!==(n=t[r])&&void 0!==n?n:{},l=a.metric,i=a.graphIndex,s=(null!==(o=t[0===r?1:0])&&void 0!==o?o:{}).metric;e[i].name=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(e){var r=Object.keys(e).reduce((function(r,n){if(e[n]===t[n])return r;var o=e[n];return r+("__name__"===n?o:"".concat(n,":").concat(o,"; "))}),"");return Object.keys(null!=t?t:{}).reduce((function(t,r){return r in e?t:t+"".concat(r,":").concat(G.A.NO_VALUE,"; ")}),r)}}(l,s)}var we=["gridPos","type"],Ee=(0,s.A)("yt-prometheus-dashkit"),je="".concat(Math.random().toString());function Le(e){var t=function(e,t,r){var a=i.useState({}),s=(0,l.A)(a,2),u=s[0],d=s[1],c=me().expandedId,f=i.useMemo((function(){var a;return function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r=e?null==t?void 0:t.findIndex((function(t){return e===g(t)})):-1,n=-1!==r?null==t?void 0:t[r]:void 0;return n?[n]:t}(c,t).reduce((function(t,l){var i=l.gridPos,s=l.type,c=(0,L.A)(l,we),f=g(l);function m(o){var a="prometheus.".concat(s),l=Object.assign(c,o,{params:(0,n.A)((0,n.A)({},r),{},{__ytDashboardType:e})});return t.layout.push((0,n.A)((0,n.A)({},i),{},{i:f})),t.items.push({id:f,type:a,namespace:"default",data:l}),l}if("row"===s){var p=u[f];a=m({childCount:0,collapsed:p,onToggleCollapsed:function(){d((0,n.A)((0,n.A)({},u),{},(0,o.A)({},f,!p)))}})}else{var v,h;void 0!==(null===(v=a)||void 0===v?void 0:v.childCount)&&++a.childCount,null!==(h=a)&&void 0!==h&&h.collapsed||m({})}return t}),{salt:je,counter:0,layout:[],items:[],aliases:{},connections:[]})}),[t,u,r,c,e]);return i.useMemo((function(){var e,t=null==f||null===(e=f.layout)||void 0===e?void 0:e.reduce((function(e,t){var r="".concat(t.y);return void 0===e[r]&&(e[r]=0),e[r]+=t.w,e}),{}),r=Object.values(null!=t?t:{}).reduce((function(e,t){return Math.max(e,t)}),0);F.XM.setSettings({gridLayout:{margin:[4,4],containerPadding:[0,0],rowHeight:30,cols:r}})}),[f]),{config:f}}(e.type,e.panels,e.params),r=t.config;return(0,V.jsx)("div",{className:Ee(),children:r?(0,V.jsx)(F.XM,{config:r,editMode:!1}):null})}var Ne,Se={text:{renderer:function(e,t){var r=e.data,n=(null!=r?r:{}).options,o=null!=n?n:{},a=o.mode,l=o.content;return(0,V.jsx)("div",{ref:t,className:D(),children:"markdown"!==a?l:(0,V.jsx)(H.oz,{text:l})})},type:"prometheus.text"},timeseries:{renderer:function(e,t){return(0,V.jsx)(be,(0,n.A)((0,n.A)({},e),{},{elementRef:t}))},type:"prometheus.timeseries"},row:{renderer:function(e,t){var r=e.data,n=(0,L.A)(e,q),o=r.collapsed,a=r.onToggleCollapsed,l=r.childCount;return(0,V.jsxs)("div",{ref:t,children:[(0,V.jsx)(z.L,{expanded:!o,toggleExpanded:a}),o&&(0,V.jsxs)($.L1,{children:[l," panels"]})]},n.id)},type:"prometheus.row"}};F.XM.registerPlugins.apply(F.XM,(0,a.A)(Object.keys(Se).map((function(e){var t=e;return(0,n.A)({},Se[t])}))));var ke=(0,s.A)("yt-prometheus-dashboard"),Me=i.memo((function(e){var t=e.type,r=e.params,s=e.toolbarStickyTop,d=function(e){var t=e.type,r=e.params,n=i.useState({}),o=(0,l.A)(n,2),a=o[0],s=o[1];return i.useEffect((function(){E.Qq.get(E.Vu.prometheusMonitoringLayout,{path:h(t)}).then((function(e){s({layout:e})})).catch((function(e){e.code===w.N.NODE_DOES_NOT_EXIST?s({layout:_e({type:t,params:r,uid:""})}):s({error:e})}))}),[t]),a}({type:t,params:r}),f=d.layout,p=d.error,v=function(e){var t=e.toolbarItems,r=e.layout,s=e.params,d=e.type,f=(0,u.d4)(P.dB),p=(null!=r?r:{}).templating,v=(null!=p?p:{}).list,h=i.useMemo((function(){return r?null==v?void 0:v.filter((function(e){return e.discover_values})):[]}),[v,r]),g=(0,I.QS)(d),y=g.params,b=g.setParams,A=R({cluster:f,dashboardType:d,params:s,hasValuesToDiscover:Boolean(null==h?void 0:h.length)}).data;return{toolbarItems:i.useMemo((function(){var e=(0,a.A)(null!=t?t:[]);return null==h||h.forEach((function(t){var r,n,i,s=t.label,u=t.name,d=t.default_for_ui,f=t.discover_values;if(f&&A){var p=function(e){var t=e.label,r=e.match;return"_".concat(t,"_").concat(r,"_")}(f),v=A[p],h=null!==(r=null==y?void 0:y[u])&&void 0!==r?r:d,g=c()([].concat((0,a.A)(d?[d]:[]),(0,a.A)(null!==(n=null===(i=v.result)||void 0===i?void 0:i.data)&&void 0!==n?n:[])));e.push({node:(0,V.jsx)(m.l,{label:s,value:h?[h]:[],options:g.map((function(e){return{content:e,value:e}})),onUpdate:function(e){var t=(0,l.A)(e,1)[0];b((0,o.A)({},u,t))}})})}})),e}),[h,A,y,b,t]),effectiveParams:i.useMemo((function(){return s?(0,n.A)((0,n.A)({},s),y):void 0}),[s,y])}}({type:t,layout:f,params:r,toolbarItems:e.toolbarItems}),g=v.toolbarItems,y=v.effectiveParams,x=Boolean(null==g?void 0:g.length);return y?(0,V.jsx)(fe,{type:t,children:(0,V.jsx)(A.X,{className:ke({"has-toolbar":x}),topOffset:s,children:function(e){var r=e.stickyTopClassName;return(0,V.jsxs)(i.Fragment,{children:[(0,V.jsxs)("div",{className:ke("toolbar",r),children:[(0,V.jsx)(Ce,{uid:null==f?void 0:f.uid,effectiveParams:y}),x&&(0,V.jsx)(T.M,{itemsToWrap:null!=g?g:[],marginTopSkip:!0})]}),p&&(0,V.jsx)(b.z,{error:p}),(0,V.jsx)(Be,{templating:null==f?void 0:f.templating,params:y}),void 0===(null==f?void 0:f.panels)?null:(0,V.jsx)(Le,{type:t,panels:f.panels,params:y},t)]})}})}):null}));function _e(e){var t=e.type,r=e.params,n=e.uid;return{templating:{list:[]},panels:[{type:"text",options:{content:["#### `".concat(h(t),"` is not exist")," You have to provide correct dashboard description, see expected parameters below:","```json",JSON.stringify(r,null,4),"```"].join("\n"),mode:"markdown"},gridPos:{x:0,y:0,w:24,h:27}}],uid:n}}function Ce(e){var t=e.uid,r=e.effectiveParams,n=me(),o=n.timeRangeFilter,a=o.from,l=o.to,s=o.shortcutValue,d=n.setTimeRangeFilter,c=function(e){var t,r,n,o,a,l,s,d,c=e.uid,f=e.effectiveParams,m=e.from,v=e.to,h=(n=(0,u.d4)(P.dB),o=(0,u.d4)(O.ID),l=(a=(0,B.Ou)({cluster:n,id:E.Vu.checkPermissions,parameters:{requests:[(0,p.N)({path:"//sys/interface-monitoring/allow_grafana_url",user:o,permission:"use"})]},errorTitle:"Check `use` permission for //sys/interface-monitoring/allow_grafana_url"})).data,s=a.error,d=(null!==(t=null==l?void 0:l[0])&&void 0!==t?t:{}).output,(null==s||null===(r=s.inner_errors)||void 0===r?void 0:r[0].code)===w.N.NODE_DOES_NOT_EXIST||"allow"===(null==d?void 0:d.action));return i.useMemo((function(){if(c&&Re&&h&&void 0!==m&&void 0!==v){var e=Object.keys(f).reduce((function(e,t){var r=f[t];return e.append("var-".concat(t),String(r)),e}),new URLSearchParams);return e.append("from",String(m)),e.append("to",String(v)),"".concat(Re,"/d/").concat(c,"?").concat(e)}}),[c,f,h,m,v])}({uid:t,effectiveParams:r,from:a,to:l});return(0,V.jsx)(T.M,{itemsToWrap:[{node:(0,V.jsx)(x.NZ,{className:ke("timeline"),from:a,to:l,shortcut:s,onUpdate:d,hasRuler:!0}),growable:!0,marginRight:"none"},{node:c?(0,V.jsx)(f.N,{href:c,target:"_blank",children:"Grafana"}):null}]})}Me.displayName="PrometheusDashboard";var Re=(null!==(Ne=(0,y.FG)().uiSettings)&&void 0!==Ne?Ne:{}).grafanaBaseUrl;function Be(e){var t=e.templating,r=e.params,n=i.useMemo((function(){var e=null==t?void 0:t.list.reduce((function(e,t){var n=t.name,o=t.default_for_ui,a=n;return void 0===r[a]&&void 0===o&&e.push({message:'Missing parameter "'.concat(a,'".')}),e}),[]);if(null!=e&&e.length)return{message:"You have to provide all required parameters",attributes:{params:r},inner_errors:e}}),[t,r]);return n?(0,V.jsx)(b.z,{error:n,type:"alert",bottomMargin:!0}):null}},13717:(e,t,r)=>{r.d(t,{Tt:()=>o.Tt,rN:()=>n.r});var n=r(67691),o=r(13685)},39702:(e,t,r)=>{r.d(t,{A:()=>a});var n=r(40319),o=r(64922);const a=function(e){return(0,o.jsx)("svg",(0,n.A)((0,n.A)({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 16 16"},e),{},{children:(0,o.jsx)("path",{fill:"currentColor",fillRule:"evenodd",d:"M5.47 13.03a.75.75 0 0 1 0-1.06L9.44 8 5.47 4.03a.75.75 0 0 1 1.06-1.06l4.5 4.5a.75.75 0 0 1 0 1.06l-4.5 4.5a.75.75 0 0 1-1.06 0",clipRule:"evenodd"})}))}},49779:()=>{(()=>{var e,t,r,n,o,a,l,i,s,u,d,c,f=Object.create,m=Object.defineProperty,p=Object.getOwnPropertyDescriptor,v=Object.getOwnPropertyNames,h=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty,y=(e={"node_modules/get-root-node-polyfill/index.js"(e,t){function r(e){var t=n(e);return function(e){return"#document-fragment"===e.nodeName&&"ShadowRoot"===e.constructor.name}(t)?r(t.host):t}function n(e){return null!=e.parentNode?n(e.parentNode):e}"object"==typeof t&&t.exports&&(t.exports=function(e){return"object"==typeof e&&Boolean(e.composed)?r(this):n(this)})}},function(){return t||(0,e[v(e)[0]])((t={exports:{}}).exports,t),t.exports});r="yfm-tab-panel",n="active",o="data-diplodoc-group",a="data-diplodoc-key",l=Symbol.for("diplodocTabs"),i=e=>{let t=e.composedPath();return Array.isArray(t)&&t.length>0?t[0]:e.target},s=e=>{let t=i(e);return!t||!t.matches},u=e=>Math.abs(e.scrollHeight-e.clientHeight)>1?e:e.parentElement?u(e.parentElement):void 0,d=(e,t)=>{let r=e.getBoundingClientRect(),n=t.getBoundingClientRect();return{top:r.top-n.top,left:r.left-n.left,scrollTop:t.scrollTop,scrollLeft:t.scrollLeft}},c={TABS:".yfm-tabs",TAB_LIST:".yfm-tab-list",TAB:".yfm-tab",TAB_PANEL:`.${r}`,VERTICAL_TABS:".yfm-tabs-vertical"},"undefined"!=typeof window&&"undefined"!=typeof document&&!window[l]&&(window[l]=new class{constructor(e){this._onSelectTabHandlers=new Set,this._document=e,this._document.addEventListener("click",(e=>{let t=i(e),r=this.areTabsVertical(t);if(s(e)||!this.isValidTabElement(t)&&!r)return;let n=this.getTabDataFromHTMLElement(t);n&&this._selectTab(n,t)})),this._document.addEventListener("keydown",(e=>{let t=null;switch(e.key){case"ArrowLeft":t="left";break;case"ArrowRight":t="right"}if(!t)return;let r=i(e);if(s(e)||!this.isValidTabElement(r))return;let{tabs:n,nodes:o}=this.getTabs(r),a=this.getTabDataFromHTMLElement(r),l=n.findIndex((({key:e})=>(null==a?void 0:a.key)&&e===a.key));if(!a||n.length<=1||-1===l)return;let u=(l+("left"===t?-1:1)+n.length)%n.length;this.selectTab(n[u]),o[u].focus()}))}onSelectTab(e){return this._onSelectTabHandlers.add(e),()=>{this._onSelectTabHandlers.delete(e)}}selectTabById(e,t){let r=this._document.querySelector(`${c.TAB}[data-diplodoc-id="${e}"]`);if(!r||!this.isValidTabElement(r))return;let n=this.getTabDataFromHTMLElement(r);n&&this._selectTab(n,r),null!=t&&t.scrollToElement&&r.scrollIntoView()}selectTab(e){this._selectTab(e)}_selectTab(e,t){let{group:r,key:n,align:o}=e;if(!r)return;let a=t&&u(t),l=a&&d(t,a);this.updateHTML({group:r,key:n,align:o},o)>0&&(this.fireSelectTabEvent({group:r,key:n,align:o},null==t?void 0:t.dataset.diplodocId),l&&this.resetScroll(t,a,l))}updateHTML(e,t){switch(t){case"vertical":return this.updateHTMLVertical(e);case"horizontal":return this.updateHTMLHorizontal(e)}return 0}updateHTMLVertical(e){let{group:t,key:r}=e,[n]=this._document.querySelectorAll(`${c.TABS}[${o}="${t}"] ${c.TAB}[${a}="${r}"]`),l=0,i=n.parentNode.children;for(let e=0;e<i.length;e+=2){let[t,r]=[i.item(e),i.item(e+1)],o=t.children.item(0);o.hasAttribute("checked")&&(t.classList.remove("active"),null==r||r.classList.remove("active"),o.removeAttribute("checked")),t===n&&(t.classList.add("active"),null==r||r.classList.add("active"),o.setAttribute("checked","true")),l++}return l}updateHTMLHorizontal(e){let{group:t,key:l}=e,i=this._document.querySelectorAll(`${c.TABS}[${o}="${t}"] ${c.TAB}[${a}="${l}"]`),s=0;return i.forEach((e=>{let t=e;if(!this.isValidTabElement(t)||"true"===t.dataset.diplodocIsActive)return;s++;let o=e,a=o.parentNode,l=null==a?void 0:a.parentNode,i=Array.from((null==a?void 0:a.querySelectorAll(c.TAB))||[]),u=Array.from((null==l?void 0:l.children)||[]).filter((e=>e.classList.contains(r))),d=i.indexOf(o);i.forEach(((e,t)=>{let r=u[t],o=t===d;e.dataset.diplodocIsActive=o?"true":"false",e.classList.toggle(n,o),e.setAttribute("aria-selected",o.toString()),e.setAttribute("tabindex",o?"0":"-1"),r.classList.toggle(n,o)}))})),s}resetScroll(e,t,r){let n=d(e,t),o=n.top-r.top,a=n.left-r.left,l=n.scrollTop-r.scrollTop,i=n.scrollLeft-r.scrollLeft;t.scrollTo(t.scrollLeft+a-i,t.scrollTop+o-l)}fireSelectTabEvent(e,t){let{group:r,key:n,align:o}=e,a=r.startsWith("defaultTabsGroup-")?{key:n,align:o}:e;this._onSelectTabHandlers.forEach((e=>{e({tab:a,currentTabId:t})}))}isValidTabElement(e){let t=e.matches(c.TAB)&&e.dataset.diplodocId?e.closest(c.TAB_LIST):null;return null==t?void 0:t.closest(c.TABS)}areTabsVertical(e){let t=e.parentElement;return e.dataset.diplodocVerticalTab||!(null==t||!t.dataset.diplodocVerticalTab)}getTabDataFromHTMLElement(e){var t,r;if(this.areTabsVertical(e)){let r=e.dataset.diplodocVerticalTab?e:e.parentElement,n=r.dataset.diplodocKey,o=null==(t=r.closest(c.TABS))?void 0:t.dataset.diplodocGroup;return n&&o?{group:o,key:n,align:"vertical"}:null}let n=e.dataset.diplodocKey,o=null==(r=e.closest(c.TABS))?void 0:r.dataset.diplodocGroup;return n&&o?{group:o,key:n,align:"horizontal"}:null}getTabs(e){var t,r;let n=null==(t=e.closest(c.TABS))?void 0:t.dataset.diplodocGroup,o=null==(r=e.closest(c.TAB_LIST))?void 0:r.querySelectorAll(c.TAB),a=[];return o.forEach((e=>{let t=null==e?void 0:e.dataset.diplodocKey;t&&a.push({group:n,key:t,align:"horizontal"})})),{tabs:a,nodes:o}}}(document));var b=((e,t,r)=>(r=null!=e?f(h(e)):{},((e,t,r,n)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let r of v(t))g.call(e,r)||undefined===r||m(e,r,{get:()=>t[r],enumerable:!(n=p(t,r))||n.enumerable});return e})(e&&e.__esModule?r:m(r,"default",{value:e,enumerable:!0}),e)))(y());"undefined"!=typeof document&&function(e){const t=e.matches||e.matchesSelector||e.webkitMatchesSelector||e.mozMatchesSelector||e.msMatchesSelector||e.oMatchesSelector;e.matches=e.matchesSelector=t||function(t){const r=(e.getRootNode?e.getRootNode():b.default.call(e)).querySelectorAll(t),n=this;return Array.prototype.some.call(r,(e=>e===n))}}(Element.prototype);var A=e=>{const t=e.composedPath();return Array.isArray(t)&&t.length>0?t[0]:e.target},x=e=>{const t=A(e);return!t||!t.matches};"undefined"!=typeof document&&document.addEventListener("click",(e=>{const t=A(e);if(x(e)||!t.matches(".yfm-clipboard-button"))return;const r=t.parentNode;if(!r)return;const n=r.querySelector("pre code");n&&function(e){if(!e)return Promise.resolve();if(navigator.clipboard&&(navigator.clipboard.writeText,1))return navigator.clipboard.writeText(e);const t=document.createElement("textarea");return t.setAttribute("style","position: absolute; left: 1000%"),t.textContent=e,document.body.append(t),t.select(),document.execCommand("copy"),document.body.removeChild(t),Promise.resolve()}(n.innerText).then((()=>{!function(e){if(!e)return;const t=e.getAttribute("data-animation"),r=e.getRootNode().getElementById(`visibileAnimation-${t}`);r&&r.beginElement()}(r.querySelector(".yfm-clipboard-button"))}))}));var T=".yfm .yfm-cut-title";function w(e){var t;return e instanceof HTMLElement&&(null==(t=null==e?void 0:e.matches)?void 0:t.call(e,T))}"undefined"!=typeof document&&document.addEventListener("click",(e=>{if(x(e))return;const t=function(e){var t;const r=A(e);if(w(r))return r;const n=null==(t=e.composedPath)?void 0:t.call(e);return null==n?void 0:n.find(w)}(e);t&&function(e){const t=e.parentNode;t instanceof HTMLElement&&t.classList.toggle("open")}(t)}));var E={TITLE:".yfm .yfm-term_title",CONTENT:".yfm .yfm-term_dfn"},j="open",L=E.CONTENT.replace(/\./g,"")+" "+j,N=!0;function S(e,t){const{x:r,y:n,right:o,left:a,width:l,height:i}=t.getBoundingClientRect(),s=M(t);if(!s)return;const{right:u,left:d}=s.getBoundingClientRect();if((u<a||d>o)&&!N)return void _(e);N&&s&&(s.addEventListener("scroll",k),N=!1);const c=Number(e.getAttribute("relativeX")),f=Number(e.getAttribute("relativeY"));if(c===r&&f===n)return;e.setAttribute("relativeX",String(r)),e.setAttribute("relativeY",String(n));const m=i+5,p=e.parentElement;if(!p)return;const{width:v}=e.getBoundingClientRect(),{left:h}=p.getBoundingClientRect(),g=Number(C(t).left),y=g-v<0,b=(v+g>document.body.clientWidth||"rtl"===document.dir)&&!y?v-l:0,A=C(p).top-p.offsetTop;e.style.top=Number(C(t).top+m-A)+"px",e.style.left=Number(C(t).left-h+p.offsetLeft-b)+"px"}function k(){const e=document.getElementsByClassName(L)[0];if(!e)return;const t=e.getAttribute("term-id")||"",r=document.getElementById(t);r&&S(e,r)}function M(e){return e?e.closest("table")||e.closest("code")||e.parentElement:null}function _(e){e.classList.remove(j);const t=e.getAttribute("term-id")||"",r=M(document.getElementById(t));r&&(r.removeEventListener("scroll",k),N=!0)}function C(e){const t=e.getBoundingClientRect(),r=document.body,n=document.documentElement,o=window.pageYOffset||n.scrollTop||r.scrollTop,a=window.pageXOffset||n.scrollLeft||r.scrollLeft,l=n.clientTop||r.clientTop||0,i=n.clientLeft||r.clientLeft||0,s=t.top+o-l,u=t.left+a-i;return{top:Math.round(s),left:Math.round(u)}}"undefined"!=typeof document&&(document.addEventListener("click",(e=>{const t=document.getElementsByClassName(L)[0],r=A(e),n=r.getAttribute("id"),o=r.getAttribute("term-key");let a=document.getElementById(o+"_element");if(o&&!a&&(a=function(e){var t;const r=e.getAttribute("term-key"),n=document.getElementById(`${r}_template`),o=null==n?void 0:n.content.cloneNode(!0).firstChild;return null==(t=null==n?void 0:n.parentElement)||t.appendChild(o),n.remove(),o}(r)),t&&n===t.getAttribute("term-id"))return void _(t);const l=r.closest([E.CONTENT.replace(" ",""),j].join("."));t&&!l&&_(t),!x(e)&&r.matches(E.TITLE)&&a&&(function(e,t){const r=t.getAttribute("id")||Math.random().toString(36).substr(2,8);null==e||e.setAttribute("term-id",r)}(a,r),S(a,r),a.classList.toggle(j))})),document.addEventListener("keydown",(e=>{const t=document.getElementsByClassName(L)[0];"Escape"===e.key&&t&&_(t)})),window.addEventListener("resize",(()=>{const e=document.getElementsByClassName(L)[0];if(!e)return;const t=e.getAttribute("term-id")||"",r=document.getElementById(t);r?S(e,r):e.classList.toggle(j)})))})()},51036:(e,t,r)=>{r.d(t,{A:()=>o});var n=r(77810);const o=e=>n.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),n.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M2.97 5.47a.75.75 0 0 1 1.06 0L8 9.44l3.97-3.97a.75.75 0 1 1 1.06 1.06l-4.5 4.5a.75.75 0 0 1-1.06 0l-4.5-4.5a.75.75 0 0 1 0-1.06",clipRule:"evenodd"}))},80682:(e,t,r)=>{r.d(t,{A:()=>a});var n=r(40319),o=r(64922);const a=function(e){return(0,o.jsx)("svg",(0,n.A)((0,n.A)({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 16 16"},e),{},{children:(0,o.jsx)("path",{fill:"currentColor",fillRule:"evenodd",d:"M7.754 2.004a.75.75 0 0 0 0 1.5h4.75v4.742a.75.75 0 0 0 1.5 0V2.754a.75.75 0 0 0-.75-.75zm.492 11.992a.75.75 0 0 0 0-1.5h-4.75V7.754a.75.75 0 0 0-1.5 0v5.492a.75.75 0 0 0 .75.75z",clipRule:"evenodd"})}))}},89362:(e,t,r)=>{r.d(t,{Oi:()=>c,QS:()=>d,ti:()=>m});var n=r(40319),o=r(77810),a=r(8160),l=r(31470),i=r.n(l),s=r(30380),u=r(11089);function d(e){var t,r=e,n=(0,a.wA)();return{params:null!==(t=(0,a.d4)(u.RJ.getParams)[r])&&void 0!==t?t:{},setParams:o.useCallback((function(e){n(u.JF.actions.setParams({type:r,params:e}))}),[r,n])}}function c(e,t){var r=(0,a.wA)(),n=(0,a.d4)(u.RJ.getType),l=o.useCallback((function(e){r(u.JF.actions.setType({type:e}))}),[r]);return{type:o.useMemo((function(){var r=n;return e&&-1===e.indexOf(n)&&(r=null!=t?t:e[0],l(r)),r}),[n,e,t,l]),setType:l}}var f=36e5;function m(e){var t=(0,a.wA)(),r=(0,a.d4)(u.RJ.getTimeRange),l=o.useRef(),d=o.useCallback((function(e){t(u.JF.actions.setTimeRangeFilter({timeRangeFilter:e}))}),[t]);return o.useEffect((function(){if(void 0===r.from||void 0===r.to||!i()(e,l.current)){var t=Date.now(),o=(0,n.A)((0,n.A)({},(0,s.ts)(r)),e),a=o.from,u=void 0===a?t-f:a,c=o.to,m=void 0===c?t:c;l.current=e,d((0,n.A)((0,n.A)({},r),{},{from:u,to:m}))}}),[r,e,d]),{timeRange:r,setTimeRange:d}}},95199:(e,t,r)=>{r.d(t,{A:()=>o});var n=r(77810);const o=e=>n.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),n.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M13.488 3.43a.75.75 0 0 1 .081 1.058l-6 7a.75.75 0 0 1-1.1.042l-3.5-3.5A.75.75 0 0 1 4.03 6.97l2.928 2.927 5.473-6.385a.75.75 0 0 1 1.057-.081",clipRule:"evenodd"}))},95976:(e,t,r)=>{r.d(t,{c:()=>l}),r(77810);var n=r(76872),o=r(64922),a=(0,n.A)("yt-color-circle");function l(e){var t=e.color,r=e.marginRight,n=void 0===r||r;return(0,o.jsx)("div",{className:a({"margin-right":n}),style:{backgroundColor:t}})}}}]);
|
|
2
|
-
//# sourceMappingURL=prometheus-dashboard.
|
|
1
|
+
"use strict";(self.webpackChunk_ytsaurus_ui=self.webpackChunk_ytsaurus_ui||[]).push([[4048],{523:(e,t,r)=>{r.d(t,{L:()=>d}),r(77810);var n=r(1335),o=r(45760),a=r(39702),l=r(40319),i=r(64922);const s=function(e){return(0,i.jsx)("svg",(0,l.A)((0,l.A)({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 16 16"},e),{},{children:(0,i.jsx)("path",{fill:"currentColor",fillRule:"evenodd",d:"M3.47 10.97a.75.75 0 1 0 1.06 1.06l3.5-3.5a.75.75 0 0 0 0-1.06l-3.5-3.5a.75.75 0 0 0-1.06 1.06L6.44 8zm5 0a.75.75 0 1 0 1.06 1.06l3.5-3.5a.75.75 0 0 0 0-1.06l-3.5-3.5a.75.75 0 0 0-1.06 1.06L11.44 8z",clipRule:"evenodd"})}))};var u=(0,r(76872).A)("yt-expanded-button"),d=function(e){var t=e.className,r=e.expanded,l=e.inline,d=e.toggleExpanded,c=e.all,m=e.showText,f=e.size,p=e.qa,v=c?"Collapse All":"Collapse",h=c?"Expand All":"Expand";return(0,i.jsxs)(n.$,{className:u({inline:l},t),view:"flat-secondary",title:r?v:h,onClick:d,size:f,qa:p,children:[m&&(r?v:h)+" ",(0,i.jsx)(o.I,{className:u("expand",{expanded:r}),data:c?s:a.A,size:16})]})}},2464:(e,t,r)=>{r.d(t,{oz:()=>b,B6:()=>g});var n=r(40319),o=r(53775),a=r(9736),l=r(28407),i=r(77810),s=r(76872),u=r(41169),d=r(48971),c=r(7787),m=(r(49779),r(64922)),f=(0,s.A)("yt-markdown"),p={result:{html:"",headings:[]},logs:{info:[],warn:[],error:[],disabled:[]}};function v(e){return h.apply(this,arguments)}function h(){return(h=(0,l.A)((0,o.A)().mark((function e(t){var r,a,l,i;return(0,o.A)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.text,a=t.allowHTML,e.prev=1,e.next=4,(0,d.fI)(u.A.post("/api/markdown-to-html",{text:r,allowHTML:a}),{toasterName:"useMarkdown",skipSuccessToast:!0,errorContent:"Failed to transform markdown text"});case 4:return l=e.sent,i=l.data,e.abrupt("return",i);case 9:return e.prev=9,e.t0=e.catch(1),e.abrupt("return",{result:(0,n.A)({},p.result),logs:(0,n.A)((0,n.A)({},p.logs),{},{error:[e.t0.message]})});case 12:case"end":return e.stop()}}),e,null,[[1,9]])})))).apply(this,arguments)}function g(e){var t=e.text,r=e.allowHTML,n=void 0===r||r,s=i.useState(p),u=(0,a.A)(s,2),d=u[0],c=u[1];return i.useEffect((function(){function e(){return(e=(0,l.A)((0,o.A)().mark((function e(){var r;return(0,o.A)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,v({text:t,allowHTML:n});case 3:r=e.sent,c(r),e.next=9;break;case 7:e.prev=7,e.t0=e.catch(0);case 9:case"end":return e.stop()}}),e,null,[[0,7]])})))).apply(this,arguments)}!function(){e.apply(this,arguments)}()}),[t,n]),d}var y=i.forwardRef((function(e,t){var r,n=(null!==(r=g({text:e.text,allowHTML:!0}).result)&&void 0!==r?r:{}).html;return(0,m.jsx)("div",{className:f(null,"yfm"),dangerouslySetInnerHTML:{__html:null!=n?n:""},ref:t})})),b=i.memo((function(e){var t=e.text;if(!t)return null;var r=c.Ay.renderMarkdown({text:t});return null!=r?r:(0,m.jsx)(y,{text:t})}));b.displayName="Markdown"},3764:(e,t,r)=>{r.d(t,{Cj:()=>i,gL:()=>u});var n=r(53775),o=r(28407),a=r(77810),l=r(33882);r(64772),r(13717),r(64922),r(95976);var i=(0,l.A)(a.lazy((0,o.A)((0,n.A)().mark((function e(){return(0,n.A)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",Promise.all([r.e(8096),r.e(9202)]).then(r.bind(r,18876)));case 1:case"end":return e.stop()}}),e)}))))),s=["rgb(77, 162, 241)","rgb(255, 61, 100)","#76a559","#6a72b8","#e98f27","#b67598","#ffdb80","#c6cb8e","#8dcaaf","#bee9ef"];function u(e){return s[e%s.length]}},13491:(e,t,r)=>{r.r(t),r.d(t,{PrometheusDashboard:()=>Me});var n=r(40319),o=r(68175),a=r(13322),l=r(9736),i=r(77810),s=r(76872),u=r(8160),d=r(31285),c=r.n(d),m=r(31542),f=r(73688),p=r(77575),v=r(93836);function h(e){return"//sys/interface-monitoring/".concat(e)}function g(e){return"".concat(e.gridPos.x,":").concat(e.gridPos.y,":").concat(e.type)}var y=r(31229),b=r(54736),A=r(60915),x=r(30380),T=r(33023),w=r(33952),E=r(27859),j=r(68051),L=r(18801),N=r(41169),S=["cluster","id","from","to","pointCount","dashboardType"];function k(e){var t=e.cluster,r=e.id,o=e.from,a=e.to,l=e.pointCount,i=e.dashboardType,s=(0,L.A)(e,S);try{if(!i||void 0===o||isNaN(o)||void 0===a||isNaN(a)||!l)return{data:void 0,error:void 0};var u=a/1e3,d=o/1e3,c=Math.max(1,Math.floor((u-d)/Math.max(10,l))),m={start:d,end:u,step:c};return N.A.post("/api/".concat(t,"/prometheus/chart-data"),(0,n.A)({id:r,start:d,end:u,step:c,dashboardType:i},s),{params:{id:r}}).then((function(e){var t=e.data;return{data:(0,n.A)({responseData:t},m),error:void 0}}),(function(e){return{error:e}}))}catch(e){return{error:e}}}function M(e){var t=e.cluster,r=e.dashboardType,n=e.params;if(!e.hasValuesToDiscover||!r)return{data:void 0};try{return N.A.post("/api/".concat(t,"/prometheus/discover-values"),{dashboardType:r,params:n}).then((function(e){var t,r=e.data;return{data:null==r||null===(t=r.results)||void 0===t?void 0:t.reduce((function(e,t){return e[t.key]=t,e}),{})}}),(function(e){return{error:e}}))}catch(e){return{error:e}}}var _=j.v.injectEndpoints({endpoints:function(e){return{prometheusFetch:e.query({queryFn:k}),prometheusDiscoverValues:e.query({queryFn:M})}}}),C=_.usePrometheusFetchQuery,R=_.usePrometheusDiscoverValuesQuery,B=r(57623),I=r(89362),P=r(49141),O=r(52797),F=r(82474),H=r(2464),V=r(64922),D=(0,s.A)("yt-prometheus-text"),z=r(523),$=r(63936),q=["data"],J=r(75414),X=r.n(J),Y=r(55339),G=r(64772),Q=r(33547),U=r(99621),W=r(32806),K=i.forwardRef((function(e,t){var r,n=e.className,o=e.children,a=i.useState(null),s=(0,l.A)(a,2),u=s[0],d=s[1],c=(null!==(r=(0,W.r)({element:u,options:{threshold:[0,1]}}))&&void 0!==r?r:{}).intersectionRatio,m=void 0===c?0:c,f=(0,U.N)(d,t);return(0,V.jsx)("div",{ref:f,className:n,children:m>0?o:null})}));K.displayName="IntersectionObserverContainer";var Z=r(3764),ee=r(56796),te=r(48971);function re(e){var t=e.error;return t?(0,V.jsxs)("span",{className:"yt-error-inline",children:[t.message||"An error occured."," ",(0,V.jsx)(ee.S,{onClick:function(){return(0,te.eW)(t)},children:"Details"})]}):null}var ne=r(84549),oe=r(80908),ae=r(1335),le=r(45760),ie=r(80682);const se=function(e){return(0,V.jsx)("svg",(0,n.A)((0,n.A)({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 16 16"},e),{},{children:(0,V.jsx)("path",{fill:"currentColor",fillRule:"evenodd",d:"M15.25 6.993a.75.75 0 0 0 0-1.5H10.5V.75a.75.75 0 1 0-1.5 0v5.493c0 .414.336.75.75.75zM.75 9.007a.75.75 0 1 0 0 1.5H5.5v4.743a.75.75 0 0 0 1.5 0V9.757a.75.75 0 0 0-.75-.75z",clipRule:"evenodd"})}))};var ue=r(11089),de=i.createContext({expandedId:void 0,toggleExpanded:ce,timeRangeFilter:{shortcutValue:"1h"},setTimeRangeFilter:ce});function ce(){throw new Error("Please make sure you are using <PrometheusDashboardContext.Provider /> in parents.")}function me(e){var t=e.children,r=e.type,n=(0,u.wA)(),o=(0,u.d4)((function(e){return e.prometheusDashboard.expandedPanels})),a=(null!=o?o:{})[r],l=(0,I.ti)(),s=l.timeRange,d=l.setTimeRange,c=i.useMemo((function(){return{expandedId:a,toggleExpanded:function(e){n(e===a?ue.JF.actions.setExpandedId({type:r,id:void 0}):ue.JF.actions.setExpandedId({type:r,id:e}))},timeRangeFilter:s,setTimeRangeFilter:d}}),[a,s,d,r,n]);return(0,V.jsx)(de.Provider,{value:c,children:t})}function fe(){return i.useContext(de)}var pe=(0,s.A)("yt-prometheus-widget-toolbar");function ve(e){var t=e.id,r=fe(),n=r.expandedId,o=r.toggleExpanded,a=i.useState(null),s=(0,l.A)(a,2),u=s[0],d=s[1];i.useEffect((function(){var e;return t===n&&(e=setTimeout((function(){return null==u?void 0:u.scrollIntoView()}),300)),function(){clearTimeout(e)}}),[t,n,u]);var c=t===n;return(0,V.jsxs)(i.Fragment,{children:[(0,V.jsx)("div",{className:pe(),children:(0,V.jsx)(ae.$,{view:"flat-secondary",onClick:function(){return o(t)},size:"xs",children:(0,V.jsx)(le.I,{data:c?se:ie.A})})}),(0,V.jsx)("div",{ref:d})]})}var he=r(44458),ge=["elementRef"],ye=(0,s.A)("yt-prometheus-timeseries");function be(e){var t=e.elementRef,r=(0,L.A)(e,ge),o=fe(),a=o.expandedId,l=o.timeRangeFilter,i=l.from,s=l.to;return(0,V.jsx)(K,{className:ye({expanded:r.id===a}),ref:t,children:(0,V.jsx)(Ae,(0,n.A)((0,n.A)({},r),{},{from:i,to:s}))},r.id)}function Ae(e){var t,r=e.data,o=e.id,a=e.from,s=e.to,u=r.title,d=i.useState(null),c=(0,l.A)(d,2),m=c[0],f=c[1],p=function(e){var t=e.id,r=e.data,o=r.title,a=r.targets,l=r.params,s=r.fieldConfig,u=e.pointCount,d=e.from,c=e.to,m=l.__ytDashboardType,f=C({cluster:Q.YT.cluster,dashboardType:m,id:t,from:d,to:c,pointCount:u,params:l}),p=f.data,v=f.isLoading,h=f.error,g=i.useMemo((function(){var e,t;return{showLegend:!(null!=s&&null!==(e=s.defaults)&&void 0!==e&&null!==(e=e.custom)&&void 0!==e&&null!==(e=e.hideForm)&&void 0!==e&&e.legend),axisLabel:null==s||null===(t=s.defaults)||void 0===t||null===(t=t.custom)||void 0===t?void 0:t.axisLabel,propertiesByRefId:X()(null==s?void 0:s.overrides,(function(e,t){var r=t.matcher,n=t.properties;return"byFrameRefID"!==r.id||(e[r.options]=X()(n,(function(e,t){return e[t.id]=t.value,e}),{})),e}),{})}}),[s]);return i.useMemo((function(){if(h)return{error:h};if(!p||null==p||!p.responseData)return{isLoading:v};var e=p.responseData,t=p.start,r=p.end,i=p.step,s=e.results;return{data:xe((0,n.A)({title:o},g),a,s,{end:r,start:t,step:i},l)}}),[p,h,l,a,o,g,v])}({id:o,data:r,pointCount:null===(t=(0,oe.L)({element:m}))||void 0===t?void 0:t.contentRect.width,from:a,to:s}),v=p.error,h=p.data,g=p.isLoading,y=i.useState(),b=(0,l.A)(y,2),A=b[0],x=b[1];return i.useEffect((function(){return null==A||A.subscribe(),function(){null==A||A.unsubscribe()}}),[A]),(0,V.jsxs)(i.Fragment,{children:[(0,V.jsx)(Y.s,{ref:f,className:ye("widget"),direction:"column",id:o,children:h?(0,V.jsx)(Z.Cj,{type:"yagr",data:h,onChartLoad:function(e){x(e.widget)}}):(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)("div",{className:ye("widget-title"),children:u}),v&&(0,V.jsx)("div",{className:ye("error"),children:(0,V.jsx)(re,{error:v})}),!h&&g&&(0,V.jsx)(ne.A,{visible:!0,centered:!0})]})}),(0,V.jsx)(ve,{id:o})]})}function xe(e,t,r,o,a){for(var i=e.title,s=e.axisLabel,u=e.propertiesByRefId,d=e.showLegend,c=o.end,m=o.start,f=o.step,p={data:{graphs:[],timeline:[]},libraryConfig:{title:{text:i},legend:{show:d},tooltip:{show:function(e){return e.state.isMouseOver},title:{y:function(e){var t=e.x;return G.A.DateTime(t/1e3)}},sort:{y:function(e,t){var r=e.value,n=t.value;return isNaN(r)?1:isNaN(n)?-1:(0,he.IP)(r,n,-1,-1)}}},axes:{y:{label:s}},cursor:{sync:"yt-timeseries-cursor"}}},h=m;h-.5*f<c;h+=f)p.data.timeline.push(1e3*h);for(var g=p.data.timeline,y=[],b=0;b<(null==r?void 0:r.length);++b)for(var A,x=t[b],T=x.legendFormat,w=(null!==(A=u[x.refId])&&void 0!==A?A:{}).unit,E=0;E<(null!==(j=null===(L=r[b])||void 0===L||null===(L=L.data)||void 0===L||null===(L=L.result)||void 0===L?void 0:L.length)&&void 0!==j?j:0);++E){var j,L,N,S=null===(N=r[b])||void 0===N||null===(N=N.data)||void 0===N?void 0:N.result[E];if(S){var k=S.values,M=void 0===k?[]:k,_=S.metric,C={name:null!=T&&T.length?(0,v.jN)(T,(0,n.A)((0,n.A)({},a),_),v.Ym):void 0,data:new Array(g.length),formatter:"bytes"===w?G.A.Bytes:G.A.NumberSmart,color:(0,Z.gL)(p.data.graphs.length)};if(!C.name){var R=p.data.graphs.length;y.push({metric:_,graphIndex:R})}if(p.data.graphs.push(C),M.length){for(var B=0;B<M.length;++B){var I=(0,l.A)(M[B],2),P=I[0],O=I[1],F=Math.round((P-m)/f);C.data[F]=Number(O)}0===B&&p.data.graphs.pop()}}}for(var H=0;H<y.length;++H)Te(p.data.graphs,y,H);return p}function Te(e,t,r){var n,o,a=null!==(n=t[r])&&void 0!==n?n:{},l=a.metric,i=a.graphIndex,s=(null!==(o=t[0===r?1:0])&&void 0!==o?o:{}).metric;e[i].name=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(e){var r=Object.keys(e).reduce((function(r,n){if(e[n]===t[n])return r;var o=e[n];return r+("__name__"===n?o:"".concat(n,":").concat(o,"; "))}),"");return Object.keys(null!=t?t:{}).reduce((function(t,r){return r in e?t:t+"".concat(r,":").concat(G.A.NO_VALUE,"; ")}),r)}}(l,s)}var we=["gridPos","type"],Ee=(0,s.A)("yt-prometheus-dashkit"),je="".concat(Math.random().toString());function Le(e){var t=function(e,t,r){var a=i.useState({}),s=(0,l.A)(a,2),u=s[0],d=s[1],c=fe().expandedId,m=i.useMemo((function(){var a;return function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r=e?null==t?void 0:t.findIndex((function(t){return e===g(t)})):-1,n=-1!==r?null==t?void 0:t[r]:void 0;return n?[n]:t}(c,t).reduce((function(t,l){var i=l.gridPos,s=l.type,c=(0,L.A)(l,we),m=g(l);function f(o){var a="prometheus.".concat(s),l=Object.assign(c,o,{params:(0,n.A)((0,n.A)({},r),{},{__ytDashboardType:e})});return t.layout.push((0,n.A)((0,n.A)({},i),{},{i:m})),t.items.push({id:m,type:a,namespace:"default",data:l}),l}if("row"===s){var p=u[m];a=f({childCount:0,collapsed:p,onToggleCollapsed:function(){d((0,n.A)((0,n.A)({},u),{},(0,o.A)({},m,!p)))}})}else{var v,h;void 0!==(null===(v=a)||void 0===v?void 0:v.childCount)&&++a.childCount,null!==(h=a)&&void 0!==h&&h.collapsed||f({})}return t}),{salt:je,counter:0,layout:[],items:[],aliases:{},connections:[]})}),[t,u,r,c,e]);return i.useMemo((function(){var e,t=null==m||null===(e=m.layout)||void 0===e?void 0:e.reduce((function(e,t){var r="".concat(t.y);return void 0===e[r]&&(e[r]=0),e[r]+=t.w,e}),{}),r=Object.values(null!=t?t:{}).reduce((function(e,t){return Math.max(e,t)}),0);F.XM.setSettings({gridLayout:{margin:[4,4],containerPadding:[0,0],rowHeight:30,cols:r}})}),[m]),{config:m}}(e.type,e.panels,e.params),r=t.config;return(0,V.jsx)("div",{className:Ee(),children:r?(0,V.jsx)(F.XM,{config:r,editMode:!1}):null})}var Ne,Se={text:{renderer:function(e,t){var r=e.data,n=(null!=r?r:{}).options,o=null!=n?n:{},a=o.mode,l=o.content;return(0,V.jsx)("div",{ref:t,className:D(),children:"markdown"!==a?l:(0,V.jsx)(H.oz,{text:l})})},type:"prometheus.text"},timeseries:{renderer:function(e,t){return(0,V.jsx)(be,(0,n.A)((0,n.A)({},e),{},{elementRef:t}))},type:"prometheus.timeseries"},row:{renderer:function(e,t){var r=e.data,n=(0,L.A)(e,q),o=r.collapsed,a=r.onToggleCollapsed,l=r.childCount;return(0,V.jsxs)("div",{ref:t,children:[(0,V.jsx)(z.L,{expanded:!o,toggleExpanded:a}),o&&(0,V.jsxs)($.L1,{children:[l," panels"]})]},n.id)},type:"prometheus.row"}};F.XM.registerPlugins.apply(F.XM,(0,a.A)(Object.keys(Se).map((function(e){var t=e;return(0,n.A)({},Se[t])}))));var ke=(0,s.A)("yt-prometheus-dashboard"),Me=i.memo((function(e){var t=e.type,r=e.params,s=e.toolbarStickyTop,d=function(e){var t=e.type,r=e.params,n=i.useState({}),o=(0,l.A)(n,2),a=o[0],s=o[1];return i.useEffect((function(){E.Qq.get(E.Vu.prometheusMonitoringLayout,{path:h(t)}).then((function(e){s({layout:e})})).catch((function(e){e.code===w.N.NODE_DOES_NOT_EXIST?s({layout:_e({type:t,params:r,uid:""})}):s({error:e})}))}),[t]),a}({type:t,params:r}),m=d.layout,p=d.error,v=function(e){var t=e.toolbarItems,r=e.layout,s=e.params,d=e.type,m=(0,u.d4)(P.dB),p=(null!=r?r:{}).templating,v=(null!=p?p:{}).list,h=i.useMemo((function(){return r?null==v?void 0:v.filter((function(e){return e.discover_values})):[]}),[v,r]),g=(0,I.QS)(d),y=g.params,b=g.setParams,A=R({cluster:m,dashboardType:d,params:s,hasValuesToDiscover:Boolean(null==h?void 0:h.length)}).data;return{toolbarItems:i.useMemo((function(){var e=(0,a.A)(null!=t?t:[]);return null==h||h.forEach((function(t){var r,n,i,s=t.label,u=t.name,d=t.default_for_ui,m=t.discover_values;if(m&&A){var p=function(e){var t=e.label,r=e.match;return"_".concat(t,"_").concat(r,"_")}(m),v=A[p],h=null!==(r=null==y?void 0:y[u])&&void 0!==r?r:d,g=c()([].concat((0,a.A)(d?[d]:[]),(0,a.A)(null!==(n=null===(i=v.result)||void 0===i?void 0:i.data)&&void 0!==n?n:[])));e.push({node:(0,V.jsx)(f.l,{label:s,value:h?[h]:[],options:g.map((function(e){return{content:e,value:e}})),onUpdate:function(e){var t=(0,l.A)(e,1)[0];b((0,o.A)({},u,t))}})})}})),e}),[h,A,y,b,t]),effectiveParams:i.useMemo((function(){return s?(0,n.A)((0,n.A)({},s),y):void 0}),[s,y])}}({type:t,layout:m,params:r,toolbarItems:e.toolbarItems}),g=v.toolbarItems,y=v.effectiveParams,x=Boolean(null==g?void 0:g.length);return y?(0,V.jsx)(me,{type:t,children:(0,V.jsx)(A.X,{className:ke({"has-toolbar":x}),topOffset:s,children:function(e){var r=e.stickyTopClassName;return(0,V.jsxs)(i.Fragment,{children:[(0,V.jsxs)("div",{className:ke("toolbar",r),children:[(0,V.jsx)(Ce,{uid:null==m?void 0:m.uid,effectiveParams:y}),x&&(0,V.jsx)(T.M,{itemsToWrap:null!=g?g:[],marginTopSkip:!0})]}),p&&(0,V.jsx)(b.z,{error:p}),(0,V.jsx)(Be,{templating:null==m?void 0:m.templating,params:y}),void 0===(null==m?void 0:m.panels)?null:(0,V.jsx)(Le,{type:t,panels:m.panels,params:y},t)]})}})}):null}));function _e(e){var t=e.type,r=e.params,n=e.uid;return{templating:{list:[]},panels:[{type:"text",options:{content:["#### `".concat(h(t),"` is not exist")," You have to provide correct dashboard description, see expected parameters below:","```json",JSON.stringify(r,null,4),"```"].join("\n"),mode:"markdown"},gridPos:{x:0,y:0,w:24,h:27}}],uid:n}}function Ce(e){var t=e.uid,r=e.effectiveParams,n=fe(),o=n.timeRangeFilter,a=o.from,l=o.to,s=o.shortcutValue,d=n.setTimeRangeFilter,c=function(e){var t,r,n,o,a,l,s,d,c=e.uid,m=e.effectiveParams,f=e.from,v=e.to,h=(n=(0,u.d4)(P.dB),o=(0,u.d4)(O.ID),l=(a=(0,B.Ou)({cluster:n,id:E.Vu.checkPermissions,parameters:{requests:[(0,p.N)({path:"//sys/interface-monitoring/allow_grafana_url",user:o,permission:"use"})]},errorTitle:"Check `use` permission for //sys/interface-monitoring/allow_grafana_url"})).data,s=a.error,d=(null!==(t=null==l?void 0:l[0])&&void 0!==t?t:{}).output,(null==s||null===(r=s.inner_errors)||void 0===r?void 0:r[0].code)===w.N.NODE_DOES_NOT_EXIST||"allow"===(null==d?void 0:d.action));return i.useMemo((function(){if(c&&Re&&h&&void 0!==f&&void 0!==v){var e=Object.keys(m).reduce((function(e,t){var r=m[t];return e.append("var-".concat(t),String(r)),e}),new URLSearchParams);return e.append("from",String(f)),e.append("to",String(v)),"".concat(Re,"/d/").concat(c,"?").concat(e)}}),[c,m,h,f,v])}({uid:t,effectiveParams:r,from:a,to:l});return(0,V.jsx)(T.M,{itemsToWrap:[{node:(0,V.jsx)(x.NZ,{className:ke("timeline"),from:a,to:l,shortcut:s,onUpdate:d,hasRuler:!0}),growable:!0,marginRight:"none"},{node:c?(0,V.jsx)(m.N,{href:c,target:"_blank",children:"Grafana"}):null}]})}Me.displayName="PrometheusDashboard";var Re=(null!==(Ne=(0,y.FG)().uiSettings)&&void 0!==Ne?Ne:{}).grafanaBaseUrl;function Be(e){var t=e.templating,r=e.params,n=i.useMemo((function(){var e=null==t?void 0:t.list.reduce((function(e,t){var n=t.name,o=t.default_for_ui,a=n;return void 0===r[a]&&void 0===o&&e.push({message:'Missing parameter "'.concat(a,'".')}),e}),[]);if(null!=e&&e.length)return{message:"You have to provide all required parameters",attributes:{params:r},inner_errors:e}}),[t,r]);return n?(0,V.jsx)(b.z,{error:n,type:"alert",bottomMargin:!0}):null}},13717:(e,t,r)=>{r.d(t,{Tt:()=>o.Tt,rN:()=>n.r});var n=r(67691),o=r(13685)},39702:(e,t,r)=>{r.d(t,{A:()=>a});var n=r(40319),o=r(64922);const a=function(e){return(0,o.jsx)("svg",(0,n.A)((0,n.A)({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 16 16"},e),{},{children:(0,o.jsx)("path",{fill:"currentColor",fillRule:"evenodd",d:"M5.47 13.03a.75.75 0 0 1 0-1.06L9.44 8 5.47 4.03a.75.75 0 0 1 1.06-1.06l4.5 4.5a.75.75 0 0 1 0 1.06l-4.5 4.5a.75.75 0 0 1-1.06 0",clipRule:"evenodd"})}))}},49779:()=>{(()=>{var e,t,r,n,o,a,l,i,s,u,d,c,m=Object.create,f=Object.defineProperty,p=Object.getOwnPropertyDescriptor,v=Object.getOwnPropertyNames,h=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty,y=(e={"node_modules/get-root-node-polyfill/index.js"(e,t){function r(e){var t=n(e);return function(e){return"#document-fragment"===e.nodeName&&"ShadowRoot"===e.constructor.name}(t)?r(t.host):t}function n(e){return null!=e.parentNode?n(e.parentNode):e}"object"==typeof t&&t.exports&&(t.exports=function(e){return"object"==typeof e&&Boolean(e.composed)?r(this):n(this)})}},function(){return t||(0,e[v(e)[0]])((t={exports:{}}).exports,t),t.exports});r="yfm-tab-panel",n="active",o="data-diplodoc-group",a="data-diplodoc-key",l=Symbol.for("diplodocTabs"),i=e=>{let t=e.composedPath();return Array.isArray(t)&&t.length>0?t[0]:e.target},s=e=>{let t=i(e);return!t||!t.matches},u=e=>Math.abs(e.scrollHeight-e.clientHeight)>1?e:e.parentElement?u(e.parentElement):void 0,d=(e,t)=>{let r=e.getBoundingClientRect(),n=t.getBoundingClientRect();return{top:r.top-n.top,left:r.left-n.left,scrollTop:t.scrollTop,scrollLeft:t.scrollLeft}},c={TABS:".yfm-tabs",TAB_LIST:".yfm-tab-list",TAB:".yfm-tab",TAB_PANEL:`.${r}`,VERTICAL_TABS:".yfm-tabs-vertical"},"undefined"!=typeof window&&"undefined"!=typeof document&&!window[l]&&(window[l]=new class{constructor(e){this._onSelectTabHandlers=new Set,this._document=e,this._document.addEventListener("click",(e=>{let t=i(e),r=this.areTabsVertical(t);if(s(e)||!this.isValidTabElement(t)&&!r)return;let n=this.getTabDataFromHTMLElement(t);n&&this._selectTab(n,t)})),this._document.addEventListener("keydown",(e=>{let t=null;switch(e.key){case"ArrowLeft":t="left";break;case"ArrowRight":t="right"}if(!t)return;let r=i(e);if(s(e)||!this.isValidTabElement(r))return;let{tabs:n,nodes:o}=this.getTabs(r),a=this.getTabDataFromHTMLElement(r),l=n.findIndex((({key:e})=>(null==a?void 0:a.key)&&e===a.key));if(!a||n.length<=1||-1===l)return;let u=(l+("left"===t?-1:1)+n.length)%n.length;this.selectTab(n[u]),o[u].focus()}))}onSelectTab(e){return this._onSelectTabHandlers.add(e),()=>{this._onSelectTabHandlers.delete(e)}}selectTabById(e,t){let r=this._document.querySelector(`${c.TAB}[data-diplodoc-id="${e}"]`);if(!r||!this.isValidTabElement(r))return;let n=this.getTabDataFromHTMLElement(r);n&&this._selectTab(n,r),null!=t&&t.scrollToElement&&r.scrollIntoView()}selectTab(e){this._selectTab(e)}_selectTab(e,t){let{group:r,key:n,align:o}=e;if(!r)return;let a=t&&u(t),l=a&&d(t,a);this.updateHTML({group:r,key:n,align:o},o)>0&&(this.fireSelectTabEvent({group:r,key:n,align:o},null==t?void 0:t.dataset.diplodocId),l&&this.resetScroll(t,a,l))}updateHTML(e,t){switch(t){case"vertical":return this.updateHTMLVertical(e);case"horizontal":return this.updateHTMLHorizontal(e)}return 0}updateHTMLVertical(e){let{group:t,key:r}=e,[n]=this._document.querySelectorAll(`${c.TABS}[${o}="${t}"] ${c.TAB}[${a}="${r}"]`),l=0,i=n.parentNode.children;for(let e=0;e<i.length;e+=2){let[t,r]=[i.item(e),i.item(e+1)],o=t.children.item(0);o.hasAttribute("checked")&&(t.classList.remove("active"),null==r||r.classList.remove("active"),o.removeAttribute("checked")),t===n&&(t.classList.add("active"),null==r||r.classList.add("active"),o.setAttribute("checked","true")),l++}return l}updateHTMLHorizontal(e){let{group:t,key:l}=e,i=this._document.querySelectorAll(`${c.TABS}[${o}="${t}"] ${c.TAB}[${a}="${l}"]`),s=0;return i.forEach((e=>{let t=e;if(!this.isValidTabElement(t)||"true"===t.dataset.diplodocIsActive)return;s++;let o=e,a=o.parentNode,l=null==a?void 0:a.parentNode,i=Array.from((null==a?void 0:a.querySelectorAll(c.TAB))||[]),u=Array.from((null==l?void 0:l.children)||[]).filter((e=>e.classList.contains(r))),d=i.indexOf(o);i.forEach(((e,t)=>{let r=u[t],o=t===d;e.dataset.diplodocIsActive=o?"true":"false",e.classList.toggle(n,o),e.setAttribute("aria-selected",o.toString()),e.setAttribute("tabindex",o?"0":"-1"),r.classList.toggle(n,o)}))})),s}resetScroll(e,t,r){let n=d(e,t),o=n.top-r.top,a=n.left-r.left,l=n.scrollTop-r.scrollTop,i=n.scrollLeft-r.scrollLeft;t.scrollTo(t.scrollLeft+a-i,t.scrollTop+o-l)}fireSelectTabEvent(e,t){let{group:r,key:n,align:o}=e,a=r.startsWith("defaultTabsGroup-")?{key:n,align:o}:e;this._onSelectTabHandlers.forEach((e=>{e({tab:a,currentTabId:t})}))}isValidTabElement(e){let t=e.matches(c.TAB)&&e.dataset.diplodocId?e.closest(c.TAB_LIST):null;return null==t?void 0:t.closest(c.TABS)}areTabsVertical(e){let t=e.parentElement;return e.dataset.diplodocVerticalTab||!(null==t||!t.dataset.diplodocVerticalTab)}getTabDataFromHTMLElement(e){var t,r;if(this.areTabsVertical(e)){let r=e.dataset.diplodocVerticalTab?e:e.parentElement,n=r.dataset.diplodocKey,o=null==(t=r.closest(c.TABS))?void 0:t.dataset.diplodocGroup;return n&&o?{group:o,key:n,align:"vertical"}:null}let n=e.dataset.diplodocKey,o=null==(r=e.closest(c.TABS))?void 0:r.dataset.diplodocGroup;return n&&o?{group:o,key:n,align:"horizontal"}:null}getTabs(e){var t,r;let n=null==(t=e.closest(c.TABS))?void 0:t.dataset.diplodocGroup,o=null==(r=e.closest(c.TAB_LIST))?void 0:r.querySelectorAll(c.TAB),a=[];return o.forEach((e=>{let t=null==e?void 0:e.dataset.diplodocKey;t&&a.push({group:n,key:t,align:"horizontal"})})),{tabs:a,nodes:o}}}(document));var b=((e,t,r)=>(r=null!=e?m(h(e)):{},((e,t,r,n)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let r of v(t))g.call(e,r)||undefined===r||f(e,r,{get:()=>t[r],enumerable:!(n=p(t,r))||n.enumerable});return e})(e&&e.__esModule?r:f(r,"default",{value:e,enumerable:!0}),e)))(y());"undefined"!=typeof document&&function(e){const t=e.matches||e.matchesSelector||e.webkitMatchesSelector||e.mozMatchesSelector||e.msMatchesSelector||e.oMatchesSelector;e.matches=e.matchesSelector=t||function(t){const r=(e.getRootNode?e.getRootNode():b.default.call(e)).querySelectorAll(t),n=this;return Array.prototype.some.call(r,(e=>e===n))}}(Element.prototype);var A=e=>{const t=e.composedPath();return Array.isArray(t)&&t.length>0?t[0]:e.target},x=e=>{const t=A(e);return!t||!t.matches};"undefined"!=typeof document&&document.addEventListener("click",(e=>{const t=A(e);if(x(e)||!t.matches(".yfm-clipboard-button"))return;const r=t.parentNode;if(!r)return;const n=r.querySelector("pre code");n&&function(e){if(!e)return Promise.resolve();if(navigator.clipboard&&(navigator.clipboard.writeText,1))return navigator.clipboard.writeText(e);const t=document.createElement("textarea");return t.setAttribute("style","position: absolute; left: 1000%"),t.textContent=e,document.body.append(t),t.select(),document.execCommand("copy"),document.body.removeChild(t),Promise.resolve()}(n.innerText).then((()=>{!function(e){if(!e)return;const t=e.getAttribute("data-animation"),r=e.getRootNode().getElementById(`visibileAnimation-${t}`);r&&r.beginElement()}(r.querySelector(".yfm-clipboard-button"))}))}));var T=".yfm .yfm-cut-title";function w(e){var t;return e instanceof HTMLElement&&(null==(t=null==e?void 0:e.matches)?void 0:t.call(e,T))}"undefined"!=typeof document&&document.addEventListener("click",(e=>{if(x(e))return;const t=function(e){var t;const r=A(e);if(w(r))return r;const n=null==(t=e.composedPath)?void 0:t.call(e);return null==n?void 0:n.find(w)}(e);t&&function(e){const t=e.parentNode;t instanceof HTMLElement&&t.classList.toggle("open")}(t)}));var E={TITLE:".yfm .yfm-term_title",CONTENT:".yfm .yfm-term_dfn"},j="open",L=E.CONTENT.replace(/\./g,"")+" "+j,N=!0;function S(e,t){const{x:r,y:n,right:o,left:a,width:l,height:i}=t.getBoundingClientRect(),s=M(t);if(!s)return;const{right:u,left:d}=s.getBoundingClientRect();if((u<a||d>o)&&!N)return void _(e);N&&s&&(s.addEventListener("scroll",k),N=!1);const c=Number(e.getAttribute("relativeX")),m=Number(e.getAttribute("relativeY"));if(c===r&&m===n)return;e.setAttribute("relativeX",String(r)),e.setAttribute("relativeY",String(n));const f=i+5,p=e.parentElement;if(!p)return;const{width:v}=e.getBoundingClientRect(),{left:h}=p.getBoundingClientRect(),g=Number(C(t).left),y=g-v<0,b=(v+g>document.body.clientWidth||"rtl"===document.dir)&&!y?v-l:0,A=C(p).top-p.offsetTop;e.style.top=Number(C(t).top+f-A)+"px",e.style.left=Number(C(t).left-h+p.offsetLeft-b)+"px"}function k(){const e=document.getElementsByClassName(L)[0];if(!e)return;const t=e.getAttribute("term-id")||"",r=document.getElementById(t);r&&S(e,r)}function M(e){return e?e.closest("table")||e.closest("code")||e.parentElement:null}function _(e){e.classList.remove(j);const t=e.getAttribute("term-id")||"",r=M(document.getElementById(t));r&&(r.removeEventListener("scroll",k),N=!0)}function C(e){const t=e.getBoundingClientRect(),r=document.body,n=document.documentElement,o=window.pageYOffset||n.scrollTop||r.scrollTop,a=window.pageXOffset||n.scrollLeft||r.scrollLeft,l=n.clientTop||r.clientTop||0,i=n.clientLeft||r.clientLeft||0,s=t.top+o-l,u=t.left+a-i;return{top:Math.round(s),left:Math.round(u)}}"undefined"!=typeof document&&(document.addEventListener("click",(e=>{const t=document.getElementsByClassName(L)[0],r=A(e),n=r.getAttribute("id"),o=r.getAttribute("term-key");let a=document.getElementById(o+"_element");if(o&&!a&&(a=function(e){var t;const r=e.getAttribute("term-key"),n=document.getElementById(`${r}_template`),o=null==n?void 0:n.content.cloneNode(!0).firstChild;return null==(t=null==n?void 0:n.parentElement)||t.appendChild(o),n.remove(),o}(r)),t&&n===t.getAttribute("term-id"))return void _(t);const l=r.closest([E.CONTENT.replace(" ",""),j].join("."));t&&!l&&_(t),!x(e)&&r.matches(E.TITLE)&&a&&(function(e,t){const r=t.getAttribute("id")||Math.random().toString(36).substr(2,8);null==e||e.setAttribute("term-id",r)}(a,r),S(a,r),a.classList.toggle(j))})),document.addEventListener("keydown",(e=>{const t=document.getElementsByClassName(L)[0];"Escape"===e.key&&t&&_(t)})),window.addEventListener("resize",(()=>{const e=document.getElementsByClassName(L)[0];if(!e)return;const t=e.getAttribute("term-id")||"",r=document.getElementById(t);r?S(e,r):e.classList.toggle(j)})))})()},51036:(e,t,r)=>{r.d(t,{A:()=>o});var n=r(77810);const o=e=>n.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),n.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M2.97 5.47a.75.75 0 0 1 1.06 0L8 9.44l3.97-3.97a.75.75 0 1 1 1.06 1.06l-4.5 4.5a.75.75 0 0 1-1.06 0l-4.5-4.5a.75.75 0 0 1 0-1.06",clipRule:"evenodd"}))},80682:(e,t,r)=>{r.d(t,{A:()=>a});var n=r(40319),o=r(64922);const a=function(e){return(0,o.jsx)("svg",(0,n.A)((0,n.A)({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 16 16"},e),{},{children:(0,o.jsx)("path",{fill:"currentColor",fillRule:"evenodd",d:"M7.754 2.004a.75.75 0 0 0 0 1.5h4.75v4.742a.75.75 0 0 0 1.5 0V2.754a.75.75 0 0 0-.75-.75zm.492 11.992a.75.75 0 0 0 0-1.5h-4.75V7.754a.75.75 0 0 0-1.5 0v5.492a.75.75 0 0 0 .75.75z",clipRule:"evenodd"})}))}},89362:(e,t,r)=>{r.d(t,{Oi:()=>c,QS:()=>d,ti:()=>f});var n=r(40319),o=r(77810),a=r(8160),l=r(31470),i=r.n(l),s=r(30380),u=r(11089);function d(e){var t,r=e,n=(0,a.wA)();return{params:null!==(t=(0,a.d4)(u.RJ.getParams)[r])&&void 0!==t?t:{},setParams:o.useCallback((function(e){n(u.JF.actions.setParams({type:r,params:e}))}),[r,n])}}function c(e,t){var r=(0,a.wA)(),n=(0,a.d4)(u.RJ.getType),l=o.useCallback((function(e){r(u.JF.actions.setType({type:e}))}),[r]);return{type:o.useMemo((function(){var r=n;return e&&-1===e.indexOf(n)&&(r=null!=t?t:e[0],l(r)),r}),[n,e,t,l]),setType:l}}var m=36e5;function f(e){var t=(0,a.wA)(),r=(0,a.d4)(u.RJ.getTimeRange),l=o.useRef(),d=o.useCallback((function(e){t(u.JF.actions.setTimeRangeFilter({timeRangeFilter:e}))}),[t]),c=o.useCallback((function(e){t(u.JF.actions.moveTimeRangeFilterTo({timestamp:e}))}),[t]);return o.useEffect((function(){if(void 0===r.from||void 0===r.to||!i()(e,l.current)){var t=Date.now(),o=(0,n.A)((0,n.A)({},(0,s.ts)(r)),e),a=o.from,u=void 0===a?t-m:a,c=o.to,f=void 0===c?t:c;l.current=e,d((0,n.A)((0,n.A)({},r),{},{from:u,to:f}))}}),[r,e,d]),{timeRange:r,setTimeRange:d,moveTimeRangeTo:c}}},95199:(e,t,r)=>{r.d(t,{A:()=>o});var n=r(77810);const o=e=>n.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),n.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M13.488 3.43a.75.75 0 0 1 .081 1.058l-6 7a.75.75 0 0 1-1.1.042l-3.5-3.5A.75.75 0 0 1 4.03 6.97l2.928 2.927 5.473-6.385a.75.75 0 0 1 1.057-.081",clipRule:"evenodd"}))},95976:(e,t,r)=>{r.d(t,{c:()=>l}),r(77810);var n=r(76872),o=r(64922),a=(0,n.A)("yt-color-circle");function l(e){var t=e.color,r=e.marginRight,n=void 0===r||r;return(0,o.jsx)("div",{className:a({"margin-right":n}),style:{backgroundColor:t}})}}}]);
|
|
2
|
+
//# sourceMappingURL=prometheus-dashboard.d3814a09.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"js/prometheus-dashboard.d3814a09.chunk.js","mappings":"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","sources":["webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/svgs/chevrons-right.svg","webpack://@ytsaurus/ui/./src/ui/components/ExpandButton/ExpandButton.tsx","webpack://@ytsaurus/ui/./src/ui/components/Markdown/Markdown.tsx","webpack://@ytsaurus/ui/./src/ui/components/YTChartKit/index.tsx","webpack://@ytsaurus/ui/./src/shared/prometheus/utils.ts","webpack://@ytsaurus/ui/./src/ui/store/api/prometheus/endpoints.ts","webpack://@ytsaurus/ui/./src/ui/store/api/prometheus/index.ts","webpack://@ytsaurus/ui/./src/ui/containers/PrometheusDashboard/plugins/text/text.tsx","webpack://@ytsaurus/ui/./src/ui/components/IntersectionObserverContainer/IntersectionObserverContainer.tsx","webpack://@ytsaurus/ui/./src/ui/components/InlineError/InlineError.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/svgs/chevrons-collapse-up-right.svg","webpack://@ytsaurus/ui/./src/ui/containers/PrometheusDashboard/PrometheusDashboardContext/PrometheusDashboardContext.tsx","webpack://@ytsaurus/ui/./src/ui/containers/PrometheusDashboard/PrometheusWidgetToolbar/PrometheusWidgetToolbar.tsx","webpack://@ytsaurus/ui/./src/ui/containers/PrometheusDashboard/plugins/timeseries/timeseries.tsx","webpack://@ytsaurus/ui/./src/ui/containers/PrometheusDashboard/PrometheusDashKit.tsx","webpack://@ytsaurus/ui/./src/ui/containers/PrometheusDashboard/plugins/row.tsx","webpack://@ytsaurus/ui/./src/ui/containers/PrometheusDashboard/PrometheusDashboard.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/svgs/chevron-right.svg","webpack://@ytsaurus/ui/./node_modules/@diplodoc/transform/node_modules/@diplodoc/tabs-extension/src/common.ts","webpack://@ytsaurus/ui/./node_modules/@diplodoc/transform/node_modules/@diplodoc/tabs-extension/src/runtime/utils.ts","webpack://@ytsaurus/ui/./node_modules/@diplodoc/transform/node_modules/@diplodoc/tabs-extension/src/runtime/TabsController.ts","webpack://@ytsaurus/ui/./node_modules/@diplodoc/transform/node_modules/get-root-node-polyfill/index.js","webpack://@ytsaurus/ui/./node_modules/@diplodoc/transform/node_modules/@diplodoc/tabs-extension/src/runtime/index.ts","webpack://@ytsaurus/ui/./node_modules/@diplodoc/transform/src/js/polyfill.js","webpack://@ytsaurus/ui/./node_modules/@diplodoc/transform/src/js/utils.ts","webpack://@ytsaurus/ui/./node_modules/@diplodoc/transform/src/js/code.ts","webpack://@ytsaurus/ui/./node_modules/@diplodoc/transform/src/js/cut.ts","webpack://@ytsaurus/ui/./node_modules/@diplodoc/transform/src/js/term/utils.ts","webpack://@ytsaurus/ui/./node_modules/@diplodoc/transform/src/js/term/index.ts","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/esm/ChevronDown.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/svgs/chevrons-expand-up-right.svg","webpack://@ytsaurus/ui/./src/ui/store/reducers/prometheusDashboard/prometheusDashboard-hooks.ts","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/esm/Check.js","webpack://@ytsaurus/ui/./src/ui/components/ColorCircle/ColorCircle.tsx"],"sourcesContent":["const SvgChevronsRight = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 16 16\" {...props}><path fill=\"currentColor\" fillRule=\"evenodd\" d=\"M3.47 10.97a.75.75 0 1 0 1.06 1.06l3.5-3.5a.75.75 0 0 0 0-1.06l-3.5-3.5a.75.75 0 0 0-1.06 1.06L6.44 8zm5 0a.75.75 0 1 0 1.06 1.06l3.5-3.5a.75.75 0 0 0 0-1.06l-3.5-3.5a.75.75 0 0 0-1.06 1.06L11.44 8z\" clipRule=\"evenodd\" /></svg>;\nexport default SvgChevronsRight;","import React, {FC} from 'react';\nimport {Button, ButtonProps, Icon} from '@gravity-ui/uikit';\nimport shevronRightSvg from '@gravity-ui/icons/svgs/chevron-right.svg';\nimport doubleShevronRightSvg from '@gravity-ui/icons/svgs/chevrons-right.svg';\nimport cn from 'bem-cn-lite';\nimport './ExpandButton.scss';\n\nconst block = cn('yt-expanded-button');\n\ntype Props = {\n className?: string;\n expanded: boolean;\n toggleExpanded: () => void;\n inline?: boolean;\n all?: boolean;\n showText?: boolean;\n size?: ButtonProps['size'];\n qa?: ButtonProps['qa'];\n};\n\nexport const ExpandButton: FC<Props> = ({\n className,\n expanded,\n inline,\n toggleExpanded,\n all,\n showText,\n size,\n qa,\n}) => {\n const titleExpanded = all ? 'Collapse All' : 'Collapse';\n const titleCollapsed = all ? 'Expand All' : 'Expand';\n return (\n <Button\n className={block({inline}, className)}\n view=\"flat-secondary\"\n title={expanded ? titleExpanded : titleCollapsed}\n onClick={toggleExpanded}\n size={size}\n qa={qa}\n >\n {showText && (expanded ? titleExpanded : titleCollapsed) + ' '}\n <Icon\n className={block('expand', {expanded})}\n data={all ? doubleShevronRightSvg : shevronRightSvg}\n size={16}\n />\n </Button>\n );\n};\n","import React from 'react';\nimport cn from 'bem-cn-lite';\nimport axios from 'axios';\n\nimport {OutputType} from '@diplodoc/transform/lib/typings';\n\nimport {wrapApiPromiseByToaster} from '../../utils/utils';\nimport UIFactory from '../../UIFactory';\n\nimport './Markdown.scss';\nimport '@diplodoc/transform/dist/css/yfm.css';\nimport '@diplodoc/transform/dist/js/yfm';\nimport './yfm-overrides.scss';\n\nconst block = cn('yt-markdown');\n\ninterface Props {\n text: string;\n ref?: React.Ref<HTMLDivElement>;\n allowHTML?: boolean;\n}\n\ninterface Response {\n result?: {html?: string; plainText?: string};\n}\n\nconst emptyTransformResponse: OutputType = {\n result: {html: '', headings: []},\n logs: {info: [], warn: [], error: [], disabled: []},\n};\n\nexport async function transformMarkdown({text, allowHTML}: Props): Promise<OutputType> {\n try {\n const {data} = await wrapApiPromiseByToaster(\n axios.post<Response>('/api/markdown-to-html', {\n text,\n allowHTML,\n }),\n {\n toasterName: 'useMarkdown',\n skipSuccessToast: true,\n errorContent: 'Failed to transform markdown text',\n },\n );\n return data as OutputType;\n } catch (e) {\n return {\n result: {...emptyTransformResponse['result']},\n logs: {...emptyTransformResponse['logs'], error: [(e as Error).message]},\n };\n }\n}\n\nexport function useMarkdown({text, allowHTML = true}: Props) {\n const [res, setResult] = React.useState<OutputType>(emptyTransformResponse);\n\n React.useEffect(() => {\n async function transform() {\n try {\n const data = await transformMarkdown({text, allowHTML});\n\n setResult(data);\n } catch (e) {}\n }\n transform();\n }, [text, allowHTML]);\n\n return res;\n}\n\nconst MarkdownImpl = React.forwardRef(function MD({text}: Props, ref: React.Ref<HTMLDivElement>) {\n const {html} = useMarkdown({text, allowHTML: true}).result ?? {};\n\n return (\n <div\n className={block(null, 'yfm')}\n dangerouslySetInnerHTML={{__html: html ?? ''}}\n ref={ref}\n />\n );\n});\n\nexport const Markdown = React.memo(function Markdown({text}: Props) {\n if (!text) {\n return null;\n }\n const customMarkdown = UIFactory.renderMarkdown({text});\n return customMarkdown ?? <MarkdownImpl text={text} />;\n});\n\nMarkdown.displayName = 'Markdown';\n","import React from 'react';\nexport type {ChartKitProps, ChartKitWidget, ChartKitRef} from './YTChartKit';\nexport type {RawSerieData, YagrWidgetData} from '@gravity-ui/chartkit/yagr';\n\nimport withLazyLoading from '../../hocs/withLazyLoading';\nimport type {YTChartKitType} from './YTChartKit';\n\nexport const YTChartKitLazy = withLazyLoading(\n React.lazy(async () => import(/* webpackChunkName: 'chart-kit' */ './YTChartKit')),\n) as YTChartKitType;\n\nconst COLORS = [\n 'rgb(77, 162, 241)',\n 'rgb(255, 61, 100)',\n '#76a559',\n '#6a72b8',\n '#e98f27',\n '#b67598',\n '#ffdb80',\n '#c6cb8e',\n '#8dcaaf',\n '#bee9ef',\n];\n\nexport function getSerieColor(serieIndex: number) {\n return COLORS[serieIndex % COLORS.length];\n}\n\nexport {YTChartKitPie} from './YTChartKitPie';\nexport {YTChartKitHistogram} from './YTChartKitHistogram';\n","import {escapeChars, formatByParamsQuotedEnv} from '../utils/format';\n\nimport {DiscoverValues, PanelType, PrometheusDashboardType, PrometheusWidgetId} from './types';\n\nexport function getDashboardPath(type: PrometheusDashboardType) {\n return `//sys/interface-monitoring/${type}`;\n}\n\nexport function makePanelId(item: {\n gridPos: {x: number; y: number};\n type: PanelType;\n}): PrometheusWidgetId {\n return `${item.gridPos.x}:${item.gridPos.y}:${item.type}`;\n}\n\nexport function parseXYFromPanelId(id: PrometheusWidgetId) {\n const [x, y] = id.split(':');\n return {x: Number(x), y: Number(y)};\n}\n\nconst SPECIAL_EXPR_ENV = {\n $__rate_interval: calculateRateInterval,\n};\n\n/**\n * Poor implementation of\n * https://github.com/grafana/grafana/blob/192d3783d5bede8362c1eed0c27422f431478b5a/pkg/promlib/models/query.go#L345-L366\n */\nfunction calculateRateInterval(stepSec: number) {\n const minStep = 15000;\n return humanizeInterval(0, Math.max(stepSec * 1000 + minStep, minStep * 4));\n}\n\nexport function replaceExprParams(\n expr: string,\n params: Record<string, {toString(): string}>,\n stepSec: number,\n) {\n let res = formatByParamsQuotedEnv(expr, params, {sanitizeParams: (v) => escapeChars(v)});\n for (const k of Object.keys(SPECIAL_EXPR_ENV)) {\n const key = k as keyof typeof SPECIAL_EXPR_ENV;\n if (res.indexOf(key)) {\n res = res.replaceAll(key, SPECIAL_EXPR_ENV[key](stepSec));\n }\n }\n return res;\n}\n\nexport const minute = 60 * 1000;\nexport const hour = minute * 60;\nexport const day = hour * 24;\nexport const week = day * 7;\nexport const month = day * 30;\nexport const year = day * 365;\n\n/**\n * Creates a human-readable representation of time interval\n * @param from Interval start, ms from epoch\n * @param to Interval end, ms from epoch\n * @returns Formatted string, e.g. 1d 3h\n */\nexport const humanizeInterval = (from: number, to: number) => {\n const duration = to - from;\n if (duration >= year) {\n const years = Math.floor(duration / year);\n const months = Math.floor((duration % year) / month);\n return months === 0 || years > 4 ? `${years}y` : `${years}y ${months}mo`;\n }\n if (duration >= month) {\n const months = Math.floor(duration / month);\n const days = Math.floor((duration % month) / day);\n return days === 0 || months > 4 ? `${months}mo` : `${months}mo ${days}d`;\n }\n if (duration >= week) {\n const weeks = Math.floor(duration / week);\n const days = Math.floor((duration % week) / day);\n return days === 0 || weeks > 3 ? `${weeks}w` : `${weeks}w ${days}d`;\n }\n if (duration >= day) {\n const days = Math.floor(duration / day);\n const hours = Math.floor((duration % day) / hour);\n return hours === 0 || days > 4 ? `${days}d` : `${days}d ${hours}h`;\n }\n if (duration >= hour) {\n const hours = Math.floor(duration / hour);\n const minutes = Math.floor((duration % hour) / minute);\n return minutes === 0 || hours > 6 ? `${hours}h` : `${hours}h ${minutes}m`;\n }\n const minutes = Math.round(duration / minute);\n return `${minutes}m`;\n};\n\nexport function makeDiscoverValuesKey({label, match}: DiscoverValues) {\n return `_${label}_${match}_`;\n}\n","import axios, {AxiosResponse} from 'axios';\n\nimport type {\n ChartDataResponse,\n DiscoverValuesPostData,\n DiscoverValuesResponse,\n DiscoverValuesResponseResultsItem,\n PluginRendererDataParams,\n PrometheusDashboardType,\n QueryRangePostData,\n} from '../../../../shared/prometheus/types';\n\nexport type PrometheusChartParams = {\n cluster: string;\n dashboardType?: PrometheusDashboardType;\n id: string;\n\n from?: number;\n to?: number;\n pointCount?: number;\n\n params: PluginRendererDataParams;\n};\n\nexport function fetchPrometheusChartData(args: PrometheusChartParams) {\n const {cluster, id, from, to, pointCount, dashboardType, ...rest} = args;\n try {\n if (\n !dashboardType ||\n from === undefined ||\n isNaN(from) ||\n to === undefined ||\n isNaN(to) ||\n !pointCount\n ) {\n return {data: undefined, error: undefined};\n }\n\n const end = to / 1000;\n const start = from / 1000;\n const step = Math.max(1, Math.floor((end - start) / Math.max(10, pointCount)));\n\n const rangeParams = {start, end, step};\n\n return axios\n .post<\n ChartDataResponse,\n AxiosResponse<ChartDataResponse>,\n QueryRangePostData\n >(`/api/${cluster}/prometheus/chart-data`, {id, start, end, step, dashboardType, ...rest}, {params: {id}})\n .then(\n ({data}) => {\n return {data: {responseData: data, ...rangeParams}, error: undefined};\n },\n (error: any) => {\n return {error};\n },\n );\n } catch (error) {\n return {error};\n }\n}\n\nexport type DiscoverValuesArgs = DiscoverValuesPostData & {\n cluster: string;\n hasValuesToDiscover?: boolean;\n};\n\nexport function fetchPrometheusDiscoverValues({\n cluster,\n dashboardType,\n params,\n hasValuesToDiscover,\n}: DiscoverValuesArgs) {\n if (!hasValuesToDiscover || !dashboardType) {\n return {data: undefined};\n }\n\n try {\n return axios\n .post<\n DiscoverValuesResponse,\n AxiosResponse<DiscoverValuesResponse>,\n DiscoverValuesPostData\n >(`/api/${cluster}/prometheus/discover-values`, {dashboardType, params})\n .then(\n ({data}) => {\n return {\n data: data?.results?.reduce(\n (acc, item) => {\n acc[item.key] = item;\n return acc;\n },\n {} as Record<string, DiscoverValuesResponseResultsItem>,\n ),\n };\n },\n (error: any) => {\n return {error};\n },\n );\n } catch (error) {\n return {error};\n }\n}\n","import {rootApi} from '..';\n\nimport {fetchPrometheusChartData, fetchPrometheusDiscoverValues} from './endpoints';\n\nexport const prometheusApi = rootApi.injectEndpoints({\n endpoints: (build) => ({\n prometheusFetch: build.query({\n queryFn: fetchPrometheusChartData,\n }),\n prometheusDiscoverValues: build.query({\n queryFn: fetchPrometheusDiscoverValues,\n }),\n }),\n});\n\nexport const {usePrometheusFetchQuery, usePrometheusDiscoverValuesQuery} = prometheusApi;\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport {Markdown} from '../../../../components/Markdown/Markdown';\n\nimport {PrometheusPlugins} from '../../PrometheusDashKit';\n\nimport './text.scss';\n\nconst block = cn('yt-prometheus-text');\n\nexport const renderPluginText: PrometheusPlugins['text']['renderer'] = ({data}, elementRef) => {\n const {options} = data ?? {};\n const {mode, content} = options ?? {};\n\n return (\n <div ref={elementRef} className={block()}>\n {mode !== 'markdown' ? content : <Markdown text={content} />}\n </div>\n );\n};\n","import React from 'react';\nimport {useForkRef} from '@gravity-ui/uikit';\n\nimport {useIntersectionEntry} from '../../hooks/use-intersection';\n\ntype IntersectionObserverContainerProps = {\n className?: string;\n children: React.ReactNode;\n};\n\n/**\n * The container mount/unmount `props.children` when it has intersection with the view port.\n */\nexport const IntersectionObserverContainer = React.forwardRef(\n ({className, children}: IntersectionObserverContainerProps, ref: React.Ref<HTMLDivElement>) => {\n const [element, setElement] = React.useState<HTMLDivElement | null>(null);\n const {intersectionRatio = 0} =\n useIntersectionEntry({\n element,\n options: {\n threshold: [0, 1],\n },\n }) ?? {};\n\n const setRef = useForkRef(setElement, ref);\n\n return (\n <div ref={setRef} className={className}>\n {intersectionRatio > 0 ? children : null}\n </div>\n );\n },\n);\n\nIntersectionObserverContainer.displayName = 'IntersectionObserverContainer';\n","import React from 'react';\nimport {YTError} from '../../../@types/types';\nimport {ClickableText} from '../../components/ClickableText/ClickableText';\nimport {showErrorPopup} from '../../utils/utils';\n\ntype InlineErrorProps = {\n error?: YTError;\n};\n\nexport function InlineError({error}: InlineErrorProps) {\n return !error ? null : (\n <span className={'yt-error-inline'}>\n {error.message || 'An error occured.'} \n <ClickableText onClick={() => showErrorPopup(error)}>Details</ClickableText>\n </span>\n );\n}\n","const SvgChevronsCollapseUpRight = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 16 16\" {...props}><path fill=\"currentColor\" fillRule=\"evenodd\" d=\"M15.25 6.993a.75.75 0 0 0 0-1.5H10.5V.75a.75.75 0 1 0-1.5 0v5.493c0 .414.336.75.75.75zM.75 9.007a.75.75 0 1 0 0 1.5H5.5v4.743a.75.75 0 0 0 1.5 0V9.757a.75.75 0 0 0-.75-.75z\" clipRule=\"evenodd\" /></svg>;\nexport default SvgChevronsCollapseUpRight;","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport {PrometheusDashboardType, PrometheusWidgetId} from '../../../../shared/prometheus/types';\n\nimport {prometheusDashboardSlice} from '../../../store/reducers/prometheusDashboard/prometheusDashboard';\nimport {usePrometheusDashbordTimeRange} from '../../../store/reducers/prometheusDashboard/prometheusDashboard-hooks';\nimport {RootState} from '../../../store/reducers';\n\ntype PrometheusDashboardContextData = {\n expandedId?: PrometheusWidgetId;\n toggleExpanded: (id: PrometheusWidgetId) => void;\n\n timeRangeFilter: RootState['prometheusDashboard']['timeRangeFilter'];\n setTimeRangeFilter: (v: RootState['prometheusDashboard']['timeRangeFilter']) => void;\n};\n\nconst PrometheusDashboardContext = React.createContext<PrometheusDashboardContextData>({\n expandedId: undefined,\n toggleExpanded: throwContextError,\n timeRangeFilter: {shortcutValue: '1h'},\n setTimeRangeFilter: throwContextError,\n});\n\nfunction throwContextError() {\n throw new Error(\n `Please make sure you are using <PrometheusDashboardContext.Provider /> in parents.`,\n );\n}\n\nexport function PrometheusDashboardProvider({\n children,\n type,\n}: {\n children: React.ReactNode;\n type: PrometheusDashboardType;\n}) {\n const dispatch = useDispatch();\n const expandedPanels = useSelector(\n (state: RootState) => state.prometheusDashboard.expandedPanels,\n );\n const {[type]: expandedId} = expandedPanels ?? {};\n\n const {timeRange, setTimeRange} = usePrometheusDashbordTimeRange();\n\n const value = React.useMemo(() => {\n return {\n expandedId,\n toggleExpanded: (id: PrometheusWidgetId) => {\n if (id === expandedId) {\n dispatch(prometheusDashboardSlice.actions.setExpandedId({type, id: undefined}));\n } else {\n dispatch(prometheusDashboardSlice.actions.setExpandedId({type, id}));\n }\n },\n timeRangeFilter: timeRange,\n setTimeRangeFilter: setTimeRange,\n };\n }, [expandedId, timeRange, setTimeRange, type, dispatch]);\n\n return (\n <PrometheusDashboardContext.Provider value={value}>\n {children}\n </PrometheusDashboardContext.Provider>\n );\n}\n\nexport function usePrometheusDashboardContext() {\n return React.useContext(PrometheusDashboardContext);\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport {Button, Icon} from '@gravity-ui/uikit';\n\nimport maximizeSvg from '@gravity-ui/icons/svgs/chevrons-expand-up-right.svg';\nimport minimizeSvg from '@gravity-ui/icons/svgs/chevrons-collapse-up-right.svg';\n\nimport {PrometheusWidgetId} from '../../../../shared/prometheus/types';\n\nimport {usePrometheusDashboardContext} from '../PrometheusDashboardContext/PrometheusDashboardContext';\n\nimport './PrometheusWidgetToolbar.scss';\n\nconst block = cn('yt-prometheus-widget-toolbar');\n\ntype PrometheusToolbarProps = {\n id: PrometheusWidgetId;\n};\n\nexport function PrometheusWidgetToolbar({id}: PrometheusToolbarProps) {\n const {expandedId, toggleExpanded} = usePrometheusDashboardContext();\n const [element, setElement] = React.useState<HTMLDivElement | null>(null);\n\n React.useEffect(() => {\n let timerId: ReturnType<typeof setTimeout> | undefined;\n if (id === expandedId) {\n timerId = setTimeout(() => element?.scrollIntoView(), 300);\n }\n return () => {\n clearTimeout(timerId);\n };\n }, [id, expandedId, element]);\n\n const isMaximized = id === expandedId;\n\n return (\n <React.Fragment>\n <div className={block()}>\n <Button view=\"flat-secondary\" onClick={() => toggleExpanded(id)} size=\"xs\">\n <Icon data={isMaximized ? minimizeSvg : maximizeSvg} />\n </Button>\n </div>\n <div ref={setElement}></div>\n </React.Fragment>\n );\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\nimport reduce_ from 'lodash/reduce';\n\nimport {Flex} from '@gravity-ui/uikit';\n\nimport {YTError} from '../../../../../@types/types';\nimport {QueryRangeData, TimeseriesTarget} from '../../../../../shared/prometheus/types';\nimport {KEY_WITH_DOUBLE_CURLY_BRACES, formatByParams} from '../../../../../shared/utils/format';\n\nimport format from '../../../../common/hammer/format';\nimport {YT} from '../../../../config/yt-config';\n\nimport {IntersectionObserverContainer} from '../../../../components/IntersectionObserverContainer/IntersectionObserverContainer';\n\nimport {YTChartKitLazy, getSerieColor} from '../../../../components/YTChartKit';\nimport {Yagr, YagrWidgetData} from '@gravity-ui/chartkit/yagr';\nimport {InlineError} from '../../../../components/InlineError/InlineError';\nimport Loader from '../../../../components/Loader/Loader';\nimport {useElementSize} from '../../../../hooks/useResizeObserver';\n\nimport {PrometheusPlugins} from '../../PrometheusDashKit';\nimport {PrometheusWidgetToolbar} from '../../PrometheusWidgetToolbar/PrometheusWidgetToolbar';\nimport {usePrometheusDashboardContext} from '../../PrometheusDashboardContext/PrometheusDashboardContext';\n\nimport {usePrometheusFetchQuery} from '../../../../store/api/prometheus';\nimport {compareWithUndefined} from '../../../../utils/sort-helpers';\n\nimport './timeseries.scss';\n\nconst block = cn('yt-prometheus-timeseries');\n\nexport const renderPluginTimeseries: PrometheusPlugins['timeseries']['renderer'] = (\n props,\n elementRef,\n) => {\n return <ExpandablePrometheusChart {...props} elementRef={elementRef} />;\n};\n\nfunction ExpandablePrometheusChart({\n elementRef,\n ...props\n}: PrometheusChartProps & {elementRef: React.Ref<any>}) {\n const {\n expandedId,\n timeRangeFilter: {from, to},\n } = usePrometheusDashboardContext();\n\n return (\n <IntersectionObserverContainer\n key={props.id}\n className={block({expanded: props.id === expandedId})}\n ref={elementRef}\n >\n <PrometheusChart {...props} from={from} to={to} />\n </IntersectionObserverContainer>\n );\n}\n\ntype TimeseriesParameters = Parameters<PrometheusPlugins['timeseries']['renderer']>;\ntype Props = TimeseriesParameters[0];\ntype PrometheusChartProps = Props;\n\nfunction PrometheusChart({\n data,\n id,\n from,\n to,\n}: PrometheusChartProps & {from?: number; to?: number}) {\n const {title} = data;\n const [element, setElement] = React.useState<HTMLDivElement | null>(null);\n\n const pointCount = useElementSize({element: element as Element})?.contentRect.width;\n\n const {\n error,\n data: chartData,\n isLoading,\n } = useLoadQueriesData({id, data, pointCount, from, to});\n\n const [yagr, setYagr] = React.useState<Yagr | null>();\n React.useEffect(() => {\n yagr?.subscribe();\n return () => {\n yagr?.unsubscribe();\n };\n }, [yagr]);\n\n return (\n <React.Fragment>\n <Flex ref={setElement} className={block('widget')} direction=\"column\" id={id}>\n {chartData ? (\n <YTChartKitLazy\n type=\"yagr\"\n data={chartData}\n onChartLoad={(d) => {\n setYagr(d.widget);\n }}\n />\n ) : (\n <>\n <div className={block('widget-title')}>{title}</div>\n {error && (\n <div className={block('error')}>\n <InlineError error={error} />\n </div>\n )}\n {!chartData && isLoading && <Loader visible centered />}\n </>\n )}\n </Flex>\n <PrometheusWidgetToolbar id={id} />\n </React.Fragment>\n );\n}\n\nfunction useLoadQueriesData({\n id,\n data: {title, targets, params, fieldConfig},\n pointCount,\n from,\n to,\n}: Pick<PrometheusChartProps, 'data' | 'id'> & {pointCount?: number; from?: number; to?: number}) {\n // const [cancelHelper] = React.useState(new CancelHelper());\n\n const {__ytDashboardType: dashboardType} = params;\n\n const {data, isLoading, error} = usePrometheusFetchQuery({\n cluster: YT.cluster,\n dashboardType,\n id,\n from,\n to,\n pointCount,\n params,\n //cancelHelper,\n });\n\n const fieldOverrides = React.useMemo(() => {\n return {\n showLegend: !fieldConfig?.defaults?.custom?.hideForm?.legend,\n axisLabel: fieldConfig?.defaults?.custom?.axisLabel,\n propertiesByRefId: reduce_(\n fieldConfig?.overrides,\n (acc, item) => {\n const {matcher, properties} = item;\n if (matcher.id !== 'byFrameRefID') {\n return acc;\n }\n const refId = matcher.options;\n // eslint-disable-next-line no-param-reassign\n acc[refId] = reduce_(\n properties,\n (propsAcc, propItem) => {\n // eslint-disable-next-line no-param-reassign\n propsAcc[propItem.id] = propItem.value;\n return propsAcc;\n },\n {} as {unit: 'bytes' | unknown} & Record<string, unknown>,\n );\n\n return acc;\n },\n {} as Record<string, {unit?: 'bytes' | unknown}>,\n ),\n };\n }, [fieldConfig]);\n\n const chartData: {data?: YagrWidgetData; error?: YTError; isLoading?: boolean} =\n React.useMemo(() => {\n if (error) {\n return {error: error as YTError};\n }\n\n if (!data || !data?.responseData) {\n return {isLoading};\n }\n\n const {responseData: rawData, start, end, step} = data;\n const {results} = rawData;\n\n return {\n data: makeYagrWidgetData(\n {title, ...fieldOverrides},\n targets,\n results,\n {end, start, step},\n params,\n ),\n };\n }, [data, error, params, targets, title, fieldOverrides, isLoading]);\n\n return chartData;\n}\n\nfunction makeYagrWidgetData(\n {\n title,\n axisLabel,\n propertiesByRefId,\n showLegend,\n }: {\n title: string;\n axisLabel?: string;\n propertiesByRefId: Record<string, {unit?: 'bytes' | unknown}>;\n showLegend?: boolean;\n },\n targets: Array<TimeseriesTarget>,\n results: Array<QueryRangeData>,\n {end, start, step}: {end: number; start: number; step: number},\n params: Record<string, string | number>,\n): YagrWidgetData {\n const res: YagrWidgetData = {\n data: {graphs: [], timeline: []},\n libraryConfig: {\n title: {text: title},\n legend: {show: showLegend},\n tooltip: {\n show: (y) => y.state.isMouseOver,\n title: {\n y: ({x}) => {\n return format.DateTime(x / 1000);\n },\n },\n sort: {\n y: ({value: left}, {value: right}) => {\n if (isNaN(left as number)) {\n return 1;\n }\n if (isNaN(right as number)) {\n return -1;\n }\n return compareWithUndefined(left, right, -1, -1);\n },\n },\n },\n axes: {\n y: {\n label: axisLabel,\n },\n },\n cursor: {sync: 'yt-timeseries-cursor'},\n },\n };\n\n for (let t = start; t - step * 0.5 < end; t += step) {\n res.data.timeline.push(t * 1000);\n }\n\n const {timeline} = res.data;\n\n const metrics: Array<{metric: Record<string, unknown>; graphIndex: number}> = [];\n\n for (let serie = 0; serie < results?.length; ++serie) {\n const {legendFormat, refId} = targets[serie];\n const {unit} = propertiesByRefId[refId] ?? {};\n for (let serie_i = 0; serie_i < (results[serie]?.data?.result?.length ?? 0); ++serie_i) {\n const serie_i_data = results[serie]?.data?.result[serie_i];\n if (!serie_i_data) {\n continue;\n }\n\n const {values = [], metric} = serie_i_data;\n\n const graph: (typeof res)['data']['graphs'][number] = {\n name: legendFormat?.length\n ? formatByParams(\n legendFormat,\n {...params, ...metric},\n KEY_WITH_DOUBLE_CURLY_BRACES,\n )\n : undefined,\n data: new Array(timeline.length),\n formatter: unit === 'bytes' ? format.Bytes : format.NumberSmart,\n color: getSerieColor(res.data.graphs.length),\n };\n if (!graph.name) {\n const graphIndex = res.data.graphs.length;\n metrics.push({metric, graphIndex});\n }\n res.data.graphs.push(graph);\n\n if (!values.length) {\n continue;\n }\n\n let i = 0;\n for (; i < values.length; ++i) {\n const [t, valueStr] = values[i];\n const pos = Math.round((t - start) / step);\n graph.data[pos] = Number(valueStr);\n }\n\n if (i === 0) {\n res.data.graphs.pop();\n }\n }\n }\n\n for (let i = 0; i < metrics.length; ++i) {\n udpateMissingLegend(res.data.graphs, metrics, i);\n }\n\n return res;\n}\n\nfunction udpateMissingLegend(\n graphs: Array<{name?: string}>,\n metrics: Array<{metric: Record<string, unknown>; graphIndex: number}>,\n index: number,\n) {\n const {metric, graphIndex} = metrics[index] ?? {};\n const {metric: otherMetric} = metrics[index === 0 ? 1 : 0] ?? {};\n\n const dst = graphs[graphIndex];\n dst.name = genSerieName(metric, otherMetric);\n}\n\nfunction genSerieName(obj: Record<string, unknown>, other: Record<string, unknown> = {}) {\n if (!obj) {\n return undefined;\n }\n\n const res = Object.keys(obj).reduce((acc, key) => {\n if (obj[key] === other[key]) {\n return acc;\n }\n\n const v = obj[key];\n const value = key === '__name__' ? v : `${key}:${v}; `;\n\n return acc + value;\n }, '');\n\n return Object.keys(other ?? {}).reduce((acc, key) => {\n if (key in obj) {\n return acc;\n }\n return acc + `${key}:${format.NO_VALUE}; `;\n }, res);\n}\n","import React from 'react';\nimport {Config, DashKit, Plugin} from '@gravity-ui/dashkit';\nimport cn from 'bem-cn-lite';\n\nimport {\n DashboardInfo,\n PanelType,\n PanelTypeSpecificProps,\n PluginRenderProps,\n PrometheusDashboardType,\n WidgetType,\n} from '../../../shared/prometheus/types';\nimport {makePanelId} from '../../../shared/prometheus/utils';\n\nimport {renderPluginText} from './plugins/text/text';\nimport {renderPluginRow} from './plugins/row';\nimport {renderPluginTimeseries} from './plugins/timeseries/timeseries';\nimport {usePrometheusDashboardContext} from './PrometheusDashboardContext/PrometheusDashboardContext';\n\nimport {PrometheusDashboardProps} from './PrometheusDashboard';\n\nimport './PrometheusDashKit.scss';\n\nconst block = cn('yt-prometheus-dashkit');\n\nexport type PrometheusDashKitProps = {\n type: PrometheusDashboardType;\n panels?: DashboardInfo['panels'];\n params: Required<PrometheusDashboardProps>['params'];\n};\n\nconst salt = `${Math.random().toString()}`;\n\nexport function PrometheusDashKit({type, panels, params}: PrometheusDashKitProps) {\n const {config} = useDashKitConfig(type, panels, params);\n return (\n <div className={block()}>\n {!config ? null : <DashKit config={config} editMode={false} />}\n </div>\n );\n}\n\nfunction useDashKitConfig(\n dashboardType: PrometheusDashboardType,\n panels: PrometheusDashKitProps['panels'],\n params: Record<string, {toString(): string}>,\n) {\n const [collapsedRows, setCollapsedRows] = React.useState<Record<string, boolean | undefined>>(\n {},\n );\n\n const {expandedId} = usePrometheusDashboardContext();\n\n const config = React.useMemo(() => {\n let rowSpecificProps: PanelTypeSpecificProps<'row'> | undefined;\n return getVisiblePanels(expandedId, panels).reduce(\n (acc, item) => {\n const {gridPos, type, ...rest} = item;\n const id = makePanelId(item);\n\n function addToLayout<T>(extraProps: T) {\n const itemType: WidgetType = `prometheus.${type}`;\n const data = Object.assign(rest, extraProps, {\n params: {...params, __ytDashboardType: dashboardType},\n });\n acc.layout.push({...gridPos, i: id});\n acc.items.push({\n id,\n type: itemType,\n namespace: 'default',\n data,\n });\n return data as T;\n }\n\n if (type === 'row') {\n const collapsed = collapsedRows[id];\n rowSpecificProps = addToLayout({\n childCount: 0,\n collapsed,\n onToggleCollapsed: () => {\n setCollapsedRows({...collapsedRows, [id]: !collapsed});\n },\n });\n } else {\n if (rowSpecificProps?.childCount !== undefined) {\n ++rowSpecificProps.childCount;\n }\n if (!rowSpecificProps?.collapsed) {\n addToLayout({});\n }\n }\n\n return acc;\n },\n {\n salt,\n counter: 0,\n layout: [],\n items: [],\n aliases: {},\n connections: [],\n } as Config,\n );\n }, [panels, collapsedRows, params, expandedId, dashboardType]);\n\n React.useMemo(() => {\n const widthByY = config?.layout?.reduce(\n (acc, item) => {\n const k = `${item.y}` as const;\n if (acc[k] === undefined) {\n acc[k] = 0;\n }\n acc[k] += item.w;\n return acc;\n },\n {} as Record<`${number}`, number>,\n );\n const cols = Object.values(widthByY ?? {}).reduce((acc, value) => Math.max(acc, value), 0);\n\n DashKit.setSettings({\n gridLayout: {\n margin: [4, 4],\n containerPadding: [0, 0],\n rowHeight: 30,\n cols,\n },\n });\n }, [config]);\n\n return {config};\n}\n\nfunction getVisiblePanels(expandedId?: string, panels: PrometheusDashKitProps['panels'] = []) {\n const expandedPanelIndex = !expandedId\n ? -1\n : panels?.findIndex((item) => expandedId === makePanelId(item));\n\n const expandedPanel = expandedPanelIndex !== -1 ? panels?.[expandedPanelIndex] : undefined;\n if (!expandedPanel) {\n return panels;\n }\n\n return [expandedPanel];\n}\n\nconst PLUGINS: {\n [K in PanelType]: {\n type: WidgetType<K>;\n } & Plugin<PluginRenderProps<K>>;\n} = {\n text: {\n renderer: renderPluginText,\n type: 'prometheus.text',\n },\n timeseries: {\n renderer: renderPluginTimeseries,\n type: 'prometheus.timeseries',\n },\n row: {\n renderer: renderPluginRow,\n type: 'prometheus.row',\n },\n};\n\nexport type PrometheusPlugins = typeof PLUGINS;\n\nDashKit.registerPlugins(\n ...Object.keys(PLUGINS).map((id) => {\n const k = id as keyof typeof PLUGINS;\n return {...PLUGINS[k]};\n }),\n);\n","import React from 'react';\nimport {PrometheusPlugins} from '../PrometheusDashKit';\nimport {ExpandButton} from '../../../components/ExpandButton';\nimport {Secondary} from '../../../components/Text/Text';\n\nexport const renderPluginRow: PrometheusPlugins['row']['renderer'] = (\n {data, ...props},\n elementRef,\n) => {\n const {collapsed, onToggleCollapsed, childCount} = data;\n return (\n <div ref={elementRef} key={props.id}>\n <ExpandButton expanded={!collapsed} toggleExpanded={onToggleCollapsed} />\n {collapsed && <Secondary>{childCount} panels</Secondary>}\n </div>\n );\n};\n","import React from 'react';\nimport cn from 'bem-cn-lite';\nimport {useSelector} from 'react-redux';\nimport uniq_ from 'lodash/uniq';\n\nimport {Link, Select} from '@gravity-ui/uikit';\n\nimport {\n CheckPermissionResult,\n makeCheckPermissionBatchSubRequest,\n} from '../../../shared/utils/check-permission';\nimport {\n DashboardInfo,\n PluginRendererDataParams,\n PrometheusDashboardType,\n} from '../../../shared/prometheus/types';\nimport {getDashboardPath, makeDiscoverValuesKey} from '../../../shared/prometheus/utils';\nimport {YTError} from '../../../@types/types';\n\nimport {getConfigData} from '../../config/ui-settings';\nimport {YTErrorBlock} from '../../components/Block/Block';\nimport {StickyContainer} from '../../components/StickyContainer/StickyContainer';\nimport {YTTimeline} from '../../components/Timeline';\nimport {Toolbar, ToolbarItemToWrap} from '../../components/WithStickyToolbar/Toolbar/Toolbar';\nimport {YTErrors} from '../../rum/constants';\nimport {YTApiId, ytApiV3Id} from '../../rum/rum-wrap-api';\nimport {usePrometheusDiscoverValuesQuery} from '../../store/api/prometheus';\nimport {useFetchBatchQuery} from '../../store/api/yt/executeBatch';\nimport {usePrometheusDashboardParams} from '../../store/reducers/prometheusDashboard/prometheusDashboard-hooks';\nimport {getCluster} from '../../store/selectors/global/cluster';\nimport {getCurrentUserName} from '../../store/selectors/global';\n\nimport {PrometheusDashKit} from './PrometheusDashKit';\nimport {\n PrometheusDashboardProvider,\n usePrometheusDashboardContext,\n} from './PrometheusDashboardContext/PrometheusDashboardContext';\n\nimport './PrometheusDashboard.scss';\n\nconst block = cn('yt-prometheus-dashboard');\n\nexport type PrometheusDashboardProps = {\n toolbarStickyTop?: number;\n type: PrometheusDashboardType;\n params?: PluginRendererDataParams;\n timeRange?: {from: number; to?: number};\n toolbarItems?: Array<ToolbarItemToWrap>;\n};\n\nexport const PrometheusDashboard = React.memo(function (props: PrometheusDashboardProps) {\n const {type, params, toolbarStickyTop} = props;\n const {layout, error} = useLoadedLayout({type, params});\n\n const {toolbarItems, effectiveParams} = useDashboardToolbar({\n type,\n layout,\n params,\n toolbarItems: props.toolbarItems,\n });\n\n const hasToolbar = Boolean(toolbarItems?.length);\n\n return !effectiveParams ? null : (\n <PrometheusDashboardProvider type={type}>\n <StickyContainer\n className={block({'has-toolbar': hasToolbar})}\n topOffset={toolbarStickyTop}\n >\n {({stickyTopClassName}) => (\n <React.Fragment>\n <div className={block('toolbar', stickyTopClassName)}>\n <PrometheusTimelineToolbar\n uid={layout?.uid}\n effectiveParams={effectiveParams}\n />\n {hasToolbar && (\n <Toolbar itemsToWrap={toolbarItems ?? []} marginTopSkip />\n )}\n </div>\n {error && <YTErrorBlock error={error} />}\n <MissingParametersWarning\n templating={layout?.templating}\n params={effectiveParams}\n />\n {layout?.panels === undefined ? null : (\n <PrometheusDashKit\n key={type}\n type={type}\n panels={layout.panels}\n params={effectiveParams}\n />\n )}\n </React.Fragment>\n )}\n </StickyContainer>\n </PrometheusDashboardProvider>\n );\n});\nPrometheusDashboard.displayName = 'PrometheusDashboard';\n\nfunction useLoadedLayout({type, params}: PrometheusDashboardProps) {\n const [result, setData] = React.useState<{layout?: DashboardInfo; error?: YTError}>({});\n /**\n * Temporary solution withot redux-store\n * TODO: use rtk-query later\n */\n React.useEffect(() => {\n ytApiV3Id\n .get<DashboardInfo>(YTApiId.prometheusMonitoringLayout, {\n path: getDashboardPath(type),\n })\n .then((layout) => {\n setData({layout});\n })\n .catch((error) => {\n if (error.code === YTErrors.NODE_DOES_NOT_EXIST) {\n setData({layout: makeNotImplementedLayout({type, params, uid: ''})});\n } else {\n setData({error});\n }\n });\n }, [type]);\n return result;\n}\n\nfunction makeNotImplementedLayout({type, params, uid}: PrometheusDashboardProps & {uid: string}) {\n return {\n templating: {list: []},\n panels: [\n {\n type: 'text' as const,\n options: {\n content: [\n `#### \\`${getDashboardPath(type)}\\` is not exist`,\n ' You have to provide correct dashboard description, see expected parameters below:',\n '```json',\n JSON.stringify(params, null, 4),\n '```',\n ].join('\\n'),\n mode: 'markdown' as const,\n },\n gridPos: {x: 0, y: 0, w: 24, h: 27},\n },\n ],\n uid,\n };\n}\n\nfunction PrometheusTimelineToolbar({\n uid,\n effectiveParams,\n}: {\n uid?: string;\n effectiveParams: Record<string, string | number>;\n}) {\n const {\n timeRangeFilter: {from, to, shortcutValue},\n setTimeRangeFilter,\n } = usePrometheusDashboardContext();\n\n const grafanaUrl = useGrafanaUrl({uid, effectiveParams, from, to});\n\n return (\n <Toolbar\n itemsToWrap={[\n {\n node: (\n <YTTimeline\n className={block('timeline')}\n from={from!}\n to={to!}\n shortcut={shortcutValue}\n onUpdate={setTimeRangeFilter}\n hasRuler={true}\n />\n ),\n growable: true,\n marginRight: 'none',\n },\n {\n node: grafanaUrl ? (\n <Link href={grafanaUrl} target=\"_blank\">\n Grafana\n </Link>\n ) : null,\n },\n ]}\n />\n );\n}\n\nconst {grafanaBaseUrl} = getConfigData().uiSettings ?? {};\n\nfunction useGrafanaUrl({\n uid,\n effectiveParams,\n from,\n to,\n}: {\n uid?: string;\n effectiveParams: Record<string, string | number>;\n from?: number;\n to?: number;\n}) {\n const allowGrafanaUrl = useGrafanaUrlVisibility();\n const grafanaUrl = React.useMemo(() => {\n if (!uid || !grafanaBaseUrl || !allowGrafanaUrl || from === undefined || to === undefined) {\n return undefined;\n }\n\n const params = Object.keys(effectiveParams).reduce((acc, key) => {\n const value = effectiveParams[key];\n acc.append(`var-${key}`, String(value));\n return acc;\n }, new URLSearchParams());\n\n params.append('from', String(from));\n params.append('to', String(to));\n\n return `${grafanaBaseUrl}/d/${uid}?${params}`;\n }, [uid, effectiveParams, allowGrafanaUrl, from, to]);\n\n return grafanaUrl;\n}\n\nfunction useGrafanaUrlVisibility() {\n const cluster = useSelector(getCluster);\n const user = useSelector(getCurrentUserName);\n\n const {data, error} = useFetchBatchQuery<CheckPermissionResult>({\n cluster,\n id: YTApiId.checkPermissions,\n parameters: {\n requests: [\n makeCheckPermissionBatchSubRequest({\n path: '//sys/interface-monitoring/allow_grafana_url',\n user,\n permission: 'use',\n }),\n ],\n },\n errorTitle: 'Check `use` permission for //sys/interface-monitoring/allow_grafana_url',\n });\n\n const {output} = data?.[0] ?? {};\n\n return (\n error?.inner_errors?.[0].code === YTErrors.NODE_DOES_NOT_EXIST || output?.action === 'allow'\n );\n}\n\nfunction MissingParametersWarning({\n templating,\n params,\n}: Pick<Partial<DashboardInfo>, 'templating'> &\n Pick<Required<PrometheusDashboardProps>, 'params'>) {\n const details: YTError | undefined = React.useMemo(() => {\n const inner_errors = templating?.list.reduce((acc, {name: n, default_for_ui}) => {\n const name = n as keyof typeof params;\n if (params[name] === undefined && default_for_ui === undefined) {\n acc.push({message: `Missing parameter \"${name}\".`});\n }\n return acc;\n }, [] as Array<YTError>);\n\n if (!inner_errors?.length) {\n return undefined;\n }\n return {\n message: 'You have to provide all required parameters',\n attributes: {params} as any,\n inner_errors,\n };\n }, [templating, params]);\n\n return details ? <YTErrorBlock error={details} type=\"alert\" bottomMargin /> : null;\n}\n\nfunction useDashboardToolbar({\n toolbarItems,\n layout,\n params,\n type,\n}: {\n type: PrometheusDashboardType;\n params?: PluginRendererDataParams;\n layout?: DashboardInfo;\n toolbarItems?: Array<ToolbarItemToWrap>;\n}) {\n const cluster = useSelector(getCluster);\n\n const {templating} = layout ?? {};\n const {list} = templating ?? {};\n\n const withDiscoverValues = React.useMemo(() => {\n if (!layout) {\n return [];\n }\n\n return list?.filter((item) => item.discover_values);\n }, [list, layout]);\n\n const {params: extraParams, setParams: setExtraParams} =\n usePrometheusDashboardParams<Record<string, string>>(type);\n\n const {data} = usePrometheusDiscoverValuesQuery({\n cluster,\n dashboardType: type,\n params,\n hasValuesToDiscover: Boolean(withDiscoverValues?.length),\n });\n\n const items = React.useMemo(() => {\n const res = [...(toolbarItems ?? [])];\n\n withDiscoverValues?.forEach(({label, name, default_for_ui, discover_values}) => {\n if (!discover_values || !data) {\n return;\n }\n const key = makeDiscoverValuesKey(discover_values);\n const dataItem = data[key];\n\n const value = extraParams?.[name] ?? default_for_ui;\n\n const availableOptions = uniq_([\n ...(default_for_ui ? [default_for_ui] : []),\n ...(dataItem.result?.data ?? []),\n ]);\n\n res.push({\n node: (\n <Select\n label={label}\n value={value ? [value] : []}\n options={availableOptions.map((v) => {\n return {content: v, value: v};\n })}\n onUpdate={([v]) => {\n setExtraParams({[name]: v});\n }}\n />\n ),\n });\n });\n\n return res;\n }, [withDiscoverValues, data, extraParams, setExtraParams, toolbarItems]);\n\n const effectiveParams = React.useMemo(() => {\n return !params ? undefined : {...params, ...extraParams};\n }, [params, extraParams]);\n\n return {toolbarItems: items, effectiveParams: effectiveParams};\n}\n","const SvgChevronRight = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 16 16\" {...props}><path fill=\"currentColor\" fillRule=\"evenodd\" d=\"M5.47 13.03a.75.75 0 0 1 0-1.06L9.44 8 5.47 4.03a.75.75 0 0 1 1.06-1.06l4.5 4.5a.75.75 0 0 1 0 1.06l-4.5 4.5a.75.75 0 0 1-1.06 0\" clipRule=\"evenodd\" /></svg>;\nexport default SvgChevronRight;","import type {TabsOrientation} from './plugin/transform';\nimport type {TabsController} from './runtime/TabsController';\n\nexport const TABS_CLASSNAME = 'yfm-tabs';\nexport const TABS_VERTICAL_CLASSNAME = 'yfm-tabs-vertical';\nexport const TABS_LIST_CLASSNAME = 'yfm-tab-list';\nexport const TAB_CLASSNAME = 'yfm-tab';\nexport const TAB_PANEL_CLASSNAME = 'yfm-tab-panel';\nexport const ACTIVE_CLASSNAME = 'active';\nexport const VERTICAL_TAB_CLASSNAME = 'yfm-vertical-tab';\n\nexport const GROUP_DATA_KEY = 'data-diplodoc-group';\nexport const TAB_DATA_KEY = 'data-diplodoc-key';\nexport const TAB_DATA_ID = 'data-diplodoc-id';\nexport const TAB_DATA_VERTICAL_TAB = 'data-diplodoc-vertical-tab';\nexport const TAB_ACTIVE_KEY = 'data-diplodoc-is-active';\nexport const TAB_RADIO_KEY = 'data-diplodoc-input';\n\nexport const DEFAULT_TABS_GROUP_PREFIX = 'defaultTabsGroup-';\n\nexport interface Tab {\n group?: string;\n key: string;\n align: TabsOrientation;\n}\n\nexport interface SelectedTabEvent {\n tab: Tab;\n currentTabId?: string;\n}\n\nexport const GLOBAL_SYMBOL: unique symbol = Symbol.for('diplodocTabs');\n\ndeclare global {\n interface Window {\n [GLOBAL_SYMBOL]: TabsController;\n }\n}\n","export const getEventTarget = (event: Event) => {\n const path = event.composedPath();\n return Array.isArray(path) && path.length > 0 ? path[0] : event.target;\n};\n\nexport const isCustom = (event: Event) => {\n const target = getEventTarget(event);\n return !target || !(target as HTMLElement).matches;\n};\n\nexport const getClosestScrollableParent = (element: HTMLElement): HTMLElement | undefined => {\n if (Math.abs(element.scrollHeight - element.clientHeight) > 1) {\n return element;\n }\n\n return element.parentElement ? getClosestScrollableParent(element.parentElement) : undefined;\n};\n\nexport interface ElementOffset {\n top: number;\n left: number;\n scrollTop: number;\n scrollLeft: number;\n}\n\nexport const getOffsetByScrollableParent = (\n element: HTMLElement,\n scrollableParent: HTMLElement,\n): ElementOffset => {\n const elementBounds = element.getBoundingClientRect();\n const scrollableParentBounds = scrollableParent.getBoundingClientRect();\n return {\n top: elementBounds.top - scrollableParentBounds.top,\n left: elementBounds.left - scrollableParentBounds.left,\n scrollTop: scrollableParent.scrollTop,\n scrollLeft: scrollableParent.scrollLeft,\n };\n};\n","import {\n ACTIVE_CLASSNAME,\n DEFAULT_TABS_GROUP_PREFIX,\n GROUP_DATA_KEY,\n SelectedTabEvent,\n TABS_CLASSNAME,\n TABS_LIST_CLASSNAME,\n TABS_VERTICAL_CLASSNAME,\n TAB_CLASSNAME,\n TAB_DATA_ID,\n TAB_DATA_KEY,\n TAB_PANEL_CLASSNAME,\n Tab,\n} from '../common';\nimport type {TabsOrientation} from '../plugin/transform';\nimport {\n ElementOffset,\n getClosestScrollableParent,\n getEventTarget,\n getOffsetByScrollableParent,\n isCustom,\n} from './utils';\n\nconst Selector = {\n TABS: `.${TABS_CLASSNAME}`,\n TAB_LIST: `.${TABS_LIST_CLASSNAME}`,\n TAB: `.${TAB_CLASSNAME}`,\n TAB_PANEL: `.${TAB_PANEL_CLASSNAME}`,\n VERTICAL_TABS: `.${TABS_VERTICAL_CLASSNAME}`,\n};\n\nexport interface ISelectTabByIdOptions {\n scrollToElement: boolean;\n}\n\ntype Handler = (data: SelectedTabEvent) => void;\n\ntype TabSwitchDirection = 'left' | 'right';\n\nexport class TabsController {\n private _document: Document;\n\n private _onSelectTabHandlers: Set<Handler> = new Set();\n\n constructor(document: Document) {\n this._document = document;\n this._document.addEventListener('click', (event) => {\n const target = getEventTarget(event) as HTMLElement;\n const areVertical = this.areTabsVertical(target);\n\n if (isCustom(event)) {\n return;\n }\n\n if (!(this.isValidTabElement(target) || areVertical)) {\n return;\n }\n\n const tab = this.getTabDataFromHTMLElement(target);\n\n if (tab) {\n this._selectTab(tab, target);\n }\n });\n this._document.addEventListener('keydown', (event) => {\n let direction: TabSwitchDirection | null = null;\n switch (event.key) {\n case 'ArrowLeft': {\n direction = 'left';\n break;\n }\n case 'ArrowRight': {\n direction = 'right';\n break;\n }\n }\n if (!direction) {\n return;\n }\n\n const target = getEventTarget(event) as HTMLElement;\n\n if (isCustom(event) || !this.isValidTabElement(target)) {\n return;\n }\n\n const {tabs, nodes} = this.getTabs(target);\n const currentTab = this.getTabDataFromHTMLElement(target);\n const currentTabIndex = tabs.findIndex(\n ({key}) => currentTab?.key && key === currentTab.key,\n );\n if (!currentTab || tabs.length <= 1 || currentTabIndex === -1) {\n return;\n }\n\n const newIndex =\n (currentTabIndex + (direction === 'left' ? -1 : 1) + tabs.length) % tabs.length;\n\n this.selectTab(tabs[newIndex]);\n nodes[newIndex].focus();\n });\n }\n\n onSelectTab(handler: Handler) {\n this._onSelectTabHandlers.add(handler);\n\n return () => {\n this._onSelectTabHandlers.delete(handler);\n };\n }\n\n selectTabById(id: string, options?: ISelectTabByIdOptions) {\n const target = this._document.querySelector(\n `${Selector.TAB}[${TAB_DATA_ID}=\"${id}\"]`,\n ) as HTMLElement;\n\n if (!target || !this.isValidTabElement(target)) {\n return;\n }\n\n const tab = this.getTabDataFromHTMLElement(target);\n\n if (tab) {\n this._selectTab(tab, target);\n }\n\n if (options?.scrollToElement) {\n target.scrollIntoView();\n }\n }\n\n selectTab(tab: Tab) {\n this._selectTab(tab);\n }\n\n private _selectTab(tab: Tab, targetTab?: HTMLElement) {\n const {group, key, align} = tab;\n\n if (!group) {\n return;\n }\n\n const scrollableParent = targetTab && getClosestScrollableParent(targetTab);\n const previousTargetOffset =\n scrollableParent && getOffsetByScrollableParent(targetTab, scrollableParent);\n\n const updatedTabs = this.updateHTML({group, key, align}, align);\n\n if (updatedTabs > 0) {\n this.fireSelectTabEvent({group, key, align}, targetTab?.dataset.diplodocId);\n\n if (previousTargetOffset) {\n this.resetScroll(targetTab, scrollableParent, previousTargetOffset);\n }\n }\n }\n\n private updateHTML(tab: Required<Tab>, align: TabsOrientation) {\n switch (align) {\n case 'vertical': {\n return this.updateHTMLVertical(tab);\n }\n case 'horizontal': {\n return this.updateHTMLHorizontal(tab);\n }\n }\n\n return 0;\n }\n\n private updateHTMLVertical(tab: Required<Tab>) {\n const {group, key} = tab;\n\n const [tabs] = this._document.querySelectorAll(\n `${Selector.TABS}[${GROUP_DATA_KEY}=\"${group}\"] ${Selector.TAB}[${TAB_DATA_KEY}=\"${key}\"]`,\n );\n\n let updated = 0;\n const root = tabs.parentNode!;\n const elements = root.children;\n\n for (let i = 0; i < elements.length; i += 2) {\n const [title, content] = [elements.item(i), elements.item(i + 1)] as HTMLElement[];\n\n const input = title.children.item(0) as HTMLInputElement;\n\n if (input.hasAttribute('checked')) {\n title.classList.remove('active');\n content?.classList.remove('active');\n input.removeAttribute('checked');\n }\n\n if (title === tabs) {\n title.classList.add('active');\n content?.classList.add('active');\n input.setAttribute('checked', 'true');\n }\n\n updated++;\n }\n\n return updated;\n }\n\n private updateHTMLHorizontal(tab: Required<Tab>) {\n const {group, key} = tab;\n\n const tabs = this._document.querySelectorAll(\n `${Selector.TABS}[${GROUP_DATA_KEY}=\"${group}\"] ${Selector.TAB}[${TAB_DATA_KEY}=\"${key}\"]`,\n );\n\n let updated = 0;\n\n tabs.forEach((element) => {\n const htmlElem = element as HTMLElement;\n if (!this.isValidTabElement(htmlElem) || htmlElem.dataset.diplodocIsActive === 'true') {\n return;\n }\n\n updated++;\n\n const tab = element;\n const tabList = tab.parentNode;\n const tabsContainer = tabList?.parentNode;\n const allTabs = Array.from(tabList?.querySelectorAll(Selector.TAB) || []);\n const allPanels = Array.from(tabsContainer?.children || []).filter((node) =>\n node.classList.contains(TAB_PANEL_CLASSNAME),\n );\n const targetIndex = allTabs.indexOf(tab);\n\n allTabs.forEach((tab, i) => {\n const panel = allPanels[i];\n const isTargetTab = i === targetIndex;\n const htmlElem = tab as HTMLElement;\n\n htmlElem.dataset.diplodocIsActive = isTargetTab ? 'true' : 'false';\n\n tab.classList.toggle(ACTIVE_CLASSNAME, isTargetTab);\n tab.setAttribute('aria-selected', isTargetTab.toString());\n tab.setAttribute('tabindex', isTargetTab ? '0' : '-1');\n panel.classList.toggle(ACTIVE_CLASSNAME, isTargetTab);\n });\n });\n\n return updated;\n }\n\n private resetScroll(\n target: HTMLElement,\n scrollableParent: HTMLElement,\n previousTargetOffset: ElementOffset,\n ) {\n const targetOffset = getOffsetByScrollableParent(target, scrollableParent);\n const topDelta = targetOffset.top - previousTargetOffset.top;\n const leftDelta = targetOffset.left - previousTargetOffset.left;\n const scrollTopDelta = targetOffset.scrollTop - previousTargetOffset.scrollTop;\n const scrollLeftDelta = targetOffset.scrollLeft - previousTargetOffset.scrollLeft;\n scrollableParent.scrollTo(\n scrollableParent.scrollLeft + leftDelta - scrollLeftDelta,\n scrollableParent.scrollTop + topDelta - scrollTopDelta,\n );\n }\n\n private fireSelectTabEvent(tab: Required<Tab>, diplodocId?: string) {\n const {group, key, align} = tab;\n\n const eventTab: Tab = group.startsWith(DEFAULT_TABS_GROUP_PREFIX) ? {key, align} : tab;\n\n this._onSelectTabHandlers.forEach((handler) => {\n handler({tab: eventTab, currentTabId: diplodocId});\n });\n }\n\n private isValidTabElement(element: HTMLElement) {\n const tabList =\n element.matches(Selector.TAB) && element.dataset.diplodocId\n ? element.closest(Selector.TAB_LIST)\n : null;\n\n return tabList?.closest(Selector.TABS);\n }\n\n private areTabsVertical(target: HTMLElement) {\n const parent = target.parentElement;\n\n return target.dataset.diplodocVerticalTab || Boolean(parent?.dataset.diplodocVerticalTab);\n }\n\n private getTabDataFromHTMLElement(target: HTMLElement): Tab | null {\n if (this.areTabsVertical(target)) {\n const tab = target.dataset.diplodocVerticalTab ? target : target.parentElement!;\n\n const key = tab.dataset.diplodocKey;\n const group = (tab.closest(Selector.TABS) as HTMLElement)?.dataset.diplodocGroup;\n return key && group ? {group, key, align: 'vertical'} : null;\n }\n\n const key = target.dataset.diplodocKey;\n const group = (target.closest(Selector.TABS) as HTMLElement)?.dataset.diplodocGroup;\n return key && group ? {group, key, align: 'horizontal'} : null;\n }\n\n private getTabs(target: HTMLElement): {tabs: Tab[]; nodes: NodeListOf<HTMLElement>} {\n const group = (target.closest(Selector.TABS) as HTMLElement)?.dataset.diplodocGroup;\n const nodes = (\n target.closest(Selector.TAB_LIST) as HTMLElement\n )?.querySelectorAll<HTMLElement>(Selector.TAB);\n\n const tabs: Tab[] = [];\n nodes.forEach((tabEl) => {\n const key = tabEl?.dataset.diplodocKey;\n if (!key) {\n return;\n }\n\n /** horizontal-only supported feature (used in left/right button click) */\n tabs.push({\n group,\n key,\n align: 'horizontal',\n });\n });\n\n return {tabs, nodes};\n }\n}\n","'use strict';\n\n// Node getRootNode(optional GetRootNodeOptions options);\n\n/**\n * Returns the context object’s shadow-including root if options’s composed is true.\n * Returns the context object’s root otherwise.\n *\n * The root of an object is itself, if its parent is null, or else it is the root of its parent.\n *\n * The shadow-including root of an object is its root’s host’s shadow-including root,\n * if the object’s root is a shadow root, and its root otherwise.\n *\n * https://dom.spec.whatwg.org/#dom-node-getrootnode\n *\n * @memberof Node.prototype\n * @param {!Object} [opt = {}] - Options.\n * @param {!boolean} [opt.composed] - See above description.\n * @returns {!Node} The root node.\n */\nfunction getRootNode(opt) {\n var composed = typeof opt === 'object' && Boolean(opt.composed);\n\n return composed ? getShadowIncludingRoot(this) : getRoot(this);\n}\n\nfunction getShadowIncludingRoot(node) {\n var root = getRoot(node);\n\n if (isShadowRoot(root)) {\n return getShadowIncludingRoot(root.host);\n }\n\n return root;\n}\n\nfunction getRoot(node) {\n if (node.parentNode != null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n\nfunction isShadowRoot(node) {\n return node.nodeName === '#document-fragment' && node.constructor.name === 'ShadowRoot';\n}\n\nif (typeof module === 'object' && module.exports) {\n module.exports = getRootNode;\n}\n","import {GLOBAL_SYMBOL} from '../common';\nimport {TabsController} from './TabsController';\nimport './scss/tabs.scss';\n\nif (typeof window !== 'undefined' && typeof document !== 'undefined' && !window[GLOBAL_SYMBOL]) {\n window[GLOBAL_SYMBOL] = new TabsController(document);\n}\n","import getRootNode from 'get-root-node-polyfill';\n\nif (typeof document !== 'undefined') {\n // matches polyfill for old edge\n (function (e) {\n const matches =\n e.matches ||\n e.matchesSelector ||\n e.webkitMatchesSelector ||\n e.mozMatchesSelector ||\n e.msMatchesSelector ||\n e.oMatchesSelector;\n\n if (matches) {\n e.matches = e.matchesSelector = matches;\n } else {\n e.matches = e.matchesSelector = function matches(selector) {\n const rootNode = e.getRootNode ? e.getRootNode() : getRootNode.call(e);\n const matches = rootNode.querySelectorAll(selector);\n const th = this;\n return Array.prototype.some.call(matches, (e) => {\n return e === th;\n });\n };\n }\n })(Element.prototype);\n}\n","export const getEventTarget = (event: Event) => {\n const path = event.composedPath();\n return Array.isArray(path) && path.length > 0 ? path[0] : event.target;\n};\n\nexport const isCustom = (event: Event) => {\n const target = getEventTarget(event);\n return !target || !(target as HTMLElement).matches;\n};\n","import {getEventTarget, isCustom} from './utils';\n\nconst BUTTON_SELECTOR = '.yfm-clipboard-button';\n\nfunction copyToClipboard(text: string) {\n if (!text) {\n return Promise.resolve();\n }\n\n if (navigator.clipboard && typeof navigator.clipboard.writeText) {\n return navigator.clipboard.writeText(text);\n }\n const textarea = document.createElement('textarea');\n textarea.setAttribute('style', 'position: absolute; left: 1000%');\n textarea.textContent = text;\n document.body.append(textarea);\n\n textarea.select();\n document.execCommand('copy');\n\n document.body.removeChild(textarea);\n\n return Promise.resolve();\n}\n\nfunction notifySuccess(svgButton: HTMLElement | null) {\n if (!svgButton) {\n return;\n }\n\n const id = svgButton.getAttribute('data-animation');\n // @ts-expect-error\n const icon = svgButton.getRootNode().getElementById(`visibileAnimation-${id}`);\n\n if (!icon) {\n return;\n }\n\n icon.beginElement();\n}\n\nif (typeof document !== 'undefined') {\n document.addEventListener('click', (event) => {\n const target = getEventTarget(event) as HTMLElement;\n\n if (isCustom(event) || !target.matches(BUTTON_SELECTOR)) {\n return;\n }\n\n const parent = target.parentNode;\n\n if (!parent) {\n return;\n }\n\n const code = parent.querySelector<HTMLElement>('pre code');\n if (!code) {\n return;\n }\n\n copyToClipboard(code.innerText).then(() => {\n notifySuccess(parent.querySelector('.yfm-clipboard-button'));\n });\n });\n}\n","import {getEventTarget, isCustom} from './utils';\n\nconst Selector = {\n CUT: '.yfm .yfm-cut',\n TITLE: '.yfm .yfm-cut-title',\n CONTENT: '.yfm .yfm-cut-content',\n};\n\nconst ClassName = {\n OPEN: 'open',\n};\n\nfunction toggleCut(element: HTMLElement) {\n const cutNode = element.parentNode;\n\n if (!(cutNode instanceof HTMLElement)) {\n return;\n }\n\n cutNode.classList.toggle(ClassName.OPEN);\n}\n\nfunction matchTitle(target: EventTarget | null) {\n if (!(target instanceof HTMLElement)) {\n return false;\n }\n\n return target?.matches?.(Selector.TITLE);\n}\n\nfunction findTitleInPath(event: MouseEvent): HTMLElement | undefined {\n const target = getEventTarget(event);\n\n if (matchTitle(target)) {\n return target as HTMLElement;\n }\n\n const path = event.composedPath?.();\n\n return path?.find(matchTitle) as HTMLElement | undefined;\n}\n\nif (typeof document !== 'undefined') {\n document.addEventListener('click', (event) => {\n if (isCustom(event)) {\n return;\n }\n\n const title = findTitleInPath(event);\n\n if (!title) {\n return;\n }\n\n toggleCut(title);\n });\n}\n","export const Selector = {\n TITLE: '.yfm .yfm-term_title',\n CONTENT: '.yfm .yfm-term_dfn',\n};\nexport const openClass = 'open';\nexport const openDefinitionClass = Selector.CONTENT.replace(/\\./g, '') + ' ' + openClass;\nlet isListenerNeeded = true;\n\nexport function createDefinitionElement(termElement: HTMLElement) {\n const termKey = termElement.getAttribute('term-key');\n const definitionTemplate = document.getElementById(\n `${termKey}_template`,\n ) as HTMLTemplateElement;\n const definitionElement = definitionTemplate?.content.cloneNode(true).firstChild as HTMLElement;\n\n definitionTemplate?.parentElement?.appendChild(definitionElement);\n definitionTemplate.remove();\n\n return definitionElement;\n}\n\nexport function setDefinitionId(definitionElement: HTMLElement, termElement: HTMLElement): void {\n const termId = termElement.getAttribute('id') || Math.random().toString(36).substr(2, 8);\n definitionElement?.setAttribute('term-id', termId);\n}\n\nexport function setDefinitionPosition(\n definitionElement: HTMLElement,\n termElement: HTMLElement,\n): void {\n const {\n x: termX,\n y: termY,\n right: termRight,\n left: termLeft,\n width: termWidth,\n height: termHeight,\n } = termElement.getBoundingClientRect();\n\n const termParent = termParentElement(termElement);\n\n if (!termParent) {\n return;\n }\n\n const {right: termParentRight, left: termParentLeft} = termParent.getBoundingClientRect();\n\n if ((termParentRight < termLeft || termParentLeft > termRight) && !isListenerNeeded) {\n closeDefinition(definitionElement);\n return;\n }\n\n if (isListenerNeeded && termParent) {\n termParent.addEventListener('scroll', termOnResize);\n isListenerNeeded = false;\n }\n\n const relativeX = Number(definitionElement.getAttribute('relativeX'));\n const relativeY = Number(definitionElement.getAttribute('relativeY'));\n\n if (relativeX === termX && relativeY === termY) {\n return;\n }\n\n definitionElement.setAttribute('relativeX', String(termX));\n definitionElement.setAttribute('relativeY', String(termY));\n\n const offsetTop = termHeight + 5;\n const definitionParent = definitionElement.parentElement;\n\n if (!definitionParent) {\n return;\n }\n\n const {width: definitionWidth} = definitionElement.getBoundingClientRect();\n const {left: definitionParentLeft} = definitionParent.getBoundingClientRect();\n\n // If definition not fit document change base alignment\n const definitionLeftCoordinate = Number(getCoords(termElement).left);\n const definitionRightCoordinate = definitionWidth + definitionLeftCoordinate;\n\n const definitionOutOfScreenOnLeft = definitionLeftCoordinate - definitionWidth < 0;\n const definitionOutOfScreenOnRight = definitionRightCoordinate > document.body.clientWidth;\n\n const isAlignSwapped = definitionOutOfScreenOnRight || document.dir === 'rtl';\n const fitDefinitionDocument =\n isAlignSwapped && !definitionOutOfScreenOnLeft ? definitionWidth - termWidth : 0;\n const customHeaderTop = getCoords(definitionParent).top - definitionParent.offsetTop;\n\n definitionElement.style.top =\n Number(getCoords(termElement).top + offsetTop - customHeaderTop) + 'px';\n definitionElement.style.left =\n Number(\n getCoords(termElement).left -\n definitionParentLeft +\n definitionParent.offsetLeft -\n fitDefinitionDocument,\n ) + 'px';\n}\n\nfunction termOnResize() {\n const openDefinition = document.getElementsByClassName(openDefinitionClass)[0] as HTMLElement;\n\n if (!openDefinition) {\n return;\n }\n const termId = openDefinition.getAttribute('term-id') || '';\n const termElement = document.getElementById(termId);\n\n if (!termElement) {\n return;\n }\n\n setDefinitionPosition(openDefinition, termElement);\n}\n\nfunction termParentElement(term: HTMLElement | null) {\n if (!term) {\n return null;\n }\n\n const closestScrollableParent = term.closest('table') || term.closest('code');\n\n return closestScrollableParent || term.parentElement;\n}\n\nexport function closeDefinition(definition: HTMLElement) {\n definition.classList.remove(openClass);\n const termId = definition.getAttribute('term-id') || '';\n const termParent = termParentElement(document.getElementById(termId));\n\n if (!termParent) {\n return;\n }\n\n termParent.removeEventListener('scroll', termOnResize);\n isListenerNeeded = true;\n}\n\nfunction getCoords(elem: HTMLElement) {\n const box = elem.getBoundingClientRect();\n\n const body = document.body;\n const docEl = document.documentElement;\n\n const scrollTop = window.pageYOffset || docEl.scrollTop || body.scrollTop;\n const scrollLeft = window.pageXOffset || docEl.scrollLeft || body.scrollLeft;\n\n const clientTop = docEl.clientTop || body.clientTop || 0;\n const clientLeft = docEl.clientLeft || body.clientLeft || 0;\n\n const top = box.top + scrollTop - clientTop;\n const left = box.left + scrollLeft - clientLeft;\n\n return {top: Math.round(top), left: Math.round(left)};\n}\n","import {\n Selector,\n closeDefinition,\n createDefinitionElement,\n openClass,\n openDefinitionClass,\n setDefinitionId,\n setDefinitionPosition,\n} from './utils';\nimport {getEventTarget, isCustom} from '../utils';\n\nif (typeof document !== 'undefined') {\n document.addEventListener('click', (event) => {\n const openDefinition = document.getElementsByClassName(\n openDefinitionClass,\n )[0] as HTMLElement;\n const target = getEventTarget(event) as HTMLElement;\n\n const termId = target.getAttribute('id');\n const termKey = target.getAttribute('term-key');\n let definitionElement = document.getElementById(termKey + '_element');\n\n if (termKey && !definitionElement) {\n definitionElement = createDefinitionElement(target);\n }\n\n const isSameTerm = openDefinition && termId === openDefinition.getAttribute('term-id');\n if (isSameTerm) {\n closeDefinition(openDefinition);\n return;\n }\n\n const isTargetDefinitionContent = target.closest(\n [Selector.CONTENT.replace(' ', ''), openClass].join('.'),\n );\n\n if (openDefinition && !isTargetDefinitionContent) {\n closeDefinition(openDefinition);\n }\n\n if (isCustom(event) || !target.matches(Selector.TITLE) || !definitionElement) {\n return;\n }\n\n setDefinitionId(definitionElement, target);\n setDefinitionPosition(definitionElement, target);\n\n definitionElement.classList.toggle(openClass);\n });\n\n document.addEventListener('keydown', (event) => {\n const openDefinition = document.getElementsByClassName(\n openDefinitionClass,\n )[0] as HTMLElement;\n if (event.key === 'Escape' && openDefinition) {\n closeDefinition(openDefinition);\n }\n });\n\n window.addEventListener('resize', () => {\n const openDefinition = document.getElementsByClassName(\n openDefinitionClass,\n )[0] as HTMLElement;\n\n if (!openDefinition) {\n return;\n }\n\n const termId = openDefinition.getAttribute('term-id') || '';\n const termElement = document.getElementById(termId);\n\n if (!termElement) {\n openDefinition.classList.toggle(openClass);\n return;\n }\n\n setDefinitionPosition(openDefinition, termElement);\n });\n}\n","import * as React from 'react';\nconst ChevronDown = (props) => (React.createElement(\"svg\", Object.assign({ xmlns: \"http://www.w3.org/2000/svg\", width: 16, height: 16, fill: \"none\", viewBox: \"0 0 16 16\" }, props),\n React.createElement(\"path\", { fill: \"currentColor\", fillRule: \"evenodd\", d: \"M2.97 5.47a.75.75 0 0 1 1.06 0L8 9.44l3.97-3.97a.75.75 0 1 1 1.06 1.06l-4.5 4.5a.75.75 0 0 1-1.06 0l-4.5-4.5a.75.75 0 0 1 0-1.06\", clipRule: \"evenodd\" })));\nexport default ChevronDown;\n","const SvgChevronsExpandUpRight = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 16 16\" {...props}><path fill=\"currentColor\" fillRule=\"evenodd\" d=\"M7.754 2.004a.75.75 0 0 0 0 1.5h4.75v4.742a.75.75 0 0 0 1.5 0V2.754a.75.75 0 0 0-.75-.75zm.492 11.992a.75.75 0 0 0 0-1.5h-4.75V7.754a.75.75 0 0 0-1.5 0v5.492a.75.75 0 0 0 .75.75z\" clipRule=\"evenodd\" /></svg>;\nexport default SvgChevronsExpandUpRight;","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport isEqual_ from 'lodash/isEqual';\n\nimport type {PrometheusDashboardType} from '../../../../shared/prometheus/types';\nimport {calcFromTo} from '../../../components/Timeline';\n\nimport {prometheusDashboardSelectors, prometheusDashboardSlice} from './prometheusDashboard';\n\nexport function usePrometheusDashboardParams<ParamsT extends Record<string, unknown>>(t: string) {\n const type = t as PrometheusDashboardType;\n const dispatch = useDispatch();\n const params: ParamsT = (useSelector(prometheusDashboardSelectors.getParams)[\n type as PrometheusDashboardType\n ] ?? {}) as ParamsT;\n\n return {\n params,\n setParams: React.useCallback(\n (v: typeof params) => {\n dispatch(prometheusDashboardSlice.actions.setParams({type, params: v}));\n },\n [type, dispatch],\n ),\n };\n}\n\nexport function usePrometheusDashboardType<T extends string = PrometheusDashboardType>(\n allowedValues?: Array<T>,\n defaultValue?: T,\n) {\n const dispatch = useDispatch();\n const type = useSelector(prometheusDashboardSelectors.getType) as T;\n\n const setType = React.useCallback(\n (v: typeof type) => {\n dispatch(\n prometheusDashboardSlice.actions.setType({type: v as PrometheusDashboardType}),\n );\n },\n [dispatch],\n );\n\n const effectiveType = React.useMemo(() => {\n let res = type;\n if (allowedValues && -1 === allowedValues.indexOf(type)) {\n res = defaultValue ?? allowedValues[0];\n setType(res);\n }\n return res;\n }, [type, allowedValues, defaultValue, setType]);\n\n return {\n type: effectiveType,\n setType,\n };\n}\n\nconst HOUR = 3600 * 1000;\n\nexport function usePrometheusDashbordTimeRange(initialTimeRange?: {from?: number; to?: number}) {\n const dispatch = useDispatch();\n const timeRange = useSelector(prometheusDashboardSelectors.getTimeRange);\n\n const initialRef = React.useRef<typeof initialTimeRange>();\n\n const setTimeRange = React.useCallback(\n (v: typeof timeRange) => {\n dispatch(prometheusDashboardSlice.actions.setTimeRangeFilter({timeRangeFilter: v}));\n },\n [dispatch],\n );\n\n const moveTimeRangeTo = React.useCallback(\n (timestamp: number) => {\n dispatch(prometheusDashboardSlice.actions.moveTimeRangeFilterTo({timestamp}));\n },\n [dispatch],\n );\n\n React.useEffect(() => {\n if (\n timeRange.from === undefined ||\n timeRange.to === undefined ||\n !isEqual_(initialTimeRange, initialRef.current)\n ) {\n const now = Date.now();\n const {from = now - HOUR, to = now} = {\n ...calcFromTo(timeRange),\n ...initialTimeRange,\n };\n initialRef.current = initialTimeRange;\n setTimeRange({...timeRange, from, to});\n }\n }, [timeRange, initialTimeRange, setTimeRange]);\n\n return {\n timeRange,\n setTimeRange,\n moveTimeRangeTo,\n };\n}\n","import * as React from 'react';\nconst Check = (props) => (React.createElement(\"svg\", Object.assign({ xmlns: \"http://www.w3.org/2000/svg\", width: 16, height: 16, fill: \"none\", viewBox: \"0 0 16 16\" }, props),\n React.createElement(\"path\", { fill: \"currentColor\", fillRule: \"evenodd\", d: \"M13.488 3.43a.75.75 0 0 1 .081 1.058l-6 7a.75.75 0 0 1-1.1.042l-3.5-3.5A.75.75 0 0 1 4.03 6.97l2.928 2.927 5.473-6.385a.75.75 0 0 1 1.057-.081\", clipRule: \"evenodd\" })));\nexport default Check;\n","import React from 'react';\n\nimport cn from 'bem-cn-lite';\n\nimport './ColorCircle.scss';\n\nconst block = cn('yt-color-circle');\n\nexport function ColorCircle({color, marginRight = true}: {color: string; marginRight?: boolean}) {\n return (\n <div className={block({'margin-right': marginRight})} style={{backgroundColor: color}} />\n );\n}\n"],"names":["props","_jsx","_objectSpread","xmlns","fill","viewBox","children","fillRule","d","clipRule","block","cn","ExpandButton","_ref","className","expanded","inline","toggleExpanded","all","showText","size","qa","titleExpanded","titleCollapsed","_jsxs","Button","view","title","onClick","Icon","data","doubleShevronRightSvg","shevronRightSvg","emptyTransformResponse","result","html","headings","logs","info","warn","error","disabled","transformMarkdown","_x","_transformMarkdown","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee2","text","allowHTML","_yield$wrapApiPromise","wrap","_context2","prev","next","wrapApiPromiseByToaster","axios","post","toasterName","skipSuccessToast","errorContent","sent","abrupt","t0","message","stop","useMarkdown","_ref2","_ref2$allowHTML","_React$useState","React","_React$useState2","_slicedToArray","res","setResult","_transform","_callee","_context","transform","MarkdownImpl","_ref3","ref","_useMarkdown$result","dangerouslySetInnerHTML","__html","Markdown","_ref5","customMarkdown","UIFactory","renderMarkdown","displayName","YTChartKitLazy","withLazyLoading","COLORS","getSerieColor","serieIndex","length","getDashboardPath","type","concat","makePanelId","item","gridPos","x","y","fetchPrometheusChartData","args","cluster","id","from","to","pointCount","dashboardType","rest","_objectWithoutProperties","_excluded","undefined","isNaN","end","start","step","Math","max","floor","rangeParams","params","then","responseData","fetchPrometheusDiscoverValues","hasValuesToDiscover","_data$results","results","reduce","acc","key","prometheusApi","rootApi","injectEndpoints","endpoints","build","prometheusFetch","query","queryFn","prometheusDiscoverValues","usePrometheusFetchQuery","usePrometheusDiscoverValuesQuery","IntersectionObserverContainer","_useIntersectionEntry","element","setElement","_ref2$intersectionRat","useIntersectionEntry","options","threshold","intersectionRatio","setRef","useForkRef","InlineError","ClickableText","showErrorPopup","PrometheusDashboardContext","expandedId","throwContextError","timeRangeFilter","shortcutValue","setTimeRangeFilter","Error","PrometheusDashboardProvider","dispatch","useDispatch","expandedPanels","useSelector","state","prometheusDashboard","_usePrometheusDashbor","usePrometheusDashbordTimeRange","timeRange","setTimeRange","value","prometheusDashboardSlice","actions","setExpandedId","Provider","usePrometheusDashboardContext","PrometheusWidgetToolbar","_usePrometheusDashboa","timerId","setTimeout","scrollIntoView","clearTimeout","isMaximized","minimizeSvg","maximizeSvg","ExpandablePrometheusChart","elementRef","_usePrometheusDashboa2","PrometheusChart","_useElementSize","_useLoadQueriesData","_ref3$data","targets","fieldConfig","__ytDashboardType","_usePrometheusFetchQu","YT","isLoading","fieldOverrides","_fieldConfig$defaults","_fieldConfig$defaults2","showLegend","defaults","custom","hideForm","legend","axisLabel","propertiesByRefId","reduce_","overrides","matcher","properties","propsAcc","propItem","rawData","makeYagrWidgetData","useLoadQueriesData","useElementSize","contentRect","width","chartData","_React$useState3","_React$useState4","yagr","setYagr","subscribe","unsubscribe","Flex","direction","onChartLoad","widget","_Fragment","Loader","visible","centered","_ref4","graphs","timeline","libraryConfig","show","tooltip","isMouseOver","_ref6","format","DateTime","sort","_ref7","_ref8","left","right","compareWithUndefined","axes","label","cursor","sync","t","push","metrics","serie","_propertiesByRefId$re","_targets$serie","legendFormat","unit","refId","serie_i","_results$serie$data$r","_results$serie","_results$serie2","serie_i_data","_serie_i_data$values","values","metric","graph","name","formatByParams","KEY_WITH_DOUBLE_CURLY_BRACES","Array","formatter","Bytes","NumberSmart","color","graphIndex","i","_values$i","valueStr","pos","round","Number","pop","udpateMissingLegend","index","_metrics$index","_metrics","_ref0","otherMetric","obj","other","Object","keys","v","NO_VALUE","genSerieName","salt","random","toString","PrometheusDashKit","_useDashKitConfig","panels","collapsedRows","setCollapsedRows","config","rowSpecificProps","expandedPanelIndex","findIndex","expandedPanel","getVisiblePanels","addToLayout","extraProps","itemType","assign","layout","items","namespace","collapsed","childCount","onToggleCollapsed","_defineProperty","_rowSpecificProps","_rowSpecificProps2","counter","aliases","connections","_config$layout","widthByY","k","w","cols","DashKit","setSettings","gridLayout","margin","containerPadding","rowHeight","useDashKitConfig","editMode","PLUGINS","renderer","mode","content","timeseries","row","Secondary","registerPlugins","_toConsumableArray","map","PrometheusDashboard","toolbarStickyTop","_useLoadedLayout","setData","ytApiV3Id","get","YTApiId","prometheusMonitoringLayout","path","code","YTErrors","NODE_DOES_NOT_EXIST","makeNotImplementedLayout","uid","useLoadedLayout","_useDashboardToolbar","toolbarItems","getCluster","templating","list","withDiscoverValues","filter","discover_values","_usePrometheusDashboa3","usePrometheusDashboardParams","extraParams","setExtraParams","setParams","Boolean","forEach","_ref11","_extraParams$name","_dataItem$result$data","_dataItem$result","default_for_ui","match","makeDiscoverValuesKey","dataItem","availableOptions","uniq_","node","Select","onUpdate","_ref12","effectiveParams","useDashboardToolbar","hasToolbar","StickyContainer","topOffset","stickyTopClassName","PrometheusTimelineToolbar","Toolbar","itemsToWrap","marginTopSkip","YTErrorBlock","MissingParametersWarning","JSON","stringify","join","h","grafanaUrl","_data$","_error$inner_errors","user","_useFetchBatchQuery","output","allowGrafanaUrl","getCurrentUserName","useFetchBatchQuery","checkPermissions","parameters","requests","makeCheckPermissionBatchSubRequest","permission","errorTitle","inner_errors","action","grafanaBaseUrl","append","String","URLSearchParams","useGrafanaUrl","YTTimeline","shortcut","hasRuler","growable","marginRight","Link","href","target","_getConfigData$uiSett","getConfigData","uiSettings","details","_ref9","n","attributes","bottomMargin","TAB_PANEL_CLASSNAME","ACTIVE_CLASSNAME","GROUP_DATA_KEY","TAB_DATA_KEY","GLOBAL_SYMBOL","getEventTarget","isCustom","getClosestScrollableParent","getOffsetByScrollableParent","Selector","getShadowIncludingRoot","root","getRoot","nodeName","constructor","isShadowRoot","host","parentNode","module","exports","opt","composed","this","Symbol","for","event","composedPath","isArray","matches","abs","scrollHeight","clientHeight","parentElement","scrollableParent","elementBounds","getBoundingClientRect","scrollableParentBounds","top","scrollTop","scrollLeft","TABS","TAB_LIST","TAB","TAB_PANEL","VERTICAL_TABS","window","document","_onSelectTabHandlers","Set","_document","addEventListener","areVertical","areTabsVertical","isValidTabElement","tab","getTabDataFromHTMLElement","_selectTab","tabs","nodes","getTabs","currentTab","currentTabIndex","newIndex","selectTab","focus","onSelectTab","handler","add","delete","selectTabById","querySelector","scrollToElement","targetTab","group","align","previousTargetOffset","updateHTML","fireSelectTabEvent","dataset","diplodocId","resetScroll","updateHTMLVertical","updateHTMLHorizontal","querySelectorAll","updated","elements","input","hasAttribute","classList","remove","removeAttribute","setAttribute","htmlElem","diplodocIsActive","tabList","tabsContainer","allTabs","allPanels","contains","targetIndex","indexOf","panel","isTargetTab","toggle","targetOffset","topDelta","leftDelta","scrollTopDelta","scrollLeftDelta","scrollTo","eventTab","startsWith","currentTabId","closest","parent","diplodocVerticalTab","_a","_b","diplodocKey","diplodocGroup","tabEl","e","matchesSelector","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","selector","getRootNode","call","th","prototype","some","Element","Promise","resolve","navigator","clipboard","writeText","textarea","createElement","textContent","body","select","execCommand","removeChild","copyToClipboard","innerText","svgButton","getAttribute","icon","getElementById","beginElement","notifySuccess","matchTitle","HTMLElement","find","findTitleInPath","cutNode","toggleCut","TITLE","CONTENT","openClass","openDefinitionClass","replace","isListenerNeeded","setDefinitionPosition","definitionElement","termElement","termX","termY","termRight","termLeft","termWidth","height","termHeight","termParent","termParentElement","termParentRight","termParentLeft","closeDefinition","termOnResize","relativeX","relativeY","offsetTop","definitionParent","definitionWidth","definitionParentLeft","definitionLeftCoordinate","getCoords","definitionOutOfScreenOnLeft","fitDefinitionDocument","clientWidth","dir","customHeaderTop","style","offsetLeft","openDefinition","getElementsByClassName","termId","term","definition","removeEventListener","elem","box","docEl","documentElement","pageYOffset","pageXOffset","clientTop","clientLeft","termKey","definitionTemplate","cloneNode","firstChild","appendChild","createDefinitionElement","isTargetDefinitionContent","substr","setDefinitionId","_useSelector","prometheusDashboardSelectors","getParams","usePrometheusDashboardType","allowedValues","defaultValue","getType","setType","HOUR","initialTimeRange","getTimeRange","initialRef","moveTimeRangeTo","timestamp","moveTimeRangeFilterTo","isEqual_","current","now","Date","_calcFromTo$initialTi","calcFromTo","_calcFromTo$initialTi2","_calcFromTo$initialTi3","ColorCircle","_ref$marginRight","backgroundColor"],"sourceRoot":""}
|