⚝
One Hat Cyber Team
⚝
Your IP:
216.73.216.72
Server IP:
41.128.143.86
Server:
Linux host.raqmix.cloud 6.8.0-1025-azure #30~22.04.1-Ubuntu SMP Wed Mar 12 15:28:20 UTC 2025 x86_64
Server Software:
Apache
PHP Version:
8.3.23
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
proc
/
self
/
root
/
usr
/
share
/
grafana
/
public
/
build
/
View File Name :
6499.9f52e0855fd4782a8b45.js
"use strict";(self.webpackChunkgrafana=self.webpackChunkgrafana||[]).push([[6499],{32346:(Se,K,d)=>{d.d(K,{g:()=>W});var j=d(96540),J=d(32196),Z=d(14186),V=d(79924),t=d(10354),M=d(29020),D=Object.defineProperty,te=Object.defineProperties,de=Object.getOwnPropertyDescriptors,oe=Object.getOwnPropertySymbols,pe=Object.prototype.hasOwnProperty,me=Object.prototype.propertyIsEnumerable,I=(T,A,p)=>A in T?D(T,A,{enumerable:!0,configurable:!0,writable:!0,value:p}):T[A]=p,N=(T,A)=>{for(var p in A||(A={}))pe.call(A,p)&&I(T,p,A[p]);if(oe)for(var p of oe(A))me.call(A,p)&&I(T,p,A[p]);return T},U=(T,A)=>te(T,de(A));const W=({config:T,onChange:A,className:p})=>{const F=fe=>{A(U(N({},T),{jsonData:U(N({},T.jsonData),{keepCookies:fe})}))},ge=fe=>{A(U(N({},T),{jsonData:U(N({},T.jsonData),{timeout:parseInt(fe.currentTarget.value,10)})}))},X={container:(0,J.css)({maxWidth:578})};return j.createElement(M.I,{title:"Advanced HTTP settings",className:(0,J.cx)(X.container,p)},j.createElement(Z.I,{htmlFor:"advanced-http-cookies",label:"Allowed cookies",labelWidth:24,tooltip:"Grafana proxy deletes forwarded cookies by default. Specify cookies by name that should be forwarded to the data source.",disabled:T.readOnly,grow:!0},j.createElement(V.u,{id:"advanced-http-cookies",placeholder:"New cookie (hit enter to add)",tags:T.jsonData.keepCookies,onChange:F})),j.createElement(Z.I,{htmlFor:"advanced-http-timeout",label:"Timeout",labelWidth:24,tooltip:"HTTP request timeout in seconds",disabled:T.readOnly,grow:!0},j.createElement(t.p,{id:"advanced-http-timeout",type:"number",min:0,placeholder:"Timeout in seconds","aria-label":"Timeout in seconds",value:T.jsonData.timeout,onChange:ge})))}},6191:(Se,K,d)=>{d.d(K,{X:()=>V});var j=d(32196),J=d(96540),Z=d(40845);const V=({children:M})=>{const D=(0,Z.of)(t);return J.createElement("div",{className:D.root},M)},t=M=>({root:(0,j.css)({display:"flex",flexWrap:"wrap",alignItems:"center",gap:M.spacing(3),minHeight:M.spacing(4)})})},31347:(Se,K,d)=>{d.d(K,{Z:()=>J});var j=d(96540);const J=({grow:Z,shrink:V})=>j.createElement("div",{style:{display:"block",flexGrow:Z,flexShrink:V}})},44600:(Se,K,d)=>{d.d(K,{A:()=>me});var j,J=new Uint8Array(16);function Z(){if(!j&&(j=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||typeof msCrypto<"u"&&typeof msCrypto.getRandomValues=="function"&&msCrypto.getRandomValues.bind(msCrypto),!j))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return j(J)}const V=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function t(I){return typeof I=="string"&&V.test(I)}const M=t;for(var D=[],te=0;te<256;++te)D.push((te+256).toString(16).substr(1));function de(I){var N=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,U=(D[I[N+0]]+D[I[N+1]]+D[I[N+2]]+D[I[N+3]]+"-"+D[I[N+4]]+D[I[N+5]]+"-"+D[I[N+6]]+D[I[N+7]]+"-"+D[I[N+8]]+D[I[N+9]]+"-"+D[I[N+10]]+D[I[N+11]]+D[I[N+12]]+D[I[N+13]]+D[I[N+14]]+D[I[N+15]]).toLowerCase();if(!M(U))throw TypeError("Stringified UUID is invalid");return U}const oe=de;function pe(I,N,U){I=I||{};var W=I.random||(I.rng||Z)();if(W[6]=W[6]&15|64,W[8]=W[8]&63|128,N){U=U||0;for(var T=0;T<16;++T)N[U+T]=W[T];return N}return oe(W)}const me=pe},16499:(Se,K,d)=>{d.r(K),d.d(K,{plugin:()=>Gn});var j=d(40187),J=d(69129),Z=d(3591),V=d(2543),t=d(96540),M=d(14110),D=d(97535);const te=['{job="default/prometheus"}'],de=["job","app","k8s_app"],oe=5,pe=[{title:"Log pipeline",expression:'{job="mysql"} |= "metrics" | logfmt | duration > 10s',label:'This query targets the MySQL job, keeps logs that contain the substring "metrics", and then parses and filters the logs further.'},{title:"Count over time",expression:'count_over_time({job="mysql"}[5m])',label:"This query counts all the log lines within the last five minutes for the MySQL job."},{title:"Rate",expression:'rate(({job="mysql"} |= "error" != "timeout")[10s])',label:"This query gets the per-second rate of all non-timeout errors within the last ten seconds for the MySQL job."},{title:"Aggregate, count, and group",expression:'sum(count_over_time({job="mysql"}[5m])) by (level)',label:"Get the count of logs during the last five minutes, grouping by level."}];class me extends t.PureComponent{constructor(){super(...arguments),this.state={userExamples:[]},this.checkUserLabels=async()=>{const a=this.props.datasource?.languageProvider;if(a.started){const r=a.getLabelKeys()||[],n=de.find(l=>r.includes(l));if(n){const l=await a.fetchLabelValues(n),s=(0,V.shuffle)(l).slice(0,oe).map(c=>`{${n}="${(0,D.Qn)(c)}"}`);this.setState({userExamples:s})}}else this.scheduleUserLabelChecking()}}componentDidMount(){this.scheduleUserLabelChecking(),(0,M.rR)("grafana_loki_cheatsheet_opened",{})}componentWillUnmount(){clearTimeout(this.userLabelTimer)}scheduleUserLabelChecking(){this.userLabelTimer=setTimeout(this.checkUserLabels,1e3)}renderExpression(a){const{onClickExample:r}=this.props,n=l=>{r(l),(0,M.rR)("grafana_loki_cheatsheet_example_clicked",{})};return t.createElement("button",{type:"button",className:"cheat-sheet-item__example",key:a,onClick:()=>n({refId:"A",expr:a})},t.createElement("code",null,a))}render(){const{userExamples:a}=this.state,r=a.length>0;return t.createElement("div",null,t.createElement("h2",null,"Loki Cheat Sheet"),t.createElement("div",{className:"cheat-sheet-item"},t.createElement("div",{className:"cheat-sheet-item__title"},"See your logs"),t.createElement("div",{className:"cheat-sheet-item__label"},"Start by selecting a log stream from the Label browser, or alternatively you can write a stream selector into the query field."),r?t.createElement("div",null,t.createElement("div",{className:"cheat-sheet-item__label"},"Here are some example streams from your logs:"),a.map(n=>this.renderExpression(n))):t.createElement("div",null,t.createElement("div",{className:"cheat-sheet-item__label"},"Here is an example of a log stream:"),this.renderExpression(te[0]))),t.createElement("div",{className:"cheat-sheet-item"},t.createElement("div",{className:"cheat-sheet-item__title"},"Combine stream selectors"),this.renderExpression('{app="cassandra",namespace="prod"}'),t.createElement("div",{className:"cheat-sheet-item__label"},"Returns all log lines from streams that have both labels.")),t.createElement("div",{className:"cheat-sheet-item"},t.createElement("div",{className:"cheat-sheet-item__title"},"Filtering for search terms."),this.renderExpression('{app="cassandra"} |~ "(duration|latency)s*(=|is|of)s*[d.]+"'),this.renderExpression('{app="cassandra"} |= "exact match"'),this.renderExpression('{app="cassandra"} != "do not match"'),t.createElement("div",{className:"cheat-sheet-item__label"},t.createElement("a",{href:"https://grafana.com/docs/loki/latest/logql/#log-pipeline",target:"logql"},"LogQL")," ","supports exact and regular expression filters.")),pe.map(n=>t.createElement("div",{className:"cheat-sheet-item",key:n.expression},t.createElement("div",{className:"cheat-sheet-item__title"},n.title),this.renderExpression(n.expression),t.createElement("div",{className:"cheat-sheet-item__label"},n.label))))}}var I=d(41987),N=d(84596),U=d(39070),W=d(13544),T=d(42952),A=d(6191),p=d(32196),F=d(40845),ge=d(15292),X=d(46819),fe=Object.defineProperty,Yt=Object.defineProperties,qt=Object.getOwnPropertyDescriptors,Oe=Object.getOwnPropertySymbols,rt=Object.prototype.hasOwnProperty,nt=Object.prototype.propertyIsEnumerable,st=(e,a,r)=>a in e?fe(e,a,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[a]=r,_t=(e,a)=>{for(var r in a||(a={}))rt.call(a,r)&&st(e,r,a[r]);if(Oe)for(var r of Oe(a))nt.call(a,r)&&st(e,r,a[r]);return e},ea=(e,a)=>Yt(e,qt(a)),ta=(e,a)=>{var r={};for(var n in e)rt.call(e,n)&&a.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&Oe)for(var n of Oe(e))a.indexOf(n)<0&&nt.call(e,n)&&(r[n]=e[n]);return r};function aa(e){var a=e,{label:r}=a,n=ta(a,["label"]);const l=r.replace(" ","-"),s=(0,t.useRef)((0,V.uniqueId)(`switch-${l}`)),c=(0,F.of)(ra);return t.createElement(X.B,{gap:1},t.createElement("label",{htmlFor:s.current,className:c.switchLabel},r),t.createElement(ge.d,ea(_t({},n),{id:s.current})))}const ra=e=>({switchLabel:(0,p.css)({color:e.colors.text.secondary,cursor:"pointer",fontSize:e.typography.bodySmall.fontSize,"&:hover":{color:e.colors.text.primary}})});var xe=d(31347),lt=d(94354);const na=[{label:"Builder",value:T.f.Builder},{label:"Code",value:T.f.Code}];function sa({mode:e,onChange:a}){return t.createElement("div",{"data-testid":"QueryEditorModeToggle"},t.createElement(lt.z,{options:na,size:"sm",value:e,onChange:a}))}var ot=d(71087),q=d(32264),la=d(96374),Ce=d(67061),k=d(55852),oa=d(68402);class ia{get(a){return window.localStorage[a]}set(a,r){window.localStorage[a]=r}getBool(a,r){return r!==void 0&&!this.exists(a)?r:window.localStorage[a]==="true"}getObject(a,r){let n=r;if(this.exists(a)){const l=window.localStorage[a];try{n=JSON.parse(l)}catch(s){console.error(`Error parsing store object: ${a}. Returning default: ${r}. [${s}]`)}}return n}setObject(a,r){let n;try{n=JSON.stringify(r)}catch(l){throw new Error(`Could not stringify object: ${a}. [${l}]`)}try{this.set(a,n)}catch(l){const s=new Error(`Could not save item in localStorage: ${a}. [${l}]`);throw l instanceof Error&&(s.name=l.name),s}return!0}exists(a){return window.localStorage[a]!==void 0}delete(a){window.localStorage.removeItem(a)}}const we=new ia,ca=e=>{const{children:a,storageKey:r,defaultValue:n}=e,[l,s]=(0,t.useState)({value:we.getObject(e.storageKey,e.defaultValue)});(0,t.useEffect)(()=>{const o=i=>{i.key===r&&s({value:we.getObject(e.storageKey,e.defaultValue)})};return window.addEventListener("storage",o),()=>{window.removeEventListener("storage",o)}});const c=o=>{try{we.setObject(r,o)}catch(i){console.error(i)}s({value:o})},u=()=>{try{we.delete(r)}catch(o){console.log(o)}s({value:n})};return t.createElement(t.Fragment,null,a(l.value,c,u))};var it=d(37390),ct=d(39558),ua=d(91793),da=d(9830),Pe=d(60029),Me=d(54438),ie=d(10354),ut=d(66864);const Fe=1e3,Qe=1e4,pa=4,Ae="{}";function _(e){const a=[];for(const r of e)if(r.selected&&r.values&&r.values.length>0){const n=r.values.filter(l=>l.selected).map(l=>l.name);n.length>1?a.push(`${r.name}=~"${n.map(D.Cs).join("|")}"`):n.length===1&&a.push(`${r.name}="${(0,D.Qn)(n[0])}"`)}return["{",a.join(","),"}"].join("")}function ma(e,a,r){return e.map(n=>{const l=a[n.name];if(l){let s;if(n.name===r&&n.values)s=n.values;else{const c=new Set(n.values?.filter(u=>u.selected).map(u=>u.name)||[]);s=l.map(u=>({name:u,selected:c.has(u)}))}return{...n,loading:!1,values:s,facets:s.length}}return{...n,loading:!1,hidden:!l,values:void 0,facets:0}})}const ga=e=>({wrapper:(0,p.css)` background-color: ${e.colors.background.secondary}; width: 100%; `,wrapperPadding:(0,p.css)` padding: ${e.spacing(2)}; `,list:(0,p.css)` margin-top: ${e.spacing(1)}; display: flex; flex-wrap: wrap; max-height: 200px; overflow: auto; `,section:(0,p.css)` & + & { margin: ${e.spacing(2,0)}; } position: relative; `,footerSectionStyles:(0,p.css)` padding: ${e.spacing(1)}; background-color: ${e.colors.background.primary}; position: sticky; bottom: -${e.spacing(3)}; /* offset the padding on modal */ left: 0; `,selector:(0,p.css)` font-family: ${e.typography.fontFamilyMonospace}; margin-bottom: ${e.spacing(1)}; width: 100%; `,status:(0,p.css)` margin-bottom: ${e.spacing(1)}; color: ${e.colors.text.secondary}; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; transition: opacity 100ms linear; opacity: 0; font-size: ${e.typography.bodySmall.fontSize}; height: calc(${e.typography.bodySmall.fontSize} + 10px); `,statusShowing:(0,p.css)` opacity: 1; `,error:(0,p.css)` color: ${e.colors.error.main}; `,valueList:(0,p.css)` margin-right: ${e.spacing(1)}; resize: horizontal; `,valueListWrapper:(0,p.css)` border-left: 1px solid ${e.colors.border.medium}; margin: ${e.spacing(1,0)}; padding: ${e.spacing(1,0,1,1)}; `,valueListArea:(0,p.css)` display: flex; flex-wrap: wrap; margin-top: ${e.spacing(1)}; `,valueTitle:(0,p.css)` margin-left: -${e.spacing(.5)}; margin-bottom: ${e.spacing(1)}; `,validationStatus:(0,p.css)` padding: ${e.spacing(.5)}; margin-bottom: ${e.spacing(1)}; color: ${e.colors.text.maxContrast}; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; `});class fa extends t.Component{constructor(){super(...arguments),this.state={labels:[],searchTerm:"",status:"Ready",error:"",validationStatus:""},this.onChangeSearch=a=>{this.setState({searchTerm:a.target.value})},this.onClickRunLogsQuery=()=>{(0,M.rR)("grafana_loki_label_browser_closed",{app:this.props.app,closeType:"showLogsButton"});const a=_(this.state.labels);this.props.onChange(a)},this.onClickRunMetricsQuery=()=>{(0,M.rR)("grafana_loki_label_browser_closed",{app:this.props.app,closeType:"showLogsRateButton"});const r=`rate(${_(this.state.labels)}[$__auto])`;this.props.onChange(r)},this.onClickClear=()=>{this.setState(a=>({labels:a.labels.map(n=>({...n,values:void 0,selected:!1,loading:!1,hidden:!1,facets:void 0})),searchTerm:"",status:"",error:"",validationStatus:""})),this.props.deleteLastUsedLabels()},this.onClickLabel=(a,r,n)=>{const l=this.state.labels.find(u=>u.name===a);if(!l)return;const s=!l.selected;let c={selected:s};if(l.values&&!s){const u=l.values.map(o=>({...o,selected:!1}));c={...c,facets:0,values:u}}this.setState({searchTerm:""}),this.updateLabelState(a,c,"",()=>this.doFacettingForLabel(a))},this.onClickValue=(a,r,n)=>{const l=this.state.labels.find(c=>c.name===a);if(!l||!l.values)return;this.setState({searchTerm:""});const s=l.values.map(c=>({...c,selected:c.name===r?!c.selected:c.selected}));this.updateLabelState(a,{values:s},"",()=>this.doFacetting(a))},this.onClickValidate=()=>{const a=_(this.state.labels);this.validateSelector(a)},this.doFacetting=a=>{const r=_(this.state.labels);if(r===Ae){const n=this.state.labels.map(l=>({...l,facets:0,values:void 0,hidden:!1}));this.setState({labels:n},()=>{this.state.labels.forEach(l=>l.selected&&this.fetchValues(l.name,r))})}else this.fetchSeries(r,a)}}updateLabelState(a,r,n="",l){this.setState(s=>{const c=s.labels.map(o=>o.name===a?{...o,...r}:o),u=n?"":s.error;return{labels:c,status:n,error:u,validationStatus:""}},l)}componentDidMount(){const{languageProvider:a,autoSelect:r=pa,lastUsedLabels:n,timeRange:l}=this.props;if(a){const s=n;a.start(l).then(()=>{let c=a.getLabelKeys();if(c.length>Fe){const o=`Too many labels found (showing only ${Fe} of ${c.length})`;c=c.slice(0,Fe),this.setState({error:o})}const u=c.map((o,i,v)=>({name:o,selected:v.length<=r&&s.length===0||s.includes(o),loading:!1}));this.setState({labels:u},()=>{this.state.labels.forEach(o=>{o.selected&&this.fetchValues(o.name,Ae)})})})}}doFacettingForLabel(a){const r=this.state.labels.find(l=>l.name===a);if(!r)return;const n=this.state.labels.filter(l=>l.selected).map(l=>l.name);this.props.storeLastUsedLabels(n),r.selected?r.values||this.fetchValues(a,_(this.state.labels)):this.doFacetting()}async fetchValues(a,r){const{languageProvider:n,timeRange:l}=this.props;this.updateLabelState(a,{loading:!0},`Fetching values for ${a}`);try{let s=await n.fetchLabelValues(a,{timeRange:l});if(r!==_(this.state.labels)){this.updateLabelState(a,{loading:!1},"");return}if(s.length>Qe){const u=`Too many values for ${a} (showing only ${Qe} of ${s.length})`;s=s.slice(0,Qe),this.setState({error:u})}const c=s.map(u=>({name:u}));this.updateLabelState(a,{values:c,loading:!1})}catch(s){console.error(s)}}async fetchSeries(a,r){const{languageProvider:n,timeRange:l}=this.props;r&&this.updateLabelState(r,{loading:!0},`Loading labels for ${a}`);try{const s=await n.fetchSeriesLabels(a,{timeRange:l});if(a!==_(this.state.labels)){r&&this.updateLabelState(r,{loading:!1});return}if(Object.keys(s).length===0){this.setState({error:`Empty results, no matching label for ${a}`});return}const c=ma(this.state.labels,s,r);this.setState({labels:c,error:""}),r&&this.updateLabelState(r,{loading:!1})}catch(s){console.error(s)}}async validateSelector(a){const{languageProvider:r,timeRange:n}=this.props;this.setState({validationStatus:`Validating selector ${a}`,error:""});const l=await r.fetchSeries(a,{timeRange:n});this.setState({validationStatus:`Selector is valid (${l.length} streams found)`})}render(){const{theme:a}=this.props,{labels:r,searchTerm:n,status:l,error:s,validationStatus:c}=this.state;if(r.length===0)return t.createElement(ct._,{text:"Loading labels..."});const u=ga(a),o=_(this.state.labels),i=o===Ae;let v=r.filter(m=>m.selected&&m.values);return n?v=v.map(m=>{const g=m.values.filter(y=>{if(y.selected)return y.highlightParts=void 0,!0;const C=(0,da.I)(y.name.toLowerCase(),n.toLowerCase());return C.found?(y.highlightParts=C.ranges,y.order=C.distance,!0):!1});return{...m,values:(0,V.sortBy)(g,y=>y.selected?-1/0:y.order)}}):v=this.state.labels.filter(m=>m.selected&&m.values).map(m=>({...m,values:m?.values?m.values.map(g=>({...g,highlightParts:void 0})):[]})),t.createElement(t.Fragment,null,t.createElement("div",{className:u.wrapper},t.createElement("div",{className:(0,p.cx)(u.section,u.wrapperPadding)},t.createElement(Pe.J,{description:"Which labels would you like to consider for your search?"},"1. Select labels to search in"),t.createElement("div",{className:u.list},r.map(m=>t.createElement(Me.J,{key:m.name,name:m.name,loading:m.loading,active:m.selected,hidden:m.hidden,facets:m.facets,onClick:this.onClickLabel})))),t.createElement("div",{className:(0,p.cx)(u.section,u.wrapperPadding)},t.createElement(Pe.J,{description:"Choose the label values that you would like to use for the query. Use the search field to find values across selected labels."},"2. Find values for the selected labels"),t.createElement("div",null,t.createElement(ie.p,{onChange:this.onChangeSearch,"aria-label":"Filter expression for values",value:n,placeholder:"Enter a label value"})),t.createElement("div",{className:u.valueListArea},v.map(m=>t.createElement("div",{role:"list",key:m.name,className:u.valueListWrapper},t.createElement("div",{className:u.valueTitle,"aria-label":`Values for ${m.name}`},t.createElement(Me.J,{name:m.name,loading:m.loading,active:m.selected,hidden:m.hidden,facets:m.facets||m.values?.length,onClick:this.onClickLabel})),t.createElement(ua.Y1,{height:200,itemCount:m.values?.length||0,itemSize:28,itemKey:g=>m.values?.[g].name??g,width:200,className:u.valueList},({index:g,style:y})=>{const C=m.values?.[g];return C?t.createElement("div",{style:y},t.createElement(Me.J,{name:m.name,value:C?.name,active:C?.selected,highlightParts:C?.highlightParts,onClick:this.onClickValue,searchTerm:n})):null})))))),t.createElement("div",{className:u.footerSectionStyles},t.createElement(Pe.J,null,"3. Resulting selector"),t.createElement("pre",{"aria-label":"selector",className:u.selector},o),c&&t.createElement("div",{className:u.validationStatus},c),t.createElement("div",{className:(0,p.cx)(u.status,(l||s)&&u.statusShowing)},t.createElement("span",{className:s?u.error:""},s||l)),t.createElement(ut.Gy,null,t.createElement(k.$n,{"aria-label":"Use selector as logs button",disabled:i,onClick:this.onClickRunLogsQuery},"Show logs"),t.createElement(k.$n,{"aria-label":"Use selector as metrics button",variant:"secondary",disabled:i,onClick:this.onClickRunMetricsQuery},"Show logs rate"),t.createElement(k.$n,{"aria-label":"Validate submit button",variant:"secondary",disabled:i,onClick:this.onClickValidate},"Validate selector"),t.createElement(k.$n,{"aria-label":"Selector clear button",variant:"secondary",onClick:this.onClickClear},"Clear"))))}}const va=(0,F.cV)(fa),ha=e=>{const{isOpen:a,onClose:r,datasource:n,app:l,timeRange:s}=e,[c,u]=(0,t.useState)(!1),[o,i]=(0,t.useState)(!1),v="grafana.datasources.loki.browser.labels",m=(0,F.of)(ya);(0,t.useEffect)(()=>{a&&n.languageProvider.fetchLabels({timeRange:s}).then(f=>{u(!0),i(f.length>0)})},[n,a,s]);const g=f=>{const{query:O,onChange:b,onRunQuery:h}=e,S={...O,expr:f};b(S),h()},y=f=>{g(f),r()},C=()=>{(0,M.rR)("grafana_loki_label_browser_closed",{app:l,closeType:"modalClose"}),r()};return t.createElement(it.a,{isOpen:a,title:"Label browser",onDismiss:C,className:m.modal},!c&&t.createElement(ct._,{text:"Loading labels..."}),c&&!o&&t.createElement("p",null,"No labels found."),c&&o&&t.createElement(ca,{storageKey:v,defaultValue:[]},(f,O,b)=>t.createElement(va,{languageProvider:n.languageProvider,onChange:y,lastUsedLabels:f,storeLastUsedLabels:O,deleteLastUsedLabels:b,app:l,timeRange:s})))},ya=e=>({modal:(0,p.css)` width: 85vw; ${e.breakpoints.down("md")} { width: 100%; } `});var Ea=d(30038),H=d(21167),ae=d(60706),ba=d(43127),Ve=d(9e4),re=d(81580),dt=d(97801),La=d(7650),pt=d(44600),ne=d(50877),se=d(14186),Y=d(88323),Sa=d(81392),Oa=d(3721),xa=Object.defineProperty,Ca=Object.defineProperties,wa=Object.getOwnPropertyDescriptors,mt=Object.getOwnPropertySymbols,Pa=Object.prototype.hasOwnProperty,Na=Object.prototype.propertyIsEnumerable,gt=(e,a,r)=>a in e?xa(e,a,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[a]=r,ve=(e,a)=>{for(var r in a||(a={}))Pa.call(a,r)&>(e,r,a[r]);if(mt)for(var r of mt(a))Na.call(a,r)&>(e,r,a[r]);return e},he=(e,a)=>Ca(e,wa(a));const Ta="You have conflicting label filters";function $a({item:e,items:a,defaultOp:r,onChange:n,onDelete:l,onGetLabelNames:s,onGetLabelValues:c,invalidLabel:u,invalidValue:o,multiValueSeparator:i="|"}){var v;const[m,g]=(0,t.useState)({}),[y,C]=(0,t.useState)(!1),[f,O]=(0,t.useState)(!1),b=(E=e.op)=>{var w;return(w=ft.find(L=>L.label===E))==null?void 0:w.isMultiValue},h=E=>E?E.indexOf(i)>0?E.split(i):[E]:[],S=()=>{const E=m.labelValues?[...m.labelValues]:[],w=h(e?.value).map(ne.z);return(0,V.uniqBy)([...w,...E],"value")},x=Ia(e,a),{current:R}=(0,t.useRef)((0,pt.A)());return t.createElement("div",{"data-testid":"visual-query-builder-dimensions-filter-item"},t.createElement(se.I,{error:Ta,invalid:x?!0:void 0},t.createElement(Sa.M,null,t.createElement(Y.l6,{placeholder:"Select label","data-testid":W.Tp.components.QueryBuilder.labelSelect,inputId:`visual-query-builder-dimensions-filter-item-key-${R}`,width:"auto",value:e.label?(0,ne.z)(e.label):null,allowCustomValue:!0,onOpenMenu:async()=>{g({isLoadingLabelNames:!0});const E=await s(e);C(!0),g({labelNames:E,isLoadingLabelNames:void 0})},onCloseMenu:()=>{C(!1)},isOpen:y,isLoading:m.isLoadingLabelNames,options:m.labelNames,onChange:E=>{var w;E.value&&n(he(ve({},e),{op:(w=e.op)!=null?w:r,label:E.value}))},invalid:x||u}),t.createElement(Y.l6,{"data-testid":W.Tp.components.QueryBuilder.matchOperatorSelect,value:(0,ne.z)((v=e.op)!=null?v:r),options:ft,width:"auto",onChange:E=>{E.value&&n(he(ve({},e),{op:E.value,value:b(E.value)?e.value:h(e?.value)[0]}))},invalid:x}),t.createElement(Y.l6,{placeholder:"Select value","data-testid":W.Tp.components.QueryBuilder.valueSelect,inputId:`visual-query-builder-dimensions-filter-item-value-${R}`,width:"auto",value:b()?h(e?.value).map(ne.z):h(e?.value).map(ne.z)[0],allowCustomValue:!0,onOpenMenu:async()=>{g({isLoadingLabelValues:!0});const E=await c(e);g(he(ve({},m),{labelValues:E,isLoadingLabelValues:void 0})),O(!0)},onCloseMenu:()=>{O(!1)},isOpen:f,isMulti:b(),isLoading:m.isLoadingLabelValues,options:S(),onChange:E=>{var w,L;if(E.value)n(he(ve({},e),{value:E.value,op:(w=e.op)!=null?w:r}));else{const $=E.map(Q=>{if(Q.value)return Q.value}).filter(Q=>Q!==void 0).join(i);n(he(ve({},e),{value:$,op:(L=e.op)!=null?L:r}))}},invalid:x||o}),t.createElement(Oa.Z,{"aria-label":"remove",icon:"times",variant:"secondary",onClick:l}))))}const ft=[{label:"=",value:"=",description:"Equals",isMultiValue:!1},{label:"!=",value:"!=",description:"Does not equal",isMultiValue:!1},{label:"=~",value:"=~",description:"Matches regex",isMultiValue:!0},{label:"!~",value:"!~",description:"Does not match regex",isMultiValue:!0}];function Ia(e,a){if(!e.label||!e.op||!e.value||a.length<2)return!1;const r=e.op.toString().startsWith("!");return a.filter(s=>s.label===e.label&&s.value===e.value&&s.op!==e.op).some(s=>{var c,u;return!!(r&&((c=s?.op)==null?void 0:c.toString().startsWith("!"))===!1||r===!1&&((u=s?.op)!=null&&u.toString().startsWith("!")))})}const Ra="Select at least 1 label filter (label and value)";function Da({labelsFilters:e,onChange:a,onGetLabelNames:r,onGetLabelValues:n,labelFilterRequired:l,multiValueSeparator:s}){const c="=",[u,o]=(0,t.useState)([{op:c}]);(0,t.useEffect)(()=>{e.length>0?o(e):o([{op:c}])},[e]);const i=m=>{o(m);const g=m.filter(y=>y.label!==void 0&&y.value!==void 0);(0,V.isEqual)(g,e)||a(g)},v=u.some(m=>m.label&&m.value);return t.createElement(dt.B,null,t.createElement(re.c,{label:"Label filters",error:Ra,invalid:l&&!v},t.createElement(La.o,{items:u,onChange:i,renderItem:(m,g,y)=>t.createElement($a,{item:m,items:u,defaultOp:c,onChange:g,onDelete:y,onGetLabelNames:r,onGetLabelValues:n,invalidLabel:l&&!m.label,invalidValue:l&&!m.value,multiValueSeparator:s})})))}var vt=d(36663);function je({title:e,stepNumber:a,markdown:r,children:n}){const l=(0,F.of)(ka);return t.createElement("div",{className:l.box},a!==void 0&&t.createElement("div",{className:l.stepNumber},a),t.createElement("div",{className:l.boxInner},e&&t.createElement("div",{className:l.header},t.createElement("span",null,e)),t.createElement("div",{className:l.body},r&&t.createElement("div",{dangerouslySetInnerHTML:{__html:(0,vt.G)(r)}}),n)))}const ka=e=>({box:(0,p.css)({background:e.colors.background.secondary,padding:e.spacing(1),borderRadius:e.shape.radius.default,position:"relative"}),boxInner:(0,p.css)({marginLeft:e.spacing(4)}),stepNumber:(0,p.css)({fontWeight:e.typography.fontWeightMedium,background:e.colors.secondary.main,width:"20px",height:"20px",borderRadius:e.shape.radius.circle,display:"flex",alignItems:"center",justifyContent:"center",position:"absolute",top:"10px",left:"11px",fontSize:e.typography.bodySmall.fontSize}),header:(0,p.css)({paddingBottom:e.spacing(.5),display:"flex",alignItems:"center",fontFamily:e.typography.fontFamilyMonospace}),body:(0,p.css)({color:e.colors.text.secondary,"p:last-child":{margin:0},a:{color:e.colors.text.link,textDecoration:"underline"}})});var ye=d(92762);function Ba({children:e}){const a=(0,F.of)(Ma);return t.createElement("div",{className:a.root},t.createElement(X.B,{gap:1},e))}const Ma=e=>({root:(0,p.css)({padding:e.spacing(1,1,0,1),backgroundColor:e.colors.background.secondary,borderRadius:e.shape.radius.default})});var Ue=d(75494),Fa=d(1604),Qa=d(3988),Ee=d(56034),Ne=d(14578),Aa=d(98587),le=d(58168),Va=d(39522);function ht(e){var a=t.useRef(e);return a.current=e,t.useCallback(function(){return a.current},[])}var ja=function(){};function Ua(e){var a=e.initial,r=e.value,n=e.onChange,l=n===void 0?ja:n;if(a===void 0&&r===void 0)throw new TypeError('Either "value" or "initial" variable must be set. Now both are undefined');var s=t.useState(a),c=s[0],u=s[1],o=ht(c),i=t.useCallback(function(m){var g=o(),y=typeof m=="function"?m(g):m;typeof y.persist=="function"&&y.persist(),u(y),typeof l=="function"&&l(y)},[o,l]),v=r!==void 0;return[v?r:c,v?l:i]}function yt(e,a){return e===void 0&&(e=0),a===void 0&&(a=0),function(){return{width:0,height:0,top:a,right:e,bottom:a,left:e,x:0,y:0,toJSON:function(){return null}}}}var za=["styles","attributes"],Et={getBoundingClientRect:yt()},bt={closeOnOutsideClick:!0,closeOnTriggerHidden:!1,defaultVisible:!1,delayHide:0,delayShow:0,followCursor:!1,interactive:!1,mutationObserverOptions:{attributes:!0,childList:!0,subtree:!0},offset:[0,6],trigger:"hover"};function Ha(e,a){var r,n,l;e===void 0&&(e={}),a===void 0&&(a={});var s=Object.keys(bt).reduce(function(B,P){var z;return(0,le.A)({},B,(z={},z[P]=B[P]!==void 0?B[P]:bt[P],z))},e),c=t.useMemo(function(){return[{name:"offset",options:{offset:s.offset}}]},Array.isArray(s.offset)?s.offset:[]),u=(0,le.A)({},a,{placement:a.placement||s.placement,modifiers:a.modifiers||c}),o=t.useState(null),i=o[0],v=o[1],m=t.useState(null),g=m[0],y=m[1],C=Ua({initial:s.defaultVisible,value:s.visible,onChange:s.onVisibleChange}),f=C[0],O=C[1],b=t.useRef();t.useEffect(function(){return function(){return clearTimeout(b.current)}},[]);var h=(0,Va.E)(s.followCursor?Et:i,g,u),S=h.styles,x=h.attributes,R=(0,Aa.A)(h,za),E=R.update,w=ht({visible:f,triggerRef:i,tooltipRef:g,finalConfig:s}),L=t.useCallback(function(B){return Array.isArray(s.trigger)?s.trigger.includes(B):s.trigger===B},Array.isArray(s.trigger)?s.trigger:[s.trigger]),$=t.useCallback(function(){clearTimeout(b.current),b.current=window.setTimeout(function(){return O(!1)},s.delayHide)},[s.delayHide,O]),Q=t.useCallback(function(){clearTimeout(b.current),b.current=window.setTimeout(function(){return O(!0)},s.delayShow)},[s.delayShow,O]),G=t.useCallback(function(){w().visible?$():Q()},[w,$,Q]);t.useEffect(function(){if(w().finalConfig.closeOnOutsideClick){var B=function(z){var ue,Jt=w(),Zt=Jt.tooltipRef,Xt=Jt.triggerRef,at=(z.composedPath==null||(ue=z.composedPath())==null?void 0:ue[0])||z.target;at instanceof Node&&Zt!=null&&Xt!=null&&!Zt.contains(at)&&!Xt.contains(at)&&$()};return document.addEventListener("mousedown",B),function(){return document.removeEventListener("mousedown",B)}}},[w,$]),t.useEffect(function(){if(!(i==null||!L("click")))return i.addEventListener("click",G),function(){return i.removeEventListener("click",G)}},[i,L,G]),t.useEffect(function(){if(!(i==null||!L("double-click")))return i.addEventListener("dblclick",G),function(){return i.removeEventListener("dblclick",G)}},[i,L,G]),t.useEffect(function(){if(!(i==null||!L("right-click"))){var B=function(z){z.preventDefault(),G()};return i.addEventListener("contextmenu",B),function(){return i.removeEventListener("contextmenu",B)}}},[i,L,G]),t.useEffect(function(){if(!(i==null||!L("focus")))return i.addEventListener("focus",Q),i.addEventListener("blur",$),function(){i.removeEventListener("focus",Q),i.removeEventListener("blur",$)}},[i,L,Q,$]),t.useEffect(function(){if(!(i==null||!L("hover")))return i.addEventListener("mouseenter",Q),i.addEventListener("mouseleave",$),function(){i.removeEventListener("mouseenter",Q),i.removeEventListener("mouseleave",$)}},[i,L,Q,$]),t.useEffect(function(){if(!(g==null||!L("hover")||!w().finalConfig.interactive))return g.addEventListener("mouseenter",Q),g.addEventListener("mouseleave",$),function(){g.removeEventListener("mouseenter",Q),g.removeEventListener("mouseleave",$)}},[g,L,Q,$,w]);var Be=R==null||(r=R.state)==null||(n=r.modifiersData)==null||(l=n.hide)==null?void 0:l.isReferenceHidden;t.useEffect(function(){s.closeOnTriggerHidden&&Be&&$()},[s.closeOnTriggerHidden,$,Be]),t.useEffect(function(){if(!s.followCursor||i==null)return;function B(P){var z=P.clientX,ue=P.clientY;Et.getBoundingClientRect=yt(z,ue),E?.()}return i.addEventListener("mousemove",B),function(){return i.removeEventListener("mousemove",B)}},[s.followCursor,i,E]),t.useEffect(function(){if(!(g==null||E==null||s.mutationObserverOptions==null)){var B=new MutationObserver(E);return B.observe(g,s.mutationObserverOptions),function(){return B.disconnect()}}},[s.mutationObserverOptions,g,E]);var tt=function(P){return P===void 0&&(P={}),(0,le.A)({},P,{style:(0,le.A)({},P.style,S.popper)},x.popper,{"data-popper-interactive":s.interactive})},Le=function(P){return P===void 0&&(P={}),(0,le.A)({},P,x.arrow,{style:(0,le.A)({},P.style,S.arrow),"data-popper-arrow":!0})};return(0,le.A)({getArrowProps:Le,getTooltipProps:tt,setTooltipRef:y,setTriggerRef:v,tooltipRef:g,triggerRef:i,visible:f},R)}var Wa=d(17464),Ga=Object.defineProperty,Ka=Object.defineProperties,Ja=Object.getOwnPropertyDescriptors,Lt=Object.getOwnPropertySymbols,Za=Object.prototype.hasOwnProperty,Xa=Object.prototype.propertyIsEnumerable,St=(e,a,r)=>a in e?Ga(e,a,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[a]=r,Ya=(e,a)=>{for(var r in a||(a={}))Za.call(a,r)&&St(e,r,a[r]);if(Lt)for(var r of Lt(a))Xa.call(a,r)&&St(e,r,a[r]);return e},qa=(e,a)=>Ka(e,Ja(a));const Ot=t.memo(({definition:e,operation:a,innerQueryPlaceholder:r})=>{const n=(0,F.of)(_a),[l,s]=(0,t.useState)(!1),{getTooltipProps:c,setTooltipRef:u,setTriggerRef:o,visible:i}=Ha({placement:"top",visible:l,offset:[0,16],onVisibleChange:s,interactive:!0,trigger:["click"]});return t.createElement(t.Fragment,null,t.createElement(k.$n,{title:"Click to show description",ref:o,icon:"info-circle",size:"sm",variant:"secondary",fill:"text"}),i&&t.createElement(Wa.ZL,null,t.createElement("div",qa(Ya({ref:u},c()),{className:n.docBox}),t.createElement("div",{className:n.docBoxHeader},t.createElement("span",null,e.renderer(a,e,r)),t.createElement(xe.Z,{grow:1}),t.createElement(k.$n,{icon:"times",onClick:()=>s(!1),fill:"text",variant:"secondary",title:"Remove operation"})),t.createElement("div",{className:n.docBoxBody,dangerouslySetInnerHTML:{__html:er(e,a)}}))))});Ot.displayName="OperationDocs";const _a=e=>({docBox:(0,p.css)({overflow:"hidden",background:e.colors.background.primary,border:`1px solid ${e.colors.border.strong}`,boxShadow:e.shadows.z3,maxWidth:"600px",padding:e.spacing(1),borderRadius:e.shape.radius.default,zIndex:e.zIndex.tooltip}),docBoxHeader:(0,p.css)({fontSize:e.typography.h5.fontSize,fontFamily:e.typography.fontFamilyMonospace,paddingBottom:e.spacing(1),display:"flex",alignItems:"center"}),docBoxBody:(0,p.css)({marginBottom:e.spacing(-1),color:e.colors.text.secondary}),signature:(0,p.css)({fontSize:e.typography.bodySmall.fontSize,fontFamily:e.typography.fontFamilyMonospace}),dropdown:(0,p.css)({opacity:0,color:e.colors.text.secondary})});function er(e,a){var r;return(0,vt.G)(e.explainHandler?e.explainHandler(a,e):(r=e.documentation)!=null?r:"no docs")}var tr=Object.defineProperty,ar=Object.defineProperties,rr=Object.getOwnPropertyDescriptors,xt=Object.getOwnPropertySymbols,nr=Object.prototype.hasOwnProperty,sr=Object.prototype.propertyIsEnumerable,Ct=(e,a,r)=>a in e?tr(e,a,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[a]=r,ze=(e,a)=>{for(var r in a||(a={}))nr.call(a,r)&&Ct(e,r,a[r]);if(xt)for(var r of xt(a))sr.call(a,r)&&Ct(e,r,a[r]);return e},wt=(e,a)=>ar(e,rr(a));const Pt=t.memo(({operation:e,definition:a,index:r,onChange:n,onRemove:l,queryModeller:s,dragHandleProps:c})=>{var u;const o=(0,F.of)(lr),[i,v]=(0,t.useState)({}),m=()=>{if(i.isOpen)v(wt(ze({},i),{isOpen:!1}));else{const g=s.getAlternativeOperations(a.alternativesKey).map(y=>({label:y.name,value:y}));v({isOpen:!0,alternatives:g})}};return t.createElement("div",{className:o.header},!i.isOpen&&t.createElement(t.Fragment,null,t.createElement("div",ze({},c),(u=a.name)!=null?u:a.id),t.createElement(xe.Z,{grow:1}),t.createElement("div",{className:`${o.operationHeaderButtons} operation-header-show-on-hover`},t.createElement(k.$n,{icon:"angle-down",size:"sm",onClick:m,fill:"text",variant:"secondary",title:"Click to view alternative operations"}),t.createElement(Ot,{definition:a,operation:e,innerQueryPlaceholder:s.innerQueryPlaceholder}),t.createElement(k.$n,{icon:"times",size:"sm",onClick:()=>l(r),fill:"text",variant:"secondary",title:"Remove operation"}))),i.isOpen&&t.createElement("div",{className:o.selectWrapper},t.createElement(Y.l6,{autoFocus:!0,openMenuOnFocus:!0,placeholder:"Replace with",options:i.alternatives,isOpen:!0,onCloseMenu:m,onChange:g=>{if(g.value){const y=s.getOperationDefinition(g.value.id),C=[...y.defaultParams];for(let O=0;O
({header:(0,p.css)({borderBottom:`1px solid ${e.colors.border.medium}`,padding:e.spacing(.5,.5,.5,1),display:"flex",alignItems:"center"}),operationHeaderButtons:(0,p.css)({opacity:1}),selectWrapper:(0,p.css)({paddingRight:e.spacing(2)})});var ce=d(51440),or=d(10880);function ir(e){if(e.editor)return e.editor;if(e.options)return dr;switch(e.type){case"boolean":return ur;case"number":case"string":default:return cr}}function cr(e){var a;return t.createElement(ce.D,{id:Te(e.operationId,e.index),defaultValue:(a=e.value)==null?void 0:a.toString(),minWidth:e.paramDef.minWidth,placeholder:e.paramDef.placeholder,title:e.paramDef.description,maxWidth:(e.paramDef.minWidth||20)*3,onCommitChange:r=>{e.onChange(e.index,r.currentTarget.value),e.paramDef.runQueryOnEnter&&r.type==="keydown"&&e.onRunQuery()}})}function ur(e){return t.createElement(or.S,{id:Te(e.operationId,e.index),value:!!e.value,onChange:a=>e.onChange(e.index,a.currentTarget.checked)})}function dr({paramDef:e,value:a,index:r,operationId:n,onChange:l}){var s,c;const u=(0,F.of)(pr);let o=e.options;(s=o[0])!=null&&s.label||(o=e.options.map(v=>({label:v.toString(),value:v})));let i=(c=o.find(v=>v.value===a))!=null?c:(0,ne.z)(a);return!a&&e.optional?t.createElement("div",{className:u.optionalParam},t.createElement(k.$n,{size:"sm",variant:"secondary",title:`Add ${e.name}`,icon:"plus",onClick:()=>l(r,o[0].value)},e.name)):t.createElement(X.B,{gap:.5,direction:"row",alignItems:"center"},t.createElement(Y.l6,{id:Te(n,r),value:i,options:o,placeholder:e.placeholder,allowCustomValue:!0,onChange:v=>l(r,v.value),width:e.minWidth||"auto"}),e.optional&&t.createElement(k.$n,{"data-testid":`operations.${r}.remove-param`,size:"sm",fill:"text",icon:"times",variant:"secondary",title:`Remove ${e.name}`,onClick:()=>l(r,"")}))}const pr=e=>({optionalParam:(0,p.css)({marginTop:e.spacing(1)})});function Te(e,a){return`operations.${e}.param.${a}`}var mr=Object.defineProperty,gr=Object.defineProperties,fr=Object.getOwnPropertyDescriptors,Nt=Object.getOwnPropertySymbols,vr=Object.prototype.hasOwnProperty,hr=Object.prototype.propertyIsEnumerable,Tt=(e,a,r)=>a in e?mr(e,a,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[a]=r,$e=(e,a)=>{for(var r in a||(a={}))vr.call(a,r)&&Tt(e,r,a[r]);if(Nt)for(var r of Nt(a))hr.call(a,r)&&Tt(e,r,a[r]);return e},Ie=(e,a)=>gr(e,fr(a));function yr({provided:e,flash:a,isConflicting:r,highlight:n,index:l,queryModeller:s,onChange:c,onRemove:u,operation:o,definition:i,query:v,timeRange:m,onRunQuery:g,datasource:y}){const C=(0,F.$j)(),f=Er(C,r),O=br(a),{current:b}=(0,t.useRef)((0,pt.A)()),h=(E,w)=>{const L=Ie($e({},o),{params:[...o.params]});L.params[E]=w,He(i,L,l,E,c)},S=()=>{const E=Ie($e({},o),{params:[...o.params,""]});He(i,E,l,o.params.length,c)},x=E=>{const w=Ie($e({},o),{params:[...o.params.slice(0,E),...o.params.slice(E+1)]});He(i,w,l,E,c)};let R;if(i.params.length>0){const E=i.params[i.params.length-1];E.restParam&&(R=Lr(E,S,l,o.params.length,f))}return t.createElement("div",Ie($e({className:(0,p.cx)(f.card,(O||n)&&f.cardHighlight,r&&f.cardError),ref:e.innerRef},e.draggableProps),{"data-testid":`operations.${l}.wrapper`}),t.createElement(Pt,{operation:o,dragHandleProps:e.dragHandleProps,definition:i,index:l,onChange:c,onRemove:u,queryModeller:s}),t.createElement("div",{className:f.body},o.params.map((E,w)=>{const L=i.params[Math.min(i.params.length-1,w)],$=ir(L);return t.createElement("div",{className:f.paramRow,key:`${w}-1`},!L.hideName&&t.createElement("div",{className:f.paramName},t.createElement("label",{htmlFor:Te(b,w)},L.name),L.description&&t.createElement(Ee.m,{placement:"top",content:L.description,theme:"info"},t.createElement(Ne.I,{name:"info-circle",size:"sm",className:f.infoIcon}))),t.createElement("div",{className:f.paramValue},t.createElement(X.B,{gap:.5,direction:"row",alignItems:"center",wrap:!1},t.createElement($,{index:w,paramDef:L,value:o.params[w],operation:o,operationId:b,onChange:h,onRunQuery:g,query:v,datasource:y,timeRange:m,queryModeller:s}),L.restParam&&(o.params.length>i.params.length||L.optional)&&t.createElement(k.$n,{"data-testid":`operations.${l}.remove-rest-param`,size:"sm",fill:"text",icon:"times",variant:"secondary",title:`Remove ${L.name}`,onClick:()=>x(w)}))))})),R,l
({cardWrapper:(0,p.css)({alignItems:"stretch"}),error:(0,p.css)({marginBottom:e.spacing(1)}),card:(0,p.css)({background:e.colors.background.primary,border:`1px solid ${e.colors.border.medium}`,cursor:"grab",borderRadius:e.shape.radius.default,position:"relative",transition:"all 0.5s ease-in 0s",height:a?"auto":"100%"}),cardError:(0,p.css)({boxShadow:`0px 0px 4px 0px ${e.colors.warning.main}`,border:`1px solid ${e.colors.warning.main}`}),cardHighlight:(0,p.css)({boxShadow:`0px 0px 4px 0px ${e.colors.primary.border}`,border:`1px solid ${e.colors.primary.border}`}),infoIcon:(0,p.css)({marginLeft:e.spacing(.5),color:e.colors.text.secondary,":hover":{color:e.colors.text.primary}}),body:(0,p.css)({margin:e.spacing(1,1,.5,1),display:"table"}),paramRow:(0,p.css)({label:"paramRow",display:"table-row",verticalAlign:"middle"}),paramName:(0,p.css)({display:"table-cell",padding:e.spacing(0,1,0,0),fontSize:e.typography.bodySmall.fontSize,fontWeight:e.typography.fontWeightMedium,verticalAlign:"middle",height:"32px"}),paramValue:(0,p.css)({label:"paramValue",display:"table-cell",verticalAlign:"middle"}),restParam:(0,p.css)({padding:e.spacing(0,1,1,1)}),arrow:(0,p.css)({position:"absolute",top:"0",right:"-18px",display:"flex"}),arrowLine:(0,p.css)({height:"2px",width:"8px",backgroundColor:e.colors.border.strong,position:"relative",top:"14px"}),arrowArrow:(0,p.css)({width:0,height:0,borderTop:"5px solid transparent",borderBottom:"5px solid transparent",borderLeft:`7px solid ${e.colors.border.strong}`,position:"relative",top:"10px"})});function br(e){const[a,r]=(0,t.useState)(!0);return(0,t.useEffect)(()=>{let n;return e?n=setTimeout(()=>{r(!1)},1e3):r(!0),()=>clearTimeout(n)},[e]),a&&e}function He(e,a,r,n,l){e.paramChangedHandler?l(r,e.paramChangedHandler(n,a,e)):l(r,a)}function Lr(e,a,r,n,l){return t.createElement("div",{className:l.restParam,key:`${n}-2`},t.createElement(k.$n,{size:"sm",icon:"plus",title:`Add ${e.name}`.trimEnd(),variant:"secondary",onClick:a,"data-testid":`operations.${r}.add-rest-param`},e.name))}function Sr({operation:e,index:a,onRemove:r,onChange:n,onRunQuery:l,queryModeller:s,query:c,datasource:u,flash:o,highlight:i,timeRange:v,isConflictingOperation:m}){const g=s.getOperationDefinition(e.id),y=(0,F.$j)(),C=m?m(e,c.operations):!1,f=Or(y);if(!g)return t.createElement("span",null,"Operation ",e.id," not found");const O=b=>{if(!b)return C?!0:void 0};return t.createElement(Ue.sx,{draggableId:`operation-${a}`,index:a},(b,h)=>t.createElement(se.I,{error:"You have conflicting label filters",invalid:O(h.isDragging),className:(0,p.cx)(f.error,f.cardWrapper)},t.createElement(yr,{provided:b,flash:o,highlight:i,isConflicting:C,index:a,operation:e,definition:g,onChange:n,onRemove:r,queryModeller:s,query:c,timeRange:v,onRunQuery:l,datasource:u})))}const Or=(e,a)=>({cardWrapper:(0,p.css)({alignItems:"stretch"}),error:(0,p.css)({marginBottom:e.spacing(1)})});var xr=Object.defineProperty,Cr=Object.defineProperties,wr=Object.getOwnPropertyDescriptors,$t=Object.getOwnPropertySymbols,Pr=Object.prototype.hasOwnProperty,Nr=Object.prototype.propertyIsEnumerable,It=(e,a,r)=>a in e?xr(e,a,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[a]=r,Re=(e,a)=>{for(var r in a||(a={}))Pr.call(a,r)&&It(e,r,a[r]);if($t)for(var r of $t(a))Nr.call(a,r)&&It(e,r,a[r]);return e},We=(e,a)=>Cr(e,wr(a));function Tr({query:e,datasource:a,queryModeller:r,onChange:n,onRunQuery:l,highlightedOp:s,timeRange:c,isConflictingOperation:u}){const o=(0,F.of)(Rr),{operations:i}=e,v=$r(i),[m,g]=(0,t.useState)(!1),y=(S,x)=>{const R=[...i];R.splice(S,1,x),n(We(Re({},e),{operations:R}))},C=S=>{const x=[...i.slice(0,S),...i.slice(S+1)];n(We(Re({},e),{operations:x}))},f=r.getCategories().map(S=>({value:S,label:S,items:r.getOperationsForCategory(S).map(x=>({value:x.id,label:x.name,isLeaf:!0}))})),O=S=>{const x=r.getOperationDefinition(S);x&&(n(x.addOperationHandler(x,e,r)),g(!1))},b=S=>{if(!S.destination)return;const x=[...i],R=x[S.source.index];x.splice(S.source.index,1),x.splice(S.destination.index,0,R),n(We(Re({},e),{operations:x}))},h=()=>{g(!1)};return t.createElement(X.B,{gap:1,direction:"column"},t.createElement(X.B,{gap:1},i.length>0&&t.createElement(Ue.JY,{onDragEnd:b},t.createElement(Ue.gL,{droppableId:"sortable-field-mappings",direction:"horizontal"},S=>t.createElement("div",Re({className:o.operationList,ref:S.innerRef},S.droppableProps),i.map((x,R)=>t.createElement(Sr,{key:x.id+JSON.stringify(x.params)+R,queryModeller:r,index:R,operation:x,query:e,datasource:a,onChange:y,onRemove:C,onRunQuery:l,flash:v[R],highlight:s===x,timeRange:c,isConflictingOperation:u})),S.placeholder))),t.createElement("div",{className:o.addButton},m?t.createElement(Qa.v,{options:f,onSelect:O,onBlur:h,autoFocus:!0,alwaysOpen:!0,hideActiveLevelLabel:!0,placeholder:"Search"}):t.createElement(k.$n,{icon:"plus",variant:"secondary",onClick:()=>g(!0),title:"Add operation"},"Operations"))))}function $r(e){const a=(0,Fa.A)(),r=(0,N.A)(e);if(!a())return e.map(()=>!1);if(!r)return e.map(()=>!0);let n=[];if(r.length-1===e.length&&e.every(l=>r.includes(l)))return e.map(()=>!1);if(r.length+1===e.length&&r.every(l=>e.includes(l))){const l=e.find(s=>!r.includes(s));n=e.map(s=>s===l)}else n=e.map((l,s)=>{var c;return!Ir(l.id,(c=r[s])==null?void 0:c.id)});return n}function Ir(e,a){return e===a||`__${e}_by`===a||e===`__${a}_by`}const Rr=e=>({heading:(0,p.css)({label:"heading",fontSize:12,fontWeight:e.typography.fontWeightMedium,marginBottom:0}),operationList:(0,p.css)({label:"operationList",display:"flex",flexWrap:"wrap",gap:e.spacing(2)}),addButton:(0,p.css)({label:"addButton",width:126,paddingBottom:e.spacing(1)})}),Rt=({datasource:e,query:a,onChange:r,data:n,queryModeller:l,buildVisualQueryFromString:s,buildDataQueryFromQueryString:c,buildQueryStringFromDataQuery:u})=>{const[o,i]=(0,t.useState)([]),v=(0,F.of)(Dr);return(0,t.useEffect)(()=>{var m;const g=c(l.renderQuery(a)),y=(m=e.getQueryHints)==null?void 0:m.call(e,g,n?.series||[]).filter(C=>{var f;return(f=C.fix)==null?void 0:f.action});i(y??[])},[e,a,n,l,c]),t.createElement(t.Fragment,null,o.length>0&&t.createElement("div",{className:v.container},o.map(m=>{var g,y,C,f;return t.createElement(Ee.m,{content:`${m.label} ${(g=m.fix)==null?void 0:g.label}`,key:m.type},t.createElement(k.$n,{onClick:()=>{var O,b,h;if((0,M.rR)("grafana_query_builder_hints_clicked",{hint:m.type,datasourceType:e.type}),(O=m?.fix)!=null&&O.action){const S=c(l.renderQuery(a)),x=(b=e.modifyQuery)==null?void 0:b.call(e,S,m.fix.action);if(x){const R=s((h=u(x))!=null?h:"");return r(R.query)}}},fill:"outline",size:"sm",className:v.hint},"hint: ",((y=m.fix)==null?void 0:y.title)||((f=(C=m.fix)==null?void 0:C.action)==null?void 0:f.type.toLowerCase().replace("_"," "))))})))};Rt.displayName="QueryBuilderHints";const Dr=e=>({container:(0,p.css)` display: flex; align-items: start; `,hint:(0,p.css)` margin-right: ${e.spacing(1)}; `});function Dt({query:e,queryModeller:a,stepNumber:r,language:n,onMouseEnter:l,onMouseLeave:s}){return t.createElement(t.Fragment,null,e.operations.map((c,u)=>{var o;const i=a.getOperationDefinition(c.id);if(!i)return`Operation ${c.id} not found`;const v=i.renderer(c,i,a.innerQueryPlaceholder),m=i.explainHandler?i.explainHandler(c,i):(o=i.documentation)!=null?o:"no docs";return t.createElement("div",{key:u,onMouseEnter:()=>l?.(c,u),onMouseLeave:()=>s?.(c,u)},t.createElement(je,{stepNumber:u+r,title:t.createElement(ye.Z,{query:v,language:n}),markdown:m}))}))}var De=d(71713),kr=d(11216),Ge=d(54623);const kt="Fetch all log lines matching label filters.",Bt=t.memo(({query:e})=>{const a=(0,ae.u_)(e||"").query,r={grammar:De.vB,name:"lokiql"};return t.createElement(Ce.B,{gap:0,direction:"column"},t.createElement(je,{stepNumber:1,title:t.createElement(ye.Z,{query:`${H.y.renderLabels(a.labels)}`,language:r})},kt),t.createElement(Dt,{stepNumber:2,queryModeller:H.y,query:a,language:r}))});Bt.displayName="LokiQueryBuilderExplained";var Mt=d(29158),Br=d(58592);const Ft=t.memo(({nestedQuery:e,index:a,datasource:r,onChange:n,onRemove:l,onRunQuery:s,showExplain:c})=>{const u=(0,F.of)(Fr);return t.createElement("div",{className:u.card},t.createElement("div",{className:u.header},t.createElement("div",{className:u.name},"Operator"),t.createElement(Y.l6,{"aria-label":"Select operator",width:"auto",options:Mr,value:(0,ne.z)(e.operator),onChange:o=>{n(a,{...e,operator:o.value})}}),t.createElement("div",{className:u.name},"Vector matches"),t.createElement("div",{className:u.vectorMatchWrapper},t.createElement(Y.l6,{width:"auto",value:e.vectorMatchesType||"on",allowCustomValue:!0,options:[{value:"on",label:"on"},{value:"ignoring",label:"ignoring"}],onChange:o=>{n(a,{...e,vectorMatchesType:o.value})}}),t.createElement(ce.D,{className:u.vectorMatchInput,minWidth:20,defaultValue:e.vectorMatches,onCommitChange:o=>{n(a,{...e,vectorMatches:o.currentTarget.value,vectorMatchesType:e.vectorMatchesType||"on"})}})),t.createElement(xe.Z,{grow:1}),t.createElement(Mt.K,{name:"times",size:"sm",onClick:()=>l(a),tooltip:"Remove nested query"})),t.createElement("div",{className:u.body},t.createElement(ot.D,null,t.createElement(Ke,{showExplain:c,query:e.query,datasource:r,onRunQuery:s,onChange:o=>{n(a,{...e,query:o})}}))))}),Mr=Br.C.map(e=>({label:e.sign,value:e.sign}));Ft.displayName="NestedQuery";const Fr=e=>({card:(0,p.css)({label:"card",display:"flex",flexDirection:"column",gap:e.spacing(.5)}),header:(0,p.css)({label:"header",padding:e.spacing(.5,.5,.5,1),gap:e.spacing(1),display:"flex",alignItems:"center"}),name:(0,p.css)({label:"name",whiteSpace:"nowrap"}),body:(0,p.css)({label:"body",paddingLeft:e.spacing(2)}),vectorMatchInput:(0,p.css)({label:"vectorMatchInput",marginLeft:-1}),vectorMatchWrapper:(0,p.css)({label:"vectorMatchWrapper",display:"flex"})});function Qr({query:e,datasource:a,onChange:r,onRunQuery:n,showExplain:l}){const s=e.binaryQueries??[],c=(o,i)=>{const v=[...s];v.splice(o,1,i),r({...e,binaryQueries:v})},u=o=>{const i=[...s.slice(0,o),...s.slice(o+1)];r({...e,binaryQueries:i})};return t.createElement(Ce.B,{direction:"column",gap:1},s.map((o,i)=>t.createElement(Ft,{key:i.toString(),nestedQuery:o,index:i,onChange:c,datasource:a,onRemove:u,onRunQuery:n,showExplain:l})))}const Qt=5*60*1e3,Ke=t.memo(({datasource:e,query:a,onChange:r,onRunQuery:n,showExplain:l,timeRange:s})=>{const[c,u]=(0,t.useState)(),[o,i]=(0,t.useState)(void 0),v=(0,N.A)(a),m=(0,N.A)(s),g=h=>{r({...a,labels:h})},y=async h=>{const S=await h;return[...e.getVariables(),...S].map(x=>({label:x,value:x}))},C=async h=>{const S=a.labels.filter($=>$!==h),x=S.find($=>$.op==="="||$.op==="=~"&&new RegExp($.value).test("")===!1);if(S.length===0||!x)return await e.languageProvider.fetchLabels({timeRange:s});const R=H.y.renderLabels(S),E=await e.languageProvider.fetchSeriesLabels(R,{timeRange:s}),w=S.map($=>$.label);return Object.keys(E).filter($=>!w.includes($)).sort()},f=async h=>{if(!h.label)return[];let S;const x=a.labels.filter(E=>E!==h),R=x.find(E=>E.op==="="||E.op==="=~"&&new RegExp(E.value).test("")===!1);if(x.length===0||!R)S=await e.languageProvider.fetchLabelValues(h.label,{timeRange:s});else{const E=H.y.renderLabels(x);S=(await e.languageProvider.fetchSeriesLabels(E,{timeRange:s}))[e.interpolateString(h.label)]}return S?S.map(E=>(0,D.Bb)(E,h.op)):[]},O=(0,t.useMemo)(()=>{const{labels:h,operations:S}=a;return!h.length&&S.length?!(S.length===1&&S[0].id===Ge.EF.LineContains&&S[0].params[0]===""):!1},[a]);(0,t.useEffect)(()=>{const h=async()=>{const R={expr:H.y.renderQuery(a),refId:"data-samples"},E=s??(0,ba.E2)(),L={series:await e.getDataSamples(R,E),state:U.Gu.Done,timeRange:E};u(L)},S=m&&s&&(Math.abs(s.to.valueOf()-m.to.valueOf())>Qt||Math.abs(s.from.valueOf()-m.from.valueOf())>Qt),x=!(0,V.isEqual)(v,a);q.$.featureToggles.lokiQueryHints&&(S||x)&&h().catch(console.error)},[e,a,s,v,m]);const b={grammar:De.Ay,name:"logql"};return t.createElement("div",{"data-testid":Xe.editor},t.createElement(Ve.U,null,t.createElement(Da,{onGetLabelNames:h=>y(C(h)),onGetLabelValues:h=>y(f(h)),labelsFilters:a.labels,onChange:g,labelFilterRequired:O})),l&&t.createElement(je,{stepNumber:1,title:t.createElement(ye.Z,{query:`${H.y.renderLabels(a.labels)}`,language:b})},kt),t.createElement(Ba,null,t.createElement(Tr,{queryModeller:H.y,query:a,onChange:r,onRunQuery:n,datasource:e,highlightedOp:o,isConflictingOperation:(h,S)=>h.id===Ge.EF.LabelFilter&&(0,kr.hh)(h,S)}),t.createElement(Rt,{datasource:e,query:a,onChange:r,data:c,queryModeller:H.y,buildVisualQueryFromString:ae.u_,buildDataQueryFromQueryString:h=>({expr:h,refId:"hints"}),buildQueryStringFromDataQuery:h=>h.expr})),l&&t.createElement(Dt,{stepNumber:2,queryModeller:H.y,query:a,language:b,onMouseEnter:h=>{i(h)},onMouseLeave:()=>{i(void 0)}}),a.binaryQueries&&a.binaryQueries.length>0&&t.createElement(Qr,{query:a,datasource:e,onChange:r,onRunQuery:n,showExplain:l}))});Ke.displayName="LokiQueryBuilder";function Ar({query:e}){return t.createElement(Ve.U,null,t.createElement(dt.B,null,t.createElement(ye.Z,{query:e,language:{grammar:De.vB,name:"lokiql"}})))}function Vr(e){const{query:a,onChange:r,onRunQuery:n,datasource:l,showExplain:s,timeRange:c}=e,[u,o]=(0,t.useReducer)(At.reducer,{expr:a.expr,visQuery:a.expr===""?{labels:[],operations:[{id:"__line_contains",params:[""]}]}:void 0});(0,t.useEffect)(()=>{o(zr(a.expr))},[a.expr]);const i=v=>{const m=H.y.renderQuery(v);o(Ur({visQuery:v,expr:m})),r({...e.query,expr:m})};return u.visQuery?t.createElement(t.Fragment,null,t.createElement(Ke,{query:u.visQuery,datasource:l,onChange:i,onRunQuery:n,showExplain:s,"data-testid":Xe.editor,timeRange:c}),a.expr!==""&&t.createElement(Ar,{query:a.expr})):null}const jr={expr:""},At=(0,Ea.Z0)({name:"loki-builder-container",initialState:jr,reducers:{visualQueryChange:(e,a)=>{e.expr=a.payload.expr,e.visQuery=a.payload.visQuery},exprChanged:(e,a)=>{if(!e.visQuery||e.expr!==a.payload){e.expr=a.payload;const r=(0,ae.u_)(a.payload);e.visQuery=r.query}}}}),{visualQueryChange:Ur,exprChanged:zr}=At.actions;var Vt=d(70416),Hr=d(42941),Wr=d(83195),jt=d(82762);function Gr({title:e,children:a,collapsedInfo:r,queryStats:n}){const[l,s]=(0,Hr.A)(!1),c=(0,F.of)(Kr);return t.createElement("div",{className:c.wrapper},t.createElement(jt.S,{className:c.collapse,collapsible:!0,isOpen:l,onToggle:s,label:t.createElement(X.B,{gap:0},t.createElement("h6",{className:c.title},e),!l&&t.createElement("div",{className:c.description},r.map((u,o)=>t.createElement("span",{key:o},u))))},t.createElement("div",{className:c.body},a)),n&&q.$.featureToggles.lokiQuerySplitting&&t.createElement(Ee.m,{content:"Note: the query will be split into multiple parts and executed in sequence. Query limits will only apply each individual part."},t.createElement(Ne.I,{tabIndex:0,name:"info-circle",className:c.tooltip,size:"sm"})),n&&t.createElement("p",{className:c.stats},Jr(n)))}const Kr=e=>({collapse:(0,p.css)({backgroundColor:"unset",border:"unset",marginBottom:0,["> button"]:{padding:e.spacing(0,1)}}),wrapper:(0,p.css)({width:"100%",display:"flex",justifyContent:"space-between",alignItems:"baseline"}),title:(0,p.css)({flexGrow:1,overflow:"hidden",fontSize:e.typography.bodySmall.fontSize,fontWeight:e.typography.fontWeightMedium,margin:0}),description:(0,p.css)({color:e.colors.text.secondary,fontSize:e.typography.bodySmall.fontSize,fontWeight:e.typography.bodySmall.fontWeight,paddingLeft:e.spacing(2),gap:e.spacing(2),display:"flex"}),body:(0,p.css)({display:"flex",gap:e.spacing(2),flexWrap:"wrap"}),stats:(0,p.css)({margin:"0px",color:e.colors.text.secondary,fontSize:e.typography.bodySmall.fontSize}),tooltip:(0,p.css)({marginRight:e.spacing(.25)})}),Jr=e=>e.message?e.message:`This query will process approximately ${Zr(e)}.`,Zr=e=>{const{text:a,suffix:r}=(0,Wr.j_)("bytes")(e.bytes,1);return a+r};var Xr=d(42418),be=d(60016),Je=d(56587);const Ut=t.memo(({app:e,query:a,onChange:r,onRunQuery:n,maxLines:l,queryStats:s})=>{const[c,u]=(0,t.useState)(!0),o=b=>{r({...a,queryType:b}),n()},i=b=>{(0,M.rR)("grafana_loki_resolution_clicked",{app:e,resolution:b.value}),r({...a,resolution:b.value}),n()},v=b=>{const h=b.currentTarget.value;if(!(0,Vt.di)(h)){u(!1);return}u(!0),r({...a,splitDuration:h}),n()},m=b=>{r({...a,legendFormat:b.currentTarget.value}),n()};function g(b){const h=(0,be.wU)(b.currentTarget.value);a.maxLines!==h&&(r({...a,maxLines:h}),n())}function y(b){r({...a,step:(0,V.trim)(b.currentTarget.value)}),n()}const C=(0,Je.Io)(a),f=(0,Je.sI)(a.expr),O=(0,t.useMemo)(()=>!!(!a.step||(0,Vt.V3)(a.step)||!isNaN(Number(a.step))),[a.step]);return t.createElement(Ve.U,null,t.createElement(Gr,{title:"Options",collapsedInfo:Yr(a,C,l,f,O),queryStats:s},t.createElement(re.c,{label:"Legend",tooltip:"Series name override or template. Ex. {{hostname}} will be replaced with label value for hostname."},t.createElement(ce.D,{placeholder:"{{label}}",type:"string",minWidth:14,defaultValue:a.legendFormat,onCommitChange:m})),t.createElement(re.c,{label:"Type"},t.createElement(lt.z,{options:be.TO,value:C,onChange:o})),f&&t.createElement(re.c,{label:"Line limit",tooltip:"Upper limit for number of log lines returned by query."},t.createElement(ce.D,{className:"width-4",placeholder:l.toString(),type:"number",min:0,defaultValue:a.maxLines?.toString()??"",onCommitChange:g})),!f&&t.createElement(t.Fragment,null,t.createElement(re.c,{label:"Step",tooltip:"Use the step parameter when making metric queries to Loki. If not filled, Grafana's calculated interval will be used. Example valid values: 1s, 5m, 10h, 1d.",invalid:!O,error:"Invalid step. Example valid values: 1s, 5m, 10h, 1d."},t.createElement(ce.D,{className:"width-6",placeholder:"auto",type:"string",defaultValue:a.step??"",onCommitChange:y})),a.resolution!==void 0&&a.resolution>1&&t.createElement(t.Fragment,null,t.createElement(re.c,{label:"Resolution",tooltip:"Changes the step parameter of Loki metrics range queries. With a resolution of 1/1, each pixel corresponds to one data point. 1/10 retrieves one data point per 10 pixels. Lower resolutions perform better."},t.createElement(Y.l6,{isSearchable:!1,onChange:i,options:be.iB,value:a.resolution||1,"aria-label":"Select resolution"})),t.createElement(Xr.F,{severity:"warning",title:"The 'Resolution' is deprecated. Use 'Step' editor instead to change step parameter."}))),q.$.featureToggles.lokiQuerySplittingConfig&&q.$.featureToggles.lokiQuerySplitting&&t.createElement(re.c,{label:"Split Duration",tooltip:"Defines the duration of a single query when query splitting is enabled."},t.createElement(ce.D,{minWidth:14,type:"string",min:0,defaultValue:a.splitDuration??"1d",onCommitChange:v,invalid:!c}))))});function Yr(e,a,r,n,l){const s=be.TO.find(o=>o.value===a),c=be.iB.find(o=>o.value===(e.resolution??1)),u=[];return e.legendFormat&&u.push(`Legend: ${e.legendFormat}`),u.push(`Type: ${s?.label}`),n&&u.push(`Line limit: ${e.maxLines??r}`),n||(e.step&&u.push(`Step: ${l?e.step:"Invalid value"}`),e.resolution&&u.push(`Resolution: ${c?.label}`)),u}Ut.displayName="LokiQueryBuilderOptions";var zt=d(95881);function qr({query:e,datasource:a,range:r,onRunQuery:n,onChange:l,data:s,app:c,showExplain:u,history:o}){const i=(0,F.of)(_r),v=q.$.featureToggles.lokiFormatQuery,m=async()=>l({...e,expr:(0,Je.hZ)(e.expr,a)});return t.createElement("div",{className:i.wrapper},t.createElement(zt.W,{datasource:a,query:e,range:r,onRunQuery:n,onChange:l,history:o,data:s,app:c,"data-testid":Xe.editor,ExtraFieldElement:t.createElement(t.Fragment,null,v&&t.createElement("div",{className:i.buttonGroup},t.createElement("div",null,t.createElement(ut.Gy,{spacing:"sm"},t.createElement(Mt.K,{onClick:m,name:"brackets-curly",size:"xs",tooltip:"Format query"}),t.createElement(Ee.m,{content:"Use ctrl/cmd + z to undo"},t.createElement(Ne.I,{className:i.hint,name:"keyboard"}))))))}),u&&t.createElement(Bt,{query:e.expr}))}const _r=e=>({wrapper:(0,p.css)` max-width: 100%; .gf-form { margin-bottom: 0.5; } `,buttonGroup:(0,p.css)` border: 1px solid ${e.colors.border.medium}; border-top: none; padding: ${e.spacing(.5,.5,.5,.5)}; margin-bottom: ${e.spacing(.5)}; display: flex; flex-grow: 1; justify-content: end; font-size: ${e.typography.bodySmall.fontSize}; `,hint:(0,p.css)` color: ${e.colors.text.disabled}; white-space: nowrap; cursor: help; `});var en=d(77789),Ze=d(10860);const tn=e=>{const{pattern:a,onPatternSelect:r,hasNewQueryOption:n,hasPreviousQuery:l,selectedPatternName:s,setSelectedPatternName:c}=e,u=(0,F.of)(an),o={grammar:De.Ay,name:"logql"};return t.createElement(Ze.Z,{className:u.card},t.createElement(Ze.Z.Heading,null,a.name),t.createElement("div",{className:u.rawQueryContainer},t.createElement(ye.Z,{query:H.y.renderQuery({labels:[],operations:a.operations}),language:o,className:u.rawQuery})),t.createElement(Ze.Z.Actions,null,s!==a.name?t.createElement(k.$n,{size:"sm",onClick:()=>{l?c(a.name):r(a)}},"Use this query"):t.createElement(t.Fragment,null,t.createElement("div",{className:u.spacing},`If you would like to use this query, ${n?"you can either replace your current query or create a new query":"your current query will be replaced"}.`),t.createElement(k.$n,{size:"sm",fill:"outline",onClick:()=>c(null)},"Back"),t.createElement(k.$n,{size:"sm",onClick:()=>{r(a)}},"Replace query"),n&&t.createElement(k.$n,{size:"sm",onClick:()=>{r(a,!0)}},"Create new query"))))},an=e=>({card:(0,p.css)` width: 49.5%; display: flex; flex-direction: column; `,rawQueryContainer:(0,p.css)` flex-grow: 1; `,rawQuery:(0,p.css)` background-color: ${e.colors.background.primary}; padding: ${e.spacing(1)}; margin-top: ${e.spacing(1)}; `,spacing:(0,p.css)` margin-bottom: ${e.spacing(1)}; `}),rn=e=>{const{isOpen:a,onClose:r,onChange:n,onAddQuery:l,query:s,queries:c,app:u}=e,[o,i]=(0,t.useState)([]),[v,m]=(0,t.useState)(null),g=(0,F.of)(nn),y=!!l,C=(0,t.useMemo)(()=>(0,ae.u_)(s.expr).query.operations.length>0,[s.expr]),f=(O,b=!1)=>{const h=(0,ae.u_)(b?"":s.expr);(0,M.rR)("grafana_loki_query_patterns_selected",{version:"v2",app:u??"",editorMode:s.editorMode,selectedPattern:O.name,preSelectedOperationsCount:h.query.operations.length,preSelectedLabelsCount:h.query.labels.length,createNewQuery:y&&b}),h.query.operations=O.operations,y&&b?l({...s,refId:(0,en.M)(c??[s]),expr:H.y.renderQuery(h.query)}):n({...s,expr:H.y.renderQuery(h.query)}),m(null),r()};return t.createElement(it.a,{isOpen:a,title:"Kick start your query",onDismiss:r,className:g.modal},t.createElement("div",{className:g.spacing},"Kick start your query by selecting one of these queries. You can then continue to complete your query."),Object.values(Ge.IQ).map(O=>t.createElement(jt.S,{key:O,label:`${(0,V.capitalize)(O)} query starters`,isOpen:o.includes(O),collapsible:!0,onToggle:()=>i(b=>b.includes(O)?b.filter(h=>h!==O):[...b,O])},t.createElement("div",{className:g.cardsContainer},H.y.getQueryPatterns().filter(b=>b.type===O).map(b=>t.createElement(tn,{key:b.name,pattern:b,hasNewQueryOption:y,hasPreviousQuery:C,onPatternSelect:f,selectedPatternName:v,setSelectedPatternName:m}))))),t.createElement(k.$n,{variant:"secondary",onClick:r},"Close"))},nn=e=>({cardsContainer:(0,p.css)` display: flex; flex-direction: row; flex-wrap: wrap; justify-content: space-between; `,spacing:(0,p.css)` margin-bottom: ${e.spacing(1)}; `,modal:(0,p.css)` width: 85vw; ${e.breakpoints.down("md")} { width: 100%; } `});var sn=d(43269);const Ht="LokiQueryEditorModeDefault";function ln(e,a,r){e.expr===""&&window.localStorage.setItem(Ht,a),r({...e,editorMode:a})}function on(e){if(e!=null&&e!=="")return T.f.Code;switch(window.localStorage.getItem(Ht)){case"code":return T.f.Code;case"builder":default:return T.f.Builder}}function cn(e){let a=e;return e.editorMode||(a={...e,editorMode:on(e.expr)}),e.expr==null&&(a={...a,expr:""}),e.queryType==null&&(a={...a,queryType:sn.U3.Range}),a}var un=d(47232);function Wt(e,a){return!e||!a?!1:(0,un.Ar)(e)?e.isSame(a):e===a}function dn(e,a,r,n,l,s){return a===void 0||e.trim()!==a.trim()||l!==s?!0:!(Wt(r?.raw.from,n?.raw.from)&&Wt(r?.raw.to,n?.raw.to))}const Xe={editor:"loki-editor"},Gt="LokiQueryEditorExplainDefault",Kt=t.memo(e=>{const a=(0,t.useId)(),{onChange:r,onRunQuery:n,onAddQuery:l,data:s,app:c,queries:u,datasource:o,range:i}=e,[v,m]=(0,t.useState)(!1),[g,y]=(0,t.useState)(!1),[C,f]=(0,t.useState)(!1),[O,b]=(0,t.useState)(!1),[h,S]=(0,t.useState)(null),[x,R]=(0,t.useState)(window.localStorage.getItem(Gt)==="true"),E=o.predefinedOperations,w=(0,N.A)(i),L=cn(e.query);q.$.featureToggles.lokiPredefinedOperations&&!L.expr&&E&&(L.expr=`{} ${E}`);const $=(0,N.A)(L.expr),Q=(0,N.A)(L.queryType),G=L.editorMode,Be=P=>{window.localStorage.setItem(Gt,P.currentTarget.checked?"true":"false"),R(P.currentTarget.checked)},tt=(0,t.useCallback)(P=>{if((0,M.rR)("grafana_loki_editor_mode_clicked",{newEditor:P,previousEditor:L.editorMode??"",newQuery:!L.expr,app:c??""}),P===T.f.Builder&&(0,ae.u_)(L.expr||"").errors.length){m(!0);return}ln(L,P,r)},[r,L,c]);(0,t.useEffect)(()=>{f(!1)},[s]);const Le=P=>{(0,V.isEqual)(P,e.query)||f(!0),r(P)},B=()=>{(0,M.rR)("grafana_loki_label_browser_opened",{app:c}),b(P=>!P)};return(0,t.useEffect)(()=>{dn(L.expr,$,i,w,L.queryType,Q)&&i&&(async()=>{const ue=await o.getStats({...L,refId:`${a}_${L.refId}`},i);S(ue)})()},[o,i,w,L,$,Q,S,a]),t.createElement(t.Fragment,null,t.createElement(la.u,{isOpen:v,title:"Query parsing",body:"There were errors while trying to parse the query. Continuing to visual builder may lose some parts of the query.",confirmText:"Continue",onConfirm:()=>{r({...L,editorMode:T.f.Builder}),m(!1)},onDismiss:()=>m(!1)}),t.createElement(rn,{isOpen:g,onClose:()=>y(!1),query:L,queries:u,app:c,onChange:r,onAddQuery:l}),t.createElement(ha,{isOpen:O,datasource:o,query:L,app:c,onClose:()=>b(!1),onChange:Le,onRunQuery:n,timeRange:i}),t.createElement(A.X,null,t.createElement(Ce.B,{gap:1},t.createElement(k.$n,{"data-testid":W.Tp.components.QueryBuilder.queryPatterns,variant:"secondary",size:"sm",onClick:()=>{y(z=>!z);const P=(0,ae.u_)(L.expr||"");(0,M.rR)("grafana_loki_query_patterns_opened",{version:"v2",app:c??"",editorMode:L.editorMode,preSelectedOperationsCount:P.query.operations.length,preSelectedLabelsCount:P.query.labels.length})}},"Kick start your query"),t.createElement(k.$n,{variant:"secondary",size:"sm",onClick:B,"data-testid":"label-browser-button"},"Label browser")),t.createElement(aa,{label:"Explain query",value:x,onChange:Be}),t.createElement(xe.Z,{grow:1}),c!==I.Jk.Explore&&c!==I.Jk.Correlations&&t.createElement(k.$n,{variant:C?"primary":"secondary",size:"sm",onClick:n,icon:s?.state===U.Gu.Loading?"spinner":void 0,disabled:s?.state===U.Gu.Loading},u&&u.length>1?"Run queries":"Run query"),t.createElement(sa,{mode:G,onChange:tt})),t.createElement(oa.$,{v:.5}),t.createElement(ot.D,null,G===T.f.Code&&t.createElement(qr,{...e,query:L,onChange:Le,showExplain:x}),G===T.f.Builder&&t.createElement(Vr,{datasource:e.datasource,query:L,onChange:Le,onRunQuery:e.onRunQuery,showExplain:x,timeRange:i}),t.createElement(Ut,{query:L,onChange:r,onRunQuery:n,app:c,maxLines:o.maxLines,queryStats:h})))});Kt.displayName="LokiQueryEditor";function pn(e){const{query:a,data:r,datasource:n,onChange:l,onRunQuery:s,history:c}=e;return t.createElement(zt.W,{datasource:n,query:a,onChange:l,onRunQuery:s,history:c,data:r,placeholder:"Enter a Loki query","data-testid":mn.editor})}const mn={editor:"loki-editor-cloud-alerting"};function gn(e){const{app:a}=e;switch(a){case I.Jk.CloudAlerting:return t.createElement(pn,{...e});default:return t.createElement(Kt,{...e})}}const fn=(0,t.memo)(gn),Kn={editor:"loki-editor"};var vn=d(68704),hn=d(77657),yn=d(17466),En=d(66025),bn=d(91062),Ln=d(32346),Ye=d(25994),Sn=d(17081),qe=d(29020),_e=d(35931);function On({options:e,onOptionsChange:a}){return t.createElement(qe.I,{title:"Alerting",description:t.createElement(_e.H,{description:"Manage alert rules for the Loki data source.",suffix:"loki/configure-loki-data-source/#alerting",feature:"alerting"})},t.createElement(se.I,{labelWidth:29,label:"Manage alert rules in Alerting UI",disabled:e.readOnly,tooltip:"Manage alert rules for this data source. To manage other alerting resources, add an Alertmanager data source."},t.createElement(ge.K,{value:e.jsonData.manageAlerts!==!1,onChange:r=>a({...e,jsonData:{...e.jsonData,manageAlerts:r.currentTarget.checked}})})))}var xn=d(6709),Cn=d(91890),wn=d(72574),Pn=d(21744);const Nn=e=>{const{derivedFields:a,className:r}=e,[n,l]=(0,t.useState)("");let s=[];return n&&a&&(s=$n(a,n)),t.createElement("div",{className:r},t.createElement(se.I,{label:"Debug log message",labelWidth:24,grow:!0},t.createElement(Pn.f,{type:"text","aria-label":"Loki query",placeholder:"Paste an example log line here to test the regular expressions of your derived fields",value:n,onChange:c=>l(c.currentTarget.value)})),!!s.length&&t.createElement(Tn,{fields:s}))},Tn=({fields:e})=>t.createElement("table",{className:"filter-table"},t.createElement("thead",null,t.createElement("tr",null,t.createElement("th",null,"Name"),t.createElement("th",null,"Value"),t.createElement("th",null,"Url"))),t.createElement("tbody",null,e.map(a=>{let r=a.value;return a.error&&a.error instanceof Error?r=a.error.message:a.href&&(r=t.createElement("a",{href:a.href},r)),t.createElement("tr",{key:`${a.name}=${a.value}`},t.createElement("td",null,a.name),t.createElement("td",null,r),t.createElement("td",null,a.href?t.createElement("a",{href:a.href},a.href):""))})));function $n(e,a){return e.filter(r=>r.name&&r.matcherRegex).map(r=>{try{const n=a.match(r.matcherRegex);let l;const s=n&&n[1];return s&&(l=(0,wn.w)().replace(r.url,{__value:{value:{raw:s},text:"Raw value"}})),{name:r.name,value:s||"
",href:l}}catch(n){return{name:r.name,error:n}}})}var In=d(55882),ee=d(88575),Rn=d(64078);const Dn=e=>({row:(0,p.css)` display: flex; align-items: baseline; `,nameField:(0,p.css)` flex: 2; margin-right: ${e.spacing(.5)}; `,regexField:(0,p.css)` flex: 3; margin-right: ${e.spacing(.5)}; `,urlField:(0,p.css)` flex: 1; margin-right: ${e.spacing(.5)}; `,urlDisplayLabelField:(0,p.css)` flex: 1; `,internalLink:(0,p.css)` margin-right: ${e.spacing(1)}; `,dataSource:(0,p.css)``,nameMatcherField:(0,p.css)({width:e.spacing(20),marginRight:e.spacing(.5)})}),kn=e=>{const{value:a,onChange:r,onDelete:n,suggestions:l,className:s,validateName:c}=e,u=(0,F.of)(Dn),[o,i]=(0,t.useState)(!!a.datasourceUid),v=(0,N.A)(a.datasourceUid),[m,g]=(0,t.useState)(a.matcherType??"regex");(0,t.useEffect)(()=>{!v&&a.datasourceUid&&!o&&i(!0),v&&!a.datasourceUid&&o&&i(!1)},[v,a.datasourceUid,o]);const y=f=>O=>{r({...a,[f]:O.currentTarget.value})},C=!c(a.name);return t.createElement("div",{className:s,"data-testid":"derived-field"},t.createElement("div",{className:"gf-form"},t.createElement(ee.D,{className:u.nameField,label:"Name",invalid:C,error:"The name is already in use"},t.createElement(ie.p,{value:a.name,onChange:y("name"),placeholder:"Field name",invalid:C})),t.createElement(ee.D,{className:u.nameMatcherField,label:t.createElement(ke,{label:"Type",content:"Derived fields can be created from labels or by applying a regular expression to the log message."})},t.createElement(Y.l6,{options:[{label:"Regex in log line",value:"regex"},{label:"Label",value:"label"}],value:m,onChange:f=>{(f.value==="label"||f.value==="regex")&&(g(f.value),r({...a,matcherType:f.value}))}})),t.createElement(ee.D,{className:u.regexField,label:t.createElement(t.Fragment,null,m==="regex"&&t.createElement(ke,{label:"Regex",content:"Use to parse and capture some part of the log message. You can use the captured groups in the template."}),m==="label"&&t.createElement(ke,{label:"Label",content:"Use to derive the field from a label."}))},t.createElement(ie.p,{value:a.matcherRegex,onChange:y("matcherRegex")})),t.createElement(ee.D,{label:""},t.createElement(k.$n,{variant:"destructive",title:"Remove field",icon:"times",onClick:f=>{f.preventDefault(),n()}}))),t.createElement("div",{className:"gf-form"},t.createElement(ee.D,{label:o?"Query":"URL",className:u.urlField},t.createElement(Rn.l,{placeholder:o?"${__value.raw}":"http://example.com/${__value.raw}",value:a.url||"",onChange:f=>r({...a,url:f}),suggestions:l})),t.createElement(ee.D,{className:u.urlDisplayLabelField,label:t.createElement(ke,{label:"URL Label",content:"Use to override the button label when this derived field is found in a log."})},t.createElement(ie.p,{value:a.urlDisplayLabel,onChange:y("urlDisplayLabel")}))),t.createElement("div",{className:"gf-form"},t.createElement(ee.D,{label:"Internal link",className:u.internalLink},t.createElement(ge.d,{value:o,onChange:f=>{const{checked:O}=f.currentTarget;O||r({...a,datasourceUid:void 0}),i(O)}})),o&&t.createElement(ee.D,{label:"",className:u.dataSource},t.createElement(In.s,{tracing:!0,onChange:f=>r({...a,datasourceUid:f.uid}),current:a.datasourceUid,noDefault:!0}))))},ke=({content:e,label:a})=>t.createElement(Pe.J,null,a,t.createElement(Ee.m,{placement:"top",content:e,theme:"info"},t.createElement(Ne.I,{tabIndex:0,name:"info-circle",size:"sm",style:{marginLeft:"10px"}}))),Bn=e=>({addButton:(0,p.css)` margin-right: 10px; `,derivedField:(0,p.css)` margin-bottom: ${e.spacing(1)}; `,container:(0,p.css)` margin-bottom: ${e.spacing(4)}; `,debugSection:(0,p.css)` margin-top: ${e.spacing(4)}; `}),Mn=({fields:e=[],onChange:a})=>{const r=(0,F.$j)(),n=Bn(r),[l,s]=(0,t.useState)(!1),c=(0,t.useCallback)(u=>e.filter(o=>o.name&&o.name===u).length<=1,[e]);return t.createElement(qe.I,{title:"Derived fields",description:t.createElement(_e.H,{description:"Derived fields can be used to extract new fields from a log message and create a link from its value.",suffix:"loki/configure-loki-data-source/#derived-fields",feature:"derived fields"})},t.createElement("div",{className:n.container},e.map((u,o)=>t.createElement(kn,{className:n.derivedField,key:o,value:u,onChange:i=>{const v=[...e];v.splice(o,1,i),a(v)},onDelete:()=>{const i=[...e];i.splice(o,1),a(i)},validateName:c,suggestions:[{value:xn.c.valueRaw,label:"Raw value",documentation:"Exact string captured by the regular expression",origin:Cn.$0.Value}]})),t.createElement("div",null,t.createElement(k.$n,{variant:"secondary",className:n.addButton,icon:"plus",onClick:u=>{u.preventDefault();const o={name:"",matcherRegex:"",urlDisplayLabel:"",url:"",matcherType:"regex"},i=[...e,o];a(i)}},"Add"),e.length>0&&t.createElement(k.$n,{variant:"secondary",type:"button",onClick:()=>s(!l)},l?"Hide example log message":"Show example log message")),l&&t.createElement("div",{className:n.debugSection},t.createElement(Nn,{className:(0,p.css)` margin-bottom: 10px; `,derivedFields:e}))))};var Fn=d(39268),Qn=d(39938);const An=e=>{const{maxLines:a,onMaxLinedChange:r,predefinedOperations:n,onPredefinedOperationsChange:l}=e;return t.createElement(qe.I,{title:"Queries",description:t.createElement(_e.H,{description:"Additional options to customize your querying experience.",suffix:"loki/configure-loki-data-source/#queries",feature:"query settings"})},t.createElement(se.I,{label:"Maximum lines",htmlFor:"loki_config_maxLines",labelWidth:22,tooltip:t.createElement(t.Fragment,null,"Loki queries must contain a limit of the maximum number of lines returned (default: 1000). Increase this limit to have a bigger result set for ad-hoc analysis. Decrease this limit if your browser becomes sluggish when displaying the log results.")},t.createElement(ie.p,{type:"number",id:"loki_config_maxLines",value:a,onChange:s=>r(s.currentTarget.value),width:16,placeholder:"1000",spellCheck:!1})),q.$.featureToggles.lokiPredefinedOperations&&t.createElement(Fn.C,null,t.createElement(se.I,{label:"Predefined operations",htmlFor:"loki_config_predefinedOperations",labelWidth:22,tooltip:t.createElement(t.Fragment,null,'Predefined operations are used as an initial state for your queries. They are useful, if you want to unpack, parse or format all log lines. Currently we support only log operations starting with |. For example: | unpack | line_format "{{.message}}".')},t.createElement(ie.p,{type:"string",id:"loki_config_predefinedOperations",value:n,onChange:s=>l(s.currentTarget.value),width:40,placeholder:"| unpack | line_format",spellCheck:!1})),t.createElement(se.I,null,t.createElement(Qn.E,{text:"Experimental",color:"orange",icon:"exclamation-triangle",tooltip:"Predefined operations is an experimental feature that may change in the future."}))))},et=e=>(a,r)=>({...a,jsonData:{...a.jsonData,[e]:r}}),Vn=et("maxLines"),jn=et("predefinedOperations"),Un=et("derivedFields"),zn=e=>{const{options:a,onOptionsChange:r}=e,n=(0,t.useCallback)(l=>{(0,M.rR)("grafana_loki_predefined_operations_changed",{value:l}),r(jn(a,l))},[a,r]);return t.createElement(t.Fragment,null,t.createElement(vn.I,{dataSourceName:"Loki",docsLink:"https://grafana.com/docs/grafana/latest/datasources/loki/configure-loki-data-source/",hasRequiredFields:!1}),t.createElement(Ye.c,{spacing:4}),t.createElement(hn.u,{config:a,onChange:r,urlPlaceholder:"http://localhost:3100"}),t.createElement(Ye.c,{spacing:4}),t.createElement(yn.N,{...(0,En.pe)({config:a,onChange:r})}),t.createElement(Ye.c,{spacing:4}),t.createElement(bn.A,{title:"Additional settings",description:"Additional settings are optional settings that can be configured for more control over your data source.",isCollapsible:!0,isInitiallyOpen:!0},t.createElement(Ce.B,{gap:5,direction:"column"},t.createElement(Ln.g,{config:a,onChange:r}),q.$.secureSocksDSProxyEnabled&&t.createElement(Sn.Y,{options:a,onOptionsChange:r}),t.createElement(On,{options:a,onOptionsChange:r}),t.createElement(An,{maxLines:a.jsonData.maxLines||"",onMaxLinedChange:l=>r(Vn(a,l)),predefinedOperations:a.jsonData.predefinedOperations||"",onPredefinedOperationsChange:n}),t.createElement(Mn,{fields:a.jsonData.derivedFields,onChange:l=>r(Un(a,l))}))))};var Hn=d(27724),Wn=d(79007);const Gn=new j.tD(Hn.VQ).setQueryEditor(fn).setConfigEditor(zn).setQueryEditorHelp(me);(0,Z.J7)().subscribe(J.gc,Wn.jg)}}]); //# sourceMappingURL=6499.9f52e0855fd4782a8b45.js.map