From 5c9134a27833bc3d021fa6d753b55561d7030d01 Mon Sep 17 00:00:00 2001 From: PxlLoewe <72106766+PxlLoewe@users.noreply.github.com> Date: Tue, 8 Apr 2025 09:16:00 -0700 Subject: [PATCH] added Map objekt polygon --- .../_components/map/ContextMenu.tsx | 50 +++++++++++- .../app/(dispatch)/_components/map/Map.tsx | 2 + .../_components/map/MissionMarkers.tsx | 2 +- .../_components/map/SearchElements.tsx | 74 ++++++++++++++++++ apps/dispatch/app/_store/mapStore.ts | 35 +++++++++ apps/dispatch/tailwind.config.ts | 1 + grafana/grafana.db | Bin 1122304 -> 1122304 bytes .../plugins/grafana-lokiexplore-app/341.js | 52 ------------ .../grafana-lokiexplore-app/341.js.map | 1 - .../plugins/grafana-lokiexplore-app/631.js | 2 +- .../plugins/grafana-lokiexplore-app/747.js | 52 ++++++++++++ .../grafana-lokiexplore-app/747.js.map | 1 + .../grafana-lokiexplore-app/CHANGELOG.md | 24 ++++++ .../grafana-lokiexplore-app/MANIFEST.txt | 30 +++---- .../plugins/grafana-lokiexplore-app/module.js | 2 +- .../grafana-lokiexplore-app/module.js.map | 2 +- .../grafana-lokiexplore-app/plugin.json | 10 +-- .../grafana-pyroscope-app/CHANGELOG.md | 33 ++++++++ .../grafana-pyroscope-app/MANIFEST.txt | 24 +++--- .../plugins/grafana-pyroscope-app/module.js | 50 ++++++------ .../grafana-pyroscope-app/module.js.map | 2 +- .../plugins/grafana-pyroscope-app/plugin.json | 6 +- 22 files changed, 333 insertions(+), 122 deletions(-) create mode 100644 apps/dispatch/app/(dispatch)/_components/map/SearchElements.tsx delete mode 100644 grafana/plugins/grafana-lokiexplore-app/341.js delete mode 100644 grafana/plugins/grafana-lokiexplore-app/341.js.map create mode 100644 grafana/plugins/grafana-lokiexplore-app/747.js create mode 100644 grafana/plugins/grafana-lokiexplore-app/747.js.map diff --git a/apps/dispatch/app/(dispatch)/_components/map/ContextMenu.tsx b/apps/dispatch/app/(dispatch)/_components/map/ContextMenu.tsx index c6c630cf..ee3d9e3a 100644 --- a/apps/dispatch/app/(dispatch)/_components/map/ContextMenu.tsx +++ b/apps/dispatch/app/(dispatch)/_components/map/ContextMenu.tsx @@ -1,10 +1,11 @@ import { useMapStore } from "_store/mapStore"; +import { MapPinned, Search } from "lucide-react"; import { useEffect } from "react"; import { Popup, useMap } from "react-leaflet"; export const ContextMenu = () => { const map = useMap(); - const { popup, map: mapStore, setPopup } = useMapStore(); + const { popup, setSearchElements, setPopup } = useMapStore(); useEffect(() => { map.on("contextmenu", (e) => { @@ -17,9 +18,9 @@ export const ContextMenu = () => { return ( {/* // TODO: maske: */} -
+
+
diff --git a/apps/dispatch/app/(dispatch)/_components/map/Map.tsx b/apps/dispatch/app/(dispatch)/_components/map/Map.tsx index caeec90b..155d5d5d 100644 --- a/apps/dispatch/app/(dispatch)/_components/map/Map.tsx +++ b/apps/dispatch/app/(dispatch)/_components/map/Map.tsx @@ -5,6 +5,7 @@ import { MapContainer } from "react-leaflet"; import { BaseMaps } from "(dispatch)/_components/map/BaseMaps"; import { ContextMenu } from "(dispatch)/_components/map/ContextMenu"; import { MissionMarkers } from "(dispatch)/_components/map/MissionMarkers"; +import { SearchElements } from "(dispatch)/_components/map/SearchElements"; export default ({}) => { const { map } = useMapStore(); @@ -12,6 +13,7 @@ export default ({}) => { return ( + diff --git a/apps/dispatch/app/(dispatch)/_components/map/MissionMarkers.tsx b/apps/dispatch/app/(dispatch)/_components/map/MissionMarkers.tsx index 5b7fe48d..cebf977e 100644 --- a/apps/dispatch/app/(dispatch)/_components/map/MissionMarkers.tsx +++ b/apps/dispatch/app/(dispatch)/_components/map/MissionMarkers.tsx @@ -15,7 +15,7 @@ export const MissionMarker = ({ const markerRef = useRef>(null); useEffect(() => { - markerRef.current?.openPopup(); + // markerRef.current?.openPopup(); const handleZoom = () => { setZoom(map.getZoom()); diff --git a/apps/dispatch/app/(dispatch)/_components/map/SearchElements.tsx b/apps/dispatch/app/(dispatch)/_components/map/SearchElements.tsx new file mode 100644 index 00000000..0b38f009 --- /dev/null +++ b/apps/dispatch/app/(dispatch)/_components/map/SearchElements.tsx @@ -0,0 +1,74 @@ +import { useMapStore } from "_store/mapStore"; +import { Marker as LMarker } from "leaflet"; +import { Ref, use, useEffect, useRef } from "react"; +import { Marker, Polygon, Polyline, Popup } from "react-leaflet"; +import L from "leaflet"; + +export const SearchElements = () => { + const { searchElements, searchPopup, setSearchPopup } = useMapStore(); + const poppupRef = useRef(null); + + useEffect(() => { + if (searchPopup?.isOpen) { + poppupRef.current?.openPopup(); + } else { + poppupRef.current?.closePopup(); + } + }, [searchPopup]); + + const SearchElement = ({ + element, + }: { + element: (typeof searchElements)[1]; + }) => { + const ref = useRef(null); + + useEffect(() => { + if (ref.current) { + console.log(ref.current); + ref.current.on("click", () => { + console.log("click"); + const center = ref.current.getBounds().getCenter(); + setSearchPopup({ + isOpen: true, + lat: center.lat, + lng: center.lng, + elementId: element.id, + }); + console.log(element); + }); + } + }, []); + + return ( + [node.lat, node.lon])} + color="#46b7a3" + ref={ref} + /> + ); + }; + + return ( + <> + {searchElements.map((element) => { + return ; + })} + {searchPopup && ( + + +
+
test
+
+
+
+ )} + + ); +}; diff --git a/apps/dispatch/app/_store/mapStore.ts b/apps/dispatch/app/_store/mapStore.ts index f790fa51..3fb1a222 100644 --- a/apps/dispatch/app/_store/mapStore.ts +++ b/apps/dispatch/app/_store/mapStore.ts @@ -11,7 +11,33 @@ interface MapStore { center: L.LatLngExpression; zoom: number; }; + searchElements: { + id: number; + nodes: { + lat: number; + lon: number; + }[]; + tags: { + addr: { + city?: string; + housenumber?: string; + postcode?: string; + street?: string; + suburb?: string; + }; + building?: string; + }; + type: string; + }[]; + setSearchElements: (elements: MapStore["searchElements"]) => void; setPopup: (popup: MapStore["popup"]) => void; + searchPopup?: { + isOpen: boolean; + lat: number; + lng: number; + elementId: number; + }; + setSearchPopup: (popup: MapStore["searchPopup"]) => void; } export const useMapStore = create((set, get) => ({ @@ -19,9 +45,18 @@ export const useMapStore = create((set, get) => ({ center: [51.5, 10.5], zoom: 6, }, + searchElements: [], + setSearchPopup: (popup) => + set((state) => ({ + searchPopup: popup, + })), popup: null, setPopup: (popup) => set((state) => ({ popup: popup, })), + setSearchElements: (elements) => + set((state) => ({ + searchElements: elements, + })), })); diff --git a/apps/dispatch/tailwind.config.ts b/apps/dispatch/tailwind.config.ts index b800ba5d..57155383 100644 --- a/apps/dispatch/tailwind.config.ts +++ b/apps/dispatch/tailwind.config.ts @@ -12,6 +12,7 @@ export default { colors: { background: "var(--background)", foreground: "var(--foreground)", + rescuetrack: "#46b7a3", }, transitionProperty: { width: "width", diff --git a/grafana/grafana.db b/grafana/grafana.db index 0d84defa919781049d7099b7339c6fb8d4708406..56a32b1557b5c659f5bd8431cad7a3ec8f2d6f38 100644 GIT binary patch delta 460 zcmZoT;L>owWr8$g`a~IL#`KK|-*nk{<;0ksIj1*n<`kYTV8zAJT&~w%uEz+(OhC*G z#4JF}3dC&N%k|hNeB@;2&*tC4e~W+8W0iBd85kH8Ejd`G_uF%b zaf1YosxY%M*fUMvt4P|Zdnl{10z#i0~1{Xix2}tD+3EFBZH{v2Yt9DWkF&JFflzd zGb0NFOLHS*Z36=<1B2@4VErdh> delta 361 zcmZoT;L>owWr8%L-$WT_M!$^--*nly&FU`W#ZMb?HxTecOIZpW`$?E0+wjE#vfu`WzC|57~1#u`%*J zX5f1aH1H@^9ZA&*3S6EHZs}J%{IVmIg+Jc9sPk+gTQH z{(R2@w2*fzBO|i_kk9pZz9i3c22QqG2L5IIzP!F{wLCTK57`^oZP-2o4NYd7UhBqf z#AmE)WENs*Ze?g`Wo#TZ{h$xGjEI>6OhC`rz{tYb$k5Dk`dc^d$z1X591I-#s;0)q e)8EH&%eF6f=LTXPAm#;PJ|O1bzT90P@&*7k9B+pJ diff --git a/grafana/plugins/grafana-lokiexplore-app/341.js b/grafana/plugins/grafana-lokiexplore-app/341.js deleted file mode 100644 index 8bd432b8..00000000 --- a/grafana/plugins/grafana-lokiexplore-app/341.js +++ /dev/null @@ -1,52 +0,0 @@ -"use strict";(self.webpackChunkgrafana_lokiexplore_app=self.webpackChunkgrafana_lokiexplore_app||[]).push([[341],{5218:(e,t,n)=>{n.d(t,{F:()=>o});var r=n(6089),a=n(2007),i=n(5959),s=n.n(i),l=n(1220);const o=e=>{const{isExcluded:t,isIncluded:n,onInclude:r,onExclude:i,onClear:o,titles:u,buttonFill:d,hideExclude:p}=e,g=(0,a.useStyles2)(c,n,t,p);return s().createElement("div",{className:g.container},s().createElement(a.Button,{variant:n?"primary":"secondary",fill:d,size:"sm","aria-selected":n,className:g.includeButton,onClick:n?o:r,"data-testid":l.b.exploreServiceDetails.buttonFilterInclude,title:null==u?void 0:u.include},"Include"),!p&&s().createElement(a.Button,{variant:t?"primary":"secondary",fill:d,size:"sm","aria-selected":t,className:g.excludeButton,onClick:t?o:i,title:null==u?void 0:u.exclude,"data-testid":l.b.exploreServiceDetails.buttonFilterExclude},"Exclude"))},c=(e,t,n,a)=>({container:(0,r.css)({display:"flex",justifyContent:"center"}),includeButton:(0,r.css)({borderRadius:0,borderRight:t||a?void 0:"none"}),excludeButton:(0,r.css)({borderRadius:`0 ${e.shape.radius.default} ${e.shape.radius.default} 0`,borderLeft:n?void 0:"none"})})},4482:(e,t,n)=>{n.d(t,{R:()=>c});var r=n(5959),a=n.n(r),i=n(6089),s=n(1575),l=n(2007);const o=e=>({graphicContainer:(0,i.css)({display:"flex",justifyContent:"center",margin:"0 auto"}),graphic:(0,i.css)({width:"200px",height:"120px",padding:e.spacing(1)}),text:(0,i.css)({display:"flex",justifyContent:"center",alignItems:"center"}),wrap:(0,i.css)({margin:"0 auto"})}),c=({children:e})=>{const t=(0,l.useStyles2)(o),n=(0,l.useTheme2)();return a().createElement("div",{className:t.wrap},a().createElement("div",{className:t.graphicContainer},a().createElement(s.A,{className:t.graphic,src:n.isDark?"/public/plugins/grafana-lokiexplore-app/img/grot_err.svg":"/public/plugins/grafana-lokiexplore-app/img/grot_err_light.svg"})),a().createElement("div",{className:t.text},a().createElement(l.Text,{textAlignment:"center",color:"primary",element:"span"},e||"An error occurred")))}},8538:(e,t,n)=>{n.d(t,{P:()=>Ze,y:()=>Xe});var r=n(5959),a=n.n(r),i=n(7781),s=n(2672),l=n(3143),o=n(227),c=n(2254),u=n(2007),d=n(6089);function p(e){const t=(0,u.useStyles2)(g);return a().createElement(a().Fragment,null,a().createElement(u.Alert,{className:t.alert,severity:"info",title:"Welcome to Grafana Logs Drilldown!",onRemove:e.onRemove},a().createElement("div",null,"Check out our"," ",a().createElement("a",{className:"external-link",target:"_blank",href:"https://grafana.com/docs/grafana-cloud/visualizations/simplified-exploration/logs/",rel:"noreferrer"},"Get started doc"),", or see"," ",a().createElement("a",{className:"external-link",target:"_blank",href:"https://github.com/grafana/explore-logs/releases",rel:"noreferrer"},"recent changes"),".",a().createElement("br",null),"Help us shape the future of the app."," ",a().createElement("a",{className:"external-link",target:"_blank",href:"https://forms.gle/1sYWCTPvD72T1dPH9",rel:"noreferrer"},"Send us feedback")," ","or engage with us on"," ",a().createElement("a",{className:"external-link",target:"_blank",href:"https://github.com/grafana/explore-logs/?tab=readme-ov-file#explore-logs",rel:"noreferrer"},"GitHub"),".")))}function g(e){return{alert:(0,d.css)({flex:"none"})}}var h=n(8831),v=n(2871),m=n(5664);const f=()=>{const e=(0,u.useStyles2)(b);return a().createElement("div",{className:e.wrapper},a().createElement("a",{href:"https://forms.gle/1sYWCTPvD72T1dPH9",className:e.feedback,title:"Share your thoughts about Logs in Grafana.",target:"_blank",rel:"noreferrer noopener"},a().createElement(u.Icon,{name:"comment-alt-message"})," Give feedback"))},b=e=>({wrapper:(0,d.css)({display:"flex",marginLeft:"auto",gap:e.spacing(1),position:"relative",top:e.spacing(-1)}),feedback:(0,d.css)({alignSelf:"center",color:e.colors.text.secondary,fontSize:e.typography.bodySmall.fontSize,"&:hover":{color:e.colors.text.link}})});class y extends s.Bs{}var S,w,O;O=function({model:e}){var t,n;const r=s.jh.getVariables(e).useState();let i=r.variables;return(null===(t=e.state.include)||void 0===t?void 0:t.length)&&(i=r.variables.filter((t=>{var n,r;return null===(n=e.state.include)||void 0===n?void 0:n.includes(null!==(r=t.state.name)&&void 0!==r?r:"")}))),(null===(n=e.state.exclude)||void 0===n?void 0:n.length)&&(i=r.variables.filter((t=>{var n,r;return!(null===(n=e.state.exclude)||void 0===n?void 0:n.includes(null!==(r=t.state.name)&&void 0!==r?r:""))}))),a().createElement(a().Fragment,null,i.map((t=>a().createElement(s.Lp,{key:t.state.key,variable:t,layout:e.state.layout}))))},(w="Component")in(S=y)?Object.defineProperty(S,w,{value:O,enumerable:!0,configurable:!0,writable:!0}):S[w]=O;var x=n(1220);const E=({onRemove:e,pattern:t,size:n="lg"})=>{const i=(0,u.useStyles2)(F),[s,l]=(0,r.useState)(!1);return a().createElement("div",{className:i.pattern,onClick:()=>l(!s),onMouseLeave:()=>l(!1)},a().createElement(u.Tag,{title:t,key:t,name:s?t:k(t,n),className:i.tag}),a().createElement(u.Button,{"aria-label":"Remove pattern","data-testid":x.b.exploreServiceDetails.buttonRemovePattern,variant:"secondary",size:"sm",className:i.removeButton,onClick:e},a().createElement(u.Icon,{name:"times"})))},C={sm:50,lg:Math.round(window.innerWidth/8)};function k(e,t){const n=e.length;if(n({pattern:(0,d.css)({display:"flex",fontFamily:"monospace",gap:e.spacing(.25),cursor:"pointer",overflow:"hidden"}),tag:(0,d.css)({borderTopRightRadius:0,borderBottomRightRadius:0,backgroundColor:e.colors.secondary.main,border:`solid 1px ${e.colors.secondary.border}`,color:e.colors.secondary.text,boxSizing:"border-box",padding:e.spacing(.25,.75),overflow:"hidden",textOverflow:"ellipsis"}),removeButton:(0,d.css)({paddingLeft:2.5,paddingRight:2.5})});var P=n(2718),L=n(8835);const j=({patterns:e,onRemove:t})=>{const n=(0,u.useStyles2)(_);if(!e||0===e.length)return null;const r=e.filter((e=>"include"===e.type)),i=e.filter((e=>"include"!==e.type)),s=n=>{(0,L.bN)(),t(e.filter((e=>e!==n))),(0,P.EE)(P.NO.service_details,P.ir.service_details.pattern_removed,{includePatternsLength:r.length-("include"===(null==n?void 0:n.type)?1:0),excludePatternsLength:i.length-("include"!==(null==n?void 0:n.type)?1:0),type:n.type})};return a().createElement("div",null,r.length>0&&a().createElement("div",{className:n.patternsContainer},a().createElement(u.Text,{variant:"bodySmall",weight:"bold","data-testid":x.b.patterns.buttonIncludedPattern},"Included pattern",e.length>1?"s":""),a().createElement("div",{className:n.patterns},r.map((e=>a().createElement(E,{key:e.pattern,pattern:e.pattern,size:"lg",onRemove:()=>s(e)}))))),i.length>0&&a().createElement("div",{className:n.patternsContainer},a().createElement(u.Text,{variant:"bodySmall",weight:"bold","data-testid":x.b.patterns.buttonExcludedPattern},"Excluded pattern",i.length>1?"s":"",":"),a().createElement("div",{className:n.patterns},i.map((e=>a().createElement(E,{key:e.pattern,pattern:e.pattern,size:i.length>1?"sm":"lg",onRemove:()=>s(e)}))))))};function _(e){return{patternsContainer:(0,d.css)({overflow:"hidden"}),patterns:(0,d.css)({display:"flex",gap:e.spacing(1),alignItems:"center",flexWrap:"wrap"})}}class T extends s.Bs{}function D(e){return{firstRowWrapper:(0,d.css)({"& > div > div":{gap:"16px",label:"first-row-wrapper",[e.breakpoints.down("lg")]:{flexDirection:"column"}}}),bodyContainer:(0,d.css)({flexGrow:1,display:"flex",minHeight:"100%",flexDirection:"column"}),container:(0,d.css)({flexGrow:1,display:"flex",minHeight:"100%",flexDirection:"column",padding:e.spacing(2),maxWidth:"100vw"}),body:(0,d.css)({flexGrow:1,display:"flex",flexDirection:"column",gap:e.spacing(1)}),controlsFirstRowContainer:(0,d.css)({label:"controls-first-row",display:"flex",gap:e.spacing(2),justifyContent:"space-between",alignItems:"flex-start"}),controlsRowContainer:(0,d.css)({"&:empty":{display:"none"},label:"controls-row",display:"flex",gap:e.spacing(1),alignItems:"flex-start",paddingLeft:e.spacing(2)}),controlsContainer:(0,d.css)({label:"controlsContainer",display:"flex",flexDirection:"column",gap:e.spacing(1)}),filters:(0,d.css)({label:"filters",display:"flex"}),filtersWrap:(0,d.css)({label:"filtersWrap",display:"flex",gap:e.spacing(2),width:"calc(100% - 450)",flexWrap:"wrap",alignItems:"flex-end"}),controlsWrapper:(0,d.css)({label:"controlsWrapper",display:"flex",flexDirection:"column",marginTop:e.spacing(.375)}),timeRangeDatasource:(0,d.css)({label:"timeRangeDatasource",display:"flex",gap:e.spacing(1),flexWrap:"wrap",justifyContent:"flex-end"}),timeRange:(0,d.css)({label:"timeRange",display:"flex",flexDirection:"row",gap:e.spacing(1)}),controls:(0,d.css)({display:"flex",gap:e.spacing(1)}),feedback:(0,d.css)({textAlign:"end"}),rotateIcon:(0,d.css)({svg:{transform:"rotate(180deg)"}})}}!function(e,t,n){t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n}(T,"Component",(({model:e})=>{const t=s.jh.getAncestor(e,Ze),{controls:n,patterns:r}=t.useState(),i=s.jh.getAncestor(e,A),{lineFilterRenderer:l,levelsRenderer:o}=i.useState(),c=(0,u.useStyles2)(D);return a().createElement("div",{className:c.controlsContainer},a().createElement(a().Fragment,null,n&&a().createElement("div",{className:c.controlsFirstRowContainer},a().createElement("div",{className:c.filtersWrap},a().createElement("div",{className:(0,d.cx)(c.filters,c.firstRowWrapper)},n.map((e=>e instanceof s.G1?a().createElement(e.Component,{key:e.state.key,model:e}):null)))),a().createElement("div",{className:c.controlsWrapper},a().createElement(f,null),a().createElement("div",{className:c.timeRangeDatasource},n.map((e=>e.state.key===M?a().createElement(e.Component,{key:e.state.key,model:e}):null)),a().createElement("div",{className:c.timeRange},n.map((e=>e instanceof y||e instanceof s.G1?null:a().createElement(e.Component,{key:e.state.key,model:e}))))))),a().createElement("div",{className:c.controlsRowContainer},o&&a().createElement(o.Component,{model:o})),a().createElement("div",{className:c.controlsRowContainer},n&&a().createElement("div",{className:c.filtersWrap},a().createElement("div",{className:c.filters},n.map((e=>e instanceof y&&e.state.key===B?a().createElement(e.Component,{key:e.state.key,model:e}):null))))),a().createElement("div",{className:c.controlsRowContainer},a().createElement(j,{patterns:r,onRemove:e=>t.setState({patterns:e})})),a().createElement("div",{className:c.controlsRowContainer},l&&a().createElement(l.Component,{model:l}))))}));var N=n(3626);function I(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const $=`${h.s_}.interceptBannerStorageKey`,B="vars-fields-metadata",M="vars-ds";class A extends s.Bs{onActivate(){this.setState({lineFilterRenderer:new m.Y({}),levelsRenderer:new N.qV({}),variableLayout:new T({})})}dismiss(){this.setState({interceptDismissed:!0}),localStorage.setItem($,"true")}constructor(e){var t,n;super((t=function(e){for(var t=1;t{const t=s.jh.getAncestor(e,Ze),{contentScene:n}=t.useState(),{interceptDismissed:r,variableLayout:i}=e.useState();if(!n)return v.v.warn("content scene not defined"),null;const l=(0,u.useStyles2)(R);return a().createElement("div",{className:l.bodyContainer},a().createElement("div",{className:l.container},!r&&a().createElement(p,{onRemove:()=>{e.dismiss()}}),i&&a().createElement(i.Component,{model:i}),a().createElement("div",{className:l.body},n&&a().createElement(n.Component,{model:n}))))}));var V=n(892),W=n(1105),z=n(8531),H=n(7918),Q=n(5435),K=n(5431),q=n(4750),G=n(4002),U=n(4106),J=n(9077),Y=n(9829),X=n(3241),Z=n(4793),ee=n(7063),te=n(5111);function ne(e,t,n,r,a,i,s){try{var l=e[i](s),o=l.value}catch(e){return void n(e)}l.done?t(o):Promise.resolve(o).then(r,a)}function re(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var i=e.apply(t,n);function s(e){ne(i,r,a,s,l,"next",e)}function l(e){ne(i,r,a,s,l,"throw",e)}s(void 0)}))}}const ae=function(){var e=re((function*(e,t,n,r,a,i){const s=yield(0,z.getDataSourceSrv)().get((0,Y.U4)(r));if(!(s instanceof z.DataSourceWithBackend))throw v.v.error(new Error("getTagValuesProvider: Invalid datasource!")),new Error("Invalid datasource!");const o=s.languageProvider;let c=[];if(o&&o.fetchDetectedLabelValues){const r={expr:n,limit:1e3,timeRange:a,throwError:!0},s={showErrorAlert:!1};try{let n=yield o.fetchDetectedLabelValues(e.key,r,s);if(n&&(0,X.isArray)(n)){var u;if(i===l._Y)return{replace:!0,values:n.map((e=>({text:e})))};const r=t.state.filters;let a=[];r.forEach((e=>{var t,n;const r=null!==(n=null===(t=e.valueLabels)||void 0===t?void 0:t[0])&&void 0!==n?n:e.value;(0,te.SM)(e.operator)?r.split("|").forEach((e=>a.push(e))):a.push(r)}));const s=n.filter((e=>!a.includes(e)));if("structuredMetadata"!==(null===(u=e.meta)||void 0===u?void 0:u.parser)){if(e.value){const t=(0,q.bu)(e,i);return{replace:!0,values:s.map((e=>({text:e,value:JSON.stringify({value:e,parser:t.parser})})))}}return{replace:!0,values:s.map((t=>{var n,r;return{text:t,value:JSON.stringify({value:t,parser:null!==(r=null===(n=e.meta)||void 0===n?void 0:n.parser)&&void 0!==r?r:"mixed"})}}))}}c=s.map((e=>({text:e})))}else c=[],v.v.error(n,{msg:"fetchDetectedLabelValues error!"})}catch(e){v.v.error(e,{msg:"getDetectedFieldValuesTagValuesProvider: loki missing detected_field/.../values endpoint. Upgrade to Loki 3.3.0 or higher."}),c=[]}}else v.v.warn("getDetectedFieldValuesTagValuesProvider: fetchDetectedLabelValues is not defined in Loki datasource. Upgrade to Grafana 11.4 or higher."),c=[];return{replace:!0,values:c}}));return function(t,n,r,a,i,s){return e.apply(this,arguments)}}();function ie(e,t){return se.apply(this,arguments)}function se(){return se=re((function*(e,t){const n=yield(0,z.getDataSourceSrv)().get((0,Y.U4)(e));if(!(n instanceof z.DataSourceWithBackend))throw v.v.error(new Error("getTagValuesProvider: Invalid datasource!")),new Error("Invalid datasource!");const r=n;if(r&&r.getTagValues){const n=function(e,t){let n=e.filter((e=>!((0,te.BG)(t.operator)&&e.key===t.key)));return n.some((e=>(0,te.BG)(e.operator)))||(n=[]),n}(new ee.K(e.state.filters).getJoinedLabelsFilters(),t),i={key:t.key,filters:n};let s=yield r.getTagValues(i);if((0,X.isArray)(s)){var a;s=s.filter((n=>!e.state.filters.filter((e=>e.key===t.key)).some((e=>(0,te.SM)(e.operator)?e.value.split("|").some((e=>e===n.text)):e.operator===Z.w7.Equal&&e.value===n.text))));const n=(0,o.eT)(null===(a=(0,q.S9)(e).getValue())||void 0===a?void 0:a.toString(),t.key),r=new Set(n);n.length&&s.sort(((e,t)=>(r.has(t.text)?1:-1)-(r.has(e.text)?1:-1)))}return{replace:!0,values:s}}return v.v.error(new Error("getTagValuesProvider: missing or invalid datasource!")),{replace:!0,values:[]}})),se.apply(this,arguments)}var le=n(6001);function oe(e,t,n,r,a,i,s){try{var l=e[i](s),o=l.value}catch(e){return void n(e)}l.done?t(o):Promise.resolve(o).then(r,a)}function ce(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var i=e.apply(t,n);function s(e){oe(i,r,a,s,l,"next",e)}function l(e){oe(i,r,a,s,l,"throw",e)}s(void 0)}))}}function ue(e){return de.apply(this,arguments)}function de(){return de=ce((function*(e){const t=yield(0,z.getDataSourceSrv)().get((0,Y.U4)(e));if(!(t instanceof z.DataSourceWithBackend))throw v.v.error(new Error("getTagKeysProvider: Invalid datasource!")),new Error("Invalid datasource!");const n=t;if(n&&n.getTagKeys){const t={filters:new ee.K(e.state.filters).getJoinedLabelsFilters()},r=yield n.getTagKeys(t),a=(Array.isArray(r)?r:[]).filter((e=>!le.rm.includes(e.text)));return{replace:!0,values:a}}return v.v.error(new Error("getTagKeysProvider: missing or invalid datasource!")),{replace:!0,values:[]}})),de.apply(this,arguments)}function pe(e){return ge.apply(this,arguments)}function ge(){return ge=ce((function*({limit:e,timeRange:t,scopedVars:n,expr:r,sceneRef:a,variableType:i}){const s=yield(0,z.getDataSourceSrv)().get((0,Y.U4)(a));if(!(s instanceof z.DataSourceWithBackend))throw v.v.error(new Error("getTagKeysProvider: Invalid datasource!")),new Error("Invalid datasource!");const o=s,c=o.languageProvider,u={expr:r,timeRange:t,scopedVars:n,variableType:i,sceneRef:a,limit:e},d=o&&"function"==typeof c.fetchDetectedFields&&c.fetchDetectedFields.bind(c)||function(e){return function(e,t,n){return he.apply(this,arguments)}(o,e)};if(d&&"function"==typeof d){const e=yield d(u);if(e instanceof Error)throw v.v.error(e,{msg:"Failed to fetch detected fields"}),e;const t=e.filter((e=>i===l._Y?e.label===l.e4:i===l.sL&&e.label!==l.e4||null!==e.parsers)).map((e=>{if(i===l.sL){var t;let n=1===(null===(t=e.parsers)||void 0===t?void 0:t.length)?e.parsers[0]:"mixed";null===e.parsers&&(n="structuredMetadata");const r=e.type;return{text:e.label,value:e.label,group:n,meta:{parser:n,type:r}}}return{text:e.label,value:e.label}}));return t.sort(((e,t)=>"structuredMetadata"===e.group&&"structuredMetadata"!==t.group?-1:"structuredMetadata"!==e.group&&"structuredMetadata"===t.group?1:0)),{replace:!0,values:t}}return v.v.error(new Error("getTagKeysProvider: missing or invalid datasource!")),{replace:!0,values:[]}})),ge.apply(this,arguments)}function he(){return he=ce((function*(e,t,n){if(!("interpolateString"in e)||"function"!=typeof(null==e?void 0:e.interpolateString))throw new Error("Datasource missing interpolateString method");const r=t.expr&&"{}"!==t.expr?e.interpolateString(t.expr,t.scopedVars):void 0;if(!r)throw new Error("fetchDetectedFields requires query expression");var a;const s=null!==(a=null==t?void 0:t.timeRange)&&void 0!==a?a:(0,i.getDefaultTimeRange)(),l=e.getTimeRangeParams(s),{start:o,end:c}=l;var u;const d={start:o,end:c,limit:null!==(u=null==t?void 0:t.limit)&&void 0!==u?u:1e3};return d.query=r,new Promise(function(){var t=ce((function*(t,r){try{t((yield e.getResource("detected_fields",d,n)).fields)}catch(e){console.error("error",e),r(e)}}));return function(e,n){return t.apply(this,arguments)}}())})),he.apply(this,arguments)}var ve=n(6059);function me(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}let fe={8:"backspace",9:"tab",13:"enter",16:"shift",17:"ctrl",18:"alt",20:"capslock",27:"esc",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",45:"ins",46:"del",91:"meta",93:"meta",224:"meta"},be={106:"*",107:"+",109:"-",110:".",111:"/",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"},ye={"~":"`","!":"1","@":"2","#":"3",$:"4","%":"5","^":"6","&":"7","*":"8","(":"9",")":"0",_:"-","+":"=",":":";",'"':"'","<":",",">":".","?":"/","|":"\\"},Se={option:"alt",command:"meta",return:"enter",escape:"esc",plus:"+",mod:/Mac|iPod|iPhone|iPad/.test(navigator.platform)?"meta":"ctrl"},we=null;for(let e=1;e<20;++e)fe[111+e]="f"+e;for(let e=0;e<=9;++e)fe[e+96]=e.toString();function Oe(e){if("keypress"===e.type){let t=String.fromCharCode(e.which);return e.shiftKey||(t=t.toLowerCase()),t}return fe[e.which]?fe[e.which]:be[e.which]?be[e.which]:String.fromCharCode(e.which).toLowerCase()}function xe(e){return"shift"===e||"ctrl"===e||"alt"===e||"meta"===e}function Ee(e,t,n){return n||(n=function(){if(!we){we={};for(let e in fe){const t=parseInt(e,10);t>95&&t<112||fe.hasOwnProperty(e)&&(we[fe[e]]=e)}}return we}()[e]?"keydown":"keypress"),"keypress"===n&&t.length&&(n="keydown"),n}function Ce(e,t){let n,r,a,i=[];for(n=function(e){return"+"===e?["+"]:(e=e.replace(/\+{2}/g,"+plus")).split("+")}(e),a=0;a{e=e||{};let t,n=!1;for(t in this._sequenceLevels)e[t]?n=!0:this._sequenceLevels[t]=0;n||(this._nextExpectedAction=!1)})),me(this,"_getMatches",((e,t,n,r,a,i)=>{let s,l,o=[],c=n.type;if(!this._callbacks[e])return[];for("keyup"===c&&xe(e)&&(t=[e]),s=0;s{const a=t.target||t.srcElement;var i;a&&a instanceof HTMLElement&&this.stopCallback(t,a,n,r)||!1===e(t,n)&&((i=t).preventDefault?i.preventDefault():i.returnValue=!1,function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0}(t))})),me(this,"_handleKey",((e,t,n)=>{let r,a=this._getMatches(e,t,n),i={},s=0,l=!1;for(r=0;r0&&e.startsWith(c)&&(i[e]=1)}else l||this._fireCallback(a[r].callback,n,a[r].combo)}var c;for(const t of null!==(c=this._callbacks[e])&&void 0!==c?c:[])t.action===n.type&&t.seq&&0===t.level&&(i[t.seq]=1);let u="keypress"===n.type&&this._ignoreNextKeypress;n.type!==this._nextExpectedAction||xe(e)||u||this._resetSequences(i),this._ignoreNextKeypress=l&&"keydown"===n.type})),me(this,"_handleKeyEvent",(e=>{if(!(e instanceof KeyboardEvent))throw new Error("Didn't get a KeyboardEvent");const t=e;if(t.repeat)return;"number"!=typeof t.which&&(t.which=t.keyCode);let n=Oe(t);n&&("keyup"!==t.type||this._ignoreNextKeyup!==n?this.handleKey(n,function(e){let t=[];return e.shiftKey&&t.push("shift"),e.altKey&&t.push("alt"),e.ctrlKey&&t.push("ctrl"),e.metaKey&&t.push("meta"),t}(t),t):this._ignoreNextKeyup=!1)})),me(this,"_resetSequenceTimer",(()=>{clearTimeout(this._resetTimer),this._resetTimer=setTimeout(this._resetSequences,1e3)})),me(this,"_bindSequence",((e,t,n,r)=>{this._sequenceLevels[e]=0;const a=t=>()=>{this._nextExpectedAction=t,++this._sequenceLevels[e],this._resetSequenceTimer()},i=t=>{this._fireCallback(n,t,e),"keyup"!==r&&(this._ignoreNextKeyup=Oe(t)),this._resetSequenceTimer()};for(let n=0;n{this._directMap[e+":"+n]=t;let i,s=(e=e.replace(/\s+/g," ")).split(" ");if(s.length>1)return void this._bindSequence(e,s,t,n);i=Ce(e,n),this._callbacks[i.key]=this._callbacks[i.key]||[];const l={type:i.action,metaKey:!1,ctrlKey:!1};this._getMatches(i.key,i.modifiers,l,r,e,a);const o={callback:t,modifiers:i.modifiers,action:i.action,seq:r,level:a,combo:e};this._callbacks[i.key][r?"unshift":"push"](o)})),me(this,"_bindMultiple",((e,t,n)=>{for(let r=0;r(e=e instanceof Array?e:[e],this._bindMultiple(e,t,n),self))),me(this,"unbind",((e,t)=>this.bind(e,(function(){}),t))),me(this,"bindGlobal",((e,t,n)=>{if(this.bind(e,t,n),e instanceof Array)for(let t=0;t{if(this.unbind(e,t),e instanceof Array)for(let t=0;t{let n=this;return n._directMap[e+":"+t]&&n._directMap[e+":"+t]({},e),n})),me(this,"reset",(()=>(this._callbacks={},this._directMap={},this))),me(this,"stopCallback",((e,t,n,r)=>{if(this._globalCallbacks[n]||r&&this._globalCallbacks[r])return!1;if((" "+t.className+" ").indexOf(" mousetrap ")>-1)return!1;if(ke(t,this.target))return!1;if("composedPath"in e&&"function"==typeof e.composedPath){let n=e.composedPath()[0];n!==e.target&&n instanceof HTMLElement&&(t=n)}return Boolean("INPUT"===t.tagName||"SELECT"===t.tagName||"TEXTAREA"===t.tagName||"isContentEditable"in t&&t.isContentEditable)})),me(this,"handleKey",((...e)=>this._handleKey(...e))),me(this,"addKeycodes",(e=>{for(let t in e)e.hasOwnProperty(t)&&(fe[t]=e[t]);we=null})),this.target=e,this.target.addEventListener("keypress",(e=>{e instanceof KeyboardEvent&&this._handleKeyEvent(e)})),this.target.addEventListener("keydown",(e=>{e instanceof KeyboardEvent&&this._handleKeyEvent(e)})),this.target.addEventListener("keyup",(e=>{e instanceof KeyboardEvent&&this._handleKeyEvent(e)}))}}(document);class Pe{addBinding(e){Fe.bind(e.key,(t=>{t.preventDefault(),t.stopPropagation(),t.returnValue=!1,e.onTrigger()}),"keydown"),this._binds.push(e)}removeAll(){this._binds.forEach((e=>{Fe.unbind(e.key,e.type)})),this._binds=[]}constructor(){!function(e,t,n){t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n}(this,"_binds",[])}}var Le=n(7085),je=n(4011);function _e(e,t,n,r,a,i,s){try{var l=e[i](s),o=l.value}catch(e){return void n(e)}l.done?t(o):Promise.resolve(o).then(r,a)}function Te(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var i=e.apply(t,n);function s(e){_e(i,r,a,s,l,"next",e)}function l(e){_e(i,r,a,s,l,"throw",e)}s(void 0)}))}}function De(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Ne=(0,z.getAppEvents)();function Ie(e){const t=(0,Y.m0)(e);null==t||t.onZoom()}function $e(e,t){const n=(0,Y.m0)(e);n&&("left"===t&&n.onMoveBackward(),"right"===t&&n.onMoveForward())}function Be(e){const t=e.state.options;var n;null!=(n=t)&&"object"==typeof n&&"legend"in n&&"boolean"==typeof t.legend.showLegend&&e.onOptionsChange({legend:{showLegend:!t.legend.showLegend}})}class Me extends i.BusEventBase{}De(Me,"type","copy-time");class Ae extends i.BusEventWithPayload{}function Re(){return(Re=Te((function*(){const e=yield navigator.clipboard.readText();let t;try{t=JSON.parse(e);const n=(0,je.OK)(t);if(n)return{isError:!1,range:n}}catch(e){}return{range:e,isError:!0}}))).apply(this,arguments)}De(Ae,"type","paste-time");var Ve=n(5548),We=n(1863),ze=n(833),He=n(1293),Qe=n(541),Ke=n(1575);const qe=()=>{const e=(0,u.useStyles2)(Ge),t=(0,u.useTheme2)();return a().createElement("div",{className:e.wrap},a().createElement("div",{className:e.graphicContainer},a().createElement(Ke.A,{src:(t.isDark,"/public/plugins/grafana-lokiexplore-app/img/grot_loki.svg")})),a().createElement("div",{className:e.text},a().createElement("h3",{className:e.title},"Welcome to Grafana Logs Drilldown"),a().createElement("p",null,"We noticed there is no Loki datasource configured.",a().createElement("br",null),"Add a"," ",a().createElement("a",{className:"external-link",href:i.locationUtil.assureBaseUrl("/connections/datasources/new")},"Loki datasource")," ","to view logs."),a().createElement("br",null),a().createElement("p",null,"Click"," ",a().createElement("a",{href:"https://grafana.com/docs/grafana/latest/explore/simplified-exploration/logs/",target:"_blank",className:"external-link",rel:"noreferrer"},"here")," ","to learn more...")))},Ge=e=>({graphicContainer:(0,d.css)({display:"flex",justifyContent:"center",margin:"0 auto",width:"200px",height:"250px",padding:e.spacing(1),[e.breakpoints.up("md")]:{alignSelf:"flex-end",width:"300px",height:"auto",padding:e.spacing(1)},[e.breakpoints.up("lg")]:{alignSelf:"flex-end",width:"400px",height:"auto",padding:e.spacing(1)}}),text:(0,d.css)({display:"flex",justifyContent:"center",alignItems:"center",flexDirection:"column"}),title:(0,d.css)({marginBottom:"1.5rem"}),wrap:(0,d.css)({[e.breakpoints.up("md")]:{margin:"4rem auto auto auto",flexDirection:"row"},padding:"2rem",margin:"0 auto auto auto",display:"flex",alignItems:"center",flexDirection:"column",textAlign:"center"})});function Ue(e,t,n,r,a,i,s){try{var l=e[i](s),o=l.value}catch(e){return void n(e)}l.done?t(o):Promise.resolve(o).then(r,a)}function Je(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var i=e.apply(t,n);function s(e){Ue(i,r,a,s,l,"next",e)}function l(e){Ue(i,r,a,s,l,"throw",e)}s(void 0)}))}}function Ye(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Xe="showLogsButtonScene";class Ze extends s.Bs{onActivate(){const e={};var t,n;this.setVariableProviders(),s.jh.findByKeyAndType(this,Xe,ve.H).setState({hidden:!1}),this.state.contentScene||(e.contentScene=(n=null===(t=this.state.routeMatch)||void 0===t?void 0:t.params.breakdownLabel,(0,V.FT)()===V.G3.explore?new W.y({}):new c.Mn({drillDownLabel:n}))),this.setTagProviders(),this.setState(e),this.updatePatterns(this.state,(0,q.Ku)(this)),this.resetVariablesIfNotInUrl((0,q.ir)(this),(0,q.n5)(l.mB)),this.resetVariablesIfNotInUrl((0,q.iw)(this),(0,q.n5)(l._Y)),this._subs.add(this.subscribeToState((e=>{this.updatePatterns(e,(0,q.Ku)(this))})));const r=s.jh.getTimeRange(this);this._subs.add(r.subscribeToState(this.limitMaxInterval(r))),this._subs.add(this.subscribeToEvent(Ae,this.subscribeToPasteTimeEvent));const a=(0,q.ir)(this).state.filters,o=(0,q.oY)(this).state.filters,u=(0,q.YS)(this);u.updateFilters([...o,...a]),this._subs.add(u.subscribeToState(this.subscribeToCombinedFieldsVariable));const d=function(e){const t=new Pe;let n=null;const r=Ne.subscribe(i.SetPanelAttentionEvent,(e=>{"string"==typeof e.payload.panelId&&(n=e.payload.panelId)}));function a(e,t){return()=>{const r=s.jh.findObject(e,(e=>e.state.key===n&&e.isActive));r&&r instanceof s.Eb&&t(r)}}return t.addBinding({key:"p l",onTrigger:a(e,Be)}),t.addBinding({key:"a l",onTrigger:function(e,t){return()=>{s.jh.findAllObjects(e,(e=>e instanceof s.Eb&&e.isActive)).forEach((e=>{e&&e instanceof s.Eb&&t(e)}))}}(e,Be)}),t.addBinding({key:"p x",onTrigger:a(e,function(){var e=Te((function*(e){const t=(0,Le.iD)(e);t&&z.locationService.push(t)}));return function(t){return e.apply(this,arguments)}}())}),t.addBinding({key:"t c",onTrigger:()=>{var t;t=s.jh.getTimeRange(e),window.__grafanaSceneContext,window.__grafanaSceneContext=t,Ne.publish(new Me)}}),t.addBinding({key:"t v",onTrigger:()=>{const t=new Ae({updateUrl:!1});e.publishEvent(t),Ne.publish(t)}}),t.addBinding({key:"d r",onTrigger:()=>s.jh.getTimeRange(e).onRefresh()}),t.addBinding({key:"t z",onTrigger:()=>{Ie(e)}}),t.addBinding({key:"ctrl+z",onTrigger:()=>{Ie(e)}}),t.addBinding({key:"t a",onTrigger:()=>{const t=(0,Y.m0)(e);null==t||t.toAbsolute()}}),t.addBinding({key:"t left",onTrigger:()=>{$e(e,"left")}}),t.addBinding({key:"t right",onTrigger:()=>{$e(e,"right")}}),()=>{t.removeAll(),r.unsubscribe()}}(this);return()=>{d()}}setTagProviders(){this.setLabelsProviders()}setLabelsProviders(){const e=(0,q.cR)(this);e._getOperators=()=>(0,We.Ht)(e),e.setState({getTagKeysProvider:ue,getTagValuesProvider:ie})}limitMaxInterval(e){return(t,n)=>{const{jsonData:r}=J.plugin.meta;if(null==r?void 0:r.interval)try{var a;const l=i.rangeUtil.intervalToSeconds(null!==(a=null==r?void 0:r.interval)&&void 0!==a?a:"");if(!l)return;const o=t.value.to.diff(t.value.from,"seconds");if(o>l){if(o<=n.value.to.diff(n.value.from,"seconds"))e.setState({value:n.value,from:n.from,to:n.to});else{const t=new s.JZ(U.sp);e.setState({value:t.state.value,from:t.state.from,to:t.state.to})}(0,z.getAppEvents)().publish({type:i.AppEvents.alertWarning.name,payload:["Time range interval exceeds maximum interval configured by the administrator."]}),(0,P.EE)("all","interval_too_long",{attempted_duration_seconds:o,configured_max_interval:l})}}catch(e){console.error(e)}}}setVariableProviders(){const e=(0,q.iw)(this),t=(0,q.YS)(this);t._getOperators=()=>(0,We.Ht)(t),e.setState({getTagValuesProvider:this.getLevelsTagValuesProvider(),getTagKeysProvider:this.getLevelsTagKeysProvider()}),t.setState({getTagKeysProvider:this.getCombinedFieldsTagKeysProvider(),getTagValuesProvider:this.getCombinedFieldsTagValuesProvider()})}getCombinedFieldsTagKeysProvider(){return(e,t)=>{const n=(0,q.oY)(this),r=(0,q.ir)(this),a=(0,He.O)(l.sL),i=n.state.filters.filter((e=>e.key!==t)),o=r.state.filters.filter((e=>e.key!==t)),c=this.renderVariableFilters(l.mB,o),u=this.renderVariableFilters(l._P,i),d=a.replace(l.Gd,c).replace(l.w0,u);return pe({expr:s.jh.interpolate(this,d),sceneRef:this,timeRange:s.jh.getTimeRange(this).state.value,variableType:l.sL})}}getCombinedFieldsTagValuesProvider(){return(e,t)=>{const n=(0,He.O)(l.sL),r=(0,q.oY)(this),a=(0,q.ir)(this),i=r.state.filters.filter((e=>e.key!==t.key&&(0,te.BG)(e.operator))),o=a.state.filters.filter((e=>e.key!==t.key&&(0,te.BG)(e.operator))),c=this.renderVariableFilters(l.mB,o),u=this.renderVariableFilters(l._P,i),d=n.replace(l.Gd,c).replace(l.w0,u),p=s.jh.interpolate(this,d);return ae(t,e,p,this,s.jh.getTimeRange(this).state.value,l.sL)}}getLevelsTagKeysProvider(){return(e,t)=>{const n=e.state.filters.filter((e=>e.key!==t)),r=this.renderVariableFilters(l._Y,n),a=(0,He.O)(l._Y).replace(l.Gd,r);return pe({expr:s.jh.interpolate(this,a),sceneRef:this,timeRange:s.jh.getTimeRange(this).state.value,variableType:l._Y})}}getLevelsTagValuesProvider(){return(e,t)=>{const n=e.state.filters.filter((e=>e.key!==t.key&&e.operator===Z.w7.Equal)),r=this.renderVariableFilters(l._Y,n),a=(0,He.O)(l._Y).replace(l.Gd,r),i=s.jh.interpolate(this,a);return ae(t,e,i,this,s.jh.getTimeRange(this).state.value,l._Y)}}renderVariableFilters(e,t){if(e===l.mB)return(0,H.ZX)(t);if(e===l._P)return(0,H.E3)(t);if(e===l._Y)return(0,H.E3)(t);{const e=new Error("getFieldsTagValuesProvider only supports fields, metadata, and levels");throw v.v.error(e),e}}resetVariablesIfNotInUrl(e,t){const n=z.locationService.getLocation();null===new URLSearchParams(n.search).get(t)&&e.setState({filters:[]})}updatePatterns(e,t){var n;const r=(0,Qe.M)(null!==(n=e.patterns)&&void 0!==n?n:[]);t.changeValueTo(r)}getUrlState(){return{patterns:JSON.stringify(this.state.patterns)}}updateFromUrl(e){const t={};e.patterns&&"string"==typeof e.patterns&&(t.patterns=JSON.parse(e.patterns)),this.setState(t)}constructor(e){var t,n;const{variablesScene:r,unsub:a}=function(e,t){const n=new s.H9({name:l.MB,datasource:l.eL,layout:"combobox",label:"Labels",allowCustomValue:!0,filters:null!=t?t:[],expressionBuilder:H.VW,hide:Q.zL.dontHide,key:"adhoc_service_filter",onAddCustomValue:H.c0});n._getOperators=function(){return Ve.II};const r=new s.H9({name:l.mB,label:"Detected fields",applyMode:"manual",layout:"combobox",expressionBuilder:H.ZX,hide:Q.zL.hideVariable,allowCustomValue:!0});r._getOperators=()=>Ve.II;const a=new s.H9({name:l._P,label:"Metadata",applyMode:"manual",layout:"combobox",expressionBuilder:e=>(0,H.E3)(e),hide:Q.zL.hideVariable,allowCustomValue:!0});a._getOperators=()=>Ve.II;const i=new s.H9({name:l.sL,label:"Fields",applyMode:"manual",layout:"combobox",hide:Q.zL.hideVariable,allowCustomValue:!0,onAddCustomValue:H.PP,skipUrlSync:!0}),c=new s.H9({name:l._Y,label:"Error levels",applyMode:"manual",layout:"vertical",expressionBuilder:H._q,hide:Q.zL.hideVariable,supportsMultiValueOperators:!0}),u=new s.H9({name:l.NW,hide:Q.zL.hideVariable,getTagKeysProvider:()=>Promise.resolve({replace:!0,values:[]}),getTagValuesProvider:()=>Promise.resolve({replace:!0,values:[]}),expressionBuilder:H.CY,layout:"horizontal"});u._getOperators=()=>Ve.eb;const d=new s.mI({name:l.EY,label:"Data source",value:e,pluginId:"loki"}),p=d.subscribeToState((e=>{const t=`${e.value}`;e.value&&(0,o.ke)(t)}));return{variablesScene:new s.Pj({variables:[d,n,r,c,a,i,new s.yP({name:l.uw,value:"",hide:Q.zL.hideVariable}),new s.H9({name:l.WM,hide:Q.zL.hideVariable,expressionBuilder:H.CY}),u,new K.m({name:l.QE,value:l.YN,skipUrlSync:!0,hide:Q.zL.hideVariable,options:[{value:l.YN,label:l.YN}]})]}),unsub:p}}(null!==(n=(0,o.QB)())&&void 0!==n?n:"grafanacloud-logs",e.initialFilters),c=[new s.G1({key:"vars-row__datasource-labels-timepicker-button",direction:"row",children:[new s.vA({body:new y({key:"vars-labels",layout:"vertical",include:[l.MB]})}),new ve.H({key:Xe,disabled:!0})]}),new y({key:"vars-metadata",layout:"vertical",include:[l._P]}),new y({key:"vars-fields",layout:"vertical",include:[l.mB]}),new y({key:M,layout:"horizontal",include:[l.EY]}),new y({key:B,layout:"vertical",include:[l.sL]}),new s.KE({key:"vars-timepicker"}),new s.WM({key:"vars-refresh"})];var u,d,p,g,h;"explore"===(0,V.FT)()&&z.config.featureToggles.exploreLogsAggregatedMetrics&&c.push(new G.s({key:"vars-toolbar",isOpen:!1})),super((g=function(e){for(var t=1;t{if(!(0,ze.B)(e.filters,null==t?void 0:t.filters)){const t=e.filters.filter((e=>(0,le.OH)(e))),n=e.filters.filter((e=>!(0,le.OH)(e)));(0,q.ir)(this).updateFilters(n),(0,q.oY)(this).updateFilters(t)}})),Ye(this,"subscribeToPasteTimeEvent",Je((function*(){const e=yield function(){return Re.apply(this,arguments)}();if(e.isError)return;const n=s.jh.getTimeRange(t),r="string"==typeof e.range.to?e.range.to:void 0,a="string"==typeof e.range.from?e.range.from:void 0,l=i.rangeUtil.convertRawToRange(e.range);n&&l?n.setState({value:l,to:r,from:a}):v.v.error(new Error("Invalid time range from clipboard"),{msg:"Invalid time range from clipboard",sceneTimeRange:typeof n,to:null!=r?r:"",from:null!=a?a:""})}))),this._subs.add(a),this.addActivationHandler(this.onActivate.bind(this)),(0,Y.hJ)(this).then((e=>{this.setState({ds:e})}))}}Ye(Ze,"Component",(({model:e})=>{const{body:t}=e.useState();return(0,q.S9)(e).state.options.length?t?a().createElement(t.Component,{model:t}):a().createElement(u.LoadingPlaceholder,{text:"Loading..."}):a().createElement(qe,null)}))},3626:(e,t,n)=>{n.d(t,{dm:()=>b,kz:()=>m,qV:()=>f});var r=n(2672),a=n(5959),i=n.n(a),s=n(4750),l=n(6089),o=n(2007),c=n(3143),u=n(4793),d=n(1220),p=n(8835);function g(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function h(e){for(var t=1;t{this.onFilterChange()})))}onFilterChange(){const e=(0,s.iw)(this);this.setState({options:e.state.filters.map((e=>{var t,n;return{text:null!==(n=null===(t=e.valueLabels)||void 0===t?void 0:t[0])&&void 0!==n?n:e.value,selected:!0,value:e.value}}))})}constructor(e){super(v(h({},e),{isLoading:!1,visible:!1,key:m,isOpen:!1})),g(this,"getTagValues",(()=>{var e,t;this.setState({isLoading:!0});const n=(0,s.iw)(this);var r;const a=null==n||null===(t=n.state)||void 0===t||null===(e=t.getTagValuesProvider)||void 0===e?void 0:e.call(t,n,null!==(r=n.state.filters[0])&&void 0!==r?r:{key:c.e4});null==a||a.then((e=>{Array.isArray(e.values)&&this.setState({isLoading:!1,options:e.values.map((e=>{var t;return{text:e.text,value:null!==(t=e.value)&&void 0!==t?t:e.text,selected:n.state.filters.some((t=>t.value===e.text))}}))})}))})),g(this,"updateFilters",((e,t)=>{var n;const r=(0,s.iw)(this),a=null===(n=this.state.options)||void 0===n?void 0:n.filter((e=>e.selected));var i;r.updateFilters(null!==(i=null==a?void 0:a.map((e=>({key:c.e4,operator:u.w7.Equal,value:e.text}))))&&void 0!==i?i:[],{skipPublish:e,forcePublish:t})})),g(this,"onChangeOptions",(e=>{var t;(0,p.bN)(),this.setState({options:null===(t=this.state.options)||void 0===t?void 0:t.map((t=>e.some((e=>e.value===t.value))?v(h({},t),{selected:!0}):v(h({},t),{selected:!1})))}),this.state.isOpen?this.updateFilters(!0):this.updateFilters(!1)})),g(this,"openSelect",(e=>{this.setState({isOpen:e})})),g(this,"onCloseMenu",(()=>{this.openSelect(!1),this.updateFilters(!1,!0)})),this.addActivationHandler(this.onActivate.bind(this))}}function b(e){const t=r.jh.findObject(e,(e=>e instanceof f));t instanceof f&&t.onFilterChange()}g(f,"Component",(({model:e})=>{const{options:t,isLoading:n,visible:a,isOpen:l}=e.useState(),c=(0,o.useStyles2)(y);return(0,s.iw)(e).useState(),a?i().createElement("div",{"data-testid":d.b.variables.levels.inputWrap},i().createElement(r.Zx,{layout:"vertical",label:"Log levels"}),i().createElement(o.MultiSelect,{"aria-label":"Log level filters",prefix:i().createElement(o.Icon,{size:"lg",name:"filter"}),placeholder:"All levels",className:c.flex,onChange:e.onChangeOptions,onCloseMenu:()=>e.onCloseMenu(),onOpenMenu:e.getTagValues,onFocus:()=>e.openSelect(!0),menuShouldPortal:!0,isOpen:l,isLoading:n,isClearable:!0,blurInputOnSelect:!1,closeMenuOnSelect:!1,openMenuOnFocus:!0,showAllSelectedWhenOpen:!0,hideSelectedOptions:!1,value:null==t?void 0:t.filter((e=>e.selected)),options:null==t?void 0:t.map((e=>({value:e.value,label:e.text})))})):null}));const y=e=>({flex:(0,l.css)({flex:"1"})})},5664:(e,t,n)=>{n.d(t,{Y:()=>S,F:()=>w});var r=n(2672),a=n(5959),i=n.n(a),s=n(4750),l=n(4793),o=n(2718),c=n(3241),u=n(6089),d=n(2007),p=n(4592);function g(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function h({onClick:e,props:t}){const[n,r]=(0,a.useState)(!1),s=(0,d.useStyles2)(v);return i().createElement(i().Fragment,null,i().createElement("span",null,i().createElement("div",{className:s.titleWrap},i().createElement("span",null,"Line filter"),i().createElement(d.IconButton,{onClick:e,name:"times",size:"xs","aria-label":"Remove line filter"})),i().createElement("span",{className:s.collapseWrap},i().createElement(p._,(l=function(e){for(var t=1;tr(!1),name:"table-collapse-all"}))));var l,o}const v=e=>({titleWrap:(0,u.css)({display:"flex",fontSize:e.typography.bodySmall.fontSize,marginBottom:e.spacing(.5),gap:e.spacing(1)}),collapseWrap:(0,u.css)({display:"flex"}),collapseBtn:(0,u.css)({marginLeft:e.spacing(1)})});var m=n(8835);function f(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function b(e){for(var t=1;t{"Enter"===e.key&&((0,m.bN)(),this.updateVariableLineFilter(n,y(b({},n),{value:t})))})),f(this,"onRegexToggle",(e=>{let t;switch(e.operator){case l.cK.match:t=l.cK.regex;break;case l.cK.negativeMatch:t=l.cK.negativeRegex;break;case l.cK.regex:t=l.cK.match;break;case l.cK.negativeRegex:t=l.cK.negativeMatch;break;default:throw new Error("Invalid operator!")}this.updateFilter(e,y(b({},e),{operator:t}),!1)})),f(this,"onToggleExclusive",(e=>{let t;switch(e.operator){case l.cK.match:t=l.cK.negativeMatch;break;case l.cK.negativeMatch:t=l.cK.match;break;case l.cK.regex:t=l.cK.negativeRegex;break;case l.cK.negativeRegex:t=l.cK.regex;break;default:throw new Error("Invalid operator!")}this.updateFilter(e,y(b({},e),{operator:t}),!1)})),f(this,"onCaseSensitiveToggle",(e=>{const t=e.key===l.ld.caseSensitive?l.ld.caseInsensitive:l.ld.caseSensitive;this.updateFilter(e,y(b({},e),{key:t}),!1)})),f(this,"onInputChange",((e,t)=>{this.updateFilter(t,y(b({},t),{value:e.target.value}),!0)})),f(this,"removeFilter",(e=>{(0,m.bN)();const t=(0,s.Gk)(this),n=t.state.filters.filter((t=>void 0!==t.keyLabel&&t.keyLabel!==e.keyLabel));t.setState({filters:n})})),f(this,"updateVariableLineFilter",((e,t,n=!1,r=!1)=>{const a=(0,s.Gk)(this),i=a.state.filters.filter((t=>void 0!==t.keyLabel&&t.keyLabel!==e.keyLabel));a.updateFilters([{keyLabel:e.keyLabel,key:t.key,operator:t.operator,value:t.value},...i],{skipPublish:n,forcePublish:r}),(0,o.EE)(o.NO.service_details,o.ir.service_details.search_string_in_variables_changed,{searchQueryLength:e.value.length,containsLevel:e.value.toLowerCase().includes("level"),operator:t.operator,caseSensitive:t.key})})),f(this,"updateVariableDebounced",(0,c.debounce)(((e,t,n=!1,r=!1)=>{this.updateVariableLineFilter(e,t,n,r)}),1e3))}}function w(e){e.sort(((e,t)=>{var n,r;return parseInt(null!==(n=e.keyLabel)&&void 0!==n?n:"0",10)-parseInt(null!==(r=t.keyLabel)&&void 0!==r?r:"0",10)}))}function O(e){return{lineFiltersWrap:(0,u.css)({label:"lineFiltersWrap",display:"flex",flexWrap:"wrap",gap:`${e.spacing(.25)} ${e.spacing(2)}`})}}f(S,"Component",(({model:e})=>{const t=(0,s.Gk)(e),{filters:n}=t.useState(),r=(0,d.useStyles2)(O);return w(n),n.length?i().createElement("div",{className:r.lineFiltersWrap},n.map((t=>{const n={lineFilter:t.value,regex:t.operator===l.cK.regex||t.operator===l.cK.negativeRegex,caseSensitive:t.key===l.ld.caseSensitive,exclusive:e.isFilterExclusive(t),handleEnter:(n,r)=>e.handleEnter(n,t.value,t),setExclusive:()=>e.onToggleExclusive(t),updateFilter:(n,r)=>e.updateFilter(t,y(b({},t),{value:n}),r),onRegexToggle:()=>e.onRegexToggle(t),onInputChange:n=>e.onInputChange(n,t),onCaseSensitiveToggle:()=>e.onCaseSensitiveToggle(t)};return i().createElement(h,{key:t.keyLabel,onClick:()=>e.removeFilter(t),props:n})}))):null}))},6059:(e,t,n)=>{n.d(t,{H:()=>g});var r=n(2672),a=n(2007),i=n(5959),s=n.n(i),l=n(6089),o=n(8835),c=n(4750),u=n(1220),d=n(5111);function p(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class g extends r.Bs{onActivate(){const e=(0,c.cR)(this),t=e.state.filters.some((e=>(0,d.BG)(e.operator)));this.setState({disabled:!t}),e.subscribeToState((e=>{const t=e.filters.some((e=>(0,d.BG)(e.operator)));this.setState({disabled:!t})}))}constructor(e){super(function(e){for(var t=1;t{const e=(0,c.cR)(this).state.filters.find((e=>(0,d.BG)(e.operator)));return e?(0,o.k9)(e.key,e.value):""})),this.addActivationHandler(this.onActivate.bind(this))}}function h(e){return{button:(0,l.css)({[e.breakpoints.down("lg")]:{alignSelf:"flex-end"},[e.breakpoints.down("md")]:{marginTop:e.spacing(1),alignSelf:"flex-start"},alignSelf:"flex-start",marginTop:"22px"})}}p(g,"Component",(({model:e})=>{const{disabled:t,hidden:n}=e.useState(),r=(0,a.useStyles2)(h);if(!0===n)return null;const i=e.getLink();return s().createElement(a.LinkButton,{"data-testid":u.b.index.header.showLogsButton,disabled:t||!i,fill:"outline",className:r.button,href:i},"Show logs")}))},4002:(e,t,n)=>{n.d(t,{s:()=>v});var r=n(2672),a=n(2007),i=n(5959),s=n.n(i),l=n(6089),o=n(8531),c=n(2718),u=n(1105),d=n(2533),p=n(1220);function g(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const h=`${d.id}.serviceSelection.aggregatedMetrics`;class v extends r.Bs{constructor(e){const t=localStorage.getItem(h),n=o.config.featureToggles.exploreLogsAggregatedMetrics&&"false"!==t;var r;super(function(e){for(var t=1;t{const e=!this.state.options.aggregatedMetrics.active;(0,c.EE)(c.NO.service_selection,c.ir.service_selection.aggregated_metrics_toggled,{enabled:e}),localStorage.setItem(h,e.toString()),this.setState({options:{aggregatedMetrics:{active:e,disabled:this.state.options.aggregatedMetrics.disabled,userOverride:e}}})})),g(this,"onToggleOpen",(e=>{this.setState({isOpen:e})}))}}function m(e){return{popover:(0,l.css)({display:"flex",padding:e.spacing(2),flexDirection:"column",background:e.colors.background.primary,boxShadow:e.shadows.z3,borderRadius:e.shape.radius.default,border:`1px solid ${e.colors.border.weak}`,zIndex:1,marginRight:e.spacing(2)}),heading:(0,l.css)({fontWeight:e.typography.fontWeightMedium,paddingBottom:e.spacing(2)}),options:(0,l.css)({display:"grid",gridTemplateColumns:"1fr 50px",rowGap:e.spacing(1),columnGap:e.spacing(2),alignItems:"center"})}}g(v,"Component",(({model:e})=>{const{isOpen:t,options:n}=e.useState(),r=(0,a.useStyles2)(m);return n.aggregatedMetrics?s().createElement(a.Dropdown,{overlay:()=>s().createElement("div",{className:r.popover,onClick:e=>e.stopPropagation()},s().createElement("div",{className:r.heading},"Query options"),s().createElement("div",{className:r.options},s().createElement("div",{title:"Aggregated metrics will return service queries results much more quickly, but with lower resolution"},"Aggregated metrics"),s().createElement("span",{title:n.aggregatedMetrics.disabled?`Aggregated metrics can only be enabled for queries starting after ${u.X.toLocaleString()}`:""},s().createElement(a.Switch,{label:"Toggle aggregated metrics","data-testid":p.b.index.aggregatedMetricsToggle,value:n.aggregatedMetrics.active,disabled:n.aggregatedMetrics.disabled,onChange:e.toggleAggregatedMetricsOverride})))),placement:"bottom",onVisibleChange:e.onToggleOpen},s().createElement(a.ToolbarButton,{icon:"cog",variant:"canvas",isOpen:t,"data-testid":p.b.index.aggregatedMetricsMenu})):s().createElement(s().Fragment,null)}))},4106:(e,t,n)=>{n.d(t,{Oo:()=>h,c:()=>g,sp:()=>d});var r=n(2672),a=n(892),i=n(7781),s=n(8538),l=n(8835),o=n(2871),c=n(8315),u=n(8831);const d={from:"now-15m",to:"now"};function p(e){return new r.P1({body:new s.P({$timeRange:new r.JZ(d),routeMatch:e})})}function g(){return new r.jD({title:"Grafana Logs Drilldown",url:(0,u._F)(a.G3.explore),layout:i.PageLayoutType.Custom,preserveUrlKeys:a.Zt,routePath:(0,u._F)(a.G3.explore),getScene:e=>p(e),drilldowns:[{routePath:a.HU.logs,getPage:(e,t)=>v(e,t,a.G3.logs),defaultRoute:!0},{routePath:a.HU.labels,getPage:(e,t)=>v(e,t,a.G3.labels)},{routePath:a.HU.patterns,getPage:(e,t)=>v(e,t,a.G3.patterns)},{routePath:a.HU.fields,getPage:(e,t)=>v(e,t,a.G3.fields)},{routePath:a.KL.label,getPage:(e,t)=>m(e,t,a._J.label)},{routePath:a.KL.field,getPage:(e,t)=>m(e,t,a._J.field)},{routePath:"*",getPage:()=>h()}]})}function h(){return new r.jD({title:"",url:u.Gy,getScene:()=>new r.P1({body:new r.G1({direction:"column",children:[]})}),hideFromBreadcrumbs:!0,routePath:"*",$behaviors:[()=>{(0,l.Ns)()}]})}function v(e,t,n){const{labelName:s,labelValue:l}=(0,a.XJ)(e);return new r.jD({title:(0,c.Zr)(n),layout:i.PageLayoutType.Custom,url:a.bw[n](l,s),preserveUrlKeys:a.tm,getParentPage:()=>t,getScene:e=>p(e)})}function m(e,t,n){const{labelName:s,labelValue:l,breakdownLabel:u}=(0,a.XJ)(e);if(!u){const e=new Error("Breakdown value missing!");throw o.v.error(e,{msg:"makeBreakdownValuePage: Breakdown value missing!",labelName:s,labelValue:l,breakdownLabel:null!=u?u:""}),e}return new r.jD({title:(0,c.Zr)(u),layout:i.PageLayoutType.Custom,url:a.mC[n](l,s,u),preserveUrlKeys:a.tm,getParentPage:()=>t,getScene:e=>p(e)})}},7085:(e,t,n)=>{n.d(t,{ls:()=>T,Ci:()=>D,GD:()=>N,iD:()=>I,K_:()=>R});var r=n(2672),a=n(5959),i=n.n(a),s=n(7781),l=n(8531),o=n(2007),c=n(9829),u=(n(1220),n(2718)),d=n(227),p=n(4011),g=n(9186);var h=n(8538),v=n(2871),m=n(7608);function f(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function b(e){for(var t=1;t{(0,c.hJ)(this).then((e=>{this.setState({ds:e})})),this._subs.add(this.subscribeToState(((e,t)=>{this.state.queries.length||this.getQueries(),!this.state.context&&this.state.queries.length&&this.getContext()})))})),f(this,"getQueries",(()=>{const e=r.jh.getData(this),t=(0,c.UX)(e,(e=>e instanceof r.dt),r.dt);if(t){const e=this.state.frame?w(this.state.frame):null,n=t.state.queries.map((n=>{var a;return y(b({},n),{expr:r.jh.interpolate(t,n.expr),legendFormat:(null==e?void 0:e.name)?`{{ ${e.name} }}`:r.jh.interpolate(t,n.legendFormat),datasource:null!==(a=n.datasource)&&void 0!==a?a:void 0})}));JSON.stringify(n)!==JSON.stringify(this.state.queries)&&this.setState({queries:n})}})),f(this,"getFieldConfig",(()=>{var e;const t=(0,c.UX)(this,(e=>e instanceof r.Eb),r.Eb),n=r.jh.getData(this),a=null==n||null===(e=n.state.data)||void 0===e?void 0:e.series;let i=null==t?void 0:t.state.fieldConfig;if(i&&(null==a?void 0:a.length))for(const e of a)for(const t of e.fields){const e=Object.keys(t.config).map((e=>({id:e,value:t.config[e]}))),n=i.overrides.find((e=>{var n,r;return e.matcher.options===(null!==(r=null!==(n=t.config.displayNameFromDS)&&void 0!==n?n:t.config.displayName)&&void 0!==r?r:t.name)&&"byName"===e.matcher.id}));var s,l;n||i.overrides.unshift({matcher:{id:"byName",options:null!==(l=null!==(s=t.config.displayNameFromDS)&&void 0!==s?s:t.config.displayName)&&void 0!==l?l:t.name},properties:e}),n&&JSON.stringify(n.properties)!==JSON.stringify(e)&&(n.properties=e)}return i})),f(this,"getContext",(()=>{const e=this.getFieldConfig(),{queries:t,ds:n,labelName:a,fieldName:i,type:s}=this.state,l=r.jh.getTimeRange(this);if(!l||!t||!(null==n?void 0:n.uid))return;const o={origin:"Grafana Logs Drilldown",type:null!=s?s:"timeseries",queries:t,timeRange:b({},l.state.value),datasource:{uid:n.uid},url:window.location.href,id:`${JSON.stringify(t)}${a}${i}`,title:`${a}${i?` > ${i}`:""}`,logoPath:"public/plugins/grafana-lokiexplore-app/img/3d96a93cfcb32df74eef.svg",drillDownLabel:i,fieldConfig:e};JSON.stringify(o)!==JSON.stringify(this.state.context)&&this.setState({context:o})})),this.addActivationHandler(this.onActivate)}}f(S,"Component",(({model:e})=>{const{context:t}=e.useState(),{links:n}=(0,l.usePluginLinks)({extensionPointId:m.R6.MetricInvestigation,context:t});return i().createElement(i().Fragment,null,n.filter((e=>"grafana-investigations-app"===e.pluginId&&e.onClick)).map((e=>{var t;return i().createElement(o.IconButton,{tooltip:e.description,"aria-label":"extension-link-to-open-exploration",key:e.id,name:null!==(t=e.icon)&&void 0!==t?t:"panel-add",onClick:t=>{e.onClick&&e.onClick(t)}})})))}));const w=e=>{var t,n;const r=null!==(n=null===(t=e.fields[1])||void 0===t?void 0:t.labels)&&void 0!==n?n:{};if(1!==Object.keys(r).length)return;const a=Object.keys(r)[0];return{name:a,value:r[a]}};var O=n(5183),x=n(3102),E=n(8516),C=n(4836),k=n(3630),F=n(6089);function P(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const L="Add to investigation",j="investigations_divider",_="Investigations";var T=function(e){return e.timeseries="timeseries",e.histogram="histogram",e}({}),D=function(e){return e.collapsed="Collapse",e.expanded="Expand",e}({});class N extends r.Bs{addItem(e){this.state.body&&this.state.body.addItem(e)}setItems(e){this.state.body&&this.state.body.setItems(e)}constructor(e){var t,n,a;super((n=function(e){for(var t=1;t{var e,t,n,a,i,s,l;const o=[{text:"Navigation",type:"group"},{text:"Explore",iconClassName:"compass",href:I(this),onClick:()=>$(),shortcut:"p x"}];let u;try{u=r.jh.getAncestor(this,r.Eb)}catch(e){return void this.setState({body:new r.Lw({items:o})})}var p;this.setState({investigationsButton:new S({labelName:(null===(e=this.state.investigationOptions)||void 0===e?void 0:e.getLabelName)?null===(t=this.state.investigationOptions)||void 0===t?void 0:t.getLabelName():null===(n=this.state.investigationOptions)||void 0===n?void 0:n.labelName,fieldName:null===(a=this.state.investigationOptions)||void 0===a?void 0:a.fieldName,frame:null===(i=this.state.investigationOptions)||void 0===i?void 0:i.frame,type:null===(s=this.state.investigationOptions)||void 0===s?void 0:s.type})}),this.state.addInvestigationsLink&&(null===(p=this.state.investigationsButton)||void 0===p||p.activate()),(this.state.panelType||(null==u?void 0:u.state.collapsible))&&function(e){e.push({text:"",type:"divider"}),e.push({text:"Visualization",type:"group"})}(o),(null==u?void 0:u.state.collapsible)&&function(e,t){const n=r.jh.getAncestor(t,r.Eb);e.push({text:n.state.collapsed?"Expand":"Collapse",iconClassName:n.state.collapsed?"table-collapse-all":"table-expand-all",onClick:()=>{const e=n.state.collapsed?"Expand":"Collapse",a=r.jh.getAncestor(t,r.G1);(0,E.Zb)(a,e),n.setState({collapsed:!n.state.collapsed}),(0,d.IW)("collapsed",e)}})}(o,this),this.state.panelType&&function(e,t){e.push({text:"histogram"!==t.state.panelType?"Histogram":"Time series",iconClassName:"histogram"!==t.state.panelType?"graph-bar":"chart-line",onClick:()=>{const e=r.jh.getAncestor(t,r.xK),n=r.jh.getAncestor(t,r.Eb).clone(),a=r.jh.getData(t).clone(),i=t.clone(),s=Array.isArray(n.state.headerActions)?n.state.headerActions.map((e=>e.clone())):n.state.headerActions;let l;l="histogram"!==t.state.panelType?r.d0.timeseries().setOverrides(O.jC):r.d0.histogram(),e.setState({body:l.setMenu(i).setTitle(n.state.title).setHeaderActions(s).setData(a).build()});const o="timeseries"!==t.state.panelType?"timeseries":"histogram";(0,d.IW)("panelType",o),i.setState({panelType:o});const u=(0,c.UX)(e,(e=>e instanceof x.E),x.E);u&&u.rebuildAvgFields(),B(o)}})}(o,this),this.setState({body:new r.Lw({items:o})}),this._subs.add(null===(l=this.state.investigationsButton)||void 0===l?void 0:l.subscribeToState((()=>{!function(e){const t=e.state.investigationsButton;if(t){var n;const o=M(t);var r;const c=null!==(r=null===(n=e.state.body)||void 0===n?void 0:n.state.items)&&void 0!==r?r:[],u=c.find((e=>e.text===L));var a,i,s,l;o&&(u?u&&(null===(a=e.state.body)||void 0===a||a.setItems(c.filter((e=>!1===[j,_,L].includes(e.text))))):(null===(i=e.state.body)||void 0===i||i.addItem({text:j,type:"divider"}),null===(s=e.state.body)||void 0===s||s.addItem({text:_,type:"group"}),null===(l=e.state.body)||void 0===l||l.addItem({text:L,iconClassName:"plus-square",onClick:e=>A(e,t)})))}}(this)})))}))}}P(N,"Component",(({model:e})=>{const{body:t}=e.useState();return t?i().createElement(t.Component,{model:t}):i().createElement(i().Fragment,null)}));const I=e=>{const t=r.jh.getAncestor(e,h.P),n=r.jh.getData(e);let a=n instanceof r.dt?n:(0,c.oh)(n)[0];if(!a){const t=r.jh.findObject(e,(e=>e instanceof C.u||e instanceof k.u));if(t){const e=r.jh.getData(t);a=e instanceof r.dt?e:(0,c.oh)(e)[0]}else v.v.error(new Error("Unable to locate query runner!"),{msg:"PanelMenu - getExploreLink: Unable to locate query runner!"})}const i=a.state.queries[0].expr;return((e,t,n=!1)=>{t||(t=(0,c.u9)(e)),t=t.replace(/\s+/g," ").trimEnd();const a=(0,c.U4)(e),i=r.jh.getTimeRange(e).state.value,o=(0,d.N$)(e),u=(0,d.k5)(),h=function(){const e=new URLSearchParams(window.location.search).get("urlColumns");if(e)try{const t=(0,p.aJ)(JSON.parse(e));let n={};for(const e in t)n[e]=t[e];return n}catch(e){console.error(e)}}(),v=JSON.stringify({"loki-explore":{range:(0,s.toURLRange)(i.raw),queries:[{refId:"logs",expr:t,datasource:a}],panelsState:{logs:{displayedFields:o,visualisationType:u,columns:h,labelFieldName:"table"===u?g.bz:void 0}},datasource:a}});var m;const f=null!==(m=l.config.appSubUrl)&&void 0!==m?m:"",b=s.urlUtil.renderUrl(`${f}/explore`,{panes:v,schemaVersion:1});return n&&window.open(b,"_blank"),b})(t,r.jh.interpolate(e,i))},$=()=>{(0,u.EE)(u.NO.all,u.ir.all.open_in_explore_menu_clicked)},B=e=>{(0,u.EE)(u.NO.service_details,u.ir.service_details.change_viz_type,{newVizType:e})},M=e=>(0,l.getPluginLinkExtensions)({extensionPointId:m.R6.MetricInvestigation,context:e.state.context}).extensions[0],A=(e,t)=>{const n=M(t);n&&n.onClick&&n.onClick(e)},R=e=>({panelWrapper:(0,F.css)({width:"100%",height:"100%",label:"panel-wrapper",position:"absolute",display:"flex","button.show-on-hover":{opacity:1,visibility:"visible",background:"none","&:hover":{background:e.colors.secondary.shade}}})})},558:(e,t,n)=>{n.d(t,{Of:()=>S,Qt:()=>F,XI:()=>O,hi:()=>x,oR:()=>j,ts:()=>P,u7:()=>C,vn:()=>k});var r=n(5959),a=n.n(r),i=n(7781),s=n(2672),l=n(2718),o=n(3143),c=n(5218),u=n(2254),d=n(7097),p=n(4750),g=n(4793),h=n(9055),v=n(833),m=n(2871),f=n(6001),b=n(8835);function y(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class S extends i.BusEventBase{constructor(e,t,n,r){super(),y(this,"source",void 0),y(this,"operator",void 0),y(this,"key",void 0),y(this,"value",void 0),this.source=e,this.operator=t,this.key=n,this.value=r}}y(S,"type","add-filter");class w extends i.BusEventBase{constructor(e,t,n){super(),y(this,"key",void 0),y(this,"value",void 0),y(this,"operator",void 0),this.key=e,this.value=t,this.operator=n}}function O(e,t,n){const r="="===e.operator?"include":"exclude";F(e.key,e.value,r,t,n)}function x(e,t,n,r,a){const i=T(n,e,t);let s=i.state.filters.filter((t=>{const i=(0,p.z2)(n,t);return r&&a?!(t.key===e&&i.value===r&&t.operator===a):r?!(t.key===e&&i.value===r):a?!(t.key===e&&t.operator===a):!(t.key===e)}));t.publishEvent(new w(e,r,a),!0),i.setState({filters:s})}y(w,"type","add-filter");const E=e=>e===g.w7.gt||e===g.w7.gte?"greater":e===g.w7.lt||e===g.w7.lte?"lesser":void 0;function C(e,t,n,r){r||(r=L(e,t));const a=T(r,e,t),i=n?E(n):void 0;let s=a.state.filters.filter((t=>!(t.key===e&&(E(t.operator)===i||t.operator===g.w7.NotEqual))));a.setState({filters:s})}function k(e,t,n,r,a){const i=E(n);a||(a=L(e,r));const s=T(a,e,r);let l;a===o.mB&&(l=JSON.stringify({value:t,parser:(0,d.Ri)(e,r)}));let c=s.state.filters.filter((t=>!(t.key===e&&(E(t.operator)===i||t.operator===g.w7.NotEqual))));c=[...c,{key:e,operator:n,value:l||t,valueLabels:[t]}],s.setState({filters:c}),r.publishEvent(new S("filterButton",n,e,t),!0)}function F(e,t,n,r,a){(0,b.bN)(),a===o.MB&&(0,h._J)(e,t,r);const i=T(a,e,r);let s,l=t;a===o.mB?s=JSON.stringify({value:t,parser:(0,d.Ri)(e,r)}):a===o._Y&&"exclude"===n&&(l=`!${t}`);let c=i.state.filters.filter((r=>{const i=(0,p.z2)(a,r);return"include"===n?!(r.key===e&&r.operator===g.w7.NotEqual):"exclude"===n?!(r.key===e&&r.operator===g.w7.Equal):!(r.key===e&&i.value===t)}));const u=c.length!==i.state.filters.length;("include"===n||"exclude"===n||!u&&"toggle"===n)&&(c=[...c,{key:e,operator:"exclude"===n?g.w7.NotEqual:g.w7.Equal,value:s||t,valueLabels:[l]}]),i.setState({filters:c}),r.publishEvent(new S("filterButton",n,e,t),!0)}function P(e,t){return e===o.e4?o._Y:t}function L(e,t){var n,r;return(null===(r=(0,u.TG)(t))||void 0===r||null===(n=r.fields)||void 0===n?void 0:n.find((t=>t.name===e)))?o.MB:o.mB}class j extends s.Bs{onActivate(){const e=_(this.state.frame);if(e){const t=T(this.state.variableName,e.name,this);this.setFilterState(t),this._subs.add(t.subscribeToState(((e,n)=>{(0,v.B)(e.filters,n.filters)||this.setFilterState(t)})))}}setFilterState(e){const t=_(this.state.frame);if(!t)return void this.setState({isIncluded:!1,isExcluded:!1});const n=e.state.filters.find((e=>{const n=(0,f.OH)(t),r=(0,p.z2)(n?o._P:o.mB,e);return e.key===t.name&&r.value===t.value}));n?this.setState({isIncluded:n.operator===g.w7.Equal,isExcluded:n.operator===g.w7.NotEqual}):this.setState({isIncluded:!1,isExcluded:!1})}constructor(e){super(e),y(this,"onClick",(e=>{const t=_(this.state.frame);if(!t)return;F(t.name,t.value,e,this,this.state.variableName);const n=T(this.state.variableName,t.name,this);(0,l.EE)(l.NO.service_details,l.ir.service_details.add_to_filters_in_breakdown_clicked,{filterType:this.state.variableName,key:t.name,action:e,filtersLength:(null==n?void 0:n.state.filters.length)||0})})),this.addActivationHandler(this.onActivate.bind(this))}}y(j,"Component",(({model:e})=>{const{hideExclude:t,isExcluded:n,isIncluded:r}=e.useState();return a().createElement(c.F,{buttonFill:"outline",isIncluded:null!=r&&r,isExcluded:null!=n&&n,onInclude:()=>e.onClick("include"),onClear:()=>e.onClick("clear"),onExclude:()=>e.onClick("exclude"),hideExclude:t})}));const _=e=>{var t,n;const r=null!==(n=null===(t=e.fields[1])||void 0===t?void 0:t.labels)&&void 0!==n?n:{};if(1!==Object.keys(r).length)return void m.v.warn("getFilter: unexpected empty labels");const a=Object.keys(r)[0];return{name:a,value:r[a]}},T=(e,t,n)=>e===o.mB||e===o._P?(0,p.YS)(n):(0,p.bY)(P(t,e),n)},1022:(e,t,n)=>{n.d(t,{G:()=>v,x:()=>g});var r=n(2672),a=n(5959),i=n.n(a),s=n(5631),l=n(6261),o=n(8810),c=n(4105),u=n(7781),d=n(2871);function p(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class g extends u.BusEventBase{}p(g,"type","breakdown-search-reset");const h={};class v extends r.Bs{filterValues(e){const t=r.jh.findObject(this,(e=>e instanceof o.O||e instanceof c.J6));if(t instanceof o.O||t instanceof c.J6){h[this.cacheKey]=e;const n=r.jh.findDescendents(t,s.h);null==n||n.forEach((t=>{t.state.body.isActive&&t.filterByString(e)}))}else d.v.warn("unable to find Breakdown scene",{typeofBody:typeof t,filter:e})}constructor(e){var t;super({filter:null!==(t=h[e])&&void 0!==t?t:""}),p(this,"cacheKey",void 0),p(this,"onValueFilterChange",(e=>{this.setState({filter:e.target.value}),this.filterValues(e.target.value)})),p(this,"clearValueFilter",(()=>{this.setState({filter:""}),this.filterValues("")})),p(this,"reset",(()=>{this.setState({filter:""}),h[this.cacheKey]=""})),this.cacheKey=e}}p(v,"Component",(({model:e})=>{const{filter:t}=e.useState();return i().createElement(l.D,{value:t,onChange:e.onValueFilterChange,onClear:e.clearValueFilter,placeholder:"Search for value"})}))},5631:(e,t,n)=>{n.d(t,{h:()=>b});var r=n(5959),a=n.n(r),i=n(7781),s=n(2672),l=n(5722),o=n(4932),c=n(4144),u=n(2007),d=n(6089),p=n(1022),g=n(1269),h=n(738),v=n(8516),m=n(2871);function f(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class b extends s.Bs{performRepeat(e){const t=[],n=(0,l.sortSeries)(e.series,this.sortBy,this.direction);for(let e=0;ee.isActive&&e.state.key===v.s$));if(n[0]instanceof s.G1){const t=s.jh.findDescendents(n[0],s.Eb)[0];t instanceof s.Eb?t.setState({$data:new s.Es({transformations:[()=>{return t=e[0],e=>e.pipe((0,g.map)((e=>{if(!t||!t.length)return e;let n=[];return e.forEach((e=>{const r=(0,c.ee)(e);t.includes(r)&&n.push(e)})),n})));var t}]})}):m.v.warn("filterSummaryChart: VizPanel not found",{typeofPanel:typeof t})}else m.v.warn("filterSummaryChart: SceneFlexItem not found",{typeofGraphParent:typeof n})}}constructor(e){var{sortBy:t,direction:n,getFilter:r}=e;super(function(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}(e,["sortBy","direction","getFilter"])),f(this,"unfilteredChildren",[]),f(this,"sortBy",void 0),f(this,"direction",void 0),f(this,"sortedSeries",[]),f(this,"getFilter",void 0),f(this,"sort",((e,t)=>{const n=s.jh.getData(this);this.sortBy=e,this.direction=t,n.state.data&&this.performRepeat(n.state.data)})),f(this,"iterateFrames",(e=>{if(s.jh.getData(this).state.data)for(let t=0;t{let t=[];this.iterateFrames(((e,n)=>{const r=(0,c.ee)(e[n]);t.push(r)})),(0,o.X)(t,e,(e=>{e&&e[0]?this.filterFrames((t=>{const n=(0,c.ee)(t);return e[0].includes(n)})):this.filterFrames((()=>!0)),this.filterSummaryChart(e)}))})),f(this,"filterFrames",(e=>{const t=[];if(this.iterateFrames(((n,r)=>{e(n[r])&&t.push(this.unfilteredChildren[r])})),0===t.length){const e=this.getFilter();this.state.body.setState({children:[y(e,this.clearFilter)]})}else this.state.body.setState({children:t})})),f(this,"clearFilter",(()=>{this.publishEvent(new p.x,!0)})),this.sortBy=t,this.direction=n,this.getFilter=r,this.addActivationHandler((()=>{const e=s.jh.getData(this);this._subs.add(e.subscribeToState(((e,t)=>{var n,r,a,s;((null===(n=e.data)||void 0===n?void 0:n.state)===i.LoadingState.Done||(null===(r=e.data)||void 0===r?void 0:r.state)===i.LoadingState.Streaming&&e.data.series.length>(null!==(s=null===(a=t.data)||void 0===a?void 0:a.series.length)&&void 0!==s?s:0))&&this.performRepeat(e.data)}))),e.state.data&&this.performRepeat(e.state.data)}))}}function y(e,t){return new s.G1({direction:"row",children:[new s.vA({body:new s.dM({reactNode:a().createElement("div",{className:S.alertContainer},a().createElement(u.Alert,{title:"",severity:"info",className:S.noResultsAlert},"No values found matching “",e,"”",a().createElement(u.Button,{className:S.clearButton,onClick:t},"Clear filter")))})})]})}f(b,"Component",(({model:e})=>{const{body:t}=e.useState();return a().createElement(t.Component,{model:t})}));const S={alertContainer:(0,d.css)({flexGrow:1,display:"flex",justifyContent:"center",alignItems:"center"}),noResultsAlert:(0,d.css)({minWidth:"30vw",flexGrow:0}),clearButton:(0,d.css)({marginLeft:"1.5rem"})}},3782:(e,t,n)=>{n.d(t,{a:()=>c});var r=n(2672),a=n(4482),i=n(2007),s=n(5959),l=n.n(s),o=n(4105);class c extends r.Bs{static Component({model:e}){const{type:t}=e.useState();return l().createElement(a.R,null,l().createElement(i.Alert,{title:"",severity:"warning"},"We did not find any ",t," for the given timerange. Please"," ",l().createElement("a",{className:o.ZI.link,href:"https://forms.gle/1sYWCTPvD72T1dPH9",target:"_blank",rel:"noopener noreferrer"},"let us know")," ","if you think this is a mistake."))}}},4462:(e,t,n)=>{n.d(t,{f:()=>d,u:()=>u});var r=n(6089),a=n(5959),i=n.n(a),s=n(2007),l=n(1220),o=n(7918);function c(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function u({options:e,value:t,onChange:n,label:r}){const l=(0,s.useStyles2)(p),[o,c]=(0,a.useState)(!1),u=e.map((e=>({label:e.label,value:e.value})));return i().createElement(s.InlineField,{className:l.selectWrapper,label:r},i().createElement(s.Select,{options:u,value:t,onOpenMenu:()=>c(!0),onCloseMenu:()=>c(!1),onChange:e=>n(e.value),className:l.select,prefix:o?void 0:i().createElement(s.Icon,{name:"search"})}))}function d({options:e,value:t,onChange:n,label:r,selectOption:u,isLoading:d,initialFilter:g}){var h;const v=(0,s.useStyles2)(p),[m,f]=(0,a.useState)(!1),[b,y]=(0,a.useState)(g),S=e.map((e=>({label:e.label,value:e.value}))),w=b&&t&&(null===(h=b.value)||void 0===h?void 0:h.includes(t))?[b,...S]:S,O=null==w?void 0:w.find((e=>e.value===t));return i().createElement(s.InlineField,{className:v.serviceSceneSelectWrapper,label:r},i().createElement(s.Select,{isLoading:d,"data-testid":l.b.exploreServiceSearch.search,placeholder:"Search values",options:w,isClearable:!0,value:t,onOpenMenu:()=>f(!0),onCloseMenu:()=>f(!1),allowCustomValue:!0,prefix:m||(null==O?void 0:O.__isNew__)?void 0:i().createElement(s.Icon,{name:"search"}),onChange:(e,t)=>{return(null==e?void 0:e.__isNew__)||(null==e?void 0:e.icon)?(y((r=function(e){for(var t=1;t{const r=t;return"input-change"===r.action?n(e):"menu-close"===r.action&&r.prevInputValue?(y({value:(0,o.vC)(r.prevInputValue),label:r.prevInputValue,icon:"filter",__isNew__:!0}),n(r.prevInputValue)):void 0}}))}function p(e){return{input:(0,r.css)({marginBottom:0}),select:(0,r.css)({maxWidth:e.spacing(64),minWidth:e.spacing(20)}),selectWrapper:(0,r.css)({label:"field-selector-select-wrapper",maxWidth:e.spacing(62.5),minWidth:e.spacing(20),marginRight:e.spacing.x1,marginBottom:0}),serviceSceneSelectWrapper:(0,r.css)({label:"service-select-wrapper",maxWidth:e.spacing(62.5),minWidth:e.spacing(20),marginRight:e.spacing.x1,marginBottom:0})}}},4836:(e,t,n)=>{n.d(t,{u:()=>L});var r,a,i,s=n(2672),l=n(7918),o=n(227),c=n(7781),u=n(738),d=n(5183),p=n(5631),g=n(2007),h=n(7097),v=n(4144),m=n(3143),f=n(5959),b=n.n(f),y=n(4105),S=n(2254),w=n(5722),O=n(4750),x=n(7085),E=n(8516),C=n(833),k=n(2871);function F(e,t,n,r,a,i,s){try{var l=e[i](s),o=l.value}catch(e){return void n(e)}l.done?t(o):Promise.resolve(o).then(r,a)}function P(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var i=e.apply(t,n);function s(e){F(i,r,a,s,l,"next",e)}function l(e){F(i,r,a,s,l,"throw",e)}s(void 0)}))}}class L extends s.Bs{static Selector({model:e}){const{body:t}=e.useState();return t instanceof u.U?b().createElement(b().Fragment,null,t&&b().createElement(u.U.Selector,{model:t})):b().createElement(b().Fragment,null)}getTagKey(){const e=(0,O.Hj)(this);return String(e.state.value)}onActivate(){var e;const t=this.buildQuery();this.setState({body:this.build(t),$data:this.buildQueryRunner()}),this._subs.add(null===(e=this.state.$data)||void 0===e?void 0:e.subscribeToState((e=>{this.onValuesDataQueryChange(e,t)}))),this.runQuery(),this.setSubscriptions()}buildQueryRunner(){const e=this.buildQuery();return(0,d.rS)([e],{runQueriesMode:"manual"})}buildQuery(){const e=this.getTagKey(),t=(0,O.ir)(this),n=(0,S.rD)(this),r=(0,h.Jl)(e,t,n),{variableName:a,filterExpression:i}=this.removeFieldLabelFromVariableInterpolation(),o=s.jh.interpolate(this,r.replace(`\${${a}}`,i));return(0,l.l)(o,{legendFormat:`{{${e}}}`,refId:e})}setSubscriptions(){this._subs.add(s.jh.getTimeRange(this).subscribeToState((()=>{this.runQuery()}))),this._subs.add((0,O.Gk)(this).subscribeToState(((e,t)=>{(0,C.B)(e.filters,t.filters)||this.runQuery()}))),this._subs.add((0,O.Ku)(this).subscribeToState(((e,t)=>{e.value!==t.value&&this.runQuery()}))),this._subs.add((0,O.cR)(this).subscribeToState(((e,t)=>{(0,C.B)(e.filters,t.filters)||this.runQuery()}))),this._subs.add((0,O.iw)(this).subscribeToState(((e,t)=>{(0,C.B)(e.filters,t.filters)||this.runQuery()})));const{parser:e}=this.getParserForThisField();"structuredMetadata"!==e?this.setFieldParserSubscriptions():this.setMetadataParserSubscriptions()}setMetadataParserSubscriptions(){const e=this.getTagKey();var t=this;this._subs.add((0,O.ir)(this).subscribeToState(function(){var e=P((function*(e,n){(0,C.B)(e.filters,n.filters)||t.runQuery()}));return function(t,n){return e.apply(this,arguments)}}()));var n=this;this._subs.add((0,O.oY)(this).subscribeToState(function(){var t=P((function*(t,r){(0,C.B)(t.filters.filter((t=>t.key!==e)),r.filters.filter((t=>t.key!==e)))||n.runQuery()}));return function(e,n){return t.apply(this,arguments)}}()))}setFieldParserSubscriptions(){const e=this.getTagKey();var t=this;this._subs.add((0,O.oY)(this).subscribeToState(function(){var e=P((function*(e,n){(0,C.B)(e.filters,n.filters)||t.runQuery()}));return function(t,n){return e.apply(this,arguments)}}()));var n=this;this._subs.add((0,O.ir)(this).subscribeToState(function(){var t=P((function*(t,r){(0,C.B)(t.filters.filter((t=>t.key!==e)),r.filters.filter((t=>t.key!==e)))||n.runQuery()}));return function(e,n){return t.apply(this,arguments)}}()))}rebuildQuery(){var e;const t=this.buildQuery();null===(e=this.getSceneQueryRunner())||void 0===e||e.setState({queries:[t]})}runQuery(){this.rebuildQuery();const e=this.getSceneQueryRunner();null==e||e.runQueries()}getSceneQueryRunner(){if(this.state.$data){const e=s.jh.findDescendents(this.state.$data,s.dt);if(1!==e.length){const e=new Error("Unable to find query runner in value breakdown!");throw k.v.error(e,{msg:"FieldValuesBreakdownScene: Unable to find query runner in value breakdown!"}),e}return e[0]}k.v.warn("FieldValuesBreakdownScene: Query is attempting to execute, but query runner is undefined!")}removeFieldLabelFromVariableInterpolation(){const e=this.getTagKey();let t,n;if("structuredMetadata"===this.getQueryParser()){const r=(0,O.oY)(this);n=m._P,t=(0,l.E3)(r.state.filters,[e])}else{n=m.mB;const r=(0,O.ir)(this);t=(0,l.ZX)(r.state.filters,[e])}return{filterExpression:t,variableName:n}}onValuesDataQueryChange(e,t){var n,r;(null===(n=e.data)||void 0===n?void 0:n.state)===c.LoadingState.Done&&this.state.body instanceof s.dM&&this.setState({body:this.build(t)}),(null===(r=e.data)||void 0===r?void 0:r.state)===c.LoadingState.Error&&this.setErrorState(e.data.errors)}setErrorState(e){this.setState({body:new s.dM({reactNode:b().createElement(g.Alert,{title:"Something went wrong with your request",severity:"error"},null==e?void 0:e.map(((e,t)=>b().createElement("div",{key:t},e.status&&b().createElement(b().Fragment,null,b().createElement("strong",null,"Status"),": ",e.status," ",b().createElement("br",null)),e.message&&b().createElement(b().Fragment,null,b().createElement("strong",null,"Message"),": ",e.message," ",b().createElement("br",null)),e.traceId&&b().createElement(b().Fragment,null,b().createElement("strong",null,"TraceId"),": ",e.traceId)))))})})}build(e){const{optionValue:t,parser:n}=this.getParserForThisField(),{sortBy:r,direction:a}=(0,o.vs)("fields",w.DEFAULT_SORT_BY,"desc"),i=s.jh.getAncestor(this,y.J6),l=()=>{var e;return null!==(e=i.state.search.state.filter)&&void 0!==e?e:""};return new u.U({options:[{value:"single",label:"Single"},{value:"grid",label:"Grid"},{value:"rows",label:"Rows"}],active:"grid",layouts:[new s.G1({direction:"column",children:[new s.dM({reactNode:b().createElement(y.J6.LabelsMenu,{model:i})}),new s.vA({minHeight:300,body:s.d0.timeseries().setTitle(t).setMenu(new x.GD({})).build()})]}),new s.G1({direction:"column",children:[new s.dM({reactNode:b().createElement(y.J6.LabelsMenu,{model:i})}),new E.s7({title:t,type:"field",tagKey:this.getTagKey()}),new s.dM({reactNode:b().createElement(y.J6.ValuesMenu,{model:i})}),new p.h({body:new s.gF({templateColumns:y.OK,autoRows:"200px",children:[new s.vA({body:new s.dM({reactNode:b().createElement(g.LoadingPlaceholder,{text:"Loading..."})})})],isLazy:!0}),getLayoutChild:(0,h.Zp)(v.ee,(null==e?void 0:e.expr.includes("count_over_time"))?g.DrawStyle.Bars:g.DrawStyle.Line,"structuredMetadata"===n?m._P:m.mB,s.jh.getAncestor(this,y.J6).state.sort,t),sortBy:r,direction:a,getFilter:l})]}),new s.G1({direction:"column",children:[new s.dM({reactNode:b().createElement(y.J6.LabelsMenu,{model:i})}),new E.s7({title:t,type:"field",tagKey:this.getTagKey()}),new s.dM({reactNode:b().createElement(y.J6.ValuesMenu,{model:i})}),new p.h({body:new s.gF({templateColumns:"1fr",autoRows:"200px",children:[new s.vA({body:new s.dM({reactNode:b().createElement(g.LoadingPlaceholder,{text:"Loading..."})})})],isLazy:!0}),getLayoutChild:(0,h.Zp)(v.ee,(null==e?void 0:e.expr.includes("count_over_time"))?g.DrawStyle.Bars:g.DrawStyle.Line,"structuredMetadata"===n?m._P:m.mB,s.jh.getAncestor(this,y.J6).state.sort,t),sortBy:r,direction:a,getFilter:l})]})]})}getParserForThisField(){const e=(0,O.Hj)(this),t=String(e.state.value);return{optionValue:t,parser:(0,h.Ri)(t,this)}}getParserForFields(){return(0,h.k$)((0,O.ir)(this))}getQueryParser(){const{parser:e}=this.getParserForThisField(),t=this.getParserForFields();return e===t?t:void 0===e?"mixed":"structuredMetadata"===e?t:"structuredMetadata"===t?e:"mixed"}constructor(e){super(e),this.addActivationHandler(this.onActivate.bind(this))}}i=({model:e})=>{const{body:t}=e.useState(),n=(0,g.useStyles2)(x.K_);return t?b().createElement("span",{className:n.panelWrapper},t&&b().createElement(t.Component,{model:t})):b().createElement(g.LoadingPlaceholder,{text:"Loading..."})},(a="Component")in(r=L)?Object.defineProperty(r,a,{value:i,enumerable:!0,configurable:!0,writable:!0}):r[a]=i},3102:(e,t,n)=>{n.d(t,{E:()=>x});var r=n(2672),a=n(3143),i=n(7918),s=n(5183),l=n(2007),o=n(738),c=n(4105),u=n(2254),d=n(5959),p=n.n(d),g=n(9016),h=n(892),v=n(7781),m=n(7097),f=n(4750),b=n(7085),y=n(2871),S=n(227),w=n(1752);function O(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class x extends r.Bs{updateChildren(e,t=void 0){var n;const a=(0,u.UO)(e),i=(0,u.nU)(e),s=(0,u.dB)(e),l=this.calculateCardinalityMap(e);null===(n=this.state.body)||void 0===n||n.state.layouts.forEach((e=>{if(e instanceof r.gF){const n=new Set(null==i?void 0:i.values),o=e.state.children;for(let l=0;le));o.push(...this.buildChildren(c)),o.sort(this.sortChildren(l)),o.map((e=>{this.subscribeToPanel(e)})),e.setState({children:o})}else y.v.warn("Layout is not SceneCSSGridLayout")}))}sortChildren(e){return(t,n)=>{const r=t.state.body,a=n.state.body;var i;const s=null!==(i=e.get(r.state.title))&&void 0!==i?i:0;var l;return(null!==(l=e.get(a.state.title))&&void 0!==l?l:0)-s}}calculateCardinalityMap(e){const t=(0,u.UO)(e),n=new Map;if(null==t?void 0:t.length)for(let e=0;e<(null==t?void 0:t.length);e++){const r=t.fields[0].values[e],a=t.fields[1].values[e];n.set(r,a)}return n}onActivate(){var e;this.setState({body:this.build()});const t=r.jh.getAncestor(this,u.Mn);void 0===t.state.fieldsCount&&this.updateFieldCount(),this._subs.add(null===(e=t.state.$detectedFieldsData)||void 0===e?void 0:e.subscribeToState(this.onDetectedFieldsChange)),this._subs.add(this.subscribeToFieldsVar())}subscribeToFieldsVar(){return(0,f.ir)(this).subscribeToState(((e,t)=>{const n=r.jh.getAncestor(this,u.Mn),a=e.filters.map((e=>(0,f.bu)(e).parser)),i=t.filters.map((e=>(0,f.bu)(e).parser)),s=(0,m.Qg)(a);if(s!==(0,m.Qg)(i)){var l;const e=null===(l=n.state.$detectedFieldsData)||void 0===l?void 0:l.state;e&&this.updateChildren(e,s)}}))}build(){var e;const t=(0,f.Hj)(this).state.options.map((e=>String(e.value)));r.jh.getAncestor(this,c.J6).state.search.reset();const n=this.buildChildren(t),a=r.jh.getAncestor(this,u.Mn),i=this.calculateCardinalityMap(null===(e=a.state.$detectedFieldsData)||void 0===e?void 0:e.state);n.sort(this.sortChildren(i));const s=n.map((e=>e.clone()));return[...n,...s].map((e=>{this.subscribeToPanel(e)})),new o.U({options:[{value:"grid",label:"Grid"},{value:"rows",label:"Rows"}],active:"grid",layouts:[new r.gF({templateColumns:c.OK,autoRows:"200px",children:n,isLazy:!0}),new r.gF({templateColumns:"1fr",autoRows:"200px",children:s,isLazy:!0})]})}subscribeToPanel(e){const t=e.state.body;var n;t&&this._subs.add(null==t||null===(n=t.state.$data)||void 0===n?void 0:n.getResultsStream().subscribe((t=>{t.data.errors&&t.data.errors.length>0&&(e.setState({isHidden:!0}),this.updateFieldCount())})))}rebuildAvgFields(){const e=(0,u.rD)(this),t=this.getActiveGridLayouts(),n=[];var a;const i=null!==(a=(0,S.ex)("panelType",[b.ls.histogram,b.ls.timeseries]))&&void 0!==a?a:b.ls.timeseries;null==t||t.state.children.forEach((t=>{if(t instanceof r.xK&&!t.state.isHidden){const a=r.jh.findDescendents(t,r.Eb);if(a.length){const r=a[0].state.title,s=(0,m.ph)(r,e);if((0,m.JI)(s)){const t=this.buildChild(r,e,i);t&&n.push(t)}else n.push(t)}}})),n.length&&(null==t||t.setState({children:n}))}buildChildren(e){const t=[],n=(0,u.rD)(this);var r;const i=null!==(r=(0,S.ex)("panelType",[b.ls.timeseries,b.ls.histogram]))&&void 0!==r?r:b.ls.timeseries;for(const r of e){if(r===a.To||!r)continue;const e=this.buildChild(r,n,i);e&&t.push(e)}return t}buildChild(e,t,n){if(e===a.To||!e)return;const i=(0,m.ph)(e,t),o=this.getQueryRunnerForPanel(e,t,i);let c;const u=[];(0,m.JI)(i)?(c="histogram"===n?r.d0.histogram():r.d0.timeseries(),c.setTitle(e).setData(o).setMenu(new b.GD({investigationOptions:{labelName:e},panelType:n})),u.push(new g.X({labelName:String(e),hideValueDrilldown:!0,fieldType:h._J.field}))):(c=r.d0.timeseries().setTitle(e).setData(o).setMenu(new b.GD({investigationOptions:{labelName:e}})).setCustomFieldConfig("stacking",{mode:l.StackingMode.Normal}).setCustomFieldConfig("fillOpacity",100).setCustomFieldConfig("lineWidth",0).setCustomFieldConfig("pointSize",0).setCustomFieldConfig("drawStyle",l.DrawStyle.Bars).setOverrides(s.jC),u.push(new g.X({labelName:String(e),fieldType:h._J.field}))),c.setHeaderActions(u),c.setSeriesLimit(w.l);const d=c.build();return new r.xK({body:d})}getQueryRunnerForPanel(e,t,n){const r=(0,f.ir)(this),a=(0,m.Jl)(e,r,t),l=(0,i.l)(a,{legendFormat:(0,m.JI)(n)?e:`{{${e}}}`,refId:e});return(0,s.rS)([l])}getActiveGridLayouts(){var e,t,n;return null!==(n=null===(e=this.state.body)||void 0===e?void 0:e.state.layouts.find((e=>e.isActive)))&&void 0!==n?n:null===(t=this.state.body)||void 0===t?void 0:t.state.layouts[0]}updateFieldCount(){var e,t;const n=this.getActiveGridLayouts(),a=null==n?void 0:n.state.children,i=null==a?void 0:a.filter((e=>!e.state.isHidden));var s;null===(e=(t=r.jh.getAncestor(this,c.J6).state).changeFieldCount)||void 0===e||e.call(t,null!==(s=null==i?void 0:i.length)&&void 0!==s?s:0)}static Selector({model:e}){const{body:t}=e.useState();return p().createElement(p().Fragment,null,t&&p().createElement(o.U.Selector,{model:t}))}constructor(e){super(e),O(this,"onDetectedFieldsChange",(e=>{var t;(null===(t=e.data)||void 0===t?void 0:t.state)===v.LoadingState.Done&&this.updateChildren(e)})),this.addActivationHandler(this.onActivate.bind(this))}}O(x,"Component",(({model:e})=>{const{body:t}=e.useState(),n=(0,l.useStyles2)(b.K_);return t?p().createElement("span",{className:n.panelWrapper},t&&p().createElement(t.Component,{model:t})):p().createElement(l.LoadingPlaceholder,{text:"Loading..."})}))},4105:(e,t,n)=>{n.d(t,{J6:()=>N,OK:()=>D,ZI:()=>I});var r=n(6089),a=n(5959),i=n.n(a),s=n(7781),l=n(2672),o=n(2007),c=n(2718),u=n(227),d=n(3143),p=n(833),g=n(5431),h=n(8835),v=n(892),m=n(5722),f=n(8538),b=n(2254),y=n(1022),S=n(5631),w=n(3102),O=n(4462),x=n(4836),E=n(738),C=n(4144),k=n(9570),F=n(6001),P=n(3782),L=n(4750),j=n(9558),_=n(1863);function T(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const D="repeat(auto-fit, minmax(400px, 1fr))";class N extends l.Bs{onActivate(){var e,t,n;const r=(0,L.Hj)(this),a=l.jh.getAncestor(this,b.Mn);this.setState({loading:(null===(t=a.state.$detectedLabelsData)||void 0===t||null===(e=t.state.data)||void 0===e?void 0:e.state)!==s.LoadingState.Done}),this._subs.add(this.subscribeToEvent(y.x,(()=>{this.state.search.clearValueFilter()}))),this._subs.add(this.subscribeToEvent(C.gf,this.handleSortByChange)),this._subs.add(r.subscribeToState(this.variableChanged)),this._subs.add((0,L.cR)(this).subscribeToState(((e,t)=>{const n=(0,L.Hj)(this);let{labelName:r}=(0,v.W6)();const a=e.filters.find((e=>e.key===r)),i=t.filters.find((e=>e.key===r));n.state.value===d.To&&a!==i&&this.setState({loading:!0,body:void 0})}))),this._subs.add(null===(n=a.state.$detectedFieldsData)||void 0===n?void 0:n.subscribeToState(((e,t)=>{var n,r,a;(null===(n=e.data)||void 0===n?void 0:n.state)===s.LoadingState.Done&&(null===(r=e.data.series)||void 0===r?void 0:r[0])&&this.updateOptions(null===(a=e.data.series)||void 0===a?void 0:a[0])})));const i=(0,b.rD)(this);i&&this.updateOptions(i),(0,v.NX)(this)}updateOptions(e){if(!e||!e.length){const e=l.jh.getAncestor(this,f.P);let r;var t,n;return(0,_.mE)(e).length>1?(null===(t=(n=this.state).changeFieldCount)||void 0===t||t.call(n,0),r=new j.W({clearCallback:()=>(0,_.rA)(this)})):r=new P.a({type:"fields"}),void this.setState({loading:!1,body:r})}const r=l.jh.getAncestor(this,b.Mn);var a;(0,L.Hj)(this).setState({options:(0,F.rd)(e.fields[0].values.map((e=>String(e)))),loading:!1,value:null!==(a=r.state.drillDownLabel)&&void 0!==a?a:d.To}),this.setState({loading:!1})}updateBody(e){const t=(0,L.Hj)(this);if(!t.state.options||!t.state.options.length)return;const n={};if(t.state.options&&t.state.options.length<=1){const e=l.jh.getAncestor(this,f.P);var r,a;(0,_.mE)(e).length>1?(null===(r=(a=this.state).changeFieldCount)||void 0===r||r.call(a,0),n.body=new j.W({clearCallback:()=>(0,_.rA)(this)})):n.body=new P.a({type:"fields"})}else e.value===d.To&&this.state.body instanceof x.u?n.body=new w.E({}):e.value!==d.To&&this.state.body instanceof w.E?n.body=new x.u({}):(void 0===this.state.body||this.state.body instanceof P.a||this.state.body instanceof j.W)&&(n.body=e.value===d.To?new w.E({}):new x.u({}));this.setState(n)}constructor(e){var t,n,r,a;super(function(e){for(var t=1;t{(e.value!==t.value||!(0,p.B)(e.options,t.options)||void 0===this.state.body||this.state.body instanceof P.a||this.state.body instanceof j.W)&&this.updateBody(e)})),T(this,"handleSortByChange",(e=>{if("fields"!==e.target)return;const t=this.state.body;var n;t instanceof x.u&&t.state.body instanceof E.U&&(null===(n=t.state.body)||void 0===n||n.state.layouts.forEach((n=>{l.jh.findDescendents(t,S.h).forEach((t=>t.sort(e.sortBy,e.direction)))}))),(0,c.EE)(c.NO.service_details,c.ir.service_details.value_breakdown_sort_change,{target:"fields",criteria:e.sortBy,direction:e.direction})})),T(this,"onFieldSelectorChange",(e=>{if(!e)return;const t=(0,L.Hj)(this),{sortBy:n,direction:r}=(0,u.vs)("fields",m.DEFAULT_SORT_BY,"desc");(0,c.EE)(c.NO.service_details,c.ir.service_details.select_field_in_breakdown_clicked,{field:e,previousField:t.getValueText(),view:"fields",sortBy:n,sortByDirection:r});const a=l.jh.getAncestor(this,b.Mn);(0,h.fg)(v._J.field,e,a)})),this.addActivationHandler(this.onActivate.bind(this))}}T(N,"LabelsMenu",(({model:e})=>{const{body:t,loading:n,search:r}=e.useState(),a=(0,o.useStyles2)($),s=(0,L.Hj)(e),{options:l,value:c}=s.useState();return i().createElement("div",{className:a.labelsMenuWrapper},t instanceof w.E&&i().createElement(w.E.Selector,{model:t}),t instanceof x.u&&i().createElement(x.u.Selector,{model:t}),t instanceof x.u&&i().createElement(r.Component,{model:r}),!n&&l.length>1&&i().createElement(O.u,{label:"Field",options:l,value:String(c),onChange:e.onFieldSelectorChange}))})),T(N,"ValuesMenu",(({model:e})=>{const{loading:t,sort:n}=e.useState(),r=(0,o.useStyles2)($),a=(0,L.Hj)(e),{value:s}=a.useState();return i().createElement("div",{className:r.valuesMenuWrapper},!t&&s!==d.To&&i().createElement(i().Fragment,null,i().createElement(n.Component,{model:n})))})),T(N,"Component",(({model:e})=>{const{body:t,loading:n,blockingMessage:r}=e.useState(),a=(0,o.useStyles2)($);return i().createElement("div",{className:a.container},i().createElement(k.O,{isLoading:n,blockingMessage:r},t instanceof w.E&&e&&i().createElement(N.LabelsMenu,{model:e}),i().createElement("div",{className:a.content},t&&i().createElement(t.Component,{model:t}))))}));const I={link:(0,r.css)({textDecoration:"underline"}),button:(0,r.css)({marginLeft:"1.5rem"})};function $(e){return{container:(0,r.css)({flexGrow:1,display:"flex",minHeight:"100%",flexDirection:"column",gap:e.spacing(1)}),content:(0,r.css)({flexGrow:1,display:"flex",paddingTop:e.spacing(0)}),labelsMenuWrapper:(0,r.css)({flexGrow:0,display:"flex",alignItems:"top",justifyContent:"space-between",flexDirection:"row-reverse",gap:e.spacing(2)}),valuesMenuWrapper:(0,r.css)({flexGrow:0,display:"flex",alignItems:"top",gap:e.spacing(2),flexDirection:"row"})}}},8810:(e,t,n)=>{n.d(t,{O:()=>B});var r=n(6089),a=n(5959),i=n.n(a),s=n(7781),l=n(2672),o=n(2007),c=n(2718),u=n(892),d=n(3143),p=n(5631),g=n(4462),h=n(9570),v=n(6001),m=n(1022),f=n(227),b=n(4144),y=n(2254),S=n(5431),w=n(8835),O=n(833),x=n(3630),E=n(738),C=n(5183),k=n(9016),F=n(4119),P=n(4750),L=n(7085),j=n(1752);function _(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class T extends l.Bs{onActivate(){var e;const t=(0,P.ir)(this),n=l.jh.getAncestor(this,y.Mn).state.$detectedLabelsData;this.state.body?(null==n||null===(e=n.state.data)||void 0===e?void 0:e.state)===s.LoadingState.Done&&this.update(null==n?void 0:n.state.data.series[0]):this.setState({body:this.build()}),this._subs.add(null==n?void 0:n.subscribeToState(((e,t)=>{var n;(null===(n=e.data)||void 0===n?void 0:n.state)===s.LoadingState.Done&&this.update(e.data.series[0])}))),this._subs.add(t.subscribeToState((()=>{this.updateQueriesOnFieldsVariableChange()})))}getPanelByIndex(e,t){const n=e.state.children[t].state.body;return{panel:n,title:n.state.title}}update(e){var t;const n=(0,P.P4)(this).state.options.filter((e=>e.value!==d.To)).map((e=>e.label));null===(t=this.state.body)||void 0===t||t.state.layouts.forEach((t=>{let r=[];const a=t,i=new Set(n),s=a.state.children;for(let e=0;e({label:e,value:e})));s.push(...this.buildChildren(l));const o=this.calculateCardinalityMap(e);s.sort(this.sortChildren(o)),a.setState({children:s})}))}calculateCardinalityMap(e){const t=new Map;if(null==e?void 0:e.length)for(let n=0;n<(null==e?void 0:e.fields.length);n++){const r=e.fields[n].name,a=e.fields[n].values[0];t.set(r,a)}return t}build(){var e;const t=(0,P.P4)(this);l.jh.getAncestor(this,B).state.search.reset();const n=this.buildChildren(t.state.options),r=l.jh.getAncestor(this,y.Mn).state.$detectedLabelsData;if((null==r||null===(e=r.state.data)||void 0===e?void 0:e.state)===s.LoadingState.Done){const e=this.calculateCardinalityMap(null==r?void 0:r.state.data.series[0]);n.sort(this.sortChildren(e))}const a=n.map((e=>e.clone()));return new E.U({options:[{value:"grid",label:"Grid"},{value:"rows",label:"Rows"}],active:"grid",layouts:[new l.gF({isLazy:!0,templateColumns:F.di,autoRows:"200px",children:n}),new l.gF({isLazy:!0,templateColumns:"1fr",autoRows:"200px",children:a})]})}buildChildren(e){const t=[];for(const n of e){const{value:e}=n,r=String(e);if(e===d.To||!e)continue;const a=(0,F.oj)(this,String(n.value),String(n.value)),i=(0,C.rS)([a]);t.push(new l.xK({body:l.d0.timeseries().setTitle(r).setData(i).setHeaderActions([new k.X({labelName:r,fieldType:u._J.label})]).setCustomFieldConfig("stacking",{mode:o.StackingMode.Normal}).setCustomFieldConfig("fillOpacity",100).setCustomFieldConfig("lineWidth",0).setCustomFieldConfig("pointSize",0).setCustomFieldConfig("drawStyle",o.DrawStyle.Bars).setHoverHeader(!1).setOverrides(C.jC).setMenu(new L.GD({investigationOptions:{labelName:r}})).setSeriesLimit(j.l).build()}))}return t}sortChildren(e){return(t,n)=>{const r=t.state.body,a=n.state.body;if(r.state.title===d.e4)return-1;if(a.state.title===d.e4)return 1;var i;const s=null!==(i=e.get(r.state.title))&&void 0!==i?i:0;var l;return(null!==(l=e.get(a.state.title))&&void 0!==l?l:0)-s}}static Selector({model:e}){const{body:t}=e.useState();return i().createElement(i().Fragment,null,t&&i().createElement(E.U.Selector,{model:t}))}constructor(e){super(function(e){for(var t=1;t{var e;null===(e=this.state.body)||void 0===e||e.state.layouts.forEach((e=>{const t=e;for(let e=0;e{const{body:t}=e.useState(),n=(0,o.useStyles2)(L.K_);return t?i().createElement("span",{className:n.panelWrapper},t&&i().createElement(t.Component,{model:t})):i().createElement(o.LoadingPlaceholder,{text:"Loading..."})}));var D=n(5722),N=n(3782);function I(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function $(e){for(var t=1;t{this.state.search.clearValueFilter()}))),this._subs.add(this.subscribeToEvent(b.gf,this.handleSortByChange)),this._subs.add(null===(a=i.state.$detectedLabelsData)||void 0===a?void 0:a.subscribeToState(this.onDetectedLabelsDataChange)),this._subs.add((0,P.cR)(this).subscribeToState(((e,t)=>{this.onLabelsVariableChange(e,t)}))),this._subs.add(o.subscribeToState(((e,t)=>{this.onGroupByVariableChange(e,t)})));const c=(0,y.TG)(this);c&&this.updateOptions(c),(0,u.NX)(this)}onGroupByVariableChange(e,t){(e.value!==t.value||!(0,O.B)(e.options,t.options)||void 0===this.state.body||this.state.body instanceof N.a)&&this.updateBody()}onLabelsVariableChange(e,t){let{labelName:n}=(0,u.W6)();n===d.ky&&(n=d.OX);const r=(0,P.P4)(this),a=e.filters.find((e=>e.key===n)),i=t.filters.find((e=>e.key===n));r.state.value===d.To&&a!==i&&this.setState({loading:!0,body:void 0,error:void 0})}updateOptions(e){if(!e||!e.length)return void this.setState({loading:!1,body:new N.a({type:"labels"})});const t=(0,P.P4)(this),n=(0,v.dD)(e.fields.map((e=>e.name)));var r;t.setState({loading:!1,options:n,value:null!==(r=this.state.value)&&void 0!==r?r:d.To})}updateBody(){const e=(0,P.P4)(this);if(!e.state.options||!e.state.options.length)return;const t={loading:!1,blockingMessage:void 0,error:!1};e.hasAllValue()&&this.state.body instanceof x.u?t.body=new T({}):!e.hasAllValue()&&this.state.body instanceof T?t.body=new x.u({}):void 0===this.state.body?e.state.options.length>0?t.body=e.hasAllValue()?new T({}):new x.u({}):t.body=new N.a({type:"labels"}):this.state.body instanceof N.a&&e.state.options.length>0&&(t.body=e.hasAllValue()?new T({}):new x.u({})),this.setState($({},t))}constructor(e){var t,n,r,a,i;super((a=$({},e),i=null!=(i={$variables:null!==(r=e.$variables)&&void 0!==r?r:new l.Pj({variables:[new S.m({name:d.Jg,defaultToAll:!1,includeAll:!0,value:null!==(t=e.value)&&void 0!==t?t:d.To,options:null!==(n=e.options)&&void 0!==n?n:[]})]}),loading:!0,sort:new b.wd({target:"labels"}),search:new m.G("labels"),value:e.value})?i:{},Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(i)):function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t.push.apply(t,n)}return t}(Object(i)).forEach((function(e){Object.defineProperty(a,e,Object.getOwnPropertyDescriptor(i,e))})),a)),I(this,"_variableDependency",new l.Sh(this,{variableNames:[d.MB]})),I(this,"onDetectedLabelsDataChange",((e,t)=>{var n,r,a,i,l,o,c,u,d;(null===(n=e.data)||void 0===n?void 0:n.state)===s.LoadingState.Done&&(null===(r=e.data.series)||void 0===r?void 0:r[0])&&!(0,O.B)(null===(i=e.data.series)||void 0===i||null===(a=i[0])||void 0===a?void 0:a.fields,null===(c=t.data)||void 0===c||null===(o=c.series)||void 0===o||null===(l=o[0])||void 0===l?void 0:l.fields)?this.updateOptions(null===(d=e.data.series)||void 0===d?void 0:d[0]):(null===(u=e.data)||void 0===u?void 0:u.state)===s.LoadingState.Done&&(0,P.P4)(this).setState({loading:!1})})),I(this,"handleSortByChange",(e=>{if("labels"!==e.target)return;const t=this.state.body;t instanceof x.u&&l.jh.findDescendents(t,p.h).forEach((t=>{t.sort(e.sortBy,e.direction)})),(0,c.EE)(c.NO.service_details,c.ir.service_details.value_breakdown_sort_change,{target:"labels",criteria:e.sortBy,direction:e.direction})})),I(this,"onChange",(e=>{if(!e)return;const t=(0,P.P4)(this);t.changeValueTo(e);const{sortBy:n,direction:r}=(0,f.vs)("labels",D.DEFAULT_SORT_BY,"desc");(0,c.EE)(c.NO.service_details,c.ir.service_details.select_field_in_breakdown_clicked,{label:e,previousLabel:t.getValueText(),view:"labels",sortBy:n,sortByDirection:r});const a=l.jh.getAncestor(this,y.Mn);(0,w.fg)(u._J.label,e,a)})),this.addActivationHandler(this.onActivate.bind(this))}}function M(e){return{container:(0,r.css)({flexGrow:1,display:"flex",minHeight:"100%",flexDirection:"column",gap:e.spacing(1)}),content:(0,r.css)({flexGrow:1,display:"flex",paddingTop:e.spacing(0)}),labelsMenuWrapper:(0,r.css)({flexGrow:0,display:"flex",alignItems:"top",justifyContent:"space-between",flexDirection:"row-reverse",gap:e.spacing(2)}),valuesMenuWrapper:(0,r.css)({flexGrow:0,display:"flex",alignItems:"top",gap:e.spacing(2),flexDirection:"row"})}}I(B,"LabelsMenu",(({model:e})=>{const{body:t,loading:n,search:r}=e.useState(),a=(0,P.P4)(e),{options:s,value:l}=a.useState(),c=(0,o.useStyles2)(M);return i().createElement("div",{className:c.labelsMenuWrapper},t instanceof x.u&&i().createElement(x.u.Selector,{model:t}),t instanceof T&&i().createElement(T.Selector,{model:t}),t instanceof x.u&&i().createElement(r.Component,{model:r}),!n&&s.length>0&&i().createElement(g.u,{label:"Label",options:s,value:String(l),onChange:e.onChange}))})),I(B,"ValuesMenu",(({model:e})=>{const{loading:t,sort:n}=e.useState(),r=(0,P.P4)(e),{value:a}=r.useState(),s=(0,o.useStyles2)(M);return i().createElement("div",{className:s.valuesMenuWrapper},!t&&a!==d.To&&i().createElement(i().Fragment,null,i().createElement(n.Component,{model:n})))})),I(B,"Component",(({model:e})=>{const{body:t,loading:n,blockingMessage:r,error:a}=e.useState(),s=(0,o.useStyles2)(M);return i().createElement("div",{className:s.container},i().createElement(h.O,{isLoading:n,blockingMessage:r},a&&i().createElement(o.Alert,{title:"",severity:"warning"},"The labels are not available at this moment. Try using a different time range or check again later."),t instanceof T&&e&&i().createElement(B.LabelsMenu,{model:e}),i().createElement("div",{className:s.content},t&&i().createElement(t.Component,{model:t}))))}))},3630:(e,t,n)=>{n.d(t,{u:()=>N});var r=n(2672),a=n(738),i=n(4144),s=n(2007),l=n(5183),o=n(227),c=n(7781),u=n(5631),d=n(7097),p=n(3143),g=n(5959),h=n.n(g),v=n(8810),m=n(5722),f=n(4119),b=n(8531),y=n(4750),S=n(7085),w=n(9558),O=n(3782),x=n(8538),E=n(1863),C=n(8516),k=n(7918),F=n(2871),P=n(833);function L(e,t,n,r,a,i,s){try{var l=e[i](s),o=l.value}catch(e){return void n(e)}l.done?t(o):Promise.resolve(o).then(r,a)}function j(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var i=e.apply(t,n);function s(e){L(i,r,a,s,l,"next",e)}function l(e){L(i,r,a,s,l,"throw",e)}s(void 0)}))}}function _(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function T(e){for(var t=1;t{this.onValuesDataQueryChange(e)}))),this._subs.add((0,y.P4)(this).subscribeToState((e=>{e.value===p.To&&this.setState({$data:void 0,body:void 0})}))),this._subs.add(r.jh.getTimeRange(this).subscribeToState((()=>{this.runQuery()}))),this._subs.add((0,y.ir)(this).subscribeToState(((e,t)=>{(0,P.B)(e.filters,t.filters)||this.runQuery()}))),this._subs.add((0,y.oY)(this).subscribeToState(((e,t)=>{(0,P.B)(e.filters,t.filters)||this.runQuery()}))),this._subs.add((0,y.Gk)(this).subscribeToState(((e,t)=>{(0,P.B)(e.filters,t.filters)||this.runQuery()}))),this._subs.add((0,y.Ku)(this).subscribeToState(((e,t)=>{e.value!==t.value&&this.runQuery()})));const t=this.getTagKey();var n=this;this._subs.add((0,y.cR)(this).subscribeToState(function(){var e=j((function*(e,r){(0,P.B)(e.filters.filter((e=>t===p.e4&&e.key!==t)),r.filters.filter((e=>t===p.e4&&e.key!==t)))||n.runQuery()}));return function(t,n){return e.apply(this,arguments)}}()));var a=this;this._subs.add((0,y.iw)(this).subscribeToState(function(){var e=j((function*(e,n){(0,P.B)(e.filters.filter((e=>t!==p.e4&&e.key!==t)),n.filters.filter((e=>t!==p.e4&&e.key!==t)))||a.runQuery()}));return function(t,n){return e.apply(this,arguments)}}()))}rebuildQuery(){var e;null===(e=this.getSceneQueryRunner())||void 0===e||e.setState({queries:[this.buildQuery()]})}runQuery(){this.rebuildQuery();const e=this.getSceneQueryRunner();null==e||e.runQueries()}getSceneQueryRunner(){if(this.state.$data){const e=r.jh.findDescendents(this.state.$data,r.dt);if(1!==e.length){const e=new Error("Unable to find query runner in value breakdown!");throw F.v.error(e,{msg:"LabelValuesBreakdownScene: Unable to find query runner in value breakdown!"}),e}return e[0]}F.v.warn("LabelValuesBreakdownScene: Query is attempting to execute, but query runner is undefined!")}removeValueLabelFromVariableInterpolation(){const e=this.getTagKey();let t,n;if(e===p.e4){const r=(0,y.iw)(this);n=p._Y,t=(0,k._q)(r.state.filters,[e])}else{const r=(0,y.cR)(this);n=p.MB,t=(0,k.VW)(r.state.filters,[e])}return{filterExpression:t,variableName:n}}getTagKey(){const e=(0,y.P4)(this);return String(e.state.value)}onValuesDataQueryChange(e){this.setEmptyStates(e),this.setErrorStates(e)}setErrorStates(e){var t,n;if((null==e||null===(t=e.data)||void 0===t?void 0:t.errors)&&(null===(n=e.data)||void 0===n?void 0:n.state)!==c.LoadingState.Done){var r;const t=this.state.errors;null==e||null===(r=e.data)||void 0===r||r.errors.forEach((e=>{const n=`${e.status}_${e.traceId}_${e.message}`;void 0===t[n]&&(t[n]=D(T({},e),{displayed:!1}))})),this.setState({errors:t}),this.showErrorToast(this.state.errors)}}setEmptyStates(e){var t;if((null===(t=e.data)||void 0===t?void 0:t.state)===c.LoadingState.Done)if(e.data.series.length>0&&!(this.state.body instanceof a.U))this.setState({body:this.build()});else if(0===e.data.series.length){const e=r.jh.getAncestor(this,x.P);(0,E.mE)(e).length>1?this.setState({body:new w.W({clearCallback:()=>(0,E.rA)(this)})}):this.setState({body:new O.a({type:"fields"})})}}getActiveLayout(){const e=this.state.body;if(e instanceof a.U){const t=null==e?void 0:e.state.layouts.find((e=>e.isActive));if(t instanceof r.G1)return t}}activeLayoutContainsNoPanels(){const e=this.getActiveLayout();return!!e&&r.jh.findDescendents(e,u.h).some((e=>{const t=e.state.body.state.children[0];return t instanceof r.vA||t instanceof r.dM}))}build(){const e=(0,y.P4)(this).state,t=String(null==e?void 0:e.value),n=r.jh.getAncestor(this,v.O);let c=r.d0.timeseries();c=c.setCustomFieldConfig("stacking",{mode:s.StackingMode.Normal}).setCustomFieldConfig("fillOpacity",100).setCustomFieldConfig("lineWidth",0).setCustomFieldConfig("pointSize",0).setCustomFieldConfig("drawStyle",s.DrawStyle.Bars).setOverrides(l.jC).setMenu(new S.GD({})).setTitle(t);const g=c.build(),{sortBy:b,direction:w}=(0,o.vs)("labels",m.DEFAULT_SORT_BY,"desc"),O=()=>{var e;return null!==(e=n.state.search.state.filter)&&void 0!==e?e:""};return new a.U({options:[{value:"single",label:"Single"},{value:"grid",label:"Grid"},{value:"rows",label:"Rows"}],active:"grid",layouts:[new r.G1({direction:"column",children:[new r.dM({reactNode:h().createElement(v.O.LabelsMenu,{model:n})}),new r.vA({minHeight:300,body:g})]}),new r.G1({direction:"column",children:[new r.dM({reactNode:h().createElement(v.O.LabelsMenu,{model:n})}),new C.s7({title:t,levelColor:!0,tagKey:this.getTagKey(),type:"label"}),new r.dM({reactNode:h().createElement(v.O.ValuesMenu,{model:n})}),new u.h({body:new r.gF({isLazy:!0,templateColumns:f.di,autoRows:"200px",children:[new r.vA({body:new r.dM({reactNode:h().createElement(s.LoadingPlaceholder,{text:"Loading..."})})})]}),getLayoutChild:(0,d.Zp)(i.ee,s.DrawStyle.Bars,p.MB,r.jh.getAncestor(this,v.O).state.sort,t),sortBy:b,direction:w,getFilter:O})]}),new r.G1({direction:"column",children:[new r.dM({reactNode:h().createElement(v.O.LabelsMenu,{model:n})}),new C.s7({title:t,levelColor:!0,tagKey:this.getTagKey(),type:"label"}),new r.dM({reactNode:h().createElement(v.O.ValuesMenu,{model:n})}),new u.h({body:new r.gF({templateColumns:"1fr",autoRows:"200px",children:[new r.vA({body:new r.dM({reactNode:h().createElement(s.LoadingPlaceholder,{text:"Loading..."})})})]}),getLayoutChild:(0,d.Zp)(i.ee,s.DrawStyle.Bars,p.MB,r.jh.getAncestor(this,v.O).state.sort,t),sortBy:b,direction:w,getFilter:O})]})]})}showErrorToast(e){const t=(0,b.getAppEvents)();let n=[];for(const t in e){const r=e[t];r.displayed||(n.push(r),r.displayed=!0)}n.length&&(this.activeLayoutContainsNoPanels()||t.publish({type:c.AppEvents.alertError.name,payload:null==n?void 0:n.map(((e,t)=>this.renderError(t,e)))}),this.setState({errors:e}))}renderError(e,t){return h().createElement("div",{key:e},t.status&&h().createElement(h().Fragment,null,h().createElement("strong",null,"Status"),": ",t.status," ",h().createElement("br",null)),t.message&&h().createElement(h().Fragment,null,h().createElement("strong",null,"Message"),": ",t.message," ",h().createElement("br",null)),t.traceId&&h().createElement(h().Fragment,null,h().createElement("strong",null,"TraceId"),": ",t.traceId))}static Selector({model:e}){const{body:t}=e.useState();return h().createElement(h().Fragment,null,t&&t instanceof a.U&&h().createElement(a.U.Selector,{model:t}))}constructor(e){super(D(T({},e),{errors:{}})),this.addActivationHandler(this.onActivate.bind(this))}}_(N,"Component",(({model:e})=>{const{body:t}=e.useState(),n=(0,s.useStyles2)(S.K_);return t?h().createElement("span",{className:n.panelWrapper},t&&h().createElement(t.Component,{model:t})):h().createElement(s.LoadingPlaceholder,{text:"Loading..."})}))},738:(e,t,n)=>{n.d(t,{U:()=>d});var r=n(5959),a=n.n(r),i=n(2672),s=n(2007),l=n(2718),o=n(892),c=n(6089);function u(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class d extends i.Bs{constructor(...e){super(...e),u(this,"onLayoutChange",(e=>{(0,l.EE)(l.NO.service_details,l.ir.service_details.layout_type_changed,{layout:e,view:(0,o.FT)()}),this.setState({active:e})}))}}u(d,"Selector",(function({model:e}){const{active:t,options:n}=e.useState(),r=(0,s.useStyles2)(p);return a().createElement(s.Field,{className:r.field},a().createElement(s.RadioButtonGroup,{options:n,value:t,onChange:e.onLayoutChange}))})),u(d,"Component",(({model:e})=>{const{layouts:t,options:n,active:r}=e.useState(),i=n.findIndex((e=>e.value===r));if(-1===i)return null;const s=t[i];return a().createElement(s.Component,{model:s})}));const p=e=>({field:(0,c.css)({marginBottom:0})})},9558:(e,t,n)=>{n.d(t,{W:()=>p});var r,a,i,s=n(2672),l=n(4482),o=n(2007),c=n(5959),u=n.n(c),d=n(4105);class p extends s.Bs{}i=({model:e})=>{const{clearCallback:t}=e.useState();return u().createElement(l.R,null,u().createElement(o.Alert,{title:"",severity:"info"},"No labels match these filters."," ",u().createElement(o.Button,{className:d.ZI.button,onClick:()=>t()},"Clear filters")," "))},(a="Component")in(r=p)?Object.defineProperty(r,a,{value:i,enumerable:!0,configurable:!0,writable:!0}):r[a]=i},8516:(e,t,n)=>{n.d(t,{Zb:()=>y,s$:()=>w,s7:()=>b});var r=n(2672),a=n(7085),i=n(2007),s=n(5183),l=n(227),o=n(5959),c=n.n(o),u=n(4750),d=n(1383),p=n(2718),g=n(7781),h=n(3143),v=n(2871),m=n(4119);function f(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class b extends r.Bs{onActivate(){var e;const t=null!==(e=(0,l.ex)("collapsed",[a.Ci.collapsed,a.Ci.expanded]))&&void 0!==e?e:a.Ci.expanded,n=function(e,t){var n;const o=null!==(n=(0,l.ex)("collapsed",[a.Ci.collapsed,a.Ci.expanded]))&&void 0!==n?n:a.Ci.expanded,c=r.d0.timeseries().setTitle(e).setMenu(new a.GD({})).setCollapsible(!0).setCollapsed(o===a.Ci.collapsed).setCustomFieldConfig("stacking",{mode:i.StackingMode.Normal}).setCustomFieldConfig("fillOpacity",100).setCustomFieldConfig("lineWidth",0).setCustomFieldConfig("pointSize",0).setCustomFieldConfig("drawStyle",i.DrawStyle.Bars).setSeriesLimit(100);return(null==t?void 0:t.levelColor)&&c.setOverrides(s.jC),c.build()}(this.state.title,{levelColor:this.state.levelColor}),o=S(t);n.setState({extendPanelContext:(e,t)=>this.extendTimeSeriesLegendBus(t)}),this.setState({body:new r.G1({key:w,minHeight:o,height:o,maxHeight:o,wrap:"nowrap",children:[new r.vA({body:n})]})}),this._subs.add(n.subscribeToState(((e,t)=>{e.collapsed!==t.collapsed&&(y(r.jh.getAncestor(n,r.G1),e.collapsed?a.Ci.collapsed:a.Ci.expanded),(0,l.IW)("collapsed",e.collapsed?a.Ci.collapsed:a.Ci.expanded))})))}initLegendOptions(e,t,n){e&&("label"===this.state.type?t===h.e4?(0,s.C6)(n,e,this):(0,s.dO)(t,n,e,this):(0,s.Nr)(t,n,e,this))}getQuerySubscription(e,t,n){return t.subscribeToState(((t,r)=>{var a;(null===(a=t.data)||void 0===a?void 0:a.state)===g.LoadingState.Done&&("label"===this.state.type?e===h.e4?(0,s.C6)(n,t.data.series,this):(0,s.dO)(e,n,t.data.series,this):(0,s.Nr)(e,n,t.data.series,this))}))}getFieldsVariableLegendSyncSubscription(e,t){return null==t?void 0:t.subscribeToState((()=>{var t,n;const a=null===(t=this.state.body)||void 0===t?void 0:t.state.children[0];if(!(a instanceof r.vA))throw new Error("Cannot find sceneFlexItem");const i=a.state.body;if(!(i instanceof r.Eb))throw new Error("ValueSummary - getFieldsVariableLegendSyncSubscription: Cannot find VizPanel");const l=null===(n=r.jh.getData(this).state.data)||void 0===n?void 0:n.series;l?(0,s.Nr)(e,i,l,this):v.v.warn("ValueSummary - getFieldsVariableLegendSyncSubscription: missing dataframe!")}))}getLabelsVariableLegendSyncSubscription(e){const t=e===h.e4,n=t?(0,u.iw)(this):(0,u.cR)(this);return null==n?void 0:n.subscribeToState((()=>{var n,a;const i=null===(n=this.state.body)||void 0===n?void 0:n.state.children[0];if(!(i instanceof r.vA))throw new Error("Cannot find sceneFlexItem");const l=i.state.body;if(!(l instanceof r.Eb))throw new Error("ValueSummary - getLabelsVariableLegendSyncSubscription: Cannot find VizPanel");const o=null===(a=r.jh.getData(this).state.data)||void 0===a?void 0:a.series;o?t?(0,s.C6)(l,o,this):(0,s.dO)(e,l,o,this):v.v.warn("ValueSummary - getLabelsVariableLegendSyncSubscription: missing dataframe!")}))}constructor(e){super(e),f(this,"extendTimeSeriesLegendBus",(e=>{var t,n;const a=r.jh.getData(this),i=null===(t=a.state.data)||void 0===t?void 0:t.series,s=this.state.tagKey,l=null===(n=this.state.body)||void 0===n?void 0:n.state.children[0];if(!(l instanceof r.vA))throw new Error("Cannot find sceneFlexItem");const o=l.state.body;if(!(o instanceof r.Eb))throw new Error("Cannot find VizPanel");this.initLegendOptions(i,s,o),"label"===this.state.type?this._subs.add(this.getLabelsVariableLegendSyncSubscription(s)):(this._subs.add(this.getFieldsVariableLegendSyncSubscription(s,(0,u.ir)(this))),this._subs.add(this.getFieldsVariableLegendSyncSubscription(s,(0,u.oY)(this)))),this._subs.add(this.getQuerySubscription(s,a,o)),e.onToggleSeriesVisibility=(e,t)=>{let n;n="label"===this.state.type?s===h.e4?(0,d.PE)(e,this):(0,m.R7)(s,e,this):(0,m.zr)(s,e,this),(0,p.EE)(p.NO.service_details,p.ir.service_details.label_in_panel_summary_clicked,{label:e,action:n})}})),this.addActivationHandler(this.onActivate.bind(this))}}function y(e,t){const n=S(t);e.setState({minHeight:n,height:n,maxHeight:n})}function S(e){return e===a.Ci.collapsed?35:300}f(b,"Component",(({model:e})=>{const{body:t}=e.useState();return t?c().createElement("div",null,c().createElement(t.Component,{model:t})):null}));const w="value_summary_panel"},6261:(e,t,n)=>{n.d(t,{D:()=>o});var r=n(6089),a=n(2007),i=n(5959),s=n.n(i);function l(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const o=e=>{var{value:t,onChange:n,placeholder:r,onClear:i,suffix:o}=e,u=function(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}(e,["value","onChange","placeholder","onClear","suffix"]);const d=(0,a.useStyles2)(c);return s().createElement(a.Input,function(e){for(var t=1;t({suffixWrapper:(0,r.css)({gap:e.spacing(.5),display:"inline-flex"}),clearIcon:(0,r.css)({cursor:"pointer"})})},9016:(e,t,n)=>{n.d(t,{X:()=>I});var r=n(2672),a=n(2254),i=n(8835),s=n(892),l=n(2007),o=n(5959),c=n.n(o),u=n(558),d=n(3143),p=n(7781),g=n(4750),h=n(4793),v=n(6089),m=n(3241),f=n(2871),b=n(1220);function y(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var S=function(e){return e.ns="ns",e.us="µs",e.ms="ms",e.s="s",e.m="m",e.h="h",e}(S||{}),w=function(e){return e.B="B",e.KB="KB",e.MB="MB",e.GB="GB",e.TB="TB",e}(w||{});class O extends r.Bs{onActivate(){const e=(0,g.bY)((0,u.ts)(this.state.labelName,this.state.variableType),this).state.filters.filter((e=>e.key===this.state.labelName)),t=e.find((e=>e.operator===h.w7.gte||e.operator===h.w7.gt)),n=e.find((e=>e.operator===h.w7.lte||e.operator===h.w7.lt));let r={};if("duration"===this.state.fieldType||"bytes"===this.state.fieldType){if(t){const e=x((0,g.bu)(t).value,this.state.fieldType);e&&(r.gt=e.value,r.gtu=e.unit,r.gte=t.operator===h.w7.gte)}if(n){const e=x((0,g.bu)(n).value,this.state.fieldType);e&&(r.lt=e.value,r.ltu=e.unit,r.lte=n.operator===h.w7.lte)}}else{if(t){const e=(0,g.bu)(t).value;r.gt=Number(e),r.gtu="",r.gte=t.operator===h.w7.gte}if(n){const e=(0,g.bu)(n).value;r.lt=Number(e),r.ltu="",r.lte=n.operator===h.w7.lte}}0!==Object.keys(r).length&&(r.hasExistingFilter=!0),this.setState(r)}onSubmit(){this.state.gt?(0,u.vn)(this.state.labelName,this.state.gt.toString()+this.state.gtu,this.state.gte?h.w7.gte:h.w7.gt,this,this.state.variableType):(0,u.u7)(this.state.labelName,this,this.state.gte?h.w7.gte:h.w7.gt,this.state.variableType),this.state.lt?(0,u.vn)(this.state.labelName,this.state.lt.toString()+this.state.ltu,this.state.lte?h.w7.lte:h.w7.lt,this,this.state.variableType):(0,u.u7)(this.state.labelName,this,this.state.lte?h.w7.lte:h.w7.lt,this.state.variableType),r.jh.getAncestor(this,I).togglePopover()}constructor(e){let t;const n=e.fieldType;if("bytes"===n)t={ltu:"B",gtu:"B"};else if("duration"===n)t={ltu:"s",gtu:"s"};else{if("float"!==n)throw new Error(`field type incorrectly defined: ${n}`);t={ltu:"",gtu:""}}super(function(e){for(var t=1;t{const t=void 0===this.state.gt&&void 0===this.state.lt;"Enter"!==e.key||t||this.onSubmit()})),this.addActivationHandler(this.onActivate.bind(this))}}function x(e,t){if("duration"===t){const t=Object.values(S).find((t=>{const n=t.length;return e.slice(-1*n)===t}));if(t){const n=Number(e.replace(t,""));if(!isNaN(n))return{unit:t,value:n}}}if("bytes"===t){const t=Object.values(w).sort(((e,t)=>t.length-e.length)).find((t=>{const n=t.length;return e.slice(-1*n)===t}));if(t){const n=Number(e.replace(t,""));if(!isNaN(n))return{unit:t,value:n}}}}function E(e){if("duration"===e)return Object.keys(S).map((e=>({text:e,value:S[e],label:e})));if("bytes"===e)return Object.keys(w).map((e=>({text:e,value:w[e],label:e})));const t=new Error(`invalid field type: ${e}`);throw f.v.error(t,{msg:"getUnitOptions, invalid field type"}),t}y(O,"Component",(({model:e})=>{const t=(0,l.useStyles2)(C),{labelName:n,gt:a,lt:i,gte:s,lte:o,gtu:u,ltu:d,fieldType:p,hasExistingFilter:g}=e.useState(),h="float"!==p&&p!==n?`(${p})`:void 0,m=r.jh.getAncestor(e,I),f=void 0===a&&void 0===i;return c().createElement(l.ClickOutsideWrapper,{useCapture:!0,onClick:()=>m.togglePopover()},c().createElement(l.Stack,{direction:"column",gap:0,role:"tooltip"},c().createElement("div",{className:t.card.body},c().createElement("div",{className:t.card.title},n," ",h),c().createElement("div",{className:t.card.fieldWrap},c().createElement(l.FieldSet,{className:t.card.fieldset},c().createElement(l.Field,{"data-testid":b.b.breakdowns.common.filterNumericPopover.inputGreaterThanInclusive,horizontal:!0,className:(0,v.cx)(t.card.field,t.card.inclusiveField)},c().createElement(l.Select,{className:t.card.inclusiveInput,menuShouldPortal:!1,value:void 0!==s?s.toString():"false",options:[{label:"Greater than",value:"false"},{label:"Greater than or equal",value:"true"}],onChange:t=>e.setState({gte:"true"===t.value})})),c().createElement(l.Field,{"data-testid":b.b.breakdowns.common.filterNumericPopover.inputGreaterThan,horizontal:!0,className:t.card.field},c().createElement(l.Input,{onKeyDownCapture:e.onInputKeydown,autoFocus:!0,onChange:t=>{e.setState({gt:""!==t.currentTarget.value?Number(t.currentTarget.value):void 0})},className:t.card.numberInput,value:a,type:"number"})),"float"!==p&&c().createElement(l.Label,null,c().createElement(l.Field,{"data-testid":b.b.breakdowns.common.filterNumericPopover.inputGreaterThanUnit,horizontal:!0,className:t.card.field,label:c().createElement("span",{className:t.card.unitFieldLabel},"Unit")},c().createElement(l.Select,{onChange:t=>{e.setState({gtu:t.value})},menuShouldPortal:!1,options:E(p),className:t.card.selectInput,value:u})))),c().createElement(l.FieldSet,{className:t.card.fieldset},c().createElement(l.Field,{"data-testid":b.b.breakdowns.common.filterNumericPopover.inputLessThanInclusive,horizontal:!0,className:(0,v.cx)(t.card.field,t.card.inclusiveField)},c().createElement(l.Select,{className:t.card.inclusiveInput,menuShouldPortal:!1,value:void 0!==o?o.toString():"false",options:[{label:"Less than",value:"false"},{label:"Less than or equal",value:"true"}],onChange:t=>e.setState({lte:"true"===t.value})})),c().createElement(l.Field,{"data-testid":b.b.breakdowns.common.filterNumericPopover.inputLessThan,horizontal:!0,className:t.card.field},c().createElement(l.Input,{onKeyDownCapture:e.onInputKeydown,onChange:t=>e.setState({lt:""!==t.currentTarget.value?Number(t.currentTarget.value):void 0}),className:t.card.numberInput,value:i,type:"number"})),"float"!==p&&c().createElement(l.Label,null,c().createElement(l.Field,{"data-testid":b.b.breakdowns.common.filterNumericPopover.inputLessThanUnit,horizontal:!0,className:t.card.field,label:c().createElement("span",{className:t.card.unitFieldLabel},"Unit")},c().createElement(l.Select,{onChange:t=>{e.setState({ltu:t.value})},menuShouldPortal:!1,options:E(p),className:t.card.selectInput,value:d}))))),c().createElement("div",{className:t.card.buttons},g&&c().createElement(l.Button,{"data-testid":b.b.breakdowns.common.filterNumericPopover.removeButton,disabled:!g,onClick:()=>{e.setState({gt:void 0,lt:void 0}),e.onSubmit()},size:"sm",variant:"destructive",fill:"outline"},"Remove"),c().createElement(l.Button,{"data-testid":b.b.breakdowns.common.filterNumericPopover.submitButton,disabled:f,onClick:()=>e.onSubmit(),size:"sm",variant:"primary",fill:"outline",type:"submit"},"Add"),c().createElement(l.Button,{"data-testid":b.b.breakdowns.common.filterNumericPopover.cancelButton,onClick:()=>m.togglePopover(),size:"sm",variant:"secondary",fill:"outline"},"Cancel")))))}));const C=e=>({card:{buttons:(0,v.css)({display:"flex",flexWrap:"wrap",justifyContent:"flex-end",gap:e.spacing(1.5),marginTop:e.spacing(1)}),inclusiveInput:(0,v.css)({minWidth:"185px"}),selectInput:(0,v.css)({minWidth:"65px"}),numberInput:(0,v.css)({width:"75px"}),fieldWrap:(0,v.css)({display:"flex",flexDirection:"column",paddingTop:e.spacing(2),paddingBottom:0}),field:(0,v.css)({display:"flex",alignItems:"center",marginBottom:e.spacing(1)}),inclusiveField:(0,v.css)({marginRight:e.spacing(1)}),unitFieldLabel:(0,v.css)({marginLeft:e.spacing(2),marginRight:e.spacing(1.5)}),numberFieldLabel:(0,v.css)({width:"100px"}),switchFieldLabel:(0,v.css)({marginLeft:e.spacing(2),marginRight:e.spacing(1)}),fieldset:(0,v.css)({display:"flex",alignItems:"center",justifyContent:"space-between",width:"100%",marginBottom:0}),title:(0,v.css)({}),body:(0,v.css)({padding:e.spacing(2)}),p:(0,v.css)({maxWidth:300})}});var k=n(7097),F=n(9829),P=n(3626);function L(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function j(e){for(var t=1;te.key===this.state.labelName))}onActivate(){var e,t;const n=r.jh.getAncestor(this,a.Mn);(null===(t=n.state.$data)||void 0===t||null===(e=t.state.data)||void 0===e?void 0:e.state)===p.LoadingState.Done&&this.calculateSparsity(),this._subs.add(r.jh.getData(this).subscribeToState((e=>{var t,r,a,i;(null===(t=e.data)||void 0===t?void 0:t.state)===p.LoadingState.Done&&((null===(a=n.state.$data)||void 0===a||null===(r=a.state.data)||void 0===r?void 0:r.state)===p.LoadingState.Done&&this.calculateSparsity(),this._subs.add(null===(i=n.state.$data)||void 0===i?void 0:i.subscribeToState((e=>{var t;(null===(t=e.data)||void 0===t?void 0:t.state)===p.LoadingState.Done&&this.calculateSparsity()}))))})))}togglePopover(){this.setState({showPopover:!this.state.showPopover})}calculateSparsity(){var e;const t=r.jh.getAncestor(this,a.Mn),n=(0,a.tn)(null===(e=t.state.$data)||void 0===e?void 0:e.state.data),i=null==n?void 0:n.fields.find((e=>"labels"===e.name)),s=r.jh.getData(this),l=(0,F.UX)(s,(e=>e instanceof r.dt),r.dt);if(l){const e=l.state.queries[0];(null==e?void 0:e.expr.includes("avg_over_time"))&&this.setState({hasNumericFilters:!0})}if(!i||!n)return void this.setState({hasSparseFilters:!1});const o=this.getVariable(),c=i.values.reduce(((e,t)=>((null==t?void 0:t[this.state.labelName])&&e++,e)),0),u=r.jh.getAncestor(this,r.Eb);if(void 0!==c&&n.length>0){const e=(c/n.length*100).toLocaleString(),t=`${this.state.labelName} exists on ${e}% of ${n.length} sampled log lines`;u.setState({description:t})}else u.setState({description:void 0});const p=this.getExistingFilter(o),h=p&&o.state.name===d.mB?(0,g.bu)(p):void 0;c{const t=(0,a.rD)(this),n=(0,k.ph)(this.state.labelName,t);if(!n||"string"===n||"boolean"===n||"int"===n){const e=new Error(`Incorrect field type: ${n}`);throw f.v.error(e,{msg:`onClickNumericFilter invalid field type ${n}`}),e}this.setState({popover:new O({labelName:this.state.labelName,variableType:e,fieldType:n})}),this.togglePopover()})),L(this,"getViewValuesLink",(()=>{const e=r.jh.getAncestor(this,a.Mn);return(0,i.FB)(this.state.fieldType,this.state.labelName,e)})),L(this,"onClickExcludeEmpty",(e=>{(0,u.Qt)(this.state.labelName,d.ZO,"exclude",this,e)})),L(this,"onClickIncludeEmpty",(e=>{(0,u.Qt)(this.state.labelName,d.ZO,"include",this,e)})),L(this,"clearFilter",(e=>{(0,u.Qt)(this.state.labelName,d.ZO,"clear",this,e)})),L(this,"clearFilters",(e=>{(0,u.hi)(this.state.labelName,this,e),this.state.labelName===d.e4&&(0,P.dm)(this)})),this.addActivationHandler(this.onActivate.bind(this))}}function $(e){const t=(0,l.useStyles2)(B);return c().createElement("span",{className:t.description},e.selected&&c().createElement("span",{className:t.selected}),e.text)}L(I,"Component",(({model:e})=>{const{hideValueDrilldown:t,labelName:n,hasSparseFilters:r,hasNumericFilters:a,selectedValue:i,popover:u,showPopover:p,fieldType:v}=e.useState(),f=e.getVariable(),y=f.useState().name,S=e.getExistingFilter(f),w=(0,g.z2)(y,S),O=(0,l.useStyles2)(M),x=(0,o.useRef)(null),E=v===s._J.label&&f.state.name===d.mB&&0===f.state.filters.filter((e=>e.key!==n&&e.operator===h.w7.Equal)).length,C=(null==S?void 0:S.operator)===h.w7.NotEqual&&w.value===d.ZO,k=!!S;var F;const P=null!==(F=null==i?void 0:i.value)&&void 0!==F?F:C?T:a?N:T,L=!!(null==S?void 0:S.operator)&&[h.w7.gte,h.w7.gt,h.w7.lte,h.w7.lt].includes(S.operator),I=P===N||L,B=P===T&&!I,A={value:T,component:()=>c().createElement($,{selected:B,text:`Include all log lines with ${n}`})},R={value:D,component:()=>c().createElement($,{selected:!1,text:`Exclude all log lines with ${n}`})},V={value:N,component:()=>c().createElement($,{selected:I,text:`Add an expression, i.e. ${n} > 30`})},W=[];a&&W.push(V),r&&(L||W.push(A),W.push(R));const z=C?A:a?V:A;var H;return c().createElement(c().Fragment,null,k&&c().createElement(l.IconButton,{disabled:E,name:"filter",tooltip:`Clear ${n} filters`,onClick:()=>e.clearFilters(y)}),(a||r)&&c().createElement(c().Fragment,null,c().createElement(l.ButtonGroup,{"data-testid":b.b.breakdowns.common.filterButtonGroup},c().createElement(l.Button,{"data-testid":b.b.breakdowns.common.filterButton,ref:x,onClick:()=>e.onChange(null!=i?i:z),size:"sm",fill:"outline",variant:"secondary"},null!==(H=null==i?void 0:i.value)&&void 0!==H?H:z.value),c().createElement(l.ButtonSelect,{"data-testid":b.b.breakdowns.common.filterSelect,className:O.buttonSelect,variant:"default",options:W,onChange:t=>{e.onChange(t)}}))),!0!==t&&c().createElement(l.LinkButton,{title:`View breakdown of values for ${n}`,variant:"primary",fill:"outline",size:"sm","aria-label":`Select ${n}`,href:e.getViewValuesLink()},"Select"),u&&c().createElement(l.PopoverController,{content:c().createElement(u.Component,{model:u})},((e,t,n)=>{const r={onBlur:t,onFocus:e};return c().createElement(c().Fragment,null,x.current&&c().createElement(c().Fragment,null,c().createElement(l.Popover,j(_(j({},n,m.rest),{show:p,wrapperClassName:O.popover,referenceElement:x.current,renderArrow:!0}),r))))})))}));const B=e=>({selected:(0,v.css)({label:"selectable-value-selected","&:before":{content:'""',position:"absolute",left:0,top:"4px",height:"calc(100% - 8px)",width:"2px",backgroundColor:e.colors.warning.main}}),description:(0,v.css)({textAlign:"left",fontSize:e.typography.pxToRem(12)})}),M=e=>({popover:(0,v.css)({borderRadius:e.shape.radius.default,boxShadow:e.shadows.z3,background:e.colors.background.primary,border:`1px solid ${e.colors.border.weak}`}),description:(0,v.css)({textAlign:"left",fontSize:e.typography.pxToRem(12)}),buttonSelect:(0,v.css)({border:`1px solid ${e.colors.border.strong}`,borderLeft:"none",borderTopLeftRadius:0,borderBottomLeftRadius:0,padding:1,height:"24px"})})},4144:(e,t,n)=>{n.d(t,{ee:()=>f,gf:()=>g,wd:()=>h});var r=n(2672),a=n(5959),i=n.n(a),s=n(7781),l=n(1383),o=n(2007),c=n(227),u=n(1220),d=n(5722);function p(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class g extends s.BusEventBase{constructor(e,t,n){super(),p(this,"target",void 0),p(this,"sortBy",void 0),p(this,"direction",void 0),this.target=e,this.sortBy=t,this.direction=n}}p(g,"type","sort-criteria-changed");class h extends r.Bs{constructor(e){const{sortBy:t,direction:n}=(0,c.vs)(e.target,d.DEFAULT_SORT_BY,"desc");super({target:e.target,sortBy:t,direction:n}),p(this,"sortingOptions",[{label:"",options:[{value:"changepoint",label:"Most relevant",description:"Smart ordering of graphs based on the most significant spikes in the data"},{value:"outliers",label:"Outlying values",description:"Order by the amount of outlying values in the data"},{value:s.ReducerID.stdDev,label:"Widest spread",description:"Sort graphs by deviation from the average value"},{value:"alphabetical",label:"Name",description:"Alphabetical order"},{value:s.ReducerID.sum,label:"Count",description:"Sort graphs by total number of logs"},{value:s.ReducerID.max,label:"Highest spike",description:"Sort graphs by the highest values (max)"},{value:s.ReducerID.min,label:"Lowest dip",description:"Sort graphs by the smallest values (min)"}]},{label:"Percentiles",options:[...s.fieldReducers.selectOptions([],m).options]}]),p(this,"onCriteriaChange",(e=>{e.value&&(this.setState({sortBy:e.value}),(0,c.fq)(this.state.target,e.value,this.state.direction),this.publishEvent(new g(this.state.target,e.value,this.state.direction),!0))})),p(this,"onDirectionChange",(e=>{e.value&&(this.setState({direction:e.value}),(0,c.fq)(this.state.target,this.state.sortBy,e.value),this.publishEvent(new g(this.state.target,this.state.sortBy,e.value),!0))}))}}p(h,"Component",(({model:e})=>{const{sortBy:t,direction:n}=e.useState(),r=e.sortingOptions.find((e=>e.options.find((e=>e.value===t)))),a=null==r?void 0:r.options.find((e=>e.value===t));return i().createElement(i().Fragment,null,i().createElement(o.InlineField,{label:"Sort by",htmlFor:"sort-by-criteria",tooltip:"Calculate a derived quantity from the values in your time series and sort by this criteria. Defaults to standard deviation."},i().createElement(o.Select,{"data-testid":u.b.breakdowns.common.sortByFunction,value:a,width:20,isSearchable:!0,options:e.sortingOptions,placeholder:"Choose criteria",onChange:e.onCriteriaChange,inputId:"sort-by-criteria"})),i().createElement(o.InlineField,null,i().createElement(o.Select,{"data-testid":u.b.breakdowns.common.sortByDirection,onChange:e.onDirectionChange,"aria-label":"Sort direction",placeholder:"",value:n,options:[{label:"Asc",value:"asc"},{label:"Desc",value:"desc"}]})))}));const v=["p10","p25","p75","p90","p99"];function m(e){return e.id>="p1"&&e.id<="p99"&&v.includes(e.id)}function f(e){var t;return null!==(t=(0,l.H7)(e))&&void 0!==t?t:"No labels"}},9570:(e,t,n)=>{n.d(t,{O:()=>l});var r=n(6089),a=n(5959),i=n.n(a),s=n(2007);function l({blockingMessage:e,isLoading:t,children:n}){const r=(0,s.useStyles2)(o);return t&&!e&&(e="Loading..."),t?i().createElement(s.LoadingPlaceholder,{className:r.statusMessage,text:e}):e?i().createElement("div",{className:r.statusMessage},e):i().createElement(i().Fragment,null,n)}function o(e){return{statusMessage:(0,r.css)({fontStyle:"italic",marginTop:e.spacing(7),textAlign:"center"})}}},1752:(e,t,n)=>{n.d(t,{l:()=>r});const r=20},4592:(e,t,n)=>{n.d(t,{_:()=>E});var r=n(5959),a=n.n(r),i=n(2007),s=n(7781),l=n(6089);function o(e){return{outline:"2px dotted transparent",outlineOffset:"2px",boxShadow:`0 0 0 2px ${e.colors.background.canvas}, 0 0 0px 4px ${e.colors.primary.main}`,transitionTimingFunction:"cubic-bezier(0.19, 1, 0.22, 1)",transitionDuration:"0.2s",transitionProperty:"outline, outline-offset, box-shadow"}}function c(e,t){return{zIndex:"-1",position:"absolute",opacity:"0",width:`${e}px`,height:`${e}px`,borderRadius:t.shape.radius.default,content:'""',[t.transitions.handleMotion("no-preference","reduce")]:{transitionDuration:"0.2s",transitionTimingFunction:"cubic-bezier(0.4, 0, 0.2, 1)",transitionProperty:"opacity"}}}function u(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function d(e){for(var t=1;t{const t=(0,i.useTheme2)(),n=e.regex?t.colors.text.maxContrast:t.colors.text.disabled,r=g(t),s=(e.regex?"Disable":"Enable")+" regex";return a().createElement(i.Tooltip,{content:s},a().createElement("button",{onClick:()=>e.onRegexToggle(e.regex?"match":"regex"),className:(0,l.cx)(r.button,e.regex?r.active:null),"aria-label":s},a().createElement("svg",{fill:n,width:"16",height:"16",viewBox:"0 0 16 16",xmlns:"http://www.w3.org/2000/svg"},a().createElement("text",{fontSize:"13",width:"16",height:"16",x:"50%",y:"50%",dominantBaseline:"central",textAnchor:"middle"},".*"))))},g=(e,t="secondary")=>{const n=16+e.spacing.gridSize;return{button:(0,l.css)({zIndex:0,position:"relative",margin:`0 ${e.spacing.x0_5} 0 ${e.spacing.x0_5}`,boxShadow:"none",border:"none",display:"inline-flex",background:"transparent",justifyContent:"center",alignItems:"center",padding:0,color:e.colors.text.primary,"&:before":(r=d({},c(n,e)),a={position:"absolute"},a=null!=a?a:{},Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(a)):function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t.push.apply(t,n)}return t}(Object(a)).forEach((function(e){Object.defineProperty(r,e,Object.getOwnPropertyDescriptor(a,e))})),r),"&:hover":{"&:before":{backgroundColor:"secondary"===t?e.colors.action.hover:s.colorManipulator.alpha(e.colors.text.primary,.12),opacity:1}},"&:focus, &:focus-visible":o(e),"&:focus:not(:focus-visible)":{outline:"none",boxShadow:"none"}}),active:(0,l.css)({"&:before":{backgroundColor:"secondary"===t?e.colors.action.hover:s.colorManipulator.alpha(e.colors.text.primary,.12),opacity:1},"&:hover":{"&:before":{backgroundColor:"none",opacity:0}}})};var r,a};var h=n(1220),v=n(4793);function m(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function f(e){for(var t=1;t{const t=(0,i.useTheme2)(),n=e.caseSensitive?t.colors.text.maxContrast:t.colors.text.disabled,r=y(t),s=(e.caseSensitive?"Disable":"Enable")+" case match";return a().createElement(i.Tooltip,{content:s},a().createElement("button",{onClick:()=>e.onCaseSensitiveToggle(e.caseSensitive?v.ld.caseInsensitive:v.ld.caseSensitive),className:(0,l.cx)(r.button,e.caseSensitive?r.active:null),"aria-label":s},a().createElement("svg",{fill:n,width:"16",height:"16",viewBox:"0 0 16 16",xmlns:"http://www.w3.org/2000/svg"},a().createElement("text",{fontSize:"13",width:"16",height:"16",x:"50%",y:"50%",dominantBaseline:"central",textAnchor:"middle"},"Aa"))))},y=(e,t="secondary")=>{const n=16+e.spacing.gridSize;return{button:(0,l.css)({zIndex:0,position:"relative",margin:`0 ${e.spacing.x0_5} 0 ${e.spacing.x0_5}`,boxShadow:"none",border:"none",display:"inline-flex",background:"transparent",justifyContent:"center",alignItems:"center",padding:0,color:e.colors.text.primary,"&:before":(r=f({},c(n,e)),a={position:"absolute"},a=null!=a?a:{},Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(a)):function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t.push.apply(t,n)}return t}(Object(a)).forEach((function(e){Object.defineProperty(r,e,Object.getOwnPropertyDescriptor(a,e))})),r),"&:hover":{"&:before":{backgroundColor:"secondary"===t?e.colors.action.hover:s.colorManipulator.alpha(e.colors.text.primary,.12),opacity:1}},"&:focus, &:focus-visible":o(e),"&:focus:not(:focus-visible)":{outline:"none",boxShadow:"none"}}),active:(0,l.css)({"&:before":{backgroundColor:"secondary"===t?e.colors.action.hover:s.colorManipulator.alpha(e.colors.text.primary,.12),opacity:1},"&:hover":{"&:before":{backgroundColor:"none",opacity:0}}})};var r,a};function S(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const w=e=>{var{value:t,onChange:n,placeholder:r,onClear:s,suffix:l,width:o}=e,c=function(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}(e,["value","onChange","placeholder","onClear","suffix","width"]);const u=(0,i.useStyles2)(O);return a().createElement(i.Input,function(e){for(var t=1;t({suffixWrapper:(0,l.css)({gap:e.spacing(.5),display:"inline-flex"}),clearIcon:(0,l.css)({cursor:"pointer"})}),x=30;function E({exclusive:e,lineFilter:t,caseSensitive:n,setExclusive:s,regex:o,onInputChange:c,onCaseSensitiveToggle:u,onRegexToggle:d,handleEnter:g,onSubmitLineFilter:v,onClearLineFilter:m,focus:f,setFocus:y,type:S}){const O=(0,i.useStyles2)((e=>C(e,S))),[E,k]=(0,r.useState)(x);function F(e){var t;const n=Math.max(null!==(t=null==e?void 0:e.length)&&void 0!==t?t:0,x);k(n+9)}return(0,r.useEffect)((()=>{F(t)}),[t,f]),a().createElement("div",{className:O.wrapper},!v&&a().createElement(i.Select,{prefix:null,className:O.select,value:e?"exclusive":"inclusive",options:[{value:"exclusive",label:"Exclude"},{value:"inclusive",label:"Include"}],onChange:()=>s(!e)}),a().createElement(i.Field,{className:O.field},a().createElement(w,{width:f?E:void 0,onFocus:()=>y(!0),"data-testid":h.b.exploreServiceDetails.searchLogs,value:t,className:(0,l.cx)(v?O.inputNoBorderRight:void 0,O.input),onChange:c,suffix:a().createElement("span",{className:`${O.suffix} input-suffix`},a().createElement(b,{caseSensitive:n,onCaseSensitiveToggle:u}),a().createElement(p,{regex:o,onRegexToggle:d})),prefix:null,placeholder:"Search in log lines",onClear:m,onKeyUp:e=>{g(e,t),F(t)}})),v&&a().createElement("span",{className:O.buttonWrap},a().createElement(i.Button,{onClick:()=>{s(!1),v()},className:O.includeButton,variant:"secondary",fill:"outline",disabled:!t},"Include"),a().createElement(i.Button,{onClick:()=>{s(!0),v()},className:O.excludeButton,variant:"secondary",fill:"outline",disabled:!t},"Exclude")))}const C=(e,t)=>({inputNoBorderRight:(0,l.css)({input:{borderTopRightRadius:0,borderBottomRightRadius:0}}),suffix:(0,l.css)({display:"inline-flex",gap:e.spacing(.5)}),removeBtn:(0,l.css)({borderTopLeftRadius:0,borderBottomLeftRadius:0}),buttonWrap:(0,l.css)({display:"flex",justifyContent:"center"}),includeButton:(0,l.css)({borderLeft:"none",borderRadius:0,borderRight:"none","&[disabled]":{borderRight:"none"}}),excludeButton:(0,l.css)({borderRadius:`0 ${e.shape.radius.default} ${e.shape.radius.default} 0`,borderLeft:"none","&[disabled]":{borderLeft:"none"}}),submit:(0,l.css)({borderTopLeftRadius:0,borderBottomLeftRadius:0}),select:(0,l.css)({label:"line-filter-exclusion",marginLeft:0,paddingLeft:0,height:"auto",borderBottomRightRadius:"0",borderTopRightRadius:"0",borderRight:"none",minHeight:"30px",minWidth:"95px",maxWidth:"95px",outline:"none"}),wrapper:(0,l.css)({display:"flex",width:"100%"}),input:(0,l.css)({label:"line-filter-input-wrapper",minWidth:"200px",maxWidth:"editor"===t?"calc(100vw - 198px)":"calc(100vw - 288px)",input:{borderTopLeftRadius:0,borderBottomLeftRadius:0,fontFamily:"monospace",fontSize:e.typography.bodySmall.fontSize,width:"100%"}}),exclusiveBtn:(0,l.css)({marginRight:"1rem"}),field:(0,l.css)({label:"field",flex:"0 1 auto",marginBottom:0})})},9254:(e,t,n)=>{n.d(t,{PY:()=>S,ZB:()=>b,zQ:()=>y});var r=n(6089),a=n(2672),i=n(2007),s=n(5959),l=n.n(s),o=n(227),c=n(1254),u=n(2718),d=n(8760),p=n(7781),g=n(9153),h=n(8531),v=n(4011),m=n(2871);function f(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class b extends a.Bs{constructor(e){super(function(e){for(var t=1;t{this.getLogsPanelScene().setState({wrapLogMessage:e}),(0,o.YK)("wrapLogMessage",e),this.getLogsListScene().setLogsVizOption({wrapLogMessage:e}),this.getLogsListScene().setLogsVizOption({prettifyLogMessage:e})})),f(this,"onChangeLogsSortOrder",(e=>{this.getLogsPanelScene().setState({sortOrder:e}),(0,o.YK)("sortOrder",e),this.getLogsListScene().setLogsVizOption({sortOrder:e})})),f(this,"getLogsListScene",(()=>a.jh.getAncestor(this,c.i))),f(this,"getLogsPanelScene",(()=>a.jh.getAncestor(this,g.o))),f(this,"clearDisplayedFields",(()=>{this.getLogsListScene().clearDisplayedFields(),(0,u.EE)(u.NO.service_details,u.ir.service_details.logs_clear_displayed_fields)}))}}function y(){return(0,o.YM)("sortOrder",p.LogsSortOrder.Descending)}function S(){const e=h.locationService.getLocation(),t=new URLSearchParams(e.search).get("sortOrder");try{if("string"==typeof t){const e=(0,v.FH)(JSON.parse(t));if(e)return e}}catch(e){m.v.error(e,{msg:"LogOptionsScene(getLogsPanelSortOrderFromURL): unable to parse sortOrder"})}return!1}f(b,"Component",(function({model:e}){const{onChangeVisualizationType:t,visualizationType:n}=e.useState(),{wrapLogMessage:r,sortOrder:a}=e.getLogsPanelScene().useState(),{displayedFields:s}=e.getLogsListScene().useState(),o=(0,i.useStyles2)(w),c=null!=r&&r;return l().createElement("div",{className:o.container},s.length>0&&l().createElement(i.Tooltip,{content:`Clear displayed fields: ${s.join(", ")}`},l().createElement(i.Button,{size:"sm",variant:"secondary",fill:"outline",onClick:e.clearDisplayedFields},"Show original log line")),l().createElement(i.InlineField,{className:o.buttonGroupWrapper,transparent:!0},l().createElement(i.RadioButtonGroup,{size:"sm",options:[{label:"Newest first",value:p.LogsSortOrder.Descending,description:"Show results newest to oldest"},{label:"Oldest first",value:p.LogsSortOrder.Ascending,description:"Show results oldest to newest"}],value:a,onChange:e.onChangeLogsSortOrder})),l().createElement(i.InlineField,{className:o.buttonGroupWrapper,transparent:!0},l().createElement(i.RadioButtonGroup,{size:"sm",value:c,onChange:e.handleWrapLinesChange,options:[{label:"Wrap",value:!0,description:"Enable wrapping of long log lines"},{label:"No wrap",value:!1,description:"Disable wrapping of long log lines"}]})),l().createElement(d.C,{vizType:n,onChange:t}))}));const w=e=>({container:(0,r.css)({display:"flex",alignItems:"center",gap:e.spacing(1),marginTop:e.spacing(.5)}),buttonGroupWrapper:(0,r.css)({margin:0,alignItems:"center"})})},1254:(e,t,n)=>{n.d(t,{i:()=>dt});var r=n(5959),a=n.n(r),i=n(2672),s=n(6089),l=n(7781),o=n(9186),c=n(2871),u=n(8831),d=n(4011);function p(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function g(e){for(var t=1;t{},columns:{},filteredColumns:{},setColumns:()=>{},setFilteredColumns:()=>{},setVisible:()=>!1,visible:!1,bodyState:"auto",setBodyState:()=>{},clearSelectedLine:()=>{}}),f=({children:e,initialColumns:t,logsFrame:n,setUrlColumns:i,clearSelectedLine:s,setUrlTableBodyState:l,urlTableBodyState:u,showColumnManagementDrawer:p,isColumnManagementActive:v})=>{const[f,y]=(0,r.useState)(b(t)),[S,w]=(0,r.useState)(null!=u?u:"auto"),[O,x]=(0,r.useState)(void 0),E=function(){let e={};const t=localStorage.getItem(h);if(t)try{return e=(0,d.Zt)(JSON.parse(t)),!1===e&&c.v.error(new d.QX("getColumnWidthsFromLocalStorage: unable to validate values in local storage"),{msg:"NarrowingError: error parsing table column widths from local storage"}),e}catch(e){c.v.error(e,{msg:"error parsing table column widths from local storage"})}return e}(),[C,k]=(0,r.useState)(E),F=(0,r.useCallback)((e=>{if(e){const t=b(e);y(t),i((e=>{let t=[];return Object.keys(e).forEach((n=>{e[n].active&&void 0!==e[n].index&&t.push(n)})),t.sort(((t,n)=>{const r=e[t],a=e[n];return r.index-a.index})),t})(t))}}),[i]),P=(0,r.useCallback)((e=>{w(e),l(e)}),[l]),L=(0,r.useCallback)((e=>{p(e)}),[p]);return(0,r.useEffect)((()=>{t&&F(t)}),[t,F]),(0,r.useEffect)((()=>{const e=function(e,t){if(!t)return void c.v.warn("missing dataframe, cannot set url state");const n=Object.keys(e).filter((t=>{var n;return null===(n=e[t])||void 0===n?void 0:n.active})).sort(((t,n)=>{const r=e[t],a=e[n];return void 0!==r.index&&void 0!==a.index?r.index-a.index:0})),r=t.timeField,a=t.bodyField;if(r&&a||n.length){const e=[];return(null==r?void 0:r.name)&&e.push(r.name),(null==a?void 0:a.name)&&e.push(a.name),n.length?n:e}return[]}(f,n);(null==e?void 0:e.length)&&(0===Object.keys(f).filter((e=>f[e].active)).length&&function(e,t,n){const r=g({},e);r[(0,o.fF)(n)]={index:0,active:!0,type:"TIME_FIELD",percentOfLinesWithLabel:100,cardinality:1/0},r[(0,o.Il)(n)]={index:1,active:!0,type:"BODY_FIELD",percentOfLinesWithLabel:100,cardinality:1/0},t(r)}(f,F,n),x(void 0))}),[f,n,x,F]),a().createElement(m.Provider,{value:{setColumnWidthMap:e=>{localStorage.setItem(h,JSON.stringify(e)),k(e)},columnWidthMap:C,bodyState:S,setBodyState:P,setFilteredColumns:x,filteredColumns:O,columns:f,setColumns:F,visible:v,setVisible:L,clearSelectedLine:()=>{s()}}},e)},b=e=>{if("labelTypes"in e){const t=g({},e),{labelTypes:n}=t;return function(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}(t,["labelTypes"])}return e},y=()=>(0,r.useContext)(m);var S=n(3367),w=n(1269),O=n(8531),x=n(3321),E=n(2007);const C=(0,r.createContext)({cellIndex:{index:null,numberOfMenuItems:3},setActiveCellIndex:e=>!1}),k=({children:e})=>{const[t,n]=(0,r.useState)({index:null}),i=(0,r.useCallback)((e=>{n(e)}),[]);return a().createElement(C.Provider,{value:{cellIndex:t,setActiveCellIndex:i}},e)},F=()=>(0,r.useContext)(C),P=(0,r.createContext)({isHeaderMenuActive:!1,setHeaderMenuActive:e=>!1}),L=({children:e})=>{const[t,n]=(0,r.useState)(!1),i=(0,r.useCallback)((e=>{n(e)}),[]);return a().createElement(P.Provider,{value:{isHeaderMenuActive:t,setHeaderMenuActive:i}},e)},j=()=>(0,r.useContext)(P);var _=n(4932);function T({searchValue:e,setSearchValue:t}){const{columns:n,setFilteredColumns:r}=y(),i=e=>{const t=e[0];let a={},i=0;var s;t.forEach((e=>{e in n&&(a[e]=n[e],i++)})),r(a),s=i,(0,O.reportInteraction)("grafana_logs_app_table_text_search_result_count",{resultCount:s})},l=(o=(0,E.useTheme2)(),{searchWrap:(0,s.css)({padding:`${o.spacing(.4)} 0 ${o.spacing(.4)} ${o.spacing(.4)}`})});var o;return a().createElement(E.Field,{className:l.searchWrap},a().createElement(E.Input,{value:e,type:"text",placeholder:"Search fields by name",onChange:e=>{var a;const s=null===(a=e.currentTarget)||void 0===a?void 0:a.value;var l;t(s),s?(l=s,(0,_.E)(Object.keys(n),l,i)):r(void 0)}}))}var D=n(5755),N=n(5786);function I(){const e=(t=(0,E.useTheme2)(),{empty:(0,s.css)({marginBottom:t.spacing(2),marginLeft:t.spacing(1.75),fontSize:t.typography.fontSize})});var t;return a().createElement("div",{className:e.empty},"No fields")}function $(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function B(e){var t=function(e){if("object"!==M(e)||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!==M(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===M(t)?t:String(t)}function M(e){return e&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}function A(e){const t=(n=(0,E.useTheme2)(),{dragIcon:(0,s.css)({cursor:"drag",marginLeft:n.spacing(1),opacity:.4}),labelCount:(0,s.css)({marginLeft:n.spacing(.5),marginRight:n.spacing(.5),appearance:"none",background:"none",border:"none",fontSize:n.typography.pxToRem(11),opacity:.6,display:"flex",flexDirection:"column",alignItems:"self-end"}),contentWrap:(0,s.css)({display:"flex",alignItems:"center",justifyContent:"space-between",width:"100%"}),customWidthWrap:(0,s.css)({fontSize:n.typography.bodySmall.fontSize,cursor:"pointer"}),checkboxLabel:(0,s.css)({"> span":{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",display:"block",maxWidth:"100%"}})});var n,r,i,l,o,c,u;return e.labels[e.label]?a().createElement(a().Fragment,null,a().createElement("div",{className:t.contentWrap},a().createElement(E.Checkbox,{className:t.checkboxLabel,label:e.label,onChange:e.onChange,checked:null!==(u=null===(r=e.labels[e.label])||void 0===r?void 0:r.active)&&void 0!==u&&u}),e.showCount&&a().createElement("div",{className:t.labelCount},a().createElement("div",null,null===(i=e.labels[e.label])||void 0===i?void 0:i.percentOfLinesWithLabel,"%"),a().createElement("div",null,null===(l=e.labels[e.label])||void 0===l?void 0:l.cardinality," ",1===(null===(o=e.labels[e.label])||void 0===o?void 0:o.cardinality)?"value":"values")),e.columnWidthMap&&e.setColumnWidthMap&&void 0!==(null===(c=e.columnWidthMap)||void 0===c?void 0:c[e.label])&&a().createElement("div",{onClick:()=>{var t;const n=function(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}(n,[r].map(B));null===(t=e.setColumnWidthMap)||void 0===t||t.call(e,i)},title:"Clear column width override",className:t.customWidthWrap},"Reset column width",a().createElement(E.Icon,{name:"x"}))),e.draggable&&a().createElement(E.Icon,{"aria-label":"Drag and drop icon",title:"Drag and drop to reorder",name:"draggabledots",size:"lg",className:t.dragIcon})):null}function R(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function V(e){for(var t=1;t{const{columnWidthMap:t,setColumnWidthMap:n}=y(),{reorderColumn:r,labels:i,valueFilter:l,toggleColumn:o}=e,c=(0,N.$j)(),{columns:u}=y(),d=function(e){return{wrap:(0,s.css)({marginTop:e.spacing(1),marginBottom:e.spacing(1),display:"flex",background:e.colors.background.primary}),dragging:(0,s.css)({background:e.colors.background.secondary}),columnWrapper:(0,s.css)({marginBottom:e.spacing(1.5),paddingLeft:e.spacing(.5)})}}(c),p=Object.keys(i).filter((e=>l(e))),g=e=>{const t=i[e];if(t)return`${e} appears in ${null==t?void 0:t.percentOfLinesWithLabel}% of log lines`};return p.length?a().createElement(D.JY,{onDragEnd:e=>{e.destination&&r(u,e.source.index,e.destination.index)}},a().createElement(D.gL,{droppableId:"order-fields",direction:"vertical"},(e=>a().createElement("div",W(V({className:d.columnWrapper},e.droppableProps),{ref:e.innerRef}),p.sort(function(e){return(t,n)=>{const r=e[t],a=e[n];return null!=r.index&&null!=a.index?r.index-a.index:0}}(i)).map(((e,r)=>a().createElement(D.sx,{draggableId:e,key:e,index:r},((r,l)=>a().createElement("div",W(V({className:(0,s.cx)(d.wrap,l.isDragging?d.dragging:void 0),ref:r.innerRef},r.draggableProps,r.dragHandleProps),{title:g(e)}),a().createElement(A,{setColumnWidthMap:n,columnWidthMap:t,label:e,onChange:()=>o(e),labels:i,draggable:!0})))))),e.placeholder)))):a().createElement(I,null)},H=new Intl.Collator(void 0,{sensitivity:"base"}),Q=e=>{const{labels:t,valueFilter:n,toggleColumn:r}=e,i=(o=(0,E.useTheme2)(),{wrap:(0,s.css)({marginTop:o.spacing(.25),marginBottom:o.spacing(.25),display:"flex",background:o.colors.background.primary,borderBottom:`1px solid ${o.colors.background.canvas}`}),dragging:(0,s.css)({background:o.colors.background.secondary}),columnWrapper:(0,s.css)({marginBottom:o.spacing(1.5),paddingLeft:o.spacing(.5)})}),l=Object.keys(t).filter((e=>n(e)));var o;return l.length?a().createElement("div",{className:i.columnWrapper},l.sort(function(e){return(t,n)=>{const r=e[t],a=e[n];return null!=r&&null!=a?Number("TIME_FIELD"===a.type)-Number("TIME_FIELD"===r.type)||Number("BODY_FIELD"===a.type)-Number("BODY_FIELD"===r.type)||H.compare(t,n):0}}(t)).map((e=>{var n;return a().createElement("div",{key:e,className:i.wrap,title:`${e} appears in ${null===(n=t[e])||void 0===n?void 0:n.percentOfLinesWithLabel}% of log lines`},a().createElement(A,{showCount:!0,label:e,onChange:()=>r(e),labels:t}))}))):a().createElement(I,null)},K=e=>{const t=(n=(0,E.useTheme2)(),{sidebarWrap:(0,s.css)({overflowY:"scroll",height:"calc(100% - 50px)","&::-webkit-scrollbar":{display:"none"},scrollbarWidth:"none"}),columnHeaderButton:(0,s.css)({appearance:"none",background:"none",border:"none",fontSize:n.typography.pxToRem(11)}),columnHeader:(0,s.css)({display:"flex",justifyContent:"space-between",fontSize:n.typography.h6.fontSize,background:n.colors.background.secondary,position:"sticky",top:0,left:0,paddingTop:n.spacing(.75),paddingRight:n.spacing(.75),paddingBottom:n.spacing(.75),paddingLeft:n.spacing(1.5),zIndex:3,marginBottom:n.spacing(2)})});var n,r,i;return a().createElement("div",{className:t.sidebarWrap},a().createElement(a().Fragment,null,a().createElement("div",{className:t.columnHeader},"Selected fields",a().createElement("button",{onClick:e.clear,className:t.columnHeaderButton},"Reset")),a().createElement(z,{reorderColumn:e.reorderColumn,toggleColumn:e.toggleColumn,labels:null!==(r=e.filteredColumnsWithMeta)&&void 0!==r?r:e.columnsWithMeta,valueFilter:t=>{var n,r;return null!==(r=null===(n=e.columnsWithMeta[t])||void 0===n?void 0:n.active)&&void 0!==r&&r},id:"selected-fields"}),a().createElement("div",{className:t.columnHeader},"Fields"),a().createElement(Q,{toggleColumn:e.toggleColumn,labels:null!==(i=e.filteredColumnsWithMeta)&&void 0!==i?i:e.columnsWithMeta,valueFilter:t=>{var n;return!(null===(n=e.columnsWithMeta[t])||void 0===n?void 0:n.active)}})))};function q(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function G(e){for(var t=1;t{if(n===r)return;const a=G({},t),i=Object.keys(a).filter((e=>a[e].active)).map((e=>{var t;return{fieldName:e,index:null!==(t=a[e].index)&&void 0!==t?t:0}})).sort(((e,t)=>e.index-t.index)),[s]=i.splice(n,1);i.splice(r,0,s),i.filter((e=>void 0!==e)).forEach(((e,t)=>{a[e.fieldName].index=t})),e(a)}}function Y(){const{columns:e,setColumns:t,setVisible:n,filteredColumns:i,setFilteredColumns:s}=y(),[l,o]=(0,r.useState)(""),u=J(t);return a().createElement(E.ClickOutsideWrapper,{onClick:()=>{n(!1),s(e),o("")},useCapture:!0},a().createElement(T,{searchValue:l,setSearchValue:o}),a().createElement(K,{toggleColumn:n=>{if(!e||!(n in e))return void function(e,t){let n;try{n={columns:JSON.stringify(t),columnName:e}}catch(t){n={msg:"Table: ColumnSelectionDrawerWrap failed to encode context",columnName:e}}c.v.warn("failed to get column",n)}(n,e);const r=Object.keys(e).filter((t=>e[t].active)).length,a=!e[n].active||void 0;let l;if(l=U(G({},e),a?{[n]:U(G({},e[n]),{active:a,index:r})}:{[n]:U(G({},e[n]),{active:!1,index:void 0})}),function(t){if(e){var n,r;const a=!(null===(n=e[t])||void 0===n?void 0:n.active),i=null===(r=Object.keys(e).filter((t=>{var n;return null===(n=e[t])||void 0===n?void 0:n.active})))||void 0===r?void 0:r.length,s={columnAction:a?"add":"remove",columnCount:a?i+1:i-1};(0,O.reportInteraction)("grafana_logs_app_table_column_filter_clicked",s)}}(n),t(l),i){var u;const e=!(null===(u=i[n])||void 0===u?void 0:u.active);let t;t=U(G({},i),e?{[n]:U(G({},i[n]),{active:e,index:r})}:{[n]:U(G({},i[n]),{active:!1,index:void 0})}),s(t),o("")}},filteredColumnsWithMeta:i,columnsWithMeta:e,clear:()=>{const n=G({},e);let r=0;Object.keys(n).forEach((e=>{const t="BODY_FIELD"===n[e].type||"TIME_FIELD"===n[e].type;n[e].active=t,n[e].index=t?r++:void 0})),t(n),s(n),o("")},reorderColumn:u}))}const X=e=>a().createElement(Z,{onMouseOut:e.onMouseOut,onMouseIn:e.onMouseIn,onClick:e.onClick,field:e.field,rowIndex:e.rowIndex},e.children),Z=e=>{var t;const n=(0,E.useTheme2)(),r=F(),i=(e=>({active:(0,s.css)({height:"calc(100% + 36px)",zIndex:e.zIndex.tooltip,background:"transparent"}),wrap:(0,s.css)({position:"absolute",overflowX:"hidden",whiteSpace:"nowrap",width:"100%",height:"100%",left:0,top:0,margin:"auto",background:"transparent"})}))(n,0,null===(t=r.cellIndex)||void 0===t||t.numberOfMenuItems);return a().createElement("div",{onMouseLeave:e.onMouseOut,onMouseEnter:e.onMouseIn,onClick:e.onClick,className:r.cellIndex.index===e.rowIndex&&r.cellIndex.fieldName===e.field.name?(0,s.cx)(i.wrap,i.active):i.wrap},e.children)},ee={logsFrame:null,addFilter:e=>{},timeRange:void 0,selectedLine:void 0},te=(0,r.createContext)(ee),ne=({children:e,logsFrame:t,addFilter:n,selectedLine:r,timeRange:i})=>a().createElement(te.Provider,{value:{logsFrame:t,addFilter:n,selectedLine:r,timeRange:i}},e),re=()=>(0,r.useContext)(te);var ae=n(4793);const ie=e=>{const t=(r=(0,E.useTheme2)(),i=e.pillType,{menu:(0,s.css)({position:"relative",paddingRight:"5px",display:"flex",minWidth:"60px",justifyContent:"flex-start"}),menuItemsWrap:(0,s.css)({boxShadow:r.shadows.z3,display:"flex",background:r.colors.background.secondary,padding:"5px 0",marginLeft:"column"===i?"5px":void 0}),menuItem:(0,s.css)({overflow:"auto",textOverflow:"ellipsis",cursor:"pointer",paddingLeft:"5px",paddingRight:"5px",display:"flex",alignItems:"center"})}),{addFilter:n}=re();var r,i;return a().createElement("span",{className:t.menu},a().createElement("span",{className:t.menuItemsWrap},"derived"!==e.fieldType&&a().createElement(a().Fragment,null,a().createElement("div",{className:t.menuItem,onClick:()=>{n({key:e.label,value:e.value,operator:ae.w7.Equal})}},a().createElement(E.Icon,{title:"Add to search",size:"md",name:"plus-circle"})),a().createElement("div",{className:t.menuItem,onClick:()=>{n({key:e.label,value:e.value,operator:ae.w7.NotEqual})}},a().createElement(E.Icon,{title:"Exclude from search",size:"md",name:"minus-circle"}))),e.showColumn&&a().createElement("div",{title:"Add column",onClick:e.showColumn,className:t.menuItem},a().createElement("svg",{width:"18",height:"16",viewBox:"0 0 18 16",fill:"none",xmlns:"http://www.w3.org/2000/svg"},a().createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M1.38725 1.33301H13.3872C13.5641 1.33301 13.7336 1.40325 13.8587 1.52827C13.9837 1.65329 14.0539 1.82286 14.0539 1.99967V2.33333C14.0539 2.70152 13.7554 3 13.3872 3H13.0542C12.87 3 12.7206 2.85062 12.7206 2.66634H8.05391V13.333H12.7206C12.7206 13.1491 12.8697 13 13.0536 13H13.3872C13.7554 13 14.0539 13.2985 14.0539 13.6667V13.9997C14.0539 14.1765 13.9837 14.3461 13.8587 14.4711C13.7336 14.5961 13.5641 14.6663 13.3872 14.6663H1.38725C1.21044 14.6663 1.04087 14.5961 0.915843 14.4711C0.790819 14.3461 0.720581 14.1765 0.720581 13.9997V1.99967C0.720581 1.82286 0.790819 1.65329 0.915843 1.52827C1.04087 1.40325 1.21044 1.33301 1.38725 1.33301ZM2.05391 13.333H6.72058V2.66634H2.05391V13.333Z",fill:"#CCCCDC",fillOpacity:"1"}),a().createElement("path",{d:"M13.8538 7.19999H16.2538C16.466 7.19999 16.6695 7.28429 16.8195 7.4343C16.9696 7.58432 17.0538 7.78783 17.0538 7.99999C17.0538 8.21214 16.9696 8.41566 16.8195 8.56567C16.6695 8.71569 16.466 8.79999 16.2538 8.79999H13.8538V11.2C13.8538 11.4121 13.7696 11.6156 13.6195 11.7657C13.4695 11.9157 13.266 12 13.0538 12C12.8416 12 12.6382 11.9157 12.4881 11.7657C12.3381 11.6156 12.2538 11.4121 12.2538 11.2V8.79999H9.85384C9.64165 8.79999 9.43819 8.71569 9.28815 8.56567C9.13811 8.41566 9.05383 8.21214 9.05383 7.99999C9.05383 7.78783 9.13811 7.58432 9.28815 7.4343C9.43819 7.28429 9.64165 7.19999 9.85384 7.19999H12.2538V4.8C12.2538 4.58784 12.3381 4.38433 12.4881 4.23431C12.6382 4.0843 12.8416 4 13.0538 4C13.266 4 13.4695 4.0843 13.6195 4.23431C13.7696 4.38433 13.8538 4.58784 13.8538 4.8V7.19999Z",fill:"#CCCCDC",fillOpacity:"1"}))),e.links&&e.links.map((e=>{var n;return a().createElement("div",{className:t.menuItem,onClick:()=>{window.open(e.href,"_blank")},key:e.href},a().createElement(E.Icon,{title:null!==(n=e.title)&&void 0!==n?n:"Link",key:e.href,size:"md",name:"link"}))}))))},se="detected_level",le=e=>{const{label:t,value:n}=e,r=(0,E.useTheme2)(),{cellIndex:i}=F();let o;if(t===se){const e=$e().options;"string"==typeof n&&n in e&&(o=e[n].color)}const c=i.index===e.rowIndex&&e.field.name===i.fieldName,u=((e,t)=>({activePillWrap:(0,s.css)({}),pillWrap:(0,s.css)({width:"100%"}),pill:(0,s.css)({border:`1px solid ${e.colors.border.weak}`,"&:hover":{border:`1px solid ${e.colors.border.strong}`},marginRight:"5px",marginTop:"4px",marginLeft:"5px",padding:"2px 5px",position:"relative",display:"inline-flex",flexDirection:"row-reverse",backgroundColor:"transparent",paddingLeft:t?`${e.spacing(.75)}`:"2px","&:before":{content:'""',position:"absolute",left:0,top:0,height:"100%",width:`${e.spacing(.25)}`,backgroundColor:t}}),menu:(0,s.css)({width:"100%"}),menuItem:(0,s.css)({overflow:"auto",textOverflow:"ellipsis"}),menuItemText:(0,s.css)({width:"65px",display:"inline-block"})}))(r,o);return a().createElement("div",{className:(0,s.cx)(u.pillWrap,c?u.activePillWrap:void 0)},!!n&&a().createElement(a().Fragment,null,a().createElement("span",{className:u.pill},a().createElement(a().Fragment,null,n)),c&&"string"==typeof n&&e.field.type!==l.FieldType.time&&a().createElement(ie,{label:e.label,value:n,pillType:"column"})))};var oe=n(1220),ce=n(8315);function ue(e){var t;const n=(g=(0,E.useTheme2)(),{clipboardButton:(0,s.css)({padding:0,height:"100%",lineHeight:"1",width:"20px"}),inspectButton:(0,s.css)({display:"inline-flex",verticalAlign:"middle",margin:0,overflow:"hidden",borderRadius:"5px"}),iconWrapper:(0,s.css)({height:"35px",position:"sticky",left:0,display:"flex",background:g.colors.background.secondary,padding:`0 ${g.spacing(.5)}`,zIndex:1,boxShadow:g.shadows.z2}),inspect:(0,s.css)({padding:"5px 3px","&:hover":{color:g.colors.text.link,cursor:"pointer"}})}),{logsFrame:i,timeRange:l}=re(),o=null==i||null===(t=i.idField)||void 0===t?void 0:t.values[e.rowIndex],c=null==i?void 0:i.bodyField.values[e.rowIndex],[u,d]=(0,r.useState)(!1),p=(0,r.useCallback)((()=>l?(0,ce.gW)("selectedLine",{id:o,row:e.rowIndex},l):""),[o,e.rowIndex,l]);var g;return a().createElement(a().Fragment,null,a().createElement("div",{className:n.iconWrapper},a().createElement("div",{className:n.inspect},a().createElement(E.IconButton,{"data-testid":oe.b.table.inspectLine,className:n.inspectButton,tooltip:"View log line",variant:"secondary","aria-label":"View log line",tooltipPlacement:"top",size:"md",name:"eye",onClick:()=>d(!0),tabIndex:0})),a().createElement("div",{className:n.inspect},a().createElement(E.ClipboardButton,{className:n.clipboardButton,icon:"share-alt",variant:"secondary",fill:"text",size:"md",tooltip:"Copy link to log line",tooltipPlacement:"top",tabIndex:0,getText:p}))),a().createElement(a().Fragment,null,u&&a().createElement(E.Modal,{onDismiss:()=>d(!1),isOpen:!0,title:"Inspect value"},a().createElement("pre",null,c),a().createElement(E.Modal.ButtonRow,null,a().createElement(E.ClipboardButton,{icon:"copy",getText:()=>e.value},"Copy to Clipboard")))))}const de=e=>{var t;let n=e.value;const r=e.field,i=r.display(n),o=(h=(0,E.useTheme2)(),v=e.field.type,{flexWrap:(0,s.css)({display:"flex",alignItems:"flex-start",flexDirection:v===l.FieldType.number?"row-reverse":"row",textAlign:v===l.FieldType.number?"right":"left"}),content:(0,s.css)({position:"relative",overflow:"hidden",display:"flex",height:"100%"}),linkWrapper:(0,s.css)({color:h.colors.text.link,marginTop:"7px",marginLeft:"7px","&:hover":{textDecoration:"underline"}})}),{setVisible:c}=y(),{cellIndex:u,setActiveCellIndex:d}=F(),p={index:e.rowIndex},g=Boolean(null===(t=(0,E.getCellLinks)(e.field,p))||void 0===t?void 0:t.length);var h,v;return null===n?a().createElement(a().Fragment,null):(n=a().isValidElement(e.value)?e.value:"object"==typeof n?JSON.stringify(e.value):(0,l.formattedValueToString)(i),a().createElement(X,{onClick:()=>e.rowIndex===u.index&&e.field.name===u.fieldName?d({index:null}):d({index:e.rowIndex,fieldName:e.field.name,numberOfMenuItems:3}),field:e.field,rowIndex:e.rowIndex},a().createElement("div",{className:o.content},0===e.fieldIndex&&a().createElement(ue,{value:n,rowIndex:e.rowIndex}),a().createElement("div",{className:o.flexWrap}),!g&&((t,n)=>a().createElement(le,{field:e.field,rowIndex:e.rowIndex,showColumns:()=>c(!0),label:n,value:t}))(n,r.name),g&&r.getLinks&&a().createElement(E.DataLinksContextMenu,{links:()=>{var e;return null!==(e=(0,E.getCellLinks)(r,p))&&void 0!==e?e:[]}},(e=>e.openMenu?a().createElement("div",{className:o.linkWrapper,onClick:e.openMenu},a().createElement(a().Fragment,null,n)):a().createElement("div",{className:o.linkWrapper},a().createElement(a().Fragment,null,n)))))))};function pe(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ge(e){const t=(0,E.useTheme2)();let n;if(e.label===se){const t=$e().options;e.value in t&&(n=t[e.value].color)}const r=((e,t)=>({pill:(0,s.css)({flex:"0 1 auto",marginLeft:e.spacing(.5),marginRight:e.spacing(.5),padding:`${e.spacing(.25)} ${e.spacing(.25)}`,position:"relative",display:"inline-flex",flexDirection:"column",marginTop:e.spacing(.5)}),activePill:(0,s.css)({}),valueWrap:(0,s.css)({border:`1px solid ${e.colors.background.secondary}`,boxShadow:`-2px 2px 5px 0px ${e.colors.background.secondary}`,backgroundColor:"transparent",cursor:"pointer",position:"relative",paddingRight:`${e.spacing(.5)}`,paddingLeft:t?`${e.spacing(.75)}`:`${e.spacing(.5)}`,"&:before":{content:'""',position:"absolute",left:0,top:0,height:"100%",width:`${e.spacing(.25)}`,backgroundColor:t},"&:hover":{border:`1px solid ${e.colors.border.strong}`}})}))(t,n);return a().createElement("span",{className:(0,s.cx)(r.pill,e.menuActive?r.activePill:void 0),onClick:e.onClick},a().createElement("span",{className:r.valueWrap},e.label,"=",e.value),e.menuActive&&a().createElement(ie,{pillType:"logPill",fieldType:e.fieldType,links:e.links,label:e.label,value:e.value,showColumn:e.onClickAdd}))}const he=e=>{const{label:t}=e,{cellIndex:n,setActiveCellIndex:i}=F(),{columns:s,setColumns:o}=y(),c=e.value,u=(0,O.getTemplateSrv)(),d=(0,r.useMemo)((()=>u.replace.bind(u)),[u]),p=e.field;if(!p||(null==p?void 0:p.type)===l.FieldType.other)return null;const g={index:e.rowIndex};e.originalField&&e.isDerivedField&&e.originalFrame&&(e.originalField.getLinks=(0,l.getLinksSupplier)(e.originalFrame,e.originalField,{},d));const h=e.originalField&&(0,E.getCellLinks)(e.originalField,g);return a().createElement(ge,{onClick:()=>e.rowIndex===n.index&&p.name===n.fieldName&&t===n.subFieldName?i({index:null}):i({index:e.rowIndex,fieldName:p.name,subFieldName:t,numberOfMenuItems:e.isDerivedField?2:3}),menuActive:n.index===e.rowIndex&&n.fieldName===p.name&&n.subFieldName===t,fieldType:e.isDerivedField?"derived":void 0,label:t,value:c,onClickAdd:()=>(e=>{const t=function(e){for(var t=1;ts[e].active)).length;t[e].active?(t[e].active=!1,t[e].index=void 0):(t[e].active=!0,t[e].index=n),o(t)})(t),links:h})},ve=e=>{var t,n;null==e||null===(n=e.current)||void 0===n||n.scrollTo({left:null===(t=e.current)||void 0===t?void 0:t.scrollLeft})};function me({scrollerRef:e}){const t=(n=(0,E.useTheme2)(),{scroller:s.css` - position: absolute; - right: 0; - display: flex; - align-items: center; - justify-content: center; - width: 40px; - height: 20px; - top: 32px; - margin-top: -24px; - // For some reason clicking on this button causes text to be selected in the following row - user-select: none; - `,scrollLeft:s.css` - cursor: pointer; - background: ${n.colors.background.primary}; - - &:hover { - background: ${n.colors.background.secondary}; - } - `,scrollRight:s.css` - cursor: pointer; - background: ${n.colors.background.primary}; - - &:hover { - background: ${n.colors.background.secondary}; - } - `});var n;return a().createElement("div",{className:t.scroller},a().createElement("span",{onPointerDown:()=>{var t,n;null==(t=e)||null===(n=t.current)||void 0===n||n.scrollTo({top:0,left:0,behavior:"smooth"})},onPointerUp:()=>ve(e),className:t.scrollLeft},a().createElement(E.Icon,{name:"arrow-left"})),a().createElement("span",{onPointerDown:()=>{var t,n;null==(t=e)||null===(n=t.current)||void 0===n||n.scrollTo({top:0,left:t.current.scrollWidth,behavior:"smooth"})},onPointerUp:()=>ve(e),className:t.scrollRight},a().createElement(E.Icon,{name:"arrow-right"})))}function fe(e){const t=(0,E.useTheme2)(),n=be(t);return a().createElement("div",{"data-testid":oe.b.table.rawLogLine,className:n.rawLogLine},a().createElement(a().Fragment,null,e.value))}const be=(e,t)=>({rawLogLine:(0,s.css)({fontFamily:e.typography.fontFamilyMonospace,height:"35px",lineHeight:"35px",paddingRight:e.spacing(1.5),paddingLeft:e.spacing(1),fontSize:e.typography.bodySmall.fontSize})}),ye=e=>{let t=e.value;const n=e.field,i=n.display(t),s=(0,E.useTheme2)(),c=Se(s),{columns:u,setVisible:d,bodyState:p}=y(),{logsFrame:g}=re(),[h,m]=(0,r.useState)(!1),f=(0,r.useRef)(null);t=a().isValidElement(e.value)?e.value:"object"==typeof t?JSON.stringify(e.value):(0,l.formattedValueToString)(i);const b=(t=>Object.keys(u).filter((e=>e!==(0,o.Il)(g))).sort(((e,t)=>e===se?-1:t===se?1:"LINK_FIELD"===u[e].type?-1:"LINK_FIELD"===u[t].type?1:u[e].cardinality>u[t].cardinality?-1:1)).filter((e=>!u[e].active&&u[e].cardinality>1)).map((r=>{var i;const s=t[r],o=null==g||null===(i=g.raw)||void 0===i?void 0:i.fields.find((e=>e.name===r)),c=null==n?void 0:n.values[e.rowIndex],p=!s&&!!c;if(s)return a().createElement(he,{originalFrame:void 0,field:n,columns:u,rowIndex:e.rowIndex,frame:e.frame,showColumns:()=>d(!0),key:r,label:r,isDerivedField:!1,value:s});if(p&&(null==o?void 0:o.name)){const t=null==o?void 0:o.values[e.rowIndex];if((null==o?void 0:o.type)===l.FieldType.string&&t)return a().createElement(he,{originalFrame:null==g?void 0:g.raw,originalField:o,field:n,value:t,columns:u,rowIndex:e.rowIndex,frame:e.frame,showColumns:()=>d(!0),key:o.name,label:o.name,isDerivedField:!0})}return null})).filter((e=>e)))(e.labels),w=p===v.auto,O=b.length>0;return a().createElement(X,{onMouseIn:()=>{m(!0)},onMouseOut:()=>{m(!1)},rowIndex:e.rowIndex,field:e.field},a().createElement(S.ScrollSyncPane,{innerRef:f,group:"horizontal"},a().createElement("div",{className:c.content},0===e.fieldIndex&&a().createElement(ue,{rowIndex:e.rowIndex,value:t}),w&&O&&a().createElement(a().Fragment,null,b),p===v.labels&&O&&a().createElement(a().Fragment,null,b),p===v.labels&&!O&&a().createElement(fe,{value:t}),w&&!O&&a().createElement(fe,{value:t}),p===v.text&&a().createElement(fe,{value:t}),h&&a().createElement(me,{scrollerRef:f}))))},Se=e=>({content:s.css` - white-space: nowrap; - overflow-x: auto; - -ms-overflow-style: none; /* IE and Edge */ - scrollbar-width: none; /* Firefox */ - padding-right: 30px; - display: flex; - align-items: flex-start; - height: 100%; - &::-webkit-scrollbar { - display: none; /* Chrome, Safari and Opera */ - } - - &:after { - pointer-events: none; - content: ''; - width: 100%; - height: 100%; - position: absolute; - left: 0; - top: 0; - // Fade out text in last 10px to background color to add affordance to horiziontal scroll - background: linear-gradient(to right, transparent calc(100% - 10px), ${e.colors.background.primary}); - } - `});function we(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Oe(e){var t=function(e){if("object"!==xe(e)||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!==xe(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===xe(t)?t:String(t)}function xe(e){return e&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}const Ee=e=>{const{setHeaderMenuActive:t,isHeaderMenuActive:n}=j(),{logsFrame:i}=re(),l=(0,r.useRef)(null),c=(f=(0,E.useTheme2)(),b=0===e.fieldIndex,S=e.field.name===(0,o.Il)(i),{logLineButton:(0,s.css)({marginLeft:"5px"}),tableHeaderMenu:(0,s.css)({label:"tableHeaderMenu",width:"100%",minWidth:"250px",height:"100%",maxHeight:"400px",backgroundColor:f.colors.background.primary,border:`1px solid ${f.colors.border.weak}`,padding:f.spacing(2),margin:f.spacing(1,0),boxShadow:f.shadows.z3,borderRadius:f.shape.radius.default}),leftAlign:(0,s.css)({label:"left-align",display:"flex",width:"calc(100% - 20px)"}),clearButton:(0,s.css)({marginLeft:"5px"}),rightAlign:(0,s.css)({label:"right-align",display:"flex",marginRight:"5px"}),wrapper:(0,s.css)({label:"wrapper",display:"flex",marginLeft:b?"56px":"6px",width:S?"calc(100% + 6px)":"100%",borderRight:`1px solid ${f.colors.border.weak}`,marginRight:"-6px"}),defaultContentWrapper:(0,s.css)({borderLeft:b?`1px solid ${f.colors.border.weak}`:"none",marginLeft:b?"-6px":0,paddingLeft:b?"12px":0,display:"flex"})}),{columnWidthMap:u,setColumnWidthMap:d,setBodyState:p,bodyState:g}=y(),h=e.field.name===(0,o.Il)(i),m=()=>{p(g===v.text?v.labels:v.text)};var f,b,S;return a().createElement("span",{className:c.wrapper},a().createElement("span",{className:c.leftAlign},a().createElement("span",{className:c.defaultContentWrapper},e.defaultContent),u&&d&&void 0!==(null==u?void 0:u[e.field.name])&&a().createElement(E.IconButton,{tooltip:"Reset column width",tooltipPlacement:"top",className:c.clearButton,"aria-label":"Reset column width",name:"x",onClick:()=>{const t=function(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}(t,[n].map(Oe));null==d||d(a)}}),h&&a().createElement(a().Fragment,null,g===v.text?a().createElement(E.IconButton,{tooltipPlacement:"top",tooltip:"Show log labels","aria-label":"Show log labels",onClick:m,className:c.logLineButton,name:"brackets-curly",size:"md"}):a().createElement(E.IconButton,{tooltipPlacement:"top",tooltip:"Show log text","aria-label":"Show log text",onClick:m,className:c.logLineButton,name:"text-fields",size:"md"}))),a().createElement("span",{className:c.rightAlign},a().createElement(E.IconButton,{tooltip:`Show ${e.field.name} menu`,tooltipPlacement:"top",ref:l,"aria-label":`Show ${e.field.name} menu`,onClick:e=>{t(!n)},name:"ellipsis-v"})),l.current&&a().createElement(E.Popover,{show:n,content:a().createElement(E.ClickOutsideWrapper,{onClick:()=>t(!1),useCapture:!0},a().createElement("div",{className:c.tableHeaderMenu},e.children)),referenceElement:l.current}))};function Ce(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ke(e){const{setHeaderMenuActive:t}=j(),{columns:n,setColumns:i,bodyState:l,setBodyState:c}=y(),{logsFrame:u}=re(),d=Fe(),p=(0,r.useCallback)((e=>{const t=function(e){for(var t=1;t{const r=t[n].index,a=t[e.name].index;return t[n].active&&a&&r&&r>a})).map((e=>t[e])).forEach((e=>{void 0!==e.index&&e.index--})),t[e.name].active=!1,t[e.name].index=void 0,i(t)}),[n,i]),g=e.headerProps.field.name===(0,o.Il)(u);return a().createElement(Ee,e.headerProps,a().createElement("div",{className:d.linkWrap},a().createElement("a",{className:d.link,onClick:()=>{e.openColumnManagementDrawer(),t(!1)}},a().createElement(E.Icon,{className:d.icon,name:"columns",size:"md"}),"Manage columns")),a().createElement("div",{className:d.linkWrap},a().createElement("a",{className:d.link,onClick:()=>p(e.headerProps.field)},a().createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 17 16",width:"17",height:"16",className:"css-q2u0ig-Icon"},a().createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M1.73446 1.33301H12.2345C12.3892 1.33301 12.5375 1.40325 12.6469 1.52827C12.7563 1.65329 12.8178 1.82286 12.8178 1.99967V4.74967C12.8178 5.07184 12.5566 5.33301 12.2345 5.33301C11.9123 5.33301 11.6511 5.07184 11.6511 4.74967V2.66634H7.56779V13.333H11.6511V10.9163C11.6511 10.5942 11.9123 10.333 12.2345 10.333C12.5566 10.333 12.8178 10.5942 12.8178 10.9163V13.9997C12.8178 14.1765 12.7563 14.3461 12.6469 14.4711C12.5375 14.5961 12.3892 14.6663 12.2345 14.6663H1.73446C1.57975 14.6663 1.43137 14.5961 1.32198 14.4711C1.21258 14.3461 1.15112 14.1765 1.15112 13.9997V1.99967C1.15112 1.82286 1.21258 1.65329 1.32198 1.52827C1.43137 1.40325 1.57975 1.33301 1.73446 1.33301ZM2.31779 13.333H6.40112V2.66634H2.31779V13.333Z",fill:"#CCCCDC",fillOpacity:"1"}),a().createElement("path",{d:"M15.9893 10.6315C15.9498 10.7263 15.8919 10.8123 15.819 10.8846C15.7467 10.9575 15.6607 11.0154 15.5659 11.0549C15.4712 11.0943 15.3695 11.1147 15.2668 11.1147C15.1641 11.1147 15.0625 11.0943 14.9677 11.0549C14.8729 11.0154 14.7869 10.9575 14.7146 10.8846L12.9335 9.09573L11.1524 10.8846C11.0801 10.9575 10.9941 11.0154 10.8993 11.0549C10.8045 11.0943 10.7028 11.1147 10.6002 11.1147C10.4975 11.1147 10.3958 11.0943 10.301 11.0549C10.2063 11.0154 10.1202 10.9575 10.0479 10.8846C9.97504 10.8123 9.91717 10.7263 9.87769 10.6315C9.8382 10.5367 9.81787 10.4351 9.81787 10.3324C9.81787 10.2297 9.8382 10.1281 9.87769 10.0333C9.91717 9.9385 9.97504 9.85248 10.0479 9.78017L11.8368 7.99906L10.0479 6.21795C9.90148 6.07149 9.8192 5.87285 9.8192 5.66573C9.8192 5.4586 9.90148 5.25996 10.0479 5.1135C10.1944 4.96705 10.393 4.88477 10.6002 4.88477C10.8073 4.88477 11.0059 4.96705 11.1524 5.1135L12.9335 6.90239L14.7146 5.1135C14.8611 4.96705 15.0597 4.88477 15.2668 4.88477C15.4739 4.88477 15.6726 4.96705 15.819 5.1135C15.9655 5.25996 16.0478 5.4586 16.0478 5.66573C16.0478 5.87285 15.9655 6.07149 15.819 6.21795L14.0302 7.99906L15.819 9.78017C15.8919 9.85248 15.9498 9.9385 15.9893 10.0333C16.0288 10.1281 16.0491 10.2297 16.0491 10.3324C16.0491 10.4351 16.0288 10.5367 15.9893 10.6315Z",fill:"#CCCCDC",fillOpacity:"1"})),"Remove column")),e.slideLeft&&a().createElement("div",{className:d.linkWrap},a().createElement("a",{className:d.link,onClick:()=>{var t;return null===(t=e.slideLeft)||void 0===t?void 0:t.call(e,n)}},a().createElement(E.Icon,{className:(0,s.cx)(d.icon,d.reverse),name:"arrow-from-right",size:"md"}),"Move left")),e.slideRight&&a().createElement("div",{className:d.linkWrap},a().createElement("a",{className:d.link,onClick:()=>{var t;return null===(t=e.slideRight)||void 0===t?void 0:t.call(e,n)}},a().createElement(E.Icon,{className:d.icon,name:"arrow-from-right",size:"md"}),"Move right")),g&&a().createElement("div",{className:d.linkWrap},a().createElement("a",{className:d.link,onClick:()=>{l===v.text?c(v.labels):c(v.text)}},l===v.text?a().createElement(E.Icon,{className:d.icon,name:"brackets-curly",size:"md"}):a().createElement(E.Icon,{className:d.icon,name:"text-fields",size:"md"}),l===v.text?"Show labels":"Show log text")),e.autoColumnWidths&&a().createElement("div",{className:d.linkWrap},a().createElement("a",{className:d.link,onClick:()=>{var t;return null===(t=e.autoColumnWidths)||void 0===t?void 0:t.call(e)}},a().createElement(E.Icon,{className:d.icon,name:"arrows-h",size:"md"}),"Reset column widths")))}const Fe=()=>({reverse:(0,s.css)({transform:"scaleX(-1)"}),link:(0,s.css)({paddingTop:"5px",paddingBottom:"5px"}),icon:(0,s.css)({marginRight:"10px"}),linkWrap:(0,s.css)({})});var Pe=n(3241);function Le(e,t,n,r,a,i,s){try{var l=e[i](s),o=l.value}catch(e){return void n(e)}l.done?t(o):Promise.resolve(o).then(r,a)}function je(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function _e(e){for(var t=1;t{const{height:t,timeZone:n,logsFrame:i,width:c,labels:u}=e,d=(0,E.useTheme2)(),p={section:(0,s.css)({position:"relative"}),tableWrap:(0,s.css)({".cellActions":{display:"none !important"}})},[g,h]=(0,r.useState)(void 0),{columns:v,visible:m,setVisible:f,setFilteredColumns:b,setColumns:x,clearSelectedLine:C,columnWidthMap:F,setColumnWidthMap:P}=y(),{selectedLine:j}=re(),[_]=(0,r.useState)(j),T=J(x),D=(0,O.getTemplateSrv)(),N=(0,r.useMemo)((()=>D.replace.bind(D)),[D]),I=(0,r.useCallback)((e=>{if(!e.length)return e;const[t]=(0,l.applyFieldOverrides)({data:[e],timeZone:n,theme:d,replaceVariables:N,fieldConfig:{defaults:{custom:{}},overrides:[]}});for(const[n,o]of t.fields.entries()){var r,s;o.type=o.type===l.FieldType.string?null!==(r=Ie(o))&&void 0!==r?r:l.FieldType.string:o.type,o.config=Te(_e({},o.config),{custom:_e({inspect:!0,filterable:!0,headerComponent:t=>a().createElement(L,null,a().createElement(ke,{headerProps:Te(_e({},t),{fieldIndex:n}),openColumnManagementDrawer:()=>f(!0),slideLeft:0!==n?e=>T(e,n,n-1):void 0,slideRight:n!==e.fields.length-1?e=>T(e,n,n+1):void 0,autoColumnWidths:Object.keys(F).length>0?()=>{P({})}:void 0})),width:null!==(s=F[o.name])&&void 0!==s?s:Me(o,n,v,c,t.fields.length,i),cellOptions:Be(o,n,u,i)},o.config.custom),filterable:!0})}return t}),[n,d,u,c,N,f,F]);(0,r.useEffect)((()=>{const e=function(){var e,t=(e=function*(){const e=(t=i.raw).fields.filter((e=>{var n,r,a;const i="json.RawMessage"===(null===(n=e.typeInfo)||void 0===n?void 0:n.frame)&&"labels"===e.name&&(null==t||null===(r=t.meta)||void 0===r?void 0:r.type)!==l.DataFrameType.LogLines,s="labels"===e.name&&e.type===l.FieldType.other&&(null==t||null===(a=t.meta)||void 0===a?void 0:a.type)===l.DataFrameType.LogLines;return i||s})).flatMap((e=>[{id:"extractFields",options:{format:"json",keepTime:!1,replace:!1,source:e.name}}]));var t;const n=function(e){let t={};for(const n in e)t[n]=!0;return Object.keys(e).length>0?{id:"organize",options:{indexByName:e,includeByName:t}}:null}(function(e){let t={};return Object.keys(e).filter((t=>e[t].active)).forEach((n=>{const r=e[n].index;void 0!==r&&(t[n]=r)})),t}(v));if(n)e.push(n);else{const t={time:i.timeField,body:i.bodyField,extraFields:i.extraFields};t&&void 0!==t.body&&void 0!==t.time&&e.push(function(e){return{id:"organize",options:{indexByName:{[e.time.name]:0,[e.body.name]:1},includeByName:{[e.body.name]:!0,[e.time.name]:!0}}}}(t))}if(e.length>0){const t=yield(0,w.lastValueFrom)((0,l.transformDataFrame)(e,[i.raw])),n=I(t[0]);h(n)}else h(I(i.raw))},function(){var t=this,n=arguments;return new Promise((function(r,a){var i=e.apply(t,n);function s(e){Le(i,r,a,s,l,"next",e)}function l(e){Le(i,r,a,s,l,"throw",e)}s(void 0)}))});return function(){return t.apply(this,arguments)}}();e()}),[i.raw,i.bodyField,i.timeField,i.extraFields,I,v]),(0,r.useEffect)((()=>{_&&j&&C()}),[_,C,j]);const $=i.raw.fields.find((e=>e.name===(0,o.po)(i))),B=null==$?void 0:$.values.findIndex((e=>e===(null==_?void 0:_.id))),M=B&&-1!==B?B:void 0;return g?a().createElement("div",{"data-testid":oe.b.table.wrapper,className:p.section},m&&a().createElement(E.Drawer,{size:"sm",onClose:()=>{f(!1),b(v)}},a().createElement(Y,null)),a().createElement("div",{className:p.tableWrap},a().createElement(k,null,a().createElement(S.ScrollSync,{horizontal:!0,vertical:!1,proportional:!1},a().createElement(De,{logsFrame:i,selectedLine:M,data:g,height:t,width:c,onResize:(0,Pe.debounce)(((e,t)=>{const n=Object.keys(v).filter((e=>v[e].active)).find((t=>t===e));if(n&&t>0){const e=_e({},F);e[n]=t,P(e)}}),100)}))))):a().createElement(a().Fragment,null)};function Ie(e){if(e.name){const t=e.name.toLowerCase();if("date"===t||"time"===t)return l.FieldType.time}for(let t=0;t({options:{critical:{color:"#705da0",index:0},crit:{color:"#705da0",index:1},error:{color:"#e24d42",index:2},err:{color:"#e24d42",index:3},eror:{color:"#e24d42",index:4},warning:{color:"#FF9900",index:5},warn:{color:"#FF9900",index:6},info:{color:"#7eb26d",index:7},debug:{color:"#1f78c1",index:8},trace:{color:"#6ed0e0",index:9}},type:l.MappingType.ValueToText});function Be(e,t,n,r){return e.name===(0,o.Il)(r)?{cellComponent:e=>a().createElement(ye,Te(_e({},e),{fieldIndex:t,labels:n[e.rowIndex]})),type:E.TableCellDisplayMode.Custom}:{cellComponent:e=>a().createElement(de,Te(_e({},e),{fieldIndex:t})),type:E.TableCellDisplayMode.Custom}}function Me(e,t,n,r,a,i){var s,c;const u=a<=2?r:Math.min(r/2),d=0===t?50:0;if(e.type===l.FieldType.time)return 200+d;const p=n[e.name];if(void 0===p)return;var g;const h=Math.max(null!==(g=p.maxLength)&&void 0!==g?g:0,e.name.length);return p.maxLength?Math.min(Math.max(6.5*h+95+d,90+d),u):e.name!==(0,o.Il)(i)?Math.min(Math.max(6.5*(null!==(v=null===(c=e.values)||void 0===c||null===(s=c[0])||void 0===s?void 0:s.length)&&void 0!==v?v:80)+95+d,90+d),u):void 0;var v}var Ae=n(5540);const Re=/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{3,})?(?:Z|[-+]\d{2}:?\d{2})$/,Ve=e=>{const{logsFrame:t}=re(),[n,i]=(0,r.useState)({width:0,height:0});(0,Ae.w)({ref:e.panelWrap,onResize:()=>{const t=e.panelWrap.current;t&&(n.width===t.clientWidth&&n.height===t.clientHeight||i({width:t.clientWidth,height:t.clientHeight}))}});const o={section:(0,s.css)({position:"relative"})},c=(0,l.getTimeZone)(),u=(0,r.useCallback)((t=>{const n=e.urlColumns;return(null==n?void 0:n.length)&&Object.values(n).forEach(((e,n)=>{t[e]&&(t[e].active=!0,t[e].index=n)})),t}),[e.urlColumns]);if(!t||!t.raw.length)return null;var d;const p=null!==(d=t.getLogFrameLabelsAsLabels())&&void 0!==d?d:[],g=t?t.raw.length:0;let h=function(e,t){let n={};const r=new Map,a=function(e){const t=new Map;return e.forEach((e=>{Object.keys(e).forEach((n=>{if(t.has(n)){const r=t.get(n),a=null==r?void 0:r.valueSet,i=null==r?void 0:r.maxLength;a&&!(null==a?void 0:a.has(e[n]))&&(null==a||a.add(e[n]),i&&e[n].length>i&&t.set(n,{maxLength:e[n].length,valueSet:a}))}else t.set(n,{maxLength:e[n].length,valueSet:new Set([e[n]])})}))})),t}(t),i=e?e.length:0;return(null==t?void 0:t.length)&&i&&(t.forEach((e=>{Object.keys(e).forEach((e=>{var t;const n=a.get(e);var i;const s=null!==(i=null==n||null===(t=n.valueSet)||void 0===t?void 0:t.size)&&void 0!==i?i:0;if(r.has(e)){const t=r.get(e);t&&((null==t?void 0:t.active)?r.set(e,{percentOfLinesWithLabel:t.percentOfLinesWithLabel+1,active:!0,index:t.index,cardinality:s,maxLength:null==n?void 0:n.maxLength}):r.set(e,{percentOfLinesWithLabel:t.percentOfLinesWithLabel+1,active:!1,index:void 0,cardinality:s,maxLength:null==n?void 0:n.maxLength}))}else r.set(e,{percentOfLinesWithLabel:1,active:!1,index:void 0,cardinality:s,maxLength:null==n?void 0:n.maxLength})}))})),n=Object.fromEntries(r),Object.keys(n).forEach((e=>{n[e].percentOfLinesWithLabel=We(n[e].percentOfLinesWithLabel,i)}))),n}(t.raw,p);const v={time:t.timeField,body:t.bodyField,extraFields:t.extraFields};return v&&(function(e,t,n){e.forEach((e=>{var r,a;if(!e)return;const i=null===(r=t[e.name])||void 0===r?void 0:r.active,s=null===(a=t[e.name])||void 0===a?void 0:a.index;t[e.name]=i&&void 0!==s?{percentOfLinesWithLabel:We(e.values.filter((e=>null!=e)).length,n),active:!0,index:s,cardinality:n}:{percentOfLinesWithLabel:We(e.values.filter((e=>null!=e)).length,n),active:!1,index:void 0,cardinality:n}}))}([v.time,v.body,...v.extraFields],h,g),h=u(h),function(e,t,n){var r,a,i,s,l,o,c,u,d,p;0===e.length&&((null===(i=t.body)||void 0===i?void 0:i.name)&&(n[null===(l=t.body)||void 0===l?void 0:l.name].active=!0,n[null===(o=t.body)||void 0===o?void 0:o.name].index=1),(null===(s=t.time)||void 0===s?void 0:s.name)&&(n[null===(c=t.time)||void 0===c?void 0:c.name].active=!0,n[null===(u=t.time)||void 0===u?void 0:u.name].index=0));(null===(r=t.time)||void 0===r?void 0:r.name)&&(null===(a=t.body)||void 0===a?void 0:a.name)&&(n[null===(d=t.body)||void 0===d?void 0:d.name].type="BODY_FIELD",n[null===(p=t.time)||void 0===p?void 0:p.name].type="TIME_FIELD");t.extraFields.length&&t.extraFields.forEach((e=>{var t;(null===(t=e.config.links)||void 0===t?void 0:t.length)&&(n[e.name].type="LINK_FIELD")}))}(Object.keys(h).filter((e=>h[e].active)),v,h)),a().createElement("section",{className:o.section},a().createElement(f,{setUrlTableBodyState:e.setUrlTableBodyState,logsFrame:t,initialColumns:h,setUrlColumns:e.setUrlColumns,clearSelectedLine:e.clearSelectedLine,urlTableBodyState:e.urlTableBodyState,showColumnManagementDrawer:e.showColumnManagementDrawer,isColumnManagementActive:e.isColumnManagementActive},a().createElement(Ne,{logsFrame:t,timeZone:c,height:n.height-50,width:n.width-25,labels:p})))},We=(e,t)=>Math.ceil(100*e/t);function ze(e){let t=(0,l.guessFieldTypeFromValue)(e);return"string"===t&&Re.test(e)&&(t=l.FieldType.time),t}const He=({dataFrame:e,setUrlColumns:t,urlColumns:n,addFilter:r,selectedLine:i,timeRange:s,panelWrap:l,clearSelectedLine:c,setUrlTableBodyState:u,urlTableBodyState:d,showColumnManagementDrawer:p,isColumnManagementActive:g})=>{if(!e)return null;const h=(0,o.Os)(e);return h?a().createElement(ne,{addFilter:r,selectedLine:i,timeRange:s,logsFrame:h},a().createElement(Ve,{urlTableBodyState:d,setUrlColumns:t,setUrlTableBodyState:u,urlColumns:n,panelWrap:l,clearSelectedLine:c,showColumnManagementDrawer:p,isColumnManagementActive:g})):null};var Qe=n(8760),Ke=n(558),qe=n(833),Ge=n(2254),Ue=n(7097),Je=n(7085);function Ye(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class Xe extends i.Bs{onActivate(){this.setState({menu:new Je.GD({addInvestigationsLink:!1})})}constructor(e){var t,n;super((t=function(e){for(var t=1;t{this.setState({isColumnManagementActive:e})})),this.addActivationHandler(this.onActivate.bind(this))}}Ye(Xe,"Component",(({model:e})=>{const t=(0,E.useStyles2)(Ze),n=i.jh.getAncestor(e,dt),{data:s}=i.jh.getData(e).useState(),{selectedLine:l,urlColumns:o,visualizationType:c,tableLogLineState:u}=n.useState(),{menu:d,isColumnManagementActive:p}=e.useState(),g=i.jh.getTimeRange(e),{value:h}=g.useState(),v=(0,Ge.tn)(s),m=(0,r.useRef)(null);return a().createElement("div",{className:t.panelWrapper,ref:m},a().createElement(E.PanelChrome,{loadingState:null==s?void 0:s.state,title:"Logs",menu:d?a().createElement(d.Component,{model:d}):void 0,actions:a().createElement(a().Fragment,null,a().createElement(E.Button,{onClick:()=>e.showColumnManagementDrawer(!0),variant:"secondary",size:"sm"},"Manage columns"),a().createElement(Qe.C,{vizType:c,onChange:n.setVisualizationType}))},v&&a().createElement(He,{panelWrap:m,addFilter:t=>{const r=(0,Ue.OE)(v,t.key,e);(0,Ke.XI)(t,n,r)},timeRange:h,selectedLine:l,urlColumns:null!=o?o:[],setUrlColumns:e=>{(0,qe.n)(e,n.state.urlColumns)||n.setState({urlColumns:e})},dataFrame:v,clearSelectedLine:()=>{n.state.selectedLine&&n.clearSelectedLine()},setUrlTableBodyState:e=>{n.setState({tableLogLineState:e})},urlTableBodyState:u,showColumnManagementDrawer:e.showColumnManagementDrawer,isColumnManagementActive:p})))}));const Ze=e=>({panelWrapper:(0,s.css)({width:"100%",height:"100%",label:"panel-wrapper-table","button.show-on-hover":{opacity:1,visibility:"visible",background:"none","&:hover":{background:e.colors.secondary.shade}}})});var et=n(2718),tt=n(9153),nt=n(227),rt=n(6177),at=n.n(rt),it=n(4750),st=n(4592),lt=n(8835);function ot(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class ct extends i.Bs{clearVariable(){(0,it.Rr)(this).updateFilters([],{skipPublish:!0}),this.setState({lineFilter:""})}getOperator(){if(this.state.regex&&this.state.exclusive)return ae.cK.negativeRegex;if(this.state.regex&&!this.state.exclusive)return ae.cK.regex;if(!this.state.regex&&this.state.exclusive)return ae.cK.negativeMatch;if(!this.state.regex&&!this.state.exclusive)return ae.cK.match;throw new Error("getOperator: failed to determine operation")}getFilterKey(){return this.state.caseSensitive?ae.ld.caseSensitive:ae.ld.caseInsensitive}getFilter(){return(0,it.Rr)(this).state.filters[0]}updateFilter(e,t=!0){this.updateInputState(e),t?this.updateVariableDebounced(e):this.updateVariable(e)}updateInputState(e){this.setState({lineFilter:e})}constructor(e){var t,n,r;super(function(e){for(var t=1;t{const e=this.getFilter();if(e)return this.setState({lineFilter:e.value,regex:e.operator===ae.cK.regex||e.operator===ae.cK.negativeRegex,caseSensitive:e.key===ae.ld.caseSensitive,exclusive:e.operator===ae.cK.negativeMatch||e.operator===ae.cK.negativeRegex}),()=>{this.clearFilter()}})),ot(this,"clearFilter",(()=>{this.updateVariableDebounced.cancel(),this.updateFilter("",!1)})),ot(this,"onToggleExclusive",(e=>{(0,nt.Bq)(e),this.setState({exclusive:e}),this.updateFilter(this.state.lineFilter,!1)})),ot(this,"onSubmitLineFilter",(()=>{(0,lt.bN)(),this.updateFilter(this.state.lineFilter,!1),this.updateVariableDebounced.flush();const e=(0,it.Gk)(this),t=e.state.filters,n=this.getFilter();e.updateFilters([...t,n]),this.clearVariable()})),ot(this,"handleChange",(e=>{this.updateInputState(e.target.value)})),ot(this,"handleEnter",(e=>{"Enter"===e.key&&this.state.lineFilter&&this.onSubmitLineFilter()})),ot(this,"onCaseSensitiveToggle",(e=>{const t=e===ae.ld.caseSensitive;this.setState({caseSensitive:t}),(0,nt.Xo)(t),this.updateFilter(this.state.lineFilter,!1)})),ot(this,"onRegexToggle",(e=>{const t="regex"===e;this.setState({regex:t}),(0,nt.GL)(t),this.updateFilter(this.state.lineFilter,!1)})),ot(this,"updateVariableDebounced",at()((e=>{this.updateVariable(e)}),1e3)),ot(this,"updateVariable",(e=>{this.updateVariableDebounced.flush();const t=(0,it.Rr)(this),n=(0,it.Gk)(this),r={key:this.getFilterKey(),keyLabel:n.state.filters.length.toString(),operator:this.getOperator(),value:e};t.updateFilters([r]),(0,et.EE)(et.NO.service_details,et.ir.service_details.search_string_in_logs_changed,{searchQueryLength:e.length,containsLevel:e.toLowerCase().includes("level"),operator:r.operator,caseSensitive:r.key})})),this.addActivationHandler(this.onActivate)}}function ut(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}ot(ct,"Component",(function({model:e}){const{lineFilter:t,caseSensitive:n,regex:a,exclusive:i}=e.useState(),[s,l]=(0,r.useState)(!1);return(0,st._)({exclusive:i,lineFilter:t,caseSensitive:n,regex:a,onSubmitLineFilter:e.onSubmitLineFilter,handleEnter:e.handleEnter,onInputChange:e.handleChange,updateFilter:e.updateFilter,onCaseSensitiveToggle:e.onCaseSensitiveToggle,onRegexToggle:e.onRegexToggle,setExclusive:e.onToggleExclusive,onClearLineFilter:e.clearFilter,focus:s,setFocus:l,type:"editor"})}));class dt extends i.Bs{getUrlState(){var e;const t=null!==(e=this.state.urlColumns)&&void 0!==e?e:[],n=this.state.selectedLine,r=this.state.visualizationType;var a,i;const s=null!==(i=null!==(a=this.state.displayedFields)&&void 0!==a?a:(0,nt.N$)(this))&&void 0!==i?i:[];return{urlColumns:JSON.stringify(t),selectedLine:JSON.stringify(n),visualizationType:JSON.stringify(r),displayedFields:JSON.stringify(s),tableLogLineState:JSON.stringify(this.state.tableLogLineState)}}updateFromUrl(e){const t={};try{if("string"==typeof e.urlColumns){const n=(0,d.aJ)(JSON.parse(e.urlColumns));n!==this.state.urlColumns&&(t.urlColumns=n)}if("string"==typeof e.selectedLine){const n=(0,d.lb)(JSON.parse(e.selectedLine));if(n){const e=n;e!==this.state.selectedLine&&(t.selectedLine=e)}}if("string"==typeof e.visualizationType){const n=(0,d.v_)(JSON.parse(e.visualizationType));n&&n!==this.state.visualizationType&&(t.visualizationType=n)}if("string"==typeof e.displayedFields){const n=(0,d.aJ)(JSON.parse(e.displayedFields));n&&n.length&&(t.displayedFields=n)}if("string"==typeof e.tableLogLineState){const n=JSON.parse(e.tableLogLineState);n!==v.labels&&n!==v.text||(t.tableLogLineState=n)}}catch(e){c.v.error(e,{msg:"LogsListScene: updateFromUrl unexpected error"})}Object.keys(t).length&&this.setState(t)}clearSelectedLine(){this.setState({selectedLine:void 0})}onActivate(){const e=new URLSearchParams(O.locationService.getLocation().search);this.setStateFromUrl(e),this.state.panel||this.updateLogsPanel(),this._subs.add(this.subscribeToState(((e,t)=>{e.visualizationType!==t.visualizationType&&this.updateLogsPanel()})))}setStateFromUrl(e){const t=e.get("selectedLine"),n=e.get("urlColumns"),r=e.get("visualizationType");var a;const i=null!==(a=e.get("displayedFields"))&&void 0!==a?a:JSON.stringify((0,nt.N$)(this)),s=e.get("tableLogLineState");this.updateFromUrl({selectedLine:t,urlColumns:n,vizType:r,displayedFields:i,tableLogLineState:s})}getVizPanel(){return this.logsPanelScene=new tt.o({}),new i.G1({direction:"column",children:"logs"===this.state.visualizationType?[new i.G1({children:[new i.vA({body:new ct({lineFilter:this.state.lineFilter}),xSizing:"fill"})]}),new i.vA({height:"calc(100vh - 220px)",body:this.logsPanelScene})]:[new i.vA({body:new ct({lineFilter:this.state.lineFilter}),xSizing:"fill"}),new i.vA({height:"calc(100vh - 220px)",body:new Xe({})})]})}constructor(e){var t,n;super((t=function(e){for(var t=1;t{this.setState({displayedFields:[]}),this.logsPanelScene&&this.logsPanelScene.clearDisplayedFields()})),ut(this,"setLogsVizOption",((e={})=>{this.logsPanelScene&&this.logsPanelScene.setLogsVizOption(e)})),ut(this,"updateLogsPanel",(()=>{if(this.setState({panel:this.getVizPanel()}),this.state.panel){const e=i.jh.findDescendents(this.state.panel,ct);if(e.length){const t=e[0];this._subs.add(t.subscribeToState(((e,t)=>{e.lineFilter!==t.lineFilter&&this.setState({lineFilter:e.lineFilter})})))}}})),ut(this,"setVisualizationType",(e=>{this.setState({visualizationType:e}),(0,et.EE)(et.NO.service_details,et.ir.service_details.logs_visualization_toggle,{visualisationType:e}),(0,nt.o5)(e)})),this.addActivationHandler(this.onActivate.bind(this))}}ut(dt,"Component",(({model:e})=>{const{panel:t}=e.useState();if(t)return a().createElement("div",{className:pt.panelWrapper},a().createElement(t.Component,{model:t}))}));const pt={panelWrapper:(0,s.css)({'section > div[class$="panel-content"]':(0,s.css)({contain:"none",overflow:"auto"})})}},9153:(e,t,n)=>{n.d(t,{o:()=>D});var r=n(2672),a=n(7781),i=n(227),s=n(5959),l=n.n(s),o=n(1254),c=n(2007),u=n(558),d=n(7097),p=n(3143),g=n(2718),h=n(4750),v=n(8315);const m=({onClick:e})=>{const[t,n]=(0,s.useState)(!1);(0,s.useEffect)((()=>{let e;return t&&(e=setTimeout((()=>{n(!1)}),2e3)),()=>{clearTimeout(e)}}),[t]);const r=(0,s.useCallback)(((t,r)=>{e(t,r),n(!0)}),[e]);return l().createElement(c.IconButton,{"aria-label":t?"Copied":"Copy link to log line",tooltip:t?"Copied":"Copy link to log line",tooltipPlacement:"top",variant:t?"primary":"secondary",size:"md",name:t?"check":"share-alt",onClick:r})};var f=n(9254),b=n(3690),y=n(7085),S=n(2254),w=n(4793),O=n(8531),x=n(4011),E=n(2871),C=n(9829),k=n(4482);const F=({clearFilters:e,error:t})=>l().createElement(k.R,null,l().createElement("div",null,l().createElement("p",null,t),l().createElement(c.Button,{variant:"secondary",onClick:e},"Clear filters")));var P=n(1863),L=n(9186);function j(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function _(e){for(var t=1;t{var n,r,i,s,l,o;(null===(r=e.$data)||void 0===r||null===(n=r.state.data)||void 0===n?void 0:n.state)===a.LoadingState.Error?this.handleLogsError(null===(o=e.$data)||void 0===o?void 0:o.state.data):(null===(s=e.$data)||void 0===s||null===(i=s.state.data)||void 0===i?void 0:i.state)===a.LoadingState.Done&&(0,L.y2)(null===(l=e.$data)||void 0===l?void 0:l.state.data.series)?this.handleNoData():this.state.error&&this.clearLogsError(),e.logsCount!==t.logsCount&&(this.state.body?this.state.body.setState({title:this.getTitle(e.logsCount)}):this.setState({body:this.getLogsPanel({wrapLogMessage:this.state.wrapLogMessage,prettifyLogMessage:this.state.wrapLogMessage,sortOrder:this.state.sortOrder})}))})))}handleLogsError(e){var t;const n=(null===(t=e.errors)||void 0===t?void 0:t.length)?e.errors[0]:e.error,r=null==n?void 0:n.message;var a,i;r&&E.v.error(new Error("Logs Panel error"),{msg:r,status:null!==(a=n.statusText)&&void 0!==a?a:"N/A",type:null!==(i=n.type)&&void 0!==i?i:"N/A"});let s="Unexpected error response. Please review your filters or try a different time range.";(null==r?void 0:r.includes("parse error"))?s="Logs could not be retrieved due to invalid filter parameters. Please review your filters and try again.":(null==r?void 0:r.includes("response larger than the max message size"))&&(s="The response is too large to process. Try narrowing your search or using filters to reduce the data size."),this.showLogsError(s)}handleNoData(){this.showLogsError("No logs match your search. Please review your filters or try a different time range.")}showLogsError(e){var t;const n=null!==(t=this.state.logsVolumeCollapsedByError)&&void 0!==t?t:!(0,i.Rf)("collapsed");var a;(this.setState({error:e,logsVolumeCollapsedByError:n}),n)&&(null===(a=r.jh.findByKeyAndType(this,b.b,b._).state.panel)||void 0===a||a.setState({collapsed:!0}))}clearLogsError(){var e;this.state.logsVolumeCollapsedByError&&(null===(e=r.jh.findByKeyAndType(this,b.b,b._).state.panel)||void 0===e||e.setState({collapsed:!1}));this.setState({error:void 0,logsVolumeCollapsedByError:void 0})}setLogsVizOption(e={}){if(this.state.body){if("sortOrder"in e&&e.sortOrder!==this.state.body.state.options.sortOrder){const e=r.jh.getData(this),t=e instanceof r.dt?e:r.jh.findDescendents(e,r.dt)[0];t&&t.runQueries()}this.state.body.onOptionsChange(e)}}getParentScene(){return r.jh.getAncestor(this,o.i)}getTitle(e){var t;const n=(0,a.getValueFormat)("short"),r=void 0!==e?n(e,0):void 0;return void 0!==r?`Logs (${r.text}${null===(t=r.suffix)||void 0===t?void 0:t.trim()})`:"Logs"}getLogsPanel(e){const t=this.getParentScene(),n=t.state.visualizationType,a=r.jh.getAncestor(this,S.Mn);var s,o,c;return r.d0.logs().setTitle(this.getTitle(a.state.logsCount)).setOption("showTime",!0).setOption("onClickFilterLabel",this.handleLabelFilterClick).setOption("onClickFilterOutLabel",this.handleLabelFilterOutClick).setOption("isFilterLabelActive",this.handleIsFilterLabelActive).setOption("onClickFilterString",this.handleFilterStringClick).setOption("onClickFilterOutString",this.handleFilterOutStringClick).setOption("onClickShowField",this.onClickShowField).setOption("onClickHideField",this.onClickHideField).setOption("displayedFields",t.state.displayedFields).setOption("sortOrder",null!==(s=e.sortOrder)&&void 0!==s?s:(0,f.zQ)()).setOption("wrapLogMessage",null!==(o=e.wrapLogMessage)&&void 0!==o?o:Boolean((0,i.YM)("wrapLogMessage",!1))).setOption("prettifyLogMessage",null!==(c=e.prettifyLogMessage)&&void 0!==c?c:Boolean((0,i.YM)("wrapLogMessage",!1))).setMenu(new y.GD({investigationOptions:{type:"logs",getLabelName:()=>`Logs: ${(0,C.Mq)(a)}`}})).setOption("showLogContextToggle",!0).setOption("enableInfiniteScrolling",!0).setOption("onNewLogsReceived",this.updateVisibleRange).setOption("logRowMenuIconsAfter",[l().createElement(m,{onClick:this.handleShareLogLineClick,key:0})]).setHeaderActions(new f.ZB({visualizationType:n,onChangeVisualizationType:t.setVisualizationType})).build()}handleLabelFilter(e,t,n,r){const a=(0,d.OE)(n,e,this);(0,u.Qt)(e,t,r,this,a),(0,g.EE)(g.NO.service_details,g.ir.service_details.logs_detail_filter_applied,{filterType:a,key:e,action:r})}constructor(e){super(_({sortOrder:(0,f.zQ)(),wrapLogMessage:Boolean((0,i.YM)("wrapLogMessage",!1)),error:void 0},e)),j(this,"_urlSync",new r.So(this,{keys:["sortOrder","wrapLogMessage"]})),j(this,"onClickShowField",(e=>{const t=this.getParentScene();if(-1===t.state.displayedFields.indexOf(e)&&this.state.body){const n=[...t.state.displayedFields,e];this.setLogsVizOption({displayedFields:n}),t.setState({displayedFields:n}),(0,i.ZF)(this,t.state.displayedFields),(0,g.EE)(g.NO.service_details,g.ir.service_details.logs_toggle_displayed_field)}})),j(this,"onClickHideField",(e=>{const t=this.getParentScene();if(t.state.displayedFields.indexOf(e)>=0&&this.state.body){const n=t.state.displayedFields.filter((t=>e!==t));this.setLogsVizOption({displayedFields:n}),t.setState({displayedFields:n}),(0,i.ZF)(this,t.state.displayedFields),(0,g.EE)(g.NO.service_details,g.ir.service_details.logs_toggle_displayed_field)}})),j(this,"clearDisplayedFields",(()=>{this.state.body&&(this.setLogsVizOption({displayedFields:[]}),(0,i.ZF)(this,[]))})),j(this,"updateVisibleRange",(e=>{var t,n;const a=r.jh.getAncestor(this,S.Mn);a.setState({logsCount:e[0].length}),(null===(n=a.state.$data)||void 0===n||null===(t=n.state.data)||void 0===t?void 0:t.series)&&a.state.$data.setState(T(_({},a.state.$data.state),{data:T(_({},a.state.$data.state.data),{series:e})})),r.jh.findByKeyAndType(this,b.b,b._).updateVisibleRange(e)})),j(this,"handleShareLogLineClick",((e,t)=>{if((null==t?void 0:t.rowId)&&this.state.body){const e=this.getParentScene(),n=(0,v.Ki)(t);(0,v.Dk)((0,v.gW)("panelState",{logs:{id:t.uid,displayedFields:e.state.displayedFields}},n))}})),j(this,"handleLabelFilterClick",((e,t,n)=>{this.handleLabelFilter(e,t,n,"toggle")})),j(this,"handleLabelFilterOutClick",((e,t,n)=>{this.handleLabelFilter(e,t,n,"exclude")})),j(this,"handleIsFilterLabelActive",((e,t)=>{const n=(0,h.bY)(p.MB,this),r=(0,h.bY)(p.mB,this),a=(0,h.bY)(p._Y,this),i=(0,h.bY)(p._P,this),s=n=>n&&n.state.filters.findIndex((n=>"="===n.operator&&n.key===e&&n.value===t))>=0;return s(n)||(n=>{if(n){const r=n.state.filters.find((t=>"="===t.operator&&t.key===e));if(r)return(0,h.bu)(r,e).value===t}return!1})(r)||s(a)||s(i)})),j(this,"handleFilterOutStringClick",(e=>{const t=(0,h.Gk)(this);t&&(t.setState({filters:[...t.state.filters,{operator:w.cK.negativeMatch,value:e,key:w.ld.caseSensitive,keyLabel:t.state.filters.length.toString()}]}),(0,g.EE)(g.NO.service_details,g.ir.service_details.logs_popover_line_filter,{selectionLength:e.length}))})),j(this,"handleFilterStringClick",(e=>{const t=(0,h.Gk)(this);t&&(t.setState({filters:[...t.state.filters,{operator:w.cK.match,value:e,key:w.ld.caseSensitive,keyLabel:t.state.filters.length.toString()}]}),(0,g.EE)(g.NO.service_details,g.ir.service_details.logs_popover_line_filter,{selectionLength:e.length}))})),this.addActivationHandler(this.onActivate.bind(this))}}j(D,"Component",(({model:e})=>{const{body:t,error:n}=e.useState(),r=(0,c.useStyles2)(y.K_);return t?l().createElement("span",{className:r.panelWrapper},!n&&l().createElement(t.Component,{model:t}),n&&l().createElement(F,{error:n,clearFilters:()=>(0,P.rA)(t)})):l().createElement(c.LoadingPlaceholder,{text:"Loading..."})}))},3690:(e,t,n)=>{n.d(t,{_:()=>D,b:()=>T});var r,a,i,s=n(5959),l=n.n(s),o=n(2672),c=n(2007),u=n(5183),d=n(7918),p=n(3143),g=n(2718),h=n(1293),v=n(1383),m=n(7781),f=n(4750),b=n(833),y=n(7085),S=n(2254),w=n(9186),O=n(227),x=n(8538),E=n(8531),C=n(9829);class k extends o.Bs{}i=function({model:e}){const{component:t,isLoading:n}=(0,E.usePluginComponent)("grafana-adaptivelogs-app/temporary-exemptions/v1"),r=(0,f.bY)(p.MB,e),{filters:a}=r.useState(),i=a.map((({key:e,operator:t,value:n})=>({key:e,operator:t,value:n}))),s=(0,C.U4)(e);return n||!t?null:l().createElement(t,{dataSourceUid:s,streamSelector:i,contextHints:["explorelogs","logvolumepanel","headeraction"]})},(a="Component")in(r=k)?Object.defineProperty(r,a,{value:i,enumerable:!0,configurable:!0,writable:!0}):r[a]=i;var F=n(558),P=n(3626);function L(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function j(e){for(var t=1;t{(0,b.B)(e.filters,t.filters)||this.setState({panel:this.getVizPanel()})}))),this._subs.add(t.subscribeToState(((e,t)=>{(0,b.B)(e.filters,t.filters)||this.setState({panel:this.getVizPanel()})}))),this._subs.add(this.subscribeToEvent(F.Of,(e=>{if(e.key===p.e4){const e=o.jh.findObject(this,(e=>e instanceof P.qV));if(e instanceof P.qV){const e=(0,f.iw)(this);e.setState({filters:e.state.filters})}}})))}getTitle(e,t){var n,r,a;const i=null!==(a=null===(n=o.jh.getAncestor(this,x.P).state.ds)||void 0===n?void 0:n.maxLines)&&void 0!==a?a:d.by,s=(0,m.getValueFormat)("short"),l=void 0!==e?s(e,0):void 0;if(void 0===e&&void 0!==t&&tthis.extendTimeSeriesLegendBus(t)}),this._subs.add(a.subscribeToState(((e,t)=>{e.collapsed!==t.collapsed&&(this.updateContainerHeight(a),(0,O.RN)("collapsed",e.collapsed?"true":void 0))}))),this._subs.add(null===(e=a.state.$data)||void 0===e?void 0:e.subscribeToState((e=>{var t,r,i,s,l,o;(null===(t=e.data)||void 0===t?void 0:t.state)===m.LoadingState.Done&&((null===(i=n.state.$data)||void 0===i||null===(r=i.state.data)||void 0===r?void 0:r.state)!==m.LoadingState.Done||(null===(s=e.data.annotations)||void 0===s?void 0:s.length)?this.displayVisibleRange():this.updateVisibleRange(null===(o=n.state.$data)||void 0===o||null===(l=o.state.data)||void 0===l?void 0:l.series),(0,u.C6)(a,e.data.series,this))}))),this._subs.add(null===(t=n.state.$data)||void 0===t?void 0:t.subscribeToState((e=>{var t;(null===(t=e.data)||void 0===t?void 0:t.state)===m.LoadingState.Done&&this.updateVisibleRange(e.data.series)}))),this._subs.add(n.subscribeToState(((e,t)=>{e.totalLogsCount===t.totalLogsCount&&void 0===e.logsCount||(this.state.panel?this.state.panel.setState({title:this.getTitle(e.totalLogsCount,e.logsCount)}):this.setState({panel:this.getVizPanel()}))}))),a}updateContainerHeight(e){const t=o.jh.getAncestor(e,o.G1),n=e.state.collapsed?35:Math.max(Math.round(.2*window.innerHeight),100);t.setState({minHeight:n,height:n,maxHeight:n})}updateVisibleRange(e=[]){this.updatedLogSeries=e,this.displayVisibleRange()}displayVisibleRange(){var e,t;const n=this.state.panel;if(!n||!(null===(e=n.state.$data)||void 0===e?void 0:e.state.data)||(null===(t=n.state.$data)||void 0===t?void 0:t.state.data.state)!==m.LoadingState.Done||!this.updatedLogSeries)return;const r=(0,w.z5)(this.updatedLogSeries);this.updatedLogSeries=null,n.state.$data.setState({data:_(j({},n.state.$data.state.data),{annotations:[(0,w.hy)(r.start,r.end)]})})}constructor(e){super(_(j({},e),{key:T})),L(this,"updatedLogSeries",null),L(this,"extendTimeSeriesLegendBus",(e=>{const t=(0,f.iw)(this);this._subs.add(null==t?void 0:t.subscribeToState((()=>{var e,t,n,r;const a=this.state.panel;(null==a||null===(t=a.state.$data)||void 0===t||null===(e=t.state.data)||void 0===e?void 0:e.series)&&(0,u.C6)(a,null==a||null===(r=a.state.$data)||void 0===r||null===(n=r.state.data)||void 0===n?void 0:n.series,this)}))),e.onToggleSeriesVisibility=(e,t)=>{const n=(0,v.PE)(e,this);this.publishEvent(new F.Of("legend","include",p.e4,e),!0),(0,g.EE)(g.NO.service_details,g.ir.service_details.level_in_logs_volume_clicked,{level:e,action:n})}})),this.addActivationHandler(this.onActivate.bind(this))}}L(D,"Component",(({model:e})=>{const{panel:t}=e.useState();if(!t)return;const n=(0,c.useStyles2)(y.K_);return l().createElement("span",{className:n.panelWrapper},l().createElement(t.Component,{model:t}))}))},2254:(e,t,n)=>{n.d(t,{AA:()=>Ke,DS:()=>Qe,Mn:()=>Ze,rD:()=>Ue,UO:()=>Je,nU:()=>Ye,dB:()=>Xe,TG:()=>Ge,tn:()=>qe});var r=n(5959),a=n.n(r),i=n(7781),s=n(2672),l=n(2007),o=n(5183),c=n(7918),u=n(3143),d=n(6949),p=n(8835),g=n(833),h=n(892),v=n(2718),m=n(6089),f=n(1254),b=n(1220),y=n(8810),S=n(4105),w=n(9570),O=n(8538),x=n(2871);function E(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function C(e){var t,n;const{indexScene:r,pattern:a,type:i}=function(e){for(var t=1;te.pattern!==a));var u;const d=null!==(u=null===(t=c.filter((e=>"include"===e.type)))||void 0===t?void 0:t.length)&&void 0!==u?u:0;var g;const h=null!==(g=null===(n=c.filter((e=>"exclude"===e.type)))||void 0===n?void 0:n.length)&&void 0!==g?g:0;(0,v.EE)(v.NO.service_details,v.ir.service_details.pattern_selected,{type:i,includePatternsLength:d+("include"===i?1:0),excludePatternsLength:h+("exclude"===i?1:0)}),"undo"===i?l.setState({patterns:c}):l.setState({patterns:[...c,{pattern:a,type:i}]})}var k=n(5218),F=n(8531),P=n(9829);const L=e=>({logsStatsRow:(0,m.css)({margin:`${e.spacing(1.15)}px 0`}),logsStatsRowActive:(0,m.css)({color:e.colors.primary.text,position:"relative"}),logsStatsRowLabel:(0,m.css)({display:"flex",marginBottom:"1px"}),logsStatsRowValue:(0,m.css)({flex:1,textOverflow:"ellipsis",overflow:"hidden"}),logsStatsRowCount:(0,m.css)({textAlign:"right",marginLeft:e.spacing(.75)}),logsStatsRowPercent:(0,m.css)({textAlign:"right",marginLeft:e.spacing(.75),width:e.spacing(4.5)}),logsStatsRowBar:(0,m.css)({height:e.spacing(.5),overflow:"hidden",background:e.colors.text.disabled}),logsStatsRowInnerBar:(0,m.css)({height:e.spacing(.5),overflow:"hidden",background:e.colors.primary.main})}),j=({active:e,count:t,proportion:n,value:r})=>{const i=(0,l.useStyles2)(L),s=`${Math.round(100*n)}%`,o={width:s};return a().createElement("div",{className:e?`${i.logsStatsRow} ${i.logsStatsRowActive}`:i.logsStatsRow},a().createElement("div",{className:i.logsStatsRowLabel},a().createElement("div",{className:i.logsStatsRowValue,title:r},r),a().createElement("div",{className:i.logsStatsRowCount},t),a().createElement("div",{className:i.logsStatsRowPercent},s)),a().createElement("div",{className:i.logsStatsRowBar},a().createElement("div",{className:i.logsStatsRowInnerBar,style:o})))};function _(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const T=e=>({logsStats:(0,m.css)({background:"inherit",color:e.colors.text.primary,wordBreak:"break-all",width:"fit-content",maxHeight:"40vh",overflowY:"auto",marginTop:e.spacing(1)}),logsStatsHeader:(0,m.css)({borderBottom:`1px solid ${e.colors.border.medium}`,display:"flex"}),logsStatsTitle:(0,m.css)({fontWeight:e.typography.fontWeightMedium,paddingRight:e.spacing(2),display:"inline-block",whiteSpace:"nowrap",textOverflow:"ellipsis",flexGrow:1}),logsStatsClose:(0,m.css)({cursor:"pointer"}),logsStatsBody:(0,m.css)({padding:"5px 0px"})}),D=e=>{const t=(0,l.useStyles2)(T),{stats:n,value:r}=e,i=n.slice(0,10);let s=i.find((e=>e.value===r)),o=n.slice(10);!s&&(s=o.find((e=>e.value===r)),o=o.filter((e=>e.value!==r)));const c=o.reduce(((e,t)=>e+t.count),0),u=i.reduce(((e,t)=>e+t.count),0)+c;let d=[...i];return c>0&&d.push({value:"Other",count:c,proportion:c/u}),d.sort(((e,t)=>t.count-e.count)),a().createElement("div",{className:t.logsStats},a().createElement("div",{className:t.logsStatsHeader},a().createElement("div",{className:t.logsStatsTitle},"From a sample of ",u," rows found")),a().createElement("div",{className:t.logsStatsBody},d.map((e=>{return a().createElement(j,(t=function(e){for(var t=1;t{const o=function(e){const t=[];let n=e.indexOf("<_>");for(;-1!==n;)t.push(n),n=e.indexOf("<_>",n+1);return t}(t),[u,d]=(0,r.useState)(void 0),[p,g]=(0,r.useState)(!1),h=(0,l.useStyles2)(B),m=(0,r.useRef)(null),f=(0,r.useRef)(null),b=function(){var r,a=(r=function*(){(0,v.EE)(v.NO.service_details,v.ir.service_details.pattern_field_clicked);const r=function(e,t,n){let r=1;const a=e.replace(/<_>/g,(()=>``));return`{${n.state.filterExpression}} |> \`${e}\` | pattern \`${a}\` | keep ${t.map(((e,t)=>`field_${t+1}`)).join(" ,")} | line_format ""`}(t,o,(0,N.cR)(e)),a=yield(0,P.hJ)(e),l=s.jh.getTimeRange(e).state.value;u&&r===m.current&&l===f.current||(m.current=r,f.current=l,null==a||a.query({requestId:"1",interval:"",intervalMs:0,scopedVars:{},range:l,targets:[(0,c.l)(r,{maxLines:n})],timezone:"",app:"",startTime:0}).forEach((e=>{var t,r;e.state!==i.LoadingState.Done||(null===(t=e.errors)||void 0===t?void 0:t.length)?(e.state===i.LoadingState.Error||(null===(r=e.errors)||void 0===r?void 0:r.length))&&(d(void 0),g(!0)):(d(function(e,t,n){const r=new Map;e.data[0].fields[0].values.toArray().forEach((e=>{Object.keys(e).forEach((t=>{var n,a;r.has(t)||r.set(t,new Map),null===(a=r.get(t))||void 0===a||a.set(e[t],((null===(n=r.get(t))||void 0===n?void 0:n.get(e[t]))||0)+1)}))}));const a=[];for(let e=0;e<=t;e++){var i;const t=[];null===(i=r.get(`field_${e+1}`))||void 0===i||i.forEach(((e,r)=>{t.push({value:r,count:e,proportion:e/n})})),t.sort(((e,t)=>t.count-e.count)),a.push(t)}return a}(e,o.length,n)),g(!1))})))},function(){var e=this,t=arguments;return new Promise((function(n,a){var i=r.apply(e,t);function s(e){I(i,n,a,s,l,"next",e)}function l(e){I(i,n,a,s,l,"throw",e)}s(void 0)}))});return function(){return a.apply(this,arguments)}}(),y=(0,r.useMemo)((()=>t.split("<_>")),[t]);return a().createElement("div",null,y.map(((e,t)=>a().createElement("span",{key:t},e,t!==o.length&&a().createElement(l.Toggletip,{onOpen:b,content:a().createElement(a().Fragment,null,u&&u[t].length>0&&a().createElement(D,{stats:u[t],value:""}),u&&0===u[t].length&&a().createElement("div",null,"No available stats for this field in the current timestamp."),!u&&p&&a().createElement("div",null,"Could not load stats for this pattern."),!u&&!p&&a().createElement("div",{style:{padding:"10px"}},a().createElement(l.Spinner,{size:"xl"})))},a().createElement("span",{className:h.pattern},"<_>"))))))};function B(e){return{pattern:(0,m.css)({cursor:"pointer",backgroundColor:e.colors.emphasize(e.colors.background.primary,.1),margin:"0 2px","&:hover":{backgroundColor:e.colors.emphasize(e.colors.background.primary,.2)}})}}var M=n(541);function A(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class R extends s.Bs{onActivate(){if(this.state.body)return;const e=(0,c.l)(u.SA);this.replacePatternsInQuery(e);const t=(0,o.rS)([e]);t.getResultsStream().subscribe((e=>{this.onQueryWithFiltersResult(e)})),this.setState({body:new s.G1({direction:"column",children:[new s.vA({body:void 0,width:"100%",height:0}),new s.vA({height:300,width:"100%",body:s.d0.logs().setHoverHeader(!0).setOption("showLogContextToggle",!0).setOption("showTime",!0).setData(t).build()})]})})}replacePatternsInQuery(e){const t={pattern:this.state.pattern,type:"include"},n=(0,M.M)([t]);e.expr=e.expr.replace(u.sC,n)}removePatternFromFilterExclusion(){const e=s.jh.getAncestor(this,z);var t;const n=null!==(t=e.state.patternsNotMatchingFilters)&&void 0!==t?t:[],r=n.findIndex((e=>e===this.state.pattern));-1!==r&&(n.splice(r,1),e.setState({patternsNotMatchingFilters:n}))}setWarningMessage(e){const t=this.getNoticeFlexItem(),n=this.getVizFlexItem();return t instanceof s.vA&&t.setState({isHidden:!1,height:"auto",body:new s.dM({reactNode:e})}),n}getNoticeFlexItem(){const e=this.getFlexItemChildren();return null==e?void 0:e[0]}getVizFlexItem(){const e=this.getFlexItemChildren();return null==e?void 0:e[1]}getFlexItemChildren(){var e;return null===(e=this.state.body)||void 0===e?void 0:e.state.children}excludeThisPatternFromFiltering(){const e=s.jh.getAncestor(this,z);var t;const n=null!==(t=e.state.patternsNotMatchingFilters)&&void 0!==t?t:[];e.setState({patternsNotMatchingFilters:[...n,this.state.pattern]})}static Component({model:e}){const{body:t}=e.useState();return t?a().createElement(t.Component,{model:t}):null}constructor(e){super(e),A(this,"clearFilters",(()=>{const e=(0,N.ir)(this),t=(0,N.Gk)(this),n=(0,N.iw)(this);if(e.setState({filters:[]}),n.setState({filters:[]}),t.state.filters.length){t.setState({filters:[]});const e=this.getNoticeFlexItem();null==e||e.setState({isHidden:!0}),this.removePatternFromFilterExclusion()}})),A(this,"onQueryError",(e=>{if(e.data.state===i.LoadingState.Done&&(0===e.data.series.length||e.data.series.every((e=>0===e.length)))||e.data.state===i.LoadingState.Error){let t;try{t={pattern:this.state.pattern,traceIds:JSON.stringify(e.data.traceIds),request:JSON.stringify(e.data.request),msg:"onQueryError"}}catch(e){t={pattern:this.state.pattern,msg:"Failed to encode context"}}x.v.error(new Error("Pattern sample query returns no results"),t),this.setWarningMessage(a().createElement(l.Alert,{severity:"error",title:""},"This pattern returns no logs."));const n=this.getVizFlexItem();n instanceof s.vA&&n.setState({isHidden:!0})}})),A(this,"onQueryWithFiltersResult",(e=>{const t=(0,c.l)(u.pT);this.replacePatternsInQuery(t);const n=(0,o.rS)([t]);if(n.getResultsStream().subscribe(this.onQueryError),e.data.state===i.LoadingState.Done&&(0===e.data.series.length||e.data.series.every((e=>0===e.length)))){const e=this.getNoticeFlexItem(),t=this.getVizFlexItem();if(e instanceof s.vA&&e.setState({isHidden:!1,height:"auto",body:new s.dM({reactNode:a().createElement(l.Alert,{severity:"warning",title:""},"The logs returned by this pattern do not match the current query filters.",a().createElement(l.Button,{className:S.ZI.button,onClick:()=>this.clearFilters()},"Clear filters"))})}),t instanceof s.vA){const e=t.state.body;e instanceof s.Eb&&(null==e||e.setState({$data:n}))}this.excludeThisPatternFromFiltering()}e.data.state===i.LoadingState.Error&&this.onQueryError(e)})),this.addActivationHandler(this.onActivate.bind(this))}}function V({tableViz:e,row:t}){const{expandedRows:n}=e.useState(),i=null==n?void 0:n.find((e=>e.state.key===t.pattern));return(0,r.useEffect)((()=>{if(!i){const a=(r=t.pattern,new R({pattern:r,key:r}));var n;e.setState({expandedRows:[...null!==(n=e.state.expandedRows)&&void 0!==n?n:[],a]})}var r}),[t,e,i]),i?a().createElement(i.Component,{model:i}):null}const W=[""," K"," Mil"," Bil"," Tri"," Quadr"," Quint"," Sext"," Sept"];class z extends s.Bs{onActivate(){var e;const t=null===(e=s.jh.getAncestor(this,O.P).state.ds)||void 0===e?void 0:e.maxLines;this.setState({maxLines:t})}buildColumns(e,t,n,r,o){const c=J(n),u=s.jh.getTimeRange(this).state.value;return[{id:"volume-samples",header:"",cell:e=>{const t={timeRange:u,series:[e.cell.row.original.dataFrame],state:i.LoadingState.Done},n=new s.Zv({data:t}),r=s.d0.timeseries().setData(n).setHoverHeader(!0).setOption("tooltip",{mode:l.TooltipDisplayMode.None}).setCustomFieldConfig("hideFrom",{legend:!0,tooltip:!0}).setCustomFieldConfig("axisPlacement",l.AxisPlacement.Hidden).setDisplayMode("transparent").build();return a().createElement("div",{className:c.tableTimeSeriesWrap},a().createElement("div",{className:c.tableTimeSeries},a().createElement(r.Component,{model:r})))}},{id:"count",header:"Count",sortType:"number",cell:e=>{const t=(0,i.scaledUnits)(1e3,W)(e.cell.row.original.sum);var n,r;return a().createElement("div",{className:c.countTextWrap},a().createElement("div",null,null!==(n=t.prefix)&&void 0!==n?n:"",t.text,null!==(r=t.suffix)&&void 0!==r?r:""))}},{id:"percent",header:"%",sortType:"number",cell:t=>a().createElement("div",{className:c.countTextWrap},a().createElement("div",null,(100*t.cell.row.original.sum/e).toFixed(0),"%"))},{id:"pattern",header:"Pattern",cell:e=>a().createElement("div",{className:(0,m.cx)(G(),c.tablePatternTextDefault)},a().createElement($,{exploration:(0,P.Ti)(this),pattern:e.cell.row.original.pattern,maxLines:r}))},{id:"include",header:void 0,disableGrow:!0,cell:e=>{if(null==o?void 0:o.includes(e.cell.row.original.pattern))return;const n=null==t?void 0:t.find((t=>t.pattern===e.cell.row.original.pattern)),r="include"===(null==n?void 0:n.type),i="exclude"===(null==n?void 0:n.type);return a().createElement(k.F,{isExcluded:i,isIncluded:r,onInclude:()=>e.cell.row.original.includeLink(),onExclude:()=>e.cell.row.original.excludeLink(),onClear:()=>e.cell.row.original.undoLink(),buttonFill:"outline"})}}]}buildTableData(e,t){const n=s.jh.getAncestor(this,O.P);return e.filter((e=>!t.size||t.has(e.pattern))).map((e=>({dataFrame:e.dataFrame,pattern:e.pattern,sum:e.sum,includeLink:()=>C({pattern:e.pattern,type:"include",indexScene:n}),excludeLink:()=>C({pattern:e.pattern,type:"exclude",indexScene:n}),undoLink:()=>C({pattern:e.pattern,type:"undo",indexScene:n})})))}constructor(e){super(e),this.addActivationHandler(this.onActivate.bind(this))}}var H,Q,K;K=function({model:e}){const t=s.jh.getAncestor(e,O.P),{patterns:n}=t.useState(),r=(0,l.useTheme2)(),i=U(r),o=s.jh.getAncestor(e,te),{legendSyncPatterns:u}=o.useState(),{patternFrames:d,patternsNotMatchingFilters:p}=e.useState(),g=null!=d?d:[],h=g.reduce(((e,t)=>e+t.sum),0),v=e.buildTableData(g,u);var m;const f=e.buildColumns(h,n,r,null!==(m=e.state.maxLines)&&void 0!==m?m:c.by,p);return a().createElement("div",{"data-testid":b.b.patterns.tableWrapper,className:i.tableWrap},a().createElement(l.InteractiveTable,{columns:f,data:v,getRowId:e=>e.pattern,renderExpandedRow:t=>a().createElement(V,{tableViz:e,row:t})}))},(Q="Component")in(H=z)?Object.defineProperty(H,Q,{value:K,enumerable:!0,configurable:!0,writable:!0}):H[Q]=K;const q=F.config.theme2,G=()=>(0,m.css)({minWidth:"200px",fontFamily:q.typography.fontFamilyMonospace,overflow:"hidden",overflowWrap:"break-word"}),U=e=>({link:(0,m.css)({textDecoration:"underline"}),tableWrap:(0,m.css)({"> div":{height:"calc(100vh - 450px)",minHeight:"470px"},th:{top:0,position:"sticky",backgroundColor:e.colors.background.canvas,zIndex:e.zIndex.navbarFixed}})}),J=e=>({tablePatternTextDefault:(0,m.css)({fontFamily:e.typography.fontFamilyMonospace,minWidth:"200px",maxWidth:"100%",overflow:"hidden",overflowWrap:"break-word",fontSize:e.typography.bodySmall.fontSize,wordBreak:"break-word"}),countTextWrap:(0,m.css)({textAlign:"right",fontSize:e.typography.bodySmall.fontSize}),tableTimeSeriesWrap:(0,m.css)({width:"230px",pointerEvents:"none"}),tableTimeSeries:(0,m.css)({height:"30px",overflow:"hidden"})});function Y(e,t,n,r,a,i,s){try{var l=e[i](s),o=l.value}catch(e){return void n(e)}l.done?t(o):Promise.resolve(o).then(r,a)}function X(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var i=e.apply(t,n);function s(e){Y(i,r,a,s,l,"next",e)}function l(e){Y(i,r,a,s,l,"throw",e)}s(void 0)}))}}function Z(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const ee=F.config.theme2.visualization.palette;class te extends s.Bs{onActivate(){this.updateBody(),this._subs.add(s.jh.getAncestor(this,Ze).subscribeToState(((e,t)=>{var n,r,a,i,l,o;const c=null==e||null===(a=e.$patternsData)||void 0===a||null===(r=a.state)||void 0===r||null===(n=r.data)||void 0===n?void 0:n.series,u=null==t||null===(o=t.$patternsData)||void 0===o||null===(l=o.state)||void 0===l||null===(i=l.data)||void 0===i?void 0:i.series;if(!(0,g.B)(c,u)){const e=s.jh.getAncestor(this,ge);this.updatePatterns(e.state.patternFrames),e.setState({filteredPatterns:void 0})}}))),this._subs.add(s.jh.getAncestor(this,ge).subscribeToState(((e,t)=>{const n=s.jh.getAncestor(this,ge);e.filteredPatterns&&!(0,g.B)(e.filteredPatterns,t.filteredPatterns)?this.updatePatterns(n.state.filteredPatterns):n.state.patternFilter||this.updatePatterns(n.state.patternFrames)})))}updatePatterns(e=[]){var t=this;return X((function*(){var n;null===(n=t.state.body)||void 0===n||n.forEachChild((n=>{n instanceof s.Eb&&n.setState({$data:t.getTimeseriesDataNode(e)}),n instanceof z&&n.setState({patternFrames:e})}))}))()}updateBody(){var e=this;return X((function*(){var t,n;const r=s.jh.getAncestor(e,ge).state.patternFrames;(null===(n=s.jh.getAncestor(e,Ze).state.$patternsData)||void 0===n||null===(t=n.state.data)||void 0===t?void 0:t.series)&&r?e.setState({body:e.getSingleViewLayout(),legendSyncPatterns:new Set,loading:!1}):x.v.warn("Failed to update PatternsFrameScene body")}))()}extendTimeSeriesLegendBus(e,t){const n=t.onToggleSeriesVisibility;t.onToggleSeriesVisibility=(t,r)=>{var a;null==n||n(t,r);const i=null===(a=e.state.fieldConfig.overrides)||void 0===a?void 0:a[0],s=null==i?void 0:i.matcher.options.names,l=new Set;s&&s.forEach(l.add,l),this.setState({legendSyncPatterns:l})}}getSingleViewLayout(){const e=s.jh.getAncestor(this,ge).state.patternFrames;if(!e)return void x.v.warn("Failed to set getSingleViewLayout");const t=this.getTimeSeries(e);return new s.gF({templateColumns:"100%",autoRows:"200px",isLazy:!0,children:[t,new z({patternFrames:e})]})}getTimeSeries(e){const t=s.jh.getAncestor(this,O.P),n=s.d0.timeseries().setData(this.getTimeseriesDataNode(e)).setOption("legend",{asTable:!0,showLegend:!0,displayMode:l.LegendDisplayMode.Table,placement:"right",width:200}).setHoverHeader(!0).setUnit("short").setLinks([{url:"#",targetBlank:!1,onClick:e=>{C({pattern:e.origin.labels.name,type:"include",indexScene:t})},title:"Include"},{url:"#",targetBlank:!1,onClick:e=>{C({pattern:e.origin.labels.name,type:"exclude",indexScene:t})},title:"Exclude"}]).build();return n.setState({extendPanelContext:(e,t)=>this.extendTimeSeriesLegendBus(e,t)}),n}getTimeseriesDataNode(e){const t=s.jh.getTimeRange(this).state.value;return new s.Zv({data:{series:e.map(((e,t)=>{const n=e.dataFrame;return n.fields[1].config.color=function(e){return{mode:"fixed",fixedColor:ee[e]}}(t),n.fields[1].name="",n})),state:i.LoadingState.Done,timeRange:t}})}constructor(e){var t,n;super((t=function(e){for(var t=1;t{var t;const{body:n,loading:r}=e.useState(),i=s.jh.getAncestor(e,Ze),{$patternsData:l}=i.useState(),o=null==l||null===(t=l.state.data)||void 0===t?void 0:t.series;return a().createElement("div",{className:ne.container},!r&&o&&o.length>0&&a().createElement(a().Fragment,null,n&&a().createElement(n.Component,{model:n})))}));const ne={container:(0,m.css)({width:"100%",".show-on-hover":{display:"none"}})};var re=n(4932),ae=n(6261);function ie(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class se extends s.Bs{onActivate(){const e=s.jh.getAncestor(this,ge);this._subs.add(e.subscribeToState(((e,t)=>{if(e.patternFilter!==t.patternFilter){const e=s.jh.getAncestor(this,ge);e.state.patternFrames&&(0,re.E)(e.state.patternFrames.map((e=>e.pattern)),e.state.patternFilter,this.onSearchResult)}}))),this._subs.add(e.subscribeToState(((e,t)=>{e.patternFilter&&!e.filteredPatterns&&e.patternFrames&&!(0,g.B)(e.filteredPatterns,t.filteredPatterns)&&(0,re.X)(e.patternFrames.map((e=>e.pattern)),e.patternFilter,this.onSearchResult)})))}setFilteredPatterns(e,t){const n=s.jh.getAncestor(this,ge),r=null!=t?t:n.state.patternFrames;if(r){const t=r.filter((t=>!(!n.state.patternFilter||!(null==r?void 0:r.length))&&e.find((e=>e===t.pattern))));n.setState({filteredPatterns:t})}}setEmptySearch(){s.jh.getAncestor(this,ge).setState({filteredPatterns:void 0})}constructor(e){super(function(e){for(var t=1;t{s.jh.getAncestor(this,ge).setState({patternFilter:""})})),ie(this,"handleSearchChange",(e=>{s.jh.getAncestor(this,ge).setState({patternFilter:e.target.value})})),ie(this,"onSearchResult",(e=>{const t=s.jh.getAncestor(this,ge);t.state.patternFilter?this.setFilteredPatterns(e[0]):t.state.filteredPatterns&&!t.state.patternFilter&&this.setEmptySearch()})),this.addActivationHandler(this.onActivate.bind(this))}}ie(se,"Component",(function({model:e}){const t=s.jh.getAncestor(e,ge),{patternFilter:n}=t.useState();return a().createElement(l.Field,{className:le.field},a().createElement(ae.D,{onChange:e.handleSearchChange,onClear:e.clearSearch,value:n,placeholder:"Search patterns"}))}));const le={field:(0,m.css)({label:"field",marginBottom:0}),icon:(0,m.css)({cursor:"pointer"})};var oe=n(4482);function ce(){return a().createElement(oe.R,null,a().createElement("div",null,a().createElement("p",null,a().createElement("strong",null,"Sorry, we could not detect any patterns.")),a().createElement("p",null,"Check back later or reach out to the team in the"," ",a().createElement(l.TextLink,{href:"https://slack.grafana.com/",external:!0},"Grafana Labs community Slack channel")),a().createElement("p",null,"Patterns let you detect similar log lines to include or exclude from your search.")))}function ue(){return a().createElement(oe.R,null,a().createElement("div",null,a().createElement("p",null,a().createElement("strong",null,"Patterns are only available for the most recent ",pe," hours of data.")),a().createElement("p",null,"See the"," ",a().createElement(l.TextLink,{href:"https://grafana.com/docs/grafana/latest/explore/simplified-exploration/logs/patterns/",external:!0},"patterns docs")," ","for more info.")))}function de(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const pe=3;class ge extends s.Bs{onActivate(){var e,t;const n=s.jh.getAncestor(this,Ze);var r;this.setBody(),(null===(e=n.state.$patternsData)||void 0===e?void 0:e.state)&&this.onDataChange(null===(r=n.state.$patternsData)||void 0===r?void 0:r.state),this._subs.add(null===(t=n.state.$patternsData)||void 0===t?void 0:t.subscribeToState(this.onDataChange))}setBody(){this.setState({body:new s.G1({direction:"column",children:[new s.vA({ySizing:"content",body:new se}),new s.vA({body:new te})]})})}updatePatternFrames(e){if(!e)return;const t=this.dataFrameToPatternFrame(e);this.setState({patternFrames:t})}dataFrameToPatternFrame(e){const t=s.jh.getAncestor(this,Ze),n=s.jh.getAncestor(t,O.P).state.patterns;return e.map((e=>{var t,r;const a=null==n?void 0:n.find((t=>t.pattern===e.name)),i=null===(r=e.meta)||void 0===r||null===(t=r.custom)||void 0===t?void 0:t.sum;var s;return{dataFrame:e,pattern:null!==(s=e.name)&&void 0!==s?s:"",sum:i,status:null==a?void 0:a.type}}))}constructor(e){var t;super(function(e){for(var t=1;t{var n,r,a,s,l;const o=null===(n=e.data)||void 0===n?void 0:n.series,c=null==t||null===(r=t.data)||void 0===r?void 0:r.series;(null===(a=e.data)||void 0===a?void 0:a.state)===i.LoadingState.Done?(this.setState({loading:!1,error:!1}),(0,g.B)(o,c)||this.updatePatternFrames(o)):(null===(s=e.data)||void 0===s?void 0:s.state)===i.LoadingState.Loading?this.setState({loading:!0,error:!1}):(null===(l=e.data)||void 0===l?void 0:l.state)===i.LoadingState.Error&&this.setState({loading:!1,error:!0})})),this.addActivationHandler(this.onActivate.bind(this))}}function he(e){return{container:(0,m.css)({flexGrow:1,display:"flex",minHeight:"100%",flexDirection:"column"}),content:(0,m.css)({flexGrow:1,display:"flex",paddingTop:e.spacing(0)}),controls:(0,m.css)({flexGrow:0,display:"flex",alignItems:"top",gap:e.spacing(2)}),controlsRight:(0,m.css)({flexGrow:0,display:"flex",justifyContent:"flex-end"}),controlsLeft:(0,m.css)({display:"flex",justifyContent:"flex-left",justifyItems:"left",width:"100%",flexDirection:"column"}),patternMissingText:(0,m.css)({padding:e.spacing(2)})}}de(ge,"Component",(({model:e})=>{const{body:t,loading:n,blockingMessage:r,patternFrames:o,error:c}=e.useState(),{value:u}=s.jh.getTimeRange(e).useState(),d=(0,l.useStyles2)(he),p=(0,i.dateTime)().diff(u.to,"hours")>=pe;return a().createElement("div",{className:d.container},a().createElement(w.O,{isLoading:n,blockingMessage:r},!n&&c&&a().createElement("div",{className:d.patternMissingText},a().createElement(l.Text,{textAlignment:"center",color:"primary"},a().createElement("p",null,"There are no pattern matches."),a().createElement("p",null,"Pattern matching has not been configured."),a().createElement("p",null,"Patterns let you detect similar log lines and add or exclude them from your search."),a().createElement("p",null,"To see them in action, add the following to your Loki configuration"),a().createElement("p",null,a().createElement("code",null,"--pattern-ingester.enabled=true")))),!c&&!n&&0===(null==o?void 0:o.length)&&p&&a().createElement(ue,null),!c&&!n&&0===(null==o?void 0:o.length)&&!p&&a().createElement(ce,null),!c&&!n&&o&&o.length>0&&a().createElement("div",{className:d.content},t&&a().createElement(t.Component,{model:t}))))}));var ve=n(3690),me=n(3633),fe=function(e){return e.logs="Logs",e.labels="Labels",e.fields="Fields",e.patterns="Patterns",e}({});const be=[{displayName:"Logs",value:h.G3.logs,getScene:()=>new s.G1({direction:"column",children:[new s.vA({body:new ve._({})}),new s.vA({minHeight:"470px",height:"calc(100vh - 500px)",body:new f.i({})})]}),testId:b.b.exploreServiceDetails.tabLogs},{displayName:"Labels",value:h.G3.labels,getScene:()=>new s.G1({$behaviors:[new s.Gg.K2({key:"sync",sync:me.yV.Crosshair})],children:[new s.vA({body:new y.O({})})]}),testId:b.b.exploreServiceDetails.tabLabels},{displayName:"Fields",value:h.G3.fields,getScene:e=>{return t=e,new s.G1({$behaviors:[new s.Gg.K2({key:"sync",sync:me.yV.Crosshair})],children:[new s.vA({body:new S.J6({changeFieldCount:t})})]});var t},testId:b.b.exploreServiceDetails.tabFields},{displayName:"Patterns",value:h.G3.patterns,getScene:()=>new s.G1({children:[new s.vA({body:new ge({})})]}),testId:b.b.exploreServiceDetails.tabPatterns}],ye=[{displayName:"Label",value:h._J.label,getScene:e=>function(e){return new s.G1({$behaviors:[new s.Gg.K2({key:"sync",sync:me.yV.Crosshair})],children:[new s.vA({body:new y.O({value:e})})]})}(e),testId:b.b.exploreServiceDetails.tabLabels},{displayName:"Field",value:h._J.field,getScene:e=>function(e){return new s.G1({$behaviors:[new s.Gg.K2({key:"sync",sync:me.yV.Crosshair})],children:[new s.vA({body:new S.J6({value:e})})]})}(e),testId:b.b.exploreServiceDetails.tabFields}];var Se=n(8315);function we(e,t,n,r,a,i,s){try{var l=e[i](s),o=l.value}catch(e){return void n(e)}l.done?t(o):Promise.resolve(o).then(r,a)}function Oe(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var i=e.apply(t,n);function s(e){we(i,r,a,s,l,"next",e)}function l(e){we(i,r,a,s,l,"throw",e)}s(void 0)}))}}function xe(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class Ee extends s.Bs{setIsOpen(e){this.setState({isOpen:e})}onCopyLink(e,t,r){e?(Pe(r||n.g.location.href),(0,F.reportInteraction)("grafana_explore_shortened_link_clicked",{isAbsoluteTime:t})):((0,Se.Dk)(void 0!==r?`${window.location.protocol}//${window.location.host}${F.config.appSubUrl}${r}`:n.g.location.href),this.state.onCopyLink&&this.state.onCopyLink(e,t,r))}constructor(e){super(function(e){for(var t=1;t{const t=[{key:"normal",label:"Normal URL links",items:[{key:"copy-shortened-link",icon:"link",label:"Copy shortened URL",getUrl:()=>{},shorten:!0,absTime:!1},{key:"copy-link",icon:"link",label:"Copy URL",getUrl:()=>{},shorten:!1,absTime:!1}]},{key:"timesync",label:"Time-sync URL links (share with time range intact)",items:[{key:"copy-short-link-abs-time",icon:"clock-nine",label:"Copy absolute shortened URL",shorten:!0,getUrl:()=>Le(void 0!==e.state.getSceneTimeRange?e.state.getSceneTimeRange():s.jh.getTimeRange(e)),absTime:!0},{key:"copy-link-abs-time",icon:"clock-nine",label:"Copy absolute URL",shorten:!1,getUrl:()=>Le(void 0!==e.state.getSceneTimeRange?e.state.getSceneTimeRange():s.jh.getTimeRange(e)),absTime:!0}]}];return a().createElement(l.Menu,null,t.map((t=>a().createElement(l.MenuGroup,{key:t.key,label:t.label},t.items.map((t=>a().createElement(l.Menu.Item,{key:t.key,label:t.label,icon:t.icon,onClick:()=>{const n=t.getUrl();e.onCopyLink(t.shorten,t.absTime,n),e.setState({lastSelected:t})}})))))))})),xe(Ee,"Component",(({model:e})=>{const{lastSelected:t,isOpen:n}=e.useState();return a().createElement(l.ButtonGroup,null,a().createElement(l.ToolbarButton,{tooltip:t.label,icon:t.icon,variant:"canvas",narrow:!0,onClick:()=>{const n=t.getUrl();e.onCopyLink(t.shorten,t.absTime,n)},"aria-label":"Copy shortened URL"},a().createElement("span",null,"Share")),a().createElement(l.Dropdown,{overlay:a().createElement(Ee.MenuActions,{model:e}),placement:"bottom-end",onVisibleChange:e.setIsOpen.bind(e)},a().createElement(l.ToolbarButton,{narrow:!0,variant:"canvas",isOpen:n,"aria-label":"Open copy link options"})))}));const Ce={key:"copy-link",label:"Copy shortened URL",icon:"share-alt",getUrl:()=>{},shorten:!0,absTime:!1};function ke(e){let t=e.replace(`${window.location.protocol}//${window.location.host}${F.config.appSubUrl}`,"");return t.startsWith("/")?t.substring(1,t.length):t}const Fe=function(){var e=Oe((function*(e){const t=(0,F.getAppEvents)();try{return(yield(0,F.getBackendSrv)().post("/api/short-urls",{path:ke(e)})).url}catch(e){console.error("Error when creating shortened link: ",e),t.publish({type:i.AppEvents.alertError.name,payload:["Error generating shortened link"]})}}));return function(t){return e.apply(this,arguments)}}(),Pe=function(){var e=Oe((function*(e){const t=(0,F.getAppEvents)(),n=yield Fe(e);n?((0,Se.Dk)(n),t.publish({type:i.AppEvents.alertSuccess.name,payload:["Shortened link copied to clipboard"]})):t.publish({type:i.AppEvents.alertError.name,payload:["Error generating shortened link"]})}));return function(t){return e.apply(this,arguments)}}(),Le=e=>{const t=(0,i.toUtc)(e.state.value.from),n=(0,i.toUtc)(e.state.value.to),r=F.locationService.getLocation(),a=i.urlUtil.getUrlSearchParams();return a.from=t.toISOString(),a.to=n.toISOString(),i.urlUtil.renderUrl(r.pathname,a)};class je extends s.Bs{onActivate(){const e=s.jh.getAncestor(this,O.P).state.ds;void 0!==(null==e?void 0:e.maxLines)&&this.setState({maxLines:e.maxLines}),this.state.shareButtonScene||this.setState({shareButtonScene:new Ee({})})}constructor(e){super(e),this.addActivationHandler(this.onActivate.bind(this))}}!function(e,t,n){t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n}(je,"Component",(({model:e})=>{const t=(0,l.useStyles2)(Te);let n=(0,h.FT)(),r=!1;if(!Object.values(h.G3).includes(n)){const e=(0,h.er)();r=!0,e===h._J.field&&(n=h.G3.fields),e===h._J.label&&(n=h.G3.labels)}const o=s.jh.getAncestor(e,Ze),u=o.useState(),{loading:d,$data:g,logsCount:f,totalLogsCount:b}=u,y=function(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}(u,["loading","$data","logsCount","totalLogsCount"]),{maxLines:S}=e.useState(),w=y.loadingStates;return a().createElement(l.Box,{paddingY:0},a().createElement("div",{className:t.actions},a().createElement(l.Stack,{gap:1},F.config.featureToggles.appSidecar&&a().createElement(De,{serviceScene:o}),e.state.shareButtonScene&&a().createElement(e.state.shareButtonScene.Component,{model:e.state.shareButtonScene}))),a().createElement(l.TabsBar,null,be.map(((e,t)=>a().createElement(l.Tab,{"data-testid":e.testId,key:t,label:e.displayName,active:n===e.value,counter:w[e.displayName]?void 0:_e(e,y),suffix:e.displayName===fe.logs?({className:e})=>function(e,t,n,r){const s=(0,l.useStyles2)(Ne),o=(0,i.getValueFormat)("short");if(void 0===t&&void 0!==n&&n{(e.value&&e.value!==n||r)&&(0,v.EE)(v.NO.service_details,v.ir.service_details.action_view_changed,{newActionView:e.value,previousActionView:n})}})))))}));const _e=(e,t)=>{switch(e.value){case"fields":return t.fieldsCount;case"patterns":return t.patternsCount;case"labels":return t.labelsCount;default:return}};function Te(e){return{actions:(0,m.css)({display:"flex",justifyContent:"flex-end",[e.breakpoints.up(e.breakpoints.values.md)]:{position:"absolute",right:0,zIndex:2}})}}function De(e){const[t,n]=(0,r.useState)((0,N.cR)(e.serviceScene).state.filters);(0,r.useEffect)((()=>{const t=(0,N.cR)(e.serviceScene).subscribeToState((e=>{n(e.filters)}));return()=>{t.unsubscribe()}}),[e.serviceScene]);const[i,s]=(0,r.useState)(!1),o=(0,F.usePluginLinks)({extensionPointId:"grafana-lokiexplore-app/toolbar-open-related/v1",limitPerPlugin:3,context:{filters:t}});if(o.isLoading||0===o.links.length)return null;if(1===o.links.length){const e=o.links[0];return a().createElement("div",null,a().createElement(l.ToolbarButton,{variant:"canvas",key:e.id,onClick:t=>{var n;return null===(n=e.onClick)||void 0===n?void 0:n.call(e,t)},icon:e.icon},"Related ",e.title))}const c=a().createElement(l.Menu,null,o.links.map((e=>a().createElement(l.Menu.Item,{ariaLabel:e.title,icon:(null==e?void 0:e.icon)||"plug",key:e.id,label:e.title,onClick:t=>{var n;null===(n=e.onClick)||void 0===n||n.call(e,t)}}))));return a().createElement(l.Dropdown,{onVisibleChange:s,placement:"bottom-start",overlay:c},a().createElement(l.ToolbarButton,{"aria-label":"Open related",variant:"canvas",isOpen:i},"Open related"))}function Ne(e){return{emptyCountStyles:(0,m.css)({display:"inline-block",fontSize:e.typography.bodySmall.fontSize,minWidth:"1em",marginLeft:e.spacing(1),padding:e.spacing(.25,1)}),logsCountStyles:(0,m.css)({fontSize:e.typography.bodySmall.fontSize,label:"counter",marginLeft:e.spacing(1),borderRadius:e.spacing(3),backgroundColor:e.colors.action.hover,padding:e.spacing(.25,1),color:e.colors.text.secondary,fontWeight:e.typography.fontWeightMedium})}}var Ie=n(7608),$e=n(6059),Be=n(4793);function Me(e,t){const n=["^","$",".","*","+","?","(",")","[","]","{","}","|"];return t||n.push("\\"),e.split("").filter(((e,t,r)=>{const a=r[t+1],i=n.includes(a);return!("\\"===e&&i)})).join("")}var Ae=n(5435),Re=n(3626),Ve=n(5111);function We(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ze(e){for(var t=1;te.refId===Qe))}function Ge(e){var t,n,r;return null===(r=s.jh.getAncestor(e,Ze).state.$detectedLabelsData)||void 0===r||null===(n=r.state.data)||void 0===n||null===(t=n.series)||void 0===t?void 0:t[0]}function Ue(e){var t;const n=s.jh.getAncestor(e,Ze);return Je(null===(t=n.state.$detectedFieldsData)||void 0===t?void 0:t.state)}const Je=e=>{var t,n;return null==e||null===(n=e.data)||void 0===n||null===(t=n.series)||void 0===t?void 0:t[0]},Ye=e=>{var t,n,r,a;return null===(a=e.data)||void 0===a||null===(r=a.series)||void 0===r||null===(n=r[0])||void 0===n||null===(t=n.fields)||void 0===t?void 0:t[0]},Xe=e=>{var t,n,r,a;return null===(a=e.data)||void 0===a||null===(r=a.series)||void 0===r||null===(n=r[0])||void 0===n||null===(t=n.fields)||void 0===t?void 0:t[2]};class Ze extends s.Bs{setSubscribeToLabelsVariable(){const e=(0,N.cR)(this);0!==e.state.filters.length?this._subs.add(e.subscribeToState(((e,t)=>{0===e.filters.length&&this.redirectToStart();let{labelName:n,labelValue:r,breakdownLabel:a}=(0,h.W6)();n===u.ky&&(n=u.OX);const i=s.jh.getAncestor(this,O.P),l=i.state.routeMatch;if(e.filters.some((e=>e.key===n&&(0,Ve.BG)(e.operator)&&(0,Ie.uu)(e.value)===r))){if(!(0,g.B)(e.filters,t.filters)){var o,c,d,v;null===(o=this.state.$patternsData)||void 0===o||o.runQueries(),null===(c=this.state.$detectedLabelsData)||void 0===c||c.runQueries(),null===(d=this.state.$detectedFieldsData)||void 0===d||d.runQueries(),null===(v=this.state.$logsCount)||void 0===v||v.runQueries()}}else{const t=e.filters.find((e=>(0,Ve.BG)(e.operator)&&e.value!==u.ZO));if(t){const e=(0,u.zE)(t.value)?(0,Ie.uu)((0,u.Dx)(t.value)):(0,Ie.uu)(t.value);var m,f,b;i.setState({routeMatch:He(ze({},l),{params:He(ze({},null==l?void 0:l.params),{labelName:t.key===u.OX?u.ky:t.key,labelValue:e.split("|")[0]}),url:null!==(m=null==l?void 0:l.url)&&void 0!==m?m:"",path:null!==(f=null==l?void 0:l.path)&&void 0!==f?f:"",isExact:null===(b=null==l?void 0:l.isExact)||void 0===b||b})}),this.resetTabCount(),a?(0,p.fg)((0,h.er)(),a,this):(0,p.Vt)((0,h.FT)(),this)}else this.redirectToStart()}}))):this.redirectToStart()}redirectToStart(){this.setState({$data:void 0,$logsCount:void 0,body:void 0,$patternsData:void 0,$detectedLabelsData:void 0,$detectedFieldsData:void 0,patternsCount:void 0,labelsCount:void 0,fieldsCount:void 0,logsCount:void 0,totalLogsCount:void 0}),(0,d.JO)().setServiceSceneState(this.state),this._subs.unsubscribe(),(0,p.Ns)()}showVariables(){s.jh.findByKeyAndType(this,Re.kz,Re.qV).setState({visible:!0}),(0,N.YS)(this).setState({hide:Ae.zL.dontHide})}getMetadata(){const e=(0,d.JO)().getServiceSceneState();e&&this.setState(ze({},e))}onActivate(){s.jh.findByKeyAndType(this,O.y,$e.H).setState({hidden:!0}),this.showVariables(),this.getMetadata(),this.resetBodyAndData(),this.setBreakdownView(),this.runQueries(),this._subs.add(this.subscribeToPatternsQuery()),this._subs.add(this.subscribeToDetectedLabelsQuery()),this._subs.add(this.subscribeToDetectedFieldsQuery((0,h.FT)()!==h.G3.fields)),this._subs.add(this.subscribeToLogsQuery()),this._subs.add(this.subscribeToLogsCountQuery()),this.setSubscribeToLabelsVariable(),this._subs.add(this.subscribeToFieldsVariable()),this._subs.add(this.subscribeToMetadataVariable()),this._subs.add(this.subscribeToLevelsVariableChangedEvent()),this._subs.add(this.subscribeToLevelsVariableFiltersState()),this._subs.add(this.subscribeToDataSourceVariable()),this._subs.add(this.subscribeToPatternsVariable()),this._subs.add(this.subscribeToLineFiltersVariable()),this._subs.add(this.subscribeToTimeRange()),function(e){const t=i.urlUtil.getUrlSearchParams(),n=t["var-lineFilter"];if(!Array.isArray(n)||!n.length)return;const r=n[0];if("string"!=typeof r||!r)return;const a=s.jh.getAncestor(e,O.P),l=(0,N.Gk)(e),o=null==r?void 0:r.match(/\|=.`(.+?)`/);var c,u;o&&2===o.length&&(null===(u=a.state.body)||void 0===u||null===(c=u.state.lineFilterRenderer)||void 0===c||c.addActivationHandler((()=>{l.setState({filters:[{key:Be.ld.caseSensitive,operator:Be.cK.match,value:Me(o[1],!0),keyLabel:"0"}]})})));const d=null==r?void 0:r.match(/`\(\?i\)(.+)`/);var p,g;d&&2===d.length&&(null===(g=a.state.body)||void 0===g||null===(p=g.state.lineFilterRenderer)||void 0===p||p.addActivationHandler((()=>{l.updateFilters([{key:Be.ld.caseInsensitive,operator:Be.cK.match,value:Me(d[1],!1),keyLabel:"0"}])}))),delete t["var-lineFilter"],F.locationService.replace(i.urlUtil.renderUrl(location.pathname,t))}(this)}subscribeToPatternsVariable(){return(0,N.Ku)(this).subscribeToState(((e,t)=>{var n,r;e.value!==t.value&&(null===(n=this.state.$detectedFieldsData)||void 0===n||n.runQueries(),null===(r=this.state.$logsCount)||void 0===r||r.runQueries())}))}subscribeToLineFiltersVariable(){return(0,N.Gk)(this).subscribeToEvent(s.oh,(()=>{var e,t;null===(e=this.state.$logsCount)||void 0===e||e.runQueries(),null===(t=this.state.$detectedFieldsData)||void 0===t||t.runQueries()}))}subscribeToDataSourceVariable(){return(0,N.S9)(this).subscribeToState((()=>{this.redirectToStart()}))}resetTabCount(){this.setState({fieldsCount:void 0,labelsCount:void 0,patternsCount:void 0}),(0,d.JO)().setServiceSceneState(this.state)}subscribeToFieldsVariable(){return(0,N.ir)(this).subscribeToState(((e,t)=>{var n,r;(0,g.B)(e.filters,t.filters)||(null===(n=this.state.$detectedFieldsData)||void 0===n||n.runQueries(),null===(r=this.state.$logsCount)||void 0===r||r.runQueries())}))}subscribeToMetadataVariable(){return(0,N.oY)(this).subscribeToState(((e,t)=>{var n,r;(0,g.B)(e.filters,t.filters)||(null===(n=this.state.$detectedFieldsData)||void 0===n||n.runQueries(),null===(r=this.state.$logsCount)||void 0===r||r.runQueries())}))}subscribeToLevelsVariableChangedEvent(){return(0,N.iw)(this).subscribeToEvent(s.oh,(()=>{var e;null===(e=this.state.$detectedFieldsData)||void 0===e||e.runQueries()}))}subscribeToLevelsVariableFiltersState(){return(0,N.iw)(this).subscribeToState(((e,t)=>{var n;(0,g.B)(e.filters,t.filters)||null===(n=this.state.$logsCount)||void 0===n||n.runQueries()}))}runQueries(){const e=(0,h.FT)(),t=(0,h.er)();var n,r,a,i;e!==h.G3.patterns&&void 0!==this.state.patternsCount||null===(n=this.state.$patternsData)||void 0===n||n.runQueries(),e!==h.G3.labels&&t!==h._J.label&&void 0!==this.state.labelsCount||null===(r=this.state.$detectedLabelsData)||void 0===r||r.runQueries(),e!==h.G3.fields&&t!==h._J.field&&void 0!==this.state.fieldsCount||null===(a=this.state.$detectedFieldsData)||void 0===a||a.runQueries(),void 0===this.state.logsCount&&(null===(i=this.state.$logsCount)||void 0===i||i.runQueries())}subscribeToPatternsQuery(){var e;return null===(e=this.state.$patternsData)||void 0===e?void 0:e.subscribeToState((e=>{var t;if(this.updateLoadingState(e,fe.patterns),(null===(t=e.data)||void 0===t?void 0:t.state)===i.LoadingState.Done){const t=e.data.series;void 0!==(null==t?void 0:t.length)&&(this.setState({patternsCount:t.length}),(0,d.JO)().setPatternsCount(t.length))}}))}subscribeToDetectedLabelsQuery(){var e;return null===(e=this.state.$detectedLabelsData)||void 0===e?void 0:e.subscribeToState((e=>{var t;if(this.updateLoadingState(e,fe.labels),(null===(t=e.data)||void 0===t?void 0:t.state)===i.LoadingState.Done){const t=e.data,n=t.series[0].fields;if(void 0!==t.series.length&&void 0!==n.length){const e=t.series[0].fields.filter((e=>u.e4!==e.name));this.setState({labelsCount:e.length+1}),(0,d.JO)().setLabelsCount(n.length)}}}))}updateLoadingState(e,t){var n;const r=this.state.loadingStates;r[t]=(null===(n=e.data)||void 0===n?void 0:n.state)===i.LoadingState.Loading;const a=Object.values(r).some((e=>e));this.setState({loading:a,loadingStates:r})}subscribeToLogsQuery(){var e;return null===(e=this.state.$data)||void 0===e?void 0:e.subscribeToState(((e,t)=>{var n,r;if(this.updateLoadingState(e,fe.logs),(null===(n=e.data)||void 0===n?void 0:n.state)===i.LoadingState.Done||(null===(r=e.data)||void 0===r?void 0:r.state)===i.LoadingState.Streaming){var a,s;const t=null!==(s=null===(a=e.data.series[0])||void 0===a?void 0:a.length)&&void 0!==s?s:0;t!==this.state.logsCount&&this.setState({logsCount:t})}}))}subscribeToLogsCountQuery(){var e;return null===(e=this.state.$logsCount)||void 0===e?void 0:e.subscribeToState((e=>{var t;if((null===(t=e.data)||void 0===t?void 0:t.state)===i.LoadingState.Done){var n,r,a,s;const t=null===(s=e.data.series[0])||void 0===s||null===(a=s.fields)||void 0===a||null===(r=a[1])||void 0===r||null===(n=r.values)||void 0===n?void 0:n[0];this.setState({totalLogsCount:t})}}))}subscribeToDetectedFieldsQuery(e){var t;return null===(t=this.state.$detectedFieldsData)||void 0===t?void 0:t.subscribeToState((t=>{var n;if(this.updateLoadingState(t,fe.fields),e&&(null===(n=t.data)||void 0===n?void 0:n.state)===i.LoadingState.Done){const e=t.data.series[0];void 0!==e&&e.length!==this.state.fieldsCount&&(this.setState({fieldsCount:e.length}),(0,d.JO)().setFieldsCount(e.length))}}))}subscribeToTimeRange(){return s.jh.getTimeRange(this).subscribeToState((()=>{var e,t,n,r;null===(e=this.state.$patternsData)||void 0===e||e.runQueries(),null===(t=this.state.$detectedLabelsData)||void 0===t||t.runQueries(),null===(n=this.state.$detectedFieldsData)||void 0===n||n.runQueries(),null===(r=this.state.$logsCount)||void 0===r||r.runQueries()}))}resetBodyAndData(){let e={};this.state.$data||(e.$data=at()),this.state.$patternsData||(e.$patternsData=tt()),this.state.$detectedLabelsData||(e.$detectedLabelsData=nt()),this.state.$detectedFieldsData||(e.$detectedFieldsData=rt()),this.state.$logsCount||(e.$logsCount=it()),this.state.body||(e.body=et()),Object.keys(e).length&&this.setState(e)}setBreakdownView(){const{body:e}=this.state,t=(0,h.FT)(),n=be.find((e=>e.value===t));if(!e){const e=new Error("body is not defined in setBreakdownView!");throw x.v.error(e,{msg:"ServiceScene setBreakdownView error"}),e}if(n)e.setState({children:[...e.state.children.slice(0,1),n.getScene((e=>{"fields"===n.value&&this.setState({fieldsCount:e})}))]});else{const t=(0,h.er)(),n=ye.find((e=>e.value===t));n&&this.state.drillDownLabel?e.setState({children:[...e.state.children.slice(0,1),n.getScene(this.state.drillDownLabel)]}):x.v.error(new Error("not setting breakdown view"),{msg:"setBreakdownView error"})}}constructor(e){var t;super(ze({loadingStates:{[fe.patterns]:!1,[fe.labels]:!1,[fe.fields]:!1,[fe.logs]:!1},loading:!0,body:null!==(t=e.body)&&void 0!==t?t:et(),$data:at(),$patternsData:tt(),$detectedLabelsData:nt(),$detectedFieldsData:rt(),$logsCount:it()},e)),We(this,"_variableDependency",new s.Sh(this,{variableNames:[u.EY,u.MB,u.mB,u.uw,u._Y]})),this.addActivationHandler(this.onActivate.bind(this))}}function et(){return new s.G1({direction:"column",children:[new s.vA({ySizing:"content",body:new je({})})]})}function tt(){return(0,o.FH)([(0,c.BM)(`{${u.S1}}`,"patterns",{refId:"patterns"})])}function nt(){return(0,o.FH)([(0,c.BM)(`{${u.S1}}`,"detected_labels",{refId:"detectedLabels"})])}function rt(){return(0,o.FH)([(0,c.BM)(u.SA,"detected_fields",{refId:"detectedFields"})])}function at(){return(0,o.rS)([(0,c.l)(u.SA,{refId:Qe})])}function it(){const e=(0,o.rS)([(0,c.l)(`sum(count_over_time(${u.SA}[$__auto]))`,{refId:Ke,queryType:"instant"})],{runQueriesMode:"manual"});if(e instanceof s.dt)return e;const t=new Error("log count query provider is not query runner!");throw x.v.error(t,{msg:"getLogCountQueryRunner: invalid return type"}),t}We(Ze,"Component",(({model:e})=>{const{body:t}=e.useState();return t?a().createElement(t.Component,{model:t}):a().createElement(l.LoadingPlaceholder,{text:"Loading..."})}))},866:(e,t,n)=>{n.d(t,{p:()=>g});var r,a,i,s=n(2672),l=n(5959),o=n.n(l),c=n(2007),u=n(6089),d=n(227),p=n(9055);class g extends s.Bs{setHover(e){this.setState({hover:e})}onClick(e){e?(0,p.wy)(this.state.labelName,this.state.labelValue,this):(0,p._J)(this.state.labelName,this.state.labelValue,this)}}i=({model:e})=>{const{ds:t,labelValue:n,labelName:r,hover:a}=e.useState(),i=(0,d.eT)(t,r).includes(n),s=(0,c.useStyles2)((e=>({wrapper:(0,u.css)({display:"flex",flexDirection:"column",justifyContent:"center",alignSelf:"center"})}))),l=i?`Remove ${n} from favorites`:`Add ${n} to favorites`;return o().createElement("span",{className:s.wrapper},o().createElement(c.ToolbarButton,{onMouseOver:()=>{e.setHover(!0)},onMouseOut:()=>{e.setHover(!1)},icon:o().createElement(c.Icon,{name:i?"favorite":"star",size:"lg",type:i?"mono":"default"}),color:i?"rgb(235, 123, 24)":"#ccc",onClick:()=>e.onClick(i),name:"star","aria-label":l,tooltip:l}))},(a="Component")in(r=g)?Object.defineProperty(r,a,{value:i,enumerable:!0,configurable:!0,writable:!0}):r[a]=i},1105:(e,t,n)=>{n.d(t,{X:()=>le,y:()=>ue});var r=n(6089),a=n(3241),i=n(5959),s=n.n(i),l=n(7781),o=n(2672),c=n(2007),u=n(227),d=n(3143),p=n(2718),g=n(8835),h=n(4750),v=n(4793),m=n(1220),f=n(9055);function b(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class y extends o.Bs{constructor(...e){super(...e),b(this,"getLink",(()=>{if(this.state.labelValue)return w(this.state.labelName,this.state.labelValue,this)})),b(this,"onClick",(()=>{S(this.state.labelName,this.state.labelValue,this)}))}}function S(e,t,n){(0,p.EE)(p.NO.service_selection,p.ir.service_selection.service_selected,{value:t,label:e}),(0,f._J)(e,t,n)}function w(e,t,n){var r;const a=(0,h.cR)(n),i=[...a.state.filters.filter((n=>!(n.key===e&&n.value===t))),{key:e,operator:v.w7.Equal,value:t}];e===d.OX&&(e=d.ky);const s=a.clone({filters:i});return(0,g.k9)(e,t,null===(r=s.urlSync)||void 0===r?void 0:r.getUrlState())}function O(e){return{button:(0,r.css)({alignSelf:"center"})}}b(y,"Component",(({model:e})=>{const t=(0,c.useStyles2)(O);(0,h.cR)(e).useState();const n=e.getLink();return s().createElement(c.LinkButton,{"data-testid":m.b.index.showLogsButton,tooltip:`View logs for ${e.state.labelValue}`,className:t.button,variant:"secondary",size:"sm",disabled:!n,href:e.getLink(),onClick:e.onClick},"Show logs")}));var x=n(7918),E=n(5183),C=n(4482);const k=()=>s().createElement(C.R,null,s().createElement("p",null,"Log volume has not been configured."),s().createElement("p",null,s().createElement(c.TextLink,{href:"https://grafana.com/docs/loki/latest/reference/api/#query-log-volume",external:!0},"Instructions to enable volume in the Loki config:")),s().createElement(c.Text,{textAlignment:"left"},s().createElement("pre",null,s().createElement("code",null,"limits_config:",s().createElement("br",null),"  volume_enabled: true")))),F=()=>s().createElement(C.R,null,s().createElement("p",null,"No service matched your search."));var P=n(1383),L=n(4462),j=n(5431),_=n(833),T=n(8531),D=n(5435),N=n(4002),I=n(8538),$=n(8315);function B(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class M extends o.Bs{}B(M,"Component",(({model:e})=>{const t=o.jh.getAncestor(e,ue),n=o.jh.getAncestor(e,W),{tabOptions:r,showPopover:a}=n.useState(),i=(0,c.useStyles2)(A),l=r.map((e=>{return t=function(e){for(var t=1;t{n.toggleShowPopover()},autoFocus:!0,isOpen:a,placeholder:"Search labels",options:l,isSearchable:!0,openMenuOnFocus:!0,onChange:e=>{e.value&&(n.toggleShowPopover(),t.setSelectedTab(e.value))}})))}));const A=e=>({card:{body:(0,r.css)({padding:e.spacing(1)}),p:(0,r.css)({maxWidth:300})}});function R(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function V(e){for(var t=1;t{var e;return null===(e=this.state.$labelsData)||void 0===e?void 0:e.state})()){var t;return null===(t=e.data)||void 0===t?void 0:t.series[0].fields.map((e=>({label:e.name,cardinality:e.values[0]})))}populatePrimaryLabelsVariableOptions(e){const t=o.jh.getAncestor(this,ue).getSelectedTab(),n=(0,u.sj)((0,h.S9)(this).getValue().toString()),r=e.map((e=>{const r=n.indexOf(e.label);return{label:e.label===d.OX?d.ky:e.label,value:e.label,active:t===e.label,saved:-1!==r,savedIndex:r}})).sort(((e,t)=>e.value===d.OX||t.value===d.OX?e.value===d.OX?-1:1:e.labelt.label?1:0));this.setState({tabOptions:r})}runDetectedLabels(){this.state.$labelsData.runQueries()}runDetectedLabelsSubs(){this._subs.add(o.jh.getTimeRange(this).subscribeToState((()=>{this.runDetectedLabels()}))),this._subs.add((0,h.S9)(this).subscribeToState((()=>{this.runDetectedLabels()})))}onActivate(){this.runDetectedLabels(),this.setState({popover:new M({})}),this.runDetectedLabelsSubs(),this._subs.add((0,h.S9)(this).subscribeToState((()=>{this.state.$labelsData.runQueries()}))),this._subs.add((0,h.El)(this).subscribeToState((()=>{var e;const t=this.getLabelsFromQueryRunnerState(null===(e=this.state.$labelsData)||void 0===e?void 0:e.state);t&&this.populatePrimaryLabelsVariableOptions(t)}))),this._subs.add(this.state.$labelsData.subscribeToState((e=>{var t;if((null===(t=e.data)||void 0===t?void 0:t.state)===l.LoadingState.Done){const t=this.getLabelsFromQueryRunnerState(e),n=o.jh.getAncestor(this,ue);t&&this.populatePrimaryLabelsVariableOptions(t);const r=n.getSelectedTab();(null==t?void 0:t.some((e=>e.label===r)))||n.selectDefaultLabelTab()}})))}constructor(e){super(V({showPopover:!1,$labelsData:(0,E.HF)({queries:[(0,x.BM)("","detected_labels")],runQueriesMode:"manual"}),tabOptions:[{label:d.ky,value:d.OX,saved:!0}]},e)),R(this,"removeSavedTab",(e=>{(0,u.Gg)((0,h.S9)(this).getValue().toString(),e);const t=this.getLabelsFromQueryRunnerState();t&&this.populatePrimaryLabelsVariableOptions(t);const n=o.jh.getAncestor(this,ue);n.getSelectedTab()===e&&n.selectDefaultLabelTab()})),R(this,"toggleShowPopover",(()=>{this.setState({showPopover:!this.state.showPopover})})),this.addActivationHandler(this.onActivate.bind(this))}}R(W,"Component",(({model:e})=>{const{tabOptions:t,showPopover:n,popover:u,$labelsData:p}=e.useState(),{data:g}=p.useState(),v=o.jh.getAncestor(e,ue);(0,h.El)(e).useState();const m=(0,c.useStyles2)(z),f=(0,i.useRef)(null);return s().createElement(c.TabsBar,{className:m.tabs},t.filter((e=>e.saved||e.active||e.value===d.OX)).sort(((e,t)=>{return e.value===d.OX||t.value===d.OX?e.value===d.OX?-1:1:(null!==(n=e.savedIndex)&&void 0!==n?n:0)-(null!==(r=t.savedIndex)&&void 0!==r?r:0);var n,r})).map((t=>{const n=s().createElement(c.Tab,{key:t.value,onChangeTab:()=>{v.setSelectedTab(t.value)},label:(0,$.EJ)(t.label,15,!0),active:t.active,suffix:t.value!==d.OX?n=>s().createElement(s().Fragment,null,s().createElement(c.Tooltip,{content:"Remove tab"},s().createElement(c.Icon,{onKeyDownCapture:n=>{"Enter"===n.key&&e.removeSavedTab(t.value)},onClick:n=>{n.stopPropagation(),e.removeSavedTab(t.value)},name:"times",className:(0,r.cx)(n.className)}))):void 0});return t.label.length>15?s().createElement(c.Tooltip,{key:t.value,content:t.label},n):n})),(null==g?void 0:g.state)===l.LoadingState.Loading&&s().createElement(c.Tab,{label:"Loading tabs",icon:"spinner"}),(null==g?void 0:g.state)===l.LoadingState.Done&&s().createElement("span",{className:m.addTab},s().createElement(c.Tab,{onChangeTab:e.toggleShowPopover,label:"Add label",ref:f,icon:"plus-circle"})),u&&s().createElement(c.PopoverController,{content:s().createElement(u.Component,{model:u})},((e,t,r)=>{const i={onBlur:t,onFocus:e};return s().createElement(s().Fragment,null,f.current&&s().createElement(s().Fragment,null,s().createElement(c.Popover,V((l=V({},r,a.rest),o=null!=(o={show:n,wrapperClassName:m.popover,referenceElement:f.current,renderArrow:!0})?o:{},Object.getOwnPropertyDescriptors?Object.defineProperties(l,Object.getOwnPropertyDescriptors(o)):function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t.push.apply(t,n)}return t}(Object(o)).forEach((function(e){Object.defineProperty(l,e,Object.getOwnPropertyDescriptor(o,e))})),l),i))));var l,o})))}));const z=e=>({tabs:(0,r.css)({overflowY:"hidden"}),addTab:(0,r.css)({label:"add-label-tab",color:e.colors.primary.text,"& button":{color:e.colors.primary.text}}),popover:(0,r.css)({borderRadius:e.shape.radius.default,boxShadow:e.shadows.z3,background:e.colors.background.primary,border:`1px solid ${e.colors.border.weak}`})});var H=n(866);const Q=e=>s().createElement(C.R,null,s().createElement("p",null,"No logs found in ",s().createElement("strong",null,e.labelName),".",s().createElement("br",null),"Please adjust time range or select another label."));var K=n(9829),q=n(558);function G(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function U(e){for(var t=1;t{const e=this.isSelected();this.state.included!==e.included&&this.setState(U({},e))})))}getFilter(){return{name:this.state.name,value:this.state.value}}constructor(e){var t,n;super((t=U({},e),n=null!=(n={included:null})?n:{},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t.push.apply(t,n)}return t}(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})),t)),G(this,"isSelected",(()=>{const e=(0,h.cR)(this).state.filters.find((e=>{const t=(0,h.z2)(d.MB,e);return e.key===this.state.name&&t.value===this.state.value}));return e?{included:e.operator===v.w7.Equal}:{included:!1}})),G(this,"onClick",(e=>{const t=this.getFilter();(0,q.Qt)(t.name,t.value,e,this,d.MB);const n=(0,h.cR)(this);(0,p.EE)(p.NO.service_selection,p.ir.service_selection.add_to_filters,{filterType:"index-filters",key:t.name,action:e,filtersLength:(null==n?void 0:n.state.filters.length)||0}),this.setState(U({},this.isSelected()))})),this.addActivationHandler(this.onActivate.bind(this))}}G(J,"Component",(({model:e})=>{const{value:t,hidden:n,included:r}=e.useState();if(n)return s().createElement(s().Fragment,null);const a=(0,c.useStyles2)(Y);return s().createElement("span",{className:a.wrapper},s().createElement(c.Button,{tooltip:!0===r?`Remove ${t} from filters`:`Add ${t} to filters`,variant:"secondary",fill:"outline",icon:!0===r?"minus":"plus",size:"sm","aria-selected":!0===r,className:a.includeButton,onClick:()=>!0===r?e.onClick("clear"):e.onClick("include"),"data-testid":m.b.exploreServiceDetails.buttonFilterInclude}))}));const Y=()=>({container:(0,r.css)({display:"flex",justifyContent:"center"}),includeButton:(0,r.css)({borderRadius:0}),wrapper:(0,r.css)({display:"flex",flexDirection:"column",justifyContent:"center",alignSelf:"center"})});var X=n(6059);function Z(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class ee extends o.Bs{}function te(e){return{icon:(0,r.css)({color:e.colors.text.disabled,marginLeft:e.spacing.x1}),searchPageCountWrap:(0,r.css)({display:"flex",alignItems:"center"}),select:(0,r.css)({maxWidth:"65px",marginLeft:e.spacing(1),marginRight:e.spacing(1)}),searchFieldPlaceholderText:(0,r.css)({fontSize:e.typography.bodySmall.fontSize,color:e.colors.text.disabled,alignItems:"center",display:"flex",flex:"1 0 auto",textWrapMode:"nowrap"})}}function ne(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function re(e){for(var t=1;t{const n=(0,c.useStyles2)(te),r=o.jh.getAncestor(e,ue),{countPerPage:a}=r.useState(),l=function(e){const t=20*Math.ceil(e/20),n=[];for(let r=20;r<=60&&r<=t;r+=20){let t=r.toString();r<20?t=r.toString():r>e&&(t=e.toString()),n.push({value:r.toString(),label:t})}return n}(t);return(0,i.useEffect)((()=>{var e,t;const n=null!==(t=null===(e=l[l.length-1])||void 0===e?void 0:e.value)&&void 0!==t?t:a.toString();a.toString()>n&&r.setState({countPerPage:parseInt(n,10)})}),[a,l,r]),s().createElement("span",{className:n.searchPageCountWrap},s().createElement("span",{className:n.searchFieldPlaceholderText},"Showing"," ",s().createElement(c.Select,{className:n.select,onChange:e=>{if(e.value){const t=parseInt(e.value,10);r.setState({countPerPage:t,currentPage:1}),r.updateBody(),(0,u.uF)(t)}},options:l,value:a.toString()})," ","of ",t," ",s().createElement(c.IconButton,{className:n.icon,"aria-label":"Count info",name:"info-circle",tooltip:`${t} labels have values for the selected time range. Total label count may differ`})))})),Z(ee,"Component",(({model:e,totalCount:t})=>{const n=o.jh.getAncestor(e,ue),{countPerPage:a,currentPage:i}=n.useState(),l=(0,c.useStyles2)((e=>({pagination:(0,r.css)({float:"none"}),paginationWrap:(0,r.css)({[e.breakpoints.up("lg")]:{display:"none"},[e.breakpoints.down("lg")]:{display:"flex",justifyContent:"flex-end",flex:"1 0 auto"}}),paginationWrapMd:(0,r.css)({[e.breakpoints.down("lg")]:{display:"none"},[e.breakpoints.up("lg")]:{display:"flex",justifyContent:"flex-end",flex:"1 0 auto"}})})));return t>a?s().createElement(s().Fragment,null,s().createElement("span",{className:l.paginationWrapMd},s().createElement(c.Pagination,{className:l.pagination,currentPage:i,numberOfPages:Math.ceil(t/a),onNavigate:e=>{n.setState({currentPage:e}),n.updateBody()}})),s().createElement("span",{className:l.paginationWrap},s().createElement(c.Pagination,{showSmallVersion:!0,className:l.pagination,currentPage:i,numberOfPages:Math.ceil(t/a),onNavigate:e=>{n.setState({currentPage:e}),n.updateBody()}}))):null}));const ie=T.config.featureToggles.exploreLogsAggregatedMetrics,se="__aggregated_metric__",le=(0,l.dateTime)("2024-08-30","YYYY-MM-DD"),oe="var-primary_label",ce="var-ds";class ue extends o.Bs{getUrlState(){const{key:e}=de(),t=(0,h.El)(this).state.filters[0];return t.key&&t.key!==e&&(0,h.El)(this).setState({filters:[ae(re({},t),{key:null!=e?e:t.key})]}),{}}updateFromUrl(e){}addDatasourceChangeToBrowserHistory(e){const t=T.locationService.getLocation(),n=new URLSearchParams(t.search),r=n.get(ce);if(r&&e!==r){const r=t.pathname+t.search;n.set(ce,e);const a=t.pathname+"?"+n.toString();r!==a&&(0,g.ad)(a)}}addLabelChangeToBrowserHistory(e,t=!1){const{key:n,search:r,location:a}=de();if(n){const i=null==n?void 0:n.split("|");if((null==i?void 0:i[0])!==e){i[0]=e,r.set(oe,i.join("|"));const n=a.pathname+a.search,s=a.pathname+"?"+r.toString();n!==s&&(t?T.locationService.replace(s):(0,g.ad)(s))}}}getSelectedTab(){var e;return null===(e=(0,h.El)(this).state.filters[0])||void 0===e?void 0:e.key}selectDefaultLabelTab(){this.addLabelChangeToBrowserHistory(d.OX,!0),this.setSelectedTab(d.OX)}setSelectedTab(e){(0,u.cO)((0,h.S9)(this).getValue().toString(),e),(0,h.h)(this),(0,h.BL)(e,this)}buildServiceLayout(e,t,n,r,a,i){var s;let u;n.to.diff(n.from,"hours")>=4&&n.to.diff(n.from,"hours")<=26&&(u="2h");const p=o.d0.timeseries().setTitle(t).setData((0,E.rS)([(0,x.l)(this.getMetricExpression(t,r,a),{legendFormat:`{{${d.e4}}}`,splitDuration:u,refId:`ts-${t}`})],{runQueriesMode:"manual"})).setCustomFieldConfig("stacking",{mode:c.StackingMode.Normal}).setCustomFieldConfig("fillOpacity",100).setCustomFieldConfig("lineWidth",0).setCustomFieldConfig("pointSize",0).setCustomFieldConfig("drawStyle",c.DrawStyle.Bars).setUnit("short").setOverrides(E.jC).setOption("legend",{showLegend:!0,calcs:["sum"],placement:"right",displayMode:c.LegendDisplayMode.Table}).setHeaderActions([new H.p({ds:null===(s=i.getValue())||void 0===s?void 0:s.toString(),labelName:e,labelValue:t}),new J({name:e,value:t,hidden:this.isAggregatedMetricsActive()}),new y({labelValue:t,labelName:e})]).build();p.setState({extendPanelContext:(n,r)=>this.extendTimeSeriesLegendBus(e,t,r,p)});const g=new o.xK({$behaviors:[new o.Gg.K2({key:"serviceCrosshairSync",sync:l.DashboardCursorSync.Crosshair})],body:p});return g.addActivationHandler((()=>{var e;(null===(e=(0,K.oh)(g)[0].state.data)||void 0===e?void 0:e.state)!==l.LoadingState.Done&&this.runPanelQuery(g)})),g}isAggregatedMetricsActive(){const e=this.getQueryOptionsToolbar();return!(null==e?void 0:e.state.options.aggregatedMetrics.disabled)&&(null==e?void 0:e.state.options.aggregatedMetrics.active)}formatPrimaryLabelForUI(){const e=this.getSelectedTab();return e===d.OX?d.ky:e}setVolumeQueryRunner(){this.setState({$data:(0,E.HF)({queries:[(0,x.$k)(`{${d.kl}, ${d.ll}}`,"volume",this.getSelectedTab())],runQueriesMode:"manual"})}),this.subscribeToVolume()}doVariablesNeedSync(){const e=(0,h.cR)(this),t=(0,h.aW)(this),n=this.getSelectedTab(),r=e.state.filters.filter((e=>e.key!==n));return{filters:r,needsSync:!(0,_.B)(r,t.state.filters)}}syncVariables(){const e=(0,h.aW)(this),{filters:t,needsSync:n}=this.doVariablesNeedSync();n&&e.setState({filters:t})}onActivate(){var e;this.fixRequiredUrlParams(),this.syncVariables(),this.setVolumeQueryRunner(),this.subscribeToPrimaryLabelsVariable(),this.subscribeToLabelFilterChanges(),this.subscribeToActiveTabVariable((0,h.El)(this)),(null===(e=this.state.$data.state.data)||void 0===e?void 0:e.state)!==l.LoadingState.Done&&this.runVolumeOnActivate(),this.subscribeToTimeRange(),this.subscribeToDatasource(),this.subscribeToAggregatedMetricToggle(),this.subscribeToAggregatedMetricVariable()}runVolumeOnActivate(){var e,t;this.isTimeRangeTooEarlyForAggMetrics()?(this.onUnsupportedAggregatedMetricTimeRange(),(null===(e=this.state.$data.state.data)||void 0===e?void 0:e.state)!==l.LoadingState.Done&&this.runVolumeQuery()):(this.onSupportedAggregatedMetricTimeRange(),(null===(t=this.state.$data.state.data)||void 0===t?void 0:t.state)!==l.LoadingState.Done&&this.runVolumeQuery())}subscribeToAggregatedMetricToggle(){var e;this._subs.add(null===(e=this.getQueryOptionsToolbar())||void 0===e?void 0:e.subscribeToState(((e,t)=>{e.options.aggregatedMetrics.userOverride!==t.options.aggregatedMetrics.userOverride&&this.runVolumeQuery(!0)})))}subscribeToDatasource(){this._subs.add((0,h.S9)(this).subscribeToState((e=>{this.addDatasourceChangeToBrowserHistory(e.value.toString()),this.runVolumeQuery()})))}subscribeToActiveTabVariable(e){this._subs.add(e.subscribeToState(((e,t)=>{if(e.filterExpression!==t.filterExpression){const t=e.filters[0].key;this.addLabelChangeToBrowserHistory(t);const{needsSync:n}=this.doVariablesNeedSync();n?this.syncVariables():this.runVolumeQuery(!0)}})))}subscribeToAggregatedMetricVariable(){this._subs.add((0,h.vm)(this).subscribeToState(((e,t)=>{e.value!==t.value&&(this.setState({body:new o.gF({children:[]})}),this.updateBody(!0))})))}subscribeToPrimaryLabelsVariable(){const e=(0,h.cR)(this);this._subs.add(e.subscribeToState(((e,t)=>{(0,_.B)(e.filters,t.filters)||this.syncVariables()})))}subscribeToLabelFilterChanges(){const e=(0,h.aW)(this);this._subs.add(e.subscribeToState(((e,t)=>{(0,_.B)(e.filters,t.filters)||this.runVolumeQuery(!0)})))}subscribeToVolume(){this._subs.add(this.state.$data.subscribeToState(((e,t)=>{var n,r,a;(null===(n=e.data)||void 0===n?void 0:n.state)!==l.LoadingState.Done||(0,_.B)(null==t||null===(r=t.data)||void 0===r?void 0:r.series,null==e||null===(a=e.data)||void 0===a?void 0:a.series)||this.updateBody(!0)})))}subscribeToTimeRange(){this._subs.add(o.jh.getTimeRange(this).subscribeToState((()=>{this.isTimeRangeTooEarlyForAggMetrics()?this.onUnsupportedAggregatedMetricTimeRange():this.onSupportedAggregatedMetricTimeRange(),this.runVolumeQuery()})))}fixRequiredUrlParams(){const{key:e}=de();e||this.selectDefaultLabelTab()}isTimeRangeTooEarlyForAggMetrics(){return o.jh.getTimeRange(this).state.value.from.isBefore((0,l.dateTime)(le))}onUnsupportedAggregatedMetricTimeRange(){const e=this.getQueryOptionsToolbar();null==e||e.setState({options:{aggregatedMetrics:ae(re({},null==e?void 0:e.state.options.aggregatedMetrics),{disabled:!0})}})}getQueryOptionsToolbar(){return o.jh.getAncestor(this,I.P).state.controls.find((e=>e instanceof N.s))}onSupportedAggregatedMetricTimeRange(){const e=this.getQueryOptionsToolbar();null==e||e.setState({options:{aggregatedMetrics:ae(re({},null==e?void 0:e.state.options.aggregatedMetrics),{disabled:!1})}})}runVolumeQuery(e=!1){e&&this.setVolumeQueryRunner(),this.updateAggregatedMetricVariable(),this.state.$data.runQueries()}updateAggregatedMetricVariable(){const e=(0,h.vm)(this),t=(0,h.cR)(this);this.isTimeRangeTooEarlyForAggMetrics()&&ie||!this.isAggregatedMetricsActive()?(e.changeValueTo(d.OX),t.setState({hide:D.zL.dontHide}),e.changeValueTo(d.OX),o.jh.findByKeyAndType(this,I.y,X.H).setState({hidden:!1})):(e.changeValueTo(se),t.setState({hide:D.zL.hideVariable,filters:[]}),o.jh.findByKeyAndType(this,I.y,X.H).setState({hidden:!0}))}updateTabs(){if(!this.state.tabs){const e=new W({});this.setState({tabs:e})}}getGridItems(){return this.state.body.state.children}getVizPanel(e){return e.state.body instanceof o.Eb?e.state.body:void 0}runPanelQuery(e){if(e.isActive){const n=(0,K.oh)(e);if(1===n.length){var t;const e=n[0],r=e.state.queries[0],a=null===(t=e.state.data)||void 0===t?void 0:t.timeRange,i=o.jh.getTimeRange(this),s=a?Math.abs(i.state.value.from.diff(null==a?void 0:a.from,"s")):1/0,l=a?Math.abs(i.state.value.to.diff(null==a?void 0:a.to,"s")):1/0,c=o.jh.interpolate(this,r.expr);(e.state.key!==c||s>0||l>0)&&(e.setState({key:c}),e.runQueries())}}}updateBody(e=!1){var t;const{labelsToQuery:n}=this.getLabels(null===(t=this.state.$data.state.data)||void 0===t?void 0:t.series),r=this.getSelectedTab();if(this.updateTabs(),this.state.paginationScene||this.setState({paginationScene:new ee({})}),n&&0!==n.length){const t=[],a=this.getGridItems(),i=o.jh.getTimeRange(this).state.value,s=(0,h.vm)(this),l=(0,h.El)(this),c=(0,h.S9)(this),u=(this.state.currentPage-1)*this.state.countPerPage,d=u+this.state.countPerPage;for(const o of n.slice(u,d)){const n=a.filter((e=>{const t=this.getVizPanel(e);return(null==t?void 0:t.state.title)===o}));if(2===n.length)t.push(n[0],n[1]),n[0].isActive&&e&&this.runPanelQuery(n[0]),n[1].isActive&&e&&this.runPanelQuery(n[1]);else{const e=this.buildServiceLayout(r,o,i,s,l,c),n=this.buildServiceLogsLayout(r,o);t.push(e,n)}}this.state.body.setState({children:t,isLazy:!0,templateColumns:"repeat(auto-fit, minmax(500px, 1fr) minmax(300px, 70vw))",autoRows:"200px",md:{templateColumns:"1fr",rowGap:1,columnGap:1}})}else this.state.body.setState({children:[]})}updateServiceLogs(e,t){var n;if(!this.state.body)return void this.updateBody();const{labelsToQuery:r}=this.getLabels(null===(n=this.state.$data.state.data)||void 0===n?void 0:n.series),a=null==r?void 0:r.indexOf(t);if(void 0===a||a<0)return;let i=[...this.getGridItems()];i.splice(2*a+1,1,this.buildServiceLogsLayout(e,t)),this.state.body.setState({children:i})}getLogExpression(e,t,n){return`{${e}=\`${t}\` , ${d.ll} }${n}`}getMetricExpression(e,t,n){const r=n.state.filters[0];return t.state.value===se?r.key===d.OX?`sum by (${d.e4}) (sum_over_time({${se}=\`${e}\` } | logfmt | unwrap count [$__auto]))`:`sum by (${d.e4}) (sum_over_time({${se}=~\`.+\` } | logfmt | ${r.key}=\`${e}\` | unwrap count [$__auto]))`:`sum by (${d.e4}) (count_over_time({ ${r.key}=\`${e}\`, ${d.ll} } [$__auto]))`}getLabels(e){var t,n,r;const a=null!==(r=null==e||null===(t=e[0])||void 0===t?void 0:t.fields[0].values)&&void 0!==r?r:[],i=null===(n=(0,h.S9)(this).getValue())||void 0===n?void 0:n.toString(),s=(0,h.eY)(this).getValue(),l=this.getSelectedTab(),o=function(e,t,n,r){if(!(null==e?void 0:e.length))return[];".+"===n&&(n="");const a=(0,u.eT)(t,r).filter((t=>t.toLowerCase().includes(n.toLowerCase())&&e.includes(t)));return Array.from(new Set([...a,...e]))}(a,i,String(s),l);return{labelsByVolume:a,labelsToQuery:o}}constructor(e){var t,n;super(re({body:new o.gF({children:[]}),$variables:new o.Pj({variables:[new j.m({name:d.Du,label:"Service",hide:D.zL.hideVariable,skipUrlSync:!0,value:".+"}),new j.m({name:d.Wi,label:"",hide:D.zL.hideLabel,value:d.OX,skipUrlSync:!0,options:[{value:d.OX,label:d.OX},{value:se,label:se}]}),new o.H9({name:d.Gb,hide:D.zL.hideLabel,expressionBuilder:e=>function(e){if(e.length){const t=e[0];return`${t.key}${t.operator}\`${t.value}\``}return""}(e),filters:[{key:null!==(t=de().key)&&void 0!==t?t:d.OX,value:".+",operator:"=~"}]}),new o.H9({name:d.fi,datasource:d.eL,layout:"vertical",filters:[],expressionBuilder:x.VW,hide:D.zL.hideVariable,key:"adhoc_service_filter_replica",skipUrlSync:!0})]}),$data:(0,E.HF)({queries:[],runQueriesMode:"manual"}),serviceLevel:new Map,countPerPage:null!==(n=(0,u.KH)())&&void 0!==n?n:20,currentPage:1,showPopover:!1,tabOptions:[{label:d.ky,value:d.OX}]},e)),ne(this,"_urlSync",new o.So(this,{keys:[oe]})),ne(this,"onSearchServicesChange",(0,a.debounce)((e=>{const t=(0,h.eY)(this);(e?(0,x.vC)(e):".+")!==t.state.value&&t.setState({value:e?(0,x.vC)(e):".+",label:null!=e?e:""});const n=(0,h.El)(this),r=n.state.filters[0];(0,x.vC)(t.state.value.toString())!==r.value&&n.setState({filters:[ae(re({},r),{value:(0,x.vC)(t.state.value.toString())})]}),this.setState({currentPage:1}),(0,p.EE)(p.NO.service_selection,p.ir.service_selection.search_services_changed,{searchQuery:e})}),500)),ne(this,"getLevelFilterForService",(e=>{let t=this.state.serviceLevel.get(e)||[];return 0===t.length?"":` | ${t.map((e=>("logs"===e&&(e=""),`${d.e4}=\`${e}\``))).join(" or ")} `})),ne(this,"buildServiceLogsLayout",((e,t)=>{const n=this.getLevelFilterForService(t),r=new o.xK({$behaviors:[new o.Gg.K2({sync:l.DashboardCursorSync.Off})],body:o.d0.logs().setHoverHeader(!0).setData((0,E.rS)([(0,x.l)(this.getLogExpression(e,t,n),{maxLines:100,refId:`logs-${t}`})],{runQueriesMode:"manual"})).setTitle(t).setOption("showTime",!0).setOption("enableLogDetails",!1).build()});return r.addActivationHandler((()=>{var e;(null===(e=(0,K.oh)(r)[0].state.data)||void 0===e?void 0:e.state)!==l.LoadingState.Done&&this.runPanelQuery(r)})),r})),ne(this,"extendTimeSeriesLegendBus",((e,t,n,r)=>{const a=n.onToggleSeriesVisibility;n.onToggleSeriesVisibility=(n,i)=>{var s,l,o;null==a||a(n,i);const c=(0,P.vX)(null!==(o=null===(l=r.state.$data)||void 0===l||null===(s=l.state.data)||void 0===s?void 0:s.series)&&void 0!==o?o:[]),u=(0,P.pC)(n,this.state.serviceLevel.get(t),i,c);this.state.serviceLevel.set(t,u),this.updateServiceLogs(e,t)}})),this.addActivationHandler(this.onActivate.bind(this))}}function de(){const e=T.locationService.getLocation(),t=new URLSearchParams(e.search),n=t.get(oe),r=null==n?void 0:n.split("|");return{key:null==r?void 0:r[0],search:t,location:e}}function pe(e){return{container:(0,r.css)({display:"flex",flexDirection:"column",flexGrow:1,position:"relative"}),headingWrapper:(0,r.css)({marginTop:e.spacing(1)}),loadingText:(0,r.css)({margin:0}),header:(0,r.css)({position:"absolute",right:0,top:"4px",zIndex:2}),bodyWrapper:(0,r.css)({flexGrow:1,display:"flex",flexDirection:"column"}),body:(0,r.css)({flexGrow:1,display:"flex",flexDirection:"column"}),searchPaginationWrap:(0,r.css)({label:"search-pagination-wrap",display:"flex",alignItems:"center",flexWrap:"wrap",flex:"1 0 auto",[e.breakpoints.down("md")]:{marginTop:e.spacing(1),width:"100%"}}),searchWrapper:(0,r.css)({label:"search-wrapper",display:"flex",alignItems:"center",flexWrap:"wrap",[e.breakpoints.down("md")]:{flexDirection:"column",alignItems:"flex-start"}}),searchField:(0,r.css)({marginTop:e.spacing(1),position:"relative"})}}ne(ue,"Component",(({model:e})=>{var t;const n=(0,c.useStyles2)(pe),{body:r,$data:a,tabs:i,paginationScene:o}=e.useState(),{data:u}=a.useState(),d=e.getSelectedTab(),p=(0,h.eY)(e),{label:v,value:m}=p.useState(),f=m&&".+"!==m,{labelsByVolume:b,labelsToQuery:y}=e.getLabels(null==u?void 0:u.series),O=(null==u?void 0:u.state)===l.LoadingState.Loading||(null==u?void 0:u.state)===l.LoadingState.Streaming||void 0===u,E=(null===(t=a.state.data)||void 0===t?void 0:t.state)===l.LoadingState.Error,C=e.formatPrimaryLabelForUI();let P=p.getValue().toString();".+"===P&&(P="");const j=(0,x.sT)(P);var _;return s().createElement("div",{className:n.container},s().createElement("div",{className:n.bodyWrapper},i&&s().createElement(i.Component,{model:i}),s().createElement(c.Field,{className:n.searchField},s().createElement("div",{className:n.searchWrapper},s().createElement(L.f,{initialFilter:{label:j,value:P,icon:"filter"},isLoading:O,value:P||v,onChange:t=>(t=>{e.onSearchServicesChange(t)})(t),selectOption:t=>{!function(e,t,n){const r=w(e,t,n);S(e,t,n),(0,g.ad)(r)}(d,t,e)},label:C,options:null!==(_=null==y?void 0:y.map((e=>({value:e,label:e}))))&&void 0!==_?_:[]}),!O&&s().createElement("span",{className:n.searchPaginationWrap},o&&s().createElement(ee.PageCount,{model:o,totalCount:y.length}),o&&s().createElement(ee.Component,{model:o,totalCount:y.length})))),!O&&E&&s().createElement(k,null),!O&&!E&&f&&!(null==b?void 0:b.length)&&s().createElement(F,null),!O&&!E&&!f&&!(null==b?void 0:b.length)&&s().createElement(Q,{labelName:d}),!(!O&&E)&&s().createElement("div",{className:n.body},s().createElement(r.Component,{model:r}),s().createElement("div",{className:n.headingWrapper},o&&s().createElement(ee.Component,{totalCount:y.length,model:o})))))}))},8760:(e,t,n)=>{n.d(t,{C:()=>s});var r=n(5959),a=n.n(r),i=n(2007);function s(e){return a().createElement(i.RadioButtonGroup,{options:[{label:"Logs",value:"logs",description:"Show results in logs visualisation"},{label:"Table",value:"table",description:"Show results in table visualisation"}],size:"sm",value:e.vizType,onChange:e.onChange})}},5431:(e,t,n)=>{n.d(t,{m:()=>s});var r=n(1269),a=n(2672);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class s extends a.n8{getValueOptions(e){return(0,r.of)(this.state.options)}constructor(e){super(function(e){for(var t=1;t(0,a.yC)(e)))},7063:(e,t,n)=>{n.d(t,{K:()=>g});var r=n(2672),a=n(4793),i=n(3241),s=n(3143),l=n(4750),o=n(5111),c=n(4011),u=n(227);function d(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function p(e){for(var t=1;te)).forEach((e=>{const t=this.joinCombinedFiltersValues(e,"|");for(const n in e){const r=e[n].operator;a.push({key:n,operator:r,value:t[n]})}})),a}getExpr(){let{equalsFilters:e,notEqualsFilters:t,regexEqualFilters:n,regexNotEqualFilters:r,ltFilters:a,lteFilters:i,gtFilters:s,gteFilters:l}=this.getCombinedLabelFilters();this.options.debug&&console.info("combined filters after merge",{equalsFilters:e,notEqualsFilters:t,regexEqualFilters:n,regexNotEqualFilters:r,ltFilters:a,lteFilters:i,gtFilters:s,gteFilters:l});const o=this.buildLabelsLogQLFromFilters({equalsFilters:e,notEqualsFilters:t,regexEqualFilters:n,regexNotEqualFilters:r,ltFilters:a,lteFilters:i,gtFilters:s,gteFilters:l});var c;return o?(null!==(c=this.options.prefix)&&void 0!==c?c:"")+o:""}getLabelsExpr(e){return this.options=p({},{joinMatchFilters:!0,decodeFilters:!1,filterType:"indexed"},e),this.getExpr()}getMetadataExpr(e){return this.options=p({},{filterSeparator:" |",prefix:"| ",joinMatchFilters:!1,decodeFilters:!1,filterType:"field"},e),this.getExpr()}getLevelsExpr(e){return this.options=p({},{filterSeparator:" |",prefix:"| ",joinMatchFilters:!1,decodeFilters:!1,filterType:"field"},e),this.getExpr()}getFieldsExpr(e){return this.options=p({},{filterSeparator:" |",prefix:"| ",joinMatchFilters:!1,decodeFilters:!0,filterType:"field"},e),this.getExpr()}buildLabelsLogQLFromFilters({equalsFilters:e,notEqualsFilters:t,regexEqualFilters:n,regexNotEqualFilters:r,ltFilters:s,lteFilters:l,gtFilters:o,gteFilters:c}){let u,d,p,g,h,v,m,f;const b=[];var y;this.options.joinMatchFilters?(u=this.joinCombinedFiltersValues(e,"|"),d=this.joinCombinedFiltersValues(t,"|"),p=this.joinCombinedFiltersValues(n,"|"),g=this.joinCombinedFiltersValues(r,"|"),b.push(...this.buildJoinedFilters(u,a.KQ.Equal)),b.push(...this.buildJoinedFilters(d,a.KQ.NotEqual)),b.push(...this.buildJoinedFilters(p,a.KQ.RegexEqual)),b.push(...this.buildJoinedFilters(g,a.KQ.RegexNotEqual))):(u=this.getFilterValues(e),d=this.getFilterValues(t),p=this.getFilterValues(n),g=this.getFilterValues(r),b.push(...this.buildFilter(u,a.KQ.Equal)),b.push(...this.buildFilter(d,a.KQ.NotEqual)),b.push(...this.buildFilter(p,a.KQ.RegexEqual)),b.push(...this.buildFilter(g,a.KQ.RegexNotEqual))),h=this.getFilterValues(s),v=this.getFilterValues(l),m=this.getFilterValues(o),f=this.getFilterValues(c),b.push(...this.buildFilter(h,a.Rk.lt)),b.push(...this.buildFilter(v,a.Rk.lte)),b.push(...this.buildFilter(m,a.Rk.gt)),b.push(...this.buildFilter(f,a.Rk.gte)),this.options.debug&&console.info("combined filters after stringify",{equalFiltersStrings:u,notEqualsFiltersStrings:d,regexEqualFiltersStrings:p,regexNotEqualFiltersStrings:g,ltFiltersStrings:h,lteFiltersStrings:v,gtFiltersStrings:m,gteFiltersStrings:f,allFilters:b});const S=(0,i.trim)(this.combineValues(b,`${null!==(y=this.options.filterSeparator)&&void 0!==y?y:","} `));return this.options.debug&&console.info("DEBUG labels expr",{allFiltersString:S}),S}getCombinedLabelFilters(){const{[a.KQ.Equal]:e,[a.KQ.NotEqual]:t,[a.KQ.RegexEqual]:n,[a.KQ.RegexNotEqual]:r,[a.Rk.lt]:i,[a.Rk.lte]:s,[a.Rk.gt]:l,[a.Rk.gte]:o}=this.groupFiltersByKey(this.filters);let c,u,d,p,g,h,v,m;return this.options.joinMatchFilters?(c=this.combineFiltersValues(e,a.KQ.RegexEqual),u=this.combineFiltersValues(t,a.KQ.RegexNotEqual),d=this.combineFiltersValues(n),p=this.combineFiltersValues(r)):(c=this.combineFiltersValues(e),u=this.combineFiltersValues(t),d=this.combineFiltersValues(n),p=this.combineFiltersValues(r)),g=this.combineFiltersValues(i),h=this.combineFiltersValues(s),v=this.combineFiltersValues(l),m=this.combineFiltersValues(o),this.options.debug&&console.info("combined filters",{equalsFilters:c,notEqualsFilters:u,regexEqualFilters:d,regexNotEqualFilters:p}),this.options.joinMatchFilters&&(c&&(d=this.mergeFilters(a.KQ.RegexEqual,c,d),c=this.removeStaleOperators(c,a.KQ.Equal)),u&&(p=this.mergeFilters(a.KQ.RegexNotEqual,u,p),u=this.removeStaleOperators(u,a.KQ.NotEqual))),{equalsFilters:c,notEqualsFilters:u,regexEqualFilters:d,regexNotEqualFilters:p,ltFilters:g,lteFilters:h,gtFilters:v,gteFilters:m}}buildFilter(e,t){const n=[];for(const r in e){const a=[],i=e[r];(0,o.iu)(t)?i.forEach((e=>a.push(this.buildFilterString(r,t,e,"")))):i.forEach((e=>a.push(this.buildFilterString(r,t,e)))),(0,o.BG)(t)?n.push(a.join(` ${this.positiveFilterValueSeparator} `)):n.push(a.join(` ${this.negativeFilterValueSeparator} `))}return n}buildJoinedFilters(e,t){const n=[];for(const r in e)n.push(this.buildFilterString(r,t,e[r]));return n}removeStaleOperators(e,t){const n={};return Object.keys(e).forEach((r=>{e[r].operator===t&&(n[r]=e[r])})),n}mergeFilters(e,t,n){return Object.keys(t).filter((n=>t[n].operator===e)).map((e=>({values:t[e].values,key:e}))).forEach((r=>{void 0===n&&(n={[r.key]:{values:[],operator:e}}),void 0===n[r.key]&&(n[r.key]={values:[],operator:e}),n[r.key].values.push(...this.mergeCombinedFiltersValues(t[r.key],e))})),n}mergeCombinedFiltersValues(e,t){var n;const r=[];return e.operator===t&&(null===(n=e.values)||void 0===n?void 0:n.length)&&r.push(...e.values),r}joinCombinedFiltersValues(e,t){const n={};for(const r in e)e[r].values.length&&(n[r]=this.combineValues(e[r].values,t));return n}getFilterValues(e){const t={};for(const n in e)e[n].values.length&&(t[n]=e[n].values);return t}combineValues(e,t){return e.join(`${t}`)}combineFiltersValues(e,t){let n={};for(const i in e){if(!e[i].length)continue;const s=(0,c.kR)(e[i][0].operator),l=null!=t?t:s,o=e[i][0];if(n[i]={values:[],operator:l},1===e[i].length){var r;const e=this.escapeFieldValue(o.operator,o.value,null!==(r=o.valueLabels)&&void 0!==r?r:[]);n[i]={operator:s,values:[e]},this.options.debug&&console.info("single value filter",{filter:o,filterString:e})}else{const t=this.escapeFieldValues(i,e,l);var a;void 0===n[i].operator?n[i]={operator:l,values:t}:null===(a=n[i].values)||void 0===a||a.push(...t)}}return n}escapeFieldValues(e,t,n){return t[e].map((e=>{var t;return this.escapeFieldValue(n,e.value,null!==(t=e.valueLabels)&&void 0!==t?t:[])}))}escapeFieldValue(e,t,n){const a=(0,s.zE)(t);return this.options.decodeFilters&&(t=(0,l.bu)({value:t,valueLabels:n}).value),t===s.ZO?(this.options.debug&&console.info("empty variable value, do not escape"),t):a?(this.options.debug&&console.info("ESCAPE: user input - exact selector",{operator:e,value:t,result:r.Go.escapeLabelValueInExactSelector((0,s.Dx)(t))}),r.Go.escapeLabelValueInExactSelector((0,s.Dx)(t))):(0,o.SM)(e)?(this.options.debug&&console.info("ESCAPE: regex selector",{operator:e,value:t}),r.Go.escapeLabelValueInRegexSelector(t)):(this.options.debug&&console.info("ESCAPE: exact selector",{operator:e,value:t}),r.Go.escapeLabelValueInExactSelector(t))}buildFilterString(e,t,n,r='"'){if(n===s.ZO)return`${e}${t}${n}`;const a=`${e}${t}${r}${n}${r}`;return this.options.debug&&console.info("buildDoubleQuotedFilter",{filter:{key:e,operator:t,value:n},filterString:a}),a}groupFiltersByKey(e){let t=e.filter((e=>{var t;return!(null===(t=this.options.ignoreKeys)||void 0===t?void 0:t.includes(e.key))||(0,o.SM)(e.operator)}));"indexed"===this.options.filterType&&t.length<1&&(t=e);const n=t.filter((e=>(0,o.BG)(e.operator)&&!(0,o.SM)(e.operator))),r=t.filter((e=>(0,o.BG)(e.operator)&&(0,o.SM)(e.operator))),s=t.filter((e=>(0,o.Lw)(e.operator)&&!(0,o.SM)(e.operator))),l=t.filter((e=>(0,o.Lw)(e.operator)&&(0,o.SM)(e.operator))),c=t.filter((e=>e.operator===a.w7.gt)),u=t.filter((e=>e.operator===a.w7.gte)),d=t.filter((e=>e.operator===a.w7.lt)),p=t.filter((e=>e.operator===a.w7.lte)),g=(0,i.groupBy)(n,(e=>e.key)),h=(0,i.groupBy)(r,(e=>e.key)),v=(0,i.groupBy)(s,(e=>e.key)),m=(0,i.groupBy)(l,(e=>e.key)),f=(0,i.groupBy)(c,(e=>e.key)),b=(0,i.groupBy)(u,(e=>e.key)),y=(0,i.groupBy)(d,(e=>e.key)),S=(0,i.groupBy)(p,(e=>e.key));return{[a.w7.Equal]:g,[a.w7.RegexEqual]:h,[a.w7.NotEqual]:v,[a.w7.RegexNotEqual]:m,[a.w7.gt]:f,[a.w7.gte]:b,[a.w7.lt]:y,[a.w7.lte]:S}}constructor(e,t={joinMatchFilters:!0,decodeFilters:!1,filterType:"field"}){d(this,"filters",void 0),d(this,"options",void 0),d(this,"positiveFilterValueSeparator","or"),d(this,"negativeFilterValueSeparator","|"),this.filters=e,this.options=t,this.options.debug||(this.options.debug=(0,u.Rb)())}}},2718:(e,t,n)=>{n.d(t,{EE:()=>i,NO:()=>s,ir:()=>l});var r=n(8531),a=n(2533);const i=(e,t,n)=>{(0,r.reportInteraction)(((e,t)=>`${a.id.replace(/-/g,"_")}_${e}_${t}`)(e,t),n)},s={service_selection:"service_selection",service_details:"service_details",all:"all"},l={[s.service_selection]:{search_services_changed:"search_services_changed",service_selected:"service_selected",aggregated_metrics_toggled:"aggregated_metrics_toggled",add_to_filters:"add_to_filters"},[s.service_details]:{open_in_explore_clicked:"open_in_explore_clicked",action_view_changed:"action_view_changed",add_to_filters_in_breakdown_clicked:"add_to_filters_in_breakdown_clicked",select_field_in_breakdown_clicked:"select_field_in_breakdown_clicked",level_in_logs_volume_clicked:"level_in_logs_volume_clicked",label_in_panel_summary_clicked:"label_in_panel_summary_clicked",layout_type_changed:"layout_type_changed",search_string_in_logs_changed:"search_string_in_logs_changed",search_string_in_variables_changed:"search_string_in_variables_changed",pattern_removed:"pattern_removed",pattern_selected:"pattern_selected",pattern_field_clicked:"pattern_field_clicked",logs_visualization_toggle:"logs_visualization_toggle",logs_detail_filter_applied:"logs_detail_filter_applied",logs_popover_line_filter:"logs_popover_line_filter",logs_toggle_displayed_field:"logs_toggle_displayed_field",logs_clear_displayed_fields:"logs_clear_displayed_fields",value_breakdown_sort_change:"value_breakdown_sort_change",wasm_not_supported:"wasm_not_supported",change_viz_type:"change_viz_type"},[s.all]:{interval_too_long:"interval_too_long",open_in_explore_menu_clicked:"open_in_explore_menu_clicked"}}},833:(e,t,n)=>{n.d(t,{B:()=>i,n:()=>s});var r=n(3241),a=n.n(r);const i=(e,t)=>{if(typeof e!=typeof t)return!1;const n=new Set(e),r=new Set(t);return n.size===r.size&&a().isEqual(n,r)},s=(e,t)=>typeof e==typeof t&&a().isEqual(e,t)},2854:(e,t,n)=>{n.r(t),n.d(t,{DETECTED_FIELDS_CARDINALITY_NAME:()=>K,DETECTED_FIELDS_NAME_FIELD:()=>Q,DETECTED_FIELDS_PARSER_NAME:()=>q,DETECTED_FIELDS_TYPE_NAME:()=>G,WRAPPED_LOKI_DS_UID:()=>H,WrappedLokiDatasource:()=>U,default:()=>J});var r=n(7781),a=n(8531),i=n(2672),s=n(1269),l=n(9829),o=n(6001),c=n(3143),u=n(2533),d=n(5745),p=n(2344),g=n(8682);function h(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function v(e){for(var t=1;tfunction(e){return e.trim().length>2&&!function(e,t){let n=!1;return p.K3.parse(e).iterate({enter:({type:e})=>{if(e.id===t)return n=!0,!1}}),n}(e,p.Yw)}(e.expr)))}(e))return!1;if(function(e){return e.targets.find((e=>"instant"===e.queryType))}(e))return!1;for(let n=0;ne.replace("}",`, __stream_shard__=~"${b}"}`),S=(e,t)=>{if(void 0===t||0===t.length)return e.map((e=>m(v({},e),{expr:e.expr.replace(`, __stream_shard__=~"${b}"}`,"}")})));let n=t.join("|");return"-1"===n||1===t.length?(n="-1"===n?"":n,e.map((e=>m(v({},e),{expr:e.expr.replace(`, __stream_shard__=~"${b}"}`,`, __stream_shard__="${n}"}`)})))):e.map((e=>m(v({},e),{expr:e.expr.replace(new RegExp(`${b}`,"g"),n)})))};var w=n(2871);function O(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function x(e){for(var t=1;te.nanos[a]?a+1:a:t.values[n]>e.values[a]?a+1:a}function k(e,t,n,r,a,i){const s=function(e,t,n,r){return e.nanos&&n.nanos?void 0!==e.values[t]&&e.values[t]===n.values[r]&&void 0!==e.nanos[t]&&e.nanos[t]===n.nanos[r]:void 0!==e.values[t]&&e.values[t]===n.values[r]}(e,n,r,i);return!!s&&(null==t||null==a||void 0!==t.values[n]&&t.values[n]===a.values[i])}function F(e,t,n){const r=t.filter((t=>t.name===e.name));return 1===r.length?r[0]:t[n]}const P="Summary: total bytes processed";function L(e,t){const n=e.find((e=>e.displayName===P)),r=t.find((e=>e.displayName===P));if(null!=r&&null!=n)return[{value:r.value+n.value,displayName:P,unit:n.unit}];const a=null!=r?r:n;return null!=a?[a]:[]}function j(e){return E(x({},e),{fields:e.fields.map((e=>E(x({},e),{values:e.values})))})}function _(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function T(e){for(var t=1;te.expr)).map((e=>D(T({},e),{expr:y(e.expr)})));return function(e,t,n){let a=!1,i={data:[],state:r.LoadingState.Streaming,key:(0,d.A)()},l=null,o=new Map,c=null;const u=(s,d,p,g)=>{let h=g,v=!1;null!=l&&(l.unsubscribe(),l=null);const m=()=>{i.state=a?r.LoadingState.Error:r.LoadingState.Done,s.next(i),s.complete()};if(a)return void m();const f=()=>{const e=Math.min(d+g,p.length);d{try{if(e&&!function(e){var t,n,r;const a=e.errors?(null!==(n=e.errors[0].message)&&void 0!==n?n:"").toLowerCase():null!==(r=null===(t=e.error)||void 0===t?void 0:t.message)&&void 0!==r?r:"";if(a.includes("timeout"))return!0;if(a.includes("parse error"))throw new Error(a);return!1}(e))return!1}catch(s){var t,n,r,i,l,h;return w.v.error(s,{msg:"sharding retry error",error:null!==(i=null==e||null===(t=e.error)||void 0===t?void 0:t.message)&&void 0!==i?i:"",errors:null!==(l=null==e||null===(n=e.errors)||void 0===n?void 0:n.map((e=>e.message)).join(" | "))&&void 0!==l?l:"",traces:null!==(h=null==e||null===(r=e.traceIds)||void 0===r?void 0:r.join("|"))&&void 0!==h?h:""}),a=!0,!1}if(g>1)return $(`Possible time out, new group size ${g=Math.floor(Math.sqrt(g))}`),v=!0,u(s,d,p,g),!0;var m;const f=null!==(m=o.get(d))&&void 0!==m?m:0;return f>3?(a=!0,!1):(o.set(d,f+1),c=setTimeout((()=>{w.v.info(`Retrying ${d} (${f+1})`),u(s,d,p,g),c=null}),1500*Math.pow(2,f)),v=!0,!0)},y=function(e,t,n){return t===e.length?[-1]:e.slice(t,t+n)}(p,d,g);$(`Querying ${y.join(", ")}`);const O=D(T({},t),{targets:S(n,y)});t.requestId&&(O.requestId=`${t.requestId}_shard_${d}_${g}`),l=e.runQuery(O).subscribe({next:e=>{var t;((null!==(t=e.errors)&&void 0!==t?t:[]).length>0||null!=e.error)&&b(e)||(h=function(e,t,n){return Math.min(t,Math.max(Math.floor(.7*(n-e)),1))}(d+g,function(e,t){var n,r;if(!e.data.length)return t+1;const a=null===(r=e.data[0].meta)||void 0===r||null===(n=r.stats)||void 0===n?void 0:n.find((e=>"Summary: exec time"===e.displayName));if(a){const e=Math.round(a.value);return $(`${a.value}`),e<=1?Math.floor(1.5*t):e<6?Math.ceil(1.1*t):1===t?t:e<20?Math.ceil(.9*t):Math.floor(t/2)}return t}(e,g),p.length),h!==g&&$(`New group size ${h}`),i=function(e,t){if(!e)return E(x({},n=t),{data:n.data.map(j)});var n,a,i;t.data.forEach((t=>{const n=e.data.find((e=>function(e,t){var n,a,i,s,l,o;if(e.refId!==t.refId)return!1;if(null!=e.name&&null!=t.name&&e.name!==t.name)return!1;const c=null===(n=e.meta)||void 0===n?void 0:n.type;if(c!==(null===(a=t.meta)||void 0===a?void 0:a.type))return!1;if(c===r.DataFrameType.TimeSeriesMulti)return function(e,t){const n=e.fields.find((e=>e.type===r.FieldType.number)),a=t.fields.find((e=>e.type===r.FieldType.number));return void 0!==n&&void 0!==a&&(null==e.name&&(e.name=JSON.stringify(n.labels)),null==t.name&&(t.name=JSON.stringify(a.labels)),e.name===t.name)}(e,t);const u=null===(s=e.meta)||void 0===s||null===(i=s.custom)||void 0===i?void 0:i.frameType,d=null===(o=t.meta)||void 0===o||null===(l=o.custom)||void 0===l?void 0:l.frameType;return"LabeledTimeValues"===u&&"LabeledTimeValues"===d||u===d}(e,t)));n?function(e,t){var n,a;const i=e.fields.find((e=>e.type===r.FieldType.time)),s=e.fields.find((e=>e.type===r.FieldType.string&&"id"===e.name)),l=t.fields.find((e=>e.type===r.FieldType.time)),o=t.fields.find((e=>e.type===r.FieldType.string&&"id"===e.name));if(!i||!l)return void w.v.error(new Error("Time fields not found in the data frames"));var c;const u=null!==(c=null==l?void 0:l.values.slice(0))&&void 0!==c?c:[],d=Math.max(e.fields.length,t.fields.length);for(let n=0;n0&&(e.errors=s);const o=null!==(l=e.error)&&void 0!==l?l:t.error;var c,u;null!=o&&(e.error=o);const d=[...null!==(c=e.traceIds)&&void 0!==c?c:[],...null!==(u=t.traceIds)&&void 0!==u?u:[]];return d.length>0&&(e.traceIds=d),e}(i,e))},complete:()=>{v||(i.data.length&&s.next(i),f())},error:e=>{w.v.error(e,{msg:"failed to shard"}),s.next(i),b()||f()}})},h=n=>{l=e.query(t).subscribe({next:e=>{i=e},complete:()=>{n.next(i)},error:e=>{w.v.error(e,{msg:"runNonSplitRequest subscription error"}),n.error(i)}})},v=new s.Observable((r=>{const i=(e=>{const t=(0,g.QH)(e,[p.MD]);return t.length>0?e.substring(t[0].from,t[0].to).replace(`, __stream_shard__=~"${b}"}`,"}"):""})(n[0].expr);return(0,g.T0)(i)?(e.languageProvider.fetchLabelValues("__stream_shard__",{timeRange:t.range,streamSelector:i||void 0}).then((e=>{const t=e.map((e=>parseInt(e,10)));t&&t.length?(t.sort(((e,t)=>t-e)),$(`Querying ${t.join(", ")} shards`),u(r,0,t,function(e){return Math.floor(Math.sqrt(e.length))}(t))):(w.v.warn("Shard splitting not supported. Issuing a regular query."),h(r))})).catch((e=>{w.v.error(e,{msg:"failed to fetch label values for __stream_shard__"}),h(r)})),()=>{a=!0,c&&clearTimeout(c),null!=l&&(l.unsubscribe(),l=null)}):($(`Skipping invalid selector: ${i}`),void r.complete())}));return v}(e,t,n)}const I=Boolean(localStorage.getItem(`${u.id}.sharding_debug_enabled`));function $(e){I&&console.log(e)}var B=n(8831),M=n(7918);function A(e,t,n,r,a,i,s){try{var l=e[i](s),o=l.value}catch(e){return void n(e)}l.done?t(o):Promise.resolve(o).then(r,a)}function R(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var i=e.apply(t,n);function s(e){A(i,r,a,s,l,"next",e)}function l(e){A(i,r,a,s,l,"throw",e)}s(void 0)}))}}function V(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function W(e){for(var t=1;t{var n;if(!(null===(n=e.scopedVars)||void 0===n?void 0:n.__sceneObject))throw new Error("Scene object not found in request");var r=this;(0,a.getDataSourceSrv)().get((0,l.U4)(e.scopedVars.__sceneObject.valueOf())).then(function(){var n=R((function*(n){var i;if(!(n instanceof a.DataSourceWithBackend&&"interpolateString"in n&&"getTimeRangeParams"in n))throw new Error("Invalid datasource!");e.targets=null===(i=e.targets)||void 0===i?void 0:i.map((e=>(e.datasource=n,e)));const s=new Set;if(e.targets.forEach((e=>{var t;s.add(null!==(t=e.resource)&&void 0!==t?t:"")})),1!==s.size)throw new Error("A request cannot contain queries to multiple endpoints");switch(e.targets[0].resource){case"volume":yield r.getVolume(e,n,t);break;case"patterns":yield r.getPatterns(e,n,t);break;case"detected_labels":yield r.getDetectedLabels(e,n,t);break;case"detected_fields":yield r.getDetectedFields(e,n,t);break;case"labels":yield r.getLabels(e,n,t);break;default:r.getData(e,n,t)}}));return function(e){return n.apply(this,arguments)}}())}))}getData(e,t,n){const r=a.config.featureToggles.exploreLogsShardSplitting,i=z(W({},e),{targets:t.interpolateVariablesInQueries(e.targets,e.scopedVars).map((e=>z(W({},e),{resource:void 0,expr:(0,M.VT)(e.expr)})))});return(!1!==f(i)&&r?N(t,i):t.query(i)).subscribe(n),n}getPatterns(e,t,n){var a=this;return R((function*(){const i=e.targets.filter((e=>"patterns"===e.resource));if(1!==i.length)throw new Error("Patterns query can only have a single target!");const{interpolatedTarget:s,expression:l}=a.interpolate(t,i,e);n.next({data:[],state:r.LoadingState.Loading});try{var o;const a=t.getResource("patterns",{query:l,start:e.range.from.utc().toISOString(),end:e.range.to.utc().toISOString(),step:e.interval},{requestId:null!==(o=e.requestId)&&void 0!==o?o:"patterns",headers:{"X-Query-Tags":`Source=${B.s_}`}}),i=yield a,u=null==i?void 0:i.data;let d=-1/0,p=0;var c;const g=null!==(c=null==u?void 0:u.map((e=>{const t=[],n=[];let a=0;return e.samples.forEach((([e,r])=>{t.push(1e3*e),n.push(r),r>d&&(d=r),rd&&(d=r),r{var n,r,a,i;return(null===(r=t.meta)||void 0===r||null===(n=r.custom)||void 0===n?void 0:n.sum)-(null===(i=e.meta)||void 0===i||null===(a=i.custom)||void 0===a?void 0:a.sum)})),n.next({data:g,state:r.LoadingState.Done})}catch(e){n.next({data:[],state:r.LoadingState.Error})}return n}))()}interpolate(e,t,n){const r=e.interpolateVariablesInQueries(t,n.scopedVars);if(!r.length)throw new Error("Datasource failed to interpolate query!");const a=r[0];return{interpolatedTarget:a,expression:(0,M.VT)(a.expr)}}getDetectedLabels(e,t,n){var a=this;return R((function*(){const i=e.targets.filter((e=>"detected_labels"===e.resource));if(1!==i.length)throw new Error("Detected labels query can only have a single target!");let{interpolatedTarget:s,expression:l}=a.interpolate(t,i,e);"{}"===l&&(l=""),n.next({data:[],state:r.LoadingState.Loading});try{var c,u,d;const a=null===(u=(yield t.getResource("detected_labels",{query:l,start:e.range.from.utc().toISOString(),end:e.range.to.utc().toISOString()},{requestId:null!==(d=e.requestId)&&void 0!==d?d:"detected_labels",headers:{"X-Query-Tags":`Source=${B.s_}`}})).detectedLabels)||void 0===u||null===(c=u.filter((e=>!o.rm.includes(e.label))))||void 0===c?void 0:c.sort(((e,t)=>(0,o.p_)(e,t))),i=null==a?void 0:a.map((e=>({name:e.label,values:[e.cardinality]}))),p=(0,r.createDataFrame)({refId:s.refId,fields:null!=i?i:[]});n.next({data:[p],state:r.LoadingState.Done})}catch(e){n.next({data:[],state:r.LoadingState.Error})}return n}))()}getDetectedFields(e,t,n){var a=this;return R((function*(){const i=e.targets.filter((e=>"detected_fields"===e.resource));if(1!==i.length)throw new Error("Detected fields query can only have a single target!");n.next({data:[],state:r.LoadingState.Loading});const{interpolatedTarget:s,expression:l}=a.interpolate(t,i,e);try{var c,u;const a=yield t.getResource("detected_fields",{query:l,start:e.range.from.utc().toISOString(),end:e.range.to.utc().toISOString()},{requestId:null!==(u=e.requestId)&&void 0!==u?u:"detected_fields",headers:{"X-Query-Tags":`Source=${B.s_}`}}),i={name:Q,type:r.FieldType.string,values:[],config:{}},d={name:K,type:r.FieldType.number,values:[],config:{}},p={name:q,type:r.FieldType.string,values:[],config:{}},g={name:G,type:r.FieldType.string,values:[],config:{}};null===(c=a.fields)||void 0===c||c.forEach((e=>{var t;o.$R.includes(e.label)||(i.values.push(e.label),d.values.push(e.cardinality),p.values.push((null===(t=e.parsers)||void 0===t?void 0:t.length)?e.parsers.join(", "):"structuredMetadata"),g.values.push(e.type))}));const h=(0,r.createDataFrame)({refId:s.refId,fields:[i,d,p,g]});n.next({data:[h],state:r.LoadingState.Done})}catch(e){w.v.error(e,{msg:"Detected fields error"}),n.next({data:[],state:r.LoadingState.Error})}return n}))()}getVolume(e,t,n){return R((function*(){if(1!==e.targets.length)throw new Error("Volume query can only have a single target!");const a=e.targets[0],i=a.primaryLabel;if(!i)throw new Error("Primary label is required for volume queries!");const s=t.interpolateVariablesInQueries([a],e.scopedVars),l=(0,M.VT)(s[0].expr.replace(".*.*",".+"));n.next({data:[],state:r.LoadingState.Loading});try{var o,u,d;const a=yield t.getResource("index/volume",{query:l,start:e.range.from.utc().toISOString(),end:e.range.to.utc().toISOString(),limit:5e3},{requestId:null!==(d=e.requestId)&&void 0!==d?d:"volume",headers:{"X-Query-Tags":`Source=${B.s_}`}});null==a||a.data.result.sort(((e,t)=>{const n=e.value[1],r=t.value[1];return Number(r)-Number(n)}));const s=(0,r.createDataFrame)({fields:[{name:c.OX,values:null==a||null===(o=a.data.result)||void 0===o?void 0:o.map((e=>e.metric[i]))},{name:"volume",values:null==a||null===(u=a.data.result)||void 0===u?void 0:u.map((e=>Number(e.value[1])))}]});n.next({data:[s]})}catch(e){w.v.error(e),n.next({data:[],state:r.LoadingState.Error})}return n.complete(),n}))()}getLabels(e,t,n){return R((function*(){if(1!==e.targets.length)throw new Error("Volume query can only have a single target!");try{var a;const i=yield t.getResource("labels",{start:e.range.from.utc().toISOString(),end:e.range.to.utc().toISOString()},{requestId:null!==(a=e.requestId)&&void 0!==a?a:"labels",headers:{"X-Query-Tags":`Source=${B.s_}`}}),s=(0,r.createDataFrame)({fields:[{name:"labels",values:null==i?void 0:i.data}]});n.next({data:[s],state:r.LoadingState.Done})}catch(e){n.next({data:[],state:r.LoadingState.Error})}return n.complete(),n}))()}testDatasource(){return Promise.resolve({status:"success",message:"Data source is working",title:"Success"})}constructor(e,t){super(e,t)}}const J=function(){i.Go.registerRuntimeDataSource({dataSource:new U("wrapped-loki-ds",H)})}},1293:(e,t,n)=>{n.d(t,{O:()=>o,m:()=>l});var r=n(3143),a=n(7097),i=n(4750),s=n(2871);function l(e,t,n=!0){const s=(0,i.ir)(e);let l="";n&&t===r.e4&&(l=`| ${r.e4} != ""`);const o=s.state.filters,c=(0,a.k$)(s);if(o.length){if("mixed"===c)return`sum(count_over_time({${r.S1}} ${l} ${r.S6} ${r.sC} ${r.rl} ${r.YN} ${r.Oc} [$__auto])) by (${t})`;if("json"===c)return`sum(count_over_time({${r.S1}} ${l} ${r.S6} ${r.sC} ${r.rl} ${r.VL} ${r.Oc} [$__auto])) by (${t})`;if("logfmt"===c)return`sum(count_over_time({${r.S1}} ${l} ${r.S6} ${r.sC} ${r.rl} ${r.mF} ${r.Oc} [$__auto])) by (${t})`}return`sum(count_over_time({${r.S1}} ${l} ${r.S6} ${r.sC} ${r.rl} ${r.Oc} [$__auto])) by (${t})`}function o(e){switch(e){case r._Y:return r.Sy;case r.sL:return r.fJ;default:const t=new Error(`Unknown variable type: ${e}`);throw s.v.error(t,{variableType:e,msg:`getFieldsTagValuesExpression: Unknown variable type: ${e}`}),t}}},9055:(e,t,n)=>{n.d(t,{_J:()=>u,wy:()=>d});var r=n(2672),a=n(8538),i=n(866),s=n(1105),l=n(4750),o=n(227);function c(e){const t=r.jh.getAncestor(e,a.P);r.jh.findAllObjects(t,(e=>e instanceof i.p)).forEach((e=>e.forceRender())),r.jh.findDescendents(t,s.y).forEach((e=>e.forceRender()))}function u(e,t,n){const r=(0,l.S9)(n).getValue();(0,o.OB)(r,e,t),c(n)}function d(e,t,n){const r=(0,l.S9)(n).getValue();(0,o.cC)(r,e,t),c(n)}},7097:(e,t,n)=>{n.d(t,{JI:()=>E,Jl:()=>k,OE:()=>O,Qg:()=>y,Ri:()=>S,Zp:()=>w,k$:()=>x,ph:()=>C});var r=n(7781),a=n(2007),i=n(2672),s=n(558),l=n(3143),o=n(5183),c=n(1269),u=n(2254),d=n(4750),p=n(2871),g=n(7085),h=n(581),v=n(7232);const m=e=>{if(e&&Object.values(r.ReducerID).includes(e))return e};function f(e){switch(e){case"json":return"json";case"logfmt":return"logfmt";case"":case"structuredMetadata":return"structuredMetadata";default:return"mixed"}}function b(e){switch(e){case"int":case"float":case"duration":case"boolean":case"bytes":return e;default:return"string"}}function y(e){var t;const n=new Set(null!==(t=null==e?void 0:e.map((e=>e.toString())))&&void 0!==t?t:[]);n.delete("structuredMetadata");const r=Array.from(n);return 1===r.length?f(r[0]):0===n.size?"structuredMetadata":"mixed"}function S(e,t){var n;const r=(0,u.rD)(t),a=null==r?void 0:r.fields[2],i=null==r?void 0:r.fields[0],s=null==i?void 0:i.values.indexOf(e);var l;const o=void 0!==s&&-1!==s?f(null!==(l=null==a||null===(n=a.values)||void 0===n?void 0:n[s])&&void 0!==l?l:""):void 0;return void 0===o?(p.v.warn("missing parser, using mixed format for",{fieldName:e}),"mixed"):o}function w(e,t,n,r,u){return(d,p)=>{const h=m(r.state.sortBy),v=i.d0.timeseries().setOption("legend",{showLegend:!1}).setCustomFieldConfig("fillOpacity",9).setTitle(e(d)).setData(new i.Es({transformations:[()=>function(e){return t=>t.pipe((0,c.map)((()=>[e])))}(d)]})).setOverrides(o.jC).setMenu(new g.GD({investigationOptions:{frame:d,fieldName:e(d),labelName:u}})).setHeaderActions([new s.oR({frame:d,variableName:n,hideExclude:u===l.e4})]);return t===a.DrawStyle.Bars&&v.setCustomFieldConfig("stacking",{mode:a.StackingMode.Normal}).setCustomFieldConfig("fillOpacity",100).setCustomFieldConfig("lineWidth",0).setCustomFieldConfig("pointSize",0).setOverrides(o.jC).setCustomFieldConfig("drawStyle",a.DrawStyle.Bars),h&&(v.setOption("legend",{showLegend:!0,calcs:[h]}),v.setDisplayName(" ")),new i.xK({body:v.build()})}}function O(e,t,n){const r=e?(0,h.E)(t,e):v.H.Parsed;if(r)return function(e,t){switch(e){case v.H.Indexed:return l.MB;case v.H.Parsed:return l.mB;case v.H.StructuredMetadata:return t===l.e4?l._Y:l._P;default:{const n=new Error(`Invalid label type for ${t}`);throw p.v.error(n,{type:e,msg:`Invalid label type for ${t}`}),n}}}(r,t);const a=S(t,n);return"structuredMetadata"===a?l._P:(p.v.warn("unable to determine label variable, falling back to parsed field",{key:t,parserForThisField:null!=a?a:""}),l.mB)}function x(e){return y(e.state.filters.map((e=>(0,d.bu)(e).parser)))}function E(e){return"duration"===e||"bytes"===e||"float"===e}function C(e,t){var n;const r=null==t?void 0:t.fields[0],a=null==t?void 0:t.fields[3],i=null==r?void 0:r.values.indexOf(e);return void 0!==i&&-1!==i?b(null==a||null===(n=a.values)||void 0===n?void 0:n[i]):void 0}function k(e,t,n){var r,a;const i=null==n?void 0:n.fields[2],s=null==n?void 0:n.fields[0],l=null==n?void 0:n.fields[3],o=null==s?void 0:s.values.indexOf(e),c=void 0!==o&&-1!==o?f(null==i||null===(r=i.values)||void 0===r?void 0:r[o]):"mixed",u=void 0!==o&&-1!==o?b(null==l||null===(a=l.values)||void 0===a?void 0:a[o]):void 0,p=t.state.filters.map((e=>{var t;const n=null==s?void 0:s.values.indexOf(e.key),r=(0,d.bu)(e);if(r.parser)return r.parser;var a;const l=void 0!==n&&-1!==n?f(null!==(a=null==i||null===(t=i.values)||void 0===t?void 0:t[n])&&void 0!==a?a:"mixed"):void 0;return null!=l?l:"mixed"}));let g="",h="";return"structuredMetadata"===c?h=`| ${e}!=""`:g=`| ${e}!=""`,function(e,t){return t.fieldType&&["bytes","duration"].includes(t.fieldType)?`avg_over_time(${(0,d.DX)(t)} | unwrap `+t.fieldType+`(${e}) | __error__="" [$__auto]) by ()`:t.fieldType&&"float"===t.fieldType?`avg_over_time(${(0,d.DX)(t)} | unwrap `+e+' | __error__="" [$__auto]) by ()':`sum by (${e}) (count_over_time(${(0,d.DX)(t)} [$__auto]))`}(e,{structuredMetadataToAdd:h,fieldExpressionToAdd:g,parser:y([...p,c]),fieldType:u})}},6001:(e,t,n)=>{n.d(t,{$R:()=>s,OH:()=>c,dD:()=>i,p_:()=>a,rd:()=>o,rm:()=>l});var r=n(3143);function a(e,t){return 1===e.cardinality?1:1===t.cardinality?-1:e.cardinality-t.cardinality}function i(e){const t=[...e];e.includes(r.e4)||t.unshift(r.e4);const n=t.map((e=>({label:e,value:String(e)})));return[{label:"All",value:r.To},...n]}const s=["level_extracted",r.e4,"level"],l=["__aggregated_metric__","__stream_shard__"];function o(e){const t=[...e].map((e=>({label:e,value:String(e)})));return[{label:"All",value:r.To},...t]}function c(e){var t;return((0,r.zE)(e.value)?(0,r.Dx)(e.value):e.value)===(null===(t=e.valueLabels)||void 0===t?void 0:t[0])}},4119:(e,t,n)=>{n.d(t,{CP:()=>f,R7:()=>h,_t:()=>m,de:()=>p,di:()=>u,ec:()=>v,oj:()=>d,zr:()=>g});var r=n(3143),a=n(7097),i=n(7918),s=n(4750),l=n(558),o=n(5111),c=n(1383);const u="repeat(auto-fit, minmax(400px, 1fr))";function d(e,t,n){let l="",o="";const c=(0,s.ir)(e),u=(0,a.k$)(c);return n&&n!==r.e4?l=` ,${n} != ""`:n&&n===r.e4&&(o=` | ${n} != ""`),(0,i.l)(`sum(count_over_time(${(0,s.DX)({labelExpressionToAdd:l,structuredMetadataToAdd:o,parser:u})} [$__auto])) by (${t})`,{legendFormat:`{{${t}}}`,refId:"LABEL_BREAKDOWN_VALUES"})}function p(e){return e.map((e=>(0,c.H7)(e))).flatMap((e=>e?[e]:[]))}function g(e,t,n){const i=(0,s.YS)(n),c=0===i.state.filters.length,u="structuredMetadata"===(0,a.Ri)(e,n),d=i.state.filters.find((e=>u?(0,o.BG)(e.operator)&&e.value===t:(0,o.BG)(e.operator)&&(0,s.bu)(e).value===t));return c||!d?((0,l.Qt)(e,t,"include",n,u?r._P:r.mB),"include"):((0,l.Qt)(e,t,"toggle",n,u?r._P:r.mB),"toggle")}function h(e,t,n){const a=(0,s.cR)(n),i=0===a.state.filters.length,c=a.state.filters.find((e=>e.value===t&&(0,o.BG)(e.operator)));return i||!c?((0,l.Qt)(e,t,"include",n,r.MB),"include"):((0,l.Qt)(e,t,"toggle",n,r.MB),"toggle")}function v(e,t,n){return b(e,t,(0,s.cR)(n))}function m(e,t,n){return b(e,t,(0,s.ir)(n))}function f(e,t,n){return b(e,t,(0,s.oY)(n))}function b(e,t,n){const a=n.state.filters.filter((t=>t.key===e&&(0,o.BG)(t.operator))).map((e=>n.state.name===r.mB?(0,s.bu)(e).value:e.value)),i=n.state.filters.filter((t=>t.key===e&&(0,o.Lw)(t.operator))).map((e=>n.state.name===r.mB?(0,s.bu)(e).value:e.value));return t.filter((e=>!i.includes(e)&&(0===a.length||a.includes(e))))}},1383:(e,t,n)=>{n.d(t,{Ex:()=>d,H7:()=>u,PE:()=>g,pC:()=>o,vX:()=>c});var r=n(2007),a=n(3143),i=n(558),s=n(4750),l=n(5111);function o(e,t,n,a){if(n===r.SeriesVisibilityChangeMode.ToggleSelection){const n=null!=t?t:[];return 1===n.length&&n.includes(e)?[]:[e]}let i=(null==t?void 0:t.length)?t:a;return i.includes(e)?i.filter((t=>t!==e)):[...i,e]}function c(e){return e.map((e=>{var t;return null!==(t=u(e))&&void 0!==t?t:"logs"}))}function u(e){var t;const n=null===(t=e.fields[1])||void 0===t?void 0:t.labels;if(!n)return null;const r=Object.keys(n);return 0===r.length?null:n[r[0]]}function d(e,t){const n=(0,s.iw)(t),r=n.state.filters.filter((e=>(0,l.BG)(e.operator))).map((e=>e.value.split("|").map(p))).join("|"),a=n.state.filters.filter((e=>(0,l.Lw)(e.operator))).map((e=>e.value.split("|").map(p))).join("|");return e.filter((e=>!a.includes(e)&&(0===r.length||r.includes(e))))}function p(e){return'""'===e?"logs":e}function g(e,t){const n=(0,s.iw)(t),r=0===n.state.filters.length,o=n.state.filters.find((t=>t.value===e&&(0,l.BG)(t.operator)));return"logs"===e&&(e='""'),r||!o?((0,i.Qt)(a.e4,e,"include",t,a._Y),"include"):((0,i.Qt)(a.e4,e,"toggle",t,a._Y),"toggle")}},9186:(e,t,n)=>{n.d(t,{Il:()=>g,Os:()=>d,bz:()=>c,fF:()=>p,hy:()=>f,po:()=>h,y2:()=>b,z5:()=>v});var r=n(7781);function a(e,t,n){const r=e.getFieldByName(t);if(void 0!==r)return r.type===n?r:void 0}const i="timestamp",s="body",l="severity",o="id",c="labels";function u(e){const t={};return Object.entries(e).forEach((([e,n])=>{t[e]="string"==typeof n?n:JSON.stringify(n)})),t}function d(e){var t;return(null===(t=e.meta)||void 0===t?void 0:t.type)===r.DataFrameType.LogLines?function(e){const t=new r.FieldCache(e),n=a(t,i,r.FieldType.time),d=a(t,s,r.FieldType.string);if(void 0===n||void 0===d)return null;var p;const g=null!==(p=a(t,l,r.FieldType.string))&&void 0!==p?p:null;var h;const v=null!==(h=a(t,o,r.FieldType.string))&&void 0!==h?h:null;var m;const f=null!==(m=a(t,c,r.FieldType.other))&&void 0!==m?m:null,b=null===f?null:f.values,y=t.fields.filter(((e,t)=>t!==n.index&&t!==d.index&&t!==(null==g?void 0:g.index)&&t!==(null==v?void 0:v.index)&&t!==(null==f?void 0:f.index)));return{raw:e,timeField:n,bodyField:d,severityField:g,idField:v,getLogFrameLabels:()=>b,timeNanosecondField:null,getLogFrameLabelsAsLabels:()=>null!==b?b.map(u):null,getLabelFieldName:()=>null!==f?f.name:null,extraFields:y}}(e):function(e){const t=new r.FieldCache(e),n=t.getFirstFieldOfType(r.FieldType.time),a=t.getFirstFieldOfType(r.FieldType.string);if(void 0===n||void 0===a)return null;var i;const s=null!==(i=t.getFieldByName("tsNs"))&&void 0!==i?i:null;var l;const o=null!==(l=t.getFieldByName("level"))&&void 0!==l?l:null;var c;const d=null!==(c=t.getFieldByName("id"))&&void 0!==c?c:null,[p,g]=function(e,t,n){const a=e.getFieldByName("labels");if(void 0!==a&&a.type===r.FieldType.other){const e=a.values.map(u);return[a,()=>e]}return[null,()=>function(e,t){const n=e.labels;if(void 0!==n){const e=new Array(t);return e.fill(n),e}return null}(t,n.length)]}(t,a,e),h=t.fields.filter(((e,t)=>t!==n.index&&t!==a.index&&t!==(null==s?void 0:s.index)&&t!==(null==o?void 0:o.index)&&t!==(null==d?void 0:d.index)&&t!==(null==p?void 0:p.index)));return{timeField:n,bodyField:a,timeNanosecondField:s,severityField:o,idField:d,getLogFrameLabels:g,getLogFrameLabelsAsLabels:g,getLabelFieldName:()=>{var e;return null!==(e=null==p?void 0:p.name)&&void 0!==e?e:null},extraFields:h,raw:e}}(e)}function p(e){var t;return null!==(t=null==e?void 0:e.timeField.name)&&void 0!==t?t:i}function g(e){var t;return null!==(t=null==e?void 0:e.bodyField.name)&&void 0!==t?t:s}function h(e){var t,n;return null!==(n=null==e||null===(t=e.idField)||void 0===t?void 0:t.name)&&void 0!==n?n:o}function v(e){var t;let n=0,a=0;const i=null===(t=e[0])||void 0===t?void 0:t.fields.find((e=>e.type===r.FieldType.time));if(i){const e=[...i.values].sort(),t=e[0]{let r;function a(){r||(r=new i)}n.d(t,{JO:()=>s,rX:()=>a});class i{getServiceSceneState(){return this.serviceSceneState}setPatternsCount(e){this.serviceSceneState||(this.serviceSceneState={}),this.serviceSceneState.patternsCount=e}setLabelsCount(e){this.serviceSceneState||(this.serviceSceneState={}),this.serviceSceneState.labelsCount=e}setFieldsCount(e){this.serviceSceneState||(this.serviceSceneState={}),this.serviceSceneState.fieldsCount=e}setServiceSceneState(e){this.serviceSceneState={patternsCount:e.patternsCount,labelsCount:e.labelsCount,fieldsCount:e.fieldsCount,loading:e.loading,logsCount:e.logsCount,totalLogsCount:e.totalLogsCount}}constructor(){var e,t;t=void 0,(e="serviceSceneState")in this?Object.defineProperty(this,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):this[e]=t}}function s(){return r}},8835:(e,t,n)=>{n.d(t,{FB:()=>v,Ns:()=>O,Vt:()=>y,ad:()=>S,bN:()=>w,fg:()=>m,k9:()=>f,rs:()=>b});var r=n(8538),a=n(3143),i=n(6949),s=n(8531),l=n(892),o=n(2672),c=n(7781),u=n(7608),d=n(8831);function p(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}let g;function h(e,t){return c.urlUtil.renderUrl(e,function(e){return function(e){for(var t=1;t(l.tm.includes(t)&&(e[t]=n),e)),{}),e)}(t))}function v(e,t,n){var s,c;const p=o.jh.getAncestor(n,r.P),g=null===(s=p.state.routeMatch)||void 0===s?void 0:s.params.labelName,v=null===(c=p.state.routeMatch)||void 0===c?void 0:c.params.labelValue;if(g&&v){let r=function(e,t,n,r="service"){return e===a.To&&t===l._J.label?(0,d._F)(`${l.G3.explore}/${r}/${(0,u.uu)(n)}/${l.G3.labels}`):e===a.To&&t===l._J.field?(0,d._F)(`${l.G3.explore}/${r}/${(0,u.uu)(n)}/${l.G3.fields}`):(0,d._F)(`${l.G3.explore}/${r}/${(0,u.uu)(n)}/${t}/${(0,u.uu)(e)}`)}(t,e,v,g);const s=h(r);return n&&(0,i.JO)().setServiceSceneState(n.state),s}return""}function m(e,t,n){const r=v(e,t,n);r&&S(r)}function f(e,t,n){return h(l.bw.logs(t,e),n)}function b(e,t,n){var a,i;const s=o.jh.getAncestor(t,r.P),c=null===(a=s.state.routeMatch)||void 0===a?void 0:a.params.labelValue,p=null===(i=s.state.routeMatch)||void 0===i?void 0:i.params.labelName;return c?h((0,d._F)(`${l.G3.explore}/${p}/${(0,u.uu)(c)}/${e}`),n):""}function y(e,t,n){const r=b(e,t,n);r&&(t&&(0,i.JO)().setServiceSceneState(t.state),S(r))}function S(e){g=e,s.locationService.push(e)}function w(){const e=s.locationService.getLocation();s.locationService.push(e.pathname+e.search)}function O(){const e=s.locationService.getLocation(),t=(0,l.qe)(l.bw.explore()),n=e.pathname+e.search,r=s.locationService.getSearch();t===n||n.includes(t)||(r.get("var-filters")?S(t):(g&&s.locationService.replace(g),s.locationService.push(t)))}},5183:(e,t,n)=>{n.d(t,{rS:()=>j,FH:()=>L,HF:()=>_,jC:()=>S,ZC:()=>w,Nr:()=>k,dO:()=>C,C6:()=>E});var r=n(7781),a=n(2672),i=n(1269),s=n(3321),l=n(2854);class o extends a.dt{runQueries(){const e=a.jh.getTimeRange(this);this.runWithTimeRange(e)}constructor(e){super(e)}}var c=n(2007),u=n(1383),d=n(581),p=n(2254),g=n(9254),h=n(4119),v=n(7097);function m(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function f(e){for(var t=1;te.pipe((0,i.map)((e=>e.map(((t,n)=>b(f({},t),{fields:t.fields.map(((n,a)=>{if(n.type===r.FieldType.time)return n;const i=(0,r.getFieldDisplayName)(n,t,e);return b(f({},n),{config:b(f({},n.config),{displayName:i,color:{mode:r.FieldColorModeId.PaletteClassicByName}})})}))}))))))}function P(){return e=>e.pipe((0,i.map)((e=>e.map((e=>(e.fields.length<2||e.fields[1].config.displayNameFromDS||(e.fields[1].config.displayNameFromDS=y),e))).sort(((e,t)=>{if(e.fields.length<2||t.fields.length<2)return 0;const n=e.fields[1].config.displayNameFromDS,r=(null==n?void 0:n.includes("error"))?4:(null==n?void 0:n.includes("warn"))?3:(null==n?void 0:n.includes("info"))?2:1,a=t.fields[1].config.displayNameFromDS;return r-((null==a?void 0:a.includes("error"))?4:(null==a?void 0:a.includes("warn"))?3:(null==a?void 0:a.includes("info"))?2:1)})))))}function L(e){return new o({datasource:{uid:l.WRAPPED_LOKI_DS_UID},queries:e})}function j(e,t){const n=e.find((e=>{var t;return null===(t=e.legendFormat)||void 0===t?void 0:t.toLowerCase().includes("level")})),r=e.find((e=>e.refId===p.DS||e.refId===p.AA));return n?new a.Es({$data:_(f({datasource:{uid:l.WRAPPED_LOKI_DS_UID},queries:e},t)),transformations:[P]}):r?(e=e.map((e=>b(f({},e),{get direction(){return((0,g.PY)()||(0,g.zQ)())===s.uH.Descending?d.t.Backward:d.t.Forward}}))),_(f({datasource:{uid:l.WRAPPED_LOKI_DS_UID},queries:e},t))):new a.Es({$data:_(f({datasource:{uid:l.WRAPPED_LOKI_DS_UID},queries:e},t)),transformations:[F]})}function _(e){return new a.dt(f({datasource:{uid:l.WRAPPED_LOKI_DS_UID},queries:[]},e))}},8831:(e,t,n)=>{n.d(t,{Gy:()=>a,_F:()=>i,s_:()=>r});const r=n(2533).id,a=`/a/${r}`;function i(e){return`${a}/${e}`}},7918:(e,t,n)=>{n.d(t,{$k:()=>v,BM:()=>p,CY:()=>O,E3:()=>S,PP:()=>b,VT:()=>C,VW:()=>m,ZX:()=>w,_q:()=>y,by:()=>k,c0:()=>f,l:()=>g,sT:()=>E,vC:()=>x});var r=n(3143),a=n(8831),i=n(2672),s=n(4793),l=n(5664),o=n(7063);function c(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function u(e){for(var t=1;td(u(d(u({},h),{resource:t,refId:t}),n),{datasource:{uid:r.gR},expr:e,primaryLabel:a}),g=(e,t)=>d(u({},h,t),{expr:e}),h={refId:"A",queryType:"range",editorMode:"code",supportingQueryType:a.s_},v=(e,t,n,r)=>p(e,t,u({},r),n);function m(e,t){return new o.K(e).getLabelsExpr({ignoreKeys:t})}function f(e){var t,n,a;return e.value?{value:(0,r.OQ)(e.value),valueLabels:[null!==(t=e.label)&&void 0!==t?t:e.value]}:{value:e.value,valueLabels:[null!==(a=null!==(n=e.label)&&void 0!==n?n:e.value)&&void 0!==a?a:""]}}function b(e,t){var n,a,i;const s={value:null!==(a=e.value)&&void 0!==a?a:"",parser:null!==(i=null==t||null===(n=t.meta)||void 0===n?void 0:n.parser)&&void 0!==i?i:"mixed"};var l,o;return"structuredMetadata"===s.parser?{value:(0,r.OQ)(s.value),valueLabels:[null!==(l=e.label)&&void 0!==l?l:s.value]}:{value:(0,r.OQ)(JSON.stringify(s)),valueLabels:[null!==(o=e.label)&&void 0!==o?o:s.value]}}function y(e,t){return new o.K(e).getLevelsExpr({ignoreKeys:t})}function S(e,t){return new o.K(e).getMetadataExpr({ignoreKeys:t})}function w(e,t){return new o.K(e).getFieldsExpr({ignoreKeys:t})}function O(e){return(0,l.F)(e),e.map((e=>{if(""===e.value)return"";const t=function(e){return e.operator!==s.cK.match&&e.operator!==s.cK.negativeMatch||e.key!==s.ld.caseInsensitive?i.Go.escapeLabelValueInExactSelector(e.value):i.Go.escapeLabelValueInRegexSelector(e.value)}(e);return function(e,t){return e.key===s.ld.caseInsensitive?e.operator===s.cK.negativeRegex||e.operator===s.cK.negativeMatch?`${s.cK.negativeRegex} "(?i)${t}"`:`${s.cK.regex} "(?i)${t}"`:`${e.operator} "${t}"`}(e,t)})).join(" ")}function x(e){return".+"===e?e:"(?i).*"!==e.substring(0,6)?`(?i).*${e}.*`:e}function E(e){return"(?i).*"===e.substring(0,6)&&".*"===e.slice(-2)?e.slice(6).slice(0,-2):e}function C(e){return e.replace(/\s*,\s*}/,"}")}const k=1e3},892:(e,t,n)=>{n.d(t,{FT:()=>y,G3:()=>d,HU:()=>v,KL:()=>m,NX:()=>E,W6:()=>S,XJ:()=>x,Zt:()=>f,_J:()=>p,bw:()=>g,er:()=>w,mC:()=>h,qe:()=>O,tm:()=>b});var r=n(7781),a=n(3143),i=n(8531),s=n(7608),l=n(4750),o=n(2871),c=n(8831);function u(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var d=function(e){return e.explore="explore",e.logs="logs",e.labels="labels",e.patterns="patterns",e.fields="fields",e}({}),p=function(e){return e.field="field",e.label="label",e}({});const g={explore:()=>(0,c._F)("explore"),logs:(e,t="service")=>(0,c._F)(`explore/${t}/${(0,s.uu)(e)}/logs`),fields:(e,t="service")=>(0,c._F)(`explore/${t}/${(0,s.uu)(e)}/fields`),patterns:(e,t="service")=>(0,c._F)(`explore/${t}/${(0,s.uu)(e)}/patterns`),labels:(e,t="service")=>(0,c._F)(`explore/${t}/${(0,s.uu)(e)}/labels`)},h={label:(e,t="service",n)=>(0,c._F)(`explore/${t}/${(0,s.uu)(e)}/label/${n}`),field:(e,t="service",n)=>(0,c._F)(`explore/${t}/${(0,s.uu)(e)}/field/${n}`)},v={explore:(0,c._F)("explore"),logs:(0,c._F)("explore/:labelName/:labelValue/logs"),fields:(0,c._F)("explore/:labelName/:labelValue/fields"),patterns:(0,c._F)("explore/:labelName/:labelValue/patterns"),labels:(0,c._F)("explore/:labelName/:labelValue/labels")},m={field:(0,c._F)("explore/:labelName/:labelValue/field/:breakdownLabel"),label:(0,c._F)("explore/:labelName/:labelValue/label/:breakdownLabel")},f=["from","to",`var-${a.EY}`,`var-${a.MB}`],b=["from","to","mode","urlColumns","visualizationType","selectedLine","displayedFields","panelState",a.uw,`var-${a.uw}`,`var-${a.EY}`,`var-${a.MB}`,`var-${a.mB}`,`var-${a._Y}`,`var-${a.LI}`,`var-${a.Jg}`,`var-${a.EY}`,`var-${a.WM}`,`var-${a._P}`,`var-${a.NW}`];function y(){const e=i.locationService.getLocation();return e.pathname.slice(e.pathname.lastIndexOf("/")+1,e.pathname.length)}function S(){const e=i.locationService.getLocation(),t=e.pathname.slice(e.pathname.indexOf("/a/grafana-lokiexplore-app/explore")+34+1).split("/");let n=t[0];const r=t[1],s=t[3];return n===a.OX&&(n=a.ky),{labelName:n,labelValue:r,breakdownLabel:s}}function w(){const e=i.locationService.getLocation().pathname.split("/");return e[e.length-2]}function O(e,t){return r.urlUtil.renderUrl(e,function(e){return function(e){for(var t=1;t(f.includes(t)&&(e[t]=n),e)),{}),e)}(t))}function x(e){return{labelName:e.params.labelName,labelValue:e.params.labelValue,breakdownLabel:e.params.breakdownLabel}}function E(e){const t=(0,l.cR)(e);let{labelName:n,labelValue:r}=S();if(n===a.ky&&(n=a.OX),!t.state.filters.find((e=>e.key===n))){const e=i.locationService.getLocation();o.v.info("invalid primary label name in url",{labelName:n,url:`${e.pathname}${e.search}`})}if(!t.state.filters.find((e=>(0,s.uu)(e.value)===r))){const e=i.locationService.getLocation();o.v.info("invalid primary label value in url",{labelValue:r,url:`${e.pathname}${e.search}`})}}},9829:(e,t,n)=>{n.d(t,{Mq:()=>p,Ti:()=>c,U4:()=>u,UX:()=>m,hJ:()=>g,m0:()=>f,oh:()=>v,u9:()=>d}),n(7781);var r=n(8531),a=n(2672),i=n(3143),s=(n(892),n(8538)),l=n(2871);function o(e,t,n,r,a,i,s){try{var l=e[i](s),o=l.value}catch(e){return void n(e)}l.done?t(o):Promise.resolve(o).then(r,a)}function c(e){return a.jh.getAncestor(e,s.P)}function u(e){return a.jh.interpolate(e,i.gR)}function d(e){return a.jh.interpolate(e,i.SA).replace(/\s+/g," ")}function p(e){return a.jh.interpolate(e,i.FX).replace(/\s+/g," ")}function g(e){return h.apply(this,arguments)}function h(){var e;return e=function*(e){return yield(0,r.getDataSourceSrv)().get(i.gR,{__sceneObject:{value:e}})},h=function(){var t=this,n=arguments;return new Promise((function(r,a){var i=e.apply(t,n);function s(e){o(i,r,a,s,l,"next",e)}function l(e){o(i,r,a,s,l,"throw",e)}s(void 0)}))},h.apply(this,arguments)}function v(e){return a.jh.findDescendents(e,a.dt)}function m(e,t,n){const r=a.jh.findObject(e,t);return r instanceof n?r:(null!==r&&l.v.warn(`invalid return type: ${n.toString()}`),null)}function f(e){var t;return null===(t=e.state.controls)||void 0===t?void 0:t.find((e=>e instanceof a.KE))}},4932:(e,t,n)=>{n.d(t,{E:()=>l,X:()=>s});var r=n(7928),a=n(3241);const i=new r.A({intraMode:1,intraIns:1,intraSub:1,intraTrn:1,intraDel:1});function s(e,t,n){const[a,s,l]=i.search(e,t,0,1e5);let o=[],c=new Set;if(a&&l){const t=(e,t)=>{t&&c.add(e)};for(let n=0;n{n.r(t),n.d(t,{DEFAULT_SORT_BY:()=>u,calculateDataFrameChangepoints:()=>p,calculateOutlierValue:()=>m,sortSeries:()=>d,sortSeriesByName:()=>g,wasmSupported:()=>f});var r=n(1854),a=n(6944),i=n(7781),s=n(1383),l=n(3241),o=n(2718),c=n(2871);const u="changepoint",d=(0,l.memoize)(((e,t,n)=>{if("alphabetical"===t)return g(e,n);"outliers"===t&&h(e);const r=n=>{var r;try{if("changepoint"===t)return p(n);if("outliers"===t)return m(e,n)}catch(e){c.v.error(e,{msg:"failed to sort"}),t=i.ReducerID.stdDev}const a=i.fieldReducers.get(t);var s,l;return null!==(l=(null!==(s=null===(r=a.reduce)||void 0===r?void 0:r.call(a,n.fields[1],!0,!0))&&void 0!==s?s:(0,i.doStandardCalcs)(n.fields[1],!0,!0))[t])&&void 0!==l?l:0},a=e.map((e=>({value:r(e),dataFrame:e})));return a.sort(((e,t)=>void 0!==e.value&&void 0!==t.value?t.value-e.value:0)),"asc"===n&&a.reverse(),a.map((({dataFrame:e})=>e))}),((e,t,n)=>{const r=e.length>0?e[0].fields[0].values[0]:0,a=e.length>0?e[e.length-1].fields[0].values[e[e.length-1].fields[0].values.length-1]:0,i=e.length>0?(0,s.H7)(e[0]):"",l=e.length>0?(0,s.H7)(e[e.length-1]):"",o=e.map((e=>e.length+"_"+e.fields.map((e=>e.name+"_"+e.values[0]+"_"+e.values[e.values.length-1]))));return`${i}_${l}_${r}_${a}_${e.length}_${o}_${t}_${n}`})),p=e=>{if(!f())throw new Error("WASM not supported, fall back to stdDev");const t=e.fields.filter((e=>e.type===i.FieldType.number)),n=t[0].values.length;let a=Math.floor(n/100)||1;a>1&&(a=Math.ceil(a/2));const s=t[0].values.filter(((e,t)=>t%a==0)),l=new Float64Array(s);return r.ChangepointDetector.defaultArgpcp().detectChangepoints(l).indices.length},g=(e,t)=>{const n=[...e];return n.sort(((e,t)=>{const n=(0,s.H7)(e),r=(0,s.H7)(t);return n&&r&&null!==(a=null==n?void 0:n.localeCompare(r))&&void 0!==a?a:0;var a})),"desc"===t&&n.reverse(),n},h=e=>{if(!f())return;const t=(0,i.outerJoinDataFrames)({frames:e});if(!t)return;const n=t.fields.filter((e=>e.type===i.FieldType.number)).flatMap((e=>new Float64Array(e.values)));try{const e=a.OutlierDetector.dbscan({sensitivity:.4}).preprocess(n);v=e.detect()}catch(e){c.v.error(e,{msg:"initOutlierDetector: OutlierDetector error"})}};let v;const m=(e,t)=>{if(!f())throw new Error("WASM not supported, fall back to stdDev");if(!v)throw new Error("Initialize outlier detector first");const n=e.indexOf(t);return v.seriesResults[n].isOutlier?v.seriesResults[n].outlierIntervals.length:0},f=()=>{const e="object"==typeof WebAssembly;return e||(0,o.EE)(o.NO.service_details,o.ir.service_details.wasm_not_supported),e}},227:(e,t,n)=>{n.d(t,{Bq:()=>A,GL:()=>M,Gg:()=>v,IW:()=>Q,KH:()=>U,N$:()=>C,OB:()=>p,QB:()=>y,RN:()=>_,Rb:()=>q,Rf:()=>T,Xo:()=>B,YK:()=>L,YM:()=>P,ZF:()=>k,Zs:()=>W,cC:()=>g,cO:()=>h,eT:()=>d,ex:()=>H,fq:()=>x,hp:()=>R,k5:()=>N,ke:()=>S,o5:()=>I,og:()=>V,sj:()=>m,uF:()=>J,vs:()=>O});var r=n(2533),a=n(4750),i=n(2871),s=n(3143),l=n(4011);const o=`${r.id}.services.favorite`,c=`${r.id}.primarylabels.tabs.favorite`,u=`${r.id}.datasource`;function d(e,t){if(!e||"string"!=typeof e)return[];const n=f(e,t);let r=[];try{r=(0,l.aJ)(JSON.parse(localStorage.getItem(n)||"[]"))}catch(e){i.v.error(e,{msg:"Error parsing favorite services from local storage"})}return Array.isArray(r)||(r=[]),r}function p(e,t,n){if(!e||"string"!=typeof e)return;const r=f(e,t);let a=[];try{a=(0,l.aJ)(JSON.parse(localStorage.getItem(r)||"[]"))}catch(e){i.v.error(e,{msg:"Error parsing favorite services from local storage"})}Array.isArray(a)||(a=[]);const s=a.filter((e=>e!==n));s.unshift(n),localStorage.setItem(r,JSON.stringify(s))}function g(e,t,n){if(!e||!t||!n||"string"!=typeof e)return;const r=f(e,t);let a=[];try{a=(0,l.aJ)(JSON.parse(localStorage.getItem(r)||"[]"))}catch(e){i.v.error(e,{msg:"Error parsing favorite services from local storage"})}Array.isArray(a)||(a=[]);const s=a.filter((e=>e!==n));localStorage.setItem(r,JSON.stringify(s))}function h(e,t){if(!e||!t)return;const n=b(e);let r=[];try{r=(0,l.aJ)(JSON.parse(localStorage.getItem(n)||"[]"))}catch(e){i.v.error(e,{msg:"Error parsing saved tabs from local storage"})}if(Array.isArray(r)||(r=[]),-1===r.indexOf(t)){const e=r.filter((e=>e!==t));e.unshift(t),localStorage.setItem(n,JSON.stringify(e))}}function v(e,t){if(!e||!t)return;const n=b(e);let r=[];try{r=(0,l.aJ)(JSON.parse(localStorage.getItem(n)||"[]"))}catch(e){i.v.error(e,{msg:"Error parsing favorite services from local storage"})}Array.isArray(r)||(r=[]);const a=r.filter((e=>e!==t));localStorage.setItem(n,JSON.stringify(a))}function m(e){if(!e||"string"!=typeof e)return[];const t=b(e);let n=[];try{n=(0,l.aJ)(JSON.parse(localStorage.getItem(t)||"[]"))}catch(e){i.v.error(e,{msg:"Error parsing favorite services from local storage"})}return Array.isArray(n)||(n=[]),n}function f(e,t){return t=t===s.OX?"":`_${t}`,`${o}_${e}${t}`}function b(e){return`${c}_${e}`}function y(){var e;return null!==(e=localStorage.getItem(u))&&void 0!==e?e:void 0}function S(e){localStorage.setItem(u,e)}const w=`${r.id}.values.sort`;function O(e,t,n){var r;const a=(null!==(r=localStorage.getItem(`${w}.${e}.by`))&&void 0!==r?r:"").split(".");return a[0]&&a[1]?{sortBy:a[0],direction:a[1]}:{sortBy:t,direction:n}}function x(e,t,n){t&&n&&localStorage.setItem(`${w}.${e}.by`,`${t}.${n}`)}function E(e){return`${(0,a.nH)(e)}.${(0,a.p_)(e)}`}function C(e){const t=E(e),n=localStorage.getItem(`${r.id}.${t}.logs.fields`);return n?JSON.parse(n):[]}function k(e,t){const n=E(e);localStorage.setItem(`${r.id}.${n}.logs.fields`,JSON.stringify(t))}const F=`${r.id}.logs.option`;function P(e,t){return localStorage.getItem(`${F}.${e}`)||t}function L(e,t){let n=t.toString();"boolean"!=typeof t||t||(n=""),localStorage.setItem(`${F}.${e}`,n)}const j="grafana.explore.logs.logsVolume";function _(e,t){const n=`${j}.${e}`;void 0!==t?localStorage.setItem(n,t):localStorage.removeItem(n)}function T(e){return Boolean(localStorage.getItem(`${j}.${e}`))}const D="grafana.explore.logs.visualisationType";function N(){var e;const t=null!==(e=localStorage.getItem(D))&&void 0!==e?e:"";switch(t){case"table":case"logs":return t;default:return"logs"}}function I(e){localStorage.setItem(D,e)}const $=`${r.id}.linefilter.option`;function B(e){let t=e.toString();e||(t=""),localStorage.setItem(`${$}.caseSensitive`,t)}function M(e){let t=e.toString();e||(t=""),localStorage.setItem(`${$}.regex`,t)}function A(e){let t=e.toString();e||(t=""),localStorage.setItem(`${$}.exclusive`,t)}function R(e){return"true"===localStorage.getItem(`${$}.caseSensitive`)||e}function V(e){return"true"===localStorage.getItem(`${$}.regex`)||e}function W(e){return"true"===localStorage.getItem(`${$}.exclusive`)||e}const z=`${r.id}.panel.option`;function H(e,t){const n=localStorage.getItem(`${z}.${e}`);var r;return null!==n&&null!==(r=t.find((e=>n===e)))&&void 0!==r?r:null}function Q(e,t){localStorage.setItem(`${z}.${e}`,t)}const K=`${r.id}.expressionBuilder.debug`;function q(){return!!localStorage.getItem(K)}const G=`${r.id}.serviceSelection.pageCount`;function U(){const e=localStorage.getItem(G);return e?parseInt(e,10):void 0}function J(e){localStorage.setItem(G,e.toString(10))}},1220:(e,t,n)=>{n.d(t,{b:()=>r});const r={appConfig:{container:"data-testid ac-container",apiKey:"data-testid ac-api-key",apiUrl:"data-testid ac-api-url",submit:"data-testid ac-submit-form"},exploreServiceSearch:{search:"data-testid search-services"},header:{refreshPicker:"data-testid RefreshPicker run button"},variables:{datasource:{label:"data-testid Dashboard template variables submenu Label Data source"},combobox:{},serviceName:{label:"data-testid Dashboard template variables submenu Label Labels"},levels:{inputWrap:"data-testid detected_level filter variable"}},breakdowns:{labels:{},fields:{},common:{sortByFunction:"data-testid SortBy function",sortByDirection:"data-testid SortBy direction",filterButtonGroup:"data-testid filter-button-group",filterButton:"data-testid filter-button",filterSelect:"data-testid filter-select",filterNumericPopover:{removeButton:"data-testid filter-numeric-remove",submitButton:"data-testid filter-numeric-submit",cancelButton:"data-testid filter-numeric-cancel",inputGreaterThan:"data-testid filter-numeric-gt",inputGreaterThanUnit:"data-testid filter-numeric-gtu",inputGreaterThanInclusive:"data-testid filter-numeric-gte",inputLessThan:"data-testid filter-numeric-lt",inputLessThanUnit:"data-testid filter-numeric-ltu",inputLessThanInclusive:"data-testid filter-numeric-lte"}}},index:{showLogsButton:"data-testid Show logs",addNewLabelTab:"data-testid Tab Add label",searchLabelValueInput:"data-testid search-services-input",aggregatedMetricsMenu:"data-testid aggregated-metrics-menu",aggregatedMetricsToggle:"data-testid aggregated-metrics-toggle",header:{showLogsButton:"data-testid Show logs header"}},exploreServiceDetails:{searchLogs:"data-testid search-logs",openExplore:"data-testid open-explore",tabPatterns:"data-testid tab-patterns",tabLogs:"data-testid tab-logs",tabFields:"data-testid tab-fields",tabLabels:"data-testid tab-labels",buttonRemovePattern:"data-testid button-remove-pattern",buttonFilterInclude:"data-testid button-filter-include",buttonFilterExclude:"data-testid button-filter-exclude"},patterns:{tableWrapper:"data-testid table-wrapper",buttonIncludedPattern:"data-testid button-included-pattern",buttonExcludedPattern:"data-testid button-excluded-pattern"},logsPanelHeader:{header:"data-testid Panel header Logs",radio:"data-testid radio-button"},table:{wrapper:"data-testid table-wrapper",inspectLine:"data-testid inspect",rawLogLine:"data-testid raw-log-line"}}},8315:(e,t,n)=>{n.d(t,{Dk:()=>s,EJ:()=>c,Ki:()=>u,Zr:()=>o,gW:()=>l});var r=n(8531),a=n(2871),i=n(7781);const s=e=>{if(navigator.clipboard&&window.isSecureContext)navigator.clipboard.writeText(e);else{const t=document.createElement("textarea");t.value=e,document.body.appendChild(t),t.select(),document.execCommand("copy"),document.body.removeChild(t)}},l=(e,t,n)=>{const a=r.locationService.getLocation(),i=new URLSearchParams(a.search);i.set("from",n.from.toISOString()),i.set("to",n.to.toISOString()),i.set(e,JSON.stringify(t));const s=i.toString().replace(/\+/g,"%20");return window.location.origin+a.pathname+"?"+s};function o(e){return e.length?(null==e?void 0:e.charAt(0).toUpperCase())+e.slice(1):(a.v.warn("invalid string argument"),e)}function c(e,t,n){return e.substring(0,t)+(n&&e.length>t?"…":"")}function u(e){const t=(0,i.dateTime)(e.timeEpochMs-1),n=(0,i.dateTime)(e.timeEpochMs+1);return{from:t,to:n,raw:{from:t,to:n}}}},4750:(e,t,n)=>{n.d(t,{BL:()=>F,DX:()=>c,El:()=>k,Gk:()=>O,Hj:()=>S,Ku:()=>u,P4:()=>b,Rr:()=>f,S9:()=>w,YS:()=>h,aW:()=>p,bY:()=>x,bu:()=>L,cR:()=>d,eY:()=>E,h:()=>C,ir:()=>v,iw:()=>m,n5:()=>P,nH:()=>T,oY:()=>g,p_:()=>_,vm:()=>y,z2:()=>j});var r=n(2672),a=n(5431),i=n(3143),s=n(2871),l=n(4011),o=n(6001);function c(e){const{labelExpressionToAdd:t="",structuredMetadataToAdd:n="",fieldExpressionToAdd:r="",parser:a}=e;switch(a){case"structuredMetadata":return`{${i.S1}${t}} ${n} ${i.qZ} ${i.S6} ${i.sC} ${i.rl} ${r} ${i.Oc}`;case"json":return`{${i.S1}${t}} ${n} ${i.qZ} ${i.S6} ${i.sC} ${i.rl} ${i.VL} ${r} ${i.Oc}`;case"logfmt":return`{${i.S1}${t}} ${n} ${i.qZ} ${i.S6} ${i.sC} ${i.rl} ${i.mF} ${r} ${i.Oc}`;default:return`{${i.S1}${t}} ${n} ${i.qZ} ${i.S6} ${i.sC} ${i.rl} ${i.YN} ${r} ${i.Oc}`}}function u(e){const t=r.jh.lookupVariable(i.uw,e);if(!(t instanceof r.yP))throw new Error("VAR_PATTERNS not found");return t}function d(e){return x(i.MB,e)}function p(e){return x(i.fi,e)}function g(e){return x(i._P,e)}function h(e){return x(i.sL,e)}function v(e){return x(i.mB,e)}function m(e){return x(i._Y,e)}function f(e){const t=r.jh.lookupVariable(i.WM,e);if(!(t instanceof r.H9))throw new Error("VAR_LINE_FILTER not found");return t}function b(e){const t=r.jh.lookupVariable(i.Jg,e);if(!(t instanceof a.m))throw new Error("VAR_LABEL_GROUP_BY not found");return t}function y(e){const t=r.jh.lookupVariable(i.Wi,e);if(!(t instanceof a.m))throw new Error("SERVICE_LABEL_VAR not found");return t}function S(e){const t=r.jh.lookupVariable(i.LI,e);if(!(t instanceof a.m))throw new Error("VAR_FIELD_GROUP_BY not found");return t}function w(e){const t=r.jh.lookupVariable(i.EY,e);if(!(t instanceof r.mI))throw new Error("VAR_DATASOURCE not found");return t}function O(e){const t=r.jh.lookupVariable(i.NW,e);if(!(t instanceof r.H9))throw new Error("VAR_LINE_FILTERS not found");return t}function x(e,t){const n=r.jh.lookupVariable(e,t);if(!(n instanceof r.H9))throw new Error(`Could not get AdHocFiltersVariable ${e}. Variable not found.`);return n}function E(e){const t=r.jh.lookupVariable(i.Du,e);if(!(t instanceof a.m))throw new Error("VAR_PRIMARY_LABEL_SEARCH not found");return t}function C(e){E(e).setState({value:".+",label:""})}function k(e){const t=r.jh.lookupVariable(i.Gb,e);if(!(t instanceof r.H9))throw new Error("VAR_PRIMARY_LABEL not found");return t}function F(e,t){k(t).setState({filters:[{value:".+",operator:"=~",key:e}]})}function P(e){return`var-${e}`}function L(e,t=i.mB){if((0,o.OH)(e))return{value:e.value,parser:"structuredMetadata"};try{const t=(0,i.zE)(e.value)?(0,i.Dx)(e.value):e.value,n=(0,l.fS)(JSON.parse(t));if(!1!==n)return n;throw new l.QX("getValueFromFieldsFilter: invalid filter value!")}catch(n){if(n instanceof l.QX?s.v.error(n,{msg:`getValueFromFieldsFilter: Failed to validate ${t}`,value:e.value}):s.v.error(n,{msg:`getValueFromFieldsFilter: Failed to parse ${t}`,value:e.value}),e.value)return{value:e.value,parser:"mixed"};throw n}}function j(e,t){return e===i.mB&&t?L(t):{value:null==t?void 0:t.value}}function _(e){return function(e){const t=e.filters.filter((e=>e.key===i.OX)).map((e=>e.value));if(!t)throw new Error("Service present in filters selected");return t[0]}(d(e).state)}function T(e){return w(e).getValue()}},1863:(e,t,n)=>{n.d(t,{Ht:()=>g,mE:()=>d,rA:()=>p});var r=n(2672),a=n(5431),i=n(3143),s=n(8538),l=n(892),o=n(4793),c=n(5548),u=n(5111);function d(e){const t=r.jh.getVariables(e);let n=[];for(const e of t.state.variables)e instanceof r.H9&&e.state.filters.length&&n.push(e),e instanceof a.m&&e.state.value&&"logsFormat"!==e.state.name&&n.push(e);return n}function p(e){const t=r.jh.getAncestor(e,s.P);t.setState({patterns:[]}),d(t).forEach((e=>{if(e instanceof r.H9&&"adhoc_service_filter"===e.state.key){let{labelName:t}=(0,l.W6)();t===i.ky&&(t=i.OX),e.setState({filters:e.state.filters.filter((e=>e.key===t))})}else e instanceof r.H9?e.setState({filters:[]}):e instanceof a.m&&e.setState({value:"",text:""})}))}const g=function(e){const t=e.state._wip;if(t&&e.state.filters.some((e=>e.key===t.key&&e.operator===o.w7.Equal)))return c._i;const n=e.state.name===i.MB,r=e.state.filters.filter((e=>(0,u.BG)(e.operator))).length,a=!(null==t?void 0:t.key)&&1===r,s=(null==t?void 0:t.key)&&r<1;if(n&&(a||s))return c._i;if(null==t?void 0:t.meta){const e=t.meta.type;if("float"===e||"bytes"===e||"duration"===e)return c.hI}return c.II}}}]); -//# sourceMappingURL=341.js.map \ No newline at end of file diff --git a/grafana/plugins/grafana-lokiexplore-app/341.js.map b/grafana/plugins/grafana-lokiexplore-app/341.js.map deleted file mode 100644 index 7a19b8d5..00000000 --- a/grafana/plugins/grafana-lokiexplore-app/341.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"341.js","mappings":"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","sources":["webpack://grafana-lokiexplore-app/./Components/FilterButton.tsx","webpack://grafana-lokiexplore-app/./Components/GrotError.tsx","webpack://grafana-lokiexplore-app/./Components/IndexScene/InterceptBanner.tsx","webpack://grafana-lokiexplore-app/./Components/IndexScene/GiveFeedbackButton.tsx","webpack://grafana-lokiexplore-app/./Components/IndexScene/CustomVariableValueSelectors.tsx","webpack://grafana-lokiexplore-app/./Components/IndexScene/PatternTag.tsx","webpack://grafana-lokiexplore-app/./Components/IndexScene/PatternControls.tsx","webpack://grafana-lokiexplore-app/./Components/IndexScene/VariableLayoutScene.tsx","webpack://grafana-lokiexplore-app/./Components/IndexScene/LayoutScene.tsx","webpack://grafana-lokiexplore-app/./services/TagValuesProviders.ts","webpack://grafana-lokiexplore-app/./services/TagKeysProviders.ts","webpack://grafana-lokiexplore-app/./services/Mousetrap.ts","webpack://grafana-lokiexplore-app/./services/KeybindingSet.ts","webpack://grafana-lokiexplore-app/./services/keyboardShortcuts.ts","webpack://grafana-lokiexplore-app/./Components/NoLokiSplash.tsx","webpack://grafana-lokiexplore-app/./Components/IndexScene/IndexScene.tsx","webpack://grafana-lokiexplore-app/./Components/IndexScene/LevelsVariableScene.tsx","webpack://grafana-lokiexplore-app/./Components/IndexScene/LineFilterVariable.tsx","webpack://grafana-lokiexplore-app/./Components/IndexScene/LineFilterVariablesScene.tsx","webpack://grafana-lokiexplore-app/./Components/IndexScene/ShowLogsButtonScene.tsx","webpack://grafana-lokiexplore-app/./Components/IndexScene/ToolbarScene.tsx","webpack://grafana-lokiexplore-app/./Components/Pages.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/AddToInvestigationButton.tsx","webpack://grafana-lokiexplore-app/./Components/Panels/PanelMenu.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/GoToExploreButton.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/AddToFiltersButton.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/BreakdownSearchScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/ByFrameRepeater.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/EmptyLayoutScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/FieldSelector.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/FieldValuesBreakdownScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/FieldsAggregatedBreakdownScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/FieldsBreakdownScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/LabelsAggregatedBreakdownScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/LabelBreakdownScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/LabelValuesBreakdownScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/LayoutSwitcher.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/NoMatchingLabelsScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/Panels/ValueSummary.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/SearchInput.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/NumericFilterPopoverScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/SelectLabelActionScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/SortByScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/StatusWrapper.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/TimeSeriesLimit.ts","webpack://grafana-lokiexplore-app/./services/mixins.ts","webpack://grafana-lokiexplore-app/./Components/ServiceScene/LineFilter/RegexIconButton.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/LineFilter/LineFilterCaseSensitivityButton.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/LineFilterInput.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/LineFilter/LineFilterEditor.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/LogOptionsScene.tsx","webpack://grafana-lokiexplore-app/./Components/Table/Context/TableColumnsContext.tsx","webpack://grafana-lokiexplore-app/./Components/Table/Context/TableCellContext.tsx","webpack://grafana-lokiexplore-app/./Components/Table/Context/TableHeaderContext.tsx","webpack://grafana-lokiexplore-app/./Components/Table/ColumnSelection/LogsColumnSearch.tsx","webpack://grafana-lokiexplore-app/./Components/Table/ColumnSelection/LogsTableEmptyFields.tsx","webpack://grafana-lokiexplore-app/./Components/Table/ColumnSelection/LogsTableNavField.tsx","webpack://grafana-lokiexplore-app/./Components/Table/ColumnSelection/LogsTableActiveFields.tsx","webpack://grafana-lokiexplore-app/./Components/Table/ColumnSelection/LogsTableAvailableFields.tsx","webpack://grafana-lokiexplore-app/./Components/Table/ColumnSelection/LogsTableMultiSelect.tsx","webpack://grafana-lokiexplore-app/./Components/Table/ColumnSelection/ColumnSelectionDrawerWrap.tsx","webpack://grafana-lokiexplore-app/./Components/Table/DefaultCellWrapComponent.tsx","webpack://grafana-lokiexplore-app/./Components/Table/Context/QueryContext.tsx","webpack://grafana-lokiexplore-app/./Components/Table/CellContextMenu.tsx","webpack://grafana-lokiexplore-app/./Components/Table/constants.ts","webpack://grafana-lokiexplore-app/./Components/Table/DefaultPill.tsx","webpack://grafana-lokiexplore-app/./Components/Table/LineActionIcons.tsx","webpack://grafana-lokiexplore-app/./Components/Table/DefaultCellComponent.tsx","webpack://grafana-lokiexplore-app/./Components/Table/LogLinePill.tsx","webpack://grafana-lokiexplore-app/./Components/Table/Scroller.tsx","webpack://grafana-lokiexplore-app/./Components/Table/RawLogLineText.tsx","webpack://grafana-lokiexplore-app/./Components/Table/LogLineCellComponent.tsx","webpack://grafana-lokiexplore-app/./Components/Table/LogsTableHeader.tsx","webpack://grafana-lokiexplore-app/./Components/Table/LogsTableHeaderWrap.tsx","webpack://grafana-lokiexplore-app/./Components/Table/Table.tsx","webpack://grafana-lokiexplore-app/./Components/Table/TableWrap.tsx","webpack://grafana-lokiexplore-app/./Components/Table/TableProvider.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/LogsTableScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/LineFilter/LineFilterScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/LogsListScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/CopyLinkButton.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/LogsPanelError.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/LogsPanelScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/LogsVolumeActions.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/LogsVolumePanel.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/Patterns/FilterByPatternsButton.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/Patterns/PatternFieldLabelStatsRow.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/Patterns/PatternFieldLabelStats.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/Patterns/PatternNameLabel.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/Patterns/PatternsLogsSampleScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/Patterns/PatternsTableExpandedRow.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/Patterns/PatternsViewTableScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/Patterns/PatternsFrameScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/Patterns/PatternsViewTextSearch.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/Patterns/PatternsNotDetected.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/Patterns/PatternsBreakdownScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/BreakdownViews.ts","webpack://grafana-lokiexplore-app/./Components/IndexScene/ShareButtonScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/ActionBarScene.tsx","webpack://grafana-lokiexplore-app/./services/migrations.ts","webpack://grafana-lokiexplore-app/./Components/ServiceScene/ServiceScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceSelectionScene/FavoriteServiceHeaderActionScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceSelectionScene/SelectServiceButton.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceSelectionScene/ConfigureVolumeError.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceSelectionScene/NoServiceSearchResults.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceSelectionScene/TabPopoverScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceSelectionScene/ServiceSelectionTabsScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceSelectionScene/NoServiceVolume.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceSelectionScene/AddLabelToFiltersHeaderActionScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceSelectionScene/ServiceSelectionPaginationScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceSelectionScene/ServiceSelectionScene.tsx","webpack://grafana-lokiexplore-app/./Components/Table/LogsHeaderActions.tsx","webpack://grafana-lokiexplore-app/./services/CustomConstantVariable.ts","webpack://grafana-lokiexplore-app/./services/ExpressionBuilder.ts","webpack://grafana-lokiexplore-app/./services/analytics.ts","webpack://grafana-lokiexplore-app/./services/comparison.ts","webpack://grafana-lokiexplore-app/./services/logql.ts","webpack://grafana-lokiexplore-app/./services/combineResponses.ts","webpack://grafana-lokiexplore-app/./services/shardQuerySplitting.ts","webpack://grafana-lokiexplore-app/./services/datasource.ts","webpack://grafana-lokiexplore-app/./services/expressions.ts","webpack://grafana-lokiexplore-app/./services/favorites.ts","webpack://grafana-lokiexplore-app/./services/fields.ts","webpack://grafana-lokiexplore-app/./services/filters.ts","webpack://grafana-lokiexplore-app/./services/labels.ts","webpack://grafana-lokiexplore-app/./services/levels.ts","webpack://grafana-lokiexplore-app/./services/logsFrame.ts","webpack://grafana-lokiexplore-app/./services/metadata.ts","webpack://grafana-lokiexplore-app/./services/navigate.ts","webpack://grafana-lokiexplore-app/./services/LogsSceneQueryRunner.ts","webpack://grafana-lokiexplore-app/./services/panel.ts","webpack://grafana-lokiexplore-app/./services/plugin.ts","webpack://grafana-lokiexplore-app/./services/query.ts","webpack://grafana-lokiexplore-app/./services/routing.ts","webpack://grafana-lokiexplore-app/./services/scenes.ts","webpack://grafana-lokiexplore-app/./services/search.ts","webpack://grafana-lokiexplore-app/./services/sorting.ts","webpack://grafana-lokiexplore-app/./services/store.ts","webpack://grafana-lokiexplore-app/./services/testIds.ts","webpack://grafana-lokiexplore-app/./services/text.ts","webpack://grafana-lokiexplore-app/./services/variableGetters.ts","webpack://grafana-lokiexplore-app/./services/variableHelpers.ts"],"sourcesContent":["import { css } from '@emotion/css';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { Button, useStyles2 } from '@grafana/ui';\nimport React from 'react';\nimport { testIds } from 'services/testIds';\n\ntype Props = {\n onInclude: () => void;\n onClear: () => void;\n isIncluded: boolean;\n onExclude: () => void;\n isExcluded: boolean;\n buttonFill: 'solid' | 'outline' | 'text';\n titles?: {\n include: string;\n exclude: string;\n };\n hideExclude?: boolean;\n};\n\nexport const FilterButton = (props: Props) => {\n const { isExcluded, isIncluded, onInclude, onExclude, onClear, titles, buttonFill, hideExclude } = props;\n const styles = useStyles2(getStyles, isIncluded, isExcluded, hideExclude);\n return (\n
\n \n Include\n \n {!hideExclude && (\n \n Exclude\n \n )}\n
\n );\n};\n\nconst getStyles = (theme: GrafanaTheme2, isIncluded: boolean, isExcluded: boolean, hideExclude?: boolean) => {\n return {\n container: css({\n display: 'flex',\n justifyContent: 'center',\n }),\n includeButton: css({\n borderRadius: 0,\n borderRight: isIncluded || hideExclude ? undefined : 'none',\n }),\n excludeButton: css({\n borderRadius: `0 ${theme.shape.radius.default} ${theme.shape.radius.default} 0`,\n borderLeft: isExcluded ? undefined : 'none',\n }),\n };\n};\n","import React from 'react';\n\nimport { css } from '@emotion/css';\nimport SVG from 'react-inlinesvg';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { useStyles2, useTheme2, Text } from '@grafana/ui';\n\nconst getStyles = (theme: GrafanaTheme2) => {\n return {\n graphicContainer: css({\n display: 'flex',\n justifyContent: 'center',\n margin: '0 auto',\n }),\n graphic: css({ width: '200px', height: '120px', padding: theme.spacing(1) }),\n text: css({\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n }),\n wrap: css({\n margin: '0 auto',\n }),\n };\n};\n\ntype Props = {\n children?: React.ReactNode;\n};\n\nexport const GrotError = ({ children }: React.PropsWithChildren) => {\n const styles = useStyles2(getStyles);\n const theme = useTheme2();\n return (\n
\n
\n \n
\n
\n \n {children ? children : 'An error occurred'}\n \n
\n
\n );\n};\n","import { Alert, useStyles2 } from '@grafana/ui';\nimport React from 'react';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { css } from '@emotion/css';\n\nexport function InterceptBanner(props: { onRemove: () => void }) {\n const styles = useStyles2(getStyles);\n return (\n <>\n \n
\n Check out our{' '}\n \n Get started doc\n \n , or see{' '}\n \n recent changes\n \n .
\n Help us shape the future of the app.{' '}\n \n Send us feedback\n {' '}\n or engage with us on{' '}\n \n GitHub\n \n .\n
\n \n \n );\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n alert: css({\n flex: 'none',\n }),\n };\n}\n","import React from 'react';\nimport { Icon, useStyles2 } from '@grafana/ui';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { css } from '@emotion/css';\n\nexport const GiveFeedbackButton = () => {\n const styles = useStyles2(getStyles);\n return (\n
\n \n Give feedback\n \n
\n );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => {\n return {\n wrapper: css({\n display: 'flex',\n marginLeft: 'auto',\n gap: theme.spacing(1),\n position: 'relative',\n top: theme.spacing(-1),\n }),\n feedback: css({\n alignSelf: 'center',\n color: theme.colors.text.secondary,\n fontSize: theme.typography.bodySmall.fontSize,\n '&:hover': {\n color: theme.colors.text.link,\n },\n }),\n };\n};\n","import {\n ControlsLayout,\n SceneComponentProps,\n sceneGraph,\n SceneObjectBase,\n SceneObjectState,\n VariableValueSelectWrapper,\n} from '@grafana/scenes';\nimport React from 'react';\n\nexport interface VariableValueSelectorsState extends SceneObjectState {\n layout?: ControlsLayout;\n include?: string[];\n exclude?: string[];\n}\n\nexport class CustomVariableValueSelectors extends SceneObjectBase {\n public static Component = CustomVariableValueSelectorsRenderer;\n}\n\nfunction CustomVariableValueSelectorsRenderer({ model }: SceneComponentProps) {\n const variablesSetState = sceneGraph.getVariables(model).useState();\n let variables = variablesSetState.variables;\n\n if (model.state.include?.length) {\n variables = variablesSetState.variables.filter((variable) =>\n model.state.include?.includes(variable.state.name ?? '')\n );\n }\n if (model.state.exclude?.length) {\n variables = variablesSetState.variables.filter(\n (variable) => !model.state.exclude?.includes(variable.state.name ?? '')\n );\n }\n\n return (\n <>\n {variables.map((variable) => (\n \n ))}\n \n );\n}\n","import { css } from '@emotion/css';\nimport { Button, Icon, Tag, useStyles2 } from '@grafana/ui';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport React, { useState } from 'react';\nimport { testIds } from 'services/testIds';\n\ninterface Props {\n onRemove(): void;\n pattern: string;\n size?: PatternSize;\n}\n\ntype PatternSize = 'sm' | 'lg';\n\nexport const PatternTag = ({ onRemove, pattern, size = 'lg' }: Props) => {\n const styles = useStyles2(getStyles);\n const [expanded, setExpanded] = useState(false);\n return (\n
setExpanded(!expanded)} onMouseLeave={() => setExpanded(false)}>\n \n \n \n \n
\n );\n};\n\nconst PREVIEW_WIDTH: Record = {\n sm: 50,\n lg: Math.round(window.innerWidth / 8),\n};\n\nfunction getPatternPreview(pattern: string, size: PatternSize) {\n const length = pattern.length;\n if (length < PREVIEW_WIDTH[size]) {\n return pattern;\n }\n\n const substringLength = Math.round(PREVIEW_WIDTH[size] * 0.4);\n\n return `${pattern.substring(0, substringLength)} … ${pattern.substring(length - substringLength)}`;\n}\n\nconst getStyles = (theme: GrafanaTheme2) => {\n return {\n pattern: css({\n display: 'flex',\n fontFamily: 'monospace',\n gap: theme.spacing(0.25),\n cursor: 'pointer',\n overflow: 'hidden',\n }),\n tag: css({\n borderTopRightRadius: 0,\n borderBottomRightRadius: 0,\n backgroundColor: theme.colors.secondary.main,\n border: `solid 1px ${theme.colors.secondary.border}`,\n color: theme.colors.secondary.text,\n boxSizing: 'border-box',\n padding: theme.spacing(0.25, 0.75),\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n }),\n removeButton: css({\n paddingLeft: 2.5,\n paddingRight: 2.5,\n }),\n };\n};\n","import React from 'react';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { PatternTag } from './PatternTag';\nimport { css } from '@emotion/css';\nimport { useStyles2, Text } from '@grafana/ui';\nimport { USER_EVENTS_ACTIONS, USER_EVENTS_PAGES, reportAppInteraction } from 'services/analytics';\nimport { testIds } from 'services/testIds';\nimport { AppliedPattern } from '../../services/variables';\nimport { addCurrentUrlToHistory } from '../../services/navigate';\n\ntype Props = {\n patterns: AppliedPattern[] | undefined;\n onRemove: (patterns: AppliedPattern[]) => void;\n};\nexport const PatternControls = ({ patterns, onRemove }: Props) => {\n const styles = useStyles2(getStyles);\n\n if (!patterns || patterns.length === 0) {\n return null;\n }\n\n const includePatterns = patterns.filter((pattern) => pattern.type === 'include');\n const excludePatterns = patterns.filter((pattern) => pattern.type !== 'include');\n\n const onRemovePattern = (pattern: AppliedPattern) => {\n addCurrentUrlToHistory();\n onRemove(patterns.filter((pat) => pat !== pattern));\n reportAppInteraction(USER_EVENTS_PAGES.service_details, USER_EVENTS_ACTIONS.service_details.pattern_removed, {\n includePatternsLength: includePatterns.length - (pattern?.type === 'include' ? 1 : 0),\n excludePatternsLength: excludePatterns.length - (pattern?.type !== 'include' ? 1 : 0),\n type: pattern.type,\n });\n };\n\n return (\n
\n {includePatterns.length > 0 && (\n
\n \n Included pattern{patterns.length > 1 ? 's' : ''}\n \n
\n {includePatterns.map((p) => (\n onRemovePattern(p)} />\n ))}\n
\n
\n )}\n {excludePatterns.length > 0 && (\n
\n \n Excluded pattern{excludePatterns.length > 1 ? 's' : ''}:\n \n
\n {excludePatterns.map((p) => (\n 1 ? 'sm' : 'lg'}\n onRemove={() => onRemovePattern(p)}\n />\n ))}\n
\n
\n )}\n
\n );\n};\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n patternsContainer: css({\n overflow: 'hidden',\n }),\n patterns: css({\n display: 'flex',\n gap: theme.spacing(1),\n alignItems: 'center',\n flexWrap: 'wrap',\n }),\n };\n}\n","import { SceneComponentProps, SceneFlexLayout, sceneGraph, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport React from 'react';\nimport { css, cx } from '@emotion/css';\nimport { GiveFeedbackButton } from './GiveFeedbackButton';\nimport { CustomVariableValueSelectors } from './CustomVariableValueSelectors';\nimport { PatternControls } from './PatternControls';\nimport { IndexScene } from './IndexScene';\nimport { CONTROLS_VARS_DATASOURCE, CONTROLS_VARS_FIELDS_COMBINED, LayoutScene } from './LayoutScene';\nimport { useStyles2 } from '@grafana/ui';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { AppliedPattern } from '../../services/variables';\n\ninterface VariableLayoutSceneState extends SceneObjectState {}\nexport class VariableLayoutScene extends SceneObjectBase {\n static Component = ({ model }: SceneComponentProps) => {\n const indexScene = sceneGraph.getAncestor(model, IndexScene);\n const { controls, patterns } = indexScene.useState();\n\n const layoutScene = sceneGraph.getAncestor(model, LayoutScene);\n const { lineFilterRenderer, levelsRenderer } = layoutScene.useState();\n\n const styles = useStyles2(getStyles);\n\n return (\n
\n <>\n {/* First row - datasource, timepicker, refresh, labels, button */}\n {controls && (\n
\n
\n
\n {controls.map((control) => {\n return control instanceof SceneFlexLayout ? (\n \n ) : null;\n })}\n
\n
\n
\n \n
\n {controls.map((control) => {\n return control.state.key === CONTROLS_VARS_DATASOURCE ? (\n \n ) : null;\n })}\n\n
\n {controls.map((control) => {\n return !(control instanceof CustomVariableValueSelectors) &&\n !(control instanceof SceneFlexLayout) ? (\n \n ) : null;\n })}\n
\n
\n
\n
\n )}\n\n {/* Second row - Levels - custom renderer */}\n
\n {levelsRenderer && }\n
\n\n {/* 3rd row - Combined fields (fields + metadata) */}\n
\n {controls && (\n
\n
\n {controls.map((control) => {\n return control instanceof CustomVariableValueSelectors &&\n control.state.key === CONTROLS_VARS_FIELDS_COMBINED ? (\n \n ) : null;\n })}\n
\n
\n )}\n
\n\n {/* 4th row - Patterns */}\n
\n indexScene.setState({ patterns })}\n />\n
\n\n {/* 5th row - Line filters - custom renderer */}\n
\n {lineFilterRenderer && }\n
\n \n
\n );\n };\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n firstRowWrapper: css({\n '& > div > div': {\n gap: '16px',\n label: 'first-row-wrapper',\n\n [theme.breakpoints.down('lg')]: {\n flexDirection: 'column',\n },\n },\n }),\n bodyContainer: css({\n flexGrow: 1,\n display: 'flex',\n minHeight: '100%',\n flexDirection: 'column',\n }),\n container: css({\n flexGrow: 1,\n display: 'flex',\n minHeight: '100%',\n flexDirection: 'column',\n padding: theme.spacing(2),\n maxWidth: '100vw',\n }),\n body: css({\n flexGrow: 1,\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(1),\n }),\n controlsFirstRowContainer: css({\n label: 'controls-first-row',\n display: 'flex',\n gap: theme.spacing(2),\n justifyContent: 'space-between',\n alignItems: 'flex-start',\n }),\n controlsRowContainer: css({\n '&:empty': {\n display: 'none',\n },\n label: 'controls-row',\n display: 'flex',\n // @todo add custom renderers for all variables, this currently results in 2 \"empty\" rows that always take up space\n gap: theme.spacing(1),\n alignItems: 'flex-start',\n paddingLeft: theme.spacing(2),\n }),\n controlsContainer: css({\n label: 'controlsContainer',\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(1),\n }),\n filters: css({\n label: 'filters',\n display: 'flex',\n }),\n filtersWrap: css({\n label: 'filtersWrap',\n display: 'flex',\n gap: theme.spacing(2),\n width: 'calc(100% - 450)',\n flexWrap: 'wrap',\n alignItems: 'flex-end',\n }),\n controlsWrapper: css({\n label: 'controlsWrapper',\n display: 'flex',\n flexDirection: 'column',\n marginTop: theme.spacing(0.375),\n }),\n timeRangeDatasource: css({\n label: 'timeRangeDatasource',\n display: 'flex',\n gap: theme.spacing(1),\n flexWrap: 'wrap',\n justifyContent: 'flex-end',\n }),\n timeRange: css({\n label: 'timeRange',\n display: 'flex',\n flexDirection: 'row',\n gap: theme.spacing(1),\n }),\n controls: css({\n display: 'flex',\n gap: theme.spacing(1),\n }),\n feedback: css({\n textAlign: 'end',\n }),\n rotateIcon: css({\n svg: { transform: 'rotate(180deg)' },\n }),\n };\n}\n","import { GrafanaTheme2 } from '@grafana/data';\nimport { SceneComponentProps, sceneGraph, SceneObject, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport { useStyles2 } from '@grafana/ui';\nimport React from 'react';\nimport { IndexScene } from './IndexScene';\nimport { css } from '@emotion/css';\nimport { InterceptBanner } from './InterceptBanner';\n\nimport { PLUGIN_ID } from '../../services/plugin';\nimport { logger } from '../../services/logger';\nimport { LineFilterVariablesScene } from './LineFilterVariablesScene';\nimport { VariableLayoutScene } from './VariableLayoutScene';\nimport { LevelsVariableScene } from './LevelsVariableScene';\n\ninterface LayoutSceneState extends SceneObjectState {\n interceptDismissed: boolean;\n lineFilterRenderer?: LineFilterVariablesScene;\n levelsRenderer?: LevelsVariableScene;\n variableLayout?: SceneObject;\n}\n\nconst interceptBannerStorageKey = `${PLUGIN_ID}.interceptBannerStorageKey`;\n\nexport const CONTROLS_VARS_FIRST_ROW_KEY = 'vars-row__datasource-labels-timepicker-button';\nexport const CONTROLS_VARS_METADATA_ROW_KEY = 'vars-metadata';\nexport const CONTROLS_VARS_LEVELS_ROW_KEY = 'vars-levels';\nexport const CONTROLS_VARS_FIELDS = 'vars-fields';\nexport const CONTROLS_VARS_FIELDS_COMBINED = 'vars-fields-metadata';\nexport const CONTROLS_VARS_TIMEPICKER = 'vars-timepicker';\nexport const CONTROLS_VARS_REFRESH = 'vars-refresh';\nexport const CONTROLS_VARS_TOOLBAR = 'vars-toolbar';\nexport const CONTROLS_VARS_DATASOURCE = 'vars-ds';\nexport const CONTROLS_VARS_LABELS = 'vars-labels';\n\nexport class LayoutScene extends SceneObjectBase {\n constructor(state: Partial) {\n super({\n ...state,\n interceptDismissed: !!localStorage.getItem(interceptBannerStorageKey),\n });\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n static Component = ({ model }: SceneComponentProps) => {\n const indexScene = sceneGraph.getAncestor(model, IndexScene);\n const { contentScene } = indexScene.useState();\n const { interceptDismissed, variableLayout } = model.useState();\n\n if (!contentScene) {\n logger.warn('content scene not defined');\n return null;\n }\n\n const styles = useStyles2(getStyles);\n return (\n
\n
\n {!interceptDismissed && (\n {\n model.dismiss();\n }}\n />\n )}\n\n {variableLayout && }\n\n {/* Final \"row\" - body */}\n
{contentScene && }
\n
\n
\n );\n };\n\n public onActivate() {\n this.setState({\n lineFilterRenderer: new LineFilterVariablesScene({}),\n levelsRenderer: new LevelsVariableScene({}),\n variableLayout: new VariableLayoutScene({}),\n });\n }\n\n public dismiss() {\n this.setState({\n interceptDismissed: true,\n });\n localStorage.setItem(interceptBannerStorageKey, 'true');\n }\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n bodyContainer: css({\n flexGrow: 1,\n display: 'flex',\n minHeight: '100%',\n flexDirection: 'column',\n }),\n container: css({\n flexGrow: 1,\n display: 'flex',\n minHeight: '100%',\n flexDirection: 'column',\n padding: theme.spacing(2),\n maxWidth: '100vw',\n }),\n body: css({\n label: 'body-wrapper',\n flexGrow: 1,\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(1),\n }),\n controlsContainer: css({\n label: 'controlsContainer',\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(1),\n }),\n };\n}\n","import { AdHocFiltersVariable, AdHocFilterWithLabels, SceneObject } from '@grafana/scenes';\nimport { DataSourceGetTagValuesOptions, GetTagResponse, MetricFindValue, ScopedVars, TimeRange } from '@grafana/data';\nimport { BackendSrvRequest, DataSourceWithBackend, getDataSourceSrv } from '@grafana/runtime';\nimport { getDataSource } from './scenes';\nimport { logger } from './logger';\nimport { LokiDatasource, LokiQuery } from './lokiQuery';\nimport { getDataSourceVariable, getValueFromFieldsFilter } from './variableGetters';\nimport { AdHocFiltersWithLabelsAndMeta, DetectedFieldType, VAR_LEVELS } from './variables';\nimport { isArray } from 'lodash';\nimport { FilterOp } from './filterTypes';\nimport { getFavoriteLabelValuesFromStorage } from './store';\nimport { UIVariableFilterType } from '../Components/ServiceScene/Breakdowns/AddToFiltersButton';\nimport { ExpressionBuilder } from './ExpressionBuilder';\nimport { isOperatorInclusive, isOperatorRegex } from './operatorHelpers';\n\ntype FetchDetectedLabelValuesOptions = {\n expr?: string;\n timeRange?: TimeRange;\n limit?: number;\n scopedVars?: ScopedVars;\n throwError: boolean;\n};\n\nexport type FetchDetectedFieldsOptions = {\n expr: string;\n timeRange?: TimeRange;\n limit?: number;\n scopedVars?: ScopedVars;\n};\n\nexport type DetectedFieldsResult = Array<{\n label: string;\n type: DetectedFieldType;\n cardinality: number;\n parsers: Array<'logfmt' | 'json'> | null;\n}>;\n\nexport interface LokiLanguageProviderWithDetectedLabelValues {\n fetchDetectedLabelValues: (\n labelName: string,\n queryOptions?: FetchDetectedLabelValuesOptions,\n requestOptions?: Partial\n ) => Promise;\n\n fetchDetectedFields: (\n queryOptions?: FetchDetectedFieldsOptions,\n requestOptions?: Partial\n ) => Promise;\n}\n\nexport const getDetectedFieldValuesTagValuesProvider = async (\n filter: AdHocFiltersWithLabelsAndMeta,\n variable: AdHocFiltersVariable,\n expr: string,\n sceneRef: SceneObject,\n timeRange: TimeRange,\n variableType: UIVariableFilterType\n): Promise<{\n replace?: boolean;\n values: MetricFindValue[];\n}> => {\n const datasourceUnknownType = await getDataSourceSrv().get(getDataSource(sceneRef));\n // Narrow the DataSourceApi type to DataSourceWithBackend\n if (!(datasourceUnknownType instanceof DataSourceWithBackend)) {\n logger.error(new Error('getTagValuesProvider: Invalid datasource!'));\n throw new Error('Invalid datasource!');\n }\n\n // Assert datasource is Loki\n const lokiDatasource = datasourceUnknownType as LokiDatasource;\n // Assert language provider is LokiLanguageProvider\n const languageProvider = lokiDatasource.languageProvider as LokiLanguageProviderWithDetectedLabelValues;\n\n let values: MetricFindValue[] = [];\n\n if (languageProvider && languageProvider.fetchDetectedLabelValues) {\n const options: FetchDetectedLabelValuesOptions = {\n expr,\n limit: 1000,\n timeRange,\n throwError: true,\n };\n\n const requestOptions: Partial = {\n showErrorAlert: false,\n };\n\n try {\n let results = await languageProvider.fetchDetectedLabelValues(filter.key, options, requestOptions);\n if (results && isArray(results)) {\n // Always return all level values\n if (variableType === VAR_LEVELS) {\n return { replace: true, values: results.map((key) => ({ text: key })) };\n }\n\n const currentFilters = variable.state.filters;\n\n // Remove values that are already used, if an exact match is found\n let valuesToRemove: string[] = [];\n currentFilters.forEach((filter) => {\n const value = filter.valueLabels?.[0] ?? filter.value;\n if (isOperatorRegex(filter.operator)) {\n value.split('|').forEach((v) => valuesToRemove.push(v));\n } else {\n valuesToRemove.push(value);\n }\n });\n\n const filteredResults = results.filter((value) => {\n return !valuesToRemove.includes(value);\n });\n\n if (filter.meta?.parser !== 'structuredMetadata') {\n if (filter.value) {\n const valueDecoded = getValueFromFieldsFilter(filter, variableType);\n return {\n replace: true,\n values: filteredResults.map((v) => ({\n text: v,\n value: JSON.stringify({\n value: v,\n parser: valueDecoded.parser,\n }),\n })),\n };\n } else {\n // if the filter is wip, we trust that the parser was returned in the getTagKeys method, and added to the meta prop on the filter\n return {\n replace: true,\n values: filteredResults.map((v) => ({\n text: v,\n value: JSON.stringify({\n value: v,\n parser: filter.meta?.parser ?? 'mixed',\n }),\n })),\n };\n }\n } else {\n values = filteredResults.map((r) => ({ text: r }));\n }\n } else {\n values = [];\n logger.error(results, { msg: 'fetchDetectedLabelValues error!' });\n }\n } catch (e) {\n logger.error(e, {\n msg: 'getDetectedFieldValuesTagValuesProvider: loki missing detected_field/.../values endpoint. Upgrade to Loki 3.3.0 or higher.',\n });\n values = [];\n }\n } else {\n logger.warn(\n 'getDetectedFieldValuesTagValuesProvider: fetchDetectedLabelValues is not defined in Loki datasource. Upgrade to Grafana 11.4 or higher.'\n );\n values = [];\n }\n\n return { replace: true, values };\n};\n\nexport function tagValuesFilterAdHocFilters(\n existingFilters: AdHocFilterWithLabels[],\n filter: AdHocFilterWithLabels<{}>\n) {\n let oldFiltersFiltered = existingFilters.filter(\n (f) => !(isOperatorInclusive(filter.operator) && f.key === filter.key)\n );\n\n // If there aren't any inclusive filters, we need to ignore the exclusive ones as well, or Loki will throw an error\n if (!oldFiltersFiltered.some((filter) => isOperatorInclusive(filter.operator))) {\n oldFiltersFiltered = [];\n }\n\n return oldFiltersFiltered;\n}\n\nexport async function getLabelsTagValuesProvider(\n variable: AdHocFiltersVariable,\n filter: AdHocFilterWithLabels\n): Promise<{\n replace?: boolean;\n values: GetTagResponse | MetricFindValue[];\n}> {\n const datasource_ = await getDataSourceSrv().get(getDataSource(variable));\n if (!(datasource_ instanceof DataSourceWithBackend)) {\n logger.error(new Error('getTagValuesProvider: Invalid datasource!'));\n throw new Error('Invalid datasource!');\n }\n const datasource = datasource_ as LokiDatasource;\n\n if (datasource && datasource.getTagValues) {\n // Filter out other values for this key so users can include other values for this label\n const filterTransformer = new ExpressionBuilder(variable.state.filters);\n const filters = filterTransformer.getJoinedLabelsFilters();\n const filtersFiltered = tagValuesFilterAdHocFilters(filters, filter);\n\n const options: DataSourceGetTagValuesOptions = {\n key: filter.key,\n filters: filtersFiltered,\n };\n\n let results = await datasource.getTagValues(options);\n\n if (isArray(results)) {\n results = results.filter((result) => {\n // Filter out values that we already have added as filters\n return !variable.state.filters\n .filter((f) => f.key === filter.key)\n .some((f) => {\n if (isOperatorRegex(f.operator)) {\n const values = f.value.split('|');\n return values.some((value) => value === result.text);\n } else {\n // If true, the results should be filtered out\n return f.operator === FilterOp.Equal && f.value === result.text;\n }\n });\n });\n const favoriteValuesArray = getFavoriteLabelValuesFromStorage(\n getDataSourceVariable(variable).getValue()?.toString(),\n filter.key\n );\n const favoriteValuesSet = new Set(favoriteValuesArray);\n if (favoriteValuesArray.length) {\n results.sort((a, b) => {\n return (favoriteValuesSet.has(b.text) ? 1 : -1) - (favoriteValuesSet.has(a.text) ? 1 : -1);\n });\n }\n }\n\n return { replace: true, values: results };\n } else {\n logger.error(new Error('getTagValuesProvider: missing or invalid datasource!'));\n return { replace: true, values: [] };\n }\n}\n","import { logger } from './logger';\nimport { LokiDatasource, LokiQuery } from './lokiQuery';\nimport {\n DataSourceGetTagKeysOptions,\n getDefaultTimeRange,\n GetTagResponse,\n KeyValue,\n MetricFindValue,\n ScopedVars,\n TimeRange,\n} from '@grafana/data';\nimport { AdHocFiltersVariable, SceneObject } from '@grafana/scenes';\nimport { BackendSrvRequest, DataSourceWithBackend, getDataSourceSrv } from '@grafana/runtime';\nimport { getDataSource } from './scenes';\nimport { LABELS_TO_REMOVE } from './filters';\nimport { DetectedFieldsResult, LokiLanguageProviderWithDetectedLabelValues } from './TagValuesProviders';\nimport { LEVEL_VARIABLE_VALUE, ParserType, VAR_FIELDS_AND_METADATA, VAR_LEVELS } from './variables';\nimport { UIVariableFilterType } from '../Components/ServiceScene/Breakdowns/AddToFiltersButton';\nimport { ExpressionBuilder } from './ExpressionBuilder';\n\nexport async function getLabelsTagKeysProvider(variable: AdHocFiltersVariable): Promise<{\n replace?: boolean;\n values: GetTagResponse | MetricFindValue[];\n}> {\n const datasource_ = await getDataSourceSrv().get(getDataSource(variable));\n if (!(datasource_ instanceof DataSourceWithBackend)) {\n logger.error(new Error('getTagKeysProvider: Invalid datasource!'));\n throw new Error('Invalid datasource!');\n }\n const datasource = datasource_ as LokiDatasource;\n\n if (datasource && datasource.getTagKeys) {\n const filtersTransformer = new ExpressionBuilder(variable.state.filters);\n const filters = filtersTransformer.getJoinedLabelsFilters();\n\n const options: DataSourceGetTagKeysOptions = {\n filters,\n };\n\n const tagKeys = await datasource.getTagKeys(options);\n const result: MetricFindValue[] = Array.isArray(tagKeys) ? tagKeys : [];\n const filteredResult = result.filter((key) => !LABELS_TO_REMOVE.includes(key.text));\n\n return { replace: true, values: filteredResult };\n } else {\n logger.error(new Error('getTagKeysProvider: missing or invalid datasource!'));\n return { replace: true, values: [] };\n }\n}\n\ntype DetectedFieldQueryOptions = {\n expr: string;\n timeRange?: TimeRange;\n limit?: number;\n scopedVars?: ScopedVars;\n sceneRef: SceneObject;\n variableType: UIVariableFilterType;\n};\n\nexport async function getFieldsKeysProvider({\n limit,\n timeRange,\n scopedVars,\n expr,\n sceneRef,\n variableType,\n}: DetectedFieldQueryOptions): Promise<{\n replace?: boolean;\n values: MetricFindValue[];\n}> {\n const datasource_ = await getDataSourceSrv().get(getDataSource(sceneRef));\n if (!(datasource_ instanceof DataSourceWithBackend)) {\n logger.error(new Error('getTagKeysProvider: Invalid datasource!'));\n throw new Error('Invalid datasource!');\n }\n const datasource = datasource_ as LokiDatasource;\n const languageProvider = datasource.languageProvider as LokiLanguageProviderWithDetectedLabelValues;\n\n const options: DetectedFieldQueryOptions = {\n expr,\n timeRange,\n scopedVars,\n variableType,\n sceneRef,\n limit,\n };\n\n // @todo delete after min supported grafana is upgraded to >=11.6\n // see ced526b3e37baded9082ffc3c2378a21201801b6 before this all got messed up\n const fetchDetectedFieldsFn =\n (datasource &&\n typeof languageProvider.fetchDetectedFields === 'function' &&\n languageProvider.fetchDetectedFields.bind(languageProvider)) ||\n function (opts: DetectedFieldQueryOptions) {\n return fetchDetectedFields(datasource, opts);\n };\n\n // fetchDetectedFields did not make the 11.5 cutoff, so is only available in 11.6, to keep this PR from needing to wait for 2 months before release, we're going to copy over the implementation into Grafana Logs Drilldown\n if (fetchDetectedFieldsFn && typeof fetchDetectedFieldsFn === 'function') {\n const tagKeys: DetectedFieldsResult | Error = await fetchDetectedFieldsFn(options);\n\n if (tagKeys instanceof Error) {\n logger.error(tagKeys, { msg: 'Failed to fetch detected fields' });\n throw tagKeys;\n }\n\n const result: MetricFindValue[] = tagKeys\n .filter((field) => {\n if (variableType === VAR_LEVELS) {\n return field.label === LEVEL_VARIABLE_VALUE;\n }\n\n if (variableType === VAR_FIELDS_AND_METADATA && field.label !== LEVEL_VARIABLE_VALUE) {\n return true;\n }\n\n return field.parsers !== null;\n })\n .map((field) => {\n if (variableType === VAR_FIELDS_AND_METADATA) {\n let parser: ParserType = field.parsers?.length === 1 ? field.parsers[0] : 'mixed';\n if (field.parsers === null) {\n parser = 'structuredMetadata';\n }\n\n const type = field.type;\n\n return {\n text: field.label,\n value: field.label,\n group: parser,\n meta: {\n parser,\n type,\n },\n };\n }\n\n return { text: field.label, value: field.label };\n });\n\n result.sort((a, b) => {\n if (a.group === 'structuredMetadata' && b.group !== 'structuredMetadata') {\n return -1;\n }\n if (a.group !== 'structuredMetadata' && b.group === 'structuredMetadata') {\n return 1;\n }\n return 0;\n });\n\n return { replace: true, values: result };\n } else {\n logger.error(new Error('getTagKeysProvider: missing or invalid datasource!'));\n return { replace: true, values: [] };\n }\n}\n\nconst EMPTY_SELECTOR = '{}';\n// @todo delete after min supported grafana is upgraded to >=11.6\nasync function fetchDetectedFields(\n datasource: LokiDatasource,\n queryOptions: DetectedFieldQueryOptions,\n requestOptions?: Partial\n): Promise {\n if (!('interpolateString' in datasource) || typeof datasource?.interpolateString !== 'function') {\n throw new Error('Datasource missing interpolateString method');\n }\n\n const interpolatedExpr =\n queryOptions.expr && queryOptions.expr !== EMPTY_SELECTOR\n ? datasource.interpolateString(queryOptions.expr, queryOptions.scopedVars)\n : undefined;\n\n if (!interpolatedExpr) {\n throw new Error('fetchDetectedFields requires query expression');\n }\n\n const url = `detected_fields`;\n const range = queryOptions?.timeRange ?? getDefaultTimeRange();\n const rangeParams = datasource.getTimeRangeParams(range);\n const { start, end } = rangeParams;\n const params: KeyValue = { start, end, limit: queryOptions?.limit ?? 1000 };\n params.query = interpolatedExpr;\n\n return new Promise(async (resolve, reject) => {\n try {\n const data: { limit: number; fields: DetectedFieldsResult } = await datasource.getResource(\n url,\n params,\n requestOptions\n );\n resolve(data.fields);\n } catch (error) {\n console.error('error', error);\n reject(error);\n }\n });\n}\n","/**\n * Originally from https://github.com/ccampbell/mousetrap\n *\n * Copyright 2012-2017 Craig Campbell\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * Mousetrap is a simple keyboard shortcut library for Javascript with\n * no external dependencies\n *\n * @version 1.6.5\n * @url craig.is/killing/mice\n */\n\ninterface ExtendedKeyboardEvent extends KeyboardEvent {\n returnValue: boolean; // IE returnValue\n}\n\ntype MousetrapCallback = (e: ExtendedKeyboardEvent, combo: string) => boolean | void;\n\ninterface KeyInfo {\n key: string;\n modifiers: string[];\n action: string;\n}\n\ninterface CallbackInfo {\n /**\n * Modifiers (such as `ctrl`) involved in this binding\n */\n modifiers: string[];\n\n /**\n * A single key press binding, such as `t` (for `t v`) or `ctrl + z`\n */\n combo: string;\n\n /**\n * If this binding is a part of a sequence (`t v`, but not `ctrl + z`), this is the full sequence\n */\n seq?: string;\n\n /**\n * The event type, such as keydown, keyup, or keypress\n */\n action: string;\n level: number | undefined;\n callback: MousetrapCallback;\n}\n\n/**\n * mapping of special keycodes to their corresponding keys\n *\n * everything in this dictionary cannot use keypress events\n * so it has to be here to map to the correct keycodes for\n * keyup/keydown events\n */\nlet MAP: Record = {\n 8: 'backspace',\n 9: 'tab',\n 13: 'enter',\n 16: 'shift',\n 17: 'ctrl',\n 18: 'alt',\n 20: 'capslock',\n 27: 'esc',\n 32: 'space',\n 33: 'pageup',\n 34: 'pagedown',\n 35: 'end',\n 36: 'home',\n 37: 'left',\n 38: 'up',\n 39: 'right',\n 40: 'down',\n 45: 'ins',\n 46: 'del',\n 91: 'meta',\n 93: 'meta',\n 224: 'meta',\n};\n\n/**\n * mapping for special characters so they can support\n *\n * this dictionary is only used incase you want to bind a\n * keyup or keydown event to one of these keys\n */\nlet KEYCODE_MAP: Record = {\n 106: '*',\n 107: '+',\n 109: '-',\n 110: '.',\n 111: '/',\n 186: ';',\n 187: '=',\n 188: ',',\n 189: '-',\n 190: '.',\n 191: '/',\n 192: '`',\n 219: '[',\n 220: '\\\\',\n 221: ']',\n 222: \"'\",\n};\n\n/**\n * this is a mapping of keys that require shift on a US keypad\n * back to the non shift equivalents\n *\n * this is so you can use keyup events with these keys\n *\n * note that this will only work reliably on US keyboards\n */\nlet SHIFT_MAP: Record = {\n '~': '`',\n '!': '1',\n '@': '2',\n '#': '3',\n $: '4',\n '%': '5',\n '^': '6',\n '&': '7',\n '*': '8',\n '(': '9',\n ')': '0',\n _: '-',\n '+': '=',\n ':': ';',\n '\"': \"'\",\n '<': ',',\n '>': '.',\n '?': '/',\n '|': '\\\\',\n};\n\n/**\n * this is a list of special strings you can use to map\n * to modifier keys when you specify your keyboard shortcuts\n */\nlet SPECIAL_ALIASES: Record = {\n option: 'alt',\n command: 'meta',\n return: 'enter',\n escape: 'esc',\n plus: '+',\n mod: /Mac|iPod|iPhone|iPad/.test(navigator.platform) ? 'meta' : 'ctrl',\n};\n\n/**\n * variable to store the flipped version of _MAP from above\n * needed to check if we should use keypress or not when no action\n * is specified\n */\nlet REVERSE_MAP: Record | null = null;\n\n/**\n * loop through the f keys, f1 to f19 and add them to the map\n * programmatically\n */\nfor (let i = 1; i < 20; ++i) {\n MAP[111 + i] = 'f' + i;\n}\n\n/**\n * loop through to map numbers on the numeric keypad\n */\nfor (let i = 0; i <= 9; ++i) {\n // This needs to use a string cause otherwise since 0 is falsey\n // mousetrap will never fire for numpad 0 pressed as part of a keydown\n // event.\n //\n // @see https://github.com/ccampbell/mousetrap/pull/258\n MAP[i + 96] = i.toString();\n}\n\n/**\n * takes the event and returns the key character\n */\nfunction characterFromEvent(event: KeyboardEvent): string {\n // for keypress events we should return the character as is\n if (event.type === 'keypress') {\n let character = String.fromCharCode(event.which);\n\n // if the shift key is not pressed then it is safe to assume\n // that we want the character to be lowercase. this means if\n // you accidentally have caps lock on then your key bindings\n // will continue to work\n //\n // the only side effect that might not be desired is if you\n // bind something like 'A' cause you want to trigger an\n // event when capital A is pressed caps lock will no longer\n // trigger the event. shift+a will though.\n if (!event.shiftKey) {\n character = character.toLowerCase();\n }\n\n return character;\n }\n\n // for non keypress events the special maps are needed\n if (MAP[event.which]) {\n return MAP[event.which];\n }\n\n if (KEYCODE_MAP[event.which]) {\n return KEYCODE_MAP[event.which];\n }\n\n // if it is not in the special map\n\n // with keydown and keyup events the character seems to always\n // come in as an uppercase character whether you are pressing shift\n // or not. we should make sure it is always lowercase for comparisons\n return String.fromCharCode(event.which).toLowerCase();\n}\n\n/**\n * checks if two arrays are equal\n */\nfunction modifiersMatch(modifiers1: string[], modifiers2: string[]): boolean {\n return modifiers1.sort().join(',') === modifiers2.sort().join(',');\n}\n\n/**\n * takes a key event and figures out what the modifiers are\n */\nfunction eventModifiers(event: KeyboardEvent): string[] {\n let modifiers = [];\n\n if (event.shiftKey) {\n modifiers.push('shift');\n }\n\n if (event.altKey) {\n modifiers.push('alt');\n }\n\n if (event.ctrlKey) {\n modifiers.push('ctrl');\n }\n\n if (event.metaKey) {\n modifiers.push('meta');\n }\n\n return modifiers;\n}\n\n/**\n * prevents default for this event\n */\nfunction preventDefault(event: KeyboardEvent): void {\n if (event.preventDefault) {\n event.preventDefault();\n return;\n }\n\n event.returnValue = false;\n}\n\n/**\n * stops propagation for this event\n */\nfunction stopPropagation(event: KeyboardEvent): void {\n if (event.stopPropagation) {\n event.stopPropagation();\n return;\n }\n\n event.cancelBubble = true;\n}\n\n/**\n * determines if the keycode specified is a modifier key or not\n */\nfunction isModifier(key: string): boolean {\n return key === 'shift' || key === 'ctrl' || key === 'alt' || key === 'meta';\n}\n\n/**\n * reverses the map lookup so that we can look for specific keys\n * to see what can and can't use keypress\n */\nfunction getReverseMap() {\n if (!REVERSE_MAP) {\n REVERSE_MAP = {};\n for (let key in MAP) {\n const keyNumber = parseInt(key, 10);\n // pull out the numeric keypad from here cause keypress should\n // be able to detect the keys from the character\n if (keyNumber > 95 && keyNumber < 112) {\n continue;\n }\n\n if (MAP.hasOwnProperty(key)) {\n REVERSE_MAP[MAP[key]] = key;\n }\n }\n }\n return REVERSE_MAP;\n}\n\n/**\n * picks the best action based on the key combination\n */\nfunction pickBestAction(key: string, modifiers: string[], action?: string): string {\n // if no action was picked in we should try to pick the one\n // that we think would work best for this key\n if (!action) {\n action = getReverseMap()[key] ? 'keydown' : 'keypress';\n }\n\n // modifier keys don't work as expected with keypress,\n // switch to keydown\n if (action === 'keypress' && modifiers.length) {\n action = 'keydown';\n }\n\n return action;\n}\n\n/**\n * Converts from a string key combination to an array\n */\nfunction keysFromString(combination: string): string[] {\n if (combination === '+') {\n return ['+'];\n }\n\n combination = combination.replace(/\\+{2}/g, '+plus');\n return combination.split('+');\n}\n\n/**\n * Gets info for a specific key combination\n */\nfunction getKeyInfo(combination: string, action?: string): KeyInfo {\n let keys;\n let key;\n let i;\n let modifiers = [];\n\n // take the keys from this pattern and figure out what the actual\n // pattern is all about\n keys = keysFromString(combination);\n\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n\n // normalize key names\n if (SPECIAL_ALIASES[key]) {\n key = SPECIAL_ALIASES[key];\n }\n\n // if this is not a keypress event then we should\n // be smart about using shift keys\n // this will only work for US keyboards however\n if (action && action !== 'keypress' && SHIFT_MAP[key]) {\n key = SHIFT_MAP[key];\n modifiers.push('shift');\n }\n\n // if this key is a modifier then add it to the list of modifiers\n if (isModifier(key)) {\n modifiers.push(key);\n }\n }\n\n if (!key) {\n throw new Error('Unable to get key');\n }\n\n // depending on what the key combination is\n // we will try to pick the best event for it\n action = pickBestAction(key, modifiers, action);\n\n return {\n key: key,\n modifiers: modifiers,\n action: action,\n };\n}\n\nfunction belongsTo(element: null | ParentNode | Element | Document, ancestor: Element | Document): boolean {\n if (element === null || element === document) {\n return false;\n }\n\n if (element === ancestor) {\n return true;\n }\n\n return belongsTo(element.parentNode, ancestor);\n}\n\nexport class Mousetrap {\n target: HTMLElement | Document;\n\n /**\n * a list of all the callbacks setup via Mousetrap.bind()\n */\n _callbacks: Record = {};\n\n /**\n * direct map of string combinations to callbacks used for trigger()\n */\n _directMap: Record = {};\n\n /**\n * keeps track of what level each sequence is at since multiple\n * sequences can start out with the same sequence\n */\n _sequenceLevels: Record = {};\n\n /**\n * variable to store the setTimeout call\n */\n _resetTimer: undefined | number = undefined;\n\n /**\n * temporary state where we will ignore the next keyup\n */\n _ignoreNextKeyup: boolean | string = false;\n\n /**\n * temporary state where we will ignore the next keypress\n */\n _ignoreNextKeypress = false;\n\n /**\n * are we currently inside of a sequence?\n * type of action (\"keyup\" or \"keydown\" or \"keypress\") or false\n */\n _nextExpectedAction: boolean | string = false;\n\n _globalCallbacks: Record = {};\n\n constructor(el: HTMLElement | Document) {\n this.target = el;\n\n this.target.addEventListener('keypress', (event) => {\n if (event instanceof KeyboardEvent) {\n this._handleKeyEvent(event);\n }\n });\n this.target.addEventListener('keydown', (event) => {\n if (event instanceof KeyboardEvent) {\n this._handleKeyEvent(event);\n }\n });\n this.target.addEventListener('keyup', (event) => {\n if (event instanceof KeyboardEvent) {\n this._handleKeyEvent(event);\n }\n });\n }\n\n /**\n * resets all sequence counters except for the ones passed in\n */\n private _resetSequences = (doNotReset: Record): void => {\n doNotReset = doNotReset || {};\n\n let activeSequences = false,\n key;\n\n for (key in this._sequenceLevels) {\n if (doNotReset[key]) {\n activeSequences = true;\n continue;\n }\n this._sequenceLevels[key] = 0;\n }\n\n if (!activeSequences) {\n this._nextExpectedAction = false;\n }\n };\n\n /**\n * finds all callbacks that match based on the keycode, modifiers,\n * and action\n */\n private _getMatches = (\n character: string,\n modifiers: string[],\n event: Pick,\n sequenceName?: string,\n combination?: string,\n level?: number\n ): CallbackInfo[] => {\n let i;\n let callback;\n let matches = [];\n let action = event.type;\n\n // if there are no events related to this keycode\n if (!this._callbacks[character]) {\n return [];\n }\n\n // if a modifier key is coming up on its own we should allow it\n if (action === 'keyup' && isModifier(character)) {\n modifiers = [character];\n }\n\n // loop through all callbacks for the key that was pressed\n // and see if any of them match\n for (i = 0; i < this._callbacks[character].length; ++i) {\n callback = this._callbacks[character][i];\n\n // if a sequence name is not specified, but this is a sequence at\n // the wrong level then move onto the next match\n if (!sequenceName && callback.seq && this._sequenceLevels[callback.seq] !== callback.level) {\n continue;\n }\n\n // if the action we are looking for doesn't match the action we got\n // then we should keep going\n if (action !== callback.action) {\n continue;\n }\n\n // if this is a keypress event and the meta key and control key\n // are not pressed that means that we need to only look at the\n // character, otherwise check the modifiers as well\n //\n // chrome will not fire a keypress if meta or control is down\n // safari will fire a keypress if meta or meta+shift is down\n // firefox will fire a keypress if meta or control is down\n if (\n (action === 'keypress' && !event.metaKey && !event.ctrlKey) ||\n modifiersMatch(modifiers, callback.modifiers)\n ) {\n // when you bind a combination or sequence a second time it\n // should overwrite the first one. if a sequenceName or\n // combination is specified in this call it does just that\n //\n // @todo make deleting its own method?\n let deleteCombo = !sequenceName && callback.combo === combination;\n let deleteSequence = sequenceName && callback.seq === sequenceName && callback.level === level;\n if (deleteCombo || deleteSequence) {\n this._callbacks[character].splice(i, 1);\n }\n\n matches.push(callback);\n }\n }\n\n return matches;\n };\n\n /**\n * actually calls the callback function\n *\n * if your callback function returns false this will use the jquery\n * convention - prevent default and stop propagation on the event\n *\n * @param combo Is the key binding that triggered this callback. When a sequence is triggered, this is the whole sequence. Otherwise, it's the intermediate keys\n * @param sequence Is the 'parent sequence' of the combo. When the whole sequence is triggered, this is undefined.\n */\n private _fireCallback = (callback: Function, e: KeyboardEvent, combo: string, sequence?: string) => {\n // if this event should not happen stop here\n const target = e.target || e.srcElement;\n if (target && target instanceof HTMLElement && this.stopCallback(e, target, combo, sequence)) {\n return;\n }\n\n if (callback(e, combo) === false) {\n preventDefault(e);\n stopPropagation(e);\n }\n };\n\n /**\n * handles a character key event\n */\n private _handleKey = (character: string, modifiers: string[], e: KeyboardEvent) => {\n let callbacks = this._getMatches(character, modifiers, e);\n let i;\n let doNotReset: Record = {};\n let maxLevel = 0;\n let processedSequenceCallback = false;\n\n // Calculate the maxLevel for sequences so we can only execute the longest callback sequence\n for (i = 0; i < callbacks.length; ++i) {\n if (callbacks[i].seq) {\n maxLevel = Math.max(maxLevel, callbacks[i].level ?? 0);\n }\n }\n\n // loop through matching callbacks for this key event\n for (i = 0; i < callbacks.length; ++i) {\n // fire for all sequence callbacks\n // this is because if for example you have multiple sequences\n // bound such as \"g i\" and \"g t\" they both need to fire the\n // callback for matching g cause otherwise you can only ever\n // match the first one\n const seq = callbacks[i].seq;\n if (seq) {\n // only fire callbacks for the maxLevel to prevent\n // subsequences from also firing\n //\n // for example 'a option b' should not cause 'option b' to fire\n // even though 'option b' is part of the other sequence\n //\n // any sequences that do not match here will be discarded\n // below by the _resetSequences call\n if (callbacks[i].level !== maxLevel) {\n continue;\n }\n\n processedSequenceCallback = true;\n\n // keep a list of which sequences were matches for later\n doNotReset[seq] = 1;\n this._fireCallback(callbacks[i].callback, e, callbacks[i].combo, seq);\n\n // When matching a callback, don't reset other callbacks that starts with this prefix\n // This allows chaining of multiple shortcuts that share a prefix. e.g. if we have\n // `t left` and `t right`, allow user to hit `t left`, `right` without resetting the sequence\n const suffixPrefixIndex = seq.lastIndexOf(character);\n const sequencePrefix = seq.slice(0, suffixPrefixIndex);\n for (const [seq, level] of Object.entries(this._sequenceLevels)) {\n if (level > 0 && seq.startsWith(sequencePrefix)) {\n doNotReset[seq] = 1;\n }\n }\n\n continue;\n }\n\n // if there were no sequence matches but we are still here\n // that means this is a regular match so we should fire that\n if (!processedSequenceCallback) {\n this._fireCallback(callbacks[i].callback, e, callbacks[i].combo);\n }\n }\n\n // Don't reset a sequence if this character is the start of a sequence that has already progressed.\n // This allows `t left` to be hit immediately after a `t right`\n for (const callback of this._callbacks[character] ?? []) {\n if (callback.action === e.type && callback.seq && callback.level === 0) {\n doNotReset[callback.seq] = 1;\n }\n }\n\n // if the key you pressed matches the type of sequence without\n // being a modifier (ie \"keyup\" or \"keypress\") then we should\n // reset all sequences that were not matched by this event\n //\n // this is so, for example, if you have the sequence \"h a t\" and you\n // type \"h e a r t\" it does not match. in this case the \"e\" will\n // cause the sequence to reset\n //\n // modifier keys are ignored because you can have a sequence\n // that contains modifiers such as \"enter ctrl+space\" and in most\n // cases the modifier key will be pressed before the next key\n //\n // also if you have a sequence such as \"ctrl+b a\" then pressing the\n // \"b\" key will trigger a \"keypress\" and a \"keydown\"\n //\n // the \"keydown\" is expected when there is a modifier, but the\n // \"keypress\" ends up matching the _nextExpectedAction since it occurs\n // after and that causes the sequence to reset\n //\n // we ignore keypresses in a sequence that directly follow a keydown\n // for the same character\n let ignoreThisKeypress = e.type === 'keypress' && this._ignoreNextKeypress;\n if (e.type === this._nextExpectedAction && !isModifier(character) && !ignoreThisKeypress) {\n this._resetSequences(doNotReset);\n }\n\n this._ignoreNextKeypress = processedSequenceCallback && e.type === 'keydown';\n };\n\n /**\n * handles a keydown event\n */\n private _handleKeyEvent = (rawEvent: Event) => {\n if (!(rawEvent instanceof KeyboardEvent)) {\n throw new Error(\"Didn't get a KeyboardEvent\");\n }\n const event: KeyboardEvent = rawEvent;\n\n // Don't trigger shortcuts when a key is just held down\n if (event.repeat) {\n return;\n }\n\n // normalize e.which for key events\n // @see http://stackoverflow.com/questions/4285627/javascript-keycode-vs-charcode-utter-confusion\n if (typeof event.which !== 'number') {\n // @ts-expect-error - TODO: determine what to do with this compat\n event.which = event.keyCode;\n }\n\n let character = characterFromEvent(event);\n\n // no character found then stop\n if (!character) {\n return;\n }\n\n // need to use === for the character check because the character can be 0\n if (event.type === 'keyup' && this._ignoreNextKeyup === character) {\n this._ignoreNextKeyup = false;\n return;\n }\n\n this.handleKey(character, eventModifiers(event), event);\n };\n\n /**\n * called to set a 1 second timeout on the specified sequence\n *\n * this is so after each key press in the sequence you have 1 second\n * to press the next key before you have to start over\n */\n private _resetSequenceTimer = () => {\n clearTimeout(this._resetTimer);\n this._resetTimer = setTimeout(this._resetSequences, 1000);\n };\n\n /**\n * binds a key sequence to an event\n */\n private _bindSequence = (combo: string, keys: string[], callback: MousetrapCallback, action?: string): void => {\n // start off by adding a sequence level record for this combination\n // and setting the level to 0\n this._sequenceLevels[combo] = 0;\n\n /**\n * callback to increase the sequence level for this sequence and reset\n * all other sequences that were active\n */\n const _increaseSequence = (nextAction: string): MousetrapCallback => {\n return () => {\n this._nextExpectedAction = nextAction;\n ++this._sequenceLevels[combo];\n this._resetSequenceTimer();\n };\n };\n\n /**\n * wraps the specified callback inside of another function in order\n * to reset all sequence counters as soon as this sequence is done\n */\n const _callbackAndReset = (e: KeyboardEvent): void => {\n this._fireCallback(callback, e, combo);\n\n // we should ignore the next key up if the action is key down\n // or keypress. this is so if you finish a sequence and\n // release the key the final key will not trigger a keyup\n if (action !== 'keyup') {\n this._ignoreNextKeyup = characterFromEvent(e);\n }\n\n // Reset the sequence timer and allow for this shortcut to be\n // triggered again just by repeating the last key\n this._resetSequenceTimer();\n };\n\n // loop through keys one at a time and bind the appropriate callback\n // function. for any key leading up to the final one it should\n // increase the sequence. after the final, it should reset all sequences\n //\n // if an action is specified in the original bind call then that will\n // be used throughout. otherwise we will pass the action that the\n // next key in the sequence should match. this allows a sequence\n // to mix and match keypress and keydown events depending on which\n // ones are better suited to the key provided\n for (let i = 0; i < keys.length; ++i) {\n let isFinal = i + 1 === keys.length;\n let wrappedCallback = isFinal ? _callbackAndReset : _increaseSequence(action || getKeyInfo(keys[i + 1]).action);\n this._bindSingle(keys[i], wrappedCallback, action, combo, i);\n }\n };\n\n /**\n * binds a single keyboard combination\n */\n private _bindSingle = (\n combination: string,\n callback: MousetrapCallback,\n action?: string,\n sequenceName?: string,\n level?: number\n ): void => {\n // store a direct mapped reference for use with Mousetrap.trigger\n this._directMap[combination + ':' + action] = callback;\n\n // make sure multiple spaces in a row become a single space\n combination = combination.replace(/\\s+/g, ' ');\n\n let sequence = combination.split(' ');\n let info;\n\n // if this pattern is a sequence of keys then run through this method\n // to reprocess each pattern one key at a time\n if (sequence.length > 1) {\n this._bindSequence(combination, sequence, callback, action);\n return;\n }\n\n info = getKeyInfo(combination, action);\n\n // make sure to initialize array if this is the first time\n // a callback is added for this key\n this._callbacks[info.key] = this._callbacks[info.key] || [];\n\n // remove an existing match if there is one\n const eventLike = { type: info.action, metaKey: false, ctrlKey: false };\n this._getMatches(info.key, info.modifiers, eventLike, sequenceName, combination, level);\n\n const callbackInfo: CallbackInfo = {\n callback: callback,\n modifiers: info.modifiers,\n action: info.action,\n seq: sequenceName,\n level: level,\n combo: combination,\n };\n\n // add this call back to the array\n // if it is a sequence put it at the beginning\n // if not put it at the end\n //\n // this is important because the way these are processed expects\n // the sequence ones to come first\n this._callbacks[info.key][sequenceName ? 'unshift' : 'push'](callbackInfo);\n };\n\n /**\n * binds multiple combinations to the same callback\n */\n private _bindMultiple = (combinations: string[], callback: MousetrapCallback, action: string | undefined): void => {\n for (let i = 0; i < combinations.length; ++i) {\n this._bindSingle(combinations[i], callback, action);\n }\n };\n\n /**\n * binds an event to mousetrap\n *\n * can be a single key, a combination of keys separated with +,\n * an array of keys, or a sequence of keys separated by spaces\n *\n * be sure to list the modifier keys first to make sure that the\n * correct key ends up getting bound (the last key in the pattern)\n */\n bind = (keys: string | string[], callback: MousetrapCallback, action?: string) => {\n keys = keys instanceof Array ? keys : [keys];\n this._bindMultiple(keys, callback, action);\n return self;\n };\n\n /**\n * unbinds an event to mousetrap\n *\n * the unbinding sets the callback function of the specified key combo\n * to an empty function and deletes the corresponding key in the\n * _directMap dict.\n *\n * TODO: actually remove this from the _callbacks dictionary instead\n * of binding an empty function\n *\n * the keycombo+action has to be exactly the same as\n * it was defined in the bind method\n */\n unbind = (keys: string | string[], action?: string) => {\n return this.bind(keys, function () {}, action);\n };\n\n // From bind-global plugin\n // https://github.com/Elvynia/mousetrap-global-bind/blob/master/mousetrap-global-bind.js#L28\n bindGlobal = (keys: string | string[], callback: MousetrapCallback, action?: string) => {\n this.bind(keys, callback, action);\n\n if (keys instanceof Array) {\n for (let i = 0; i < keys.length; i++) {\n this._globalCallbacks[keys[i]] = true;\n }\n return;\n }\n\n this._globalCallbacks[keys] = true;\n };\n\n // From bind-global plugin\n // https://github.com/Elvynia/mousetrap-global-bind/blob/master/mousetrap-global-bind.js#L42\n unbindGlobal = (keys: string | string[], action?: string) => {\n this.unbind(keys, action);\n\n if (keys instanceof Array) {\n for (let i = 0; i < keys.length; i++) {\n this._globalCallbacks[keys[i]] = false;\n }\n return;\n }\n\n this._globalCallbacks[keys] = false;\n };\n\n /**\n * triggers an event that has already been bound\n */\n trigger = (keys: string, action: string | undefined) => {\n let self = this;\n if (self._directMap[keys + ':' + action]) {\n self._directMap[keys + ':' + action]({}, keys);\n }\n return self;\n };\n\n /**\n * resets the library back to its initial state. this is useful\n * if you want to clear out the current keyboard shortcuts and bind\n * new ones - for example if you switch to another page\n */\n reset = () => {\n this._callbacks = {};\n this._directMap = {};\n return this;\n };\n\n /**\n * should we stop this event before firing off callbacks\n */\n stopCallback = (e: Event, element: HTMLElement, combo: string, sequence?: string): boolean => {\n // From global bind plugin https://github.com/Elvynia/mousetrap-global-bind/blob/master/mousetrap-global-bind.js\n if (this._globalCallbacks[combo] || (sequence && this._globalCallbacks[sequence])) {\n return false;\n }\n\n // if the element has the class \"mousetrap\" then no need to stop\n if ((' ' + element.className + ' ').indexOf(' mousetrap ') > -1) {\n return false;\n }\n\n if (belongsTo(element, this.target)) {\n return false;\n }\n\n // Events originating from a shadow DOM are re-targetted and `e.target` is the shadow host,\n // not the initial event target in the shadow tree. Note that not all events cross the\n // shadow boundary.\n // For shadow trees with `mode: 'open'`, the initial event target is the first element in\n // the event’s composed path. For shadow trees with `mode: 'closed'`, the initial event\n // target cannot be obtained.\n if ('composedPath' in e && typeof e.composedPath === 'function') {\n // For open shadow trees, update `element` so that the following check works.\n let initialEventTarget = e.composedPath()[0];\n if (initialEventTarget !== e.target && initialEventTarget instanceof HTMLElement) {\n element = initialEventTarget;\n }\n }\n\n // stop for input, select, and textarea\n return Boolean(\n element.tagName === 'INPUT' ||\n element.tagName === 'SELECT' ||\n element.tagName === 'TEXTAREA' ||\n ('isContentEditable' in element && element.isContentEditable)\n );\n };\n\n /**\n * exposes _handleKey publicly so it can be overwritten by extensions\n */\n handleKey: typeof this._handleKey = (...args) => {\n return this._handleKey(...args);\n };\n\n /**\n * allow custom key mappings\n */\n addKeycodes = (object: Record) => {\n for (let key in object) {\n if (object.hasOwnProperty(key)) {\n MAP[key] = object[key];\n }\n }\n REVERSE_MAP = null;\n };\n}\n","import { Mousetrap } from './Mousetrap';\n\nexport const mousetrap = new Mousetrap(document);\n\nexport interface KeyBindingItem {\n /** Key or key pattern like mod+o */\n key: string;\n /** Defaults to keydown */\n type?: string;\n /** The handler callback */\n onTrigger: () => void;\n}\n\n/**\n * Small util to make it easier to add and unbind Mousetrap keybindings\n */\nexport class KeybindingSet {\n private _binds: KeyBindingItem[] = [];\n\n addBinding(item: KeyBindingItem) {\n mousetrap.bind(\n item.key,\n (evt) => {\n evt.preventDefault();\n evt.stopPropagation();\n evt.returnValue = false;\n item.onTrigger();\n },\n 'keydown'\n );\n this._binds.push(item);\n }\n\n removeAll() {\n this._binds.forEach((item) => {\n mousetrap.unbind(item.key, item.type);\n });\n this._binds = [];\n }\n}\n","import { IndexScene } from '../Components/IndexScene/IndexScene';\nimport { KeybindingSet } from './KeybindingSet';\nimport { getAppEvents, locationService } from '@grafana/runtime';\nimport { BusEventBase, BusEventWithPayload, RawTimeRange, SetPanelAttentionEvent } from '@grafana/data';\nimport { sceneGraph, SceneObject, VizPanel } from '@grafana/scenes';\nimport { getExploreLink } from '../Components/Panels/PanelMenu';\nimport { getTimePicker } from './scenes';\nimport { OptionsWithLegend } from '@grafana/ui';\nimport { narrowTimeRange } from './narrowing';\n\nconst appEvents = getAppEvents();\n\nexport function setupKeyboardShortcuts(scene: IndexScene) {\n const keybindings = new KeybindingSet();\n let vizPanelKey: string | null = null;\n\n const panelAttentionSubscription = appEvents.subscribe(SetPanelAttentionEvent, (event) => {\n if (typeof event.payload.panelId === 'string') {\n vizPanelKey = event.payload.panelId;\n }\n });\n\n function withFocusedPanel(scene: IndexScene, fn: (vizPanel: VizPanel) => void) {\n return () => {\n const vizPanel = sceneGraph.findObject(scene, (o) => o.state.key === vizPanelKey && o.isActive);\n if (vizPanel && vizPanel instanceof VizPanel) {\n fn(vizPanel);\n return;\n }\n };\n }\n\n function withAllPanels(scene: IndexScene, fn: (vizPanel: VizPanel) => void) {\n return () => {\n const vizPanels = sceneGraph.findAllObjects(scene, (o) => o instanceof VizPanel && o.isActive);\n vizPanels.forEach((vizPanel) => {\n if (vizPanel && vizPanel instanceof VizPanel) {\n fn(vizPanel);\n }\n });\n };\n }\n\n // Toggle legend\n keybindings.addBinding({\n key: 'p l',\n onTrigger: withFocusedPanel(scene, toggleVizPanelLegend),\n });\n\n // Toggle all legend\n keybindings.addBinding({\n key: 'a l',\n onTrigger: withAllPanels(scene, toggleVizPanelLegend),\n });\n\n // Go to Explore for panel\n keybindings.addBinding({\n key: 'p x',\n onTrigger: withFocusedPanel(scene, async (vizPanel: VizPanel) => {\n const url = getExploreLink(vizPanel);\n if (url) {\n locationService.push(url);\n }\n }),\n });\n\n // Copy time range\n keybindings.addBinding({\n key: 't c',\n onTrigger: () => {\n const timeRange = sceneGraph.getTimeRange(scene);\n setWindowGrafanaSceneContext(timeRange);\n appEvents.publish(new CopyTimeEvent());\n },\n });\n\n // Paste time range\n keybindings.addBinding({\n key: 't v',\n onTrigger: () => {\n const event = new PasteTimeEvent({ updateUrl: false });\n scene.publishEvent(event);\n appEvents.publish(event);\n },\n });\n\n // Refresh\n keybindings.addBinding({\n key: 'd r',\n onTrigger: () => sceneGraph.getTimeRange(scene).onRefresh(),\n });\n\n // Zoom out\n keybindings.addBinding({\n key: 't z',\n onTrigger: () => {\n handleZoomOut(scene);\n },\n });\n\n // Zoom out alias\n keybindings.addBinding({\n key: 'ctrl+z',\n onTrigger: () => {\n handleZoomOut(scene);\n },\n });\n\n // Relative -> Absolute time range\n keybindings.addBinding({\n key: 't a',\n onTrigger: () => {\n const timePicker = getTimePicker(scene);\n timePicker?.toAbsolute();\n },\n });\n\n keybindings.addBinding({\n key: 't left',\n onTrigger: () => {\n handleTimeRangeShift(scene, 'left');\n },\n });\n keybindings.addBinding({\n key: 't right',\n onTrigger: () => {\n handleTimeRangeShift(scene, 'right');\n },\n });\n return () => {\n keybindings.removeAll();\n panelAttentionSubscription.unsubscribe();\n };\n}\n\nfunction handleZoomOut(scene: IndexScene) {\n const timePicker = getTimePicker(scene);\n timePicker?.onZoom();\n}\n\nfunction handleTimeRangeShift(scene: IndexScene, direction: 'left' | 'right') {\n const timePicker = getTimePicker(scene);\n\n if (!timePicker) {\n return;\n }\n\n if (direction === 'left') {\n timePicker.onMoveBackward();\n }\n if (direction === 'right') {\n timePicker.onMoveForward();\n }\n}\n\nexport function toggleVizPanelLegend(vizPanel: VizPanel): void {\n const options = vizPanel.state.options;\n if (hasLegendOptions(options) && typeof options.legend.showLegend === 'boolean') {\n vizPanel.onOptionsChange({\n legend: {\n showLegend: options.legend.showLegend ? false : true,\n },\n });\n }\n}\n\nfunction hasLegendOptions(optionsWithLegend: unknown): optionsWithLegend is OptionsWithLegend {\n return optionsWithLegend != null && typeof optionsWithLegend === 'object' && 'legend' in optionsWithLegend;\n}\n\n// Copied from https://github.com/grafana/grafana/blob/main/public/app/types/events.ts\n// @todo export from core grafana\nexport class CopyTimeEvent extends BusEventBase {\n static type = 'copy-time';\n}\n\n// Copied from https://github.com/grafana/grafana/blob/main/public/app/types/events.ts\n// @todo export from core grafana\ninterface PasteTimeEventPayload {\n updateUrl?: boolean;\n timeRange?: string;\n}\n\n// Copied from https://github.com/grafana/grafana/blob/main/public/app/types/events.ts\n// @todo export from core grafana\nexport class PasteTimeEvent extends BusEventWithPayload {\n static type = 'paste-time';\n}\n\n/**\n * Adds the scene object to the global window state so that templateSrv in core can interpolate strings using the scene interpolation engine with the scene as scope.\n * This is needed for old datasources that call templateSrv.replace without passing scopedVars. For example in DataSourceAPI.metricFindQuery.\n *\n * This is also used from TimeSrv to access scene time range.\n *\n * @todo delete after https://github.com/grafana/scenes/pull/999 is available\n */\nexport function setWindowGrafanaSceneContext(activeScene: SceneObject) {\n const prevScene = (window as any).__grafanaSceneContext;\n\n (window as any).__grafanaSceneContext = activeScene;\n\n return () => {\n if ((window as any).__grafanaSceneContext === activeScene) {\n (window as any).__grafanaSceneContext = prevScene;\n }\n };\n}\n\n// taken from /Users/galen/projects/grafana/grafana/public/app/core/utils/timePicker.ts\ntype CopiedTimeRangeResult = { range: RawTimeRange; isError: false } | { range: string; isError: true };\n// modified to narrow types from clipboard\nexport async function getCopiedTimeRange(): Promise {\n const raw = await navigator.clipboard.readText();\n let unknownRange: unknown;\n\n try {\n unknownRange = JSON.parse(raw);\n const range = narrowTimeRange(unknownRange);\n if (range) {\n return { isError: false, range };\n }\n } catch (e) {}\n return { range: raw, isError: true };\n}\n","import React from 'react';\nimport { useStyles2, useTheme2 } from '@grafana/ui';\nimport SVG from 'react-inlinesvg';\nimport { GrafanaTheme2, locationUtil } from '@grafana/data';\nimport { css } from '@emotion/css';\n\nexport const NoLokiSplash = () => {\n const styles = useStyles2(getStyles);\n const theme = useTheme2();\n return (\n
\n
\n \n
\n
\n

Welcome to Grafana Logs Drilldown

\n\n

\n We noticed there is no Loki datasource configured.\n
\n Add a{' '}\n \n Loki datasource\n {' '}\n to view logs.\n

\n\n
\n\n

\n Click{' '}\n \n here\n {' '}\n to learn more...\n

\n
\n
\n );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => {\n return {\n graphicContainer: css({\n display: 'flex',\n justifyContent: 'center',\n margin: '0 auto',\n width: '200px',\n height: '250px',\n padding: theme.spacing(1),\n [theme.breakpoints.up('md')]: {\n alignSelf: 'flex-end',\n width: '300px',\n height: 'auto',\n padding: theme.spacing(1),\n },\n [theme.breakpoints.up('lg')]: {\n alignSelf: 'flex-end',\n width: '400px',\n height: 'auto',\n padding: theme.spacing(1),\n },\n }),\n\n text: css({\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n flexDirection: 'column',\n }),\n title: css({\n marginBottom: '1.5rem',\n }),\n wrap: css({\n [theme.breakpoints.up('md')]: {\n margin: '4rem auto auto auto',\n flexDirection: 'row',\n },\n padding: '2rem',\n margin: '0 auto auto auto',\n display: 'flex',\n alignItems: 'center',\n flexDirection: 'column',\n textAlign: 'center',\n }),\n };\n};\n","import React from 'react';\n\nimport { AdHocVariableFilter, AppEvents, AppPluginMeta, rangeUtil } from '@grafana/data';\nimport {\n AdHocFiltersVariable,\n AdHocFilterWithLabels,\n CustomVariable,\n DataSourceVariable,\n SceneComponentProps,\n SceneFlexItem,\n SceneFlexLayout,\n sceneGraph,\n SceneObject,\n SceneObjectBase,\n SceneObjectState,\n SceneObjectUrlSyncConfig,\n SceneObjectUrlValues,\n SceneRefreshPicker,\n SceneTimePicker,\n SceneTimeRange,\n SceneTimeRangeLike,\n SceneTimeRangeState,\n SceneVariableSet,\n} from '@grafana/scenes';\nimport {\n AppliedPattern,\n AdHocFiltersWithLabelsAndMeta,\n EXPLORATION_DS,\n MIXED_FORMAT_EXPR,\n PENDING_FIELDS_EXPR,\n PENDING_METADATA_EXPR,\n VAR_DATASOURCE,\n VAR_FIELDS,\n VAR_FIELDS_AND_METADATA,\n VAR_LABELS,\n VAR_LEVELS,\n VAR_LINE_FILTER,\n VAR_LINE_FILTERS,\n VAR_LOGS_FORMAT,\n VAR_METADATA,\n VAR_PATTERNS,\n} from 'services/variables';\n\nimport { addLastUsedDataSourceToStorage, getLastUsedDataSourceFromStorage } from 'services/store';\nimport { ServiceScene } from '../ServiceScene/ServiceScene';\nimport {\n CONTROLS_VARS_DATASOURCE,\n CONTROLS_VARS_FIELDS,\n CONTROLS_VARS_FIELDS_COMBINED,\n CONTROLS_VARS_FIRST_ROW_KEY,\n CONTROLS_VARS_LABELS,\n CONTROLS_VARS_METADATA_ROW_KEY,\n CONTROLS_VARS_REFRESH,\n CONTROLS_VARS_TIMEPICKER,\n CONTROLS_VARS_TOOLBAR,\n LayoutScene,\n} from './LayoutScene';\nimport { getDrilldownSlug, PageSlugs } from '../../services/routing';\nimport { ServiceSelectionScene } from '../ServiceSelectionScene/ServiceSelectionScene';\nimport { LoadingPlaceholder } from '@grafana/ui';\nimport { config, getAppEvents, locationService } from '@grafana/runtime';\nimport {\n onAddCustomAdHocValue,\n onAddCustomFieldValue,\n renderLevelsFilter,\n renderLogQLFieldFilters,\n renderLogQLLabelFilters,\n renderLogQLLineFilter,\n renderLogQLMetadataFilters,\n} from 'services/query';\nimport { VariableHide } from '@grafana/schema';\nimport { CustomConstantVariable } from '../../services/CustomConstantVariable';\nimport {\n getDataSourceVariable,\n getFieldsAndMetadataVariable,\n getFieldsVariable,\n getLabelsVariable,\n getLevelsVariable,\n getMetadataVariable,\n getPatternsVariable,\n getUrlParamNameForVariable,\n} from '../../services/variableGetters';\nimport { ToolbarScene } from './ToolbarScene';\nimport { DEFAULT_TIME_RANGE, OptionalRouteMatch } from '../Pages';\nimport { plugin } from '../../module';\nimport { JsonData } from '../AppConfig/AppConfig';\nimport { reportAppInteraction } from '../../services/analytics';\nimport { getDetectedFieldValuesTagValuesProvider, getLabelsTagValuesProvider } from '../../services/TagValuesProviders';\nimport { logger } from '../../services/logger';\nimport { getFieldsKeysProvider, getLabelsTagKeysProvider } from '../../services/TagKeysProviders';\nimport { getLokiDatasource } from '../../services/scenes';\nimport { ShowLogsButtonScene } from './ShowLogsButtonScene';\nimport { CustomVariableValueSelectors } from './CustomVariableValueSelectors';\nimport { getCopiedTimeRange, PasteTimeEvent, setupKeyboardShortcuts } from '../../services/keyboardShortcuts';\nimport { LokiDatasource } from '../../services/lokiQuery';\nimport { lineFilterOperators, operators } from '../../services/operators';\nimport { operatorFunction } from '../../services/variableHelpers';\nimport { FilterOp } from '../../services/filterTypes';\nimport { areArraysEqual } from '../../services/comparison';\nimport { isFilterMetadata } from '../../services/filters';\nimport { getFieldsTagValuesExpression } from '../../services/expressions';\nimport { isOperatorInclusive } from '../../services/operatorHelpers';\nimport { renderPatternFilters } from '../../services/renderPatternFilters';\nimport { NoLokiSplash } from '../NoLokiSplash';\n\nexport const showLogsButtonSceneKey = 'showLogsButtonScene';\n\nexport interface IndexSceneState extends SceneObjectState {\n // contentScene is the scene that is displayed in the main body of the index scene - it can be either the service selection or service scene\n contentScene?: SceneObject;\n controls: SceneObject[];\n body?: LayoutScene;\n initialFilters?: AdHocVariableFilter[];\n patterns?: AppliedPattern[];\n routeMatch?: OptionalRouteMatch;\n ds?: LokiDatasource;\n}\n\nexport class IndexScene extends SceneObjectBase {\n protected _urlSync = new SceneObjectUrlSyncConfig(this, { keys: ['patterns'] });\n\n public constructor(state: Partial) {\n const { variablesScene, unsub } = getVariableSet(\n getLastUsedDataSourceFromStorage() ?? 'grafanacloud-logs',\n state.initialFilters\n );\n\n const controls: SceneObject[] = [\n new SceneFlexLayout({\n key: CONTROLS_VARS_FIRST_ROW_KEY,\n direction: 'row',\n children: [\n new SceneFlexItem({\n body: new CustomVariableValueSelectors({\n key: CONTROLS_VARS_LABELS,\n layout: 'vertical',\n include: [VAR_LABELS],\n }),\n }),\n new ShowLogsButtonScene({\n key: showLogsButtonSceneKey,\n disabled: true,\n }),\n ],\n }),\n new CustomVariableValueSelectors({\n key: CONTROLS_VARS_METADATA_ROW_KEY,\n layout: 'vertical',\n include: [VAR_METADATA],\n }),\n new CustomVariableValueSelectors({\n key: CONTROLS_VARS_FIELDS,\n layout: 'vertical',\n include: [VAR_FIELDS],\n }),\n new CustomVariableValueSelectors({\n key: CONTROLS_VARS_DATASOURCE,\n layout: 'horizontal',\n include: [VAR_DATASOURCE],\n }),\n new CustomVariableValueSelectors({\n key: CONTROLS_VARS_FIELDS_COMBINED,\n layout: 'vertical',\n include: [VAR_FIELDS_AND_METADATA],\n }),\n new SceneTimePicker({ key: CONTROLS_VARS_TIMEPICKER }),\n new SceneRefreshPicker({ key: CONTROLS_VARS_REFRESH }),\n ];\n\n if (getDrilldownSlug() === 'explore' && config.featureToggles.exploreLogsAggregatedMetrics) {\n controls.push(\n new ToolbarScene({\n key: CONTROLS_VARS_TOOLBAR,\n isOpen: false,\n })\n );\n }\n\n super({\n $timeRange: state.$timeRange ?? new SceneTimeRange({}),\n $variables: state.$variables ?? variablesScene,\n controls: state.controls ?? controls,\n // Need to clear patterns state when the class in constructed\n patterns: [],\n ...state,\n body: new LayoutScene({}),\n });\n\n this._subs.add(unsub);\n this.addActivationHandler(this.onActivate.bind(this));\n\n getLokiDatasource(this).then((ds) => {\n this.setState({ ds });\n });\n }\n\n static Component = ({ model }: SceneComponentProps) => {\n const { body } = model.useState();\n\n const dsVar = getDataSourceVariable(model);\n if (!dsVar.state.options.length) {\n return ;\n }\n\n if (body) {\n return ;\n }\n\n return ;\n };\n\n public onActivate() {\n const stateUpdate: Partial = {};\n this.setVariableProviders();\n\n // Show \"show logs\" button\n const showLogsButton = sceneGraph.findByKeyAndType(this, showLogsButtonSceneKey, ShowLogsButtonScene);\n showLogsButton.setState({ hidden: false });\n\n if (!this.state.contentScene) {\n stateUpdate.contentScene = getContentScene(this.state.routeMatch?.params.breakdownLabel);\n }\n this.setTagProviders();\n this.setState(stateUpdate);\n\n this.updatePatterns(this.state, getPatternsVariable(this));\n this.resetVariablesIfNotInUrl(getFieldsVariable(this), getUrlParamNameForVariable(VAR_FIELDS));\n this.resetVariablesIfNotInUrl(getLevelsVariable(this), getUrlParamNameForVariable(VAR_LEVELS));\n\n this._subs.add(\n this.subscribeToState((newState) => {\n this.updatePatterns(newState, getPatternsVariable(this));\n })\n );\n\n const timeRange = sceneGraph.getTimeRange(this);\n\n this._subs.add(timeRange.subscribeToState(this.limitMaxInterval(timeRange)));\n this._subs.add(this.subscribeToEvent(PasteTimeEvent, this.subscribeToPasteTimeEvent));\n\n const fieldFilters = getFieldsVariable(this).state.filters;\n const metadataFilters = getMetadataVariable(this).state.filters;\n\n const fieldsAndMetadataVariable = getFieldsAndMetadataVariable(this);\n\n // Sync fields in query variables to support existing urls\n fieldsAndMetadataVariable.updateFilters([...metadataFilters, ...fieldFilters]);\n\n // Update the fields/metadata filters when the combined variable is changed in the variable UI.\n this._subs.add(fieldsAndMetadataVariable.subscribeToState(this.subscribeToCombinedFieldsVariable));\n\n const clearKeyBindings = setupKeyboardShortcuts(this);\n\n return () => {\n clearKeyBindings();\n };\n }\n\n private subscribeToCombinedFieldsVariable = (\n newState: AdHocFiltersVariable['state'],\n prevState?: AdHocFiltersVariable['state']\n ) => {\n if (!areArraysEqual(newState.filters, prevState?.filters)) {\n const metadataFilters = newState.filters.filter((f: AdHocFiltersWithLabelsAndMeta) => isFilterMetadata(f));\n const fieldFilters = newState.filters.filter((f: AdHocFiltersWithLabelsAndMeta) => !isFilterMetadata(f));\n\n getFieldsVariable(this).updateFilters(fieldFilters);\n getMetadataVariable(this).updateFilters(metadataFilters);\n }\n };\n\n private setTagProviders() {\n this.setLabelsProviders();\n }\n\n private setLabelsProviders() {\n const labelsVar = getLabelsVariable(this);\n\n labelsVar._getOperators = () => operatorFunction(labelsVar);\n\n labelsVar.setState({\n getTagKeysProvider: getLabelsTagKeysProvider,\n getTagValuesProvider: getLabelsTagValuesProvider,\n });\n }\n\n private subscribeToPasteTimeEvent = async () => {\n const copiedRange = await getCopiedTimeRange();\n\n if (copiedRange.isError) {\n return;\n }\n\n const timeRange = sceneGraph.getTimeRange(this);\n const to = typeof copiedRange.range.to === 'string' ? copiedRange.range.to : undefined;\n const from = typeof copiedRange.range.from === 'string' ? copiedRange.range.from : undefined;\n const newRange = rangeUtil.convertRawToRange(copiedRange.range);\n\n if (timeRange && newRange) {\n timeRange.setState({\n value: newRange,\n to,\n from,\n });\n } else {\n logger.error(new Error('Invalid time range from clipboard'), {\n msg: 'Invalid time range from clipboard',\n sceneTimeRange: typeof timeRange,\n to: to ?? '',\n from: from ?? '',\n });\n }\n };\n\n /**\n * If user selects a time range longer then the max configured interval, show toast and set the previous time range.\n * @param timeRange\n * @private\n */\n private limitMaxInterval(timeRange: SceneTimeRangeLike) {\n return (newState: SceneTimeRangeState, prevState: SceneTimeRangeState) => {\n const { jsonData } = plugin.meta as AppPluginMeta;\n if (jsonData?.interval) {\n try {\n const maxInterval = rangeUtil.intervalToSeconds(jsonData?.interval ?? '');\n if (!maxInterval) {\n return;\n }\n const timeRangeInterval = newState.value.to.diff(newState.value.from, 'seconds');\n if (timeRangeInterval > maxInterval) {\n const prevInterval = prevState.value.to.diff(prevState.value.from, 'seconds');\n if (timeRangeInterval <= prevInterval) {\n timeRange.setState({\n value: prevState.value,\n from: prevState.from,\n to: prevState.to,\n });\n } else {\n const defaultRange = new SceneTimeRange(DEFAULT_TIME_RANGE);\n timeRange.setState({\n value: defaultRange.state.value,\n from: defaultRange.state.from,\n to: defaultRange.state.to,\n });\n }\n\n const appEvents = getAppEvents();\n appEvents.publish({\n type: AppEvents.alertWarning.name,\n payload: [`Time range interval exceeds maximum interval configured by the administrator.`],\n });\n\n reportAppInteraction('all', 'interval_too_long', {\n attempted_duration_seconds: timeRangeInterval,\n configured_max_interval: maxInterval,\n });\n }\n } catch (e) {\n console.error(e);\n }\n }\n };\n }\n\n private setVariableProviders() {\n const levelsVariable = getLevelsVariable(this);\n const fieldsCombinedVariable = getFieldsAndMetadataVariable(this);\n\n fieldsCombinedVariable._getOperators = () => operatorFunction(fieldsCombinedVariable);\n\n levelsVariable.setState({\n getTagValuesProvider: this.getLevelsTagValuesProvider(),\n getTagKeysProvider: this.getLevelsTagKeysProvider(),\n });\n\n fieldsCombinedVariable.setState({\n getTagKeysProvider: this.getCombinedFieldsTagKeysProvider(),\n getTagValuesProvider: this.getCombinedFieldsTagValuesProvider(),\n });\n }\n\n /**\n * Get tag keys (label names) for the combined fields variable\n */\n private getCombinedFieldsTagKeysProvider() {\n return (variable: AdHocFiltersVariable, currentKey: string | null) => {\n // Current key seems to always be null, I think it's only supported for other variable types that allow editing the key without first removing the value/operator?\n const metadataVar = getMetadataVariable(this);\n const fieldVar = getFieldsVariable(this);\n\n const uninterpolatedExpression = getFieldsTagValuesExpression(VAR_FIELDS_AND_METADATA);\n\n const metadataFilters = metadataVar.state.filters.filter((f) => f.key !== currentKey);\n const fieldFilters = fieldVar.state.filters.filter((f) => f.key !== currentKey);\n const otherFiltersString = this.renderVariableFilters(VAR_FIELDS, fieldFilters);\n const otherMetadataString = this.renderVariableFilters(VAR_METADATA, metadataFilters);\n const expr = uninterpolatedExpression\n .replace(PENDING_FIELDS_EXPR, otherFiltersString)\n .replace(PENDING_METADATA_EXPR, otherMetadataString);\n const interpolated = sceneGraph.interpolate(this, expr);\n\n return getFieldsKeysProvider({\n expr: interpolated,\n sceneRef: this,\n timeRange: sceneGraph.getTimeRange(this).state.value,\n variableType: VAR_FIELDS_AND_METADATA,\n });\n };\n }\n\n /**\n * Get tag values (label values) for combined fields variable\n */\n private getCombinedFieldsTagValuesProvider() {\n return (variable: AdHocFiltersVariable, filter: AdHocFilterWithLabels) => {\n const uninterpolatedExpression = getFieldsTagValuesExpression(VAR_FIELDS_AND_METADATA);\n const metadataVar = getMetadataVariable(this);\n const fieldVar = getFieldsVariable(this);\n\n const metadataFilters = metadataVar.state.filters.filter(\n (f) => f.key !== filter.key && isOperatorInclusive(f.operator)\n );\n const fieldFilters = fieldVar.state.filters.filter(\n (f) => f.key !== filter.key && isOperatorInclusive(f.operator)\n );\n\n const otherFiltersString = this.renderVariableFilters(VAR_FIELDS, fieldFilters);\n const otherMetadataString = this.renderVariableFilters(VAR_METADATA, metadataFilters);\n\n const expr = uninterpolatedExpression\n .replace(PENDING_FIELDS_EXPR, otherFiltersString)\n .replace(PENDING_METADATA_EXPR, otherMetadataString);\n const interpolated = sceneGraph.interpolate(this, expr);\n\n return getDetectedFieldValuesTagValuesProvider(\n filter,\n variable,\n interpolated,\n this,\n sceneGraph.getTimeRange(this).state.value,\n VAR_FIELDS_AND_METADATA\n );\n };\n }\n\n /**\n * Get tag keys (label names) for levels variable\n */\n private getLevelsTagKeysProvider() {\n return (variable: AdHocFiltersVariable, currentKey: string | null) => {\n // Current key seems to always be null, I think it's only supported for other variable types that allow editing the key without first removing the value/operator?\n const filters = variable.state.filters.filter((f) => f.key !== currentKey);\n const otherFiltersString = this.renderVariableFilters(VAR_LEVELS, filters);\n const uninterpolatedExpression = getFieldsTagValuesExpression(VAR_LEVELS);\n const expr = uninterpolatedExpression.replace(PENDING_FIELDS_EXPR, otherFiltersString);\n const interpolated = sceneGraph.interpolate(this, expr);\n return getFieldsKeysProvider({\n expr: interpolated,\n sceneRef: this,\n timeRange: sceneGraph.getTimeRange(this).state.value,\n variableType: VAR_LEVELS,\n });\n };\n }\n\n /**\n * Get tag values (label values) for levels variable\n */\n private getLevelsTagValuesProvider() {\n return (variable: AdHocFiltersVariable, filter: AdHocFilterWithLabels) => {\n // Don't add equals operations to the query, the user might want to select more than one value\n const filters = variable.state.filters.filter((f) => f.key !== filter.key && f.operator === FilterOp.Equal);\n const otherFiltersString = this.renderVariableFilters(VAR_LEVELS, filters);\n const uninterpolatedExpression = getFieldsTagValuesExpression(VAR_LEVELS);\n const expr = uninterpolatedExpression.replace(PENDING_FIELDS_EXPR, otherFiltersString);\n const interpolated = sceneGraph.interpolate(this, expr);\n\n return getDetectedFieldValuesTagValuesProvider(\n filter,\n variable,\n interpolated,\n this,\n sceneGraph.getTimeRange(this).state.value,\n VAR_LEVELS\n );\n };\n }\n\n private renderVariableFilters(\n variableType: typeof VAR_FIELDS | typeof VAR_METADATA | typeof VAR_LEVELS,\n filters: AdHocFilterWithLabels[]\n ) {\n if (variableType === VAR_FIELDS) {\n return renderLogQLFieldFilters(filters);\n } else if (variableType === VAR_METADATA) {\n return renderLogQLMetadataFilters(filters);\n } else if (variableType === VAR_LEVELS) {\n return renderLogQLMetadataFilters(filters);\n } else {\n const error = new Error('getFieldsTagValuesProvider only supports fields, metadata, and levels');\n logger.error(error);\n throw error;\n }\n }\n\n /**\n * @todo why do we need to manually sync fields and levels, but not other ad hoc variables?\n * @param variable\n * @param urlParamName\n * @private\n */\n private resetVariablesIfNotInUrl(variable: AdHocFiltersVariable, urlParamName: string) {\n const location = locationService.getLocation();\n const search = new URLSearchParams(location.search);\n const filtersFromUrl = search.get(urlParamName);\n\n // If the filters aren't in the URL, then they're coming from the cache, set the state to sync with url\n if (filtersFromUrl === null) {\n variable.setState({ filters: [] });\n }\n }\n\n private updatePatterns(newState: IndexSceneState, patternsVariable: CustomVariable) {\n const patternsLine = renderPatternFilters(newState.patterns ?? []);\n patternsVariable.changeValueTo(patternsLine);\n }\n\n getUrlState() {\n return {\n patterns: JSON.stringify(this.state.patterns),\n };\n }\n\n updateFromUrl(values: SceneObjectUrlValues) {\n const stateUpdate: Partial = {};\n\n if (values.patterns && typeof values.patterns === 'string') {\n stateUpdate.patterns = JSON.parse(values.patterns) as AppliedPattern[];\n }\n\n this.setState(stateUpdate);\n }\n}\n\nfunction getContentScene(drillDownLabel?: string) {\n const slug = getDrilldownSlug();\n if (slug === PageSlugs.explore) {\n return new ServiceSelectionScene({});\n }\n\n return new ServiceScene({\n drillDownLabel,\n });\n}\n\nfunction getVariableSet(initialDatasourceUid: string, initialFilters?: AdHocVariableFilter[]) {\n const labelVariable = new AdHocFiltersVariable({\n name: VAR_LABELS,\n datasource: EXPLORATION_DS,\n layout: 'combobox',\n label: 'Labels',\n allowCustomValue: true,\n filters: initialFilters ?? [],\n expressionBuilder: renderLogQLLabelFilters,\n hide: VariableHide.dontHide,\n key: 'adhoc_service_filter',\n onAddCustomValue: onAddCustomAdHocValue,\n });\n\n labelVariable._getOperators = function () {\n return operators;\n };\n\n const fieldsVariable = new AdHocFiltersVariable({\n name: VAR_FIELDS,\n label: 'Detected fields',\n applyMode: 'manual',\n layout: 'combobox',\n expressionBuilder: renderLogQLFieldFilters,\n hide: VariableHide.hideVariable,\n allowCustomValue: true,\n });\n\n fieldsVariable._getOperators = () => {\n return operators;\n };\n\n const metadataVariable = new AdHocFiltersVariable({\n name: VAR_METADATA,\n label: 'Metadata',\n applyMode: 'manual',\n layout: 'combobox',\n expressionBuilder: (filters: AdHocFilterWithLabels[]) => renderLogQLMetadataFilters(filters),\n hide: VariableHide.hideVariable,\n allowCustomValue: true,\n });\n\n metadataVariable._getOperators = () => {\n return operators;\n };\n\n /**\n * Not used in interpolation, used as \"proxy\" variable that routes filters added in the variable UI\n * to the fields and metadata variables which are interpolated but not present in the UI.\n *\n * Not saved in the URL state, as on init we pull the values from the fields/metadata variables\n */\n const fieldsAndMetadataVariable = new AdHocFiltersVariable({\n name: VAR_FIELDS_AND_METADATA,\n label: 'Fields',\n applyMode: 'manual',\n layout: 'combobox',\n hide: VariableHide.hideVariable,\n allowCustomValue: true,\n onAddCustomValue: onAddCustomFieldValue,\n skipUrlSync: true,\n });\n\n const levelsVariable = new AdHocFiltersVariable({\n name: VAR_LEVELS,\n label: 'Error levels',\n applyMode: 'manual',\n layout: 'vertical',\n expressionBuilder: renderLevelsFilter,\n hide: VariableHide.hideVariable,\n supportsMultiValueOperators: true,\n });\n\n const lineFiltersVariable = new AdHocFiltersVariable({\n name: VAR_LINE_FILTERS,\n hide: VariableHide.hideVariable,\n getTagKeysProvider: () => Promise.resolve({ replace: true, values: [] }),\n getTagValuesProvider: () => Promise.resolve({ replace: true, values: [] }),\n expressionBuilder: renderLogQLLineFilter,\n layout: 'horizontal',\n });\n\n lineFiltersVariable._getOperators = () => {\n return lineFilterOperators;\n };\n\n const dsVariable = new DataSourceVariable({\n name: VAR_DATASOURCE,\n label: 'Data source',\n value: initialDatasourceUid,\n pluginId: 'loki',\n });\n\n const unsub = dsVariable.subscribeToState((newState) => {\n const dsValue = `${newState.value}`;\n newState.value && addLastUsedDataSourceToStorage(dsValue);\n });\n\n return {\n variablesScene: new SceneVariableSet({\n variables: [\n dsVariable,\n labelVariable,\n fieldsVariable,\n levelsVariable,\n metadataVariable,\n fieldsAndMetadataVariable,\n new CustomVariable({\n name: VAR_PATTERNS,\n value: '',\n hide: VariableHide.hideVariable,\n }),\n new AdHocFiltersVariable({\n name: VAR_LINE_FILTER,\n hide: VariableHide.hideVariable,\n expressionBuilder: renderLogQLLineFilter,\n }),\n lineFiltersVariable,\n\n // This variable is a hack to get logs context working, this variable should never be used or updated\n new CustomConstantVariable({\n name: VAR_LOGS_FORMAT,\n value: MIXED_FORMAT_EXPR,\n skipUrlSync: true,\n hide: VariableHide.hideVariable,\n options: [{ value: MIXED_FORMAT_EXPR, label: MIXED_FORMAT_EXPR }],\n }),\n ],\n }),\n unsub,\n };\n}\n","import {\n ControlsLabel,\n SceneComponentProps,\n sceneGraph,\n SceneObject,\n SceneObjectBase,\n SceneObjectState,\n SceneVariableValueChangedEvent,\n} from '@grafana/scenes';\nimport React from 'react';\nimport { getLevelsVariable } from '../../services/variableGetters';\nimport { GrafanaTheme2, MetricFindValue, SelectableValue } from '@grafana/data';\nimport { css } from '@emotion/css';\nimport { Icon, MultiSelect, useStyles2 } from '@grafana/ui';\nimport { LEVEL_VARIABLE_VALUE } from '../../services/variables';\nimport { FilterOp } from '../../services/filterTypes';\nimport { testIds } from '../../services/testIds';\nimport { addCurrentUrlToHistory } from '../../services/navigate';\n\ntype ChipOption = MetricFindValue & { selected?: boolean };\nexport interface LevelsVariableSceneState extends SceneObjectState {\n options?: ChipOption[];\n isLoading: boolean;\n visible: boolean;\n isOpen: boolean;\n}\nexport const LEVELS_VARIABLE_SCENE_KEY = 'levels-var-custom-renderer';\nexport class LevelsVariableScene extends SceneObjectBase {\n constructor(state: Partial) {\n super({ ...state, isLoading: false, visible: false, key: LEVELS_VARIABLE_SCENE_KEY, isOpen: false });\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n onActivate() {\n this.onFilterChange();\n\n this._subs.add(\n getLevelsVariable(this).subscribeToEvent(SceneVariableValueChangedEvent, () => {\n this.onFilterChange();\n })\n );\n }\n\n public onFilterChange() {\n const levelsVar = getLevelsVariable(this);\n this.setState({\n options: levelsVar.state.filters.map((filter) => ({\n text: filter.valueLabels?.[0] ?? filter.value,\n selected: true,\n value: filter.value,\n })),\n });\n }\n\n getTagValues = () => {\n this.setState({ isLoading: true });\n const levelsVar = getLevelsVariable(this);\n const levelsKeys = levelsVar?.state?.getTagValuesProvider?.(\n levelsVar,\n levelsVar.state.filters[0] ?? { key: LEVEL_VARIABLE_VALUE }\n );\n levelsKeys?.then((response) => {\n if (Array.isArray(response.values)) {\n this.setState({\n isLoading: false,\n options: response.values.map((value) => {\n return {\n text: value.text,\n value: value.value ?? value.text,\n selected: levelsVar.state.filters.some((filter) => filter.value === value.text),\n };\n }),\n });\n }\n });\n };\n\n updateFilters = (skipPublish: boolean, forcePublish?: boolean) => {\n const levelsVar = getLevelsVariable(this);\n const filterOptions = this.state.options?.filter((opt) => opt.selected);\n\n levelsVar.updateFilters(\n filterOptions?.map((filterOpt) => ({\n key: LEVEL_VARIABLE_VALUE,\n operator: FilterOp.Equal,\n value: filterOpt.text,\n })) ?? [],\n { skipPublish, forcePublish }\n );\n };\n\n onChangeOptions = (options: SelectableValue[]) => {\n // Save current url to history before the filter change\n addCurrentUrlToHistory();\n\n this.setState({\n options: this.state.options?.map((value) => {\n if (options.some((opt) => opt.value === value.value)) {\n return { ...value, selected: true };\n }\n return { ...value, selected: false };\n }),\n });\n\n if (!this.state.isOpen) {\n this.updateFilters(false);\n } else {\n this.updateFilters(true);\n }\n };\n\n openSelect = (isOpen: boolean) => {\n this.setState({ isOpen });\n };\n\n onCloseMenu = () => {\n this.openSelect(false);\n // Update filters and run queries on close\n this.updateFilters(false, true);\n };\n\n static Component = ({ model }: SceneComponentProps) => {\n const { options, isLoading, visible, isOpen } = model.useState();\n const styles = useStyles2(getStyles);\n const levelsVar = getLevelsVariable(model);\n levelsVar.useState();\n\n if (!visible) {\n return null;\n }\n\n return (\n
\n \n }\n placeholder={'All levels'}\n className={styles.flex}\n onChange={model.onChangeOptions}\n onCloseMenu={() => model.onCloseMenu()}\n onOpenMenu={model.getTagValues}\n onFocus={() => model.openSelect(true)}\n menuShouldPortal={true}\n isOpen={isOpen}\n isLoading={isLoading}\n isClearable={true}\n blurInputOnSelect={false}\n closeMenuOnSelect={false}\n openMenuOnFocus={true}\n showAllSelectedWhenOpen={true}\n hideSelectedOptions={false}\n value={options?.filter((v) => v.selected)}\n options={options?.map((val) => ({\n value: val.value,\n label: val.text,\n }))}\n />\n
\n );\n };\n}\nexport function syncLevelsVariable(sceneRef: SceneObject) {\n const levelsVariableScene = sceneGraph.findObject(sceneRef, (obj) => obj instanceof LevelsVariableScene);\n if (levelsVariableScene instanceof LevelsVariableScene) {\n levelsVariableScene.onFilterChange();\n }\n}\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n flex: css({\n flex: '1',\n }),\n});\n","import { GrafanaTheme2 } from '@grafana/data';\nimport { css } from '@emotion/css';\nimport { LineFilterEditor } from '../ServiceScene/LineFilter/LineFilterEditor';\nimport React, { ChangeEvent, KeyboardEvent, useState } from 'react';\nimport { IconButton, useStyles2 } from '@grafana/ui';\nimport { LineFilterCaseSensitive } from '../../services/filterTypes';\nimport { RegexInputValue } from '../ServiceScene/LineFilter/RegexIconButton';\n\nexport interface LineFilterProps {\n exclusive: boolean;\n lineFilter: string;\n caseSensitive: boolean;\n regex: boolean;\n setExclusive: (exclusive: boolean) => void;\n onInputChange: (e: ChangeEvent) => void;\n onCaseSensitiveToggle: (caseSensitive: LineFilterCaseSensitive) => void;\n onRegexToggle: (regex: RegexInputValue) => void;\n updateFilter: (lineFilter: string, debounced: boolean) => void;\n handleEnter: (e: KeyboardEvent, lineFilter: string) => void;\n onSubmitLineFilter?: () => void;\n onClearLineFilter?: () => void;\n}\n\nexport function LineFilterVariable({ onClick, props }: { onClick: () => void; props: LineFilterProps }) {\n const [focus, setFocus] = useState(false);\n const styles = useStyles2(getLineFilterStyles);\n return (\n <>\n \n
\n Line filter\n \n
\n \n \n {focus && (\n setFocus(false)}\n name={'table-collapse-all'}\n />\n )}\n \n
\n \n );\n}\n\nconst getLineFilterStyles = (theme: GrafanaTheme2) => ({\n titleWrap: css({\n display: 'flex',\n fontSize: theme.typography.bodySmall.fontSize,\n marginBottom: theme.spacing(0.5),\n gap: theme.spacing(1),\n }),\n collapseWrap: css({\n display: 'flex',\n }),\n collapseBtn: css({\n marginLeft: theme.spacing(1),\n }),\n});\n","import { AdHocFilterWithLabels, SceneComponentProps, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport React, { ChangeEvent, KeyboardEvent } from 'react';\nimport { getLineFiltersVariable } from '../../services/variableGetters';\nimport { LineFilterCaseSensitive, LineFilterOp } from '../../services/filterTypes';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from '../../services/analytics';\nimport { debounce } from 'lodash';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { css } from '@emotion/css';\nimport { useStyles2 } from '@grafana/ui';\nimport { LineFilterProps, LineFilterVariable } from './LineFilterVariable';\nimport { addCurrentUrlToHistory } from '../../services/navigate';\n\ninterface LineFilterRendererState extends SceneObjectState {}\n\n/**\n * The scene for the submitted line filter that is rendered up top with the other variables.\n * @todo refactor into new directory with other custom variable renderers and/or layout scenes\n */\nexport class LineFilterVariablesScene extends SceneObjectBase {\n static Component = ({ model }: SceneComponentProps) => {\n const lineFilterVar = getLineFiltersVariable(model);\n const { filters } = lineFilterVar.useState();\n const styles = useStyles2(getStyles);\n sortLineFilters(filters);\n\n if (!filters.length) {\n return null;\n }\n\n return (\n
\n {filters.map((filter) => {\n const props: LineFilterProps = {\n lineFilter: filter.value,\n regex: filter.operator === LineFilterOp.regex || filter.operator === LineFilterOp.negativeRegex,\n caseSensitive: filter.key === LineFilterCaseSensitive.caseSensitive,\n exclusive: model.isFilterExclusive(filter),\n handleEnter: (e, lineFilter) => model.handleEnter(e, filter.value, filter),\n setExclusive: () => model.onToggleExclusive(filter),\n updateFilter: (lineFilter, debounced) =>\n model.updateFilter(\n filter,\n {\n ...filter,\n value: lineFilter,\n },\n debounced\n ),\n onRegexToggle: () => model.onRegexToggle(filter),\n onInputChange: (e) => model.onInputChange(e, filter),\n onCaseSensitiveToggle: () => model.onCaseSensitiveToggle(filter),\n };\n return model.removeFilter(filter)} props={props} />;\n })}\n
\n );\n };\n /**\n * Submit on enter\n */\n handleEnter = (e: KeyboardEvent, lineFilter: string, filter: AdHocFilterWithLabels) => {\n if (e.key === 'Enter') {\n // Add the current url to browser history before the state is changed so the user can revert their change.\n addCurrentUrlToHistory();\n this.updateVariableLineFilter(filter, { ...filter, value: lineFilter });\n }\n };\n\n isFilterExclusive({ operator }: AdHocFilterWithLabels): boolean {\n return operator === LineFilterOp.negativeMatch || operator === LineFilterOp.negativeRegex;\n }\n\n /**\n * Updates filter operator when user toggles regex\n */\n onRegexToggle = (filter: AdHocFilterWithLabels) => {\n let newOperator: LineFilterOp;\n // Set value to scene state\n switch (filter.operator) {\n case LineFilterOp.match: {\n newOperator = LineFilterOp.regex;\n break;\n }\n case LineFilterOp.negativeMatch: {\n newOperator = LineFilterOp.negativeRegex;\n break;\n }\n case LineFilterOp.regex: {\n newOperator = LineFilterOp.match;\n break;\n }\n case LineFilterOp.negativeRegex: {\n newOperator = LineFilterOp.negativeMatch;\n break;\n }\n default: {\n throw new Error('Invalid operator!');\n }\n }\n\n this.updateFilter(filter, { ...filter, operator: newOperator }, false);\n };\n\n /**\n * Updates filter operator when user toggles exclusion\n */\n onToggleExclusive = (filter: AdHocFilterWithLabels) => {\n let newOperator: string;\n switch (filter.operator) {\n case LineFilterOp.match: {\n newOperator = LineFilterOp.negativeMatch;\n break;\n }\n case LineFilterOp.negativeMatch: {\n newOperator = LineFilterOp.match;\n break;\n }\n case LineFilterOp.regex: {\n newOperator = LineFilterOp.negativeRegex;\n break;\n }\n case LineFilterOp.negativeRegex: {\n newOperator = LineFilterOp.regex;\n break;\n }\n default: {\n throw new Error('Invalid operator!');\n }\n }\n\n this.updateFilter(filter, { ...filter, operator: newOperator }, false);\n };\n\n /**\n * Updates filter key when user toggles case sensitivity\n */\n onCaseSensitiveToggle = (filter: AdHocFilterWithLabels) => {\n const caseSensitive =\n filter.key === LineFilterCaseSensitive.caseSensitive\n ? LineFilterCaseSensitive.caseInsensitive\n : LineFilterCaseSensitive.caseSensitive;\n this.updateFilter(filter, { ...filter, key: caseSensitive }, false);\n };\n\n /**\n * Updates existing line filter ad-hoc variable filter\n */\n updateFilter(existingFilter: AdHocFilterWithLabels, filterUpdate: AdHocFilterWithLabels, debounced = true) {\n if (debounced) {\n // We want to update the UI right away, which uses the filter state as the UI state, but we don't want to execute the query immediately\n this.updateVariableLineFilter(existingFilter, filterUpdate, true);\n // Run the debounce to force the event emit, as the prior setState will have already set the filterExpression, which will otherwise prevent the emit of the event which will trigger the query\n this.updateVariableDebounced(existingFilter, filterUpdate, false, true);\n } else {\n this.updateVariableLineFilter(existingFilter, filterUpdate);\n }\n }\n\n /**\n * Line filter input onChange helper method\n */\n onInputChange = (e: ChangeEvent, filter: AdHocFilterWithLabels) => {\n this.updateFilter(filter, { ...filter, value: e.target.value }, true);\n };\n\n /**\n * Remove a filter, will trigger query\n */\n removeFilter = (filter: AdHocFilterWithLabels) => {\n addCurrentUrlToHistory();\n const variable = getLineFiltersVariable(this);\n const otherFilters = variable.state.filters.filter(\n (f) => f.keyLabel !== undefined && f.keyLabel !== filter.keyLabel\n );\n\n variable.setState({\n filters: otherFilters,\n });\n };\n\n /**\n * Update existing line filter ad-hoc variable\n */\n private updateVariableLineFilter = (\n existingFilter: AdHocFilterWithLabels,\n filterUpdate: AdHocFilterWithLabels,\n skipPublish = false,\n forcePublish = false\n ) => {\n const variable = getLineFiltersVariable(this);\n const otherFilters = variable.state.filters.filter(\n (f) => f.keyLabel !== undefined && f.keyLabel !== existingFilter.keyLabel\n );\n\n variable.updateFilters(\n [\n {\n keyLabel: existingFilter.keyLabel,\n key: filterUpdate.key,\n operator: filterUpdate.operator,\n value: filterUpdate.value,\n },\n ...otherFilters,\n ],\n { skipPublish, forcePublish }\n );\n\n reportAppInteraction(\n USER_EVENTS_PAGES.service_details,\n USER_EVENTS_ACTIONS.service_details.search_string_in_variables_changed,\n {\n searchQueryLength: existingFilter.value.length,\n containsLevel: existingFilter.value.toLowerCase().includes('level'),\n operator: filterUpdate.operator,\n caseSensitive: filterUpdate.key,\n }\n );\n };\n\n /**\n * Debounce line-filter ad-hoc variable update\n */\n private updateVariableDebounced = debounce(\n (\n existingFilter: AdHocFilterWithLabels,\n filterUpdate: AdHocFilterWithLabels,\n skipPublish = false,\n forcePublish = false\n ) => {\n this.updateVariableLineFilter(existingFilter, filterUpdate, skipPublish, forcePublish);\n },\n 1000\n );\n}\n\n/**\n * Sort line filters by keyLabel, i.e. the order the line filter was added\n */\nexport function sortLineFilters(filters: AdHocFilterWithLabels[]) {\n filters.sort((a, b) => parseInt(a.keyLabel ?? '0', 10) - parseInt(b.keyLabel ?? '0', 10));\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n lineFiltersWrap: css({\n label: 'lineFiltersWrap',\n display: 'flex',\n flexWrap: 'wrap',\n gap: `${theme.spacing(0.25)} ${theme.spacing(2)}`,\n }),\n };\n}\n","import { SceneComponentProps, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport { LinkButton, useStyles2 } from '@grafana/ui';\nimport React from 'react';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { css } from '@emotion/css';\nimport { getDrillDownIndexLink } from '../../services/navigate';\nimport { getLabelsVariable } from '../../services/variableGetters';\nimport { testIds } from '../../services/testIds';\n\nimport { isOperatorInclusive } from '../../services/operatorHelpers';\n\nexport interface ShowLogsButtonSceneState extends SceneObjectState {\n disabled?: boolean;\n hidden?: boolean;\n}\nexport class ShowLogsButtonScene extends SceneObjectBase {\n constructor(state: Partial) {\n super({\n ...state,\n });\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n onActivate() {\n const labelsVar = getLabelsVariable(this);\n const hasPositiveFilter = labelsVar.state.filters.some((f) => isOperatorInclusive(f.operator));\n this.setState({\n disabled: !hasPositiveFilter,\n });\n\n labelsVar.subscribeToState((newState) => {\n const hasPositiveFilter = newState.filters.some((f) => isOperatorInclusive(f.operator));\n this.setState({\n disabled: !hasPositiveFilter,\n });\n });\n }\n\n getLink = () => {\n const labelsVar = getLabelsVariable(this);\n const positiveFilter = labelsVar.state.filters.find((f) => isOperatorInclusive(f.operator));\n\n if (positiveFilter) {\n return getDrillDownIndexLink(positiveFilter.key, positiveFilter.value);\n }\n\n return '';\n };\n\n static Component = ({ model }: SceneComponentProps) => {\n const { disabled, hidden } = model.useState();\n const styles = useStyles2(getStyles);\n\n if (hidden === true) {\n return null;\n }\n\n const link = model.getLink();\n\n return (\n \n Show logs\n \n );\n };\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n button: css({\n [theme.breakpoints.down('lg')]: {\n alignSelf: 'flex-end',\n },\n [theme.breakpoints.down('md')]: {\n marginTop: theme.spacing(1),\n alignSelf: 'flex-start',\n },\n\n alignSelf: 'flex-start',\n marginTop: '22px',\n }),\n };\n}\n","import { SceneComponentProps, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport { Dropdown, Switch, ToolbarButton, useStyles2 } from '@grafana/ui';\nimport React from 'react';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { css } from '@emotion/css';\nimport { config } from '@grafana/runtime';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from '../../services/analytics';\nimport { AGGREGATED_METRIC_START_DATE } from '../ServiceSelectionScene/ServiceSelectionScene';\nimport pluginJson from '../../plugin.json';\nimport { testIds } from '../../services/testIds';\nconst AGGREGATED_METRICS_USER_OVERRIDE_LOCALSTORAGE_KEY = `${pluginJson.id}.serviceSelection.aggregatedMetrics`;\n\nexport interface ToolbarSceneState extends SceneObjectState {\n isOpen: boolean;\n options: {\n aggregatedMetrics: {\n active: boolean;\n userOverride: boolean;\n disabled: boolean;\n };\n };\n}\nexport class ToolbarScene extends SceneObjectBase {\n constructor(state: Partial) {\n const userOverride = localStorage.getItem(AGGREGATED_METRICS_USER_OVERRIDE_LOCALSTORAGE_KEY);\n const active = config.featureToggles.exploreLogsAggregatedMetrics && userOverride !== 'false';\n\n super({\n isOpen: false,\n options: {\n aggregatedMetrics: {\n active: active ?? false,\n userOverride: userOverride === 'true' ?? false,\n disabled: false,\n },\n },\n ...state,\n });\n }\n\n public toggleAggregatedMetricsOverride = () => {\n const active = !this.state.options.aggregatedMetrics.active;\n\n reportAppInteraction(\n USER_EVENTS_PAGES.service_selection,\n USER_EVENTS_ACTIONS.service_selection.aggregated_metrics_toggled,\n {\n enabled: active,\n }\n );\n\n localStorage.setItem(AGGREGATED_METRICS_USER_OVERRIDE_LOCALSTORAGE_KEY, active.toString());\n\n this.setState({\n options: {\n aggregatedMetrics: {\n active,\n disabled: this.state.options.aggregatedMetrics.disabled,\n userOverride: active,\n },\n },\n });\n };\n\n public onToggleOpen = (isOpen: boolean) => {\n this.setState({ isOpen });\n };\n\n static Component = ({ model }: SceneComponentProps) => {\n const { isOpen, options } = model.useState();\n const styles = useStyles2(getStyles);\n\n const renderPopover = () => {\n return (\n
evt.stopPropagation()}>\n
Query options
\n
\n \n Aggregated metrics\n
\n \n \n \n
\n
\n );\n };\n\n if (options.aggregatedMetrics) {\n return (\n \n \n \n );\n }\n\n return <>;\n };\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n popover: css({\n display: 'flex',\n padding: theme.spacing(2),\n flexDirection: 'column',\n background: theme.colors.background.primary,\n boxShadow: theme.shadows.z3,\n borderRadius: theme.shape.radius.default,\n border: `1px solid ${theme.colors.border.weak}`,\n zIndex: 1,\n marginRight: theme.spacing(2),\n }),\n heading: css({\n fontWeight: theme.typography.fontWeightMedium,\n paddingBottom: theme.spacing(2),\n }),\n options: css({\n display: 'grid',\n gridTemplateColumns: '1fr 50px',\n rowGap: theme.spacing(1),\n columnGap: theme.spacing(2),\n alignItems: 'center',\n }),\n };\n}\n","import {\n EmbeddedScene,\n SceneAppPage,\n SceneAppPageLike,\n SceneFlexLayout,\n SceneRouteMatch,\n SceneTimeRange,\n} from '@grafana/scenes';\nimport {\n CHILD_ROUTE_DEFINITIONS,\n ChildDrilldownSlugs,\n DRILLDOWN_URL_KEYS,\n extractValuesFromRoute,\n PageSlugs,\n ParentDrilldownSlugs,\n ROUTE_DEFINITIONS,\n ROUTES,\n SERVICE_URL_KEYS,\n SUB_ROUTES,\n ValueSlugs,\n} from '../services/routing';\nimport { PageLayoutType } from '@grafana/data';\nimport { IndexScene } from './IndexScene/IndexScene';\nimport { navigateToIndex } from '../services/navigate';\nimport { logger } from '../services/logger';\nimport { capitalizeFirstLetter } from '../services/text';\nimport { PLUGIN_BASE_URL, prefixRoute } from '../services/plugin';\n\nexport type RouteProps = { labelName: string; labelValue: string; breakdownLabel?: string };\nexport type RouteMatch = SceneRouteMatch;\ntype Optional = Pick, K> & Omit;\nexport type OptionalRouteProps = Optional;\nexport type OptionalRouteMatch = SceneRouteMatch;\n\nexport const DEFAULT_TIME_RANGE = { from: 'now-15m', to: 'now' };\nfunction getServicesScene(routeMatch: OptionalRouteMatch) {\n return new EmbeddedScene({\n body: new IndexScene({\n $timeRange: new SceneTimeRange(DEFAULT_TIME_RANGE),\n routeMatch,\n }),\n });\n}\n\n// Index page\nexport function makeIndexPage() {\n return new SceneAppPage({\n // Top level breadcrumb\n title: 'Grafana Logs Drilldown',\n url: prefixRoute(PageSlugs.explore),\n layout: PageLayoutType.Custom,\n preserveUrlKeys: SERVICE_URL_KEYS,\n routePath: prefixRoute(PageSlugs.explore),\n getScene: (routeMatch) => getServicesScene(routeMatch),\n drilldowns: [\n {\n routePath: ROUTE_DEFINITIONS.logs,\n getPage: (routeMatch, parent) => makeBreakdownPage(routeMatch, parent, PageSlugs.logs),\n defaultRoute: true,\n },\n {\n routePath: ROUTE_DEFINITIONS.labels,\n getPage: (routeMatch, parent) => makeBreakdownPage(routeMatch, parent, PageSlugs.labels),\n },\n {\n routePath: ROUTE_DEFINITIONS.patterns,\n getPage: (routeMatch, parent) => makeBreakdownPage(routeMatch, parent, PageSlugs.patterns),\n },\n {\n routePath: ROUTE_DEFINITIONS.fields,\n getPage: (routeMatch, parent) => makeBreakdownPage(routeMatch, parent, PageSlugs.fields),\n },\n {\n routePath: CHILD_ROUTE_DEFINITIONS.label,\n getPage: (routeMatch, parent) => makeBreakdownValuePage(routeMatch, parent, ValueSlugs.label),\n },\n {\n routePath: CHILD_ROUTE_DEFINITIONS.field,\n getPage: (routeMatch: RouteMatch, parent) => makeBreakdownValuePage(routeMatch, parent, ValueSlugs.field),\n },\n {\n routePath: '*',\n getPage: () => makeRedirectPage(),\n },\n ],\n });\n}\n\n// Redirect page back to index\nexport function makeRedirectPage() {\n return new SceneAppPage({\n title: '',\n url: PLUGIN_BASE_URL,\n getScene: makeEmptyScene(),\n hideFromBreadcrumbs: true,\n routePath: '*',\n $behaviors: [\n () => {\n navigateToIndex();\n },\n ],\n });\n}\n\nfunction makeEmptyScene(): (routeMatch: SceneRouteMatch) => EmbeddedScene {\n return () =>\n new EmbeddedScene({\n body: new SceneFlexLayout({\n direction: 'column',\n children: [],\n }),\n });\n}\n\nexport function makeBreakdownPage(\n routeMatch: RouteMatch,\n parent: SceneAppPageLike,\n slug: ParentDrilldownSlugs\n): SceneAppPage {\n const { labelName, labelValue } = extractValuesFromRoute(routeMatch);\n return new SceneAppPage({\n title: capitalizeFirstLetter(slug),\n layout: PageLayoutType.Custom,\n url: ROUTES[slug](labelValue, labelName),\n preserveUrlKeys: DRILLDOWN_URL_KEYS,\n getParentPage: () => parent,\n getScene: (routeMatch) => getServicesScene(routeMatch),\n });\n}\n\nexport function makeBreakdownValuePage(\n routeMatch: RouteMatch,\n parent: SceneAppPageLike,\n slug: ChildDrilldownSlugs\n): SceneAppPage {\n const { labelName, labelValue, breakdownLabel } = extractValuesFromRoute(routeMatch);\n\n if (!breakdownLabel) {\n const e = new Error('Breakdown value missing!');\n logger.error(e, {\n msg: 'makeBreakdownValuePage: Breakdown value missing!',\n labelName,\n labelValue,\n breakdownLabel: breakdownLabel ?? '',\n });\n throw e;\n }\n\n return new SceneAppPage({\n title: capitalizeFirstLetter(breakdownLabel),\n layout: PageLayoutType.Custom,\n url: SUB_ROUTES[slug](labelValue, labelName, breakdownLabel),\n preserveUrlKeys: DRILLDOWN_URL_KEYS,\n getParentPage: () => parent,\n getScene: (routeMatch) => getServicesScene(routeMatch),\n });\n}\n","import { DataFrame, FieldConfig, FieldConfigSource, TimeRange } from '@grafana/data';\nimport { usePluginLinks } from '@grafana/runtime';\nimport {\n SceneComponentProps,\n sceneGraph,\n SceneObjectBase,\n SceneObjectState,\n SceneQueryRunner,\n VizPanel,\n} from '@grafana/scenes';\nimport { DataSourceRef } from '@grafana/schema';\nimport { IconButton } from '@grafana/ui';\nimport React from 'react';\nimport { ExtensionPoints } from 'services/extensions/links';\nimport { findObjectOfType, getLokiDatasource } from 'services/scenes';\n\nimport LokiLogo from '../../../img/logo.svg';\nimport { LokiDatasource, LokiQuery } from '../../../services/lokiQuery';\n\nexport interface AddToInvestigationButtonState extends SceneObjectState {\n frame?: DataFrame;\n labelName?: string;\n fieldName?: string;\n ds?: LokiDatasource;\n context?: ExtensionContext;\n queries: LokiQuery[];\n type?: 'timeseries' | 'logs' | undefined;\n}\n\ntype ExtensionContext = {\n timeRange: TimeRange;\n queries: LokiQuery[];\n datasource: DataSourceRef;\n origin: string;\n url: string;\n type: string;\n title: string;\n id: string;\n logoPath: string;\n note?: string;\n drillDownLabel?: string;\n fieldConfig?: FieldConfigSource;\n};\n\nexport class AddToInvestigationButton extends SceneObjectBase {\n constructor(state: Omit) {\n super({ ...state, queries: [] });\n this.addActivationHandler(this.onActivate);\n }\n\n private onActivate = () => {\n getLokiDatasource(this).then((ds) => {\n this.setState({ ds });\n });\n\n this._subs.add(\n this.subscribeToState((newState, prevState) => {\n if (!this.state.queries.length) {\n this.getQueries();\n }\n\n if (!this.state.context && this.state.queries.length) {\n this.getContext();\n }\n })\n );\n };\n\n private getQueries = () => {\n const data = sceneGraph.getData(this);\n const queryRunner = findObjectOfType(data, (o) => o instanceof SceneQueryRunner, SceneQueryRunner);\n\n if (queryRunner) {\n const filter = this.state.frame ? getFilter(this.state.frame) : null;\n const queries = queryRunner.state.queries.map((q) => ({\n ...q,\n expr: sceneGraph.interpolate(queryRunner, q.expr),\n legendFormat: filter?.name ? `{{ ${filter.name} }}` : sceneGraph.interpolate(queryRunner, q.legendFormat),\n datasource: q.datasource ?? undefined,\n }));\n\n if (JSON.stringify(queries) !== JSON.stringify(this.state.queries)) {\n this.setState({ queries });\n }\n }\n };\n\n private getFieldConfig = () => {\n const panel = findObjectOfType(this, (o) => o instanceof VizPanel, VizPanel);\n const data = sceneGraph.getData(this);\n const frames = data?.state.data?.series;\n let fieldConfig = panel?.state.fieldConfig;\n if (fieldConfig && frames?.length) {\n for (const frame of frames) {\n for (const field of frame.fields) {\n const configKeys = Object.keys(field.config);\n const properties = configKeys.map((key) => ({\n id: key,\n value: field.config[key as keyof FieldConfig],\n }));\n\n // check if the override already exists\n const existingOverride = fieldConfig.overrides.find(\n (o) =>\n o.matcher.options === (field.config.displayNameFromDS ?? field.config.displayName ?? field.name) &&\n o.matcher.id === 'byName'\n );\n if (!existingOverride) {\n // add as first override\n fieldConfig.overrides.unshift({\n matcher: {\n id: 'byName',\n options: field.config.displayNameFromDS ?? field.config.displayName ?? field.name,\n },\n properties,\n });\n }\n\n if (existingOverride && JSON.stringify(existingOverride.properties) !== JSON.stringify(properties)) {\n existingOverride.properties = properties;\n }\n }\n }\n }\n return fieldConfig;\n };\n\n private getContext = () => {\n const fieldConfig = this.getFieldConfig();\n const { queries, ds, labelName, fieldName, type } = this.state;\n const timeRange = sceneGraph.getTimeRange(this);\n\n if (!timeRange || !queries || !ds?.uid) {\n return;\n }\n const ctx = {\n origin: 'Grafana Logs Drilldown',\n type: type ?? 'timeseries',\n queries,\n timeRange: { ...timeRange.state.value },\n datasource: { uid: ds.uid },\n url: window.location.href,\n id: `${JSON.stringify(queries)}${labelName}${fieldName}`,\n title: `${labelName}${fieldName ? ` > ${fieldName}` : ''}`,\n logoPath: LokiLogo,\n drillDownLabel: fieldName,\n fieldConfig: fieldConfig,\n };\n if (JSON.stringify(ctx) !== JSON.stringify(this.state.context)) {\n this.setState({ context: ctx });\n }\n };\n\n public static Component = ({ model }: SceneComponentProps) => {\n const { context } = model.useState();\n const { links } = usePluginLinks({ extensionPointId: ExtensionPoints.MetricInvestigation, context });\n\n return (\n <>\n {links\n .filter((link) => link.pluginId === 'grafana-investigations-app' && link.onClick)\n .map((link) => (\n {\n if (link.onClick) {\n link.onClick(e);\n }\n }}\n />\n ))}\n \n );\n };\n}\n\nconst getFilter = (frame: DataFrame) => {\n const filterNameAndValueObj = frame.fields[1]?.labels ?? {};\n if (Object.keys(filterNameAndValueObj).length !== 1) {\n return;\n }\n const name = Object.keys(filterNameAndValueObj)[0];\n return { name, value: filterNameAndValueObj[name] };\n};\n","import { DataFrame, GrafanaTheme2, PanelMenuItem } from '@grafana/data';\nimport {\n PanelBuilders,\n SceneComponentProps,\n SceneCSSGridItem,\n SceneFlexLayout,\n sceneGraph,\n SceneObject,\n SceneObjectBase,\n SceneObjectState,\n SceneQueryRunner,\n VizPanel,\n VizPanelMenu,\n} from '@grafana/scenes';\nimport React from 'react';\nimport { onExploreLinkClick } from '../ServiceScene/GoToExploreButton';\nimport { IndexScene } from '../IndexScene/IndexScene';\nimport { findObjectOfType, getQueryRunnerFromChildren } from '../../services/scenes';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from '../../services/analytics';\nimport { logger } from '../../services/logger';\nimport { AddToInvestigationButton } from '../ServiceScene/Breakdowns/AddToInvestigationButton';\nimport { getPluginLinkExtensions } from '@grafana/runtime';\nimport { ExtensionPoints } from '../../services/extensions/links';\nimport { setLevelColorOverrides } from '../../services/panel';\nimport { setPanelOption } from '../../services/store';\nimport { FieldsAggregatedBreakdownScene } from '../ServiceScene/Breakdowns/FieldsAggregatedBreakdownScene';\nimport { setValueSummaryHeight } from '../ServiceScene/Breakdowns/Panels/ValueSummary';\nimport { FieldValuesBreakdownScene } from '../ServiceScene/Breakdowns/FieldValuesBreakdownScene';\nimport { LabelValuesBreakdownScene } from '../ServiceScene/Breakdowns/LabelValuesBreakdownScene';\nimport { css } from '@emotion/css';\n\nconst ADD_TO_INVESTIGATION_MENU_TEXT = 'Add to investigation';\nconst ADD_TO_INVESTIGATION_MENU_DIVIDER_TEXT = 'investigations_divider'; // Text won't be visible\nconst ADD_TO_INVESTIGATION_MENU_GROUP_TEXT = 'Investigations';\n\nexport enum AvgFieldPanelType {\n 'timeseries' = 'timeseries',\n 'histogram' = 'histogram',\n}\n\nexport enum CollapsablePanelText {\n collapsed = 'Collapse',\n expanded = 'Expand',\n}\n\ninterface InvestigationOptions {\n labelName?: string;\n fieldName?: string;\n frame?: DataFrame;\n type?: 'timeseries' | 'logs';\n getLabelName?: () => string;\n}\n\ninterface PanelMenuState extends SceneObjectState {\n body?: VizPanelMenu;\n addInvestigationsLink?: boolean;\n investigationsButton?: AddToInvestigationButton;\n panelType?: AvgFieldPanelType;\n\n investigationOptions?: InvestigationOptions;\n}\n\n/**\n * @todo the VizPanelMenu interface is overly restrictive, doesn't allow any member functions on this class, so everything is currently inlined\n */\nexport class PanelMenu extends SceneObjectBase implements VizPanelMenu, SceneObject {\n constructor(state: Partial) {\n super({ ...state, addInvestigationsLink: state.addInvestigationsLink ?? true });\n this.addActivationHandler(() => {\n // Navigation options (all panels)\n const items: PanelMenuItem[] = [\n {\n text: 'Navigation',\n type: 'group',\n },\n {\n text: 'Explore',\n iconClassName: 'compass',\n href: getExploreLink(this),\n onClick: () => onExploreLinkClickTracking(),\n shortcut: 'p x',\n },\n ];\n\n let viz;\n try {\n viz = sceneGraph.getAncestor(this, VizPanel);\n } catch (e) {\n // If we can't find the viz panel, we can't add the Explore item. Currently the case for logs table.\n this.setState({\n body: new VizPanelMenu({\n items,\n }),\n });\n return;\n }\n\n this.setState({\n investigationsButton: new AddToInvestigationButton({\n labelName: this.state.investigationOptions?.getLabelName\n ? this.state.investigationOptions?.getLabelName()\n : this.state.investigationOptions?.labelName,\n fieldName: this.state.investigationOptions?.fieldName,\n frame: this.state.investigationOptions?.frame,\n type: this.state.investigationOptions?.type,\n }),\n });\n\n if (this.state.addInvestigationsLink) {\n // @todo rewrite the AddToExplorationButton\n // Manually activate scene\n this.state.investigationsButton?.activate();\n }\n\n // Visualization options\n if (this.state.panelType || viz?.state.collapsible) {\n addVisualizationHeader(items, this);\n }\n\n if (viz?.state.collapsible) {\n addCollapsableItem(items, this);\n }\n\n if (this.state.panelType) {\n addHistogramItem(items, this);\n }\n\n this.setState({\n body: new VizPanelMenu({\n items,\n }),\n });\n\n this._subs.add(\n this.state.investigationsButton?.subscribeToState(() => {\n subscribeToAddToInvestigation(this);\n })\n );\n });\n }\n\n addItem(item: PanelMenuItem): void {\n if (this.state.body) {\n this.state.body.addItem(item);\n }\n }\n setItems(items: PanelMenuItem[]): void {\n if (this.state.body) {\n this.state.body.setItems(items);\n }\n }\n\n public static Component = ({ model }: SceneComponentProps) => {\n const { body } = model.useState();\n\n if (body) {\n return ;\n }\n\n return <>;\n };\n}\n\nfunction addVisualizationHeader(items: PanelMenuItem[], sceneRef: PanelMenu) {\n items.push({\n text: '',\n type: 'divider',\n });\n items.push({\n text: 'Visualization',\n type: 'group',\n });\n}\n\nfunction addCollapsableItem(items: PanelMenuItem[], menu: PanelMenu) {\n const viz = sceneGraph.getAncestor(menu, VizPanel);\n items.push({\n text: viz.state.collapsed ? CollapsablePanelText.expanded : CollapsablePanelText.collapsed,\n iconClassName: viz.state.collapsed ? 'table-collapse-all' : 'table-expand-all',\n onClick: () => {\n const newCollapsableState = viz.state.collapsed ? CollapsablePanelText.expanded : CollapsablePanelText.collapsed;\n\n // Update the viz\n const vizPanelFlexLayout = sceneGraph.getAncestor(menu, SceneFlexLayout);\n setValueSummaryHeight(vizPanelFlexLayout, newCollapsableState);\n\n // Set state and update local storage\n viz.setState({\n collapsed: !viz.state.collapsed,\n });\n setPanelOption('collapsed', newCollapsableState);\n },\n });\n}\n\nfunction addHistogramItem(items: PanelMenuItem[], sceneRef: PanelMenu) {\n items.push({\n text: sceneRef.state.panelType !== AvgFieldPanelType.histogram ? 'Histogram' : 'Time series',\n iconClassName: sceneRef.state.panelType !== AvgFieldPanelType.histogram ? 'graph-bar' : 'chart-line',\n\n onClick: () => {\n const gridItem = sceneGraph.getAncestor(sceneRef, SceneCSSGridItem);\n const viz = sceneGraph.getAncestor(sceneRef, VizPanel).clone();\n const $data = sceneGraph.getData(sceneRef).clone();\n const menu = sceneRef.clone();\n const headerActions = Array.isArray(viz.state.headerActions)\n ? viz.state.headerActions.map((o) => o.clone())\n : viz.state.headerActions;\n let body;\n\n if (sceneRef.state.panelType !== AvgFieldPanelType.histogram) {\n body = PanelBuilders.timeseries().setOverrides(setLevelColorOverrides);\n } else {\n body = PanelBuilders.histogram();\n }\n\n gridItem.setState({\n body: body.setMenu(menu).setTitle(viz.state.title).setHeaderActions(headerActions).setData($data).build(),\n });\n\n const newPanelType =\n sceneRef.state.panelType !== AvgFieldPanelType.timeseries\n ? AvgFieldPanelType.timeseries\n : AvgFieldPanelType.histogram;\n setPanelOption('panelType', newPanelType);\n menu.setState({ panelType: newPanelType });\n\n const fieldsAggregatedBreakdownScene = findObjectOfType(\n gridItem,\n (o) => o instanceof FieldsAggregatedBreakdownScene,\n FieldsAggregatedBreakdownScene\n );\n if (fieldsAggregatedBreakdownScene) {\n fieldsAggregatedBreakdownScene.rebuildAvgFields();\n }\n\n onSwitchVizTypeTracking(newPanelType);\n },\n });\n}\n\nexport const getExploreLink = (sceneRef: SceneObject) => {\n const indexScene = sceneGraph.getAncestor(sceneRef, IndexScene);\n const $data = sceneGraph.getData(sceneRef);\n let queryRunner = $data instanceof SceneQueryRunner ? $data : getQueryRunnerFromChildren($data)[0];\n\n // If we don't have a query runner, then our panel is within a SceneCSSGridItem, we need to get the query runner from there\n if (!queryRunner) {\n const breakdownScene = sceneGraph.findObject(\n sceneRef,\n (o) => o instanceof FieldValuesBreakdownScene || o instanceof LabelValuesBreakdownScene\n );\n if (breakdownScene) {\n const queryProvider = sceneGraph.getData(breakdownScene);\n\n if (queryProvider instanceof SceneQueryRunner) {\n queryRunner = queryProvider;\n } else {\n queryRunner = getQueryRunnerFromChildren(queryProvider)[0];\n }\n } else {\n logger.error(new Error('Unable to locate query runner!'), {\n msg: 'PanelMenu - getExploreLink: Unable to locate query runner!',\n });\n }\n }\n const uninterpolatedExpr: string | undefined = queryRunner.state.queries[0].expr;\n const expr = sceneGraph.interpolate(sceneRef, uninterpolatedExpr);\n\n return onExploreLinkClick(indexScene, expr);\n};\n\nconst onExploreLinkClickTracking = () => {\n reportAppInteraction(USER_EVENTS_PAGES.all, USER_EVENTS_ACTIONS.all.open_in_explore_menu_clicked);\n};\n\nconst onSwitchVizTypeTracking = (newVizType: AvgFieldPanelType) => {\n reportAppInteraction(USER_EVENTS_PAGES.service_details, USER_EVENTS_ACTIONS.service_details.change_viz_type, {\n newVizType,\n });\n};\n\nconst getInvestigationLink = (addToInvestigation: AddToInvestigationButton) => {\n const links = getPluginLinkExtensions({\n extensionPointId: ExtensionPoints.MetricInvestigation,\n context: addToInvestigation.state.context,\n });\n\n return links.extensions[0];\n};\n\nconst onAddToInvestigationClick = (event: React.MouseEvent, addToInvestigation: AddToInvestigationButton) => {\n const link = getInvestigationLink(addToInvestigation);\n if (link && link.onClick) {\n link.onClick(event);\n }\n};\n\nfunction subscribeToAddToInvestigation(exploreLogsVizPanelMenu: PanelMenu) {\n const addToInvestigationButton = exploreLogsVizPanelMenu.state.investigationsButton;\n if (addToInvestigationButton) {\n const link = getInvestigationLink(addToInvestigationButton);\n\n const existingMenuItems = exploreLogsVizPanelMenu.state.body?.state.items ?? [];\n\n const existingAddToExplorationLink = existingMenuItems.find((item) => item.text === ADD_TO_INVESTIGATION_MENU_TEXT);\n\n if (link) {\n if (!existingAddToExplorationLink) {\n exploreLogsVizPanelMenu.state.body?.addItem({\n text: ADD_TO_INVESTIGATION_MENU_DIVIDER_TEXT,\n type: 'divider',\n });\n exploreLogsVizPanelMenu.state.body?.addItem({\n text: ADD_TO_INVESTIGATION_MENU_GROUP_TEXT,\n type: 'group',\n });\n exploreLogsVizPanelMenu.state.body?.addItem({\n text: ADD_TO_INVESTIGATION_MENU_TEXT,\n iconClassName: 'plus-square',\n onClick: (e) => onAddToInvestigationClick(e, addToInvestigationButton),\n });\n } else {\n if (existingAddToExplorationLink) {\n exploreLogsVizPanelMenu.state.body?.setItems(\n existingMenuItems.filter(\n (item) =>\n [\n ADD_TO_INVESTIGATION_MENU_DIVIDER_TEXT,\n ADD_TO_INVESTIGATION_MENU_GROUP_TEXT,\n ADD_TO_INVESTIGATION_MENU_TEXT,\n ].includes(item.text) === false\n )\n );\n }\n }\n }\n }\n}\n\nexport const getPanelWrapperStyles = (theme: GrafanaTheme2) => {\n return {\n panelWrapper: css({\n width: '100%',\n height: '100%',\n label: 'panel-wrapper',\n position: 'absolute',\n display: 'flex',\n\n // @todo remove this wrapper and styles when core changes are introduced in 11.5\n // Need more specificity to override core style\n 'button.show-on-hover': {\n opacity: 1,\n visibility: 'visible',\n background: 'none',\n '&:hover': {\n background: theme.colors.secondary.shade,\n },\n },\n }),\n };\n};\n","import React from 'react';\n\nimport { toURLRange, urlUtil } from '@grafana/data';\nimport { config } from '@grafana/runtime';\nimport { sceneGraph } from '@grafana/scenes';\nimport { ToolbarButton } from '@grafana/ui';\n\nimport { getDataSource, getQueryExpr } from 'services/scenes';\nimport { testIds } from 'services/testIds';\nimport { IndexScene } from 'Components/IndexScene/IndexScene';\nimport { USER_EVENTS_ACTIONS, USER_EVENTS_PAGES, reportAppInteraction } from 'services/analytics';\nimport { getDisplayedFields, getLogsVisualizationType } from 'services/store';\nimport { unknownToStrings } from '../../services/narrowing';\nimport { DATAPLANE_LABELS_NAME } from '../../services/logsFrame';\ninterface GoToExploreButtonState {\n exploration: IndexScene;\n}\n\nexport const GoToExploreButton = ({ exploration }: GoToExploreButtonState) => {\n const onClick = () => {\n reportAppInteraction(\n USER_EVENTS_PAGES.service_details,\n USER_EVENTS_ACTIONS.service_details.open_in_explore_clicked\n );\n onExploreLinkClick(exploration, undefined, true);\n };\n\n return (\n \n Open in Explore\n \n );\n};\n\nexport const onExploreLinkClick = (indexScene: IndexScene, expr?: string, open = false) => {\n if (!expr) {\n expr = getQueryExpr(indexScene);\n }\n\n expr = expr.replace(/\\s+/g, ' ').trimEnd();\n\n const datasource = getDataSource(indexScene);\n const timeRange = sceneGraph.getTimeRange(indexScene).state.value;\n const displayedFields = getDisplayedFields(indexScene);\n const visualisationType = getLogsVisualizationType();\n const columns = getUrlColumns();\n const exploreState = JSON.stringify({\n ['loki-explore']: {\n range: toURLRange(timeRange.raw),\n queries: [{ refId: 'logs', expr, datasource }],\n panelsState: {\n logs: {\n displayedFields,\n visualisationType,\n columns,\n labelFieldName: visualisationType === 'table' ? DATAPLANE_LABELS_NAME : undefined,\n },\n },\n datasource,\n },\n });\n const subUrl = config.appSubUrl ?? '';\n const link = urlUtil.renderUrl(`${subUrl}/explore`, { panes: exploreState, schemaVersion: 1 });\n if (open) {\n window.open(link, '_blank');\n }\n\n return link;\n};\n\nfunction getUrlColumns() {\n const params = new URLSearchParams(window.location.search);\n const urlColumns = params.get('urlColumns');\n if (urlColumns) {\n try {\n const columns = unknownToStrings(JSON.parse(urlColumns));\n let columnsParam: Record = {};\n for (const key in columns) {\n columnsParam[key] = columns[key];\n }\n return columnsParam;\n } catch (e) {\n console.error(e);\n }\n }\n return undefined;\n}\n","import React from 'react';\n\nimport { AdHocVariableFilter, BusEventBase, DataFrame } from '@grafana/data';\nimport {\n AdHocFiltersVariable,\n SceneComponentProps,\n SceneObject,\n SceneObjectBase,\n SceneObjectState,\n} from '@grafana/scenes';\nimport { VariableHide } from '@grafana/schema';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from 'services/analytics';\nimport {\n LEVEL_VARIABLE_VALUE,\n VAR_FIELDS,\n VAR_FIELDS_AND_METADATA,\n VAR_LABELS,\n VAR_LABELS_REPLICA,\n VAR_LEVELS,\n VAR_METADATA,\n} from 'services/variables';\nimport { FilterButton } from 'Components/FilterButton';\nimport { getDetectedLabelsFrame } from '../ServiceScene';\nimport { getParserForField } from '../../../services/fields';\nimport {\n getAdHocFiltersVariable,\n getFieldsAndMetadataVariable,\n getValueFromAdHocVariableFilter,\n} from '../../../services/variableGetters';\nimport { FilterOp, NumericFilterOp } from '../../../services/filterTypes';\n\nimport { addToFavorites } from '../../../services/favorites';\nimport { areArraysEqual } from '../../../services/comparison';\nimport { logger } from '../../../services/logger';\nimport { isFilterMetadata } from '../../../services/filters';\nimport { addCurrentUrlToHistory } from '../../../services/navigate';\n\nexport interface AddToFiltersButtonState extends SceneObjectState {\n frame: DataFrame;\n variableName: InterpolatedFilterType;\n hideExclude?: boolean;\n isIncluded?: boolean;\n isExcluded?: boolean;\n}\n\nexport class AddFilterEvent extends BusEventBase {\n constructor(\n public source: 'legend' | 'filterButton' | 'variable',\n public operator: FilterType | NumericFilterType,\n public key: string,\n public value?: string\n ) {\n super();\n }\n public static type = 'add-filter';\n}\n\nexport class ClearFilterEvent extends BusEventBase {\n constructor(public key: string, public value?: string, public operator?: FilterType) {\n super();\n }\n public static type = 'add-filter';\n}\n\nexport type NumericFilterType = NumericFilterOp.gt | NumericFilterOp.gte | NumericFilterOp.lt | NumericFilterOp.lte;\n\n/**\n * Filter types:\n * - include/exclude: add a negative or positive filter\n * - clear: remove filter if exists\n * - toggle: if the filter does not exist, add as include; if exists, remove\n */\nexport type FilterType = 'include' | 'clear' | 'exclude' | 'toggle';\n\nexport function addAdHocFilter(filter: AdHocVariableFilter, scene: SceneObject, variableType: InterpolatedFilterType) {\n const type: FilterType = filter.operator === '=' ? 'include' : 'exclude';\n addToFilters(filter.key, filter.value, type, scene, variableType);\n}\n\nexport type InterpolatedFilterType = typeof VAR_LABELS | typeof VAR_FIELDS | typeof VAR_LEVELS | typeof VAR_METADATA;\nexport type UIVariableFilterType = typeof VAR_LEVELS | typeof VAR_FIELDS_AND_METADATA;\nexport type AdHocFilterTypes = InterpolatedFilterType | typeof VAR_LABELS_REPLICA | typeof VAR_FIELDS_AND_METADATA;\n\nexport function clearFilters(\n key: string,\n scene: SceneObject,\n variableType: InterpolatedFilterType,\n value?: string,\n operator?: FilterType\n) {\n const variable = getUIAdHocVariable(variableType, key, scene);\n\n let filters = variable.state.filters.filter((filter) => {\n const fieldValue = getValueFromAdHocVariableFilter(variableType, filter);\n if (value && operator) {\n return !(filter.key === key && fieldValue.value === value && filter.operator === operator);\n }\n if (value) {\n return !(filter.key === key && fieldValue.value === value);\n }\n if (operator) {\n return !(filter.key === key && filter.operator === operator);\n }\n\n return !(filter.key === key);\n });\n\n scene.publishEvent(new ClearFilterEvent(key, value, operator), true);\n\n variable.setState({\n filters,\n });\n}\n\ntype OperatorType = 'greater' | 'lesser';\nconst getNumericOperatorType = (op: NumericFilterType | string): OperatorType | undefined => {\n if (op === FilterOp.gt || op === FilterOp.gte) {\n return 'greater';\n }\n if (op === FilterOp.lt || op === FilterOp.lte) {\n return 'lesser';\n }\n return undefined;\n};\n\nexport function removeNumericFilter(\n key: string,\n scene: SceneObject,\n operator?: NumericFilterType,\n variableType?: InterpolatedFilterType\n) {\n if (!variableType) {\n variableType = resolveVariableTypeForField(key, scene);\n }\n const variable = getUIAdHocVariable(variableType, key, scene);\n const operatorType = operator ? getNumericOperatorType(operator) : undefined;\n\n let filters = variable.state.filters.filter((filter) => {\n return !(\n filter.key === key &&\n (getNumericOperatorType(filter.operator) === operatorType || filter.operator === FilterOp.NotEqual)\n );\n });\n\n variable.setState({\n filters,\n });\n}\n\nexport function addNumericFilter(\n key: string,\n value: string,\n operator: NumericFilterType,\n scene: SceneObject,\n variableType?: InterpolatedFilterType\n) {\n const operatorType = getNumericOperatorType(operator);\n\n if (!variableType) {\n variableType = resolveVariableTypeForField(key, scene);\n }\n const variable = getUIAdHocVariable(variableType, key, scene);\n\n let valueObject: string | undefined = undefined;\n if (variableType === VAR_FIELDS) {\n valueObject = JSON.stringify({\n value,\n parser: getParserForField(key, scene),\n });\n }\n\n let filters = variable.state.filters.filter((filter) => {\n return !(\n filter.key === key &&\n (getNumericOperatorType(filter.operator) === operatorType || filter.operator === FilterOp.NotEqual)\n );\n });\n\n filters = [\n ...filters,\n {\n key,\n operator: operator,\n value: valueObject ? valueObject : value,\n valueLabels: [value],\n },\n ];\n\n variable.setState({\n filters,\n });\n\n scene.publishEvent(new AddFilterEvent('filterButton', operator, key, value), true);\n}\n\n/**\n * Helper for buttons in the UI\n * toggles an ad hoc filter to a given variable type\n */\nexport function addToFilters(\n key: string,\n value: string,\n operator: FilterType,\n scene: SceneObject,\n variableType: InterpolatedFilterType\n) {\n // Add the current url to browser history before the state is changed so the user can revert their change.\n addCurrentUrlToHistory();\n\n if (variableType === VAR_LABELS) {\n addToFavorites(key, value, scene);\n }\n\n const variable = getUIAdHocVariable(variableType, key, scene);\n\n let valueObject: string | undefined = undefined;\n let valueLabel = value;\n if (variableType === VAR_FIELDS) {\n valueObject = JSON.stringify({\n value,\n parser: getParserForField(key, scene),\n });\n } else if (variableType === VAR_LEVELS && operator === 'exclude') {\n valueLabel = `!${value}`;\n }\n\n // If the filter exists, filter it\n let filters = variable.state.filters.filter((filter) => {\n const fieldValue = getValueFromAdHocVariableFilter(variableType, filter);\n\n // if we're including, we want to remove all filters that have this key\n if (operator === 'include') {\n return !(filter.key === key && filter.operator === FilterOp.NotEqual);\n }\n if (operator === 'exclude') {\n return !(filter.key === key && filter.operator === FilterOp.Equal);\n }\n\n return !(filter.key === key && fieldValue.value === value);\n });\n\n const filterExists = filters.length !== variable.state.filters.length;\n\n if (operator === 'include' || operator === 'exclude' || (!filterExists && operator === 'toggle')) {\n filters = [\n ...filters,\n {\n key,\n operator: operator === 'exclude' ? FilterOp.NotEqual : FilterOp.Equal,\n value: valueObject ? valueObject : value,\n valueLabels: [valueLabel],\n },\n ];\n }\n\n // Variable needs to be updated before event is published!\n variable.setState({\n filters,\n });\n\n scene.publishEvent(new AddFilterEvent('filterButton', operator, key, value), true);\n}\n\nexport function replaceFilter(\n key: string,\n value: string,\n operator: Extract,\n scene: SceneObject,\n variableType: InterpolatedFilterType\n) {\n const variable = getUIAdHocVariable(variableType, key, scene);\n\n variable.setState({\n filters: [\n {\n key,\n operator: operator === 'exclude' ? FilterOp.NotEqual : FilterOp.Equal,\n value,\n },\n ],\n hide: VariableHide.hideLabel,\n });\n}\n\nexport function validateVariableNameForField(field: string, variableName: InterpolatedFilterType) {\n // Special case: If the key is LEVEL_VARIABLE_VALUE, we need to use the VAR_FIELDS.\n if (field === LEVEL_VARIABLE_VALUE) {\n return VAR_LEVELS;\n }\n return variableName;\n}\n\nfunction resolveVariableTypeForField(field: string, scene: SceneObject): InterpolatedFilterType {\n const indexedLabel = getDetectedLabelsFrame(scene)?.fields?.find((label) => label.name === field);\n return indexedLabel ? VAR_LABELS : VAR_FIELDS;\n}\n\nexport class AddToFiltersButton extends SceneObjectBase {\n constructor(state: AddToFiltersButtonState) {\n super(state);\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n onActivate() {\n const filter = getFilter(this.state.frame);\n if (filter) {\n const variable = getUIAdHocVariable(this.state.variableName, filter.name, this);\n this.setFilterState(variable);\n\n this._subs.add(\n variable.subscribeToState((newState, prevState) => {\n if (!areArraysEqual(newState.filters, prevState.filters)) {\n this.setFilterState(variable);\n }\n })\n );\n }\n }\n\n private setFilterState(variable: AdHocFiltersVariable) {\n const filter = getFilter(this.state.frame);\n if (!filter) {\n this.setState({\n isIncluded: false,\n isExcluded: false,\n });\n return;\n }\n\n // Check if the filter is already there\n const filterInSelectedFilters = variable.state.filters.find((f) => {\n const isMetadata = isFilterMetadata(filter);\n const value = getValueFromAdHocVariableFilter(isMetadata ? VAR_METADATA : VAR_FIELDS, f);\n return f.key === filter.name && value.value === filter.value;\n });\n\n if (!filterInSelectedFilters) {\n this.setState({\n isIncluded: false,\n isExcluded: false,\n });\n return;\n }\n\n this.setState({\n isIncluded: filterInSelectedFilters.operator === FilterOp.Equal,\n isExcluded: filterInSelectedFilters.operator === FilterOp.NotEqual,\n });\n }\n\n public onClick = (type: FilterType) => {\n const filter = getFilter(this.state.frame);\n if (!filter) {\n return;\n }\n\n addToFilters(filter.name, filter.value, type, this, this.state.variableName);\n const variable = getUIAdHocVariable(this.state.variableName, filter.name, this);\n\n reportAppInteraction(\n USER_EVENTS_PAGES.service_details,\n USER_EVENTS_ACTIONS.service_details.add_to_filters_in_breakdown_clicked,\n {\n filterType: this.state.variableName,\n key: filter.name,\n action: type,\n filtersLength: variable?.state.filters.length || 0,\n }\n );\n };\n\n public static Component = ({ model }: SceneComponentProps) => {\n const { hideExclude, isExcluded, isIncluded } = model.useState();\n return (\n model.onClick('include')}\n onClear={() => model.onClick('clear')}\n onExclude={() => model.onClick('exclude')}\n hideExclude={hideExclude}\n />\n );\n };\n}\n\nconst getFilter = (frame: DataFrame) => {\n // current filter name and value is format {name: value}\n const filterNameAndValueObj = frame.fields[1]?.labels ?? {};\n // Sanity check - filter should have only one key-value pair\n if (Object.keys(filterNameAndValueObj).length !== 1) {\n logger.warn('getFilter: unexpected empty labels');\n return;\n }\n const name = Object.keys(filterNameAndValueObj)[0];\n const value = filterNameAndValueObj[name];\n return { name, value };\n};\n\nconst getUIAdHocVariable = (variableType: InterpolatedFilterType, key: string, scene: SceneObject) => {\n return variableType === VAR_FIELDS || variableType === VAR_METADATA\n ? getFieldsAndMetadataVariable(scene)\n : getAdHocFiltersVariable(validateVariableNameForField(key, variableType), scene);\n};\n","import { SceneComponentProps, sceneGraph, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport React, { ChangeEvent } from 'react';\nimport { ByFrameRepeater } from './ByFrameRepeater';\nimport { SearchInput } from './SearchInput';\nimport { LabelBreakdownScene } from './LabelBreakdownScene';\nimport { FieldsBreakdownScene } from './FieldsBreakdownScene';\nimport { BusEventBase } from '@grafana/data';\nimport { logger } from '../../../services/logger';\n\nexport class BreakdownSearchReset extends BusEventBase {\n public static type = 'breakdown-search-reset';\n}\n\nexport interface BreakdownSearchSceneState extends SceneObjectState {\n filter?: string;\n}\n\nconst recentFilters: Record = {};\n\nexport class BreakdownSearchScene extends SceneObjectBase {\n private cacheKey: string;\n constructor(cacheKey: string) {\n super({\n filter: recentFilters[cacheKey] ?? '',\n });\n this.cacheKey = cacheKey;\n }\n\n public static Component = ({ model }: SceneComponentProps) => {\n const { filter } = model.useState();\n return (\n \n );\n };\n\n public onValueFilterChange = (event: ChangeEvent) => {\n this.setState({ filter: event.target.value });\n this.filterValues(event.target.value);\n };\n\n public clearValueFilter = () => {\n this.setState({ filter: '' });\n this.filterValues('');\n };\n\n public reset = () => {\n this.setState({ filter: '' });\n recentFilters[this.cacheKey] = '';\n };\n\n private filterValues(filter: string) {\n const breakdownScene = sceneGraph.findObject(\n this,\n (o) => o instanceof LabelBreakdownScene || o instanceof FieldsBreakdownScene\n );\n if (breakdownScene instanceof LabelBreakdownScene || breakdownScene instanceof FieldsBreakdownScene) {\n recentFilters[this.cacheKey] = filter;\n const byFrameRepeater = sceneGraph.findDescendents(breakdownScene, ByFrameRepeater);\n byFrameRepeater?.forEach((child) => {\n if (child.state.body.isActive) {\n child.filterByString(filter);\n }\n });\n } else {\n logger.warn('unable to find Breakdown scene', {\n typeofBody: typeof breakdownScene,\n filter,\n });\n }\n }\n}\n","import React from 'react';\n\nimport { DataFrame, LoadingState, PanelData } from '@grafana/data';\nimport {\n SceneByFrameRepeater,\n SceneComponentProps,\n SceneDataTransformer,\n SceneFlexItem,\n SceneFlexLayout,\n sceneGraph,\n SceneLayout,\n SceneObjectBase,\n SceneObjectState,\n SceneReactObject,\n VizPanel,\n} from '@grafana/scenes';\nimport { sortSeries } from 'services/sorting';\nimport { fuzzySearch } from '../../../services/search';\nimport { getLabelValue } from './SortByScene';\nimport { Alert, Button } from '@grafana/ui';\nimport { css } from '@emotion/css';\nimport { BreakdownSearchReset } from './BreakdownSearchScene';\nimport { map, Observable } from 'rxjs';\nimport { LayoutSwitcher } from './LayoutSwitcher';\nimport { VALUE_SUMMARY_PANEL_KEY } from './Panels/ValueSummary';\nimport { logger } from '../../../services/logger';\n\ninterface ByFrameRepeaterState extends SceneObjectState {\n body: SceneLayout;\n getLayoutChild(frame: DataFrame, frameIndex: number): SceneFlexItem;\n}\n\ntype FrameFilterCallback = (frame: DataFrame) => boolean;\ntype FrameIterateCallback = (frames: DataFrame[], seriesIndex: number) => void;\n\nexport class ByFrameRepeater extends SceneObjectBase {\n private unfilteredChildren: SceneFlexItem[] = [];\n private sortBy: string;\n private direction: string;\n private sortedSeries: DataFrame[] = [];\n private getFilter: () => string;\n public constructor({\n sortBy,\n direction,\n getFilter,\n ...state\n }: ByFrameRepeaterState & { sortBy: string; direction: string; getFilter: () => string }) {\n super(state);\n\n this.sortBy = sortBy;\n this.direction = direction;\n this.getFilter = getFilter;\n\n this.addActivationHandler(() => {\n const data = sceneGraph.getData(this);\n\n this._subs.add(\n data.subscribeToState((data, prevData) => {\n if (\n data.data?.state === LoadingState.Done ||\n (data.data?.state === LoadingState.Streaming &&\n data.data.series.length > (prevData.data?.series.length ?? 0))\n ) {\n this.performRepeat(data.data);\n }\n })\n );\n\n if (data.state.data) {\n this.performRepeat(data.state.data);\n }\n });\n }\n\n public sort = (sortBy: string, direction: string) => {\n const data = sceneGraph.getData(this);\n this.sortBy = sortBy;\n this.direction = direction;\n if (data.state.data) {\n this.performRepeat(data.state.data);\n }\n };\n\n private performRepeat(data: PanelData) {\n const newChildren: SceneFlexItem[] = [];\n const sortedSeries = sortSeries(data.series, this.sortBy, this.direction);\n\n for (let seriesIndex = 0; seriesIndex < sortedSeries.length; seriesIndex++) {\n const layoutChild = this.state.getLayoutChild(sortedSeries[seriesIndex], seriesIndex);\n newChildren.push(layoutChild);\n }\n\n this.sortedSeries = sortedSeries;\n this.unfilteredChildren = newChildren;\n\n if (this.getFilter()) {\n this.state.body.setState({ children: [] });\n this.filterByString(this.getFilter());\n } else {\n this.state.body.setState({ children: newChildren });\n }\n }\n\n public iterateFrames = (callback: FrameIterateCallback) => {\n const data = sceneGraph.getData(this).state.data;\n if (!data) {\n return;\n }\n for (let seriesIndex = 0; seriesIndex < this.sortedSeries.length; seriesIndex++) {\n callback(this.sortedSeries, seriesIndex);\n }\n };\n\n filterByString = (filter: string) => {\n let haystack: string[] = [];\n\n this.iterateFrames((frames, seriesIndex) => {\n const labelValue = getLabelValue(frames[seriesIndex]);\n haystack.push(labelValue);\n });\n fuzzySearch(haystack, filter, (data) => {\n if (data && data[0]) {\n // We got search results\n this.filterFrames((frame: DataFrame) => {\n const label = getLabelValue(frame);\n return data[0].includes(label);\n });\n } else {\n // reset search\n this.filterFrames(() => true);\n }\n\n this.filterSummaryChart(data);\n });\n };\n\n /**\n * Filters the summary panel rendered above the breakdown panels by adding a transformation to the panel\n * @param data\n * @private\n */\n private filterSummaryChart(data: string[][]) {\n const layoutSwitcher = sceneGraph.getAncestor(this, LayoutSwitcher);\n\n if (layoutSwitcher) {\n const singleGraphParent = sceneGraph.findAllObjects(\n layoutSwitcher,\n (obj) => obj.isActive && obj.state.key === VALUE_SUMMARY_PANEL_KEY\n );\n if (singleGraphParent[0] instanceof SceneFlexLayout) {\n const panel = sceneGraph.findDescendents(singleGraphParent[0], VizPanel)[0];\n if (panel instanceof VizPanel) {\n panel.setState({\n $data: new SceneDataTransformer({\n transformations: [() => limitFramesByName(data[0])],\n }),\n });\n } else {\n logger.warn('filterSummaryChart: VizPanel not found', { typeofPanel: typeof panel });\n }\n } else {\n logger.warn('filterSummaryChart: SceneFlexItem not found', { typeofGraphParent: typeof singleGraphParent });\n }\n }\n }\n\n public filterFrames = (filterFn: FrameFilterCallback) => {\n const newChildren: SceneFlexItem[] = [];\n this.iterateFrames((frames, seriesIndex) => {\n if (filterFn(frames[seriesIndex])) {\n newChildren.push(this.unfilteredChildren[seriesIndex]);\n }\n });\n\n if (newChildren.length === 0) {\n const filter = this.getFilter();\n this.state.body.setState({ children: [buildNoResultsScene(filter, this.clearFilter)] });\n } else {\n this.state.body.setState({ children: newChildren });\n }\n };\n\n public clearFilter = () => {\n this.publishEvent(new BreakdownSearchReset(), true);\n };\n\n public static Component = ({ model }: SceneComponentProps) => {\n const { body } = model.useState();\n return ;\n };\n}\n\nfunction buildNoResultsScene(filter: string, clearFilter: () => void) {\n return new SceneFlexLayout({\n direction: 'row',\n children: [\n new SceneFlexItem({\n body: new SceneReactObject({\n reactNode: (\n
\n \n No values found matching “{filter}”\n \n \n
\n ),\n }),\n }),\n ],\n });\n}\n\nconst styles = {\n alertContainer: css({\n flexGrow: 1,\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n }),\n noResultsAlert: css({\n minWidth: '30vw',\n flexGrow: 0,\n }),\n clearButton: css({\n marginLeft: '1.5rem',\n }),\n};\n\nexport function limitFramesByName(matches: string[]) {\n return (source: Observable) => {\n return source.pipe(\n map((frames) => {\n if (!matches || !matches.length) {\n return frames;\n }\n let newFrames: DataFrame[] = [];\n frames.forEach((f) => {\n const label = getLabelValue(f);\n if (matches.includes(label)) {\n newFrames.push(f);\n }\n });\n return newFrames;\n })\n );\n };\n}\n","import { SceneComponentProps, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport { GrotError } from '../../GrotError';\nimport { Alert } from '@grafana/ui';\nimport React from 'react';\nimport { emptyStateStyles } from './FieldsBreakdownScene';\n\nexport interface EmptyLayoutSceneState extends SceneObjectState {\n type: 'fields' | 'labels';\n}\n\nexport class EmptyLayoutScene extends SceneObjectBase {\n public static Component({ model }: SceneComponentProps) {\n const { type } = model.useState();\n return (\n \n \n We did not find any {type} for the given timerange. Please{' '}\n \n let us know\n {' '}\n if you think this is a mistake.\n \n \n );\n }\n}\n","import { css } from '@emotion/css';\nimport React, { useState } from 'react';\n\nimport { GrafanaTheme2, SelectableValue } from '@grafana/data';\nimport { Select, useStyles2, InlineField, Icon, ActionMeta, InputActionMeta } from '@grafana/ui';\nimport { testIds } from '../../../services/testIds';\nimport { VariableValueOption } from '@grafana/scenes';\n\nimport { wrapWildcardSearch } from '../../../services/query';\n\ntype Props = {\n options: VariableValueOption[];\n value?: T;\n onChange: (label: T | undefined) => void;\n label: string;\n};\n\nexport type AsyncFieldSelectorProps = {\n selectOption: (value: string) => void;\n isLoading: boolean;\n initialFilter: SelectableValue;\n} & Props;\n\nexport function FieldSelector({ options, value, onChange, label }: Props) {\n const styles = useStyles2(getStyles);\n const [selected, setSelected] = useState(false);\n\n const selectableOptions: SelectableValue[] = options.map((option) => {\n return {\n label: option.label,\n value: option.value,\n };\n });\n return (\n \n setSelected(true)}\n onCloseMenu={() => setSelected(false)}\n onChange={(selected: SelectableValue) => onChange(selected.value)}\n className={styles.select}\n prefix={selected ? undefined : }\n />\n \n );\n}\n\nexport function ServiceFieldSelector({\n options,\n value,\n onChange,\n label,\n selectOption,\n isLoading,\n initialFilter,\n}: AsyncFieldSelectorProps) {\n const styles = useStyles2(getStyles);\n const [selected, setSelected] = useState(false);\n const [customOption, setCustomOption] = useState>(initialFilter);\n\n const selectableOptions: SelectableValue[] = options.map((option) => {\n return {\n label: option.label,\n value: option.value,\n };\n });\n const allOptions =\n customOption && value && customOption.value?.includes(value)\n ? [customOption, ...selectableOptions]\n : selectableOptions;\n\n const selectedOption = allOptions?.find((opt) => opt.value === value);\n\n return (\n \n setSelected(true)}\n onCloseMenu={() => setSelected(false)}\n allowCustomValue={true}\n prefix={selected || selectedOption?.__isNew__ ? undefined : }\n onChange={(value: SelectableValue, actionMeta: ActionMeta) => {\n // Custom added value\n if (value?.__isNew__ || value?.icon) {\n setCustomOption({ ...value, icon: 'filter' });\n return onChange(value.value);\n }\n\n // If the user clears the search\n if (actionMeta.action === 'clear') {\n return onChange('');\n }\n\n // Select the service is the value is not a custom filter\n if (actionMeta.action === 'select-option' && value.value && !value.__isNew__) {\n selectOption(value.value);\n }\n }}\n onInputChange={(value: string | undefined, actionMeta: InputActionMeta) => {\n // Grafana/grafana doesn't have types from react-select, but we need the prevInput to add custom value when user clicks off with active search string\n const meta = actionMeta as InputActionMeta & { prevInputValue: string };\n\n // The user is typing\n if (meta.action === 'input-change') {\n return onChange(value);\n }\n\n // the user closed the menu, with text in search box\n if (meta.action === 'menu-close' && meta.prevInputValue) {\n setCustomOption({\n value: wrapWildcardSearch(meta.prevInputValue),\n label: meta.prevInputValue,\n icon: 'filter',\n __isNew__: true,\n });\n return onChange(meta.prevInputValue);\n }\n }}\n />\n \n );\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n input: css({\n marginBottom: 0,\n }),\n select: css({\n maxWidth: theme.spacing(64),\n minWidth: theme.spacing(20),\n }),\n selectWrapper: css({\n label: 'field-selector-select-wrapper',\n maxWidth: theme.spacing(62.5),\n minWidth: theme.spacing(20),\n marginRight: theme.spacing.x1,\n marginBottom: 0,\n }),\n serviceSceneSelectWrapper: css({\n label: 'service-select-wrapper',\n maxWidth: theme.spacing(62.5),\n minWidth: theme.spacing(20),\n marginRight: theme.spacing.x1,\n marginBottom: 0,\n }),\n };\n}\n","import {\n PanelBuilders,\n SceneComponentProps,\n SceneCSSGridLayout,\n SceneDataProvider,\n SceneDataState,\n SceneFlexItem,\n SceneFlexLayout,\n sceneGraph,\n SceneObject,\n SceneObjectBase,\n SceneObjectState,\n SceneQueryRunner,\n SceneReactObject,\n} from '@grafana/scenes';\nimport { buildDataQuery, renderLogQLFieldFilters, renderLogQLMetadataFilters } from '../../../services/query';\nimport { getSortByPreference } from '../../../services/store';\nimport { DataQueryError, LoadingState } from '@grafana/data';\nimport { LayoutSwitcher } from './LayoutSwitcher';\nimport { getQueryRunner } from '../../../services/panel';\nimport { ByFrameRepeater } from './ByFrameRepeater';\nimport { Alert, DrawStyle, LoadingPlaceholder, useStyles2 } from '@grafana/ui';\nimport {\n buildFieldsQueryString,\n getFilterBreakdownValueScene,\n getParserForField,\n getParserFromFieldsFilters,\n} from '../../../services/fields';\nimport { getLabelValue } from './SortByScene';\nimport { ParserType, VAR_FIELDS, VAR_METADATA } from '../../../services/variables';\nimport React from 'react';\nimport { FIELDS_BREAKDOWN_GRID_TEMPLATE_COLUMNS, FieldsBreakdownScene } from './FieldsBreakdownScene';\nimport { getDetectedFieldsFrame } from '../ServiceScene';\nimport { DEFAULT_SORT_BY } from '../../../services/sorting';\nimport {\n getFieldGroupByVariable,\n getFieldsVariable,\n getLabelsVariable,\n getLevelsVariable,\n getLineFiltersVariable,\n getMetadataVariable,\n getPatternsVariable,\n} from '../../../services/variableGetters';\nimport { LokiQuery } from '../../../services/lokiQuery';\nimport { getPanelWrapperStyles, PanelMenu } from '../../Panels/PanelMenu';\nimport { ValueSummaryPanelScene } from './Panels/ValueSummary';\nimport { areArraysEqual } from '../../../services/comparison';\nimport { logger } from '../../../services/logger';\n\nexport interface FieldValuesBreakdownSceneState extends SceneObjectState {\n body?: (LayoutSwitcher & SceneObject) | (SceneReactObject & SceneObject);\n $data?: SceneDataProvider;\n}\n\nexport class FieldValuesBreakdownScene extends SceneObjectBase {\n constructor(state: Partial) {\n super(state);\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n public static Selector({ model }: SceneComponentProps) {\n const { body } = model.useState();\n if (body instanceof LayoutSwitcher) {\n return <>{body && };\n }\n\n return <>;\n }\n\n public static Component = ({ model }: SceneComponentProps) => {\n const { body } = model.useState();\n const styles = useStyles2(getPanelWrapperStyles);\n if (body) {\n return {body && };\n }\n\n return ;\n };\n\n private getTagKey() {\n const groupByVariable = getFieldGroupByVariable(this);\n return String(groupByVariable.state.value);\n }\n\n onActivate() {\n const query = this.buildQuery();\n\n // Set query runner\n this.setState({\n body: this.build(query),\n $data: this.buildQueryRunner(),\n });\n\n // Subscribe to data query changes\n this._subs.add(\n this.state.$data?.subscribeToState((newState) => {\n this.onValuesDataQueryChange(newState, query);\n })\n );\n\n this.runQuery();\n this.setSubscriptions();\n }\n\n private buildQueryRunner() {\n const query = this.buildQuery();\n return getQueryRunner([query], { runQueriesMode: 'manual' });\n }\n\n /**\n * Builds the LokiQuery for the value breakdown\n */\n private buildQuery() {\n const tagKey = this.getTagKey();\n const fieldsVariable = getFieldsVariable(this);\n const detectedFieldsFrame = getDetectedFieldsFrame(this);\n const queryString = buildFieldsQueryString(tagKey, fieldsVariable, detectedFieldsFrame);\n // Manually interpolate query so we don't pollute the variable interpolation for other queries\n const { variableName, filterExpression } = this.removeFieldLabelFromVariableInterpolation();\n const expression = sceneGraph.interpolate(this, queryString.replace(`$\\{${variableName}}`, filterExpression));\n\n return buildDataQuery(expression, { legendFormat: `{{${tagKey}}}`, refId: tagKey });\n }\n\n /**\n * Sets activation subscriptions\n */\n private setSubscriptions() {\n // Subscribe to time range changes\n this._subs.add(\n sceneGraph.getTimeRange(this).subscribeToState(() => {\n // Run query on time range change\n this.runQuery();\n })\n );\n\n // VARIABLE SUBS\n // Subscribe to line filter changes\n this._subs.add(\n getLineFiltersVariable(this).subscribeToState((newState, prevState) => {\n if (!areArraysEqual(newState.filters, prevState.filters)) {\n this.runQuery();\n }\n })\n );\n\n // Subscribe to pattern filter changes\n this._subs.add(\n getPatternsVariable(this).subscribeToState((newState, prevState) => {\n if (newState.value !== prevState.value) {\n this.runQuery();\n }\n })\n );\n\n // Subscribe to labels variable changes\n this._subs.add(\n getLabelsVariable(this).subscribeToState((newState, prevState) => {\n if (!areArraysEqual(newState.filters, prevState.filters)) {\n this.runQuery();\n }\n })\n );\n\n // Subscribe to levels variable changes\n this._subs.add(\n getLevelsVariable(this).subscribeToState((newState, prevState) => {\n if (!areArraysEqual(newState.filters, prevState.filters)) {\n this.runQuery();\n }\n })\n );\n\n const { parser } = this.getParserForThisField();\n\n if (parser !== 'structuredMetadata') {\n this.setFieldParserSubscriptions();\n } else {\n this.setMetadataParserSubscriptions();\n }\n }\n\n /**\n * Subscribe to variables for metadata breakdowns\n */\n private setMetadataParserSubscriptions() {\n const key = this.getTagKey();\n // Subscribe to any fields change and run the query without change\n this._subs.add(\n getFieldsVariable(this).subscribeToState(async (newState, prevState) => {\n if (!areArraysEqual(newState.filters, prevState.filters)) {\n this.runQuery();\n }\n })\n );\n\n this._subs.add(\n getMetadataVariable(this).subscribeToState(async (newState, prevState) => {\n if (\n !areArraysEqual(\n newState.filters.filter((f) => f.key !== key),\n prevState.filters.filter((f) => f.key !== key)\n )\n ) {\n this.runQuery();\n }\n })\n );\n }\n\n /**\n * Subscribe to variables for field breakdowns\n */\n private setFieldParserSubscriptions() {\n const key = this.getTagKey();\n // Subscribe to any metadata change and run the query without alteration\n this._subs.add(\n getMetadataVariable(this).subscribeToState(async (newState, prevState) => {\n if (!areArraysEqual(newState.filters, prevState.filters)) {\n this.runQuery();\n }\n })\n );\n // Subscribe to fields variable, run the query if the change wasn't for this label\n this._subs.add(\n getFieldsVariable(this).subscribeToState(async (newState, prevState) => {\n if (\n !areArraysEqual(\n newState.filters.filter((f) => f.key !== key),\n prevState.filters.filter((f) => f.key !== key)\n )\n ) {\n this.runQuery();\n }\n })\n );\n }\n\n /**\n * Rebuild the query before running.\n * If so update the query with the new parser and set the parser to state.\n */\n private rebuildQuery() {\n const query = this.buildQuery();\n this.getSceneQueryRunner()?.setState({\n queries: [query],\n });\n }\n\n /**\n * Run the field values breakdown query.\n * Generates the filterExpression excluding all filters with a key that matches the label.\n */\n private runQuery() {\n // Update the filters to exclude the current value so all options are displayed to the user\n this.rebuildQuery();\n const queryRunner = this.getSceneQueryRunner();\n queryRunner?.runQueries();\n }\n\n /**\n * Returns the query runner\n */\n private getSceneQueryRunner() {\n if (this.state.$data) {\n const queryRunners = sceneGraph.findDescendents(this.state.$data, SceneQueryRunner);\n if (queryRunners.length !== 1) {\n const error = new Error('Unable to find query runner in value breakdown!');\n logger.error(error, { msg: 'FieldValuesBreakdownScene: Unable to find query runner in value breakdown!' });\n throw error;\n }\n\n return queryRunners[0];\n }\n logger.warn('FieldValuesBreakdownScene: Query is attempting to execute, but query runner is undefined!');\n return undefined;\n }\n\n /**\n * Sets the expression builder to exclude the current field label\n */\n private removeFieldLabelFromVariableInterpolation() {\n const tagKey = this.getTagKey();\n let filterExpression;\n let variableName: typeof VAR_FIELDS | typeof VAR_METADATA;\n\n // We want the parser for this field, we only need to exclude keys for the variable type that matches this value breakdown\n const parser = this.getQueryParser();\n if (parser === 'structuredMetadata') {\n const metadataVar = getMetadataVariable(this);\n variableName = VAR_METADATA;\n filterExpression = renderLogQLMetadataFilters(metadataVar.state.filters, [tagKey]);\n } else {\n variableName = VAR_FIELDS;\n const fieldsVar = getFieldsVariable(this);\n filterExpression = renderLogQLFieldFilters(fieldsVar.state.filters, [tagKey]);\n }\n\n return { filterExpression, variableName };\n }\n\n /**\n * Actions to run when the value breakdown query response is received.\n */\n private onValuesDataQueryChange(newState: SceneDataState, query: LokiQuery) {\n if (newState.data?.state === LoadingState.Done) {\n if (this.state.body instanceof SceneReactObject) {\n this.setState({\n body: this.build(query),\n });\n }\n }\n if (newState.data?.state === LoadingState.Error) {\n this.setErrorState(newState.data.errors);\n }\n }\n\n /**\n * Sets the error body state\n */\n private setErrorState(errors: DataQueryError[] | undefined) {\n this.setState({\n body: new SceneReactObject({\n reactNode: (\n \n {errors?.map((err, key) => (\n
\n {err.status && (\n <>\n Status: {err.status}
\n \n )}\n {err.message && (\n <>\n Message: {err.message}
\n \n )}\n {err.traceId && (\n <>\n TraceId: {err.traceId}\n \n )}\n
\n ))}\n
\n ),\n }),\n });\n }\n\n /**\n * Builds the layout switcher\n */\n private build(query: LokiQuery) {\n const { optionValue, parser } = this.getParserForThisField();\n const { sortBy, direction } = getSortByPreference('fields', DEFAULT_SORT_BY, 'desc');\n const fieldsBreakdownScene = sceneGraph.getAncestor(this, FieldsBreakdownScene);\n const getFilter = () => fieldsBreakdownScene.state.search.state.filter ?? '';\n\n return new LayoutSwitcher({\n options: [\n { value: 'single', label: 'Single' },\n { value: 'grid', label: 'Grid' },\n { value: 'rows', label: 'Rows' },\n ],\n active: 'grid',\n layouts: [\n // Single\n new SceneFlexLayout({\n direction: 'column',\n children: [\n new SceneReactObject({\n reactNode: ,\n }),\n new SceneFlexItem({\n minHeight: 300,\n body: PanelBuilders.timeseries()\n .setTitle(optionValue)\n // 11.5\n // .setShowMenuAlways(true)\n .setMenu(new PanelMenu({}))\n .build(),\n }),\n ],\n }),\n\n // Grid\n new SceneFlexLayout({\n direction: 'column',\n children: [\n new SceneReactObject({\n reactNode: ,\n }),\n new ValueSummaryPanelScene({ title: optionValue, type: 'field', tagKey: this.getTagKey() }),\n new SceneReactObject({\n reactNode: ,\n }),\n new ByFrameRepeater({\n body: new SceneCSSGridLayout({\n templateColumns: FIELDS_BREAKDOWN_GRID_TEMPLATE_COLUMNS,\n autoRows: '200px',\n children: [\n new SceneFlexItem({\n body: new SceneReactObject({\n reactNode: ,\n }),\n }),\n ],\n isLazy: true,\n }),\n getLayoutChild: getFilterBreakdownValueScene(\n getLabelValue,\n query?.expr.includes('count_over_time') ? DrawStyle.Bars : DrawStyle.Line,\n parser === 'structuredMetadata' ? VAR_METADATA : VAR_FIELDS,\n sceneGraph.getAncestor(this, FieldsBreakdownScene).state.sort,\n optionValue\n ),\n sortBy,\n direction,\n getFilter,\n }),\n ],\n }),\n\n // Rows\n new SceneFlexLayout({\n direction: 'column',\n children: [\n new SceneReactObject({\n reactNode: ,\n }),\n new ValueSummaryPanelScene({ title: optionValue, type: 'field', tagKey: this.getTagKey() }),\n new SceneReactObject({\n reactNode: ,\n }),\n new ByFrameRepeater({\n body: new SceneCSSGridLayout({\n templateColumns: '1fr',\n autoRows: '200px',\n children: [\n new SceneFlexItem({\n body: new SceneReactObject({\n reactNode: ,\n }),\n }),\n ],\n isLazy: true,\n }),\n getLayoutChild: getFilterBreakdownValueScene(\n getLabelValue,\n query?.expr.includes('count_over_time') ? DrawStyle.Bars : DrawStyle.Line,\n parser === 'structuredMetadata' ? VAR_METADATA : VAR_FIELDS,\n sceneGraph.getAncestor(this, FieldsBreakdownScene).state.sort,\n optionValue\n ),\n sortBy,\n direction,\n getFilter,\n }),\n ],\n }),\n ],\n });\n }\n\n /**\n * Gets the parser for the value breakdown\n */\n private getParserForThisField() {\n const groupByVariable = getFieldGroupByVariable(this);\n const optionValue = String(groupByVariable.state.value);\n const parserForThisField = getParserForField(optionValue, this);\n return { optionValue, parser: parserForThisField };\n }\n\n /**\n * Gets the parser needed for fields variables\n */\n private getParserForFields() {\n return getParserFromFieldsFilters(getFieldsVariable(this));\n }\n\n /**\n * Gets the parser needed to run a query for the field variable and the breakdown field\n */\n private getQueryParser(): ParserType {\n const { parser } = this.getParserForThisField();\n const parserForFields = this.getParserForFields();\n\n // If the parser needed to parse this field matches the parser needed to parse the fields\n if (parser === parserForFields) {\n return parserForFields;\n }\n // If there is no parser in the detected_fields frame for this field, let's play it safe and return mixed\n if (parser === undefined) {\n return 'mixed';\n }\n // If the parser for the breakdown field is metadata, return the parser for fields\n if (parser === 'structuredMetadata') {\n return parserForFields;\n }\n // if the parser for fields is metadata, return parser for the breakdown field\n if (parserForFields === 'structuredMetadata') {\n return parser;\n }\n return 'mixed';\n }\n}\n","import {\n PanelBuilders,\n QueryRunnerState,\n SceneComponentProps,\n SceneCSSGridItem,\n SceneCSSGridLayout,\n sceneGraph,\n SceneObjectBase,\n SceneObjectState,\n VizPanel,\n} from '@grafana/scenes';\nimport { ALL_VARIABLE_VALUE, DetectedFieldType, ParserType } from '../../../services/variables';\nimport { buildDataQuery } from '../../../services/query';\nimport { getQueryRunner, setLevelColorOverrides } from '../../../services/panel';\nimport { DrawStyle, LoadingPlaceholder, StackingMode, useStyles2 } from '@grafana/ui';\nimport { LayoutSwitcher } from './LayoutSwitcher';\nimport { FIELDS_BREAKDOWN_GRID_TEMPLATE_COLUMNS, FieldsBreakdownScene } from './FieldsBreakdownScene';\nimport {\n getDetectedFieldsFrame,\n getDetectedFieldsFrameFromQueryRunnerState,\n getDetectedFieldsNamesFromQueryRunnerState,\n getDetectedFieldsParsersFromQueryRunnerState,\n ServiceScene,\n} from '../ServiceScene';\nimport React from 'react';\nimport { SelectLabelActionScene } from './SelectLabelActionScene';\nimport { ValueSlugs } from '../../../services/routing';\nimport { DataFrame, LoadingState } from '@grafana/data';\nimport {\n buildFieldsQueryString,\n extractParserFromArray,\n getDetectedFieldType,\n isAvgField,\n} from '../../../services/fields';\nimport {\n getFieldGroupByVariable,\n getFieldsVariable,\n getValueFromFieldsFilter,\n} from '../../../services/variableGetters';\nimport { AvgFieldPanelType, getPanelWrapperStyles, PanelMenu } from '../../Panels/PanelMenu';\nimport { logger } from '../../../services/logger';\nimport { getPanelOption } from '../../../services/store';\nimport { MAX_NUMBER_OF_TIME_SERIES } from './TimeSeriesLimit';\n\nexport interface FieldsAggregatedBreakdownSceneState extends SceneObjectState {\n body?: LayoutSwitcher;\n}\n\nexport class FieldsAggregatedBreakdownScene extends SceneObjectBase {\n constructor(state: Partial) {\n super(state);\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n private onDetectedFieldsChange = (newState: QueryRunnerState) => {\n if (newState.data?.state === LoadingState.Done) {\n //@todo cardinality looks wrong in API response\n this.updateChildren(newState);\n }\n };\n\n private updateChildren(newState: QueryRunnerState, newParser: ParserType | undefined = undefined) {\n const detectedFieldsFrame = getDetectedFieldsFrameFromQueryRunnerState(newState);\n const newNamesField = getDetectedFieldsNamesFromQueryRunnerState(newState);\n const newParsersField = getDetectedFieldsParsersFromQueryRunnerState(newState);\n const cardinalityMap = this.calculateCardinalityMap(newState);\n\n // Iterate through all the layouts\n this.state.body?.state.layouts.forEach((layout) => {\n if (layout instanceof SceneCSSGridLayout) {\n // populate set of new list of fields\n const newFieldsSet = new Set(newNamesField?.values);\n const updatedChildren = layout.state.children as SceneCSSGridItem[];\n\n // Iterate through all the existing panels\n for (let i = 0; i < updatedChildren.length; i++) {\n const gridItem = layout.state.children[i];\n if (gridItem instanceof SceneCSSGridItem) {\n const panel = gridItem.state.body;\n if (panel instanceof VizPanel) {\n if (newParser) {\n const index = newNamesField?.values.indexOf(panel.state.title);\n const existingParser = index && index !== -1 ? newParsersField?.values[index] : undefined;\n\n // If a new field filter was added that updated the parsers, we'll need to rebuild the query\n if (existingParser !== newParser) {\n const fieldType = getDetectedFieldType(panel.state.title, detectedFieldsFrame);\n const dataTransformer = this.getQueryRunnerForPanel(\n panel.state.title,\n detectedFieldsFrame,\n fieldType\n );\n panel.setState({\n $data: dataTransformer,\n });\n }\n }\n\n if (newFieldsSet.has(panel.state.title)) {\n // If the new response has this field, delete it from the set, but leave it in the layout\n newFieldsSet.delete(panel.state.title);\n } else {\n // Otherwise if the panel doesn't exist in the response, delete it from the layout\n updatedChildren.splice(i, 1);\n // And make sure to update the index, or we'll skip the next one\n i--;\n }\n } else {\n logger.warn('panel is not VizPanel!');\n }\n } else {\n logger.warn('gridItem is not SceneCSSGridItem');\n }\n }\n\n const fieldsToAdd = Array.from(newFieldsSet);\n const options = fieldsToAdd.map((fieldName) => fieldName);\n\n updatedChildren.push(...this.buildChildren(options));\n updatedChildren.sort(this.sortChildren(cardinalityMap));\n\n updatedChildren.map((child) => {\n this.subscribeToPanel(child);\n });\n\n layout.setState({\n children: updatedChildren,\n });\n } else {\n logger.warn('Layout is not SceneCSSGridLayout');\n }\n });\n }\n\n private sortChildren(cardinalityMap: Map) {\n return (a: SceneCSSGridItem, b: SceneCSSGridItem) => {\n const aPanel = a.state.body as VizPanel;\n const bPanel = b.state.body as VizPanel;\n const aCardinality = cardinalityMap.get(aPanel.state.title) ?? 0;\n const bCardinality = cardinalityMap.get(bPanel.state.title) ?? 0;\n return bCardinality - aCardinality;\n };\n }\n\n private calculateCardinalityMap(newState?: QueryRunnerState) {\n const detectedFieldsFrame = getDetectedFieldsFrameFromQueryRunnerState(newState);\n const cardinalityMap = new Map();\n if (detectedFieldsFrame?.length) {\n for (let i = 0; i < detectedFieldsFrame?.length; i++) {\n const name: string = detectedFieldsFrame.fields[0].values[i];\n const cardinality: number = detectedFieldsFrame.fields[1].values[i];\n cardinalityMap.set(name, cardinality);\n }\n }\n return cardinalityMap;\n }\n\n onActivate() {\n this.setState({\n body: this.build(),\n });\n\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n if (serviceScene.state.fieldsCount === undefined) {\n this.updateFieldCount();\n }\n\n this._subs.add(serviceScene.state.$detectedFieldsData?.subscribeToState(this.onDetectedFieldsChange));\n this._subs.add(this.subscribeToFieldsVar());\n }\n\n private subscribeToFieldsVar() {\n const fieldsVar = getFieldsVariable(this);\n\n return fieldsVar.subscribeToState((newState, prevState) => {\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n const newParsers = newState.filters.map((f) => getValueFromFieldsFilter(f).parser);\n const oldParsers = prevState.filters.map((f) => getValueFromFieldsFilter(f).parser);\n\n const newParser = extractParserFromArray(newParsers);\n const oldParser = extractParserFromArray(oldParsers);\n\n if (newParser !== oldParser) {\n const detectedFieldsState = serviceScene.state.$detectedFieldsData?.state;\n if (detectedFieldsState) {\n this.updateChildren(detectedFieldsState, newParser);\n }\n }\n });\n }\n\n public build() {\n const groupByVariable = getFieldGroupByVariable(this);\n const options = groupByVariable.state.options.map((opt) => String(opt.value));\n\n const fieldsBreakdownScene = sceneGraph.getAncestor(this, FieldsBreakdownScene);\n fieldsBreakdownScene.state.search.reset();\n\n const children = this.buildChildren(options);\n\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n const cardinalityMap = this.calculateCardinalityMap(serviceScene.state.$detectedFieldsData?.state);\n children.sort(this.sortChildren(cardinalityMap));\n const childrenClones = children.map((child) => child.clone());\n\n // We must subscribe to the data providers for all children after the clone, or we'll see bugs in the row layout\n [...children, ...childrenClones].map((child) => {\n this.subscribeToPanel(child);\n });\n\n return new LayoutSwitcher({\n options: [\n { value: 'grid', label: 'Grid' },\n { value: 'rows', label: 'Rows' },\n ],\n active: 'grid',\n layouts: [\n new SceneCSSGridLayout({\n templateColumns: FIELDS_BREAKDOWN_GRID_TEMPLATE_COLUMNS,\n autoRows: '200px',\n children: children,\n isLazy: true,\n }),\n new SceneCSSGridLayout({\n templateColumns: '1fr',\n autoRows: '200px',\n children: childrenClones,\n isLazy: true,\n }),\n ],\n });\n }\n\n private subscribeToPanel(child: SceneCSSGridItem) {\n const panel = child.state.body as VizPanel | undefined;\n if (panel) {\n this._subs.add(\n panel?.state.$data?.getResultsStream().subscribe((result) => {\n if (result.data.errors && result.data.errors.length > 0) {\n child.setState({ isHidden: true });\n this.updateFieldCount();\n }\n })\n );\n }\n }\n\n public rebuildAvgFields() {\n const detectedFieldsFrame = getDetectedFieldsFrame(this);\n const activeLayout = this.getActiveGridLayouts();\n const children: SceneCSSGridItem[] = [];\n const panelType =\n getPanelOption('panelType', [AvgFieldPanelType.histogram, AvgFieldPanelType.timeseries]) ??\n AvgFieldPanelType.timeseries;\n\n activeLayout?.state.children.forEach((child) => {\n if (child instanceof SceneCSSGridItem && !child.state.isHidden) {\n const panels = sceneGraph.findDescendents(child, VizPanel);\n if (panels.length) {\n // Will only be one panel as a child of CSSGridItem\n const panel = panels[0];\n const labelName = panel.state.title;\n const fieldType = getDetectedFieldType(labelName, detectedFieldsFrame);\n if (isAvgField(fieldType)) {\n const newChild = this.buildChild(labelName, detectedFieldsFrame, panelType);\n if (newChild) {\n children.push(newChild);\n }\n } else {\n children.push(child);\n }\n }\n }\n });\n\n if (children.length) {\n activeLayout?.setState({\n children,\n });\n }\n }\n\n private buildChildren(options: string[]): SceneCSSGridItem[] {\n const children: SceneCSSGridItem[] = [];\n const detectedFieldsFrame = getDetectedFieldsFrame(this);\n const panelType =\n getPanelOption('panelType', [AvgFieldPanelType.timeseries, AvgFieldPanelType.histogram]) ??\n AvgFieldPanelType.timeseries;\n for (const option of options) {\n if (option === ALL_VARIABLE_VALUE || !option) {\n continue;\n }\n\n const child = this.buildChild(option, detectedFieldsFrame, panelType);\n if (child) {\n children.push(child);\n }\n }\n return children;\n }\n\n private buildChild(labelName: string, detectedFieldsFrame: DataFrame | undefined, panelType?: AvgFieldPanelType) {\n if (labelName === ALL_VARIABLE_VALUE || !labelName) {\n return;\n }\n\n const fieldType = getDetectedFieldType(labelName, detectedFieldsFrame);\n const dataTransformer = this.getQueryRunnerForPanel(labelName, detectedFieldsFrame, fieldType);\n let body;\n\n const headerActions = [];\n if (!isAvgField(fieldType)) {\n body = PanelBuilders.timeseries()\n .setTitle(labelName)\n .setData(dataTransformer)\n .setMenu(new PanelMenu({ investigationOptions: { labelName: labelName } }))\n .setCustomFieldConfig('stacking', { mode: StackingMode.Normal })\n .setCustomFieldConfig('fillOpacity', 100)\n .setCustomFieldConfig('lineWidth', 0)\n .setCustomFieldConfig('pointSize', 0)\n .setCustomFieldConfig('drawStyle', DrawStyle.Bars)\n .setOverrides(setLevelColorOverrides);\n headerActions.push(new SelectLabelActionScene({ labelName: String(labelName), fieldType: ValueSlugs.field }));\n } else {\n if (panelType === 'histogram') {\n body = PanelBuilders.histogram();\n } else {\n body = PanelBuilders.timeseries();\n }\n body\n .setTitle(labelName)\n .setData(dataTransformer)\n .setMenu(new PanelMenu({ investigationOptions: { labelName: labelName }, panelType }));\n headerActions.push(\n new SelectLabelActionScene({\n labelName: String(labelName),\n hideValueDrilldown: true,\n fieldType: ValueSlugs.field,\n })\n );\n }\n body.setHeaderActions(headerActions);\n body.setSeriesLimit(MAX_NUMBER_OF_TIME_SERIES);\n // 11.5\n // body.setShowMenuAlways(true);\n\n const viz = body.build();\n return new SceneCSSGridItem({\n body: viz,\n });\n }\n\n private getQueryRunnerForPanel(\n optionValue: string,\n detectedFieldsFrame: DataFrame | undefined,\n fieldType?: DetectedFieldType\n ) {\n const fieldsVariable = getFieldsVariable(this);\n const queryString = buildFieldsQueryString(optionValue, fieldsVariable, detectedFieldsFrame);\n const query = buildDataQuery(queryString, {\n legendFormat: isAvgField(fieldType) ? optionValue : `{{${optionValue}}}`,\n refId: optionValue,\n });\n\n return getQueryRunner([query]);\n }\n\n private getActiveGridLayouts() {\n return (this.state.body?.state.layouts.find((l) => l.isActive) ?? this.state.body?.state.layouts[0]) as\n | SceneCSSGridLayout\n | undefined;\n }\n\n private updateFieldCount() {\n const activeLayout = this.getActiveGridLayouts();\n const activeLayoutChildren = activeLayout?.state.children as SceneCSSGridItem[] | undefined;\n const activePanels = activeLayoutChildren?.filter((child) => !child.state.isHidden);\n\n const fieldsBreakdownScene = sceneGraph.getAncestor(this, FieldsBreakdownScene);\n fieldsBreakdownScene.state.changeFieldCount?.(activePanels?.length ?? 0);\n }\n\n public static Selector({ model }: SceneComponentProps) {\n const { body } = model.useState();\n return <>{body && };\n }\n\n public static Component = ({ model }: SceneComponentProps) => {\n const { body } = model.useState();\n const styles = useStyles2(getPanelWrapperStyles);\n if (body) {\n return {body && };\n }\n\n return ;\n };\n}\n","import { css } from '@emotion/css';\nimport React from 'react';\n\nimport { DataFrame, GrafanaTheme2, LoadingState } from '@grafana/data';\nimport {\n QueryRunnerState,\n SceneComponentProps,\n sceneGraph,\n SceneObject,\n SceneObjectBase,\n SceneObjectState,\n SceneVariableSet,\n VariableDependencyConfig,\n VariableValueOption,\n} from '@grafana/scenes';\nimport { useStyles2 } from '@grafana/ui';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from 'services/analytics';\nimport { getSortByPreference } from 'services/store';\nimport { ALL_VARIABLE_VALUE, VAR_FIELD_GROUP_BY, VAR_LABELS } from 'services/variables';\nimport { areArraysEqual } from '../../../services/comparison';\nimport { CustomConstantVariable, CustomConstantVariableState } from '../../../services/CustomConstantVariable';\nimport { navigateToValueBreakdown } from '../../../services/navigate';\nimport { checkPrimaryLabel, getPrimaryLabelFromUrl, ValueSlugs } from '../../../services/routing';\nimport { DEFAULT_SORT_BY } from '../../../services/sorting';\nimport { IndexScene } from '../../IndexScene/IndexScene';\nimport { getDetectedFieldsFrame, ServiceScene } from '../ServiceScene';\nimport { BreakdownSearchReset, BreakdownSearchScene } from './BreakdownSearchScene';\nimport { ByFrameRepeater } from './ByFrameRepeater';\nimport { FieldsAggregatedBreakdownScene } from './FieldsAggregatedBreakdownScene';\nimport { FieldSelector } from './FieldSelector';\nimport { FieldValuesBreakdownScene } from './FieldValuesBreakdownScene';\nimport { LayoutSwitcher } from './LayoutSwitcher';\nimport { SortByScene, SortCriteriaChanged } from './SortByScene';\nimport { StatusWrapper } from './StatusWrapper';\nimport { getFieldOptions } from 'services/filters';\nimport { EmptyLayoutScene } from './EmptyLayoutScene';\nimport { getFieldGroupByVariable, getLabelsVariable } from '../../../services/variableGetters';\nimport { NoMatchingLabelsScene } from './NoMatchingLabelsScene';\nimport { clearVariables, getVariablesThatCanBeCleared } from '../../../services/variableHelpers';\n\nexport const averageFields = ['duration', 'count', 'total', 'bytes'];\nexport const FIELDS_BREAKDOWN_GRID_TEMPLATE_COLUMNS = 'repeat(auto-fit, minmax(400px, 1fr))';\n\nexport interface FieldsBreakdownSceneState extends SceneObjectState {\n body?:\n | (NoMatchingLabelsScene & SceneObject)\n | (FieldsAggregatedBreakdownScene & SceneObject)\n | (FieldValuesBreakdownScene & SceneObject)\n | (EmptyLayoutScene & SceneObject);\n search: BreakdownSearchScene;\n sort: SortByScene;\n value?: string;\n loading?: boolean;\n error?: string;\n blockingMessage?: string;\n changeFieldCount?: (n: number) => void;\n}\n\nexport class FieldsBreakdownScene extends SceneObjectBase {\n protected _variableDependency = new VariableDependencyConfig(this, {\n variableNames: [VAR_LABELS],\n });\n\n constructor(state: Partial & { options?: VariableValueOption[]; value?: string }) {\n super({\n $variables:\n state.$variables ??\n new SceneVariableSet({\n variables: [\n new CustomConstantVariable({\n name: VAR_FIELD_GROUP_BY,\n defaultToAll: false,\n includeAll: true,\n value: state.value ?? ALL_VARIABLE_VALUE,\n options: state.options ?? [],\n }),\n ],\n }),\n loading: true,\n sort: new SortByScene({ target: 'fields' }),\n search: new BreakdownSearchScene('fields'),\n value: state.value ?? ALL_VARIABLE_VALUE,\n ...state,\n });\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n private onActivate() {\n const groupByVariable = getFieldGroupByVariable(this);\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n\n this.setState({\n loading: serviceScene.state.$detectedLabelsData?.state.data?.state !== LoadingState.Done,\n });\n\n // Subscriptions\n this._subs.add(\n this.subscribeToEvent(BreakdownSearchReset, () => {\n this.state.search.clearValueFilter();\n })\n );\n this._subs.add(this.subscribeToEvent(SortCriteriaChanged, this.handleSortByChange));\n this._subs.add(groupByVariable.subscribeToState(this.variableChanged));\n\n this._subs.add(\n getLabelsVariable(this).subscribeToState((newState, prevState) => {\n const variable = getFieldGroupByVariable(this);\n let { labelName } = getPrimaryLabelFromUrl();\n\n const newService = newState.filters.find((filter) => filter.key === labelName);\n const prevService = prevState.filters.find((filter) => filter.key === labelName);\n\n // If the user changes the primary label\n if (variable.state.value === ALL_VARIABLE_VALUE && newService !== prevService) {\n this.setState({\n loading: true,\n body: undefined,\n });\n }\n })\n );\n\n this._subs.add(\n serviceScene.state.$detectedFieldsData?.subscribeToState(\n (newState: QueryRunnerState, oldState: QueryRunnerState) => {\n if (newState.data?.state === LoadingState.Done) {\n if (newState.data.series?.[0]) {\n this.updateOptions(newState.data.series?.[0]);\n }\n }\n }\n )\n );\n\n const detectedFieldsFrame = getDetectedFieldsFrame(this);\n // Need to update labels with current state\n if (detectedFieldsFrame) {\n this.updateOptions(detectedFieldsFrame);\n }\n\n checkPrimaryLabel(this);\n }\n\n private variableChanged = (newState: CustomConstantVariableState, oldState: CustomConstantVariableState) => {\n if (\n newState.value !== oldState.value ||\n !areArraysEqual(newState.options, oldState.options) ||\n this.state.body === undefined ||\n this.state.body instanceof EmptyLayoutScene ||\n this.state.body instanceof NoMatchingLabelsScene\n ) {\n this.updateBody(newState);\n }\n };\n\n private updateOptions(dataFrame: DataFrame) {\n if (!dataFrame || !dataFrame.length) {\n const indexScene = sceneGraph.getAncestor(this, IndexScene);\n const variablesToClear = getVariablesThatCanBeCleared(indexScene);\n\n let body;\n if (variablesToClear.length > 1) {\n this.state.changeFieldCount?.(0);\n body = new NoMatchingLabelsScene({ clearCallback: () => clearVariables(this) });\n } else {\n body = new EmptyLayoutScene({ type: 'fields' });\n }\n this.setState({\n loading: false,\n body,\n });\n return;\n }\n\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n const variable = getFieldGroupByVariable(this);\n variable.setState({\n options: getFieldOptions(dataFrame.fields[0].values.map((v) => String(v))),\n loading: false,\n value: serviceScene.state.drillDownLabel ?? ALL_VARIABLE_VALUE,\n });\n this.setState({\n loading: false,\n });\n }\n\n private handleSortByChange = (event: SortCriteriaChanged) => {\n if (event.target !== 'fields') {\n return;\n }\n\n const body = this.state.body;\n if (body instanceof FieldValuesBreakdownScene && body.state.body instanceof LayoutSwitcher) {\n body.state.body?.state.layouts.forEach((layout) => {\n const byFrameRepeater = sceneGraph.findDescendents(body, ByFrameRepeater);\n byFrameRepeater.forEach((r) => r.sort(event.sortBy, event.direction));\n });\n }\n reportAppInteraction(\n USER_EVENTS_PAGES.service_details,\n USER_EVENTS_ACTIONS.service_details.value_breakdown_sort_change,\n {\n target: 'fields',\n criteria: event.sortBy,\n direction: event.direction,\n }\n );\n };\n\n private updateBody(newState: CustomConstantVariableState) {\n const fieldsVariable = getFieldGroupByVariable(this);\n\n // We get the labels from the service scene, if we don't have them yet, assume we're loading\n if (!fieldsVariable.state.options || !fieldsVariable.state.options.length) {\n return;\n }\n\n const stateUpdate: Partial = {};\n\n if (fieldsVariable.state.options && fieldsVariable.state.options.length <= 1) {\n // If there's 1 or fewer fields build the empty or clear layout UI\n const indexScene = sceneGraph.getAncestor(this, IndexScene);\n const variablesToClear = getVariablesThatCanBeCleared(indexScene);\n\n if (variablesToClear.length > 1) {\n this.state.changeFieldCount?.(0);\n stateUpdate.body = new NoMatchingLabelsScene({ clearCallback: () => clearVariables(this) });\n } else {\n stateUpdate.body = new EmptyLayoutScene({ type: 'fields' });\n }\n } else {\n // Otherwise update the body, but don't re-instantiate if it's already the right class\n if (newState.value === ALL_VARIABLE_VALUE && this.state.body instanceof FieldValuesBreakdownScene) {\n stateUpdate.body = new FieldsAggregatedBreakdownScene({});\n } else if (newState.value !== ALL_VARIABLE_VALUE && this.state.body instanceof FieldsAggregatedBreakdownScene) {\n stateUpdate.body = new FieldValuesBreakdownScene({});\n } else if (\n // If the body hasn't been created, or the no-data views are active, we want to replace and render the correct scene\n this.state.body === undefined ||\n this.state.body instanceof EmptyLayoutScene ||\n this.state.body instanceof NoMatchingLabelsScene\n ) {\n stateUpdate.body =\n newState.value === ALL_VARIABLE_VALUE\n ? new FieldsAggregatedBreakdownScene({})\n : new FieldValuesBreakdownScene({});\n }\n }\n\n this.setState(stateUpdate);\n }\n public onFieldSelectorChange = (value?: string) => {\n if (!value) {\n return;\n }\n\n const variable = getFieldGroupByVariable(this);\n const { sortBy, direction } = getSortByPreference('fields', DEFAULT_SORT_BY, 'desc');\n\n reportAppInteraction(\n USER_EVENTS_PAGES.service_details,\n USER_EVENTS_ACTIONS.service_details.select_field_in_breakdown_clicked,\n {\n field: value,\n previousField: variable.getValueText(),\n view: 'fields',\n sortBy,\n sortByDirection: direction,\n }\n );\n\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n navigateToValueBreakdown(ValueSlugs.field, value, serviceScene);\n };\n\n public static LabelsMenu = ({ model }: SceneComponentProps) => {\n const { body, loading, search } = model.useState();\n const styles = useStyles2(getStyles);\n const variable = getFieldGroupByVariable(model);\n const { options, value } = variable.useState();\n return (\n
\n {body instanceof FieldsAggregatedBreakdownScene && }\n {body instanceof FieldValuesBreakdownScene && }\n {body instanceof FieldValuesBreakdownScene && }\n {!loading && options.length > 1 && (\n \n )}\n
\n );\n };\n public static ValuesMenu = ({ model }: SceneComponentProps) => {\n const { loading, sort } = model.useState();\n const styles = useStyles2(getStyles);\n const variable = getFieldGroupByVariable(model);\n const { value } = variable.useState();\n return (\n
\n {!loading && value !== ALL_VARIABLE_VALUE && (\n <>\n \n \n )}\n
\n );\n };\n\n public static Component = ({ model }: SceneComponentProps) => {\n const { body, loading, blockingMessage } = model.useState();\n const styles = useStyles2(getStyles);\n\n return (\n
\n \n {body instanceof FieldsAggregatedBreakdownScene && model && }\n
{body && }
\n
\n
\n );\n };\n}\n\nexport const emptyStateStyles = {\n link: css({\n textDecoration: 'underline',\n }),\n button: css({\n marginLeft: '1.5rem',\n }),\n};\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n container: css({\n flexGrow: 1,\n display: 'flex',\n minHeight: '100%',\n flexDirection: 'column',\n gap: theme.spacing(1),\n }),\n content: css({\n flexGrow: 1,\n display: 'flex',\n paddingTop: theme.spacing(0),\n }),\n labelsMenuWrapper: css({\n flexGrow: 0,\n display: 'flex',\n alignItems: 'top',\n justifyContent: 'space-between',\n flexDirection: 'row-reverse',\n gap: theme.spacing(2),\n }),\n valuesMenuWrapper: css({\n flexGrow: 0,\n display: 'flex',\n alignItems: 'top',\n gap: theme.spacing(2),\n flexDirection: 'row',\n }),\n };\n}\n","import {\n PanelBuilders,\n SceneComponentProps,\n SceneCSSGridItem,\n SceneCSSGridLayout,\n SceneDataProvider,\n sceneGraph,\n SceneObjectBase,\n SceneObjectState,\n SceneQueryRunner,\n VariableValueOption,\n VizPanel,\n} from '@grafana/scenes';\nimport { LayoutSwitcher } from './LayoutSwitcher';\nimport { DrawStyle, LoadingPlaceholder, StackingMode, useStyles2 } from '@grafana/ui';\nimport { getQueryRunner, setLevelColorOverrides } from '../../../services/panel';\nimport { ALL_VARIABLE_VALUE, LEVEL_VARIABLE_VALUE } from '../../../services/variables';\nimport React from 'react';\nimport { LabelBreakdownScene } from './LabelBreakdownScene';\nimport { SelectLabelActionScene } from './SelectLabelActionScene';\nimport { ValueSlugs } from '../../../services/routing';\nimport { buildLabelsQuery, LABEL_BREAKDOWN_GRID_TEMPLATE_COLUMNS } from '../../../services/labels';\nimport { getFieldsVariable, getLabelGroupByVariable } from '../../../services/variableGetters';\nimport { ServiceScene } from '../ServiceScene';\nimport { DataFrame, LoadingState } from '@grafana/data';\nimport { getPanelWrapperStyles, PanelMenu } from '../../Panels/PanelMenu';\nimport { MAX_NUMBER_OF_TIME_SERIES } from './TimeSeriesLimit';\n\nexport interface LabelsAggregatedBreakdownSceneState extends SceneObjectState {\n body?: LayoutSwitcher;\n}\n\nexport class LabelsAggregatedBreakdownScene extends SceneObjectBase {\n constructor(state: Partial) {\n super({\n ...state,\n });\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n onActivate() {\n const fields = getFieldsVariable(this);\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n const $detectedLabels = serviceScene.state.$detectedLabelsData;\n\n // If the body hasn't been built yet, build it\n if (!this.state.body) {\n this.setState({\n body: this.build(),\n });\n }\n // Otherwise if we have the detected labels done loading, update the body\n else if ($detectedLabels?.state.data?.state === LoadingState.Done) {\n this.update($detectedLabels?.state.data.series[0]);\n }\n\n this._subs.add(\n $detectedLabels?.subscribeToState((newState, prevState) => {\n if (newState.data?.state === LoadingState.Done) {\n this.update(newState.data.series[0]);\n }\n })\n );\n\n this._subs.add(\n fields.subscribeToState(() => {\n this.updateQueriesOnFieldsVariableChange();\n })\n );\n }\n\n private updateQueriesOnFieldsVariableChange = () => {\n this.state.body?.state.layouts.forEach((layoutObj) => {\n const layout = layoutObj as SceneCSSGridLayout;\n // Iterate through the existing panels\n for (let i = 0; i < layout.state.children.length; i++) {\n const { panel, title } = this.getPanelByIndex(layout, i);\n const queryRunner: SceneDataProvider | SceneQueryRunner | undefined = panel.state.$data;\n const query = buildLabelsQuery(this, title, title);\n\n // Don't update if query didn't change\n if (queryRunner instanceof SceneQueryRunner) {\n if (query.expr === queryRunner?.state.queries?.[0]?.expr) {\n break;\n }\n }\n\n panel.setState({\n $data: getQueryRunner([query]),\n });\n }\n });\n };\n\n private getPanelByIndex(layout: SceneCSSGridLayout, i: number) {\n const gridItem = layout.state.children[i] as SceneCSSGridItem;\n const panel = gridItem.state.body as VizPanel;\n\n const title = panel.state.title;\n return { panel, title };\n }\n\n private update(detectedLabelsFrame: DataFrame) {\n const variable = getLabelGroupByVariable(this);\n const newLabels = variable.state.options.filter((opt) => opt.value !== ALL_VARIABLE_VALUE).map((opt) => opt.label);\n\n this.state.body?.state.layouts.forEach((layoutObj) => {\n let existingLabels = [];\n const layout = layoutObj as SceneCSSGridLayout;\n const newLabelsSet = new Set(newLabels);\n const updatedChildren = layout.state.children as SceneCSSGridItem[];\n\n for (let i = 0; i < updatedChildren.length; i++) {\n const { title } = this.getPanelByIndex(layout, i);\n\n if (newLabelsSet.has(title)) {\n // If the new response has this field, delete it from the set, but leave it in the layout\n newLabelsSet.delete(title);\n } else {\n // Otherwise if the panel doesn't exist in the response, delete it from the layout\n updatedChildren.splice(i, 1);\n // And make sure to update the index, or we'll skip the next one\n i--;\n }\n existingLabels.push(title);\n }\n\n const labelsToAdd = Array.from(newLabelsSet);\n\n const options = labelsToAdd.map((fieldName) => {\n return {\n label: fieldName,\n value: fieldName,\n };\n });\n\n updatedChildren.push(...this.buildChildren(options));\n\n const cardinalityMap = this.calculateCardinalityMap(detectedLabelsFrame);\n updatedChildren.sort(this.sortChildren(cardinalityMap));\n\n layout.setState({\n children: updatedChildren,\n });\n });\n }\n\n private calculateCardinalityMap(detectedLabels?: DataFrame) {\n const cardinalityMap = new Map();\n if (detectedLabels?.length) {\n for (let i = 0; i < detectedLabels?.fields.length; i++) {\n const name: string = detectedLabels.fields[i].name;\n const cardinality: number = detectedLabels.fields[i].values[0];\n cardinalityMap.set(name, cardinality);\n }\n }\n return cardinalityMap;\n }\n\n private build(): LayoutSwitcher {\n const variable = getLabelGroupByVariable(this);\n const labelBreakdownScene = sceneGraph.getAncestor(this, LabelBreakdownScene);\n labelBreakdownScene.state.search.reset();\n\n const children = this.buildChildren(variable.state.options);\n\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n const $detectedLabels = serviceScene.state.$detectedLabelsData;\n if ($detectedLabels?.state.data?.state === LoadingState.Done) {\n const cardinalityMap = this.calculateCardinalityMap($detectedLabels?.state.data.series[0]);\n children.sort(this.sortChildren(cardinalityMap));\n }\n\n const childrenClones = children.map((child) => child.clone());\n\n return new LayoutSwitcher({\n options: [\n { value: 'grid', label: 'Grid' },\n { value: 'rows', label: 'Rows' },\n ],\n active: 'grid',\n layouts: [\n new SceneCSSGridLayout({\n isLazy: true,\n templateColumns: LABEL_BREAKDOWN_GRID_TEMPLATE_COLUMNS,\n autoRows: '200px',\n children: children,\n }),\n new SceneCSSGridLayout({\n isLazy: true,\n templateColumns: '1fr',\n autoRows: '200px',\n children: childrenClones,\n }),\n ],\n });\n }\n\n private buildChildren(options: VariableValueOption[]) {\n const children: SceneCSSGridItem[] = [];\n for (const option of options) {\n const { value } = option;\n const optionValue = String(value);\n if (value === ALL_VARIABLE_VALUE || !value) {\n continue;\n }\n const query = buildLabelsQuery(this, String(option.value), String(option.value));\n const queryRunner = getQueryRunner([query]);\n\n children.push(\n new SceneCSSGridItem({\n body: PanelBuilders.timeseries()\n .setTitle(optionValue)\n .setData(queryRunner)\n .setHeaderActions([new SelectLabelActionScene({ labelName: optionValue, fieldType: ValueSlugs.label })])\n .setCustomFieldConfig('stacking', { mode: StackingMode.Normal })\n .setCustomFieldConfig('fillOpacity', 100)\n .setCustomFieldConfig('lineWidth', 0)\n .setCustomFieldConfig('pointSize', 0)\n .setCustomFieldConfig('drawStyle', DrawStyle.Bars)\n .setHoverHeader(false)\n // 11.5\n // .setShowMenuAlways(true)\n .setOverrides(setLevelColorOverrides)\n .setMenu(new PanelMenu({ investigationOptions: { labelName: optionValue } }))\n .setSeriesLimit(MAX_NUMBER_OF_TIME_SERIES)\n .build(),\n })\n );\n }\n return children;\n }\n\n private sortChildren(cardinalityMap: Map) {\n return (a: SceneCSSGridItem, b: SceneCSSGridItem) => {\n const aPanel = a.state.body as VizPanel;\n const bPanel = b.state.body as VizPanel;\n if (aPanel.state.title === LEVEL_VARIABLE_VALUE) {\n return -1;\n }\n if (bPanel.state.title === LEVEL_VARIABLE_VALUE) {\n return 1;\n }\n const aCardinality = cardinalityMap.get(aPanel.state.title) ?? 0;\n const bCardinality = cardinalityMap.get(bPanel.state.title) ?? 0;\n return bCardinality - aCardinality;\n };\n }\n\n public static Selector({ model }: SceneComponentProps) {\n const { body } = model.useState();\n return <>{body && };\n }\n\n public static Component = ({ model }: SceneComponentProps) => {\n const { body } = model.useState();\n const styles = useStyles2(getPanelWrapperStyles);\n\n if (body) {\n return {body && };\n }\n\n return ;\n };\n}\n","import { css } from '@emotion/css';\nimport React from 'react';\n\nimport { AdHocVariableFilter, DataFrame, GrafanaTheme2, LoadingState } from '@grafana/data';\nimport {\n QueryRunnerState,\n SceneComponentProps,\n sceneGraph,\n SceneObject,\n SceneObjectBase,\n SceneObjectState,\n SceneVariableSet,\n SceneVariableState,\n VariableDependencyConfig,\n VariableValueOption,\n} from '@grafana/scenes';\nimport { Alert, useStyles2 } from '@grafana/ui';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from 'services/analytics';\nimport { checkPrimaryLabel, getPrimaryLabelFromUrl, ValueSlugs } from 'services/routing';\nimport { ALL_VARIABLE_VALUE, SERVICE_NAME, SERVICE_UI_LABEL, VAR_LABEL_GROUP_BY, VAR_LABELS } from 'services/variables';\nimport { ByFrameRepeater } from './ByFrameRepeater';\nimport { FieldSelector } from './FieldSelector';\nimport { StatusWrapper } from './StatusWrapper';\nimport { getLabelOptions } from 'services/filters';\nimport { BreakdownSearchReset, BreakdownSearchScene } from './BreakdownSearchScene';\nimport { getSortByPreference } from 'services/store';\nimport { SortByScene, SortCriteriaChanged } from './SortByScene';\nimport { getDetectedLabelsFrame, ServiceScene } from '../ServiceScene';\nimport { CustomConstantVariable, CustomConstantVariableState } from '../../../services/CustomConstantVariable';\nimport { navigateToValueBreakdown } from '../../../services/navigate';\nimport { areArraysEqual } from '../../../services/comparison';\nimport { LabelValuesBreakdownScene } from './LabelValuesBreakdownScene';\nimport { LabelsAggregatedBreakdownScene } from './LabelsAggregatedBreakdownScene';\nimport { DEFAULT_SORT_BY } from '../../../services/sorting';\nimport { EmptyLayoutScene } from './EmptyLayoutScene';\nimport { getLabelGroupByVariable, getLabelsVariable } from '../../../services/variableGetters';\n\nexport interface LabelBreakdownSceneState extends SceneObjectState {\n body?: SceneObject;\n search: BreakdownSearchScene;\n sort: SortByScene;\n loading?: boolean;\n error?: boolean;\n blockingMessage?: string;\n // We have to store the value in state because scenes doesn't allow variables that don't have options. We need to hold on to this until the API call getting values is done, and then reset the state\n value?: string;\n}\n\nexport class LabelBreakdownScene extends SceneObjectBase {\n protected _variableDependency = new VariableDependencyConfig(this, {\n variableNames: [VAR_LABELS],\n });\n\n // Labels/options can be passed in when instantiated, but should ONLY exist on the state of the variable\n constructor(state: Partial & { options?: VariableValueOption[]; value?: string }) {\n super({\n ...state,\n $variables:\n state.$variables ??\n new SceneVariableSet({\n variables: [\n new CustomConstantVariable({\n name: VAR_LABEL_GROUP_BY,\n defaultToAll: false,\n includeAll: true,\n value: state.value ?? ALL_VARIABLE_VALUE,\n options: state.options ?? [],\n }),\n ],\n }),\n loading: true,\n sort: new SortByScene({ target: 'labels' }),\n search: new BreakdownSearchScene('labels'),\n value: state.value,\n });\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n private onActivate() {\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n const groupByVariable = getLabelGroupByVariable(this);\n\n this.setState({\n loading: serviceScene.state.$detectedLabelsData?.state.data?.state !== LoadingState.Done,\n error: serviceScene.state.$detectedLabelsData?.state.data?.state === LoadingState.Error,\n });\n\n this._subs.add(\n this.subscribeToEvent(BreakdownSearchReset, () => {\n this.state.search.clearValueFilter();\n })\n );\n this._subs.add(this.subscribeToEvent(SortCriteriaChanged, this.handleSortByChange));\n\n this._subs.add(serviceScene.state.$detectedLabelsData?.subscribeToState(this.onDetectedLabelsDataChange));\n\n this._subs.add(\n getLabelsVariable(this).subscribeToState((newState, prevState) => {\n this.onLabelsVariableChange(newState, prevState);\n })\n );\n\n this._subs.add(\n groupByVariable.subscribeToState((newState, prevState) => {\n this.onGroupByVariableChange(newState, prevState);\n })\n );\n\n const detectedLabelsFrame = getDetectedLabelsFrame(this);\n // Need to update labels with current state\n if (detectedLabelsFrame) {\n this.updateOptions(detectedLabelsFrame);\n }\n\n checkPrimaryLabel(this);\n }\n\n private onGroupByVariableChange(newState: CustomConstantVariableState, prevState: CustomConstantVariableState) {\n // If the aggregation value changed, or the body is not yet defined\n if (\n newState.value !== prevState.value ||\n !areArraysEqual(newState.options, prevState.options) ||\n this.state.body === undefined ||\n this.state.body instanceof EmptyLayoutScene\n ) {\n this.updateBody();\n }\n }\n\n private onLabelsVariableChange(\n newState: SceneVariableState & { filters: AdHocVariableFilter[] },\n prevState: SceneVariableState & { filters: AdHocVariableFilter[] }\n ) {\n let { labelName } = getPrimaryLabelFromUrl();\n if (labelName === SERVICE_UI_LABEL) {\n labelName = SERVICE_NAME;\n }\n const variable = getLabelGroupByVariable(this);\n const newPrimaryLabel = newState.filters.find((filter) => filter.key === labelName);\n const prevPrimaryLabel = prevState.filters.find((filter) => filter.key === labelName);\n\n // If the user changes the service\n if (variable.state.value === ALL_VARIABLE_VALUE && newPrimaryLabel !== prevPrimaryLabel) {\n this.setState({\n loading: true,\n body: undefined,\n error: undefined,\n });\n }\n }\n\n /**\n * Pull the detected_labels from our service scene, update the variable when they change\n * @param newState\n * @param prevState\n */\n private onDetectedLabelsDataChange = (newState: QueryRunnerState, prevState: QueryRunnerState) => {\n if (\n newState.data?.state === LoadingState.Done &&\n newState.data.series?.[0] &&\n !areArraysEqual(newState.data.series?.[0]?.fields, prevState.data?.series?.[0]?.fields)\n ) {\n this.updateOptions(newState.data.series?.[0]);\n } else if (newState.data?.state === LoadingState.Done) {\n // we got a new response, but nothing changed, just need to clear loading\n const variable = getLabelGroupByVariable(this);\n variable.setState({\n loading: false,\n });\n }\n };\n\n private handleSortByChange = (event: SortCriteriaChanged) => {\n if (event.target !== 'labels') {\n return;\n }\n const body = this.state.body;\n if (body instanceof LabelValuesBreakdownScene) {\n const byFrameRepeaters = sceneGraph.findDescendents(body, ByFrameRepeater);\n byFrameRepeaters.forEach((layout) => {\n layout.sort(event.sortBy, event.direction);\n });\n }\n reportAppInteraction(\n USER_EVENTS_PAGES.service_details,\n USER_EVENTS_ACTIONS.service_details.value_breakdown_sort_change,\n {\n target: 'labels',\n criteria: event.sortBy,\n direction: event.direction,\n }\n );\n };\n\n private updateOptions(detectedLabels: DataFrame | undefined) {\n if (!detectedLabels || !detectedLabels.length) {\n this.setState({\n loading: false,\n body: new EmptyLayoutScene({ type: 'labels' }),\n });\n return;\n }\n const variable = getLabelGroupByVariable(this);\n const options = getLabelOptions(detectedLabels.fields.map((label) => label.name));\n\n variable.setState({\n loading: false,\n options,\n value: this.state.value ?? ALL_VARIABLE_VALUE,\n });\n }\n\n private updateBody() {\n const variable = getLabelGroupByVariable(this);\n // We get the labels from the service scene, if we don't have them yet, assume we're loading\n if (!variable.state.options || !variable.state.options.length) {\n return;\n }\n\n const stateUpdate: Partial = {\n loading: false,\n blockingMessage: undefined,\n error: false,\n };\n\n if (variable.hasAllValue() && this.state.body instanceof LabelValuesBreakdownScene) {\n stateUpdate.body = new LabelsAggregatedBreakdownScene({});\n } else if (!variable.hasAllValue() && this.state.body instanceof LabelsAggregatedBreakdownScene) {\n stateUpdate.body = new LabelValuesBreakdownScene({});\n } else if (this.state.body === undefined) {\n if (variable.state.options.length > 0) {\n stateUpdate.body = variable.hasAllValue()\n ? new LabelsAggregatedBreakdownScene({})\n : new LabelValuesBreakdownScene({});\n } else {\n stateUpdate.body = new EmptyLayoutScene({ type: 'labels' });\n }\n } else if (this.state.body instanceof EmptyLayoutScene) {\n if (variable.state.options.length > 0) {\n stateUpdate.body = variable.hasAllValue()\n ? new LabelsAggregatedBreakdownScene({})\n : new LabelValuesBreakdownScene({});\n }\n }\n\n this.setState({ ...stateUpdate });\n }\n\n public onChange = (value?: string) => {\n if (!value) {\n return;\n }\n\n const variable = getLabelGroupByVariable(this);\n variable.changeValueTo(value);\n\n const { sortBy, direction } = getSortByPreference('labels', DEFAULT_SORT_BY, 'desc');\n reportAppInteraction(\n USER_EVENTS_PAGES.service_details,\n USER_EVENTS_ACTIONS.service_details.select_field_in_breakdown_clicked,\n {\n label: value,\n previousLabel: variable.getValueText(),\n view: 'labels',\n sortBy,\n sortByDirection: direction,\n }\n );\n\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n navigateToValueBreakdown(ValueSlugs.label, value, serviceScene);\n };\n\n public static LabelsMenu = ({ model }: SceneComponentProps) => {\n const { body, loading, search } = model.useState();\n const variable = getLabelGroupByVariable(model);\n const { options, value } = variable.useState();\n const styles = useStyles2(getStyles);\n\n return (\n
\n {body instanceof LabelValuesBreakdownScene && }\n {body instanceof LabelsAggregatedBreakdownScene && }\n {body instanceof LabelValuesBreakdownScene && }\n {!loading && options.length > 0 && (\n \n )}\n
\n );\n };\n\n public static ValuesMenu = ({ model }: SceneComponentProps) => {\n const { loading, sort } = model.useState();\n const variable = getLabelGroupByVariable(model);\n const { value } = variable.useState();\n const styles = useStyles2(getStyles);\n\n return (\n
\n {!loading && value !== ALL_VARIABLE_VALUE && (\n <>\n \n \n )}\n
\n );\n };\n\n public static Component = ({ model }: SceneComponentProps) => {\n const { body, loading, blockingMessage, error } = model.useState();\n const styles = useStyles2(getStyles);\n\n return (\n
\n \n {error && (\n \n The labels are not available at this moment. Try using a different time range or check again later.\n \n )}\n\n {body instanceof LabelsAggregatedBreakdownScene && model && }\n\n
{body && }
\n
\n
\n );\n };\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n container: css({\n flexGrow: 1,\n display: 'flex',\n minHeight: '100%',\n flexDirection: 'column',\n gap: theme.spacing(1),\n }),\n content: css({\n flexGrow: 1,\n display: 'flex',\n paddingTop: theme.spacing(0),\n }),\n labelsMenuWrapper: css({\n flexGrow: 0,\n display: 'flex',\n alignItems: 'top',\n justifyContent: 'space-between',\n flexDirection: 'row-reverse',\n gap: theme.spacing(2),\n }),\n valuesMenuWrapper: css({\n flexGrow: 0,\n display: 'flex',\n alignItems: 'top',\n gap: theme.spacing(2),\n flexDirection: 'row',\n }),\n };\n}\n","import {\n PanelBuilders,\n SceneComponentProps,\n SceneCSSGridLayout,\n SceneDataProvider,\n SceneDataState,\n SceneFlexItem,\n SceneFlexLayout,\n sceneGraph,\n SceneObject,\n SceneObjectBase,\n SceneObjectState,\n SceneQueryRunner,\n SceneReactObject,\n} from '@grafana/scenes';\nimport { LayoutSwitcher } from './LayoutSwitcher';\nimport { getLabelValue } from './SortByScene';\nimport { DrawStyle, LoadingPlaceholder, StackingMode, useStyles2 } from '@grafana/ui';\nimport { getQueryRunner, setLevelColorOverrides } from '../../../services/panel';\nimport { getSortByPreference } from '../../../services/store';\nimport { AppEvents, DataQueryError, LoadingState } from '@grafana/data';\nimport { ByFrameRepeater } from './ByFrameRepeater';\nimport { getFilterBreakdownValueScene } from '../../../services/fields';\nimport {\n ALL_VARIABLE_VALUE,\n LEVEL_VARIABLE_VALUE,\n VAR_LABEL_GROUP_BY_EXPR,\n VAR_LABELS,\n VAR_LEVELS,\n} from '../../../services/variables';\nimport React from 'react';\nimport { LabelBreakdownScene } from './LabelBreakdownScene';\nimport { DEFAULT_SORT_BY } from '../../../services/sorting';\nimport { buildLabelsQuery, LABEL_BREAKDOWN_GRID_TEMPLATE_COLUMNS } from '../../../services/labels';\nimport { getAppEvents } from '@grafana/runtime';\nimport {\n getFieldsVariable,\n getLabelGroupByVariable,\n getLabelsVariable,\n getLevelsVariable,\n getLineFiltersVariable,\n getMetadataVariable,\n getPatternsVariable,\n} from '../../../services/variableGetters';\nimport { getPanelWrapperStyles, PanelMenu } from '../../Panels/PanelMenu';\nimport { NoMatchingLabelsScene } from './NoMatchingLabelsScene';\nimport { EmptyLayoutScene } from './EmptyLayoutScene';\nimport { IndexScene } from '../../IndexScene/IndexScene';\nimport { clearVariables, getVariablesThatCanBeCleared } from '../../../services/variableHelpers';\nimport { ValueSummaryPanelScene } from './Panels/ValueSummary';\nimport { renderLevelsFilter, renderLogQLLabelFilters } from '../../../services/query';\nimport { logger } from '../../../services/logger';\nimport { areArraysEqual } from '../../../services/comparison';\n\ntype DisplayError = DataQueryError & { displayed: boolean };\ntype DisplayErrors = Record;\n\nexport interface LabelValueBreakdownSceneState extends SceneObjectState {\n body?: (LayoutSwitcher & SceneObject) | (NoMatchingLabelsScene & SceneObject) | (EmptyLayoutScene & SceneObject);\n $data?: SceneDataProvider;\n errors: DisplayErrors;\n}\n\nexport class LabelValuesBreakdownScene extends SceneObjectBase {\n constructor(state: Partial) {\n super({\n ...state,\n errors: {},\n });\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n onActivate() {\n this.setState({\n $data: this.buildQueryRunner(),\n body: this.build(),\n });\n\n // Run query on activate\n this.runQuery();\n this.setSubscriptions();\n }\n\n private buildQueryRunner() {\n const query = this.buildQuery();\n return getQueryRunner([query], { runQueriesMode: 'manual' });\n }\n\n private buildQuery() {\n const query = buildLabelsQuery(this, VAR_LABEL_GROUP_BY_EXPR, String(getLabelGroupByVariable(this).state.value));\n // Manually interpolate query so we don't pollute the variable interpolation for other queries\n const { variableName, filterExpression } = this.removeValueLabelFromVariableInterpolation();\n query.expr = query.expr.replace(`$\\{${variableName}}`, filterExpression);\n return query;\n }\n\n /**\n * Set variable & event subscriptions\n */\n private setSubscriptions() {\n // QUERY RUNNER SUBS\n // Subscribe to value breakdown state\n this._subs.add(\n this.state.$data?.subscribeToState((newState, prevState) => {\n this.onValuesDataQueryChange(newState);\n })\n );\n\n // VARIABLE SUBS\n // Subscribe to label change via dropdown\n this._subs.add(\n getLabelGroupByVariable(this).subscribeToState((newState) => {\n if (newState.value === ALL_VARIABLE_VALUE) {\n this.setState({\n $data: undefined,\n body: undefined,\n });\n }\n })\n );\n\n // Subscribe to time range changes\n this._subs.add(\n sceneGraph.getTimeRange(this).subscribeToState(() => {\n // Run query on time range change\n this.runQuery();\n })\n );\n\n this._subs.add(\n getFieldsVariable(this).subscribeToState((newState, prevState) => {\n if (!areArraysEqual(newState.filters, prevState.filters)) {\n // Check to see if the new field filter changes the parser, if so rebuild the query\n this.runQuery();\n }\n })\n );\n\n // Subscribe to fields variable changes\n this._subs.add(\n getMetadataVariable(this).subscribeToState((newState, prevState) => {\n if (!areArraysEqual(newState.filters, prevState.filters)) {\n this.runQuery();\n }\n })\n );\n\n // Subscribe to line filter variable changes\n this._subs.add(\n getLineFiltersVariable(this).subscribeToState((newState, prevState) => {\n if (!areArraysEqual(newState.filters, prevState.filters)) {\n this.runQuery();\n }\n })\n );\n\n // Subscribe to pattern variable changes\n this._subs.add(\n getPatternsVariable(this).subscribeToState((newState, prevState) => {\n if (newState.value !== prevState.value) {\n this.runQuery();\n }\n })\n );\n\n const key = this.getTagKey();\n\n this._subs.add(\n getLabelsVariable(this).subscribeToState(async (newState, prevState) => {\n if (\n !areArraysEqual(\n newState.filters.filter((f) => key === LEVEL_VARIABLE_VALUE && f.key !== key),\n prevState.filters.filter((f) => key === LEVEL_VARIABLE_VALUE && f.key !== key)\n )\n ) {\n this.runQuery();\n }\n })\n );\n\n this._subs.add(\n getLevelsVariable(this).subscribeToState(async (newState, prevState) => {\n if (\n !areArraysEqual(\n newState.filters.filter((f) => key !== LEVEL_VARIABLE_VALUE && f.key !== key),\n prevState.filters.filter((f) => key !== LEVEL_VARIABLE_VALUE && f.key !== key)\n )\n ) {\n this.runQuery();\n }\n })\n );\n }\n\n /**\n * Since we run this query manually, we want to rebuild it before every execution\n */\n private rebuildQuery() {\n // Rebuild the query\n this.getSceneQueryRunner()?.setState({\n queries: [this.buildQuery()],\n });\n }\n\n /**\n * Run the label values breakdown query.\n * Generates the filterExpression excluding all filters with a key that matches the label.\n */\n private runQuery() {\n this.rebuildQuery();\n const queryRunner = this.getSceneQueryRunner();\n queryRunner?.runQueries();\n }\n\n /**\n * Helper method that grabs the SceneQueryRunner for the label value breakdown query.\n */\n private getSceneQueryRunner() {\n if (this.state.$data) {\n const queryRunners = sceneGraph.findDescendents(this.state.$data, SceneQueryRunner);\n if (queryRunners.length !== 1) {\n const error = new Error('Unable to find query runner in value breakdown!');\n logger.error(error, { msg: 'LabelValuesBreakdownScene: Unable to find query runner in value breakdown!' });\n throw error;\n }\n\n return queryRunners[0];\n }\n logger.warn('LabelValuesBreakdownScene: Query is attempting to execute, but query runner is undefined!');\n return undefined;\n }\n\n /**\n * Generates the filterExpression for the label value query and saves it to state.\n * We have to manually generate the filterExpression as we want to exclude every filter for the target variable that matches the key used in this value breakdown.\n * e.g. in the \"cluster\" breakdown, we don't want to execute this query containing a cluster filter, or users will only be able to include a single value.\n */\n private removeValueLabelFromVariableInterpolation() {\n const tagKey = this.getTagKey();\n let filterExpression;\n let variableName: typeof VAR_LEVELS | typeof VAR_LABELS;\n\n if (tagKey === LEVEL_VARIABLE_VALUE) {\n const levelsVar = getLevelsVariable(this);\n variableName = VAR_LEVELS;\n filterExpression = renderLevelsFilter(levelsVar.state.filters, [tagKey]);\n } else {\n const labelsVar = getLabelsVariable(this);\n variableName = VAR_LABELS;\n filterExpression = renderLogQLLabelFilters(labelsVar.state.filters, [tagKey]);\n }\n\n return { filterExpression, variableName };\n }\n\n /**\n * Helper method to get the key/label name from the variable on the parent scene\n */\n private getTagKey() {\n const variable = getLabelGroupByVariable(this);\n return String(variable.state.value);\n }\n\n /**\n * Actions to run when the value breakdown query response is received.\n */\n private onValuesDataQueryChange(newState: SceneDataState) {\n // Set empty states\n this.setEmptyStates(newState);\n\n // Set error states\n this.setErrorStates(newState);\n }\n\n /**\n * Sets the error body state\n */\n private setErrorStates(newState: SceneDataState) {\n // If panels have errors\n if (newState?.data?.errors && newState.data?.state !== LoadingState.Done) {\n const errors: DisplayErrors = this.state.errors;\n newState?.data?.errors.forEach((err) => {\n const errorIndex = `${err.status}_${err.traceId}_${err.message}`;\n if (errors[errorIndex] === undefined) {\n errors[errorIndex] = { ...err, displayed: false };\n }\n });\n this.setState({\n errors,\n });\n\n this.showErrorToast(this.state.errors);\n }\n }\n\n /**\n * Sets the empty body state\n */\n private setEmptyStates(newState: SceneDataState) {\n if (newState.data?.state === LoadingState.Done) {\n if (newState.data.series.length > 0 && !(this.state.body instanceof LayoutSwitcher)) {\n this.setState({\n body: this.build(),\n });\n } else if (newState.data.series.length === 0) {\n const indexScene = sceneGraph.getAncestor(this, IndexScene);\n const variablesToClear = getVariablesThatCanBeCleared(indexScene);\n\n if (variablesToClear.length > 1) {\n this.setState({\n body: new NoMatchingLabelsScene({ clearCallback: () => clearVariables(this) }),\n });\n } else {\n this.setState({\n body: new EmptyLayoutScene({ type: 'fields' }),\n });\n }\n }\n }\n }\n\n /**\n * Returns the active layout from the layout switcher\n */\n private getActiveLayout(): SceneFlexLayout | undefined {\n const layoutSwitcher = this.state.body;\n if (layoutSwitcher instanceof LayoutSwitcher) {\n const activeLayout = layoutSwitcher?.state.layouts.find((layout) => layout.isActive);\n if (activeLayout instanceof SceneFlexLayout) {\n return activeLayout;\n }\n }\n return undefined;\n }\n\n /**\n * Returns a boolean when the active layout is empty\n */\n private activeLayoutContainsNoPanels(): boolean {\n const activeLayout = this.getActiveLayout();\n if (activeLayout) {\n const byFrameRepeaters = sceneGraph.findDescendents(activeLayout, ByFrameRepeater);\n return byFrameRepeaters.some((repeater) => {\n const child = repeater.state.body.state.children[0];\n return child instanceof SceneFlexItem || child instanceof SceneReactObject;\n });\n }\n\n return false;\n }\n\n /**\n * Builds the layout switcher\n */\n private build(): LayoutSwitcher {\n const variable = getLabelGroupByVariable(this);\n const variableState = variable.state;\n const tagKey = String(variableState?.value);\n const labelBreakdownScene = sceneGraph.getAncestor(this, LabelBreakdownScene);\n\n let bodyOpts = PanelBuilders.timeseries();\n bodyOpts = bodyOpts\n .setCustomFieldConfig('stacking', { mode: StackingMode.Normal })\n .setCustomFieldConfig('fillOpacity', 100)\n .setCustomFieldConfig('lineWidth', 0)\n .setCustomFieldConfig('pointSize', 0)\n .setCustomFieldConfig('drawStyle', DrawStyle.Bars)\n // Waiting for 11.5\n // .setShowMenuAlways(true)\n .setOverrides(setLevelColorOverrides)\n .setMenu(new PanelMenu({}))\n .setTitle(tagKey);\n\n const body = bodyOpts.build();\n\n const { sortBy, direction } = getSortByPreference('labels', DEFAULT_SORT_BY, 'desc');\n\n const getFilter = () => labelBreakdownScene.state.search.state.filter ?? '';\n\n return new LayoutSwitcher({\n options: [\n { value: 'single', label: 'Single' },\n { value: 'grid', label: 'Grid' },\n { value: 'rows', label: 'Rows' },\n ],\n active: 'grid',\n layouts: [\n new SceneFlexLayout({\n direction: 'column',\n children: [\n new SceneReactObject({ reactNode: }),\n new SceneFlexItem({\n minHeight: 300,\n body,\n }),\n ],\n }),\n new SceneFlexLayout({\n direction: 'column',\n children: [\n new SceneReactObject({ reactNode: }),\n new ValueSummaryPanelScene({ title: tagKey, levelColor: true, tagKey: this.getTagKey(), type: 'label' }),\n new SceneReactObject({ reactNode: }),\n new ByFrameRepeater({\n body: new SceneCSSGridLayout({\n isLazy: true,\n templateColumns: LABEL_BREAKDOWN_GRID_TEMPLATE_COLUMNS,\n autoRows: '200px',\n children: [\n new SceneFlexItem({\n body: new SceneReactObject({\n reactNode: ,\n }),\n }),\n ],\n }),\n getLayoutChild: getFilterBreakdownValueScene(\n getLabelValue,\n DrawStyle.Bars,\n VAR_LABELS,\n sceneGraph.getAncestor(this, LabelBreakdownScene).state.sort,\n tagKey\n ),\n sortBy,\n direction,\n getFilter,\n }),\n ],\n }),\n new SceneFlexLayout({\n direction: 'column',\n children: [\n new SceneReactObject({ reactNode: }),\n new ValueSummaryPanelScene({ title: tagKey, levelColor: true, tagKey: this.getTagKey(), type: 'label' }),\n new SceneReactObject({ reactNode: }),\n new ByFrameRepeater({\n body: new SceneCSSGridLayout({\n templateColumns: '1fr',\n autoRows: '200px',\n children: [\n new SceneFlexItem({\n body: new SceneReactObject({\n reactNode: ,\n }),\n }),\n ],\n }),\n getLayoutChild: getFilterBreakdownValueScene(\n getLabelValue,\n DrawStyle.Bars,\n VAR_LABELS,\n sceneGraph.getAncestor(this, LabelBreakdownScene).state.sort,\n tagKey\n ),\n sortBy,\n direction,\n getFilter,\n }),\n ],\n }),\n ],\n });\n }\n\n private showErrorToast(errors: DisplayErrors) {\n const appEvents = getAppEvents();\n\n // Make sure we only display each error once\n let errorArray: DisplayError[] = [];\n for (const err in errors) {\n const displayError = errors[err];\n if (!displayError.displayed) {\n errorArray.push(displayError);\n displayError.displayed = true;\n }\n }\n\n if (errorArray.length) {\n // If we don't have any panels the error message will replace the loading state, we want to set it as displayed but not render the toast\n if (!this.activeLayoutContainsNoPanels()) {\n appEvents.publish({\n type: AppEvents.alertError.name,\n payload: errorArray?.map((err, key) => this.renderError(key, err)),\n });\n }\n this.setState({\n errors,\n });\n }\n }\n\n private renderError(key: number, err: DataQueryError) {\n return (\n
\n {err.status && (\n <>\n Status: {err.status}
\n \n )}\n {err.message && (\n <>\n Message: {err.message}
\n \n )}\n {err.traceId && (\n <>\n TraceId: {err.traceId}\n \n )}\n
\n );\n }\n\n public static Selector({ model }: SceneComponentProps) {\n const { body } = model.useState();\n return <>{body && body instanceof LayoutSwitcher && };\n }\n\n public static Component = ({ model }: SceneComponentProps) => {\n const { body } = model.useState();\n const styles = useStyles2(getPanelWrapperStyles);\n if (body) {\n return {body && };\n }\n\n return ;\n };\n}\n","import React from 'react';\n\nimport { GrafanaTheme2, SelectableValue } from '@grafana/data';\nimport { SceneComponentProps, SceneObject, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport { Field, RadioButtonGroup, useStyles2 } from '@grafana/ui';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from 'services/analytics';\nimport { getDrilldownSlug } from '../../../services/routing';\nimport { css } from '@emotion/css';\n\nexport interface LayoutSwitcherState extends SceneObjectState {\n active: LayoutType;\n layouts: SceneObject[];\n options: Array>;\n}\n\nexport type LayoutType = 'single' | 'grid' | 'rows';\n\nexport class LayoutSwitcher extends SceneObjectBase {\n public static Selector = LayoutSwitcherComponent;\n\n public onLayoutChange = (active: LayoutType) => {\n reportAppInteraction(USER_EVENTS_PAGES.service_details, USER_EVENTS_ACTIONS.service_details.layout_type_changed, {\n layout: active,\n view: getDrilldownSlug(),\n });\n this.setState({ active });\n };\n\n public static Component = ({ model }: SceneComponentProps) => {\n const { layouts, options, active } = model.useState();\n\n const index = options.findIndex((o) => o.value === active);\n if (index === -1) {\n return null;\n }\n\n const layout = layouts[index];\n\n return ;\n };\n}\n\nfunction LayoutSwitcherComponent({ model }: { model: LayoutSwitcher }) {\n const { active, options } = model.useState();\n const styles = useStyles2(getStyles);\n\n return (\n \n \n \n );\n}\n\nconst getStyles = (theme: GrafanaTheme2) => {\n return {\n field: css({\n marginBottom: 0,\n }),\n };\n};\n","import { SceneComponentProps, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport { GrotError } from '../../GrotError';\nimport { Alert, Button } from '@grafana/ui';\nimport React from 'react';\nimport { emptyStateStyles } from './FieldsBreakdownScene';\n\nexport interface ClearFiltersLayoutSceneState extends SceneObjectState {\n clearCallback: () => void;\n}\nexport class NoMatchingLabelsScene extends SceneObjectBase {\n public static Component = ({ model }: SceneComponentProps) => {\n const { clearCallback } = model.useState();\n return (\n \n \n No labels match these filters.{' '}\n {' '}\n \n \n );\n };\n}\n","import {\n AdHocFiltersVariable,\n PanelBuilders,\n SceneComponentProps,\n SceneDataProvider,\n SceneFlexItem,\n SceneFlexLayout,\n sceneGraph,\n SceneObjectBase,\n SceneObjectState,\n VizPanel,\n} from '@grafana/scenes';\nimport { CollapsablePanelText, PanelMenu } from '../../../Panels/PanelMenu';\nimport { DrawStyle, PanelContext, SeriesVisibilityChangeMode, StackingMode } from '@grafana/ui';\nimport {\n setLevelColorOverrides,\n syncFieldsValueSummaryVisibleSeries,\n syncLabelsValueSummaryVisibleSeries,\n syncLevelsVisibleSeries,\n} from '../../../../services/panel';\nimport { getPanelOption, setPanelOption } from '../../../../services/store';\nimport React from 'react';\nimport {\n getFieldsVariable,\n getLabelsVariable,\n getLevelsVariable,\n getMetadataVariable,\n} from '../../../../services/variableGetters';\nimport { toggleLevelFromFilter } from '../../../../services/levels';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from '../../../../services/analytics';\nimport { DataFrame, LoadingState } from '@grafana/data';\nimport { LEVEL_VARIABLE_VALUE } from '../../../../services/variables';\nimport { logger } from '../../../../services/logger';\nimport { FilterType } from '../AddToFiltersButton';\nimport { toggleFieldFromFilter, toggleLabelFromFilter } from '../../../../services/labels';\n\nconst SUMMARY_PANEL_SERIES_LIMIT = 100;\n\ninterface ValueSummaryPanelSceneState extends SceneObjectState {\n body?: SceneFlexLayout;\n title: string;\n levelColor?: boolean;\n tagKey: string;\n type: 'field' | 'label';\n}\nexport class ValueSummaryPanelScene extends SceneObjectBase {\n constructor(state: ValueSummaryPanelSceneState) {\n super(state);\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n public static Component = ({ model }: SceneComponentProps) => {\n const { body } = model.useState();\n if (body) {\n return (\n
\n \n
\n );\n }\n\n return null;\n };\n\n onActivate() {\n const collapsed =\n getPanelOption('collapsed', [CollapsablePanelText.collapsed, CollapsablePanelText.expanded]) ??\n CollapsablePanelText.expanded;\n const viz = buildValueSummaryPanel(this.state.title, { levelColor: this.state.levelColor });\n const height = getValueSummaryHeight(collapsed);\n\n viz.setState({\n extendPanelContext: (_, context) => this.extendTimeSeriesLegendBus(context),\n });\n\n this.setState({\n body: new SceneFlexLayout({\n key: VALUE_SUMMARY_PANEL_KEY,\n minHeight: height,\n height: height,\n maxHeight: height,\n wrap: 'nowrap',\n children: [\n new SceneFlexItem({\n body: viz,\n }),\n ],\n }),\n });\n\n this._subs.add(\n viz.subscribeToState((newState, prevState) => {\n if (newState.collapsed !== prevState.collapsed) {\n const vizPanelFlexLayout = sceneGraph.getAncestor(viz, SceneFlexLayout);\n setValueSummaryHeight(\n vizPanelFlexLayout,\n newState.collapsed ? CollapsablePanelText.collapsed : CollapsablePanelText.expanded\n );\n setPanelOption(\n 'collapsed',\n newState.collapsed ? CollapsablePanelText.collapsed : CollapsablePanelText.expanded\n );\n }\n })\n );\n }\n\n /**\n * Syncs legend with labels\n */\n private extendTimeSeriesLegendBus = (context: PanelContext) => {\n const $data = sceneGraph.getData(this);\n const dataFrame = $data.state.data?.series;\n const key = this.state.tagKey;\n\n const sceneFlexItem = this.state.body?.state.children[0];\n if (!(sceneFlexItem instanceof SceneFlexItem)) {\n throw new Error('Cannot find sceneFlexItem');\n }\n const panel = sceneFlexItem.state.body;\n\n if (!(panel instanceof VizPanel)) {\n throw new Error('Cannot find VizPanel');\n }\n\n this.initLegendOptions(dataFrame, key, panel);\n\n if (this.state.type === 'label') {\n this._subs.add(this.getLabelsVariableLegendSyncSubscription(key));\n } else {\n this._subs.add(this.getFieldsVariableLegendSyncSubscription(key, getFieldsVariable(this)));\n this._subs.add(this.getFieldsVariableLegendSyncSubscription(key, getMetadataVariable(this)));\n }\n\n this._subs.add(this.getQuerySubscription(key, $data, panel));\n\n context.onToggleSeriesVisibility = (value: string, mode: SeriesVisibilityChangeMode) => {\n let action: FilterType;\n if (this.state.type === 'label') {\n if (key === LEVEL_VARIABLE_VALUE) {\n action = toggleLevelFromFilter(value, this);\n } else {\n action = toggleLabelFromFilter(key, value, this);\n }\n } else {\n action = toggleFieldFromFilter(key, value, this);\n }\n\n reportAppInteraction(\n USER_EVENTS_PAGES.service_details,\n USER_EVENTS_ACTIONS.service_details.label_in_panel_summary_clicked,\n {\n label: value,\n action,\n }\n );\n };\n };\n\n /**\n * Sync legend with current dataframe\n */\n private initLegendOptions(dataFrame: DataFrame[] | undefined, key: string, panel: VizPanel<{}, {}>) {\n if (dataFrame) {\n if (this.state.type === 'label') {\n if (key === LEVEL_VARIABLE_VALUE) {\n syncLevelsVisibleSeries(panel, dataFrame, this);\n } else {\n syncLabelsValueSummaryVisibleSeries(key, panel, dataFrame, this);\n }\n } else {\n syncFieldsValueSummaryVisibleSeries(key, panel, dataFrame, this);\n }\n }\n }\n\n /**\n * Sync visible series on dataframe update\n */\n private getQuerySubscription(key: string, $data: SceneDataProvider, panel: VizPanel<{}, {}>) {\n return $data.subscribeToState((newState, prevState) => {\n if (newState.data?.state === LoadingState.Done) {\n if (this.state.type === 'label') {\n if (key === LEVEL_VARIABLE_VALUE) {\n syncLevelsVisibleSeries(panel, newState.data.series, this);\n } else {\n syncLabelsValueSummaryVisibleSeries(key, panel, newState.data.series, this);\n }\n } else {\n syncFieldsValueSummaryVisibleSeries(key, panel, newState.data.series, this);\n }\n }\n });\n }\n\n private getFieldsVariableLegendSyncSubscription(key: string, variable: AdHocFiltersVariable) {\n return variable?.subscribeToState(() => {\n const sceneFlexItem = this.state.body?.state.children[0];\n if (!(sceneFlexItem instanceof SceneFlexItem)) {\n throw new Error('Cannot find sceneFlexItem');\n }\n const panel = sceneFlexItem.state.body;\n if (!(panel instanceof VizPanel)) {\n throw new Error('ValueSummary - getFieldsVariableLegendSyncSubscription: Cannot find VizPanel');\n }\n\n const $data = sceneGraph.getData(this);\n const dataFrame = $data.state.data?.series;\n\n if (!dataFrame) {\n logger.warn('ValueSummary - getFieldsVariableLegendSyncSubscription: missing dataframe!');\n return;\n }\n\n syncFieldsValueSummaryVisibleSeries(key, panel, dataFrame, this);\n });\n }\n\n /**\n * Returns value subscription for labels\n */\n private getLabelsVariableLegendSyncSubscription(key: string) {\n const isLevel = key === LEVEL_VARIABLE_VALUE;\n const variable = isLevel ? getLevelsVariable(this) : getLabelsVariable(this);\n return variable?.subscribeToState(() => {\n const sceneFlexItem = this.state.body?.state.children[0];\n if (!(sceneFlexItem instanceof SceneFlexItem)) {\n throw new Error('Cannot find sceneFlexItem');\n }\n const panel = sceneFlexItem.state.body;\n if (!(panel instanceof VizPanel)) {\n throw new Error('ValueSummary - getLabelsVariableLegendSyncSubscription: Cannot find VizPanel');\n }\n\n const $data = sceneGraph.getData(this);\n const dataFrame = $data.state.data?.series;\n\n if (!dataFrame) {\n logger.warn('ValueSummary - getLabelsVariableLegendSyncSubscription: missing dataframe!');\n return;\n }\n\n if (isLevel) {\n syncLevelsVisibleSeries(panel, dataFrame, this);\n } else {\n syncLabelsValueSummaryVisibleSeries(key, panel, dataFrame, this);\n }\n });\n }\n}\n\nexport function setValueSummaryHeight(vizPanelFlexLayout: SceneFlexLayout, collapsableState: CollapsablePanelText) {\n const height = getValueSummaryHeight(collapsableState);\n vizPanelFlexLayout.setState({\n minHeight: height,\n height: height,\n maxHeight: height,\n });\n}\n\nfunction getValueSummaryHeight(collapsableState: CollapsablePanelText) {\n return collapsableState === CollapsablePanelText.collapsed ? 35 : 300;\n}\n\nfunction buildValueSummaryPanel(title: string, options?: { levelColor?: boolean }): VizPanel {\n const collapsed =\n getPanelOption('collapsed', [CollapsablePanelText.collapsed, CollapsablePanelText.expanded]) ??\n CollapsablePanelText.expanded;\n\n const body = PanelBuilders.timeseries()\n .setTitle(title)\n .setMenu(new PanelMenu({}))\n .setCollapsible(true)\n .setCollapsed(collapsed === CollapsablePanelText.collapsed)\n .setCustomFieldConfig('stacking', { mode: StackingMode.Normal })\n .setCustomFieldConfig('fillOpacity', 100)\n .setCustomFieldConfig('lineWidth', 0)\n .setCustomFieldConfig('pointSize', 0)\n .setCustomFieldConfig('drawStyle', DrawStyle.Bars)\n // 11.5\n // .setShowMenuAlways(true)\n .setSeriesLimit(SUMMARY_PANEL_SERIES_LIMIT);\n\n if (options?.levelColor) {\n body.setOverrides(setLevelColorOverrides);\n }\n return body.build();\n}\n\nexport const VALUE_SUMMARY_PANEL_KEY = 'value_summary_panel';\n","import { css } from '@emotion/css';\nimport { Icon, IconButton, Input, useStyles2 } from '@grafana/ui';\nimport React, { HTMLProps } from 'react';\nimport { GrafanaTheme2 } from '@grafana/data';\n\ninterface Props extends Omit, 'width' | 'prefix'> {\n onClear?: () => void;\n suffix?: React.ReactNode;\n prefix?: React.ReactNode;\n}\n\nexport const SearchInput = ({ value, onChange, placeholder, onClear, suffix, ...rest }: Props) => {\n const styles = useStyles2(getStyles);\n return (\n \n {onClear && value ? (\n \n ) : undefined}\n {suffix && suffix}\n \n }\n prefix={}\n placeholder={placeholder}\n {...rest}\n />\n );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n suffixWrapper: css({\n gap: theme.spacing(0.5),\n display: 'inline-flex',\n }),\n clearIcon: css({\n cursor: 'pointer',\n }),\n});\n","import { SceneComponentProps, sceneGraph, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport { Button, ClickOutsideWrapper, Field, FieldSet, Input, Label, Select, Stack, useStyles2 } from '@grafana/ui';\nimport React from 'react';\nimport { GrafanaTheme2, SelectableValue } from '@grafana/data';\nimport { css, cx } from '@emotion/css';\nimport { SelectLabelActionScene } from './SelectLabelActionScene';\nimport {\n addNumericFilter,\n removeNumericFilter,\n validateVariableNameForField,\n InterpolatedFilterType,\n} from './AddToFiltersButton';\nimport { FilterOp } from '../../../services/filterTypes';\nimport { getAdHocFiltersVariable, getValueFromFieldsFilter } from '../../../services/variableGetters';\nimport { logger } from '../../../services/logger';\nimport { testIds } from '../../../services/testIds';\n\nexport interface NumericFilterPopoverSceneState extends SceneObjectState {\n labelName: string;\n variableType: InterpolatedFilterType;\n gt?: number;\n gte?: boolean;\n lt?: number;\n lte?: boolean;\n fieldType: 'float' | 'duration' | 'bytes';\n hasExistingFilter?: boolean;\n}\n\nexport type NumericFilterPopoverSceneStateTotal =\n | (NumericFilterPopoverSceneState & FloatTypes)\n | (NumericFilterPopoverSceneState & DurationTypes)\n | (NumericFilterPopoverSceneState & ByteTypes);\n\nenum DisplayDurationUnits {\n ns = 'ns',\n us = 'µs',\n ms = 'ms',\n s = 's',\n m = 'm',\n h = 'h',\n}\n\nexport const validDurationValues: { [key in DisplayDurationUnits]: string[] } = {\n [DisplayDurationUnits.ns]: ['ns'],\n [DisplayDurationUnits.us]: ['µs', 'us'],\n [DisplayDurationUnits.ms]: ['ms'],\n [DisplayDurationUnits.s]: ['s'],\n [DisplayDurationUnits.m]: ['m'],\n [DisplayDurationUnits.h]: ['h'],\n};\n\nenum DisplayByteUnits {\n B = 'B',\n KB = 'KB',\n MB = 'MB',\n GB = 'GB',\n TB = 'TB',\n}\n\nexport enum ValidByteUnitValues {\n B = 'B',\n KB = 'KB',\n MB = 'MB',\n GB = 'GB',\n TB = 'TB',\n\n // Not selectable in the UI, but valid from link extensions\n kB = 'kB',\n KiB = 'KiB',\n MiB = 'MiB',\n GiB = 'GiB',\n TiB = 'TiB',\n}\n\ninterface FloatUnitTypes {\n ltu: '';\n gtu: '';\n}\n\ninterface FloatTypes extends FloatUnitTypes {\n fieldType: 'float';\n}\n\ninterface DurationUnitTypes {\n ltu: DisplayDurationUnits;\n gtu: DisplayDurationUnits;\n}\n\ninterface DurationTypes extends DurationUnitTypes {\n fieldType: 'duration';\n}\n\ninterface ByteUnitTypes {\n ltu: DisplayByteUnits;\n gtu: DisplayByteUnits;\n}\n\ninterface ByteTypes extends ByteUnitTypes {\n fieldType: 'bytes';\n}\n\nexport class NumericFilterPopoverScene extends SceneObjectBase {\n constructor(state: Omit) {\n let units: FloatUnitTypes | DurationUnitTypes | ByteUnitTypes;\n const fieldType: 'float' | 'bytes' | 'duration' = state.fieldType;\n if (fieldType === 'bytes') {\n units = { ltu: DisplayByteUnits.B, gtu: DisplayByteUnits.B };\n } else if (fieldType === 'duration') {\n units = { ltu: DisplayDurationUnits.s, gtu: DisplayDurationUnits.s };\n } else if (fieldType === 'float') {\n units = { ltu: '', gtu: '' };\n } else {\n throw new Error(`field type incorrectly defined: ${fieldType}`);\n }\n\n // @todo - how to avoid type assertion?\n super({ ...state, ...units } as NumericFilterPopoverSceneStateTotal);\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n onActivate() {\n // get existing values if they exist\n const variable = getAdHocFiltersVariable(\n validateVariableNameForField(this.state.labelName, this.state.variableType),\n this\n );\n const filters = variable.state.filters.filter((f) => f.key === this.state.labelName);\n const gtFilter = filters.find((f) => f.operator === FilterOp.gte || f.operator === FilterOp.gt);\n const ltFilter = filters.find((f) => f.operator === FilterOp.lte || f.operator === FilterOp.lt);\n let stateUpdate: Partial = {};\n\n if (this.state.fieldType === 'duration' || this.state.fieldType === 'bytes') {\n if (gtFilter) {\n const extractedValue = extractValueFromString(getValueFromFieldsFilter(gtFilter).value, this.state.fieldType);\n\n if (extractedValue) {\n stateUpdate.gt = extractedValue.value;\n stateUpdate.gtu = extractedValue.unit;\n stateUpdate.gte = gtFilter.operator === FilterOp.gte;\n }\n }\n\n if (ltFilter) {\n const extractedValue = extractValueFromString(getValueFromFieldsFilter(ltFilter).value, this.state.fieldType);\n\n if (extractedValue) {\n stateUpdate.lt = extractedValue.value;\n stateUpdate.ltu = extractedValue.unit;\n stateUpdate.lte = ltFilter.operator === FilterOp.lte;\n }\n }\n } else {\n // Floats have no unit\n if (gtFilter) {\n const extractedValue = getValueFromFieldsFilter(gtFilter).value;\n stateUpdate.gt = Number(extractedValue);\n stateUpdate.gtu = '';\n stateUpdate.gte = gtFilter.operator === FilterOp.gte;\n }\n if (ltFilter) {\n const extractedValue = getValueFromFieldsFilter(ltFilter).value;\n stateUpdate.lt = Number(extractedValue);\n stateUpdate.ltu = '';\n stateUpdate.lte = ltFilter.operator === FilterOp.lte;\n }\n }\n\n if (Object.keys(stateUpdate).length !== 0) {\n stateUpdate.hasExistingFilter = true;\n }\n\n this.setState(stateUpdate);\n }\n\n onSubmit() {\n // \"0\" values break byte queries see https://github.com/grafana/loki/issues/14993, for now we remove the filter when a 0 value is entered to prevent breakage\n // numeric values can only be fields or metadata variable\n if (this.state.gt) {\n addNumericFilter(\n this.state.labelName,\n this.state.gt.toString() + this.state.gtu,\n this.state.gte ? FilterOp.gte : FilterOp.gt,\n this,\n this.state.variableType\n );\n } else {\n removeNumericFilter(\n this.state.labelName,\n this,\n this.state.gte ? FilterOp.gte : FilterOp.gt,\n this.state.variableType\n );\n }\n\n if (this.state.lt) {\n addNumericFilter(\n this.state.labelName,\n this.state.lt.toString() + this.state.ltu,\n this.state.lte ? FilterOp.lte : FilterOp.lt,\n this,\n this.state.variableType\n );\n } else {\n removeNumericFilter(\n this.state.labelName,\n this,\n this.state.lte ? FilterOp.lte : FilterOp.lt,\n this.state.variableType\n );\n }\n\n const selectLabelActionScene = sceneGraph.getAncestor(this, SelectLabelActionScene);\n selectLabelActionScene.togglePopover();\n }\n onInputKeydown = (e: React.KeyboardEvent) => {\n const formDisabled = this.state.gt === undefined && this.state.lt === undefined;\n if (e.key === 'Enter' && !formDisabled) {\n this.onSubmit();\n }\n };\n\n public static Component = ({ model }: SceneComponentProps) => {\n const popoverStyles = useStyles2(getPopoverStyles);\n const { labelName, gt, lt, gte, lte, gtu, ltu, fieldType, hasExistingFilter } = model.useState();\n const subTitle = fieldType !== 'float' && fieldType !== labelName ? `(${fieldType})` : undefined;\n\n const selectLabelActionScene = sceneGraph.getAncestor(model, SelectLabelActionScene);\n const formDisabled = gt === undefined && lt === undefined;\n\n return (\n selectLabelActionScene.togglePopover()}>\n \n
\n
\n {labelName} {subTitle}\n
\n\n
\n {/* greater than */}\n
\n \n \n className={popoverStyles.card.inclusiveInput}\n menuShouldPortal={false}\n value={gte !== undefined ? gte.toString() : 'false'}\n options={[\n { label: 'Greater than', value: 'false' },\n { label: 'Greater than or equal', value: 'true' },\n ]}\n onChange={(value) => model.setState({ gte: value.value === 'true' })}\n />\n \n \n {\n model.setState({\n gt: e.currentTarget.value !== '' ? Number(e.currentTarget.value) : undefined,\n });\n }}\n className={popoverStyles.card.numberInput}\n value={gt}\n type={'number'}\n />\n \n {fieldType !== 'float' && (\n \n )}\n
\n\n {/* less than */}\n
\n \n \n className={popoverStyles.card.inclusiveInput}\n menuShouldPortal={false}\n value={lte !== undefined ? lte.toString() : 'false'}\n options={[\n { label: 'Less than', value: 'false' },\n { label: 'Less than or equal', value: 'true' },\n ]}\n onChange={(value) => model.setState({ lte: value.value === 'true' })}\n />\n \n \n \n model.setState({ lt: e.currentTarget.value !== '' ? Number(e.currentTarget.value) : undefined })\n }\n className={popoverStyles.card.numberInput}\n value={lt}\n type={'number'}\n />\n \n {fieldType !== 'float' && (\n \n )}\n
\n
\n\n {/* buttons */}\n
\n {hasExistingFilter && (\n {\n model.setState({\n gt: undefined,\n lt: undefined,\n });\n model.onSubmit();\n }}\n size={'sm'}\n variant={'destructive'}\n fill={'outline'}\n >\n Remove\n \n )}\n model.onSubmit()}\n size={'sm'}\n variant={'primary'}\n fill={'outline'}\n type={'submit'}\n >\n Add\n \n\n selectLabelActionScene.togglePopover()}\n size={'sm'}\n variant={'secondary'}\n fill={'outline'}\n >\n Cancel\n \n
\n
\n
\n
\n );\n };\n}\n\nexport function extractValueFromString(\n inputString: string,\n inputType: 'bytes' | 'duration'\n): { value: number; unit: DisplayByteUnits | DisplayDurationUnits } | undefined {\n if (inputType === 'duration') {\n const durationValues = Object.values(DisplayDurationUnits);\n\n // Check the end of the filter value for a unit that exactly matches\n const durationValue = durationValues.find((durationValue) => {\n const durationValueLength = durationValue.length;\n return inputString.slice(durationValueLength * -1) === durationValue;\n });\n\n if (durationValue) {\n const value = Number(inputString.replace(durationValue, ''));\n if (!isNaN(value)) {\n return {\n unit: durationValue,\n value: value,\n };\n }\n }\n }\n\n if (inputType === 'bytes') {\n const bytesValues = Object.values(DisplayByteUnits)\n // must be sorted from longest to shortest\n .sort((a, b) => b.length - a.length);\n\n // Check the end of the filter value for a unit that exactly matches\n const bytesValue = bytesValues.find((bytesValue) => {\n const byteValueLength = bytesValue.length;\n return inputString.slice(byteValueLength * -1) === bytesValue;\n });\n\n if (bytesValue) {\n const value = Number(inputString.replace(bytesValue, ''));\n if (!isNaN(value)) {\n return {\n unit: bytesValue,\n value: value,\n };\n }\n }\n }\n\n return undefined;\n}\n\nfunction getUnitOptions(\n fieldType: 'duration' | 'bytes'\n): Array> {\n if (fieldType === 'duration') {\n const keys = Object.keys(DisplayDurationUnits) as Array;\n return keys.map((key) => {\n return {\n text: key,\n value: DisplayDurationUnits[key],\n label: key,\n };\n });\n }\n\n if (fieldType === 'bytes') {\n const keys = Object.keys(DisplayByteUnits) as Array;\n return keys.map((key) => {\n return {\n text: key,\n value: DisplayByteUnits[key],\n label: key,\n };\n });\n }\n\n const error = new Error(`invalid field type: ${fieldType}`);\n logger.error(error, { msg: 'getUnitOptions, invalid field type' });\n throw error;\n}\n\nconst getPopoverStyles = (theme: GrafanaTheme2) => ({\n card: {\n buttons: css({\n display: 'flex',\n flexWrap: 'wrap',\n justifyContent: 'flex-end',\n gap: theme.spacing(1.5),\n marginTop: theme.spacing(1),\n }),\n inclusiveInput: css({\n minWidth: '185px',\n }),\n selectInput: css({\n minWidth: '65px',\n }),\n numberInput: css({\n width: '75px',\n }),\n fieldWrap: css({\n display: 'flex',\n flexDirection: 'column',\n paddingTop: theme.spacing(2),\n paddingBottom: 0,\n }),\n field: css({\n display: 'flex',\n alignItems: 'center',\n marginBottom: theme.spacing(1),\n }),\n inclusiveField: css({\n marginRight: theme.spacing(1),\n }),\n unitFieldLabel: css({\n marginLeft: theme.spacing(2),\n marginRight: theme.spacing(1.5),\n }),\n numberFieldLabel: css({\n width: '100px',\n }),\n switchFieldLabel: css({\n marginLeft: theme.spacing(2),\n marginRight: theme.spacing(1),\n }),\n fieldset: css({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n width: '100%',\n marginBottom: 0,\n }),\n title: css({}),\n body: css({\n padding: theme.spacing(2),\n }),\n p: css({\n maxWidth: 300,\n }),\n },\n});\n","import {\n AdHocFiltersVariable,\n SceneComponentProps,\n sceneGraph,\n SceneObjectBase,\n SceneObjectState,\n SceneQueryRunner,\n VizPanel,\n} from '@grafana/scenes';\nimport { getDetectedFieldsFrame, getLogsPanelFrame, ServiceScene } from '../ServiceScene';\nimport { getValueBreakdownLink } from '../../../services/navigate';\nimport { getPrimaryLabelFromUrl, ValueSlugs } from '../../../services/routing';\nimport {\n Button,\n ButtonGroup,\n ButtonSelect,\n IconButton,\n LinkButton,\n Popover,\n PopoverController,\n useStyles2,\n} from '@grafana/ui';\nimport React, { useRef } from 'react';\nimport { addToFilters, clearFilters, InterpolatedFilterType } from './AddToFiltersButton';\nimport { EMPTY_VARIABLE_VALUE, LEVEL_VARIABLE_VALUE, VAR_FIELDS } from '../../../services/variables';\nimport { AdHocVariableFilter, Field, GrafanaTheme2, Labels, LoadingState, SelectableValue } from '@grafana/data';\nimport {\n getFieldsVariable,\n getLabelsVariable,\n getLevelsVariable,\n getValueFromAdHocVariableFilter,\n getValueFromFieldsFilter,\n} from '../../../services/variableGetters';\nimport { FilterOp } from '../../../services/filterTypes';\nimport { LokiQuery } from '../../../services/lokiQuery';\nimport { css } from '@emotion/css';\nimport { rest } from 'lodash';\nimport { NumericFilterPopoverScene } from './NumericFilterPopoverScene';\nimport { getDetectedFieldType } from '../../../services/fields';\nimport { logger } from '../../../services/logger';\nimport { testIds } from '../../../services/testIds';\nimport { findObjectOfType } from '../../../services/scenes';\nimport { syncLevelsVariable } from '../../IndexScene/LevelsVariableScene';\n\ninterface SelectLabelActionSceneState extends SceneObjectState {\n labelName: string;\n fieldType: ValueSlugs;\n hideValueDrilldown?: boolean;\n hasSparseFilters?: boolean;\n hasNumericFilters?: boolean;\n selectedValue?: SelectableValue;\n popover?: NumericFilterPopoverScene;\n showPopover: boolean;\n}\n\nconst INCLUDE_VALUE = 'Include';\nconst EXCLUDE_VALUE = 'Exclude';\nconst NUMERIC_FILTER_VALUE = 'Add to filter';\n\nexport class SelectLabelActionScene extends SceneObjectBase {\n constructor(state: Omit) {\n super({ ...state, showPopover: false });\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n onChange(value: SelectableValue) {\n const variable = this.getVariable();\n const variableName = variable.state.name as InterpolatedFilterType;\n const existingFilter = this.getExistingFilter(variable);\n const fieldValue = getValueFromAdHocVariableFilter(variableName, existingFilter);\n const isIncluded = existingFilter?.operator === FilterOp.NotEqual && fieldValue.value === EMPTY_VARIABLE_VALUE;\n\n if (isIncluded && value.value === INCLUDE_VALUE) {\n this.clearFilter(variableName);\n } else if (value.value === INCLUDE_VALUE) {\n this.onClickExcludeEmpty(variableName);\n } else if (value.value === EXCLUDE_VALUE) {\n this.onClickIncludeEmpty(variableName);\n } else if (value.value === NUMERIC_FILTER_VALUE) {\n this.onClickNumericFilter(variableName);\n }\n\n this.setState({\n selectedValue: value,\n });\n }\n\n public static Component = ({ model }: SceneComponentProps) => {\n const {\n hideValueDrilldown,\n labelName,\n hasSparseFilters,\n hasNumericFilters,\n selectedValue,\n popover,\n showPopover,\n fieldType,\n } = model.useState();\n const variable = model.getVariable();\n const variableName = variable.useState().name as InterpolatedFilterType;\n const existingFilter = model.getExistingFilter(variable);\n const fieldValue = getValueFromAdHocVariableFilter(variableName, existingFilter);\n const styles = useStyles2(getStyles);\n const popoverRef = useRef(null);\n const filterButtonDisabled =\n fieldType === ValueSlugs.label &&\n variable.state.name === VAR_FIELDS &&\n variable.state.filters.filter((f) => f.key !== labelName && f.operator === FilterOp.Equal).length === 0;\n\n const isIncluded = existingFilter?.operator === FilterOp.NotEqual && fieldValue.value === EMPTY_VARIABLE_VALUE;\n const hasOtherFilter = !!existingFilter;\n\n const selectedOptionValue =\n selectedValue?.value ?? (isIncluded ? INCLUDE_VALUE : hasNumericFilters ? NUMERIC_FILTER_VALUE : INCLUDE_VALUE);\n\n const hasExistingNumericFilter = existingFilter?.operator\n ? [FilterOp.gte, FilterOp.gt, FilterOp.lte, FilterOp.lt].includes(existingFilter.operator)\n : false;\n const numericSelected = selectedOptionValue === NUMERIC_FILTER_VALUE || hasExistingNumericFilter;\n const includeSelected = selectedOptionValue === INCLUDE_VALUE && !numericSelected;\n\n const sparseIncludeOption: SelectableValue = {\n value: INCLUDE_VALUE,\n component: () => (\n \n ),\n };\n const sparseExcludeOption: SelectableValue = {\n value: EXCLUDE_VALUE,\n component: () => ,\n };\n const numericFilterOption: SelectableValue = {\n value: NUMERIC_FILTER_VALUE,\n component: () => (\n 30`} />\n ),\n };\n\n const options: Array> = [];\n if (hasNumericFilters) {\n options.push(numericFilterOption);\n }\n\n if (hasSparseFilters) {\n if (!hasExistingNumericFilter) {\n options.push(sparseIncludeOption);\n }\n\n options.push(sparseExcludeOption);\n }\n\n const defaultOption = isIncluded\n ? sparseIncludeOption\n : hasNumericFilters\n ? numericFilterOption\n : sparseIncludeOption;\n\n return (\n <>\n {hasOtherFilter && (\n model.clearFilters(variableName)}\n />\n )}\n {(hasNumericFilters || hasSparseFilters) && (\n <>\n \n model.onChange(selectedValue ?? defaultOption)}\n size={'sm'}\n fill={'outline'}\n variant={'secondary'}\n >\n {selectedValue?.value ?? defaultOption.value}\n \n {\n model.onChange(value);\n }}\n />\n \n \n )}\n {hideValueDrilldown !== true && (\n \n Select\n \n )}\n\n {popover && (\n }>\n {(showPopper, hidePopper, popperProps) => {\n const blurFocusProps = {\n onBlur: hidePopper,\n onFocus: showPopper,\n };\n\n return (\n <>\n {popoverRef.current && (\n <>\n {/* @ts-expect-error @todo upgrade typescript */}\n \n \n )}\n \n );\n }}\n \n )}\n \n );\n };\n\n private getExistingFilter(variable?: AdHocFiltersVariable): AdHocVariableFilter | undefined {\n let { labelName } = getPrimaryLabelFromUrl();\n if (this.state.labelName !== labelName) {\n return variable?.state.filters.find((filter) => {\n return filter.key === this.state.labelName;\n });\n }\n\n return undefined;\n }\n\n public onActivate() {\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n\n if (serviceScene.state.$data?.state.data?.state === LoadingState.Done) {\n this.calculateSparsity();\n }\n\n this._subs.add(\n sceneGraph.getData(this).subscribeToState((newState) => {\n if (newState.data?.state === LoadingState.Done) {\n if (serviceScene.state.$data?.state.data?.state === LoadingState.Done) {\n this.calculateSparsity();\n }\n\n this._subs.add(\n serviceScene.state.$data?.subscribeToState((newLogsPanelState) => {\n if (newLogsPanelState.data?.state === LoadingState.Done) {\n this.calculateSparsity();\n }\n })\n );\n }\n })\n );\n }\n\n public onClickNumericFilter = (variableType: InterpolatedFilterType) => {\n const detectedFieldFrame = getDetectedFieldsFrame(this);\n const fieldType = getDetectedFieldType(this.state.labelName, detectedFieldFrame);\n\n if (!fieldType || fieldType === 'string' || fieldType === 'boolean' || fieldType === 'int') {\n const error = new Error(`Incorrect field type: ${fieldType}`);\n logger.error(error, { msg: `onClickNumericFilter invalid field type ${fieldType}` });\n throw error;\n }\n\n this.setState({\n popover: new NumericFilterPopoverScene({ labelName: this.state.labelName, variableType, fieldType }),\n });\n this.togglePopover();\n };\n\n public getViewValuesLink = () => {\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n return getValueBreakdownLink(this.state.fieldType, this.state.labelName, serviceScene);\n };\n\n public onClickExcludeEmpty = (variableType: InterpolatedFilterType) => {\n addToFilters(this.state.labelName, EMPTY_VARIABLE_VALUE, 'exclude', this, variableType);\n };\n\n public onClickIncludeEmpty = (variableType: InterpolatedFilterType) => {\n // If json do we want != '{}'?\n addToFilters(this.state.labelName, EMPTY_VARIABLE_VALUE, 'include', this, variableType);\n };\n\n public clearFilter = (variableType: InterpolatedFilterType) => {\n addToFilters(this.state.labelName, EMPTY_VARIABLE_VALUE, 'clear', this, variableType);\n };\n\n public clearFilters = (variableType: InterpolatedFilterType) => {\n clearFilters(this.state.labelName, this, variableType);\n if (this.state.labelName === LEVEL_VARIABLE_VALUE) {\n syncLevelsVariable(this);\n }\n };\n\n public togglePopover() {\n this.setState({\n showPopover: !this.state.showPopover,\n });\n }\n\n private calculateSparsity() {\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n const logsPanelData = getLogsPanelFrame(serviceScene.state.$data?.state.data);\n const labels: Field | undefined = logsPanelData?.fields.find((field) => field.name === 'labels');\n\n const data = sceneGraph.getData(this);\n const queryRunner = findObjectOfType(data, (o) => o instanceof SceneQueryRunner, SceneQueryRunner);\n if (queryRunner) {\n const queries = queryRunner.state.queries;\n const query = queries[0] as LokiQuery | undefined;\n if (query?.expr.includes('avg_over_time')) {\n this.setState({\n hasNumericFilters: true,\n });\n }\n }\n\n if (!labels || !logsPanelData) {\n this.setState({\n hasSparseFilters: false,\n });\n return;\n }\n const variable = this.getVariable();\n // iterate through all the labels on the log panel query result and count how many times this exists\n const logLinesWithLabelCount = labels.values.reduce((acc, labels) => {\n if (labels?.[this.state.labelName]) {\n acc++;\n }\n return acc;\n }, 0);\n\n const panel = sceneGraph.getAncestor(this, VizPanel);\n if (logLinesWithLabelCount !== undefined && logsPanelData.length > 0) {\n const percentage = ((logLinesWithLabelCount / logsPanelData.length) * 100).toLocaleString();\n const description = `${this.state.labelName} exists on ${percentage}% of ${logsPanelData.length} sampled log lines`;\n\n // Update the desc\n panel.setState({\n description,\n });\n } else {\n panel.setState({\n description: undefined,\n });\n }\n\n // Only show for sparse fields and existing include and exclude filters, which will match an empty string in the value\n const existingFilter = this.getExistingFilter(variable);\n const existingFilterValue =\n existingFilter && variable.state.name === VAR_FIELDS ? getValueFromFieldsFilter(existingFilter) : undefined;\n\n if (logLinesWithLabelCount < logsPanelData.length || existingFilterValue?.value === EMPTY_VARIABLE_VALUE) {\n this.setState({\n hasSparseFilters: true,\n });\n } else {\n this.setState({\n hasSparseFilters: false,\n });\n }\n }\n\n private getVariable() {\n if (this.state.fieldType === ValueSlugs.field) {\n return getFieldsVariable(this);\n } else if (this.state.labelName === LEVEL_VARIABLE_VALUE) {\n return getLevelsVariable(this);\n } else {\n return getLabelsVariable(this);\n }\n }\n}\n\nfunction SelectableValueComponent(props: { text: string; selected: boolean }) {\n const styles = useStyles2(getSelectableValueComponentStyles);\n return (\n \n {props.selected && }\n {props.text}\n \n );\n}\n\nconst getSelectableValueComponentStyles = (theme: GrafanaTheme2) => {\n return {\n selected: css({\n label: 'selectable-value-selected',\n '&:before': {\n content: '\"\"',\n position: 'absolute',\n left: 0,\n top: '4px',\n height: 'calc(100% - 8px)',\n width: '2px',\n backgroundColor: theme.colors.warning.main,\n },\n }),\n description: css({\n textAlign: 'left',\n fontSize: theme.typography.pxToRem(12),\n }),\n };\n};\n\nconst getStyles = (theme: GrafanaTheme2) => {\n return {\n popover: css({\n borderRadius: theme.shape.radius.default,\n boxShadow: theme.shadows.z3,\n background: theme.colors.background.primary,\n border: `1px solid ${theme.colors.border.weak}`,\n }),\n description: css({\n textAlign: 'left',\n fontSize: theme.typography.pxToRem(12),\n }),\n buttonSelect: css({\n border: `1px solid ${theme.colors.border.strong}`,\n borderLeft: 'none',\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n padding: 1,\n height: '24px',\n }),\n };\n};\n","import { SceneComponentProps, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport React from 'react';\nimport { BusEventBase, DataFrame, FieldReducerInfo, ReducerID, SelectableValue, fieldReducers } from '@grafana/data';\nimport { getLabelValueFromDataFrame } from 'services/levels';\nimport { InlineField, Select } from '@grafana/ui';\nimport { getSortByPreference, setSortByPreference } from 'services/store';\nimport { testIds } from '../../../services/testIds';\nimport { DEFAULT_SORT_BY } from '../../../services/sorting';\n\nexport type SortBy = 'changepoint' | 'outliers' | ReducerID | '';\nexport type SortDirection = 'asc' | 'desc';\nexport interface SortBySceneState extends SceneObjectState {\n target: 'fields' | 'labels';\n sortBy: SortBy;\n direction: SortDirection;\n}\n\nexport class SortCriteriaChanged extends BusEventBase {\n constructor(public target: 'fields' | 'labels', public sortBy: string, public direction: string) {\n super();\n }\n public static type = 'sort-criteria-changed';\n}\n\nexport class SortByScene extends SceneObjectBase {\n public sortingOptions: Array<{ label: string; options: SelectableValue }> = [\n {\n label: '',\n options: [\n {\n value: 'changepoint',\n label: 'Most relevant',\n description: 'Smart ordering of graphs based on the most significant spikes in the data',\n },\n {\n value: 'outliers',\n label: 'Outlying values',\n description: 'Order by the amount of outlying values in the data',\n },\n {\n value: ReducerID.stdDev,\n label: 'Widest spread',\n description: 'Sort graphs by deviation from the average value',\n },\n {\n value: 'alphabetical',\n label: 'Name',\n description: 'Alphabetical order',\n },\n {\n value: ReducerID.sum,\n label: 'Count',\n description: 'Sort graphs by total number of logs',\n },\n {\n value: ReducerID.max,\n label: 'Highest spike',\n description: 'Sort graphs by the highest values (max)',\n },\n {\n value: ReducerID.min,\n label: 'Lowest dip',\n description: 'Sort graphs by the smallest values (min)',\n },\n ],\n },\n {\n label: 'Percentiles',\n options: [...fieldReducers.selectOptions([], filterReducerOptions).options],\n },\n ];\n\n constructor(state: Pick) {\n const { sortBy, direction } = getSortByPreference(state.target, DEFAULT_SORT_BY, 'desc');\n super({\n target: state.target,\n sortBy,\n direction,\n });\n }\n\n public onCriteriaChange = (criteria: SelectableValue) => {\n if (!criteria.value) {\n return;\n }\n this.setState({ sortBy: criteria.value });\n setSortByPreference(this.state.target, criteria.value, this.state.direction);\n this.publishEvent(new SortCriteriaChanged(this.state.target, criteria.value, this.state.direction), true);\n };\n\n public onDirectionChange = (direction: SelectableValue) => {\n if (!direction.value) {\n return;\n }\n this.setState({ direction: direction.value });\n setSortByPreference(this.state.target, this.state.sortBy, direction.value);\n this.publishEvent(new SortCriteriaChanged(this.state.target, this.state.sortBy, direction.value), true);\n };\n\n public static Component = ({ model }: SceneComponentProps) => {\n const { sortBy, direction } = model.useState();\n const group = model.sortingOptions.find((group) =>\n group.options.find((option: SelectableValue) => option.value === sortBy)\n );\n const sortByValue: SelectableValue | undefined = group?.options.find(\n (option: SelectableValue) => option.value === sortBy\n );\n return (\n <>\n \n \n \n \n \n \n \n );\n };\n}\n\nconst ENABLED_PERCENTILES = ['p10', 'p25', 'p75', 'p90', 'p99'];\nfunction filterReducerOptions(ext: FieldReducerInfo) {\n if (ext.id >= 'p1' && ext.id <= 'p99') {\n return ENABLED_PERCENTILES.includes(ext.id);\n }\n return false;\n}\n\nexport function getLabelValue(frame: DataFrame) {\n return getLabelValueFromDataFrame(frame) ?? 'No labels';\n}\n","import { css } from '@emotion/css';\nimport React, { ReactNode } from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { LoadingPlaceholder, useStyles2 } from '@grafana/ui';\n\ntype Props = {\n blockingMessage?: string;\n isLoading?: boolean;\n children?: ReactNode;\n};\n\nexport function StatusWrapper({ blockingMessage, isLoading, children }: Props) {\n const styles = useStyles2(getStyles);\n\n if (isLoading && !blockingMessage) {\n blockingMessage = 'Loading...';\n }\n\n if (isLoading) {\n return ;\n }\n\n if (!blockingMessage) {\n return <>{children};\n }\n\n return
{blockingMessage}
;\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n statusMessage: css({\n fontStyle: 'italic',\n marginTop: theme.spacing(7),\n textAlign: 'center',\n }),\n };\n}\n","export const MAX_NUMBER_OF_TIME_SERIES = 20;\n","import { GrafanaTheme2 } from '@grafana/data';\n\n// from /grafana/grafana/packages/grafana-ui/src/themes/mixins.ts\nexport function getFocusStyles(theme: GrafanaTheme2) {\n return {\n outline: '2px dotted transparent',\n outlineOffset: '2px',\n boxShadow: `0 0 0 2px ${theme.colors.background.canvas}, 0 0 0px 4px ${theme.colors.primary.main}`,\n transitionTimingFunction: `cubic-bezier(0.19, 1, 0.22, 1)`,\n transitionDuration: '0.2s',\n transitionProperty: 'outline, outline-offset, box-shadow',\n };\n}\n\nexport function getMouseFocusStyles(theme: GrafanaTheme2) {\n return {\n outline: 'none',\n boxShadow: `none`,\n };\n}\n\nexport function getIconButtonBefore(hoverSize: number, theme: GrafanaTheme2) {\n return {\n zIndex: '-1',\n position: 'absolute',\n opacity: '0',\n width: `${hoverSize}px`,\n height: `${hoverSize}px`,\n borderRadius: theme.shape.radius.default,\n content: '\"\"',\n [theme.transitions.handleMotion('no-preference', 'reduce')]: {\n transitionDuration: '0.2s',\n transitionTimingFunction: 'cubic-bezier(0.4, 0, 0.2, 1)',\n transitionProperty: 'opacity',\n },\n };\n}\n","import { IconButtonVariant, Tooltip, useTheme2 } from '@grafana/ui';\nimport React from 'react';\nimport { colorManipulator, GrafanaTheme2 } from '@grafana/data';\nimport { css, cx } from '@emotion/css';\nimport { getFocusStyles, getIconButtonBefore, getMouseFocusStyles } from '../../../services/mixins';\n\nexport type RegexInputValue = 'regex' | 'match';\ninterface Props {\n onRegexToggle: (state: RegexInputValue) => void;\n regex: boolean;\n}\n\nexport const RegexIconButton = (props: Props) => {\n const theme = useTheme2();\n const fill = props.regex ? theme.colors.text.maxContrast : theme.colors.text.disabled;\n const styles = getStyles(theme);\n const description = `${props.regex ? 'Disable' : 'Enable'} regex`;\n\n return (\n \n props.onRegexToggle(props.regex ? 'match' : 'regex')}\n className={cx(styles.button, props.regex ? styles.active : null)}\n aria-label={description}\n >\n \n \n .*\n \n \n \n \n );\n};\n\nconst getStyles = (theme: GrafanaTheme2, variant: IconButtonVariant = 'secondary') => {\n const hoverSize = 16 + theme.spacing.gridSize;\n\n return {\n button: css({\n zIndex: 0,\n position: 'relative',\n margin: `0 ${theme.spacing.x0_5} 0 ${theme.spacing.x0_5}`,\n boxShadow: 'none',\n border: 'none',\n display: 'inline-flex',\n background: 'transparent',\n justifyContent: 'center',\n alignItems: 'center',\n padding: 0,\n color: theme.colors.text.primary,\n\n '&:before': {\n ...getIconButtonBefore(hoverSize, theme),\n position: 'absolute',\n },\n\n '&:hover': {\n '&:before': {\n backgroundColor:\n variant === 'secondary'\n ? theme.colors.action.hover\n : colorManipulator.alpha(theme.colors.text.primary, 0.12),\n opacity: 1,\n },\n },\n\n '&:focus, &:focus-visible': getFocusStyles(theme),\n '&:focus:not(:focus-visible)': getMouseFocusStyles(theme),\n }),\n active: css({\n '&:before': {\n backgroundColor:\n variant === 'secondary' ? theme.colors.action.hover : colorManipulator.alpha(theme.colors.text.primary, 0.12),\n opacity: 1,\n },\n '&:hover': {\n '&:before': {\n backgroundColor: 'none',\n opacity: 0,\n },\n },\n }),\n };\n};\n","import { IconButtonVariant, Tooltip, useTheme2 } from '@grafana/ui';\nimport React from 'react';\nimport { colorManipulator, GrafanaTheme2 } from '@grafana/data';\nimport { css, cx } from '@emotion/css';\nimport { getFocusStyles, getIconButtonBefore, getMouseFocusStyles } from '../../../services/mixins';\nimport { LineFilterCaseSensitive } from '../../../services/filterTypes';\n\ninterface Props {\n onCaseSensitiveToggle: (state: LineFilterCaseSensitive) => void;\n caseSensitive: boolean;\n}\n\nexport const LineFilterCaseSensitivityButton = (props: Props) => {\n const theme = useTheme2();\n const fill = props.caseSensitive ? theme.colors.text.maxContrast : theme.colors.text.disabled;\n const styles = getStyles(theme);\n const description = `${props.caseSensitive ? 'Disable' : 'Enable'} case match`;\n\n return (\n \n \n props.onCaseSensitiveToggle(\n props.caseSensitive ? LineFilterCaseSensitive.caseInsensitive : LineFilterCaseSensitive.caseSensitive\n )\n }\n className={cx(styles.button, props.caseSensitive ? styles.active : null)}\n aria-label={description}\n >\n \n \n Aa\n \n \n \n \n );\n};\n\nconst getStyles = (theme: GrafanaTheme2, variant: IconButtonVariant = 'secondary') => {\n const hoverSize = 16 + theme.spacing.gridSize;\n\n return {\n button: css({\n zIndex: 0,\n position: 'relative',\n margin: `0 ${theme.spacing.x0_5} 0 ${theme.spacing.x0_5}`,\n boxShadow: 'none',\n border: 'none',\n display: 'inline-flex',\n background: 'transparent',\n justifyContent: 'center',\n alignItems: 'center',\n padding: 0,\n color: theme.colors.text.primary,\n\n '&:before': {\n ...getIconButtonBefore(hoverSize, theme),\n position: 'absolute',\n },\n\n '&:hover': {\n '&:before': {\n backgroundColor:\n variant === 'secondary'\n ? theme.colors.action.hover\n : colorManipulator.alpha(theme.colors.text.primary, 0.12),\n opacity: 1,\n },\n },\n\n '&:focus, &:focus-visible': getFocusStyles(theme),\n '&:focus:not(:focus-visible)': getMouseFocusStyles(theme),\n }),\n active: css({\n '&:before': {\n backgroundColor:\n variant === 'secondary' ? theme.colors.action.hover : colorManipulator.alpha(theme.colors.text.primary, 0.12),\n opacity: 1,\n },\n '&:hover': {\n '&:before': {\n backgroundColor: 'none',\n opacity: 0,\n },\n },\n }),\n };\n};\n","import { css } from '@emotion/css';\nimport { Icon, IconButton, Input, useStyles2 } from '@grafana/ui';\nimport React, { HTMLProps } from 'react';\nimport { GrafanaTheme2 } from '@grafana/data';\n\ninterface Props extends Omit, 'width' | 'prefix'> {\n onClear?: () => void;\n suffix?: React.ReactNode;\n prefix?: React.ReactNode;\n width?: number;\n}\n\nexport const LineFilterInput = ({ value, onChange, placeholder, onClear, suffix, width, ...rest }: Props) => {\n const styles = useStyles2(getStyles);\n return (\n \n {onClear && value ? (\n \n ) : undefined}\n {suffix && suffix}\n \n }\n prefix={}\n placeholder={placeholder}\n {...rest}\n />\n );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n suffixWrapper: css({\n gap: theme.spacing(0.5),\n display: 'inline-flex',\n }),\n clearIcon: css({\n cursor: 'pointer',\n }),\n});\n","import React, { useEffect, useState } from 'react';\nimport { RegexIconButton } from './RegexIconButton';\nimport { Button, Field, Select, useStyles2 } from '@grafana/ui';\nimport { testIds } from '../../../services/testIds';\nimport { css, cx } from '@emotion/css';\nimport { LineFilterCaseSensitivityButton } from './LineFilterCaseSensitivityButton';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { LineFilterInput } from '../Breakdowns/LineFilterInput';\nimport { LineFilterProps } from '../../IndexScene/LineFilterVariable';\n\nexport interface LineFilterEditorProps extends LineFilterProps {\n focus: boolean;\n setFocus: (focus: boolean) => void;\n type: 'variable' | 'editor';\n}\n\nconst INITIAL_INPUT_WIDTH = 30;\n\nexport function LineFilterEditor({\n exclusive,\n lineFilter,\n caseSensitive,\n setExclusive,\n regex,\n onInputChange,\n onCaseSensitiveToggle,\n onRegexToggle,\n handleEnter,\n onSubmitLineFilter,\n onClearLineFilter,\n focus,\n setFocus,\n type,\n}: LineFilterEditorProps) {\n const styles = useStyles2((theme) => getStyles(theme, type));\n const [width, setWidth] = useState(INITIAL_INPUT_WIDTH);\n\n function resize(content?: string) {\n // The input width roughly corresponds to char count\n const width = Math.max(content?.length ?? 0, INITIAL_INPUT_WIDTH);\n // We add a few extra because the buttons are absolutely positioned within the input width\n setWidth(width + 9);\n }\n\n useEffect(() => {\n resize(lineFilter);\n }, [lineFilter, focus]);\n\n return (\n
\n {!onSubmitLineFilter && (\n setExclusive(!exclusive)}\n />\n )}\n \n setFocus(true)}\n // onBlur={() => setFocus(false)}\n data-testid={testIds.exploreServiceDetails.searchLogs}\n value={lineFilter}\n className={cx(onSubmitLineFilter ? styles.inputNoBorderRight : undefined, styles.input)}\n onChange={onInputChange}\n suffix={\n \n \n \n \n }\n prefix={null}\n placeholder=\"Search in log lines\"\n onClear={onClearLineFilter}\n onKeyUp={(e) => {\n handleEnter(e, lineFilter);\n resize(lineFilter);\n }}\n />\n \n {onSubmitLineFilter && (\n \n {\n setExclusive(false);\n onSubmitLineFilter();\n }}\n className={styles.includeButton}\n variant={'secondary'}\n fill={'outline'}\n disabled={!lineFilter}\n >\n Include\n \n {\n setExclusive(true);\n onSubmitLineFilter();\n }}\n className={styles.excludeButton}\n variant={'secondary'}\n fill={'outline'}\n disabled={!lineFilter}\n >\n Exclude\n \n \n )}\n
\n );\n}\n\nconst getStyles = (theme: GrafanaTheme2, type: 'variable' | 'editor') => ({\n inputNoBorderRight: css({\n input: {\n borderTopRightRadius: 0,\n borderBottomRightRadius: 0,\n },\n }),\n suffix: css({\n display: 'inline-flex',\n gap: theme.spacing(0.5),\n }),\n removeBtn: css({\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n }),\n buttonWrap: css({\n display: 'flex',\n justifyContent: 'center',\n }),\n includeButton: css({\n borderLeft: 'none',\n borderRadius: 0,\n borderRight: 'none',\n '&[disabled]': {\n borderRight: 'none',\n },\n }),\n excludeButton: css({\n borderRadius: `0 ${theme.shape.radius.default} ${theme.shape.radius.default} 0`,\n borderLeft: 'none',\n '&[disabled]': {\n borderLeft: 'none',\n },\n }),\n submit: css({\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n }),\n select: css({\n label: 'line-filter-exclusion',\n marginLeft: 0,\n paddingLeft: 0,\n height: 'auto',\n borderBottomRightRadius: '0',\n borderTopRightRadius: '0',\n borderRight: 'none',\n minHeight: '30px',\n minWidth: '95px',\n maxWidth: '95px',\n outline: 'none',\n }),\n wrapper: css({\n display: 'flex',\n width: '100%',\n }),\n input: css({\n label: 'line-filter-input-wrapper',\n minWidth: '200px',\n\n // Keeps the input from overflowing container on resize\n maxWidth: type === 'editor' ? 'calc(100vw - 198px)' : 'calc(100vw - 288px)',\n\n input: {\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n fontFamily: 'monospace',\n fontSize: theme.typography.bodySmall.fontSize,\n width: '100%',\n },\n }),\n exclusiveBtn: css({\n marginRight: '1rem',\n }),\n field: css({\n label: 'field',\n flex: '0 1 auto',\n marginBottom: 0,\n }),\n});\n","import { css } from '@emotion/css';\nimport { SceneComponentProps, sceneGraph, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport { Button, InlineField, RadioButtonGroup, Tooltip, useStyles2 } from '@grafana/ui';\nimport React from 'react';\nimport { getLogOption, LogsVisualizationType, setLogOption } from 'services/store';\nimport { LogsListScene } from './LogsListScene';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from 'services/analytics';\nimport { LogsPanelHeaderActions } from '../Table/LogsHeaderActions';\nimport { GrafanaTheme2, LogsSortOrder } from '@grafana/data';\nimport { LogsPanelScene } from './LogsPanelScene';\nimport { locationService } from '@grafana/runtime';\nimport { narrowLogsSortOrder } from '../../services/narrowing';\nimport { logger } from '../../services/logger';\n\ninterface LogOptionsState extends SceneObjectState {\n visualizationType: LogsVisualizationType;\n onChangeVisualizationType: (type: LogsVisualizationType) => void;\n}\n\n/**\n * The options rendered in the logs panel header\n */\nexport class LogOptionsScene extends SceneObjectBase {\n static Component = LogOptionsRenderer;\n\n constructor(state: LogOptionsState) {\n super({\n ...state,\n });\n }\n\n handleWrapLinesChange = (type: boolean) => {\n this.getLogsPanelScene().setState({ wrapLogMessage: type });\n setLogOption('wrapLogMessage', type);\n this.getLogsListScene().setLogsVizOption({ wrapLogMessage: type });\n this.getLogsListScene().setLogsVizOption({ prettifyLogMessage: type });\n };\n\n onChangeLogsSortOrder = (sortOrder: LogsSortOrder) => {\n this.getLogsPanelScene().setState({ sortOrder: sortOrder });\n setLogOption('sortOrder', sortOrder);\n this.getLogsListScene().setLogsVizOption({ sortOrder: sortOrder });\n };\n\n getLogsListScene = () => {\n return sceneGraph.getAncestor(this, LogsListScene);\n };\n\n getLogsPanelScene = () => {\n return sceneGraph.getAncestor(this, LogsPanelScene);\n };\n\n clearDisplayedFields = () => {\n const parentScene = this.getLogsListScene();\n parentScene.clearDisplayedFields();\n reportAppInteraction(\n USER_EVENTS_PAGES.service_details,\n USER_EVENTS_ACTIONS.service_details.logs_clear_displayed_fields\n );\n };\n}\n\nfunction LogOptionsRenderer({ model }: SceneComponentProps) {\n const { onChangeVisualizationType, visualizationType } = model.useState();\n const { wrapLogMessage, sortOrder } = model.getLogsPanelScene().useState();\n const { displayedFields } = model.getLogsListScene().useState();\n const styles = useStyles2(getStyles);\n const wrapLines = wrapLogMessage ?? false;\n\n return (\n
\n {displayedFields.length > 0 && (\n \n \n \n )}\n \n \n \n\n \n \n \n \n
\n );\n}\n\nexport function getLogsPanelSortOrderFromStore() {\n return getLogOption('sortOrder', LogsSortOrder.Descending) as LogsSortOrder;\n}\n\nexport function getLogsPanelSortOrderFromURL() {\n // Since sort order is used to execute queries before the logs panel is instantiated, the scene url state will never influence the query\n // Hacking this for now to manually check the URL search params to override local storage state if set\n const location = locationService.getLocation();\n const search = new URLSearchParams(location.search);\n const sortOrder = search.get('sortOrder');\n\n try {\n if (typeof sortOrder === 'string') {\n const decodedSortOrder = narrowLogsSortOrder(JSON.parse(sortOrder));\n if (decodedSortOrder) {\n return decodedSortOrder;\n }\n }\n } catch (e) {\n // URL Params can be manually changed and it will make JSON.parse() fail.\n logger.error(e, { msg: 'LogOptionsScene(getLogsPanelSortOrderFromURL): unable to parse sortOrder' });\n }\n\n return false;\n}\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n container: css({\n display: 'flex',\n alignItems: 'center',\n gap: theme.spacing(1),\n marginTop: theme.spacing(0.5),\n }),\n buttonGroupWrapper: css({\n margin: 0,\n alignItems: 'center',\n }),\n});\n","import React, { createContext, ReactNode, useCallback, useContext, useEffect, useState } from 'react';\nimport { ActiveFieldMeta, FieldNameMetaStore } from 'Components/Table/TableTypes';\nimport { getBodyName, getTimeName, LogsFrame } from '../../../services/logsFrame';\nimport { logger } from '../../../services/logger';\n\nimport { PLUGIN_ID } from '../../../services/plugin';\nimport { NarrowingError, narrowRecordStringNumber } from '../../../services/narrowing';\n\nconst tableColumnCustomWidths = `${PLUGIN_ID}.tableColumnWidths`;\n\ntype TableColumnsContextType = {\n // the current list of labels from the dataframe combined with UI metadata\n columns: FieldNameMetaStore;\n // The active search results\n filteredColumns?: FieldNameMetaStore;\n // Update the column state\n setColumns(newColumns: FieldNameMetaStore): void;\n // Update search state\n setFilteredColumns(newColumns?: FieldNameMetaStore): void;\n // WIP - sets the visibility of the drawer right now\n visible: boolean;\n setVisible: (v: boolean) => void;\n bodyState: LogLineState;\n setBodyState: (s: LogLineState) => void;\n clearSelectedLine: () => void;\n setColumnWidthMap(map: Record): void;\n columnWidthMap: Record;\n};\n\nexport enum LogLineState {\n text = 'text',\n labels = 'labels',\n auto = 'auto',\n}\n\nconst TableColumnsContext = createContext({\n columnWidthMap: {},\n setColumnWidthMap: () => {},\n columns: {},\n filteredColumns: {},\n setColumns: () => {},\n setFilteredColumns: () => {},\n setVisible: () => false,\n visible: false,\n bodyState: LogLineState.auto,\n setBodyState: () => {},\n clearSelectedLine: () => {},\n});\n\nfunction setDefaultColumns(\n columns: FieldNameMetaStore,\n handleSetColumns: (newColumns: FieldNameMetaStore) => void,\n logsFrame: LogsFrame\n) {\n const pendingColumns = { ...columns };\n\n pendingColumns[getTimeName(logsFrame)] = {\n index: 0,\n active: true,\n type: 'TIME_FIELD',\n percentOfLinesWithLabel: 100,\n cardinality: Infinity,\n };\n pendingColumns[getBodyName(logsFrame)] = {\n index: 1,\n active: true,\n type: 'BODY_FIELD',\n percentOfLinesWithLabel: 100,\n cardinality: Infinity,\n };\n handleSetColumns(pendingColumns);\n}\n\nfunction getColumnWidthsFromLocalStorage(): Record {\n let initialColumnWidths = {};\n const existingWidths = localStorage.getItem(tableColumnCustomWidths);\n if (existingWidths) {\n try {\n initialColumnWidths = narrowRecordStringNumber(JSON.parse(existingWidths));\n if (initialColumnWidths === false) {\n logger.error(\n new NarrowingError('getColumnWidthsFromLocalStorage: unable to validate values in local storage'),\n { msg: 'NarrowingError: error parsing table column widths from local storage' }\n );\n }\n return initialColumnWidths;\n } catch (e) {\n logger.error(e, { msg: 'error parsing table column widths from local storage' });\n }\n }\n return initialColumnWidths;\n}\n\nexport const TableColumnContextProvider = ({\n children,\n initialColumns,\n logsFrame,\n setUrlColumns,\n clearSelectedLine,\n setUrlTableBodyState,\n urlTableBodyState,\n showColumnManagementDrawer,\n isColumnManagementActive,\n}: {\n children: ReactNode;\n initialColumns: FieldNameMetaStore;\n logsFrame: LogsFrame;\n setUrlColumns: (columns: string[]) => void;\n clearSelectedLine: () => void;\n setUrlTableBodyState: (logLineState: LogLineState) => void;\n urlTableBodyState?: LogLineState;\n showColumnManagementDrawer: (isActive: boolean) => void;\n isColumnManagementActive: boolean;\n}) => {\n const [columns, setColumns] = useState(removeExtraColumns(initialColumns));\n const [bodyState, setBodyState] = useState(urlTableBodyState ?? LogLineState.auto);\n const [filteredColumns, setFilteredColumns] = useState(undefined);\n\n const initialColumnWidths = getColumnWidthsFromLocalStorage();\n const [columnWidthMap, setColumnWidthMapState] = useState>(initialColumnWidths);\n const setColumnWidthMap = (map: Record) => {\n localStorage.setItem(tableColumnCustomWidths, JSON.stringify(map));\n setColumnWidthMapState(map);\n };\n\n const getActiveColumns = (columns: FieldNameMetaStore): string[] => {\n let activeColumns: string[] = [];\n Object.keys(columns).forEach((fieldName) => {\n if (columns[fieldName].active && columns[fieldName].index !== undefined) {\n activeColumns.push(fieldName);\n }\n });\n activeColumns.sort((a, b) => {\n // Typescript doesn't seem to know that the indicies we picked in the loop above are only for ActiveFieldMeta, so we're forced to assert\n const colA: ActiveFieldMeta = columns[a] as ActiveFieldMeta;\n const colB: ActiveFieldMeta = columns[b] as ActiveFieldMeta;\n return colA.index - colB.index;\n });\n return activeColumns;\n };\n\n const handleSetColumns = useCallback(\n (newColumns: FieldNameMetaStore) => {\n if (newColumns) {\n const columns = removeExtraColumns(newColumns);\n\n setColumns(columns);\n\n // Sync react state update with scenes url management\n setUrlColumns(getActiveColumns(columns));\n }\n },\n [setUrlColumns]\n );\n\n const handleSetBodyState = useCallback(\n (logLineState: LogLineState) => {\n setBodyState(logLineState);\n\n // Sync change with url state\n setUrlTableBodyState(logLineState);\n },\n [setUrlTableBodyState]\n );\n\n const handleClearSelectedLine = () => {\n clearSelectedLine();\n };\n\n const handleSetVisible = useCallback(\n (isVisible: boolean) => {\n showColumnManagementDrawer(isVisible);\n },\n [showColumnManagementDrawer]\n );\n\n // When the parent component recalculates new columns on dataframe change, we need to update or the column UI will be stale!\n useEffect(() => {\n if (initialColumns) {\n handleSetColumns(initialColumns);\n }\n }, [initialColumns, handleSetColumns]);\n\n // When the columns are updated, we need to check if nothing is selected so we can set the default\n useEffect(() => {\n const activeColumns = getDefaultColumns(columns, logsFrame);\n if (activeColumns?.length) {\n const activeFields = Object.keys(columns).filter((col) => columns[col].active);\n\n // If we're missing all fields, the user must have removed the last column, let's revert back to the default state\n if (activeFields.length === 0) {\n setDefaultColumns(columns, handleSetColumns, logsFrame);\n }\n\n // Reset any local search state\n setFilteredColumns(undefined);\n }\n }, [columns, logsFrame, setFilteredColumns, handleSetColumns]);\n\n return (\n \n {children}\n \n );\n};\n/**\n * Filter out fields that shouldn't be exposed in the UI\n * @param columns\n */\nconst removeExtraColumns = (columns: FieldNameMetaStore): FieldNameMetaStore => {\n // Remove label Types\n if ('labelTypes' in columns) {\n const { labelTypes, ...columnsToSet }: FieldNameMetaStore = {\n ...columns,\n };\n return columnsToSet;\n }\n return columns;\n};\n\nfunction getDefaultColumns(pendingLabelState: FieldNameMetaStore, logsFrame: LogsFrame) {\n if (!logsFrame) {\n logger.warn('missing dataframe, cannot set url state');\n return;\n }\n // Get all active columns and sort by index\n const newColumnsArray = Object.keys(pendingLabelState)\n // Only include active filters\n .filter((key) => pendingLabelState[key]?.active)\n .sort((a, b) => {\n const pa = pendingLabelState[a];\n const pb = pendingLabelState[b];\n if (pa.index !== undefined && pb.index !== undefined) {\n return pa.index - pb.index; // sort by index\n }\n return 0;\n });\n\n const timeField = logsFrame.timeField;\n const bodyField = logsFrame.bodyField;\n\n if ((timeField && bodyField) || newColumnsArray.length) {\n const defaultColumns = [];\n if (timeField?.name) {\n defaultColumns.push(timeField.name);\n }\n if (bodyField?.name) {\n defaultColumns.push(bodyField.name);\n }\n\n // Update url state\n return newColumnsArray.length ? newColumnsArray : defaultColumns;\n }\n\n return [];\n}\n\nexport const useTableColumnContext = () => {\n return useContext(TableColumnsContext);\n};\n","import React, { createContext, ReactNode, useCallback, useContext, useState } from 'react';\n\nexport type CellIndex = {\n fieldName?: string;\n // If the field contains labels (like log line), we need to know which field (line) and which label (e.g. level)\n subFieldName?: string;\n index: number | null;\n numberOfMenuItems?: number;\n};\n\ntype TableCellContextType = {\n cellIndex: CellIndex;\n setActiveCellIndex(cellIndex: CellIndex): void;\n};\n\nconst TableCellContext = createContext({\n cellIndex: { index: null, numberOfMenuItems: 3 },\n setActiveCellIndex: (cellIndex: CellIndex) => false,\n});\n\nexport const TableCellContextProvider = ({ children }: { children: ReactNode }) => {\n const [cellActive, setCellActive] = useState({ index: null });\n\n const handleCellActive = useCallback((cellIndex: CellIndex) => {\n setCellActive(cellIndex);\n }, []);\n\n return (\n \n {children}\n \n );\n};\n\nexport const useTableCellContext = () => {\n return useContext(TableCellContext);\n};\n","import React, { createContext, ReactNode, useCallback, useContext, useState } from 'react';\n\ntype TableHeaderContextType = {\n isHeaderMenuActive: boolean;\n setHeaderMenuActive: (isHeaderMenuActive: boolean) => void;\n};\n\nconst TableHeaderContext = createContext({\n isHeaderMenuActive: false,\n setHeaderMenuActive: (isHeaderMenuActive: boolean) => false,\n});\n\nexport const TableHeaderContextProvider = ({ children }: { children: ReactNode }) => {\n const [isHeaderMenuActive, setHeaderMenuActive] = useState(false);\n\n const handleisHeaderMenuActive = useCallback((isHeaderMenuActive: boolean) => {\n setHeaderMenuActive(isHeaderMenuActive);\n }, []);\n\n return (\n \n {children}\n \n );\n};\n\nexport const useTableHeaderContext = () => {\n return useContext(TableHeaderContext);\n};\n","import React from 'react';\nimport { css } from '@emotion/css';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { Field, Input, useTheme2 } from '@grafana/ui';\n\nimport { useTableColumnContext } from 'Components/Table/Context/TableColumnsContext';\nimport { FieldNameMetaStore } from 'Components/Table/TableTypes';\nimport { reportInteraction } from '@grafana/runtime';\nimport { debouncedFuzzySearch } from '../../../services/search';\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n searchWrap: css({\n padding: `${theme.spacing(0.4)} 0 ${theme.spacing(0.4)} ${theme.spacing(0.4)}`,\n }),\n };\n}\n\ninterface LogsColumnSearchProps {\n searchValue: string;\n setSearchValue: (value: string) => void;\n}\nexport function LogsColumnSearch({ searchValue, setSearchValue }: LogsColumnSearchProps) {\n const { columns, setFilteredColumns } = useTableColumnContext();\n\n // uFuzzy search dispatcher, adds any matches to the local state\n const dispatcher = (data: string[][]) => {\n const matches = data[0];\n let newColumnsWithMeta: FieldNameMetaStore = {};\n let numberOfResults = 0;\n matches.forEach((match) => {\n if (match in columns) {\n newColumnsWithMeta[match] = columns[match];\n numberOfResults++;\n }\n });\n setFilteredColumns(newColumnsWithMeta);\n searchFilterEvent(numberOfResults);\n };\n\n // uFuzzy search\n const search = (needle: string) => {\n debouncedFuzzySearch(Object.keys(columns), needle, dispatcher);\n };\n\n // onChange handler for search input\n const onSearchInputChange = (e: React.FormEvent) => {\n const value = e.currentTarget?.value;\n setSearchValue(value);\n if (value) {\n search(value);\n } else {\n // If the search input is empty, reset the local search state.\n setFilteredColumns(undefined);\n }\n };\n\n const theme = useTheme2();\n const styles = getStyles(theme);\n return (\n \n \n \n );\n}\n\nfunction searchFilterEvent(searchResultCount: number) {\n reportInteraction('grafana_logs_app_table_text_search_result_count', {\n resultCount: searchResultCount,\n });\n}\n","import React from 'react';\nimport { css } from '@emotion/css';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { useTheme2 } from '@grafana/ui';\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n empty: css({\n marginBottom: theme.spacing(2),\n marginLeft: theme.spacing(1.75),\n fontSize: theme.typography.fontSize,\n }),\n };\n}\n\nexport function LogsTableEmptyFields() {\n const theme = useTheme2();\n const styles = getStyles(theme);\n return
No fields
;\n}\n","import React from 'react';\nimport { css } from '@emotion/css';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { Checkbox, Icon, useTheme2 } from '@grafana/ui';\n\nimport { FieldNameMeta } from '../TableTypes';\n\nexport function LogsTableNavField(props: {\n label: string;\n onChange: () => void;\n labels: Record;\n draggable?: boolean;\n showCount?: boolean;\n setColumnWidthMap?: (map: Record) => void;\n columnWidthMap?: Record;\n}): React.JSX.Element | null {\n const theme = useTheme2();\n const styles = getStyles(theme);\n\n if (props.labels[props.label]) {\n return (\n <>\n
\n \n {props.showCount && (\n
\n
{props.labels[props.label]?.percentOfLinesWithLabel}%
\n
\n {props.labels[props.label]?.cardinality}{' '}\n {props.labels[props.label]?.cardinality === 1 ? 'value' : 'values'}\n
\n
\n )}\n {props.columnWidthMap && props.setColumnWidthMap && props.columnWidthMap?.[props.label] !== undefined && (\n {\n const { [props.label]: omit, ...map } = { ...props.columnWidthMap };\n props.setColumnWidthMap?.(map);\n }}\n title={'Clear column width override'}\n className={styles.customWidthWrap}\n >\n Reset column width\n \n
\n )}\n \n {props.draggable && (\n \n )}\n \n );\n }\n\n return null;\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n dragIcon: css({\n cursor: 'drag',\n marginLeft: theme.spacing(1),\n opacity: 0.4,\n }),\n labelCount: css({\n marginLeft: theme.spacing(0.5),\n marginRight: theme.spacing(0.5),\n appearance: 'none',\n background: 'none',\n border: 'none',\n fontSize: theme.typography.pxToRem(11),\n opacity: 0.6,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'self-end',\n }),\n contentWrap: css({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n width: '100%',\n }),\n customWidthWrap: css({\n fontSize: theme.typography.bodySmall.fontSize,\n cursor: 'pointer',\n }),\n // Hide text that overflows, had to select elements within the Checkbox component, so this is a bit fragile\n checkboxLabel: css({\n '> span': {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n display: 'block',\n maxWidth: '100%',\n },\n }),\n };\n}\n","import React, { ReactElement } from 'react';\nimport { DragDropContext, Draggable, DraggableProvided, Droppable, DropResult } from '@hello-pangea/dnd';\nimport { css, cx } from '@emotion/css';\n\nimport { GrafanaTheme2 } from '@grafana/data/';\nimport { useTheme2 } from '@grafana/ui/';\n\nimport { FieldNameMeta, FieldNameMetaStore } from '../TableTypes';\n\nimport { LogsTableEmptyFields } from './LogsTableEmptyFields';\nimport { LogsTableNavField } from './LogsTableNavField';\nimport { useTableColumnContext } from 'Components/Table/Context/TableColumnsContext';\n\nexport function getLogsFieldsStyles(theme: GrafanaTheme2) {\n return {\n wrap: css({\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1),\n display: 'flex',\n background: theme.colors.background.primary,\n }),\n dragging: css({\n background: theme.colors.background.secondary,\n }),\n columnWrapper: css({\n marginBottom: theme.spacing(1.5),\n // need some space or the outline of the checkbox is cut off\n paddingLeft: theme.spacing(0.5),\n }),\n };\n}\n\nfunction sortLabels(labels: Record) {\n return (a: string, b: string) => {\n const la = labels[a];\n const lb = labels[b];\n\n // Sort by index\n if (la.index != null && lb.index != null) {\n return la.index - lb.index;\n }\n\n // otherwise do not sort\n return 0;\n };\n}\n\nexport const LogsTableActiveFields = (props: {\n labels: Record;\n valueFilter: (value: string) => boolean;\n toggleColumn: (columnName: string) => void;\n reorderColumn: (cols: FieldNameMetaStore, sourceIndex: number, destinationIndex: number) => void;\n id: string;\n}): ReactElement => {\n const { columnWidthMap, setColumnWidthMap } = useTableColumnContext();\n const { reorderColumn, labels, valueFilter, toggleColumn } = props;\n const theme = useTheme2();\n const { columns } = useTableColumnContext();\n const styles = getLogsFieldsStyles(theme);\n const labelKeys = Object.keys(labels).filter((labelName) => valueFilter(labelName));\n\n const onDragEnd = (result: DropResult) => {\n if (!result.destination) {\n return;\n }\n reorderColumn(columns, result.source.index, result.destination.index);\n };\n\n const renderTitle = (labelName: string) => {\n const label = labels[labelName];\n if (label) {\n return `${labelName} appears in ${label?.percentOfLinesWithLabel}% of log lines`;\n }\n\n return undefined;\n };\n\n if (labelKeys.length) {\n return (\n \n \n {(provided) => (\n
\n {labelKeys.sort(sortLabels(labels)).map((labelName, index) => (\n \n {(provided: DraggableProvided, snapshot) => (\n \n toggleColumn(labelName)}\n labels={labels}\n draggable={true}\n />\n
\n )}\n \n ))}\n {provided.placeholder}\n \n )}\n
\n
\n );\n }\n\n return ;\n};\n","import React from 'react';\nimport { css } from '@emotion/css';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { useTheme2 } from '@grafana/ui';\n\nimport { FieldNameMeta } from '../TableTypes';\n\nimport { LogsTableEmptyFields } from './LogsTableEmptyFields';\nimport { LogsTableNavField } from './LogsTableNavField';\n\nconst collator = new Intl.Collator(undefined, { sensitivity: 'base' });\n\nfunction getLogsFieldsStyles(theme: GrafanaTheme2) {\n return {\n wrap: css({\n marginTop: theme.spacing(0.25),\n marginBottom: theme.spacing(0.25),\n display: 'flex',\n background: theme.colors.background.primary,\n borderBottom: `1px solid ${theme.colors.background.canvas}`,\n }),\n dragging: css({\n background: theme.colors.background.secondary,\n }),\n columnWrapper: css({\n marginBottom: theme.spacing(1.5),\n // need some space or the outline of the checkbox is cut off\n paddingLeft: theme.spacing(0.5),\n }),\n };\n}\n\nfunction sortLabels(labels: Record) {\n return (a: string, b: string) => {\n const la = labels[a];\n const lb = labels[b];\n\n // ...sort by type and alphabetically\n if (la != null && lb != null) {\n return (\n Number(lb.type === 'TIME_FIELD') - Number(la.type === 'TIME_FIELD') ||\n Number(lb.type === 'BODY_FIELD') - Number(la.type === 'BODY_FIELD') ||\n collator.compare(a, b)\n );\n }\n\n // otherwise do not sort\n return 0;\n };\n}\n\nexport const LogsTableAvailableFields = (props: {\n labels: Record;\n valueFilter: (value: string) => boolean;\n toggleColumn: (columnName: string) => void;\n}): React.ReactElement => {\n const { labels, valueFilter, toggleColumn } = props;\n const theme = useTheme2();\n const styles = getLogsFieldsStyles(theme);\n const labelKeys = Object.keys(labels).filter((labelName) => valueFilter(labelName));\n if (labelKeys.length) {\n // Otherwise show list with a hardcoded order\n return (\n
\n {labelKeys.sort(sortLabels(labels)).map((labelName) => (\n \n toggleColumn(labelName)}\n labels={labels}\n />\n
\n ))}\n \n );\n }\n\n return ;\n};\n","import React from 'react';\nimport { css } from '@emotion/css';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { useTheme2 } from '@grafana/ui';\n\nimport { LogsTableActiveFields } from 'Components/Table/ColumnSelection/LogsTableActiveFields';\nimport { LogsTableAvailableFields } from 'Components/Table/ColumnSelection/LogsTableAvailableFields';\n\nimport { FieldNameMeta, FieldNameMetaStore } from '../TableTypes';\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n sidebarWrap: css({\n overflowY: 'scroll',\n height: 'calc(100% - 50px)',\n /* Hide scrollbar for Chrome, Safari, and Opera */\n '&::-webkit-scrollbar': {\n display: 'none',\n },\n /* Hide scrollbar for Firefox */\n scrollbarWidth: 'none',\n }),\n columnHeaderButton: css({\n appearance: 'none',\n background: 'none',\n border: 'none',\n fontSize: theme.typography.pxToRem(11),\n }),\n columnHeader: css({\n display: 'flex',\n justifyContent: 'space-between',\n fontSize: theme.typography.h6.fontSize,\n background: theme.colors.background.secondary,\n position: 'sticky',\n top: 0,\n left: 0,\n paddingTop: theme.spacing(0.75),\n paddingRight: theme.spacing(0.75),\n paddingBottom: theme.spacing(0.75),\n paddingLeft: theme.spacing(1.5),\n zIndex: 3,\n marginBottom: theme.spacing(2),\n }),\n };\n}\n\nexport const LogsTableMultiSelect = (props: {\n toggleColumn: (columnName: string) => void;\n filteredColumnsWithMeta: Record | undefined;\n columnsWithMeta: Record;\n clear: () => void;\n reorderColumn: (cols: FieldNameMetaStore, oldIndex: number, newIndex: number) => void;\n}) => {\n const theme = useTheme2();\n const styles = getStyles(theme);\n\n return (\n
\n {/* Sidebar columns */}\n <>\n
\n Selected fields\n \n
\n props.columnsWithMeta[value]?.active ?? false}\n id={'selected-fields'}\n />\n\n
Fields
\n !props.columnsWithMeta[value]?.active}\n />\n \n
\n );\n};\n","import React, { useState } from 'react';\n\nimport { ClickOutsideWrapper } from '@grafana/ui';\n\nimport { useTableColumnContext } from 'Components/Table/Context/TableColumnsContext';\nimport { LogsColumnSearch } from 'Components/Table/ColumnSelection/LogsColumnSearch';\nimport { LogsTableMultiSelect } from 'Components/Table/ColumnSelection/LogsTableMultiSelect';\n\nimport { FieldNameMetaStore } from '../TableTypes';\nimport { reportInteraction } from '@grafana/runtime';\nimport { logger } from '../../../services/logger';\n\nexport function getReorderColumn(setColumns: (cols: FieldNameMetaStore) => void) {\n return (columns: FieldNameMetaStore, sourceIndex: number, destinationIndex: number) => {\n if (sourceIndex === destinationIndex) {\n return;\n }\n\n const pendingLabelState = { ...columns };\n const keys = Object.keys(pendingLabelState)\n .filter((key) => pendingLabelState[key].active)\n .map((key) => ({\n fieldName: key,\n index: pendingLabelState[key].index ?? 0,\n }))\n .sort((a, b) => a.index - b.index);\n\n const [source] = keys.splice(sourceIndex, 1);\n keys.splice(destinationIndex, 0, source);\n\n keys\n .filter((key) => key !== undefined)\n .forEach((key, index) => {\n pendingLabelState[key.fieldName].index = index;\n });\n\n // Set local state\n setColumns(pendingLabelState);\n };\n}\n\nfunction logError(columnName: string, columns: FieldNameMetaStore) {\n let logContext;\n try {\n logContext = {\n columns: JSON.stringify(columns),\n columnName: columnName,\n };\n } catch (e) {\n logContext = {\n msg: 'Table: ColumnSelectionDrawerWrap failed to encode context',\n columnName: columnName,\n };\n }\n logger.warn('failed to get column', logContext);\n}\n\nexport function ColumnSelectionDrawerWrap() {\n const { columns, setColumns, setVisible, filteredColumns, setFilteredColumns } = useTableColumnContext();\n const [searchValue, setSearchValue] = useState('');\n const toggleColumn = (columnName: string) => {\n if (!columns || !(columnName in columns)) {\n logError(columnName, columns);\n return;\n }\n\n const length = Object.keys(columns).filter((c) => columns[c].active).length;\n const isActive = !columns[columnName].active ? true : undefined;\n\n let pendingLabelState: FieldNameMetaStore;\n if (isActive) {\n pendingLabelState = {\n ...columns,\n [columnName]: {\n ...columns[columnName],\n active: isActive,\n index: length,\n },\n };\n } else {\n pendingLabelState = {\n ...columns,\n [columnName]: {\n ...columns[columnName],\n active: false,\n index: undefined,\n },\n };\n }\n\n // Analytics\n columnFilterEvent(columnName);\n\n // Set local state\n setColumns(pendingLabelState);\n\n // If user is currently filtering, update filtered state\n if (filteredColumns) {\n const active = !filteredColumns[columnName]?.active;\n let pendingFilteredLabelState: FieldNameMetaStore;\n if (active) {\n pendingFilteredLabelState = {\n ...filteredColumns,\n [columnName]: {\n ...filteredColumns[columnName],\n active: active,\n index: length,\n },\n };\n } else {\n pendingFilteredLabelState = {\n ...filteredColumns,\n [columnName]: {\n ...filteredColumns[columnName],\n active: false,\n index: undefined,\n },\n };\n }\n\n setFilteredColumns(pendingFilteredLabelState);\n setSearchValue('');\n }\n };\n\n const reorderColumn = getReorderColumn(setColumns);\n\n const clearSelection = () => {\n const pendingLabelState = { ...columns };\n let index = 0;\n Object.keys(pendingLabelState).forEach((key) => {\n const isDefaultField =\n pendingLabelState[key].type === 'BODY_FIELD' || pendingLabelState[key].type === 'TIME_FIELD';\n // after reset the only active fields are the special time and body fields\n pendingLabelState[key].active = isDefaultField;\n // reset the index\n pendingLabelState[key].index = isDefaultField ? index++ : undefined;\n });\n\n setColumns(pendingLabelState);\n setFilteredColumns(pendingLabelState);\n setSearchValue('');\n };\n\n // Tracking event for filtering columns\n function columnFilterEvent(columnName: string) {\n if (columns) {\n const newState = !columns[columnName]?.active;\n const priorActiveCount = Object.keys(columns).filter((column) => columns[column]?.active)?.length;\n const event = {\n columnAction: newState ? 'add' : 'remove',\n columnCount: newState ? priorActiveCount + 1 : priorActiveCount - 1,\n };\n reportInteraction('grafana_logs_app_table_column_filter_clicked', event);\n }\n }\n\n return (\n {\n setVisible(false);\n setFilteredColumns(columns);\n setSearchValue('');\n }}\n useCapture={true}\n >\n \n \n \n );\n}\n","import React, { PropsWithChildren } from 'react';\nimport { css, cx } from '@emotion/css';\n\nimport { Field, GrafanaTheme2 } from '@grafana/data';\nimport { useTheme2 } from '@grafana/ui';\n\nimport { useTableCellContext } from 'Components/Table/Context/TableCellContext';\n\ninterface DefaultCellWrapComponentProps {}\n\ninterface Props extends PropsWithChildren {\n rowIndex: number;\n field: Field;\n onClick?: () => void;\n onMouseIn?: () => void;\n onMouseOut?: () => void;\n}\n\nconst getStyles = (theme: GrafanaTheme2, bgColor?: string, numberOfMenuItems?: number) => ({\n active: css({\n // Save 20px for context menu\n height: `calc(${100}% + 36px)`,\n zIndex: theme.zIndex.tooltip,\n background: 'transparent',\n }),\n wrap: css({\n position: 'absolute',\n overflowX: 'hidden',\n whiteSpace: 'nowrap',\n width: '100%',\n height: '100%',\n left: 0,\n top: 0,\n margin: 'auto',\n background: bgColor ?? 'transparent',\n }),\n});\n\nexport const DefaultCellWrapComponent = (props: Props) => {\n return (\n \n {props.children}\n \n );\n};\n\nconst CellWrapInnerComponent = (props: Props) => {\n const theme = useTheme2();\n const cellState = useTableCellContext();\n const styles = getStyles(theme, undefined, cellState.cellIndex?.numberOfMenuItems);\n\n return (\n \n {props.children}\n \n );\n};\n","import React, { createContext, ReactNode, useContext } from 'react';\nimport { LogsFrame } from '../../../services/logsFrame';\nimport { AdHocVariableFilter, TimeRange } from '@grafana/data';\nimport { SelectedTableRow } from '../LogLineCellComponent';\n\nexport type Label = { name: string; values: string[]; indexed: boolean };\n\nexport type QueryContextType = {\n logsFrame: LogsFrame | null;\n addFilter: (filter: AdHocVariableFilter) => void;\n selectedLine?: SelectedTableRow;\n timeRange?: TimeRange;\n};\n\nexport const initialState = {\n logsFrame: null,\n addFilter: (filter: AdHocVariableFilter) => {},\n timeRange: undefined,\n selectedLine: undefined,\n};\n\nexport const QueryContext = createContext(initialState);\n\nexport const QueryContextProvider = ({\n children,\n logsFrame,\n addFilter,\n selectedLine,\n timeRange,\n}: {\n children: ReactNode;\n logsFrame: LogsFrame;\n addFilter: (filter: AdHocVariableFilter) => void;\n selectedLine?: SelectedTableRow;\n timeRange?: TimeRange;\n}) => {\n return (\n \n {children}\n \n );\n};\n\nexport const useQueryContext = () => {\n return useContext(QueryContext);\n};\n","import React from 'react';\nimport { css } from '@emotion/css';\n\nimport { GrafanaTheme2, LinkModel } from '@grafana/data';\nimport { Icon, useTheme2 } from '@grafana/ui';\nimport { useQueryContext } from './Context/QueryContext';\n\nimport { FilterOp } from '../../services/filterTypes';\n\ninterface Props {\n fieldType?: 'derived';\n label: string;\n value: string;\n showColumn?: () => void;\n links?: LinkModel[];\n pillType: 'logPill' | 'column';\n}\n\nconst getStyles = (theme: GrafanaTheme2, pillType: 'logPill' | 'column') => ({\n menu: css({\n position: 'relative',\n paddingRight: '5px',\n display: 'flex',\n minWidth: '60px',\n justifyContent: 'flex-start',\n }),\n menuItemsWrap: css({\n boxShadow: theme.shadows.z3,\n display: 'flex',\n background: theme.colors.background.secondary,\n padding: '5px 0',\n marginLeft: pillType === 'column' ? '5px' : undefined,\n }),\n menuItem: css({\n overflow: 'auto',\n textOverflow: 'ellipsis',\n cursor: 'pointer',\n paddingLeft: '5px',\n paddingRight: '5px',\n display: 'flex',\n alignItems: 'center',\n }),\n});\n\nexport const CellContextMenu = (props: Props) => {\n const theme = useTheme2();\n const styles = getStyles(theme, props.pillType);\n const { addFilter } = useQueryContext();\n\n return (\n \n \n {props.fieldType !== 'derived' && (\n <>\n {\n addFilter({\n key: props.label,\n value: props.value,\n operator: FilterOp.Equal,\n });\n }}\n >\n \n \n {\n addFilter({\n key: props.label,\n value: props.value,\n operator: FilterOp.NotEqual,\n });\n }}\n >\n \n \n \n )}\n\n {props.showColumn && (\n
\n \n \n \n \n
\n )}\n\n {props.links &&\n props.links.map((link) => {\n return (\n {\n window.open(link.href, '_blank');\n }}\n key={link.href}\n >\n \n \n );\n })}\n
\n
\n );\n};\n","export const LEVEL_NAME = 'detected_level';\n","import React, { ReactElement } from 'react';\nimport { css, cx } from '@emotion/css';\n\nimport { Field, FieldType, GrafanaTheme2 } from '@grafana/data';\nimport { useTheme2 } from '@grafana/ui';\n\nimport { useTableCellContext } from 'Components/Table/Context/TableCellContext';\nimport { CellContextMenu } from 'Components/Table/CellContextMenu';\nimport { getFieldMappings } from 'Components/Table/Table';\nimport { LEVEL_NAME } from './constants';\n\ninterface DefaultPillProps {\n label: string;\n showColumns?: () => void;\n value: string | unknown | ReactElement;\n rowIndex: number;\n field: Field;\n}\n\nconst getStyles = (theme: GrafanaTheme2, levelColor?: string) => ({\n activePillWrap: css({}),\n pillWrap: css({\n width: '100%',\n }),\n pill: css({\n border: `1px solid ${theme.colors.border.weak}`,\n '&:hover': {\n border: `1px solid ${theme.colors.border.strong}`,\n },\n marginRight: '5px',\n marginTop: '4px',\n marginLeft: '5px',\n padding: '2px 5px',\n position: 'relative',\n display: 'inline-flex',\n flexDirection: 'row-reverse',\n backgroundColor: 'transparent',\n\n paddingLeft: levelColor ? `${theme.spacing(0.75)}` : `2px`,\n\n '&:before': {\n content: '\"\"',\n position: 'absolute',\n left: 0,\n top: 0,\n height: '100%',\n width: `${theme.spacing(0.25)}`,\n backgroundColor: levelColor,\n },\n }),\n menu: css({\n width: '100%',\n }),\n menuItem: css({\n overflow: 'auto',\n textOverflow: 'ellipsis',\n }),\n menuItemText: css({\n width: '65px',\n display: 'inline-block',\n }),\n});\nexport const DefaultPill = (props: DefaultPillProps) => {\n const { label, value } = props;\n const theme = useTheme2();\n const { cellIndex } = useTableCellContext();\n let levelColor;\n\n if (label === LEVEL_NAME) {\n const mappings = getFieldMappings().options;\n if (typeof value === 'string' && value in mappings) {\n levelColor = mappings[value].color;\n }\n }\n\n const isPillActive = cellIndex.index === props.rowIndex && props.field.name === cellIndex.fieldName;\n\n const styles = getStyles(theme, levelColor);\n return (\n
\n {!!value && (\n <>\n \n <>{value}\n \n {isPillActive && typeof value === 'string' && props.field.type !== FieldType.time && (\n \n )}\n \n )}\n
\n );\n};\n","import { ClipboardButton, IconButton, Modal, useTheme2 } from '@grafana/ui';\nimport React, { useCallback, useState } from 'react';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { css } from '@emotion/css';\nimport { useQueryContext } from 'Components/Table/Context/QueryContext';\nimport { testIds } from '../../services/testIds';\nimport { generateLogShortlink } from 'services/text';\n\nexport const getStyles = (theme: GrafanaTheme2, bgColor?: string) => ({\n clipboardButton: css({\n padding: 0,\n height: '100%',\n lineHeight: '1',\n width: '20px',\n }),\n inspectButton: css({\n display: 'inline-flex',\n verticalAlign: 'middle',\n margin: 0,\n overflow: 'hidden',\n borderRadius: '5px',\n }),\n iconWrapper: css({\n height: '35px',\n position: 'sticky',\n left: 0,\n display: 'flex',\n background: theme.colors.background.secondary,\n padding: `0 ${theme.spacing(0.5)}`,\n zIndex: 1,\n boxShadow: theme.shadows.z2,\n }),\n inspect: css({\n padding: '5px 3px',\n\n '&:hover': {\n color: theme.colors.text.link,\n cursor: 'pointer',\n },\n }),\n});\nexport function LineActionIcons(props: { rowIndex: number; value: unknown }) {\n const theme = useTheme2();\n const styles = getStyles(theme);\n const { logsFrame, timeRange } = useQueryContext();\n const logId = logsFrame?.idField?.values[props.rowIndex];\n const lineValue = logsFrame?.bodyField.values[props.rowIndex];\n const [isInspecting, setIsInspecting] = useState(false);\n const getText = useCallback(() => {\n if (timeRange) {\n return generateLogShortlink('selectedLine', { id: logId, row: props.rowIndex }, timeRange);\n }\n return '';\n }, [logId, props.rowIndex, timeRange]);\n return (\n <>\n
\n
\n setIsInspecting(true)}\n tabIndex={0}\n />\n
\n
\n \n
\n
\n <>\n {isInspecting && (\n setIsInspecting(false)} isOpen={true} title=\"Inspect value\">\n
{lineValue}
\n \n props.value as string}>\n Copy to Clipboard\n \n \n
\n )}\n \n \n );\n}\n","import React, { ReactElement } from 'react';\nimport { Row } from 'react-table';\nimport { css } from '@emotion/css';\n\nimport { FieldType, formattedValueToString, GrafanaTheme2 } from '@grafana/data';\nimport { CustomCellRendererProps, DataLinksContextMenu, getCellLinks, useTheme2 } from '@grafana/ui';\n\nimport { useTableCellContext } from 'Components/Table/Context/TableCellContext';\nimport { useTableColumnContext } from 'Components/Table/Context/TableColumnsContext';\nimport { DefaultCellWrapComponent } from 'Components/Table/DefaultCellWrapComponent';\nimport { DefaultPill } from 'Components/Table/DefaultPill';\nimport { LineActionIcons } from 'Components/Table/LineActionIcons';\n\nconst getStyles = (theme: GrafanaTheme2, fieldType?: FieldType) => ({\n flexWrap: css({\n display: 'flex',\n alignItems: 'flex-start',\n flexDirection: fieldType === FieldType.number ? 'row-reverse' : 'row',\n textAlign: fieldType === FieldType.number ? 'right' : 'left',\n }),\n content: css({\n position: 'relative',\n overflow: 'hidden',\n display: 'flex',\n height: '100%',\n }),\n linkWrapper: css({\n color: theme.colors.text.link,\n marginTop: '7px',\n marginLeft: '7px',\n '&:hover': {\n textDecoration: 'underline',\n },\n }),\n});\n\ninterface DefaultCellComponentCustomProps {\n fieldIndex: number;\n}\nexport const DefaultCellComponent = (props: CustomCellRendererProps & DefaultCellComponentCustomProps) => {\n let value = props.value;\n const field = props.field;\n const displayValue = field.display!(value);\n const theme = useTheme2();\n const styles = getStyles(theme, props.field.type);\n const { setVisible } = useTableColumnContext();\n const { cellIndex, setActiveCellIndex } = useTableCellContext();\n\n // We don't get back the full react.table row here, but the calling function only uses the index, which are in `CustomCellRendererProps`\n const row = { index: props.rowIndex } as Row;\n const hasLinks = Boolean(getCellLinks(props.field, row)?.length);\n\n if (value === null) {\n return <>;\n }\n\n if (React.isValidElement(props.value)) {\n value = props.value;\n } else if (typeof value === 'object') {\n value = JSON.stringify(props.value);\n } else {\n value = formattedValueToString(displayValue);\n }\n\n const renderValue = (value: string | unknown | ReactElement, label: string) => {\n return (\n setVisible(true)}\n label={label}\n value={value}\n />\n );\n };\n\n return (\n {\n if (props.rowIndex === cellIndex.index && props.field.name === cellIndex.fieldName) {\n return setActiveCellIndex({ index: null });\n }\n return setActiveCellIndex({ index: props.rowIndex, fieldName: props.field.name, numberOfMenuItems: 3 });\n }}\n field={props.field}\n rowIndex={props.rowIndex}\n >\n
\n {props.fieldIndex === 0 && }\n
\n\n {!hasLinks && renderValue(value, field.name)}\n\n {hasLinks && field.getLinks && (\n getCellLinks(field, row) ?? []}>\n {(api) => {\n if (api.openMenu) {\n return (\n
\n <>{value}\n
\n );\n } else {\n return (\n
\n <>{value}\n
\n );\n }\n }}\n
\n )}\n
\n \n );\n};\n","import React, { useMemo } from 'react';\nimport { Row } from 'react-table';\nimport { css, cx } from '@emotion/css';\n\nimport { DataFrame, Field, FieldType, getLinksSupplier, GrafanaTheme2, LinkModel } from '@grafana/data';\nimport { getCellLinks, useTheme2 } from '@grafana/ui';\n\nimport { useTableCellContext } from 'Components/Table/Context/TableCellContext';\nimport { CellContextMenu } from 'Components/Table/CellContextMenu';\nimport { getFieldMappings } from 'Components/Table/Table';\nimport { FieldNameMetaStore } from 'Components/Table/TableTypes';\nimport { useTableColumnContext } from 'Components/Table/Context/TableColumnsContext';\nimport { getTemplateSrv } from '@grafana/runtime';\nimport { LEVEL_NAME } from './constants';\n\ninterface LogLinePillProps {\n originalField?: Field;\n field?: Field;\n columns: FieldNameMetaStore;\n label: string;\n showColumns: () => void;\n rowIndex: number;\n frame: DataFrame;\n originalFrame: DataFrame | undefined;\n isDerivedField: boolean;\n value: string;\n}\n\nconst getStyles = (theme: GrafanaTheme2, levelColor?: string) => ({\n pill: css({\n flex: '0 1 auto',\n marginLeft: theme.spacing(0.5),\n marginRight: theme.spacing(0.5),\n padding: `${theme.spacing(0.25)} ${theme.spacing(0.25)}`,\n position: 'relative',\n display: 'inline-flex',\n flexDirection: 'column',\n marginTop: theme.spacing(0.5),\n }),\n activePill: css({}),\n valueWrap: css({\n border: `1px solid ${theme.colors.background.secondary}`,\n boxShadow: `-2px 2px 5px 0px ${theme.colors.background.secondary}`,\n backgroundColor: 'transparent',\n cursor: 'pointer',\n position: 'relative',\n\n paddingRight: `${theme.spacing(0.5)}`,\n paddingLeft: levelColor ? `${theme.spacing(0.75)}` : `${theme.spacing(0.5)}`,\n\n '&:before': {\n content: '\"\"',\n position: 'absolute',\n left: 0,\n top: 0,\n height: '100%',\n width: `${theme.spacing(0.25)}`,\n backgroundColor: levelColor,\n },\n\n '&:hover': {\n border: `1px solid ${theme.colors.border.strong}`,\n },\n }),\n});\n\nfunction LogLinePillValue(props: {\n fieldType?: 'derived';\n onClick: () => void;\n label: string;\n value: string;\n menuActive: boolean;\n onClickAdd: () => void;\n links?: LinkModel[];\n}) {\n const theme = useTheme2();\n\n let levelColor;\n if (props.label === LEVEL_NAME) {\n const mappings = getFieldMappings().options;\n if (props.value in mappings) {\n levelColor = mappings[props.value].color;\n }\n }\n\n const styles = getStyles(theme, levelColor);\n\n return (\n \n \n {props.label}={props.value}\n \n {props.menuActive && (\n \n )}\n \n );\n}\n\nexport const LogLinePill = (props: LogLinePillProps) => {\n const { label } = props;\n const { cellIndex, setActiveCellIndex } = useTableCellContext();\n const { columns, setColumns } = useTableColumnContext();\n const value = props.value;\n const templateSrv = getTemplateSrv();\n const replace = useMemo(() => templateSrv.replace.bind(templateSrv), [templateSrv]);\n\n // Need untransformed frame for links?\n const field = props.field;\n\n if (!field || field?.type === FieldType.other) {\n return null;\n }\n const row = { index: props.rowIndex } as Row;\n\n if (props.originalField && props.isDerivedField && props.originalFrame) {\n props.originalField.getLinks = getLinksSupplier(props.originalFrame, props.originalField, {}, replace);\n }\n\n const links = props.originalField && getCellLinks(props.originalField, row);\n\n /**\n * This Could be moved?\n * Callback called by the pill context menu\n * @param fieldName\n */\n const addFieldToColumns = (fieldName: string) => {\n const pendingColumns = { ...columns };\n\n const length = Object.keys(columns).filter((c) => columns[c].active).length;\n if (pendingColumns[fieldName].active) {\n pendingColumns[fieldName].active = false;\n pendingColumns[fieldName].index = undefined;\n } else {\n pendingColumns[fieldName].active = true;\n pendingColumns[fieldName].index = length;\n }\n\n setColumns(pendingColumns);\n };\n\n return (\n {\n if (\n props.rowIndex === cellIndex.index &&\n field.name === cellIndex.fieldName &&\n label === cellIndex.subFieldName\n ) {\n return setActiveCellIndex({ index: null });\n }\n\n return setActiveCellIndex({\n index: props.rowIndex,\n fieldName: field.name,\n subFieldName: label,\n numberOfMenuItems: props.isDerivedField ? 2 : 3,\n });\n }}\n menuActive={\n cellIndex.index === props.rowIndex && cellIndex.fieldName === field.name && cellIndex.subFieldName === label\n }\n fieldType={props.isDerivedField ? 'derived' : undefined}\n label={label}\n value={value}\n onClickAdd={() => addFieldToColumns(label)}\n links={links}\n />\n );\n};\n","import { Icon, useTheme2 } from '@grafana/ui';\nimport React from 'react';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { css } from '@emotion/css';\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n scroller: css`\n position: absolute;\n right: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 20px;\n top: 32px;\n margin-top: -24px;\n // For some reason clicking on this button causes text to be selected in the following row\n user-select: none;\n `,\n scrollLeft: css`\n cursor: pointer;\n background: ${theme.colors.background.primary};\n\n &:hover {\n background: ${theme.colors.background.secondary};\n }\n `,\n scrollRight: css`\n cursor: pointer;\n background: ${theme.colors.background.primary};\n\n &:hover {\n background: ${theme.colors.background.secondary};\n }\n `,\n});\n\nconst stopScroll = (id: React.MutableRefObject) => {\n id?.current?.scrollTo({\n left: id.current?.scrollLeft,\n });\n};\n\nconst goLeft = (id: React.MutableRefObject) => {\n id?.current?.scrollTo({\n top: 0,\n left: 0,\n behavior: 'smooth',\n });\n};\n\nconst goRight = (id: React.MutableRefObject) => {\n id?.current?.scrollTo({\n top: 0,\n left: id.current.scrollWidth,\n behavior: 'smooth',\n });\n};\n\nexport function Scroller({ scrollerRef: ref }: { scrollerRef: React.MutableRefObject }) {\n const theme = useTheme2();\n const styles = getStyles(theme);\n return (\n
\n goLeft(ref)} onPointerUp={() => stopScroll(ref)} className={styles.scrollLeft}>\n \n \n goRight(ref)} onPointerUp={() => stopScroll(ref)} className={styles.scrollRight}>\n \n \n
\n );\n}\n","import React from 'react';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { css } from '@emotion/css';\nimport { useTheme2 } from '@grafana/ui';\nimport { testIds } from '../../services/testIds';\n\nexport function RawLogLineText(props: { value: unknown }) {\n const theme = useTheme2();\n const styles = getStyles(theme);\n return (\n
\n <>{props.value}\n
\n );\n}\n\nexport const getStyles = (theme: GrafanaTheme2, bgColor?: string) => ({\n rawLogLine: css({\n fontFamily: theme.typography.fontFamilyMonospace,\n height: '35px',\n lineHeight: '35px',\n paddingRight: theme.spacing(1.5),\n paddingLeft: theme.spacing(1),\n fontSize: theme.typography.bodySmall.fontSize,\n }),\n});\n","import React, { useRef, useState } from 'react';\nimport { ScrollSyncPane } from 'react-scroll-sync';\n\nimport { FieldType, formattedValueToString, GrafanaTheme2, Labels } from '@grafana/data';\nimport { CustomCellRendererProps, useTheme2 } from '@grafana/ui';\n\nimport { useQueryContext } from 'Components/Table/Context/QueryContext';\nimport { LogLineState, useTableColumnContext } from 'Components/Table/Context/TableColumnsContext';\nimport { DefaultCellWrapComponent } from 'Components/Table/DefaultCellWrapComponent';\nimport { LogLinePill } from 'Components/Table/LogLinePill';\nimport { Scroller } from 'Components/Table/Scroller';\nimport { css } from '@emotion/css';\nimport { LineActionIcons } from 'Components/Table/LineActionIcons';\nimport { RawLogLineText } from 'Components/Table/RawLogLineText';\nimport { getBodyName } from '../../services/logsFrame';\nimport { LEVEL_NAME } from './constants';\n\nexport type SelectedTableRow = {\n row: number;\n id: string;\n};\n\ninterface Props extends CustomCellRendererProps {\n labels: Labels;\n fieldIndex: number;\n}\nexport const LogLineCellComponent = (props: Props) => {\n let value = props.value;\n const field = props.field;\n const displayValue = field.display!(value);\n const theme = useTheme2();\n const styles = getStyles(theme);\n const { columns, setVisible, bodyState } = useTableColumnContext();\n const { logsFrame } = useQueryContext();\n const [isHover, setIsHover] = useState(false);\n const ref = useRef(null);\n\n if (React.isValidElement(props.value)) {\n value = props.value;\n } else if (typeof value === 'object') {\n value = JSON.stringify(props.value);\n } else {\n value = formattedValueToString(displayValue);\n }\n\n /**\n * Render labels as log line pills\n * @param labels Label[]\n */\n const renderLabels = (labels: Labels) => {\n const columnLabelNames = Object.keys(columns);\n const labelNames = columnLabelNames\n .filter((name) => name !== getBodyName(logsFrame))\n .sort((a, b) => {\n // Sort level first\n if (a === LEVEL_NAME) {\n return -1;\n }\n if (b === LEVEL_NAME) {\n return 1;\n }\n // Then sort links\n if (columns[a].type === 'LINK_FIELD') {\n return -1;\n }\n if (columns[b].type === 'LINK_FIELD') {\n return 1;\n }\n\n // Finally sort fields by cardinality descending\n return columns[a].cardinality > columns[b].cardinality ? -1 : 1;\n });\n\n const filteredLabels = labelNames.filter(\n (label) =>\n // Not already visible in another column\n !columns[label].active &&\n // And the cardinality is greater than 1\n columns[label].cardinality > 1\n );\n\n return filteredLabels\n .map((label) => {\n const labelValue = labels[label];\n const untransformedField = logsFrame?.raw?.fields.find((field) => field.name === label);\n const rawValue = field?.values[props.rowIndex];\n const isDerived = !labelValue && !!rawValue;\n\n // If we have a label value, the field is not derived\n if (labelValue) {\n return (\n setVisible(true)}\n key={label}\n label={label}\n isDerivedField={false}\n value={labelValue}\n />\n );\n }\n\n // Otherwise, the field might be derived\n if (isDerived && untransformedField?.name) {\n const untransformedValue = untransformedField?.values[props.rowIndex];\n if (untransformedField?.type === FieldType.string && untransformedValue) {\n return (\n setVisible(true)}\n key={untransformedField.name}\n label={untransformedField.name}\n isDerivedField={true}\n />\n );\n }\n }\n\n return null;\n })\n .filter((v) => v);\n };\n\n const labels = renderLabels(props.labels);\n const isAuto = bodyState === LogLineState.auto;\n const hasLabels = labels.length > 0;\n\n return (\n {\n setIsHover(true);\n }}\n onMouseOut={() => {\n setIsHover(false);\n }}\n rowIndex={props.rowIndex}\n field={props.field}\n >\n \n
\n {/* First Field gets the icons */}\n {props.fieldIndex === 0 && }\n {/* Labels */}\n {isAuto && hasLabels && <>{labels}}\n {bodyState === LogLineState.labels && hasLabels && <>{labels}}\n {bodyState === LogLineState.labels && !hasLabels && }\n\n {/* Raw log line*/}\n {isAuto && !hasLabels && }\n {bodyState === LogLineState.text && }\n\n {isHover && }\n
\n
\n \n );\n};\n\nexport const getStyles = (theme: GrafanaTheme2) => ({\n content: css`\n white-space: nowrap;\n overflow-x: auto;\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n padding-right: 30px;\n display: flex;\n align-items: flex-start;\n height: 100%;\n &::-webkit-scrollbar {\n display: none; /* Chrome, Safari and Opera */\n }\n\n &:after {\n pointer-events: none;\n content: '';\n width: 100%;\n height: 100%;\n position: absolute;\n left: 0;\n top: 0;\n // Fade out text in last 10px to background color to add affordance to horiziontal scroll\n background: linear-gradient(to right, transparent calc(100% - 10px), ${theme.colors.background.primary});\n }\n `,\n});\n","import React, { PropsWithChildren, useRef } from 'react';\nimport { css } from '@emotion/css';\n\nimport { Field, GrafanaTheme2 } from '@grafana/data';\nimport { ClickOutsideWrapper, IconButton, Popover, useTheme2 } from '@grafana/ui';\n\nimport { useTableHeaderContext } from 'Components/Table/Context/TableHeaderContext';\nimport { useQueryContext } from './Context/QueryContext';\nimport { getBodyName } from '../../services/logsFrame';\nimport { LogLineState, useTableColumnContext } from './Context/TableColumnsContext';\n\nexport interface LogsTableHeaderProps extends PropsWithChildren {\n fieldIndex: number;\n}\n//@todo delete when released in Grafana core\nexport interface CustomHeaderRendererProps {\n field: Field;\n defaultContent: React.ReactNode;\n}\n\nconst getStyles = (theme: GrafanaTheme2, isFirstColumn: boolean, isLine: boolean) => ({\n logLineButton: css({\n marginLeft: '5px',\n }),\n tableHeaderMenu: css({\n label: 'tableHeaderMenu',\n width: '100%',\n minWidth: '250px',\n height: '100%',\n maxHeight: '400px',\n backgroundColor: theme.colors.background.primary,\n border: `1px solid ${theme.colors.border.weak}`,\n padding: theme.spacing(2),\n margin: theme.spacing(1, 0),\n boxShadow: theme.shadows.z3,\n borderRadius: theme.shape.radius.default,\n }),\n leftAlign: css({\n label: 'left-align',\n display: 'flex',\n width: 'calc(100% - 20px)',\n }),\n clearButton: css({\n marginLeft: '5px',\n }),\n rightAlign: css({\n label: 'right-align',\n display: 'flex',\n marginRight: '5px',\n }),\n wrapper: css({\n label: 'wrapper',\n display: 'flex',\n marginLeft: isFirstColumn ? '56px' : '6px',\n // Body has extra padding then other columns\n width: isLine ? 'calc(100% + 6px)' : '100%',\n\n // Hack to show a visible resize indicator, despite 6px of padding on the header in grafana/table\n borderRight: `1px solid ${theme.colors.border.weak}`,\n marginRight: '-6px',\n }),\n defaultContentWrapper: css({\n borderLeft: isFirstColumn ? `1px solid ${theme.colors.border.weak}` : 'none',\n marginLeft: isFirstColumn ? '-6px' : 0,\n paddingLeft: isFirstColumn ? '12px' : 0,\n display: 'flex',\n }),\n});\n\nexport const LogsTableHeader = (props: LogsTableHeaderProps) => {\n const { setHeaderMenuActive, isHeaderMenuActive } = useTableHeaderContext();\n const { logsFrame } = useQueryContext();\n const referenceElement = useRef(null);\n const theme = useTheme2();\n const styles = getStyles(theme, props.fieldIndex === 0, props.field.name === getBodyName(logsFrame));\n const { columnWidthMap, setColumnWidthMap, setBodyState, bodyState } = useTableColumnContext();\n const isBodyField = props.field.name === getBodyName(logsFrame);\n\n const onLogTextToggle = () => {\n setBodyState(bodyState === LogLineState.text ? LogLineState.labels : LogLineState.text);\n };\n\n return (\n \n \n {props.defaultContent}\n {columnWidthMap && setColumnWidthMap && columnWidthMap?.[props.field.name] !== undefined && (\n {\n const { [props.field.name]: omit, ...map } = { ...columnWidthMap };\n setColumnWidthMap?.(map);\n }}\n />\n )}\n {isBodyField && (\n <>\n {bodyState === LogLineState.text ? (\n \n ) : (\n \n )}\n \n )}\n \n \n {\n setHeaderMenuActive(!isHeaderMenuActive);\n }}\n name={'ellipsis-v'}\n />\n \n\n {referenceElement.current && (\n //@ts-ignore\n setHeaderMenuActive(false)} useCapture={true}>\n
{props.children}
\n \n }\n referenceElement={referenceElement.current}\n />\n )}\n
\n );\n};\n","import { LogsTableHeader, LogsTableHeaderProps } from 'Components/Table/LogsTableHeader';\nimport { FieldNameMetaStore } from 'Components/Table/TableTypes';\nimport { useTableHeaderContext } from 'Components/Table/Context/TableHeaderContext';\nimport { LogLineState, useTableColumnContext } from 'Components/Table/Context/TableColumnsContext';\nimport { Icon } from '@grafana/ui';\nimport React, { useCallback } from 'react';\nimport { Field } from '@grafana/data';\nimport { getBodyName } from '../../services/logsFrame';\nimport { css, cx } from '@emotion/css';\nimport { useQueryContext } from './Context/QueryContext';\n\nexport function LogsTableHeaderWrap(props: {\n headerProps: LogsTableHeaderProps;\n openColumnManagementDrawer: () => void;\n\n // Moves the current column forward or backward one index\n slideLeft?: (cols: FieldNameMetaStore) => void;\n slideRight?: (cols: FieldNameMetaStore) => void;\n\n autoColumnWidths?: () => void;\n}) {\n const { setHeaderMenuActive } = useTableHeaderContext();\n const { columns, setColumns, bodyState, setBodyState } = useTableColumnContext();\n const { logsFrame } = useQueryContext();\n const styles = getStyles();\n\n const hideColumn = useCallback(\n (field: Field) => {\n const pendingColumnState = { ...columns };\n\n const columnsThatNeedIndexUpdate = Object.keys(pendingColumnState)\n .filter((col) => {\n const columnIndex = pendingColumnState[col].index;\n const fieldIndex = pendingColumnState[field.name].index;\n return pendingColumnState[col].active && fieldIndex && columnIndex && columnIndex > fieldIndex;\n })\n .map((cols) => pendingColumnState[cols]);\n\n columnsThatNeedIndexUpdate.forEach((col) => {\n if (col.index !== undefined) {\n col.index--;\n }\n });\n\n pendingColumnState[field.name].active = false;\n pendingColumnState[field.name].index = undefined;\n setColumns(pendingColumnState);\n },\n [columns, setColumns]\n );\n\n const isBodyField = props.headerProps.field.name === getBodyName(logsFrame);\n\n return (\n \n
\n {\n props.openColumnManagementDrawer();\n setHeaderMenuActive(false);\n }}\n >\n \n Manage columns\n \n
\n \n {props.slideLeft && (\n \n )}\n {props.slideRight && (\n \n )}\n {isBodyField && (\n
\n {\n if (bodyState === LogLineState.text) {\n setBodyState(LogLineState.labels);\n } else {\n setBodyState(LogLineState.text);\n }\n }}\n >\n {bodyState === LogLineState.text ? (\n \n ) : (\n \n )}\n\n {bodyState === LogLineState.text ? 'Show labels' : 'Show log text'}\n \n
\n )}\n\n {props.autoColumnWidths && (\n \n )}\n
\n );\n}\n\nconst getStyles = () => {\n return {\n reverse: css({\n transform: 'scaleX(-1)',\n }),\n link: css({\n paddingTop: '5px',\n paddingBottom: '5px',\n }),\n icon: css({\n marginRight: '10px',\n }),\n linkWrap: css({}),\n };\n};\n","import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { ScrollSync } from 'react-scroll-sync';\nimport { css } from '@emotion/css';\nimport { lastValueFrom } from 'rxjs';\n\nimport {\n applyFieldOverrides,\n CustomTransformOperator,\n DataFrame,\n DataFrameType,\n DataTransformerConfig,\n Field,\n FieldType,\n FieldWithIndex,\n Labels,\n MappingType,\n transformDataFrame,\n ValueMap,\n} from '@grafana/data';\nimport { getTemplateSrv } from '@grafana/runtime';\nimport { TableCellHeight, TableColoredBackgroundCellOptions } from '@grafana/schema';\nimport { Drawer, Table as GrafanaTable, TableCellDisplayMode, TableCustomCellOptions, useTheme2 } from '@grafana/ui';\n\nimport { TableCellContextProvider } from 'Components/Table/Context/TableCellContext';\nimport { useTableColumnContext } from 'Components/Table/Context/TableColumnsContext';\nimport { TableHeaderContextProvider } from 'Components/Table/Context/TableHeaderContext';\nimport {\n ColumnSelectionDrawerWrap,\n getReorderColumn,\n} from 'Components/Table/ColumnSelection/ColumnSelectionDrawerWrap';\nimport { DefaultCellComponent } from 'Components/Table/DefaultCellComponent';\nimport { LogLineCellComponent } from 'Components/Table/LogLineCellComponent';\nimport { CustomHeaderRendererProps } from 'Components/Table/LogsTableHeader';\nimport { FieldName, FieldNameMeta, FieldNameMetaStore } from 'Components/Table/TableTypes';\nimport { guessLogsFieldTypeForValue } from 'Components/Table/TableWrap';\nimport { LogsTableHeaderWrap } from 'Components/Table/LogsTableHeaderWrap';\nimport { getBodyName, getIdName, getTimeName, LogsFrame } from '../../services/logsFrame';\nimport { useQueryContext } from './Context/QueryContext';\nimport { testIds } from '../../services/testIds';\nimport { debounce } from 'lodash';\n\ninterface Props {\n height: number;\n timeZone: string;\n logsFrame: LogsFrame;\n width: number;\n labels: Labels[];\n}\n\nconst getStyles = () => ({\n section: css({\n position: 'relative',\n }),\n tableWrap: css({\n '.cellActions': {\n // Hacky but without inspect turned on the table will change the width of the row on hover, but we don't want the default icons to show\n display: 'none !important',\n },\n }),\n});\n\nfunction TableAndContext(props: {\n data: DataFrame;\n height: number;\n width: number;\n selectedLine?: number;\n logsFrame: LogsFrame;\n onResize: (fieldDisplayName: string, width: number) => void;\n}) {\n return (\n \n );\n}\n\nexport const Table = (props: Props) => {\n const { height, timeZone, logsFrame, width, labels } = props;\n const theme = useTheme2();\n const styles = getStyles();\n\n const [tableFrame, setTableFrame] = useState(undefined);\n const {\n columns,\n visible,\n setVisible,\n setFilteredColumns,\n setColumns,\n clearSelectedLine,\n columnWidthMap,\n setColumnWidthMap,\n } = useTableColumnContext();\n\n const { selectedLine } = useQueryContext();\n\n // Create a local state for selected line so we can clear the state tied to the URL\n const [localSelectedLine] = useState(selectedLine);\n\n const reorderColumn = getReorderColumn(setColumns);\n\n const templateSrv = getTemplateSrv();\n const replace = useMemo(() => templateSrv.replace.bind(templateSrv), [templateSrv]);\n\n const prepareTableFrame = useCallback(\n (frame: DataFrame): DataFrame => {\n if (!frame.length) {\n return frame;\n }\n\n const [frameWithOverrides] = applyFieldOverrides({\n data: [frame],\n timeZone: timeZone,\n theme: theme,\n replaceVariables: replace,\n fieldConfig: {\n defaults: {\n custom: {},\n },\n overrides: [],\n },\n });\n\n // `getLinks` and `applyFieldOverrides` are taken from TableContainer.tsx\n for (const [index, field] of frameWithOverrides.fields.entries()) {\n // If it's a string, then try to guess for a better type for numeric support in viz\n field.type =\n field.type === FieldType.string ? guessLogsFieldTypeForField(field) ?? FieldType.string : field.type;\n\n field.config = {\n ...field.config,\n\n custom: {\n inspect: true,\n filterable: true, // This sets the columns to be filterable\n headerComponent: (props: CustomHeaderRendererProps) => (\n \n setVisible(true)}\n slideLeft={\n index !== 0 ? (cols: FieldNameMetaStore) => reorderColumn(cols, index, index - 1) : undefined\n }\n slideRight={\n index !== frame.fields.length - 1\n ? (cols: FieldNameMetaStore) => reorderColumn(cols, index, index + 1)\n : undefined\n }\n autoColumnWidths={\n Object.keys(columnWidthMap).length > 0\n ? () => {\n setColumnWidthMap({});\n }\n : undefined\n }\n />\n \n ),\n width:\n columnWidthMap[field.name] ??\n getInitialFieldWidth(field, index, columns, width, frameWithOverrides.fields.length, logsFrame),\n cellOptions: getTableCellOptions(field, index, labels, logsFrame),\n ...field.config.custom,\n },\n // This sets the individual field value as filterable\n // filterable: isFieldFilterable(field, logsFrame?.bodyField.name ?? '', logsFrame?.timeField.name ?? ''),\n filterable: true,\n };\n }\n\n return frameWithOverrides;\n },\n // This function is building the table dataframe that will be transformed, even though the components within the dataframe (cells, headers) can mutate the dataframe!\n // If we try to update the dataframe whenever the columns are changed (which are rebuilt using this dataframe after being transformed), react will infinitely update frame -> columns -> frame -> ...\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [timeZone, theme, labels, width, replace, setVisible, columnWidthMap]\n );\n\n // prepare dataFrame\n useEffect(() => {\n const prepare = async () => {\n const transformations: Array = getExtractFieldsTransform(\n logsFrame.raw\n );\n\n let labelFilters = buildColumnsWithMeta(columns);\n\n const labelFiltersTransform = getOrganizeFieldsTransform(labelFilters);\n if (labelFiltersTransform) {\n transformations.push(labelFiltersTransform);\n } else {\n const specialFields = {\n time: logsFrame.timeField,\n body: logsFrame.bodyField,\n extraFields: logsFrame.extraFields,\n };\n if (specialFields && specialFields.body !== undefined && specialFields.time !== undefined) {\n transformations.push(\n getDefaultStateOrganizeFieldsTransform(\n specialFields as {\n time: FieldWithIndex;\n body: FieldWithIndex;\n }\n )\n );\n }\n }\n\n if (transformations.length > 0) {\n const transformedDataFrame: DataFrame[] = await lastValueFrom(\n // @ts-ignore\n transformDataFrame(transformations, [logsFrame.raw])\n );\n const tableFrame = prepareTableFrame(transformedDataFrame[0]);\n setTableFrame(tableFrame);\n } else {\n setTableFrame(prepareTableFrame(logsFrame.raw));\n }\n };\n prepare();\n }, [logsFrame.raw, logsFrame.bodyField, logsFrame.timeField, logsFrame.extraFields, prepareTableFrame, columns]);\n\n // Clear selected line from URL so it doesn't pollute future queries\n useEffect(() => {\n if (localSelectedLine && selectedLine) {\n clearSelectedLine();\n return;\n }\n }, [localSelectedLine, clearSelectedLine, selectedLine]);\n\n const idField = logsFrame.raw.fields.find((field) => field.name === getIdName(logsFrame));\n const lineIndex = idField?.values.findIndex((v) => v === localSelectedLine?.id);\n const cleanLineIndex = lineIndex && lineIndex !== -1 ? lineIndex : undefined;\n\n if (!tableFrame) {\n return <>;\n }\n\n const onResize = (fieldDisplayName: string, width: number) => {\n const key = Object.keys(columns)\n .filter((key) => columns[key].active)\n .find((key) => key === fieldDisplayName);\n\n if (key && width > 0) {\n const map = { ...columnWidthMap };\n map[key] = width;\n setColumnWidthMap(map);\n }\n };\n\n return (\n
\n {visible && (\n {\n setVisible(false);\n setFilteredColumns(columns);\n }}\n >\n \n \n )}\n\n
\n \n \n \n \n \n
\n
\n );\n};\n\nfunction getDefaultStateOrganizeFieldsTransform(specialFields: { time: FieldWithIndex; body: FieldWithIndex }) {\n return {\n id: 'organize',\n options: {\n indexByName: {\n [specialFields.time.name]: 0,\n [specialFields.body.name]: 1,\n },\n includeByName: {\n [specialFields.body.name]: true,\n [specialFields.time.name]: true,\n },\n },\n };\n}\n\nfunction guessLogsFieldTypeForField(field: Field): FieldType | undefined {\n // 1. Use the column name to guess\n if (field.name) {\n const name = field.name.toLowerCase();\n if (name === 'date' || name === 'time') {\n return FieldType.time;\n }\n }\n\n // 2. Check the first non-null value\n for (let i = 0; i < field.values.length; i++) {\n const v = field.values[i];\n if (v != null) {\n return guessLogsFieldTypeForValue(v);\n }\n }\n\n // Could not find anything\n return undefined;\n}\n\nexport const getFieldMappings = (): ValueMap => {\n return {\n options: {\n critical: {\n color: '#705da0',\n index: 0,\n },\n crit: {\n color: '#705da0',\n index: 1,\n },\n error: {\n color: '#e24d42',\n index: 2,\n },\n err: {\n color: '#e24d42',\n index: 3,\n },\n eror: {\n color: '#e24d42',\n index: 4,\n },\n warning: {\n color: '#FF9900',\n index: 5,\n },\n warn: {\n color: '#FF9900',\n index: 6,\n },\n info: {\n color: '#7eb26d',\n index: 7,\n },\n debug: {\n color: '#1f78c1',\n index: 8,\n },\n trace: {\n color: '#6ed0e0',\n index: 9,\n },\n },\n type: MappingType.ValueToText,\n };\n};\n\nfunction buildColumnsWithMeta(columnsWithMeta: Record) {\n // Create object of label filters to include columns selected by the user\n let labelFilters: Record = {};\n Object.keys(columnsWithMeta)\n .filter((key) => columnsWithMeta[key].active)\n .forEach((key) => {\n const index = columnsWithMeta[key].index;\n // Index should always be defined for any active column\n if (index !== undefined) {\n labelFilters[key] = index;\n }\n });\n\n return labelFilters;\n}\n\nfunction getOrganizeFieldsTransform(labelFilters: Record) {\n let labelFiltersInclude: Record = {};\n\n for (const key in labelFilters) {\n labelFiltersInclude[key] = true;\n }\n\n if (Object.keys(labelFilters).length > 0) {\n return {\n id: 'organize',\n options: {\n indexByName: labelFilters,\n includeByName: labelFiltersInclude,\n },\n };\n }\n return null;\n}\n\nexport function getExtractFieldsTransform(dataFrame: DataFrame) {\n return dataFrame.fields\n .filter((field: Field & { typeInfo?: { frame: string } }) => {\n const isFieldLokiLabels =\n field.typeInfo?.frame === 'json.RawMessage' &&\n field.name === 'labels' &&\n dataFrame?.meta?.type !== DataFrameType.LogLines;\n const isFieldDataplaneLabels =\n field.name === 'labels' && field.type === FieldType.other && dataFrame?.meta?.type === DataFrameType.LogLines;\n return isFieldLokiLabels || isFieldDataplaneLabels;\n })\n .flatMap((field: Field) => {\n return [\n {\n id: 'extractFields',\n options: {\n format: 'json',\n keepTime: false,\n replace: false,\n source: field.name,\n },\n },\n ];\n });\n}\n\nfunction getTableCellOptions(\n field: Field,\n fieldIndex: number,\n labels: Labels[],\n logsFrame: LogsFrame\n): TableCustomCellOptions | TableColoredBackgroundCellOptions {\n if (field.name === getBodyName(logsFrame)) {\n return {\n cellComponent: (props) => (\n \n ),\n type: TableCellDisplayMode.Custom,\n };\n }\n\n return {\n cellComponent: (props) => ,\n type: TableCellDisplayMode.Custom,\n };\n}\n\nfunction getInitialFieldWidth(\n field: Field,\n fieldIndex: number,\n columns: FieldNameMetaStore,\n tableWidth: number,\n numberOfFields: number,\n logsFrame: LogsFrame\n): number | undefined {\n const minWidth = 90;\n\n // Columns shouldn't take more than half the available space, unless there are only 2 columns\n const maxWidth = numberOfFields <= 2 ? tableWidth : Math.min(tableWidth / 2);\n\n // First field gets icons, and a little extra width\n const extraPadding = fieldIndex === 0 ? 50 : 0;\n\n // Time fields have consistent widths\n if (field.type === FieldType.time) {\n return 200 + extraPadding;\n }\n\n const columnMeta = columns[field.name];\n\n if (columnMeta === undefined) {\n return undefined;\n }\n\n const maxLength = Math.max(columnMeta.maxLength ?? 0, field.name.length);\n\n if (columnMeta.maxLength) {\n // Super rough estimate, about 6.5px per char, and 95px for some space for the header icons (remember when sorted a new icon is added to the table header).\n // I guess to be a little tighter we could only add the extra padding IF the field name is longer then the longest value\n return Math.min(Math.max(maxLength * 6.5 + 95 + extraPadding, minWidth + extraPadding), maxWidth);\n }\n\n if (field.name === getBodyName(logsFrame)) {\n return undefined;\n }\n\n // Just derived fields, which should have uniform length\n return Math.min(\n Math.max((field.values?.[0]?.length ?? 80) * 6.5 + 95 + extraPadding, minWidth + extraPadding),\n maxWidth\n );\n}\n","import React, { useCallback, useState } from 'react';\nimport { css } from '@emotion/css';\n\nimport { DataFrame, FieldType, FieldWithIndex, getTimeZone, guessFieldTypeFromValue, Labels } from '@grafana/data';\n\nimport { LogLineState, TableColumnContextProvider } from 'Components/Table/Context/TableColumnsContext';\nimport { Table } from 'Components/Table/Table';\nimport { FieldNameMeta, FieldNameMetaStore } from 'Components/Table/TableTypes';\nimport { useQueryContext } from 'Components/Table/Context/QueryContext';\nimport { useResizeObserver } from '@react-aria/utils';\n\nexport type SpecialFieldsType = {\n time: FieldWithIndex;\n body: FieldWithIndex;\n extraFields: FieldWithIndex[];\n};\n\n// matches common ISO 8601\nconst iso8601Regex = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{3,})?(?:Z|[-+]\\d{2}:?\\d{2})$/;\n\ninterface TableWrapProps {\n urlColumns: string[];\n urlTableBodyState?: LogLineState;\n setUrlColumns: (columns: string[]) => void;\n panelWrap: React.RefObject;\n clearSelectedLine: () => void;\n setUrlTableBodyState: (logLineState: LogLineState) => void;\n showColumnManagementDrawer: (isActive: boolean) => void;\n isColumnManagementActive: boolean;\n}\n\nconst getStyles = () => ({\n section: css({\n position: 'relative',\n }),\n});\n\nexport const TableWrap = (props: TableWrapProps) => {\n const { logsFrame } = useQueryContext();\n\n const [panelWrapSize, setPanelWrapSize] = useState({ width: 0, height: 0 });\n\n // Table needs to be positioned absolutely, passing in reference wrapping panelChrome from parent\n useResizeObserver({\n ref: props.panelWrap,\n onResize: () => {\n const element = props.panelWrap.current;\n if (element) {\n if (panelWrapSize.width !== element.clientWidth || panelWrapSize.height !== element.clientHeight) {\n setPanelWrapSize({\n width: element.clientWidth,\n height: element.clientHeight,\n });\n }\n }\n },\n });\n\n const styles = getStyles();\n const timeZone = getTimeZone();\n\n // This function is called when we want to grab the column names that are currently stored in the URL.\n // So instead we have to grab the current columns directly from the URL.\n const getColumnsFromProps = useCallback(\n (fieldNames: FieldNameMetaStore) => {\n const previouslySelected = props.urlColumns;\n if (previouslySelected?.length) {\n Object.values(previouslySelected).forEach((key, index) => {\n if (fieldNames[key]) {\n fieldNames[key].active = true;\n fieldNames[key].index = index;\n }\n });\n }\n\n return fieldNames;\n },\n [props.urlColumns]\n );\n\n // If the data frame is empty, there's nothing to viz, it could mean the user has unselected all columns\n if (!logsFrame || !logsFrame.raw.length) {\n return null;\n }\n\n const labels = logsFrame.getLogFrameLabelsAsLabels() ?? [];\n const numberOfLogLines = logsFrame ? logsFrame.raw.length : 0;\n\n // If we have labels and log lines\n let pendingLabelState = mapLabelsToInitialState(logsFrame.raw, labels);\n const specialFields = {\n time: logsFrame.timeField,\n body: logsFrame.bodyField,\n extraFields: logsFrame.extraFields,\n };\n\n // Normalize the other fields\n if (specialFields) {\n addSpecialLabelsState(\n [specialFields.time, specialFields.body, ...specialFields.extraFields],\n pendingLabelState,\n numberOfLogLines\n );\n\n pendingLabelState = getColumnsFromProps(pendingLabelState);\n\n // Get all active columns\n const active = Object.keys(pendingLabelState).filter((key) => pendingLabelState[key].active);\n\n // If nothing is selected, then select the default columns\n setSpecialFieldMeta(active, specialFields, pendingLabelState);\n }\n\n return (\n
\n \n \n \n
\n );\n};\n\nconst normalize = (value: number, total: number): number => {\n return Math.ceil((100 * value) / total);\n};\n\ntype labelName = string;\ntype labelValue = string;\n\nexport function getCardinalityMapFromLabels(labels: Labels[]) {\n const cardinalityMap = new Map; maxLength: number }>();\n labels.forEach((fieldLabels) => {\n const labelNames = Object.keys(fieldLabels);\n labelNames.forEach((labelName) => {\n if (cardinalityMap.has(labelName)) {\n const setObj = cardinalityMap.get(labelName);\n const values = setObj?.valueSet;\n const maxLength = setObj?.maxLength;\n\n if (values && !values?.has(fieldLabels[labelName])) {\n values?.add(fieldLabels[labelName]);\n if (maxLength && fieldLabels[labelName].length > maxLength) {\n cardinalityMap.set(labelName, { maxLength: fieldLabels[labelName].length, valueSet: values });\n }\n }\n } else {\n cardinalityMap.set(labelName, {\n maxLength: fieldLabels[labelName].length,\n valueSet: new Set([fieldLabels[labelName]]),\n });\n }\n });\n });\n\n return cardinalityMap;\n}\n\n/**\n * Guess the field type of the value\n * @param value\n */\nexport function guessLogsFieldTypeForValue(value: string) {\n let fieldType = guessFieldTypeFromValue(value);\n const isISO8601 = fieldType === 'string' && iso8601Regex.test(value);\n if (isISO8601) {\n fieldType = FieldType.time;\n }\n return fieldType;\n}\n\nfunction mapLabelsToInitialState(dataFrame: DataFrame, labels: Labels[]) {\n let pendingLabelState: FieldNameMetaStore = {};\n\n // Use a map to dedupe labels and count their occurrences in the logs\n const labelMap = new Map();\n const cardinality = getCardinalityMapFromLabels(labels);\n const numberOfLogLines = dataFrame ? dataFrame.length : 0;\n\n if (labels?.length && numberOfLogLines) {\n // Iterate through all of Labels\n labels.forEach((labels: Labels) => {\n const labelsArray = Object.keys(labels);\n // Iterate through the label values\n labelsArray.forEach((label) => {\n const cardinalityMap = cardinality.get(label);\n const cardinalityCount = cardinalityMap?.valueSet?.size ?? 0;\n // If it's already in our map, increment the count\n if (labelMap.has(label)) {\n const value = labelMap.get(label);\n\n if (value) {\n if (value?.active) {\n labelMap.set(label, {\n percentOfLinesWithLabel: value.percentOfLinesWithLabel + 1,\n active: true,\n index: value.index,\n cardinality: cardinalityCount,\n maxLength: cardinalityMap?.maxLength,\n });\n } else {\n labelMap.set(label, {\n percentOfLinesWithLabel: value.percentOfLinesWithLabel + 1,\n active: false,\n index: undefined,\n cardinality: cardinalityCount,\n maxLength: cardinalityMap?.maxLength,\n });\n }\n }\n // Otherwise add it\n } else {\n labelMap.set(label, {\n percentOfLinesWithLabel: 1,\n active: false,\n index: undefined,\n cardinality: cardinalityCount,\n maxLength: cardinalityMap?.maxLength,\n });\n }\n });\n });\n\n // Converting the map to an object\n pendingLabelState = Object.fromEntries(labelMap);\n\n // Convert count to percent of log lines\n Object.keys(pendingLabelState).forEach((key) => {\n pendingLabelState[key].percentOfLinesWithLabel = normalize(\n pendingLabelState[key].percentOfLinesWithLabel,\n numberOfLogLines\n );\n });\n }\n return pendingLabelState;\n}\n\n/**\n * Add special fields like time and body\n * @param specialFieldArray\n * @param pendingLabelState\n * @param numberOfLogLines\n */\nfunction addSpecialLabelsState(\n specialFieldArray: Array,\n pendingLabelState: FieldNameMetaStore,\n numberOfLogLines: number\n) {\n specialFieldArray.forEach((field) => {\n if (!field) {\n return;\n }\n const isActive = pendingLabelState[field.name]?.active;\n const index = pendingLabelState[field.name]?.index;\n if (isActive && index !== undefined) {\n pendingLabelState[field.name] = {\n percentOfLinesWithLabel: normalize(\n field.values.filter((value) => value !== null && value !== undefined).length,\n numberOfLogLines\n ),\n active: true,\n index: index,\n cardinality: numberOfLogLines,\n };\n } else {\n pendingLabelState[field.name] = {\n percentOfLinesWithLabel: normalize(\n field.values.filter((value) => value !== null && value !== undefined).length,\n numberOfLogLines\n ),\n active: false,\n index: undefined,\n cardinality: numberOfLogLines,\n };\n }\n });\n\n return pendingLabelState;\n}\n\nfunction setSpecialFieldMeta(\n active: string[],\n specialFields: SpecialFieldsType,\n pendingLabelState: FieldNameMetaStore\n) {\n // If no fields are visible, set defaults\n if (active.length === 0) {\n if (specialFields.body?.name) {\n pendingLabelState[specialFields.body?.name].active = true;\n pendingLabelState[specialFields.body?.name].index = 1;\n }\n if (specialFields.time?.name) {\n pendingLabelState[specialFields.time?.name].active = true;\n pendingLabelState[specialFields.time?.name].index = 0;\n }\n }\n\n if (specialFields.time?.name && specialFields.body?.name) {\n pendingLabelState[specialFields.body?.name].type = 'BODY_FIELD';\n pendingLabelState[specialFields.time?.name].type = 'TIME_FIELD';\n }\n\n if (specialFields.extraFields.length) {\n specialFields.extraFields.forEach((field) => {\n const hasLinks = field.config.links?.length;\n if (hasLinks) {\n pendingLabelState[field.name].type = 'LINK_FIELD';\n }\n });\n }\n}\n","import React from 'react';\n\nimport { TableWrap } from 'Components/Table/TableWrap';\nimport { AdHocVariableFilter, DataFrame, TimeRange } from '@grafana/data';\nimport { QueryContextProvider } from 'Components/Table/Context/QueryContext';\nimport { parseLogsFrame } from '../../services/logsFrame';\nimport { SelectedTableRow } from './LogLineCellComponent';\nimport { LogLineState } from './Context/TableColumnsContext';\n\ninterface TableProviderProps {\n dataFrame: DataFrame;\n setUrlColumns: (columns: string[]) => void;\n urlColumns: string[];\n addFilter: (filter: AdHocVariableFilter) => void;\n selectedLine?: SelectedTableRow;\n timeRange?: TimeRange;\n panelWrap: React.RefObject;\n clearSelectedLine: () => void;\n setUrlTableBodyState: (logLineState: LogLineState) => void;\n urlTableBodyState?: LogLineState;\n showColumnManagementDrawer: (isActive: boolean) => void;\n isColumnManagementActive: boolean;\n}\n\nexport const TableProvider = ({\n dataFrame,\n setUrlColumns,\n urlColumns,\n addFilter,\n selectedLine,\n timeRange,\n panelWrap,\n clearSelectedLine,\n setUrlTableBodyState,\n urlTableBodyState,\n showColumnManagementDrawer,\n isColumnManagementActive,\n}: TableProviderProps) => {\n if (!dataFrame) {\n return null;\n }\n\n const logsFrame = parseLogsFrame(dataFrame);\n if (!logsFrame) {\n return null;\n }\n\n return (\n \n \n \n );\n};\n","import { SceneComponentProps, sceneGraph, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport { LogsListScene } from './LogsListScene';\nimport { AdHocVariableFilter, GrafanaTheme2 } from '@grafana/data';\nimport { TableProvider } from '../Table/TableProvider';\nimport React, { useRef } from 'react';\nimport { Button, PanelChrome, useStyles2 } from '@grafana/ui';\nimport { LogsPanelHeaderActions } from '../Table/LogsHeaderActions';\nimport { css } from '@emotion/css';\nimport { addAdHocFilter } from './Breakdowns/AddToFiltersButton';\nimport { areArraysStrictlyEqual } from '../../services/comparison';\nimport { getLogsPanelFrame } from './ServiceScene';\nimport { getVariableForLabel } from '../../services/fields';\nimport { PanelMenu } from '../Panels/PanelMenu';\nimport { LogLineState } from '../Table/Context/TableColumnsContext';\n\ninterface LogsTableSceneState extends SceneObjectState {\n menu?: PanelMenu;\n isColumnManagementActive: boolean;\n}\nexport class LogsTableScene extends SceneObjectBase {\n constructor(state: Partial) {\n super({ ...state, isColumnManagementActive: false });\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n public showColumnManagementDrawer = (isActive: boolean) => {\n this.setState({\n isColumnManagementActive: isActive,\n });\n };\n\n public onActivate() {\n this.setState({\n menu: new PanelMenu({ addInvestigationsLink: false }),\n });\n }\n public static Component = ({ model }: SceneComponentProps) => {\n const styles = useStyles2(getStyles);\n // Get state from parent model\n const parentModel = sceneGraph.getAncestor(model, LogsListScene);\n const { data } = sceneGraph.getData(model).useState();\n const { selectedLine, urlColumns, visualizationType, tableLogLineState } = parentModel.useState();\n const { menu, isColumnManagementActive } = model.useState();\n\n // Get time range\n const timeRange = sceneGraph.getTimeRange(model);\n const { value: timeRangeValue } = timeRange.useState();\n\n const dataFrame = getLogsPanelFrame(data);\n\n // Define callback function to update filters in react\n const addFilter = (filter: AdHocVariableFilter) => {\n const variableType = getVariableForLabel(dataFrame, filter.key, model);\n addAdHocFilter(filter, parentModel, variableType);\n };\n\n // Get reference to panel wrapper so table knows how much space it can use to render\n const panelWrap = useRef(null);\n\n // Define callback function to update url columns in react\n const setUrlColumns = (urlColumns: string[]) => {\n if (!areArraysStrictlyEqual(urlColumns, parentModel.state.urlColumns)) {\n parentModel.setState({ urlColumns });\n }\n };\n\n const setUrlTableBodyState = (logLineState: LogLineState) => {\n parentModel.setState({ tableLogLineState: logLineState });\n };\n\n const clearSelectedLine = () => {\n if (parentModel.state.selectedLine) {\n parentModel.clearSelectedLine();\n }\n };\n\n return (\n
\n : undefined}\n actions={\n <>\n \n \n \n }\n >\n {dataFrame && (\n \n )}\n \n
\n );\n };\n}\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n panelWrapper: css({\n width: '100%',\n height: '100%',\n label: 'panel-wrapper-table',\n\n // @todo remove this wrapper and styles when core changes are introduced in 11.5\n // Need more specificity to override core style\n 'button.show-on-hover': {\n opacity: 1,\n visibility: 'visible',\n background: 'none',\n '&:hover': {\n background: theme.colors.secondary.shade,\n },\n },\n }),\n});\n","import { SceneComponentProps, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport debounce from 'lodash/debounce';\nimport { ChangeEvent, KeyboardEvent, useState } from 'react';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from 'services/analytics';\nimport { getLineFiltersVariable, getLineFilterVariable } from '../../../services/variableGetters';\nimport {\n getLineFilterCase,\n getLineFilterExclusive,\n getLineFilterRegex,\n setLineFilterCase,\n setLineFilterExclusive,\n setLineFilterRegex,\n} from '../../../services/store';\nimport { RegexInputValue } from './RegexIconButton';\nimport { LineFilterCaseSensitive, LineFilterOp } from '../../../services/filterTypes';\nimport { LineFilterEditor } from './LineFilterEditor';\nimport { addCurrentUrlToHistory } from '../../../services/navigate';\n\ninterface LineFilterState extends SceneObjectState {\n lineFilter: string;\n caseSensitive: boolean;\n regex: boolean;\n exclusive: boolean;\n}\n\n/**\n * The line filter scene used in the logs tab\n */\nexport class LineFilterScene extends SceneObjectBase {\n static Component = LineFilterComponent;\n\n /**\n * Sets default regex/sensitivity/exclusivity state from local storage\n */\n constructor(state?: Partial) {\n super({\n lineFilter: state?.lineFilter || '',\n caseSensitive: state?.caseSensitive ?? getLineFilterCase(false),\n regex: state?.regex ?? getLineFilterRegex(false),\n exclusive: state?.exclusive ?? getLineFilterExclusive(false),\n ...state,\n });\n this.addActivationHandler(this.onActivate);\n }\n\n /**\n * Set initial state on activation\n */\n private onActivate = () => {\n const filter = this.getFilter();\n\n if (!filter) {\n return;\n }\n\n this.setState({\n lineFilter: filter.value,\n regex: filter.operator === LineFilterOp.regex || filter.operator === LineFilterOp.negativeRegex,\n caseSensitive: filter.key === LineFilterCaseSensitive.caseSensitive,\n exclusive: filter.operator === LineFilterOp.negativeMatch || filter.operator === LineFilterOp.negativeRegex,\n });\n\n return () => {\n // This won't clear the variable as the URL won't have time to sync, but it does prevent changes to the variable that haven't yet been synced with this scene state\n this.clearFilter();\n };\n };\n\n /**\n * Clear filter variable\n */\n private clearVariable() {\n const variable = getLineFilterVariable(this);\n variable.updateFilters([], {\n skipPublish: true,\n });\n this.setState({\n lineFilter: '',\n });\n }\n /**\n * Returns operator from current state\n */\n private getOperator(): LineFilterOp {\n if (this.state.regex && this.state.exclusive) {\n return LineFilterOp.negativeRegex;\n }\n if (this.state.regex && !this.state.exclusive) {\n return LineFilterOp.regex;\n }\n if (!this.state.regex && this.state.exclusive) {\n return LineFilterOp.negativeMatch;\n }\n if (!this.state.regex && !this.state.exclusive) {\n return LineFilterOp.match;\n }\n\n throw new Error('getOperator: failed to determine operation');\n }\n\n /**\n * Since there is no \"key\" for line-filters in logQL that will map to the key of the ad-hoc filter, we currently use the key to store the case sensitivity state\n * Note: This is technically a non-standard implementation (hack) of the ad-hoc variable, we should look into adding metadata to the ad-hoc variables in scenes\n * However the behavior of the ad-hoc variable lines up well with our use-case, we want case sensitivity state to be saved in the URL and to trigger query updates.\n * Since we use a custom renderer, this should be fine, but a source of tech-debt nonetheless.\n */\n private getFilterKey() {\n return this.state.caseSensitive ? LineFilterCaseSensitive.caseSensitive : LineFilterCaseSensitive.caseInsensitive;\n }\n\n /**\n * Returns the current ad-hoc variable filter\n */\n private getFilter() {\n const lineFilterVariable = getLineFilterVariable(this);\n return lineFilterVariable.state.filters[0];\n }\n\n /**\n * Clears filter input and clears debounce queue\n */\n clearFilter = () => {\n this.updateVariableDebounced.cancel();\n this.updateFilter('', false);\n };\n\n /**\n * Updates line filter state\n * Note: Updating/debouncing the queries onChange was removed to prevent people from accidentally hammering loki while writing line filters (particularly regex)\n * The code has been left in for now as we discussed adding an \"edit\" mode with a dedicated logs panel with a smaller line limit to let users debug the results as they type\n */\n updateFilter(lineFilter: string, debounced = true) {\n this.updateInputState(lineFilter);\n if (debounced) {\n this.updateVariableDebounced(lineFilter);\n } else {\n this.updateVariable(lineFilter);\n }\n }\n\n updateInputState(lineFilter: string) {\n this.setState({\n lineFilter,\n });\n }\n\n /**\n * Update exclusive state, triggers re-query without debounce\n */\n onToggleExclusive = (exclusive: boolean) => {\n setLineFilterExclusive(exclusive);\n this.setState({\n exclusive,\n });\n\n this.updateFilter(this.state.lineFilter, false);\n };\n\n /**\n * Moves the filter to the \"global\" line-filter ad-hoc variable after flushing the debounce queue.\n * Clears the state of the local ad-hoc variable.\n */\n onSubmitLineFilter = () => {\n addCurrentUrlToHistory();\n this.updateFilter(this.state.lineFilter, false);\n // Flush any debounced updates before grabbing the filter. Important that this happens before getFilter is called!\n this.updateVariableDebounced.flush();\n\n const lineFiltersVariable = getLineFiltersVariable(this);\n const existingFilters = lineFiltersVariable.state.filters;\n const thisFilter = this.getFilter();\n\n lineFiltersVariable.updateFilters([...existingFilters, thisFilter]);\n this.clearVariable();\n };\n\n /**\n * Passes the input value to the updateFilter method\n */\n handleChange = (e: ChangeEvent) => {\n this.updateInputState(e.target.value);\n };\n\n /**\n * Submits on enter\n */\n handleEnter = (e: KeyboardEvent) => {\n if (e.key === 'Enter' && this.state.lineFilter) {\n this.onSubmitLineFilter();\n }\n };\n\n /**\n * Sets local state and triggers query on case sensitivity toggle\n */\n onCaseSensitiveToggle = (newState: LineFilterCaseSensitive) => {\n const caseSensitive = newState === LineFilterCaseSensitive.caseSensitive;\n\n // Set value to scene state\n this.setState({\n caseSensitive,\n });\n\n // Set value in local storage\n setLineFilterCase(caseSensitive);\n\n this.updateFilter(this.state.lineFilter, false);\n };\n\n /**\n * Sets local state and triggers query on regex toggle\n */\n onRegexToggle = (newState: RegexInputValue) => {\n const regex = newState === 'regex';\n\n // Set value to scene state\n this.setState({\n regex,\n });\n\n // Set value in local storage\n setLineFilterRegex(regex);\n\n this.updateFilter(this.state.lineFilter, false);\n };\n\n /**\n * Instance variable reference to debounced update method\n */\n updateVariableDebounced = debounce((search: string) => {\n this.updateVariable(search);\n }, 1000);\n\n /**\n * Updates the ad-hoc variable from local state and triggers a query.\n * Sends analytics event.\n */\n updateVariable = (search: string) => {\n this.updateVariableDebounced.flush();\n const variable = getLineFilterVariable(this);\n const variables = getLineFiltersVariable(this);\n const filter = {\n key: this.getFilterKey(),\n // The keyLabel is used to sort line filters by order added.\n keyLabel: variables.state.filters.length.toString(),\n operator: this.getOperator(),\n value: search,\n };\n\n variable.updateFilters([filter]);\n\n reportAppInteraction(\n USER_EVENTS_PAGES.service_details,\n USER_EVENTS_ACTIONS.service_details.search_string_in_logs_changed,\n {\n searchQueryLength: search.length,\n containsLevel: search.toLowerCase().includes('level'),\n operator: filter.operator,\n caseSensitive: filter.key,\n }\n );\n };\n}\n\nfunction LineFilterComponent({ model }: SceneComponentProps) {\n const { lineFilter, caseSensitive, regex, exclusive } = model.useState();\n const [focus, setFocus] = useState(false);\n return LineFilterEditor({\n exclusive,\n lineFilter,\n caseSensitive,\n regex,\n onSubmitLineFilter: model.onSubmitLineFilter,\n handleEnter: model.handleEnter,\n onInputChange: model.handleChange,\n updateFilter: model.updateFilter,\n onCaseSensitiveToggle: model.onCaseSensitiveToggle,\n onRegexToggle: model.onRegexToggle,\n setExclusive: model.onToggleExclusive,\n onClearLineFilter: model.clearFilter,\n focus,\n setFocus,\n type: 'editor',\n });\n}\n","import React from 'react';\n\nimport {\n SceneComponentProps,\n SceneFlexItem,\n SceneFlexLayout,\n sceneGraph,\n SceneObjectBase,\n SceneObjectState,\n SceneObjectUrlSyncConfig,\n SceneObjectUrlValues,\n SceneTimeRangeLike,\n} from '@grafana/scenes';\nimport { SelectedTableRow } from '../Table/LogLineCellComponent';\nimport { LogsTableScene } from './LogsTableScene';\nimport { css } from '@emotion/css';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from '../../services/analytics';\nimport { locationService } from '@grafana/runtime';\nimport { LogsPanelScene } from './LogsPanelScene';\nimport {\n getDisplayedFields,\n getLogsVisualizationType,\n LogsVisualizationType,\n setLogsVisualizationType,\n} from 'services/store';\nimport { logger } from '../../services/logger';\nimport { Options } from '@grafana/schema/dist/esm/raw/composable/logs/panelcfg/x/LogsPanelCfg_types.gen';\nimport { narrowLogsVisualizationType, narrowSelectedTableRow, unknownToStrings } from '../../services/narrowing';\nimport { LogLineState } from '../Table/Context/TableColumnsContext';\nimport { LineFilterScene } from './LineFilter/LineFilterScene';\n\nexport interface LogsListSceneState extends SceneObjectState {\n loading?: boolean;\n panel?: SceneFlexLayout;\n visualizationType: LogsVisualizationType;\n urlColumns?: string[];\n tableLogLineState?: LogLineState;\n selectedLine?: SelectedTableRow;\n $timeRange?: SceneTimeRangeLike;\n displayedFields: string[];\n lineFilter?: string;\n}\n\nexport class LogsListScene extends SceneObjectBase {\n protected _urlSync = new SceneObjectUrlSyncConfig(this, {\n keys: ['urlColumns', 'selectedLine', 'visualizationType', 'displayedFields', 'tableLogLineState'],\n });\n private logsPanelScene?: LogsPanelScene = undefined;\n constructor(state: Partial) {\n super({\n ...state,\n visualizationType: getLogsVisualizationType(),\n displayedFields: [],\n });\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n getUrlState() {\n const urlColumns = this.state.urlColumns ?? [];\n const selectedLine = this.state.selectedLine;\n const visualizationType = this.state.visualizationType;\n const displayedFields = this.state.displayedFields ?? getDisplayedFields(this) ?? [];\n return {\n urlColumns: JSON.stringify(urlColumns),\n selectedLine: JSON.stringify(selectedLine),\n visualizationType: JSON.stringify(visualizationType),\n displayedFields: JSON.stringify(displayedFields),\n tableLogLineState: JSON.stringify(this.state.tableLogLineState),\n };\n }\n\n updateFromUrl(values: SceneObjectUrlValues) {\n const stateUpdate: Partial = {};\n try {\n if (typeof values.urlColumns === 'string') {\n const decodedUrlColumns: string[] = unknownToStrings(JSON.parse(values.urlColumns));\n if (decodedUrlColumns !== this.state.urlColumns) {\n stateUpdate.urlColumns = decodedUrlColumns;\n }\n }\n if (typeof values.selectedLine === 'string') {\n const unknownTableRow = narrowSelectedTableRow(JSON.parse(values.selectedLine));\n if (unknownTableRow) {\n const decodedSelectedTableRow: SelectedTableRow = unknownTableRow;\n if (decodedSelectedTableRow !== this.state.selectedLine) {\n stateUpdate.selectedLine = decodedSelectedTableRow;\n }\n }\n }\n if (typeof values.visualizationType === 'string') {\n const decodedVisualizationType = narrowLogsVisualizationType(JSON.parse(values.visualizationType));\n if (decodedVisualizationType && decodedVisualizationType !== this.state.visualizationType) {\n stateUpdate.visualizationType = decodedVisualizationType;\n }\n }\n if (typeof values.displayedFields === 'string') {\n const displayedFields = unknownToStrings(JSON.parse(values.displayedFields));\n if (displayedFields && displayedFields.length) {\n stateUpdate.displayedFields = displayedFields;\n }\n }\n if (typeof values.tableLogLineState === 'string') {\n const tableLogLineState = JSON.parse(values.tableLogLineState);\n if (tableLogLineState === LogLineState.labels || tableLogLineState === LogLineState.text) {\n stateUpdate.tableLogLineState = tableLogLineState;\n }\n }\n } catch (e) {\n // URL Params can be manually changed and it will make JSON.parse() fail.\n logger.error(e, { msg: 'LogsListScene: updateFromUrl unexpected error' });\n }\n\n if (Object.keys(stateUpdate).length) {\n this.setState(stateUpdate);\n }\n }\n\n clearSelectedLine() {\n this.setState({\n selectedLine: undefined,\n });\n }\n\n clearDisplayedFields = () => {\n this.setState({ displayedFields: [] });\n if (this.logsPanelScene) {\n this.logsPanelScene.clearDisplayedFields();\n }\n };\n\n public onActivate() {\n const searchParams = new URLSearchParams(locationService.getLocation().search);\n this.setStateFromUrl(searchParams);\n\n if (!this.state.panel) {\n this.updateLogsPanel();\n }\n\n this._subs.add(\n this.subscribeToState((newState, prevState) => {\n if (newState.visualizationType !== prevState.visualizationType) {\n this.updateLogsPanel();\n }\n })\n );\n }\n\n private setStateFromUrl(searchParams: URLSearchParams) {\n const selectedLineUrl = searchParams.get('selectedLine');\n const urlColumnsUrl = searchParams.get('urlColumns');\n const vizTypeUrl = searchParams.get('visualizationType');\n const displayedFieldsUrl = searchParams.get('displayedFields') ?? JSON.stringify(getDisplayedFields(this));\n const tableLogLineState = searchParams.get('tableLogLineState');\n\n this.updateFromUrl({\n selectedLine: selectedLineUrl,\n urlColumns: urlColumnsUrl,\n vizType: vizTypeUrl,\n displayedFields: displayedFieldsUrl,\n tableLogLineState,\n });\n }\n\n public setLogsVizOption = (options: Partial = {}) => {\n if (this.logsPanelScene) {\n this.logsPanelScene.setLogsVizOption(options);\n }\n };\n\n public updateLogsPanel = () => {\n this.setState({\n panel: this.getVizPanel(),\n });\n\n // Subscribe to line filter state so we can pass the current filter between different viz\n if (this.state.panel) {\n const lineFilterScenes = sceneGraph.findDescendents(this.state.panel, LineFilterScene);\n if (lineFilterScenes.length) {\n const lineFilterScene = lineFilterScenes[0];\n this._subs.add(\n lineFilterScene.subscribeToState((newState, prevState) => {\n if (newState.lineFilter !== prevState.lineFilter) {\n this.setState({\n lineFilter: newState.lineFilter,\n });\n }\n })\n );\n }\n }\n };\n\n public setVisualizationType = (type: LogsVisualizationType) => {\n this.setState({\n visualizationType: type,\n });\n\n reportAppInteraction(\n USER_EVENTS_PAGES.service_details,\n USER_EVENTS_ACTIONS.service_details.logs_visualization_toggle,\n {\n visualisationType: type,\n }\n );\n setLogsVisualizationType(type);\n };\n\n private getVizPanel() {\n this.logsPanelScene = new LogsPanelScene({});\n\n return new SceneFlexLayout({\n direction: 'column',\n children:\n this.state.visualizationType === 'logs'\n ? [\n new SceneFlexLayout({\n children: [\n new SceneFlexItem({\n body: new LineFilterScene({ lineFilter: this.state.lineFilter }),\n xSizing: 'fill',\n }),\n ],\n }),\n new SceneFlexItem({\n height: 'calc(100vh - 220px)',\n body: this.logsPanelScene,\n }),\n ]\n : [\n new SceneFlexItem({\n body: new LineFilterScene({ lineFilter: this.state.lineFilter }),\n xSizing: 'fill',\n }),\n new SceneFlexItem({\n height: 'calc(100vh - 220px)',\n body: new LogsTableScene({}),\n }),\n ],\n });\n }\n\n public static Component = ({ model }: SceneComponentProps) => {\n const { panel } = model.useState();\n\n if (!panel) {\n return;\n }\n\n return (\n
\n \n
\n );\n };\n}\n\nconst styles = {\n panelWrapper: css({\n // Hack to select internal div\n 'section > div[class$=\"panel-content\"]': css({\n // A components withing the Logs viz sets contain, which creates a new containing block that is not body which breaks the popover menu\n contain: 'none',\n // Prevent overflow from spilling out of parent container\n overflow: 'auto',\n }),\n }),\n};\n","import { LogRowModel } from '@grafana/data';\nimport { IconButton } from '@grafana/ui';\nimport React, { MouseEvent, useCallback, useEffect, useState } from 'react';\n\ninterface Props {\n onClick(event: MouseEvent, row?: LogRowModel): void;\n}\n\nexport const CopyLinkButton = ({ onClick }: Props) => {\n const [copied, setCopied] = useState(false);\n\n useEffect(() => {\n let timeoutId: ReturnType;\n\n if (copied) {\n timeoutId = setTimeout(() => {\n setCopied(false);\n }, 2000);\n }\n\n return () => {\n clearTimeout(timeoutId);\n };\n }, [copied]);\n\n const handleClick = useCallback(\n (event: MouseEvent, row?: LogRowModel) => {\n onClick(event, row);\n setCopied(true);\n },\n [onClick]\n );\n\n return (\n \n );\n};\n","import React from 'react';\nimport { GrotError } from 'Components/GrotError';\nimport { Button } from '@grafana/ui';\n\ninterface Props {\n clearFilters(): void;\n error: string;\n}\n\nexport const LogsPanelError = ({ clearFilters, error }: Props) => {\n return (\n \n
\n

{error}

\n \n
\n
\n );\n};\n","import {\n AdHocFiltersVariable,\n PanelBuilders,\n SceneComponentProps,\n sceneGraph,\n SceneObjectBase,\n SceneObjectState,\n SceneObjectUrlSyncConfig,\n SceneObjectUrlValues,\n SceneQueryRunner,\n VizPanel,\n} from '@grafana/scenes';\nimport { DataFrame, getValueFormat, LoadingState, LogRowModel, PanelData } from '@grafana/data';\nimport { getLogOption, getLogsVolumeOption, setDisplayedFields } from '../../services/store';\nimport React, { MouseEvent } from 'react';\nimport { LogsListScene } from './LogsListScene';\nimport { LoadingPlaceholder, useStyles2 } from '@grafana/ui';\nimport { addToFilters, FilterType } from './Breakdowns/AddToFiltersButton';\nimport { getVariableForLabel } from '../../services/fields';\nimport { VAR_FIELDS, VAR_LABELS, VAR_LEVELS, VAR_METADATA } from '../../services/variables';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from '../../services/analytics';\nimport {\n getAdHocFiltersVariable,\n getLineFiltersVariable,\n getValueFromFieldsFilter,\n} from '../../services/variableGetters';\nimport { copyText, generateLogShortlink, resolveRowTimeRangeForSharing } from 'services/text';\nimport { CopyLinkButton } from './CopyLinkButton';\nimport { getLogsPanelSortOrderFromStore, LogOptionsScene } from './LogOptionsScene';\nimport { LogsVolumePanel, logsVolumePanelKey } from './LogsVolumePanel';\nimport { getPanelWrapperStyles, PanelMenu } from '../Panels/PanelMenu';\nimport { ServiceScene } from './ServiceScene';\nimport { LineFilterCaseSensitive, LineFilterOp } from '../../services/filterTypes';\nimport { Options } from '@grafana/schema/dist/esm/raw/composable/logs/panelcfg/x/LogsPanelCfg_types.gen';\nimport { locationService } from '@grafana/runtime';\nimport { narrowLogsSortOrder } from '../../services/narrowing';\nimport { logger } from '../../services/logger';\nimport { LogsSortOrder } from '@grafana/schema';\nimport { getPrettyQueryExpr } from 'services/scenes';\nimport { LogsPanelError } from './LogsPanelError';\nimport { clearVariables } from 'services/variableHelpers';\nimport { isEmptyLogsResult } from 'services/logsFrame';\n\ninterface LogsPanelSceneState extends SceneObjectState {\n body?: VizPanel;\n error?: string;\n logsVolumeCollapsedByError?: boolean;\n sortOrder?: LogsSortOrder;\n wrapLogMessage?: boolean;\n}\n\nexport class LogsPanelScene extends SceneObjectBase {\n protected _urlSync = new SceneObjectUrlSyncConfig(this, {\n keys: ['sortOrder', 'wrapLogMessage'],\n });\n\n constructor(state: Partial) {\n super({\n sortOrder: getLogsPanelSortOrderFromStore(),\n wrapLogMessage: Boolean(getLogOption('wrapLogMessage', false)),\n error: undefined,\n ...state,\n });\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n private setStateFromUrl() {\n const searchParams = new URLSearchParams(locationService.getLocation().search);\n\n this.updateFromUrl({\n sortOrder: searchParams.get('sortOrder'),\n wrapLogMessage: searchParams.get('wrapLogMessage'),\n });\n }\n\n getUrlState() {\n return {\n sortOrder: JSON.stringify(this.state.sortOrder),\n wrapLogMessage: JSON.stringify(this.state.wrapLogMessage),\n };\n }\n\n updateFromUrl(values: SceneObjectUrlValues) {\n const stateUpdate: Partial = {};\n try {\n if (typeof values.sortOrder === 'string' && values.sortOrder) {\n const decodedSortOrder = narrowLogsSortOrder(JSON.parse(values.sortOrder));\n if (decodedSortOrder) {\n stateUpdate.sortOrder = decodedSortOrder;\n this.setLogsVizOption({ sortOrder: decodedSortOrder });\n }\n }\n\n if (typeof values.wrapLogMessage === 'string' && values.wrapLogMessage) {\n const decodedWrapLogMessage = JSON.parse(values.wrapLogMessage);\n if (typeof decodedWrapLogMessage === 'boolean') {\n stateUpdate.wrapLogMessage = decodedWrapLogMessage;\n this.setLogsVizOption({ wrapLogMessage: decodedWrapLogMessage });\n this.setLogsVizOption({ prettifyLogMessage: decodedWrapLogMessage });\n }\n }\n } catch (e) {\n // URL Params can be manually changed and it will make JSON.parse() fail.\n logger.error(e, { msg: 'LogOptionsScene: updateFromUrl unexpected error' });\n }\n\n if (Object.keys(stateUpdate).length) {\n this.setState({ ...stateUpdate });\n }\n }\n\n public onActivate() {\n // Need viz to set options, but setting options will trigger query\n this.setStateFromUrl();\n\n if (!this.state.body) {\n this.setState({\n body: this.getLogsPanel({\n wrapLogMessage: this.state.wrapLogMessage,\n prettifyLogMessage: this.state.wrapLogMessage,\n sortOrder: this.state.sortOrder,\n }),\n });\n }\n\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n this._subs.add(\n serviceScene.subscribeToState((newState, prevState) => {\n if (newState.$data?.state.data?.state === LoadingState.Error) {\n this.handleLogsError(newState.$data?.state.data);\n } else if (\n newState.$data?.state.data?.state === LoadingState.Done &&\n isEmptyLogsResult(newState.$data?.state.data.series)\n ) {\n this.handleNoData();\n } else if (this.state.error) {\n this.clearLogsError();\n }\n if (newState.logsCount !== prevState.logsCount) {\n if (!this.state.body) {\n this.setState({\n body: this.getLogsPanel({\n wrapLogMessage: this.state.wrapLogMessage,\n prettifyLogMessage: this.state.wrapLogMessage,\n sortOrder: this.state.sortOrder,\n }),\n });\n } else {\n this.state.body.setState({\n title: this.getTitle(newState.logsCount),\n });\n }\n }\n })\n );\n }\n\n handleLogsError(data: PanelData) {\n const error = data.errors?.length ? data.errors[0] : data.error;\n const errorResponse = error?.message;\n if (errorResponse) {\n logger.error(new Error('Logs Panel error'), {\n msg: errorResponse,\n status: error.statusText ?? 'N/A',\n type: error.type ?? 'N/A',\n });\n }\n\n let errorMessage = 'Unexpected error response. Please review your filters or try a different time range.';\n if (errorResponse?.includes('parse error')) {\n errorMessage =\n 'Logs could not be retrieved due to invalid filter parameters. Please review your filters and try again.';\n } else if (errorResponse?.includes('response larger than the max message size')) {\n errorMessage =\n 'The response is too large to process. Try narrowing your search or using filters to reduce the data size.';\n }\n\n this.showLogsError(errorMessage);\n }\n\n handleNoData() {\n this.showLogsError('No logs match your search. Please review your filters or try a different time range.');\n }\n\n showLogsError(error: string) {\n const logsVolumeCollapsedByError = this.state.logsVolumeCollapsedByError ?? !getLogsVolumeOption('collapsed');\n\n this.setState({ error, logsVolumeCollapsedByError });\n\n if (logsVolumeCollapsedByError) {\n const logsVolume = sceneGraph.findByKeyAndType(this, logsVolumePanelKey, LogsVolumePanel);\n logsVolume.state.panel?.setState({ collapsed: true });\n }\n }\n\n clearLogsError() {\n if (this.state.logsVolumeCollapsedByError) {\n const logsVolume = sceneGraph.findByKeyAndType(this, logsVolumePanelKey, LogsVolumePanel);\n logsVolume.state.panel?.setState({ collapsed: false });\n }\n\n this.setState({ error: undefined, logsVolumeCollapsedByError: undefined });\n }\n\n onClickShowField = (field: string) => {\n const parent = this.getParentScene();\n const index = parent.state.displayedFields.indexOf(field);\n\n if (index === -1 && this.state.body) {\n const displayedFields = [...parent.state.displayedFields, field];\n this.setLogsVizOption({\n displayedFields,\n });\n parent.setState({ displayedFields });\n setDisplayedFields(this, parent.state.displayedFields);\n\n reportAppInteraction(\n USER_EVENTS_PAGES.service_details,\n USER_EVENTS_ACTIONS.service_details.logs_toggle_displayed_field\n );\n }\n };\n\n onClickHideField = (field: string) => {\n const parent = this.getParentScene();\n const index = parent.state.displayedFields.indexOf(field);\n\n if (index >= 0 && this.state.body) {\n const displayedFields = parent.state.displayedFields.filter((displayedField) => field !== displayedField);\n this.setLogsVizOption({\n displayedFields,\n });\n parent.setState({ displayedFields });\n setDisplayedFields(this, parent.state.displayedFields);\n\n reportAppInteraction(\n USER_EVENTS_PAGES.service_details,\n USER_EVENTS_ACTIONS.service_details.logs_toggle_displayed_field\n );\n }\n };\n\n setLogsVizOption(options: Partial = {}) {\n if (!this.state.body) {\n return;\n }\n if ('sortOrder' in options && options.sortOrder !== this.state.body.state.options.sortOrder) {\n const $data = sceneGraph.getData(this);\n const queryRunner =\n $data instanceof SceneQueryRunner ? $data : sceneGraph.findDescendents($data, SceneQueryRunner)[0];\n if (queryRunner) {\n queryRunner.runQueries();\n }\n }\n this.state.body.onOptionsChange(options);\n }\n\n clearDisplayedFields = () => {\n if (!this.state.body) {\n return;\n }\n this.setLogsVizOption({\n displayedFields: [],\n });\n setDisplayedFields(this, []);\n };\n\n private getParentScene() {\n return sceneGraph.getAncestor(this, LogsListScene);\n }\n\n private getTitle(logsCount: number | undefined) {\n const valueFormatter = getValueFormat('short');\n const formattedCount = logsCount !== undefined ? valueFormatter(logsCount, 0) : undefined;\n return formattedCount !== undefined ? `Logs (${formattedCount.text}${formattedCount.suffix?.trim()})` : 'Logs';\n }\n\n private getLogsPanel(options: Partial) {\n const parentModel = this.getParentScene();\n const visualizationType = parentModel.state.visualizationType;\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n return (\n PanelBuilders.logs()\n .setTitle(this.getTitle(serviceScene.state.logsCount))\n .setOption('showTime', true)\n .setOption('onClickFilterLabel', this.handleLabelFilterClick)\n .setOption('onClickFilterOutLabel', this.handleLabelFilterOutClick)\n .setOption('isFilterLabelActive', this.handleIsFilterLabelActive)\n .setOption('onClickFilterString', this.handleFilterStringClick)\n .setOption('onClickFilterOutString', this.handleFilterOutStringClick)\n .setOption('onClickShowField', this.onClickShowField)\n .setOption('onClickHideField', this.onClickHideField)\n .setOption('displayedFields', parentModel.state.displayedFields)\n .setOption('sortOrder', options.sortOrder ?? getLogsPanelSortOrderFromStore())\n .setOption('wrapLogMessage', options.wrapLogMessage ?? Boolean(getLogOption('wrapLogMessage', false)))\n .setOption(\n 'prettifyLogMessage',\n options.prettifyLogMessage ?? Boolean(getLogOption('wrapLogMessage', false))\n )\n .setMenu(\n new PanelMenu({\n investigationOptions: { type: 'logs', getLabelName: () => `Logs: ${getPrettyQueryExpr(serviceScene)}` },\n })\n )\n .setOption('showLogContextToggle', true)\n // @ts-expect-error Requires Grafana 11.5\n .setOption('enableInfiniteScrolling', true)\n // @ts-expect-error Grafana 11.5\n .setOption('onNewLogsReceived', this.updateVisibleRange)\n // @ts-expect-error Grafana 11.5\n .setOption('logRowMenuIconsAfter', [])\n\n .setHeaderActions(\n new LogOptionsScene({ visualizationType, onChangeVisualizationType: parentModel.setVisualizationType })\n )\n .build()\n );\n }\n\n private updateVisibleRange = (newLogs: DataFrame[]) => {\n // Update logs count\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n serviceScene.setState({\n logsCount: newLogs[0].length,\n });\n\n if (serviceScene.state.$data?.state.data?.series) {\n // We need to update the state with the new data without triggering state-dependent changes.\n serviceScene.state.$data.setState({\n ...serviceScene.state.$data.state,\n data: {\n ...serviceScene.state.$data.state.data,\n series: newLogs,\n },\n });\n }\n\n const logsVolumeScene = sceneGraph.findByKeyAndType(this, logsVolumePanelKey, LogsVolumePanel);\n logsVolumeScene.updateVisibleRange(newLogs);\n };\n\n private handleShareLogLineClick = (event: MouseEvent, row?: LogRowModel) => {\n if (row?.rowId && this.state.body) {\n const parent = this.getParentScene();\n const timeRange = resolveRowTimeRangeForSharing(row);\n copyText(\n generateLogShortlink(\n 'panelState',\n {\n logs: { id: row.uid, displayedFields: parent.state.displayedFields },\n },\n timeRange\n )\n );\n }\n };\n\n private handleLabelFilterClick = (key: string, value: string, frame?: DataFrame) => {\n this.handleLabelFilter(key, value, frame, 'toggle');\n };\n\n private handleLabelFilterOutClick = (key: string, value: string, frame?: DataFrame) => {\n this.handleLabelFilter(key, value, frame, 'exclude');\n };\n\n private handleIsFilterLabelActive = (key: string, value: string) => {\n const labels = getAdHocFiltersVariable(VAR_LABELS, this);\n const fields = getAdHocFiltersVariable(VAR_FIELDS, this);\n const levels = getAdHocFiltersVariable(VAR_LEVELS, this);\n const metadata = getAdHocFiltersVariable(VAR_METADATA, this);\n\n const hasKeyValueFilter = (filter: AdHocFiltersVariable | null) => {\n return (\n filter &&\n filter.state.filters.findIndex(\n (filter) => filter.operator === '=' && filter.key === key && filter.value === value\n ) >= 0\n );\n };\n\n // Fields have json encoded values unlike the other variables, get the value for the matching filter and parse it before comparing\n const hasKeyValueFilterField = (filter: AdHocFiltersVariable | null) => {\n if (filter) {\n const fieldFilter = filter.state.filters.find((filter) => filter.operator === '=' && filter.key === key);\n\n if (fieldFilter) {\n const fieldValue = getValueFromFieldsFilter(fieldFilter, key);\n return fieldValue.value === value;\n }\n }\n return false;\n };\n\n return (\n hasKeyValueFilter(labels) ||\n hasKeyValueFilterField(fields) ||\n hasKeyValueFilter(levels) ||\n hasKeyValueFilter(metadata)\n );\n };\n\n private handleFilterOutStringClick = (value: string) => {\n const lineFiltersVar = getLineFiltersVariable(this);\n if (lineFiltersVar) {\n lineFiltersVar.setState({\n filters: [\n ...lineFiltersVar.state.filters,\n {\n operator: LineFilterOp.negativeMatch,\n value,\n key: LineFilterCaseSensitive.caseSensitive,\n keyLabel: lineFiltersVar.state.filters.length.toString(),\n },\n ],\n });\n reportAppInteraction(\n USER_EVENTS_PAGES.service_details,\n USER_EVENTS_ACTIONS.service_details.logs_popover_line_filter,\n {\n selectionLength: value.length,\n }\n );\n }\n };\n\n private handleFilterStringClick = (value: string) => {\n const lineFiltersVar = getLineFiltersVariable(this);\n if (lineFiltersVar) {\n lineFiltersVar.setState({\n filters: [\n ...lineFiltersVar.state.filters,\n {\n operator: LineFilterOp.match,\n value,\n key: LineFilterCaseSensitive.caseSensitive,\n keyLabel: lineFiltersVar.state.filters.length.toString(),\n },\n ],\n });\n reportAppInteraction(\n USER_EVENTS_PAGES.service_details,\n USER_EVENTS_ACTIONS.service_details.logs_popover_line_filter,\n {\n selectionLength: value.length,\n }\n );\n }\n };\n\n private handleLabelFilter(key: string, value: string, frame: DataFrame | undefined, operator: FilterType) {\n const variableType = getVariableForLabel(frame, key, this);\n addToFilters(key, value, operator, this, variableType);\n\n reportAppInteraction(\n USER_EVENTS_PAGES.service_details,\n USER_EVENTS_ACTIONS.service_details.logs_detail_filter_applied,\n {\n filterType: variableType,\n key,\n action: operator,\n }\n );\n }\n\n public static Component = ({ model }: SceneComponentProps) => {\n const { body, error } = model.useState();\n const styles = useStyles2(getPanelWrapperStyles);\n if (body) {\n return (\n \n {!error && }\n {error && clearVariables(body)} />}\n \n );\n }\n return ;\n };\n}\n","import React from 'react';\n\nimport { SceneComponentProps, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport { usePluginComponent } from '@grafana/runtime';\nimport { VAR_LABELS } from 'services/variables';\nimport { getAdHocFiltersVariable } from 'services/variableGetters';\nimport { AdHocVariableFilter } from '@grafana/data';\nimport { getDataSource } from 'services/scenes';\n\ninterface LogsVolumeActionsState extends SceneObjectState {}\n\nexport class LogsVolumeActions extends SceneObjectBase {\n static Component = Component;\n}\n\ntype StreamSelector = Pick;\n\ntype TemporaryExemptionsProps = {\n /** An ordered list of lower-case [a-z]+ string identifiers to provide context clues of where this component is being embedded and how we might want to consider displaying it */\n contextHints?: string[];\n /** Currently selected data source */\n dataSourceUid?: string;\n /** The stream selector, broken down into a list of structured subselector filter items */\n streamSelector?: StreamSelector[];\n};\n\nfunction Component({ model }: SceneComponentProps) {\n const { component: TemporaryExemptionsButton, isLoading } = usePluginComponent(\n 'grafana-adaptivelogs-app/temporary-exemptions/v1'\n );\n\n const labelsVar = getAdHocFiltersVariable(VAR_LABELS, model);\n const { filters } = labelsVar.useState();\n const streamSelector = filters.map(({ key, operator, value }: AdHocVariableFilter) => ({ key, operator, value }));\n\n const dataSourceUid = getDataSource(model);\n\n if (isLoading || !TemporaryExemptionsButton) {\n return null;\n }\n\n return (\n \n );\n}\n","import React from 'react';\n\nimport {\n PanelBuilders,\n SceneComponentProps,\n SceneFlexLayout,\n sceneGraph,\n SceneObjectBase,\n SceneObjectState,\n VizPanel,\n} from '@grafana/scenes';\nimport { LegendDisplayMode, PanelContext, SeriesVisibilityChangeMode, useStyles2 } from '@grafana/ui';\nimport { getQueryRunner, setLogsVolumeFieldConfigs, syncLevelsVisibleSeries } from 'services/panel';\nimport { buildDataQuery, LINE_LIMIT } from 'services/query';\nimport { LEVEL_VARIABLE_VALUE } from 'services/variables';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from 'services/analytics';\nimport { getTimeSeriesExpr } from '../../services/expressions';\nimport { toggleLevelFromFilter } from 'services/levels';\nimport { DataFrame, getValueFormat, LoadingState } from '@grafana/data';\nimport { getFieldsVariable, getLabelsVariable, getLevelsVariable } from '../../services/variableGetters';\nimport { areArraysEqual } from '../../services/comparison';\nimport { getPanelWrapperStyles, PanelMenu } from '../Panels/PanelMenu';\nimport { ServiceScene } from './ServiceScene';\nimport { getSeriesVisibleRange, getVisibleRangeFrame } from 'services/logsFrame';\nimport { getLogsVolumeOption, setLogsVolumeOption } from 'services/store';\nimport { IndexScene } from '../IndexScene/IndexScene';\nimport { LogsVolumeActions } from './LogsVolumeActions';\nimport { AddFilterEvent } from './Breakdowns/AddToFiltersButton';\nimport { LevelsVariableScene } from '../IndexScene/LevelsVariableScene';\n\nexport interface LogsVolumePanelState extends SceneObjectState {\n panel?: VizPanel;\n}\n\nexport const logsVolumePanelKey = 'logs-volume-panel';\nexport class LogsVolumePanel extends SceneObjectBase {\n private updatedLogSeries: DataFrame[] | null = null;\n constructor(state: LogsVolumePanelState) {\n super({\n ...state,\n key: logsVolumePanelKey,\n });\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n private onActivate() {\n if (!this.state.panel) {\n const panel = this.getVizPanel();\n this.setState({\n panel,\n });\n this.updateContainerHeight(panel);\n }\n\n const labels = getLabelsVariable(this);\n const fields = getFieldsVariable(this);\n\n // Set panel on labels variable filter update\n this._subs.add(\n labels.subscribeToState((newState, prevState) => {\n if (!areArraysEqual(newState.filters, prevState.filters)) {\n this.setState({\n panel: this.getVizPanel(),\n });\n }\n })\n );\n\n // Set Panel on fields variable filter update\n this._subs.add(\n fields.subscribeToState((newState, prevState) => {\n if (!areArraysEqual(newState.filters, prevState.filters)) {\n this.setState({\n panel: this.getVizPanel(),\n });\n }\n })\n );\n\n // trigger variable render on AddFilterEvent, set filter state to trigger logs panel query\n this._subs.add(\n this.subscribeToEvent(AddFilterEvent, (event) => {\n if (event.key === LEVEL_VARIABLE_VALUE) {\n const levelsVariableScene = sceneGraph.findObject(this, (obj) => obj instanceof LevelsVariableScene);\n if (levelsVariableScene instanceof LevelsVariableScene) {\n const levelsVar = getLevelsVariable(this);\n levelsVar.setState({ filters: levelsVar.state.filters });\n }\n }\n })\n );\n }\n\n private getTitle(totalLogsCount: number | undefined, logsCount: number | undefined) {\n const indexScene = sceneGraph.getAncestor(this, IndexScene);\n const maxLines = indexScene.state.ds?.maxLines ?? LINE_LIMIT;\n const valueFormatter = getValueFormat('short');\n const formattedTotalCount = totalLogsCount !== undefined ? valueFormatter(totalLogsCount, 0) : undefined;\n // The instant query (totalLogsCount) doesn't return good results for small result sets, if we're below the max number of lines, use the logs query result instead.\n if (totalLogsCount === undefined && logsCount !== undefined && logsCount < maxLines) {\n const formattedCount = valueFormatter(logsCount, 0);\n return formattedCount !== undefined\n ? `Log volume (${formattedCount.text}${formattedCount.suffix?.trim()})`\n : 'Log volume';\n }\n return formattedTotalCount !== undefined\n ? `Log volume (${formattedTotalCount.text}${formattedTotalCount.suffix?.trim()})`\n : 'Log volume';\n }\n\n private getVizPanel() {\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n const viz = PanelBuilders.timeseries()\n .setTitle(this.getTitle(serviceScene.state.totalLogsCount, serviceScene.state.logsCount))\n .setOption('legend', { showLegend: true, calcs: ['sum'], displayMode: LegendDisplayMode.List })\n .setUnit('short')\n .setMenu(new PanelMenu({ investigationOptions: { labelName: 'level' } }))\n .setCollapsible(true)\n .setCollapsed(getLogsVolumeOption('collapsed'))\n .setHeaderActions(new LogsVolumeActions({}))\n // 11.5\n // .setShowMenuAlways(true)\n .setData(\n getQueryRunner([\n buildDataQuery(getTimeSeriesExpr(this, LEVEL_VARIABLE_VALUE, false), {\n legendFormat: `{{${LEVEL_VARIABLE_VALUE}}}`,\n }),\n ])\n );\n\n setLogsVolumeFieldConfigs(viz);\n\n const panel = viz.build();\n panel.setState({\n extendPanelContext: (_, context) => this.extendTimeSeriesLegendBus(context),\n });\n\n this._subs.add(\n panel.subscribeToState((newState, prevState) => {\n if (newState.collapsed !== prevState.collapsed) {\n this.updateContainerHeight(panel);\n setLogsVolumeOption('collapsed', newState.collapsed ? 'true' : undefined);\n }\n })\n );\n\n this._subs.add(\n panel.state.$data?.subscribeToState((newState) => {\n if (newState.data?.state !== LoadingState.Done) {\n return;\n }\n if (serviceScene.state.$data?.state.data?.state === LoadingState.Done && !newState.data.annotations?.length) {\n this.updateVisibleRange(serviceScene.state.$data?.state.data?.series);\n } else {\n this.displayVisibleRange();\n }\n syncLevelsVisibleSeries(panel, newState.data.series, this);\n })\n );\n\n this._subs.add(\n serviceScene.state.$data?.subscribeToState((newState) => {\n if (newState.data?.state === LoadingState.Done) {\n this.updateVisibleRange(newState.data.series);\n }\n })\n );\n\n this._subs.add(\n serviceScene.subscribeToState((newState, prevState) => {\n if (newState.totalLogsCount !== prevState.totalLogsCount || newState.logsCount !== undefined) {\n if (!this.state.panel) {\n this.setState({\n panel: this.getVizPanel(),\n });\n } else {\n this.state.panel.setState({\n title: this.getTitle(newState.totalLogsCount, newState.logsCount),\n });\n }\n }\n })\n );\n\n return panel;\n }\n\n public updateContainerHeight(panel: VizPanel) {\n const containerLayout = sceneGraph.getAncestor(panel, SceneFlexLayout);\n const height = panel.state.collapsed ? 35 : Math.max(Math.round(window.innerHeight * 0.2), 100);\n containerLayout.setState({\n minHeight: height,\n height: height,\n maxHeight: height,\n });\n }\n\n public updateVisibleRange(data: DataFrame[] = []) {\n this.updatedLogSeries = data;\n this.displayVisibleRange();\n }\n\n private displayVisibleRange() {\n const panel = this.state.panel;\n if (\n !panel ||\n !panel.state.$data?.state.data ||\n panel.state.$data?.state.data.state !== LoadingState.Done ||\n !this.updatedLogSeries\n ) {\n return;\n }\n const visibleRange = getSeriesVisibleRange(this.updatedLogSeries);\n this.updatedLogSeries = null;\n panel.state.$data.setState({\n data: {\n ...panel.state.$data.state.data,\n annotations: [getVisibleRangeFrame(visibleRange.start, visibleRange.end)],\n },\n });\n }\n\n private extendTimeSeriesLegendBus = (context: PanelContext) => {\n const levelFilter = getLevelsVariable(this);\n this._subs.add(\n levelFilter?.subscribeToState(() => {\n const panel = this.state.panel;\n if (!panel?.state.$data?.state.data?.series) {\n return;\n }\n\n syncLevelsVisibleSeries(panel, panel?.state.$data?.state.data?.series, this);\n })\n );\n\n context.onToggleSeriesVisibility = (label: string, mode: SeriesVisibilityChangeMode) => {\n const action = toggleLevelFromFilter(label, this);\n this.publishEvent(new AddFilterEvent('legend', 'include', LEVEL_VARIABLE_VALUE, label), true);\n\n reportAppInteraction(\n USER_EVENTS_PAGES.service_details,\n USER_EVENTS_ACTIONS.service_details.level_in_logs_volume_clicked,\n {\n level: label,\n action,\n }\n );\n };\n };\n\n public static Component = ({ model }: SceneComponentProps) => {\n const { panel } = model.useState();\n if (!panel) {\n return;\n }\n const styles = useStyles2(getPanelWrapperStyles);\n\n return (\n \n \n \n );\n };\n}\n","import { sceneGraph, SceneObjectState } from '@grafana/scenes';\nimport { IndexScene } from '../../../IndexScene/IndexScene';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from 'services/analytics';\nimport { logger } from '../../../../services/logger';\nimport { addCurrentUrlToHistory } from '../../../../services/navigate';\n\nexport interface FilterByPatternsButtonState extends SceneObjectState {\n pattern: string;\n type: 'exclude' | 'include' | 'undo';\n}\n\nexport interface FilterByPatternsState extends FilterByPatternsButtonState {\n indexScene: IndexScene;\n}\n\nexport function onPatternClick(props: FilterByPatternsState) {\n const { indexScene: staleIndex, pattern, type } = { ...props };\n\n const indexScene = sceneGraph.getAncestor(staleIndex, IndexScene);\n\n if (!indexScene) {\n logger.warn('logs exploration scene not found');\n return;\n }\n\n addCurrentUrlToHistory();\n const { patterns = [] } = indexScene.state;\n\n // Remove the pattern if it's already there\n const filteredPatterns = patterns.filter((pat) => pat.pattern !== pattern);\n // Analytics\n const includePatternsLength = filteredPatterns.filter((p) => p.type === 'include')?.length ?? 0;\n const excludePatternsLength = filteredPatterns.filter((p) => p.type === 'exclude')?.length ?? 0;\n reportAppInteraction(USER_EVENTS_PAGES.service_details, USER_EVENTS_ACTIONS.service_details.pattern_selected, {\n type: type,\n includePatternsLength: includePatternsLength + (type === 'include' ? 1 : 0),\n excludePatternsLength: excludePatternsLength + (type === 'exclude' ? 1 : 0),\n });\n\n // If we have type undo, then we don't need to add the pattern\n if (type === 'undo') {\n indexScene.setState({\n patterns: filteredPatterns,\n });\n } else {\n // Otherwise, add the pattern\n indexScene.setState({\n patterns: [...filteredPatterns, { pattern: pattern, type: type }],\n });\n }\n}\n","import { css } from '@emotion/css';\nimport React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { useStyles2 } from '@grafana/ui';\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n logsStatsRow: css({\n margin: `${theme.spacing(1.15)}px 0`,\n }),\n logsStatsRowActive: css({\n color: theme.colors.primary.text,\n position: 'relative',\n }),\n logsStatsRowLabel: css({\n display: 'flex',\n marginBottom: '1px',\n }),\n logsStatsRowValue: css({\n flex: 1,\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n }),\n logsStatsRowCount: css({\n textAlign: 'right',\n marginLeft: theme.spacing(0.75),\n }),\n logsStatsRowPercent: css({\n textAlign: 'right',\n marginLeft: theme.spacing(0.75),\n width: theme.spacing(4.5),\n }),\n logsStatsRowBar: css({\n height: theme.spacing(0.5),\n overflow: 'hidden',\n background: theme.colors.text.disabled,\n }),\n logsStatsRowInnerBar: css({\n height: theme.spacing(0.5),\n overflow: 'hidden',\n background: theme.colors.primary.main,\n }),\n});\n\nexport interface Props {\n active?: boolean;\n count: number;\n proportion: number;\n value?: string;\n}\n\nexport const PatternFieldLabelStatsRow = ({ active, count, proportion, value }: Props) => {\n const style = useStyles2(getStyles);\n const percent = `${Math.round(proportion * 100)}%`;\n const barStyle = { width: percent };\n\n return (\n
\n
\n
\n {value}\n
\n
{count}
\n
{percent}
\n
\n
\n
\n
\n
\n );\n};\n","import { css } from '@emotion/css';\nimport React from 'react';\n\nimport { LogLabelStatsModel, GrafanaTheme2 } from '@grafana/data';\nimport { useStyles2 } from '@grafana/ui';\n\n//Components\nimport { PatternFieldLabelStatsRow } from './PatternFieldLabelStatsRow';\n\nconst STATS_ROW_LIMIT = 10;\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n logsStats: css({\n background: 'inherit',\n color: theme.colors.text.primary,\n wordBreak: 'break-all',\n width: 'fit-content',\n maxHeight: '40vh',\n overflowY: 'auto',\n marginTop: theme.spacing(1),\n }),\n logsStatsHeader: css({\n borderBottom: `1px solid ${theme.colors.border.medium}`,\n display: 'flex',\n }),\n logsStatsTitle: css({\n fontWeight: theme.typography.fontWeightMedium,\n paddingRight: theme.spacing(2),\n display: 'inline-block',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n flexGrow: 1,\n }),\n logsStatsClose: css({\n cursor: 'pointer',\n }),\n logsStatsBody: css({\n padding: '5px 0px',\n }),\n});\n\ninterface PatternFieldLabelStatsProps {\n stats: LogLabelStatsModel[];\n value: string;\n}\n\nexport const PatternFieldLabelStats = (props: PatternFieldLabelStatsProps) => {\n const style = useStyles2(getStyles);\n\n const { stats, value } = props;\n\n const topRows = stats.slice(0, STATS_ROW_LIMIT);\n let activeRow = topRows.find((row) => row.value === value);\n let otherRows = stats.slice(STATS_ROW_LIMIT);\n const insertActiveRow = !activeRow;\n\n // Remove active row from other to show extra\n if (insertActiveRow) {\n activeRow = otherRows.find((row) => row.value === value);\n otherRows = otherRows.filter((row) => row.value !== value);\n }\n\n const otherCount = otherRows.reduce((sum, row) => sum + row.count, 0);\n const topCount = topRows.reduce((sum, row) => sum + row.count, 0);\n const total = topCount + otherCount;\n\n // Combine topRows and otherRows\n let combinedRows = [...topRows];\n\n // If there's an \"Other\" category, add it to combinedRows\n if (otherCount > 0) {\n combinedRows.push({ value: 'Other', count: otherCount, proportion: otherCount / total });\n }\n\n // Sort combinedRows by count in descending order\n combinedRows.sort((a, b) => b.count - a.count);\n\n return (\n
\n
\n
From a sample of {total} rows found
\n
\n
\n {combinedRows.map((stat) => (\n \n ))}\n
\n
\n );\n};\n","import React, { useMemo, useRef, useState } from 'react';\nimport { AdHocFiltersVariable, sceneGraph } from '@grafana/scenes';\nimport { Spinner, Toggletip, useStyles2 } from '@grafana/ui';\nimport { getLokiDatasource } from 'services/scenes';\nimport { IndexScene } from 'Components/IndexScene/IndexScene';\nimport { buildDataQuery } from 'services/query';\nimport { PatternFieldLabelStats } from './PatternFieldLabelStats';\nimport { GrafanaTheme2, LoadingState, LogLabelStatsModel, TimeRange } from '@grafana/data';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from 'services/analytics';\nimport { css } from '@emotion/css';\nimport { getLabelsVariable } from '../../../../services/variableGetters';\n\ninterface PatternNameLabelProps {\n exploration: IndexScene;\n pattern: string;\n maxLines: number;\n}\n\nexport const PatternNameLabel = ({ exploration, pattern, maxLines }: PatternNameLabelProps) => {\n const patternIndices = extractPatternIndices(pattern);\n const [stats, setStats] = useState(undefined);\n const [statsError, setStatsError] = useState(false);\n const styles = useStyles2(getStyles);\n\n // Refs to store the previous values of query and timeRange\n const previousQueryRef = useRef(null);\n const previousTimeRangeRef = useRef(null);\n\n const handlePatternClick = async () => {\n reportAppInteraction(USER_EVENTS_PAGES.service_details, USER_EVENTS_ACTIONS.service_details.pattern_field_clicked);\n const query = constructQuery(pattern, patternIndices, getLabelsVariable(exploration));\n const datasource = await getLokiDatasource(exploration);\n const currentTimeRange = sceneGraph.getTimeRange(exploration).state.value;\n\n // If the query and timeRange are the same as the previous ones, do not re-query\n if (stats && query === previousQueryRef.current && currentTimeRange === previousTimeRangeRef.current) {\n return;\n }\n\n // Update the refs with the new values\n previousQueryRef.current = query;\n previousTimeRangeRef.current = currentTimeRange;\n\n datasource\n ?.query({\n requestId: '1',\n interval: '',\n intervalMs: 0,\n scopedVars: {},\n range: currentTimeRange,\n targets: [buildDataQuery(query, { maxLines })],\n timezone: '',\n app: '',\n startTime: 0,\n })\n .forEach((result) => {\n if (result.state === LoadingState.Done && !result.errors?.length) {\n setStats(convertResultToStats(result, patternIndices.length, maxLines));\n setStatsError(false);\n } else if (result.state === LoadingState.Error || result.errors?.length) {\n setStats(undefined);\n setStatsError(true);\n }\n });\n };\n\n const parts = useMemo(() => pattern.split('<_>'), [pattern]);\n\n return (\n
\n {parts.map((part, index) => (\n \n {part}\n {index !== patternIndices.length && (\n \n {stats && stats[index].length > 0 && }\n {stats && stats[index].length === 0 && (\n
No available stats for this field in the current timestamp.
\n )}\n {!stats && statsError &&
Could not load stats for this pattern.
}\n {!stats && !statsError && (\n
\n \n
\n )}\n \n }\n >\n <_>\n \n )}\n
\n ))}\n
\n );\n};\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n pattern: css({\n cursor: 'pointer',\n backgroundColor: theme.colors.emphasize(theme.colors.background.primary, 0.1),\n margin: '0 2px',\n\n '&:hover': {\n backgroundColor: theme.colors.emphasize(theme.colors.background.primary, 0.2),\n },\n }),\n };\n}\n\n// Convert the result to statistics data structure\nfunction convertResultToStats(result: any, fieldCount: number, maxLines: number): LogLabelStatsModel[][] {\n const fieldStatsMap = new Map>();\n\n // Populate the fieldStatsMap with values from the result\n result.data[0].fields[0].values.toArray().forEach((value: Record) => {\n Object.keys(value).forEach((key) => {\n if (!fieldStatsMap.has(key)) {\n fieldStatsMap.set(key, new Map());\n }\n fieldStatsMap.get(key)?.set(value[key], (fieldStatsMap.get(key)?.get(value[key]) || 0) + 1);\n });\n });\n\n const stats: LogLabelStatsModel[][] = [];\n\n // Construct stats array from fieldStatsMap\n for (let i = 0; i <= fieldCount; i++) {\n const fieldStats: LogLabelStatsModel[] = [];\n fieldStatsMap.get(`field_${i + 1}`)?.forEach((count, key) => {\n fieldStats.push({ value: key, count, proportion: count / maxLines });\n });\n fieldStats.sort((a, b) => b.count - a.count);\n stats.push(fieldStats);\n }\n\n return stats;\n}\n\n// Extract indices of the pattern '<_>' in the given string\nfunction extractPatternIndices(pattern: string): number[] {\n const indices: number[] = [];\n let currentIndex = pattern.indexOf('<_>');\n\n while (currentIndex !== -1) {\n indices.push(currentIndex);\n currentIndex = pattern.indexOf('<_>', currentIndex + 1);\n }\n return indices;\n}\n\n// Construct the query string based on pattern and other conditions\nfunction constructQuery(pattern: string, patternIndices: number[], filters: AdHocFiltersVariable): string {\n let fieldIndex = 1;\n const patternExtractor = pattern.replace(/<_>/g, () => ``);\n const filterExpression = filters.state.filterExpression;\n const fields = patternIndices.map((_value, index) => `field_${index + 1}`).join(' ,');\n return `{${filterExpression}} |> \\`${pattern}\\` | pattern \\`${patternExtractor}\\` | keep ${fields} | line_format \"\"`;\n}\n","import {\n PanelBuilders,\n SceneComponentProps,\n SceneDataProviderResult,\n SceneFlexItem,\n SceneFlexLayout,\n sceneGraph,\n SceneObjectBase,\n SceneObjectState,\n SceneReactObject,\n VizPanel,\n} from '@grafana/scenes';\nimport React from 'react';\n\nimport { LoadingState } from '@grafana/data';\nimport { Alert, Button } from '@grafana/ui';\nimport {\n AppliedPattern,\n LOG_STREAM_SELECTOR_EXPR,\n PATTERNS_SAMPLE_SELECTOR_EXPR,\n VAR_PATTERNS_EXPR,\n} from '../../../../services/variables';\nimport { buildDataQuery } from '../../../../services/query';\nimport { getQueryRunner } from '../../../../services/panel';\nimport { PatternsViewTableScene } from './PatternsViewTableScene';\nimport { emptyStateStyles } from '../FieldsBreakdownScene';\nimport { getFieldsVariable, getLevelsVariable, getLineFiltersVariable } from '../../../../services/variableGetters';\nimport { LokiQuery } from '../../../../services/lokiQuery';\nimport { logger } from '../../../../services/logger';\nimport { renderPatternFilters } from '../../../../services/renderPatternFilters';\n\ninterface PatternsLogsSampleSceneState extends SceneObjectState {\n pattern: string;\n body?: SceneFlexLayout;\n}\nexport class PatternsLogsSampleScene extends SceneObjectBase {\n constructor(state: PatternsLogsSampleSceneState) {\n super(state);\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n private onActivate() {\n if (this.state.body) {\n return;\n }\n\n // We start by querying with the users current query context\n const queryWithFilters = buildDataQuery(LOG_STREAM_SELECTOR_EXPR);\n this.replacePatternsInQuery(queryWithFilters);\n\n // but if that fails to return results, we fire the query without the filters, instead of showing no-data in the viz\n const queryRunnerWithFilters = getQueryRunner([queryWithFilters]);\n queryRunnerWithFilters.getResultsStream().subscribe((value) => {\n this.onQueryWithFiltersResult(value);\n });\n\n this.setState({\n body: new SceneFlexLayout({\n direction: 'column',\n children: [\n new SceneFlexItem({\n body: undefined,\n width: '100%',\n height: 0,\n }),\n new SceneFlexItem({\n height: 300,\n width: '100%',\n body: PanelBuilders.logs()\n .setHoverHeader(true)\n .setOption('showLogContextToggle', true)\n .setOption('showTime', true)\n .setData(queryRunnerWithFilters)\n .build(),\n }),\n ],\n }),\n });\n }\n\n private replacePatternsInQuery(queryWithFilters: LokiQuery) {\n const pendingPattern: AppliedPattern = {\n pattern: this.state.pattern,\n type: 'include',\n };\n const patternsLine = renderPatternFilters([pendingPattern]);\n queryWithFilters.expr = queryWithFilters.expr.replace(VAR_PATTERNS_EXPR, patternsLine);\n }\n\n private clearFilters = () => {\n const filterVariable = getFieldsVariable(this);\n const lineFiltersVariable = getLineFiltersVariable(this);\n const levelsVariable = getLevelsVariable(this);\n filterVariable.setState({\n filters: [],\n });\n levelsVariable.setState({\n filters: [],\n });\n if (lineFiltersVariable.state.filters.length) {\n lineFiltersVariable.setState({\n filters: [],\n });\n\n const noticeFlexItem = this.getNoticeFlexItem();\n\n // The query we just fired is already correct after we clear the filters, we just need to hide the warning, and allow filtering\n noticeFlexItem?.setState({\n isHidden: true,\n });\n\n this.removePatternFromFilterExclusion();\n }\n };\n\n private removePatternFromFilterExclusion() {\n const patternsViewTableScene = sceneGraph.getAncestor(this, PatternsViewTableScene);\n const patternsNotMatchingFilters = patternsViewTableScene.state.patternsNotMatchingFilters ?? [];\n\n const index = patternsNotMatchingFilters.findIndex((pattern) => pattern === this.state.pattern);\n\n if (index !== -1) {\n patternsNotMatchingFilters.splice(index, 1);\n // remove this pattern, as they can filter by this pattern again\n patternsViewTableScene.setState({\n patternsNotMatchingFilters: patternsNotMatchingFilters,\n });\n }\n }\n\n /**\n * If the first query with the users filters applied fails, we run another one after removing the filters\n * @param value\n */\n private onQueryError = (value: SceneDataProviderResult) => {\n if (\n (value.data.state === LoadingState.Done &&\n (value.data.series.length === 0 || value.data.series.every((frame) => frame.length === 0))) ||\n value.data.state === LoadingState.Error\n ) {\n // Logging an error so loki folks can debug why some patterns returned from the API seem to fail.\n let logContext;\n try {\n logContext = {\n pattern: this.state.pattern,\n traceIds: JSON.stringify(value.data.traceIds),\n request: JSON.stringify(value.data.request),\n msg: 'onQueryError',\n };\n } catch (e) {\n logContext = {\n pattern: this.state.pattern,\n msg: 'Failed to encode context',\n };\n }\n\n // Logging an error so loki folks can debug why some patterns returned from the API seem to fail.\n logger.error(new Error('Pattern sample query returns no results'), logContext);\n\n this.setWarningMessage(\n \n This pattern returns no logs.\n \n );\n\n const panelFlexItem = this.getVizFlexItem();\n\n // Run another query without the filters so we can still show log lines of what the pattern looks like.\n if (panelFlexItem instanceof SceneFlexItem) {\n panelFlexItem.setState({\n isHidden: true,\n });\n }\n }\n };\n\n private setWarningMessage(reactNode: React.ReactNode) {\n const noticeFlexItem = this.getNoticeFlexItem();\n const vizFlexItem = this.getVizFlexItem();\n\n if (noticeFlexItem instanceof SceneFlexItem) {\n noticeFlexItem.setState({\n isHidden: false,\n height: 'auto',\n body: new SceneReactObject({\n reactNode: reactNode,\n }),\n });\n }\n return vizFlexItem;\n }\n\n private getNoticeFlexItem() {\n const children = this.getFlexItemChildren();\n return children?.[0];\n }\n private getVizFlexItem() {\n const children = this.getFlexItemChildren();\n return children?.[1];\n }\n\n private getFlexItemChildren() {\n return this.state.body?.state.children;\n }\n\n /**\n * Callback to subscription of pattern sample query with all of the current query filters applied.\n * If this query fails to return data, we show a warning, and attempt the pattern sample query again without applying the existing filters.\n * We also add the pattern to the state of the PatternsTableViewScene so we can hide the filter buttons for this pattern, as including it would break the query\n * @param value\n */\n private onQueryWithFiltersResult = (value: SceneDataProviderResult) => {\n const queryWithoutFilters = buildDataQuery(PATTERNS_SAMPLE_SELECTOR_EXPR);\n this.replacePatternsInQuery(queryWithoutFilters);\n\n const queryRunnerWithoutFilters = getQueryRunner([queryWithoutFilters]);\n\n // Subscribe to the secondary query, so we can log errors and update the UI\n queryRunnerWithoutFilters.getResultsStream().subscribe(this.onQueryError);\n\n if (\n value.data.state === LoadingState.Done &&\n (value.data.series.length === 0 || value.data.series.every((frame) => frame.length === 0))\n ) {\n const noticeFlexItem = this.getNoticeFlexItem();\n const panelFlexItem = this.getVizFlexItem();\n\n // Add a warning notice that the patterns shown will not show up in their current log results due to their existing filters.\n if (noticeFlexItem instanceof SceneFlexItem) {\n noticeFlexItem.setState({\n isHidden: false,\n height: 'auto',\n body: new SceneReactObject({\n reactNode: (\n \n The logs returned by this pattern do not match the current query filters.\n \n \n ),\n }),\n });\n }\n\n // Run another query without the filters so we can still show log lines of what the pattern looks like.\n if (panelFlexItem instanceof SceneFlexItem) {\n const panel = panelFlexItem.state.body;\n if (panel instanceof VizPanel) {\n panel?.setState({\n $data: queryRunnerWithoutFilters,\n });\n }\n }\n this.excludeThisPatternFromFiltering();\n }\n\n if (value.data.state === LoadingState.Error) {\n this.onQueryError(value);\n }\n };\n\n private excludeThisPatternFromFiltering() {\n const patternsViewTableScene = sceneGraph.getAncestor(this, PatternsViewTableScene);\n const patternsThatDontMatchCurrentFilters = patternsViewTableScene.state.patternsNotMatchingFilters ?? [];\n\n // Add this pattern to the array of patterns that don't match current filters\n patternsViewTableScene.setState({\n patternsNotMatchingFilters: [...patternsThatDontMatchCurrentFilters, this.state.pattern],\n });\n }\n\n public static Component({ model }: SceneComponentProps) {\n const { body } = model.useState();\n if (body) {\n return ;\n }\n return null;\n }\n}\n","import React, { useEffect } from 'react';\nimport { PatternsLogsSampleScene } from './PatternsLogsSampleScene';\nimport { PatternsTableCellData, PatternsViewTableScene } from './PatternsViewTableScene';\n\ninterface ExpandedRowProps {\n tableViz: PatternsViewTableScene;\n row: PatternsTableCellData;\n}\n\nexport function PatternsTableExpandedRow({ tableViz, row }: ExpandedRowProps) {\n const { expandedRows } = tableViz.useState();\n\n const rowScene = expandedRows?.find((scene) => scene.state.key === row.pattern);\n\n useEffect(() => {\n if (!rowScene) {\n const newRowScene = buildExpandedRowScene(row.pattern);\n tableViz.setState({ expandedRows: [...(tableViz.state.expandedRows ?? []), newRowScene] });\n }\n }, [row, tableViz, rowScene]);\n\n return rowScene ? : null;\n}\n\nfunction buildExpandedRowScene(pattern: string) {\n return new PatternsLogsSampleScene({\n pattern: pattern,\n key: pattern,\n });\n}\n","import {\n PanelBuilders,\n SceneComponentProps,\n SceneDataNode,\n sceneGraph,\n SceneObject,\n SceneObjectBase,\n SceneObjectState,\n} from '@grafana/scenes';\nimport { PatternFrame } from './PatternsBreakdownScene';\nimport React from 'react';\nimport { IndexScene } from '../../../IndexScene/IndexScene';\nimport { DataFrame, GrafanaTheme2, LoadingState, PanelData, scaledUnits } from '@grafana/data';\nimport { AxisPlacement, Column, InteractiveTable, TooltipDisplayMode, useTheme2 } from '@grafana/ui';\nimport { CellProps } from 'react-table';\nimport { css, cx } from '@emotion/css';\nimport { onPatternClick } from './FilterByPatternsButton';\nimport { FilterButton } from '../../../FilterButton';\nimport { config } from '@grafana/runtime';\nimport { testIds } from '../../../../services/testIds';\nimport { PatternsFrameScene } from './PatternsFrameScene';\nimport { PatternNameLabel } from './PatternNameLabel';\nimport { getExplorationFor } from 'services/scenes';\nimport { PatternsTableExpandedRow } from './PatternsTableExpandedRow';\nimport { LINE_LIMIT } from '../../../../services/query';\nimport { AppliedPattern } from '../../../../services/variables';\n\n// copied from from grafana repository packages/grafana-data/src/valueFormats/categories.ts\n// that is used in Grafana codebase for \"short\" units\nconst SCALED_UNITS = ['', ' K', ' Mil', ' Bil', ' Tri', ' Quadr', ' Quint', ' Sext', ' Sept'];\nexport interface SingleViewTableSceneState extends SceneObjectState {\n // The local copy of the pattern frames, the parent breakdown scene decides if we get the filtered subset or not, in this scene we just present the data\n patternFrames: PatternFrame[] | undefined;\n expandedRows?: SceneObject[];\n\n // An array of patterns to exclude links\n patternsNotMatchingFilters?: string[];\n maxLines?: number;\n}\n\nexport interface PatternsTableCellData {\n pattern: string;\n dataFrame: DataFrame;\n sum: number;\n includeLink: () => void;\n excludeLink: () => void;\n undoLink: () => void;\n}\n\nexport class PatternsViewTableScene extends SceneObjectBase {\n constructor(state: SingleViewTableSceneState) {\n super(state);\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n onActivate() {\n const indexScene = sceneGraph.getAncestor(this, IndexScene);\n const maxLines = indexScene.state.ds?.maxLines;\n this.setState({ maxLines });\n }\n\n public static Component = PatternTableViewSceneComponent;\n\n /**\n * Build columns for interactive table (wrapper for react-table v7)\n * @param total\n * @param appliedPatterns\n * @param theme\n * @param patternsNotMatchingFilters\n * @protected\n */\n public buildColumns(\n total: number,\n appliedPatterns: AppliedPattern[] | undefined,\n theme: GrafanaTheme2,\n maxLines: number,\n patternsNotMatchingFilters?: string[]\n ) {\n const styles = getColumnStyles(theme);\n const timeRange = sceneGraph.getTimeRange(this).state.value;\n const columns: Array> = [\n {\n id: 'volume-samples',\n header: '',\n cell: (props: CellProps) => {\n const panelData: PanelData = {\n timeRange: timeRange,\n series: [props.cell.row.original.dataFrame],\n state: LoadingState.Done,\n };\n const dataNode = new SceneDataNode({\n data: panelData,\n });\n\n const timeSeries = PanelBuilders.timeseries()\n .setData(dataNode)\n .setHoverHeader(true)\n .setOption('tooltip', {\n mode: TooltipDisplayMode.None,\n })\n .setCustomFieldConfig('hideFrom', {\n legend: true,\n tooltip: true,\n })\n .setCustomFieldConfig('axisPlacement', AxisPlacement.Hidden)\n .setDisplayMode('transparent')\n .build();\n\n return (\n
\n
\n \n
\n
\n );\n },\n },\n {\n id: 'count',\n header: 'Count',\n sortType: 'number',\n cell: (props) => {\n const value = scaledUnits(1000, SCALED_UNITS)(props.cell.row.original.sum);\n return (\n
\n
\n {value.prefix ?? ''}\n {value.text}\n {value.suffix ?? ''}\n
\n
\n );\n },\n },\n {\n id: 'percent',\n header: '%',\n sortType: 'number',\n cell: (props) => (\n
\n
{((100 * props.cell.row.original.sum) / total).toFixed(0)}%
\n
\n ),\n },\n {\n id: 'pattern',\n header: 'Pattern',\n cell: (props: CellProps) => {\n return (\n
\n \n
\n );\n },\n },\n {\n id: 'include',\n header: undefined,\n disableGrow: true,\n cell: (props: CellProps) => {\n if (patternsNotMatchingFilters?.includes(props.cell.row.original.pattern)) {\n return undefined;\n }\n\n const existingPattern = appliedPatterns?.find(\n (appliedPattern) => appliedPattern.pattern === props.cell.row.original.pattern\n );\n const isIncluded = existingPattern?.type === 'include';\n const isExcluded = existingPattern?.type === 'exclude';\n return (\n props.cell.row.original.includeLink()}\n onExclude={() => props.cell.row.original.excludeLink()}\n onClear={() => props.cell.row.original.undoLink()}\n buttonFill={'outline'}\n />\n );\n },\n },\n ];\n return columns;\n }\n\n /**\n * Filter visible patterns in table, and return cell data for InteractiveTable\n * @param patternFrames\n * @param legendSyncPatterns\n * @private\n */\n public buildTableData(patternFrames: PatternFrame[], legendSyncPatterns: Set): PatternsTableCellData[] {\n const logExploration = sceneGraph.getAncestor(this, IndexScene);\n return patternFrames\n .filter((patternFrame) => {\n return legendSyncPatterns.size ? legendSyncPatterns.has(patternFrame.pattern) : true;\n })\n .map((pattern: PatternFrame) => {\n return {\n dataFrame: pattern.dataFrame,\n pattern: pattern.pattern,\n sum: pattern.sum,\n includeLink: () =>\n onPatternClick({\n pattern: pattern.pattern,\n type: 'include',\n indexScene: logExploration,\n }),\n excludeLink: () =>\n onPatternClick({\n pattern: pattern.pattern,\n type: 'exclude',\n indexScene: logExploration,\n }),\n undoLink: () =>\n onPatternClick({\n pattern: pattern.pattern,\n type: 'undo',\n indexScene: logExploration,\n }),\n };\n });\n }\n}\n\nconst theme = config.theme2;\n\nconst getTablePatternTextStyles = () => {\n return css({\n minWidth: '200px',\n fontFamily: theme.typography.fontFamilyMonospace,\n overflow: 'hidden',\n overflowWrap: 'break-word',\n });\n};\n\nconst getTableStyles = (theme: GrafanaTheme2) => {\n return {\n link: css({\n textDecoration: 'underline',\n }),\n tableWrap: css({\n // Override interactive table style\n '> div': {\n // Need to define explicit height for overflowX\n height: 'calc(100vh - 450px)',\n minHeight: '470px',\n },\n // Make table headers sticky\n th: {\n top: 0,\n position: 'sticky',\n backgroundColor: theme.colors.background.canvas,\n zIndex: theme.zIndex.navbarFixed,\n },\n }),\n };\n};\nconst getColumnStyles = (theme: GrafanaTheme2) => {\n return {\n tablePatternTextDefault: css({\n fontFamily: theme.typography.fontFamilyMonospace,\n minWidth: '200px',\n maxWidth: '100%',\n overflow: 'hidden',\n overflowWrap: 'break-word',\n fontSize: theme.typography.bodySmall.fontSize,\n wordBreak: 'break-word',\n }),\n countTextWrap: css({\n textAlign: 'right',\n fontSize: theme.typography.bodySmall.fontSize,\n }),\n tableTimeSeriesWrap: css({\n width: '230px',\n pointerEvents: 'none',\n }),\n tableTimeSeries: css({\n height: '30px',\n overflow: 'hidden',\n }),\n };\n};\n\nexport function PatternTableViewSceneComponent({ model }: SceneComponentProps) {\n const indexScene = sceneGraph.getAncestor(model, IndexScene);\n const { patterns: appliedPatterns } = indexScene.useState();\n const theme = useTheme2();\n const styles = getTableStyles(theme);\n\n // Get state from parent\n const patternsFrameScene = sceneGraph.getAncestor(model, PatternsFrameScene);\n const { legendSyncPatterns } = patternsFrameScene.useState();\n\n // Must use local patternFrames as the parent decides if we get the filtered or not\n const { patternFrames: patternFramesRaw, patternsNotMatchingFilters } = model.useState();\n const patternFrames = patternFramesRaw ?? [];\n\n // Calculate total for percentages\n const total = patternFrames.reduce((previousValue, frame) => {\n return previousValue + frame.sum;\n }, 0);\n\n const tableData = model.buildTableData(patternFrames, legendSyncPatterns);\n const columns = model.buildColumns(\n total,\n appliedPatterns,\n theme,\n model.state.maxLines ?? LINE_LIMIT,\n patternsNotMatchingFilters\n );\n\n return (\n
\n r.pattern}\n renderExpandedRow={(row) => }\n />\n
\n );\n}\n","import React from 'react';\n\nimport { ConfigOverrideRule, FieldColor, LoadingState } from '@grafana/data';\nimport {\n PanelBuilders,\n SceneComponentProps,\n SceneCSSGridLayout,\n SceneDataNode,\n sceneGraph,\n SceneObjectBase,\n SceneObjectState,\n VizPanel,\n} from '@grafana/scenes';\nimport { LegendDisplayMode, PanelContext, SeriesVisibilityChangeMode } from '@grafana/ui';\nimport { ServiceScene } from '../../ServiceScene';\nimport { onPatternClick } from './FilterByPatternsButton';\nimport { IndexScene } from '../../../IndexScene/IndexScene';\nimport { PatternsViewTableScene } from './PatternsViewTableScene';\nimport { config } from '@grafana/runtime';\nimport { css } from '@emotion/css';\nimport { PatternFrame, PatternsBreakdownScene } from './PatternsBreakdownScene';\nimport { areArraysEqual } from '../../../../services/comparison';\nimport { logger } from '../../../../services/logger';\n\nconst palette = config.theme2.visualization.palette;\n\nexport interface PatternsFrameSceneState extends SceneObjectState {\n body?: SceneCSSGridLayout;\n loading?: boolean;\n legendSyncPatterns: Set;\n}\n\nexport class PatternsFrameScene extends SceneObjectBase {\n constructor(state?: Partial) {\n super({\n loading: true,\n ...state,\n legendSyncPatterns: new Set(),\n });\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n // parent render\n public static Component = ({ model }: SceneComponentProps) => {\n const { body, loading } = model.useState();\n const logsByServiceScene = sceneGraph.getAncestor(model, ServiceScene);\n const { $patternsData } = logsByServiceScene.useState();\n const patterns = $patternsData?.state.data?.series;\n\n return (\n
\n {!loading && patterns && patterns.length > 0 && <>{body && }}\n
\n );\n };\n\n private onActivate() {\n this.updateBody();\n\n // If the patterns have changed, recalculate the dataframes\n this._subs.add(\n sceneGraph.getAncestor(this, ServiceScene).subscribeToState((newState, prevState) => {\n const newFrame = newState?.$patternsData?.state?.data?.series;\n const prevFrame = prevState?.$patternsData?.state?.data?.series;\n\n if (!areArraysEqual(newFrame, prevFrame)) {\n const patternsBreakdownScene = sceneGraph.getAncestor(this, PatternsBreakdownScene);\n this.updatePatterns(patternsBreakdownScene.state.patternFrames);\n\n // In order to keep the search state from clearing, we need to clear the filtered state\n patternsBreakdownScene.setState({\n filteredPatterns: undefined,\n });\n }\n })\n );\n\n // If the text search results have changed, update the components to use the filtered dataframe\n this._subs.add(\n sceneGraph.getAncestor(this, PatternsBreakdownScene).subscribeToState((newState, prevState) => {\n const patternsBreakdownScene = sceneGraph.getAncestor(this, PatternsBreakdownScene);\n if (newState.filteredPatterns && !areArraysEqual(newState.filteredPatterns, prevState.filteredPatterns)) {\n this.updatePatterns(patternsBreakdownScene.state.filteredPatterns);\n } else {\n // If there is no search string, clear the state\n if (!patternsBreakdownScene.state.patternFilter) {\n this.updatePatterns(patternsBreakdownScene.state.patternFrames);\n }\n }\n })\n );\n }\n\n private async updatePatterns(patternFrames: PatternFrame[] = []) {\n // CSS Grid doesn't need rebuilding, just the children need the updated dataframe\n this.state.body?.forEachChild((child) => {\n if (child instanceof VizPanel) {\n child.setState({\n $data: this.getTimeseriesDataNode(patternFrames),\n });\n }\n if (child instanceof PatternsViewTableScene) {\n child.setState({\n patternFrames,\n });\n }\n });\n }\n\n private async updateBody() {\n const patternsBreakdownScene = sceneGraph.getAncestor(this, PatternsBreakdownScene);\n const patternFrames = patternsBreakdownScene.state.patternFrames;\n\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n\n const lokiPatterns = serviceScene.state.$patternsData?.state.data?.series;\n if (!lokiPatterns || !patternFrames) {\n logger.warn('Failed to update PatternsFrameScene body');\n return;\n }\n\n this.setState({\n body: this.getSingleViewLayout(),\n legendSyncPatterns: new Set(),\n loading: false,\n });\n }\n\n private extendTimeSeriesLegendBus(vizPanel: VizPanel, context: PanelContext) {\n const originalOnToggleSeriesVisibility = context.onToggleSeriesVisibility;\n\n context.onToggleSeriesVisibility = (label: string, mode: SeriesVisibilityChangeMode) => {\n originalOnToggleSeriesVisibility?.(label, mode);\n\n const override: ConfigOverrideRule | undefined = vizPanel.state.fieldConfig.overrides?.[0];\n const patternsToShow: string[] = override?.matcher.options.names;\n const legendSyncPatterns = new Set();\n\n if (patternsToShow) {\n patternsToShow.forEach(legendSyncPatterns.add, legendSyncPatterns);\n }\n\n this.setState({\n legendSyncPatterns,\n });\n };\n }\n\n private getSingleViewLayout() {\n const patternsBreakdownScene = sceneGraph.getAncestor(this, PatternsBreakdownScene);\n const patternFrames = patternsBreakdownScene.state.patternFrames;\n\n if (!patternFrames) {\n logger.warn('Failed to set getSingleViewLayout');\n return;\n }\n\n const timeSeries = this.getTimeSeries(patternFrames);\n\n return new SceneCSSGridLayout({\n templateColumns: '100%',\n autoRows: '200px',\n isLazy: true,\n\n children: [\n timeSeries,\n new PatternsViewTableScene({\n patternFrames,\n }),\n ],\n });\n }\n\n private getTimeSeries(patternFrames: PatternFrame[]) {\n const logExploration = sceneGraph.getAncestor(this, IndexScene);\n\n const timeSeries = PanelBuilders.timeseries()\n .setData(this.getTimeseriesDataNode(patternFrames))\n .setOption('legend', {\n asTable: true,\n showLegend: true,\n displayMode: LegendDisplayMode.Table,\n placement: 'right',\n width: 200,\n })\n .setHoverHeader(true)\n .setUnit('short')\n .setLinks([\n {\n url: '#',\n targetBlank: false,\n onClick: (event) => {\n onPatternClick({\n pattern: event.origin.labels.name,\n type: 'include',\n indexScene: logExploration,\n });\n },\n title: 'Include',\n },\n {\n url: '#',\n targetBlank: false,\n onClick: (event) => {\n onPatternClick({\n pattern: event.origin.labels.name,\n type: 'exclude',\n indexScene: logExploration,\n });\n },\n title: 'Exclude',\n },\n ])\n .build();\n\n timeSeries.setState({\n extendPanelContext: (vizPanel, context) => this.extendTimeSeriesLegendBus(vizPanel, context),\n });\n\n return timeSeries;\n }\n\n private getTimeseriesDataNode(patternFrames: PatternFrame[]) {\n const timeRange = sceneGraph.getTimeRange(this).state.value;\n\n return new SceneDataNode({\n data: {\n series: patternFrames.map((patternFrame, seriesIndex) => {\n // Mutating the dataframe config here means that we don't need to update the colors in the table view\n const dataFrame = patternFrame.dataFrame;\n dataFrame.fields[1].config.color = overrideToFixedColor(seriesIndex);\n dataFrame.fields[1].name = '';\n return dataFrame;\n }),\n state: LoadingState.Done,\n timeRange: timeRange,\n },\n });\n }\n}\n\nexport function overrideToFixedColor(key: keyof typeof palette): FieldColor {\n return {\n mode: 'fixed',\n fixedColor: palette[key] as string,\n };\n}\n\nconst styles = {\n container: css({\n width: '100%',\n // Hide header on hover hack\n '.show-on-hover': {\n display: 'none',\n },\n }),\n};\n","import { SceneComponentProps, sceneGraph, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport React, { ChangeEvent } from 'react';\nimport { Field } from '@grafana/ui';\nimport { css } from '@emotion/css';\nimport { PatternFrame, PatternsBreakdownScene } from './PatternsBreakdownScene';\nimport { debouncedFuzzySearch, fuzzySearch } from '../../../../services/search';\nimport { SearchInput } from '../SearchInput';\nimport { areArraysEqual } from '../../../../services/comparison';\n\nexport interface PatternsViewTextSearchState extends SceneObjectState {}\n\nexport class PatternsViewTextSearch extends SceneObjectBase {\n public static Component = PatternTextSearchComponent;\n\n constructor(state?: Partial) {\n super({\n ...state,\n });\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n /**\n * On click callback to clear current text search\n */\n public clearSearch = () => {\n const patternsBreakdownScene = sceneGraph.getAncestor(this, PatternsBreakdownScene);\n patternsBreakdownScene.setState({\n patternFilter: '',\n });\n };\n\n /**\n * Search input onchange callback\n * @param e\n */\n public handleSearchChange = (e: ChangeEvent) => {\n const patternsBreakdownScene = sceneGraph.getAncestor(this, PatternsBreakdownScene);\n patternsBreakdownScene.setState({\n patternFilter: e.target.value,\n });\n };\n\n /**\n * Activation handler\n * @private\n */\n private onActivate() {\n const patternsBreakdownScene = sceneGraph.getAncestor(this, PatternsBreakdownScene);\n this._subs.add(\n patternsBreakdownScene.subscribeToState((newState, prevState) => {\n if (newState.patternFilter !== prevState.patternFilter) {\n const patternsBreakdownScene = sceneGraph.getAncestor(this, PatternsBreakdownScene);\n if (patternsBreakdownScene.state.patternFrames) {\n debouncedFuzzySearch(\n patternsBreakdownScene.state.patternFrames.map((frame) => frame.pattern),\n patternsBreakdownScene.state.patternFilter,\n this.onSearchResult\n );\n }\n }\n })\n );\n\n this._subs.add(\n patternsBreakdownScene.subscribeToState((newState, prevState) => {\n // If we have a search string, but no filtered patterns, run the search\n if (\n newState.patternFilter &&\n !newState.filteredPatterns &&\n newState.patternFrames &&\n !areArraysEqual(newState.filteredPatterns, prevState.filteredPatterns)\n ) {\n fuzzySearch(\n newState.patternFrames.map((frame) => frame.pattern),\n newState.patternFilter,\n this.onSearchResult\n );\n }\n })\n );\n }\n\n /**\n * Sets the patterns filtered by string match\n * @param patterns\n * @param patternFramesOverride\n */\n setFilteredPatterns(patterns: string[], patternFramesOverride?: PatternFrame[]) {\n const patternsBreakdownScene = sceneGraph.getAncestor(this, PatternsBreakdownScene);\n const patternFrames = patternFramesOverride ?? patternsBreakdownScene.state.patternFrames;\n\n if (patternFrames) {\n const filteredPatternFrames = patternFrames.filter((patternFrame) => {\n if (patternsBreakdownScene.state.patternFilter && patternFrames?.length) {\n return patterns.find((pattern) => pattern === patternFrame.pattern);\n }\n return false;\n });\n\n patternsBreakdownScene.setState({\n filteredPatterns: filteredPatternFrames,\n });\n }\n }\n\n /**\n * Fuzzy search callback\n * @param data\n */\n onSearchResult = (data: string[][]) => {\n const patternsBreakdownScene = sceneGraph.getAncestor(this, PatternsBreakdownScene);\n // If we have a search string\n if (patternsBreakdownScene.state.patternFilter) {\n this.setFilteredPatterns(data[0]);\n } else if (patternsBreakdownScene.state.filteredPatterns && !patternsBreakdownScene.state.patternFilter) {\n // Wipe the parent filtered state\n this.setEmptySearch();\n }\n };\n\n /**\n * Wipes filtered patterns when search string is empty\n */\n private setEmptySearch() {\n const patternsBreakdownScene = sceneGraph.getAncestor(this, PatternsBreakdownScene);\n patternsBreakdownScene.setState({\n filteredPatterns: undefined,\n });\n }\n}\n\nconst styles = {\n field: css({\n label: 'field',\n marginBottom: 0,\n }),\n icon: css({\n cursor: 'pointer',\n }),\n};\n\nexport function PatternTextSearchComponent({ model }: SceneComponentProps) {\n const patternsBreakdownScene = sceneGraph.getAncestor(model, PatternsBreakdownScene);\n const { patternFilter } = patternsBreakdownScene.useState();\n return (\n \n \n \n );\n}\n","import { GrotError } from '../../../GrotError';\nimport { TextLink } from '@grafana/ui';\nimport React from 'react';\nimport { PATTERNS_MAX_AGE_HOURS } from './PatternsBreakdownScene';\n\nexport function PatternsNotDetected() {\n return (\n \n
\n

\n Sorry, we could not detect any patterns.\n

\n

\n Check back later or reach out to the team in the{' '}\n \n Grafana Labs community Slack channel\n \n

\n

Patterns let you detect similar log lines to include or exclude from your search.

\n
\n
\n );\n}\n\nexport function PatternsTooOld() {\n return (\n \n
\n

\n Patterns are only available for the most recent {PATTERNS_MAX_AGE_HOURS} hours of data.\n

\n

\n See the{' '}\n \n patterns docs\n {' '}\n for more info.\n

\n
\n
\n );\n}\n","import { css } from '@emotion/css';\nimport React from 'react';\n\nimport { DataFrame, dateTime, GrafanaTheme2, LoadingState } from '@grafana/data';\nimport {\n CustomVariable,\n SceneComponentProps,\n SceneDataState,\n SceneFlexItem,\n SceneFlexLayout,\n sceneGraph,\n SceneObjectBase,\n SceneObjectState,\n SceneVariableSet,\n} from '@grafana/scenes';\nimport { Text, useStyles2 } from '@grafana/ui';\nimport { StatusWrapper } from 'Components/ServiceScene/Breakdowns/StatusWrapper';\nimport { VAR_LABEL_GROUP_BY } from 'services/variables';\nimport { ServiceScene } from '../../ServiceScene';\nimport { IndexScene } from '../../../IndexScene/IndexScene';\nimport { PatternsFrameScene } from './PatternsFrameScene';\nimport { PatternsViewTextSearch } from './PatternsViewTextSearch';\nimport { PatternsNotDetected, PatternsTooOld } from './PatternsNotDetected';\nimport { areArraysEqual } from '../../../../services/comparison';\n\nexport interface PatternsBreakdownSceneState extends SceneObjectState {\n body?: SceneFlexLayout;\n value?: string;\n loading?: boolean;\n error?: boolean;\n blockingMessage?: string;\n // The dataframe built from the patterns that we get back from the loki Patterns API\n patternFrames?: PatternFrame[];\n\n // Subset of patternFrames, undefined if empty, empty array if search results returned nothing (no data)\n filteredPatterns?: PatternFrame[];\n patternFilter: string;\n}\n\nexport type PatternFrame = {\n dataFrame: DataFrame;\n pattern: string;\n sum: number;\n status?: 'include' | 'exclude';\n};\n\nexport const PATTERNS_MAX_AGE_HOURS = 3;\n\nexport class PatternsBreakdownScene extends SceneObjectBase {\n constructor(state: Partial) {\n super({\n $variables:\n state.$variables ??\n new SceneVariableSet({\n variables: [new CustomVariable({ name: VAR_LABEL_GROUP_BY, defaultToAll: true, includeAll: true })],\n }),\n loading: true,\n patternFilter: '',\n ...state,\n });\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n // parent render\n public static Component = ({ model }: SceneComponentProps) => {\n const { body, loading, blockingMessage, patternFrames, error } = model.useState();\n const { value: timeRange } = sceneGraph.getTimeRange(model).useState();\n const styles = useStyles2(getStyles);\n const timeRangeTooOld = dateTime().diff(timeRange.to, 'hours') >= PATTERNS_MAX_AGE_HOURS;\n\n return (\n
\n \n {!loading && error && (\n
\n \n

There are no pattern matches.

\n

Pattern matching has not been configured.

\n

Patterns let you detect similar log lines and add or exclude them from your search.

\n

To see them in action, add the following to your Loki configuration

\n

\n --pattern-ingester.enabled=true\n

\n
\n
\n )}\n\n {!error && !loading && patternFrames?.length === 0 && timeRangeTooOld && }\n {!error && !loading && patternFrames?.length === 0 && !timeRangeTooOld && }\n {!error && !loading && patternFrames && patternFrames.length > 0 && (\n
{body && }
\n )}\n
\n
\n );\n };\n\n private onActivate() {\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n this.setBody();\n\n // If the patterns exist already, update the dataframe\n if (serviceScene.state.$patternsData?.state) {\n this.onDataChange(serviceScene.state.$patternsData?.state);\n }\n\n // Subscribe to changes from pattern API call\n this._subs.add(serviceScene.state.$patternsData?.subscribeToState(this.onDataChange));\n }\n\n private onDataChange = (newState: SceneDataState, prevState?: SceneDataState) => {\n const newFrames = newState.data?.series;\n const prevFrames = prevState?.data?.series;\n\n if (newState.data?.state === LoadingState.Done) {\n this.setState({\n loading: false,\n error: false,\n });\n\n if (!areArraysEqual(newFrames, prevFrames)) {\n this.updatePatternFrames(newFrames);\n }\n } else if (newState.data?.state === LoadingState.Loading) {\n this.setState({\n loading: true,\n error: false,\n });\n } else if (newState.data?.state === LoadingState.Error) {\n this.setState({\n loading: false,\n error: true,\n });\n }\n };\n\n private setBody() {\n this.setState({\n body: new SceneFlexLayout({\n direction: 'column',\n children: [\n new SceneFlexItem({\n ySizing: 'content',\n body: new PatternsViewTextSearch(),\n }),\n new SceneFlexItem({\n body: new PatternsFrameScene(),\n }),\n ],\n }),\n });\n }\n\n private updatePatternFrames(dataFrames?: DataFrame[]) {\n if (!dataFrames) {\n return;\n }\n\n const patternFrames = this.dataFrameToPatternFrame(dataFrames);\n\n this.setState({\n patternFrames,\n });\n }\n\n private dataFrameToPatternFrame(dataFrame: DataFrame[]): PatternFrame[] {\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n const appliedPatterns = sceneGraph.getAncestor(serviceScene, IndexScene).state.patterns;\n\n return dataFrame.map((dataFrame) => {\n const existingPattern = appliedPatterns?.find((appliedPattern) => appliedPattern.pattern === dataFrame.name);\n\n const sum: number = dataFrame.meta?.custom?.sum;\n const patternFrame: PatternFrame = {\n dataFrame,\n pattern: dataFrame.name ?? '',\n sum,\n status: existingPattern?.type,\n };\n\n return patternFrame;\n });\n }\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n container: css({\n flexGrow: 1,\n display: 'flex',\n minHeight: '100%',\n flexDirection: 'column',\n }),\n content: css({\n flexGrow: 1,\n display: 'flex',\n paddingTop: theme.spacing(0),\n }),\n controls: css({\n flexGrow: 0,\n display: 'flex',\n alignItems: 'top',\n gap: theme.spacing(2),\n }),\n controlsRight: css({\n flexGrow: 0,\n display: 'flex',\n justifyContent: 'flex-end',\n }),\n controlsLeft: css({\n display: 'flex',\n justifyContent: 'flex-left',\n justifyItems: 'left',\n width: '100%',\n flexDirection: 'column',\n }),\n patternMissingText: css({\n padding: theme.spacing(2),\n }),\n };\n}\n","import { PageSlugs, ValueSlugs } from '../../services/routing';\nimport { LogsListScene } from './LogsListScene';\nimport { testIds } from '../../services/testIds';\nimport { LabelBreakdownScene } from './Breakdowns/LabelBreakdownScene';\nimport { FieldsBreakdownScene } from './Breakdowns/FieldsBreakdownScene';\nimport { PatternsBreakdownScene } from './Breakdowns/Patterns/PatternsBreakdownScene';\nimport { behaviors, SceneFlexItem, SceneFlexLayout, SceneObject } from '@grafana/scenes';\nimport { LogsVolumePanel } from './LogsVolumePanel';\nimport { DashboardCursorSync } from '@grafana/schema';\n\ninterface ValueBreakdownViewDefinition {\n displayName: string;\n value: ValueSlugs;\n testId: string;\n getScene: (value: string) => SceneObject;\n}\n\nexport enum TabNames {\n logs = 'Logs',\n labels = 'Labels',\n fields = 'Fields',\n patterns = 'Patterns',\n}\nexport interface BreakdownViewDefinition {\n displayName: TabNames;\n value: PageSlugs;\n testId: string;\n getScene: (changeFields: (f: number) => void) => SceneObject;\n}\n\nexport const breakdownViewsDefinitions: BreakdownViewDefinition[] = [\n {\n displayName: TabNames.logs,\n value: PageSlugs.logs,\n getScene: () => buildLogsListScene(),\n testId: testIds.exploreServiceDetails.tabLogs,\n },\n {\n displayName: TabNames.labels,\n value: PageSlugs.labels,\n getScene: () => buildLabelBreakdownActionScene(),\n testId: testIds.exploreServiceDetails.tabLabels,\n },\n {\n displayName: TabNames.fields,\n value: PageSlugs.fields,\n getScene: (f) => buildFieldsBreakdownActionScene(f),\n testId: testIds.exploreServiceDetails.tabFields,\n },\n {\n displayName: TabNames.patterns,\n value: PageSlugs.patterns,\n getScene: () => buildPatternsScene(),\n testId: testIds.exploreServiceDetails.tabPatterns,\n },\n];\nexport const valueBreakdownViews: ValueBreakdownViewDefinition[] = [\n {\n displayName: 'Label',\n value: ValueSlugs.label,\n getScene: (value: string) => buildLabelValuesBreakdownActionScene(value),\n testId: testIds.exploreServiceDetails.tabLabels,\n },\n {\n displayName: 'Field',\n value: ValueSlugs.field,\n getScene: (value: string) => buildFieldValuesBreakdownActionScene(value),\n testId: testIds.exploreServiceDetails.tabFields,\n },\n];\n\nfunction buildPatternsScene() {\n return new SceneFlexLayout({\n children: [\n new SceneFlexItem({\n body: new PatternsBreakdownScene({}),\n }),\n ],\n });\n}\n\nfunction buildFieldsBreakdownActionScene(changeFieldNumber: (n: number) => void) {\n return new SceneFlexLayout({\n $behaviors: [new behaviors.CursorSync({ key: 'sync', sync: DashboardCursorSync.Crosshair })],\n children: [\n new SceneFlexItem({\n body: new FieldsBreakdownScene({ changeFieldCount: changeFieldNumber }),\n }),\n ],\n });\n}\n\nfunction buildFieldValuesBreakdownActionScene(value: string) {\n return new SceneFlexLayout({\n $behaviors: [new behaviors.CursorSync({ key: 'sync', sync: DashboardCursorSync.Crosshair })],\n children: [\n new SceneFlexItem({\n body: new FieldsBreakdownScene({ value }),\n }),\n ],\n });\n}\n\nfunction buildLabelValuesBreakdownActionScene(value: string) {\n return new SceneFlexLayout({\n $behaviors: [new behaviors.CursorSync({ key: 'sync', sync: DashboardCursorSync.Crosshair })],\n children: [\n new SceneFlexItem({\n body: new LabelBreakdownScene({ value }),\n }),\n ],\n });\n}\n\nfunction buildLogsListScene() {\n return new SceneFlexLayout({\n direction: 'column',\n children: [\n new SceneFlexItem({\n body: new LogsVolumePanel({}),\n }),\n new SceneFlexItem({\n minHeight: '470px',\n height: 'calc(100vh - 500px)',\n body: new LogsListScene({}),\n }),\n ],\n });\n}\n\nfunction buildLabelBreakdownActionScene() {\n return new SceneFlexLayout({\n $behaviors: [new behaviors.CursorSync({ key: 'sync', sync: DashboardCursorSync.Crosshair })],\n children: [\n new SceneFlexItem({\n body: new LabelBreakdownScene({}),\n }),\n ],\n });\n}\n","import {\n SceneComponentProps,\n sceneGraph,\n SceneObjectBase,\n SceneObjectState,\n SceneTimeRangeLike,\n} from '@grafana/scenes';\nimport { ButtonGroup, Dropdown, IconName, Menu, MenuGroup, ToolbarButton } from '@grafana/ui';\nimport React from 'react';\nimport { config, getAppEvents, getBackendSrv, locationService, reportInteraction } from '@grafana/runtime';\nimport { AppEvents, toUtc, urlUtil } from '@grafana/data';\nimport { copyText } from '../../services/text';\n\ninterface ShortLinkMenuItemData {\n key: string;\n label: string;\n icon: IconName;\n getUrl: Function;\n shorten: boolean;\n absTime: boolean;\n}\n\ninterface ShortLinkGroupData {\n key: string;\n label: string;\n items: ShortLinkMenuItemData[];\n}\n\nexport interface ShareButtonSceneState extends SceneObjectState {\n lastSelected: ShortLinkMenuItemData;\n isOpen: boolean;\n /**\n * Reference to $timeRange\n */\n getSceneTimeRange?: () => SceneTimeRangeLike;\n /**\n * Callback on link copy\n */\n onCopyLink?: (shortened: boolean, absTime: boolean, url?: string) => void;\n}\n\nexport class ShareButtonScene extends SceneObjectBase {\n constructor(state: Partial) {\n super({ isOpen: false, lastSelected: defaultMode, ...state });\n }\n\n public setIsOpen(isOpen: boolean) {\n this.setState({ isOpen });\n }\n\n public onCopyLink(shorten: boolean, absTime: boolean, url?: string) {\n if (shorten) {\n createAndCopyShortLink(url || global.location.href);\n reportInteraction('grafana_explore_shortened_link_clicked', { isAbsoluteTime: absTime });\n } else {\n copyText(\n url !== undefined\n ? `${window.location.protocol}//${window.location.host}${config.appSubUrl}${url}`\n : global.location.href\n );\n\n if (this.state.onCopyLink) {\n this.state.onCopyLink(shorten, absTime, url);\n }\n }\n }\n\n static MenuActions = ({ model }: SceneComponentProps) => {\n const menuOptions: ShortLinkGroupData[] = [\n {\n key: 'normal',\n label: 'Normal URL links',\n items: [\n {\n key: 'copy-shortened-link',\n icon: 'link',\n label: 'Copy shortened URL',\n getUrl: () => undefined,\n shorten: true,\n absTime: false,\n },\n {\n key: 'copy-link',\n icon: 'link',\n label: 'Copy URL',\n getUrl: () => undefined,\n shorten: false,\n absTime: false,\n },\n ],\n },\n {\n key: 'timesync',\n label: 'Time-sync URL links (share with time range intact)',\n items: [\n {\n key: 'copy-short-link-abs-time',\n icon: 'clock-nine',\n label: 'Copy absolute shortened URL',\n shorten: true,\n getUrl: () => {\n return constructAbsoluteUrl(\n model.state.getSceneTimeRange !== undefined\n ? model.state.getSceneTimeRange()\n : sceneGraph.getTimeRange(model)\n );\n },\n absTime: true,\n },\n {\n key: 'copy-link-abs-time',\n icon: 'clock-nine',\n label: 'Copy absolute URL',\n shorten: false,\n getUrl: () => {\n return constructAbsoluteUrl(\n model.state.getSceneTimeRange !== undefined\n ? model.state.getSceneTimeRange()\n : sceneGraph.getTimeRange(model)\n );\n },\n absTime: true,\n },\n ],\n },\n ];\n\n return (\n \n {menuOptions.map((groupOption) => {\n return (\n \n {groupOption.items.map((option) => {\n return (\n {\n const url = option.getUrl();\n model.onCopyLink(option.shorten, option.absTime, url);\n model.setState({\n lastSelected: option,\n });\n }}\n />\n );\n })}\n \n );\n })}\n \n );\n };\n\n static Component = ({ model }: SceneComponentProps) => {\n const { lastSelected, isOpen } = model.useState();\n\n return (\n \n {\n const url = lastSelected.getUrl();\n model.onCopyLink(lastSelected.shorten, lastSelected.absTime, url);\n }}\n aria-label={'Copy shortened URL'}\n >\n Share\n \n }\n placement=\"bottom-end\"\n onVisibleChange={model.setIsOpen.bind(model)}\n >\n \n \n \n );\n };\n}\n\nconst defaultMode: ShortLinkMenuItemData = {\n key: 'copy-link',\n label: 'Copy shortened URL',\n icon: 'share-alt',\n getUrl: () => undefined,\n shorten: true,\n absTime: false,\n};\n\n// Adapted from grafana/grafana/public/app/core/utils/shortLinks.ts shortLinks.ts\nfunction buildHostUrl() {\n return `${window.location.protocol}//${window.location.host}${config.appSubUrl}`;\n}\n\nfunction getRelativeURLPath(url: string) {\n let path = url.replace(buildHostUrl(), '');\n return path.startsWith('/') ? path.substring(1, path.length) : path;\n}\n\nexport const createShortLink = async function (path: string) {\n const appEvents = getAppEvents();\n try {\n const shortLink = await getBackendSrv().post(`/api/short-urls`, {\n path: getRelativeURLPath(path),\n });\n return shortLink.url;\n } catch (err) {\n console.error('Error when creating shortened link: ', err);\n\n appEvents.publish({\n type: AppEvents.alertError.name,\n payload: ['Error generating shortened link'],\n });\n }\n};\n\nexport const createAndCopyShortLink = async (path: string) => {\n const appEvents = getAppEvents();\n const shortLink = await createShortLink(path);\n if (shortLink) {\n copyText(shortLink);\n appEvents.publish({\n type: AppEvents.alertSuccess.name,\n payload: ['Shortened link copied to clipboard'],\n });\n } else {\n appEvents.publish({\n type: AppEvents.alertError.name,\n payload: ['Error generating shortened link'],\n });\n }\n};\n\n/**\n * Adapted from /grafana/grafana/public/app/features/explore/utils/links.ts\n * Returns the current URL with absolute time range\n */\nconst constructAbsoluteUrl = (timeRange: SceneTimeRangeLike): string => {\n const from = toUtc(timeRange.state.value.from);\n const to = toUtc(timeRange.state.value.to);\n const location = locationService.getLocation();\n const searchParams = urlUtil.getUrlSearchParams();\n searchParams['from'] = from.toISOString();\n searchParams['to'] = to.toISOString();\n return urlUtil.renderUrl(location.pathname, searchParams);\n};\n","import { SceneComponentProps, sceneGraph, SceneObject, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport { Box, Dropdown, Menu, Stack, Tab, TabsBar, ToolbarButton, useStyles2 } from '@grafana/ui';\nimport { getDrilldownSlug, getDrilldownValueSlug, PageSlugs, ValueSlugs } from '../../services/routing';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from '../../services/analytics';\nimport { getDrillDownTabLink } from '../../services/navigate';\nimport React, { useEffect, useState } from 'react';\nimport { ServiceScene, ServiceSceneCustomState } from './ServiceScene';\nimport { getValueFormat, GrafanaTheme2 } from '@grafana/data';\nimport { css, cx } from '@emotion/css';\nimport { BreakdownViewDefinition, breakdownViewsDefinitions, TabNames } from './BreakdownViews';\nimport { config, usePluginLinks } from '@grafana/runtime';\nimport { getLabelsVariable } from '../../services/variableGetters';\nimport { IndexScene } from '../IndexScene/IndexScene';\nimport { LINE_LIMIT } from '../../services/query';\nimport { ShareButtonScene } from '../IndexScene/ShareButtonScene';\n\nexport interface ActionBarSceneState extends SceneObjectState {\n maxLines?: number;\n shareButtonScene?: ShareButtonScene;\n}\n\nexport class ActionBarScene extends SceneObjectBase {\n constructor(state: Partial) {\n super(state);\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n onActivate() {\n const indexScene = sceneGraph.getAncestor(this, IndexScene);\n const dataSource = indexScene.state.ds;\n if (dataSource?.maxLines !== undefined) {\n this.setState({\n maxLines: dataSource.maxLines,\n });\n }\n\n if (!this.state.shareButtonScene) {\n this.setState({\n shareButtonScene: new ShareButtonScene({}),\n });\n }\n }\n public static Component = ({ model }: SceneComponentProps) => {\n const styles = useStyles2(getStyles);\n let currentBreakdownViewSlug = getDrilldownSlug();\n let allowNavToParent = false;\n\n if (!Object.values(PageSlugs).includes(currentBreakdownViewSlug)) {\n const drilldownValueSlug = getDrilldownValueSlug();\n allowNavToParent = true;\n if (drilldownValueSlug === ValueSlugs.field) {\n currentBreakdownViewSlug = PageSlugs.fields;\n }\n if (drilldownValueSlug === ValueSlugs.label) {\n currentBreakdownViewSlug = PageSlugs.labels;\n }\n }\n\n const serviceScene = sceneGraph.getAncestor(model, ServiceScene);\n const { loading, $data, logsCount, totalLogsCount, ...state } = serviceScene.useState();\n const { maxLines } = model.useState();\n\n const loadingStates = state.loadingStates;\n\n return (\n \n
\n \n {config.featureToggles.appSidecar && }\n {model.state.shareButtonScene && (\n \n )}\n \n
\n\n \n {breakdownViewsDefinitions.map((tab, index) => {\n return (\n LogsCount(className, totalLogsCount, logsCount, maxLines ?? LINE_LIMIT)\n : undefined\n }\n icon={loadingStates[tab.displayName] ? 'spinner' : undefined}\n href={getDrillDownTabLink(tab.value, serviceScene)}\n onChangeTab={() => {\n if ((tab.value && tab.value !== currentBreakdownViewSlug) || allowNavToParent) {\n reportAppInteraction(\n USER_EVENTS_PAGES.service_details,\n USER_EVENTS_ACTIONS.service_details.action_view_changed,\n {\n newActionView: tab.value,\n previousActionView: currentBreakdownViewSlug,\n }\n );\n }\n }}\n />\n );\n })}\n \n
\n );\n };\n}\nconst getCounter = (tab: BreakdownViewDefinition, state: ServiceSceneCustomState) => {\n switch (tab.value) {\n case 'fields':\n return state.fieldsCount;\n case 'patterns':\n return state.patternsCount;\n case 'labels':\n return state.labelsCount;\n default:\n return undefined;\n }\n};\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n actions: css({\n display: 'flex',\n justifyContent: 'flex-end',\n\n [theme.breakpoints.up(theme.breakpoints.values.md)]: {\n position: 'absolute',\n right: 0,\n zIndex: 2,\n },\n }),\n };\n}\n\n/**\n * Shows extensions in the toolbar.\n * Shows a single button if there is only one extension or a dropdown if there are multiple.\n * @param props\n * @constructor\n */\nfunction ToolbarExtensionsRenderer(props: { serviceScene: SceneObject }) {\n const [filters, setFilters] = useState>(\n getLabelsVariable(props.serviceScene).state.filters\n );\n useEffect(() => {\n const sub = getLabelsVariable(props.serviceScene).subscribeToState((newState) => {\n setFilters(newState.filters);\n });\n return () => {\n sub.unsubscribe();\n };\n }, [props.serviceScene]);\n\n const [isOpen, setIsOpen] = useState(false);\n const extensions = usePluginLinks({\n extensionPointId: 'grafana-lokiexplore-app/toolbar-open-related/v1',\n limitPerPlugin: 3,\n context: { filters },\n });\n\n if (extensions.isLoading || extensions.links.length === 0) {\n return null;\n }\n\n if (extensions.links.length === 1) {\n const e = extensions.links[0];\n\n return (\n
\n e.onClick?.(event)} icon={e.icon}>\n Related {e.title}\n \n
\n );\n }\n\n const menu = (\n \n {extensions.links.map((link) => {\n return (\n {\n link.onClick?.(event);\n }}\n />\n );\n })}\n \n );\n\n return (\n \n \n Open related\n \n \n );\n}\n\nfunction LogsCount(\n className: string | undefined,\n totalCount: number | undefined,\n logsCount: number | undefined,\n maxLines: number\n) {\n const styles = useStyles2(getLogsCountStyles);\n const valueFormatter = getValueFormat('short');\n\n // The instant query (totalCount) doesn't return good results for small result sets, if we're below the max number of lines, use the logs query result instead.\n if (totalCount === undefined && logsCount !== undefined && logsCount < maxLines) {\n const formattedCount = valueFormatter(logsCount, 0);\n return (\n \n {formattedCount.text}\n {formattedCount.suffix?.trim()}\n \n );\n } else if (totalCount !== undefined) {\n const formattedTotalCount = valueFormatter(totalCount, 0);\n return (\n \n {formattedTotalCount.text}\n {formattedTotalCount.suffix?.trim()}\n \n );\n }\n\n return ;\n}\n\nfunction getLogsCountStyles(theme: GrafanaTheme2) {\n return {\n emptyCountStyles: css({\n display: 'inline-block',\n fontSize: theme.typography.bodySmall.fontSize,\n minWidth: '1em',\n marginLeft: theme.spacing(1),\n padding: theme.spacing(0.25, 1),\n }),\n logsCountStyles: css({\n fontSize: theme.typography.bodySmall.fontSize,\n label: 'counter',\n marginLeft: theme.spacing(1),\n borderRadius: theme.spacing(3),\n backgroundColor: theme.colors.action.hover,\n padding: theme.spacing(0.25, 1),\n color: theme.colors.text.secondary,\n fontWeight: theme.typography.fontWeightMedium,\n }),\n };\n}\n","import { locationService } from '@grafana/runtime';\nimport { getLineFiltersVariable } from './variableGetters';\nimport { LineFilterCaseSensitive, LineFilterOp } from './filterTypes';\nimport { ServiceScene } from '../Components/ServiceScene/ServiceScene';\nimport { urlUtil } from '@grafana/data';\nimport { sceneGraph } from '@grafana/scenes';\nimport { IndexScene } from '../Components/IndexScene/IndexScene';\n\nfunction removeEscapeChar(value: string, caseSensitive: boolean) {\n const charsEscapedByEscapeRegExp = ['^', '$', '.', '*', '+', '?', '(', ')', '[', ']', '{', '}', '|'];\n if (!caseSensitive) {\n charsEscapedByEscapeRegExp.push('\\\\');\n }\n return value\n .split('')\n .filter((char, index, stringArray) => {\n // We need to differentiate between user entered escape chars, and escape chars added by lodash escapeRegExp to return the same query results in urls from before the line filter regex feature\n // Since there is no reverse of the escapeRegExp method provided by lodash we're essentially building our own \"unescapeRegExp\"\n const nextChar = stringArray[index + 1];\n const isNextCharRegex = charsEscapedByEscapeRegExp.includes(nextChar);\n return !(char === '\\\\' && isNextCharRegex);\n })\n .join('');\n}\n\n/**\n * Migrates old line filter to new variables\n */\nexport function migrateLineFilterV1(serviceScene: ServiceScene) {\n const search = urlUtil.getUrlSearchParams();\n\n const deprecatedLineFilterArray = search['var-lineFilter'];\n if (!Array.isArray(deprecatedLineFilterArray) || !deprecatedLineFilterArray.length) {\n return;\n }\n const deprecatedLineFilter = deprecatedLineFilterArray[0];\n if (typeof deprecatedLineFilter !== 'string' || !deprecatedLineFilter) {\n return;\n }\n\n const indexScene = sceneGraph.getAncestor(serviceScene, IndexScene);\n const globalLineFilterVars = getLineFiltersVariable(serviceScene);\n const caseSensitiveMatches = deprecatedLineFilter?.match(/\\|=.`(.+?)`/);\n\n if (caseSensitiveMatches && caseSensitiveMatches.length === 2) {\n indexScene.state.body?.state.lineFilterRenderer?.addActivationHandler(() => {\n globalLineFilterVars.setState({\n filters: [\n {\n key: LineFilterCaseSensitive.caseSensitive,\n operator: LineFilterOp.match,\n value: removeEscapeChar(caseSensitiveMatches[1], true),\n keyLabel: '0',\n },\n ],\n });\n });\n }\n\n const caseInsensitiveMatches = deprecatedLineFilter?.match(/`\\(\\?i\\)(.+)`/);\n if (caseInsensitiveMatches && caseInsensitiveMatches.length === 2) {\n indexScene.state.body?.state.lineFilterRenderer?.addActivationHandler(() => {\n globalLineFilterVars.updateFilters([\n {\n key: LineFilterCaseSensitive.caseInsensitive,\n operator: LineFilterOp.match,\n value: removeEscapeChar(caseInsensitiveMatches[1], false),\n keyLabel: '0',\n },\n ]);\n });\n }\n\n // Remove from url without refreshing\n delete search['var-lineFilter'];\n locationService.replace(urlUtil.renderUrl(location.pathname, search));\n}\n","import React from 'react';\n\nimport { LoadingState, PanelData } from '@grafana/data';\nimport {\n QueryRunnerState,\n SceneComponentProps,\n SceneDataProvider,\n SceneDataState,\n SceneFlexItem,\n SceneFlexLayout,\n sceneGraph,\n SceneObject,\n SceneObjectBase,\n SceneObjectState,\n SceneQueryRunner,\n SceneVariableValueChangedEvent,\n VariableDependencyConfig,\n} from '@grafana/scenes';\nimport { LoadingPlaceholder } from '@grafana/ui';\nimport { getQueryRunner, getResourceQueryRunner } from 'services/panel';\nimport { buildDataQuery, buildResourceQuery } from 'services/query';\nimport {\n EMPTY_VARIABLE_VALUE,\n isAdHocFilterValueUserInput,\n LEVEL_VARIABLE_VALUE,\n LOG_STREAM_SELECTOR_EXPR,\n SERVICE_NAME,\n SERVICE_UI_LABEL,\n stripAdHocFilterUserInputPrefix,\n VAR_DATASOURCE,\n VAR_FIELDS,\n VAR_LABELS,\n VAR_LABELS_EXPR,\n VAR_LEVELS,\n VAR_PATTERNS,\n} from 'services/variables';\nimport { getMetadataService } from '../../services/metadata';\nimport { navigateToDrilldownPage, navigateToIndex, navigateToValueBreakdown } from '../../services/navigate';\nimport { areArraysEqual } from '../../services/comparison';\nimport { ActionBarScene } from './ActionBarScene';\nimport { breakdownViewsDefinitions, TabNames, valueBreakdownViews } from './BreakdownViews';\nimport {\n getDataSourceVariable,\n getFieldsAndMetadataVariable,\n getFieldsVariable,\n getLabelsVariable,\n getLevelsVariable,\n getLineFiltersVariable,\n getMetadataVariable,\n getPatternsVariable,\n} from '../../services/variableGetters';\nimport { logger } from '../../services/logger';\nimport { IndexScene, showLogsButtonSceneKey } from '../IndexScene/IndexScene';\nimport {\n getDrilldownSlug,\n getDrilldownValueSlug,\n getPrimaryLabelFromUrl,\n PageSlugs,\n ValueSlugs,\n} from '../../services/routing';\nimport { replaceSlash } from '../../services/extensions/links';\nimport { ShowLogsButtonScene } from '../IndexScene/ShowLogsButtonScene';\nimport { migrateLineFilterV1 } from '../../services/migrations';\nimport { VariableHide } from '@grafana/schema';\nimport { LEVELS_VARIABLE_SCENE_KEY, LevelsVariableScene } from '../IndexScene/LevelsVariableScene';\nimport { isOperatorInclusive } from '../../services/operatorHelpers';\n\nexport const LOGS_PANEL_QUERY_REFID = 'logsPanelQuery';\nexport const LOGS_COUNT_QUERY_REFID = 'logsCountQuery';\nconst PATTERNS_QUERY_REFID = 'patterns';\nconst DETECTED_LABELS_QUERY_REFID = 'detectedLabels';\nconst DETECTED_FIELDS_QUERY_REFID = 'detectedFields';\n\ntype MakeOptional = Pick, K> & Omit;\n\ntype ServiceSceneLoadingStates = {\n [name in TabNames]: boolean;\n};\n\nexport interface ServiceSceneCustomState {\n labelsCount?: number;\n patternsCount?: number;\n fieldsCount?: number;\n loading?: boolean;\n totalLogsCount?: number;\n logsCount?: number;\n}\n\nexport interface ServiceSceneState extends SceneObjectState, ServiceSceneCustomState {\n body: SceneFlexLayout | undefined;\n drillDownLabel?: string;\n $data: SceneDataProvider | undefined;\n $logsCount: SceneQueryRunner | undefined;\n $patternsData: SceneQueryRunner | undefined;\n $detectedLabelsData: SceneQueryRunner | undefined;\n $detectedFieldsData: SceneQueryRunner | undefined;\n loadingStates: ServiceSceneLoadingStates;\n}\n\nexport function getLogsPanelFrame(data: PanelData | undefined) {\n return data?.series.find((series) => series.refId === LOGS_PANEL_QUERY_REFID);\n}\n\nexport function getDetectedLabelsFrame(sceneRef: SceneObject) {\n const serviceScene = sceneGraph.getAncestor(sceneRef, ServiceScene);\n return serviceScene.state.$detectedLabelsData?.state.data?.series?.[0];\n}\n\nexport function getDetectedFieldsFrame(sceneRef: SceneObject) {\n const serviceScene = sceneGraph.getAncestor(sceneRef, ServiceScene);\n return getDetectedFieldsFrameFromQueryRunnerState(serviceScene.state.$detectedFieldsData?.state);\n}\n\nexport const getDetectedFieldsFrameFromQueryRunnerState = (state?: QueryRunnerState) => {\n // Only ever one frame in the response\n return state?.data?.series?.[0];\n};\n\nexport const getDetectedFieldsNamesFromQueryRunnerState = (state: QueryRunnerState) => {\n // The first field, DETECTED_FIELDS_NAME_FIELD, has the list of names of the detected fields\n return state.data?.series?.[0]?.fields?.[0];\n};\n\nexport const getDetectedFieldsParsersFromQueryRunnerState = (state: QueryRunnerState) => {\n // The third field, DETECTED_FIELDS_PARSER_NAME, has the list of parsers of the detected fields\n return state.data?.series?.[0]?.fields?.[2];\n};\n\nexport class ServiceScene extends SceneObjectBase {\n protected _variableDependency = new VariableDependencyConfig(this, {\n variableNames: [VAR_DATASOURCE, VAR_LABELS, VAR_FIELDS, VAR_PATTERNS, VAR_LEVELS],\n });\n\n public constructor(\n state: MakeOptional<\n ServiceSceneState,\n | 'body'\n | '$data'\n | '$patternsData'\n | '$detectedLabelsData'\n | '$detectedFieldsData'\n | 'loadingStates'\n | '$logsCount'\n >\n ) {\n super({\n loadingStates: {\n [TabNames.patterns]: false,\n [TabNames.labels]: false,\n [TabNames.fields]: false,\n [TabNames.logs]: false,\n },\n loading: true,\n body: state.body ?? buildGraphScene(),\n $data: getServiceSceneQueryRunner(),\n $patternsData: getPatternsQueryRunner(),\n $detectedLabelsData: getDetectedLabelsQueryRunner(),\n $detectedFieldsData: getDetectedFieldsQueryRunner(),\n $logsCount: getLogCountQueryRunner(),\n ...state,\n });\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n private setSubscribeToLabelsVariable() {\n const variable = getLabelsVariable(this);\n if (variable.state.filters.length === 0) {\n this.redirectToStart();\n return;\n }\n this._subs.add(\n variable.subscribeToState((newState, prevState) => {\n if (newState.filters.length === 0) {\n this.redirectToStart();\n }\n\n // If we remove the service name filter, we should redirect to the start\n let { labelName, labelValue, breakdownLabel } = getPrimaryLabelFromUrl();\n\n // Before we dynamically pulled label filter keys into the URL, we had hardcoded \"service\" as the primary label slug, we want to keep URLs the same, so overwrite \"service_name\" with \"service\" if that's the primary label\n if (labelName === SERVICE_UI_LABEL) {\n labelName = SERVICE_NAME;\n }\n const indexScene = sceneGraph.getAncestor(this, IndexScene);\n const prevRouteMatch = indexScene.state.routeMatch;\n\n // The \"primary\" label used in the URL is no longer active, pick a new one\n if (\n !newState.filters.some(\n (f) => f.key === labelName && isOperatorInclusive(f.operator) && replaceSlash(f.value) === labelValue\n )\n ) {\n const newPrimaryLabel = newState.filters.find(\n (f) => isOperatorInclusive(f.operator) && f.value !== EMPTY_VARIABLE_VALUE\n );\n if (newPrimaryLabel) {\n const newPrimaryLabelValue = isAdHocFilterValueUserInput(newPrimaryLabel.value)\n ? replaceSlash(stripAdHocFilterUserInputPrefix(newPrimaryLabel.value))\n : replaceSlash(newPrimaryLabel.value);\n indexScene.setState({\n routeMatch: {\n ...prevRouteMatch,\n params: {\n ...prevRouteMatch?.params,\n labelName: newPrimaryLabel.key === SERVICE_NAME ? SERVICE_UI_LABEL : newPrimaryLabel.key,\n // If there are a bunch of values separated by pipe, like labels that come from explore, let's truncate the value so the slug doesn't get too long\n labelValue: newPrimaryLabelValue.split('|')[0],\n },\n url: prevRouteMatch?.url ?? '',\n path: prevRouteMatch?.path ?? '',\n isExact: prevRouteMatch?.isExact ?? true,\n },\n });\n\n this.resetTabCount();\n\n if (!breakdownLabel) {\n navigateToDrilldownPage(getDrilldownSlug(), this);\n } else {\n navigateToValueBreakdown(getDrilldownValueSlug(), breakdownLabel, this);\n }\n } else {\n this.redirectToStart();\n }\n } else if (!areArraysEqual(newState.filters, prevState.filters)) {\n this.state.$patternsData?.runQueries();\n this.state.$detectedLabelsData?.runQueries();\n this.state.$detectedFieldsData?.runQueries();\n this.state.$logsCount?.runQueries();\n }\n })\n );\n }\n\n private redirectToStart() {\n // Clear ongoing queries\n this.setState({\n $data: undefined,\n $logsCount: undefined,\n body: undefined,\n $patternsData: undefined,\n $detectedLabelsData: undefined,\n $detectedFieldsData: undefined,\n patternsCount: undefined,\n labelsCount: undefined,\n fieldsCount: undefined,\n logsCount: undefined,\n totalLogsCount: undefined,\n });\n getMetadataService().setServiceSceneState(this.state);\n this._subs.unsubscribe();\n\n // Redirect to root with updated params, which will trigger history push back to index route, preventing empty page or empty service query bugs\n navigateToIndex();\n }\n\n private showVariables() {\n const levelsVar = sceneGraph.findByKeyAndType(this, LEVELS_VARIABLE_SCENE_KEY, LevelsVariableScene);\n levelsVar.setState({ visible: true });\n getFieldsAndMetadataVariable(this).setState({ hide: VariableHide.dontHide });\n }\n\n /**\n * After routing we need to pull any data set to the service scene by other routes from the metadata singleton,\n * as each route has a different instantiation of this scene\n * @private\n */\n private getMetadata() {\n const metadataService = getMetadataService();\n const state = metadataService.getServiceSceneState();\n\n if (state) {\n this.setState({\n ...state,\n });\n }\n }\n\n private onActivate() {\n // Hide show logs button\n const showLogsButton = sceneGraph.findByKeyAndType(this, showLogsButtonSceneKey, ShowLogsButtonScene);\n showLogsButton.setState({ hidden: true });\n this.showVariables();\n this.getMetadata();\n this.resetBodyAndData();\n\n this.setBreakdownView();\n\n // Run queries on activate\n this.runQueries();\n\n // Query Subscriptions\n this._subs.add(this.subscribeToPatternsQuery());\n this._subs.add(this.subscribeToDetectedLabelsQuery());\n\n // Fields tab will update its own count, and update count when a query fails\n this._subs.add(this.subscribeToDetectedFieldsQuery(getDrilldownSlug() !== PageSlugs.fields));\n this._subs.add(this.subscribeToLogsQuery());\n this._subs.add(this.subscribeToLogsCountQuery());\n\n // Variable subscriptions\n this.setSubscribeToLabelsVariable();\n this._subs.add(this.subscribeToFieldsVariable());\n this._subs.add(this.subscribeToMetadataVariable());\n this._subs.add(this.subscribeToLevelsVariableChangedEvent());\n this._subs.add(this.subscribeToLevelsVariableFiltersState());\n this._subs.add(this.subscribeToDataSourceVariable());\n this._subs.add(this.subscribeToPatternsVariable());\n this._subs.add(this.subscribeToLineFiltersVariable());\n\n // Update query runner on manual time range change\n this._subs.add(this.subscribeToTimeRange());\n\n // Migrations\n migrateLineFilterV1(this);\n }\n\n private subscribeToPatternsVariable() {\n return getPatternsVariable(this).subscribeToState((newState, prevState) => {\n if (newState.value !== prevState.value) {\n this.state.$detectedFieldsData?.runQueries();\n this.state.$logsCount?.runQueries();\n }\n });\n }\n\n private subscribeToLineFiltersVariable() {\n return getLineFiltersVariable(this).subscribeToEvent(SceneVariableValueChangedEvent, () => {\n this.state.$logsCount?.runQueries();\n this.state.$detectedFieldsData?.runQueries();\n });\n }\n\n private subscribeToDataSourceVariable() {\n return getDataSourceVariable(this).subscribeToState(() => {\n this.redirectToStart();\n });\n }\n\n private resetTabCount() {\n this.setState({\n fieldsCount: undefined,\n labelsCount: undefined,\n patternsCount: undefined,\n });\n\n getMetadataService().setServiceSceneState(this.state);\n }\n\n private subscribeToFieldsVariable() {\n const fieldsVar = getFieldsVariable(this);\n return fieldsVar.subscribeToState((newState, prevState) => {\n if (!areArraysEqual(newState.filters, prevState.filters)) {\n this.state.$detectedFieldsData?.runQueries();\n this.state.$logsCount?.runQueries();\n }\n });\n }\n\n private subscribeToMetadataVariable() {\n const metadataVar = getMetadataVariable(this);\n return metadataVar.subscribeToState((newState, prevState) => {\n if (!areArraysEqual(newState.filters, prevState.filters)) {\n this.state.$detectedFieldsData?.runQueries();\n this.state.$logsCount?.runQueries();\n }\n });\n }\n\n /**\n * Subscribe to SceneVariableValueChangedEvent and run logs count and detectedFields on update.\n * In the levels variable renderer we update the ad-hoc filters, but we don't always want to immediately execute queries.\n */\n private subscribeToLevelsVariableChangedEvent() {\n return getLevelsVariable(this).subscribeToEvent(SceneVariableValueChangedEvent, () => {\n this.state.$detectedFieldsData?.runQueries();\n });\n }\n\n /**\n * Subscribe to actual filter changes and update the logs count\n * @private\n */\n private subscribeToLevelsVariableFiltersState() {\n const levelsVariable = getLevelsVariable(this);\n return levelsVariable.subscribeToState((newState, prevState) => {\n if (!areArraysEqual(newState.filters, prevState.filters)) {\n this.state.$logsCount?.runQueries();\n }\n });\n }\n\n private runQueries() {\n const slug = getDrilldownSlug();\n const parentSlug = getDrilldownValueSlug();\n\n // If we don't have a patterns count in the tabs, or we are activating the patterns scene, run the pattern query\n if (slug === PageSlugs.patterns || this.state.patternsCount === undefined) {\n this.state.$patternsData?.runQueries();\n }\n\n // If we don't have a detected labels count, or we are activating the labels scene, run the detected labels query\n if (slug === PageSlugs.labels || parentSlug === ValueSlugs.label || this.state.labelsCount === undefined) {\n this.state.$detectedLabelsData?.runQueries();\n }\n\n // If we don't have a detected fields count, or we are activating the fields scene, run the detected fields query\n if (slug === PageSlugs.fields || parentSlug === ValueSlugs.field || this.state.fieldsCount === undefined) {\n this.state.$detectedFieldsData?.runQueries();\n }\n if (this.state.logsCount === undefined) {\n this.state.$logsCount?.runQueries();\n }\n }\n\n private subscribeToPatternsQuery() {\n return this.state.$patternsData?.subscribeToState((newState) => {\n this.updateLoadingState(newState, TabNames.patterns);\n if (newState.data?.state === LoadingState.Done) {\n const patternsResponse = newState.data.series;\n if (patternsResponse?.length !== undefined) {\n // Save the count of patterns to state\n this.setState({\n patternsCount: patternsResponse.length,\n });\n getMetadataService().setPatternsCount(patternsResponse.length);\n }\n }\n });\n }\n\n private subscribeToDetectedLabelsQuery() {\n return this.state.$detectedLabelsData?.subscribeToState((newState) => {\n this.updateLoadingState(newState, TabNames.labels);\n if (newState.data?.state === LoadingState.Done) {\n const detectedLabelsResponse = newState.data;\n // Detected labels API call always returns a single frame, with a field for each label\n const detectedLabelsFields = detectedLabelsResponse.series[0].fields;\n if (detectedLabelsResponse.series.length !== undefined && detectedLabelsFields.length !== undefined) {\n const removeSpecialFields = detectedLabelsResponse.series[0].fields.filter(\n (f) => LEVEL_VARIABLE_VALUE !== f.name\n );\n\n this.setState({\n labelsCount: removeSpecialFields.length + 1, // Add one for detected_level\n });\n getMetadataService().setLabelsCount(detectedLabelsFields.length);\n }\n }\n });\n }\n\n private updateLoadingState(newState: SceneDataState, key: keyof ServiceSceneLoadingStates) {\n const loadingStates = this.state.loadingStates;\n loadingStates[key] = newState.data?.state === LoadingState.Loading;\n // set loading state to true if any of the queries are loading\n const loading = Object.values(loadingStates).some((v) => v);\n this.setState({ loading, loadingStates });\n }\n\n private subscribeToLogsQuery() {\n return this.state.$data?.subscribeToState((newState, prevState) => {\n this.updateLoadingState(newState, TabNames.logs);\n if (newState.data?.state === LoadingState.Done || newState.data?.state === LoadingState.Streaming) {\n const resultCount = newState.data.series[0]?.length ?? 0;\n if (resultCount !== this.state.logsCount) {\n this.setState({\n logsCount: resultCount,\n });\n }\n }\n });\n }\n\n private subscribeToLogsCountQuery() {\n return this.state.$logsCount?.subscribeToState((newState) => {\n if (newState.data?.state === LoadingState.Done) {\n const value: number | undefined = newState.data.series[0]?.fields?.[1]?.values?.[0];\n this.setState({\n totalLogsCount: value,\n });\n }\n });\n }\n\n private subscribeToDetectedFieldsQuery(updateFieldsCount: boolean) {\n return this.state.$detectedFieldsData?.subscribeToState((newState) => {\n this.updateLoadingState(newState, TabNames.fields);\n if (updateFieldsCount && newState.data?.state === LoadingState.Done) {\n const detectedFieldsResponse = newState.data;\n const detectedFieldsFields = detectedFieldsResponse.series[0];\n\n if (detectedFieldsFields !== undefined && detectedFieldsFields.length !== this.state.fieldsCount) {\n this.setState({\n fieldsCount: detectedFieldsFields.length,\n });\n getMetadataService().setFieldsCount(detectedFieldsFields.length);\n }\n }\n });\n }\n\n private subscribeToTimeRange() {\n return sceneGraph.getTimeRange(this).subscribeToState(() => {\n this.state.$patternsData?.runQueries();\n this.state.$detectedLabelsData?.runQueries();\n this.state.$detectedFieldsData?.runQueries();\n this.state.$logsCount?.runQueries();\n });\n }\n\n private resetBodyAndData() {\n let stateUpdate: Partial = {};\n\n if (!this.state.$data) {\n stateUpdate.$data = getServiceSceneQueryRunner();\n }\n\n if (!this.state.$patternsData) {\n stateUpdate.$patternsData = getPatternsQueryRunner();\n }\n\n if (!this.state.$detectedLabelsData) {\n stateUpdate.$detectedLabelsData = getDetectedLabelsQueryRunner();\n }\n\n if (!this.state.$detectedFieldsData) {\n stateUpdate.$detectedFieldsData = getDetectedFieldsQueryRunner();\n }\n\n if (!this.state.$logsCount) {\n stateUpdate.$logsCount = getLogCountQueryRunner();\n }\n\n if (!this.state.body) {\n stateUpdate.body = buildGraphScene();\n }\n\n if (Object.keys(stateUpdate).length) {\n this.setState(stateUpdate);\n }\n }\n\n public setBreakdownView() {\n const { body } = this.state;\n const breakdownView = getDrilldownSlug();\n const breakdownViewDef = breakdownViewsDefinitions.find((v) => v.value === breakdownView);\n\n if (!body) {\n const err = new Error('body is not defined in setBreakdownView!');\n logger.error(err, { msg: 'ServiceScene setBreakdownView error' });\n throw err;\n }\n\n if (breakdownViewDef) {\n body.setState({\n children: [\n ...body.state.children.slice(0, 1),\n breakdownViewDef.getScene((length) => {\n if (breakdownViewDef.value === 'fields') {\n this.setState({ fieldsCount: length });\n }\n }),\n ],\n });\n } else {\n const valueBreakdownView = getDrilldownValueSlug();\n const valueBreakdownViewDef = valueBreakdownViews.find((v) => v.value === valueBreakdownView);\n\n if (valueBreakdownViewDef && this.state.drillDownLabel) {\n body.setState({\n children: [...body.state.children.slice(0, 1), valueBreakdownViewDef.getScene(this.state.drillDownLabel)],\n });\n } else {\n logger.error(new Error('not setting breakdown view'), { msg: 'setBreakdownView error' });\n }\n }\n }\n\n static Component = ({ model }: SceneComponentProps) => {\n const { body } = model.useState();\n if (body) {\n return ;\n }\n\n return ;\n };\n}\n\nfunction buildGraphScene() {\n return new SceneFlexLayout({\n direction: 'column',\n children: [\n new SceneFlexItem({\n ySizing: 'content',\n body: new ActionBarScene({}),\n }),\n ],\n });\n}\n\nfunction getPatternsQueryRunner() {\n return getResourceQueryRunner([\n buildResourceQuery(`{${VAR_LABELS_EXPR}}`, 'patterns', { refId: PATTERNS_QUERY_REFID }),\n ]);\n}\n\nfunction getDetectedLabelsQueryRunner() {\n return getResourceQueryRunner([\n buildResourceQuery(`{${VAR_LABELS_EXPR}}`, 'detected_labels', { refId: DETECTED_LABELS_QUERY_REFID }),\n ]);\n}\n\nfunction getDetectedFieldsQueryRunner() {\n return getResourceQueryRunner([\n buildResourceQuery(LOG_STREAM_SELECTOR_EXPR, 'detected_fields', { refId: DETECTED_FIELDS_QUERY_REFID }),\n ]);\n}\n\nfunction getServiceSceneQueryRunner() {\n return getQueryRunner([buildDataQuery(LOG_STREAM_SELECTOR_EXPR, { refId: LOGS_PANEL_QUERY_REFID })]);\n}\n\nfunction getLogCountQueryRunner() {\n const queryRunner = getQueryRunner(\n [\n buildDataQuery(`sum(count_over_time(${LOG_STREAM_SELECTOR_EXPR}[$__auto]))`, {\n refId: LOGS_COUNT_QUERY_REFID,\n queryType: 'instant',\n }),\n ],\n { runQueriesMode: 'manual' } // for some reason when this query is set to auto, it doesn't run on time range update, looks like there is different behavior with data providers not in the special $data prop\n );\n\n if (queryRunner instanceof SceneQueryRunner) {\n return queryRunner;\n }\n const error = new Error('log count query provider is not query runner!');\n logger.error(error, { msg: 'getLogCountQueryRunner: invalid return type' });\n throw error;\n}\n","import { SceneComponentProps, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport React from 'react';\nimport { Icon, ToolbarButton, useStyles2 } from '@grafana/ui';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { css } from '@emotion/css';\nimport { getFavoriteLabelValuesFromStorage } from '../../services/store';\nimport { addToFavorites, removeFromFavorites } from '../../services/favorites';\n\nexport interface FavoriteServiceHeaderActionSceneState extends SceneObjectState {\n labelValue: string;\n labelName: string;\n ds: string;\n hover?: boolean;\n}\n\nexport class FavoriteServiceHeaderActionScene extends SceneObjectBase {\n public static Component = ({ model }: SceneComponentProps) => {\n const { ds, labelValue, labelName, hover } = model.useState();\n const isFavorite = getFavoriteLabelValuesFromStorage(ds, labelName).includes(labelValue);\n const styles = useStyles2((theme) => getStyles(theme, isFavorite, hover));\n const tooltipCopy = isFavorite ? `Remove ${labelValue} from favorites` : `Add ${labelValue} to favorites`;\n\n return (\n \n {\n model.setHover(true);\n }}\n onMouseOut={() => {\n model.setHover(false);\n }}\n icon={}\n color={isFavorite ? 'rgb(235, 123, 24)' : '#ccc'}\n onClick={() => model.onClick(isFavorite)}\n name={'star'}\n aria-label={tooltipCopy}\n tooltip={tooltipCopy}\n />\n \n );\n };\n\n public setHover(hover: boolean) {\n this.setState({\n hover,\n });\n }\n\n public onClick(isFavorite: boolean) {\n if (isFavorite) {\n removeFromFavorites(this.state.labelName, this.state.labelValue, this);\n } else {\n addToFavorites(this.state.labelName, this.state.labelValue, this);\n }\n }\n}\n\nfunction getStyles(theme: GrafanaTheme2, isFavorite: boolean, hover = false) {\n return {\n wrapper: css({\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignSelf: 'center',\n }),\n };\n}\n","import React from 'react';\n\nimport { SceneComponentProps, SceneObject, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport { LinkButton, useStyles2 } from '@grafana/ui';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from 'services/analytics';\nimport { getDrillDownIndexLink, pushUrlHandler } from '../../services/navigate';\nimport { getLabelsVariable } from '../../services/variableGetters';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { css } from '@emotion/css';\nimport { SERVICE_NAME, SERVICE_UI_LABEL } from '../../services/variables';\nimport { FilterOp } from '../../services/filterTypes';\nimport { testIds } from '../../services/testIds';\nimport { addToFavorites } from '../../services/favorites';\n\nexport interface SelectServiceButtonState extends SceneObjectState {\n labelValue: string;\n labelName: string;\n}\n\nexport class SelectServiceButton extends SceneObjectBase {\n public getLink = () => {\n if (!this.state.labelValue) {\n return;\n }\n\n return getLabelDrilldownLink(this.state.labelName, this.state.labelValue, this);\n };\n\n public onClick = () => {\n selectLabel(this.state.labelName, this.state.labelValue, this);\n };\n\n public static Component = ({ model }: SceneComponentProps) => {\n const styles = useStyles2(getStyles);\n const labels = getLabelsVariable(model);\n // Re-render links on label filter changes\n labels.useState();\n const link = model.getLink();\n return (\n \n Show logs\n \n );\n };\n}\n\n/**\n * Select label tracking and add to favorites\n */\nfunction selectLabel(primaryLabelName: string, primaryLabelValue: string, sceneRef: SceneObject) {\n reportAppInteraction(USER_EVENTS_PAGES.service_selection, USER_EVENTS_ACTIONS.service_selection.service_selected, {\n value: primaryLabelValue,\n label: primaryLabelName,\n });\n\n addToFavorites(primaryLabelName, primaryLabelValue, sceneRef);\n}\n\n/**\n * Builds label drilldown link\n */\nexport function getLabelDrilldownLink(primaryLabelName: string, primaryLabelValue: string, sceneRef: SceneObject) {\n const variable = getLabelsVariable(sceneRef);\n\n const filteredFilters = variable.state.filters.filter(\n (f) => !(f.key === primaryLabelName && f.value === primaryLabelValue)\n );\n\n const filters = [\n ...filteredFilters,\n {\n key: primaryLabelName,\n operator: FilterOp.Equal,\n value: primaryLabelValue,\n },\n ];\n\n if (primaryLabelName === SERVICE_NAME) {\n primaryLabelName = SERVICE_UI_LABEL;\n }\n\n const clonedVar = variable.clone({ filters });\n\n // In this case, we don't have a ServiceScene created yet, so we call a special function to navigate there for the first time\n return getDrillDownIndexLink(primaryLabelName, primaryLabelValue, clonedVar.urlSync?.getUrlState());\n}\n\n/**\n * Navigates to drilldown\n */\nexport function goToLabelDrillDownLink(primaryLabelName: string, primaryLabelValue: string, sceneRef: SceneObject) {\n const link = getLabelDrilldownLink(primaryLabelName, primaryLabelValue, sceneRef);\n selectLabel(primaryLabelName, primaryLabelValue, sceneRef);\n pushUrlHandler(link);\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n button: css({\n alignSelf: 'center',\n }),\n };\n}\n","import React from 'react';\nimport { GrotError } from 'Components/GrotError';\nimport { TextLink, Text } from '@grafana/ui';\n\nexport const ConfigureVolumeError = () => {\n return (\n \n

Log volume has not been configured.

\n

\n \n Instructions to enable volume in the Loki config:\n \n

\n \n
\n          \n            limits_config:\n            
\n   volume_enabled: true\n
\n
\n
\n
\n );\n};\n","import React from 'react';\nimport { GrotError } from 'Components/GrotError';\n\nexport const NoServiceSearchResults = () => {\n return (\n \n

No service matched your search.

\n
\n );\n};\n","import { SceneComponentProps, sceneGraph, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport { Select, Stack, useStyles2 } from '@grafana/ui';\nimport React from 'react';\nimport { ServiceSelectionScene } from './ServiceSelectionScene';\nimport { ServiceSelectionTabsScene, TabOption } from './ServiceSelectionTabsScene';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { css } from '@emotion/css';\n\nexport interface TabPopoverSceneState extends SceneObjectState {}\n\nexport class TabPopoverScene extends SceneObjectBase {\n public static Component = ({ model }: SceneComponentProps) => {\n const serviceSelectionScene = sceneGraph.getAncestor(model, ServiceSelectionScene);\n const serviceSelectionTabsScene = sceneGraph.getAncestor(model, ServiceSelectionTabsScene);\n const { tabOptions, showPopover } = serviceSelectionTabsScene.useState();\n const popoverStyles = useStyles2(getPopoverStyles);\n\n const tabOptionsWithIcon: TabOption[] = tabOptions.map((opt) => {\n return {\n ...opt,\n icon: opt.saved ? 'save' : undefined,\n label: `${opt.label}`,\n };\n });\n\n return (\n \n
\n \n menuShouldPortal={false}\n width={50}\n onBlur={() => {\n serviceSelectionTabsScene.toggleShowPopover();\n }}\n autoFocus={true}\n isOpen={showPopover}\n placeholder={'Search labels'}\n options={tabOptionsWithIcon}\n isSearchable={true}\n openMenuOnFocus={true}\n onChange={(option) => {\n // Add value to variable\n if (option.value) {\n // Hide the popover\n serviceSelectionTabsScene.toggleShowPopover();\n // Set new tab\n serviceSelectionScene.setSelectedTab(option.value);\n }\n }}\n />\n
\n
\n );\n };\n}\n\nconst getPopoverStyles = (theme: GrafanaTheme2) => ({\n card: {\n body: css({\n padding: theme.spacing(1),\n }),\n p: css({\n maxWidth: 300,\n }),\n },\n});\n","import { SceneComponentProps, sceneGraph, SceneObjectBase, SceneObjectState, SceneQueryRunner } from '@grafana/scenes';\nimport React, { useRef } from 'react';\nimport { Icon, Popover, PopoverController, Tab, TabsBar, Tooltip, useStyles2 } from '@grafana/ui';\nimport { GrafanaTheme2, LoadingState, SelectableValue } from '@grafana/data';\nimport { css, cx } from '@emotion/css';\nimport { SERVICE_NAME, SERVICE_UI_LABEL } from '../../services/variables';\nimport { truncateText } from '../../services/text';\nimport { rest } from 'lodash';\nimport { ServiceSelectionScene } from './ServiceSelectionScene';\nimport { getSceneQueryRunner } from '../../services/panel';\nimport { buildResourceQuery } from '../../services/query';\nimport { TabPopoverScene } from './TabPopoverScene';\nimport { getDataSourceVariable, getServiceSelectionPrimaryLabel } from '../../services/variableGetters';\nimport { getFavoriteTabsFromStorage, removeTabFromLocalStorage } from '../../services/store';\n\nexport interface TabOption extends SelectableValue {\n label: string;\n value: string;\n active?: boolean;\n saved?: boolean;\n savedIndex?: number;\n}\n\nexport interface ServiceSelectionTabsSceneState extends SceneObjectState {\n tabOptions: TabOption[];\n showPopover: boolean;\n $labelsData: SceneQueryRunner;\n popover?: TabPopoverScene;\n}\n\ninterface LabelOptions {\n label: string;\n cardinality: number;\n}\n\nexport class ServiceSelectionTabsScene extends SceneObjectBase {\n constructor(state: Partial) {\n super({\n showPopover: false,\n $labelsData: getSceneQueryRunner({\n queries: [buildResourceQuery('', 'detected_labels')],\n runQueriesMode: 'manual',\n }),\n tabOptions: [\n {\n label: SERVICE_UI_LABEL,\n value: SERVICE_NAME,\n saved: true,\n },\n ],\n ...state,\n });\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n public static Component = ({ model }: SceneComponentProps) => {\n // Scene vars\n const { tabOptions, showPopover, popover, $labelsData } = model.useState();\n const { data } = $labelsData.useState();\n const serviceSelectionScene = sceneGraph.getAncestor(model, ServiceSelectionScene);\n const primaryLabel = getServiceSelectionPrimaryLabel(model);\n // Re-render when active tab changes, which is stored in the primary label variable\n primaryLabel.useState();\n\n // Constants\n const styles = useStyles2(getTabsStyles);\n const popoverRef = useRef(null);\n const maxLabelLength = 15;\n\n return (\n \n {tabOptions\n .filter((tabLabel) => tabLabel.saved || tabLabel.active || tabLabel.value === SERVICE_NAME)\n .sort((a, b) => {\n // Service name goes first\n if (a.value === SERVICE_NAME || b.value === SERVICE_NAME) {\n return a.value === SERVICE_NAME ? -1 : 1;\n }\n\n // Then sort by the order added to local storage\n return (a.savedIndex ?? 0) - (b.savedIndex ?? 0);\n })\n .map((tabLabel) => {\n const tab = (\n {\n // Set the new active tab\n serviceSelectionScene.setSelectedTab(tabLabel.value);\n }}\n label={truncateText(tabLabel.label, maxLabelLength, true)}\n active={tabLabel.active}\n suffix={\n tabLabel.value !== SERVICE_NAME\n ? (props) => {\n return (\n <>\n \n {\n if (e.key === 'Enter') {\n model.removeSavedTab(tabLabel.value);\n }\n }}\n onClick={(e) => {\n // Don't bubble up to the tab component, we don't want to select the tab we're removing\n e.stopPropagation();\n model.removeSavedTab(tabLabel.value);\n }}\n name={'times'}\n className={cx(props.className)}\n />\n \n \n );\n }\n : undefined\n }\n />\n );\n\n if (tabLabel.label.length > maxLabelLength) {\n return (\n \n {tab}\n \n );\n } else {\n return tab;\n }\n })}\n {data?.state === LoadingState.Loading && }\n\n {/* Add more tabs tab */}\n {data?.state === LoadingState.Done && (\n \n \n \n )}\n\n {popover && (\n }>\n {(showPopper, hidePopper, popperProps) => {\n const blurFocusProps = {\n onBlur: hidePopper,\n onFocus: showPopper,\n };\n\n return (\n <>\n {popoverRef.current && (\n <>\n {/* @ts-expect-error @todo upgrade typescript */}\n \n \n )}\n \n );\n }}\n \n )}\n \n );\n };\n\n removeSavedTab = (labelName: string) => {\n removeTabFromLocalStorage(getDataSourceVariable(this).getValue().toString(), labelName);\n\n const labels = this.getLabelsFromQueryRunnerState();\n if (labels) {\n this.populatePrimaryLabelsVariableOptions(labels);\n }\n\n // If the user is closing the active tab, select the default tab\n const serviceSelectionScene = sceneGraph.getAncestor(this, ServiceSelectionScene);\n if (serviceSelectionScene.getSelectedTab() === labelName) {\n serviceSelectionScene.selectDefaultLabelTab();\n }\n };\n\n toggleShowPopover = () => {\n this.setState({\n showPopover: !this.state.showPopover,\n });\n };\n\n getLabelsFromQueryRunnerState(state = this.state.$labelsData?.state): LabelOptions[] | undefined {\n return state.data?.series[0].fields.map((f) => {\n return {\n label: f.name,\n cardinality: f.values[0],\n };\n });\n }\n\n public populatePrimaryLabelsVariableOptions(labels: LabelOptions[]) {\n const serviceSelectionScene = sceneGraph.getAncestor(this, ServiceSelectionScene);\n const selectedTab = serviceSelectionScene.getSelectedTab();\n const savedTabs = getFavoriteTabsFromStorage(getDataSourceVariable(this).getValue().toString());\n\n const tabOptions: TabOption[] = labels\n .map((l) => {\n const savedIndex = savedTabs.indexOf(l.label);\n const option: TabOption = {\n label: l.label === SERVICE_NAME ? SERVICE_UI_LABEL : l.label,\n value: l.label,\n active: selectedTab === l.label,\n saved: savedIndex !== -1,\n savedIndex,\n };\n return option;\n })\n .sort((a, b) => {\n // Sort service first\n if (a.value === SERVICE_NAME || b.value === SERVICE_NAME) {\n return a.value === SERVICE_NAME ? -1 : 1;\n }\n\n // Then sort alphabetically\n return a.label < b.label ? -1 : a.label > b.label ? 1 : 0;\n });\n this.setState({\n tabOptions,\n });\n }\n\n private runDetectedLabels() {\n this.state.$labelsData.runQueries();\n }\n\n private runDetectedLabelsSubs() {\n // Update labels/tabs on time range change\n this._subs.add(\n sceneGraph.getTimeRange(this).subscribeToState(() => {\n this.runDetectedLabels();\n })\n );\n\n // Update labels (tabs) when datasource is changed\n this._subs.add(\n getDataSourceVariable(this).subscribeToState(() => {\n this.runDetectedLabels();\n })\n );\n }\n\n private onActivate() {\n // Get labels\n this.runDetectedLabels();\n\n this.setState({\n popover: new TabPopoverScene({}),\n });\n\n this.runDetectedLabelsSubs();\n\n // Update labels (tabs) when datasource is changed\n this._subs.add(\n getDataSourceVariable(this).subscribeToState(() => {\n this.state.$labelsData.runQueries();\n })\n );\n\n this._subs.add(\n getServiceSelectionPrimaryLabel(this).subscribeToState(() => {\n const labels = this.getLabelsFromQueryRunnerState(this.state.$labelsData?.state);\n if (labels) {\n this.populatePrimaryLabelsVariableOptions(labels);\n }\n })\n );\n\n this._subs.add(\n this.state.$labelsData.subscribeToState((newState) => {\n if (newState.data?.state === LoadingState.Done) {\n const labels = this.getLabelsFromQueryRunnerState(newState);\n const serviceSelectionScene = sceneGraph.getAncestor(this, ServiceSelectionScene);\n\n if (labels) {\n this.populatePrimaryLabelsVariableOptions(labels);\n }\n\n const selectedTab = serviceSelectionScene.getSelectedTab();\n // If the tab is no longer available, either because the user changed the datasource, or time range, select the default tab\n if (!labels?.some((label) => label.label === selectedTab)) {\n serviceSelectionScene.selectDefaultLabelTab();\n }\n }\n })\n );\n }\n}\n\nconst getTabsStyles = (theme: GrafanaTheme2) => ({\n tabs: css({\n overflowY: 'hidden',\n }),\n addTab: css({\n label: 'add-label-tab',\n color: theme.colors.primary.text,\n '& button': {\n color: theme.colors.primary.text,\n },\n }),\n popover: css({\n borderRadius: theme.shape.radius.default,\n boxShadow: theme.shadows.z3,\n background: theme.colors.background.primary,\n border: `1px solid ${theme.colors.border.weak}`,\n }),\n});\n","import React from 'react';\nimport { GrotError } from 'Components/GrotError';\n\nexport const NoServiceVolume = (props: { labelName: string }) => {\n return (\n \n

\n No logs found in {props.labelName}.
\n Please adjust time range or select another label.\n

\n
\n );\n};\n","import { SceneComponentProps, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport { Button, useStyles2 } from '@grafana/ui';\nimport { testIds } from '../../services/testIds';\nimport { addToFilters, FilterType } from '../ServiceScene/Breakdowns/AddToFiltersButton';\nimport { VAR_LABELS } from '../../services/variables';\nimport { getLabelsVariable, getValueFromAdHocVariableFilter } from '../../services/variableGetters';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from '../../services/analytics';\nimport { css } from '@emotion/css';\nimport React from 'react';\nimport { FilterOp } from '../../services/filterTypes';\n\nexport interface AddLabelToFiltersHeaderActionSceneState extends SceneObjectState {\n name: string;\n value: string;\n hidden?: boolean;\n included: boolean | null;\n}\n\nexport class AddLabelToFiltersHeaderActionScene extends SceneObjectBase {\n constructor(state: Omit) {\n super({\n ...state,\n included: null,\n });\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n onActivate() {\n this.setState({ ...this.isSelected() });\n this._subs.add(\n getLabelsVariable(this).subscribeToState(() => {\n const selected = this.isSelected();\n if (this.state.included !== selected.included) {\n this.setState({ ...selected });\n }\n })\n );\n }\n\n isSelected = () => {\n const variable = getLabelsVariable(this);\n\n // Check if the filter is already there\n const filterInSelectedFilters = variable.state.filters.find((f) => {\n const value = getValueFromAdHocVariableFilter(VAR_LABELS, f);\n return f.key === this.state.name && value.value === this.state.value;\n });\n\n if (!filterInSelectedFilters) {\n return { included: false };\n }\n\n // @todo support regex operator\n return {\n included: filterInSelectedFilters.operator === FilterOp.Equal,\n };\n };\n\n public static Component = ({ model }: SceneComponentProps) => {\n const { value, hidden, included } = model.useState();\n\n if (hidden) {\n return <>;\n }\n\n const styles = useStyles2(getStyles);\n return (\n \n (included === true ? model.onClick('clear') : model.onClick('include'))}\n data-testid={testIds.exploreServiceDetails.buttonFilterInclude}\n />\n \n );\n };\n\n public getFilter() {\n return { name: this.state.name, value: this.state.value };\n }\n\n public onClick = (type: FilterType) => {\n const filter = this.getFilter();\n\n addToFilters(filter.name, filter.value, type, this, VAR_LABELS);\n\n const variable = getLabelsVariable(this);\n reportAppInteraction(USER_EVENTS_PAGES.service_selection, USER_EVENTS_ACTIONS.service_selection.add_to_filters, {\n filterType: 'index-filters',\n key: filter.name,\n action: type,\n filtersLength: variable?.state.filters.length || 0,\n });\n\n this.setState({ ...this.isSelected() });\n };\n}\n\nconst getStyles = () => {\n return {\n container: css({\n display: 'flex',\n justifyContent: 'center',\n }),\n includeButton: css({\n borderRadius: 0,\n }),\n wrapper: css({\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignSelf: 'center',\n }),\n };\n};\n","import { SceneComponentProps, sceneGraph, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport { GrafanaTheme2, SelectableValue } from '@grafana/data';\nimport { css } from '@emotion/css';\nimport { IconButton, Pagination, Select, useStyles2 } from '@grafana/ui';\nimport React, { useEffect } from 'react';\nimport { ServiceSelectionScene } from './ServiceSelectionScene';\nimport { setServiceSelectionPageCount } from '../../services/store';\n\nexport interface ServiceSelectionPaginationSceneState extends SceneObjectState {}\n\nexport class ServiceSelectionPaginationScene extends SceneObjectBase {\n public static PageCount = ({\n model,\n totalCount,\n }: SceneComponentProps & { totalCount: number }) => {\n const styles = useStyles2(getPageCountStyles);\n const serviceSelectionScene = sceneGraph.getAncestor(model, ServiceSelectionScene);\n const { countPerPage } = serviceSelectionScene.useState();\n const options = getCountOptionsFromTotal(totalCount);\n useEffect(() => {\n const lastOptionValue = options[options.length - 1]?.value ?? countPerPage.toString();\n if (countPerPage.toString() > lastOptionValue) {\n serviceSelectionScene.setState({ countPerPage: parseInt(lastOptionValue, 10) });\n }\n }, [countPerPage, options, serviceSelectionScene]);\n return (\n \n \n Showing{' '}\n {\n if (value.value) {\n const countPerPage = parseInt(value.value, 10);\n serviceSelectionScene.setState({ countPerPage, currentPage: 1 });\n serviceSelectionScene.updateBody();\n setServiceSelectionPageCount(countPerPage);\n }\n }}\n options={options}\n value={countPerPage.toString()}\n />{' '}\n of {totalCount}{' '}\n \n \n \n );\n };\n public static Component = ({\n model,\n totalCount,\n }: SceneComponentProps & { totalCount: number }) => {\n const serviceSelectionScene = sceneGraph.getAncestor(model, ServiceSelectionScene);\n const { countPerPage, currentPage } = serviceSelectionScene.useState();\n const getStyles = (theme: GrafanaTheme2) => ({\n pagination: css({\n float: 'none',\n }),\n paginationWrap: css({\n [theme.breakpoints.up('lg')]: {\n display: 'none',\n },\n [theme.breakpoints.down('lg')]: {\n display: 'flex',\n justifyContent: 'flex-end',\n flex: '1 0 auto',\n },\n }),\n paginationWrapMd: css({\n [theme.breakpoints.down('lg')]: {\n display: 'none',\n },\n [theme.breakpoints.up('lg')]: {\n display: 'flex',\n justifyContent: 'flex-end',\n flex: '1 0 auto',\n },\n }),\n });\n\n const styles = useStyles2(getStyles);\n\n if (totalCount > countPerPage) {\n return (\n <>\n \n {\n serviceSelectionScene.setState({ currentPage: toPage });\n serviceSelectionScene.updateBody();\n }}\n />\n \n \n {\n serviceSelectionScene.setState({ currentPage: toPage });\n serviceSelectionScene.updateBody();\n }}\n />\n \n \n );\n }\n\n return null;\n };\n}\n\nfunction getPageCountStyles(theme: GrafanaTheme2) {\n return {\n icon: css({\n color: theme.colors.text.disabled,\n marginLeft: theme.spacing.x1,\n }),\n searchPageCountWrap: css({\n display: 'flex',\n alignItems: 'center',\n }),\n select: css({\n maxWidth: '65px',\n marginLeft: theme.spacing(1),\n marginRight: theme.spacing(1),\n }),\n searchFieldPlaceholderText: css({\n fontSize: theme.typography.bodySmall.fontSize,\n color: theme.colors.text.disabled,\n alignItems: 'center',\n display: 'flex',\n flex: '1 0 auto',\n textWrapMode: 'nowrap',\n }),\n };\n}\n\nexport function getCountOptionsFromTotal(totalCount: number) {\n const delta = 20;\n const end = 60;\n const roundedTotalCount = Math.ceil(totalCount / delta) * delta;\n\n const options: Array> = [];\n for (let count = delta; count <= end && count <= roundedTotalCount; count += delta) {\n let label = count.toString();\n if (count < delta) {\n label = count.toString();\n } else if (count > totalCount) {\n label = totalCount.toString();\n }\n options.push({\n value: count.toString(),\n label,\n });\n }\n\n return options;\n}\n","import { css } from '@emotion/css';\nimport { debounce } from 'lodash';\nimport React from 'react';\nimport {\n AdHocVariableFilter,\n DashboardCursorSync,\n DataFrame,\n dateTime,\n GrafanaTheme2,\n LoadingState,\n TimeRange,\n} from '@grafana/data';\nimport {\n AdHocFiltersVariable,\n behaviors,\n DataSourceVariable,\n PanelBuilders,\n SceneComponentProps,\n SceneCSSGridItem,\n SceneCSSGridLayout,\n sceneGraph,\n SceneObjectBase,\n SceneObjectState,\n SceneObjectUrlSyncConfig,\n SceneObjectUrlValues,\n SceneQueryRunner,\n SceneVariableSet,\n VizPanel,\n} from '@grafana/scenes';\nimport {\n DrawStyle,\n Field,\n LegendDisplayMode,\n PanelContext,\n SeriesVisibilityChangeMode,\n StackingMode,\n useStyles2,\n} from '@grafana/ui';\nimport { addTabToLocalStorage, getFavoriteLabelValuesFromStorage, getServiceSelectionPageCount } from 'services/store';\nimport {\n EXPLORATION_DS,\n LEVEL_VARIABLE_VALUE,\n SERVICE_NAME,\n SERVICE_UI_LABEL,\n VAR_AGGREGATED_METRICS,\n VAR_LABELS_REPLICA,\n VAR_LABELS_REPLICA_EXPR,\n VAR_PRIMARY_LABEL,\n VAR_PRIMARY_LABEL_EXPR,\n VAR_PRIMARY_LABEL_SEARCH,\n} from 'services/variables';\nimport { goToLabelDrillDownLink, SelectServiceButton } from './SelectServiceButton';\nimport {\n buildDataQuery,\n buildVolumeQuery,\n renderLogQLLabelFilters,\n unwrapWildcardSearch,\n wrapWildcardSearch,\n} from 'services/query';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from 'services/analytics';\nimport { getQueryRunner, getSceneQueryRunner, setLevelColorOverrides } from 'services/panel';\nimport { ConfigureVolumeError } from './ConfigureVolumeError';\nimport { NoServiceSearchResults } from './NoServiceSearchResults';\nimport { getLevelLabelsFromSeries, toggleLevelVisibility } from 'services/levels';\nimport { ServiceFieldSelector } from '../ServiceScene/Breakdowns/FieldSelector';\nimport { CustomConstantVariable } from '../../services/CustomConstantVariable';\nimport { areArraysEqual } from '../../services/comparison';\nimport {\n clearServiceSelectionSearchVariable,\n getAggregatedMetricsVariable,\n getDataSourceVariable,\n getLabelsVariable,\n getLabelsVariableReplica,\n getServiceSelectionPrimaryLabel,\n getServiceSelectionSearchVariable,\n setServiceSelectionPrimaryLabelKey,\n} from '../../services/variableGetters';\nimport { config, locationService } from '@grafana/runtime';\nimport { VariableHide } from '@grafana/schema';\nimport { ToolbarScene } from '../IndexScene/ToolbarScene';\nimport { IndexScene, showLogsButtonSceneKey } from '../IndexScene/IndexScene';\nimport { ServiceSelectionTabsScene } from './ServiceSelectionTabsScene';\nimport { FavoriteServiceHeaderActionScene } from './FavoriteServiceHeaderActionScene';\nimport { pushUrlHandler } from '../../services/navigate';\nimport { NoServiceVolume } from './NoServiceVolume';\nimport { getQueryRunnerFromChildren } from '../../services/scenes';\nimport { AddLabelToFiltersHeaderActionScene } from './AddLabelToFiltersHeaderActionScene';\nimport { ShowLogsButtonScene } from '../IndexScene/ShowLogsButtonScene';\nimport { ServiceSelectionPaginationScene } from './ServiceSelectionPaginationScene';\n\nconst aggregatedMetricsEnabled: boolean | undefined = config.featureToggles.exploreLogsAggregatedMetrics;\n// Don't export AGGREGATED_SERVICE_NAME, we want to rename things so the rest of the application is agnostic to how we got the services\nconst AGGREGATED_SERVICE_NAME = '__aggregated_metric__';\n\n//@todo make start date user configurable, currently hardcoded for experimental cloud release\nexport const AGGREGATED_METRIC_START_DATE = dateTime('2024-08-30', 'YYYY-MM-DD');\n\ninterface ServiceSelectionSceneState extends SceneObjectState {\n // The body of the component\n body: SceneCSSGridLayout;\n // Show logs of a certain level for a given service\n serviceLevel: Map;\n // Logs volume API response as dataframe with SceneQueryRunner\n $data: SceneQueryRunner;\n tabs?: ServiceSelectionTabsScene;\n // Pagination options\n countPerPage: number;\n currentPage: number;\n paginationScene?: ServiceSelectionPaginationScene;\n\n showPopover: boolean;\n tabOptions: Array<{\n label: string;\n value: string;\n }>;\n}\n\nfunction renderPrimaryLabelFilters(filters: AdHocVariableFilter[]): string {\n if (filters.length) {\n const filter = filters[0];\n return `${filter.key}${filter.operator}\\`${filter.value}\\``;\n }\n\n return '';\n}\n\nconst primaryLabelUrlKey = 'var-primary_label';\nconst datasourceUrlKey = 'var-ds';\n\nexport class ServiceSelectionScene extends SceneObjectBase {\n protected _urlSync = new SceneObjectUrlSyncConfig(this, {\n keys: [primaryLabelUrlKey],\n });\n\n constructor(state: Partial) {\n super({\n body: new SceneCSSGridLayout({ children: [] }),\n $variables: new SceneVariableSet({\n variables: [\n // Service search variable\n new CustomConstantVariable({\n name: VAR_PRIMARY_LABEL_SEARCH,\n label: 'Service',\n hide: VariableHide.hideVariable,\n skipUrlSync: true,\n value: '.+',\n }),\n // variable that stores if aggregated metrics are supported for the query\n new CustomConstantVariable({\n name: VAR_AGGREGATED_METRICS,\n label: '',\n hide: VariableHide.hideLabel,\n value: SERVICE_NAME,\n skipUrlSync: true,\n options: [\n {\n value: SERVICE_NAME,\n label: SERVICE_NAME,\n },\n {\n value: AGGREGATED_SERVICE_NAME,\n label: AGGREGATED_SERVICE_NAME,\n },\n ],\n }),\n // The active tab expression, hidden variable\n new AdHocFiltersVariable({\n name: VAR_PRIMARY_LABEL,\n hide: VariableHide.hideLabel,\n expressionBuilder: (filters) => {\n return renderPrimaryLabelFilters(filters);\n },\n filters: [\n {\n key: getSelectedTabFromUrl().key ?? SERVICE_NAME,\n value: '.+',\n operator: '=~',\n },\n ],\n }),\n new AdHocFiltersVariable({\n name: VAR_LABELS_REPLICA,\n datasource: EXPLORATION_DS,\n layout: 'vertical',\n filters: [],\n expressionBuilder: renderLogQLLabelFilters,\n hide: VariableHide.hideVariable,\n key: 'adhoc_service_filter_replica',\n skipUrlSync: true,\n }),\n ],\n }),\n $data: getSceneQueryRunner({\n queries: [],\n runQueriesMode: 'manual',\n }),\n serviceLevel: new Map(),\n // pagination\n countPerPage: getServiceSelectionPageCount() ?? 20,\n currentPage: 1,\n\n showPopover: false,\n tabOptions: [\n {\n label: SERVICE_UI_LABEL,\n value: SERVICE_NAME,\n },\n ],\n ...state,\n });\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n public static Component = ({ model }: SceneComponentProps) => {\n const styles = useStyles2(getStyles);\n const { body, $data, tabs, paginationScene } = model.useState();\n const { data } = $data.useState();\n const selectedTab = model.getSelectedTab();\n\n const serviceStringVariable = getServiceSelectionSearchVariable(model);\n const { label, value: searchValue } = serviceStringVariable.useState();\n const hasSearch = searchValue && searchValue !== '.+';\n\n const { labelsByVolume, labelsToQuery } = model.getLabels(data?.series);\n const isLogVolumeLoading =\n data?.state === LoadingState.Loading || data?.state === LoadingState.Streaming || data === undefined;\n const volumeApiError = $data.state.data?.state === LoadingState.Error;\n\n const onSearchChange = (serviceName?: string) => {\n model.onSearchServicesChange(serviceName);\n };\n\n const filterLabel = model.formatPrimaryLabelForUI();\n let customValue = serviceStringVariable.getValue().toString();\n if (customValue === '.+') {\n customValue = '';\n }\n const customLabel = unwrapWildcardSearch(customValue);\n\n return (\n
\n
\n {tabs && }\n \n
\n onSearchChange(serviceName)}\n selectOption={(value: string) => {\n goToLabelDrillDownLink(selectedTab, value, model);\n }}\n label={filterLabel}\n options={\n labelsToQuery?.map((serviceName) => ({\n value: serviceName,\n label: serviceName,\n })) ?? []\n }\n />\n {!isLogVolumeLoading && (\n \n {paginationScene && (\n \n )}\n {paginationScene && (\n \n )}\n \n )}\n
\n
\n {/** If we don't have any servicesByVolume, volume endpoint is probably not enabled */}\n {!isLogVolumeLoading && volumeApiError && }\n {!isLogVolumeLoading && !volumeApiError && hasSearch && !labelsByVolume?.length && }\n {!isLogVolumeLoading && !volumeApiError && !hasSearch && !labelsByVolume?.length && (\n \n )}\n {!(!isLogVolumeLoading && volumeApiError) && (\n
\n \n
\n {paginationScene && (\n \n )}\n
\n
\n )}\n
\n
\n );\n };\n\n // We could also run model.setState in component, but it is recommended to implement the state-modifying methods in the scene object\n onSearchServicesChange = debounce((primaryLabelSearch?: string) => {\n // Set search variable\n const searchVar = getServiceSelectionSearchVariable(this);\n\n const newSearchString = primaryLabelSearch ? wrapWildcardSearch(primaryLabelSearch) : '.+';\n if (newSearchString !== searchVar.state.value) {\n searchVar.setState({\n value: primaryLabelSearch ? wrapWildcardSearch(primaryLabelSearch) : '.+',\n label: primaryLabelSearch ?? '',\n });\n }\n\n const primaryLabelVar = getServiceSelectionPrimaryLabel(this);\n const filter = primaryLabelVar.state.filters[0];\n\n // Update primary label with search string\n if (wrapWildcardSearch(searchVar.state.value.toString()) !== filter.value) {\n primaryLabelVar.setState({\n filters: [\n {\n ...filter,\n value: wrapWildcardSearch(searchVar.state.value.toString()),\n },\n ],\n });\n }\n\n this.setState({\n currentPage: 1,\n });\n\n reportAppInteraction(\n USER_EVENTS_PAGES.service_selection,\n USER_EVENTS_ACTIONS.service_selection.search_services_changed,\n {\n searchQuery: primaryLabelSearch,\n }\n );\n }, 500);\n\n /**\n * Set changes from the URL to the state of the primary label variable\n */\n getUrlState() {\n const { key } = getSelectedTabFromUrl();\n const primaryLabelVar = getServiceSelectionPrimaryLabel(this);\n const filter = primaryLabelVar.state.filters[0];\n\n if (filter.key && filter.key !== key) {\n getServiceSelectionPrimaryLabel(this).setState({\n filters: [\n {\n ...filter,\n key: key ?? filter.key,\n },\n ],\n });\n }\n\n return {};\n }\n\n /**\n * Unused, but required\n * @param values\n */\n updateFromUrl(values: SceneObjectUrlValues) {}\n\n addDatasourceChangeToBrowserHistory(newDs: string) {\n const location = locationService.getLocation();\n const search = new URLSearchParams(location.search);\n const dsUrl = search.get(datasourceUrlKey);\n if (dsUrl && newDs !== dsUrl) {\n const currentUrl = location.pathname + location.search;\n search.set(datasourceUrlKey, newDs);\n const newUrl = location.pathname + '?' + search.toString();\n if (currentUrl !== newUrl) {\n pushUrlHandler(newUrl);\n }\n }\n }\n\n /**\n * Attempting to add any change to the primary label variable (i.e. the selected tab) as a browser history event\n * @param newKey\n * @param replace\n */\n addLabelChangeToBrowserHistory(newKey: string, replace = false) {\n const { key: primaryLabelRaw, search, location } = getSelectedTabFromUrl();\n if (primaryLabelRaw) {\n const primaryLabelSplit = primaryLabelRaw?.split('|');\n const keyInUrl = primaryLabelSplit?.[0];\n\n if (keyInUrl !== newKey) {\n primaryLabelSplit[0] = newKey;\n search.set(primaryLabelUrlKey, primaryLabelSplit.join('|'));\n const currentUrl = location.pathname + location.search;\n const newUrl = location.pathname + '?' + search.toString();\n if (currentUrl !== newUrl) {\n if (replace) {\n locationService.replace(newUrl);\n } else {\n pushUrlHandler(newUrl);\n }\n }\n }\n }\n }\n\n getSelectedTab() {\n return getServiceSelectionPrimaryLabel(this).state.filters[0]?.key;\n }\n\n selectDefaultLabelTab() {\n // Need to update the history before the state with replace instead of push, or we'll get invalid services saved to url state after changing datasource\n this.addLabelChangeToBrowserHistory(SERVICE_NAME, true);\n this.setSelectedTab(SERVICE_NAME);\n }\n\n setSelectedTab(labelName: string) {\n addTabToLocalStorage(getDataSourceVariable(this).getValue().toString(), labelName);\n\n // clear active search\n clearServiceSelectionSearchVariable(this);\n\n // Update the primary label variable\n setServiceSelectionPrimaryLabelKey(labelName, this);\n }\n\n // Creates a layout with timeseries panel\n buildServiceLayout(\n primaryLabelName: string,\n primaryLabelValue: string,\n timeRange: TimeRange,\n serviceLabelVar: CustomConstantVariable,\n primaryLabelVar: AdHocFiltersVariable,\n datasourceVar: DataSourceVariable\n ) {\n let splitDuration;\n if (timeRange.to.diff(timeRange.from, 'hours') >= 4 && timeRange.to.diff(timeRange.from, 'hours') <= 26) {\n splitDuration = '2h';\n }\n const panel = PanelBuilders.timeseries()\n // If service was previously selected, we show it in the title\n .setTitle(primaryLabelValue)\n .setData(\n getQueryRunner(\n [\n buildDataQuery(this.getMetricExpression(primaryLabelValue, serviceLabelVar, primaryLabelVar), {\n legendFormat: `{{${LEVEL_VARIABLE_VALUE}}}`,\n splitDuration,\n refId: `ts-${primaryLabelValue}`,\n }),\n ],\n { runQueriesMode: 'manual' }\n )\n )\n .setCustomFieldConfig('stacking', { mode: StackingMode.Normal })\n .setCustomFieldConfig('fillOpacity', 100)\n .setCustomFieldConfig('lineWidth', 0)\n .setCustomFieldConfig('pointSize', 0)\n .setCustomFieldConfig('drawStyle', DrawStyle.Bars)\n .setUnit('short')\n .setOverrides(setLevelColorOverrides)\n .setOption('legend', {\n showLegend: true,\n calcs: ['sum'],\n placement: 'right',\n displayMode: LegendDisplayMode.Table,\n })\n .setHeaderActions([\n new FavoriteServiceHeaderActionScene({\n ds: datasourceVar.getValue()?.toString(),\n labelName: primaryLabelName,\n labelValue: primaryLabelValue,\n }),\n new AddLabelToFiltersHeaderActionScene({\n name: primaryLabelName,\n value: primaryLabelValue,\n hidden: this.isAggregatedMetricsActive(),\n }),\n new SelectServiceButton({ labelValue: primaryLabelValue, labelName: primaryLabelName }),\n ])\n .build();\n\n panel.setState({\n extendPanelContext: (_, context) =>\n this.extendTimeSeriesLegendBus(primaryLabelName, primaryLabelValue, context, panel),\n });\n\n const cssGridItem = new SceneCSSGridItem({\n $behaviors: [new behaviors.CursorSync({ key: 'serviceCrosshairSync', sync: DashboardCursorSync.Crosshair })],\n body: panel,\n });\n\n cssGridItem.addActivationHandler(() => {\n const runner = getQueryRunnerFromChildren(cssGridItem)[0];\n // If the query runner has already ran, the scene must be cached, don't re-run as the volume query will be triggered which will execute another panel query\n if (runner.state.data?.state !== LoadingState.Done) {\n this.runPanelQuery(cssGridItem);\n }\n });\n\n return cssGridItem;\n }\n\n isAggregatedMetricsActive() {\n const toolbar = this.getQueryOptionsToolbar();\n return !toolbar?.state.options.aggregatedMetrics.disabled && toolbar?.state.options.aggregatedMetrics.active;\n }\n\n getLevelFilterForService = (service: string) => {\n let serviceLevels = this.state.serviceLevel.get(service) || [];\n if (serviceLevels.length === 0) {\n return '';\n }\n const filters = serviceLevels.map((level) => {\n if (level === 'logs') {\n level = '';\n }\n return `${LEVEL_VARIABLE_VALUE}=\\`${level}\\``;\n });\n return ` | ${filters.join(' or ')} `;\n };\n\n // Creates a layout with logs panel\n buildServiceLogsLayout = (labelName: string, labelValue: string) => {\n const levelFilter = this.getLevelFilterForService(labelValue);\n const cssGridItem = new SceneCSSGridItem({\n $behaviors: [new behaviors.CursorSync({ sync: DashboardCursorSync.Off })],\n body: PanelBuilders.logs()\n // Hover header set to true removes unused header padding, displaying more logs\n .setHoverHeader(true)\n .setData(\n getQueryRunner(\n [\n buildDataQuery(this.getLogExpression(labelName, labelValue, levelFilter), {\n maxLines: 100,\n refId: `logs-${labelValue}`,\n }),\n ],\n {\n runQueriesMode: 'manual',\n }\n )\n )\n .setTitle(labelValue)\n .setOption('showTime', true)\n .setOption('enableLogDetails', false)\n .build(),\n });\n\n cssGridItem.addActivationHandler(() => {\n const runner = getQueryRunnerFromChildren(cssGridItem)[0];\n // If the query runner has already ran, the scene must be cached, don't re-run as the volume query will be triggered which will execute another panel query\n if (runner.state.data?.state !== LoadingState.Done) {\n this.runPanelQuery(cssGridItem);\n }\n });\n\n return cssGridItem;\n };\n\n formatPrimaryLabelForUI() {\n const selectedTab = this.getSelectedTab();\n return selectedTab === SERVICE_NAME ? SERVICE_UI_LABEL : selectedTab;\n }\n\n private setVolumeQueryRunner() {\n this.setState({\n $data: getSceneQueryRunner({\n queries: [\n buildVolumeQuery(`{${VAR_PRIMARY_LABEL_EXPR}, ${VAR_LABELS_REPLICA_EXPR}}`, 'volume', this.getSelectedTab()),\n ],\n runQueriesMode: 'manual',\n }),\n });\n\n // Need to re-init any subscriptions since we changed the query runner\n this.subscribeToVolume();\n }\n\n private doVariablesNeedSync() {\n const labelsVarPrimary = getLabelsVariable(this);\n const labelsVarReplica = getLabelsVariableReplica(this);\n\n const activeTab = this.getSelectedTab();\n const filteredFilters = labelsVarPrimary.state.filters.filter((f) => f.key !== activeTab);\n\n return { filters: filteredFilters, needsSync: !areArraysEqual(filteredFilters, labelsVarReplica.state.filters) };\n }\n\n private syncVariables() {\n const labelsVarReplica = getLabelsVariableReplica(this);\n\n const { filters, needsSync } = this.doVariablesNeedSync();\n if (needsSync) {\n labelsVarReplica.setState({ filters });\n }\n }\n\n private onActivate() {\n this.fixRequiredUrlParams();\n\n // Sync initial state from primary labels to local replica\n this.syncVariables();\n\n // Clear existing volume data on activate or we'll show stale cached data, potentially from a different datasource\n this.setVolumeQueryRunner();\n\n // Subscribe to primary labels for further updates\n this.subscribeToPrimaryLabelsVariable();\n\n // Subscribe to variables replica\n this.subscribeToLabelFilterChanges();\n\n // Subscribe to tab changes (primary label)\n this.subscribeToActiveTabVariable(getServiceSelectionPrimaryLabel(this));\n\n if (this.state.$data.state.data?.state !== LoadingState.Done) {\n this.runVolumeOnActivate();\n }\n\n // Update labels on time range change\n this.subscribeToTimeRange();\n\n // Update labels on datasource change\n this.subscribeToDatasource();\n\n this.subscribeToAggregatedMetricToggle();\n\n this.subscribeToAggregatedMetricVariable();\n }\n\n private runVolumeOnActivate() {\n if (this.isTimeRangeTooEarlyForAggMetrics()) {\n this.onUnsupportedAggregatedMetricTimeRange();\n if (this.state.$data.state.data?.state !== LoadingState.Done) {\n this.runVolumeQuery();\n }\n } else {\n this.onSupportedAggregatedMetricTimeRange();\n if (this.state.$data.state.data?.state !== LoadingState.Done) {\n this.runVolumeQuery();\n }\n }\n }\n\n private subscribeToAggregatedMetricToggle() {\n this._subs.add(\n this.getQueryOptionsToolbar()?.subscribeToState((newState, prevState) => {\n if (newState.options.aggregatedMetrics.userOverride !== prevState.options.aggregatedMetrics.userOverride) {\n this.runVolumeQuery(true);\n }\n })\n );\n }\n\n private subscribeToDatasource() {\n this._subs.add(\n getDataSourceVariable(this).subscribeToState((newState) => {\n this.addDatasourceChangeToBrowserHistory(newState.value.toString());\n this.runVolumeQuery();\n })\n );\n }\n\n private subscribeToActiveTabVariable(primaryLabelVar: AdHocFiltersVariable) {\n this._subs.add(\n primaryLabelVar.subscribeToState((newState, prevState) => {\n if (newState.filterExpression !== prevState.filterExpression) {\n const newKey = newState.filters[0].key;\n this.addLabelChangeToBrowserHistory(newKey);\n // Need to tear down volume query runner to select other labels, as we need the selected tab to parse the volume response\n const { needsSync } = this.doVariablesNeedSync();\n\n if (needsSync) {\n this.syncVariables();\n } else {\n this.runVolumeQuery(true);\n }\n }\n })\n );\n }\n\n /**\n * agg metrics need parser and unwrap, have to tear down and rebuild panels when the variable changes\n * @private\n */\n private subscribeToAggregatedMetricVariable() {\n this._subs.add(\n getAggregatedMetricsVariable(this).subscribeToState((newState, prevState) => {\n if (newState.value !== prevState.value) {\n // Clear the body panels\n this.setState({\n body: new SceneCSSGridLayout({ children: [] }),\n });\n // And re-init with the new query\n this.updateBody(true);\n }\n })\n );\n }\n\n private subscribeToPrimaryLabelsVariable() {\n const labelsVarPrimary = getLabelsVariable(this);\n this._subs.add(\n labelsVarPrimary.subscribeToState((newState, prevState) => {\n if (!areArraysEqual(newState.filters, prevState.filters)) {\n this.syncVariables();\n }\n })\n );\n }\n\n private subscribeToLabelFilterChanges() {\n const labelsVar = getLabelsVariableReplica(this);\n this._subs.add(\n labelsVar.subscribeToState((newState, prevState) => {\n if (!areArraysEqual(newState.filters, prevState.filters)) {\n this.runVolumeQuery(true);\n }\n })\n );\n }\n\n private subscribeToVolume() {\n this._subs.add(\n this.state.$data.subscribeToState((newState, prevState) => {\n // update body if the data is done loading, and the dataframes have changed\n if (\n newState.data?.state === LoadingState.Done &&\n !areArraysEqual(prevState?.data?.series, newState?.data?.series)\n ) {\n this.updateBody(true);\n }\n })\n );\n }\n\n private subscribeToTimeRange() {\n this._subs.add(\n sceneGraph.getTimeRange(this).subscribeToState(() => {\n if (this.isTimeRangeTooEarlyForAggMetrics()) {\n this.onUnsupportedAggregatedMetricTimeRange();\n } else {\n this.onSupportedAggregatedMetricTimeRange();\n }\n this.runVolumeQuery();\n })\n );\n }\n\n /**\n * If the user copies a partial URL we want to prevent throwing runtime errors or running invalid queries, so we set the default tab which will trigger updates to the primary_label\n * @private\n */\n private fixRequiredUrlParams() {\n // If the selected tab is not in the URL, set the default\n const { key } = getSelectedTabFromUrl();\n if (!key) {\n this.selectDefaultLabelTab();\n }\n }\n\n private isTimeRangeTooEarlyForAggMetrics(): boolean {\n const timeRange = sceneGraph.getTimeRange(this);\n return timeRange.state.value.from.isBefore(dateTime(AGGREGATED_METRIC_START_DATE));\n }\n\n private onUnsupportedAggregatedMetricTimeRange() {\n const toolbar = this.getQueryOptionsToolbar();\n toolbar?.setState({\n options: {\n aggregatedMetrics: {\n ...toolbar?.state.options.aggregatedMetrics,\n disabled: true,\n },\n },\n });\n }\n\n private getQueryOptionsToolbar() {\n const indexScene = sceneGraph.getAncestor(this, IndexScene);\n return indexScene.state.controls.find((control) => control instanceof ToolbarScene) as ToolbarScene | undefined;\n }\n\n private onSupportedAggregatedMetricTimeRange() {\n const toolbar = this.getQueryOptionsToolbar();\n toolbar?.setState({\n options: {\n aggregatedMetrics: {\n ...toolbar?.state.options.aggregatedMetrics,\n disabled: false,\n },\n },\n });\n }\n\n /**\n * Executes the Volume API call\n * @param resetQueryRunner - optional param which will replace the query runner state with a new instantiation\n * @private\n */\n private runVolumeQuery(resetQueryRunner = false) {\n if (resetQueryRunner) {\n this.setVolumeQueryRunner();\n }\n\n this.updateAggregatedMetricVariable();\n this.state.$data.runQueries();\n }\n\n private updateAggregatedMetricVariable() {\n const serviceLabelVar = getAggregatedMetricsVariable(this);\n const labelsVar = getLabelsVariable(this);\n if ((!this.isTimeRangeTooEarlyForAggMetrics() || !aggregatedMetricsEnabled) && this.isAggregatedMetricsActive()) {\n serviceLabelVar.changeValueTo(AGGREGATED_SERVICE_NAME);\n\n // Hide combobox and reset filters if aggregated metrics is enabled\n labelsVar.setState({\n hide: VariableHide.hideVariable,\n filters: [],\n });\n\n // Hide the show logs button\n const showLogsButton = sceneGraph.findByKeyAndType(this, showLogsButtonSceneKey, ShowLogsButtonScene);\n showLogsButton.setState({ hidden: true });\n } else {\n serviceLabelVar.changeValueTo(SERVICE_NAME);\n // Show combobox if not aggregated metrics\n labelsVar.setState({\n hide: VariableHide.dontHide,\n });\n serviceLabelVar.changeValueTo(SERVICE_NAME);\n\n // Show the show logs button\n const showLogsButton = sceneGraph.findByKeyAndType(this, showLogsButtonSceneKey, ShowLogsButtonScene);\n showLogsButton.setState({ hidden: false });\n }\n }\n\n private updateTabs() {\n if (!this.state.tabs) {\n const tabs = new ServiceSelectionTabsScene({});\n this.setState({\n tabs,\n });\n }\n }\n\n private getGridItems(): SceneCSSGridItem[] {\n return this.state.body.state.children as SceneCSSGridItem[];\n }\n\n private getVizPanel(child: SceneCSSGridItem) {\n return child.state.body instanceof VizPanel ? child.state.body : undefined;\n }\n\n /**\n * Runs logs/volume panel queries if lazy loaded grid item is active\n * @param child\n * @private\n */\n private runPanelQuery(child: SceneCSSGridItem) {\n if (child.isActive) {\n const queryRunners = getQueryRunnerFromChildren(child);\n if (queryRunners.length === 1) {\n const queryRunner = queryRunners[0];\n const query = queryRunner.state.queries[0];\n\n // If the scene was cached, the time range will still be the same as what was executed in the query\n const requestTimeRange = queryRunner.state.data?.timeRange;\n const sceneTimeRange = sceneGraph.getTimeRange(this);\n const fromDiff = requestTimeRange\n ? Math.abs(sceneTimeRange.state.value.from.diff(requestTimeRange?.from, 's'))\n : Infinity;\n const toDiff = requestTimeRange\n ? Math.abs(sceneTimeRange.state.value.to.diff(requestTimeRange?.to, 's'))\n : Infinity;\n\n const interpolated = sceneGraph.interpolate(this, query.expr);\n // If we haven't already run this exact same query, run it\n if (queryRunner.state.key !== interpolated || fromDiff > 0 || toDiff > 0) {\n queryRunner.setState({\n key: interpolated,\n });\n queryRunner.runQueries();\n }\n }\n }\n }\n\n public updateBody(runQueries = false) {\n const { labelsToQuery } = this.getLabels(this.state.$data.state.data?.series);\n const selectedTab = this.getSelectedTab();\n this.updateTabs();\n\n if (!this.state.paginationScene) {\n this.setState({\n paginationScene: new ServiceSelectionPaginationScene({}),\n });\n }\n\n // If no services are to be queried, clear the body\n if (!labelsToQuery || labelsToQuery.length === 0) {\n this.state.body.setState({ children: [] });\n } else {\n // If we have services to query, build the layout with the services. Children is an array of layouts for each service (1 row with 2 columns - timeseries and logs panel)\n const newChildren: SceneCSSGridItem[] = [];\n const existingChildren = this.getGridItems();\n const timeRange = sceneGraph.getTimeRange(this).state.value;\n const aggregatedMetricsVariable = getAggregatedMetricsVariable(this);\n const primaryLabelVar = getServiceSelectionPrimaryLabel(this);\n const datasourceVariable = getDataSourceVariable(this);\n\n const start = (this.state.currentPage - 1) * this.state.countPerPage;\n const end = start + this.state.countPerPage;\n\n for (const primaryLabelValue of labelsToQuery.slice(start, end)) {\n const existing = existingChildren.filter((child) => {\n const vizPanel = this.getVizPanel(child);\n return vizPanel?.state.title === primaryLabelValue;\n });\n\n if (existing.length === 2) {\n // If we already have grid items for this service, move them over to the new array of children, this will preserve their queryRunners, preventing duplicate queries from getting run\n newChildren.push(existing[0], existing[1]);\n\n if (existing[0].isActive && runQueries) {\n this.runPanelQuery(existing[0]);\n }\n\n if (existing[1].isActive && runQueries) {\n this.runPanelQuery(existing[1]);\n }\n } else {\n const newChildTs = this.buildServiceLayout(\n selectedTab,\n primaryLabelValue,\n timeRange,\n aggregatedMetricsVariable,\n primaryLabelVar,\n datasourceVariable\n );\n const newChildLogs = this.buildServiceLogsLayout(selectedTab, primaryLabelValue);\n // for each service, we create a layout with timeseries and logs panel\n newChildren.push(newChildTs, newChildLogs);\n }\n }\n\n this.state.body.setState({\n children: newChildren,\n isLazy: true,\n templateColumns: 'repeat(auto-fit, minmax(500px, 1fr) minmax(300px, 70vw))',\n autoRows: '200px',\n md: {\n templateColumns: '1fr',\n rowGap: 1,\n columnGap: 1,\n },\n });\n }\n }\n\n /**\n * Redraws service logs after toggling level visibility.\n */\n private updateServiceLogs(labelName: string, labelValue: string) {\n if (!this.state.body) {\n this.updateBody();\n return;\n }\n const { labelsToQuery } = this.getLabels(this.state.$data.state.data?.series);\n const serviceIndex = labelsToQuery?.indexOf(labelValue);\n if (serviceIndex === undefined || serviceIndex < 0) {\n return;\n }\n let newChildren = [...this.getGridItems()];\n newChildren.splice(serviceIndex * 2 + 1, 1, this.buildServiceLogsLayout(labelName, labelValue));\n this.state.body.setState({ children: newChildren });\n }\n\n private getLogExpression(labelName: string, labelValue: string, levelFilter: string) {\n return `{${labelName}=\\`${labelValue}\\` , ${VAR_LABELS_REPLICA_EXPR} }${levelFilter}`;\n }\n\n private getMetricExpression(\n labelValue: string,\n serviceLabelVar: CustomConstantVariable,\n primaryLabelVar: AdHocFiltersVariable\n ) {\n const filter = primaryLabelVar.state.filters[0];\n if (serviceLabelVar.state.value === AGGREGATED_SERVICE_NAME) {\n if (filter.key === SERVICE_NAME) {\n return `sum by (${LEVEL_VARIABLE_VALUE}) (sum_over_time({${AGGREGATED_SERVICE_NAME}=\\`${labelValue}\\` } | logfmt | unwrap count [$__auto]))`;\n } else {\n return `sum by (${LEVEL_VARIABLE_VALUE}) (sum_over_time({${AGGREGATED_SERVICE_NAME}=~\\`.+\\` } | logfmt | ${filter.key}=\\`${labelValue}\\` | unwrap count [$__auto]))`;\n }\n }\n return `sum by (${LEVEL_VARIABLE_VALUE}) (count_over_time({ ${filter.key}=\\`${labelValue}\\`, ${VAR_LABELS_REPLICA_EXPR} } [$__auto]))`;\n }\n\n private extendTimeSeriesLegendBus = (\n labelName: string,\n labelValue: string,\n context: PanelContext,\n panel: VizPanel\n ) => {\n const originalOnToggleSeriesVisibility = context.onToggleSeriesVisibility;\n\n context.onToggleSeriesVisibility = (level: string, mode: SeriesVisibilityChangeMode) => {\n originalOnToggleSeriesVisibility?.(level, mode);\n\n const allLevels = getLevelLabelsFromSeries(panel.state.$data?.state.data?.series ?? []);\n const levels = toggleLevelVisibility(level, this.state.serviceLevel.get(labelValue), mode, allLevels);\n this.state.serviceLevel.set(labelValue, levels);\n\n this.updateServiceLogs(labelName, labelValue);\n };\n };\n\n private getLabels(series?: DataFrame[]) {\n const labelsByVolume: string[] = series?.[0]?.fields[0].values ?? [];\n const dsString = getDataSourceVariable(this).getValue()?.toString();\n const searchString = getServiceSelectionSearchVariable(this).getValue();\n const selectedTab = this.getSelectedTab();\n const labelsToQuery = createListOfLabelsToQuery(labelsByVolume, dsString, String(searchString), selectedTab);\n return { labelsByVolume, labelsToQuery: labelsToQuery };\n }\n}\n\n// Create a list of services to query:\n// 1. Filters provided services by searchString\n// 2. Gets favoriteServicesToQuery from localStorage and filters them by searchString\n// 3. Orders them correctly\nfunction createListOfLabelsToQuery(services: string[], ds: string, searchString: string, labelName: string) {\n if (!services?.length) {\n return [];\n }\n\n if (searchString === '.+') {\n searchString = '';\n }\n\n const favoriteServicesToQuery = getFavoriteLabelValuesFromStorage(ds, labelName).filter(\n (service) => service.toLowerCase().includes(searchString.toLowerCase()) && services.includes(service)\n );\n\n // Deduplicate\n return Array.from(new Set([...favoriteServicesToQuery, ...services]));\n}\n\nfunction getSelectedTabFromUrl() {\n const location = locationService.getLocation();\n const search = new URLSearchParams(location.search);\n const primaryLabelRaw = search.get(primaryLabelUrlKey);\n const primaryLabelSplit = primaryLabelRaw?.split('|');\n const key = primaryLabelSplit?.[0];\n return { key, search, location };\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n container: css({\n display: 'flex',\n flexDirection: 'column',\n flexGrow: 1,\n position: 'relative',\n }),\n headingWrapper: css({\n marginTop: theme.spacing(1),\n }),\n loadingText: css({\n margin: 0,\n }),\n header: css({\n position: 'absolute',\n right: 0,\n top: '4px',\n zIndex: 2,\n }),\n bodyWrapper: css({\n flexGrow: 1,\n display: 'flex',\n flexDirection: 'column',\n }),\n body: css({\n flexGrow: 1,\n display: 'flex',\n flexDirection: 'column',\n }),\n searchPaginationWrap: css({\n label: 'search-pagination-wrap',\n display: 'flex',\n alignItems: 'center',\n flexWrap: 'wrap',\n flex: '1 0 auto',\n [theme.breakpoints.down('md')]: {\n marginTop: theme.spacing(1),\n width: '100%',\n },\n }),\n searchWrapper: css({\n label: 'search-wrapper',\n display: 'flex',\n alignItems: 'center',\n flexWrap: 'wrap',\n [theme.breakpoints.down('md')]: {\n flexDirection: 'column',\n alignItems: 'flex-start',\n },\n }),\n searchField: css({\n marginTop: theme.spacing(1),\n position: 'relative',\n }),\n };\n}\n","import React from 'react';\nimport { RadioButtonGroup } from '@grafana/ui';\nimport { LogsVisualizationType } from 'services/store';\n\n/**\n * The options shared between logs and table panels\n * @param props\n * @constructor\n */\nexport function LogsPanelHeaderActions(props: {\n vizType: LogsVisualizationType;\n onChange: (type: LogsVisualizationType) => void;\n}) {\n return (\n \n );\n}\n","import { Observable, of } from 'rxjs';\nimport {\n MultiValueVariable,\n MultiValueVariableState,\n renderSelectForVariable,\n SceneComponentProps,\n VariableGetOptionsArgs,\n VariableValueOption,\n VariableValueSingle,\n} from '@grafana/scenes';\n\nexport interface CustomConstantVariableState extends MultiValueVariableState {\n value: VariableValueSingle;\n isMulti?: false;\n}\n\nexport class CustomConstantVariable extends MultiValueVariable {\n public constructor(initialState: Partial) {\n super({\n type: 'custom',\n value: '',\n text: '',\n options: [],\n name: '',\n ...initialState,\n });\n }\n\n public getValueOptions(args: VariableGetOptionsArgs): Observable {\n return of(this.state.options);\n }\n\n public static Component = ({ model }: SceneComponentProps) => {\n return renderSelectForVariable(model);\n };\n}\n","import { AdHocFilterWithLabels, sceneUtils } from '@grafana/scenes';\nimport { AdHocVariableFilter } from '@grafana/data';\nimport { FilterOp, FilterOpType, LabelFilterOp, NumericFilterOp } from './filterTypes';\nimport { Dictionary, groupBy, trim } from 'lodash';\nimport { EMPTY_VARIABLE_VALUE, isAdHocFilterValueUserInput, stripAdHocFilterUserInputPrefix } from './variables';\nimport { getValueFromFieldsFilter } from './variableGetters';\nimport { isOperatorExclusive, isOperatorInclusive, isOperatorNumeric, isOperatorRegex } from './operatorHelpers';\nimport { narrowFilterOperator } from './narrowing';\nimport { getExpressionBuilderDebug } from './store';\n\ntype Key = string;\ntype Value = string;\ntype CombinedFiltersValues = { operator: LabelFilterOp | NumericFilterOp; values: Value[] };\ntype CombinedFiltersValuesByKey = Record;\ntype CombinedOperatorFilters = Record;\ntype OperatorFilters = Record;\n\ninterface Options {\n /**\n * Sets debug output\n */\n debug?: boolean;\n\n /**\n * Separator between filters with different keys or operators\n */\n filterSeparator?: string;\n\n /**\n * Prefix of the logQL expression\n */\n prefix?: string;\n\n /**\n * Sets if match filters join values together in a regex filter\n * i.e. multiple filters with operators: '=' | '!=' => '=~' | '!~'\n */\n joinMatchFilters: boolean;\n\n /**\n * Sets if the values are JSON encoded\n */\n decodeFilters: boolean;\n\n /**\n * Keys to ignore\n */\n ignoreKeys?: string[];\n\n filterType: 'indexed' | 'field';\n}\n\nexport class ExpressionBuilder {\n private filters: AdHocFilterWithLabels[];\n private options: Options;\n private positiveFilterValueSeparator = 'or';\n private negativeFilterValueSeparator = '|';\n\n constructor(\n filters: AdHocFilterWithLabels[],\n options: Options = { joinMatchFilters: true, decodeFilters: false, filterType: 'field' }\n ) {\n this.filters = filters;\n this.options = options;\n if (!this.options.debug) {\n this.options.debug = getExpressionBuilderDebug();\n }\n }\n\n /**\n * Joins filters with same keys similar operators\n * e.g. {level=\"info\"}, {level=\"warn\"} => {level=~\"warn|info\"}\n */\n public getJoinedLabelsFilters(): AdHocFilterWithLabels[] {\n let { equalsFilters, notEqualsFilters, regexEqualFilters, regexNotEqualFilters } = this.getCombinedLabelFilters();\n const adHocFilters: AdHocFilterWithLabels[] = [];\n const filters = [equalsFilters, notEqualsFilters, regexEqualFilters, regexNotEqualFilters].filter(\n (filter) => filter\n );\n filters.forEach((operatorFilters) => {\n const joinedValues = this.joinCombinedFiltersValues(operatorFilters, '|');\n\n for (const key in operatorFilters) {\n const filter = operatorFilters[key];\n const operator = filter.operator;\n adHocFilters.push({ key, operator, value: joinedValues[key] });\n }\n });\n\n return adHocFilters;\n }\n\n /**\n * Returns logQL expression for AdHocFilterWithLabels[]\n * Merges multiple include matches into regex\n */\n protected getExpr(): string {\n let {\n equalsFilters,\n notEqualsFilters,\n regexEqualFilters,\n regexNotEqualFilters,\n ltFilters,\n lteFilters,\n gtFilters,\n gteFilters,\n } = this.getCombinedLabelFilters();\n\n if (this.options.debug) {\n console.info('combined filters after merge', {\n equalsFilters,\n notEqualsFilters,\n regexEqualFilters,\n regexNotEqualFilters,\n ltFilters,\n lteFilters,\n gtFilters,\n gteFilters,\n });\n }\n\n const filtersString = this.buildLabelsLogQLFromFilters({\n equalsFilters,\n notEqualsFilters,\n regexEqualFilters,\n regexNotEqualFilters,\n ltFilters,\n lteFilters,\n gtFilters,\n gteFilters,\n });\n\n if (filtersString) {\n // Append prefix if defined\n return (this.options.prefix ?? '') + filtersString;\n }\n\n return '';\n }\n\n public getLabelsExpr(options?: Partial): string {\n const defaultOptions: Options = { joinMatchFilters: true, decodeFilters: false, filterType: 'indexed' };\n this.options = { ...defaultOptions, ...options };\n return this.getExpr();\n }\n\n /**\n * Returns merged filters separated by pipe\n */\n public getMetadataExpr(options?: Partial): string {\n const defaultOptions: Options = {\n filterSeparator: ' |',\n prefix: '| ',\n joinMatchFilters: false,\n decodeFilters: false,\n filterType: 'field',\n };\n this.options = { ...defaultOptions, ...options };\n return this.getExpr();\n }\n\n /**\n * Same as metadata, but only include operators supported\n */\n public getLevelsExpr(options?: Partial): string {\n const defaultOptions: Options = {\n filterSeparator: ' |',\n prefix: '| ',\n joinMatchFilters: false,\n decodeFilters: false,\n filterType: 'field',\n };\n\n this.options = { ...defaultOptions, ...options };\n return this.getExpr();\n }\n\n /**\n * Returns merged filters separated by pipe\n * JSON encodes value\n */\n public getFieldsExpr(options?: Partial): string {\n const defaultOptions: Options = {\n filterSeparator: ' |',\n prefix: '| ',\n joinMatchFilters: false,\n decodeFilters: true,\n filterType: 'field',\n };\n this.options = { ...defaultOptions, ...options };\n return this.getExpr();\n }\n\n /**\n * Transforms joined field value objects into logQL strings\n */\n private buildLabelsLogQLFromFilters({\n equalsFilters,\n notEqualsFilters,\n regexEqualFilters,\n regexNotEqualFilters,\n ltFilters,\n lteFilters,\n gtFilters,\n gteFilters,\n }: {\n equalsFilters: CombinedFiltersValuesByKey | undefined;\n notEqualsFilters: CombinedFiltersValuesByKey | undefined;\n regexEqualFilters: CombinedFiltersValuesByKey | undefined;\n regexNotEqualFilters: CombinedFiltersValuesByKey | undefined;\n ltFilters: CombinedFiltersValuesByKey | undefined;\n lteFilters: CombinedFiltersValuesByKey | undefined;\n gtFilters: CombinedFiltersValuesByKey | undefined;\n gteFilters: CombinedFiltersValuesByKey | undefined;\n }) {\n let equalFiltersStrings: CombinedOperatorFilters | OperatorFilters;\n let notEqualsFiltersStrings: CombinedOperatorFilters | OperatorFilters;\n let regexEqualFiltersStrings: CombinedOperatorFilters | OperatorFilters;\n let regexNotEqualFiltersStrings: CombinedOperatorFilters | OperatorFilters;\n let ltFiltersStrings: OperatorFilters;\n let lteFiltersStrings: OperatorFilters;\n let gtFiltersStrings: OperatorFilters;\n let gteFiltersStrings: OperatorFilters;\n\n // Build the LogQL filters\n const allFilters: string[] = [];\n\n if (this.options.joinMatchFilters) {\n // Join values arrays for all keys with \"|\" char\n equalFiltersStrings = this.joinCombinedFiltersValues(equalsFilters, '|');\n notEqualsFiltersStrings = this.joinCombinedFiltersValues(notEqualsFilters, '|');\n regexEqualFiltersStrings = this.joinCombinedFiltersValues(regexEqualFilters, '|');\n regexNotEqualFiltersStrings = this.joinCombinedFiltersValues(regexNotEqualFilters, '|');\n\n allFilters.push(...this.buildJoinedFilters(equalFiltersStrings, LabelFilterOp.Equal));\n allFilters.push(...this.buildJoinedFilters(notEqualsFiltersStrings, LabelFilterOp.NotEqual));\n allFilters.push(...this.buildJoinedFilters(regexEqualFiltersStrings, LabelFilterOp.RegexEqual));\n allFilters.push(...this.buildJoinedFilters(regexNotEqualFiltersStrings, LabelFilterOp.RegexNotEqual));\n } else {\n // Do not join filters\n equalFiltersStrings = this.getFilterValues(equalsFilters);\n notEqualsFiltersStrings = this.getFilterValues(notEqualsFilters);\n regexEqualFiltersStrings = this.getFilterValues(regexEqualFilters);\n regexNotEqualFiltersStrings = this.getFilterValues(regexNotEqualFilters);\n\n allFilters.push(...this.buildFilter(equalFiltersStrings, LabelFilterOp.Equal));\n allFilters.push(...this.buildFilter(notEqualsFiltersStrings, LabelFilterOp.NotEqual));\n allFilters.push(...this.buildFilter(regexEqualFiltersStrings, LabelFilterOp.RegexEqual));\n allFilters.push(...this.buildFilter(regexNotEqualFiltersStrings, LabelFilterOp.RegexNotEqual));\n }\n\n // //Numeric fields are never joined\n ltFiltersStrings = this.getFilterValues(ltFilters);\n lteFiltersStrings = this.getFilterValues(lteFilters);\n gtFiltersStrings = this.getFilterValues(gtFilters);\n gteFiltersStrings = this.getFilterValues(gteFilters);\n\n allFilters.push(...this.buildFilter(ltFiltersStrings, NumericFilterOp.lt));\n allFilters.push(...this.buildFilter(lteFiltersStrings, NumericFilterOp.lte));\n allFilters.push(...this.buildFilter(gtFiltersStrings, NumericFilterOp.gt));\n allFilters.push(...this.buildFilter(gteFiltersStrings, NumericFilterOp.gte));\n\n if (this.options.debug) {\n console.info('combined filters after stringify', {\n equalFiltersStrings,\n notEqualsFiltersStrings,\n regexEqualFiltersStrings,\n regexNotEqualFiltersStrings,\n ltFiltersStrings,\n lteFiltersStrings,\n gtFiltersStrings,\n gteFiltersStrings,\n allFilters,\n });\n }\n\n // Create the final output string by joining filters with filterSeparator char\n const allFiltersString = trim(this.combineValues(allFilters, `${this.options.filterSeparator ?? ','} `));\n\n if (this.options.debug) {\n console.info('DEBUG labels expr', { allFiltersString });\n }\n\n return allFiltersString;\n }\n\n /**\n * Group filter values by key\n */\n private getCombinedLabelFilters() {\n // Group filters by operator and key\n const {\n [LabelFilterOp.Equal]: equal,\n [LabelFilterOp.NotEqual]: notEqual,\n [LabelFilterOp.RegexEqual]: regexEqual,\n [LabelFilterOp.RegexNotEqual]: regexNotEqual,\n [NumericFilterOp.lt]: lt,\n [NumericFilterOp.lte]: lte,\n [NumericFilterOp.gt]: gt,\n [NumericFilterOp.gte]: gte,\n } = this.groupFiltersByKey(this.filters);\n\n let equalsFilters: CombinedFiltersValuesByKey | undefined;\n let notEqualsFilters: CombinedFiltersValuesByKey | undefined;\n let regexEqualFilters: CombinedFiltersValuesByKey | undefined;\n let regexNotEqualFilters: CombinedFiltersValuesByKey | undefined;\n\n let ltFilters: CombinedFiltersValuesByKey | undefined;\n let lteFilters: CombinedFiltersValuesByKey | undefined;\n let gtFilters: CombinedFiltersValuesByKey | undefined;\n let gteFilters: CombinedFiltersValuesByKey | undefined;\n\n // Escape values and combine filters by key and operator, multiple non-regex operations are returned under a different operator\n if (this.options.joinMatchFilters) {\n equalsFilters = this.combineFiltersValues(equal, LabelFilterOp.RegexEqual);\n notEqualsFilters = this.combineFiltersValues(notEqual, LabelFilterOp.RegexNotEqual);\n regexEqualFilters = this.combineFiltersValues(regexEqual);\n regexNotEqualFilters = this.combineFiltersValues(regexNotEqual);\n } else {\n equalsFilters = this.combineFiltersValues(equal);\n notEqualsFilters = this.combineFiltersValues(notEqual);\n regexEqualFilters = this.combineFiltersValues(regexEqual);\n regexNotEqualFilters = this.combineFiltersValues(regexNotEqual);\n }\n\n // Numeric filters are never combined\n ltFilters = this.combineFiltersValues(lt);\n lteFilters = this.combineFiltersValues(lte);\n gtFilters = this.combineFiltersValues(gt);\n gteFilters = this.combineFiltersValues(gte);\n\n if (this.options.debug) {\n console.info('combined filters', {\n equalsFilters,\n notEqualsFilters,\n regexEqualFilters,\n regexNotEqualFilters,\n });\n }\n\n if (this.options.joinMatchFilters) {\n // If we changed the operation, merge the values and remove the stale operator from the object\n if (equalsFilters) {\n regexEqualFilters = this.mergeFilters(LabelFilterOp.RegexEqual, equalsFilters, regexEqualFilters);\n equalsFilters = this.removeStaleOperators(equalsFilters, LabelFilterOp.Equal);\n }\n if (notEqualsFilters) {\n regexNotEqualFilters = this.mergeFilters(LabelFilterOp.RegexNotEqual, notEqualsFilters, regexNotEqualFilters);\n notEqualsFilters = this.removeStaleOperators(notEqualsFilters, LabelFilterOp.NotEqual);\n }\n }\n\n return {\n equalsFilters,\n notEqualsFilters,\n regexEqualFilters,\n regexNotEqualFilters,\n ltFilters,\n lteFilters,\n gtFilters,\n gteFilters,\n };\n }\n\n /**\n * Transforms values grouped by key to logQL filter strings\n */\n private buildFilter(filters: OperatorFilters, operator: LabelFilterOp | NumericFilterOp): string[] {\n const filterStrings: string[] = [];\n\n for (const key in filters) {\n const filtersWithSameOperatorsAndKeys: string[] = [];\n const values = filters[key];\n if (isOperatorNumeric(operator)) {\n values.forEach((value) =>\n filtersWithSameOperatorsAndKeys.push(this.buildFilterString(key, operator, value, ''))\n );\n } else {\n values.forEach((value) => filtersWithSameOperatorsAndKeys.push(this.buildFilterString(key, operator, value)));\n }\n\n if (isOperatorInclusive(operator)) {\n filterStrings.push(filtersWithSameOperatorsAndKeys.join(` ${this.positiveFilterValueSeparator} `));\n } else {\n filterStrings.push(filtersWithSameOperatorsAndKeys.join(` ${this.negativeFilterValueSeparator} `));\n }\n }\n\n return filterStrings;\n }\n\n /**\n * Transforms escaped & concatenated values into strings grouped by key to logQL filter strings\n */\n private buildJoinedFilters(equalFiltersStrings: CombinedOperatorFilters, operator: LabelFilterOp) {\n const filterStrings = [];\n for (const key in equalFiltersStrings) {\n filterStrings.push(this.buildFilterString(key, operator, equalFiltersStrings[key]));\n }\n return filterStrings;\n }\n\n /**\n * Cleans up CombinedFiltersValuesByKey if the operator was transformed\n */\n private removeStaleOperators(filters: CombinedFiltersValuesByKey, expectedOperator: LabelFilterOp) {\n const result: CombinedFiltersValuesByKey = {};\n Object.keys(filters).forEach((key) => {\n if (filters[key].operator === expectedOperator) {\n result[key] = filters[key];\n }\n });\n return result;\n }\n\n /**\n * Merges filters grouped by key from one operator group to another\n */\n private mergeFilters(\n operatorTo: LabelFilterOp,\n filtersFrom: CombinedFiltersValuesByKey,\n filtersTo: CombinedFiltersValuesByKey | undefined\n ) {\n const convertedEqualsFilters = Object.keys(filtersFrom)\n .filter((key) => filtersFrom[key].operator === operatorTo)\n .map((key) => ({ values: filtersFrom[key].values, key }));\n\n convertedEqualsFilters.forEach((valuesToMove) => {\n if (filtersTo === undefined) {\n filtersTo = { [valuesToMove.key]: { values: [], operator: operatorTo } };\n }\n if (filtersTo[valuesToMove.key] === undefined) {\n filtersTo[valuesToMove.key] = { values: [], operator: operatorTo };\n }\n filtersTo[valuesToMove.key].values.push(\n ...this.mergeCombinedFiltersValues(filtersFrom[valuesToMove.key], operatorTo)\n );\n });\n return filtersTo;\n }\n\n /**\n * Merges values for a single filter key\n */\n private mergeCombinedFiltersValues(filtersFrom: CombinedFiltersValues, operatorTo: LabelFilterOp) {\n const values: string[] = [];\n if (filtersFrom.operator === operatorTo && filtersFrom.values?.length) {\n values.push(...filtersFrom.values);\n }\n return values;\n }\n\n /**\n * Iterates through all keys in an operator group and combines values with separator\n */\n private joinCombinedFiltersValues(\n filters: CombinedFiltersValuesByKey | undefined,\n separator: string\n ): CombinedOperatorFilters {\n const filterCombinedValues: CombinedOperatorFilters = {};\n for (const key in filters) {\n if (!filters[key].values.length) {\n continue;\n }\n\n filterCombinedValues[key] = this.combineValues(filters[key].values, separator);\n }\n\n return filterCombinedValues;\n }\n\n /**\n * Iterates through key groups and transforms filter values to key => values object\n */\n private getFilterValues(filters: CombinedFiltersValuesByKey | undefined): OperatorFilters {\n const filterValues: OperatorFilters = {};\n for (const key in filters) {\n if (!filters[key].values.length) {\n continue;\n }\n\n filterValues[key] = filters[key].values;\n }\n\n return filterValues;\n }\n\n /**\n * Combines an array of values by separator\n * Completely unnecessary wrapper of join\n */\n private combineValues(values: string[], separator: string) {\n return values.join(`${separator}`);\n }\n\n /**\n * Combines and escapes values with the same operator, note assumes every filter has the same operator\n * If multipleValuesOperator is set, multiple values will be combined into a single filter to use that operator in the output\n * @param filtersByKey\n * @param multipleValuesOperator\n * @private\n */\n private combineFiltersValues(\n filtersByKey: Dictionary,\n multipleValuesOperator?: LabelFilterOp\n ): CombinedFiltersValuesByKey | undefined {\n let updatedOperatorAndEscapedValues: CombinedFiltersValuesByKey = {};\n\n for (const key in filtersByKey) {\n if (!filtersByKey[key].length) {\n continue;\n }\n\n const currentOperator = narrowFilterOperator(filtersByKey[key][0].operator);\n const updatedOperator = multipleValuesOperator ?? currentOperator;\n const firstFilter = filtersByKey[key][0];\n\n updatedOperatorAndEscapedValues[key] = { values: [], operator: updatedOperator };\n\n // Only one value for this key\n if (filtersByKey[key].length === 1) {\n const filterString = this.escapeFieldValue(\n firstFilter.operator,\n firstFilter.value,\n firstFilter.valueLabels ?? []\n );\n updatedOperatorAndEscapedValues[key] = { operator: currentOperator, values: [filterString] };\n\n if (this.options.debug) {\n console.info('single value filter', { filter: firstFilter, filterString });\n }\n } else {\n const values = this.escapeFieldValues(key, filtersByKey, updatedOperator);\n if (updatedOperatorAndEscapedValues[key].operator === undefined) {\n updatedOperatorAndEscapedValues[key] = { operator: updatedOperator, values };\n } else {\n updatedOperatorAndEscapedValues[key].values?.push(...values);\n }\n }\n }\n\n return updatedOperatorAndEscapedValues;\n }\n\n /**\n * Iterates through all keys in a merged operator group and escapes the values\n */\n private escapeFieldValues(\n key: string,\n filtersByKey: Dictionary,\n updatedOperator: LabelFilterOp | NumericFilterOp\n ) {\n // Convert single operator to regex\n return filtersByKey[key].map((filter) =>\n this.escapeFieldValue(updatedOperator, filter.value, filter.valueLabels ?? [])\n );\n }\n\n /**\n * Escape field values:\n * If value is encoded, decode it\n * If value is empty, don't escape double quotes\n * If value is custom user input, strip prefix and don't escape special regex chars\n */\n private escapeFieldValue(operator: LabelFilterOp | string, value: string, valueLabels: string[]): string {\n const isUserInput = isAdHocFilterValueUserInput(value);\n\n // decode value\n if (this.options.decodeFilters) {\n const fieldObject = getValueFromFieldsFilter({ value, valueLabels });\n value = fieldObject.value;\n }\n\n if (value === EMPTY_VARIABLE_VALUE) {\n if (this.options.debug) {\n console.info('empty variable value, do not escape');\n }\n // Don't encode empty value\n return value;\n }\n\n if (isUserInput) {\n if (this.options.debug) {\n console.info('ESCAPE: user input - exact selector', {\n operator,\n value,\n result: sceneUtils.escapeLabelValueInExactSelector(stripAdHocFilterUserInputPrefix(value)),\n });\n }\n return sceneUtils.escapeLabelValueInExactSelector(stripAdHocFilterUserInputPrefix(value));\n }\n if (isOperatorRegex(operator)) {\n if (this.options.debug) {\n console.info('ESCAPE: regex selector', { operator, value });\n }\n return sceneUtils.escapeLabelValueInRegexSelector(value);\n }\n\n if (this.options.debug) {\n console.info('ESCAPE: exact selector', { operator, value });\n }\n\n return sceneUtils.escapeLabelValueInExactSelector(value);\n }\n\n /**\n * Builds logQL filter string.\n * Expects pre-escaped content\n * @private\n */\n private buildFilterString(key: string, operator: LabelFilterOp | string, rawValue: string, quoteChar = '\"') {\n if (rawValue === EMPTY_VARIABLE_VALUE) {\n return `${key}${operator}${rawValue}`;\n }\n\n const filterString = `${key}${operator}${quoteChar}${rawValue}${quoteChar}`;\n if (this.options.debug) {\n console.info('buildDoubleQuotedFilter', { filter: { key, operator, value: rawValue }, filterString });\n }\n\n return filterString;\n }\n\n /**\n * Groups all filters by operator and key\n */\n private groupFiltersByKey(filters: AdHocVariableFilter[]): Record> {\n let filteredFilters: AdHocVariableFilter[] = filters.filter(\n (f) => !this.options.ignoreKeys?.includes(f.key) || isOperatorRegex(f.operator)\n );\n\n // We need at least one inclusive filter\n if (this.options.filterType === 'indexed') {\n if (filteredFilters.length < 1) {\n filteredFilters = filters;\n }\n }\n\n const positiveMatch = filteredFilters.filter(\n (filter) => isOperatorInclusive(filter.operator) && !isOperatorRegex(filter.operator)\n );\n const positiveRegex = filteredFilters.filter(\n (filter) => isOperatorInclusive(filter.operator) && isOperatorRegex(filter.operator)\n );\n const negativeMatch = filteredFilters.filter(\n (filter) => isOperatorExclusive(filter.operator) && !isOperatorRegex(filter.operator)\n );\n const negativeRegex = filteredFilters.filter(\n (filter) => isOperatorExclusive(filter.operator) && isOperatorRegex(filter.operator)\n );\n const gt = filteredFilters.filter((filter) => filter.operator === FilterOp.gt);\n const gte = filteredFilters.filter((filter) => filter.operator === FilterOp.gte);\n const lt = filteredFilters.filter((filter) => filter.operator === FilterOp.lt);\n const lte = filteredFilters.filter((filter) => filter.operator === FilterOp.lte);\n\n // Field ops\n const positiveMatchGroup = groupBy(positiveMatch, (filter) => filter.key);\n const positiveRegexGroup = groupBy(positiveRegex, (filter) => filter.key);\n const negativeMatchGroup = groupBy(negativeMatch, (filter) => filter.key);\n const negativeRegexGroup = groupBy(negativeRegex, (filter) => filter.key);\n\n // Duration ops\n const gtGroup = groupBy(gt, (filter) => filter.key);\n const gteGroup = groupBy(gte, (filter) => filter.key);\n const ltGroup = groupBy(lt, (filter) => filter.key);\n const lteGroup = groupBy(lte, (filter) => filter.key);\n\n return {\n [FilterOp.Equal]: positiveMatchGroup,\n [FilterOp.RegexEqual]: positiveRegexGroup,\n [FilterOp.NotEqual]: negativeMatchGroup,\n [FilterOp.RegexNotEqual]: negativeRegexGroup,\n [FilterOp.gt]: gtGroup,\n [FilterOp.gte]: gteGroup,\n [FilterOp.lt]: ltGroup,\n [FilterOp.lte]: lteGroup,\n };\n }\n}\n","import { reportInteraction } from '@grafana/runtime';\nimport pluginJson from '../plugin.json';\n\n// Helper function to create a unique interaction name for analytics\nconst createInteractionName = (page: UserEventPagesType, action: string) => {\n return `${pluginJson.id.replace(/-/g, '_')}_${page}_${action}`;\n};\n\n// Runs reportInteraction with a standardized interaction name\nexport const reportAppInteraction = (\n page: UserEventPagesType,\n action: UserEventActionType,\n properties?: Record\n) => {\n reportInteraction(createInteractionName(page, action), properties);\n};\n\nexport const USER_EVENTS_PAGES = {\n service_selection: 'service_selection',\n service_details: 'service_details',\n all: 'all',\n} as const;\n\ntype UserEventPagesType = keyof typeof USER_EVENTS_PAGES;\ntype UserEventActionType =\n | keyof (typeof USER_EVENTS_ACTIONS)['service_selection']\n | keyof (typeof USER_EVENTS_ACTIONS)['service_details']\n | keyof (typeof USER_EVENTS_ACTIONS)['all'];\n\nexport const USER_EVENTS_ACTIONS = {\n [USER_EVENTS_PAGES.service_selection]: {\n // Searching for service using search input. Props: searchQueryLength, containsLevel\n search_services_changed: 'search_services_changed',\n // Selecting service. Props: service\n service_selected: 'service_selected',\n // Toggling aggregated metrics on/off\n aggregated_metrics_toggled: 'aggregated_metrics_toggled',\n add_to_filters: 'add_to_filters',\n },\n [USER_EVENTS_PAGES.service_details]: {\n open_in_explore_clicked: 'open_in_explore_clicked',\n // Selecting action view tab (logs/labels/fields/patterns). Props: newActionView, previousActionView\n action_view_changed: 'action_view_changed',\n // Clicking on \"Include\" button in time series panels. Used in multiple views. The view type is passed as a parameter. Props: filterType, key, isFilterDuplicate, filtersLength\n add_to_filters_in_breakdown_clicked: 'add_to_filters_in_breakdown_clicked',\n // Clicking on \"Select\" button button in time series panels. Used in multiple views.The view type is passed as a parameter. Props: field, previousField, view\n select_field_in_breakdown_clicked: 'select_field_in_breakdown_clicked',\n // Clicking on one of the levels in the Logs Volume panel\n level_in_logs_volume_clicked: 'level_in_logs_volume_clicked',\n label_in_panel_summary_clicked: 'label_in_panel_summary_clicked',\n // Changing layout type (e.g. single/grid/rows). Used in multiple views. The view type is passed as a parameter. Props: layout, view\n layout_type_changed: 'layout_type_changed',\n // Changing search string in logs. Props: searchQuery\n search_string_in_logs_changed: 'search_string_in_logs_changed',\n search_string_in_variables_changed: 'search_string_in_variables_changed',\n // Removing a pattern (e.g. include/exclude) from the list. Props: includePatternsLength, excludePatternsLength, type\n pattern_removed: 'pattern_removed',\n // Selecting a pattern (e.g. include/exclude) from the list. Props: includePatternsLength, excludePatternsLength, type\n pattern_selected: 'pattern_selected',\n // Clicking on a pattern field in the pattern name.\n pattern_field_clicked: 'pattern_field_clicked',\n // Toggling between logs/table view\n logs_visualization_toggle: 'logs_visualization_toggle',\n // Filter (include, exclude) from log details\n logs_detail_filter_applied: 'logs_detail_filter_applied',\n // Popover menu filter\n logs_popover_line_filter: 'logs_popover_line_filter',\n // Toggle displayed fields\n logs_toggle_displayed_field: 'logs_toggle_displayed_field',\n // Clear all displayed fields\n logs_clear_displayed_fields: 'logs_clear_displayed_fields',\n // Value breakdown sort change\n value_breakdown_sort_change: 'value_breakdown_sort_change',\n // Wasm not supported\n wasm_not_supported: 'wasm_not_supported',\n change_viz_type: 'change_viz_type',\n },\n [USER_EVENTS_PAGES.all]: {\n interval_too_long: 'interval_too_long',\n open_in_explore_menu_clicked: 'open_in_explore_menu_clicked',\n },\n} as const;\n","import _ from 'lodash';\n\n/**\n * Order doesn't matter, converts to sets, deep compare via lodash isEqual\n * @param arr1\n * @param arr2\n */\n\nexport const areArraysEqual = (arr1: any[] | undefined, arr2: any[] | undefined) => {\n // If one array is undefined, and the other is empty, they will cast to the same set.\n if (typeof arr1 !== typeof arr2) {\n return false;\n }\n const set1 = new Set(arr1);\n const set2 = new Set(arr2);\n\n // Save us from running the isEqual check if the set sizes are different\n if (set1.size !== set2.size) {\n return false;\n }\n\n return _.isEqual(set1, set2);\n};\n\nexport const areArraysStrictlyEqual = (arr1: any[] | undefined, arr2: any[] | undefined) => {\n // If one array is undefined, and the other is empty, they will cast to the same set.\n if (typeof arr1 !== typeof arr2) {\n return false;\n }\n return _.isEqual(arr1, arr2);\n};\n","import { MetricExpr, parser, Selector } from '@grafana/lezer-logql';\nimport { LokiQuery } from './lokiQuery';\nimport { getNodesFromQuery } from './logqlMatchers';\nimport { SceneDataQueryRequest } from './datasourceTypes';\n\nexport function isQueryWithNode(query: string, nodeType: number): boolean {\n let isQueryWithNode = false;\n const tree = parser.parse(query);\n tree.iterate({\n enter: ({ type }): false | void => {\n if (type.id === nodeType) {\n isQueryWithNode = true;\n return false;\n }\n },\n });\n return isQueryWithNode;\n}\n\nexport function isLogsQuery(query: string): boolean {\n // As a safeguard we are checking for a length of 2, because at least the query should be `{}`\n return query.trim().length > 2 && !isQueryWithNode(query, MetricExpr);\n}\n\nexport function isLogsRequest(request: SceneDataQueryRequest) {\n return request.targets.find((query) => isLogsQuery(query.expr)) !== undefined;\n}\n\nexport function isInstantQuery(request: SceneDataQueryRequest) {\n return request.targets.find((query) => query.queryType === 'instant');\n}\n\nexport function requestSupportsSharding(request: SceneDataQueryRequest) {\n if (isLogsRequest(request)) {\n return false;\n }\n if (isInstantQuery(request)) {\n return false;\n }\n for (let i = 0; i < request.targets.length; i++) {\n if (request.targets[i].expr?.includes('avg_over_time')) {\n return false;\n }\n }\n return true;\n}\n\nconst SHARDING_PLACEHOLDER = '__stream_shard_number__';\nexport const addShardingPlaceholderSelector = (query: string) => {\n return query.replace('}', `, __stream_shard__=~\"${SHARDING_PLACEHOLDER}\"}`);\n};\n\nexport const interpolateShardingSelector = (queries: LokiQuery[], shards?: number[]) => {\n if (shards === undefined || shards.length === 0) {\n return queries.map((query) => ({\n ...query,\n expr: query.expr.replace(`, __stream_shard__=~\"${SHARDING_PLACEHOLDER}\"}`, '}'),\n }));\n }\n\n let shardValue = shards.join('|');\n\n // -1 means empty shard value\n if (shardValue === '-1' || shards.length === 1) {\n shardValue = shardValue === '-1' ? '' : shardValue;\n return queries.map((query) => ({\n ...query,\n expr: query.expr.replace(`, __stream_shard__=~\"${SHARDING_PLACEHOLDER}\"}`, `, __stream_shard__=\"${shardValue}\"}`),\n }));\n }\n\n return queries.map((query) => ({\n ...query,\n expr: query.expr.replace(new RegExp(`${SHARDING_PLACEHOLDER}`, 'g'), shardValue),\n }));\n};\n\nexport const getSelectorForShardValues = (query: string) => {\n const selector = getNodesFromQuery(query, [Selector]);\n if (selector.length > 0) {\n return query\n .substring(selector[0].from, selector[0].to)\n .replace(`, __stream_shard__=~\"${SHARDING_PLACEHOLDER}\"}`, '}');\n }\n return '';\n};\n","import {\n closestIdx,\n DataFrame,\n DataFrameType,\n DataQueryResponse,\n DataQueryResponseData,\n Field,\n FieldType,\n QueryResultMetaStat,\n} from '@grafana/data';\nimport { logger } from './logger';\n\nexport function combineResponses(currentResult: DataQueryResponse | null, newResult: DataQueryResponse) {\n if (!currentResult) {\n return cloneQueryResponse(newResult);\n }\n\n newResult.data.forEach((newFrame) => {\n const currentFrame = currentResult.data.find((frame) => shouldCombine(frame, newFrame));\n if (!currentFrame) {\n currentResult.data.push(cloneDataFrame(newFrame));\n return;\n }\n mergeFrames(currentFrame, newFrame);\n });\n\n const mergedErrors = [...(currentResult.errors ?? []), ...(newResult.errors ?? [])];\n\n // we make sure to have `.errors` as undefined, instead of empty-array\n // when no errors.\n\n if (mergedErrors.length > 0) {\n currentResult.errors = mergedErrors;\n }\n\n // the `.error` attribute is obsolete now,\n // but we have to maintain it, otherwise\n // some grafana parts do not behave well.\n // we just choose the old error, if it exists,\n // otherwise the new error, if it exists.\n const mergedError = currentResult.error ?? newResult.error;\n if (mergedError != null) {\n currentResult.error = mergedError;\n }\n\n const mergedTraceIds = [...(currentResult.traceIds ?? []), ...(newResult.traceIds ?? [])];\n if (mergedTraceIds.length > 0) {\n currentResult.traceIds = mergedTraceIds;\n }\n\n return currentResult;\n}\n\n/**\n * Given two data frames, merge their values. Overlapping values will be added together.\n */\nexport function mergeFrames(dest: DataFrame, source: DataFrame) {\n const destTimeField = dest.fields.find((field) => field.type === FieldType.time);\n const destIdField = dest.fields.find((field) => field.type === FieldType.string && field.name === 'id');\n const sourceTimeField = source.fields.find((field) => field.type === FieldType.time);\n const sourceIdField = source.fields.find((field) => field.type === FieldType.string && field.name === 'id');\n\n if (!destTimeField || !sourceTimeField) {\n logger.error(new Error(`Time fields not found in the data frames`));\n return;\n }\n\n const sourceTimeValues = sourceTimeField?.values.slice(0) ?? [];\n const totalFields = Math.max(dest.fields.length, source.fields.length);\n\n for (let i = 0; i < sourceTimeValues.length; i++) {\n const destIdx = resolveIdx(destTimeField, sourceTimeField, i);\n\n const entryExistsInDest = compareEntries(destTimeField, destIdField, destIdx, sourceTimeField, sourceIdField, i);\n\n for (let f = 0; f < totalFields; f++) {\n // For now, skip undefined fields that exist in the new frame\n if (!dest.fields[f]) {\n continue;\n }\n // Index is not reliable when frames have disordered fields, or an extra/missing field, so we find them by name.\n // If the field has no name, we fallback to the old index version.\n const sourceField = findSourceField(dest.fields[f], source.fields, f);\n if (!sourceField) {\n continue;\n }\n // Same value, accumulate\n if (entryExistsInDest) {\n if (dest.fields[f].type === FieldType.time) {\n // Time already exists, skip\n continue;\n } else if (dest.fields[f].type === FieldType.number) {\n // Number, add\n dest.fields[f].values[destIdx] = (dest.fields[f].values[destIdx] ?? 0) + sourceField.values[i];\n } else if (dest.fields[f].type === FieldType.other) {\n // Possibly labels, combine\n if (typeof sourceField.values[i] === 'object') {\n dest.fields[f].values[destIdx] = {\n ...dest.fields[f].values[destIdx],\n ...sourceField.values[i],\n };\n } else if (sourceField.values[i] != null) {\n dest.fields[f].values[destIdx] = sourceField.values[i];\n }\n } else {\n // Replace value\n dest.fields[f].values[destIdx] = sourceField.values[i];\n }\n } else if (sourceField.values[i] !== undefined) {\n // Insert in the `destIdx` position\n dest.fields[f].values.splice(destIdx, 0, sourceField.values[i]);\n if (sourceField.nanos) {\n dest.fields[f].nanos = dest.fields[f].nanos ?? new Array(dest.fields[f].values.length - 1).fill(0);\n dest.fields[f].nanos?.splice(destIdx, 0, sourceField.nanos[i]);\n }\n }\n }\n }\n\n dest.length = dest.fields[0].values.length;\n\n dest.meta = {\n ...dest.meta,\n stats: getCombinedMetadataStats(dest.meta?.stats ?? [], source.meta?.stats ?? []),\n };\n}\n\nfunction resolveIdx(destField: Field, sourceField: Field, index: number) {\n const idx = closestIdx(sourceField.values[index], destField.values);\n if (idx < 0) {\n return 0;\n }\n if (sourceField.values[index] === destField.values[idx] && sourceField.nanos != null && destField.nanos != null) {\n return sourceField.nanos[index] > destField.nanos[idx] ? idx + 1 : idx;\n }\n if (sourceField.values[index] > destField.values[idx]) {\n return idx + 1;\n }\n return idx;\n}\n\nfunction compareEntries(\n destTimeField: Field,\n destIdField: Field | undefined,\n destIndex: number,\n sourceTimeField: Field,\n sourceIdField: Field | undefined,\n sourceIndex: number\n) {\n const sameTimestamp = compareNsTimestamps(destTimeField, destIndex, sourceTimeField, sourceIndex);\n if (!sameTimestamp) {\n return false;\n }\n if (destIdField == null || sourceIdField == null) {\n return true;\n }\n // Log frames, check indexes\n return (\n destIdField.values[destIndex] !== undefined && destIdField.values[destIndex] === sourceIdField.values[sourceIndex]\n );\n}\n\nfunction compareNsTimestamps(destField: Field, destIndex: number, sourceField: Field, sourceIndex: number) {\n if (destField.nanos && sourceField.nanos) {\n return (\n destField.values[destIndex] !== undefined &&\n destField.values[destIndex] === sourceField.values[sourceIndex] &&\n destField.nanos[destIndex] !== undefined &&\n destField.nanos[destIndex] === sourceField.nanos[sourceIndex]\n );\n }\n return destField.values[destIndex] !== undefined && destField.values[destIndex] === sourceField.values[sourceIndex];\n}\n\nfunction findSourceField(referenceField: Field, sourceFields: Field[], index: number) {\n const candidates = sourceFields.filter((f) => f.name === referenceField.name);\n\n if (candidates.length === 1) {\n return candidates[0];\n }\n\n return sourceFields[index];\n}\n\nconst TOTAL_BYTES_STAT = 'Summary: total bytes processed';\n// This is specific for Loki\nfunction getCombinedMetadataStats(\n destStats: QueryResultMetaStat[],\n sourceStats: QueryResultMetaStat[]\n): QueryResultMetaStat[] {\n // in the current approach, we only handle a single stat\n const destStat = destStats.find((s) => s.displayName === TOTAL_BYTES_STAT);\n const sourceStat = sourceStats.find((s) => s.displayName === TOTAL_BYTES_STAT);\n\n if (sourceStat != null && destStat != null) {\n return [{ value: sourceStat.value + destStat.value, displayName: TOTAL_BYTES_STAT, unit: destStat.unit }];\n }\n\n // maybe one of them exist\n const eitherStat = sourceStat ?? destStat;\n if (eitherStat != null) {\n return [eitherStat];\n }\n\n return [];\n}\n\n/**\n * Deep clones a DataQueryResponse\n */\nexport function cloneQueryResponse(response: DataQueryResponse): DataQueryResponse {\n const newResponse = {\n ...response,\n data: response.data.map(cloneDataFrame),\n };\n return newResponse;\n}\n\nfunction cloneDataFrame(frame: DataQueryResponseData): DataQueryResponseData {\n return {\n ...frame,\n fields: frame.fields.map((field: Field) => ({\n ...field,\n values: field.values,\n })),\n };\n}\n\nfunction shouldCombine(frame1: DataFrame, frame2: DataFrame): boolean {\n if (frame1.refId !== frame2.refId) {\n return false;\n }\n if (frame1.name != null && frame2.name != null && frame1.name !== frame2.name) {\n return false;\n }\n\n const frameType1 = frame1.meta?.type;\n const frameType2 = frame2.meta?.type;\n\n if (frameType1 !== frameType2) {\n // we do not join things that have a different type\n return false;\n }\n\n // metric range query data\n if (frameType1 === DataFrameType.TimeSeriesMulti) {\n return compareLabels(frame1, frame2);\n }\n\n // logs query data\n // logs use a special attribute in the dataframe's \"custom\" section\n // because we do not have a good \"frametype\" value for them yet.\n const customType1 = frame1.meta?.custom?.frameType;\n const customType2 = frame2.meta?.custom?.frameType;\n // Legacy frames have this custom type\n if (customType1 === 'LabeledTimeValues' && customType2 === 'LabeledTimeValues') {\n return true;\n } else if (customType1 === customType2) {\n // Data plane frames don't\n return true;\n }\n\n // should never reach here\n return false;\n}\n\nfunction compareLabels(frame1: DataFrame, frame2: DataFrame) {\n const field1 = frame1.fields.find((f) => f.type === FieldType.number);\n const field2 = frame2.fields.find((f) => f.type === FieldType.number);\n if (field1 === undefined || field2 === undefined) {\n // should never happen\n return false;\n }\n // undefined == null\n if (frame1.name == null) {\n frame1.name = JSON.stringify(field1.labels);\n }\n if (frame2.name == null) {\n frame2.name = JSON.stringify(field2.labels);\n }\n return frame1.name === frame2.name;\n}\n","import pluginJson from '../plugin.json';\nimport { Observable, Subscriber, Subscription } from 'rxjs';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport { DataQueryRequest, DataQueryResponse, LoadingState, QueryResultMetaStat } from '@grafana/data';\nimport { addShardingPlaceholderSelector, getSelectorForShardValues, interpolateShardingSelector } from './logql';\nimport { combineResponses } from './combineResponses';\nimport { LokiDatasource, LokiQuery } from './lokiQuery';\nimport { logger } from './logger';\nimport { isValidQuery } from './logqlMatchers';\n\n/**\n * Query splitting by stream shards.\n * Query splitting was introduced in Loki to optimize querying for long intervals and high volume of data,\n * dividing a big request into smaller sub-requests, combining and displaying the results as they arrive.\n *\n * This approach, inspired by the time-based query splitting, takes advantage of the __stream_shard__\n * internal label, representing how data is spread into different sources that can be queried individually.\n *\n * The main entry point of this module is runShardSplitQuery(), which prepares the query for execution and\n * passes it to splitQueriesByStreamShard() to begin the querying loop.\n *\n * splitQueriesByStreamShard() has the following structure:\n * - Creates and returns an Observable to which the UI will subscribe\n * - Requests the __stream_shard__ values of the selected service:\n * . If there are no shard values, it falls back to the standard querying approach of the data source in runNonSplitRequest()\n * . If there are shards:\n * - It sorts them by value, descending. Higher shard numbers correspond with the least volume.\n * - It defines an initial group size, roughly Math.sqrt(amountOfShards).\n * - It begins the querying loop with runNextRequest().\n * - runNextRequest() will create a group of groupSize shards from the nth shard (cycle), and has the following internal structure:\n * . groupShardRequests() returns an array of shards from cycle to cycle + groupSize.\n * . interpolateShardingSelector() will update the stream selector with the shard numbers in the current group.\n * . After query execution:\n * - If the response is successful:\n * . It will add new data to the response with combineResponses()\n * . Using the data and meta data of the response, updateGroupSizeFromResponse() will increase or decrease the group size.\n * . nextRequest() will use the current cycle and group size to determine the next request or complete execution with done().\n * - If the response is unsuccessful:\n * . If the response is not a query error, and the group size bigger than 1, it will decrease the group size.\n * . If the group size is already 1, it will retry the request up to 4 times.\n * . If there are retry attempts, it will retry the current cycle, or else stop querying.\n * - Once all request groups have been executed, it will be done().\n */\n\nexport function runShardSplitQuery(datasource: LokiDatasource, request: DataQueryRequest) {\n const queries = datasource\n .interpolateVariablesInQueries(request.targets, request.scopedVars)\n .filter((query) => query.expr)\n .map((target) => ({\n ...target,\n expr: addShardingPlaceholderSelector(target.expr),\n }));\n\n return splitQueriesByStreamShard(datasource, request, queries);\n}\n\nfunction splitQueriesByStreamShard(\n datasource: LokiDatasource,\n request: DataQueryRequest,\n splittingTargets: LokiQuery[]\n) {\n let shouldStop = false;\n let mergedResponse: DataQueryResponse = { data: [], state: LoadingState.Streaming, key: uuidv4() };\n let subquerySubscription: Subscription | null = null;\n let retriesMap = new Map();\n let retryTimer: ReturnType | null = null;\n\n const runNextRequest = (\n subscriber: Subscriber,\n cycle: number,\n shards: number[],\n groupSize: number\n ) => {\n let nextGroupSize = groupSize;\n let retrying = false;\n\n if (subquerySubscription != null) {\n subquerySubscription.unsubscribe();\n subquerySubscription = null;\n }\n\n const done = () => {\n mergedResponse.state = shouldStop ? LoadingState.Error : LoadingState.Done;\n subscriber.next(mergedResponse);\n subscriber.complete();\n };\n\n if (shouldStop) {\n done();\n return;\n }\n\n const nextRequest = () => {\n const nextCycle = Math.min(cycle + groupSize, shards.length);\n if (cycle < shards.length && nextCycle <= shards.length) {\n runNextRequest(subscriber, nextCycle, shards, nextGroupSize);\n return;\n }\n done();\n };\n\n const retry = (errorResponse?: DataQueryResponse) => {\n try {\n if (errorResponse && !isRetriableError(errorResponse)) {\n return false;\n }\n } catch (e) {\n logger.error(e, {\n msg: 'sharding retry error',\n error: errorResponse?.error?.message ?? '',\n errors: errorResponse?.errors?.map((e) => e.message).join(' | ') ?? '',\n traces: errorResponse?.traceIds?.join('|') ?? '',\n });\n shouldStop = true;\n return false;\n }\n\n if (groupSize > 1) {\n groupSize = Math.floor(Math.sqrt(groupSize));\n debug(`Possible time out, new group size ${groupSize}`);\n retrying = true;\n runNextRequest(subscriber, cycle, shards, groupSize);\n return true;\n }\n\n const retries = retriesMap.get(cycle) ?? 0;\n if (retries > 3) {\n shouldStop = true;\n return false;\n }\n\n retriesMap.set(cycle, retries + 1);\n\n retryTimer = setTimeout(() => {\n logger.info(`Retrying ${cycle} (${retries + 1})`);\n runNextRequest(subscriber, cycle, shards, groupSize);\n retryTimer = null;\n }, 1500 * Math.pow(2, retries)); // Exponential backoff\n\n retrying = true;\n\n return true;\n };\n\n const shardsToQuery = groupShardRequests(shards, cycle, groupSize);\n debug(`Querying ${shardsToQuery.join(', ')}`);\n const subRequest = { ...request, targets: interpolateShardingSelector(splittingTargets, shardsToQuery) };\n // Request may not have a request id\n if (request.requestId) {\n subRequest.requestId = `${request.requestId}_shard_${cycle}_${groupSize}`;\n }\n\n // @ts-expect-error\n subquerySubscription = datasource.runQuery(subRequest).subscribe({\n next: (partialResponse: DataQueryResponse) => {\n if ((partialResponse.errors ?? []).length > 0 || partialResponse.error != null) {\n if (retry(partialResponse)) {\n return;\n }\n }\n nextGroupSize = constrainGroupSize(\n cycle + groupSize,\n updateGroupSizeFromResponse(partialResponse, groupSize),\n shards.length\n );\n if (nextGroupSize !== groupSize) {\n debug(`New group size ${nextGroupSize}`);\n }\n mergedResponse = combineResponses(mergedResponse, partialResponse);\n },\n complete: () => {\n if (retrying) {\n return;\n }\n // Prevent flashing \"no data\"\n if (mergedResponse.data.length) {\n subscriber.next(mergedResponse);\n }\n nextRequest();\n },\n error: (error: unknown) => {\n logger.error(error, { msg: 'failed to shard' });\n subscriber.next(mergedResponse);\n if (retry()) {\n return;\n }\n nextRequest();\n },\n });\n };\n\n const runNonSplitRequest = (subscriber: Subscriber) => {\n subquerySubscription = datasource.query(request).subscribe({\n next: (partialResponse: DataQueryResponse) => {\n mergedResponse = partialResponse;\n },\n complete: () => {\n subscriber.next(mergedResponse);\n },\n error: (error: unknown) => {\n logger.error(error, { msg: 'runNonSplitRequest subscription error' });\n subscriber.error(mergedResponse);\n },\n });\n };\n\n const response = new Observable((subscriber) => {\n const selector = getSelectorForShardValues(splittingTargets[0].expr);\n\n if (!isValidQuery(selector)) {\n debug(`Skipping invalid selector: ${selector}`);\n subscriber.complete();\n return;\n }\n\n datasource.languageProvider\n .fetchLabelValues('__stream_shard__', {\n timeRange: request.range,\n streamSelector: selector ? selector : undefined,\n })\n .then((values: string[]) => {\n const shards = values.map((value) => parseInt(value, 10));\n if (!shards || !shards.length) {\n logger.warn(`Shard splitting not supported. Issuing a regular query.`);\n runNonSplitRequest(subscriber);\n } else {\n shards.sort((a, b) => b - a);\n debug(`Querying ${shards.join(', ')} shards`);\n runNextRequest(subscriber, 0, shards, getInitialGroupSize(shards));\n }\n })\n .catch((e: unknown) => {\n logger.error(e, { msg: 'failed to fetch label values for __stream_shard__' });\n runNonSplitRequest(subscriber);\n });\n return () => {\n shouldStop = true;\n if (retryTimer) {\n clearTimeout(retryTimer);\n }\n if (subquerySubscription != null) {\n subquerySubscription.unsubscribe();\n subquerySubscription = null;\n }\n };\n });\n\n return response;\n}\n\nfunction updateGroupSizeFromResponse(response: DataQueryResponse, currentSize: number) {\n if (!response.data.length) {\n // Empty response, increase group size\n return currentSize + 1;\n }\n\n const metaExecutionTime: QueryResultMetaStat | undefined = response.data[0].meta?.stats?.find(\n (stat: QueryResultMetaStat) => stat.displayName === 'Summary: exec time'\n );\n\n if (metaExecutionTime) {\n const executionTime = Math.round(metaExecutionTime.value);\n debug(`${metaExecutionTime.value}`);\n // Positive scenarios\n if (executionTime <= 1) {\n return Math.floor(currentSize * 1.5);\n } else if (executionTime < 6) {\n return Math.ceil(currentSize * 1.1);\n }\n\n // Negative scenarios\n if (currentSize === 1) {\n return currentSize;\n } else if (executionTime < 20) {\n return Math.ceil(currentSize * 0.9);\n } else {\n return Math.floor(currentSize / 2);\n }\n }\n\n return currentSize;\n}\n\n/**\n * Prevents the group size for ever being more than maxFactor% of the pending shards.\n */\nfunction constrainGroupSize(cycle: number, groupSize: number, shards: number) {\n const maxFactor = 0.7;\n return Math.min(groupSize, Math.max(Math.floor((shards - cycle) * maxFactor), 1));\n}\n\nfunction groupShardRequests(shards: number[], start: number, groupSize: number) {\n if (start === shards.length) {\n return [-1];\n }\n return shards.slice(start, start + groupSize);\n}\n\nfunction getInitialGroupSize(shards: number[]) {\n return Math.floor(Math.sqrt(shards.length));\n}\n\nfunction isRetriableError(errorResponse: DataQueryResponse) {\n const message = errorResponse.errors\n ? (errorResponse.errors[0].message ?? '').toLowerCase()\n : errorResponse.error?.message ?? '';\n if (message.includes('timeout')) {\n return true;\n } else if (message.includes('parse error')) {\n // If the error is a parse error, we want to signal to stop querying.\n throw new Error(message);\n }\n return false;\n}\n\n// Enable to output debugging logs\nconst DEBUG_ENABLED = Boolean(localStorage.getItem(`${pluginJson.id}.sharding_debug_enabled`));\nfunction debug(message: string) {\n if (!DEBUG_ENABLED) {\n return;\n }\n console.log(message);\n}\n","import {\n createDataFrame,\n DataFrame,\n DataQueryRequest,\n DataQueryResponse,\n Field,\n FieldType,\n LoadingState,\n TestDataSourceResponse,\n} from '@grafana/data';\nimport { config, DataSourceWithBackend, getDataSourceSrv } from '@grafana/runtime';\nimport { RuntimeDataSource, sceneUtils } from '@grafana/scenes';\nimport { DataQuery } from '@grafana/schema';\nimport { Observable, Subscriber } from 'rxjs';\nimport { getDataSource } from './scenes';\nimport { DetectedFieldsResponse, DetectedLabelsResponse } from './fields';\nimport { FIELDS_TO_REMOVE, LABELS_TO_REMOVE, sortLabelsByCardinality } from './filters';\nimport { SERVICE_NAME } from './variables';\nimport { runShardSplitQuery } from './shardQuerySplitting';\nimport { requestSupportsSharding } from './logql';\nimport { LokiDatasource, LokiQuery } from './lokiQuery';\nimport { SceneDataQueryRequest, SceneDataQueryResourceRequest, VolumeRequestProps } from './datasourceTypes';\nimport { logger } from './logger';\nimport { PLUGIN_ID } from './plugin';\nimport { sanitizeStreamSelector } from './query';\n\nexport const WRAPPED_LOKI_DS_UID = 'wrapped-loki-ds-uid';\n\ntype TimeStampOfVolumeEval = number;\ntype VolumeCount = string;\ntype VolumeValue = [TimeStampOfVolumeEval, VolumeCount];\ntype VolumeResult = {\n metric: {\n service_name?: string;\n __aggregated_metric__?: string;\n [index: string]: string | undefined;\n };\n value: VolumeValue;\n};\n\ntype IndexVolumeResponse = {\n data: {\n result: VolumeResult[];\n };\n};\n\ntype LabelsResponse = {\n status: string;\n data: string[];\n};\n\ntype SampleTimeStamp = number;\ntype SampleCount = number;\ntype PatternSample = [SampleTimeStamp, SampleCount];\n\nexport interface LokiPattern {\n pattern: string;\n samples: PatternSample[];\n}\n\ntype PatternsResponse = {\n data: LokiPattern[];\n};\n\nexport const DETECTED_FIELDS_NAME_FIELD = 'name';\n\nexport const DETECTED_FIELDS_CARDINALITY_NAME = 'cardinality';\n\nexport const DETECTED_FIELDS_PARSER_NAME = 'parser';\n\nexport const DETECTED_FIELDS_TYPE_NAME = 'type';\n\nexport class WrappedLokiDatasource extends RuntimeDataSource {\n constructor(pluginId: string, uid: string) {\n super(pluginId, uid);\n }\n\n query(request: SceneDataQueryRequest): Promise | Observable {\n return new Observable((subscriber) => {\n if (!request.scopedVars?.__sceneObject) {\n throw new Error('Scene object not found in request');\n }\n\n getDataSourceSrv()\n .get(getDataSource(request.scopedVars.__sceneObject.valueOf()))\n .then(async (ds) => {\n if (!(ds instanceof DataSourceWithBackend) || !('interpolateString' in ds) || !('getTimeRangeParams' in ds)) {\n throw new Error('Invalid datasource!');\n }\n\n // override the target datasource to Loki\n request.targets = request.targets?.map((target) => {\n target.datasource = ds;\n return target;\n });\n\n const targetsSet = new Set();\n request.targets.forEach((target) => {\n targetsSet.add(target.resource ?? '');\n });\n\n if (targetsSet.size !== 1) {\n throw new Error('A request cannot contain queries to multiple endpoints');\n }\n\n const requestType = request.targets[0].resource;\n\n switch (requestType) {\n case 'volume': {\n await this.getVolume(request, ds, subscriber);\n break;\n }\n case 'patterns': {\n await this.getPatterns(request, ds, subscriber);\n break;\n }\n case 'detected_labels': {\n await this.getDetectedLabels(request, ds, subscriber);\n break;\n }\n case 'detected_fields': {\n await this.getDetectedFields(request, ds, subscriber);\n break;\n }\n case 'labels': {\n await this.getLabels(request, ds, subscriber);\n break;\n }\n default: {\n this.getData(request, ds, subscriber);\n break;\n }\n }\n });\n });\n }\n\n private getData(request: SceneDataQueryRequest, ds: LokiDatasource, subscriber: Subscriber) {\n const shardingEnabled = config.featureToggles.exploreLogsShardSplitting;\n\n const updatedRequest = {\n ...request,\n targets: ds.interpolateVariablesInQueries(request.targets, request.scopedVars).map((target) => ({\n ...target,\n resource: undefined,\n expr: sanitizeStreamSelector(target.expr),\n })),\n };\n\n // Query the datasource and return either observable or promise\n const dsResponse =\n requestSupportsSharding(updatedRequest) === false || !shardingEnabled\n ? ds.query(updatedRequest)\n : runShardSplitQuery(ds, updatedRequest);\n dsResponse.subscribe(subscriber);\n\n return subscriber;\n }\n\n private async getPatterns(\n request: DataQueryRequest,\n ds: LokiDatasource,\n subscriber: Subscriber\n ) {\n const targets = request.targets.filter((target) => {\n return target.resource === 'patterns';\n });\n\n if (targets.length !== 1) {\n throw new Error('Patterns query can only have a single target!');\n }\n const { interpolatedTarget, expression } = this.interpolate(ds, targets, request);\n subscriber.next({ data: [], state: LoadingState.Loading });\n\n try {\n const dsResponse = ds.getResource(\n 'patterns',\n {\n query: expression,\n start: request.range.from.utc().toISOString(),\n end: request.range.to.utc().toISOString(),\n step: request.interval,\n },\n {\n requestId: request.requestId ?? 'patterns',\n headers: {\n 'X-Query-Tags': `Source=${PLUGIN_ID}`,\n },\n }\n );\n const response: PatternsResponse = await dsResponse;\n const lokiPatterns = response?.data;\n\n let maxValue = -Infinity;\n let minValue = 0;\n\n const frames: DataFrame[] =\n lokiPatterns?.map((pattern: LokiPattern) => {\n const timeValues: number[] = [];\n const countValues: number[] = [];\n let sum = 0;\n pattern.samples.forEach(([time, count]) => {\n timeValues.push(time * 1000);\n countValues.push(count);\n if (count > maxValue) {\n maxValue = count;\n }\n if (count < minValue) {\n minValue = count;\n }\n if (count > maxValue) {\n maxValue = count;\n }\n if (count < minValue) {\n minValue = count;\n }\n sum += count;\n });\n return createDataFrame({\n refId: interpolatedTarget.refId,\n name: pattern.pattern,\n fields: [\n {\n name: 'time',\n type: FieldType.time,\n values: timeValues,\n config: {},\n },\n {\n name: pattern.pattern,\n type: FieldType.number,\n values: countValues,\n config: {},\n },\n ],\n meta: {\n preferredVisualisationType: 'graph',\n custom: {\n sum,\n },\n },\n });\n }) ?? [];\n\n frames.sort((a, b) => (b.meta?.custom?.sum as number) - (a.meta?.custom?.sum as number));\n subscriber.next({ data: frames, state: LoadingState.Done });\n } catch (e) {\n subscriber.next({ data: [], state: LoadingState.Error });\n }\n\n return subscriber;\n }\n\n private interpolate(\n ds: LokiDatasource,\n targets: Array,\n request: DataQueryRequest\n ) {\n const targetsInterpolated = ds.interpolateVariablesInQueries(targets, request.scopedVars);\n if (!targetsInterpolated.length) {\n throw new Error('Datasource failed to interpolate query!');\n }\n const interpolatedTarget = targetsInterpolated[0];\n const expression = sanitizeStreamSelector(interpolatedTarget.expr);\n return { interpolatedTarget, expression };\n }\n\n private async getDetectedLabels(\n request: DataQueryRequest,\n ds: LokiDatasource,\n subscriber: Subscriber\n ) {\n const targets = request.targets.filter((target) => {\n return target.resource === 'detected_labels';\n });\n\n if (targets.length !== 1) {\n throw new Error('Detected labels query can only have a single target!');\n }\n\n let { interpolatedTarget, expression } = this.interpolate(ds, targets, request);\n\n // Detected_labels is a bit different then other queries that interpolate the labels variable, it can be empty, but if it is empty it must be completely empty or we'll get the \"queries require at least one regexp or equality\" error from Loki\n if (expression === `{}`) {\n expression = '';\n }\n\n subscriber.next({ data: [], state: LoadingState.Loading });\n\n try {\n const response = await ds.getResource(\n 'detected_labels',\n {\n query: expression,\n start: request.range.from.utc().toISOString(),\n end: request.range.to.utc().toISOString(),\n },\n {\n requestId: request.requestId ?? 'detected_labels',\n headers: {\n 'X-Query-Tags': `Source=${PLUGIN_ID}`,\n },\n }\n );\n\n const labels = response.detectedLabels\n ?.filter((label) => !LABELS_TO_REMOVE.includes(label.label))\n ?.sort((a, b) => sortLabelsByCardinality(a, b));\n\n const detectedLabelFields: Array> = labels?.map((label) => {\n return {\n name: label.label,\n values: [label.cardinality],\n };\n });\n\n const dataFrame = createDataFrame({\n refId: interpolatedTarget.refId,\n fields: detectedLabelFields ?? [],\n });\n\n subscriber.next({ data: [dataFrame], state: LoadingState.Done });\n } catch (e) {\n subscriber.next({ data: [], state: LoadingState.Error });\n }\n\n return subscriber;\n }\n\n private async getDetectedFields(\n request: DataQueryRequest,\n ds: LokiDatasource,\n subscriber: Subscriber\n ) {\n const targets = request.targets.filter((target) => {\n return target.resource === 'detected_fields';\n });\n\n if (targets.length !== 1) {\n throw new Error('Detected fields query can only have a single target!');\n }\n\n subscriber.next({ data: [], state: LoadingState.Loading });\n\n const { interpolatedTarget, expression } = this.interpolate(ds, targets, request);\n\n try {\n const response = await ds.getResource(\n 'detected_fields',\n {\n query: expression,\n start: request.range.from.utc().toISOString(),\n end: request.range.to.utc().toISOString(),\n },\n {\n requestId: request.requestId ?? 'detected_fields',\n headers: {\n 'X-Query-Tags': `Source=${PLUGIN_ID}`,\n },\n }\n );\n\n const nameField: Field = { name: DETECTED_FIELDS_NAME_FIELD, type: FieldType.string, values: [], config: {} };\n const cardinalityField: Field = {\n name: DETECTED_FIELDS_CARDINALITY_NAME,\n type: FieldType.number,\n values: [],\n config: {},\n };\n const parserField: Field = { name: DETECTED_FIELDS_PARSER_NAME, type: FieldType.string, values: [], config: {} };\n const typeField: Field = { name: DETECTED_FIELDS_TYPE_NAME, type: FieldType.string, values: [], config: {} };\n\n response.fields?.forEach((field) => {\n if (!FIELDS_TO_REMOVE.includes(field.label)) {\n nameField.values.push(field.label);\n cardinalityField.values.push(field.cardinality);\n parserField.values.push(field.parsers?.length ? field.parsers.join(', ') : 'structuredMetadata');\n typeField.values.push(field.type);\n }\n });\n\n const dataFrame = createDataFrame({\n refId: interpolatedTarget.refId,\n fields: [nameField, cardinalityField, parserField, typeField],\n });\n\n subscriber.next({ data: [dataFrame], state: LoadingState.Done });\n } catch (e) {\n logger.error(e, { msg: 'Detected fields error' });\n subscriber.next({ data: [], state: LoadingState.Error });\n }\n\n return subscriber;\n }\n\n //@todo doesn't work with multiple queries\n private async getVolume(\n request: DataQueryRequest,\n ds: LokiDatasource,\n subscriber: Subscriber\n ) {\n if (request.targets.length !== 1) {\n throw new Error('Volume query can only have a single target!');\n }\n\n const target = request.targets[0];\n const primaryLabel = target.primaryLabel;\n if (!primaryLabel) {\n throw new Error('Primary label is required for volume queries!');\n }\n\n const targetsInterpolated = ds.interpolateVariablesInQueries([target], request.scopedVars);\n const expression = sanitizeStreamSelector(targetsInterpolated[0].expr.replace('.*.*', '.+'));\n\n subscriber.next({ data: [], state: LoadingState.Loading });\n\n try {\n const volumeResponse: IndexVolumeResponse = await ds.getResource(\n 'index/volume',\n {\n query: expression,\n start: request.range.from.utc().toISOString(),\n end: request.range.to.utc().toISOString(),\n limit: 5000,\n },\n {\n requestId: request.requestId ?? 'volume',\n headers: {\n 'X-Query-Tags': `Source=${PLUGIN_ID}`,\n },\n }\n );\n volumeResponse?.data.result.sort((lhs: VolumeResult, rhs: VolumeResult) => {\n const lVolumeCount: VolumeCount = lhs.value[1];\n const rVolumeCount: VolumeCount = rhs.value[1];\n return Number(rVolumeCount) - Number(lVolumeCount);\n });\n\n // Scenes will only emit dataframes from the SceneQueryRunner, so for now we need to convert the API response to a dataframe\n const df = createDataFrame({\n fields: [\n {\n // @todo rename\n name: SERVICE_NAME,\n values: volumeResponse?.data.result?.map((r) => {\n return r.metric[primaryLabel];\n }),\n },\n { name: 'volume', values: volumeResponse?.data.result?.map((r) => Number(r.value[1])) },\n ],\n });\n\n subscriber.next({ data: [df] });\n } catch (e) {\n logger.error(e);\n subscriber.next({ data: [], state: LoadingState.Error });\n }\n\n subscriber.complete();\n\n return subscriber;\n }\n\n private async getLabels(\n request: DataQueryRequest,\n ds: LokiDatasource,\n subscriber: Subscriber\n ) {\n if (request.targets.length !== 1) {\n throw new Error('Volume query can only have a single target!');\n }\n\n try {\n const labelsResponse: LabelsResponse = await ds.getResource(\n 'labels',\n {\n start: request.range.from.utc().toISOString(),\n end: request.range.to.utc().toISOString(),\n },\n {\n requestId: request.requestId ?? 'labels',\n headers: {\n 'X-Query-Tags': `Source=${PLUGIN_ID}`,\n },\n }\n );\n\n // Scenes will only emit dataframes from the SceneQueryRunner, so for now we need to convert the API response to a dataframe\n const df = createDataFrame({\n fields: [{ name: 'labels', values: labelsResponse?.data }],\n });\n subscriber.next({ data: [df], state: LoadingState.Done });\n } catch (e) {\n subscriber.next({ data: [], state: LoadingState.Error });\n }\n\n subscriber.complete();\n\n return subscriber;\n }\n\n testDatasource(): Promise {\n return Promise.resolve({ status: 'success', message: 'Data source is working', title: 'Success' });\n }\n}\n\nfunction init() {\n sceneUtils.registerRuntimeDataSource({\n dataSource: new WrappedLokiDatasource('wrapped-loki-ds', WRAPPED_LOKI_DS_UID),\n });\n}\n\nexport default init;\n","import {\n DETECTED_FIELD_AND_METADATA_VALUES_EXPR,\n DETECTED_LEVELS_VALUES_EXPR,\n JSON_FORMAT_EXPR,\n LEVEL_VARIABLE_VALUE,\n LOGS_FORMAT_EXPR,\n MIXED_FORMAT_EXPR,\n VAR_FIELDS_AND_METADATA,\n VAR_FIELDS_EXPR,\n VAR_LABELS_EXPR,\n VAR_LEVELS,\n VAR_LINE_FILTERS_EXPR,\n VAR_METADATA_EXPR,\n VAR_PATTERNS_EXPR,\n} from './variables';\nimport { SceneObject } from '@grafana/scenes';\nimport { getParserFromFieldsFilters } from './fields';\nimport { getFieldsVariable } from './variableGetters';\nimport { UIVariableFilterType } from '../Components/ServiceScene/Breakdowns/AddToFiltersButton';\nimport { logger } from './logger';\n\n/**\n * Crafts count over time query that excludes empty values for stream selector name\n * Will only add parsers if there are filters that require them.\n * @param sceneRef\n * @param streamSelectorName - the name of the stream selector we are aggregating by\n * @param excludeEmpty - if true, the query will exclude empty values for the given streamSelectorName\n */\nexport function getTimeSeriesExpr(sceneRef: SceneObject, streamSelectorName: string, excludeEmpty = true): string {\n const fieldsVariable = getFieldsVariable(sceneRef);\n\n let metadataExpressionToAdd = '';\n if (excludeEmpty) {\n // `LEVEL_VARIABLE_VALUE` is a special case where we don't want to add this to the stream selector\n if (streamSelectorName === LEVEL_VARIABLE_VALUE) {\n metadataExpressionToAdd = `| ${LEVEL_VARIABLE_VALUE} != \"\"`;\n }\n }\n\n const fieldFilters = fieldsVariable.state.filters;\n const parser = getParserFromFieldsFilters(fieldsVariable);\n\n // if we have fields, we also need to add parsers\n if (fieldFilters.length) {\n if (parser === 'mixed') {\n return `sum(count_over_time({${VAR_LABELS_EXPR}} ${metadataExpressionToAdd} ${VAR_METADATA_EXPR} ${VAR_PATTERNS_EXPR} ${VAR_LINE_FILTERS_EXPR} ${MIXED_FORMAT_EXPR} ${VAR_FIELDS_EXPR} [$__auto])) by (${streamSelectorName})`;\n }\n if (parser === 'json') {\n return `sum(count_over_time({${VAR_LABELS_EXPR}} ${metadataExpressionToAdd} ${VAR_METADATA_EXPR} ${VAR_PATTERNS_EXPR} ${VAR_LINE_FILTERS_EXPR} ${JSON_FORMAT_EXPR} ${VAR_FIELDS_EXPR} [$__auto])) by (${streamSelectorName})`;\n }\n if (parser === 'logfmt') {\n return `sum(count_over_time({${VAR_LABELS_EXPR}} ${metadataExpressionToAdd} ${VAR_METADATA_EXPR} ${VAR_PATTERNS_EXPR} ${VAR_LINE_FILTERS_EXPR} ${LOGS_FORMAT_EXPR} ${VAR_FIELDS_EXPR} [$__auto])) by (${streamSelectorName})`;\n }\n }\n return `sum(count_over_time({${VAR_LABELS_EXPR}} ${metadataExpressionToAdd} ${VAR_METADATA_EXPR} ${VAR_PATTERNS_EXPR} ${VAR_LINE_FILTERS_EXPR} ${VAR_FIELDS_EXPR} [$__auto])) by (${streamSelectorName})`;\n}\n\n/**\n * Get expressions for UI variables\n * @param variableType\n */\nexport function getFieldsTagValuesExpression(variableType: UIVariableFilterType) {\n switch (variableType) {\n case VAR_LEVELS:\n return DETECTED_LEVELS_VALUES_EXPR;\n case VAR_FIELDS_AND_METADATA:\n return DETECTED_FIELD_AND_METADATA_VALUES_EXPR;\n default:\n const error = new Error(`Unknown variable type: ${variableType}`);\n logger.error(error, {\n variableType,\n msg: `getFieldsTagValuesExpression: Unknown variable type: ${variableType}`,\n });\n throw error;\n }\n}\n","import { sceneGraph, SceneObject } from '@grafana/scenes';\nimport { IndexScene } from '../Components/IndexScene/IndexScene';\nimport { FavoriteServiceHeaderActionScene } from '../Components/ServiceSelectionScene/FavoriteServiceHeaderActionScene';\nimport { ServiceSelectionScene } from '../Components/ServiceSelectionScene/ServiceSelectionScene';\nimport { getDataSourceVariable } from './variableGetters';\nimport { addToFavoriteLabelValueInStorage, removeFromFavoritesInStorage } from './store';\n\nexport function rerenderFavorites(sceneRef: SceneObject) {\n // Find all FavoriteServiceHeaderActionScene and re-render\n const indexScene = sceneGraph.getAncestor(sceneRef, IndexScene);\n const favoriteServiceHeaderActionScene = sceneGraph.findAllObjects(\n indexScene,\n (o) => o instanceof FavoriteServiceHeaderActionScene\n );\n favoriteServiceHeaderActionScene.forEach((s) => s.forceRender());\n\n // Find the ServiceFieldSelector's parent (currently service selection scene) and force re-render so dropdown has correct order\n // @todo move ServiceFieldSelector to new scene\n const serviceSelectionScene = sceneGraph.findDescendents(indexScene, ServiceSelectionScene);\n serviceSelectionScene.forEach((s) => s.forceRender());\n}\n\nexport function addToFavorites(labelName: string, labelValue: string, sceneRef: SceneObject) {\n const ds = getDataSourceVariable(sceneRef).getValue();\n addToFavoriteLabelValueInStorage(ds, labelName, labelValue);\n rerenderFavorites(sceneRef);\n}\n\nexport function removeFromFavorites(labelName: string, labelValue: string, sceneRef: SceneObject) {\n const ds = getDataSourceVariable(sceneRef).getValue();\n removeFromFavoritesInStorage(ds, labelName, labelValue);\n rerenderFavorites(sceneRef);\n}\n","import { DataFrame, Field, ReducerID } from '@grafana/data';\nimport { DrawStyle, StackingMode } from '@grafana/ui';\nimport {\n AdHocFiltersVariable,\n PanelBuilders,\n SceneCSSGridItem,\n SceneDataTransformer,\n SceneObject,\n} from '@grafana/scenes';\nimport { AddToFiltersButton, InterpolatedFilterType } from 'Components/ServiceScene/Breakdowns/AddToFiltersButton';\nimport {\n DetectedFieldType,\n LEVEL_VARIABLE_VALUE,\n LogsQueryOptions,\n ParserType,\n VAR_FIELDS,\n VAR_LABELS,\n VAR_LEVELS,\n VAR_METADATA,\n} from './variables';\nimport { setLevelColorOverrides } from './panel';\nimport { map, Observable } from 'rxjs';\nimport { SortBy, SortByScene } from '../Components/ServiceScene/Breakdowns/SortByScene';\nimport { getDetectedFieldsFrame } from '../Components/ServiceScene/ServiceScene';\nimport { getLogsStreamSelector, getValueFromFieldsFilter } from './variableGetters';\nimport { logger } from './logger';\nimport { PanelMenu } from '../Components/Panels/PanelMenu';\nimport { getLabelTypeFromFrame } from './lokiQuery';\nimport { LabelType } from './fieldsTypes';\n\nexport type DetectedLabel = {\n label: string;\n cardinality: number;\n};\n\nexport type DetectedLabelsResponse = {\n detectedLabels: DetectedLabel[];\n};\n\nexport type DetectedField = {\n label: string;\n cardinality: number;\n type: string;\n parsers: string[] | null;\n};\n\nexport type DetectedFieldsResponse = {\n fields: DetectedField[];\n};\n\nconst getReducerId = (sortBy: SortBy) => {\n if (sortBy) {\n const values: string[] = Object.values(ReducerID);\n if (values.includes(sortBy)) {\n return sortBy;\n }\n }\n return undefined;\n};\n\n/**\n * Extracts the ExtractedFieldsType from the string returned on the detected_fields api parser field value\n * @param parserString\n */\nexport function extractParserFromString(parserString?: string): ParserType {\n switch (parserString) {\n case 'json':\n return 'json';\n case 'logfmt':\n return 'logfmt';\n case '': // Structured metadata is empty\n return 'structuredMetadata';\n case 'structuredMetadata': // Structured metadata is empty\n return 'structuredMetadata';\n default: // if we get a parser with multiple\n return 'mixed';\n }\n}\n\nexport function extractFieldTypeFromString(fieldString?: string): DetectedFieldType {\n switch (fieldString) {\n case 'int':\n case 'float':\n case 'duration':\n case 'boolean':\n case 'bytes':\n return fieldString;\n default:\n return 'string';\n }\n}\n\nexport function extractParserFromArray(parsers?: string[]): ParserType {\n const parsersSet = new Set(parsers?.map((v) => v.toString()) ?? []);\n\n // Structured metadata doesn't change the parser we use, so remove it\n parsersSet.delete('structuredMetadata');\n\n // get unique values\n const parsersArray = Array.from(parsersSet);\n\n if (parsersArray.length === 1) {\n return extractParserFromString(parsersArray[0]);\n }\n\n // If the set size is zero, we only had structured metadata detected as a parser\n if (parsersSet.size === 0) {\n return 'structuredMetadata';\n }\n\n // Otherwise if there was more then one value, return mixed parser\n return 'mixed';\n}\n\nexport function getParserForField(fieldName: string, sceneRef: SceneObject): ParserType | undefined {\n const detectedFieldsFrame = getDetectedFieldsFrame(sceneRef);\n const parserField: Field | undefined = detectedFieldsFrame?.fields[2];\n const namesField: Field | undefined = detectedFieldsFrame?.fields[0];\n\n const index = namesField?.values.indexOf(fieldName);\n const parser =\n index !== undefined && index !== -1 ? extractParserFromString(parserField?.values?.[index] ?? '') : undefined;\n\n if (parser === undefined) {\n logger.warn('missing parser, using mixed format for', { fieldName });\n return 'mixed';\n }\n return parser;\n}\n\nexport function getFilterBreakdownValueScene(\n getTitle: (df: DataFrame) => string,\n style: DrawStyle,\n variableName: typeof VAR_FIELDS | typeof VAR_LABELS | typeof VAR_METADATA,\n sortByScene: SortByScene,\n labelKey?: string\n) {\n return (frame: DataFrame, frameIndex: number) => {\n const reducerID = getReducerId(sortByScene.state.sortBy);\n const panel = PanelBuilders.timeseries()\n .setOption('legend', { showLegend: false })\n .setCustomFieldConfig('fillOpacity', 9)\n .setTitle(getTitle(frame))\n // 11.5\n // .setShowMenuAlways(true)\n .setData(\n new SceneDataTransformer({\n transformations: [() => selectFrameTransformation(frame)],\n })\n )\n .setOverrides(setLevelColorOverrides)\n .setMenu(new PanelMenu({ investigationOptions: { frame, fieldName: getTitle(frame), labelName: labelKey } }))\n .setHeaderActions([\n new AddToFiltersButton({ frame, variableName, hideExclude: labelKey === LEVEL_VARIABLE_VALUE }),\n ]);\n\n if (style === DrawStyle.Bars) {\n panel\n .setCustomFieldConfig('stacking', { mode: StackingMode.Normal })\n .setCustomFieldConfig('fillOpacity', 100)\n .setCustomFieldConfig('lineWidth', 0)\n .setCustomFieldConfig('pointSize', 0)\n .setOverrides(setLevelColorOverrides)\n .setCustomFieldConfig('drawStyle', DrawStyle.Bars);\n }\n\n if (reducerID) {\n panel.setOption('legend', {\n showLegend: true,\n calcs: [reducerID],\n });\n // These will only have a single series, no need to show the title twice\n panel.setDisplayName(' ');\n }\n\n return new SceneCSSGridItem({\n body: panel.build(),\n });\n };\n}\n\nexport function selectFrameTransformation(frame: DataFrame) {\n return (source: Observable) => {\n return source.pipe(\n map(() => {\n return [frame];\n })\n );\n };\n}\n\n/**\n * Returns the variable to use when adding filters in a panel.\n * @param frame\n * @param key\n * @param sceneRef\n */\nexport function getVariableForLabel(\n frame: DataFrame | undefined,\n key: string,\n sceneRef: SceneObject\n): InterpolatedFilterType {\n const labelType = frame ? getLabelTypeFromFrame(key, frame) : LabelType.Parsed;\n\n if (labelType) {\n // Use the labelType from the dataframe\n return getFilterTypeFromLabelType(labelType, key);\n }\n\n // If the dataframe doesn't have labelTypes, check if the detected_fields response returned a parser.\n const parserForThisField = getParserForField(key, sceneRef);\n if (parserForThisField === 'structuredMetadata') {\n return VAR_METADATA;\n }\n\n logger.warn('unable to determine label variable, falling back to parsed field', {\n key,\n parserForThisField: parserForThisField ?? '',\n });\n\n return VAR_FIELDS;\n}\n\nexport function getFilterTypeFromLabelType(type: LabelType, key: string): InterpolatedFilterType {\n switch (type) {\n case LabelType.Indexed: {\n return VAR_LABELS;\n }\n case LabelType.Parsed: {\n return VAR_FIELDS;\n }\n case LabelType.StructuredMetadata: {\n // Structured metadata is either a special level variable, or a field variable\n if (key === LEVEL_VARIABLE_VALUE) {\n return VAR_LEVELS;\n }\n return VAR_METADATA;\n }\n default: {\n const err = new Error(`Invalid label type for ${key}`);\n logger.error(err, { type, msg: `Invalid label type for ${key}` });\n throw err;\n }\n }\n}\n\nexport function getParserFromFieldsFilters(fields: AdHocFiltersVariable): ParserType {\n const parsers = fields.state.filters.map((filter) => {\n return getValueFromFieldsFilter(filter).parser;\n });\n\n return extractParserFromArray(parsers);\n}\n\nexport function isAvgField(fieldType: DetectedFieldType | undefined) {\n return fieldType === 'duration' || fieldType === 'bytes' || fieldType === 'float';\n}\n\nexport function buildFieldsQuery(optionValue: string, options: LogsQueryOptions) {\n if (options.fieldType && ['bytes', 'duration'].includes(options.fieldType)) {\n return (\n `avg_over_time(${getLogsStreamSelector(options)} | unwrap ` +\n options.fieldType +\n `(${optionValue}) | __error__=\"\" [$__auto]) by ()`\n );\n } else if (options.fieldType && options.fieldType === 'float') {\n return (\n `avg_over_time(${getLogsStreamSelector(options)} | unwrap ` + optionValue + ` | __error__=\"\" [$__auto]) by ()`\n );\n } else {\n return `sum by (${optionValue}) (count_over_time(${getLogsStreamSelector(options)} [$__auto]))`;\n }\n}\n\n/**\n * Returns the DetectedFieldType if available for a specific label\n * @param optionValue\n * @param detectedFieldsFrame\n */\nexport function getDetectedFieldType(optionValue: string, detectedFieldsFrame?: DataFrame) {\n const namesField: Field | undefined = detectedFieldsFrame?.fields[0];\n const typesField: Field | undefined = detectedFieldsFrame?.fields[3];\n const index = namesField?.values.indexOf(optionValue);\n return index !== undefined && index !== -1 ? extractFieldTypeFromString(typesField?.values?.[index]) : undefined;\n}\n\nexport function buildFieldsQueryString(\n optionValue: string,\n fieldsVariable: AdHocFiltersVariable,\n detectedFieldsFrame?: DataFrame\n) {\n const parserField: Field | undefined = detectedFieldsFrame?.fields[2];\n const namesField: Field | undefined = detectedFieldsFrame?.fields[0];\n const typesField: Field | undefined = detectedFieldsFrame?.fields[3];\n const index = namesField?.values.indexOf(optionValue);\n\n const parserForThisField =\n index !== undefined && index !== -1 ? extractParserFromString(parserField?.values?.[index]) : 'mixed';\n\n const optionType =\n index !== undefined && index !== -1 ? extractFieldTypeFromString(typesField?.values?.[index]) : undefined;\n\n // Get the parser from the json payload of each filter\n const parsers = fieldsVariable.state.filters.map((filter) => {\n const index = namesField?.values.indexOf(filter.key);\n const parserFromFilterValue = getValueFromFieldsFilter(filter);\n if (parserFromFilterValue.parser) {\n return parserFromFilterValue.parser;\n }\n\n // Then fallback to check the latest response\n const parser =\n index !== undefined && index !== -1\n ? extractParserFromString(parserField?.values?.[index] ?? 'mixed')\n : undefined;\n return parser ?? 'mixed';\n });\n\n const parser = extractParserFromArray([...parsers, parserForThisField]);\n\n let fieldExpressionToAdd = '';\n let structuredMetadataToAdd = '';\n\n if (parserForThisField === 'structuredMetadata') {\n structuredMetadataToAdd = `| ${optionValue}!=\"\"`;\n // Structured metadata\n } else {\n fieldExpressionToAdd = `| ${optionValue}!=\"\"`;\n }\n\n // is option structured metadata\n const options: LogsQueryOptions = {\n structuredMetadataToAdd,\n fieldExpressionToAdd,\n parser: parser,\n fieldType: optionType,\n };\n\n return buildFieldsQuery(optionValue, options);\n}\n\n// copied from /grafana/grafana/public/app/plugins/datasource/loki/datasource.ts:1204\nexport function lokiRegularEscape(value: T) {\n if (typeof value === 'string') {\n return value.replace(/'/g, \"\\\\\\\\'\");\n }\n return value;\n}\n","import { DetectedLabel } from './fields';\nimport {\n ALL_VARIABLE_VALUE,\n isAdHocFilterValueUserInput,\n LEVEL_VARIABLE_VALUE,\n stripAdHocFilterUserInputPrefix,\n} from './variables';\nimport { VariableValueOption } from '@grafana/scenes';\n\n// We want to show labels with cardinality 1 at the end of the list because they are less useful\n// And then we want to sort by cardinality - from lowest to highest\nexport function sortLabelsByCardinality(a: DetectedLabel, b: DetectedLabel) {\n if (a.cardinality === 1) {\n return 1;\n }\n if (b.cardinality === 1) {\n return -1;\n }\n return a.cardinality - b.cardinality;\n}\n\n// Creates label options by taking all labels and if LEVEL_VARIABLE_VALUE is not in the list, it is added at the beginning.\n// It also adds 'All' option at the beginning\nexport function getLabelOptions(labels: string[]) {\n const options = [...labels];\n if (!labels.includes(LEVEL_VARIABLE_VALUE)) {\n options.unshift(LEVEL_VARIABLE_VALUE);\n }\n\n const labelOptions: VariableValueOption[] = options.map((label) => ({\n label,\n value: String(label),\n }));\n\n return [{ label: 'All', value: ALL_VARIABLE_VALUE }, ...labelOptions];\n}\nexport const LEVEL_INDEX_NAME = 'level';\nexport const FIELDS_TO_REMOVE = ['level_extracted', LEVEL_VARIABLE_VALUE, LEVEL_INDEX_NAME];\n\nexport const LABELS_TO_REMOVE = ['__aggregated_metric__', '__stream_shard__'];\nexport function getFieldOptions(labels: string[]) {\n const options = [...labels];\n const labelOptions: VariableValueOption[] = options.map((label) => ({\n label,\n value: String(label),\n }));\n\n return [{ label: 'All', value: ALL_VARIABLE_VALUE }, ...labelOptions];\n}\n\n// Since \"meta\" is not saved in the URL state, it's ephemeral and can only be used for wip keys, but we can differentiate fields from metadata if the value is not encoded (and therefore different then the label)\nexport function isFilterMetadata(filter: { value: string; valueLabels?: string[] }) {\n const value = isAdHocFilterValueUserInput(filter.value)\n ? stripAdHocFilterUserInputPrefix(filter.value)\n : filter.value;\n return value === filter.valueLabels?.[0];\n}\n","import { AdHocFiltersVariable, SceneObject } from '@grafana/scenes';\nimport { LEVEL_VARIABLE_VALUE, VAR_FIELDS, VAR_LABELS, VAR_METADATA } from './variables';\nimport { getParserForField, getParserFromFieldsFilters } from './fields';\nimport { buildDataQuery } from './query';\nimport {\n getFieldsAndMetadataVariable,\n getFieldsVariable,\n getLabelsVariable,\n getLogsStreamSelector,\n getMetadataVariable,\n getValueFromFieldsFilter,\n} from './variableGetters';\nimport { addToFilters, FilterType } from '../Components/ServiceScene/Breakdowns/AddToFiltersButton';\nimport { isOperatorExclusive, isOperatorInclusive } from './operatorHelpers';\nimport { getLabelValueFromDataFrame } from './levels';\nimport { DataFrame } from '@grafana/data';\n\nexport const LABEL_BREAKDOWN_GRID_TEMPLATE_COLUMNS = 'repeat(auto-fit, minmax(400px, 1fr))';\n\nexport function buildLabelsQuery(sceneRef: SceneObject, optionValue: string, optionName: string) {\n let labelExpressionToAdd = '';\n let structuredMetadataToAdd = '';\n\n const fields = getFieldsVariable(sceneRef);\n const parser = getParserFromFieldsFilters(fields);\n\n if (optionName && optionName !== LEVEL_VARIABLE_VALUE) {\n labelExpressionToAdd = ` ,${optionName} != \"\"`;\n } else if (optionName && optionName === LEVEL_VARIABLE_VALUE) {\n structuredMetadataToAdd = ` | ${optionName} != \"\"`;\n }\n\n return buildDataQuery(\n `sum(count_over_time(${getLogsStreamSelector({\n labelExpressionToAdd,\n structuredMetadataToAdd,\n parser,\n })} [$__auto])) by (${optionValue})`,\n { legendFormat: `{{${optionValue}}}`, refId: 'LABEL_BREAKDOWN_VALUES' }\n );\n}\n\nexport function getLabelsFromSeries(series: DataFrame[]): string[] {\n const labels = series.map((dataFrame) => getLabelValueFromDataFrame(dataFrame));\n return labels.flatMap((f) => (f ? [f] : []));\n}\n\nexport function toggleFieldFromFilter(key: string, value: string, sceneRef: SceneObject): FilterType {\n const fieldsAndMetadataVariable = getFieldsAndMetadataVariable(sceneRef);\n const empty = fieldsAndMetadataVariable.state.filters.length === 0;\n const detectedFieldType = getParserForField(key, sceneRef);\n const isMetadata = detectedFieldType === 'structuredMetadata';\n\n const filterExists = fieldsAndMetadataVariable.state.filters.find((filter) => {\n if (isMetadata) {\n return isOperatorInclusive(filter.operator) && filter.value === value;\n }\n return isOperatorInclusive(filter.operator) && getValueFromFieldsFilter(filter).value === value;\n });\n\n if (empty || !filterExists) {\n addToFilters(key, value, 'include', sceneRef, isMetadata ? VAR_METADATA : VAR_FIELDS);\n return 'include';\n } else {\n addToFilters(key, value, 'toggle', sceneRef, isMetadata ? VAR_METADATA : VAR_FIELDS);\n return 'toggle';\n }\n}\n\nexport function toggleLabelFromFilter(key: string, value: string, sceneRef: SceneObject): FilterType {\n const labelsVariable = getLabelsVariable(sceneRef);\n const empty = labelsVariable.state.filters.length === 0;\n const filterExists = labelsVariable.state.filters.find(\n (filter) => filter.value === value && isOperatorInclusive(filter.operator)\n );\n\n if (empty || !filterExists) {\n addToFilters(key, value, 'include', sceneRef, VAR_LABELS);\n return 'include';\n } else {\n addToFilters(key, value, 'toggle', sceneRef, VAR_LABELS);\n return 'toggle';\n }\n}\n\nexport function getVisibleLabels(key: string, allLabels: string[], sceneRef: SceneObject) {\n const labelsVariable = getLabelsVariable(sceneRef);\n return getVisibleFilters(key, allLabels, labelsVariable);\n}\n\nexport function getVisibleFields(key: string, allLabels: string[], sceneRef: SceneObject) {\n const fieldsVariable = getFieldsVariable(sceneRef);\n return getVisibleFilters(key, allLabels, fieldsVariable);\n}\n\nexport function getVisibleMetadata(key: string, allLabels: string[], sceneRef: SceneObject) {\n const metadataVariable = getMetadataVariable(sceneRef);\n return getVisibleFilters(key, allLabels, metadataVariable);\n}\n\nexport function getVisibleFilters(key: string, allLabels: string[], variable: AdHocFiltersVariable) {\n const inclusiveFilters = variable.state.filters\n .filter((filter) => filter.key === key && isOperatorInclusive(filter.operator))\n .map((filter) => (variable.state.name === VAR_FIELDS ? getValueFromFieldsFilter(filter).value : filter.value));\n const exclusiveLabels = variable.state.filters\n .filter((filter) => filter.key === key && isOperatorExclusive(filter.operator))\n .map((filter) => (variable.state.name === VAR_FIELDS ? getValueFromFieldsFilter(filter).value : filter.value));\n\n return allLabels.filter((label) => {\n if (exclusiveLabels.includes(label)) {\n return false;\n }\n return inclusiveFilters.length === 0 || inclusiveFilters.includes(label);\n });\n}\n","import { DataFrame } from '@grafana/data';\nimport { SeriesVisibilityChangeMode } from '@grafana/ui';\nimport { LEVEL_VARIABLE_VALUE, VAR_LEVELS } from './variables';\nimport { SceneObject } from '@grafana/scenes';\nimport { addToFilters, FilterType } from 'Components/ServiceScene/Breakdowns/AddToFiltersButton';\nimport { getLevelsVariable } from './variableGetters';\n\nimport { isOperatorExclusive, isOperatorInclusive } from './operatorHelpers';\n\n/**\n * Given a set of `visibleLevels` in a panel, it returns a list of the new visible levels\n * after applying the visibility change in `mode`.\n */\nexport function toggleLevelVisibility(\n level: string,\n visibleLevels: string[] | undefined,\n mode: SeriesVisibilityChangeMode,\n allLevels: string[]\n) {\n if (mode === SeriesVisibilityChangeMode.ToggleSelection) {\n const levels = visibleLevels ?? [];\n if (levels.length === 1 && levels.includes(level)) {\n return [];\n }\n return [level];\n }\n /**\n * When the behavior is `AppendToSelection` and the filter is empty, we initialize it\n * with all levels because the user is excluding this level in their action.\n */\n let levels = !visibleLevels?.length ? allLevels : visibleLevels;\n if (levels.includes(level)) {\n return levels.filter((existingLevel) => existingLevel !== level);\n }\n\n return [...levels, level];\n}\n\nexport function getLevelLabelsFromSeries(series: DataFrame[]) {\n return series.map((dataFrame) => getLabelValueFromDataFrame(dataFrame) ?? 'logs');\n}\n\nexport function getLabelValueFromDataFrame(frame: DataFrame) {\n const labels = frame.fields[1]?.labels;\n\n if (!labels) {\n return null;\n }\n\n const keys = Object.keys(labels);\n if (keys.length === 0) {\n return null;\n }\n\n return labels[keys[0]];\n}\n\n/*\n * From the current state of the levels filter, return the level names that\n * the user wants to see.\n */\nexport function getVisibleLevels(allLevels: string[], sceneRef: SceneObject) {\n const levelsFilter = getLevelsVariable(sceneRef);\n const wantedLevels = levelsFilter.state.filters\n .filter((filter) => isOperatorInclusive(filter.operator))\n .map((filter) => filter.value.split('|').map(normalizeLevelName))\n .join('|');\n const unwantedLevels = levelsFilter.state.filters\n .filter((filter) => isOperatorExclusive(filter.operator))\n .map((filter) => filter.value.split('|').map(normalizeLevelName))\n .join('|');\n return allLevels.filter((level) => {\n if (unwantedLevels.includes(level)) {\n return false;\n }\n return wantedLevels.length === 0 || wantedLevels.includes(level);\n });\n}\n\nfunction normalizeLevelName(level: string) {\n if (level === '\"\"') {\n return 'logs';\n }\n return level;\n}\n\n/**\n * Toggle a level from the filter state.\n * If the filter is empty, it's added.\n * If the filter exists but it's different, it's replaced.\n * If the filter exists, it's removed.\n */\nexport function toggleLevelFromFilter(level: string, sceneRef: SceneObject): FilterType {\n const levelFilter = getLevelsVariable(sceneRef);\n const empty = levelFilter.state.filters.length === 0;\n const filterExists = levelFilter.state.filters.find(\n (filter) => filter.value === level && isOperatorInclusive(filter.operator)\n );\n\n if (level === 'logs') {\n level = '\"\"';\n }\n\n if (empty || !filterExists) {\n addToFilters(LEVEL_VARIABLE_VALUE, level, 'include', sceneRef, VAR_LEVELS);\n return 'include';\n } else {\n addToFilters(LEVEL_VARIABLE_VALUE, level, 'toggle', sceneRef, VAR_LEVELS);\n return 'toggle';\n }\n}\n","import {\n arrayToDataFrame,\n DataFrame,\n DataFrameType,\n DataTopic,\n Field,\n FieldCache,\n FieldType,\n FieldWithIndex,\n Labels,\n} from '@grafana/data';\n\n// these are like Labels, but their values can be\n// arbitrary structures, not just strings\nexport type LogFrameLabels = Record;\n\n// the attributes-access is a little awkward, but it's necessary\n// because there are multiple,very different dataFrame-representations.\nexport type LogsFrame = {\n timeField: FieldWithIndex;\n bodyField: FieldWithIndex;\n timeNanosecondField: FieldWithIndex | null;\n severityField: FieldWithIndex | null;\n idField: FieldWithIndex | null;\n getLogFrameLabels: () => LogFrameLabels[] | null; // may be slow, so we only do it when asked for it explicitly\n getLogFrameLabelsAsLabels: () => Labels[] | null; // temporarily exists to make the labels=>attributes migration simpler\n getLabelFieldName: () => string | null;\n extraFields: FieldWithIndex[];\n raw: DataFrame;\n};\n\nfunction getField(cache: FieldCache, name: string, fieldType: FieldType): FieldWithIndex | undefined {\n const field = cache.getFieldByName(name);\n if (field === undefined) {\n return undefined;\n }\n\n return field.type === fieldType ? field : undefined;\n}\n\nexport const DATAPLANE_TIMESTAMP_NAME = 'timestamp';\nexport const DATAPLANE_BODY_NAME = 'body';\nexport const DATAPLANE_SEVERITY_NAME = 'severity';\nexport const DATAPLANE_ID_NAME = 'id';\nexport const DATAPLANE_LABELS_NAME = 'labels';\n\nexport function logFrameLabelsToLabels(logFrameLabels: LogFrameLabels): Labels {\n const result: Labels = {};\n\n Object.entries(logFrameLabels).forEach(([k, v]) => {\n result[k] = typeof v === 'string' ? v : JSON.stringify(v);\n });\n\n return result;\n}\n\nexport function parseLogsFrame(frame: DataFrame): LogsFrame | null {\n if (frame.meta?.type === DataFrameType.LogLines) {\n return parseDataplaneLogsFrame(frame);\n } else {\n return parseLegacyLogsFrame(frame);\n }\n}\n\nexport function parseDataplaneLogsFrame(frame: DataFrame): LogsFrame | null {\n const cache = new FieldCache(frame);\n\n const timestampField = getField(cache, DATAPLANE_TIMESTAMP_NAME, FieldType.time);\n const bodyField = getField(cache, DATAPLANE_BODY_NAME, FieldType.string);\n\n // these two are mandatory\n if (timestampField === undefined || bodyField === undefined) {\n return null;\n }\n\n const severityField = getField(cache, DATAPLANE_SEVERITY_NAME, FieldType.string) ?? null;\n const idField = getField(cache, DATAPLANE_ID_NAME, FieldType.string) ?? null;\n const labelsField = getField(cache, DATAPLANE_LABELS_NAME, FieldType.other) ?? null;\n\n const labels = labelsField === null ? null : labelsField.values;\n\n const extraFields = cache.fields.filter(\n (_, i) =>\n i !== timestampField.index &&\n i !== bodyField.index &&\n i !== severityField?.index &&\n i !== idField?.index &&\n i !== labelsField?.index\n );\n\n return {\n raw: frame,\n timeField: timestampField,\n bodyField,\n severityField,\n idField,\n getLogFrameLabels: () => labels,\n timeNanosecondField: null,\n getLogFrameLabelsAsLabels: () => (labels !== null ? labels.map(logFrameLabelsToLabels) : null),\n getLabelFieldName: () => (labelsField !== null ? labelsField.name : null),\n extraFields,\n };\n}\n\n// Copied from https://github.com/grafana/grafana/blob/main/public/app/features/logs/legacyLogsFrame.ts\nexport function parseLegacyLogsFrame(frame: DataFrame): LogsFrame | null {\n const cache = new FieldCache(frame);\n const timeField = cache.getFirstFieldOfType(FieldType.time);\n const bodyField = cache.getFirstFieldOfType(FieldType.string);\n\n // these two are mandatory\n if (timeField === undefined || bodyField === undefined) {\n return null;\n }\n\n const timeNanosecondField = cache.getFieldByName('tsNs') ?? null;\n const severityField = cache.getFieldByName('level') ?? null;\n const idField = cache.getFieldByName('id') ?? null;\n\n // extracting the labels is done very differently for old-loki-style and simple-style\n // dataframes, so it's a little awkward to handle it,\n // we both need to on-demand extract the labels, and also get teh labelsField,\n // but only if the labelsField is used.\n const [labelsField, getL] = makeLabelsGetter(cache, bodyField, frame);\n\n const extraFields = cache.fields.filter(\n (_, i) =>\n i !== timeField.index &&\n i !== bodyField.index &&\n i !== timeNanosecondField?.index &&\n i !== severityField?.index &&\n i !== idField?.index &&\n i !== labelsField?.index\n );\n\n return {\n timeField,\n bodyField,\n timeNanosecondField,\n severityField,\n idField,\n getLogFrameLabels: getL,\n getLogFrameLabelsAsLabels: getL,\n getLabelFieldName: () => labelsField?.name ?? null,\n extraFields,\n raw: frame,\n };\n}\n\n// if the frame has \"labels\" field with type \"other\", adjust the behavior.\n// we also have to return the labels-field (if we used it),\n// to be able to remove it from the unused-fields, later.\nfunction makeLabelsGetter(\n cache: FieldCache,\n lineField: Field,\n frame: DataFrame\n): [FieldWithIndex | null, () => Labels[] | null] {\n // If we have labels field with type \"other\", use that\n const labelsField = cache.getFieldByName('labels');\n if (labelsField !== undefined && labelsField.type === FieldType.other) {\n const values = labelsField.values.map(logFrameLabelsToLabels);\n return [labelsField, () => values];\n } else {\n // Otherwise we use the labels on the line-field, and make an array with it\n return [null, () => makeLabelsArray(lineField, frame.length)];\n }\n}\n\n// take the labels from the line-field, and \"stretch\" it into an array\n// with the length of the frame (so there are the same labels for every row)\nfunction makeLabelsArray(lineField: Field, length: number): Labels[] | null {\n const lineLabels = lineField.labels;\n if (lineLabels !== undefined) {\n const result = new Array(length);\n result.fill(lineLabels);\n return result;\n } else {\n return null;\n }\n}\n\nexport function getTimeName(logsFrame?: LogsFrame) {\n return logsFrame?.timeField.name ?? DATAPLANE_TIMESTAMP_NAME;\n}\n\nexport function getBodyName(logsFrame?: LogsFrame | null): string {\n return logsFrame?.bodyField.name ?? DATAPLANE_BODY_NAME;\n}\n\nexport function getIdName(logsFrame?: LogsFrame): string {\n return logsFrame?.idField?.name ?? DATAPLANE_ID_NAME;\n}\n\nexport function getSeriesVisibleRange(series: DataFrame[]) {\n let start = 0;\n let end = 0;\n\n const timeField = series[0]?.fields.find((field) => field.type === FieldType.time);\n if (timeField) {\n const values = [...timeField.values].sort();\n const oldestFirst = values[0] < values[values.length - 1];\n start = oldestFirst ? values[0] : values[values.length - 1];\n end = oldestFirst ? values[values.length - 1] : values[0];\n }\n return { start, end };\n}\n\nexport const VISIBLE_RANGE_NAME = 'Visible range';\nexport function getVisibleRangeFrame(start: number, end: number) {\n const frame = arrayToDataFrame([\n {\n time: start,\n timeEnd: end,\n isRegion: true,\n text: 'Range from oldest to newest logs in display',\n color: 'rgba(58, 113, 255, 0.3)',\n },\n ]);\n frame.name = VISIBLE_RANGE_NAME;\n frame.meta = {\n dataTopic: DataTopic.Annotations,\n };\n\n return frame;\n}\n\nexport function isEmptyLogsResult(series: DataFrame[]) {\n return series.length === 0 || series[0].fields[0].values.length === 0;\n}\n","import { ServiceSceneCustomState } from '../Components/ServiceScene/ServiceScene';\n\nlet metadataService: MetadataService;\n\nexport function initializeMetadataService(): void {\n if (!metadataService) {\n metadataService = new MetadataService();\n }\n}\n\n/**\n * Singleton class for sharing state across drilldown routes with common parent scene\n */\nexport class MetadataService {\n private serviceSceneState: ServiceSceneCustomState | undefined = undefined;\n public getServiceSceneState() {\n return this.serviceSceneState;\n }\n\n public setPatternsCount(count: number) {\n if (!this.serviceSceneState) {\n this.serviceSceneState = {};\n }\n\n this.serviceSceneState.patternsCount = count;\n }\n\n public setLabelsCount(count: number) {\n if (!this.serviceSceneState) {\n this.serviceSceneState = {};\n }\n\n this.serviceSceneState.labelsCount = count;\n }\n\n public setFieldsCount(count: number) {\n if (!this.serviceSceneState) {\n this.serviceSceneState = {};\n }\n\n this.serviceSceneState.fieldsCount = count;\n }\n\n public setServiceSceneState(state: ServiceSceneCustomState) {\n this.serviceSceneState = {\n patternsCount: state.patternsCount,\n labelsCount: state.labelsCount,\n fieldsCount: state.fieldsCount,\n loading: state.loading,\n logsCount: state.logsCount,\n totalLogsCount: state.totalLogsCount,\n };\n }\n}\n\nexport function getMetadataService(): MetadataService {\n return metadataService;\n}\n","import { ServiceScene } from '../Components/ServiceScene/ServiceScene';\nimport { IndexScene } from '../Components/IndexScene/IndexScene';\nimport { ALL_VARIABLE_VALUE } from './variables';\nimport { getMetadataService } from './metadata';\nimport { locationService } from '@grafana/runtime';\nimport { buildServicesUrl, DRILLDOWN_URL_KEYS, PageSlugs, ROUTES, ValueSlugs } from './routing';\nimport { sceneGraph } from '@grafana/scenes';\nimport { UrlQueryMap, urlUtil } from '@grafana/data';\nimport { replaceSlash } from './extensions/links';\nimport { prefixRoute } from './plugin';\n\nlet previousRoute: string | undefined = undefined;\n\nfunction buildValueBreakdownUrl(label: string, newPath: ValueSlugs, labelValue: string, labelName = 'service') {\n if (label === ALL_VARIABLE_VALUE && newPath === ValueSlugs.label) {\n return prefixRoute(`${PageSlugs.explore}/${labelName}/${replaceSlash(labelValue)}/${PageSlugs.labels}`);\n } else if (label === ALL_VARIABLE_VALUE && newPath === ValueSlugs.field) {\n return prefixRoute(`${PageSlugs.explore}/${labelName}/${replaceSlash(labelValue)}/${PageSlugs.fields}`);\n } else {\n return prefixRoute(\n `${PageSlugs.explore}/${labelName}/${replaceSlash(labelValue)}/${newPath}/${replaceSlash(label)}`\n );\n }\n}\n\nexport function buildDrilldownPageUrl(path: PageSlugs | string, extraQueryParams?: UrlQueryMap): string {\n return urlUtil.renderUrl(path, buildDrilldownPageRoute(extraQueryParams));\n}\n\nexport function buildDrilldownPageRoute(extraQueryParams?: UrlQueryMap): UrlQueryMap {\n return {\n ...Object.entries(urlUtil.getUrlSearchParams()).reduce((acc, [key, value]) => {\n if (DRILLDOWN_URL_KEYS.includes(key)) {\n acc[key] = value;\n }\n\n return acc;\n }, {}),\n ...extraQueryParams,\n };\n}\n\nexport function getValueBreakdownLink(newPath: ValueSlugs, label: string, serviceScene: ServiceScene) {\n const indexScene = sceneGraph.getAncestor(serviceScene, IndexScene);\n const urlLabelName = indexScene.state.routeMatch?.params.labelName;\n const urlLabelValue = indexScene.state.routeMatch?.params.labelValue;\n\n if (urlLabelName && urlLabelValue) {\n let urlPath = buildValueBreakdownUrl(label, newPath, urlLabelValue, urlLabelName);\n const fullUrl = buildDrilldownPageUrl(urlPath);\n\n // If we're going to navigate, we need to share the state between this instantiation of the service scene\n if (serviceScene) {\n const metadataService = getMetadataService();\n metadataService.setServiceSceneState(serviceScene.state);\n }\n\n return fullUrl;\n }\n\n return '';\n}\n\n/**\n * Navigate to value breakdown url\n * @param newPath\n * @param label\n * @param serviceScene\n */\nexport function navigateToValueBreakdown(newPath: ValueSlugs, label: string, serviceScene: ServiceScene) {\n const link = getValueBreakdownLink(newPath, label, serviceScene);\n if (link) {\n pushUrlHandler(link);\n }\n}\n\n/**\n * The case for initial navigation from the service selection to the service index is a special case, as we don't yet have a serviceScene constructed to pull the selected service.\n * This function will route users to the initial (logs) page from the service selection view, which will populate the service scene state with the selected service string.\n * @param labelName\n * @param labelValue\n */\nexport function getDrillDownIndexLink(labelName: string, labelValue: string, labelFilters?: UrlQueryMap) {\n const breakdownUrl = buildDrilldownPageUrl(ROUTES.logs(labelValue, labelName), labelFilters);\n return breakdownUrl;\n}\n\nexport function getDrillDownTabLink(path: PageSlugs, serviceScene: ServiceScene, extraQueryParams?: UrlQueryMap) {\n const indexScene = sceneGraph.getAncestor(serviceScene, IndexScene);\n const urlLabelValue = indexScene.state.routeMatch?.params.labelValue;\n const urlLabelName = indexScene.state.routeMatch?.params.labelName;\n\n if (urlLabelValue) {\n const fullUrl = prefixRoute(`${PageSlugs.explore}/${urlLabelName}/${replaceSlash(urlLabelValue)}/${path}`);\n return buildDrilldownPageUrl(fullUrl, extraQueryParams);\n }\n return '';\n}\n\n/**\n * Navigates to the drilldown page specified by the path slug\n *\n * @param path\n * @param serviceScene\n * @param extraQueryParams\n */\nexport function navigateToDrilldownPage(path: PageSlugs, serviceScene: ServiceScene, extraQueryParams?: UrlQueryMap) {\n const drilldownLink = getDrillDownTabLink(path, serviceScene, extraQueryParams);\n\n if (drilldownLink) {\n // If we're going to navigate, we need to share the state between this instantiation of the service scene\n if (serviceScene) {\n const metadataService = getMetadataService();\n metadataService.setServiceSceneState(serviceScene.state);\n }\n\n pushUrlHandler(drilldownLink);\n return;\n }\n}\n\nexport function pushUrlHandler(newUrl: string) {\n previousRoute = newUrl;\n locationService.push(newUrl);\n}\n\nexport function addCurrentUrlToHistory() {\n // Add the current url to browser history before the state is changed so the user can revert their change.\n const location = locationService.getLocation();\n locationService.push(location.pathname + location.search);\n}\n\n/**\n * Navigate to the services selection url\n */\nexport function navigateToIndex() {\n const location = locationService.getLocation();\n const serviceUrl = buildServicesUrl(ROUTES.explore());\n const currentUrl = location.pathname + location.search;\n const search = locationService.getSearch();\n\n if (serviceUrl === currentUrl || currentUrl.includes(serviceUrl)) {\n return;\n }\n\n if (!search.get('var-filters')) {\n // If we don't have filters, we don't want to keep this url in browser history since this is fired AFTER the url props are made invalid, push the previous route and replace it\n if (previousRoute) {\n locationService.replace(previousRoute);\n }\n locationService.push(serviceUrl);\n } else {\n pushUrlHandler(serviceUrl);\n }\n}\n","import { QueryRunnerState, sceneGraph, SceneQueryRunner } from '@grafana/scenes';\n\nexport class LogsSceneQueryRunner extends SceneQueryRunner {\n constructor(initialState: QueryRunnerState) {\n super(initialState);\n }\n\n public runQueries() {\n const timeRange = sceneGraph.getTimeRange(this);\n\n // We don't want to subscribe to time range changes, or we'll get duplicate queries\n // this.subscribeToTimeRangeChanges(timeRange);\n\n // @todo can we make runWithTimeRange protected? (https://github.com/grafana/scenes/pull/866)\n // Hack to call private method\n this['runWithTimeRange'](timeRange);\n }\n}\n","import {\n DataFrame,\n FieldColorModeId,\n FieldConfig,\n FieldMatcherID,\n FieldType,\n getFieldDisplayName,\n} from '@grafana/data';\nimport {\n FieldConfigBuilder,\n FieldConfigBuilders,\n FieldConfigOverridesBuilder,\n PanelBuilders,\n QueryRunnerState,\n SceneDataProvider,\n SceneDataTransformer,\n SceneObject,\n SceneQueryRunner,\n VizPanel,\n} from '@grafana/scenes';\nimport { map, Observable } from 'rxjs';\nimport { HideSeriesConfig, LogsSortOrder } from '@grafana/schema';\nimport { WRAPPED_LOKI_DS_UID } from './datasource';\nimport { LogsSceneQueryRunner } from './LogsSceneQueryRunner';\nimport { DrawStyle, StackingMode } from '@grafana/ui';\nimport { getLevelLabelsFromSeries, getVisibleLevels } from './levels';\nimport { LokiQuery, LokiQueryDirection } from './lokiQuery';\nimport { LOGS_COUNT_QUERY_REFID, LOGS_PANEL_QUERY_REFID } from '../Components/ServiceScene/ServiceScene';\nimport { getLogsPanelSortOrderFromStore, getLogsPanelSortOrderFromURL } from 'Components/ServiceScene/LogOptionsScene';\nimport { getLabelsFromSeries, getVisibleFields, getVisibleLabels, getVisibleMetadata } from './labels';\nimport { getParserForField } from './fields';\n\nconst UNKNOWN_LEVEL_LOGS = 'logs';\nexport function setLevelColorOverrides(overrides: FieldConfigOverridesBuilder) {\n overrides.matchFieldsWithName('info').overrideColor({\n mode: 'fixed',\n fixedColor: 'semi-dark-green',\n });\n overrides.matchFieldsWithName('debug').overrideColor({\n mode: 'fixed',\n fixedColor: 'semi-dark-blue',\n });\n overrides.matchFieldsWithName('error').overrideColor({\n mode: 'fixed',\n fixedColor: 'semi-dark-red',\n });\n overrides.matchFieldsWithName('warn').overrideColor({\n mode: 'fixed',\n fixedColor: 'semi-dark-orange',\n });\n overrides.matchFieldsWithName('logs').overrideColor({\n mode: 'fixed',\n fixedColor: 'darkgray',\n });\n}\n\nexport function setLogsVolumeFieldConfigs(\n builder: ReturnType | ReturnType\n) {\n return builder\n .setCustomFieldConfig('stacking', { mode: StackingMode.Normal })\n .setCustomFieldConfig('fillOpacity', 100)\n .setCustomFieldConfig('lineWidth', 0)\n .setCustomFieldConfig('pointSize', 0)\n .setCustomFieldConfig('axisSoftMin', 0)\n .setCustomFieldConfig('drawStyle', DrawStyle.Bars)\n .setOverrides(setLevelColorOverrides);\n}\n\nexport function setValueSummaryFieldConfigs(\n builder: ReturnType | ReturnType\n) {\n return builder\n .setCustomFieldConfig('stacking', { mode: StackingMode.Normal })\n .setCustomFieldConfig('fillOpacity', 100)\n .setCustomFieldConfig('lineWidth', 0)\n .setCustomFieldConfig('pointSize', 0)\n .setCustomFieldConfig('drawStyle', DrawStyle.Bars);\n}\n\ninterface TimeSeriesFieldConfig extends FieldConfig {\n hideFrom: HideSeriesConfig;\n}\n\nexport function setLabelSeriesOverrides(labels: string[], overrideConfig: FieldConfigOverridesBuilder) {\n overrideConfig\n .match({\n id: FieldMatcherID.byNames,\n options: {\n mode: 'exclude',\n names: labels,\n prefix: 'All except:',\n readOnly: true,\n },\n })\n .overrideCustomFieldConfig('hideFrom', {\n legend: false,\n tooltip: false,\n viz: true,\n });\n\n // Setting __systemRef to hideSeriesFrom, allows the override to be changed by interacting with the viz\n const overrides = overrideConfig.build();\n // @ts-expect-error\n overrides[overrides.length - 1].__systemRef = 'hideSeriesFrom';\n}\n\n/**\n * Sets labels series visibility in the panel\n */\nexport function syncLevelsVisibleSeries(panel: VizPanel, series: DataFrame[], sceneRef: SceneObject) {\n const focusedLevels = getVisibleLevels(getLevelLabelsFromSeries(series), sceneRef);\n const config = setLogsVolumeFieldConfigs(FieldConfigBuilders.timeseries()).setOverrides(\n setLabelSeriesOverrides.bind(null, focusedLevels)\n );\n if (config instanceof FieldConfigBuilder) {\n panel.onFieldConfigChange(config.build(), true);\n }\n}\n\n/**\n * @todo unit test\n * Set levels series visibility in the panel\n */\nexport function syncLabelsValueSummaryVisibleSeries(\n key: string,\n panel: VizPanel,\n series: DataFrame[],\n sceneRef: SceneObject\n) {\n const allLabels = getLabelsFromSeries(series);\n const focusedLabels = getVisibleLabels(key, allLabels, sceneRef);\n\n const config = setValueSummaryFieldConfigs(FieldConfigBuilders.timeseries());\n if (focusedLabels.length) {\n config.setOverrides(setLabelSeriesOverrides.bind(null, focusedLabels));\n }\n if (config instanceof FieldConfigBuilder) {\n panel.onFieldConfigChange(config.build(), true);\n }\n}\n\n/**\n * Set fields series visibility in the panel\n */\nexport function syncFieldsValueSummaryVisibleSeries(\n key: string,\n panel: VizPanel,\n series: DataFrame[],\n sceneRef: SceneObject\n) {\n const allLabels = getLabelsFromSeries(series);\n const detectedFieldType = getParserForField(key, sceneRef);\n\n const focusedLabels =\n detectedFieldType === 'structuredMetadata'\n ? getVisibleMetadata(key, allLabels, sceneRef)\n : getVisibleFields(key, allLabels, sceneRef);\n\n const config = setValueSummaryFieldConfigs(FieldConfigBuilders.timeseries());\n\n if (focusedLabels.length) {\n config.setOverrides(setLabelSeriesOverrides.bind(null, focusedLabels));\n }\n if (config instanceof FieldConfigBuilder) {\n panel.onFieldConfigChange(config.build(), true);\n }\n}\n\nfunction setColorByDisplayNameTransformation() {\n return (source: Observable) => {\n return source.pipe(\n map((data: DataFrame[]) => {\n return data.map((frame, frameIndex) => {\n return {\n ...frame,\n fields: frame.fields.map((f, fieldIndex) => {\n // Time fields do not have color config\n if (f.type === FieldType.time) {\n return f;\n }\n const displayName = getFieldDisplayName(f, frame, data);\n return {\n ...f,\n config: {\n ...f.config,\n displayName,\n color: {\n mode: FieldColorModeId.PaletteClassicByName,\n },\n },\n };\n }),\n };\n });\n })\n );\n };\n}\n\nexport function sortLevelTransformation() {\n return (source: Observable) => {\n return source.pipe(\n map((data: DataFrame[]) => {\n return data\n .map((d) => {\n if (d.fields.length < 2) {\n return d;\n }\n if (!d.fields[1].config.displayNameFromDS) {\n d.fields[1].config.displayNameFromDS = UNKNOWN_LEVEL_LOGS;\n }\n return d;\n })\n .sort((a, b) => {\n if (a.fields.length < 2 || b.fields.length < 2) {\n return 0;\n }\n const aName: string | undefined = a.fields[1].config.displayNameFromDS;\n const aVal = aName?.includes('error') ? 4 : aName?.includes('warn') ? 3 : aName?.includes('info') ? 2 : 1;\n const bName: string | undefined = b.fields[1].config.displayNameFromDS;\n const bVal = bName?.includes('error') ? 4 : bName?.includes('warn') ? 3 : bName?.includes('info') ? 2 : 1;\n return aVal - bVal;\n });\n })\n );\n };\n}\n\nexport function getResourceQueryRunner(queries: LokiQuery[]) {\n return new LogsSceneQueryRunner({\n datasource: { uid: WRAPPED_LOKI_DS_UID },\n queries: queries,\n });\n}\n\nexport function getQueryRunner(queries: LokiQuery[], queryRunnerOptions?: Partial) {\n // if there's a legendFormat related to any `level` like label, we want to\n // sort the output equally. That's purposefully not `LEVEL_VARIABLE_VALUE`,\n // such that the `detected_level` graph looks the same as a graph for the\n // `level` label.\n\n const hasLevel = queries.find((query) => query.legendFormat?.toLowerCase().includes('level'));\n const isLogPanelQuery = queries.find(\n (query) => query.refId === LOGS_PANEL_QUERY_REFID || query.refId === LOGS_COUNT_QUERY_REFID\n );\n\n if (hasLevel) {\n return new SceneDataTransformer({\n $data: getSceneQueryRunner({\n datasource: { uid: WRAPPED_LOKI_DS_UID },\n queries: queries,\n ...queryRunnerOptions,\n }),\n transformations: [sortLevelTransformation],\n });\n }\n\n if (!isLogPanelQuery) {\n return new SceneDataTransformer({\n $data: getSceneQueryRunner({\n datasource: { uid: WRAPPED_LOKI_DS_UID },\n queries: queries,\n ...queryRunnerOptions,\n }),\n transformations: [setColorByDisplayNameTransformation],\n });\n } else {\n queries = queries.map((query) => ({\n ...query,\n get direction() {\n const sortOrder = getLogsPanelSortOrderFromURL() || getLogsPanelSortOrderFromStore();\n return sortOrder === LogsSortOrder.Descending ? LokiQueryDirection.Backward : LokiQueryDirection.Forward;\n },\n }));\n }\n\n return getSceneQueryRunner({\n datasource: { uid: WRAPPED_LOKI_DS_UID },\n queries: queries,\n ...queryRunnerOptions,\n });\n}\n\nexport function getSceneQueryRunner(queryRunnerOptions?: Partial) {\n return new SceneQueryRunner({\n datasource: { uid: WRAPPED_LOKI_DS_UID },\n queries: [],\n ...queryRunnerOptions,\n });\n}\n\nexport function getQueryRunnerFromProvider(provider: SceneDataProvider): SceneQueryRunner {\n if (provider instanceof SceneQueryRunner) {\n return provider;\n }\n\n if (provider.state.$data instanceof SceneQueryRunner) {\n return provider.state.$data;\n }\n\n throw new Error('SceneDataProvider is missing SceneQueryRunner');\n}\n","import pluginJson from '../plugin.json';\n\n// jest tests struggle with import order when importing from the plugin.json, moving methods that use the plugin_id to its own file makes it simpler to import when mocking\nexport const PLUGIN_ID = pluginJson.id;\nexport const PLUGIN_BASE_URL = `/a/${PLUGIN_ID}`;\n\n// Prefixes the route with the base URL of the plugin\nexport function prefixRoute(route: string): string {\n return `${PLUGIN_BASE_URL}/${route}`;\n}\n","import { AdHocVariableFilter, SelectableValue } from '@grafana/data';\nimport {\n addAdHocFilterUserInputPrefix,\n AdHocFiltersWithLabelsAndMeta,\n FieldValue,\n VAR_DATASOURCE_EXPR,\n} from './variables';\nimport { LokiQuery } from './lokiQuery';\nimport { SceneDataQueryResourceRequest, SceneDataQueryResourceRequestOptions } from './datasourceTypes';\nimport { PLUGIN_ID } from './plugin';\nimport { AdHocFilterWithLabels, sceneUtils } from '@grafana/scenes';\nimport { LineFilterCaseSensitive, LineFilterOp } from './filterTypes';\nimport { sortLineFilters } from '../Components/IndexScene/LineFilterVariablesScene';\nimport { ExpressionBuilder } from './ExpressionBuilder';\n\n/**\n * Builds the resource query\n * @param expr string to be interpolated and executed in the resource request\n * @param resource\n * @param queryParamsOverrides\n * @param primaryLabel\n */\nexport const buildResourceQuery = (\n expr: string,\n resource: SceneDataQueryResourceRequestOptions,\n queryParamsOverrides?: Partial,\n primaryLabel?: string\n): LokiQuery & SceneDataQueryResourceRequest & { primaryLabel?: string } => {\n return {\n ...defaultQueryParams,\n resource,\n refId: resource,\n ...queryParamsOverrides,\n datasource: { uid: VAR_DATASOURCE_EXPR },\n expr,\n primaryLabel,\n };\n};\n/**\n * Builds a loki data query\n * @param expr\n * @param queryParamsOverrides\n * @returns LokiQuery\n */\nexport const buildDataQuery = (expr: string, queryParamsOverrides?: Partial): LokiQuery => {\n return {\n ...defaultQueryParams,\n ...queryParamsOverrides,\n expr,\n };\n};\n\nconst defaultQueryParams = {\n refId: 'A',\n queryType: 'range',\n editorMode: 'code',\n supportingQueryType: PLUGIN_ID,\n};\n\nexport const buildVolumeQuery = (\n expr: string,\n resource: 'volume' | 'patterns' | 'detected_labels' | 'detected_fields' | 'labels',\n primaryLabel: string,\n queryParamsOverrides?: Record\n): LokiQuery & SceneDataQueryResourceRequest => {\n return buildResourceQuery(expr, resource, { ...queryParamsOverrides }, primaryLabel);\n};\n\nexport function renderLogQLLabelFilters(filters: AdHocFilterWithLabels[], ignoreKeys?: string[]) {\n const filtersTransformer = new ExpressionBuilder(filters);\n return filtersTransformer.getLabelsExpr({ ignoreKeys });\n}\n\nexport function onAddCustomAdHocValue(item: SelectableValue): {\n value: string | undefined;\n valueLabels: string[];\n} {\n if (item.value) {\n return {\n value: addAdHocFilterUserInputPrefix(item.value),\n valueLabels: [item.label ?? item.value],\n };\n }\n\n return {\n value: item.value,\n valueLabels: [item.label ?? item.value ?? ''],\n };\n}\n\nexport function onAddCustomFieldValue(\n item: SelectableValue & { isCustom?: boolean },\n filter: AdHocFiltersWithLabelsAndMeta\n): { value: string | undefined; valueLabels: string[] } {\n const field: FieldValue = {\n value: item.value ?? '',\n parser: filter?.meta?.parser ?? 'mixed',\n };\n\n // metadata is not encoded\n if (field.parser === 'structuredMetadata') {\n return {\n value: addAdHocFilterUserInputPrefix(field.value),\n valueLabels: [item.label ?? field.value],\n };\n }\n\n return {\n value: addAdHocFilterUserInputPrefix(JSON.stringify(field)),\n valueLabels: [item.label ?? field.value],\n };\n}\n\nexport function renderLevelsFilter(filters: AdHocVariableFilter[], ignoreKeys?: string[]) {\n const filterTransformer = new ExpressionBuilder(filters);\n return filterTransformer.getLevelsExpr({ ignoreKeys });\n}\n\nexport function renderLogQLMetadataFilters(filters: AdHocVariableFilter[], ignoreKeys?: string[]) {\n const filterTransformer = new ExpressionBuilder(filters);\n return filterTransformer.getMetadataExpr({ ignoreKeys });\n}\n\nexport function renderLogQLFieldFilters(filters: AdHocVariableFilter[], ignoreKeys?: string[]) {\n const filterTransformer = new ExpressionBuilder(filters);\n return filterTransformer.getFieldsExpr({ ignoreKeys });\n}\n\nexport function escapeDoubleQuotedLineFilter(filter: AdHocFilterWithLabels) {\n // Is not regex\n if (filter.operator === LineFilterOp.match || filter.operator === LineFilterOp.negativeMatch) {\n if (filter.key === LineFilterCaseSensitive.caseInsensitive) {\n return sceneUtils.escapeLabelValueInRegexSelector(filter.value);\n } else {\n return sceneUtils.escapeLabelValueInExactSelector(filter.value);\n }\n } else {\n return sceneUtils.escapeLabelValueInExactSelector(filter.value);\n }\n}\n\n/**\n * Builds line filter as a double-quoted LogQL string\n * Expects pre-escaped values\n */\nfunction buildLogQlLineFilter(filter: AdHocFilterWithLabels, value: string) {\n // Change operator if needed and insert caseInsensitive flag\n if (filter.key === LineFilterCaseSensitive.caseInsensitive) {\n if (filter.operator === LineFilterOp.negativeRegex || filter.operator === LineFilterOp.negativeMatch) {\n return `${LineFilterOp.negativeRegex} \"(?i)${value}\"`;\n }\n return `${LineFilterOp.regex} \"(?i)${value}\"`;\n }\n\n return `${filter.operator} \"${value}\"`;\n}\n\n/**\n * Converts line filter ad-hoc filters to LogQL\n *\n * the filter key is LineFilterCaseSensitive\n * the filter operator is LineFilterOp\n * the value is the user input\n */\nexport function renderLogQLLineFilter(filters: AdHocFilterWithLabels[]) {\n sortLineFilters(filters);\n return filters\n .map((filter) => {\n if (filter.value === '') {\n return '';\n }\n\n const value = escapeDoubleQuotedLineFilter(filter);\n return buildLogQlLineFilter(filter, value);\n })\n .join(' ');\n}\nexport function wrapWildcardSearch(input: string) {\n if (input === '.+') {\n return input;\n } else if (input.substring(0, 6) !== '(?i).*') {\n return `(?i).*${input}.*`;\n }\n\n return input;\n}\n\nexport function unwrapWildcardSearch(input: string) {\n if (input.substring(0, 6) === '(?i).*' && input.slice(-2) === '.*') {\n return input.slice(6).slice(0, -2);\n }\n\n return input;\n}\n\nexport function sanitizeStreamSelector(expression: string) {\n return expression.replace(/\\s*,\\s*}/, '}');\n}\n\n// default line limit; each data source can define it's own line limit too\nexport const LINE_LIMIT = 1000;\n","import { UrlQueryMap, urlUtil } from '@grafana/data';\nimport {\n SERVICE_NAME,\n SERVICE_UI_LABEL,\n VAR_DATASOURCE,\n VAR_FIELD_GROUP_BY,\n VAR_FIELDS,\n VAR_LABEL_GROUP_BY,\n VAR_LABELS,\n VAR_LEVELS,\n VAR_LINE_FILTER,\n VAR_LINE_FILTERS,\n VAR_METADATA,\n VAR_PATTERNS,\n} from './variables';\nimport { locationService } from '@grafana/runtime';\nimport { RouteMatch, RouteProps } from '../Components/Pages';\nimport { replaceSlash } from './extensions/links';\nimport { SceneObject } from '@grafana/scenes';\nimport { getLabelsVariable } from './variableGetters';\nimport { logger } from './logger';\nimport { PLUGIN_BASE_URL, prefixRoute } from './plugin';\n\nexport enum PageSlugs {\n explore = 'explore',\n logs = 'logs',\n labels = 'labels',\n patterns = 'patterns',\n fields = 'fields',\n}\nexport enum ValueSlugs {\n field = 'field',\n label = 'label',\n}\n\nexport type ParentDrilldownSlugs =\n | PageSlugs.explore\n | PageSlugs.fields\n | PageSlugs.logs\n | PageSlugs.labels\n | PageSlugs.patterns;\nexport type ChildDrilldownSlugs = ValueSlugs.field | ValueSlugs.label;\n\nexport const ROUTES = {\n explore: () => prefixRoute(PageSlugs.explore),\n logs: (labelValue: string, labelName = 'service') =>\n prefixRoute(`${PageSlugs.explore}/${labelName}/${replaceSlash(labelValue)}/${PageSlugs.logs}`),\n fields: (labelValue: string, labelName = 'service') =>\n prefixRoute(`${PageSlugs.explore}/${labelName}/${replaceSlash(labelValue)}/${PageSlugs.fields}`),\n patterns: (labelValue: string, labelName = 'service') =>\n prefixRoute(`${PageSlugs.explore}/${labelName}/${replaceSlash(labelValue)}/${PageSlugs.patterns}`),\n labels: (labelValue: string, labelName = 'service') =>\n prefixRoute(`${PageSlugs.explore}/${labelName}/${replaceSlash(labelValue)}/${PageSlugs.labels}`),\n};\n\nexport const SUB_ROUTES = {\n label: (labelValue: string, labelName = 'service', breakdownLabelName: string) =>\n prefixRoute(\n `${PageSlugs.explore}/${labelName}/${replaceSlash(labelValue)}/${ValueSlugs.label}/${breakdownLabelName}`\n ),\n field: (labelValue: string, labelName = 'service', breakdownLabelName: string) =>\n prefixRoute(\n `${PageSlugs.explore}/${labelName}/${replaceSlash(labelValue)}/${ValueSlugs.field}/${breakdownLabelName}`\n ),\n};\n\nexport const ROUTE_DEFINITIONS: Record = {\n explore: prefixRoute(PageSlugs.explore),\n logs: prefixRoute(`${PageSlugs.explore}/:labelName/:labelValue/${PageSlugs.logs}`),\n fields: prefixRoute(`${PageSlugs.explore}/:labelName/:labelValue/${PageSlugs.fields}`),\n patterns: prefixRoute(`${PageSlugs.explore}/:labelName/:labelValue/${PageSlugs.patterns}`),\n labels: prefixRoute(`${PageSlugs.explore}/:labelName/:labelValue/${PageSlugs.labels}`),\n};\n\nexport const CHILD_ROUTE_DEFINITIONS: Record = {\n field: prefixRoute(`${PageSlugs.explore}/:labelName/:labelValue/${ValueSlugs.field}/:breakdownLabel`),\n label: prefixRoute(`${PageSlugs.explore}/:labelName/:labelValue/${ValueSlugs.label}/:breakdownLabel`),\n};\n\nexport const EXPLORATIONS_ROUTE = `${PLUGIN_BASE_URL}/${PageSlugs.explore}`;\n\n// For redirect back to service, we just want to keep datasource, and timerange\nexport const SERVICE_URL_KEYS = ['from', 'to', `var-${VAR_DATASOURCE}`, `var-${VAR_LABELS}`];\n//@todo why patterns and var-patterns?\nexport const DRILLDOWN_URL_KEYS = [\n 'from',\n 'to',\n 'mode',\n 'urlColumns',\n 'visualizationType',\n 'selectedLine',\n 'displayedFields',\n 'panelState',\n VAR_PATTERNS,\n `var-${VAR_PATTERNS}`,\n `var-${VAR_DATASOURCE}`,\n `var-${VAR_LABELS}`,\n `var-${VAR_FIELDS}`,\n `var-${VAR_LEVELS}`,\n `var-${VAR_FIELD_GROUP_BY}`,\n `var-${VAR_LABEL_GROUP_BY}`,\n `var-${VAR_DATASOURCE}`,\n `var-${VAR_LINE_FILTER}`,\n `var-${VAR_METADATA}`,\n `var-${VAR_LINE_FILTERS}`,\n];\n\nexport function getDrilldownSlug() {\n const location = locationService.getLocation();\n const slug = location.pathname.slice(location.pathname.lastIndexOf('/') + 1, location.pathname.length);\n return slug as PageSlugs;\n}\n\n/**\n * The \"primary\" label, is the replacement for the service_name paradigm\n * It must be an indexed label with an include filter\n * Note: Will return the label as it exists in the url, so \"service_name\" will be returned as \"service\", we'll need to adjust for this case if we want to support URLs from before this change\n */\nexport function getPrimaryLabelFromUrl(): RouteProps {\n const location = locationService.getLocation();\n const startOfUrl = '/a/grafana-lokiexplore-app/explore';\n const endOfUrl = location.pathname.slice(location.pathname.indexOf(startOfUrl) + startOfUrl.length + 1);\n const routeParams = endOfUrl.split('/');\n\n let labelName = routeParams[0];\n const labelValue = routeParams[1];\n const breakdownLabel = routeParams[3];\n // Keep urls the same\n if (labelName === SERVICE_NAME) {\n labelName = SERVICE_UI_LABEL;\n }\n return { labelName, labelValue, breakdownLabel };\n}\n\nexport function getDrilldownValueSlug() {\n const location = locationService.getLocation();\n const locationArray = location.pathname.split('/');\n const slug = locationArray[locationArray.length - 2];\n return slug as ValueSlugs;\n}\n\nexport function buildServicesUrl(path: string, extraQueryParams?: UrlQueryMap): string {\n return urlUtil.renderUrl(path, buildServicesRoute(extraQueryParams));\n}\nexport function extractValuesFromRoute(routeMatch: RouteMatch): RouteProps {\n return {\n labelName: routeMatch.params.labelName,\n labelValue: routeMatch.params.labelValue,\n breakdownLabel: routeMatch.params.breakdownLabel,\n };\n}\n\nexport function buildServicesRoute(extraQueryParams?: UrlQueryMap): UrlQueryMap {\n return {\n ...Object.entries(urlUtil.getUrlSearchParams()).reduce((acc, [key, value]) => {\n if (SERVICE_URL_KEYS.includes(key)) {\n acc[key] = value;\n }\n\n return acc;\n }, {}),\n ...extraQueryParams,\n };\n}\n\n/**\n * Compare slugs against variable filters and log discrepancies\n * These don't cause errors or render empty UIs, but shouldn't be possible when routing within the app\n * If we see these logged in production it indicates we're navigating users incorrectly\n * @param sceneRef\n */\nexport function checkPrimaryLabel(sceneRef: SceneObject) {\n const labelsVariable = getLabelsVariable(sceneRef);\n let { labelName, labelValue } = getPrimaryLabelFromUrl();\n if (labelName === SERVICE_UI_LABEL) {\n labelName = SERVICE_NAME;\n }\n const primaryLabel = labelsVariable.state.filters.find((filter) => filter.key === labelName);\n if (!primaryLabel) {\n const location = locationService.getLocation();\n\n logger.info('invalid primary label name in url', {\n labelName,\n url: `${location.pathname}${location.search}`,\n });\n }\n\n const primaryLabelValue = labelsVariable.state.filters.find((filter) => replaceSlash(filter.value) === labelValue);\n if (!primaryLabelValue) {\n const location = locationService.getLocation();\n\n logger.info('invalid primary label value in url', {\n labelValue,\n url: `${location.pathname}${location.search}`,\n });\n }\n}\n","import { urlUtil } from '@grafana/data';\nimport { config, getDataSourceSrv } from '@grafana/runtime';\nimport { sceneGraph, SceneObject, SceneObjectUrlValues, SceneQueryRunner, SceneTimePicker } from '@grafana/scenes';\nimport {\n LOG_STREAM_SELECTOR_EXPR,\n PRETTY_LOG_STREAM_SELECTOR_EXPR,\n VAR_DATASOURCE_EXPR,\n VAR_LABELS_EXPR,\n} from './variables';\nimport { EXPLORATIONS_ROUTE } from './routing';\nimport { IndexScene } from 'Components/IndexScene/IndexScene';\nimport { logger } from './logger';\nimport { LokiDatasource } from './lokiQuery';\n\nexport function getExplorationFor(model: SceneObject): IndexScene {\n return sceneGraph.getAncestor(model, IndexScene);\n}\n\nexport function getUrlForValues(values: SceneObjectUrlValues) {\n return urlUtil.renderUrl(EXPLORATIONS_ROUTE, values);\n}\n\nexport function getDataSource(sceneObject: SceneObject) {\n return sceneGraph.interpolate(sceneObject, VAR_DATASOURCE_EXPR);\n}\n\nexport function getQueryExpr(exploration: SceneObject) {\n return sceneGraph.interpolate(exploration, LOG_STREAM_SELECTOR_EXPR).replace(/\\s+/g, ' ');\n}\n\nexport function getPrettyQueryExpr(exploration: SceneObject) {\n return sceneGraph.interpolate(exploration, PRETTY_LOG_STREAM_SELECTOR_EXPR).replace(/\\s+/g, ' ');\n}\n\nexport function getPatternExpr(exploration: SceneObject) {\n return sceneGraph.interpolate(exploration, VAR_LABELS_EXPR).replace(/\\s+/g, ' ');\n}\n\nexport function getColorByIndex(index: number) {\n const visTheme = config.theme2.visualization;\n return visTheme.getColorByName(visTheme.palette[index % 8]);\n}\n\nexport async function getLokiDatasource(sceneObject: SceneObject) {\n const ds = (await getDataSourceSrv().get(VAR_DATASOURCE_EXPR, { __sceneObject: { value: sceneObject } })) as\n | LokiDatasource\n | undefined;\n return ds;\n}\n\nexport function isDefined(value: T | null | undefined): value is T {\n return value !== null && value !== undefined;\n}\n\nexport function getQueryRunnerFromChildren(sceneObject: SceneObject) {\n return sceneGraph.findDescendents(sceneObject, SceneQueryRunner);\n}\n\ninterface SceneType extends Function {\n new (...args: never[]): T;\n}\n\nexport function findObjectOfType(\n scene: SceneObject,\n check: (obj: SceneObject) => boolean,\n returnType: SceneType\n) {\n const obj = sceneGraph.findObject(scene, check);\n if (obj instanceof returnType) {\n return obj;\n } else if (obj !== null) {\n logger.warn(`invalid return type: ${returnType.toString()}`);\n }\n\n return null;\n}\n\nexport function getTimePicker(scene: IndexScene) {\n return scene.state.controls?.find((s) => s instanceof SceneTimePicker) as SceneTimePicker;\n}\n","import uFuzzy from '@leeoniya/ufuzzy';\nimport { debounce as debounceLodash } from 'lodash';\n\nconst uf = new uFuzzy({\n intraMode: 1,\n intraIns: 1,\n intraSub: 1,\n intraTrn: 1,\n intraDel: 1,\n});\n\nexport function fuzzySearch(haystack: string[], query: string, callback: (data: string[][]) => void) {\n const [idxs, info, order] = uf.search(haystack, query, 0, 1e5);\n\n let haystackOrder: string[] = [];\n let matchesSet: Set = new Set();\n if (idxs && order) {\n /**\n * get the fuzzy matches for highlighting\n * @param part\n * @param matched\n */\n const mark = (part: string, matched: boolean) => {\n if (matched) {\n matchesSet.add(part);\n }\n };\n\n // Iterate to create the order of needles(queries) and the matches\n for (let i = 0; i < order.length; i++) {\n let infoIdx = order[i];\n\n /** Evaluate the match, get the matches for highlighting */\n uFuzzy.highlight(haystack[info.idx[infoIdx]], info.ranges[infoIdx], mark);\n /** Get the order */\n haystackOrder.push(haystack[info.idx[infoIdx]]);\n }\n\n callback([haystackOrder, [...matchesSet]]);\n } else if (!query) {\n callback([]);\n }\n}\n\nexport const debouncedFuzzySearch = debounceLodash(fuzzySearch, 300);\n","import { ChangepointDetector } from '@bsull/augurs/changepoint';\nimport { OutlierDetector, OutlierOutput } from '@bsull/augurs/outlier';\nimport { DataFrame, doStandardCalcs, fieldReducers, FieldType, outerJoinDataFrames, ReducerID } from '@grafana/data';\nimport { getLabelValueFromDataFrame } from './levels';\nimport { memoize } from 'lodash';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from './analytics';\nimport { logger } from './logger';\n\nexport const DEFAULT_SORT_BY = 'changepoint';\n\nexport const sortSeries = memoize(\n (series: DataFrame[], sortBy: string, direction: string) => {\n if (sortBy === 'alphabetical') {\n return sortSeriesByName(series, direction);\n }\n\n if (sortBy === 'outliers') {\n initOutlierDetector(series);\n }\n\n const reducer = (dataFrame: DataFrame) => {\n // ML & Wasm sorting options\n try {\n if (sortBy === 'changepoint') {\n return calculateDataFrameChangepoints(dataFrame);\n } else if (sortBy === 'outliers') {\n return calculateOutlierValue(series, dataFrame);\n }\n } catch (e) {\n logger.error(e, { msg: 'failed to sort' });\n\n // ML sorting panicked, fallback to stdDev\n sortBy = ReducerID.stdDev;\n }\n const fieldReducer = fieldReducers.get(sortBy);\n const value =\n fieldReducer.reduce?.(dataFrame.fields[1], true, true) ?? doStandardCalcs(dataFrame.fields[1], true, true);\n return value[sortBy] ?? 0;\n };\n\n const seriesCalcs = series.map((dataFrame) => ({\n value: reducer(dataFrame),\n dataFrame: dataFrame,\n }));\n\n seriesCalcs.sort((a, b) => {\n if (a.value !== undefined && b.value !== undefined) {\n return b.value - a.value;\n }\n return 0;\n });\n\n if (direction === 'asc') {\n seriesCalcs.reverse();\n }\n\n return seriesCalcs.map(({ dataFrame }) => dataFrame);\n },\n (series: DataFrame[], sortBy: string, direction: string) => {\n const firstTimestamp = series.length > 0 ? series[0].fields[0].values[0] : 0;\n const lastTimestamp =\n series.length > 0\n ? series[series.length - 1].fields[0].values[series[series.length - 1].fields[0].values.length - 1]\n : 0;\n const firstValue = series.length > 0 ? getLabelValueFromDataFrame(series[0]) : '';\n const lastValue = series.length > 0 ? getLabelValueFromDataFrame(series[series.length - 1]) : '';\n // This still isn't good enough, if the dataframe returns the same number of fields, with the same start and end values, we'll fail to update the UI\n const allSeriesKey = series.map(\n (frame) =>\n frame.length +\n '_' +\n frame.fields.map((field) => field.name + '_' + field.values[0] + '_' + field.values[field.values.length - 1])\n );\n return `${firstValue}_${lastValue}_${firstTimestamp}_${lastTimestamp}_${series.length}_${allSeriesKey}_${sortBy}_${direction}`;\n }\n);\n\nexport const calculateDataFrameChangepoints = (data: DataFrame) => {\n if (!wasmSupported()) {\n throw new Error('WASM not supported, fall back to stdDev');\n }\n\n const fields = data.fields.filter((f) => f.type === FieldType.number);\n\n const dataPoints = fields[0].values.length;\n\n let samplingStep = Math.floor(dataPoints / 100) || 1;\n if (samplingStep > 1) {\n // Avoiding \"big\" steps for more accuracy\n samplingStep = Math.ceil(samplingStep / 2);\n }\n\n const sample = fields[0].values.filter((_, i) => i % samplingStep === 0);\n\n const values = new Float64Array(sample);\n const points = ChangepointDetector.defaultArgpcp().detectChangepoints(values);\n\n return points.indices.length;\n};\n\nexport const sortSeriesByName = (series: DataFrame[], direction: string) => {\n const sortedSeries = [...series];\n sortedSeries.sort((a, b) => {\n const valueA = getLabelValueFromDataFrame(a);\n const valueB = getLabelValueFromDataFrame(b);\n if (!valueA || !valueB) {\n return 0;\n }\n return valueA?.localeCompare(valueB) ?? 0;\n });\n if (direction === 'desc') {\n sortedSeries.reverse();\n }\n return sortedSeries;\n};\n\nconst initOutlierDetector = (series: DataFrame[]) => {\n if (!wasmSupported()) {\n return;\n }\n\n // Combine all frames into one by joining on time.\n const joined = outerJoinDataFrames({ frames: series });\n if (!joined) {\n return;\n }\n\n // Get number fields: these are our series.\n const joinedSeries = joined.fields.filter((f) => f.type === FieldType.number);\n const points = joinedSeries.flatMap((series) => new Float64Array(series.values));\n\n try {\n const detector = OutlierDetector.dbscan({ sensitivity: 0.4 }).preprocess(points);\n outliers = detector.detect();\n } catch (e) {\n logger.error(e, { msg: 'initOutlierDetector: OutlierDetector error' });\n }\n};\n\nlet outliers: OutlierOutput | undefined = undefined;\n\nexport const calculateOutlierValue = (series: DataFrame[], data: DataFrame): number => {\n if (!wasmSupported()) {\n throw new Error('WASM not supported, fall back to stdDev');\n }\n if (!outliers) {\n throw new Error('Initialize outlier detector first');\n }\n\n const index = series.indexOf(data);\n if (outliers.seriesResults[index].isOutlier) {\n return outliers.seriesResults[index].outlierIntervals.length;\n }\n\n return 0;\n};\n\nexport const wasmSupported = () => {\n const support = typeof WebAssembly === 'object';\n\n if (!support) {\n reportAppInteraction(USER_EVENTS_PAGES.service_details, USER_EVENTS_ACTIONS.service_details.wasm_not_supported);\n }\n\n return support;\n};\n","import pluginJson from '../plugin.json';\nimport { SortBy, SortDirection } from '../Components/ServiceScene/Breakdowns/SortByScene';\nimport { SceneObject, VariableValue } from '@grafana/scenes';\nimport { getDataSourceName, getServiceName } from './variableGetters';\nimport { logger } from './logger';\nimport { SERVICE_NAME } from './variables';\nimport { Options } from '@grafana/schema/dist/esm/raw/composable/logs/panelcfg/x/LogsPanelCfg_types.gen';\nimport { unknownToStrings } from './narrowing';\nimport { AvgFieldPanelType, CollapsablePanelText } from '../Components/Panels/PanelMenu';\n\nconst FAVORITE_PRIMARY_LABEL_VALUES_LOCALSTORAGE_KEY = `${pluginJson.id}.services.favorite`;\nconst FAVORITE_PRIMARY_LABEL_NAME_LOCALSTORAGE_KEY = `${pluginJson.id}.primarylabels.tabs.favorite`;\nconst DS_LOCALSTORAGE_KEY = `${pluginJson.id}.datasource`;\n\n// This should be a string, but we'll accept anything and return an empty array if it's not a string\nexport function getFavoriteLabelValuesFromStorage(dsKey: string | unknown, labelName: string): string[] {\n if (!dsKey || typeof dsKey !== 'string') {\n return [];\n }\n const key = createPrimaryLabelLocalStorageKey(dsKey, labelName);\n let labelValues: string[] = [];\n try {\n labelValues = unknownToStrings(JSON.parse(localStorage.getItem(key) || '[]'));\n } catch (e) {\n logger.error(e, { msg: 'Error parsing favorite services from local storage' });\n }\n\n if (!Array.isArray(labelValues)) {\n labelValues = [];\n }\n return labelValues;\n}\n\n// This should be a string, but we'll accept anything and return early\nexport function addToFavoriteLabelValueInStorage(dsKey: string | unknown, labelName: string, labelValue: string) {\n if (!dsKey || typeof dsKey !== 'string') {\n return;\n }\n const key = createPrimaryLabelLocalStorageKey(dsKey, labelName);\n let services: string[] = [];\n try {\n services = unknownToStrings(JSON.parse(localStorage.getItem(key) || '[]'));\n } catch (e) {\n logger.error(e, { msg: 'Error parsing favorite services from local storage' });\n }\n\n if (!Array.isArray(services)) {\n services = [];\n }\n\n // We want to put this service at the top of the list and remove any duplicates\n const servicesToStore = services.filter((service: string) => service !== labelValue);\n servicesToStore.unshift(labelValue);\n\n localStorage.setItem(key, JSON.stringify(servicesToStore));\n}\n\nexport function removeFromFavoritesInStorage(dsKey: VariableValue, labelName: string, labelValue: string) {\n if (!dsKey || !labelName || !labelValue || typeof dsKey !== 'string') {\n return;\n }\n const key = createPrimaryLabelLocalStorageKey(dsKey, labelName);\n let services: string[] = [];\n try {\n services = unknownToStrings(JSON.parse(localStorage.getItem(key) || '[]'));\n } catch (e) {\n logger.error(e, { msg: 'Error parsing favorite services from local storage' });\n }\n\n if (!Array.isArray(services)) {\n services = [];\n }\n const servicesToStore = services.filter((service: string) => service !== labelValue);\n localStorage.setItem(key, JSON.stringify(servicesToStore));\n}\n\nexport function addTabToLocalStorage(dsKey: string, labelName: string) {\n if (!dsKey || !labelName) {\n return;\n }\n\n const key = createTabsLocalStorageKey(dsKey);\n\n let services: string[] = [];\n try {\n services = unknownToStrings(JSON.parse(localStorage.getItem(key) || '[]'));\n } catch (e) {\n logger.error(e, { msg: 'Error parsing saved tabs from local storage' });\n }\n\n if (!Array.isArray(services)) {\n services = [];\n }\n\n if (services.indexOf(labelName) === -1) {\n // We want to put this service at the top of the list and remove any duplicates\n const servicesToStore = services.filter((tabName: string) => tabName !== labelName);\n servicesToStore.unshift(labelName);\n\n localStorage.setItem(key, JSON.stringify(servicesToStore));\n }\n}\n\nexport function removeTabFromLocalStorage(dsKey: string, labelName: string) {\n if (!dsKey || !labelName) {\n return;\n }\n const key = createTabsLocalStorageKey(dsKey);\n let services: string[] = [];\n try {\n services = unknownToStrings(JSON.parse(localStorage.getItem(key) || '[]'));\n } catch (e) {\n logger.error(e, { msg: 'Error parsing favorite services from local storage' });\n }\n\n if (!Array.isArray(services)) {\n services = [];\n }\n const servicesToStore = services.filter((tabName: string) => tabName !== labelName);\n localStorage.setItem(key, JSON.stringify(servicesToStore));\n}\n\nexport function getFavoriteTabsFromStorage(dsKey: string | unknown): string[] {\n if (!dsKey || typeof dsKey !== 'string') {\n return [];\n }\n const key = createTabsLocalStorageKey(dsKey);\n let tabNames: string[] = [];\n try {\n tabNames = unknownToStrings(JSON.parse(localStorage.getItem(key) || '[]'));\n } catch (e) {\n logger.error(e, { msg: 'Error parsing favorite services from local storage' });\n }\n\n if (!Array.isArray(tabNames)) {\n tabNames = [];\n }\n return tabNames;\n}\n\nfunction createPrimaryLabelLocalStorageKey(ds: string, labelName: string) {\n if (labelName === SERVICE_NAME) {\n labelName = '';\n } else {\n labelName = `_${labelName}`;\n }\n return `${FAVORITE_PRIMARY_LABEL_VALUES_LOCALSTORAGE_KEY}_${ds}${labelName}`;\n}\n\nfunction createTabsLocalStorageKey(ds: string) {\n return `${FAVORITE_PRIMARY_LABEL_NAME_LOCALSTORAGE_KEY}_${ds}`;\n}\n\nexport function getLastUsedDataSourceFromStorage(): string | undefined {\n return localStorage.getItem(DS_LOCALSTORAGE_KEY) ?? undefined;\n}\n\nexport function addLastUsedDataSourceToStorage(dsKey: string) {\n localStorage.setItem(DS_LOCALSTORAGE_KEY, dsKey);\n}\n\nconst SORT_BY_LOCALSTORAGE_KEY = `${pluginJson.id}.values.sort`;\nexport function getSortByPreference(\n target: string,\n defaultSortBy: SortBy,\n defaultDirection: SortDirection\n): { sortBy: SortBy | ''; direction: SortDirection } {\n const preference = localStorage.getItem(`${SORT_BY_LOCALSTORAGE_KEY}.${target}.by`) ?? '';\n const parts = preference.split('.');\n if (!parts[0] || !parts[1]) {\n return { sortBy: defaultSortBy, direction: defaultDirection };\n }\n const sortBy = parts[0] as SortBy;\n const direction = parts[1] as SortDirection;\n return { sortBy, direction };\n}\n\nexport function setSortByPreference(target: string, sortBy: string, direction: string) {\n // Prevent storing empty values\n if (sortBy && direction) {\n localStorage.setItem(`${SORT_BY_LOCALSTORAGE_KEY}.${target}.by`, `${sortBy}.${direction}`);\n }\n}\n\nfunction getExplorationPrefix(sceneRef: SceneObject) {\n const ds = getDataSourceName(sceneRef);\n const serviceName = getServiceName(sceneRef);\n return `${ds}.${serviceName}`;\n}\n\nexport function getDisplayedFields(sceneRef: SceneObject) {\n const PREFIX = getExplorationPrefix(sceneRef);\n const storedFields = localStorage.getItem(`${pluginJson.id}.${PREFIX}.logs.fields`);\n if (storedFields) {\n return JSON.parse(storedFields);\n }\n return [];\n}\n\nexport function setDisplayedFields(sceneRef: SceneObject, fields: string[]) {\n const PREFIX = getExplorationPrefix(sceneRef);\n localStorage.setItem(`${pluginJson.id}.${PREFIX}.logs.fields`, JSON.stringify(fields));\n}\n\n// Log panel options\nconst LOG_OPTIONS_LOCALSTORAGE_KEY = `${pluginJson.id}.logs.option`;\nexport function getLogOption(option: keyof Options, defaultValue: T) {\n const localStorageResult = localStorage.getItem(`${LOG_OPTIONS_LOCALSTORAGE_KEY}.${option}`);\n return localStorageResult ? localStorageResult : defaultValue;\n}\n\nexport function setLogOption(option: keyof Options, value: string | number | boolean) {\n let storedValue = value.toString();\n if (typeof value === 'boolean' && !value) {\n storedValue = '';\n }\n localStorage.setItem(`${LOG_OPTIONS_LOCALSTORAGE_KEY}.${option}`, storedValue);\n}\n\n// Logs volume options\nconst LOGS_VOLUME_LOCALSTORAGE_KEY = 'grafana.explore.logs.logsVolume';\nexport function setLogsVolumeOption(option: 'collapsed', value: string | undefined) {\n const key = `${LOGS_VOLUME_LOCALSTORAGE_KEY}.${option}`;\n if (value === undefined) {\n localStorage.removeItem(key);\n return;\n }\n localStorage.setItem(key, value);\n}\n\nexport function getLogsVolumeOption(option: 'collapsed') {\n return Boolean(localStorage.getItem(`${LOGS_VOLUME_LOCALSTORAGE_KEY}.${option}`));\n}\n\n// Log visualization options\nexport type LogsVisualizationType = 'logs' | 'table';\n\nconst VISUALIZATION_TYPE_LOCALSTORAGE_KEY = 'grafana.explore.logs.visualisationType';\nexport function getLogsVisualizationType(): LogsVisualizationType {\n const storedType = localStorage.getItem(VISUALIZATION_TYPE_LOCALSTORAGE_KEY) ?? '';\n switch (storedType) {\n case 'table':\n case 'logs':\n return storedType;\n default:\n return 'logs';\n }\n}\n\nexport function setLogsVisualizationType(type: string) {\n localStorage.setItem(VISUALIZATION_TYPE_LOCALSTORAGE_KEY, type);\n}\n\n// Line filter options\nconst LINE_FILTER_OPTIONS_LOCALSTORAGE_KEY = `${pluginJson.id}.linefilter.option`;\nexport function setLineFilterCase(caseSensitive: boolean) {\n let storedValue = caseSensitive.toString();\n if (!caseSensitive) {\n storedValue = '';\n }\n\n localStorage.setItem(`${LINE_FILTER_OPTIONS_LOCALSTORAGE_KEY}.caseSensitive`, storedValue);\n}\n\nexport function setLineFilterRegex(regex: boolean) {\n let storedValue = regex.toString();\n if (!regex) {\n storedValue = '';\n }\n\n localStorage.setItem(`${LINE_FILTER_OPTIONS_LOCALSTORAGE_KEY}.regex`, storedValue);\n}\n\nexport function setLineFilterExclusive(exclusive: boolean) {\n let storedValue = exclusive.toString();\n if (!exclusive) {\n storedValue = '';\n }\n\n localStorage.setItem(`${LINE_FILTER_OPTIONS_LOCALSTORAGE_KEY}.exclusive`, storedValue);\n}\n\nexport function getLineFilterCase(defaultValue: boolean): boolean {\n const storedValue = localStorage.getItem(`${LINE_FILTER_OPTIONS_LOCALSTORAGE_KEY}.caseSensitive`);\n return storedValue === 'true' ? true : defaultValue;\n}\n\nexport function getLineFilterRegex(defaultValue: boolean): boolean {\n const storedValue = localStorage.getItem(`${LINE_FILTER_OPTIONS_LOCALSTORAGE_KEY}.regex`);\n return storedValue === 'true' ? true : defaultValue;\n}\n\nexport function getLineFilterExclusive(defaultValue: boolean): boolean {\n const storedValue = localStorage.getItem(`${LINE_FILTER_OPTIONS_LOCALSTORAGE_KEY}.exclusive`);\n return storedValue === 'true' ? true : defaultValue;\n}\n\n// Panel options\nconst PANEL_OPTIONS_LOCALSTORAGE_KEY = `${pluginJson.id}.panel.option`;\nexport interface PanelOptions {\n panelType: AvgFieldPanelType;\n collapsed: CollapsablePanelText;\n}\nexport function getPanelOption(\n option: K,\n values: V[]\n): V | null {\n const result = localStorage.getItem(`${PANEL_OPTIONS_LOCALSTORAGE_KEY}.${option}`);\n if (result !== null) {\n return values.find((v) => result === v) ?? null;\n }\n\n return null;\n}\n\nexport function setPanelOption(option: K, value: V) {\n localStorage.setItem(`${PANEL_OPTIONS_LOCALSTORAGE_KEY}.${option}`, value);\n}\n\nconst EXPRESSION_BUILDER_DEBUG_LOCALSTORAGE_KEY = `${pluginJson.id}.expressionBuilder.debug`;\nexport function getExpressionBuilderDebug() {\n const value = localStorage.getItem(EXPRESSION_BUILDER_DEBUG_LOCALSTORAGE_KEY);\n return !!value;\n}\n\nconst SERVICE_SELECTION_PAGE_COUNT_KEY = `${pluginJson.id}.serviceSelection.pageCount`;\n\nexport function getServiceSelectionPageCount(): number | undefined {\n const value = localStorage.getItem(SERVICE_SELECTION_PAGE_COUNT_KEY);\n return value ? parseInt(value, 10) : undefined;\n}\nexport function setServiceSelectionPageCount(pageCount: number) {\n localStorage.setItem(SERVICE_SELECTION_PAGE_COUNT_KEY, pageCount.toString(10));\n}\n","export const testIds = {\n appConfig: {\n container: 'data-testid ac-container',\n apiKey: 'data-testid ac-api-key',\n apiUrl: 'data-testid ac-api-url',\n submit: 'data-testid ac-submit-form',\n },\n exploreServiceSearch: {\n search: 'data-testid search-services',\n },\n header: {\n refreshPicker: 'data-testid RefreshPicker run button',\n },\n variables: {\n datasource: {\n label: 'data-testid Dashboard template variables submenu Label Data source',\n },\n combobox: {},\n serviceName: {\n label: 'data-testid Dashboard template variables submenu Label Labels',\n },\n levels: {\n inputWrap: 'data-testid detected_level filter variable',\n },\n },\n breakdowns: {\n labels: {},\n fields: {},\n common: {\n sortByFunction: 'data-testid SortBy function',\n sortByDirection: 'data-testid SortBy direction',\n filterButtonGroup: 'data-testid filter-button-group',\n filterButton: 'data-testid filter-button',\n filterSelect: 'data-testid filter-select',\n filterNumericPopover: {\n removeButton: 'data-testid filter-numeric-remove',\n submitButton: 'data-testid filter-numeric-submit',\n cancelButton: 'data-testid filter-numeric-cancel',\n inputGreaterThan: 'data-testid filter-numeric-gt',\n inputGreaterThanUnit: 'data-testid filter-numeric-gtu',\n inputGreaterThanInclusive: 'data-testid filter-numeric-gte',\n\n inputLessThan: 'data-testid filter-numeric-lt',\n inputLessThanUnit: 'data-testid filter-numeric-ltu',\n inputLessThanInclusive: 'data-testid filter-numeric-lte',\n },\n },\n },\n\n index: {\n showLogsButton: 'data-testid Show logs',\n addNewLabelTab: 'data-testid Tab Add label',\n searchLabelValueInput: 'data-testid search-services-input',\n aggregatedMetricsMenu: 'data-testid aggregated-metrics-menu',\n aggregatedMetricsToggle: 'data-testid aggregated-metrics-toggle',\n header: {\n showLogsButton: 'data-testid Show logs header',\n },\n },\n\n exploreServiceDetails: {\n searchLogs: 'data-testid search-logs',\n openExplore: 'data-testid open-explore',\n tabPatterns: 'data-testid tab-patterns',\n tabLogs: 'data-testid tab-logs',\n tabFields: 'data-testid tab-fields',\n tabLabels: 'data-testid tab-labels',\n buttonRemovePattern: 'data-testid button-remove-pattern',\n buttonFilterInclude: 'data-testid button-filter-include',\n buttonFilterExclude: 'data-testid button-filter-exclude',\n },\n patterns: {\n tableWrapper: 'data-testid table-wrapper',\n buttonIncludedPattern: 'data-testid button-included-pattern',\n buttonExcludedPattern: 'data-testid button-excluded-pattern',\n },\n logsPanelHeader: {\n header: 'data-testid Panel header Logs',\n radio: 'data-testid radio-button',\n },\n table: {\n wrapper: 'data-testid table-wrapper',\n inspectLine: 'data-testid inspect',\n rawLogLine: 'data-testid raw-log-line',\n },\n};\n","import { locationService } from '@grafana/runtime';\nimport { logger } from './logger';\nimport { dateTime, LogRowModel, TimeRange } from '@grafana/data';\n\nexport const copyText = (string: string) => {\n if (navigator.clipboard && window.isSecureContext) {\n navigator.clipboard.writeText(string);\n } else {\n const el = document.createElement('textarea');\n el.value = string;\n document.body.appendChild(el);\n el.select();\n document.execCommand('copy');\n document.body.removeChild(el);\n }\n};\n\nexport enum UrlParameterType {\n From = 'from',\n To = 'to',\n}\n\ntype PermalinkDataType =\n | {\n id?: string;\n row?: number;\n }\n | {\n logs: {\n id: string;\n displayedFields: string[];\n };\n };\n\nexport const generateLogShortlink = (paramName: string, data: PermalinkDataType, timeRange: TimeRange) => {\n const location = locationService.getLocation();\n const searchParams = new URLSearchParams(location.search);\n\n searchParams.set(UrlParameterType.From, timeRange.from.toISOString());\n searchParams.set(UrlParameterType.To, timeRange.to.toISOString());\n searchParams.set(paramName, JSON.stringify(data));\n\n // @todo can encoding + as %20 break other stuff? Can label names or values have + in them that we don't want encoded? Should we just update values?\n // + encoding for whitespace is for application/x-www-form-urlencoded, which appears to be the default encoding for URLSearchParams, replacing + with %20 to keep urls meant for the browser from breaking\n const searchString = searchParams.toString().replace(/\\+/g, '%20');\n return window.location.origin + location.pathname + '?' + searchString;\n};\n\nexport function capitalizeFirstLetter(input: string) {\n if (input.length) {\n return input?.charAt(0).toUpperCase() + input.slice(1);\n }\n\n logger.warn('invalid string argument');\n return input;\n}\n\nexport function truncateText(input: string, length: number, ellipsis: boolean) {\n return input.substring(0, length) + (ellipsis && input.length > length ? '…' : '');\n}\n\nexport function resolveRowTimeRangeForSharing(row: LogRowModel): TimeRange {\n // With infinite scrolling, we cannot rely on the time picker range, so we use a time range around the shared log line.\n const from = dateTime(row.timeEpochMs - 1);\n const to = dateTime(row.timeEpochMs + 1);\n\n const range = {\n from,\n to,\n raw: {\n from,\n to,\n },\n };\n\n return range;\n}\n","import {\n AdHocFiltersVariable,\n CustomVariable,\n DataSourceVariable,\n sceneGraph,\n SceneObject,\n SceneVariableState,\n} from '@grafana/scenes';\nimport { CustomConstantVariable } from './CustomConstantVariable';\nimport {\n AdHocFieldValue,\n FieldValue,\n isAdHocFilterValueUserInput,\n JSON_FORMAT_EXPR,\n LOGS_FORMAT_EXPR,\n LogsQueryOptions,\n MIXED_FORMAT_EXPR,\n SERVICE_NAME,\n stripAdHocFilterUserInputPrefix,\n VAR_AGGREGATED_METRICS,\n VAR_DATASOURCE,\n VAR_FIELD_GROUP_BY,\n VAR_FIELDS,\n VAR_FIELDS_AND_METADATA,\n VAR_FIELDS_EXPR,\n VAR_LABEL_GROUP_BY,\n VAR_LABELS,\n VAR_LABELS_EXPR,\n VAR_LABELS_REPLICA,\n VAR_LEVELS,\n VAR_LEVELS_EXPR,\n VAR_LINE_FILTER,\n VAR_LINE_FILTERS,\n VAR_LINE_FILTERS_EXPR,\n VAR_METADATA,\n VAR_METADATA_EXPR,\n VAR_PATTERNS,\n VAR_PATTERNS_EXPR,\n VAR_PRIMARY_LABEL,\n VAR_PRIMARY_LABEL_SEARCH,\n} from './variables';\nimport { AdHocVariableFilter } from '@grafana/data';\nimport { logger } from './logger';\nimport { narrowFieldValue, NarrowingError } from './narrowing';\nimport { isFilterMetadata } from './filters';\nimport { AdHocFilterTypes, InterpolatedFilterType } from '../Components/ServiceScene/Breakdowns/AddToFiltersButton';\n\nexport function getLogsStreamSelector(options: LogsQueryOptions) {\n const {\n labelExpressionToAdd = '',\n structuredMetadataToAdd = '',\n fieldExpressionToAdd = '',\n parser = undefined,\n } = options;\n\n switch (parser) {\n case 'structuredMetadata':\n return `{${VAR_LABELS_EXPR}${labelExpressionToAdd}} ${structuredMetadataToAdd} ${VAR_LEVELS_EXPR} ${VAR_METADATA_EXPR} ${VAR_PATTERNS_EXPR} ${VAR_LINE_FILTERS_EXPR} ${fieldExpressionToAdd} ${VAR_FIELDS_EXPR}`;\n case 'json':\n return `{${VAR_LABELS_EXPR}${labelExpressionToAdd}} ${structuredMetadataToAdd} ${VAR_LEVELS_EXPR} ${VAR_METADATA_EXPR} ${VAR_PATTERNS_EXPR} ${VAR_LINE_FILTERS_EXPR} ${JSON_FORMAT_EXPR} ${fieldExpressionToAdd} ${VAR_FIELDS_EXPR}`;\n case 'logfmt':\n return `{${VAR_LABELS_EXPR}${labelExpressionToAdd}} ${structuredMetadataToAdd} ${VAR_LEVELS_EXPR} ${VAR_METADATA_EXPR} ${VAR_PATTERNS_EXPR} ${VAR_LINE_FILTERS_EXPR} ${LOGS_FORMAT_EXPR} ${fieldExpressionToAdd} ${VAR_FIELDS_EXPR}`;\n default:\n return `{${VAR_LABELS_EXPR}${labelExpressionToAdd}} ${structuredMetadataToAdd} ${VAR_LEVELS_EXPR} ${VAR_METADATA_EXPR} ${VAR_PATTERNS_EXPR} ${VAR_LINE_FILTERS_EXPR} ${MIXED_FORMAT_EXPR} ${fieldExpressionToAdd} ${VAR_FIELDS_EXPR}`;\n }\n}\n\nexport function getPatternsVariable(scene: SceneObject) {\n const variable = sceneGraph.lookupVariable(VAR_PATTERNS, scene);\n if (!(variable instanceof CustomVariable)) {\n throw new Error('VAR_PATTERNS not found');\n }\n return variable;\n}\n\nexport function getLabelsVariable(scene: SceneObject) {\n return getAdHocFiltersVariable(VAR_LABELS, scene);\n}\n\nexport function getLabelsVariableReplica(scene: SceneObject) {\n return getAdHocFiltersVariable(VAR_LABELS_REPLICA, scene);\n}\n\nexport function getMetadataVariable(scene: SceneObject) {\n return getAdHocFiltersVariable(VAR_METADATA, scene);\n}\n\n// Combined fields and metadata, editable in the UI, changes to this variable flow into FIELDS and METADATA\nexport function getFieldsAndMetadataVariable(scene: SceneObject) {\n return getAdHocFiltersVariable(VAR_FIELDS_AND_METADATA, scene);\n}\n\nexport function getFieldsVariable(scene: SceneObject) {\n return getAdHocFiltersVariable(VAR_FIELDS, scene);\n}\n\nexport function getLevelsVariable(scene: SceneObject) {\n return getAdHocFiltersVariable(VAR_LEVELS, scene);\n}\n\nexport function getLineFilterVariable(scene: SceneObject) {\n const variable = sceneGraph.lookupVariable(VAR_LINE_FILTER, scene);\n if (!(variable instanceof AdHocFiltersVariable)) {\n throw new Error('VAR_LINE_FILTER not found');\n }\n return variable;\n}\n\nexport function getLabelGroupByVariable(scene: SceneObject) {\n const variable = sceneGraph.lookupVariable(VAR_LABEL_GROUP_BY, scene);\n if (!(variable instanceof CustomConstantVariable)) {\n throw new Error('VAR_LABEL_GROUP_BY not found');\n }\n return variable;\n}\n\nexport function getAggregatedMetricsVariable(scene: SceneObject) {\n const variable = sceneGraph.lookupVariable(VAR_AGGREGATED_METRICS, scene);\n if (!(variable instanceof CustomConstantVariable)) {\n throw new Error('SERVICE_LABEL_VAR not found');\n }\n return variable;\n}\n\nexport function getFieldGroupByVariable(scene: SceneObject) {\n const variable = sceneGraph.lookupVariable(VAR_FIELD_GROUP_BY, scene);\n if (!(variable instanceof CustomConstantVariable)) {\n throw new Error('VAR_FIELD_GROUP_BY not found');\n }\n return variable;\n}\n\nexport function getDataSourceVariable(scene: SceneObject) {\n const variable = sceneGraph.lookupVariable(VAR_DATASOURCE, scene);\n if (!(variable instanceof DataSourceVariable)) {\n throw new Error('VAR_DATASOURCE not found');\n }\n return variable;\n}\n\nexport function getLineFiltersVariable(scene: SceneObject) {\n const variable = sceneGraph.lookupVariable(VAR_LINE_FILTERS, scene);\n if (!(variable instanceof AdHocFiltersVariable)) {\n throw new Error('VAR_LINE_FILTERS not found');\n }\n return variable;\n}\n\nexport function getAdHocFiltersVariable(variableName: AdHocFilterTypes, scene: SceneObject) {\n const variable = sceneGraph.lookupVariable(variableName, scene);\n\n if (!(variable instanceof AdHocFiltersVariable)) {\n throw new Error(`Could not get AdHocFiltersVariable ${variableName}. Variable not found.`);\n }\n return variable;\n}\n\nexport function getServiceSelectionSearchVariable(sceneRef: SceneObject) {\n const variable = sceneGraph.lookupVariable(VAR_PRIMARY_LABEL_SEARCH, sceneRef);\n if (!(variable instanceof CustomConstantVariable)) {\n throw new Error('VAR_PRIMARY_LABEL_SEARCH not found');\n }\n return variable;\n}\n\nexport function clearServiceSelectionSearchVariable(sceneRef: SceneObject) {\n getServiceSelectionSearchVariable(sceneRef).setState({\n value: '.+',\n label: '',\n });\n}\n\nexport function getServiceSelectionPrimaryLabel(sceneRef: SceneObject) {\n const variable = sceneGraph.lookupVariable(VAR_PRIMARY_LABEL, sceneRef);\n if (!(variable instanceof AdHocFiltersVariable)) {\n throw new Error('VAR_PRIMARY_LABEL not found');\n }\n return variable;\n}\n\nexport function setServiceSelectionPrimaryLabelKey(key: string, sceneRef: SceneObject) {\n getServiceSelectionPrimaryLabel(sceneRef).setState({\n filters: [\n {\n // the value is replaced by the value in VAR_PRIMARY_LABEL_SEARCH if a search is active, so we just need to set the filter key (label name)\n value: '.+',\n operator: '=~',\n key: key,\n },\n ],\n });\n}\n\nexport function getUrlParamNameForVariable(variableName: string) {\n return `var-${variableName}`;\n}\n\n/**\n * Parses an adHoc filter and returns the encoded value and parser\n * @param filter\n * @param variableName - only used for debugging\n */\nexport function getValueFromFieldsFilter(\n filter: { value: string; valueLabels?: string[] },\n variableName: string = VAR_FIELDS\n): FieldValue {\n if (isFilterMetadata(filter)) {\n return {\n value: filter.value,\n parser: 'structuredMetadata',\n };\n }\n\n try {\n const encodedValue = isAdHocFilterValueUserInput(filter.value)\n ? stripAdHocFilterUserInputPrefix(filter.value)\n : filter.value;\n const fieldValue = narrowFieldValue(JSON.parse(encodedValue));\n if (fieldValue !== false) {\n return fieldValue;\n } else {\n throw new NarrowingError('getValueFromFieldsFilter: invalid filter value!');\n }\n } catch (e) {\n if (e instanceof NarrowingError) {\n logger.error(e, { msg: `getValueFromFieldsFilter: Failed to validate ${variableName}`, value: filter.value });\n } else {\n logger.error(e, { msg: `getValueFromFieldsFilter: Failed to parse ${variableName}`, value: filter.value });\n }\n\n // If the user has a URL from before 0.1.4 where detected_fields changed the format of the fields value to include the parser, fall back to mixed parser if we have a value\n if (filter.value) {\n return {\n value: filter.value,\n parser: 'mixed',\n };\n }\n throw e;\n }\n}\n\nexport function getValueFromAdHocVariableFilter(\n variableName: InterpolatedFilterType,\n filter?: AdHocVariableFilter\n): AdHocFieldValue {\n if (variableName === VAR_FIELDS && filter) {\n return getValueFromFieldsFilter(filter);\n }\n\n return {\n value: filter?.value,\n };\n}\n\nexport function getServiceName(scene: SceneObject) {\n const labelsVariable = getLabelsVariable(scene);\n return getServiceNameFromVariableState(labelsVariable.state);\n}\n\nexport function getServiceNameFromVariableState(\n adHocFiltersVariableState: SceneVariableState & { filters: AdHocVariableFilter[] }\n) {\n const serviceName = adHocFiltersVariableState.filters\n .filter((filter) => filter.key === SERVICE_NAME)\n .map((filter) => filter.value);\n\n if (!serviceName) {\n throw new Error('Service present in filters selected');\n }\n return serviceName[0];\n}\n\nexport function getDataSourceName(scene: SceneObject) {\n const dsVariable = getDataSourceVariable(scene);\n return dsVariable.getValue();\n}\n","import { AdHocFiltersVariable, sceneGraph, SceneObject, SceneVariable } from '@grafana/scenes';\nimport { CustomConstantVariable } from './CustomConstantVariable';\nimport { SERVICE_NAME, SERVICE_UI_LABEL, VAR_LABELS } from './variables';\nimport { IndexScene } from '../Components/IndexScene/IndexScene';\nimport { getPrimaryLabelFromUrl } from './routing';\nimport { FilterOp } from './filterTypes';\nimport { includeOperators, numericOperators, operators } from './operators';\nimport { isOperatorInclusive } from './operatorHelpers';\n\nexport function getVariablesThatCanBeCleared(indexScene: IndexScene) {\n const variables = sceneGraph.getVariables(indexScene);\n let variablesToClear: SceneVariable[] = [];\n\n for (const variable of variables.state.variables) {\n if (variable instanceof AdHocFiltersVariable && variable.state.filters.length) {\n variablesToClear.push(variable);\n }\n if (variable instanceof CustomConstantVariable && variable.state.value && variable.state.name !== 'logsFormat') {\n variablesToClear.push(variable);\n }\n }\n return variablesToClear;\n}\n\nexport function clearVariables(sceneRef: SceneObject) {\n // clear patterns: needs to happen first, or it won't work as patterns is split into a variable and a state, and updating the variable triggers a state update\n const indexScene = sceneGraph.getAncestor(sceneRef, IndexScene);\n indexScene.setState({\n patterns: [],\n });\n\n const variablesToClear = getVariablesThatCanBeCleared(indexScene);\n\n variablesToClear.forEach((variable) => {\n if (variable instanceof AdHocFiltersVariable && variable.state.key === 'adhoc_service_filter') {\n let { labelName } = getPrimaryLabelFromUrl();\n // getPrimaryLabelFromUrl returns the label name that exists in the URL, which is \"service\" not \"service_name\"\n if (labelName === SERVICE_UI_LABEL) {\n labelName = SERVICE_NAME;\n }\n variable.setState({\n filters: variable.state.filters.filter((filter) => filter.key === labelName),\n });\n } else if (variable instanceof AdHocFiltersVariable) {\n variable.setState({\n filters: [],\n });\n } else if (variable instanceof CustomConstantVariable) {\n variable.setState({\n value: '',\n text: '',\n });\n }\n });\n}\n\nexport const operatorFunction = function (variable: AdHocFiltersVariable) {\n const wip = variable.state._wip;\n\n // If there is already a non-regex inclusion operator for this key, don't allow exclusion\n if (wip && variable.state.filters.some((filter) => filter.key === wip.key && filter.operator === FilterOp.Equal)) {\n return includeOperators;\n }\n\n const isLabelsVar = variable.state.name === VAR_LABELS;\n const inclusiveOperatorCount = variable.state.filters.filter((filter) => isOperatorInclusive(filter.operator)).length;\n const isEditingOnlyFilter = !wip?.key && inclusiveOperatorCount === 1;\n const isAddingFirstFilter = wip?.key && inclusiveOperatorCount < 1;\n\n // Should not be able to exclude the only operator\n if (isLabelsVar && (isEditingOnlyFilter || isAddingFirstFilter)) {\n return includeOperators;\n }\n\n // Only fields or metadata can have field types?\n if (wip?.meta) {\n const meta: Record = wip.meta;\n const type = meta.type;\n\n if (type === 'float' || type === 'bytes' || type === 'duration') {\n return numericOperators;\n }\n }\n\n return operators;\n};\n"],"names":["FilterButton","props","isExcluded","isIncluded","onInclude","onExclude","onClear","titles","buttonFill","hideExclude","styles","useStyles2","getStyles","div","className","container","Button","variant","fill","size","aria-selected","includeButton","onClick","data-testid","testIds","exploreServiceDetails","buttonFilterInclude","title","include","excludeButton","exclude","buttonFilterExclude","theme","css","display","justifyContent","borderRadius","borderRight","undefined","shape","radius","default","borderLeft","graphicContainer","margin","graphic","width","height","padding","spacing","text","alignItems","wrap","GrotError","children","useTheme2","SVG","src","isDark","Text","textAlignment","color","element","InterceptBanner","Alert","alert","severity","onRemove","a","target","href","rel","br","flex","GiveFeedbackButton","wrapper","feedback","Icon","name","marginLeft","gap","position","top","alignSelf","colors","secondary","fontSize","typography","bodySmall","link","CustomVariableValueSelectors","SceneObjectBase","model","variablesSetState","sceneGraph","getVariables","useState","variables","state","length","filter","variable","includes","map","VariableValueSelectWrapper","key","layout","Component","PatternTag","pattern","expanded","setExpanded","onMouseLeave","Tag","getPatternPreview","tag","aria-label","buttonRemovePattern","removeButton","PREVIEW_WIDTH","sm","lg","Math","round","window","innerWidth","substringLength","substring","fontFamily","cursor","overflow","borderTopRightRadius","borderBottomRightRadius","backgroundColor","main","border","boxSizing","textOverflow","paddingLeft","paddingRight","PatternControls","patterns","includePatterns","type","excludePatterns","onRemovePattern","addCurrentUrlToHistory","pat","reportAppInteraction","USER_EVENTS_PAGES","service_details","USER_EVENTS_ACTIONS","pattern_removed","includePatternsLength","excludePatternsLength","patternsContainer","weight","buttonIncludedPattern","p","buttonExcludedPattern","flexWrap","VariableLayoutScene","firstRowWrapper","label","breakpoints","down","flexDirection","bodyContainer","flexGrow","minHeight","maxWidth","body","controlsFirstRowContainer","controlsRowContainer","controlsContainer","filters","filtersWrap","controlsWrapper","marginTop","timeRangeDatasource","timeRange","controls","textAlign","rotateIcon","svg","transform","indexScene","getAncestor","IndexScene","layoutScene","LayoutScene","lineFilterRenderer","levelsRenderer","cx","control","SceneFlexLayout","CONTROLS_VARS_DATASOURCE","CONTROLS_VARS_FIELDS_COMBINED","setState","interceptBannerStorageKey","PLUGIN_ID","onActivate","this","LineFilterVariablesScene","LevelsVariableScene","variableLayout","dismiss","interceptDismissed","localStorage","setItem","constructor","super","getItem","addActivationHandler","bind","contentScene","logger","warn","getDetectedFieldValuesTagValuesProvider","expr","sceneRef","variableType","datasourceUnknownType","getDataSourceSrv","get","getDataSource","DataSourceWithBackend","error","Error","languageProvider","values","fetchDetectedLabelValues","options","limit","throwError","requestOptions","showErrorAlert","results","isArray","VAR_LEVELS","replace","currentFilters","valuesToRemove","forEach","value","valueLabels","isOperatorRegex","operator","split","v","push","filteredResults","meta","parser","valueDecoded","getValueFromFieldsFilter","JSON","stringify","r","msg","e","getLabelsTagValuesProvider","datasource_","datasource","getTagValues","filtersFiltered","existingFilters","oldFiltersFiltered","f","isOperatorInclusive","some","tagValuesFilterAdHocFilters","ExpressionBuilder","getJoinedLabelsFilters","getDataSourceVariable","result","FilterOp","Equal","favoriteValuesArray","getFavoriteLabelValuesFromStorage","getValue","toString","favoriteValuesSet","Set","sort","b","has","getLabelsTagKeysProvider","getTagKeys","tagKeys","filteredResult","Array","LABELS_TO_REMOVE","getFieldsKeysProvider","scopedVars","fetchDetectedFieldsFn","fetchDetectedFields","opts","queryOptions","field","LEVEL_VARIABLE_VALUE","VAR_FIELDS_AND_METADATA","parsers","group","interpolateString","interpolatedExpr","range","getDefaultTimeRange","rangeParams","getTimeRangeParams","start","end","params","query","Promise","resolve","reject","getResource","fields","console","MAP","KEYCODE_MAP","SHIFT_MAP","$","_","SPECIAL_ALIASES","option","command","return","escape","plus","mod","test","navigator","platform","REVERSE_MAP","i","characterFromEvent","event","character","String","fromCharCode","which","shiftKey","toLowerCase","isModifier","pickBestAction","modifiers","action","keyNumber","parseInt","hasOwnProperty","getReverseMap","getKeyInfo","combination","keys","keysFromString","belongsTo","ancestor","document","parentNode","mousetrap","el","_callbacks","_directMap","_sequenceLevels","_resetTimer","_ignoreNextKeyup","_ignoreNextKeypress","_nextExpectedAction","_globalCallbacks","_resetSequences","doNotReset","activeSequences","_getMatches","sequenceName","level","callback","matches","seq","metaKey","ctrlKey","modifiers1","modifiers2","join","deleteCombo","combo","deleteSequence","splice","_fireCallback","sequence","srcElement","HTMLElement","stopCallback","preventDefault","returnValue","stopPropagation","cancelBubble","_handleKey","callbacks","maxLevel","processedSequenceCallback","max","suffixPrefixIndex","lastIndexOf","sequencePrefix","slice","Object","entries","startsWith","ignoreThisKeypress","_handleKeyEvent","rawEvent","KeyboardEvent","repeat","keyCode","handleKey","altKey","eventModifiers","_resetSequenceTimer","clearTimeout","setTimeout","_bindSequence","_increaseSequence","nextAction","_callbackAndReset","wrappedCallback","_bindSingle","info","eventLike","callbackInfo","_bindMultiple","combinations","self","unbind","bindGlobal","unbindGlobal","trigger","reset","indexOf","composedPath","initialEventTarget","Boolean","tagName","isContentEditable","args","addKeycodes","object","addEventListener","KeybindingSet","addBinding","item","evt","onTrigger","_binds","removeAll","appEvents","getAppEvents","handleZoomOut","scene","timePicker","getTimePicker","onZoom","handleTimeRangeShift","direction","onMoveBackward","onMoveForward","toggleVizPanelLegend","vizPanel","optionsWithLegend","legend","showLegend","onOptionsChange","CopyTimeEvent","BusEventBase","PasteTimeEvent","BusEventWithPayload","getCopiedTimeRange","raw","clipboard","readText","unknownRange","parse","narrowTimeRange","isError","NoLokiSplash","h3","locationUtil","assureBaseUrl","up","marginBottom","showLogsButtonSceneKey","stateUpdate","drillDownLabel","setVariableProviders","findByKeyAndType","ShowLogsButtonScene","hidden","routeMatch","breakdownLabel","getDrilldownSlug","PageSlugs","explore","ServiceSelectionScene","ServiceScene","setTagProviders","updatePatterns","getPatternsVariable","resetVariablesIfNotInUrl","getFieldsVariable","getUrlParamNameForVariable","VAR_FIELDS","getLevelsVariable","_subs","add","subscribeToState","newState","getTimeRange","limitMaxInterval","subscribeToEvent","subscribeToPasteTimeEvent","fieldFilters","metadataFilters","getMetadataVariable","fieldsAndMetadataVariable","getFieldsAndMetadataVariable","updateFilters","subscribeToCombinedFieldsVariable","clearKeyBindings","keybindings","vizPanelKey","panelAttentionSubscription","subscribe","SetPanelAttentionEvent","payload","panelId","withFocusedPanel","fn","findObject","o","isActive","VizPanel","findAllObjects","withAllPanels","url","getExploreLink","locationService","activeScene","__grafanaSceneContext","publish","updateUrl","publishEvent","onRefresh","toAbsolute","unsubscribe","setupKeyboardShortcuts","setLabelsProviders","labelsVar","getLabelsVariable","_getOperators","operatorFunction","getTagKeysProvider","getTagValuesProvider","prevState","jsonData","plugin","interval","maxInterval","rangeUtil","intervalToSeconds","timeRangeInterval","to","diff","from","defaultRange","SceneTimeRange","DEFAULT_TIME_RANGE","AppEvents","alertWarning","attempted_duration_seconds","configured_max_interval","levelsVariable","fieldsCombinedVariable","getLevelsTagValuesProvider","getLevelsTagKeysProvider","getCombinedFieldsTagKeysProvider","getCombinedFieldsTagValuesProvider","currentKey","metadataVar","fieldVar","uninterpolatedExpression","getFieldsTagValuesExpression","otherFiltersString","renderVariableFilters","otherMetadataString","VAR_METADATA","PENDING_FIELDS_EXPR","PENDING_METADATA_EXPR","interpolate","interpolated","renderLogQLFieldFilters","renderLogQLMetadataFilters","urlParamName","location","getLocation","URLSearchParams","search","patternsVariable","patternsLine","renderPatternFilters","changeValueTo","getUrlState","updateFromUrl","getLastUsedDataSourceFromStorage","variablesScene","unsub","initialDatasourceUid","initialFilters","labelVariable","AdHocFiltersVariable","VAR_LABELS","EXPLORATION_DS","allowCustomValue","expressionBuilder","renderLogQLLabelFilters","hide","VariableHide","dontHide","onAddCustomValue","onAddCustomAdHocValue","operators","fieldsVariable","applyMode","hideVariable","metadataVariable","onAddCustomFieldValue","skipUrlSync","renderLevelsFilter","supportsMultiValueOperators","lineFiltersVariable","VAR_LINE_FILTERS","renderLogQLLineFilter","lineFilterOperators","dsVariable","DataSourceVariable","VAR_DATASOURCE","pluginId","dsValue","addLastUsedDataSourceToStorage","SceneVariableSet","CustomVariable","VAR_PATTERNS","VAR_LINE_FILTER","CustomConstantVariable","VAR_LOGS_FORMAT","MIXED_FORMAT_EXPR","getVariableSet","SceneFlexItem","disabled","SceneTimePicker","SceneRefreshPicker","config","featureToggles","exploreLogsAggregatedMetrics","ToolbarScene","isOpen","$timeRange","$variables","_urlSync","SceneObjectUrlSyncConfig","areArraysEqual","isFilterMetadata","copiedRange","newRange","convertRawToRange","sceneTimeRange","getLokiDatasource","then","ds","LoadingPlaceholder","LEVELS_VARIABLE_SCENE_KEY","onFilterChange","SceneVariableValueChangedEvent","levelsVar","selected","isLoading","visible","levelsKeys","response","skipPublish","forcePublish","filterOptions","opt","filterOpt","onChangeOptions","openSelect","onCloseMenu","syncLevelsVariable","levelsVariableScene","obj","levels","inputWrap","ControlsLabel","MultiSelect","prefix","placeholder","onChange","onOpenMenu","onFocus","menuShouldPortal","isClearable","blurInputOnSelect","closeMenuOnSelect","openMenuOnFocus","showAllSelectedWhenOpen","hideSelectedOptions","val","LineFilterVariable","focus","setFocus","getLineFilterStyles","span","titleWrap","IconButton","collapseWrap","LineFilterEditor","collapseBtn","tooltip","isFilterExclusive","LineFilterOp","negativeMatch","negativeRegex","updateFilter","existingFilter","filterUpdate","debounced","updateVariableLineFilter","updateVariableDebounced","handleEnter","lineFilter","onRegexToggle","newOperator","match","regex","onToggleExclusive","onCaseSensitiveToggle","caseSensitive","LineFilterCaseSensitive","caseInsensitive","onInputChange","removeFilter","getLineFiltersVariable","otherFilters","keyLabel","search_string_in_variables_changed","searchQueryLength","containsLevel","debounce","sortLineFilters","lineFiltersWrap","lineFilterVar","exclusive","setExclusive","hasPositiveFilter","getLink","positiveFilter","find","getDrillDownIndexLink","button","LinkButton","index","header","showLogsButton","AGGREGATED_METRICS_USER_OVERRIDE_LOCALSTORAGE_KEY","pluginJson","userOverride","active","aggregatedMetrics","toggleAggregatedMetricsOverride","service_selection","aggregated_metrics_toggled","enabled","onToggleOpen","popover","background","primary","boxShadow","shadows","z3","weak","zIndex","marginRight","heading","fontWeight","fontWeightMedium","paddingBottom","gridTemplateColumns","rowGap","columnGap","Dropdown","overlay","AGGREGATED_METRIC_START_DATE","toLocaleString","Switch","aggregatedMetricsToggle","placement","onVisibleChange","ToolbarButton","icon","aggregatedMetricsMenu","getServicesScene","EmbeddedScene","makeIndexPage","SceneAppPage","prefixRoute","PageLayoutType","Custom","preserveUrlKeys","SERVICE_URL_KEYS","routePath","getScene","drilldowns","ROUTE_DEFINITIONS","logs","getPage","parent","makeBreakdownPage","defaultRoute","labels","CHILD_ROUTE_DEFINITIONS","makeBreakdownValuePage","ValueSlugs","makeRedirectPage","PLUGIN_BASE_URL","hideFromBreadcrumbs","$behaviors","navigateToIndex","slug","labelName","labelValue","extractValuesFromRoute","capitalizeFirstLetter","ROUTES","DRILLDOWN_URL_KEYS","getParentPage","SUB_ROUTES","AddToInvestigationButton","queries","getQueries","context","getContext","data","getData","queryRunner","findObjectOfType","SceneQueryRunner","frame","getFilter","q","legendFormat","getFieldConfig","panel","frames","series","fieldConfig","properties","id","existingOverride","overrides","matcher","displayNameFromDS","displayName","unshift","fieldName","uid","ctx","origin","logoPath","links","usePluginLinks","extensionPointId","ExtensionPoints","MetricInvestigation","description","filterNameAndValueObj","ADD_TO_INVESTIGATION_MENU_TEXT","ADD_TO_INVESTIGATION_MENU_DIVIDER_TEXT","ADD_TO_INVESTIGATION_MENU_GROUP_TEXT","AvgFieldPanelType","CollapsablePanelText","PanelMenu","addItem","setItems","items","addInvestigationsLink","iconClassName","onExploreLinkClickTracking","shortcut","viz","VizPanelMenu","investigationsButton","investigationOptions","getLabelName","activate","panelType","collapsible","addVisualizationHeader","menu","collapsed","newCollapsableState","vizPanelFlexLayout","setValueSummaryHeight","setPanelOption","addCollapsableItem","gridItem","SceneCSSGridItem","clone","$data","headerActions","PanelBuilders","timeseries","setOverrides","setLevelColorOverrides","histogram","setMenu","setTitle","setHeaderActions","setData","build","newPanelType","fieldsAggregatedBreakdownScene","FieldsAggregatedBreakdownScene","rebuildAvgFields","onSwitchVizTypeTracking","addHistogramItem","exploreLogsVizPanelMenu","addToInvestigationButton","getInvestigationLink","existingMenuItems","existingAddToExplorationLink","onAddToInvestigationClick","subscribeToAddToInvestigation","getQueryRunnerFromChildren","breakdownScene","FieldValuesBreakdownScene","LabelValuesBreakdownScene","queryProvider","uninterpolatedExpr","open","getQueryExpr","trimEnd","displayedFields","getDisplayedFields","visualisationType","getLogsVisualizationType","columns","urlColumns","unknownToStrings","columnsParam","getUrlColumns","exploreState","toURLRange","refId","panelsState","labelFieldName","DATAPLANE_LABELS_NAME","subUrl","appSubUrl","urlUtil","renderUrl","panes","schemaVersion","onExploreLinkClick","all","open_in_explore_menu_clicked","newVizType","change_viz_type","addToInvestigation","getPluginLinkExtensions","extensions","getPanelWrapperStyles","panelWrapper","opacity","visibility","shade","AddFilterEvent","source","ClearFilterEvent","addAdHocFilter","addToFilters","clearFilters","getUIAdHocVariable","fieldValue","getValueFromAdHocVariableFilter","getNumericOperatorType","op","gt","gte","lt","lte","removeNumericFilter","resolveVariableTypeForField","operatorType","NotEqual","addNumericFilter","valueObject","getParserForField","addToFavorites","valueLabel","filterExists","validateVariableNameForField","variableName","getDetectedLabelsFrame","AddToFiltersButton","setFilterState","filterInSelectedFilters","isMetadata","add_to_filters_in_breakdown_clicked","filterType","filtersLength","getAdHocFiltersVariable","BreakdownSearchReset","recentFilters","BreakdownSearchScene","filterValues","LabelBreakdownScene","FieldsBreakdownScene","cacheKey","byFrameRepeater","findDescendents","ByFrameRepeater","child","filterByString","typeofBody","onValueFilterChange","clearValueFilter","SearchInput","performRepeat","newChildren","sortedSeries","sortSeries","sortBy","seriesIndex","layoutChild","getLayoutChild","unfilteredChildren","layoutSwitcher","LayoutSwitcher","singleGraphParent","VALUE_SUMMARY_PANEL_KEY","SceneDataTransformer","transformations","limitFramesByName","pipe","newFrames","getLabelValue","typeofPanel","typeofGraphParent","iterateFrames","haystack","fuzzySearch","filterFrames","filterSummaryChart","filterFn","buildNoResultsScene","clearFilter","prevData","LoadingState","Done","Streaming","SceneReactObject","reactNode","alertContainer","noResultsAlert","clearButton","minWidth","EmptyLayoutScene","emptyStateStyles","FieldSelector","setSelected","selectableOptions","InlineField","selectWrapper","Select","select","ServiceFieldSelector","selectOption","initialFilter","customOption","setCustomOption","allOptions","selectedOption","serviceSceneSelectWrapper","exploreServiceSearch","__isNew__","actionMeta","prevInputValue","wrapWildcardSearch","input","x1","Selector","getTagKey","groupByVariable","getFieldGroupByVariable","buildQuery","buildQueryRunner","onValuesDataQueryChange","runQuery","setSubscriptions","getQueryRunner","runQueriesMode","tagKey","detectedFieldsFrame","getDetectedFieldsFrame","queryString","buildFieldsQueryString","filterExpression","removeFieldLabelFromVariableInterpolation","expression","buildDataQuery","getParserForThisField","setFieldParserSubscriptions","setMetadataParserSubscriptions","getSceneQueryRunner","rebuildQuery","runQueries","queryRunners","getQueryParser","fieldsVar","setErrorState","errors","err","status","strong","message","traceId","optionValue","getSortByPreference","DEFAULT_SORT_BY","fieldsBreakdownScene","layouts","LabelsMenu","ValueSummaryPanelScene","ValuesMenu","SceneCSSGridLayout","templateColumns","FIELDS_BREAKDOWN_GRID_TEMPLATE_COLUMNS","autoRows","isLazy","getFilterBreakdownValueScene","DrawStyle","Bars","Line","getParserFromFieldsFilters","parserForFields","getParserForFields","updateChildren","newParser","getDetectedFieldsFrameFromQueryRunnerState","newNamesField","getDetectedFieldsNamesFromQueryRunnerState","newParsersField","getDetectedFieldsParsersFromQueryRunnerState","cardinalityMap","calculateCardinalityMap","newFieldsSet","updatedChildren","fieldType","getDetectedFieldType","dataTransformer","getQueryRunnerForPanel","delete","buildChildren","sortChildren","subscribeToPanel","aPanel","bPanel","aCardinality","Map","cardinality","set","serviceScene","fieldsCount","updateFieldCount","$detectedFieldsData","onDetectedFieldsChange","subscribeToFieldsVar","newParsers","oldParsers","extractParserFromArray","detectedFieldsState","childrenClones","getResultsStream","isHidden","activeLayout","getActiveGridLayouts","getPanelOption","panels","isAvgField","newChild","buildChild","ALL_VARIABLE_VALUE","SelectLabelActionScene","hideValueDrilldown","setCustomFieldConfig","mode","StackingMode","Normal","setSeriesLimit","MAX_NUMBER_OF_TIME_SERIES","l","activeLayoutChildren","activePanels","changeFieldCount","loading","$detectedLabelsData","SortCriteriaChanged","handleSortByChange","variableChanged","getPrimaryLabelFromUrl","newService","prevService","oldState","updateOptions","checkPrimaryLabel","dataFrame","getVariablesThatCanBeCleared","NoMatchingLabelsScene","clearCallback","clearVariables","getFieldOptions","updateBody","VAR_FIELD_GROUP_BY","defaultToAll","includeAll","SortByScene","_variableDependency","VariableDependencyConfig","variableNames","value_breakdown_sort_change","criteria","onFieldSelectorChange","select_field_in_breakdown_clicked","previousField","getValueText","view","sortByDirection","navigateToValueBreakdown","labelsMenuWrapper","valuesMenuWrapper","blockingMessage","StatusWrapper","content","textDecoration","paddingTop","LabelsAggregatedBreakdownScene","$detectedLabels","update","updateQueriesOnFieldsVariableChange","getPanelByIndex","detectedLabelsFrame","newLabels","getLabelGroupByVariable","layoutObj","existingLabels","newLabelsSet","detectedLabels","LABEL_BREAKDOWN_GRID_TEMPLATE_COLUMNS","buildLabelsQuery","setHoverHeader","onDetectedLabelsDataChange","onLabelsVariableChange","onGroupByVariableChange","SERVICE_UI_LABEL","SERVICE_NAME","newPrimaryLabel","prevPrimaryLabel","getLabelOptions","hasAllValue","VAR_LABEL_GROUP_BY","previousLabel","VAR_LABEL_GROUP_BY_EXPR","removeValueLabelFromVariableInterpolation","setEmptyStates","setErrorStates","errorIndex","displayed","showErrorToast","getActiveLayout","repeater","variableState","labelBreakdownScene","bodyOpts","levelColor","errorArray","displayError","activeLayoutContainsNoPanels","alertError","renderError","onLayoutChange","layout_type_changed","Field","RadioButtonGroup","findIndex","setCollapsible","setCollapsed","buildValueSummaryPanel","getValueSummaryHeight","extendPanelContext","extendTimeSeriesLegendBus","maxHeight","syncLevelsVisibleSeries","syncLabelsValueSummaryVisibleSeries","syncFieldsValueSummaryVisibleSeries","getFieldsVariableLegendSyncSubscription","sceneFlexItem","isLevel","initLegendOptions","getLabelsVariableLegendSyncSubscription","getQuerySubscription","onToggleSeriesVisibility","toggleLevelFromFilter","toggleLabelFromFilter","toggleFieldFromFilter","label_in_panel_summary_clicked","collapsableState","suffix","rest","Input","suffixWrapper","clearIcon","DisplayDurationUnits","DisplayByteUnits","NumericFilterPopoverScene","gtFilter","ltFilter","extractedValue","extractValueFromString","gtu","unit","ltu","Number","hasExistingFilter","onSubmit","togglePopover","units","onInputKeydown","formDisabled","inputString","inputType","durationValue","durationValueLength","isNaN","bytesValue","byteValueLength","getUnitOptions","popoverStyles","getPopoverStyles","subTitle","selectLabelActionScene","ClickOutsideWrapper","useCapture","Stack","role","card","fieldWrap","FieldSet","fieldset","breakdowns","common","filterNumericPopover","inputGreaterThanInclusive","horizontal","inclusiveField","inclusiveInput","inputGreaterThan","onKeyDownCapture","autoFocus","currentTarget","numberInput","Label","inputGreaterThanUnit","unitFieldLabel","selectInput","inputLessThanInclusive","inputLessThan","inputLessThanUnit","buttons","submitButton","cancelButton","numberFieldLabel","switchFieldLabel","INCLUDE_VALUE","EXCLUDE_VALUE","NUMERIC_FILTER_VALUE","getVariable","getExistingFilter","EMPTY_VARIABLE_VALUE","onClickExcludeEmpty","onClickIncludeEmpty","onClickNumericFilter","selectedValue","calculateSparsity","newLogsPanelState","showPopover","logsPanelData","getLogsPanelFrame","hasNumericFilters","hasSparseFilters","logLinesWithLabelCount","reduce","acc","percentage","existingFilterValue","detectedFieldFrame","getViewValuesLink","getValueBreakdownLink","SelectableValueComponent","getSelectableValueComponentStyles","popoverRef","useRef","filterButtonDisabled","hasOtherFilter","selectedOptionValue","hasExistingNumericFilter","numericSelected","includeSelected","sparseIncludeOption","component","sparseExcludeOption","numericFilterOption","defaultOption","ButtonGroup","filterButtonGroup","filterButton","ref","ButtonSelect","filterSelect","buttonSelect","PopoverController","showPopper","hidePopper","popperProps","blurFocusProps","onBlur","current","Popover","show","wrapperClassName","referenceElement","renderArrow","left","warning","pxToRem","borderTopLeftRadius","borderBottomLeftRadius","sortingOptions","ReducerID","stdDev","sum","min","fieldReducers","selectOptions","filterReducerOptions","onCriteriaChange","setSortByPreference","onDirectionChange","sortByValue","htmlFor","sortByFunction","isSearchable","inputId","ENABLED_PERCENTILES","ext","getLabelValueFromDataFrame","statusMessage","fontStyle","getFocusStyles","outline","outlineOffset","canvas","transitionTimingFunction","transitionDuration","transitionProperty","getIconButtonBefore","hoverSize","transitions","handleMotion","RegexIconButton","maxContrast","Tooltip","viewBox","xmlns","x","y","dominantBaseline","textAnchor","gridSize","x0_5","hover","colorManipulator","alpha","LineFilterCaseSensitivityButton","LineFilterInput","rows","INITIAL_INPUT_WIDTH","onSubmitLineFilter","onClearLineFilter","setWidth","resize","useEffect","searchLogs","inputNoBorderRight","onKeyUp","buttonWrap","removeBtn","submit","exclusiveBtn","LogOptionsScene","handleWrapLinesChange","getLogsPanelScene","wrapLogMessage","setLogOption","getLogsListScene","setLogsVizOption","prettifyLogMessage","onChangeLogsSortOrder","sortOrder","LogsListScene","LogsPanelScene","clearDisplayedFields","logs_clear_displayed_fields","getLogsPanelSortOrderFromStore","getLogOption","LogsSortOrder","Descending","getLogsPanelSortOrderFromURL","decodedSortOrder","narrowLogsSortOrder","onChangeVisualizationType","visualizationType","wrapLines","buttonGroupWrapper","transparent","Ascending","LogsPanelHeaderActions","vizType","tableColumnCustomWidths","LogLineState","TableColumnsContext","createContext","columnWidthMap","setColumnWidthMap","filteredColumns","setColumns","setFilteredColumns","setVisible","bodyState","setBodyState","clearSelectedLine","TableColumnContextProvider","initialColumns","logsFrame","setUrlColumns","setUrlTableBodyState","urlTableBodyState","showColumnManagementDrawer","isColumnManagementActive","removeExtraColumns","initialColumnWidths","existingWidths","narrowRecordStringNumber","NarrowingError","getColumnWidthsFromLocalStorage","setColumnWidthMapState","handleSetColumns","useCallback","newColumns","activeColumns","colA","colB","getActiveColumns","handleSetBodyState","logLineState","handleSetVisible","isVisible","pendingLabelState","newColumnsArray","pa","pb","timeField","bodyField","defaultColumns","getDefaultColumns","col","pendingColumns","getTimeName","percentOfLinesWithLabel","Infinity","getBodyName","setDefaultColumns","Provider","labelTypes","columnsToSet","useTableColumnContext","useContext","TableCellContext","cellIndex","numberOfMenuItems","setActiveCellIndex","TableCellContextProvider","cellActive","setCellActive","handleCellActive","useTableCellContext","TableHeaderContext","isHeaderMenuActive","setHeaderMenuActive","TableHeaderContextProvider","handleisHeaderMenuActive","useTableHeaderContext","LogsColumnSearch","searchValue","setSearchValue","dispatcher","newColumnsWithMeta","numberOfResults","searchResultCount","reportInteraction","resultCount","searchWrap","needle","debouncedFuzzySearch","LogsTableEmptyFields","empty","LogsTableNavField","dragIcon","labelCount","appearance","contentWrap","customWidthWrap","checkboxLabel","whiteSpace","Checkbox","checked","showCount","omit","draggable","LogsTableActiveFields","reorderColumn","valueFilter","toggleColumn","dragging","columnWrapper","getLogsFieldsStyles","labelKeys","renderTitle","DragDropContext","onDragEnd","destination","Droppable","droppableId","provided","droppableProps","innerRef","la","lb","sortLabels","Draggable","draggableId","snapshot","isDragging","draggableProps","dragHandleProps","collator","Intl","Collator","sensitivity","LogsTableAvailableFields","borderBottom","compare","LogsTableMultiSelect","sidebarWrap","overflowY","scrollbarWidth","columnHeaderButton","columnHeader","h6","clear","filteredColumnsWithMeta","columnsWithMeta","getReorderColumn","sourceIndex","destinationIndex","ColumnSelectionDrawerWrap","columnName","logContext","logError","c","priorActiveCount","column","columnAction","columnCount","columnFilterEvent","pendingFilteredLabelState","isDefaultField","DefaultCellWrapComponent","CellWrapInnerComponent","onMouseOut","onMouseIn","rowIndex","cellState","overflowX","onMouseEnter","initialState","addFilter","selectedLine","QueryContext","QueryContextProvider","useQueryContext","CellContextMenu","pillType","menuItemsWrap","menuItem","showColumn","path","fillRule","clipRule","d","fillOpacity","LEVEL_NAME","DefaultPill","mappings","getFieldMappings","isPillActive","activePillWrap","pillWrap","pill","menuItemText","FieldType","time","LineActionIcons","clipboardButton","lineHeight","inspectButton","verticalAlign","iconWrapper","z2","inspect","logId","idField","lineValue","isInspecting","setIsInspecting","getText","generateLogShortlink","row","table","inspectLine","tooltipPlacement","tabIndex","ClipboardButton","Modal","onDismiss","pre","ButtonRow","DefaultCellComponent","getCellLinks","displayValue","number","linkWrapper","hasLinks","React","formattedValueToString","fieldIndex","showColumns","renderValue","getLinks","DataLinksContextMenu","api","openMenu","LogLinePillValue","activePill","valueWrap","menuActive","onClickAdd","LogLinePill","templateSrv","getTemplateSrv","useMemo","other","originalField","isDerivedField","originalFrame","getLinksSupplier","subFieldName","addFieldToColumns","stopScroll","scrollTo","scrollLeft","Scroller","scrollerRef","scroller","scrollRight","onPointerDown","behavior","onPointerUp","scrollWidth","RawLogLineText","rawLogLine","bgColor","fontFamilyMonospace","LogLineCellComponent","isHover","setIsHover","untransformedField","rawValue","isDerived","untransformedValue","string","renderLabels","isAuto","auto","hasLabels","ScrollSyncPane","LogsTableHeader","isFirstColumn","isLine","logLineButton","tableHeaderMenu","leftAlign","rightAlign","defaultContentWrapper","isBodyField","onLogTextToggle","defaultContent","LogsTableHeaderWrap","hideColumn","pendingColumnState","columnIndex","cols","headerProps","linkWrap","openColumnManagementDrawer","slideLeft","reverse","slideRight","autoColumnWidths","TableAndContext","GrafanaTable","onColumnResize","onResize","initialSortBy","desc","initialRowIndex","cellHeight","TableCellHeight","Sm","footerOptions","reducer","countRows","Table","timeZone","section","tableWrap","tableFrame","setTableFrame","localSelectedLine","prepareTableFrame","frameWithOverrides","applyFieldOverrides","replaceVariables","defaults","custom","guessLogsFieldTypeForField","filterable","headerComponent","getInitialFieldWidth","cellOptions","getTableCellOptions","prepare","isFieldLokiLabels","typeInfo","DataFrameType","LogLines","isFieldDataplaneLabels","flatMap","format","keepTime","labelFiltersTransform","labelFilters","labelFiltersInclude","indexByName","includeByName","getOrganizeFieldsTransform","buildColumnsWithMeta","specialFields","extraFields","getDefaultStateOrganizeFieldsTransform","transformedDataFrame","lastValueFrom","transformDataFrame","getIdName","lineIndex","cleanLineIndex","Drawer","onClose","ScrollSync","vertical","proportional","fieldDisplayName","guessLogsFieldTypeForValue","critical","crit","eror","debug","trace","MappingType","ValueToText","cellComponent","TableCellDisplayMode","tableWidth","numberOfFields","extraPadding","columnMeta","maxLength","iso8601Regex","TableWrap","panelWrapSize","setPanelWrapSize","useResizeObserver","panelWrap","clientWidth","clientHeight","getTimeZone","getColumnsFromProps","fieldNames","previouslySelected","getLogFrameLabelsAsLabels","numberOfLogLines","labelMap","fieldLabels","setObj","valueSet","getCardinalityMapFromLabels","cardinalityCount","fromEntries","normalize","mapLabelsToInitialState","specialFieldArray","addSpecialLabelsState","setSpecialFieldMeta","total","ceil","guessFieldTypeFromValue","TableProvider","parseLogsFrame","LogsTableScene","parentModel","tableLogLineState","timeRangeValue","PanelChrome","loadingState","actions","setVisualizationType","getVariableForLabel","areArraysStrictlyEqual","LineFilterScene","getLineFilterVariable","updateInputState","updateVariable","getLineFilterCase","getLineFilterRegex","getLineFilterExclusive","cancel","setLineFilterExclusive","flush","thisFilter","clearVariable","handleChange","setLineFilterCase","setLineFilterRegex","getFilterKey","getOperator","search_string_in_logs_changed","decodedUrlColumns","unknownTableRow","narrowSelectedTableRow","decodedSelectedTableRow","decodedVisualizationType","narrowLogsVisualizationType","searchParams","setStateFromUrl","updateLogsPanel","selectedLineUrl","urlColumnsUrl","vizTypeUrl","displayedFieldsUrl","getVizPanel","logsPanelScene","xSizing","lineFilterScenes","lineFilterScene","logs_visualization_toggle","setLogsVisualizationType","contain","CopyLinkButton","copied","setCopied","timeoutId","handleClick","LogsPanelError","decodedWrapLogMessage","getLogsPanel","handleLogsError","isEmptyLogsResult","handleNoData","clearLogsError","logsCount","getTitle","errorResponse","statusText","errorMessage","showLogsError","logsVolumeCollapsedByError","getLogsVolumeOption","logsVolume","logsVolumePanelKey","LogsVolumePanel","getParentScene","formattedCount","valueFormatter","getValueFormat","trim","setOption","handleLabelFilterClick","handleLabelFilterOutClick","handleIsFilterLabelActive","handleFilterStringClick","handleFilterOutStringClick","onClickShowField","onClickHideField","getPrettyQueryExpr","updateVisibleRange","handleShareLogLineClick","handleLabelFilter","logs_detail_filter_applied","setDisplayedFields","logs_toggle_displayed_field","displayedField","newLogs","rowId","resolveRowTimeRangeForSharing","copyText","metadata","hasKeyValueFilter","fieldFilter","hasKeyValueFilterField","lineFiltersVar","logs_popover_line_filter","selectionLength","LogsVolumeActions","TemporaryExemptionsButton","usePluginComponent","streamSelector","dataSourceUid","contextHints","updateContainerHeight","totalLogsCount","formattedTotalCount","maxLines","LINE_LIMIT","calcs","displayMode","LegendDisplayMode","List","setUnit","getTimeSeriesExpr","setLogsVolumeFieldConfigs","setLogsVolumeOption","annotations","displayVisibleRange","containerLayout","innerHeight","updatedLogSeries","visibleRange","getSeriesVisibleRange","getVisibleRangeFrame","levelFilter","level_in_logs_volume_clicked","onPatternClick","filteredPatterns","staleIndex","pattern_selected","logsStatsRow","logsStatsRowActive","logsStatsRowLabel","logsStatsRowValue","logsStatsRowCount","logsStatsRowPercent","logsStatsRowBar","logsStatsRowInnerBar","PatternFieldLabelStatsRow","count","proportion","style","percent","barStyle","logsStats","wordBreak","logsStatsHeader","medium","logsStatsTitle","logsStatsClose","logsStatsBody","PatternFieldLabelStats","stats","topRows","activeRow","otherRows","otherCount","combinedRows","stat","PatternNameLabel","exploration","patternIndices","indices","currentIndex","extractPatternIndices","setStats","statsError","setStatsError","previousQueryRef","previousTimeRangeRef","handlePatternClick","pattern_field_clicked","patternExtractor","_value","constructQuery","currentTimeRange","requestId","intervalMs","targets","timezone","app","startTime","fieldCount","fieldStatsMap","toArray","fieldStats","convertResultToStats","parts","part","Toggletip","onOpen","Spinner","emphasize","PatternsLogsSampleScene","queryWithFilters","LOG_STREAM_SELECTOR_EXPR","replacePatternsInQuery","queryRunnerWithFilters","onQueryWithFiltersResult","pendingPattern","VAR_PATTERNS_EXPR","removePatternFromFilterExclusion","patternsViewTableScene","PatternsViewTableScene","patternsNotMatchingFilters","setWarningMessage","noticeFlexItem","getNoticeFlexItem","vizFlexItem","getVizFlexItem","getFlexItemChildren","excludeThisPatternFromFiltering","patternsThatDontMatchCurrentFilters","filterVariable","onQueryError","every","traceIds","request","panelFlexItem","queryWithoutFilters","PATTERNS_SAMPLE_SELECTOR_EXPR","queryRunnerWithoutFilters","PatternsTableExpandedRow","tableViz","expandedRows","rowScene","newRowScene","SCALED_UNITS","appliedPatterns","getColumnStyles","cell","panelData","original","dataNode","SceneDataNode","timeSeries","TooltipDisplayMode","None","AxisPlacement","Hidden","setDisplayMode","tableTimeSeriesWrap","tableTimeSeries","sortType","scaledUnits","countTextWrap","toFixed","getTablePatternTextStyles","tablePatternTextDefault","getExplorationFor","disableGrow","existingPattern","appliedPattern","includeLink","excludeLink","undoLink","patternFrames","legendSyncPatterns","logExploration","patternFrame","getTableStyles","patternsFrameScene","PatternsFrameScene","patternFramesRaw","previousValue","tableData","buildTableData","buildColumns","tableWrapper","InteractiveTable","getRowId","renderExpandedRow","theme2","overflowWrap","th","navbarFixed","pointerEvents","palette","visualization","newFrame","$patternsData","prevFrame","patternsBreakdownScene","PatternsBreakdownScene","patternFilter","forEachChild","getTimeseriesDataNode","getSingleViewLayout","originalOnToggleSeriesVisibility","override","patternsToShow","names","getTimeSeries","asTable","setLinks","targetBlank","fixedColor","overrideToFixedColor","logsByServiceScene","PatternsViewTextSearch","onSearchResult","setFilteredPatterns","patternFramesOverride","filteredPatternFrames","clearSearch","handleSearchChange","setEmptySearch","PatternsNotDetected","TextLink","external","PatternsTooOld","PATTERNS_MAX_AGE_HOURS","setBody","onDataChange","ySizing","updatePatternFrames","dataFrames","dataFrameToPatternFrame","prevFrames","Loading","controlsRight","controlsLeft","justifyItems","patternMissingText","timeRangeTooOld","dateTime","code","TabNames","breakdownViewsDefinitions","testId","tabLogs","behaviors","sync","DashboardCursorSync","Crosshair","tabLabels","buildFieldsBreakdownActionScene","changeFieldNumber","tabFields","tabPatterns","valueBreakdownViews","buildLabelValuesBreakdownActionScene","buildFieldValuesBreakdownActionScene","ShareButtonScene","setIsOpen","onCopyLink","shorten","absTime","createAndCopyShortLink","global","isAbsoluteTime","protocol","host","lastSelected","defaultMode","MenuActions","menuOptions","getUrl","constructAbsoluteUrl","getSceneTimeRange","Menu","groupOption","MenuGroup","Item","narrow","getRelativeURLPath","createShortLink","getBackendSrv","post","shortLink","alertSuccess","toUtc","getUrlSearchParams","toISOString","pathname","ActionBarScene","dataSource","shareButtonScene","currentBreakdownViewSlug","allowNavToParent","drilldownValueSlug","getDrilldownValueSlug","loadingStates","Box","paddingY","appSidecar","ToolbarExtensionsRenderer","TabsBar","tab","Tab","counter","getCounter","totalCount","getLogsCountStyles","logsCountStyles","emptyCountStyles","LogsCount","getDrillDownTabLink","onChangeTab","action_view_changed","newActionView","previousActionView","patternsCount","labelsCount","md","right","setFilters","sub","limitPerPlugin","ariaLabel","removeEscapeChar","charsEscapedByEscapeRegExp","char","stringArray","nextChar","isNextCharRegex","LOGS_PANEL_QUERY_REFID","LOGS_COUNT_QUERY_REFID","setSubscribeToLabelsVariable","redirectToStart","prevRouteMatch","replaceSlash","$logsCount","newPrimaryLabelValue","isAdHocFilterValueUserInput","stripAdHocFilterUserInputPrefix","isExact","resetTabCount","navigateToDrilldownPage","getMetadataService","setServiceSceneState","showVariables","getServiceSceneState","getMetadata","resetBodyAndData","setBreakdownView","subscribeToPatternsQuery","subscribeToDetectedLabelsQuery","subscribeToDetectedFieldsQuery","subscribeToLogsQuery","subscribeToLogsCountQuery","subscribeToFieldsVariable","subscribeToMetadataVariable","subscribeToLevelsVariableChangedEvent","subscribeToLevelsVariableFiltersState","subscribeToDataSourceVariable","subscribeToPatternsVariable","subscribeToLineFiltersVariable","subscribeToTimeRange","deprecatedLineFilterArray","deprecatedLineFilter","globalLineFilterVars","caseSensitiveMatches","caseInsensitiveMatches","migrateLineFilterV1","parentSlug","updateLoadingState","patternsResponse","setPatternsCount","detectedLabelsResponse","detectedLabelsFields","removeSpecialFields","setLabelsCount","updateFieldsCount","detectedFieldsFields","setFieldsCount","getServiceSceneQueryRunner","getPatternsQueryRunner","getDetectedLabelsQueryRunner","getDetectedFieldsQueryRunner","getLogCountQueryRunner","buildGraphScene","breakdownView","breakdownViewDef","valueBreakdownView","valueBreakdownViewDef","getResourceQueryRunner","buildResourceQuery","VAR_LABELS_EXPR","queryType","FavoriteServiceHeaderActionScene","setHover","isFavorite","removeFromFavorites","tooltipCopy","onMouseOver","SelectServiceButton","getLabelDrilldownLink","selectLabel","primaryLabelName","primaryLabelValue","service_selected","clonedVar","urlSync","ConfigureVolumeError","NoServiceSearchResults","TabPopoverScene","serviceSelectionScene","serviceSelectionTabsScene","ServiceSelectionTabsScene","tabOptions","tabOptionsWithIcon","saved","toggleShowPopover","setSelectedTab","getLabelsFromQueryRunnerState","$labelsData","populatePrimaryLabelsVariableOptions","selectedTab","getSelectedTab","savedTabs","getFavoriteTabsFromStorage","savedIndex","runDetectedLabels","runDetectedLabelsSubs","getServiceSelectionPrimaryLabel","selectDefaultLabelTab","removeSavedTab","removeTabFromLocalStorage","getTabsStyles","tabs","tabLabel","truncateText","addTab","NoServiceVolume","AddLabelToFiltersHeaderActionScene","isSelected","included","add_to_filters","ServiceSelectionPaginationScene","getPageCountStyles","searchPageCountWrap","searchFieldPlaceholderText","textWrapMode","PageCount","countPerPage","roundedTotalCount","getCountOptionsFromTotal","lastOptionValue","currentPage","setServiceSelectionPageCount","pagination","float","paginationWrap","paginationWrapMd","Pagination","numberOfPages","onNavigate","toPage","showSmallVersion","aggregatedMetricsEnabled","AGGREGATED_SERVICE_NAME","primaryLabelUrlKey","datasourceUrlKey","getSelectedTabFromUrl","addDatasourceChangeToBrowserHistory","newDs","dsUrl","currentUrl","newUrl","pushUrlHandler","addLabelChangeToBrowserHistory","newKey","primaryLabelRaw","primaryLabelSplit","addTabToLocalStorage","clearServiceSelectionSearchVariable","setServiceSelectionPrimaryLabelKey","buildServiceLayout","serviceLabelVar","primaryLabelVar","datasourceVar","splitDuration","getMetricExpression","isAggregatedMetricsActive","cssGridItem","runner","runPanelQuery","toolbar","getQueryOptionsToolbar","formatPrimaryLabelForUI","setVolumeQueryRunner","buildVolumeQuery","VAR_PRIMARY_LABEL_EXPR","VAR_LABELS_REPLICA_EXPR","subscribeToVolume","doVariablesNeedSync","labelsVarPrimary","labelsVarReplica","getLabelsVariableReplica","activeTab","filteredFilters","needsSync","syncVariables","fixRequiredUrlParams","subscribeToPrimaryLabelsVariable","subscribeToLabelFilterChanges","subscribeToActiveTabVariable","runVolumeOnActivate","subscribeToDatasource","subscribeToAggregatedMetricToggle","subscribeToAggregatedMetricVariable","isTimeRangeTooEarlyForAggMetrics","onUnsupportedAggregatedMetricTimeRange","runVolumeQuery","onSupportedAggregatedMetricTimeRange","getAggregatedMetricsVariable","isBefore","resetQueryRunner","updateAggregatedMetricVariable","updateTabs","getGridItems","requestTimeRange","fromDiff","abs","toDiff","labelsToQuery","getLabels","paginationScene","existingChildren","aggregatedMetricsVariable","datasourceVariable","existing","newChildTs","newChildLogs","buildServiceLogsLayout","serviceIndex","getLogExpression","labelsByVolume","dsString","searchString","getServiceSelectionSearchVariable","services","favoriteServicesToQuery","service","createListOfLabelsToQuery","getServiceSelectionPageCount","VAR_PRIMARY_LABEL_SEARCH","VAR_AGGREGATED_METRICS","hideLabel","VAR_PRIMARY_LABEL","renderPrimaryLabelFilters","VAR_LABELS_REPLICA","serviceLevel","onSearchServicesChange","primaryLabelSearch","searchVar","search_services_changed","searchQuery","getLevelFilterForService","serviceLevels","Off","allLevels","getLevelLabelsFromSeries","toggleLevelVisibility","updateServiceLogs","headingWrapper","loadingText","bodyWrapper","searchPaginationWrap","searchWrapper","searchField","serviceStringVariable","hasSearch","isLogVolumeLoading","volumeApiError","filterLabel","customValue","customLabel","unwrapWildcardSearch","serviceName","onSearchChange","goToLabelDrillDownLink","MultiValueVariable","getValueOptions","of","renderSelectForVariable","equalsFilters","notEqualsFilters","regexEqualFilters","regexNotEqualFilters","getCombinedLabelFilters","adHocFilters","operatorFilters","joinedValues","joinCombinedFiltersValues","ltFilters","lteFilters","gtFilters","gteFilters","filtersString","buildLabelsLogQLFromFilters","getLabelsExpr","joinMatchFilters","decodeFilters","getExpr","filterSeparator","equalFiltersStrings","notEqualsFiltersStrings","regexEqualFiltersStrings","regexNotEqualFiltersStrings","ltFiltersStrings","lteFiltersStrings","gtFiltersStrings","gteFiltersStrings","allFilters","buildJoinedFilters","LabelFilterOp","RegexEqual","RegexNotEqual","getFilterValues","buildFilter","NumericFilterOp","allFiltersString","combineValues","equal","notEqual","regexEqual","regexNotEqual","groupFiltersByKey","combineFiltersValues","mergeFilters","removeStaleOperators","filterStrings","filtersWithSameOperatorsAndKeys","isOperatorNumeric","buildFilterString","positiveFilterValueSeparator","negativeFilterValueSeparator","expectedOperator","operatorTo","filtersFrom","filtersTo","valuesToMove","mergeCombinedFiltersValues","separator","filterCombinedValues","filtersByKey","multipleValuesOperator","updatedOperatorAndEscapedValues","currentOperator","narrowFilterOperator","updatedOperator","firstFilter","filterString","escapeFieldValue","escapeFieldValues","isUserInput","sceneUtils","escapeLabelValueInExactSelector","escapeLabelValueInRegexSelector","quoteChar","ignoreKeys","positiveMatch","positiveRegex","isOperatorExclusive","positiveMatchGroup","groupBy","positiveRegexGroup","negativeMatchGroup","negativeRegexGroup","gtGroup","gteGroup","ltGroup","lteGroup","getExpressionBuilderDebug","page","createInteractionName","open_in_explore_clicked","wasm_not_supported","interval_too_long","arr1","arr2","set1","set2","requestSupportsSharding","nodeType","isQueryWithNode","iterate","enter","MetricExpr","isLogsQuery","isLogsRequest","isInstantQuery","SHARDING_PLACEHOLDER","addShardingPlaceholderSelector","interpolateShardingSelector","shards","shardValue","RegExp","resolveIdx","destField","sourceField","idx","closestIdx","nanos","compareEntries","destTimeField","destIdField","destIndex","sourceTimeField","sourceIdField","sameTimestamp","compareNsTimestamps","findSourceField","referenceField","sourceFields","candidates","TOTAL_BYTES_STAT","getCombinedMetadataStats","destStats","sourceStats","destStat","s","sourceStat","eitherStat","cloneDataFrame","runShardSplitQuery","interpolateVariablesInQueries","splittingTargets","shouldStop","mergedResponse","uuidv4","subquerySubscription","retriesMap","retryTimer","runNextRequest","subscriber","cycle","groupSize","nextGroupSize","retrying","done","next","complete","nextRequest","nextCycle","retry","isRetriableError","traces","floor","sqrt","retries","pow","shardsToQuery","groupShardRequests","subRequest","partialResponse","constrainGroupSize","currentSize","metaExecutionTime","executionTime","updateGroupSizeFromResponse","currentResult","newResult","currentFrame","frame1","frame2","frameType1","TimeSeriesMulti","field1","field2","compareLabels","customType1","frameType","customType2","shouldCombine","dest","sourceTimeValues","totalFields","destIdx","entryExistsInDest","mergeFrames","mergedErrors","mergedError","mergedTraceIds","combineResponses","runNonSplitRequest","Observable","selector","getNodesFromQuery","getSelectorForShardValues","isValidQuery","fetchLabelValues","getInitialGroupSize","catch","splitQueriesByStreamShard","DEBUG_ENABLED","log","WRAPPED_LOKI_DS_UID","DETECTED_FIELDS_NAME_FIELD","DETECTED_FIELDS_CARDINALITY_NAME","DETECTED_FIELDS_PARSER_NAME","DETECTED_FIELDS_TYPE_NAME","WrappedLokiDatasource","RuntimeDataSource","__sceneObject","valueOf","targetsSet","resource","getVolume","getPatterns","getDetectedLabels","getDetectedFields","shardingEnabled","exploreLogsShardSplitting","updatedRequest","sanitizeStreamSelector","interpolatedTarget","dsResponse","utc","step","headers","lokiPatterns","maxValue","minValue","timeValues","countValues","samples","createDataFrame","preferredVisualisationType","targetsInterpolated","sortLabelsByCardinality","detectedLabelFields","nameField","cardinalityField","parserField","typeField","FIELDS_TO_REMOVE","primaryLabel","volumeResponse","lhs","rhs","lVolumeCount","rVolumeCount","df","metric","labelsResponse","testDatasource","registerRuntimeDataSource","streamSelectorName","excludeEmpty","metadataExpressionToAdd","VAR_METADATA_EXPR","VAR_LINE_FILTERS_EXPR","VAR_FIELDS_EXPR","JSON_FORMAT_EXPR","LOGS_FORMAT_EXPR","DETECTED_LEVELS_VALUES_EXPR","DETECTED_FIELD_AND_METADATA_VALUES_EXPR","rerenderFavorites","forceRender","addToFavoriteLabelValueInStorage","removeFromFavoritesInStorage","getReducerId","extractParserFromString","parserString","extractFieldTypeFromString","fieldString","parsersSet","parsersArray","namesField","sortByScene","labelKey","frameIndex","reducerID","selectFrameTransformation","setDisplayName","labelType","getLabelTypeFromFrame","LabelType","Parsed","Indexed","StructuredMetadata","getFilterTypeFromLabelType","parserForThisField","typesField","optionType","parserFromFilterValue","fieldExpressionToAdd","structuredMetadataToAdd","getLogsStreamSelector","buildFieldsQuery","labelOptions","optionName","labelExpressionToAdd","getLabelsFromSeries","labelsVariable","getVisibleLabels","allLabels","getVisibleFilters","getVisibleFields","getVisibleMetadata","inclusiveFilters","exclusiveLabels","visibleLevels","SeriesVisibilityChangeMode","ToggleSelection","existingLevel","getVisibleLevels","levelsFilter","wantedLevels","normalizeLevelName","unwantedLevels","getField","cache","getFieldByName","DATAPLANE_TIMESTAMP_NAME","DATAPLANE_BODY_NAME","DATAPLANE_SEVERITY_NAME","DATAPLANE_ID_NAME","logFrameLabelsToLabels","logFrameLabels","k","FieldCache","timestampField","severityField","labelsField","getLogFrameLabels","timeNanosecondField","getLabelFieldName","parseDataplaneLogsFrame","getFirstFieldOfType","getL","lineField","lineLabels","makeLabelsArray","makeLabelsGetter","parseLegacyLogsFrame","oldestFirst","VISIBLE_RANGE_NAME","arrayToDataFrame","timeEnd","isRegion","dataTopic","DataTopic","Annotations","metadataService","initializeMetadataService","MetadataService","serviceSceneState","previousRoute","buildDrilldownPageUrl","extraQueryParams","buildDrilldownPageRoute","newPath","urlLabelName","urlLabelValue","urlPath","buildValueBreakdownUrl","fullUrl","drilldownLink","serviceUrl","buildServicesUrl","getSearch","LogsSceneQueryRunner","UNKNOWN_LEVEL_LOGS","matchFieldsWithName","overrideColor","builder","setValueSummaryFieldConfigs","setLabelSeriesOverrides","overrideConfig","FieldMatcherID","byNames","readOnly","overrideCustomFieldConfig","__systemRef","focusedLevels","FieldConfigBuilders","FieldConfigBuilder","onFieldConfigChange","focusedLabels","setColorByDisplayNameTransformation","getFieldDisplayName","FieldColorModeId","PaletteClassicByName","sortLevelTransformation","aName","aVal","bName","queryRunnerOptions","hasLevel","isLogPanelQuery","LokiQueryDirection","Backward","Forward","route","queryParamsOverrides","defaultQueryParams","VAR_DATASOURCE_EXPR","editorMode","supportingQueryType","addAdHocFilterUserInputPrefix","getLevelsExpr","getMetadataExpr","getFieldsExpr","escapeDoubleQuotedLineFilter","buildLogQlLineFilter","breakdownLabelName","routeParams","startOfUrl","locationArray","buildServicesRoute","sceneObject","PRETTY_LOG_STREAM_SELECTOR_EXPR","check","returnType","uf","uFuzzy","intraMode","intraIns","intraSub","intraTrn","intraDel","idxs","order","haystackOrder","matchesSet","mark","matched","infoIdx","highlight","ranges","debounceLodash","memoize","sortSeriesByName","initOutlierDetector","fieldReducer","calculateDataFrameChangepoints","calculateOutlierValue","doStandardCalcs","seriesCalcs","firstTimestamp","lastTimestamp","firstValue","lastValue","allSeriesKey","wasmSupported","dataPoints","samplingStep","sample","Float64Array","ChangepointDetector","defaultArgpcp","detectChangepoints","valueA","valueB","localeCompare","joined","outerJoinDataFrames","points","detector","OutlierDetector","dbscan","preprocess","outliers","detect","seriesResults","isOutlier","outlierIntervals","support","WebAssembly","FAVORITE_PRIMARY_LABEL_VALUES_LOCALSTORAGE_KEY","FAVORITE_PRIMARY_LABEL_NAME_LOCALSTORAGE_KEY","DS_LOCALSTORAGE_KEY","dsKey","createPrimaryLabelLocalStorageKey","labelValues","servicesToStore","createTabsLocalStorageKey","tabName","tabNames","SORT_BY_LOCALSTORAGE_KEY","defaultSortBy","defaultDirection","getExplorationPrefix","getDataSourceName","getServiceName","PREFIX","storedFields","LOG_OPTIONS_LOCALSTORAGE_KEY","defaultValue","storedValue","LOGS_VOLUME_LOCALSTORAGE_KEY","removeItem","VISUALIZATION_TYPE_LOCALSTORAGE_KEY","storedType","LINE_FILTER_OPTIONS_LOCALSTORAGE_KEY","PANEL_OPTIONS_LOCALSTORAGE_KEY","EXPRESSION_BUILDER_DEBUG_LOCALSTORAGE_KEY","SERVICE_SELECTION_PAGE_COUNT_KEY","pageCount","appConfig","apiKey","apiUrl","refreshPicker","combobox","addNewLabelTab","searchLabelValueInput","openExplore","logsPanelHeader","radio","isSecureContext","writeText","createElement","appendChild","execCommand","removeChild","paramName","charAt","toUpperCase","ellipsis","timeEpochMs","VAR_LEVELS_EXPR","lookupVariable","encodedValue","narrowFieldValue","adHocFiltersVariableState","getServiceNameFromVariableState","variablesToClear","wip","_wip","includeOperators","isLabelsVar","inclusiveOperatorCount","isEditingOnlyFilter","isAddingFirstFilter","numericOperators"],"sourceRoot":""} \ No newline at end of file diff --git a/grafana/plugins/grafana-lokiexplore-app/631.js b/grafana/plugins/grafana-lokiexplore-app/631.js index 10b41874..5502bda1 100644 --- a/grafana/plugins/grafana-lokiexplore-app/631.js +++ b/grafana/plugins/grafana-lokiexplore-app/631.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkgrafana_lokiexplore_app=self.webpackChunkgrafana_lokiexplore_app||[]).push([[631],{9631:(e,a,n)=>{n.r(a),n.d(a,{default:()=>p});var r=n(5959),l=n.n(r);const t=(0,r.lazy)((()=>Promise.all([n.e(854),n.e(944),n.e(105),n.e(341),n.e(220)]).then(n.bind(n,6220)))),s=l().createContext(null);class o extends l().PureComponent{render(){return l().createElement(s.Provider,{value:this.props},l().createElement(t,null))}}const p=o}}]); +"use strict";(self.webpackChunkgrafana_lokiexplore_app=self.webpackChunkgrafana_lokiexplore_app||[]).push([[631],{9631:(e,a,n)=>{n.r(a),n.d(a,{default:()=>p});var r=n(5959),l=n.n(r);const t=(0,r.lazy)((()=>Promise.all([n.e(854),n.e(944),n.e(105),n.e(747),n.e(220)]).then(n.bind(n,6220)))),s=l().createContext(null);class o extends l().PureComponent{render(){return l().createElement(s.Provider,{value:this.props},l().createElement(t,null))}}const p=o}}]); //# sourceMappingURL=631.js.map \ No newline at end of file diff --git a/grafana/plugins/grafana-lokiexplore-app/747.js b/grafana/plugins/grafana-lokiexplore-app/747.js new file mode 100644 index 00000000..75c2dca1 --- /dev/null +++ b/grafana/plugins/grafana-lokiexplore-app/747.js @@ -0,0 +1,52 @@ +"use strict";(self.webpackChunkgrafana_lokiexplore_app=self.webpackChunkgrafana_lokiexplore_app||[]).push([[747],{5218:(e,t,n)=>{n.d(t,{F:()=>o});var r=n(6089),a=n(2007),i=n(5959),s=n.n(i),l=n(1220);const o=e=>{const{isExcluded:t,isIncluded:n,onInclude:r,onExclude:i,onClear:o,titles:u,buttonFill:d,hideExclude:p}=e,g=(0,a.useStyles2)(c,n,t,p);return s().createElement("div",{className:g.container},s().createElement(a.Button,{variant:n?"primary":"secondary",fill:d,size:"sm","aria-selected":n,className:g.includeButton,onClick:n?o:r,"data-testid":l.b.exploreServiceDetails.buttonFilterInclude,title:null==u?void 0:u.include},"Include"),!p&&s().createElement(a.Button,{variant:t?"primary":"secondary",fill:d,size:"sm","aria-selected":t,className:g.excludeButton,onClick:t?o:i,title:null==u?void 0:u.exclude,"data-testid":l.b.exploreServiceDetails.buttonFilterExclude},"Exclude"))},c=(e,t,n,a)=>({container:(0,r.css)({display:"flex",justifyContent:"center"}),includeButton:(0,r.css)({borderRadius:0,borderRight:t||a?void 0:"none"}),excludeButton:(0,r.css)({borderRadius:`0 ${e.shape.radius.default} ${e.shape.radius.default} 0`,borderLeft:n?void 0:"none"})})},4482:(e,t,n)=>{n.d(t,{R:()=>c});var r=n(5959),a=n.n(r),i=n(6089),s=n(1575),l=n(2007);const o=e=>({graphicContainer:(0,i.css)({display:"flex",justifyContent:"center",margin:"0 auto"}),graphic:(0,i.css)({width:"200px",height:"120px",padding:e.spacing(1)}),text:(0,i.css)({display:"flex",justifyContent:"center",alignItems:"center"}),wrap:(0,i.css)({margin:"0 auto"})}),c=({children:e})=>{const t=(0,l.useStyles2)(o),n=(0,l.useTheme2)();return a().createElement("div",{className:t.wrap},a().createElement("div",{className:t.graphicContainer},a().createElement(s.A,{className:t.graphic,src:n.isDark?"/public/plugins/grafana-lokiexplore-app/img/grot_err.svg":"/public/plugins/grafana-lokiexplore-app/img/grot_err_light.svg"})),a().createElement("div",{className:t.text},a().createElement(l.Text,{textAlignment:"center",color:"primary",element:"span"},e||"An error occurred")))}},8538:(e,t,n)=>{n.d(t,{P:()=>Ze,y:()=>Xe});var r=n(5959),a=n.n(r),i=n(7781),s=n(2672),l=n(3143),o=n(227),c=n(2254),u=n(2007),d=n(6089);function p(e){const t=(0,u.useStyles2)(g);return a().createElement(a().Fragment,null,a().createElement(u.Alert,{className:t.alert,severity:"info",title:"Welcome to Grafana Logs Drilldown!",onRemove:e.onRemove},a().createElement("div",null,"Check out our"," ",a().createElement("a",{className:"external-link",target:"_blank",href:"https://grafana.com/docs/grafana-cloud/visualizations/simplified-exploration/logs/",rel:"noreferrer"},"Get started doc"),", or see"," ",a().createElement("a",{className:"external-link",target:"_blank",href:"https://github.com/grafana/explore-logs/releases",rel:"noreferrer"},"recent changes"),".",a().createElement("br",null),"Help us shape the future of the app."," ",a().createElement("a",{className:"external-link",target:"_blank",href:"https://forms.gle/1sYWCTPvD72T1dPH9",rel:"noreferrer"},"Send us feedback")," ","or engage with us on"," ",a().createElement("a",{className:"external-link",target:"_blank",href:"https://github.com/grafana/explore-logs/?tab=readme-ov-file#explore-logs",rel:"noreferrer"},"GitHub"),".")))}function g(e){return{alert:(0,d.css)({flex:"none"})}}var h=n(8831),v=n(2871),m=n(5664);const f=()=>{const e=(0,u.useStyles2)(b);return a().createElement("div",{className:e.wrapper},a().createElement("a",{href:"https://forms.gle/1sYWCTPvD72T1dPH9",className:e.feedback,title:"Share your thoughts about Logs in Grafana.",target:"_blank",rel:"noreferrer noopener"},a().createElement(u.Icon,{name:"comment-alt-message"})," Give feedback"))},b=e=>({wrapper:(0,d.css)({display:"flex",marginLeft:"auto",gap:e.spacing(1),position:"relative",top:e.spacing(-1)}),feedback:(0,d.css)({alignSelf:"center",color:e.colors.text.secondary,fontSize:e.typography.bodySmall.fontSize,"&:hover":{color:e.colors.text.link}})});class y extends s.Bs{}var S,w,O;O=function({model:e}){var t,n;const r=s.jh.getVariables(e).useState();let i=r.variables;return(null===(t=e.state.include)||void 0===t?void 0:t.length)&&(i=r.variables.filter((t=>{var n,r;return null===(n=e.state.include)||void 0===n?void 0:n.includes(null!==(r=t.state.name)&&void 0!==r?r:"")}))),(null===(n=e.state.exclude)||void 0===n?void 0:n.length)&&(i=r.variables.filter((t=>{var n,r;return!(null===(n=e.state.exclude)||void 0===n?void 0:n.includes(null!==(r=t.state.name)&&void 0!==r?r:""))}))),a().createElement(a().Fragment,null,i.map((t=>a().createElement(s.Lp,{key:t.state.key,variable:t,layout:e.state.layout}))))},(w="Component")in(S=y)?Object.defineProperty(S,w,{value:O,enumerable:!0,configurable:!0,writable:!0}):S[w]=O;var x=n(1220);const E=({onRemove:e,pattern:t,size:n="lg"})=>{const i=(0,u.useStyles2)(F),[s,l]=(0,r.useState)(!1);return a().createElement("div",{className:i.pattern,onClick:()=>l(!s),onMouseLeave:()=>l(!1)},a().createElement(u.Tag,{title:t,key:t,name:s?t:k(t,n),className:i.tag}),a().createElement(u.Button,{"aria-label":"Remove pattern","data-testid":x.b.exploreServiceDetails.buttonRemovePattern,variant:"secondary",size:"sm",className:i.removeButton,onClick:e},a().createElement(u.Icon,{name:"times"})))},C={sm:50,lg:Math.round(window.innerWidth/8)};function k(e,t){const n=e.length;if(n({pattern:(0,d.css)({display:"flex",fontFamily:"monospace",gap:e.spacing(.25),cursor:"pointer",overflow:"hidden"}),tag:(0,d.css)({borderTopRightRadius:0,borderBottomRightRadius:0,backgroundColor:e.colors.secondary.main,border:`solid 1px ${e.colors.secondary.border}`,color:e.colors.secondary.text,boxSizing:"border-box",padding:e.spacing(.25,.75),overflow:"hidden",textOverflow:"ellipsis"}),removeButton:(0,d.css)({paddingLeft:2.5,paddingRight:2.5})});var P=n(2718),L=n(8835);const j=({patterns:e,onRemove:t})=>{const n=(0,u.useStyles2)(_);if(!e||0===e.length)return null;const r=e.filter((e=>"include"===e.type)),i=e.filter((e=>"include"!==e.type)),s=n=>{(0,L.bN)(),t(e.filter((e=>e!==n))),(0,P.EE)(P.NO.service_details,P.ir.service_details.pattern_removed,{includePatternsLength:r.length-("include"===(null==n?void 0:n.type)?1:0),excludePatternsLength:i.length-("include"!==(null==n?void 0:n.type)?1:0),type:n.type})};return a().createElement("div",null,r.length>0&&a().createElement("div",{className:n.patternsContainer},a().createElement(u.Text,{variant:"bodySmall",weight:"bold","data-testid":x.b.patterns.buttonIncludedPattern},"Included pattern",e.length>1?"s":""),a().createElement("div",{className:n.patterns},r.map((e=>a().createElement(E,{key:e.pattern,pattern:e.pattern,size:"lg",onRemove:()=>s(e)}))))),i.length>0&&a().createElement("div",{className:n.patternsContainer},a().createElement(u.Text,{variant:"bodySmall",weight:"bold","data-testid":x.b.patterns.buttonExcludedPattern},"Excluded pattern",i.length>1?"s":"",":"),a().createElement("div",{className:n.patterns},i.map((e=>a().createElement(E,{key:e.pattern,pattern:e.pattern,size:i.length>1?"sm":"lg",onRemove:()=>s(e)}))))))};function _(e){return{patternsContainer:(0,d.css)({overflow:"hidden"}),patterns:(0,d.css)({display:"flex",gap:e.spacing(1),alignItems:"center",flexWrap:"wrap"})}}class T extends s.Bs{}function D(e){return{firstRowWrapper:(0,d.css)({"& > div > div":{gap:"16px",label:"first-row-wrapper",[e.breakpoints.down("lg")]:{flexDirection:"column"}}}),bodyContainer:(0,d.css)({flexGrow:1,display:"flex",minHeight:"100%",flexDirection:"column"}),container:(0,d.css)({flexGrow:1,display:"flex",minHeight:"100%",flexDirection:"column",padding:e.spacing(2),maxWidth:"100vw"}),body:(0,d.css)({flexGrow:1,display:"flex",flexDirection:"column",gap:e.spacing(1)}),controlsFirstRowContainer:(0,d.css)({label:"controls-first-row",display:"flex",gap:e.spacing(2),justifyContent:"space-between",alignItems:"flex-start"}),controlsRowContainer:(0,d.css)({"&:empty":{display:"none"},label:"controls-row",display:"flex",gap:e.spacing(1),alignItems:"flex-start",paddingLeft:e.spacing(2)}),controlsContainer:(0,d.css)({label:"controlsContainer",display:"flex",flexDirection:"column",gap:e.spacing(1)}),filters:(0,d.css)({label:"filters",display:"flex"}),filtersWrap:(0,d.css)({label:"filtersWrap",display:"flex",gap:e.spacing(2),width:"calc(100% - 450)",flexWrap:"wrap",alignItems:"flex-end"}),controlsWrapper:(0,d.css)({label:"controlsWrapper",display:"flex",flexDirection:"column",marginTop:e.spacing(.375)}),timeRangeDatasource:(0,d.css)({label:"timeRangeDatasource",display:"flex",gap:e.spacing(1),flexWrap:"wrap",justifyContent:"flex-end"}),timeRange:(0,d.css)({label:"timeRange",display:"flex",flexDirection:"row",gap:e.spacing(1)}),controls:(0,d.css)({display:"flex",gap:e.spacing(1)}),feedback:(0,d.css)({textAlign:"end"}),rotateIcon:(0,d.css)({svg:{transform:"rotate(180deg)"}})}}!function(e,t,n){t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n}(T,"Component",(({model:e})=>{const t=s.jh.getAncestor(e,Ze),{controls:n,patterns:r}=t.useState(),i=s.jh.getAncestor(e,A),{lineFilterRenderer:l,levelsRenderer:o}=i.useState(),c=(0,u.useStyles2)(D);return a().createElement("div",{className:c.controlsContainer},a().createElement(a().Fragment,null,n&&a().createElement("div",{className:c.controlsFirstRowContainer},a().createElement("div",{className:c.filtersWrap},a().createElement("div",{className:(0,d.cx)(c.filters,c.firstRowWrapper)},n.map((e=>e instanceof s.G1?a().createElement(e.Component,{key:e.state.key,model:e}):null)))),a().createElement("div",{className:c.controlsWrapper},a().createElement(f,null),a().createElement("div",{className:c.timeRangeDatasource},n.map((e=>e.state.key===M?a().createElement(e.Component,{key:e.state.key,model:e}):null)),a().createElement("div",{className:c.timeRange},n.map((e=>e instanceof y||e instanceof s.G1?null:a().createElement(e.Component,{key:e.state.key,model:e}))))))),a().createElement("div",{className:c.controlsRowContainer},o&&a().createElement(o.Component,{model:o})),a().createElement("div",{className:c.controlsRowContainer},n&&a().createElement("div",{className:c.filtersWrap},a().createElement("div",{className:c.filters},n.map((e=>e instanceof y&&e.state.key===B?a().createElement(e.Component,{key:e.state.key,model:e}):null))))),a().createElement("div",{className:c.controlsRowContainer},a().createElement(j,{patterns:r,onRemove:e=>t.setState({patterns:e})})),a().createElement("div",{className:c.controlsRowContainer},l&&a().createElement(l.Component,{model:l}))))}));var N=n(3626);function $(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const I=`${h.s_}.interceptBannerStorageKey`,B="vars-fields-metadata",M="vars-ds";class A extends s.Bs{onActivate(){this.setState({lineFilterRenderer:new m.Y({}),levelsRenderer:new N.qV({}),variableLayout:new T({})})}dismiss(){this.setState({interceptDismissed:!0}),localStorage.setItem(I,"true")}constructor(e){var t,n;super((t=function(e){for(var t=1;t{const t=s.jh.getAncestor(e,Ze),{contentScene:n}=t.useState(),{interceptDismissed:r,variableLayout:i}=e.useState();if(!n)return v.v.warn("content scene not defined"),null;const l=(0,u.useStyles2)(R);return a().createElement("div",{className:l.bodyContainer},a().createElement("div",{className:l.container},!r&&a().createElement(p,{onRemove:()=>{e.dismiss()}}),i&&a().createElement(i.Component,{model:i}),a().createElement("div",{className:l.body},n&&a().createElement(n.Component,{model:n}))))}));var V=n(892),W=n(1105),z=n(8531),H=n(7918),Q=n(5435),K=n(5431),q=n(4750),G=n(4002),U=n(4106),J=n(9077),Y=n(9829),X=n(3241),Z=n(4793),ee=n(7063),te=n(5111);function ne(e,t,n,r,a,i,s){try{var l=e[i](s),o=l.value}catch(e){return void n(e)}l.done?t(o):Promise.resolve(o).then(r,a)}function re(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var i=e.apply(t,n);function s(e){ne(i,r,a,s,l,"next",e)}function l(e){ne(i,r,a,s,l,"throw",e)}s(void 0)}))}}const ae=function(){var e=re((function*(e,t,n,r,a,i){const s=yield(0,z.getDataSourceSrv)().get((0,Y.U4)(r));if(!(s instanceof z.DataSourceWithBackend))throw v.v.error(new Error("getTagValuesProvider: Invalid datasource!")),new Error("Invalid datasource!");const o=s.languageProvider;let c=[];if(o&&o.fetchDetectedLabelValues){const r={expr:n,limit:1e3,timeRange:a,throwError:!0},s={showErrorAlert:!1};try{let n=yield o.fetchDetectedLabelValues(e.key,r,s);if(n&&(0,X.isArray)(n)){var u;if(i===l._Y)return{replace:!0,values:n.map((e=>({text:e})))};const r=t.state.filters;let a=[];r.forEach((e=>{var t,n;const r=null!==(n=null===(t=e.valueLabels)||void 0===t?void 0:t[0])&&void 0!==n?n:e.value;(0,te.SM)(e.operator)?r.split("|").forEach((e=>a.push(e))):a.push(r)}));const s=n.filter((e=>!a.includes(e)));if("structuredMetadata"!==(null===(u=e.meta)||void 0===u?void 0:u.parser)){if(e.value){const t=(0,q.bu)(e,i);return{replace:!0,values:s.map((e=>({text:e,value:JSON.stringify({value:e,parser:t.parser})})))}}return{replace:!0,values:s.map((t=>{var n,r;return{text:t,value:JSON.stringify({value:t,parser:null!==(r=null===(n=e.meta)||void 0===n?void 0:n.parser)&&void 0!==r?r:"mixed"})}}))}}c=s.map((e=>({text:e})))}else c=[],v.v.error(n,{msg:"fetchDetectedLabelValues error!"})}catch(e){v.v.error(e,{msg:"getDetectedFieldValuesTagValuesProvider: loki missing detected_field/.../values endpoint. Upgrade to Loki 3.3.0 or higher."}),c=[]}}else v.v.warn("getDetectedFieldValuesTagValuesProvider: fetchDetectedLabelValues is not defined in Loki datasource. Upgrade to Grafana 11.4 or higher."),c=[];return{replace:!0,values:c}}));return function(t,n,r,a,i,s){return e.apply(this,arguments)}}();function ie(e,t){return se.apply(this,arguments)}function se(){return se=re((function*(e,t){const n=yield(0,z.getDataSourceSrv)().get((0,Y.U4)(e));if(!(n instanceof z.DataSourceWithBackend))throw v.v.error(new Error("getTagValuesProvider: Invalid datasource!")),new Error("Invalid datasource!");const r=n;if(r&&r.getTagValues){const n=function(e,t){let n=e.filter((e=>!((0,te.BG)(t.operator)&&e.key===t.key)));return n.some((e=>(0,te.BG)(e.operator)))||(n=[]),n}(new ee.K(e.state.filters).getJoinedLabelsFilters(),t),i={key:t.key,filters:n};let s=yield r.getTagValues(i);if((0,X.isArray)(s)){var a;s=s.filter((n=>!e.state.filters.filter((e=>e.key===t.key)).some((e=>(0,te.SM)(e.operator)?e.value.split("|").some((e=>e===n.text)):e.operator===Z.w7.Equal&&e.value===n.text))));const n=(0,o.eT)(null===(a=(0,q.S9)(e).getValue())||void 0===a?void 0:a.toString(),t.key),r=new Set(n);n.length&&s.sort(((e,t)=>(r.has(t.text)?1:-1)-(r.has(e.text)?1:-1)))}return{replace:!0,values:s}}return v.v.error(new Error("getTagValuesProvider: missing or invalid datasource!")),{replace:!0,values:[]}})),se.apply(this,arguments)}var le=n(6001);function oe(e,t,n,r,a,i,s){try{var l=e[i](s),o=l.value}catch(e){return void n(e)}l.done?t(o):Promise.resolve(o).then(r,a)}function ce(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var i=e.apply(t,n);function s(e){oe(i,r,a,s,l,"next",e)}function l(e){oe(i,r,a,s,l,"throw",e)}s(void 0)}))}}function ue(e){return de.apply(this,arguments)}function de(){return de=ce((function*(e){const t=yield(0,z.getDataSourceSrv)().get((0,Y.U4)(e));if(!(t instanceof z.DataSourceWithBackend))throw v.v.error(new Error("getTagKeysProvider: Invalid datasource!")),new Error("Invalid datasource!");const n=t;if(n&&n.getTagKeys){const t={filters:new ee.K(e.state.filters).getJoinedLabelsFilters()},r=yield n.getTagKeys(t),a=(Array.isArray(r)?r:[]).filter((e=>!le.rm.includes(e.text)));return{replace:!0,values:a}}return v.v.error(new Error("getTagKeysProvider: missing or invalid datasource!")),{replace:!0,values:[]}})),de.apply(this,arguments)}function pe(e){return ge.apply(this,arguments)}function ge(){return ge=ce((function*({limit:e,timeRange:t,scopedVars:n,expr:r,sceneRef:a,variableType:i}){const s=yield(0,z.getDataSourceSrv)().get((0,Y.U4)(a));if(!(s instanceof z.DataSourceWithBackend))throw v.v.error(new Error("getTagKeysProvider: Invalid datasource!")),new Error("Invalid datasource!");const o=s,c=o.languageProvider,u={expr:r,timeRange:t,scopedVars:n,variableType:i,sceneRef:a,limit:e},d=o&&"function"==typeof c.fetchDetectedFields&&c.fetchDetectedFields.bind(c)||function(e){return function(e,t,n){return he.apply(this,arguments)}(o,e)};if(d&&"function"==typeof d){const e=yield d(u);if(e instanceof Error)throw v.v.error(e,{msg:"Failed to fetch detected fields"}),e;const t=e.filter((e=>i===l._Y?e.label===l.e4:i===l.sL&&e.label!==l.e4||null!==e.parsers)).map((e=>{if(i===l.sL){var t;let n=1===(null===(t=e.parsers)||void 0===t?void 0:t.length)?e.parsers[0]:"mixed";null===e.parsers&&(n="structuredMetadata");const r=e.type;return{text:e.label,value:e.label,group:n,meta:{parser:n,type:r}}}return{text:e.label,value:e.label}}));return t.sort(((e,t)=>"structuredMetadata"===e.group&&"structuredMetadata"!==t.group?-1:"structuredMetadata"!==e.group&&"structuredMetadata"===t.group?1:0)),{replace:!0,values:t}}return v.v.error(new Error("getTagKeysProvider: missing or invalid datasource!")),{replace:!0,values:[]}})),ge.apply(this,arguments)}function he(){return he=ce((function*(e,t,n){if(!("interpolateString"in e)||"function"!=typeof(null==e?void 0:e.interpolateString))throw new Error("Datasource missing interpolateString method");const r=t.expr&&"{}"!==t.expr?e.interpolateString(t.expr,t.scopedVars):void 0;if(!r)throw new Error("fetchDetectedFields requires query expression");var a;const s=null!==(a=null==t?void 0:t.timeRange)&&void 0!==a?a:(0,i.getDefaultTimeRange)(),l=e.getTimeRangeParams(s),{start:o,end:c}=l;var u;const d={start:o,end:c,limit:null!==(u=null==t?void 0:t.limit)&&void 0!==u?u:1e3};return d.query=r,new Promise(function(){var t=ce((function*(t,r){try{t((yield e.getResource("detected_fields",d,n)).fields)}catch(e){console.error("error",e),r(e)}}));return function(e,n){return t.apply(this,arguments)}}())})),he.apply(this,arguments)}var ve=n(6059);function me(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}let fe={8:"backspace",9:"tab",13:"enter",16:"shift",17:"ctrl",18:"alt",20:"capslock",27:"esc",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",45:"ins",46:"del",91:"meta",93:"meta",224:"meta"},be={106:"*",107:"+",109:"-",110:".",111:"/",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"},ye={"~":"`","!":"1","@":"2","#":"3",$:"4","%":"5","^":"6","&":"7","*":"8","(":"9",")":"0",_:"-","+":"=",":":";",'"':"'","<":",",">":".","?":"/","|":"\\"},Se={option:"alt",command:"meta",return:"enter",escape:"esc",plus:"+",mod:/Mac|iPod|iPhone|iPad/.test(navigator.platform)?"meta":"ctrl"},we=null;for(let e=1;e<20;++e)fe[111+e]="f"+e;for(let e=0;e<=9;++e)fe[e+96]=e.toString();function Oe(e){if("keypress"===e.type){let t=String.fromCharCode(e.which);return e.shiftKey||(t=t.toLowerCase()),t}return fe[e.which]?fe[e.which]:be[e.which]?be[e.which]:String.fromCharCode(e.which).toLowerCase()}function xe(e){return"shift"===e||"ctrl"===e||"alt"===e||"meta"===e}function Ee(e,t,n){return n||(n=function(){if(!we){we={};for(let e in fe){const t=parseInt(e,10);t>95&&t<112||fe.hasOwnProperty(e)&&(we[fe[e]]=e)}}return we}()[e]?"keydown":"keypress"),"keypress"===n&&t.length&&(n="keydown"),n}function Ce(e,t){let n,r,a,i=[];for(n=function(e){return"+"===e?["+"]:(e=e.replace(/\+{2}/g,"+plus")).split("+")}(e),a=0;a{e=e||{};let t,n=!1;for(t in this._sequenceLevels)e[t]?n=!0:this._sequenceLevels[t]=0;n||(this._nextExpectedAction=!1)})),me(this,"_getMatches",((e,t,n,r,a,i)=>{let s,l,o=[],c=n.type;if(!this._callbacks[e])return[];for("keyup"===c&&xe(e)&&(t=[e]),s=0;s{const a=t.target||t.srcElement;var i;a&&a instanceof HTMLElement&&this.stopCallback(t,a,n,r)||!1===e(t,n)&&((i=t).preventDefault?i.preventDefault():i.returnValue=!1,function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0}(t))})),me(this,"_handleKey",((e,t,n)=>{let r,a=this._getMatches(e,t,n),i={},s=0,l=!1;for(r=0;r0&&e.startsWith(c)&&(i[e]=1)}else l||this._fireCallback(a[r].callback,n,a[r].combo)}var c;for(const t of null!==(c=this._callbacks[e])&&void 0!==c?c:[])t.action===n.type&&t.seq&&0===t.level&&(i[t.seq]=1);let u="keypress"===n.type&&this._ignoreNextKeypress;n.type!==this._nextExpectedAction||xe(e)||u||this._resetSequences(i),this._ignoreNextKeypress=l&&"keydown"===n.type})),me(this,"_handleKeyEvent",(e=>{if(!(e instanceof KeyboardEvent))throw new Error("Didn't get a KeyboardEvent");const t=e;if(t.repeat)return;"number"!=typeof t.which&&(t.which=t.keyCode);let n=Oe(t);n&&("keyup"!==t.type||this._ignoreNextKeyup!==n?this.handleKey(n,function(e){let t=[];return e.shiftKey&&t.push("shift"),e.altKey&&t.push("alt"),e.ctrlKey&&t.push("ctrl"),e.metaKey&&t.push("meta"),t}(t),t):this._ignoreNextKeyup=!1)})),me(this,"_resetSequenceTimer",(()=>{clearTimeout(this._resetTimer),this._resetTimer=setTimeout(this._resetSequences,1e3)})),me(this,"_bindSequence",((e,t,n,r)=>{this._sequenceLevels[e]=0;const a=t=>()=>{this._nextExpectedAction=t,++this._sequenceLevels[e],this._resetSequenceTimer()},i=t=>{this._fireCallback(n,t,e),"keyup"!==r&&(this._ignoreNextKeyup=Oe(t)),this._resetSequenceTimer()};for(let n=0;n{this._directMap[e+":"+n]=t;let i,s=(e=e.replace(/\s+/g," ")).split(" ");if(s.length>1)return void this._bindSequence(e,s,t,n);i=Ce(e,n),this._callbacks[i.key]=this._callbacks[i.key]||[];const l={type:i.action,metaKey:!1,ctrlKey:!1};this._getMatches(i.key,i.modifiers,l,r,e,a);const o={callback:t,modifiers:i.modifiers,action:i.action,seq:r,level:a,combo:e};this._callbacks[i.key][r?"unshift":"push"](o)})),me(this,"_bindMultiple",((e,t,n)=>{for(let r=0;r(e=e instanceof Array?e:[e],this._bindMultiple(e,t,n),self))),me(this,"unbind",((e,t)=>this.bind(e,(function(){}),t))),me(this,"bindGlobal",((e,t,n)=>{if(this.bind(e,t,n),e instanceof Array)for(let t=0;t{if(this.unbind(e,t),e instanceof Array)for(let t=0;t{let n=this;return n._directMap[e+":"+t]&&n._directMap[e+":"+t]({},e),n})),me(this,"reset",(()=>(this._callbacks={},this._directMap={},this))),me(this,"stopCallback",((e,t,n,r)=>{if(this._globalCallbacks[n]||r&&this._globalCallbacks[r])return!1;if((" "+t.className+" ").indexOf(" mousetrap ")>-1)return!1;if(ke(t,this.target))return!1;if("composedPath"in e&&"function"==typeof e.composedPath){let n=e.composedPath()[0];n!==e.target&&n instanceof HTMLElement&&(t=n)}return Boolean("INPUT"===t.tagName||"SELECT"===t.tagName||"TEXTAREA"===t.tagName||"isContentEditable"in t&&t.isContentEditable)})),me(this,"handleKey",((...e)=>this._handleKey(...e))),me(this,"addKeycodes",(e=>{for(let t in e)e.hasOwnProperty(t)&&(fe[t]=e[t]);we=null})),this.target=e,this.target.addEventListener("keypress",(e=>{e instanceof KeyboardEvent&&this._handleKeyEvent(e)})),this.target.addEventListener("keydown",(e=>{e instanceof KeyboardEvent&&this._handleKeyEvent(e)})),this.target.addEventListener("keyup",(e=>{e instanceof KeyboardEvent&&this._handleKeyEvent(e)}))}}(document);class Pe{addBinding(e){Fe.bind(e.key,(t=>{t.preventDefault(),t.stopPropagation(),t.returnValue=!1,e.onTrigger()}),"keydown"),this._binds.push(e)}removeAll(){this._binds.forEach((e=>{Fe.unbind(e.key,e.type)})),this._binds=[]}constructor(){!function(e,t,n){t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n}(this,"_binds",[])}}var Le=n(7085),je=n(4011);function _e(e,t,n,r,a,i,s){try{var l=e[i](s),o=l.value}catch(e){return void n(e)}l.done?t(o):Promise.resolve(o).then(r,a)}function Te(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var i=e.apply(t,n);function s(e){_e(i,r,a,s,l,"next",e)}function l(e){_e(i,r,a,s,l,"throw",e)}s(void 0)}))}}function De(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Ne=(0,z.getAppEvents)();function $e(e){const t=(0,Y.m0)(e);null==t||t.onZoom()}function Ie(e,t){const n=(0,Y.m0)(e);n&&("left"===t&&n.onMoveBackward(),"right"===t&&n.onMoveForward())}function Be(e){const t=e.state.options;var n;null!=(n=t)&&"object"==typeof n&&"legend"in n&&"boolean"==typeof t.legend.showLegend&&e.onOptionsChange({legend:{showLegend:!t.legend.showLegend}})}class Me extends i.BusEventBase{}De(Me,"type","copy-time");class Ae extends i.BusEventWithPayload{}function Re(){return(Re=Te((function*(){const e=yield navigator.clipboard.readText();let t;try{t=JSON.parse(e);const n=(0,je.OK)(t);if(n)return{isError:!1,range:n}}catch(e){}return{range:e,isError:!0}}))).apply(this,arguments)}De(Ae,"type","paste-time");var Ve=n(5548),We=n(1863),ze=n(833),He=n(1293),Qe=n(541),Ke=n(1575);const qe=()=>{const e=(0,u.useStyles2)(Ge),t=(0,u.useTheme2)();return a().createElement("div",{className:e.wrap},a().createElement("div",{className:e.graphicContainer},a().createElement(Ke.A,{src:(t.isDark,"/public/plugins/grafana-lokiexplore-app/img/grot_loki.svg")})),a().createElement("div",{className:e.text},a().createElement("h3",{className:e.title},"Welcome to Grafana Logs Drilldown"),a().createElement("p",null,"We noticed there is no Loki datasource configured.",a().createElement("br",null),"Add a"," ",a().createElement("a",{className:"external-link",href:i.locationUtil.assureBaseUrl("/connections/datasources/new")},"Loki datasource")," ","to view logs."),a().createElement("br",null),a().createElement("p",null,"Click"," ",a().createElement("a",{href:"https://grafana.com/docs/grafana/latest/explore/simplified-exploration/logs/",target:"_blank",className:"external-link",rel:"noreferrer"},"here")," ","to learn more...")))},Ge=e=>({graphicContainer:(0,d.css)({display:"flex",justifyContent:"center",margin:"0 auto",width:"200px",height:"250px",padding:e.spacing(1),[e.breakpoints.up("md")]:{alignSelf:"flex-end",width:"300px",height:"auto",padding:e.spacing(1)},[e.breakpoints.up("lg")]:{alignSelf:"flex-end",width:"400px",height:"auto",padding:e.spacing(1)}}),text:(0,d.css)({display:"flex",justifyContent:"center",alignItems:"center",flexDirection:"column"}),title:(0,d.css)({marginBottom:"1.5rem"}),wrap:(0,d.css)({[e.breakpoints.up("md")]:{margin:"4rem auto auto auto",flexDirection:"row"},padding:"2rem",margin:"0 auto auto auto",display:"flex",alignItems:"center",flexDirection:"column",textAlign:"center"})});function Ue(e,t,n,r,a,i,s){try{var l=e[i](s),o=l.value}catch(e){return void n(e)}l.done?t(o):Promise.resolve(o).then(r,a)}function Je(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var i=e.apply(t,n);function s(e){Ue(i,r,a,s,l,"next",e)}function l(e){Ue(i,r,a,s,l,"throw",e)}s(void 0)}))}}function Ye(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Xe="showLogsButtonScene";class Ze extends s.Bs{onActivate(){const e={};var t,n;this.setVariableProviders(),s.jh.findByKeyAndType(this,Xe,ve.H).setState({hidden:!1}),this.state.contentScene||(e.contentScene=(n=null===(t=this.state.routeMatch)||void 0===t?void 0:t.params.breakdownLabel,(0,V.FT)()===V.G3.explore?new W.y({}):new c.Mn({drillDownLabel:n}))),this.setTagProviders(),this.setState(e),this.updatePatterns(this.state,(0,q.Ku)(this)),this.resetVariablesIfNotInUrl((0,q.ir)(this),(0,q.n5)(l.mB)),this.resetVariablesIfNotInUrl((0,q.iw)(this),(0,q.n5)(l._Y)),this._subs.add(this.subscribeToState((e=>{this.updatePatterns(e,(0,q.Ku)(this))})));const r=s.jh.getTimeRange(this);this._subs.add(r.subscribeToState(this.limitMaxInterval(r))),this._subs.add(this.subscribeToEvent(Ae,this.subscribeToPasteTimeEvent));const a=(0,q.ir)(this).state.filters,o=(0,q.oY)(this).state.filters,u=(0,q.YS)(this);u.updateFilters([...o,...a]),this._subs.add(u.subscribeToState(this.subscribeToCombinedFieldsVariable));const d=function(e){const t=new Pe;let n=null;const r=Ne.subscribe(i.SetPanelAttentionEvent,(e=>{"string"==typeof e.payload.panelId&&(n=e.payload.panelId)}));function a(e,t){return()=>{const r=s.jh.findObject(e,(e=>e.state.key===n&&e.isActive));r&&r instanceof s.Eb&&t(r)}}return t.addBinding({key:"p l",onTrigger:a(e,Be)}),t.addBinding({key:"a l",onTrigger:function(e,t){return()=>{s.jh.findAllObjects(e,(e=>e instanceof s.Eb&&e.isActive)).forEach((e=>{e&&e instanceof s.Eb&&t(e)}))}}(e,Be)}),t.addBinding({key:"p x",onTrigger:a(e,function(){var e=Te((function*(e){const t=(0,Le.iD)(e);t&&z.locationService.push(t)}));return function(t){return e.apply(this,arguments)}}())}),t.addBinding({key:"t c",onTrigger:()=>{var t;t=s.jh.getTimeRange(e),window.__grafanaSceneContext,window.__grafanaSceneContext=t,Ne.publish(new Me)}}),t.addBinding({key:"t v",onTrigger:()=>{const t=new Ae({updateUrl:!1});e.publishEvent(t),Ne.publish(t)}}),t.addBinding({key:"d r",onTrigger:()=>s.jh.getTimeRange(e).onRefresh()}),t.addBinding({key:"t z",onTrigger:()=>{$e(e)}}),t.addBinding({key:"ctrl+z",onTrigger:()=>{$e(e)}}),t.addBinding({key:"t a",onTrigger:()=>{const t=(0,Y.m0)(e);null==t||t.toAbsolute()}}),t.addBinding({key:"t left",onTrigger:()=>{Ie(e,"left")}}),t.addBinding({key:"t right",onTrigger:()=>{Ie(e,"right")}}),()=>{t.removeAll(),r.unsubscribe()}}(this);return()=>{d()}}setTagProviders(){this.setLabelsProviders()}setLabelsProviders(){const e=(0,q.cR)(this);e._getOperators=()=>(0,We.Ht)(e),e.setState({getTagKeysProvider:ue,getTagValuesProvider:ie})}limitMaxInterval(e){return(t,n)=>{const{jsonData:r}=J.plugin.meta;if(null==r?void 0:r.interval)try{var a;const l=i.rangeUtil.intervalToSeconds(null!==(a=null==r?void 0:r.interval)&&void 0!==a?a:"");if(!l)return;const o=t.value.to.diff(t.value.from,"seconds");if(o>l){if(o<=n.value.to.diff(n.value.from,"seconds"))e.setState({value:n.value,from:n.from,to:n.to});else{const t=new s.JZ(U.sp);e.setState({value:t.state.value,from:t.state.from,to:t.state.to})}(0,z.getAppEvents)().publish({type:i.AppEvents.alertWarning.name,payload:["Time range interval exceeds maximum interval configured by the administrator."]}),(0,P.EE)("all","interval_too_long",{attempted_duration_seconds:o,configured_max_interval:l})}}catch(e){console.error(e)}}}setVariableProviders(){const e=(0,q.iw)(this),t=(0,q.YS)(this);t._getOperators=()=>(0,We.Ht)(t),e.setState({getTagValuesProvider:this.getLevelsTagValuesProvider(),getTagKeysProvider:this.getLevelsTagKeysProvider()}),t.setState({getTagKeysProvider:this.getCombinedFieldsTagKeysProvider(),getTagValuesProvider:this.getCombinedFieldsTagValuesProvider()})}getCombinedFieldsTagKeysProvider(){return(e,t)=>{const n=(0,q.oY)(this),r=(0,q.ir)(this),a=(0,He.O)(l.sL),i=n.state.filters.filter((e=>e.key!==t)),o=r.state.filters.filter((e=>e.key!==t)),c=this.renderVariableFilters(l.mB,o),u=this.renderVariableFilters(l._P,i),d=a.replace(l.Gd,c).replace(l.w0,u);return pe({expr:s.jh.interpolate(this,d),sceneRef:this,timeRange:s.jh.getTimeRange(this).state.value,variableType:l.sL})}}getCombinedFieldsTagValuesProvider(){return(e,t)=>{const n=(0,He.O)(l.sL),r=(0,q.oY)(this),a=(0,q.ir)(this),i=r.state.filters.filter((e=>e.key!==t.key&&(0,te.BG)(e.operator))),o=a.state.filters.filter((e=>e.key!==t.key&&(0,te.BG)(e.operator))),c=this.renderVariableFilters(l.mB,o),u=this.renderVariableFilters(l._P,i),d=n.replace(l.Gd,c).replace(l.w0,u),p=s.jh.interpolate(this,d);return ae(t,e,p,this,s.jh.getTimeRange(this).state.value,l.sL)}}getLevelsTagKeysProvider(){return(e,t)=>{const n=e.state.filters.filter((e=>e.key!==t)),r=this.renderVariableFilters(l._Y,n),a=(0,He.O)(l._Y).replace(l.Gd,r);return pe({expr:s.jh.interpolate(this,a),sceneRef:this,timeRange:s.jh.getTimeRange(this).state.value,variableType:l._Y})}}getLevelsTagValuesProvider(){return(e,t)=>{const n=e.state.filters.filter((e=>e.key!==t.key&&e.operator===Z.w7.Equal)),r=this.renderVariableFilters(l._Y,n),a=(0,He.O)(l._Y).replace(l.Gd,r),i=s.jh.interpolate(this,a);return ae(t,e,i,this,s.jh.getTimeRange(this).state.value,l._Y)}}renderVariableFilters(e,t){if(e===l.mB)return(0,H.ZX)(t);if(e===l._P)return(0,H.E3)(t);if(e===l._Y)return(0,H.E3)(t);{const e=new Error("getFieldsTagValuesProvider only supports fields, metadata, and levels");throw v.v.error(e),e}}resetVariablesIfNotInUrl(e,t){const n=z.locationService.getLocation();null===new URLSearchParams(n.search).get(t)&&e.setState({filters:[]})}updatePatterns(e,t){var n;const r=(0,Qe.M)(null!==(n=e.patterns)&&void 0!==n?n:[]);t.changeValueTo(r)}getUrlState(){return{patterns:JSON.stringify(this.state.patterns)}}updateFromUrl(e){const t={};e.patterns&&"string"==typeof e.patterns&&(t.patterns=JSON.parse(e.patterns)),this.setState(t)}constructor(e){var t,n;const{variablesScene:r,unsub:a}=function(e,t){const n=new s.H9({name:l.MB,datasource:l.eL,layout:"combobox",label:"Labels",allowCustomValue:!0,filters:null!=t?t:[],expressionBuilder:H.VW,hide:Q.zL.dontHide,key:"adhoc_service_filter",onAddCustomValue:H.c0});n._getOperators=function(){return Ve.II};const r=new s.H9({name:l.mB,label:"Detected fields",applyMode:"manual",layout:"combobox",expressionBuilder:H.ZX,hide:Q.zL.hideVariable,allowCustomValue:!0});r._getOperators=()=>Ve.II;const a=new s.H9({name:l._P,label:"Metadata",applyMode:"manual",layout:"combobox",expressionBuilder:e=>(0,H.E3)(e),hide:Q.zL.hideVariable,allowCustomValue:!0});a._getOperators=()=>Ve.II;const i=new s.H9({name:l.sL,label:"Fields",applyMode:"manual",layout:"combobox",hide:Q.zL.hideVariable,allowCustomValue:!0,onAddCustomValue:H.PP,skipUrlSync:!0}),c=new s.H9({name:l._Y,label:"Error levels",applyMode:"manual",layout:"vertical",expressionBuilder:H._q,hide:Q.zL.hideVariable,supportsMultiValueOperators:!0}),u=new s.H9({name:l.NW,hide:Q.zL.hideVariable,getTagKeysProvider:()=>Promise.resolve({replace:!0,values:[]}),getTagValuesProvider:()=>Promise.resolve({replace:!0,values:[]}),expressionBuilder:H.CY,layout:"horizontal"});u._getOperators=()=>Ve.eb;const d=new s.mI({name:l.EY,label:"Data source",value:e,pluginId:"loki"}),p=d.subscribeToState((e=>{const t=`${e.value}`;e.value&&(0,o.ke)(t)}));return{variablesScene:new s.Pj({variables:[d,n,r,c,a,i,new s.yP({name:l.uw,value:"",hide:Q.zL.hideVariable}),new s.H9({name:l.WM,hide:Q.zL.hideVariable,expressionBuilder:H.CY}),u,new K.m({name:l.QE,value:l.YN,skipUrlSync:!0,hide:Q.zL.hideVariable,options:[{value:l.YN,label:l.YN}]})]}),unsub:p}}(null!==(n=(0,o.QB)())&&void 0!==n?n:"grafanacloud-logs",e.initialFilters),c=[new s.G1({key:"vars-row__datasource-labels-timepicker-button",direction:"row",children:[new s.vA({body:new y({key:"vars-labels",layout:"vertical",include:[l.MB]})}),new ve.H({key:Xe,disabled:!0})]}),new y({key:"vars-metadata",layout:"vertical",include:[l._P]}),new y({key:"vars-fields",layout:"vertical",include:[l.mB]}),new y({key:M,layout:"horizontal",include:[l.EY]}),new y({key:B,layout:"vertical",include:[l.sL]}),new s.KE({key:"vars-timepicker"}),new s.WM({key:"vars-refresh"})];var u,d,p,g,h;"explore"===(0,V.FT)()&&z.config.featureToggles.exploreLogsAggregatedMetrics&&c.push(new G.s({key:"vars-toolbar",isOpen:!1})),super((g=function(e){for(var t=1;t{if(!(0,ze.B)(e.filters,null==t?void 0:t.filters)){const t=e.filters.filter((e=>(0,le.OH)(e))),n=e.filters.filter((e=>!(0,le.OH)(e)));(0,q.ir)(this).updateFilters(n),(0,q.oY)(this).updateFilters(t)}})),Ye(this,"subscribeToPasteTimeEvent",Je((function*(){const e=yield function(){return Re.apply(this,arguments)}();if(e.isError)return;const n=s.jh.getTimeRange(t),r="string"==typeof e.range.to?e.range.to:void 0,a="string"==typeof e.range.from?e.range.from:void 0,l=i.rangeUtil.convertRawToRange(e.range);n&&l?n.setState({value:l,to:r,from:a}):v.v.error(new Error("Invalid time range from clipboard"),{msg:"Invalid time range from clipboard",sceneTimeRange:typeof n,to:null!=r?r:"",from:null!=a?a:""})}))),this._subs.add(a),this.addActivationHandler(this.onActivate.bind(this)),(0,Y.hJ)(this).then((e=>{this.setState({ds:e})}))}}Ye(Ze,"Component",(({model:e})=>{const{body:t}=e.useState();return(0,q.S9)(e).state.options.length?t?a().createElement(t.Component,{model:t}):a().createElement(u.LoadingPlaceholder,{text:"Loading..."}):a().createElement(qe,null)}))},3626:(e,t,n)=>{n.d(t,{dm:()=>b,kz:()=>m,qV:()=>f});var r=n(2672),a=n(5959),i=n.n(a),s=n(4750),l=n(6089),o=n(2007),c=n(3143),u=n(4793),d=n(1220),p=n(8835);function g(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function h(e){for(var t=1;t{this.onFilterChange()})))}onFilterChange(){const e=(0,s.iw)(this);this.setState({options:e.state.filters.map((e=>{var t,n;return{text:null!==(n=null===(t=e.valueLabels)||void 0===t?void 0:t[0])&&void 0!==n?n:e.value,selected:!0,value:e.value}}))})}constructor(e){super(v(h({},e),{isLoading:!1,visible:!1,key:m,isOpen:!1})),g(this,"getTagValues",(()=>{var e,t;this.setState({isLoading:!0});const n=(0,s.iw)(this);var r;const a=null==n||null===(t=n.state)||void 0===t||null===(e=t.getTagValuesProvider)||void 0===e?void 0:e.call(t,n,null!==(r=n.state.filters[0])&&void 0!==r?r:{key:c.e4});null==a||a.then((e=>{Array.isArray(e.values)&&this.setState({isLoading:!1,options:e.values.map((e=>{var t;return{text:e.text,value:null!==(t=e.value)&&void 0!==t?t:e.text,selected:n.state.filters.some((t=>t.value===e.text))}}))})}))})),g(this,"updateFilters",((e,t)=>{var n;const r=(0,s.iw)(this),a=null===(n=this.state.options)||void 0===n?void 0:n.filter((e=>e.selected));var i;r.updateFilters(null!==(i=null==a?void 0:a.map((e=>({key:c.e4,operator:u.w7.Equal,value:e.text}))))&&void 0!==i?i:[],{skipPublish:e,forcePublish:t})})),g(this,"onChangeOptions",(e=>{var t;(0,p.bN)(),this.setState({options:null===(t=this.state.options)||void 0===t?void 0:t.map((t=>e.some((e=>e.value===t.value))?v(h({},t),{selected:!0}):v(h({},t),{selected:!1})))}),this.state.isOpen?this.updateFilters(!0):this.updateFilters(!1)})),g(this,"openSelect",(e=>{this.setState({isOpen:e})})),g(this,"onCloseMenu",(()=>{this.openSelect(!1),this.updateFilters(!1,!0)})),this.addActivationHandler(this.onActivate.bind(this))}}function b(e){const t=r.jh.findObject(e,(e=>e instanceof f));t instanceof f&&t.onFilterChange()}g(f,"Component",(({model:e})=>{const{options:t,isLoading:n,visible:a,isOpen:l}=e.useState(),c=(0,o.useStyles2)(y);return(0,s.iw)(e).useState(),a?i().createElement("div",{"data-testid":d.b.variables.levels.inputWrap},i().createElement(r.Zx,{layout:"vertical",label:"Log levels"}),i().createElement(o.MultiSelect,{"aria-label":"Log level filters",prefix:i().createElement(o.Icon,{size:"lg",name:"filter"}),placeholder:"All levels",className:c.flex,onChange:e.onChangeOptions,onCloseMenu:()=>e.onCloseMenu(),onOpenMenu:e.getTagValues,onFocus:()=>e.openSelect(!0),menuShouldPortal:!0,isOpen:l,isLoading:n,isClearable:!0,blurInputOnSelect:!1,closeMenuOnSelect:!1,openMenuOnFocus:!0,showAllSelectedWhenOpen:!0,hideSelectedOptions:!1,value:null==t?void 0:t.filter((e=>e.selected)),options:null==t?void 0:t.map((e=>({value:e.value,label:e.text})))})):null}));const y=e=>({flex:(0,l.css)({flex:"1"})})},5664:(e,t,n)=>{n.d(t,{Y:()=>S,F:()=>w});var r=n(2672),a=n(5959),i=n.n(a),s=n(4750),l=n(4793),o=n(2718),c=n(3241),u=n(6089),d=n(2007),p=n(4592);function g(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function h({onClick:e,props:t}){const[n,r]=(0,a.useState)(!1),s=(0,d.useStyles2)(v);return i().createElement(i().Fragment,null,i().createElement("span",null,i().createElement("div",{className:s.titleWrap},i().createElement("span",null,"Line filter"),i().createElement(d.IconButton,{onClick:e,name:"times",size:"xs","aria-label":"Remove line filter"})),i().createElement("span",{className:s.collapseWrap},i().createElement(p._,(l=function(e){for(var t=1;tr(!1),name:"table-collapse-all"}))));var l,o}const v=e=>({titleWrap:(0,u.css)({display:"flex",fontSize:e.typography.bodySmall.fontSize,marginBottom:e.spacing(.5),gap:e.spacing(1)}),collapseWrap:(0,u.css)({display:"flex"}),collapseBtn:(0,u.css)({marginLeft:e.spacing(1)})});var m=n(8835);function f(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function b(e){for(var t=1;t{"Enter"===e.key&&((0,m.bN)(),this.updateVariableLineFilter(n,y(b({},n),{value:t})))})),f(this,"onRegexToggle",(e=>{let t;switch(e.operator){case l.cK.match:t=l.cK.regex;break;case l.cK.negativeMatch:t=l.cK.negativeRegex;break;case l.cK.regex:t=l.cK.match;break;case l.cK.negativeRegex:t=l.cK.negativeMatch;break;default:throw new Error("Invalid operator!")}this.updateFilter(e,y(b({},e),{operator:t}),!1)})),f(this,"onToggleExclusive",(e=>{let t;switch(e.operator){case l.cK.match:t=l.cK.negativeMatch;break;case l.cK.negativeMatch:t=l.cK.match;break;case l.cK.regex:t=l.cK.negativeRegex;break;case l.cK.negativeRegex:t=l.cK.regex;break;default:throw new Error("Invalid operator!")}this.updateFilter(e,y(b({},e),{operator:t}),!1)})),f(this,"onCaseSensitiveToggle",(e=>{const t=e.key===l.ld.caseSensitive?l.ld.caseInsensitive:l.ld.caseSensitive;this.updateFilter(e,y(b({},e),{key:t}),!1)})),f(this,"onInputChange",((e,t)=>{this.updateFilter(t,y(b({},t),{value:e.target.value}),!0)})),f(this,"removeFilter",(e=>{(0,m.bN)();const t=(0,s.Gk)(this),n=t.state.filters.filter((t=>void 0!==t.keyLabel&&t.keyLabel!==e.keyLabel));t.setState({filters:n})})),f(this,"updateVariableLineFilter",((e,t,n=!1,r=!1)=>{const a=(0,s.Gk)(this),i=a.state.filters.filter((t=>void 0!==t.keyLabel&&t.keyLabel!==e.keyLabel));a.updateFilters([{keyLabel:e.keyLabel,key:t.key,operator:t.operator,value:t.value},...i],{skipPublish:n,forcePublish:r}),(0,o.EE)(o.NO.service_details,o.ir.service_details.search_string_in_variables_changed,{searchQueryLength:e.value.length,containsLevel:e.value.toLowerCase().includes("level"),operator:t.operator,caseSensitive:t.key})})),f(this,"updateVariableDebounced",(0,c.debounce)(((e,t,n=!1,r=!1)=>{this.updateVariableLineFilter(e,t,n,r)}),1e3))}}function w(e){e.sort(((e,t)=>{var n,r;return parseInt(null!==(n=e.keyLabel)&&void 0!==n?n:"0",10)-parseInt(null!==(r=t.keyLabel)&&void 0!==r?r:"0",10)}))}function O(e){return{lineFiltersWrap:(0,u.css)({label:"lineFiltersWrap",display:"flex",flexWrap:"wrap",gap:`${e.spacing(.25)} ${e.spacing(2)}`})}}f(S,"Component",(({model:e})=>{const t=(0,s.Gk)(e),{filters:n}=t.useState(),r=(0,d.useStyles2)(O);return w(n),n.length?i().createElement("div",{className:r.lineFiltersWrap},n.map((t=>{const n={lineFilter:t.value,regex:t.operator===l.cK.regex||t.operator===l.cK.negativeRegex,caseSensitive:t.key===l.ld.caseSensitive,exclusive:e.isFilterExclusive(t),handleEnter:(n,r)=>e.handleEnter(n,t.value,t),setExclusive:()=>e.onToggleExclusive(t),updateFilter:(n,r)=>e.updateFilter(t,y(b({},t),{value:n}),r),onRegexToggle:()=>e.onRegexToggle(t),onInputChange:n=>e.onInputChange(n,t),onCaseSensitiveToggle:()=>e.onCaseSensitiveToggle(t)};return i().createElement(h,{key:t.keyLabel,onClick:()=>e.removeFilter(t),props:n})}))):null}))},6059:(e,t,n)=>{n.d(t,{H:()=>g});var r=n(2672),a=n(2007),i=n(5959),s=n.n(i),l=n(6089),o=n(8835),c=n(4750),u=n(1220),d=n(5111);function p(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class g extends r.Bs{onActivate(){const e=(0,c.cR)(this),t=e.state.filters.some((e=>(0,d.BG)(e.operator)));this.setState({disabled:!t}),e.subscribeToState((e=>{const t=e.filters.some((e=>(0,d.BG)(e.operator)));this.setState({disabled:!t})}))}constructor(e){super(function(e){for(var t=1;t{const e=(0,c.cR)(this).state.filters.find((e=>(0,d.BG)(e.operator)));return e?(0,o.k9)(e.key,e.value):""})),this.addActivationHandler(this.onActivate.bind(this))}}function h(e){return{button:(0,l.css)({[e.breakpoints.down("lg")]:{alignSelf:"flex-end"},[e.breakpoints.down("md")]:{marginTop:e.spacing(1),alignSelf:"flex-start"},alignSelf:"flex-start",marginTop:"22px"})}}p(g,"Component",(({model:e})=>{const{disabled:t,hidden:n}=e.useState(),r=(0,a.useStyles2)(h);if(!0===n)return null;const i=e.getLink();return s().createElement(a.LinkButton,{"data-testid":u.b.index.header.showLogsButton,disabled:t||!i,fill:"outline",className:r.button,href:i},"Show logs")}))},4002:(e,t,n)=>{n.d(t,{s:()=>v});var r=n(2672),a=n(2007),i=n(5959),s=n.n(i),l=n(6089),o=n(8531),c=n(2718),u=n(1105),d=n(2533),p=n(1220);function g(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const h=`${d.id}.serviceSelection.aggregatedMetrics`;class v extends r.Bs{constructor(e){const t=localStorage.getItem(h),n=o.config.featureToggles.exploreLogsAggregatedMetrics&&"false"!==t;var r;super(function(e){for(var t=1;t{const e=!this.state.options.aggregatedMetrics.active;(0,c.EE)(c.NO.service_selection,c.ir.service_selection.aggregated_metrics_toggled,{enabled:e}),localStorage.setItem(h,e.toString()),this.setState({options:{aggregatedMetrics:{active:e,disabled:this.state.options.aggregatedMetrics.disabled,userOverride:e}}})})),g(this,"onToggleOpen",(e=>{this.setState({isOpen:e})}))}}function m(e){return{popover:(0,l.css)({display:"flex",padding:e.spacing(2),flexDirection:"column",background:e.colors.background.primary,boxShadow:e.shadows.z3,borderRadius:e.shape.radius.default,border:`1px solid ${e.colors.border.weak}`,zIndex:1,marginRight:e.spacing(2)}),heading:(0,l.css)({fontWeight:e.typography.fontWeightMedium,paddingBottom:e.spacing(2)}),options:(0,l.css)({display:"grid",gridTemplateColumns:"1fr 50px",rowGap:e.spacing(1),columnGap:e.spacing(2),alignItems:"center"})}}g(v,"Component",(({model:e})=>{const{isOpen:t,options:n}=e.useState(),r=(0,a.useStyles2)(m);return n.aggregatedMetrics?s().createElement(a.Dropdown,{overlay:()=>s().createElement("div",{className:r.popover,onClick:e=>e.stopPropagation()},s().createElement("div",{className:r.heading},"Query options"),s().createElement("div",{className:r.options},s().createElement("div",{title:"Aggregated metrics will return service queries results much more quickly, but with lower resolution"},"Aggregated metrics"),s().createElement("span",{title:n.aggregatedMetrics.disabled?`Aggregated metrics can only be enabled for queries starting after ${u.X.toLocaleString()}`:""},s().createElement(a.Switch,{label:"Toggle aggregated metrics","data-testid":p.b.index.aggregatedMetricsToggle,value:n.aggregatedMetrics.active,disabled:n.aggregatedMetrics.disabled,onChange:e.toggleAggregatedMetricsOverride})))),placement:"bottom",onVisibleChange:e.onToggleOpen},s().createElement(a.ToolbarButton,{icon:"cog",variant:"canvas",isOpen:t,"data-testid":p.b.index.aggregatedMetricsMenu})):s().createElement(s().Fragment,null)}))},4106:(e,t,n)=>{n.d(t,{Oo:()=>h,c:()=>g,sp:()=>d});var r=n(2672),a=n(892),i=n(7781),s=n(8538),l=n(8835),o=n(2871),c=n(8315),u=n(8831);const d={from:"now-15m",to:"now"};function p(e){return new r.P1({body:new s.P({$timeRange:new r.JZ(d),routeMatch:e})})}function g(){return new r.jD({title:"Grafana Logs Drilldown",url:(0,u._F)(a.G3.explore),layout:i.PageLayoutType.Custom,preserveUrlKeys:a.Zt,routePath:(0,u._F)(a.G3.explore),getScene:e=>p(e),drilldowns:[{routePath:a.HU.logs,getPage:(e,t)=>v(e,t,a.G3.logs),defaultRoute:!0},{routePath:a.HU.labels,getPage:(e,t)=>v(e,t,a.G3.labels)},{routePath:a.HU.patterns,getPage:(e,t)=>v(e,t,a.G3.patterns)},{routePath:a.HU.fields,getPage:(e,t)=>v(e,t,a.G3.fields)},{routePath:a.KL.label,getPage:(e,t)=>m(e,t,a._J.label)},{routePath:a.KL.field,getPage:(e,t)=>m(e,t,a._J.field)},{routePath:"*",getPage:()=>h()}]})}function h(){return new r.jD({title:"",url:u.Gy,getScene:()=>new r.P1({body:new r.G1({direction:"column",children:[]})}),hideFromBreadcrumbs:!0,routePath:"*",$behaviors:[()=>{(0,l.Ns)()}]})}function v(e,t,n){const{labelName:s,labelValue:l}=(0,a.XJ)(e);return new r.jD({title:(0,c.Zr)(n),layout:i.PageLayoutType.Custom,url:a.bw[n](l,s),preserveUrlKeys:a.tm,getParentPage:()=>t,getScene:e=>p(e)})}function m(e,t,n){const{labelName:s,labelValue:l,breakdownLabel:u}=(0,a.XJ)(e);if(!u){const e=new Error("Breakdown value missing!");throw o.v.error(e,{msg:"makeBreakdownValuePage: Breakdown value missing!",labelName:s,labelValue:l,breakdownLabel:null!=u?u:""}),e}return new r.jD({title:(0,c.Zr)(u),layout:i.PageLayoutType.Custom,url:a.mC[n](l,s,u),preserveUrlKeys:a.tm,getParentPage:()=>t,getScene:e=>p(e)})}},7085:(e,t,n)=>{n.d(t,{ls:()=>$,Ci:()=>I,GD:()=>B,iD:()=>M,K_:()=>z});var r=n(2672),a=n(5959),i=n.n(a),s=n(7781),l=n(8531),o=n(2007),c=n(9829),u=(n(1220),n(2718)),d=n(227),p=n(4011),g=n(9186);var h=n(8538),v=n(2871),m=n(7608);function f(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function b(e){for(var t=1;t{(0,c.hJ)(this).then((e=>{this.setState({ds:e})})),this._subs.add(this.subscribeToState(((e,t)=>{this.state.queries.length||this.getQueries(),!this.state.context&&this.state.queries.length&&this.getContext()})))})),f(this,"getQueries",(()=>{const e=r.jh.getData(this),t=(0,c.UX)(e,(e=>e instanceof r.dt),r.dt);if(t){const e=this.state.frame?w(this.state.frame):null,n=t.state.queries.map((n=>{var a;return y(b({},n),{expr:r.jh.interpolate(t,n.expr),legendFormat:(null==e?void 0:e.name)?`{{ ${e.name} }}`:r.jh.interpolate(t,n.legendFormat),datasource:null!==(a=n.datasource)&&void 0!==a?a:void 0})}));JSON.stringify(n)!==JSON.stringify(this.state.queries)&&this.setState({queries:n})}})),f(this,"getFieldConfig",(()=>{var e;const t=(0,c.UX)(this,(e=>e instanceof r.Eb),r.Eb),n=r.jh.getData(this),a=null==n||null===(e=n.state.data)||void 0===e?void 0:e.series;let i=null==t?void 0:t.state.fieldConfig;if(i&&(null==a?void 0:a.length))for(const e of a)for(const t of e.fields){const e=Object.keys(t.config).map((e=>({id:e,value:t.config[e]}))),n=i.overrides.find((e=>{var n,r;return e.matcher.options===(null!==(r=null!==(n=t.config.displayNameFromDS)&&void 0!==n?n:t.config.displayName)&&void 0!==r?r:t.name)&&"byName"===e.matcher.id}));var s,l;n||i.overrides.unshift({matcher:{id:"byName",options:null!==(l=null!==(s=t.config.displayNameFromDS)&&void 0!==s?s:t.config.displayName)&&void 0!==l?l:t.name},properties:e}),n&&JSON.stringify(n.properties)!==JSON.stringify(e)&&(n.properties=e)}return i})),f(this,"getContext",(()=>{const e=this.getFieldConfig(),{queries:t,ds:n,labelName:a,fieldName:i,type:s}=this.state,l=r.jh.getTimeRange(this);if(!l||!t||!(null==n?void 0:n.uid))return;const o={origin:"Grafana Logs Drilldown",type:null!=s?s:"timeseries",queries:t,timeRange:b({},l.state.value),datasource:{uid:n.uid},url:window.location.href,id:`${JSON.stringify(t)}${a}${i}`,title:`${a}${i?` > ${i}`:""}`,logoPath:"public/plugins/grafana-lokiexplore-app/img/3d96a93cfcb32df74eef.svg",drillDownLabel:i,fieldConfig:e};JSON.stringify(o)!==JSON.stringify(this.state.context)&&this.setState({context:o})})),this.addActivationHandler(this.onActivate)}}f(S,"Component",(({model:e})=>{const{context:t}=e.useState(),{links:n}=(0,l.usePluginLinks)({extensionPointId:m.R6.MetricInvestigation,context:t});return i().createElement(i().Fragment,null,n.filter((e=>"grafana-investigations-app"===e.pluginId&&e.onClick)).map((e=>{var t;return i().createElement(o.IconButton,{tooltip:e.description,"aria-label":"extension-link-to-open-exploration",key:e.id,name:null!==(t=e.icon)&&void 0!==t?t:"panel-add",onClick:t=>{e.onClick&&e.onClick(t)}})})))}));const w=e=>{var t,n;const r=null!==(n=null===(t=e.fields[1])||void 0===t?void 0:t.labels)&&void 0!==n?n:{};if(1!==Object.keys(r).length)return;const a=Object.keys(r)[0];return{name:a,value:r[a]}};var O=n(5183),x=n(3102),E=n(8516),C=n(4836),k=n(3630),F=n(6089),P=n(1269);function L(e,t,n,r,a,i,s){try{var l=e[i](s),o=l.value}catch(e){return void n(e)}l.done?t(o):Promise.resolve(o).then(r,a)}function j(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var i=e.apply(t,n);function s(e){L(i,r,a,s,l,"next",e)}function l(e){L(i,r,a,s,l,"throw",e)}s(void 0)}))}}function _(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const T="Add to investigation",D="investigations_divider",N="Investigations";var $=function(e){return e.timeseries="timeseries",e.histogram="histogram",e}({}),I=function(e){return e.collapsed="Collapse",e.expanded="Expand",e}({});class B extends r.Bs{addItem(e){this.state.body&&this.state.body.addItem(e)}setItems(e){this.state.body&&this.state.body.setItems(e)}constructor(e){var t,n,a;super((n=function(e){for(var t=1;t{var e,t,n,a,i,s,l;const o=[{text:"Navigation",type:"group"},{text:"Explore",iconClassName:"compass",href:M(this),onClick:()=>A(),shortcut:"p x"}];let u;try{u=r.jh.getAncestor(this,r.Eb)}catch(e){return void this.setState({body:new r.Lw({items:o})})}var p;this.setState({investigationsButton:new S({labelName:(null===(e=this.state.investigationOptions)||void 0===e?void 0:e.getLabelName)?null===(t=this.state.investigationOptions)||void 0===t?void 0:t.getLabelName():null===(n=this.state.investigationOptions)||void 0===n?void 0:n.labelName,fieldName:null===(a=this.state.investigationOptions)||void 0===a?void 0:a.fieldName,frame:null===(i=this.state.investigationOptions)||void 0===i?void 0:i.frame,type:null===(s=this.state.investigationOptions)||void 0===s?void 0:s.type})}),this.state.addInvestigationsLink&&(null===(p=this.state.investigationsButton)||void 0===p||p.activate()),(this.state.panelType||(null==u?void 0:u.state.collapsible))&&function(e){e.push({text:"",type:"divider"}),e.push({text:"Visualization",type:"group"})}(o),(null==u?void 0:u.state.collapsible)&&function(e,t){const n=r.jh.getAncestor(t,r.Eb);e.push({text:n.state.collapsed?"Expand":"Collapse",iconClassName:n.state.collapsed?"table-collapse-all":"table-expand-all",onClick:()=>{const e=n.state.collapsed?"Expand":"Collapse",a=r.jh.getAncestor(t,r.G1);(0,E.Zb)(a,e),n.setState({collapsed:!n.state.collapsed}),(0,d.IW)("collapsed",e)}})}(o,this),this.state.panelType&&function(e,t){e.push({text:"histogram"!==t.state.panelType?"Histogram":"Time series",iconClassName:"histogram"!==t.state.panelType?"graph-bar":"chart-line",onClick:()=>{const e=r.jh.getAncestor(t,r.xK),n=r.jh.getAncestor(t,r.Eb).clone(),a=r.jh.getData(t).clone(),i=t.clone(),s=Array.isArray(n.state.headerActions)?n.state.headerActions.map((e=>e.clone())):n.state.headerActions;let l;l="histogram"!==t.state.panelType?r.d0.timeseries().setOverrides(O.jC):r.d0.histogram(),e.setState({body:l.setMenu(i).setTitle(n.state.title).setHeaderActions(s).setData(a).build()});const o="timeseries"!==t.state.panelType?"timeseries":"histogram";(0,d.IW)("panelType",o),i.setState({panelType:o});const u=(0,c.UX)(e,(e=>e instanceof x.E),x.E);u&&u.rebuildAvgFields(),R(o)}})}(o,this),this.setState({body:new r.Lw({items:o})});var g=this;this._subs.add(null===(l=this.state.investigationsButton)||void 0===l?void 0:l.subscribeToState(j((function*(){yield function(e){return W.apply(this,arguments)}(g)}))))}))}}_(B,"Component",(({model:e})=>{const{body:t}=e.useState();return t?i().createElement(t.Component,{model:t}):i().createElement(i().Fragment,null)}));const M=e=>{const t=r.jh.getAncestor(e,h.P),n=r.jh.getData(e);let a=n instanceof r.dt?n:(0,c.oh)(n)[0];if(!a){const t=r.jh.findObject(e,(e=>e instanceof C.u||e instanceof k.u));if(t){const e=r.jh.getData(t);a=e instanceof r.dt?e:(0,c.oh)(e)[0]}else v.v.error(new Error("Unable to locate query runner!"),{msg:"PanelMenu - getExploreLink: Unable to locate query runner!"})}const i=a.state.queries[0].expr;return((e,t,n=!1)=>{t||(t=(0,c.u9)(e)),t=t.replace(/\s+/g," ").trimEnd();const a=(0,c.U4)(e),i=r.jh.getTimeRange(e).state.value,o=(0,d.N$)(e),u=(0,d.k5)(),h=function(){const e=new URLSearchParams(window.location.search).get("urlColumns");if(e)try{const t=(0,p.aJ)(JSON.parse(e));let n={};for(const e in t)n[e]=t[e];return n}catch(e){console.error(e)}}(),v=JSON.stringify({"loki-explore":{range:(0,s.toURLRange)(i.raw),queries:[{refId:"logs",expr:t,datasource:a}],panelsState:{logs:{displayedFields:o,visualisationType:u,columns:h,labelFieldName:"table"===u?g.bz:void 0}},datasource:a}});var m;const f=null!==(m=l.config.appSubUrl)&&void 0!==m?m:"",b=s.urlUtil.renderUrl(`${f}/explore`,{panes:v,schemaVersion:1});return n&&window.open(b,"_blank"),b})(t,r.jh.interpolate(e,i))},A=()=>{(0,u.EE)(u.NO.all,u.ir.all.open_in_explore_menu_clicked)},R=e=>{(0,u.EE)(u.NO.service_details,u.ir.service_details.change_viz_type,{newVizType:e})},V=function(){var e=j((function*(e){const t=m.R6.MetricInvestigation,n=e.state.context;return void 0!==l.getPluginLinkExtensions?(0,l.getPluginLinkExtensions)({extensionPointId:t,context:n}).extensions[0]:void 0!==l.getObservablePluginLinks?(yield(0,P.lastValueFrom)((0,l.getObservablePluginLinks)({extensionPointId:t,context:n})))[0]:void 0}));return function(t){return e.apply(this,arguments)}}();function W(){return(W=j((function*(e){const t=e.state.investigationsButton;if(t){var n;const o=yield V(t);var r;const c=null!==(r=null===(n=e.state.body)||void 0===n?void 0:n.state.items)&&void 0!==r?r:[],u=c.find((e=>e.text===T));var a,i,s,l;o&&(u?u&&(null===(a=e.state.body)||void 0===a||a.setItems(c.filter((e=>!1===[D,N,T].includes(e.text))))):(null===(i=e.state.body)||void 0===i||i.addItem({text:D,type:"divider"}),null===(s=e.state.body)||void 0===s||s.addItem({text:N,type:"group"}),null===(l=e.state.body)||void 0===l||l.addItem({text:T,iconClassName:"plus-square",onClick:e=>o.onClick&&o.onClick(e)})))}}))).apply(this,arguments)}const z=e=>({panelWrapper:(0,F.css)({width:"100%",height:"100%",label:"panel-wrapper",position:"absolute",display:"flex","button.show-on-hover":{opacity:1,visibility:"visible",background:"none","&:hover":{background:e.colors.secondary.shade}}})})},558:(e,t,n)=>{n.d(t,{Of:()=>S,Qt:()=>F,XI:()=>O,hi:()=>x,oR:()=>j,ts:()=>P,u7:()=>C,vn:()=>k});var r=n(5959),a=n.n(r),i=n(7781),s=n(2672),l=n(2718),o=n(3143),c=n(5218),u=n(2254),d=n(7097),p=n(4750),g=n(4793),h=n(9055),v=n(833),m=n(2871),f=n(6001),b=n(8835);function y(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class S extends i.BusEventBase{constructor(e,t,n,r){super(),y(this,"source",void 0),y(this,"operator",void 0),y(this,"key",void 0),y(this,"value",void 0),this.source=e,this.operator=t,this.key=n,this.value=r}}y(S,"type","add-filter");class w extends i.BusEventBase{constructor(e,t,n){super(),y(this,"key",void 0),y(this,"value",void 0),y(this,"operator",void 0),this.key=e,this.value=t,this.operator=n}}function O(e,t,n){const r="="===e.operator?"include":"exclude";F(e.key,e.value,r,t,n)}function x(e,t,n,r,a){const i=T(n,e,t);let s=i.state.filters.filter((t=>{const i=(0,p.z2)(n,t);return r&&a?!(t.key===e&&i.value===r&&t.operator===a):r?!(t.key===e&&i.value===r):a?!(t.key===e&&t.operator===a):!(t.key===e)}));t.publishEvent(new w(e,r,a),!0),i.setState({filters:s})}y(w,"type","add-filter");const E=e=>e===g.w7.gt||e===g.w7.gte?"greater":e===g.w7.lt||e===g.w7.lte?"lesser":void 0;function C(e,t,n,r){r||(r=L(e,t));const a=T(r,e,t),i=n?E(n):void 0;let s=a.state.filters.filter((t=>!(t.key===e&&(E(t.operator)===i||t.operator===g.w7.NotEqual))));a.setState({filters:s})}function k(e,t,n,r,a){const i=E(n);a||(a=L(e,r));const s=T(a,e,r);let l;a===o.mB&&(l=JSON.stringify({value:t,parser:(0,d.Ri)(e,r)}));let c=s.state.filters.filter((t=>!(t.key===e&&(E(t.operator)===i||t.operator===g.w7.NotEqual))));c=[...c,{key:e,operator:n,value:l||t,valueLabels:[t]}],s.setState({filters:c}),r.publishEvent(new S("filterButton",n,e,t),!0)}function F(e,t,n,r,a){(0,b.bN)(),a===o.MB&&(0,h._J)(e,t,r);const i=T(a,e,r);let s,l=t;a===o.mB?s=JSON.stringify({value:t,parser:(0,d.Ri)(e,r)}):a===o._Y&&"exclude"===n&&(l=`!${t}`);let c=i.state.filters.filter((r=>{const i=(0,p.z2)(a,r);return"include"===n?!(r.key===e&&r.operator===g.w7.NotEqual):"exclude"===n?!(r.key===e&&r.operator===g.w7.Equal):!(r.key===e&&i.value===t)}));const u=c.length!==i.state.filters.length;("include"===n||"exclude"===n||!u&&"toggle"===n)&&(c=[...c,{key:e,operator:"exclude"===n?g.w7.NotEqual:g.w7.Equal,value:s||t,valueLabels:[l]}]),i.setState({filters:c}),r.publishEvent(new S("filterButton",n,e,t),!0)}function P(e,t){return e===o.e4?o._Y:t}function L(e,t){var n,r;return(null===(r=(0,u.TG)(t))||void 0===r||null===(n=r.fields)||void 0===n?void 0:n.find((t=>t.name===e)))?o.MB:o.mB}class j extends s.Bs{onActivate(){const e=_(this.state.frame);if(e){const t=T(this.state.variableName,e.name,this);this.setFilterState(t),this._subs.add(t.subscribeToState(((e,n)=>{(0,v.B)(e.filters,n.filters)||this.setFilterState(t)})))}}setFilterState(e){const t=_(this.state.frame);if(!t)return void this.setState({isIncluded:!1,isExcluded:!1});const n=e.state.filters.find((e=>{const n=(0,f.OH)(t),r=(0,p.z2)(n?o._P:o.mB,e);return e.key===t.name&&r.value===t.value}));n?this.setState({isIncluded:n.operator===g.w7.Equal,isExcluded:n.operator===g.w7.NotEqual}):this.setState({isIncluded:!1,isExcluded:!1})}constructor(e){super(e),y(this,"onClick",(e=>{const t=_(this.state.frame);if(!t)return;F(t.name,t.value,e,this,this.state.variableName);const n=T(this.state.variableName,t.name,this);(0,l.EE)(l.NO.service_details,l.ir.service_details.add_to_filters_in_breakdown_clicked,{filterType:this.state.variableName,key:t.name,action:e,filtersLength:(null==n?void 0:n.state.filters.length)||0})})),this.addActivationHandler(this.onActivate.bind(this))}}y(j,"Component",(({model:e})=>{const{hideExclude:t,isExcluded:n,isIncluded:r}=e.useState();return a().createElement(c.F,{buttonFill:"outline",isIncluded:null!=r&&r,isExcluded:null!=n&&n,onInclude:()=>e.onClick("include"),onClear:()=>e.onClick("clear"),onExclude:()=>e.onClick("exclude"),hideExclude:t})}));const _=e=>{var t,n;const r=null!==(n=null===(t=e.fields[1])||void 0===t?void 0:t.labels)&&void 0!==n?n:{};if(1!==Object.keys(r).length)return void m.v.warn("getFilter: unexpected empty labels");const a=Object.keys(r)[0];return{name:a,value:r[a]}},T=(e,t,n)=>e===o.mB||e===o._P?(0,p.YS)(n):(0,p.bY)(P(t,e),n)},1022:(e,t,n)=>{n.d(t,{G:()=>v,x:()=>g});var r=n(2672),a=n(5959),i=n.n(a),s=n(5631),l=n(6261),o=n(8810),c=n(4105),u=n(7781),d=n(2871);function p(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class g extends u.BusEventBase{}p(g,"type","breakdown-search-reset");const h={};class v extends r.Bs{filterValues(e){const t=r.jh.findObject(this,(e=>e instanceof o.O||e instanceof c.J6));if(t instanceof o.O||t instanceof c.J6){h[this.cacheKey]=e;const n=r.jh.findDescendents(t,s.h);null==n||n.forEach((t=>{t.state.body.isActive&&t.filterByString(e)}))}else d.v.warn("unable to find Breakdown scene",{typeofBody:typeof t,filter:e})}constructor(e){var t;super({filter:null!==(t=h[e])&&void 0!==t?t:""}),p(this,"cacheKey",void 0),p(this,"onValueFilterChange",(e=>{this.setState({filter:e.target.value}),this.filterValues(e.target.value)})),p(this,"clearValueFilter",(()=>{this.setState({filter:""}),this.filterValues("")})),p(this,"reset",(()=>{this.setState({filter:""}),h[this.cacheKey]=""})),this.cacheKey=e}}p(v,"Component",(({model:e})=>{const{filter:t}=e.useState();return i().createElement(l.D,{value:t,onChange:e.onValueFilterChange,onClear:e.clearValueFilter,placeholder:"Search for value"})}))},5631:(e,t,n)=>{n.d(t,{h:()=>b});var r=n(5959),a=n.n(r),i=n(7781),s=n(2672),l=n(5722),o=n(4932),c=n(4144),u=n(2007),d=n(6089),p=n(1022),g=n(1269),h=n(738),v=n(8516),m=n(2871);function f(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class b extends s.Bs{performRepeat(e){const t=[],n=(0,l.sortSeries)(e.series,this.sortBy,this.direction);for(let e=0;ee.isActive&&e.state.key===v.s$));if(n[0]instanceof s.G1){const t=s.jh.findDescendents(n[0],s.Eb)[0];t instanceof s.Eb?t.setState({$data:new s.Es({transformations:[()=>{return t=e[0],e=>e.pipe((0,g.map)((e=>{if(!t||!t.length)return e;let n=[];return e.forEach((e=>{const r=(0,c.ee)(e);t.includes(r)&&n.push(e)})),n})));var t}]})}):m.v.warn("filterSummaryChart: VizPanel not found",{typeofPanel:typeof t})}else m.v.warn("filterSummaryChart: SceneFlexItem not found",{typeofGraphParent:typeof n})}}constructor(e){var{sortBy:t,direction:n,getFilter:r}=e;super(function(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}(e,["sortBy","direction","getFilter"])),f(this,"unfilteredChildren",[]),f(this,"sortBy",void 0),f(this,"direction",void 0),f(this,"sortedSeries",[]),f(this,"getFilter",void 0),f(this,"sort",((e,t)=>{const n=s.jh.getData(this);this.sortBy=e,this.direction=t,n.state.data&&this.performRepeat(n.state.data)})),f(this,"iterateFrames",(e=>{if(s.jh.getData(this).state.data)for(let t=0;t{let t=[];this.iterateFrames(((e,n)=>{const r=(0,c.ee)(e[n]);t.push(r)})),(0,o.X)(t,e,(e=>{e&&e[0]?this.filterFrames((t=>{const n=(0,c.ee)(t);return e[0].includes(n)})):this.filterFrames((()=>!0)),this.filterSummaryChart(e)}))})),f(this,"filterFrames",(e=>{const t=[];if(this.iterateFrames(((n,r)=>{e(n[r])&&t.push(this.unfilteredChildren[r])})),0===t.length){const e=this.getFilter();this.state.body.setState({children:[y(e,this.clearFilter)]})}else this.state.body.setState({children:t})})),f(this,"clearFilter",(()=>{this.publishEvent(new p.x,!0)})),this.sortBy=t,this.direction=n,this.getFilter=r,this.addActivationHandler((()=>{const e=s.jh.getData(this);this._subs.add(e.subscribeToState(((e,t)=>{var n,r,a,s;((null===(n=e.data)||void 0===n?void 0:n.state)===i.LoadingState.Done||(null===(r=e.data)||void 0===r?void 0:r.state)===i.LoadingState.Streaming&&e.data.series.length>(null!==(s=null===(a=t.data)||void 0===a?void 0:a.series.length)&&void 0!==s?s:0))&&this.performRepeat(e.data)}))),e.state.data&&this.performRepeat(e.state.data)}))}}function y(e,t){return new s.G1({direction:"row",children:[new s.vA({body:new s.dM({reactNode:a().createElement("div",{className:S.alertContainer},a().createElement(u.Alert,{title:"",severity:"info",className:S.noResultsAlert},"No values found matching “",e,"”",a().createElement(u.Button,{className:S.clearButton,onClick:t},"Clear filter")))})})]})}f(b,"Component",(({model:e})=>{const{body:t}=e.useState();return a().createElement(t.Component,{model:t})}));const S={alertContainer:(0,d.css)({flexGrow:1,display:"flex",justifyContent:"center",alignItems:"center"}),noResultsAlert:(0,d.css)({minWidth:"30vw",flexGrow:0}),clearButton:(0,d.css)({marginLeft:"1.5rem"})}},3782:(e,t,n)=>{n.d(t,{a:()=>c});var r=n(2672),a=n(4482),i=n(2007),s=n(5959),l=n.n(s),o=n(4105);class c extends r.Bs{static Component({model:e}){const{type:t}=e.useState();return l().createElement(a.R,null,l().createElement(i.Alert,{title:"",severity:"warning"},"We did not find any ",t," for the given timerange. Please"," ",l().createElement("a",{className:o.ZI.link,href:"https://forms.gle/1sYWCTPvD72T1dPH9",target:"_blank",rel:"noopener noreferrer"},"let us know")," ","if you think this is a mistake."))}}},4462:(e,t,n)=>{n.d(t,{f:()=>d,u:()=>u});var r=n(6089),a=n(5959),i=n.n(a),s=n(2007),l=n(1220),o=n(7918);function c(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function u({options:e,value:t,onChange:n,label:r}){const l=(0,s.useStyles2)(p),[o,c]=(0,a.useState)(!1),u=e.map((e=>({label:e.label,value:e.value})));return i().createElement(s.InlineField,{className:l.selectWrapper,label:r},i().createElement(s.Select,{options:u,value:t,onOpenMenu:()=>c(!0),onCloseMenu:()=>c(!1),onChange:e=>n(e.value),className:l.select,prefix:o?void 0:i().createElement(s.Icon,{name:"search"})}))}function d({options:e,value:t,onChange:n,label:r,selectOption:u,isLoading:d,initialFilter:g}){var h;const v=(0,s.useStyles2)(p),[m,f]=(0,a.useState)(!1),[b,y]=(0,a.useState)(g),S=e.map((e=>({label:e.label,value:e.value}))),w=b&&t&&(null===(h=b.value)||void 0===h?void 0:h.includes(t))?[b,...S]:S,O=null==w?void 0:w.find((e=>e.value===t));return i().createElement(s.InlineField,{className:v.serviceSceneSelectWrapper,label:r},i().createElement(s.Select,{isLoading:d,"data-testid":l.b.exploreServiceSearch.search,placeholder:"Search values",options:w,isClearable:!0,value:t,onOpenMenu:()=>f(!0),onCloseMenu:()=>f(!1),allowCustomValue:!0,prefix:m||(null==O?void 0:O.__isNew__)?void 0:i().createElement(s.Icon,{name:"search"}),onChange:(e,t)=>{return(null==e?void 0:e.__isNew__)||(null==e?void 0:e.icon)?(y((r=function(e){for(var t=1;t{const r=t;return"input-change"===r.action?n(e):"menu-close"===r.action&&r.prevInputValue?(y({value:(0,o.vC)(r.prevInputValue),label:r.prevInputValue,icon:"filter",__isNew__:!0}),n(r.prevInputValue)):void 0}}))}function p(e){return{input:(0,r.css)({marginBottom:0}),select:(0,r.css)({maxWidth:e.spacing(64),minWidth:e.spacing(20)}),selectWrapper:(0,r.css)({label:"field-selector-select-wrapper",maxWidth:e.spacing(62.5),minWidth:e.spacing(20),marginRight:e.spacing.x1,marginBottom:0}),serviceSceneSelectWrapper:(0,r.css)({label:"service-select-wrapper",maxWidth:e.spacing(62.5),minWidth:e.spacing(20),marginRight:e.spacing.x1,marginBottom:0})}}},4836:(e,t,n)=>{n.d(t,{u:()=>L});var r,a,i,s=n(2672),l=n(7918),o=n(227),c=n(7781),u=n(738),d=n(5183),p=n(5631),g=n(2007),h=n(7097),v=n(4144),m=n(3143),f=n(5959),b=n.n(f),y=n(4105),S=n(2254),w=n(5722),O=n(4750),x=n(7085),E=n(8516),C=n(833),k=n(2871);function F(e,t,n,r,a,i,s){try{var l=e[i](s),o=l.value}catch(e){return void n(e)}l.done?t(o):Promise.resolve(o).then(r,a)}function P(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var i=e.apply(t,n);function s(e){F(i,r,a,s,l,"next",e)}function l(e){F(i,r,a,s,l,"throw",e)}s(void 0)}))}}class L extends s.Bs{static Selector({model:e}){const{body:t}=e.useState();return t instanceof u.U?b().createElement(b().Fragment,null,t&&b().createElement(u.U.Selector,{model:t})):b().createElement(b().Fragment,null)}getTagKey(){const e=(0,O.Hj)(this);return String(e.state.value)}onActivate(){var e;const t=this.buildQuery();this.setState({body:this.build(t),$data:this.buildQueryRunner()}),this._subs.add(null===(e=this.state.$data)||void 0===e?void 0:e.subscribeToState((e=>{this.onValuesDataQueryChange(e,t)}))),this.runQuery(),this.setSubscriptions()}buildQueryRunner(){const e=this.buildQuery();return(0,d.rS)([e],{runQueriesMode:"manual"})}buildQuery(){const e=this.getTagKey(),t=(0,O.ir)(this),n=(0,S.rD)(this),r=(0,h.Jl)(e,t,n),{variableName:a,filterExpression:i}=this.removeFieldLabelFromVariableInterpolation(),o=s.jh.interpolate(this,r.replace(`\${${a}}`,i));return(0,l.l)(o,{legendFormat:`{{${e}}}`,refId:e})}setSubscriptions(){this._subs.add(s.jh.getTimeRange(this).subscribeToState((()=>{this.runQuery()}))),this._subs.add((0,O.Gk)(this).subscribeToState(((e,t)=>{(0,C.B)(e.filters,t.filters)||this.runQuery()}))),this._subs.add((0,O.Ku)(this).subscribeToState(((e,t)=>{e.value!==t.value&&this.runQuery()}))),this._subs.add((0,O.cR)(this).subscribeToState(((e,t)=>{(0,C.B)(e.filters,t.filters)||this.runQuery()}))),this._subs.add((0,O.iw)(this).subscribeToState(((e,t)=>{(0,C.B)(e.filters,t.filters)||this.runQuery()})));const{parser:e}=this.getParserForThisField();"structuredMetadata"!==e?this.setFieldParserSubscriptions():this.setMetadataParserSubscriptions()}setMetadataParserSubscriptions(){const e=this.getTagKey();var t=this;this._subs.add((0,O.ir)(this).subscribeToState(function(){var e=P((function*(e,n){(0,C.B)(e.filters,n.filters)||t.runQuery()}));return function(t,n){return e.apply(this,arguments)}}()));var n=this;this._subs.add((0,O.oY)(this).subscribeToState(function(){var t=P((function*(t,r){(0,C.B)(t.filters.filter((t=>t.key!==e)),r.filters.filter((t=>t.key!==e)))||n.runQuery()}));return function(e,n){return t.apply(this,arguments)}}()))}setFieldParserSubscriptions(){const e=this.getTagKey();var t=this;this._subs.add((0,O.oY)(this).subscribeToState(function(){var e=P((function*(e,n){(0,C.B)(e.filters,n.filters)||t.runQuery()}));return function(t,n){return e.apply(this,arguments)}}()));var n=this;this._subs.add((0,O.ir)(this).subscribeToState(function(){var t=P((function*(t,r){(0,C.B)(t.filters.filter((t=>t.key!==e)),r.filters.filter((t=>t.key!==e)))||n.runQuery()}));return function(e,n){return t.apply(this,arguments)}}()))}rebuildQuery(){var e;const t=this.buildQuery();null===(e=this.getSceneQueryRunner())||void 0===e||e.setState({queries:[t]})}runQuery(){this.rebuildQuery();const e=this.getSceneQueryRunner();null==e||e.runQueries()}getSceneQueryRunner(){if(this.state.$data){const e=s.jh.findDescendents(this.state.$data,s.dt);if(1!==e.length){const e=new Error("Unable to find query runner in value breakdown!");throw k.v.error(e,{msg:"FieldValuesBreakdownScene: Unable to find query runner in value breakdown!"}),e}return e[0]}k.v.warn("FieldValuesBreakdownScene: Query is attempting to execute, but query runner is undefined!")}removeFieldLabelFromVariableInterpolation(){const e=this.getTagKey();let t,n;if("structuredMetadata"===this.getQueryParser()){const r=(0,O.oY)(this);n=m._P,t=(0,l.E3)(r.state.filters,[e])}else{n=m.mB;const r=(0,O.ir)(this);t=(0,l.ZX)(r.state.filters,[e])}return{filterExpression:t,variableName:n}}onValuesDataQueryChange(e,t){var n,r;(null===(n=e.data)||void 0===n?void 0:n.state)===c.LoadingState.Done&&this.state.body instanceof s.dM&&this.setState({body:this.build(t)}),(null===(r=e.data)||void 0===r?void 0:r.state)===c.LoadingState.Error&&this.setErrorState(e.data.errors)}setErrorState(e){this.setState({body:new s.dM({reactNode:b().createElement(g.Alert,{title:"Something went wrong with your request",severity:"error"},null==e?void 0:e.map(((e,t)=>b().createElement("div",{key:t},e.status&&b().createElement(b().Fragment,null,b().createElement("strong",null,"Status"),": ",e.status," ",b().createElement("br",null)),e.message&&b().createElement(b().Fragment,null,b().createElement("strong",null,"Message"),": ",e.message," ",b().createElement("br",null)),e.traceId&&b().createElement(b().Fragment,null,b().createElement("strong",null,"TraceId"),": ",e.traceId)))))})})}build(e){const{optionValue:t,parser:n}=this.getParserForThisField(),{sortBy:r,direction:a}=(0,o.vs)("fields",w.DEFAULT_SORT_BY,"desc"),i=s.jh.getAncestor(this,y.J6),l=()=>{var e;return null!==(e=i.state.search.state.filter)&&void 0!==e?e:""};return new u.U({options:[{value:"single",label:"Single"},{value:"grid",label:"Grid"},{value:"rows",label:"Rows"}],active:"grid",layouts:[new s.G1({direction:"column",children:[new s.dM({reactNode:b().createElement(y.J6.LabelsMenu,{model:i})}),new s.vA({minHeight:300,body:s.d0.timeseries().setTitle(t).setMenu(new x.GD({})).build()})]}),new s.G1({direction:"column",children:[new s.dM({reactNode:b().createElement(y.J6.LabelsMenu,{model:i})}),new E.s7({title:t,type:"field",tagKey:this.getTagKey()}),new s.dM({reactNode:b().createElement(y.J6.ValuesMenu,{model:i})}),new p.h({body:new s.gF({templateColumns:y.OK,autoRows:"200px",children:[new s.vA({body:new s.dM({reactNode:b().createElement(g.LoadingPlaceholder,{text:"Loading..."})})})],isLazy:!0}),getLayoutChild:(0,h.Zp)(v.ee,(null==e?void 0:e.expr.includes("count_over_time"))?g.DrawStyle.Bars:g.DrawStyle.Line,"structuredMetadata"===n?m._P:m.mB,s.jh.getAncestor(this,y.J6).state.sort,t),sortBy:r,direction:a,getFilter:l})]}),new s.G1({direction:"column",children:[new s.dM({reactNode:b().createElement(y.J6.LabelsMenu,{model:i})}),new E.s7({title:t,type:"field",tagKey:this.getTagKey()}),new s.dM({reactNode:b().createElement(y.J6.ValuesMenu,{model:i})}),new p.h({body:new s.gF({templateColumns:"1fr",autoRows:"200px",children:[new s.vA({body:new s.dM({reactNode:b().createElement(g.LoadingPlaceholder,{text:"Loading..."})})})],isLazy:!0}),getLayoutChild:(0,h.Zp)(v.ee,(null==e?void 0:e.expr.includes("count_over_time"))?g.DrawStyle.Bars:g.DrawStyle.Line,"structuredMetadata"===n?m._P:m.mB,s.jh.getAncestor(this,y.J6).state.sort,t),sortBy:r,direction:a,getFilter:l})]})]})}getParserForThisField(){const e=(0,O.Hj)(this),t=String(e.state.value);return{optionValue:t,parser:(0,h.Ri)(t,this)}}getParserForFields(){return(0,h.k$)((0,O.ir)(this))}getQueryParser(){const{parser:e}=this.getParserForThisField(),t=this.getParserForFields();return e===t?t:void 0===e?"mixed":"structuredMetadata"===e?t:"structuredMetadata"===t?e:"mixed"}constructor(e){super(e),this.addActivationHandler(this.onActivate.bind(this))}}i=({model:e})=>{const{body:t}=e.useState(),n=(0,g.useStyles2)(x.K_);return t?b().createElement("span",{className:n.panelWrapper},t&&b().createElement(t.Component,{model:t})):b().createElement(g.LoadingPlaceholder,{text:"Loading..."})},(a="Component")in(r=L)?Object.defineProperty(r,a,{value:i,enumerable:!0,configurable:!0,writable:!0}):r[a]=i},3102:(e,t,n)=>{n.d(t,{E:()=>x});var r=n(2672),a=n(3143),i=n(7918),s=n(5183),l=n(2007),o=n(738),c=n(4105),u=n(2254),d=n(5959),p=n.n(d),g=n(9016),h=n(892),v=n(7781),m=n(7097),f=n(4750),b=n(7085),y=n(2871),S=n(227),w=n(1752);function O(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class x extends r.Bs{updateChildren(e,t=void 0){var n;const a=(0,u.UO)(e),i=(0,u.nU)(e),s=(0,u.dB)(e),l=this.calculateCardinalityMap(e);null===(n=this.state.body)||void 0===n||n.state.layouts.forEach((e=>{if(e instanceof r.gF){const n=new Set(null==i?void 0:i.values),o=e.state.children;for(let l=0;le));o.push(...this.buildChildren(c)),o.sort(this.sortChildren(l)),o.map((e=>{this.subscribeToPanel(e)})),e.setState({children:o})}else y.v.warn("Layout is not SceneCSSGridLayout")}))}sortChildren(e){return(t,n)=>{const r=t.state.body,a=n.state.body;var i;const s=null!==(i=e.get(r.state.title))&&void 0!==i?i:0;var l;return(null!==(l=e.get(a.state.title))&&void 0!==l?l:0)-s}}calculateCardinalityMap(e){const t=(0,u.UO)(e),n=new Map;if(null==t?void 0:t.length)for(let e=0;e<(null==t?void 0:t.length);e++){const r=t.fields[0].values[e],a=t.fields[1].values[e];n.set(r,a)}return n}onActivate(){var e;this.setState({body:this.build()});const t=r.jh.getAncestor(this,u.Mn);void 0===t.state.fieldsCount&&this.updateFieldCount(),this._subs.add(null===(e=t.state.$detectedFieldsData)||void 0===e?void 0:e.subscribeToState(this.onDetectedFieldsChange)),this._subs.add(this.subscribeToFieldsVar())}subscribeToFieldsVar(){return(0,f.ir)(this).subscribeToState(((e,t)=>{const n=r.jh.getAncestor(this,u.Mn),a=e.filters.map((e=>(0,f.bu)(e).parser)),i=t.filters.map((e=>(0,f.bu)(e).parser)),s=(0,m.Qg)(a);if(s!==(0,m.Qg)(i)){var l;const e=null===(l=n.state.$detectedFieldsData)||void 0===l?void 0:l.state;e&&this.updateChildren(e,s)}}))}build(){var e;const t=(0,f.Hj)(this).state.options.map((e=>String(e.value)));r.jh.getAncestor(this,c.J6).state.search.reset();const n=this.buildChildren(t),a=r.jh.getAncestor(this,u.Mn),i=this.calculateCardinalityMap(null===(e=a.state.$detectedFieldsData)||void 0===e?void 0:e.state);n.sort(this.sortChildren(i));const s=n.map((e=>e.clone()));return[...n,...s].map((e=>{this.subscribeToPanel(e)})),new o.U({options:[{value:"grid",label:"Grid"},{value:"rows",label:"Rows"}],active:"grid",layouts:[new r.gF({templateColumns:c.OK,autoRows:"200px",children:n,isLazy:!0}),new r.gF({templateColumns:"1fr",autoRows:"200px",children:s,isLazy:!0})]})}subscribeToPanel(e){const t=e.state.body;var n;t&&this._subs.add(null==t||null===(n=t.state.$data)||void 0===n?void 0:n.getResultsStream().subscribe((t=>{t.data.errors&&t.data.errors.length>0&&(e.setState({isHidden:!0}),this.updateFieldCount())})))}rebuildAvgFields(){const e=(0,u.rD)(this),t=this.getActiveGridLayouts(),n=[];var a;const i=null!==(a=(0,S.ex)("panelType",[b.ls.histogram,b.ls.timeseries]))&&void 0!==a?a:b.ls.timeseries;null==t||t.state.children.forEach((t=>{if(t instanceof r.xK&&!t.state.isHidden){const a=r.jh.findDescendents(t,r.Eb);if(a.length){const r=a[0].state.title,s=(0,m.ph)(r,e);if((0,m.JI)(s)){const t=this.buildChild(r,e,i);t&&n.push(t)}else n.push(t)}}})),n.length&&(null==t||t.setState({children:n}))}buildChildren(e){const t=[],n=(0,u.rD)(this);var r;const i=null!==(r=(0,S.ex)("panelType",[b.ls.timeseries,b.ls.histogram]))&&void 0!==r?r:b.ls.timeseries;for(const r of e){if(r===a.To||!r)continue;const e=this.buildChild(r,n,i);e&&t.push(e)}return t}buildChild(e,t,n){if(e===a.To||!e)return;const i=(0,m.ph)(e,t),o=this.getQueryRunnerForPanel(e,t,i);let c;const u=[];(0,m.JI)(i)?(c="histogram"===n?r.d0.histogram():r.d0.timeseries(),c.setTitle(e).setData(o).setMenu(new b.GD({investigationOptions:{labelName:e},panelType:n})),u.push(new g.X({labelName:String(e),hideValueDrilldown:!0,fieldType:h._J.field}))):(c=r.d0.timeseries().setTitle(e).setData(o).setMenu(new b.GD({investigationOptions:{labelName:e}})).setCustomFieldConfig("stacking",{mode:l.StackingMode.Normal}).setCustomFieldConfig("fillOpacity",100).setCustomFieldConfig("lineWidth",0).setCustomFieldConfig("pointSize",0).setCustomFieldConfig("drawStyle",l.DrawStyle.Bars).setOverrides(s.jC),u.push(new g.X({labelName:String(e),fieldType:h._J.field}))),c.setHeaderActions(u),c.setSeriesLimit(w.l);const d=c.build();return new r.xK({body:d})}getQueryRunnerForPanel(e,t,n){const r=(0,f.ir)(this),a=(0,m.Jl)(e,r,t),l=(0,i.l)(a,{legendFormat:(0,m.JI)(n)?e:`{{${e}}}`,refId:e});return(0,s.rS)([l])}getActiveGridLayouts(){var e,t,n;return null!==(n=null===(e=this.state.body)||void 0===e?void 0:e.state.layouts.find((e=>e.isActive)))&&void 0!==n?n:null===(t=this.state.body)||void 0===t?void 0:t.state.layouts[0]}updateFieldCount(){var e,t;const n=this.getActiveGridLayouts(),a=null==n?void 0:n.state.children,i=null==a?void 0:a.filter((e=>!e.state.isHidden));var s;null===(e=(t=r.jh.getAncestor(this,c.J6).state).changeFieldCount)||void 0===e||e.call(t,null!==(s=null==i?void 0:i.length)&&void 0!==s?s:0)}static Selector({model:e}){const{body:t}=e.useState();return p().createElement(p().Fragment,null,t&&p().createElement(o.U.Selector,{model:t}))}constructor(e){super(e),O(this,"onDetectedFieldsChange",(e=>{var t;(null===(t=e.data)||void 0===t?void 0:t.state)===v.LoadingState.Done&&this.updateChildren(e)})),this.addActivationHandler(this.onActivate.bind(this))}}O(x,"Component",(({model:e})=>{const{body:t}=e.useState(),n=(0,l.useStyles2)(b.K_);return t?p().createElement("span",{className:n.panelWrapper},t&&p().createElement(t.Component,{model:t})):p().createElement(l.LoadingPlaceholder,{text:"Loading..."})}))},4105:(e,t,n)=>{n.d(t,{J6:()=>N,OK:()=>D,ZI:()=>$});var r=n(6089),a=n(5959),i=n.n(a),s=n(7781),l=n(2672),o=n(2007),c=n(2718),u=n(227),d=n(3143),p=n(833),g=n(5431),h=n(8835),v=n(892),m=n(5722),f=n(8538),b=n(2254),y=n(1022),S=n(5631),w=n(3102),O=n(4462),x=n(4836),E=n(738),C=n(4144),k=n(9570),F=n(6001),P=n(3782),L=n(4750),j=n(9558),_=n(1863);function T(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const D="repeat(auto-fit, minmax(400px, 1fr))";class N extends l.Bs{onActivate(){var e,t,n;const r=(0,L.Hj)(this),a=l.jh.getAncestor(this,b.Mn);this.setState({loading:(null===(t=a.state.$detectedLabelsData)||void 0===t||null===(e=t.state.data)||void 0===e?void 0:e.state)!==s.LoadingState.Done}),this._subs.add(this.subscribeToEvent(y.x,(()=>{this.state.search.clearValueFilter()}))),this._subs.add(this.subscribeToEvent(C.gf,this.handleSortByChange)),this._subs.add(r.subscribeToState(this.variableChanged)),this._subs.add((0,L.cR)(this).subscribeToState(((e,t)=>{const n=(0,L.Hj)(this);let{labelName:r}=(0,v.W6)();const a=e.filters.find((e=>e.key===r)),i=t.filters.find((e=>e.key===r));n.state.value===d.To&&a!==i&&this.setState({loading:!0,body:void 0})}))),this._subs.add(null===(n=a.state.$detectedFieldsData)||void 0===n?void 0:n.subscribeToState(((e,t)=>{var n,r,a;(null===(n=e.data)||void 0===n?void 0:n.state)===s.LoadingState.Done&&(null===(r=e.data.series)||void 0===r?void 0:r[0])&&this.updateOptions(null===(a=e.data.series)||void 0===a?void 0:a[0])})));const i=(0,b.rD)(this);i&&this.updateOptions(i),(0,v.NX)(this)}updateOptions(e){if(!e||!e.length){const e=l.jh.getAncestor(this,f.P);let r;var t,n;return(0,_.mE)(e).length>1?(null===(t=(n=this.state).changeFieldCount)||void 0===t||t.call(n,0),r=new j.W({clearCallback:()=>(0,_.rA)(this)})):r=new P.a({type:"fields"}),void this.setState({loading:!1,body:r})}const r=l.jh.getAncestor(this,b.Mn);var a;(0,L.Hj)(this).setState({options:(0,F.rd)(e.fields[0].values.map((e=>String(e)))),loading:!1,value:null!==(a=r.state.drillDownLabel)&&void 0!==a?a:d.To}),this.setState({loading:!1})}updateBody(e){const t=(0,L.Hj)(this);if(!t.state.options||!t.state.options.length)return;const n={};if(t.state.options&&t.state.options.length<=1){const e=l.jh.getAncestor(this,f.P);var r,a;(0,_.mE)(e).length>1?(null===(r=(a=this.state).changeFieldCount)||void 0===r||r.call(a,0),n.body=new j.W({clearCallback:()=>(0,_.rA)(this)})):n.body=new P.a({type:"fields"})}else e.value===d.To&&this.state.body instanceof x.u?n.body=new w.E({}):e.value!==d.To&&this.state.body instanceof w.E?n.body=new x.u({}):(void 0===this.state.body||this.state.body instanceof P.a||this.state.body instanceof j.W)&&(n.body=e.value===d.To?new w.E({}):new x.u({}));this.setState(n)}constructor(e){var t,n,r,a;super(function(e){for(var t=1;t{(e.value!==t.value||!(0,p.B)(e.options,t.options)||void 0===this.state.body||this.state.body instanceof P.a||this.state.body instanceof j.W)&&this.updateBody(e)})),T(this,"handleSortByChange",(e=>{if("fields"!==e.target)return;const t=this.state.body;var n;t instanceof x.u&&t.state.body instanceof E.U&&(null===(n=t.state.body)||void 0===n||n.state.layouts.forEach((n=>{l.jh.findDescendents(t,S.h).forEach((t=>t.sort(e.sortBy,e.direction)))}))),(0,c.EE)(c.NO.service_details,c.ir.service_details.value_breakdown_sort_change,{target:"fields",criteria:e.sortBy,direction:e.direction})})),T(this,"onFieldSelectorChange",(e=>{if(!e)return;const t=(0,L.Hj)(this),{sortBy:n,direction:r}=(0,u.vs)("fields",m.DEFAULT_SORT_BY,"desc");(0,c.EE)(c.NO.service_details,c.ir.service_details.select_field_in_breakdown_clicked,{field:e,previousField:t.getValueText(),view:"fields",sortBy:n,sortByDirection:r});const a=l.jh.getAncestor(this,b.Mn);(0,h.fg)(v._J.field,e,a)})),this.addActivationHandler(this.onActivate.bind(this))}}T(N,"LabelsMenu",(({model:e})=>{const{body:t,loading:n,search:r}=e.useState(),a=(0,o.useStyles2)(I),s=(0,L.Hj)(e),{options:l,value:c}=s.useState();return i().createElement("div",{className:a.labelsMenuWrapper},t instanceof w.E&&i().createElement(w.E.Selector,{model:t}),t instanceof x.u&&i().createElement(x.u.Selector,{model:t}),t instanceof x.u&&i().createElement(r.Component,{model:r}),!n&&l.length>1&&i().createElement(O.u,{label:"Field",options:l,value:String(c),onChange:e.onFieldSelectorChange}))})),T(N,"ValuesMenu",(({model:e})=>{const{loading:t,sort:n}=e.useState(),r=(0,o.useStyles2)(I),a=(0,L.Hj)(e),{value:s}=a.useState();return i().createElement("div",{className:r.valuesMenuWrapper},!t&&s!==d.To&&i().createElement(i().Fragment,null,i().createElement(n.Component,{model:n})))})),T(N,"Component",(({model:e})=>{const{body:t,loading:n,blockingMessage:r}=e.useState(),a=(0,o.useStyles2)(I);return i().createElement("div",{className:a.container},i().createElement(k.O,{isLoading:n,blockingMessage:r},t instanceof w.E&&e&&i().createElement(N.LabelsMenu,{model:e}),i().createElement("div",{className:a.content},t&&i().createElement(t.Component,{model:t}))))}));const $={link:(0,r.css)({textDecoration:"underline"}),button:(0,r.css)({marginLeft:"1.5rem"})};function I(e){return{container:(0,r.css)({flexGrow:1,display:"flex",minHeight:"100%",flexDirection:"column",gap:e.spacing(1)}),content:(0,r.css)({flexGrow:1,display:"flex",paddingTop:e.spacing(0)}),labelsMenuWrapper:(0,r.css)({flexGrow:0,display:"flex",alignItems:"top",justifyContent:"space-between",flexDirection:"row-reverse",gap:e.spacing(2)}),valuesMenuWrapper:(0,r.css)({flexGrow:0,display:"flex",alignItems:"top",gap:e.spacing(2),flexDirection:"row"})}}},8810:(e,t,n)=>{n.d(t,{O:()=>B});var r=n(6089),a=n(5959),i=n.n(a),s=n(7781),l=n(2672),o=n(2007),c=n(2718),u=n(892),d=n(3143),p=n(5631),g=n(4462),h=n(9570),v=n(6001),m=n(1022),f=n(227),b=n(4144),y=n(2254),S=n(5431),w=n(8835),O=n(833),x=n(3630),E=n(738),C=n(5183),k=n(9016),F=n(4119),P=n(4750),L=n(7085),j=n(1752);function _(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class T extends l.Bs{onActivate(){var e;const t=(0,P.ir)(this),n=l.jh.getAncestor(this,y.Mn).state.$detectedLabelsData;this.state.body?(null==n||null===(e=n.state.data)||void 0===e?void 0:e.state)===s.LoadingState.Done&&this.update(null==n?void 0:n.state.data.series[0]):this.setState({body:this.build()}),this._subs.add(null==n?void 0:n.subscribeToState(((e,t)=>{var n;(null===(n=e.data)||void 0===n?void 0:n.state)===s.LoadingState.Done&&this.update(e.data.series[0])}))),this._subs.add(t.subscribeToState((()=>{this.updateQueriesOnFieldsVariableChange()})))}getPanelByIndex(e,t){const n=e.state.children[t].state.body;return{panel:n,title:n.state.title}}update(e){var t;const n=(0,P.P4)(this).state.options.filter((e=>e.value!==d.To)).map((e=>e.label));null===(t=this.state.body)||void 0===t||t.state.layouts.forEach((t=>{let r=[];const a=t,i=new Set(n),s=a.state.children;for(let e=0;e({label:e,value:e})));s.push(...this.buildChildren(l));const o=this.calculateCardinalityMap(e);s.sort(this.sortChildren(o)),a.setState({children:s})}))}calculateCardinalityMap(e){const t=new Map;if(null==e?void 0:e.length)for(let n=0;n<(null==e?void 0:e.fields.length);n++){const r=e.fields[n].name,a=e.fields[n].values[0];t.set(r,a)}return t}build(){var e;const t=(0,P.P4)(this);l.jh.getAncestor(this,B).state.search.reset();const n=this.buildChildren(t.state.options),r=l.jh.getAncestor(this,y.Mn).state.$detectedLabelsData;if((null==r||null===(e=r.state.data)||void 0===e?void 0:e.state)===s.LoadingState.Done){const e=this.calculateCardinalityMap(null==r?void 0:r.state.data.series[0]);n.sort(this.sortChildren(e))}const a=n.map((e=>e.clone()));return new E.U({options:[{value:"grid",label:"Grid"},{value:"rows",label:"Rows"}],active:"grid",layouts:[new l.gF({isLazy:!0,templateColumns:F.di,autoRows:"200px",children:n}),new l.gF({isLazy:!0,templateColumns:"1fr",autoRows:"200px",children:a})]})}buildChildren(e){const t=[];for(const n of e){const{value:e}=n,r=String(e);if(e===d.To||!e)continue;const a=(0,F.oj)(this,String(n.value),String(n.value)),i=(0,C.rS)([a]);t.push(new l.xK({body:l.d0.timeseries().setTitle(r).setData(i).setHeaderActions([new k.X({labelName:r,fieldType:u._J.label})]).setCustomFieldConfig("stacking",{mode:o.StackingMode.Normal}).setCustomFieldConfig("fillOpacity",100).setCustomFieldConfig("lineWidth",0).setCustomFieldConfig("pointSize",0).setCustomFieldConfig("drawStyle",o.DrawStyle.Bars).setHoverHeader(!1).setOverrides(C.jC).setMenu(new L.GD({investigationOptions:{labelName:r}})).setSeriesLimit(j.l).build()}))}return t}sortChildren(e){return(t,n)=>{const r=t.state.body,a=n.state.body;if(r.state.title===d.e4)return-1;if(a.state.title===d.e4)return 1;var i;const s=null!==(i=e.get(r.state.title))&&void 0!==i?i:0;var l;return(null!==(l=e.get(a.state.title))&&void 0!==l?l:0)-s}}static Selector({model:e}){const{body:t}=e.useState();return i().createElement(i().Fragment,null,t&&i().createElement(E.U.Selector,{model:t}))}constructor(e){super(function(e){for(var t=1;t{var e;null===(e=this.state.body)||void 0===e||e.state.layouts.forEach((e=>{const t=e;for(let e=0;e{const{body:t}=e.useState(),n=(0,o.useStyles2)(L.K_);return t?i().createElement("span",{className:n.panelWrapper},t&&i().createElement(t.Component,{model:t})):i().createElement(o.LoadingPlaceholder,{text:"Loading..."})}));var D=n(5722),N=n(3782);function $(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function I(e){for(var t=1;t{this.state.search.clearValueFilter()}))),this._subs.add(this.subscribeToEvent(b.gf,this.handleSortByChange)),this._subs.add(null===(a=i.state.$detectedLabelsData)||void 0===a?void 0:a.subscribeToState(this.onDetectedLabelsDataChange)),this._subs.add((0,P.cR)(this).subscribeToState(((e,t)=>{this.onLabelsVariableChange(e,t)}))),this._subs.add(o.subscribeToState(((e,t)=>{this.onGroupByVariableChange(e,t)})));const c=(0,y.TG)(this);c&&this.updateOptions(c),(0,u.NX)(this)}onGroupByVariableChange(e,t){(e.value!==t.value||!(0,O.B)(e.options,t.options)||void 0===this.state.body||this.state.body instanceof N.a)&&this.updateBody()}onLabelsVariableChange(e,t){let{labelName:n}=(0,u.W6)();n===d.ky&&(n=d.OX);const r=(0,P.P4)(this),a=e.filters.find((e=>e.key===n)),i=t.filters.find((e=>e.key===n));r.state.value===d.To&&a!==i&&this.setState({loading:!0,body:void 0,error:void 0})}updateOptions(e){if(!e||!e.length)return void this.setState({loading:!1,body:new N.a({type:"labels"})});const t=(0,P.P4)(this),n=(0,v.dD)(e.fields.map((e=>e.name)));var r;t.setState({loading:!1,options:n,value:null!==(r=this.state.value)&&void 0!==r?r:d.To})}updateBody(){const e=(0,P.P4)(this);if(!e.state.options||!e.state.options.length)return;const t={loading:!1,blockingMessage:void 0,error:!1};e.hasAllValue()&&this.state.body instanceof x.u?t.body=new T({}):!e.hasAllValue()&&this.state.body instanceof T?t.body=new x.u({}):void 0===this.state.body?e.state.options.length>0?t.body=e.hasAllValue()?new T({}):new x.u({}):t.body=new N.a({type:"labels"}):this.state.body instanceof N.a&&e.state.options.length>0&&(t.body=e.hasAllValue()?new T({}):new x.u({})),this.setState(I({},t))}constructor(e){var t,n,r,a,i;super((a=I({},e),i=null!=(i={$variables:null!==(r=e.$variables)&&void 0!==r?r:new l.Pj({variables:[new S.m({name:d.Jg,defaultToAll:!1,includeAll:!0,value:null!==(t=e.value)&&void 0!==t?t:d.To,options:null!==(n=e.options)&&void 0!==n?n:[]})]}),loading:!0,sort:new b.wd({target:"labels"}),search:new m.G("labels"),value:e.value})?i:{},Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(i)):function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t.push.apply(t,n)}return t}(Object(i)).forEach((function(e){Object.defineProperty(a,e,Object.getOwnPropertyDescriptor(i,e))})),a)),$(this,"_variableDependency",new l.Sh(this,{variableNames:[d.MB]})),$(this,"onDetectedLabelsDataChange",((e,t)=>{var n,r,a,i,l,o,c,u,d;(null===(n=e.data)||void 0===n?void 0:n.state)===s.LoadingState.Done&&(null===(r=e.data.series)||void 0===r?void 0:r[0])&&!(0,O.B)(null===(i=e.data.series)||void 0===i||null===(a=i[0])||void 0===a?void 0:a.fields,null===(c=t.data)||void 0===c||null===(o=c.series)||void 0===o||null===(l=o[0])||void 0===l?void 0:l.fields)?this.updateOptions(null===(d=e.data.series)||void 0===d?void 0:d[0]):(null===(u=e.data)||void 0===u?void 0:u.state)===s.LoadingState.Done&&(0,P.P4)(this).setState({loading:!1})})),$(this,"handleSortByChange",(e=>{if("labels"!==e.target)return;const t=this.state.body;t instanceof x.u&&l.jh.findDescendents(t,p.h).forEach((t=>{t.sort(e.sortBy,e.direction)})),(0,c.EE)(c.NO.service_details,c.ir.service_details.value_breakdown_sort_change,{target:"labels",criteria:e.sortBy,direction:e.direction})})),$(this,"onChange",(e=>{if(!e)return;const t=(0,P.P4)(this);t.changeValueTo(e);const{sortBy:n,direction:r}=(0,f.vs)("labels",D.DEFAULT_SORT_BY,"desc");(0,c.EE)(c.NO.service_details,c.ir.service_details.select_field_in_breakdown_clicked,{label:e,previousLabel:t.getValueText(),view:"labels",sortBy:n,sortByDirection:r});const a=l.jh.getAncestor(this,y.Mn);(0,w.fg)(u._J.label,e,a)})),this.addActivationHandler(this.onActivate.bind(this))}}function M(e){return{container:(0,r.css)({flexGrow:1,display:"flex",minHeight:"100%",flexDirection:"column",gap:e.spacing(1)}),content:(0,r.css)({flexGrow:1,display:"flex",paddingTop:e.spacing(0)}),labelsMenuWrapper:(0,r.css)({flexGrow:0,display:"flex",alignItems:"top",justifyContent:"space-between",flexDirection:"row-reverse",gap:e.spacing(2)}),valuesMenuWrapper:(0,r.css)({flexGrow:0,display:"flex",alignItems:"top",gap:e.spacing(2),flexDirection:"row"})}}$(B,"LabelsMenu",(({model:e})=>{const{body:t,loading:n,search:r}=e.useState(),a=(0,P.P4)(e),{options:s,value:l}=a.useState(),c=(0,o.useStyles2)(M);return i().createElement("div",{className:c.labelsMenuWrapper},t instanceof x.u&&i().createElement(x.u.Selector,{model:t}),t instanceof T&&i().createElement(T.Selector,{model:t}),t instanceof x.u&&i().createElement(r.Component,{model:r}),!n&&s.length>0&&i().createElement(g.u,{label:"Label",options:s,value:String(l),onChange:e.onChange}))})),$(B,"ValuesMenu",(({model:e})=>{const{loading:t,sort:n}=e.useState(),r=(0,P.P4)(e),{value:a}=r.useState(),s=(0,o.useStyles2)(M);return i().createElement("div",{className:s.valuesMenuWrapper},!t&&a!==d.To&&i().createElement(i().Fragment,null,i().createElement(n.Component,{model:n})))})),$(B,"Component",(({model:e})=>{const{body:t,loading:n,blockingMessage:r,error:a}=e.useState(),s=(0,o.useStyles2)(M);return i().createElement("div",{className:s.container},i().createElement(h.O,{isLoading:n,blockingMessage:r},a&&i().createElement(o.Alert,{title:"",severity:"warning"},"The labels are not available at this moment. Try using a different time range or check again later."),t instanceof T&&e&&i().createElement(B.LabelsMenu,{model:e}),i().createElement("div",{className:s.content},t&&i().createElement(t.Component,{model:t}))))}))},3630:(e,t,n)=>{n.d(t,{u:()=>N});var r=n(2672),a=n(738),i=n(4144),s=n(2007),l=n(5183),o=n(227),c=n(7781),u=n(5631),d=n(7097),p=n(3143),g=n(5959),h=n.n(g),v=n(8810),m=n(5722),f=n(4119),b=n(8531),y=n(4750),S=n(7085),w=n(9558),O=n(3782),x=n(8538),E=n(1863),C=n(8516),k=n(7918),F=n(2871),P=n(833);function L(e,t,n,r,a,i,s){try{var l=e[i](s),o=l.value}catch(e){return void n(e)}l.done?t(o):Promise.resolve(o).then(r,a)}function j(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var i=e.apply(t,n);function s(e){L(i,r,a,s,l,"next",e)}function l(e){L(i,r,a,s,l,"throw",e)}s(void 0)}))}}function _(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function T(e){for(var t=1;t{this.onValuesDataQueryChange(e)}))),this._subs.add((0,y.P4)(this).subscribeToState((e=>{e.value===p.To&&this.setState({$data:void 0,body:void 0})}))),this._subs.add(r.jh.getTimeRange(this).subscribeToState((()=>{this.runQuery()}))),this._subs.add((0,y.ir)(this).subscribeToState(((e,t)=>{(0,P.B)(e.filters,t.filters)||this.runQuery()}))),this._subs.add((0,y.oY)(this).subscribeToState(((e,t)=>{(0,P.B)(e.filters,t.filters)||this.runQuery()}))),this._subs.add((0,y.Gk)(this).subscribeToState(((e,t)=>{(0,P.B)(e.filters,t.filters)||this.runQuery()}))),this._subs.add((0,y.Ku)(this).subscribeToState(((e,t)=>{e.value!==t.value&&this.runQuery()})));const t=this.getTagKey();var n=this;this._subs.add((0,y.cR)(this).subscribeToState(function(){var e=j((function*(e,r){(0,P.B)(e.filters.filter((e=>t===p.e4&&e.key!==t)),r.filters.filter((e=>t===p.e4&&e.key!==t)))||n.runQuery()}));return function(t,n){return e.apply(this,arguments)}}()));var a=this;this._subs.add((0,y.iw)(this).subscribeToState(function(){var e=j((function*(e,n){(0,P.B)(e.filters.filter((e=>t!==p.e4&&e.key!==t)),n.filters.filter((e=>t!==p.e4&&e.key!==t)))||a.runQuery()}));return function(t,n){return e.apply(this,arguments)}}()))}rebuildQuery(){var e;null===(e=this.getSceneQueryRunner())||void 0===e||e.setState({queries:[this.buildQuery()]})}runQuery(){this.rebuildQuery();const e=this.getSceneQueryRunner();null==e||e.runQueries()}getSceneQueryRunner(){if(this.state.$data){const e=r.jh.findDescendents(this.state.$data,r.dt);if(1!==e.length){const e=new Error("Unable to find query runner in value breakdown!");throw F.v.error(e,{msg:"LabelValuesBreakdownScene: Unable to find query runner in value breakdown!"}),e}return e[0]}F.v.warn("LabelValuesBreakdownScene: Query is attempting to execute, but query runner is undefined!")}removeValueLabelFromVariableInterpolation(){const e=this.getTagKey();let t,n;if(e===p.e4){const r=(0,y.iw)(this);n=p._Y,t=(0,k._q)(r.state.filters,[e])}else{const r=(0,y.cR)(this);n=p.MB,t=(0,k.VW)(r.state.filters,[e])}return{filterExpression:t,variableName:n}}getTagKey(){const e=(0,y.P4)(this);return String(e.state.value)}onValuesDataQueryChange(e){this.setEmptyStates(e),this.setErrorStates(e)}setErrorStates(e){var t,n;if((null==e||null===(t=e.data)||void 0===t?void 0:t.errors)&&(null===(n=e.data)||void 0===n?void 0:n.state)!==c.LoadingState.Done){var r;const t=this.state.errors;null==e||null===(r=e.data)||void 0===r||r.errors.forEach((e=>{const n=`${e.status}_${e.traceId}_${e.message}`;void 0===t[n]&&(t[n]=D(T({},e),{displayed:!1}))})),this.setState({errors:t}),this.showErrorToast(this.state.errors)}}setEmptyStates(e){var t;if((null===(t=e.data)||void 0===t?void 0:t.state)===c.LoadingState.Done)if(e.data.series.length>0&&!(this.state.body instanceof a.U))this.setState({body:this.build()});else if(0===e.data.series.length){const e=r.jh.getAncestor(this,x.P);(0,E.mE)(e).length>1?this.setState({body:new w.W({clearCallback:()=>(0,E.rA)(this)})}):this.setState({body:new O.a({type:"fields"})})}}getActiveLayout(){const e=this.state.body;if(e instanceof a.U){const t=null==e?void 0:e.state.layouts.find((e=>e.isActive));if(t instanceof r.G1)return t}}activeLayoutContainsNoPanels(){const e=this.getActiveLayout();return!!e&&r.jh.findDescendents(e,u.h).some((e=>{const t=e.state.body.state.children[0];return t instanceof r.vA||t instanceof r.dM}))}build(){const e=(0,y.P4)(this).state,t=String(null==e?void 0:e.value),n=r.jh.getAncestor(this,v.O);let c=r.d0.timeseries();c=c.setCustomFieldConfig("stacking",{mode:s.StackingMode.Normal}).setCustomFieldConfig("fillOpacity",100).setCustomFieldConfig("lineWidth",0).setCustomFieldConfig("pointSize",0).setCustomFieldConfig("drawStyle",s.DrawStyle.Bars).setOverrides(l.jC).setMenu(new S.GD({})).setTitle(t);const g=c.build(),{sortBy:b,direction:w}=(0,o.vs)("labels",m.DEFAULT_SORT_BY,"desc"),O=()=>{var e;return null!==(e=n.state.search.state.filter)&&void 0!==e?e:""};return new a.U({options:[{value:"single",label:"Single"},{value:"grid",label:"Grid"},{value:"rows",label:"Rows"}],active:"grid",layouts:[new r.G1({direction:"column",children:[new r.dM({reactNode:h().createElement(v.O.LabelsMenu,{model:n})}),new r.vA({minHeight:300,body:g})]}),new r.G1({direction:"column",children:[new r.dM({reactNode:h().createElement(v.O.LabelsMenu,{model:n})}),new C.s7({title:t,levelColor:!0,tagKey:this.getTagKey(),type:"label"}),new r.dM({reactNode:h().createElement(v.O.ValuesMenu,{model:n})}),new u.h({body:new r.gF({isLazy:!0,templateColumns:f.di,autoRows:"200px",children:[new r.vA({body:new r.dM({reactNode:h().createElement(s.LoadingPlaceholder,{text:"Loading..."})})})]}),getLayoutChild:(0,d.Zp)(i.ee,s.DrawStyle.Bars,p.MB,r.jh.getAncestor(this,v.O).state.sort,t),sortBy:b,direction:w,getFilter:O})]}),new r.G1({direction:"column",children:[new r.dM({reactNode:h().createElement(v.O.LabelsMenu,{model:n})}),new C.s7({title:t,levelColor:!0,tagKey:this.getTagKey(),type:"label"}),new r.dM({reactNode:h().createElement(v.O.ValuesMenu,{model:n})}),new u.h({body:new r.gF({templateColumns:"1fr",autoRows:"200px",children:[new r.vA({body:new r.dM({reactNode:h().createElement(s.LoadingPlaceholder,{text:"Loading..."})})})]}),getLayoutChild:(0,d.Zp)(i.ee,s.DrawStyle.Bars,p.MB,r.jh.getAncestor(this,v.O).state.sort,t),sortBy:b,direction:w,getFilter:O})]})]})}showErrorToast(e){const t=(0,b.getAppEvents)();let n=[];for(const t in e){const r=e[t];r.displayed||(n.push(r),r.displayed=!0)}n.length&&(this.activeLayoutContainsNoPanels()||t.publish({type:c.AppEvents.alertError.name,payload:null==n?void 0:n.map(((e,t)=>this.renderError(t,e)))}),this.setState({errors:e}))}renderError(e,t){return h().createElement("div",{key:e},t.status&&h().createElement(h().Fragment,null,h().createElement("strong",null,"Status"),": ",t.status," ",h().createElement("br",null)),t.message&&h().createElement(h().Fragment,null,h().createElement("strong",null,"Message"),": ",t.message," ",h().createElement("br",null)),t.traceId&&h().createElement(h().Fragment,null,h().createElement("strong",null,"TraceId"),": ",t.traceId))}static Selector({model:e}){const{body:t}=e.useState();return h().createElement(h().Fragment,null,t&&t instanceof a.U&&h().createElement(a.U.Selector,{model:t}))}constructor(e){super(D(T({},e),{errors:{}})),this.addActivationHandler(this.onActivate.bind(this))}}_(N,"Component",(({model:e})=>{const{body:t}=e.useState(),n=(0,s.useStyles2)(S.K_);return t?h().createElement("span",{className:n.panelWrapper},t&&h().createElement(t.Component,{model:t})):h().createElement(s.LoadingPlaceholder,{text:"Loading..."})}))},738:(e,t,n)=>{n.d(t,{U:()=>d});var r=n(5959),a=n.n(r),i=n(2672),s=n(2007),l=n(2718),o=n(892),c=n(6089);function u(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class d extends i.Bs{constructor(...e){super(...e),u(this,"onLayoutChange",(e=>{(0,l.EE)(l.NO.service_details,l.ir.service_details.layout_type_changed,{layout:e,view:(0,o.FT)()}),this.setState({active:e})}))}}u(d,"Selector",(function({model:e}){const{active:t,options:n}=e.useState(),r=(0,s.useStyles2)(p);return a().createElement(s.Field,{className:r.field},a().createElement(s.RadioButtonGroup,{options:n,value:t,onChange:e.onLayoutChange}))})),u(d,"Component",(({model:e})=>{const{layouts:t,options:n,active:r}=e.useState(),i=n.findIndex((e=>e.value===r));if(-1===i)return null;const s=t[i];return a().createElement(s.Component,{model:s})}));const p=e=>({field:(0,c.css)({marginBottom:0})})},9558:(e,t,n)=>{n.d(t,{W:()=>p});var r,a,i,s=n(2672),l=n(4482),o=n(2007),c=n(5959),u=n.n(c),d=n(4105);class p extends s.Bs{}i=({model:e})=>{const{clearCallback:t}=e.useState();return u().createElement(l.R,null,u().createElement(o.Alert,{title:"",severity:"info"},"No labels match these filters."," ",u().createElement(o.Button,{className:d.ZI.button,onClick:()=>t()},"Clear filters")," "))},(a="Component")in(r=p)?Object.defineProperty(r,a,{value:i,enumerable:!0,configurable:!0,writable:!0}):r[a]=i},8516:(e,t,n)=>{n.d(t,{Zb:()=>y,s$:()=>w,s7:()=>b});var r=n(2672),a=n(7085),i=n(2007),s=n(5183),l=n(227),o=n(5959),c=n.n(o),u=n(4750),d=n(1383),p=n(2718),g=n(7781),h=n(3143),v=n(2871),m=n(4119);function f(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class b extends r.Bs{onActivate(){var e;const t=null!==(e=(0,l.ex)("collapsed",[a.Ci.collapsed,a.Ci.expanded]))&&void 0!==e?e:a.Ci.expanded,n=function(e,t){var n;const o=null!==(n=(0,l.ex)("collapsed",[a.Ci.collapsed,a.Ci.expanded]))&&void 0!==n?n:a.Ci.expanded,c=r.d0.timeseries().setTitle(e).setMenu(new a.GD({})).setCollapsible(!0).setCollapsed(o===a.Ci.collapsed).setCustomFieldConfig("stacking",{mode:i.StackingMode.Normal}).setCustomFieldConfig("fillOpacity",100).setCustomFieldConfig("lineWidth",0).setCustomFieldConfig("pointSize",0).setCustomFieldConfig("drawStyle",i.DrawStyle.Bars).setSeriesLimit(100);return(null==t?void 0:t.levelColor)&&c.setOverrides(s.jC),c.build()}(this.state.title,{levelColor:this.state.levelColor}),o=S(t);n.setState({extendPanelContext:(e,t)=>this.extendTimeSeriesLegendBus(t)}),this.setState({body:new r.G1({key:w,minHeight:o,height:o,maxHeight:o,wrap:"nowrap",children:[new r.vA({body:n})]})}),this._subs.add(n.subscribeToState(((e,t)=>{e.collapsed!==t.collapsed&&(y(r.jh.getAncestor(n,r.G1),e.collapsed?a.Ci.collapsed:a.Ci.expanded),(0,l.IW)("collapsed",e.collapsed?a.Ci.collapsed:a.Ci.expanded))})))}initLegendOptions(e,t,n){e&&("label"===this.state.type?t===h.e4?(0,s.C6)(n,e,this):(0,s.dO)(t,n,e,this):(0,s.Nr)(t,n,e,this))}getQuerySubscription(e,t,n){return t.subscribeToState(((t,r)=>{var a;(null===(a=t.data)||void 0===a?void 0:a.state)===g.LoadingState.Done&&("label"===this.state.type?e===h.e4?(0,s.C6)(n,t.data.series,this):(0,s.dO)(e,n,t.data.series,this):(0,s.Nr)(e,n,t.data.series,this))}))}getFieldsVariableLegendSyncSubscription(e,t){return null==t?void 0:t.subscribeToState((()=>{var t,n;const a=null===(t=this.state.body)||void 0===t?void 0:t.state.children[0];if(!(a instanceof r.vA))throw new Error("Cannot find sceneFlexItem");const i=a.state.body;if(!(i instanceof r.Eb))throw new Error("ValueSummary - getFieldsVariableLegendSyncSubscription: Cannot find VizPanel");const l=null===(n=r.jh.getData(this).state.data)||void 0===n?void 0:n.series;l?(0,s.Nr)(e,i,l,this):v.v.warn("ValueSummary - getFieldsVariableLegendSyncSubscription: missing dataframe!")}))}getLabelsVariableLegendSyncSubscription(e){const t=e===h.e4,n=t?(0,u.iw)(this):(0,u.cR)(this);return null==n?void 0:n.subscribeToState((()=>{var n,a;const i=null===(n=this.state.body)||void 0===n?void 0:n.state.children[0];if(!(i instanceof r.vA))throw new Error("Cannot find sceneFlexItem");const l=i.state.body;if(!(l instanceof r.Eb))throw new Error("ValueSummary - getLabelsVariableLegendSyncSubscription: Cannot find VizPanel");const o=null===(a=r.jh.getData(this).state.data)||void 0===a?void 0:a.series;o?t?(0,s.C6)(l,o,this):(0,s.dO)(e,l,o,this):v.v.warn("ValueSummary - getLabelsVariableLegendSyncSubscription: missing dataframe!")}))}constructor(e){super(e),f(this,"extendTimeSeriesLegendBus",(e=>{var t,n;const a=r.jh.getData(this),i=null===(t=a.state.data)||void 0===t?void 0:t.series,s=this.state.tagKey,l=null===(n=this.state.body)||void 0===n?void 0:n.state.children[0];if(!(l instanceof r.vA))throw new Error("Cannot find sceneFlexItem");const o=l.state.body;if(!(o instanceof r.Eb))throw new Error("Cannot find VizPanel");this.initLegendOptions(i,s,o),"label"===this.state.type?this._subs.add(this.getLabelsVariableLegendSyncSubscription(s)):(this._subs.add(this.getFieldsVariableLegendSyncSubscription(s,(0,u.ir)(this))),this._subs.add(this.getFieldsVariableLegendSyncSubscription(s,(0,u.oY)(this)))),this._subs.add(this.getQuerySubscription(s,a,o)),e.onToggleSeriesVisibility=(e,t)=>{let n;n="label"===this.state.type?s===h.e4?(0,d.PE)(e,this):(0,m.R7)(s,e,this):(0,m.zr)(s,e,this),(0,p.EE)(p.NO.service_details,p.ir.service_details.label_in_panel_summary_clicked,{label:e,action:n})}})),this.addActivationHandler(this.onActivate.bind(this))}}function y(e,t){const n=S(t);e.setState({minHeight:n,height:n,maxHeight:n})}function S(e){return e===a.Ci.collapsed?35:300}f(b,"Component",(({model:e})=>{const{body:t}=e.useState();return t?c().createElement("div",null,c().createElement(t.Component,{model:t})):null}));const w="value_summary_panel"},6261:(e,t,n)=>{n.d(t,{D:()=>o});var r=n(6089),a=n(2007),i=n(5959),s=n.n(i);function l(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const o=e=>{var{value:t,onChange:n,placeholder:r,onClear:i,suffix:o}=e,u=function(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}(e,["value","onChange","placeholder","onClear","suffix"]);const d=(0,a.useStyles2)(c);return s().createElement(a.Input,function(e){for(var t=1;t({suffixWrapper:(0,r.css)({gap:e.spacing(.5),display:"inline-flex"}),clearIcon:(0,r.css)({cursor:"pointer"})})},9016:(e,t,n)=>{n.d(t,{X:()=>$});var r=n(2672),a=n(2254),i=n(8835),s=n(892),l=n(2007),o=n(5959),c=n.n(o),u=n(558),d=n(3143),p=n(7781),g=n(4750),h=n(4793),v=n(6089),m=n(3241),f=n(2871),b=n(1220);function y(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var S=function(e){return e.ns="ns",e.us="µs",e.ms="ms",e.s="s",e.m="m",e.h="h",e}(S||{}),w=function(e){return e.B="B",e.KB="KB",e.MB="MB",e.GB="GB",e.TB="TB",e}(w||{});class O extends r.Bs{onActivate(){const e=(0,g.bY)((0,u.ts)(this.state.labelName,this.state.variableType),this).state.filters.filter((e=>e.key===this.state.labelName)),t=e.find((e=>e.operator===h.w7.gte||e.operator===h.w7.gt)),n=e.find((e=>e.operator===h.w7.lte||e.operator===h.w7.lt));let r={};if("duration"===this.state.fieldType||"bytes"===this.state.fieldType){if(t){const e=x((0,g.bu)(t).value,this.state.fieldType);e&&(r.gt=e.value,r.gtu=e.unit,r.gte=t.operator===h.w7.gte)}if(n){const e=x((0,g.bu)(n).value,this.state.fieldType);e&&(r.lt=e.value,r.ltu=e.unit,r.lte=n.operator===h.w7.lte)}}else{if(t){const e=(0,g.bu)(t).value;r.gt=Number(e),r.gtu="",r.gte=t.operator===h.w7.gte}if(n){const e=(0,g.bu)(n).value;r.lt=Number(e),r.ltu="",r.lte=n.operator===h.w7.lte}}0!==Object.keys(r).length&&(r.hasExistingFilter=!0),this.setState(r)}onSubmit(){this.state.gt?(0,u.vn)(this.state.labelName,this.state.gt.toString()+this.state.gtu,this.state.gte?h.w7.gte:h.w7.gt,this,this.state.variableType):(0,u.u7)(this.state.labelName,this,this.state.gte?h.w7.gte:h.w7.gt,this.state.variableType),this.state.lt?(0,u.vn)(this.state.labelName,this.state.lt.toString()+this.state.ltu,this.state.lte?h.w7.lte:h.w7.lt,this,this.state.variableType):(0,u.u7)(this.state.labelName,this,this.state.lte?h.w7.lte:h.w7.lt,this.state.variableType),r.jh.getAncestor(this,$).togglePopover()}constructor(e){let t;const n=e.fieldType;if("bytes"===n)t={ltu:"B",gtu:"B"};else if("duration"===n)t={ltu:"s",gtu:"s"};else{if("float"!==n)throw new Error(`field type incorrectly defined: ${n}`);t={ltu:"",gtu:""}}super(function(e){for(var t=1;t{const t=void 0===this.state.gt&&void 0===this.state.lt;"Enter"!==e.key||t||this.onSubmit()})),this.addActivationHandler(this.onActivate.bind(this))}}function x(e,t){if("duration"===t){const t=Object.values(S).find((t=>{const n=t.length;return e.slice(-1*n)===t}));if(t){const n=Number(e.replace(t,""));if(!isNaN(n))return{unit:t,value:n}}}if("bytes"===t){const t=Object.values(w).sort(((e,t)=>t.length-e.length)).find((t=>{const n=t.length;return e.slice(-1*n)===t}));if(t){const n=Number(e.replace(t,""));if(!isNaN(n))return{unit:t,value:n}}}}function E(e){if("duration"===e)return Object.keys(S).map((e=>({text:e,value:S[e],label:e})));if("bytes"===e)return Object.keys(w).map((e=>({text:e,value:w[e],label:e})));const t=new Error(`invalid field type: ${e}`);throw f.v.error(t,{msg:"getUnitOptions, invalid field type"}),t}y(O,"Component",(({model:e})=>{const t=(0,l.useStyles2)(C),{labelName:n,gt:a,lt:i,gte:s,lte:o,gtu:u,ltu:d,fieldType:p,hasExistingFilter:g}=e.useState(),h="float"!==p&&p!==n?`(${p})`:void 0,m=r.jh.getAncestor(e,$),f=void 0===a&&void 0===i;return c().createElement(l.ClickOutsideWrapper,{useCapture:!0,onClick:()=>m.togglePopover()},c().createElement(l.Stack,{direction:"column",gap:0,role:"tooltip"},c().createElement("div",{className:t.card.body},c().createElement("div",{className:t.card.title},n," ",h),c().createElement("div",{className:t.card.fieldWrap},c().createElement(l.FieldSet,{className:t.card.fieldset},c().createElement(l.Field,{"data-testid":b.b.breakdowns.common.filterNumericPopover.inputGreaterThanInclusive,horizontal:!0,className:(0,v.cx)(t.card.field,t.card.inclusiveField)},c().createElement(l.Select,{className:t.card.inclusiveInput,menuShouldPortal:!1,value:void 0!==s?s.toString():"false",options:[{label:"Greater than",value:"false"},{label:"Greater than or equal",value:"true"}],onChange:t=>e.setState({gte:"true"===t.value})})),c().createElement(l.Field,{"data-testid":b.b.breakdowns.common.filterNumericPopover.inputGreaterThan,horizontal:!0,className:t.card.field},c().createElement(l.Input,{onKeyDownCapture:e.onInputKeydown,autoFocus:!0,onChange:t=>{e.setState({gt:""!==t.currentTarget.value?Number(t.currentTarget.value):void 0})},className:t.card.numberInput,value:a,type:"number"})),"float"!==p&&c().createElement(l.Label,null,c().createElement(l.Field,{"data-testid":b.b.breakdowns.common.filterNumericPopover.inputGreaterThanUnit,horizontal:!0,className:t.card.field,label:c().createElement("span",{className:t.card.unitFieldLabel},"Unit")},c().createElement(l.Select,{onChange:t=>{e.setState({gtu:t.value})},menuShouldPortal:!1,options:E(p),className:t.card.selectInput,value:u})))),c().createElement(l.FieldSet,{className:t.card.fieldset},c().createElement(l.Field,{"data-testid":b.b.breakdowns.common.filterNumericPopover.inputLessThanInclusive,horizontal:!0,className:(0,v.cx)(t.card.field,t.card.inclusiveField)},c().createElement(l.Select,{className:t.card.inclusiveInput,menuShouldPortal:!1,value:void 0!==o?o.toString():"false",options:[{label:"Less than",value:"false"},{label:"Less than or equal",value:"true"}],onChange:t=>e.setState({lte:"true"===t.value})})),c().createElement(l.Field,{"data-testid":b.b.breakdowns.common.filterNumericPopover.inputLessThan,horizontal:!0,className:t.card.field},c().createElement(l.Input,{onKeyDownCapture:e.onInputKeydown,onChange:t=>e.setState({lt:""!==t.currentTarget.value?Number(t.currentTarget.value):void 0}),className:t.card.numberInput,value:i,type:"number"})),"float"!==p&&c().createElement(l.Label,null,c().createElement(l.Field,{"data-testid":b.b.breakdowns.common.filterNumericPopover.inputLessThanUnit,horizontal:!0,className:t.card.field,label:c().createElement("span",{className:t.card.unitFieldLabel},"Unit")},c().createElement(l.Select,{onChange:t=>{e.setState({ltu:t.value})},menuShouldPortal:!1,options:E(p),className:t.card.selectInput,value:d}))))),c().createElement("div",{className:t.card.buttons},g&&c().createElement(l.Button,{"data-testid":b.b.breakdowns.common.filterNumericPopover.removeButton,disabled:!g,onClick:()=>{e.setState({gt:void 0,lt:void 0}),e.onSubmit()},size:"sm",variant:"destructive",fill:"outline"},"Remove"),c().createElement(l.Button,{"data-testid":b.b.breakdowns.common.filterNumericPopover.submitButton,disabled:f,onClick:()=>e.onSubmit(),size:"sm",variant:"primary",fill:"outline",type:"submit"},"Add"),c().createElement(l.Button,{"data-testid":b.b.breakdowns.common.filterNumericPopover.cancelButton,onClick:()=>m.togglePopover(),size:"sm",variant:"secondary",fill:"outline"},"Cancel")))))}));const C=e=>({card:{buttons:(0,v.css)({display:"flex",flexWrap:"wrap",justifyContent:"flex-end",gap:e.spacing(1.5),marginTop:e.spacing(1)}),inclusiveInput:(0,v.css)({minWidth:"185px"}),selectInput:(0,v.css)({minWidth:"65px"}),numberInput:(0,v.css)({width:"75px"}),fieldWrap:(0,v.css)({display:"flex",flexDirection:"column",paddingTop:e.spacing(2),paddingBottom:0}),field:(0,v.css)({display:"flex",alignItems:"center",marginBottom:e.spacing(1)}),inclusiveField:(0,v.css)({marginRight:e.spacing(1)}),unitFieldLabel:(0,v.css)({marginLeft:e.spacing(2),marginRight:e.spacing(1.5)}),numberFieldLabel:(0,v.css)({width:"100px"}),switchFieldLabel:(0,v.css)({marginLeft:e.spacing(2),marginRight:e.spacing(1)}),fieldset:(0,v.css)({display:"flex",alignItems:"center",justifyContent:"space-between",width:"100%",marginBottom:0}),title:(0,v.css)({}),body:(0,v.css)({padding:e.spacing(2)}),p:(0,v.css)({maxWidth:300})}});var k=n(7097),F=n(9829),P=n(3626);function L(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function j(e){for(var t=1;te.key===this.state.labelName))}onActivate(){var e,t;const n=r.jh.getAncestor(this,a.Mn);(null===(t=n.state.$data)||void 0===t||null===(e=t.state.data)||void 0===e?void 0:e.state)===p.LoadingState.Done&&this.calculateSparsity(),this._subs.add(r.jh.getData(this).subscribeToState((e=>{var t,r,a,i;(null===(t=e.data)||void 0===t?void 0:t.state)===p.LoadingState.Done&&((null===(a=n.state.$data)||void 0===a||null===(r=a.state.data)||void 0===r?void 0:r.state)===p.LoadingState.Done&&this.calculateSparsity(),this._subs.add(null===(i=n.state.$data)||void 0===i?void 0:i.subscribeToState((e=>{var t;(null===(t=e.data)||void 0===t?void 0:t.state)===p.LoadingState.Done&&this.calculateSparsity()}))))})))}togglePopover(){this.setState({showPopover:!this.state.showPopover})}calculateSparsity(){var e;const t=r.jh.getAncestor(this,a.Mn),n=(0,a.tn)(null===(e=t.state.$data)||void 0===e?void 0:e.state.data),i=null==n?void 0:n.fields.find((e=>"labels"===e.name)),s=r.jh.getData(this),l=(0,F.UX)(s,(e=>e instanceof r.dt),r.dt);if(l){const e=l.state.queries[0];(null==e?void 0:e.expr.includes("avg_over_time"))&&this.setState({hasNumericFilters:!0})}if(!i||!n)return void this.setState({hasSparseFilters:!1});const o=this.getVariable(),c=i.values.reduce(((e,t)=>((null==t?void 0:t[this.state.labelName])&&e++,e)),0),u=r.jh.getAncestor(this,r.Eb);if(void 0!==c&&n.length>0){const e=(c/n.length*100).toLocaleString(),t=`${this.state.labelName} exists on ${e}% of ${n.length} sampled log lines`;u.setState({description:t})}else u.setState({description:void 0});const p=this.getExistingFilter(o),h=p&&o.state.name===d.mB?(0,g.bu)(p):void 0;c{const t=(0,a.rD)(this),n=(0,k.ph)(this.state.labelName,t);if(!n||"string"===n||"boolean"===n||"int"===n){const e=new Error(`Incorrect field type: ${n}`);throw f.v.error(e,{msg:`onClickNumericFilter invalid field type ${n}`}),e}this.setState({popover:new O({labelName:this.state.labelName,variableType:e,fieldType:n})}),this.togglePopover()})),L(this,"getViewValuesLink",(()=>{const e=r.jh.getAncestor(this,a.Mn);return(0,i.FB)(this.state.fieldType,this.state.labelName,e)})),L(this,"onClickExcludeEmpty",(e=>{(0,u.Qt)(this.state.labelName,d.ZO,"exclude",this,e)})),L(this,"onClickIncludeEmpty",(e=>{(0,u.Qt)(this.state.labelName,d.ZO,"include",this,e)})),L(this,"clearFilter",(e=>{(0,u.Qt)(this.state.labelName,d.ZO,"clear",this,e)})),L(this,"clearFilters",(e=>{(0,u.hi)(this.state.labelName,this,e),this.state.labelName===d.e4&&(0,P.dm)(this)})),this.addActivationHandler(this.onActivate.bind(this))}}function I(e){const t=(0,l.useStyles2)(B);return c().createElement("span",{className:t.description},e.selected&&c().createElement("span",{className:t.selected}),e.text)}L($,"Component",(({model:e})=>{const{hideValueDrilldown:t,labelName:n,hasSparseFilters:r,hasNumericFilters:a,selectedValue:i,popover:u,showPopover:p,fieldType:v}=e.useState(),f=e.getVariable(),y=f.useState().name,S=e.getExistingFilter(f),w=(0,g.z2)(y,S),O=(0,l.useStyles2)(M),x=(0,o.useRef)(null),E=v===s._J.label&&f.state.name===d.mB&&0===f.state.filters.filter((e=>e.key!==n&&e.operator===h.w7.Equal)).length,C=(null==S?void 0:S.operator)===h.w7.NotEqual&&w.value===d.ZO,k=!!S;var F;const P=null!==(F=null==i?void 0:i.value)&&void 0!==F?F:C?T:a?N:T,L=!!(null==S?void 0:S.operator)&&[h.w7.gte,h.w7.gt,h.w7.lte,h.w7.lt].includes(S.operator),$=P===N||L,B=P===T&&!$,A={value:T,component:()=>c().createElement(I,{selected:B,text:`Include all log lines with ${n}`})},R={value:D,component:()=>c().createElement(I,{selected:!1,text:`Exclude all log lines with ${n}`})},V={value:N,component:()=>c().createElement(I,{selected:$,text:`Add an expression, i.e. ${n} > 30`})},W=[];a&&W.push(V),r&&(L||W.push(A),W.push(R));const z=C?A:a?V:A;var H;return c().createElement(c().Fragment,null,k&&c().createElement(l.IconButton,{disabled:E,name:"filter",tooltip:`Clear ${n} filters`,onClick:()=>e.clearFilters(y)}),(a||r)&&c().createElement(c().Fragment,null,c().createElement(l.ButtonGroup,{"data-testid":b.b.breakdowns.common.filterButtonGroup},c().createElement(l.Button,{"data-testid":b.b.breakdowns.common.filterButton,ref:x,onClick:()=>e.onChange(null!=i?i:z),size:"sm",fill:"outline",variant:"secondary"},null!==(H=null==i?void 0:i.value)&&void 0!==H?H:z.value),c().createElement(l.ButtonSelect,{"data-testid":b.b.breakdowns.common.filterSelect,className:O.buttonSelect,variant:"default",options:W,onChange:t=>{e.onChange(t)}}))),!0!==t&&c().createElement(l.LinkButton,{title:`View breakdown of values for ${n}`,variant:"primary",fill:"outline",size:"sm","aria-label":`Select ${n}`,href:e.getViewValuesLink()},"Select"),u&&c().createElement(l.PopoverController,{content:c().createElement(u.Component,{model:u})},((e,t,n)=>{const r={onBlur:t,onFocus:e};return c().createElement(c().Fragment,null,x.current&&c().createElement(c().Fragment,null,c().createElement(l.Popover,j(_(j({},n,m.rest),{show:p,wrapperClassName:O.popover,referenceElement:x.current,renderArrow:!0}),r))))})))}));const B=e=>({selected:(0,v.css)({label:"selectable-value-selected","&:before":{content:'""',position:"absolute",left:0,top:"4px",height:"calc(100% - 8px)",width:"2px",backgroundColor:e.colors.warning.main}}),description:(0,v.css)({textAlign:"left",fontSize:e.typography.pxToRem(12)})}),M=e=>({popover:(0,v.css)({borderRadius:e.shape.radius.default,boxShadow:e.shadows.z3,background:e.colors.background.primary,border:`1px solid ${e.colors.border.weak}`}),description:(0,v.css)({textAlign:"left",fontSize:e.typography.pxToRem(12)}),buttonSelect:(0,v.css)({border:`1px solid ${e.colors.border.strong}`,borderLeft:"none",borderTopLeftRadius:0,borderBottomLeftRadius:0,padding:1,height:"24px"})})},4144:(e,t,n)=>{n.d(t,{ee:()=>f,gf:()=>g,wd:()=>h});var r=n(2672),a=n(5959),i=n.n(a),s=n(7781),l=n(1383),o=n(2007),c=n(227),u=n(1220),d=n(5722);function p(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class g extends s.BusEventBase{constructor(e,t,n){super(),p(this,"target",void 0),p(this,"sortBy",void 0),p(this,"direction",void 0),this.target=e,this.sortBy=t,this.direction=n}}p(g,"type","sort-criteria-changed");class h extends r.Bs{constructor(e){const{sortBy:t,direction:n}=(0,c.vs)(e.target,d.DEFAULT_SORT_BY,"desc");super({target:e.target,sortBy:t,direction:n}),p(this,"sortingOptions",[{label:"",options:[{value:"changepoint",label:"Most relevant",description:"Smart ordering of graphs based on the most significant spikes in the data"},{value:"outliers",label:"Outlying values",description:"Order by the amount of outlying values in the data"},{value:s.ReducerID.stdDev,label:"Widest spread",description:"Sort graphs by deviation from the average value"},{value:"alphabetical",label:"Name",description:"Alphabetical order"},{value:s.ReducerID.sum,label:"Count",description:"Sort graphs by total number of logs"},{value:s.ReducerID.max,label:"Highest spike",description:"Sort graphs by the highest values (max)"},{value:s.ReducerID.min,label:"Lowest dip",description:"Sort graphs by the smallest values (min)"}]},{label:"Percentiles",options:[...s.fieldReducers.selectOptions([],m).options]}]),p(this,"onCriteriaChange",(e=>{e.value&&(this.setState({sortBy:e.value}),(0,c.fq)(this.state.target,e.value,this.state.direction),this.publishEvent(new g(this.state.target,e.value,this.state.direction),!0))})),p(this,"onDirectionChange",(e=>{e.value&&(this.setState({direction:e.value}),(0,c.fq)(this.state.target,this.state.sortBy,e.value),this.publishEvent(new g(this.state.target,this.state.sortBy,e.value),!0))}))}}p(h,"Component",(({model:e})=>{const{sortBy:t,direction:n}=e.useState(),r=e.sortingOptions.find((e=>e.options.find((e=>e.value===t)))),a=null==r?void 0:r.options.find((e=>e.value===t));return i().createElement(i().Fragment,null,i().createElement(o.InlineField,{label:"Sort by",htmlFor:"sort-by-criteria",tooltip:"Calculate a derived quantity from the values in your time series and sort by this criteria. Defaults to standard deviation."},i().createElement(o.Select,{"data-testid":u.b.breakdowns.common.sortByFunction,value:a,width:20,isSearchable:!0,options:e.sortingOptions,placeholder:"Choose criteria",onChange:e.onCriteriaChange,inputId:"sort-by-criteria"})),i().createElement(o.InlineField,null,i().createElement(o.Select,{"data-testid":u.b.breakdowns.common.sortByDirection,onChange:e.onDirectionChange,"aria-label":"Sort direction",placeholder:"",value:n,options:[{label:"Asc",value:"asc"},{label:"Desc",value:"desc"}]})))}));const v=["p10","p25","p75","p90","p99"];function m(e){return e.id>="p1"&&e.id<="p99"&&v.includes(e.id)}function f(e){var t;return null!==(t=(0,l.H7)(e))&&void 0!==t?t:"No labels"}},9570:(e,t,n)=>{n.d(t,{O:()=>l});var r=n(6089),a=n(5959),i=n.n(a),s=n(2007);function l({blockingMessage:e,isLoading:t,children:n}){const r=(0,s.useStyles2)(o);return t&&!e&&(e="Loading..."),t?i().createElement(s.LoadingPlaceholder,{className:r.statusMessage,text:e}):e?i().createElement("div",{className:r.statusMessage},e):i().createElement(i().Fragment,null,n)}function o(e){return{statusMessage:(0,r.css)({fontStyle:"italic",marginTop:e.spacing(7),textAlign:"center"})}}},1752:(e,t,n)=>{n.d(t,{l:()=>r});const r=20},4592:(e,t,n)=>{n.d(t,{_:()=>E});var r=n(5959),a=n.n(r),i=n(2007),s=n(7781),l=n(6089);function o(e){return{outline:"2px dotted transparent",outlineOffset:"2px",boxShadow:`0 0 0 2px ${e.colors.background.canvas}, 0 0 0px 4px ${e.colors.primary.main}`,transitionTimingFunction:"cubic-bezier(0.19, 1, 0.22, 1)",transitionDuration:"0.2s",transitionProperty:"outline, outline-offset, box-shadow"}}function c(e,t){return{zIndex:"-1",position:"absolute",opacity:"0",width:`${e}px`,height:`${e}px`,borderRadius:t.shape.radius.default,content:'""',[t.transitions.handleMotion("no-preference","reduce")]:{transitionDuration:"0.2s",transitionTimingFunction:"cubic-bezier(0.4, 0, 0.2, 1)",transitionProperty:"opacity"}}}function u(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function d(e){for(var t=1;t{const t=(0,i.useTheme2)(),n=e.regex?t.colors.text.maxContrast:t.colors.text.disabled,r=g(t),s=(e.regex?"Disable":"Enable")+" regex";return a().createElement(i.Tooltip,{content:s},a().createElement("button",{onClick:()=>e.onRegexToggle(e.regex?"match":"regex"),className:(0,l.cx)(r.button,e.regex?r.active:null),"aria-label":s},a().createElement("svg",{fill:n,width:"16",height:"16",viewBox:"0 0 16 16",xmlns:"http://www.w3.org/2000/svg"},a().createElement("text",{fontSize:"13",width:"16",height:"16",x:"50%",y:"50%",dominantBaseline:"central",textAnchor:"middle"},".*"))))},g=(e,t="secondary")=>{const n=16+e.spacing.gridSize;return{button:(0,l.css)({zIndex:0,position:"relative",margin:`0 ${e.spacing.x0_5} 0 ${e.spacing.x0_5}`,boxShadow:"none",border:"none",display:"inline-flex",background:"transparent",justifyContent:"center",alignItems:"center",padding:0,color:e.colors.text.primary,"&:before":(r=d({},c(n,e)),a={position:"absolute"},a=null!=a?a:{},Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(a)):function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t.push.apply(t,n)}return t}(Object(a)).forEach((function(e){Object.defineProperty(r,e,Object.getOwnPropertyDescriptor(a,e))})),r),"&:hover":{"&:before":{backgroundColor:"secondary"===t?e.colors.action.hover:s.colorManipulator.alpha(e.colors.text.primary,.12),opacity:1}},"&:focus, &:focus-visible":o(e),"&:focus:not(:focus-visible)":{outline:"none",boxShadow:"none"}}),active:(0,l.css)({"&:before":{backgroundColor:"secondary"===t?e.colors.action.hover:s.colorManipulator.alpha(e.colors.text.primary,.12),opacity:1},"&:hover":{"&:before":{backgroundColor:"none",opacity:0}}})};var r,a};var h=n(1220),v=n(4793);function m(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function f(e){for(var t=1;t{const t=(0,i.useTheme2)(),n=e.caseSensitive?t.colors.text.maxContrast:t.colors.text.disabled,r=y(t),s=(e.caseSensitive?"Disable":"Enable")+" case match";return a().createElement(i.Tooltip,{content:s},a().createElement("button",{onClick:()=>e.onCaseSensitiveToggle(e.caseSensitive?v.ld.caseInsensitive:v.ld.caseSensitive),className:(0,l.cx)(r.button,e.caseSensitive?r.active:null),"aria-label":s},a().createElement("svg",{fill:n,width:"16",height:"16",viewBox:"0 0 16 16",xmlns:"http://www.w3.org/2000/svg"},a().createElement("text",{fontSize:"13",width:"16",height:"16",x:"50%",y:"50%",dominantBaseline:"central",textAnchor:"middle"},"Aa"))))},y=(e,t="secondary")=>{const n=16+e.spacing.gridSize;return{button:(0,l.css)({zIndex:0,position:"relative",margin:`0 ${e.spacing.x0_5} 0 ${e.spacing.x0_5}`,boxShadow:"none",border:"none",display:"inline-flex",background:"transparent",justifyContent:"center",alignItems:"center",padding:0,color:e.colors.text.primary,"&:before":(r=f({},c(n,e)),a={position:"absolute"},a=null!=a?a:{},Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(a)):function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t.push.apply(t,n)}return t}(Object(a)).forEach((function(e){Object.defineProperty(r,e,Object.getOwnPropertyDescriptor(a,e))})),r),"&:hover":{"&:before":{backgroundColor:"secondary"===t?e.colors.action.hover:s.colorManipulator.alpha(e.colors.text.primary,.12),opacity:1}},"&:focus, &:focus-visible":o(e),"&:focus:not(:focus-visible)":{outline:"none",boxShadow:"none"}}),active:(0,l.css)({"&:before":{backgroundColor:"secondary"===t?e.colors.action.hover:s.colorManipulator.alpha(e.colors.text.primary,.12),opacity:1},"&:hover":{"&:before":{backgroundColor:"none",opacity:0}}})};var r,a};function S(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const w=e=>{var{value:t,onChange:n,placeholder:r,onClear:s,suffix:l,width:o}=e,c=function(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}(e,["value","onChange","placeholder","onClear","suffix","width"]);const u=(0,i.useStyles2)(O);return a().createElement(i.Input,function(e){for(var t=1;t({suffixWrapper:(0,l.css)({gap:e.spacing(.5),display:"inline-flex"}),clearIcon:(0,l.css)({cursor:"pointer"})}),x=30;function E({exclusive:e,lineFilter:t,caseSensitive:n,setExclusive:s,regex:o,onInputChange:c,onCaseSensitiveToggle:u,onRegexToggle:d,handleEnter:g,onSubmitLineFilter:v,onClearLineFilter:m,focus:f,setFocus:y,type:S}){const O=(0,i.useStyles2)((e=>C(e,S))),[E,k]=(0,r.useState)(x);function F(e){var t;const n=Math.max(null!==(t=null==e?void 0:e.length)&&void 0!==t?t:0,x);k(n+9)}return(0,r.useEffect)((()=>{F(t)}),[t,f]),a().createElement("div",{className:O.wrapper},!v&&a().createElement(i.Select,{prefix:null,className:O.select,value:e?"exclusive":"inclusive",options:[{value:"exclusive",label:"Exclude"},{value:"inclusive",label:"Include"}],onChange:()=>s(!e)}),a().createElement(i.Field,{className:O.field},a().createElement(w,{width:f?E:void 0,onFocus:()=>y(!0),"data-testid":h.b.exploreServiceDetails.searchLogs,value:t,className:(0,l.cx)(v?O.inputNoBorderRight:void 0,O.input),onChange:c,suffix:a().createElement("span",{className:`${O.suffix} input-suffix`},a().createElement(b,{caseSensitive:n,onCaseSensitiveToggle:u}),a().createElement(p,{regex:o,onRegexToggle:d})),prefix:null,placeholder:"Search in log lines",onClear:m,onKeyUp:e=>{g(e,t),F(t)}})),v&&a().createElement("span",{className:O.buttonWrap},a().createElement(i.Button,{onClick:()=>{s(!1),v()},className:O.includeButton,variant:"secondary",fill:"outline",disabled:!t},"Include"),a().createElement(i.Button,{onClick:()=>{s(!0),v()},className:O.excludeButton,variant:"secondary",fill:"outline",disabled:!t},"Exclude")))}const C=(e,t)=>({inputNoBorderRight:(0,l.css)({input:{borderTopRightRadius:0,borderBottomRightRadius:0}}),suffix:(0,l.css)({display:"inline-flex",gap:e.spacing(.5)}),removeBtn:(0,l.css)({borderTopLeftRadius:0,borderBottomLeftRadius:0}),buttonWrap:(0,l.css)({display:"flex",justifyContent:"center"}),includeButton:(0,l.css)({borderLeft:"none",borderRadius:0,borderRight:"none","&[disabled]":{borderRight:"none"}}),excludeButton:(0,l.css)({borderRadius:`0 ${e.shape.radius.default} ${e.shape.radius.default} 0`,borderLeft:"none","&[disabled]":{borderLeft:"none"}}),submit:(0,l.css)({borderTopLeftRadius:0,borderBottomLeftRadius:0}),select:(0,l.css)({label:"line-filter-exclusion",marginLeft:0,paddingLeft:0,height:"auto",borderBottomRightRadius:"0",borderTopRightRadius:"0",borderRight:"none",minHeight:"30px",minWidth:"95px",maxWidth:"95px",outline:"none"}),wrapper:(0,l.css)({display:"flex",width:"100%"}),input:(0,l.css)({label:"line-filter-input-wrapper",minWidth:"200px",maxWidth:"editor"===t?"calc(100vw - 198px)":"calc(100vw - 288px)",input:{borderTopLeftRadius:0,borderBottomLeftRadius:0,fontFamily:"monospace",fontSize:e.typography.bodySmall.fontSize,width:"100%"}}),exclusiveBtn:(0,l.css)({marginRight:"1rem"}),field:(0,l.css)({label:"field",flex:"0 1 auto",marginBottom:0})})},9254:(e,t,n)=>{n.d(t,{PY:()=>S,ZB:()=>b,zQ:()=>y});var r=n(6089),a=n(2672),i=n(2007),s=n(5959),l=n.n(s),o=n(227),c=n(1254),u=n(2718),d=n(8760),p=n(7781),g=n(9153),h=n(8531),v=n(4011),m=n(2871);function f(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class b extends a.Bs{constructor(e){super(function(e){for(var t=1;t{this.getLogsPanelScene().setState({wrapLogMessage:e}),(0,o.YK)("wrapLogMessage",e),this.getLogsListScene().setLogsVizOption({wrapLogMessage:e}),this.getLogsListScene().setLogsVizOption({prettifyLogMessage:e})})),f(this,"onChangeLogsSortOrder",(e=>{this.getLogsPanelScene().setState({sortOrder:e}),(0,o.YK)("sortOrder",e),this.getLogsListScene().setLogsVizOption({sortOrder:e})})),f(this,"getLogsListScene",(()=>a.jh.getAncestor(this,c.i))),f(this,"getLogsPanelScene",(()=>a.jh.getAncestor(this,g.o))),f(this,"clearDisplayedFields",(()=>{this.getLogsListScene().clearDisplayedFields(),(0,u.EE)(u.NO.service_details,u.ir.service_details.logs_clear_displayed_fields)}))}}function y(){return(0,o.YM)("sortOrder",p.LogsSortOrder.Descending)}function S(){const e=h.locationService.getLocation(),t=new URLSearchParams(e.search).get("sortOrder");try{if("string"==typeof t){const e=(0,v.FH)(JSON.parse(t));if(e)return e}}catch(e){m.v.error(e,{msg:"LogOptionsScene(getLogsPanelSortOrderFromURL): unable to parse sortOrder"})}return!1}f(b,"Component",(function({model:e}){const{onChangeVisualizationType:t,visualizationType:n}=e.useState(),{wrapLogMessage:r,sortOrder:a}=e.getLogsPanelScene().useState(),{displayedFields:s}=e.getLogsListScene().useState(),o=(0,i.useStyles2)(w),c=null!=r&&r;return l().createElement("div",{className:o.container},s.length>0&&l().createElement(i.Tooltip,{content:`Clear displayed fields: ${s.join(", ")}`},l().createElement(i.Button,{size:"sm",variant:"secondary",fill:"outline",onClick:e.clearDisplayedFields},"Show original log line")),l().createElement(i.InlineField,{className:o.buttonGroupWrapper,transparent:!0},l().createElement(i.RadioButtonGroup,{size:"sm",options:[{label:"Newest first",value:p.LogsSortOrder.Descending,description:"Show results newest to oldest"},{label:"Oldest first",value:p.LogsSortOrder.Ascending,description:"Show results oldest to newest"}],value:a,onChange:e.onChangeLogsSortOrder})),l().createElement(i.InlineField,{className:o.buttonGroupWrapper,transparent:!0},l().createElement(i.RadioButtonGroup,{size:"sm",value:c,onChange:e.handleWrapLinesChange,options:[{label:"Wrap",value:!0,description:"Enable wrapping of long log lines"},{label:"No wrap",value:!1,description:"Disable wrapping of long log lines"}]})),l().createElement(d.C,{vizType:n,onChange:t}))}));const w=e=>({container:(0,r.css)({display:"flex",alignItems:"center",gap:e.spacing(1),marginTop:e.spacing(.5)}),buttonGroupWrapper:(0,r.css)({margin:0,alignItems:"center"})})},1254:(e,t,n)=>{n.d(t,{i:()=>dt});var r=n(5959),a=n.n(r),i=n(2672),s=n(6089),l=n(7781),o=n(9186),c=n(2871),u=n(8831),d=n(4011);function p(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function g(e){for(var t=1;t{},columns:{},filteredColumns:{},setColumns:()=>{},setFilteredColumns:()=>{},setVisible:()=>!1,visible:!1,bodyState:"auto",setBodyState:()=>{},clearSelectedLine:()=>{}}),f=({children:e,initialColumns:t,logsFrame:n,setUrlColumns:i,clearSelectedLine:s,setUrlTableBodyState:l,urlTableBodyState:u,showColumnManagementDrawer:p,isColumnManagementActive:v})=>{const[f,y]=(0,r.useState)(b(t)),[S,w]=(0,r.useState)(null!=u?u:"auto"),[O,x]=(0,r.useState)(void 0),E=function(){let e={};const t=localStorage.getItem(h);if(t)try{return e=(0,d.Zt)(JSON.parse(t)),!1===e&&c.v.error(new d.QX("getColumnWidthsFromLocalStorage: unable to validate values in local storage"),{msg:"NarrowingError: error parsing table column widths from local storage"}),e}catch(e){c.v.error(e,{msg:"error parsing table column widths from local storage"})}return e}(),[C,k]=(0,r.useState)(E),F=(0,r.useCallback)((e=>{if(e){const t=b(e);y(t),i((e=>{let t=[];return Object.keys(e).forEach((n=>{e[n].active&&void 0!==e[n].index&&t.push(n)})),t.sort(((t,n)=>{const r=e[t],a=e[n];return r.index-a.index})),t})(t))}}),[i]),P=(0,r.useCallback)((e=>{w(e),l(e)}),[l]),L=(0,r.useCallback)((e=>{p(e)}),[p]);return(0,r.useEffect)((()=>{t&&F(t)}),[t,F]),(0,r.useEffect)((()=>{const e=function(e,t){if(!t)return void c.v.warn("missing dataframe, cannot set url state");const n=Object.keys(e).filter((t=>{var n;return null===(n=e[t])||void 0===n?void 0:n.active})).sort(((t,n)=>{const r=e[t],a=e[n];return void 0!==r.index&&void 0!==a.index?r.index-a.index:0})),r=t.timeField,a=t.bodyField;if(r&&a||n.length){const e=[];return(null==r?void 0:r.name)&&e.push(r.name),(null==a?void 0:a.name)&&e.push(a.name),n.length?n:e}return[]}(f,n);(null==e?void 0:e.length)&&(0===Object.keys(f).filter((e=>f[e].active)).length&&function(e,t,n){const r=g({},e);r[(0,o.fF)(n)]={index:0,active:!0,type:"TIME_FIELD",percentOfLinesWithLabel:100,cardinality:1/0},r[(0,o.Il)(n)]={index:1,active:!0,type:"BODY_FIELD",percentOfLinesWithLabel:100,cardinality:1/0},t(r)}(f,F,n),x(void 0))}),[f,n,x,F]),a().createElement(m.Provider,{value:{setColumnWidthMap:e=>{localStorage.setItem(h,JSON.stringify(e)),k(e)},columnWidthMap:C,bodyState:S,setBodyState:P,setFilteredColumns:x,filteredColumns:O,columns:f,setColumns:F,visible:v,setVisible:L,clearSelectedLine:()=>{s()}}},e)},b=e=>{if("labelTypes"in e){const t=g({},e),{labelTypes:n}=t;return function(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}(t,["labelTypes"])}return e},y=()=>(0,r.useContext)(m);var S=n(3367),w=n(1269),O=n(8531),x=n(3321),E=n(2007);const C=(0,r.createContext)({cellIndex:{index:null,numberOfMenuItems:3},setActiveCellIndex:e=>!1}),k=({children:e})=>{const[t,n]=(0,r.useState)({index:null}),i=(0,r.useCallback)((e=>{n(e)}),[]);return a().createElement(C.Provider,{value:{cellIndex:t,setActiveCellIndex:i}},e)},F=()=>(0,r.useContext)(C),P=(0,r.createContext)({isHeaderMenuActive:!1,setHeaderMenuActive:e=>!1}),L=({children:e})=>{const[t,n]=(0,r.useState)(!1),i=(0,r.useCallback)((e=>{n(e)}),[]);return a().createElement(P.Provider,{value:{isHeaderMenuActive:t,setHeaderMenuActive:i}},e)},j=()=>(0,r.useContext)(P);var _=n(4932);function T({searchValue:e,setSearchValue:t}){const{columns:n,setFilteredColumns:r}=y(),i=e=>{const t=e[0];let a={},i=0;var s;t.forEach((e=>{e in n&&(a[e]=n[e],i++)})),r(a),s=i,(0,O.reportInteraction)("grafana_logs_app_table_text_search_result_count",{resultCount:s})},l=(o=(0,E.useTheme2)(),{searchWrap:(0,s.css)({padding:`${o.spacing(.4)} 0 ${o.spacing(.4)} ${o.spacing(.4)}`})});var o;return a().createElement(E.Field,{className:l.searchWrap},a().createElement(E.Input,{value:e,type:"text",placeholder:"Search fields by name",onChange:e=>{var a;const s=null===(a=e.currentTarget)||void 0===a?void 0:a.value;var l;t(s),s?(l=s,(0,_.E)(Object.keys(n),l,i)):r(void 0)}}))}var D=n(5755),N=n(5786);function $(){const e=(t=(0,E.useTheme2)(),{empty:(0,s.css)({marginBottom:t.spacing(2),marginLeft:t.spacing(1.75),fontSize:t.typography.fontSize})});var t;return a().createElement("div",{className:e.empty},"No fields")}function I(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function B(e){var t=function(e){if("object"!==M(e)||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!==M(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===M(t)?t:String(t)}function M(e){return e&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}function A(e){const t=(n=(0,E.useTheme2)(),{dragIcon:(0,s.css)({cursor:"drag",marginLeft:n.spacing(1),opacity:.4}),labelCount:(0,s.css)({marginLeft:n.spacing(.5),marginRight:n.spacing(.5),appearance:"none",background:"none",border:"none",fontSize:n.typography.pxToRem(11),opacity:.6,display:"flex",flexDirection:"column",alignItems:"self-end"}),contentWrap:(0,s.css)({display:"flex",alignItems:"center",justifyContent:"space-between",width:"100%"}),customWidthWrap:(0,s.css)({fontSize:n.typography.bodySmall.fontSize,cursor:"pointer"}),checkboxLabel:(0,s.css)({"> span":{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",display:"block",maxWidth:"100%"}})});var n,r,i,l,o,c,u;return e.labels[e.label]?a().createElement(a().Fragment,null,a().createElement("div",{className:t.contentWrap},a().createElement(E.Checkbox,{className:t.checkboxLabel,label:e.label,onChange:e.onChange,checked:null!==(u=null===(r=e.labels[e.label])||void 0===r?void 0:r.active)&&void 0!==u&&u}),e.showCount&&a().createElement("div",{className:t.labelCount},a().createElement("div",null,null===(i=e.labels[e.label])||void 0===i?void 0:i.percentOfLinesWithLabel,"%"),a().createElement("div",null,null===(l=e.labels[e.label])||void 0===l?void 0:l.cardinality," ",1===(null===(o=e.labels[e.label])||void 0===o?void 0:o.cardinality)?"value":"values")),e.columnWidthMap&&e.setColumnWidthMap&&void 0!==(null===(c=e.columnWidthMap)||void 0===c?void 0:c[e.label])&&a().createElement("div",{onClick:()=>{var t;const n=function(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}(n,[r].map(B));null===(t=e.setColumnWidthMap)||void 0===t||t.call(e,i)},title:"Clear column width override",className:t.customWidthWrap},"Reset column width",a().createElement(E.Icon,{name:"x"}))),e.draggable&&a().createElement(E.Icon,{"aria-label":"Drag and drop icon",title:"Drag and drop to reorder",name:"draggabledots",size:"lg",className:t.dragIcon})):null}function R(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function V(e){for(var t=1;t{const{columnWidthMap:t,setColumnWidthMap:n}=y(),{reorderColumn:r,labels:i,valueFilter:l,toggleColumn:o}=e,c=(0,N.$j)(),{columns:u}=y(),d=function(e){return{wrap:(0,s.css)({marginTop:e.spacing(1),marginBottom:e.spacing(1),display:"flex",background:e.colors.background.primary}),dragging:(0,s.css)({background:e.colors.background.secondary}),columnWrapper:(0,s.css)({marginBottom:e.spacing(1.5),paddingLeft:e.spacing(.5)})}}(c),p=Object.keys(i).filter((e=>l(e))),g=e=>{const t=i[e];if(t)return`${e} appears in ${null==t?void 0:t.percentOfLinesWithLabel}% of log lines`};return p.length?a().createElement(D.JY,{onDragEnd:e=>{e.destination&&r(u,e.source.index,e.destination.index)}},a().createElement(D.gL,{droppableId:"order-fields",direction:"vertical"},(e=>a().createElement("div",W(V({className:d.columnWrapper},e.droppableProps),{ref:e.innerRef}),p.sort(function(e){return(t,n)=>{const r=e[t],a=e[n];return null!=r.index&&null!=a.index?r.index-a.index:0}}(i)).map(((e,r)=>a().createElement(D.sx,{draggableId:e,key:e,index:r},((r,l)=>a().createElement("div",W(V({className:(0,s.cx)(d.wrap,l.isDragging?d.dragging:void 0),ref:r.innerRef},r.draggableProps,r.dragHandleProps),{title:g(e)}),a().createElement(A,{setColumnWidthMap:n,columnWidthMap:t,label:e,onChange:()=>o(e),labels:i,draggable:!0})))))),e.placeholder)))):a().createElement($,null)},H=new Intl.Collator(void 0,{sensitivity:"base"}),Q=e=>{const{labels:t,valueFilter:n,toggleColumn:r}=e,i=(o=(0,E.useTheme2)(),{wrap:(0,s.css)({marginTop:o.spacing(.25),marginBottom:o.spacing(.25),display:"flex",background:o.colors.background.primary,borderBottom:`1px solid ${o.colors.background.canvas}`}),dragging:(0,s.css)({background:o.colors.background.secondary}),columnWrapper:(0,s.css)({marginBottom:o.spacing(1.5),paddingLeft:o.spacing(.5)})}),l=Object.keys(t).filter((e=>n(e)));var o;return l.length?a().createElement("div",{className:i.columnWrapper},l.sort(function(e){return(t,n)=>{const r=e[t],a=e[n];return null!=r&&null!=a?Number("TIME_FIELD"===a.type)-Number("TIME_FIELD"===r.type)||Number("BODY_FIELD"===a.type)-Number("BODY_FIELD"===r.type)||H.compare(t,n):0}}(t)).map((e=>{var n;return a().createElement("div",{key:e,className:i.wrap,title:`${e} appears in ${null===(n=t[e])||void 0===n?void 0:n.percentOfLinesWithLabel}% of log lines`},a().createElement(A,{showCount:!0,label:e,onChange:()=>r(e),labels:t}))}))):a().createElement($,null)},K=e=>{const t=(n=(0,E.useTheme2)(),{sidebarWrap:(0,s.css)({overflowY:"scroll",height:"calc(100% - 50px)","&::-webkit-scrollbar":{display:"none"},scrollbarWidth:"none"}),columnHeaderButton:(0,s.css)({appearance:"none",background:"none",border:"none",fontSize:n.typography.pxToRem(11)}),columnHeader:(0,s.css)({display:"flex",justifyContent:"space-between",fontSize:n.typography.h6.fontSize,background:n.colors.background.secondary,position:"sticky",top:0,left:0,paddingTop:n.spacing(.75),paddingRight:n.spacing(.75),paddingBottom:n.spacing(.75),paddingLeft:n.spacing(1.5),zIndex:3,marginBottom:n.spacing(2)})});var n,r,i;return a().createElement("div",{className:t.sidebarWrap},a().createElement(a().Fragment,null,a().createElement("div",{className:t.columnHeader},"Selected fields",a().createElement("button",{onClick:e.clear,className:t.columnHeaderButton},"Reset")),a().createElement(z,{reorderColumn:e.reorderColumn,toggleColumn:e.toggleColumn,labels:null!==(r=e.filteredColumnsWithMeta)&&void 0!==r?r:e.columnsWithMeta,valueFilter:t=>{var n,r;return null!==(r=null===(n=e.columnsWithMeta[t])||void 0===n?void 0:n.active)&&void 0!==r&&r},id:"selected-fields"}),a().createElement("div",{className:t.columnHeader},"Fields"),a().createElement(Q,{toggleColumn:e.toggleColumn,labels:null!==(i=e.filteredColumnsWithMeta)&&void 0!==i?i:e.columnsWithMeta,valueFilter:t=>{var n;return!(null===(n=e.columnsWithMeta[t])||void 0===n?void 0:n.active)}})))};function q(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function G(e){for(var t=1;t{if(n===r)return;const a=G({},t),i=Object.keys(a).filter((e=>a[e].active)).map((e=>{var t;return{fieldName:e,index:null!==(t=a[e].index)&&void 0!==t?t:0}})).sort(((e,t)=>e.index-t.index)),[s]=i.splice(n,1);i.splice(r,0,s),i.filter((e=>void 0!==e)).forEach(((e,t)=>{a[e.fieldName].index=t})),e(a)}}function Y(){const{columns:e,setColumns:t,setVisible:n,filteredColumns:i,setFilteredColumns:s}=y(),[l,o]=(0,r.useState)(""),u=J(t);return a().createElement(E.ClickOutsideWrapper,{onClick:()=>{n(!1),s(e),o("")},useCapture:!0},a().createElement(T,{searchValue:l,setSearchValue:o}),a().createElement(K,{toggleColumn:n=>{if(!e||!(n in e))return void function(e,t){let n;try{n={columns:JSON.stringify(t),columnName:e}}catch(t){n={msg:"Table: ColumnSelectionDrawerWrap failed to encode context",columnName:e}}c.v.warn("failed to get column",n)}(n,e);const r=Object.keys(e).filter((t=>e[t].active)).length,a=!e[n].active||void 0;let l;if(l=U(G({},e),a?{[n]:U(G({},e[n]),{active:a,index:r})}:{[n]:U(G({},e[n]),{active:!1,index:void 0})}),function(t){if(e){var n,r;const a=!(null===(n=e[t])||void 0===n?void 0:n.active),i=null===(r=Object.keys(e).filter((t=>{var n;return null===(n=e[t])||void 0===n?void 0:n.active})))||void 0===r?void 0:r.length,s={columnAction:a?"add":"remove",columnCount:a?i+1:i-1};(0,O.reportInteraction)("grafana_logs_app_table_column_filter_clicked",s)}}(n),t(l),i){var u;const e=!(null===(u=i[n])||void 0===u?void 0:u.active);let t;t=U(G({},i),e?{[n]:U(G({},i[n]),{active:e,index:r})}:{[n]:U(G({},i[n]),{active:!1,index:void 0})}),s(t),o("")}},filteredColumnsWithMeta:i,columnsWithMeta:e,clear:()=>{const n=G({},e);let r=0;Object.keys(n).forEach((e=>{const t="BODY_FIELD"===n[e].type||"TIME_FIELD"===n[e].type;n[e].active=t,n[e].index=t?r++:void 0})),t(n),s(n),o("")},reorderColumn:u}))}const X=e=>a().createElement(Z,{onMouseOut:e.onMouseOut,onMouseIn:e.onMouseIn,onClick:e.onClick,field:e.field,rowIndex:e.rowIndex},e.children),Z=e=>{var t;const n=(0,E.useTheme2)(),r=F(),i=(e=>({active:(0,s.css)({height:"calc(100% + 36px)",zIndex:e.zIndex.tooltip,background:"transparent"}),wrap:(0,s.css)({position:"absolute",overflowX:"hidden",whiteSpace:"nowrap",width:"100%",height:"100%",left:0,top:0,margin:"auto",background:"transparent"})}))(n,0,null===(t=r.cellIndex)||void 0===t||t.numberOfMenuItems);return a().createElement("div",{onMouseLeave:e.onMouseOut,onMouseEnter:e.onMouseIn,onClick:e.onClick,className:r.cellIndex.index===e.rowIndex&&r.cellIndex.fieldName===e.field.name?(0,s.cx)(i.wrap,i.active):i.wrap},e.children)},ee={logsFrame:null,addFilter:e=>{},timeRange:void 0,selectedLine:void 0},te=(0,r.createContext)(ee),ne=({children:e,logsFrame:t,addFilter:n,selectedLine:r,timeRange:i})=>a().createElement(te.Provider,{value:{logsFrame:t,addFilter:n,selectedLine:r,timeRange:i}},e),re=()=>(0,r.useContext)(te);var ae=n(4793);const ie=e=>{const t=(r=(0,E.useTheme2)(),i=e.pillType,{menu:(0,s.css)({position:"relative",paddingRight:"5px",display:"flex",minWidth:"60px",justifyContent:"flex-start"}),menuItemsWrap:(0,s.css)({boxShadow:r.shadows.z3,display:"flex",background:r.colors.background.secondary,padding:"5px 0",marginLeft:"column"===i?"5px":void 0}),menuItem:(0,s.css)({overflow:"auto",textOverflow:"ellipsis",cursor:"pointer",paddingLeft:"5px",paddingRight:"5px",display:"flex",alignItems:"center"})}),{addFilter:n}=re();var r,i;return a().createElement("span",{className:t.menu},a().createElement("span",{className:t.menuItemsWrap},"derived"!==e.fieldType&&a().createElement(a().Fragment,null,a().createElement("div",{className:t.menuItem,onClick:()=>{n({key:e.label,value:e.value,operator:ae.w7.Equal})}},a().createElement(E.Icon,{title:"Add to search",size:"md",name:"plus-circle"})),a().createElement("div",{className:t.menuItem,onClick:()=>{n({key:e.label,value:e.value,operator:ae.w7.NotEqual})}},a().createElement(E.Icon,{title:"Exclude from search",size:"md",name:"minus-circle"}))),e.showColumn&&a().createElement("div",{title:"Add column",onClick:e.showColumn,className:t.menuItem},a().createElement("svg",{width:"18",height:"16",viewBox:"0 0 18 16",fill:"none",xmlns:"http://www.w3.org/2000/svg"},a().createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M1.38725 1.33301H13.3872C13.5641 1.33301 13.7336 1.40325 13.8587 1.52827C13.9837 1.65329 14.0539 1.82286 14.0539 1.99967V2.33333C14.0539 2.70152 13.7554 3 13.3872 3H13.0542C12.87 3 12.7206 2.85062 12.7206 2.66634H8.05391V13.333H12.7206C12.7206 13.1491 12.8697 13 13.0536 13H13.3872C13.7554 13 14.0539 13.2985 14.0539 13.6667V13.9997C14.0539 14.1765 13.9837 14.3461 13.8587 14.4711C13.7336 14.5961 13.5641 14.6663 13.3872 14.6663H1.38725C1.21044 14.6663 1.04087 14.5961 0.915843 14.4711C0.790819 14.3461 0.720581 14.1765 0.720581 13.9997V1.99967C0.720581 1.82286 0.790819 1.65329 0.915843 1.52827C1.04087 1.40325 1.21044 1.33301 1.38725 1.33301ZM2.05391 13.333H6.72058V2.66634H2.05391V13.333Z",fill:"#CCCCDC",fillOpacity:"1"}),a().createElement("path",{d:"M13.8538 7.19999H16.2538C16.466 7.19999 16.6695 7.28429 16.8195 7.4343C16.9696 7.58432 17.0538 7.78783 17.0538 7.99999C17.0538 8.21214 16.9696 8.41566 16.8195 8.56567C16.6695 8.71569 16.466 8.79999 16.2538 8.79999H13.8538V11.2C13.8538 11.4121 13.7696 11.6156 13.6195 11.7657C13.4695 11.9157 13.266 12 13.0538 12C12.8416 12 12.6382 11.9157 12.4881 11.7657C12.3381 11.6156 12.2538 11.4121 12.2538 11.2V8.79999H9.85384C9.64165 8.79999 9.43819 8.71569 9.28815 8.56567C9.13811 8.41566 9.05383 8.21214 9.05383 7.99999C9.05383 7.78783 9.13811 7.58432 9.28815 7.4343C9.43819 7.28429 9.64165 7.19999 9.85384 7.19999H12.2538V4.8C12.2538 4.58784 12.3381 4.38433 12.4881 4.23431C12.6382 4.0843 12.8416 4 13.0538 4C13.266 4 13.4695 4.0843 13.6195 4.23431C13.7696 4.38433 13.8538 4.58784 13.8538 4.8V7.19999Z",fill:"#CCCCDC",fillOpacity:"1"}))),e.links&&e.links.map((e=>{var n;return a().createElement("div",{className:t.menuItem,onClick:()=>{window.open(e.href,"_blank")},key:e.href},a().createElement(E.Icon,{title:null!==(n=e.title)&&void 0!==n?n:"Link",key:e.href,size:"md",name:"link"}))}))))},se="detected_level",le=e=>{const{label:t,value:n}=e,r=(0,E.useTheme2)(),{cellIndex:i}=F();let o;if(t===se){const e=Ie().options;"string"==typeof n&&n in e&&(o=e[n].color)}const c=i.index===e.rowIndex&&e.field.name===i.fieldName,u=((e,t)=>({activePillWrap:(0,s.css)({}),pillWrap:(0,s.css)({width:"100%"}),pill:(0,s.css)({border:`1px solid ${e.colors.border.weak}`,"&:hover":{border:`1px solid ${e.colors.border.strong}`},marginRight:"5px",marginTop:"4px",marginLeft:"5px",padding:"2px 5px",position:"relative",display:"inline-flex",flexDirection:"row-reverse",backgroundColor:"transparent",paddingLeft:t?`${e.spacing(.75)}`:"2px","&:before":{content:'""',position:"absolute",left:0,top:0,height:"100%",width:`${e.spacing(.25)}`,backgroundColor:t}}),menu:(0,s.css)({width:"100%"}),menuItem:(0,s.css)({overflow:"auto",textOverflow:"ellipsis"}),menuItemText:(0,s.css)({width:"65px",display:"inline-block"})}))(r,o);return a().createElement("div",{className:(0,s.cx)(u.pillWrap,c?u.activePillWrap:void 0)},!!n&&a().createElement(a().Fragment,null,a().createElement("span",{className:u.pill},a().createElement(a().Fragment,null,n)),c&&"string"==typeof n&&e.field.type!==l.FieldType.time&&a().createElement(ie,{label:e.label,value:n,pillType:"column"})))};var oe=n(1220),ce=n(8315);function ue(e){var t;const n=(g=(0,E.useTheme2)(),{clipboardButton:(0,s.css)({padding:0,height:"100%",lineHeight:"1",width:"20px"}),inspectButton:(0,s.css)({display:"inline-flex",verticalAlign:"middle",margin:0,overflow:"hidden",borderRadius:"5px"}),iconWrapper:(0,s.css)({height:"35px",position:"sticky",left:0,display:"flex",background:g.colors.background.secondary,padding:`0 ${g.spacing(.5)}`,zIndex:1,boxShadow:g.shadows.z2}),inspect:(0,s.css)({padding:"5px 3px","&:hover":{color:g.colors.text.link,cursor:"pointer"}})}),{logsFrame:i,timeRange:l}=re(),o=null==i||null===(t=i.idField)||void 0===t?void 0:t.values[e.rowIndex],c=null==i?void 0:i.bodyField.values[e.rowIndex],[u,d]=(0,r.useState)(!1),p=(0,r.useCallback)((()=>l?(0,ce.gW)("selectedLine",{id:o,row:e.rowIndex},l):""),[o,e.rowIndex,l]);var g;return a().createElement(a().Fragment,null,a().createElement("div",{className:n.iconWrapper},a().createElement("div",{className:n.inspect},a().createElement(E.IconButton,{"data-testid":oe.b.table.inspectLine,className:n.inspectButton,tooltip:"View log line",variant:"secondary","aria-label":"View log line",tooltipPlacement:"top",size:"md",name:"eye",onClick:()=>d(!0),tabIndex:0})),a().createElement("div",{className:n.inspect},a().createElement(E.ClipboardButton,{className:n.clipboardButton,icon:"share-alt",variant:"secondary",fill:"text",size:"md",tooltip:"Copy link to log line",tooltipPlacement:"top",tabIndex:0,getText:p}))),a().createElement(a().Fragment,null,u&&a().createElement(E.Modal,{onDismiss:()=>d(!1),isOpen:!0,title:"Inspect value"},a().createElement("pre",null,c),a().createElement(E.Modal.ButtonRow,null,a().createElement(E.ClipboardButton,{icon:"copy",getText:()=>e.value},"Copy to Clipboard")))))}const de=e=>{var t;let n=e.value;const r=e.field,i=r.display(n),o=(h=(0,E.useTheme2)(),v=e.field.type,{flexWrap:(0,s.css)({display:"flex",alignItems:"flex-start",flexDirection:v===l.FieldType.number?"row-reverse":"row",textAlign:v===l.FieldType.number?"right":"left"}),content:(0,s.css)({position:"relative",overflow:"hidden",display:"flex",height:"100%"}),linkWrapper:(0,s.css)({color:h.colors.text.link,marginTop:"7px",marginLeft:"7px","&:hover":{textDecoration:"underline"}})}),{setVisible:c}=y(),{cellIndex:u,setActiveCellIndex:d}=F(),p={index:e.rowIndex},g=Boolean(null===(t=(0,E.getCellLinks)(e.field,p))||void 0===t?void 0:t.length);var h,v;return null===n?a().createElement(a().Fragment,null):(n=a().isValidElement(e.value)?e.value:"object"==typeof n?JSON.stringify(e.value):(0,l.formattedValueToString)(i),a().createElement(X,{onClick:()=>e.rowIndex===u.index&&e.field.name===u.fieldName?d({index:null}):d({index:e.rowIndex,fieldName:e.field.name,numberOfMenuItems:3}),field:e.field,rowIndex:e.rowIndex},a().createElement("div",{className:o.content},0===e.fieldIndex&&a().createElement(ue,{value:n,rowIndex:e.rowIndex}),a().createElement("div",{className:o.flexWrap}),!g&&((t,n)=>a().createElement(le,{field:e.field,rowIndex:e.rowIndex,showColumns:()=>c(!0),label:n,value:t}))(n,r.name),g&&r.getLinks&&a().createElement(E.DataLinksContextMenu,{links:()=>{var e;return null!==(e=(0,E.getCellLinks)(r,p))&&void 0!==e?e:[]}},(e=>e.openMenu?a().createElement("div",{className:o.linkWrapper,onClick:e.openMenu},a().createElement(a().Fragment,null,n)):a().createElement("div",{className:o.linkWrapper},a().createElement(a().Fragment,null,n)))))))};function pe(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ge(e){const t=(0,E.useTheme2)();let n;if(e.label===se){const t=Ie().options;e.value in t&&(n=t[e.value].color)}const r=((e,t)=>({pill:(0,s.css)({flex:"0 1 auto",marginLeft:e.spacing(.5),marginRight:e.spacing(.5),padding:`${e.spacing(.25)} ${e.spacing(.25)}`,position:"relative",display:"inline-flex",flexDirection:"column",marginTop:e.spacing(.5)}),activePill:(0,s.css)({}),valueWrap:(0,s.css)({border:`1px solid ${e.colors.background.secondary}`,boxShadow:`-2px 2px 5px 0px ${e.colors.background.secondary}`,backgroundColor:"transparent",cursor:"pointer",position:"relative",paddingRight:`${e.spacing(.5)}`,paddingLeft:t?`${e.spacing(.75)}`:`${e.spacing(.5)}`,"&:before":{content:'""',position:"absolute",left:0,top:0,height:"100%",width:`${e.spacing(.25)}`,backgroundColor:t},"&:hover":{border:`1px solid ${e.colors.border.strong}`}})}))(t,n);return a().createElement("span",{className:(0,s.cx)(r.pill,e.menuActive?r.activePill:void 0),onClick:e.onClick},a().createElement("span",{className:r.valueWrap},e.label,"=",e.value),e.menuActive&&a().createElement(ie,{pillType:"logPill",fieldType:e.fieldType,links:e.links,label:e.label,value:e.value,showColumn:e.onClickAdd}))}const he=e=>{const{label:t}=e,{cellIndex:n,setActiveCellIndex:i}=F(),{columns:s,setColumns:o}=y(),c=e.value,u=(0,O.getTemplateSrv)(),d=(0,r.useMemo)((()=>u.replace.bind(u)),[u]),p=e.field;if(!p||(null==p?void 0:p.type)===l.FieldType.other)return null;const g={index:e.rowIndex};e.originalField&&e.isDerivedField&&e.originalFrame&&(e.originalField.getLinks=(0,l.getLinksSupplier)(e.originalFrame,e.originalField,{},d));const h=e.originalField&&(0,E.getCellLinks)(e.originalField,g);return a().createElement(ge,{onClick:()=>e.rowIndex===n.index&&p.name===n.fieldName&&t===n.subFieldName?i({index:null}):i({index:e.rowIndex,fieldName:p.name,subFieldName:t,numberOfMenuItems:e.isDerivedField?2:3}),menuActive:n.index===e.rowIndex&&n.fieldName===p.name&&n.subFieldName===t,fieldType:e.isDerivedField?"derived":void 0,label:t,value:c,onClickAdd:()=>(e=>{const t=function(e){for(var t=1;ts[e].active)).length;t[e].active?(t[e].active=!1,t[e].index=void 0):(t[e].active=!0,t[e].index=n),o(t)})(t),links:h})},ve=e=>{var t,n;null==e||null===(n=e.current)||void 0===n||n.scrollTo({left:null===(t=e.current)||void 0===t?void 0:t.scrollLeft})};function me({scrollerRef:e}){const t=(n=(0,E.useTheme2)(),{scroller:s.css` + position: absolute; + right: 0; + display: flex; + align-items: center; + justify-content: center; + width: 40px; + height: 20px; + top: 32px; + margin-top: -24px; + // For some reason clicking on this button causes text to be selected in the following row + user-select: none; + `,scrollLeft:s.css` + cursor: pointer; + background: ${n.colors.background.primary}; + + &:hover { + background: ${n.colors.background.secondary}; + } + `,scrollRight:s.css` + cursor: pointer; + background: ${n.colors.background.primary}; + + &:hover { + background: ${n.colors.background.secondary}; + } + `});var n;return a().createElement("div",{className:t.scroller},a().createElement("span",{onPointerDown:()=>{var t,n;null==(t=e)||null===(n=t.current)||void 0===n||n.scrollTo({top:0,left:0,behavior:"smooth"})},onPointerUp:()=>ve(e),className:t.scrollLeft},a().createElement(E.Icon,{name:"arrow-left"})),a().createElement("span",{onPointerDown:()=>{var t,n;null==(t=e)||null===(n=t.current)||void 0===n||n.scrollTo({top:0,left:t.current.scrollWidth,behavior:"smooth"})},onPointerUp:()=>ve(e),className:t.scrollRight},a().createElement(E.Icon,{name:"arrow-right"})))}function fe(e){const t=(0,E.useTheme2)(),n=be(t);return a().createElement("div",{"data-testid":oe.b.table.rawLogLine,className:n.rawLogLine},a().createElement(a().Fragment,null,e.value))}const be=(e,t)=>({rawLogLine:(0,s.css)({fontFamily:e.typography.fontFamilyMonospace,height:"35px",lineHeight:"35px",paddingRight:e.spacing(1.5),paddingLeft:e.spacing(1),fontSize:e.typography.bodySmall.fontSize})}),ye=e=>{let t=e.value;const n=e.field,i=n.display(t),s=(0,E.useTheme2)(),c=Se(s),{columns:u,setVisible:d,bodyState:p}=y(),{logsFrame:g}=re(),[h,m]=(0,r.useState)(!1),f=(0,r.useRef)(null);t=a().isValidElement(e.value)?e.value:"object"==typeof t?JSON.stringify(e.value):(0,l.formattedValueToString)(i);const b=(t=>Object.keys(u).filter((e=>e!==(0,o.Il)(g))).sort(((e,t)=>e===se?-1:t===se?1:"LINK_FIELD"===u[e].type?-1:"LINK_FIELD"===u[t].type?1:u[e].cardinality>u[t].cardinality?-1:1)).filter((e=>!u[e].active&&u[e].cardinality>1)).map((r=>{var i;const s=t[r],o=null==g||null===(i=g.raw)||void 0===i?void 0:i.fields.find((e=>e.name===r)),c=null==n?void 0:n.values[e.rowIndex],p=!s&&!!c;if(s)return a().createElement(he,{originalFrame:void 0,field:n,columns:u,rowIndex:e.rowIndex,frame:e.frame,showColumns:()=>d(!0),key:r,label:r,isDerivedField:!1,value:s});if(p&&(null==o?void 0:o.name)){const t=null==o?void 0:o.values[e.rowIndex];if((null==o?void 0:o.type)===l.FieldType.string&&t)return a().createElement(he,{originalFrame:null==g?void 0:g.raw,originalField:o,field:n,value:t,columns:u,rowIndex:e.rowIndex,frame:e.frame,showColumns:()=>d(!0),key:o.name,label:o.name,isDerivedField:!0})}return null})).filter((e=>e)))(e.labels),w=p===v.auto,O=b.length>0;return a().createElement(X,{onMouseIn:()=>{m(!0)},onMouseOut:()=>{m(!1)},rowIndex:e.rowIndex,field:e.field},a().createElement(S.ScrollSyncPane,{innerRef:f,group:"horizontal"},a().createElement("div",{className:c.content},0===e.fieldIndex&&a().createElement(ue,{rowIndex:e.rowIndex,value:t}),w&&O&&a().createElement(a().Fragment,null,b),p===v.labels&&O&&a().createElement(a().Fragment,null,b),p===v.labels&&!O&&a().createElement(fe,{value:t}),w&&!O&&a().createElement(fe,{value:t}),p===v.text&&a().createElement(fe,{value:t}),h&&a().createElement(me,{scrollerRef:f}))))},Se=e=>({content:s.css` + white-space: nowrap; + overflow-x: auto; + -ms-overflow-style: none; /* IE and Edge */ + scrollbar-width: none; /* Firefox */ + padding-right: 30px; + display: flex; + align-items: flex-start; + height: 100%; + &::-webkit-scrollbar { + display: none; /* Chrome, Safari and Opera */ + } + + &:after { + pointer-events: none; + content: ''; + width: 100%; + height: 100%; + position: absolute; + left: 0; + top: 0; + // Fade out text in last 10px to background color to add affordance to horiziontal scroll + background: linear-gradient(to right, transparent calc(100% - 10px), ${e.colors.background.primary}); + } + `});function we(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Oe(e){var t=function(e){if("object"!==xe(e)||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!==xe(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===xe(t)?t:String(t)}function xe(e){return e&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}const Ee=e=>{const{setHeaderMenuActive:t,isHeaderMenuActive:n}=j(),{logsFrame:i}=re(),l=(0,r.useRef)(null),c=(f=(0,E.useTheme2)(),b=0===e.fieldIndex,S=e.field.name===(0,o.Il)(i),{logLineButton:(0,s.css)({marginLeft:"5px"}),tableHeaderMenu:(0,s.css)({label:"tableHeaderMenu",width:"100%",minWidth:"250px",height:"100%",maxHeight:"400px",backgroundColor:f.colors.background.primary,border:`1px solid ${f.colors.border.weak}`,padding:f.spacing(2),margin:f.spacing(1,0),boxShadow:f.shadows.z3,borderRadius:f.shape.radius.default}),leftAlign:(0,s.css)({label:"left-align",display:"flex",width:"calc(100% - 20px)"}),clearButton:(0,s.css)({marginLeft:"5px"}),rightAlign:(0,s.css)({label:"right-align",display:"flex",marginRight:"5px"}),wrapper:(0,s.css)({label:"wrapper",display:"flex",marginLeft:b?"56px":"6px",width:S?"calc(100% + 6px)":"100%",borderRight:`1px solid ${f.colors.border.weak}`,marginRight:"-6px"}),defaultContentWrapper:(0,s.css)({borderLeft:b?`1px solid ${f.colors.border.weak}`:"none",marginLeft:b?"-6px":0,paddingLeft:b?"12px":0,display:"flex"})}),{columnWidthMap:u,setColumnWidthMap:d,setBodyState:p,bodyState:g}=y(),h=e.field.name===(0,o.Il)(i),m=()=>{p(g===v.text?v.labels:v.text)};var f,b,S;return a().createElement("span",{className:c.wrapper},a().createElement("span",{className:c.leftAlign},a().createElement("span",{className:c.defaultContentWrapper},e.defaultContent),u&&d&&void 0!==(null==u?void 0:u[e.field.name])&&a().createElement(E.IconButton,{tooltip:"Reset column width",tooltipPlacement:"top",className:c.clearButton,"aria-label":"Reset column width",name:"x",onClick:()=>{const t=function(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}(t,[n].map(Oe));null==d||d(a)}}),h&&a().createElement(a().Fragment,null,g===v.text?a().createElement(E.IconButton,{tooltipPlacement:"top",tooltip:"Show log labels","aria-label":"Show log labels",onClick:m,className:c.logLineButton,name:"brackets-curly",size:"md"}):a().createElement(E.IconButton,{tooltipPlacement:"top",tooltip:"Show log text","aria-label":"Show log text",onClick:m,className:c.logLineButton,name:"text-fields",size:"md"}))),a().createElement("span",{className:c.rightAlign},a().createElement(E.IconButton,{tooltip:`Show ${e.field.name} menu`,tooltipPlacement:"top",ref:l,"aria-label":`Show ${e.field.name} menu`,onClick:e=>{t(!n)},name:"ellipsis-v"})),l.current&&a().createElement(E.Popover,{show:n,content:a().createElement(E.ClickOutsideWrapper,{onClick:()=>t(!1),useCapture:!0},a().createElement("div",{className:c.tableHeaderMenu},e.children)),referenceElement:l.current}))};function Ce(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ke(e){const{setHeaderMenuActive:t}=j(),{columns:n,setColumns:i,bodyState:l,setBodyState:c}=y(),{logsFrame:u}=re(),d=Fe(),p=(0,r.useCallback)((e=>{const t=function(e){for(var t=1;t{const r=t[n].index,a=t[e.name].index;return t[n].active&&a&&r&&r>a})).map((e=>t[e])).forEach((e=>{void 0!==e.index&&e.index--})),t[e.name].active=!1,t[e.name].index=void 0,i(t)}),[n,i]),g=e.headerProps.field.name===(0,o.Il)(u);return a().createElement(Ee,e.headerProps,a().createElement("div",{className:d.linkWrap},a().createElement("a",{className:d.link,onClick:()=>{e.openColumnManagementDrawer(),t(!1)}},a().createElement(E.Icon,{className:d.icon,name:"columns",size:"md"}),"Manage columns")),a().createElement("div",{className:d.linkWrap},a().createElement("a",{className:d.link,onClick:()=>p(e.headerProps.field)},a().createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 17 16",width:"17",height:"16",className:"css-q2u0ig-Icon"},a().createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M1.73446 1.33301H12.2345C12.3892 1.33301 12.5375 1.40325 12.6469 1.52827C12.7563 1.65329 12.8178 1.82286 12.8178 1.99967V4.74967C12.8178 5.07184 12.5566 5.33301 12.2345 5.33301C11.9123 5.33301 11.6511 5.07184 11.6511 4.74967V2.66634H7.56779V13.333H11.6511V10.9163C11.6511 10.5942 11.9123 10.333 12.2345 10.333C12.5566 10.333 12.8178 10.5942 12.8178 10.9163V13.9997C12.8178 14.1765 12.7563 14.3461 12.6469 14.4711C12.5375 14.5961 12.3892 14.6663 12.2345 14.6663H1.73446C1.57975 14.6663 1.43137 14.5961 1.32198 14.4711C1.21258 14.3461 1.15112 14.1765 1.15112 13.9997V1.99967C1.15112 1.82286 1.21258 1.65329 1.32198 1.52827C1.43137 1.40325 1.57975 1.33301 1.73446 1.33301ZM2.31779 13.333H6.40112V2.66634H2.31779V13.333Z",fill:"#CCCCDC",fillOpacity:"1"}),a().createElement("path",{d:"M15.9893 10.6315C15.9498 10.7263 15.8919 10.8123 15.819 10.8846C15.7467 10.9575 15.6607 11.0154 15.5659 11.0549C15.4712 11.0943 15.3695 11.1147 15.2668 11.1147C15.1641 11.1147 15.0625 11.0943 14.9677 11.0549C14.8729 11.0154 14.7869 10.9575 14.7146 10.8846L12.9335 9.09573L11.1524 10.8846C11.0801 10.9575 10.9941 11.0154 10.8993 11.0549C10.8045 11.0943 10.7028 11.1147 10.6002 11.1147C10.4975 11.1147 10.3958 11.0943 10.301 11.0549C10.2063 11.0154 10.1202 10.9575 10.0479 10.8846C9.97504 10.8123 9.91717 10.7263 9.87769 10.6315C9.8382 10.5367 9.81787 10.4351 9.81787 10.3324C9.81787 10.2297 9.8382 10.1281 9.87769 10.0333C9.91717 9.9385 9.97504 9.85248 10.0479 9.78017L11.8368 7.99906L10.0479 6.21795C9.90148 6.07149 9.8192 5.87285 9.8192 5.66573C9.8192 5.4586 9.90148 5.25996 10.0479 5.1135C10.1944 4.96705 10.393 4.88477 10.6002 4.88477C10.8073 4.88477 11.0059 4.96705 11.1524 5.1135L12.9335 6.90239L14.7146 5.1135C14.8611 4.96705 15.0597 4.88477 15.2668 4.88477C15.4739 4.88477 15.6726 4.96705 15.819 5.1135C15.9655 5.25996 16.0478 5.4586 16.0478 5.66573C16.0478 5.87285 15.9655 6.07149 15.819 6.21795L14.0302 7.99906L15.819 9.78017C15.8919 9.85248 15.9498 9.9385 15.9893 10.0333C16.0288 10.1281 16.0491 10.2297 16.0491 10.3324C16.0491 10.4351 16.0288 10.5367 15.9893 10.6315Z",fill:"#CCCCDC",fillOpacity:"1"})),"Remove column")),e.slideLeft&&a().createElement("div",{className:d.linkWrap},a().createElement("a",{className:d.link,onClick:()=>{var t;return null===(t=e.slideLeft)||void 0===t?void 0:t.call(e,n)}},a().createElement(E.Icon,{className:(0,s.cx)(d.icon,d.reverse),name:"arrow-from-right",size:"md"}),"Move left")),e.slideRight&&a().createElement("div",{className:d.linkWrap},a().createElement("a",{className:d.link,onClick:()=>{var t;return null===(t=e.slideRight)||void 0===t?void 0:t.call(e,n)}},a().createElement(E.Icon,{className:d.icon,name:"arrow-from-right",size:"md"}),"Move right")),g&&a().createElement("div",{className:d.linkWrap},a().createElement("a",{className:d.link,onClick:()=>{l===v.text?c(v.labels):c(v.text)}},l===v.text?a().createElement(E.Icon,{className:d.icon,name:"brackets-curly",size:"md"}):a().createElement(E.Icon,{className:d.icon,name:"text-fields",size:"md"}),l===v.text?"Show labels":"Show log text")),e.autoColumnWidths&&a().createElement("div",{className:d.linkWrap},a().createElement("a",{className:d.link,onClick:()=>{var t;return null===(t=e.autoColumnWidths)||void 0===t?void 0:t.call(e)}},a().createElement(E.Icon,{className:d.icon,name:"arrows-h",size:"md"}),"Reset column widths")))}const Fe=()=>({reverse:(0,s.css)({transform:"scaleX(-1)"}),link:(0,s.css)({paddingTop:"5px",paddingBottom:"5px"}),icon:(0,s.css)({marginRight:"10px"}),linkWrap:(0,s.css)({})});var Pe=n(3241);function Le(e,t,n,r,a,i,s){try{var l=e[i](s),o=l.value}catch(e){return void n(e)}l.done?t(o):Promise.resolve(o).then(r,a)}function je(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function _e(e){for(var t=1;t{const{height:t,timeZone:n,logsFrame:i,width:c,labels:u}=e,d=(0,E.useTheme2)(),p={section:(0,s.css)({position:"relative"}),tableWrap:(0,s.css)({".cellActions":{display:"none !important"}})},[g,h]=(0,r.useState)(void 0),{columns:v,visible:m,setVisible:f,setFilteredColumns:b,setColumns:x,clearSelectedLine:C,columnWidthMap:F,setColumnWidthMap:P}=y(),{selectedLine:j}=re(),[_]=(0,r.useState)(j),T=J(x),D=(0,O.getTemplateSrv)(),N=(0,r.useMemo)((()=>D.replace.bind(D)),[D]),$=(0,r.useCallback)((e=>{if(!e.length)return e;const[t]=(0,l.applyFieldOverrides)({data:[e],timeZone:n,theme:d,replaceVariables:N,fieldConfig:{defaults:{custom:{}},overrides:[]}});for(const[n,o]of t.fields.entries()){var r,s;o.type=o.type===l.FieldType.string?null!==(r=$e(o))&&void 0!==r?r:l.FieldType.string:o.type,o.config=Te(_e({},o.config),{custom:_e({inspect:!0,filterable:!0,headerComponent:t=>a().createElement(L,null,a().createElement(ke,{headerProps:Te(_e({},t),{fieldIndex:n}),openColumnManagementDrawer:()=>f(!0),slideLeft:0!==n?e=>T(e,n,n-1):void 0,slideRight:n!==e.fields.length-1?e=>T(e,n,n+1):void 0,autoColumnWidths:Object.keys(F).length>0?()=>{P({})}:void 0})),width:null!==(s=F[o.name])&&void 0!==s?s:Me(o,n,v,c,t.fields.length,i),cellOptions:Be(o,n,u,i)},o.config.custom),filterable:!0})}return t}),[n,d,u,c,N,f,F]);(0,r.useEffect)((()=>{const e=function(){var e,t=(e=function*(){const e=(t=i.raw).fields.filter((e=>{var n,r,a;const i="json.RawMessage"===(null===(n=e.typeInfo)||void 0===n?void 0:n.frame)&&"labels"===e.name&&(null==t||null===(r=t.meta)||void 0===r?void 0:r.type)!==l.DataFrameType.LogLines,s="labels"===e.name&&e.type===l.FieldType.other&&(null==t||null===(a=t.meta)||void 0===a?void 0:a.type)===l.DataFrameType.LogLines;return i||s})).flatMap((e=>[{id:"extractFields",options:{format:"json",keepTime:!1,replace:!1,source:e.name}}]));var t;const n=function(e){let t={};for(const n in e)t[n]=!0;return Object.keys(e).length>0?{id:"organize",options:{indexByName:e,includeByName:t}}:null}(function(e){let t={};return Object.keys(e).filter((t=>e[t].active)).forEach((n=>{const r=e[n].index;void 0!==r&&(t[n]=r)})),t}(v));if(n)e.push(n);else{const t={time:i.timeField,body:i.bodyField,extraFields:i.extraFields};t&&void 0!==t.body&&void 0!==t.time&&e.push(function(e){return{id:"organize",options:{indexByName:{[e.time.name]:0,[e.body.name]:1},includeByName:{[e.body.name]:!0,[e.time.name]:!0}}}}(t))}if(e.length>0){const t=yield(0,w.lastValueFrom)((0,l.transformDataFrame)(e,[i.raw])),n=$(t[0]);h(n)}else h($(i.raw))},function(){var t=this,n=arguments;return new Promise((function(r,a){var i=e.apply(t,n);function s(e){Le(i,r,a,s,l,"next",e)}function l(e){Le(i,r,a,s,l,"throw",e)}s(void 0)}))});return function(){return t.apply(this,arguments)}}();e()}),[i.raw,i.bodyField,i.timeField,i.extraFields,$,v]),(0,r.useEffect)((()=>{_&&j&&C()}),[_,C,j]);const I=i.raw.fields.find((e=>e.name===(0,o.po)(i))),B=null==I?void 0:I.values.findIndex((e=>e===(null==_?void 0:_.id))),M=B&&-1!==B?B:void 0;return g?a().createElement("div",{"data-testid":oe.b.table.wrapper,className:p.section},m&&a().createElement(E.Drawer,{size:"sm",onClose:()=>{f(!1),b(v)}},a().createElement(Y,null)),a().createElement("div",{className:p.tableWrap},a().createElement(k,null,a().createElement(S.ScrollSync,{horizontal:!0,vertical:!1,proportional:!1},a().createElement(De,{logsFrame:i,selectedLine:M,data:g,height:t,width:c,onResize:(0,Pe.debounce)(((e,t)=>{const n=Object.keys(v).filter((e=>v[e].active)).find((t=>t===e));if(n&&t>0){const e=_e({},F);e[n]=t,P(e)}}),100)}))))):a().createElement(a().Fragment,null)};function $e(e){if(e.name){const t=e.name.toLowerCase();if("date"===t||"time"===t)return l.FieldType.time}for(let t=0;t({options:{critical:{color:"#705da0",index:0},crit:{color:"#705da0",index:1},error:{color:"#e24d42",index:2},err:{color:"#e24d42",index:3},eror:{color:"#e24d42",index:4},warning:{color:"#FF9900",index:5},warn:{color:"#FF9900",index:6},info:{color:"#7eb26d",index:7},debug:{color:"#1f78c1",index:8},trace:{color:"#6ed0e0",index:9}},type:l.MappingType.ValueToText});function Be(e,t,n,r){return e.name===(0,o.Il)(r)?{cellComponent:e=>a().createElement(ye,Te(_e({},e),{fieldIndex:t,labels:n[e.rowIndex]})),type:E.TableCellDisplayMode.Custom}:{cellComponent:e=>a().createElement(de,Te(_e({},e),{fieldIndex:t})),type:E.TableCellDisplayMode.Custom}}function Me(e,t,n,r,a,i){var s,c;const u=a<=2?r:Math.min(r/2),d=0===t?50:0;if(e.type===l.FieldType.time)return 200+d;const p=n[e.name];if(void 0===p)return;var g;const h=Math.max(null!==(g=p.maxLength)&&void 0!==g?g:0,e.name.length);return p.maxLength?Math.min(Math.max(6.5*h+95+d,90+d),u):e.name!==(0,o.Il)(i)?Math.min(Math.max(6.5*(null!==(v=null===(c=e.values)||void 0===c||null===(s=c[0])||void 0===s?void 0:s.length)&&void 0!==v?v:80)+95+d,90+d),u):void 0;var v}var Ae=n(5540);const Re=/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{3,})?(?:Z|[-+]\d{2}:?\d{2})$/,Ve=e=>{const{logsFrame:t}=re(),[n,i]=(0,r.useState)({width:0,height:0});(0,Ae.w)({ref:e.panelWrap,onResize:()=>{const t=e.panelWrap.current;t&&(n.width===t.clientWidth&&n.height===t.clientHeight||i({width:t.clientWidth,height:t.clientHeight}))}});const o={section:(0,s.css)({position:"relative"})},c=(0,l.getTimeZone)(),u=(0,r.useCallback)((t=>{const n=e.urlColumns;return(null==n?void 0:n.length)&&Object.values(n).forEach(((e,n)=>{t[e]&&(t[e].active=!0,t[e].index=n)})),t}),[e.urlColumns]);if(!t||!t.raw.length)return null;var d;const p=null!==(d=t.getLogFrameLabelsAsLabels())&&void 0!==d?d:[],g=t?t.raw.length:0;let h=function(e,t){let n={};const r=new Map,a=function(e){const t=new Map;return e.forEach((e=>{Object.keys(e).forEach((n=>{if(t.has(n)){const r=t.get(n),a=null==r?void 0:r.valueSet,i=null==r?void 0:r.maxLength;a&&!(null==a?void 0:a.has(e[n]))&&(null==a||a.add(e[n]),i&&e[n].length>i&&t.set(n,{maxLength:e[n].length,valueSet:a}))}else t.set(n,{maxLength:e[n].length,valueSet:new Set([e[n]])})}))})),t}(t),i=e?e.length:0;return(null==t?void 0:t.length)&&i&&(t.forEach((e=>{Object.keys(e).forEach((e=>{var t;const n=a.get(e);var i;const s=null!==(i=null==n||null===(t=n.valueSet)||void 0===t?void 0:t.size)&&void 0!==i?i:0;if(r.has(e)){const t=r.get(e);t&&((null==t?void 0:t.active)?r.set(e,{percentOfLinesWithLabel:t.percentOfLinesWithLabel+1,active:!0,index:t.index,cardinality:s,maxLength:null==n?void 0:n.maxLength}):r.set(e,{percentOfLinesWithLabel:t.percentOfLinesWithLabel+1,active:!1,index:void 0,cardinality:s,maxLength:null==n?void 0:n.maxLength}))}else r.set(e,{percentOfLinesWithLabel:1,active:!1,index:void 0,cardinality:s,maxLength:null==n?void 0:n.maxLength})}))})),n=Object.fromEntries(r),Object.keys(n).forEach((e=>{n[e].percentOfLinesWithLabel=We(n[e].percentOfLinesWithLabel,i)}))),n}(t.raw,p);const v={time:t.timeField,body:t.bodyField,extraFields:t.extraFields};return v&&(function(e,t,n){e.forEach((e=>{var r,a;if(!e)return;const i=null===(r=t[e.name])||void 0===r?void 0:r.active,s=null===(a=t[e.name])||void 0===a?void 0:a.index;t[e.name]=i&&void 0!==s?{percentOfLinesWithLabel:We(e.values.filter((e=>null!=e)).length,n),active:!0,index:s,cardinality:n}:{percentOfLinesWithLabel:We(e.values.filter((e=>null!=e)).length,n),active:!1,index:void 0,cardinality:n}}))}([v.time,v.body,...v.extraFields],h,g),h=u(h),function(e,t,n){var r,a,i,s,l,o,c,u,d,p;0===e.length&&((null===(i=t.body)||void 0===i?void 0:i.name)&&(n[null===(l=t.body)||void 0===l?void 0:l.name].active=!0,n[null===(o=t.body)||void 0===o?void 0:o.name].index=1),(null===(s=t.time)||void 0===s?void 0:s.name)&&(n[null===(c=t.time)||void 0===c?void 0:c.name].active=!0,n[null===(u=t.time)||void 0===u?void 0:u.name].index=0));(null===(r=t.time)||void 0===r?void 0:r.name)&&(null===(a=t.body)||void 0===a?void 0:a.name)&&(n[null===(d=t.body)||void 0===d?void 0:d.name].type="BODY_FIELD",n[null===(p=t.time)||void 0===p?void 0:p.name].type="TIME_FIELD");t.extraFields.length&&t.extraFields.forEach((e=>{var t;(null===(t=e.config.links)||void 0===t?void 0:t.length)&&(n[e.name].type="LINK_FIELD")}))}(Object.keys(h).filter((e=>h[e].active)),v,h)),a().createElement("section",{className:o.section},a().createElement(f,{setUrlTableBodyState:e.setUrlTableBodyState,logsFrame:t,initialColumns:h,setUrlColumns:e.setUrlColumns,clearSelectedLine:e.clearSelectedLine,urlTableBodyState:e.urlTableBodyState,showColumnManagementDrawer:e.showColumnManagementDrawer,isColumnManagementActive:e.isColumnManagementActive},a().createElement(Ne,{logsFrame:t,timeZone:c,height:n.height-50,width:n.width-25,labels:p})))},We=(e,t)=>Math.ceil(100*e/t);function ze(e){let t=(0,l.guessFieldTypeFromValue)(e);return"string"===t&&Re.test(e)&&(t=l.FieldType.time),t}const He=({dataFrame:e,setUrlColumns:t,urlColumns:n,addFilter:r,selectedLine:i,timeRange:s,panelWrap:l,clearSelectedLine:c,setUrlTableBodyState:u,urlTableBodyState:d,showColumnManagementDrawer:p,isColumnManagementActive:g})=>{if(!e)return null;const h=(0,o.Os)(e);return h?a().createElement(ne,{addFilter:r,selectedLine:i,timeRange:s,logsFrame:h},a().createElement(Ve,{urlTableBodyState:d,setUrlColumns:t,setUrlTableBodyState:u,urlColumns:n,panelWrap:l,clearSelectedLine:c,showColumnManagementDrawer:p,isColumnManagementActive:g})):null};var Qe=n(8760),Ke=n(558),qe=n(833),Ge=n(2254),Ue=n(7097),Je=n(7085);function Ye(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class Xe extends i.Bs{onActivate(){this.setState({menu:new Je.GD({addInvestigationsLink:!1})})}constructor(e){var t,n;super((t=function(e){for(var t=1;t{this.setState({isColumnManagementActive:e})})),this.addActivationHandler(this.onActivate.bind(this))}}Ye(Xe,"Component",(({model:e})=>{const t=(0,E.useStyles2)(Ze),n=i.jh.getAncestor(e,dt),{data:s}=i.jh.getData(e).useState(),{selectedLine:l,urlColumns:o,visualizationType:c,tableLogLineState:u}=n.useState(),{menu:d,isColumnManagementActive:p}=e.useState(),g=i.jh.getTimeRange(e),{value:h}=g.useState(),v=(0,Ge.tn)(s),m=(0,r.useRef)(null);return a().createElement("div",{className:t.panelWrapper,ref:m},a().createElement(E.PanelChrome,{loadingState:null==s?void 0:s.state,title:"Logs",menu:d?a().createElement(d.Component,{model:d}):void 0,actions:a().createElement(a().Fragment,null,a().createElement(E.Button,{onClick:()=>e.showColumnManagementDrawer(!0),variant:"secondary",size:"sm"},"Manage columns"),a().createElement(Qe.C,{vizType:c,onChange:n.setVisualizationType}))},v&&a().createElement(He,{panelWrap:m,addFilter:t=>{const r=(0,Ue.OE)(v,t.key,e);(0,Ke.XI)(t,n,r)},timeRange:h,selectedLine:l,urlColumns:null!=o?o:[],setUrlColumns:e=>{(0,qe.n)(e,n.state.urlColumns)||n.setState({urlColumns:e})},dataFrame:v,clearSelectedLine:()=>{n.state.selectedLine&&n.clearSelectedLine()},setUrlTableBodyState:e=>{n.setState({tableLogLineState:e})},urlTableBodyState:u,showColumnManagementDrawer:e.showColumnManagementDrawer,isColumnManagementActive:p})))}));const Ze=e=>({panelWrapper:(0,s.css)({width:"100%",height:"100%",label:"panel-wrapper-table","button.show-on-hover":{opacity:1,visibility:"visible",background:"none","&:hover":{background:e.colors.secondary.shade}}})});var et=n(2718),tt=n(9153),nt=n(227),rt=n(6177),at=n.n(rt),it=n(4750),st=n(4592),lt=n(8835);function ot(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class ct extends i.Bs{clearVariable(){(0,it.Rr)(this).updateFilters([],{skipPublish:!0}),this.setState({lineFilter:""})}getOperator(){if(this.state.regex&&this.state.exclusive)return ae.cK.negativeRegex;if(this.state.regex&&!this.state.exclusive)return ae.cK.regex;if(!this.state.regex&&this.state.exclusive)return ae.cK.negativeMatch;if(!this.state.regex&&!this.state.exclusive)return ae.cK.match;throw new Error("getOperator: failed to determine operation")}getFilterKey(){return this.state.caseSensitive?ae.ld.caseSensitive:ae.ld.caseInsensitive}getFilter(){return(0,it.Rr)(this).state.filters[0]}updateFilter(e,t=!0){this.updateInputState(e),t?this.updateVariableDebounced(e):this.updateVariable(e)}updateInputState(e){this.setState({lineFilter:e})}constructor(e){var t,n,r;super(function(e){for(var t=1;t{const e=this.getFilter();if(e)return this.setState({lineFilter:e.value,regex:e.operator===ae.cK.regex||e.operator===ae.cK.negativeRegex,caseSensitive:e.key===ae.ld.caseSensitive,exclusive:e.operator===ae.cK.negativeMatch||e.operator===ae.cK.negativeRegex}),()=>{this.clearFilter()}})),ot(this,"clearFilter",(()=>{this.updateVariableDebounced.cancel(),this.updateFilter("",!1)})),ot(this,"onToggleExclusive",(e=>{(0,nt.Bq)(e),this.setState({exclusive:e}),this.updateFilter(this.state.lineFilter,!1)})),ot(this,"onSubmitLineFilter",(()=>{(0,lt.bN)(),this.updateFilter(this.state.lineFilter,!1),this.updateVariableDebounced.flush();const e=(0,it.Gk)(this),t=e.state.filters,n=this.getFilter();e.updateFilters([...t,n]),this.clearVariable()})),ot(this,"handleChange",(e=>{this.updateInputState(e.target.value)})),ot(this,"handleEnter",(e=>{"Enter"===e.key&&this.state.lineFilter&&this.onSubmitLineFilter()})),ot(this,"onCaseSensitiveToggle",(e=>{const t=e===ae.ld.caseSensitive;this.setState({caseSensitive:t}),(0,nt.Xo)(t),this.updateFilter(this.state.lineFilter,!1)})),ot(this,"onRegexToggle",(e=>{const t="regex"===e;this.setState({regex:t}),(0,nt.GL)(t),this.updateFilter(this.state.lineFilter,!1)})),ot(this,"updateVariableDebounced",at()((e=>{this.updateVariable(e)}),1e3)),ot(this,"updateVariable",(e=>{this.updateVariableDebounced.flush();const t=(0,it.Rr)(this),n=(0,it.Gk)(this),r={key:this.getFilterKey(),keyLabel:n.state.filters.length.toString(),operator:this.getOperator(),value:e};t.updateFilters([r]),(0,et.EE)(et.NO.service_details,et.ir.service_details.search_string_in_logs_changed,{searchQueryLength:e.length,containsLevel:e.toLowerCase().includes("level"),operator:r.operator,caseSensitive:r.key})})),this.addActivationHandler(this.onActivate)}}function ut(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}ot(ct,"Component",(function({model:e}){const{lineFilter:t,caseSensitive:n,regex:a,exclusive:i}=e.useState(),[s,l]=(0,r.useState)(!1);return(0,st._)({exclusive:i,lineFilter:t,caseSensitive:n,regex:a,onSubmitLineFilter:e.onSubmitLineFilter,handleEnter:e.handleEnter,onInputChange:e.handleChange,updateFilter:e.updateFilter,onCaseSensitiveToggle:e.onCaseSensitiveToggle,onRegexToggle:e.onRegexToggle,setExclusive:e.onToggleExclusive,onClearLineFilter:e.clearFilter,focus:s,setFocus:l,type:"editor"})}));class dt extends i.Bs{getUrlState(){var e;const t=null!==(e=this.state.urlColumns)&&void 0!==e?e:[],n=this.state.selectedLine,r=this.state.visualizationType;var a,i;const s=null!==(i=null!==(a=this.state.displayedFields)&&void 0!==a?a:(0,nt.N$)(this))&&void 0!==i?i:[];return{urlColumns:JSON.stringify(t),selectedLine:JSON.stringify(n),visualizationType:JSON.stringify(r),displayedFields:JSON.stringify(s),tableLogLineState:JSON.stringify(this.state.tableLogLineState)}}updateFromUrl(e){const t={};try{if("string"==typeof e.urlColumns){const n=(0,d.aJ)(JSON.parse(e.urlColumns));n!==this.state.urlColumns&&(t.urlColumns=n)}if("string"==typeof e.selectedLine){const n=(0,d.lb)(JSON.parse(e.selectedLine));if(n){const e=n;e!==this.state.selectedLine&&(t.selectedLine=e)}}if("string"==typeof e.visualizationType){const n=(0,d.v_)(JSON.parse(e.visualizationType));n&&n!==this.state.visualizationType&&(t.visualizationType=n)}if("string"==typeof e.displayedFields){const n=(0,d.aJ)(JSON.parse(e.displayedFields));n&&n.length&&(t.displayedFields=n)}if("string"==typeof e.tableLogLineState){const n=JSON.parse(e.tableLogLineState);n!==v.labels&&n!==v.text||(t.tableLogLineState=n)}}catch(e){c.v.error(e,{msg:"LogsListScene: updateFromUrl unexpected error"})}Object.keys(t).length&&this.setState(t)}clearSelectedLine(){this.setState({selectedLine:void 0})}onActivate(){const e=new URLSearchParams(O.locationService.getLocation().search);this.setStateFromUrl(e),this.state.panel||this.updateLogsPanel(),this._subs.add(this.subscribeToState(((e,t)=>{e.visualizationType!==t.visualizationType&&this.updateLogsPanel()})))}setStateFromUrl(e){const t=e.get("selectedLine"),n=e.get("urlColumns"),r=e.get("visualizationType");var a;const i=null!==(a=e.get("displayedFields"))&&void 0!==a?a:JSON.stringify((0,nt.N$)(this)),s=e.get("tableLogLineState");this.updateFromUrl({selectedLine:t,urlColumns:n,vizType:r,displayedFields:i,tableLogLineState:s})}getVizPanel(){return this.logsPanelScene=new tt.o({}),new i.G1({direction:"column",children:"logs"===this.state.visualizationType?[new i.G1({children:[new i.vA({body:new ct({lineFilter:this.state.lineFilter}),xSizing:"fill"})]}),new i.vA({height:"calc(100vh - 220px)",body:this.logsPanelScene})]:[new i.vA({body:new ct({lineFilter:this.state.lineFilter}),xSizing:"fill"}),new i.vA({height:"calc(100vh - 220px)",body:new Xe({})})]})}constructor(e){var t,n;super((t=function(e){for(var t=1;t{this.setState({displayedFields:[]}),this.logsPanelScene&&this.logsPanelScene.clearDisplayedFields()})),ut(this,"setLogsVizOption",((e={})=>{this.logsPanelScene&&this.logsPanelScene.setLogsVizOption(e)})),ut(this,"updateLogsPanel",(()=>{if(this.setState({panel:this.getVizPanel()}),this.state.panel){const e=i.jh.findDescendents(this.state.panel,ct);if(e.length){const t=e[0];this._subs.add(t.subscribeToState(((e,t)=>{e.lineFilter!==t.lineFilter&&this.setState({lineFilter:e.lineFilter})})))}}})),ut(this,"setVisualizationType",(e=>{this.setState({visualizationType:e}),(0,et.EE)(et.NO.service_details,et.ir.service_details.logs_visualization_toggle,{visualisationType:e}),(0,nt.o5)(e)})),this.addActivationHandler(this.onActivate.bind(this))}}ut(dt,"Component",(({model:e})=>{const{panel:t}=e.useState();if(t)return a().createElement("div",{className:pt.panelWrapper},a().createElement(t.Component,{model:t}))}));const pt={panelWrapper:(0,s.css)({'section > div[class$="panel-content"]':(0,s.css)({contain:"none",overflow:"auto"})})}},9153:(e,t,n)=>{n.d(t,{o:()=>D});var r=n(2672),a=n(7781),i=n(227),s=n(5959),l=n.n(s),o=n(1254),c=n(2007),u=n(558),d=n(7097),p=n(3143),g=n(2718),h=n(4750),v=n(8315);const m=({onClick:e})=>{const[t,n]=(0,s.useState)(!1);(0,s.useEffect)((()=>{let e;return t&&(e=setTimeout((()=>{n(!1)}),2e3)),()=>{clearTimeout(e)}}),[t]);const r=(0,s.useCallback)(((t,r)=>{e(t,r),n(!0)}),[e]);return l().createElement(c.IconButton,{"aria-label":t?"Copied":"Copy link to log line",tooltip:t?"Copied":"Copy link to log line",tooltipPlacement:"top",variant:t?"primary":"secondary",size:"md",name:t?"check":"share-alt",onClick:r})};var f=n(9254),b=n(3690),y=n(7085),S=n(2254),w=n(4793),O=n(8531),x=n(4011),E=n(2871),C=n(9829),k=n(4482);const F=({clearFilters:e,error:t})=>l().createElement(k.R,null,l().createElement("div",null,l().createElement("p",null,t),l().createElement(c.Button,{variant:"secondary",onClick:e},"Clear filters")));var P=n(1863),L=n(9186);function j(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function _(e){for(var t=1;t{var n,r,i,s,l,o;(null===(r=e.$data)||void 0===r||null===(n=r.state.data)||void 0===n?void 0:n.state)===a.LoadingState.Error?this.handleLogsError(null===(o=e.$data)||void 0===o?void 0:o.state.data):(null===(s=e.$data)||void 0===s||null===(i=s.state.data)||void 0===i?void 0:i.state)===a.LoadingState.Done&&(0,L.y2)(null===(l=e.$data)||void 0===l?void 0:l.state.data.series)?this.handleNoData():this.state.error&&this.clearLogsError(),e.logsCount!==t.logsCount&&(this.state.body?this.state.body.setState({title:this.getTitle(e.logsCount)}):this.setState({body:this.getLogsPanel({wrapLogMessage:this.state.wrapLogMessage,prettifyLogMessage:this.state.wrapLogMessage,sortOrder:this.state.sortOrder})}))})))}handleLogsError(e){var t;const n=(null===(t=e.errors)||void 0===t?void 0:t.length)?e.errors[0]:e.error,r=null==n?void 0:n.message;var a,i;r&&E.v.error(new Error("Logs Panel error"),{msg:r,status:null!==(a=n.statusText)&&void 0!==a?a:"N/A",type:null!==(i=n.type)&&void 0!==i?i:"N/A"});let s="Unexpected error response. Please review your filters or try a different time range.";(null==r?void 0:r.includes("parse error"))?s="Logs could not be retrieved due to invalid filter parameters. Please review your filters and try again.":(null==r?void 0:r.includes("response larger than the max message size"))&&(s="The response is too large to process. Try narrowing your search or using filters to reduce the data size."),this.showLogsError(s)}handleNoData(){this.showLogsError("No logs match your search. Please review your filters or try a different time range.")}showLogsError(e){var t;const n=null!==(t=this.state.logsVolumeCollapsedByError)&&void 0!==t?t:!(0,i.Rf)("collapsed");var a;(this.setState({error:e,logsVolumeCollapsedByError:n}),n)&&(null===(a=r.jh.findByKeyAndType(this,b.b,b._).state.panel)||void 0===a||a.setState({collapsed:!0}))}clearLogsError(){var e;this.state.logsVolumeCollapsedByError&&(null===(e=r.jh.findByKeyAndType(this,b.b,b._).state.panel)||void 0===e||e.setState({collapsed:!1}));this.setState({error:void 0,logsVolumeCollapsedByError:void 0})}setLogsVizOption(e={}){if(this.state.body){if("sortOrder"in e&&e.sortOrder!==this.state.body.state.options.sortOrder){const e=r.jh.getData(this),t=e instanceof r.dt?e:r.jh.findDescendents(e,r.dt)[0];t&&t.runQueries()}this.state.body.onOptionsChange(e)}}getParentScene(){return r.jh.getAncestor(this,o.i)}getTitle(e){var t;const n=(0,a.getValueFormat)("short"),r=void 0!==e?n(e,0):void 0;return void 0!==r?`Logs (${r.text}${null===(t=r.suffix)||void 0===t?void 0:t.trim()})`:"Logs"}getLogsPanel(e){const t=this.getParentScene(),n=t.state.visualizationType,a=r.jh.getAncestor(this,S.Mn);var s,o,c;return r.d0.logs().setTitle(this.getTitle(a.state.logsCount)).setOption("showTime",!0).setOption("onClickFilterLabel",this.handleLabelFilterClick).setOption("onClickFilterOutLabel",this.handleLabelFilterOutClick).setOption("isFilterLabelActive",this.handleIsFilterLabelActive).setOption("onClickFilterString",this.handleFilterStringClick).setOption("onClickFilterOutString",this.handleFilterOutStringClick).setOption("onClickShowField",this.onClickShowField).setOption("onClickHideField",this.onClickHideField).setOption("displayedFields",t.state.displayedFields).setOption("sortOrder",null!==(s=e.sortOrder)&&void 0!==s?s:(0,f.zQ)()).setOption("wrapLogMessage",null!==(o=e.wrapLogMessage)&&void 0!==o?o:Boolean((0,i.YM)("wrapLogMessage",!1))).setOption("prettifyLogMessage",null!==(c=e.prettifyLogMessage)&&void 0!==c?c:Boolean((0,i.YM)("wrapLogMessage",!1))).setMenu(new y.GD({investigationOptions:{type:"logs",getLabelName:()=>`Logs: ${(0,C.Mq)(a)}`}})).setOption("showLogContextToggle",!0).setOption("enableInfiniteScrolling",!0).setOption("onNewLogsReceived",this.updateVisibleRange).setOption("logRowMenuIconsAfter",[l().createElement(m,{onClick:this.handleShareLogLineClick,key:0})]).setHeaderActions(new f.ZB({visualizationType:n,onChangeVisualizationType:t.setVisualizationType})).build()}handleLabelFilter(e,t,n,r){const a=(0,d.OE)(n,e,this);(0,u.Qt)(e,t,r,this,a),(0,g.EE)(g.NO.service_details,g.ir.service_details.logs_detail_filter_applied,{filterType:a,key:e,action:r})}constructor(e){super(_({sortOrder:(0,f.zQ)(),wrapLogMessage:Boolean((0,i.YM)("wrapLogMessage",!1)),error:void 0},e)),j(this,"_urlSync",new r.So(this,{keys:["sortOrder","wrapLogMessage"]})),j(this,"onClickShowField",(e=>{const t=this.getParentScene();if(-1===t.state.displayedFields.indexOf(e)&&this.state.body){const n=[...t.state.displayedFields,e];this.setLogsVizOption({displayedFields:n}),t.setState({displayedFields:n}),(0,i.ZF)(this,t.state.displayedFields),(0,g.EE)(g.NO.service_details,g.ir.service_details.logs_toggle_displayed_field)}})),j(this,"onClickHideField",(e=>{const t=this.getParentScene();if(t.state.displayedFields.indexOf(e)>=0&&this.state.body){const n=t.state.displayedFields.filter((t=>e!==t));this.setLogsVizOption({displayedFields:n}),t.setState({displayedFields:n}),(0,i.ZF)(this,t.state.displayedFields),(0,g.EE)(g.NO.service_details,g.ir.service_details.logs_toggle_displayed_field)}})),j(this,"clearDisplayedFields",(()=>{this.state.body&&(this.setLogsVizOption({displayedFields:[]}),(0,i.ZF)(this,[]))})),j(this,"updateVisibleRange",(e=>{var t,n;const a=r.jh.getAncestor(this,S.Mn);a.setState({logsCount:e[0].length}),(null===(n=a.state.$data)||void 0===n||null===(t=n.state.data)||void 0===t?void 0:t.series)&&a.state.$data.setState(T(_({},a.state.$data.state),{data:T(_({},a.state.$data.state.data),{series:e})})),r.jh.findByKeyAndType(this,b.b,b._).updateVisibleRange(e)})),j(this,"handleShareLogLineClick",((e,t)=>{if((null==t?void 0:t.rowId)&&this.state.body){const e=this.getParentScene(),n=(0,v.Ki)(t);(0,v.Dk)((0,v.gW)("panelState",{logs:{id:t.uid,displayedFields:e.state.displayedFields}},n))}})),j(this,"handleLabelFilterClick",((e,t,n)=>{this.handleLabelFilter(e,t,n,"toggle")})),j(this,"handleLabelFilterOutClick",((e,t,n)=>{this.handleLabelFilter(e,t,n,"exclude")})),j(this,"handleIsFilterLabelActive",((e,t)=>{const n=(0,h.bY)(p.MB,this),r=(0,h.bY)(p.mB,this),a=(0,h.bY)(p._Y,this),i=(0,h.bY)(p._P,this),s=n=>n&&n.state.filters.findIndex((n=>"="===n.operator&&n.key===e&&n.value===t))>=0;return s(n)||(n=>{if(n){const r=n.state.filters.find((t=>"="===t.operator&&t.key===e));if(r)return(0,h.bu)(r,e).value===t}return!1})(r)||s(a)||s(i)})),j(this,"handleFilterOutStringClick",(e=>{const t=(0,h.Gk)(this);t&&(t.setState({filters:[...t.state.filters,{operator:w.cK.negativeMatch,value:e,key:w.ld.caseSensitive,keyLabel:t.state.filters.length.toString()}]}),(0,g.EE)(g.NO.service_details,g.ir.service_details.logs_popover_line_filter,{selectionLength:e.length}))})),j(this,"handleFilterStringClick",(e=>{const t=(0,h.Gk)(this);t&&(t.setState({filters:[...t.state.filters,{operator:w.cK.match,value:e,key:w.ld.caseSensitive,keyLabel:t.state.filters.length.toString()}]}),(0,g.EE)(g.NO.service_details,g.ir.service_details.logs_popover_line_filter,{selectionLength:e.length}))})),this.addActivationHandler(this.onActivate.bind(this))}}j(D,"Component",(({model:e})=>{const{body:t,error:n}=e.useState(),r=(0,c.useStyles2)(y.K_);return t?l().createElement("span",{className:r.panelWrapper},!n&&l().createElement(t.Component,{model:t}),n&&l().createElement(F,{error:n,clearFilters:()=>(0,P.rA)(t)})):l().createElement(c.LoadingPlaceholder,{text:"Loading..."})}))},3690:(e,t,n)=>{n.d(t,{_:()=>D,b:()=>T});var r,a,i,s=n(5959),l=n.n(s),o=n(2672),c=n(2007),u=n(5183),d=n(7918),p=n(3143),g=n(2718),h=n(1293),v=n(1383),m=n(7781),f=n(4750),b=n(833),y=n(7085),S=n(2254),w=n(9186),O=n(227),x=n(8538),E=n(8531),C=n(9829);class k extends o.Bs{}i=function({model:e}){const{component:t,isLoading:n}=(0,E.usePluginComponent)("grafana-adaptivelogs-app/temporary-exemptions/v1"),r=(0,f.bY)(p.MB,e),{filters:a}=r.useState(),i=a.map((({key:e,operator:t,value:n})=>({key:e,operator:t,value:n}))),s=(0,C.U4)(e);return n||!t?null:l().createElement(t,{dataSourceUid:s,streamSelector:i,contextHints:["explorelogs","logvolumepanel","headeraction"]})},(a="Component")in(r=k)?Object.defineProperty(r,a,{value:i,enumerable:!0,configurable:!0,writable:!0}):r[a]=i;var F=n(558),P=n(3626);function L(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function j(e){for(var t=1;t{(0,b.B)(e.filters,t.filters)||this.setState({panel:this.getVizPanel()})}))),this._subs.add(t.subscribeToState(((e,t)=>{(0,b.B)(e.filters,t.filters)||this.setState({panel:this.getVizPanel()})}))),this._subs.add(this.subscribeToEvent(F.Of,(e=>{if(e.key===p.e4){const e=o.jh.findObject(this,(e=>e instanceof P.qV));if(e instanceof P.qV){const e=(0,f.iw)(this);e.setState({filters:e.state.filters})}}})))}getTitle(e,t){var n,r,a;const i=null!==(a=null===(n=o.jh.getAncestor(this,x.P).state.ds)||void 0===n?void 0:n.maxLines)&&void 0!==a?a:d.by,s=(0,m.getValueFormat)("short"),l=void 0!==e?s(e,0):void 0;if(void 0===e&&void 0!==t&&tthis.extendTimeSeriesLegendBus(t)}),this._subs.add(a.subscribeToState(((e,t)=>{e.collapsed!==t.collapsed&&(this.updateContainerHeight(a),(0,O.RN)("collapsed",e.collapsed?"true":void 0))}))),this._subs.add(null===(e=a.state.$data)||void 0===e?void 0:e.subscribeToState((e=>{var t,r,i,s,l,o;(null===(t=e.data)||void 0===t?void 0:t.state)===m.LoadingState.Done&&((null===(i=n.state.$data)||void 0===i||null===(r=i.state.data)||void 0===r?void 0:r.state)!==m.LoadingState.Done||(null===(s=e.data.annotations)||void 0===s?void 0:s.length)?this.displayVisibleRange():this.updateVisibleRange(null===(o=n.state.$data)||void 0===o||null===(l=o.state.data)||void 0===l?void 0:l.series),(0,u.C6)(a,e.data.series,this))}))),this._subs.add(null===(t=n.state.$data)||void 0===t?void 0:t.subscribeToState((e=>{var t;(null===(t=e.data)||void 0===t?void 0:t.state)===m.LoadingState.Done&&this.updateVisibleRange(e.data.series)}))),this._subs.add(n.subscribeToState(((e,t)=>{e.totalLogsCount===t.totalLogsCount&&void 0===e.logsCount||(this.state.panel?this.state.panel.setState({title:this.getTitle(e.totalLogsCount,e.logsCount)}):this.setState({panel:this.getVizPanel()}))}))),a}updateContainerHeight(e){const t=o.jh.getAncestor(e,o.G1),n=e.state.collapsed?35:Math.max(Math.round(.2*window.innerHeight),100);t.setState({minHeight:n,height:n,maxHeight:n})}updateVisibleRange(e=[]){this.updatedLogSeries=e,this.displayVisibleRange()}displayVisibleRange(){var e,t;const n=this.state.panel;if(!n||!(null===(e=n.state.$data)||void 0===e?void 0:e.state.data)||(null===(t=n.state.$data)||void 0===t?void 0:t.state.data.state)!==m.LoadingState.Done||!this.updatedLogSeries)return;const r=(0,w.z5)(this.updatedLogSeries);this.updatedLogSeries=null,n.state.$data.setState({data:_(j({},n.state.$data.state.data),{annotations:[(0,w.hy)(r.start,r.end)]})})}constructor(e){super(_(j({},e),{key:T})),L(this,"updatedLogSeries",null),L(this,"extendTimeSeriesLegendBus",(e=>{const t=(0,f.iw)(this);this._subs.add(null==t?void 0:t.subscribeToState((()=>{var e,t,n,r;const a=this.state.panel;(null==a||null===(t=a.state.$data)||void 0===t||null===(e=t.state.data)||void 0===e?void 0:e.series)&&(0,u.C6)(a,null==a||null===(r=a.state.$data)||void 0===r||null===(n=r.state.data)||void 0===n?void 0:n.series,this)}))),e.onToggleSeriesVisibility=(e,t)=>{const n=(0,v.PE)(e,this);this.publishEvent(new F.Of("legend","include",p.e4,e),!0),(0,g.EE)(g.NO.service_details,g.ir.service_details.level_in_logs_volume_clicked,{level:e,action:n})}})),this.addActivationHandler(this.onActivate.bind(this))}}L(D,"Component",(({model:e})=>{const{panel:t}=e.useState();if(!t)return;const n=(0,c.useStyles2)(y.K_);return l().createElement("span",{className:n.panelWrapper},l().createElement(t.Component,{model:t}))}))},2254:(e,t,n)=>{n.d(t,{AA:()=>Ke,DS:()=>Qe,Mn:()=>Ze,rD:()=>Ue,UO:()=>Je,nU:()=>Ye,dB:()=>Xe,TG:()=>Ge,tn:()=>qe});var r=n(5959),a=n.n(r),i=n(7781),s=n(2672),l=n(2007),o=n(5183),c=n(7918),u=n(3143),d=n(6949),p=n(8835),g=n(833),h=n(892),v=n(2718),m=n(6089),f=n(1254),b=n(1220),y=n(8810),S=n(4105),w=n(9570),O=n(8538),x=n(2871);function E(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function C(e){var t,n;const{indexScene:r,pattern:a,type:i}=function(e){for(var t=1;te.pattern!==a));var u;const d=null!==(u=null===(t=c.filter((e=>"include"===e.type)))||void 0===t?void 0:t.length)&&void 0!==u?u:0;var g;const h=null!==(g=null===(n=c.filter((e=>"exclude"===e.type)))||void 0===n?void 0:n.length)&&void 0!==g?g:0;(0,v.EE)(v.NO.service_details,v.ir.service_details.pattern_selected,{type:i,includePatternsLength:d+("include"===i?1:0),excludePatternsLength:h+("exclude"===i?1:0)}),"undo"===i?l.setState({patterns:c}):l.setState({patterns:[...c,{pattern:a,type:i}]})}var k=n(5218),F=n(8531),P=n(9829);const L=e=>({logsStatsRow:(0,m.css)({margin:`${e.spacing(1.15)}px 0`}),logsStatsRowActive:(0,m.css)({color:e.colors.primary.text,position:"relative"}),logsStatsRowLabel:(0,m.css)({display:"flex",marginBottom:"1px"}),logsStatsRowValue:(0,m.css)({flex:1,textOverflow:"ellipsis",overflow:"hidden"}),logsStatsRowCount:(0,m.css)({textAlign:"right",marginLeft:e.spacing(.75)}),logsStatsRowPercent:(0,m.css)({textAlign:"right",marginLeft:e.spacing(.75),width:e.spacing(4.5)}),logsStatsRowBar:(0,m.css)({height:e.spacing(.5),overflow:"hidden",background:e.colors.text.disabled}),logsStatsRowInnerBar:(0,m.css)({height:e.spacing(.5),overflow:"hidden",background:e.colors.primary.main})}),j=({active:e,count:t,proportion:n,value:r})=>{const i=(0,l.useStyles2)(L),s=`${Math.round(100*n)}%`,o={width:s};return a().createElement("div",{className:e?`${i.logsStatsRow} ${i.logsStatsRowActive}`:i.logsStatsRow},a().createElement("div",{className:i.logsStatsRowLabel},a().createElement("div",{className:i.logsStatsRowValue,title:r},r),a().createElement("div",{className:i.logsStatsRowCount},t),a().createElement("div",{className:i.logsStatsRowPercent},s)),a().createElement("div",{className:i.logsStatsRowBar},a().createElement("div",{className:i.logsStatsRowInnerBar,style:o})))};function _(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const T=e=>({logsStats:(0,m.css)({background:"inherit",color:e.colors.text.primary,wordBreak:"break-all",width:"fit-content",maxHeight:"40vh",overflowY:"auto",marginTop:e.spacing(1)}),logsStatsHeader:(0,m.css)({borderBottom:`1px solid ${e.colors.border.medium}`,display:"flex"}),logsStatsTitle:(0,m.css)({fontWeight:e.typography.fontWeightMedium,paddingRight:e.spacing(2),display:"inline-block",whiteSpace:"nowrap",textOverflow:"ellipsis",flexGrow:1}),logsStatsClose:(0,m.css)({cursor:"pointer"}),logsStatsBody:(0,m.css)({padding:"5px 0px"})}),D=e=>{const t=(0,l.useStyles2)(T),{stats:n,value:r}=e,i=n.slice(0,10);let s=i.find((e=>e.value===r)),o=n.slice(10);!s&&(s=o.find((e=>e.value===r)),o=o.filter((e=>e.value!==r)));const c=o.reduce(((e,t)=>e+t.count),0),u=i.reduce(((e,t)=>e+t.count),0)+c;let d=[...i];return c>0&&d.push({value:"Other",count:c,proportion:c/u}),d.sort(((e,t)=>t.count-e.count)),a().createElement("div",{className:t.logsStats},a().createElement("div",{className:t.logsStatsHeader},a().createElement("div",{className:t.logsStatsTitle},"From a sample of ",u," rows found")),a().createElement("div",{className:t.logsStatsBody},d.map((e=>{return a().createElement(j,(t=function(e){for(var t=1;t{const o=function(e){const t=[];let n=e.indexOf("<_>");for(;-1!==n;)t.push(n),n=e.indexOf("<_>",n+1);return t}(t),[u,d]=(0,r.useState)(void 0),[p,g]=(0,r.useState)(!1),h=(0,l.useStyles2)(B),m=(0,r.useRef)(null),f=(0,r.useRef)(null),b=function(){var r,a=(r=function*(){(0,v.EE)(v.NO.service_details,v.ir.service_details.pattern_field_clicked);const r=function(e,t,n){let r=1;const a=e.replace(/<_>/g,(()=>``));return`{${n.state.filterExpression}} |> \`${e}\` | pattern \`${a}\` | keep ${t.map(((e,t)=>`field_${t+1}`)).join(" ,")} | line_format ""`}(t,o,(0,N.cR)(e)),a=yield(0,P.hJ)(e),l=s.jh.getTimeRange(e).state.value;u&&r===m.current&&l===f.current||(m.current=r,f.current=l,null==a||a.query({requestId:"1",interval:"",intervalMs:0,scopedVars:{},range:l,targets:[(0,c.l)(r,{maxLines:n})],timezone:"",app:"",startTime:0}).forEach((e=>{var t,r;e.state!==i.LoadingState.Done||(null===(t=e.errors)||void 0===t?void 0:t.length)?(e.state===i.LoadingState.Error||(null===(r=e.errors)||void 0===r?void 0:r.length))&&(d(void 0),g(!0)):(d(function(e,t,n){const r=new Map;e.data[0].fields[0].values.toArray().forEach((e=>{Object.keys(e).forEach((t=>{var n,a;r.has(t)||r.set(t,new Map),null===(a=r.get(t))||void 0===a||a.set(e[t],((null===(n=r.get(t))||void 0===n?void 0:n.get(e[t]))||0)+1)}))}));const a=[];for(let e=0;e<=t;e++){var i;const t=[];null===(i=r.get(`field_${e+1}`))||void 0===i||i.forEach(((e,r)=>{t.push({value:r,count:e,proportion:e/n})})),t.sort(((e,t)=>t.count-e.count)),a.push(t)}return a}(e,o.length,n)),g(!1))})))},function(){var e=this,t=arguments;return new Promise((function(n,a){var i=r.apply(e,t);function s(e){$(i,n,a,s,l,"next",e)}function l(e){$(i,n,a,s,l,"throw",e)}s(void 0)}))});return function(){return a.apply(this,arguments)}}(),y=(0,r.useMemo)((()=>t.split("<_>")),[t]);return a().createElement("div",null,y.map(((e,t)=>a().createElement("span",{key:t},e,t!==o.length&&a().createElement(l.Toggletip,{onOpen:b,content:a().createElement(a().Fragment,null,u&&u[t].length>0&&a().createElement(D,{stats:u[t],value:""}),u&&0===u[t].length&&a().createElement("div",null,"No available stats for this field in the current timestamp."),!u&&p&&a().createElement("div",null,"Could not load stats for this pattern."),!u&&!p&&a().createElement("div",{style:{padding:"10px"}},a().createElement(l.Spinner,{size:"xl"})))},a().createElement("span",{className:h.pattern},"<_>"))))))};function B(e){return{pattern:(0,m.css)({cursor:"pointer",backgroundColor:e.colors.emphasize(e.colors.background.primary,.1),margin:"0 2px","&:hover":{backgroundColor:e.colors.emphasize(e.colors.background.primary,.2)}})}}var M=n(541);function A(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class R extends s.Bs{onActivate(){if(this.state.body)return;const e=(0,c.l)(u.SA);this.replacePatternsInQuery(e);const t=(0,o.rS)([e]);t.getResultsStream().subscribe((e=>{this.onQueryWithFiltersResult(e)})),this.setState({body:new s.G1({direction:"column",children:[new s.vA({body:void 0,width:"100%",height:0}),new s.vA({height:300,width:"100%",body:s.d0.logs().setHoverHeader(!0).setOption("showLogContextToggle",!0).setOption("showTime",!0).setData(t).build()})]})})}replacePatternsInQuery(e){const t={pattern:this.state.pattern,type:"include"},n=(0,M.M)([t]);e.expr=e.expr.replace(u.sC,n)}removePatternFromFilterExclusion(){const e=s.jh.getAncestor(this,z);var t;const n=null!==(t=e.state.patternsNotMatchingFilters)&&void 0!==t?t:[],r=n.findIndex((e=>e===this.state.pattern));-1!==r&&(n.splice(r,1),e.setState({patternsNotMatchingFilters:n}))}setWarningMessage(e){const t=this.getNoticeFlexItem(),n=this.getVizFlexItem();return t instanceof s.vA&&t.setState({isHidden:!1,height:"auto",body:new s.dM({reactNode:e})}),n}getNoticeFlexItem(){const e=this.getFlexItemChildren();return null==e?void 0:e[0]}getVizFlexItem(){const e=this.getFlexItemChildren();return null==e?void 0:e[1]}getFlexItemChildren(){var e;return null===(e=this.state.body)||void 0===e?void 0:e.state.children}excludeThisPatternFromFiltering(){const e=s.jh.getAncestor(this,z);var t;const n=null!==(t=e.state.patternsNotMatchingFilters)&&void 0!==t?t:[];e.setState({patternsNotMatchingFilters:[...n,this.state.pattern]})}static Component({model:e}){const{body:t}=e.useState();return t?a().createElement(t.Component,{model:t}):null}constructor(e){super(e),A(this,"clearFilters",(()=>{const e=(0,N.ir)(this),t=(0,N.Gk)(this),n=(0,N.iw)(this);if(e.setState({filters:[]}),n.setState({filters:[]}),t.state.filters.length){t.setState({filters:[]});const e=this.getNoticeFlexItem();null==e||e.setState({isHidden:!0}),this.removePatternFromFilterExclusion()}})),A(this,"onQueryError",(e=>{if(e.data.state===i.LoadingState.Done&&(0===e.data.series.length||e.data.series.every((e=>0===e.length)))||e.data.state===i.LoadingState.Error){let t;try{t={pattern:this.state.pattern,traceIds:JSON.stringify(e.data.traceIds),request:JSON.stringify(e.data.request),msg:"onQueryError"}}catch(e){t={pattern:this.state.pattern,msg:"Failed to encode context"}}x.v.error(new Error("Pattern sample query returns no results"),t),this.setWarningMessage(a().createElement(l.Alert,{severity:"error",title:""},"This pattern returns no logs."));const n=this.getVizFlexItem();n instanceof s.vA&&n.setState({isHidden:!0})}})),A(this,"onQueryWithFiltersResult",(e=>{const t=(0,c.l)(u.pT);this.replacePatternsInQuery(t);const n=(0,o.rS)([t]);if(n.getResultsStream().subscribe(this.onQueryError),e.data.state===i.LoadingState.Done&&(0===e.data.series.length||e.data.series.every((e=>0===e.length)))){const e=this.getNoticeFlexItem(),t=this.getVizFlexItem();if(e instanceof s.vA&&e.setState({isHidden:!1,height:"auto",body:new s.dM({reactNode:a().createElement(l.Alert,{severity:"warning",title:""},"The logs returned by this pattern do not match the current query filters.",a().createElement(l.Button,{className:S.ZI.button,onClick:()=>this.clearFilters()},"Clear filters"))})}),t instanceof s.vA){const e=t.state.body;e instanceof s.Eb&&(null==e||e.setState({$data:n}))}this.excludeThisPatternFromFiltering()}e.data.state===i.LoadingState.Error&&this.onQueryError(e)})),this.addActivationHandler(this.onActivate.bind(this))}}function V({tableViz:e,row:t}){const{expandedRows:n}=e.useState(),i=null==n?void 0:n.find((e=>e.state.key===t.pattern));return(0,r.useEffect)((()=>{if(!i){const a=(r=t.pattern,new R({pattern:r,key:r}));var n;e.setState({expandedRows:[...null!==(n=e.state.expandedRows)&&void 0!==n?n:[],a]})}var r}),[t,e,i]),i?a().createElement(i.Component,{model:i}):null}const W=[""," K"," Mil"," Bil"," Tri"," Quadr"," Quint"," Sext"," Sept"];class z extends s.Bs{onActivate(){var e;const t=null===(e=s.jh.getAncestor(this,O.P).state.ds)||void 0===e?void 0:e.maxLines;this.setState({maxLines:t})}buildColumns(e,t,n,r,o){const c=J(n),u=s.jh.getTimeRange(this).state.value;return[{id:"volume-samples",header:"",cell:e=>{const t={timeRange:u,series:[e.cell.row.original.dataFrame],state:i.LoadingState.Done},n=new s.Zv({data:t}),r=s.d0.timeseries().setData(n).setHoverHeader(!0).setOption("tooltip",{mode:l.TooltipDisplayMode.None}).setCustomFieldConfig("hideFrom",{legend:!0,tooltip:!0}).setCustomFieldConfig("axisPlacement",l.AxisPlacement.Hidden).setDisplayMode("transparent").build();return a().createElement("div",{className:c.tableTimeSeriesWrap},a().createElement("div",{className:c.tableTimeSeries},a().createElement(r.Component,{model:r})))}},{id:"count",header:"Count",sortType:"number",cell:e=>{const t=(0,i.scaledUnits)(1e3,W)(e.cell.row.original.sum);var n,r;return a().createElement("div",{className:c.countTextWrap},a().createElement("div",null,null!==(n=t.prefix)&&void 0!==n?n:"",t.text,null!==(r=t.suffix)&&void 0!==r?r:""))}},{id:"percent",header:"%",sortType:"number",cell:t=>a().createElement("div",{className:c.countTextWrap},a().createElement("div",null,(100*t.cell.row.original.sum/e).toFixed(0),"%"))},{id:"pattern",header:"Pattern",cell:e=>a().createElement("div",{className:(0,m.cx)(G(),c.tablePatternTextDefault)},a().createElement(I,{exploration:(0,P.Ti)(this),pattern:e.cell.row.original.pattern,maxLines:r}))},{id:"include",header:void 0,disableGrow:!0,cell:e=>{if(null==o?void 0:o.includes(e.cell.row.original.pattern))return;const n=null==t?void 0:t.find((t=>t.pattern===e.cell.row.original.pattern)),r="include"===(null==n?void 0:n.type),i="exclude"===(null==n?void 0:n.type);return a().createElement(k.F,{isExcluded:i,isIncluded:r,onInclude:()=>e.cell.row.original.includeLink(),onExclude:()=>e.cell.row.original.excludeLink(),onClear:()=>e.cell.row.original.undoLink(),buttonFill:"outline"})}}]}buildTableData(e,t){const n=s.jh.getAncestor(this,O.P);return e.filter((e=>!t.size||t.has(e.pattern))).map((e=>({dataFrame:e.dataFrame,pattern:e.pattern,sum:e.sum,includeLink:()=>C({pattern:e.pattern,type:"include",indexScene:n}),excludeLink:()=>C({pattern:e.pattern,type:"exclude",indexScene:n}),undoLink:()=>C({pattern:e.pattern,type:"undo",indexScene:n})})))}constructor(e){super(e),this.addActivationHandler(this.onActivate.bind(this))}}var H,Q,K;K=function({model:e}){const t=s.jh.getAncestor(e,O.P),{patterns:n}=t.useState(),r=(0,l.useTheme2)(),i=U(r),o=s.jh.getAncestor(e,te),{legendSyncPatterns:u}=o.useState(),{patternFrames:d,patternsNotMatchingFilters:p}=e.useState(),g=null!=d?d:[],h=g.reduce(((e,t)=>e+t.sum),0),v=e.buildTableData(g,u);var m;const f=e.buildColumns(h,n,r,null!==(m=e.state.maxLines)&&void 0!==m?m:c.by,p);return a().createElement("div",{"data-testid":b.b.patterns.tableWrapper,className:i.tableWrap},a().createElement(l.InteractiveTable,{columns:f,data:v,getRowId:e=>e.pattern,renderExpandedRow:t=>a().createElement(V,{tableViz:e,row:t})}))},(Q="Component")in(H=z)?Object.defineProperty(H,Q,{value:K,enumerable:!0,configurable:!0,writable:!0}):H[Q]=K;const q=F.config.theme2,G=()=>(0,m.css)({minWidth:"200px",fontFamily:q.typography.fontFamilyMonospace,overflow:"hidden",overflowWrap:"break-word"}),U=e=>({link:(0,m.css)({textDecoration:"underline"}),tableWrap:(0,m.css)({"> div":{height:"calc(100vh - 450px)",minHeight:"470px"},th:{top:0,position:"sticky",backgroundColor:e.colors.background.canvas,zIndex:e.zIndex.navbarFixed}})}),J=e=>({tablePatternTextDefault:(0,m.css)({fontFamily:e.typography.fontFamilyMonospace,minWidth:"200px",maxWidth:"100%",overflow:"hidden",overflowWrap:"break-word",fontSize:e.typography.bodySmall.fontSize,wordBreak:"break-word"}),countTextWrap:(0,m.css)({textAlign:"right",fontSize:e.typography.bodySmall.fontSize}),tableTimeSeriesWrap:(0,m.css)({width:"230px",pointerEvents:"none"}),tableTimeSeries:(0,m.css)({height:"30px",overflow:"hidden"})});function Y(e,t,n,r,a,i,s){try{var l=e[i](s),o=l.value}catch(e){return void n(e)}l.done?t(o):Promise.resolve(o).then(r,a)}function X(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var i=e.apply(t,n);function s(e){Y(i,r,a,s,l,"next",e)}function l(e){Y(i,r,a,s,l,"throw",e)}s(void 0)}))}}function Z(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const ee=F.config.theme2.visualization.palette;class te extends s.Bs{onActivate(){this.updateBody(),this._subs.add(s.jh.getAncestor(this,Ze).subscribeToState(((e,t)=>{var n,r,a,i,l,o;const c=null==e||null===(a=e.$patternsData)||void 0===a||null===(r=a.state)||void 0===r||null===(n=r.data)||void 0===n?void 0:n.series,u=null==t||null===(o=t.$patternsData)||void 0===o||null===(l=o.state)||void 0===l||null===(i=l.data)||void 0===i?void 0:i.series;if(!(0,g.B)(c,u)){const e=s.jh.getAncestor(this,ge);this.updatePatterns(e.state.patternFrames),e.setState({filteredPatterns:void 0})}}))),this._subs.add(s.jh.getAncestor(this,ge).subscribeToState(((e,t)=>{const n=s.jh.getAncestor(this,ge);e.filteredPatterns&&!(0,g.B)(e.filteredPatterns,t.filteredPatterns)?this.updatePatterns(n.state.filteredPatterns):n.state.patternFilter||this.updatePatterns(n.state.patternFrames)})))}updatePatterns(e=[]){var t=this;return X((function*(){var n;null===(n=t.state.body)||void 0===n||n.forEachChild((n=>{n instanceof s.Eb&&n.setState({$data:t.getTimeseriesDataNode(e)}),n instanceof z&&n.setState({patternFrames:e})}))}))()}updateBody(){var e=this;return X((function*(){var t,n;const r=s.jh.getAncestor(e,ge).state.patternFrames;(null===(n=s.jh.getAncestor(e,Ze).state.$patternsData)||void 0===n||null===(t=n.state.data)||void 0===t?void 0:t.series)&&r?e.setState({body:e.getSingleViewLayout(),legendSyncPatterns:new Set,loading:!1}):x.v.warn("Failed to update PatternsFrameScene body")}))()}extendTimeSeriesLegendBus(e,t){const n=t.onToggleSeriesVisibility;t.onToggleSeriesVisibility=(t,r)=>{var a;null==n||n(t,r);const i=null===(a=e.state.fieldConfig.overrides)||void 0===a?void 0:a[0],s=null==i?void 0:i.matcher.options.names,l=new Set;s&&s.forEach(l.add,l),this.setState({legendSyncPatterns:l})}}getSingleViewLayout(){const e=s.jh.getAncestor(this,ge).state.patternFrames;if(!e)return void x.v.warn("Failed to set getSingleViewLayout");const t=this.getTimeSeries(e);return new s.gF({templateColumns:"100%",autoRows:"200px",isLazy:!0,children:[t,new z({patternFrames:e})]})}getTimeSeries(e){const t=s.jh.getAncestor(this,O.P),n=s.d0.timeseries().setData(this.getTimeseriesDataNode(e)).setOption("legend",{asTable:!0,showLegend:!0,displayMode:l.LegendDisplayMode.Table,placement:"right",width:200}).setHoverHeader(!0).setUnit("short").setLinks([{url:"#",targetBlank:!1,onClick:e=>{C({pattern:e.origin.labels.name,type:"include",indexScene:t})},title:"Include"},{url:"#",targetBlank:!1,onClick:e=>{C({pattern:e.origin.labels.name,type:"exclude",indexScene:t})},title:"Exclude"}]).build();return n.setState({extendPanelContext:(e,t)=>this.extendTimeSeriesLegendBus(e,t)}),n}getTimeseriesDataNode(e){const t=s.jh.getTimeRange(this).state.value;return new s.Zv({data:{series:e.map(((e,t)=>{const n=e.dataFrame;return n.fields[1].config.color=function(e){return{mode:"fixed",fixedColor:ee[e]}}(t),n.fields[1].name="",n})),state:i.LoadingState.Done,timeRange:t}})}constructor(e){var t,n;super((t=function(e){for(var t=1;t{var t;const{body:n,loading:r}=e.useState(),i=s.jh.getAncestor(e,Ze),{$patternsData:l}=i.useState(),o=null==l||null===(t=l.state.data)||void 0===t?void 0:t.series;return a().createElement("div",{className:ne.container},!r&&o&&o.length>0&&a().createElement(a().Fragment,null,n&&a().createElement(n.Component,{model:n})))}));const ne={container:(0,m.css)({width:"100%",".show-on-hover":{display:"none"}})};var re=n(4932),ae=n(6261);function ie(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class se extends s.Bs{onActivate(){const e=s.jh.getAncestor(this,ge);this._subs.add(e.subscribeToState(((e,t)=>{if(e.patternFilter!==t.patternFilter){const e=s.jh.getAncestor(this,ge);e.state.patternFrames&&(0,re.E)(e.state.patternFrames.map((e=>e.pattern)),e.state.patternFilter,this.onSearchResult)}}))),this._subs.add(e.subscribeToState(((e,t)=>{e.patternFilter&&!e.filteredPatterns&&e.patternFrames&&!(0,g.B)(e.filteredPatterns,t.filteredPatterns)&&(0,re.X)(e.patternFrames.map((e=>e.pattern)),e.patternFilter,this.onSearchResult)})))}setFilteredPatterns(e,t){const n=s.jh.getAncestor(this,ge),r=null!=t?t:n.state.patternFrames;if(r){const t=r.filter((t=>!(!n.state.patternFilter||!(null==r?void 0:r.length))&&e.find((e=>e===t.pattern))));n.setState({filteredPatterns:t})}}setEmptySearch(){s.jh.getAncestor(this,ge).setState({filteredPatterns:void 0})}constructor(e){super(function(e){for(var t=1;t{s.jh.getAncestor(this,ge).setState({patternFilter:""})})),ie(this,"handleSearchChange",(e=>{s.jh.getAncestor(this,ge).setState({patternFilter:e.target.value})})),ie(this,"onSearchResult",(e=>{const t=s.jh.getAncestor(this,ge);t.state.patternFilter?this.setFilteredPatterns(e[0]):t.state.filteredPatterns&&!t.state.patternFilter&&this.setEmptySearch()})),this.addActivationHandler(this.onActivate.bind(this))}}ie(se,"Component",(function({model:e}){const t=s.jh.getAncestor(e,ge),{patternFilter:n}=t.useState();return a().createElement(l.Field,{className:le.field},a().createElement(ae.D,{onChange:e.handleSearchChange,onClear:e.clearSearch,value:n,placeholder:"Search patterns"}))}));const le={field:(0,m.css)({label:"field",marginBottom:0}),icon:(0,m.css)({cursor:"pointer"})};var oe=n(4482);function ce(){return a().createElement(oe.R,null,a().createElement("div",null,a().createElement("p",null,a().createElement("strong",null,"Sorry, we could not detect any patterns.")),a().createElement("p",null,"Check back later or reach out to the team in the"," ",a().createElement(l.TextLink,{href:"https://slack.grafana.com/",external:!0},"Grafana Labs community Slack channel")),a().createElement("p",null,"Patterns let you detect similar log lines to include or exclude from your search.")))}function ue(){return a().createElement(oe.R,null,a().createElement("div",null,a().createElement("p",null,a().createElement("strong",null,"Patterns are only available for the most recent ",pe," hours of data.")),a().createElement("p",null,"See the"," ",a().createElement(l.TextLink,{href:"https://grafana.com/docs/grafana/latest/explore/simplified-exploration/logs/patterns/",external:!0},"patterns docs")," ","for more info.")))}function de(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const pe=3;class ge extends s.Bs{onActivate(){var e,t;const n=s.jh.getAncestor(this,Ze);var r;this.setBody(),(null===(e=n.state.$patternsData)||void 0===e?void 0:e.state)&&this.onDataChange(null===(r=n.state.$patternsData)||void 0===r?void 0:r.state),this._subs.add(null===(t=n.state.$patternsData)||void 0===t?void 0:t.subscribeToState(this.onDataChange))}setBody(){this.setState({body:new s.G1({direction:"column",children:[new s.vA({ySizing:"content",body:new se}),new s.vA({body:new te})]})})}updatePatternFrames(e){if(!e)return;const t=this.dataFrameToPatternFrame(e);this.setState({patternFrames:t})}dataFrameToPatternFrame(e){const t=s.jh.getAncestor(this,Ze),n=s.jh.getAncestor(t,O.P).state.patterns;return e.map((e=>{var t,r;const a=null==n?void 0:n.find((t=>t.pattern===e.name)),i=null===(r=e.meta)||void 0===r||null===(t=r.custom)||void 0===t?void 0:t.sum;var s;return{dataFrame:e,pattern:null!==(s=e.name)&&void 0!==s?s:"",sum:i,status:null==a?void 0:a.type}}))}constructor(e){var t;super(function(e){for(var t=1;t{var n,r,a,s,l;const o=null===(n=e.data)||void 0===n?void 0:n.series,c=null==t||null===(r=t.data)||void 0===r?void 0:r.series;(null===(a=e.data)||void 0===a?void 0:a.state)===i.LoadingState.Done?(this.setState({loading:!1,error:!1}),(0,g.B)(o,c)||this.updatePatternFrames(o)):(null===(s=e.data)||void 0===s?void 0:s.state)===i.LoadingState.Loading?this.setState({loading:!0,error:!1}):(null===(l=e.data)||void 0===l?void 0:l.state)===i.LoadingState.Error&&this.setState({loading:!1,error:!0})})),this.addActivationHandler(this.onActivate.bind(this))}}function he(e){return{container:(0,m.css)({flexGrow:1,display:"flex",minHeight:"100%",flexDirection:"column"}),content:(0,m.css)({flexGrow:1,display:"flex",paddingTop:e.spacing(0)}),controls:(0,m.css)({flexGrow:0,display:"flex",alignItems:"top",gap:e.spacing(2)}),controlsRight:(0,m.css)({flexGrow:0,display:"flex",justifyContent:"flex-end"}),controlsLeft:(0,m.css)({display:"flex",justifyContent:"flex-left",justifyItems:"left",width:"100%",flexDirection:"column"}),patternMissingText:(0,m.css)({padding:e.spacing(2)})}}de(ge,"Component",(({model:e})=>{const{body:t,loading:n,blockingMessage:r,patternFrames:o,error:c}=e.useState(),{value:u}=s.jh.getTimeRange(e).useState(),d=(0,l.useStyles2)(he),p=(0,i.dateTime)().diff(u.to,"hours")>=pe;return a().createElement("div",{className:d.container},a().createElement(w.O,{isLoading:n,blockingMessage:r},!n&&c&&a().createElement("div",{className:d.patternMissingText},a().createElement(l.Text,{textAlignment:"center",color:"primary"},a().createElement("p",null,"There are no pattern matches."),a().createElement("p",null,"Pattern matching has not been configured."),a().createElement("p",null,"Patterns let you detect similar log lines and add or exclude them from your search."),a().createElement("p",null,"To see them in action, add the following to your Loki configuration"),a().createElement("p",null,a().createElement("code",null,"--pattern-ingester.enabled=true")))),!c&&!n&&0===(null==o?void 0:o.length)&&p&&a().createElement(ue,null),!c&&!n&&0===(null==o?void 0:o.length)&&!p&&a().createElement(ce,null),!c&&!n&&o&&o.length>0&&a().createElement("div",{className:d.content},t&&a().createElement(t.Component,{model:t}))))}));var ve=n(3690),me=n(3633),fe=function(e){return e.logs="Logs",e.labels="Labels",e.fields="Fields",e.patterns="Patterns",e}({});const be=[{displayName:"Logs",value:h.G3.logs,getScene:()=>new s.G1({direction:"column",children:[new s.vA({body:new ve._({})}),new s.vA({minHeight:"470px",height:"calc(100vh - 500px)",body:new f.i({})})]}),testId:b.b.exploreServiceDetails.tabLogs},{displayName:"Labels",value:h.G3.labels,getScene:()=>new s.G1({$behaviors:[new s.Gg.K2({key:"sync",sync:me.yV.Crosshair})],children:[new s.vA({body:new y.O({})})]}),testId:b.b.exploreServiceDetails.tabLabels},{displayName:"Fields",value:h.G3.fields,getScene:e=>{return t=e,new s.G1({$behaviors:[new s.Gg.K2({key:"sync",sync:me.yV.Crosshair})],children:[new s.vA({body:new S.J6({changeFieldCount:t})})]});var t},testId:b.b.exploreServiceDetails.tabFields},{displayName:"Patterns",value:h.G3.patterns,getScene:()=>new s.G1({children:[new s.vA({body:new ge({})})]}),testId:b.b.exploreServiceDetails.tabPatterns}],ye=[{displayName:"Label",value:h._J.label,getScene:e=>function(e){return new s.G1({$behaviors:[new s.Gg.K2({key:"sync",sync:me.yV.Crosshair})],children:[new s.vA({body:new y.O({value:e})})]})}(e),testId:b.b.exploreServiceDetails.tabLabels},{displayName:"Field",value:h._J.field,getScene:e=>function(e){return new s.G1({$behaviors:[new s.Gg.K2({key:"sync",sync:me.yV.Crosshair})],children:[new s.vA({body:new S.J6({value:e})})]})}(e),testId:b.b.exploreServiceDetails.tabFields}];var Se=n(8315);function we(e,t,n,r,a,i,s){try{var l=e[i](s),o=l.value}catch(e){return void n(e)}l.done?t(o):Promise.resolve(o).then(r,a)}function Oe(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var i=e.apply(t,n);function s(e){we(i,r,a,s,l,"next",e)}function l(e){we(i,r,a,s,l,"throw",e)}s(void 0)}))}}function xe(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class Ee extends s.Bs{setIsOpen(e){this.setState({isOpen:e})}onCopyLink(e,t,r){e?(Pe(r||n.g.location.href),(0,F.reportInteraction)("grafana_explore_shortened_link_clicked",{isAbsoluteTime:t})):((0,Se.Dk)(void 0!==r?`${window.location.protocol}//${window.location.host}${F.config.appSubUrl}${r}`:n.g.location.href),this.state.onCopyLink&&this.state.onCopyLink(e,t,r))}constructor(e){super(function(e){for(var t=1;t{const t=[{key:"normal",label:"Normal URL links",items:[{key:"copy-shortened-link",icon:"link",label:"Copy shortened URL",getUrl:()=>{},shorten:!0,absTime:!1},{key:"copy-link",icon:"link",label:"Copy URL",getUrl:()=>{},shorten:!1,absTime:!1}]},{key:"timesync",label:"Time-sync URL links (share with time range intact)",items:[{key:"copy-short-link-abs-time",icon:"clock-nine",label:"Copy absolute shortened URL",shorten:!0,getUrl:()=>Le(void 0!==e.state.getSceneTimeRange?e.state.getSceneTimeRange():s.jh.getTimeRange(e)),absTime:!0},{key:"copy-link-abs-time",icon:"clock-nine",label:"Copy absolute URL",shorten:!1,getUrl:()=>Le(void 0!==e.state.getSceneTimeRange?e.state.getSceneTimeRange():s.jh.getTimeRange(e)),absTime:!0}]}];return a().createElement(l.Menu,null,t.map((t=>a().createElement(l.MenuGroup,{key:t.key,label:t.label},t.items.map((t=>a().createElement(l.Menu.Item,{key:t.key,label:t.label,icon:t.icon,onClick:()=>{const n=t.getUrl();e.onCopyLink(t.shorten,t.absTime,n),e.setState({lastSelected:t})}})))))))})),xe(Ee,"Component",(({model:e})=>{const{lastSelected:t,isOpen:n}=e.useState();return a().createElement(l.ButtonGroup,null,a().createElement(l.ToolbarButton,{tooltip:t.label,icon:t.icon,variant:"canvas",narrow:!0,onClick:()=>{const n=t.getUrl();e.onCopyLink(t.shorten,t.absTime,n)},"aria-label":"Copy shortened URL"},a().createElement("span",null,"Share")),a().createElement(l.Dropdown,{overlay:a().createElement(Ee.MenuActions,{model:e}),placement:"bottom-end",onVisibleChange:e.setIsOpen.bind(e)},a().createElement(l.ToolbarButton,{narrow:!0,variant:"canvas",isOpen:n,"aria-label":"Open copy link options"})))}));const Ce={key:"copy-link",label:"Copy shortened URL",icon:"share-alt",getUrl:()=>{},shorten:!0,absTime:!1};function ke(e){let t=e.replace(`${window.location.protocol}//${window.location.host}${F.config.appSubUrl}`,"");return t.startsWith("/")?t.substring(1,t.length):t}const Fe=function(){var e=Oe((function*(e){const t=(0,F.getAppEvents)();try{return(yield(0,F.getBackendSrv)().post("/api/short-urls",{path:ke(e)})).url}catch(e){console.error("Error when creating shortened link: ",e),t.publish({type:i.AppEvents.alertError.name,payload:["Error generating shortened link"]})}}));return function(t){return e.apply(this,arguments)}}(),Pe=function(){var e=Oe((function*(e){const t=(0,F.getAppEvents)(),n=yield Fe(e);n?((0,Se.Dk)(n),t.publish({type:i.AppEvents.alertSuccess.name,payload:["Shortened link copied to clipboard"]})):t.publish({type:i.AppEvents.alertError.name,payload:["Error generating shortened link"]})}));return function(t){return e.apply(this,arguments)}}(),Le=e=>{const t=(0,i.toUtc)(e.state.value.from),n=(0,i.toUtc)(e.state.value.to),r=F.locationService.getLocation(),a=i.urlUtil.getUrlSearchParams();return a.from=t.toISOString(),a.to=n.toISOString(),i.urlUtil.renderUrl(r.pathname,a)};class je extends s.Bs{onActivate(){const e=s.jh.getAncestor(this,O.P).state.ds;void 0!==(null==e?void 0:e.maxLines)&&this.setState({maxLines:e.maxLines}),this.state.shareButtonScene||this.setState({shareButtonScene:new Ee({})})}constructor(e){super(e),this.addActivationHandler(this.onActivate.bind(this))}}!function(e,t,n){t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n}(je,"Component",(({model:e})=>{const t=(0,l.useStyles2)(Te);let n=(0,h.FT)(),r=!1;if(!Object.values(h.G3).includes(n)){const e=(0,h.er)();r=!0,e===h._J.field&&(n=h.G3.fields),e===h._J.label&&(n=h.G3.labels)}const o=s.jh.getAncestor(e,Ze),u=o.useState(),{loading:d,$data:g,logsCount:f,totalLogsCount:b}=u,y=function(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}(u,["loading","$data","logsCount","totalLogsCount"]),{maxLines:S}=e.useState(),w=y.loadingStates;return a().createElement(l.Box,{paddingY:0},a().createElement("div",{className:t.actions},a().createElement(l.Stack,{gap:1},F.config.featureToggles.appSidecar&&a().createElement(De,{serviceScene:o}),e.state.shareButtonScene&&a().createElement(e.state.shareButtonScene.Component,{model:e.state.shareButtonScene}))),a().createElement(l.TabsBar,null,be.map(((e,t)=>a().createElement(l.Tab,{"data-testid":e.testId,key:t,label:e.displayName,active:n===e.value,counter:w[e.displayName]?void 0:_e(e,y),suffix:e.displayName===fe.logs?({className:e})=>function(e,t,n,r){const s=(0,l.useStyles2)(Ne),o=(0,i.getValueFormat)("short");if(void 0===t&&void 0!==n&&n{(e.value&&e.value!==n||r)&&(0,v.EE)(v.NO.service_details,v.ir.service_details.action_view_changed,{newActionView:e.value,previousActionView:n})}})))))}));const _e=(e,t)=>{switch(e.value){case"fields":return t.fieldsCount;case"patterns":return t.patternsCount;case"labels":return t.labelsCount;default:return}};function Te(e){return{actions:(0,m.css)({display:"flex",justifyContent:"flex-end",[e.breakpoints.up(e.breakpoints.values.md)]:{position:"absolute",right:0,zIndex:2}})}}function De(e){const[t,n]=(0,r.useState)((0,N.cR)(e.serviceScene).state.filters);(0,r.useEffect)((()=>{const t=(0,N.cR)(e.serviceScene).subscribeToState((e=>{n(e.filters)}));return()=>{t.unsubscribe()}}),[e.serviceScene]);const[i,s]=(0,r.useState)(!1),o=(0,F.usePluginLinks)({extensionPointId:"grafana-lokiexplore-app/toolbar-open-related/v1",limitPerPlugin:3,context:{filters:t}});if(o.isLoading||0===o.links.length)return null;if(1===o.links.length){const e=o.links[0];return a().createElement("div",null,a().createElement(l.ToolbarButton,{variant:"canvas",key:e.id,onClick:t=>{var n;return null===(n=e.onClick)||void 0===n?void 0:n.call(e,t)},icon:e.icon},"Related ",e.title))}const c=a().createElement(l.Menu,null,o.links.map((e=>a().createElement(l.Menu.Item,{ariaLabel:e.title,icon:(null==e?void 0:e.icon)||"plug",key:e.id,label:e.title,onClick:t=>{var n;null===(n=e.onClick)||void 0===n||n.call(e,t)}}))));return a().createElement(l.Dropdown,{onVisibleChange:s,placement:"bottom-start",overlay:c},a().createElement(l.ToolbarButton,{"aria-label":"Open related",variant:"canvas",isOpen:i},"Open related"))}function Ne(e){return{emptyCountStyles:(0,m.css)({display:"inline-block",fontSize:e.typography.bodySmall.fontSize,minWidth:"1em",marginLeft:e.spacing(1),padding:e.spacing(.25,1)}),logsCountStyles:(0,m.css)({fontSize:e.typography.bodySmall.fontSize,label:"counter",marginLeft:e.spacing(1),borderRadius:e.spacing(3),backgroundColor:e.colors.action.hover,padding:e.spacing(.25,1),color:e.colors.text.secondary,fontWeight:e.typography.fontWeightMedium})}}var $e=n(7608),Ie=n(6059),Be=n(4793);function Me(e,t){const n=["^","$",".","*","+","?","(",")","[","]","{","}","|"];return t||n.push("\\"),e.split("").filter(((e,t,r)=>{const a=r[t+1],i=n.includes(a);return!("\\"===e&&i)})).join("")}var Ae=n(5435),Re=n(3626),Ve=n(5111);function We(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ze(e){for(var t=1;te.refId===Qe))}function Ge(e){var t,n,r;return null===(r=s.jh.getAncestor(e,Ze).state.$detectedLabelsData)||void 0===r||null===(n=r.state.data)||void 0===n||null===(t=n.series)||void 0===t?void 0:t[0]}function Ue(e){var t;const n=s.jh.getAncestor(e,Ze);return Je(null===(t=n.state.$detectedFieldsData)||void 0===t?void 0:t.state)}const Je=e=>{var t,n;return null==e||null===(n=e.data)||void 0===n||null===(t=n.series)||void 0===t?void 0:t[0]},Ye=e=>{var t,n,r,a;return null===(a=e.data)||void 0===a||null===(r=a.series)||void 0===r||null===(n=r[0])||void 0===n||null===(t=n.fields)||void 0===t?void 0:t[0]},Xe=e=>{var t,n,r,a;return null===(a=e.data)||void 0===a||null===(r=a.series)||void 0===r||null===(n=r[0])||void 0===n||null===(t=n.fields)||void 0===t?void 0:t[2]};class Ze extends s.Bs{setSubscribeToLabelsVariable(){const e=(0,N.cR)(this);0!==e.state.filters.length?this._subs.add(e.subscribeToState(((e,t)=>{0===e.filters.length&&this.redirectToStart();let{labelName:n,labelValue:r,breakdownLabel:a}=(0,h.W6)();n===u.ky&&(n=u.OX);const i=s.jh.getAncestor(this,O.P),l=i.state.routeMatch;if(e.filters.some((e=>e.key===n&&(0,Ve.BG)(e.operator)&&(0,$e.uu)(e.value)===r))){if(!(0,g.B)(e.filters,t.filters)){var o,c,d,v;null===(o=this.state.$patternsData)||void 0===o||o.runQueries(),null===(c=this.state.$detectedLabelsData)||void 0===c||c.runQueries(),null===(d=this.state.$detectedFieldsData)||void 0===d||d.runQueries(),null===(v=this.state.$logsCount)||void 0===v||v.runQueries()}}else{const t=e.filters.find((e=>(0,Ve.BG)(e.operator)&&e.value!==u.ZO));if(t){const e=(0,u.zE)(t.value)?(0,$e.uu)((0,u.Dx)(t.value)):(0,$e.uu)(t.value);var m,f,b;i.setState({routeMatch:He(ze({},l),{params:He(ze({},null==l?void 0:l.params),{labelName:t.key===u.OX?u.ky:t.key,labelValue:e.split("|")[0]}),url:null!==(m=null==l?void 0:l.url)&&void 0!==m?m:"",path:null!==(f=null==l?void 0:l.path)&&void 0!==f?f:"",isExact:null===(b=null==l?void 0:l.isExact)||void 0===b||b})}),this.resetTabCount(),a?(0,p.fg)((0,h.er)(),a,this):(0,p.Vt)((0,h.FT)(),this)}else this.redirectToStart()}}))):this.redirectToStart()}redirectToStart(){this.setState({$data:void 0,$logsCount:void 0,body:void 0,$patternsData:void 0,$detectedLabelsData:void 0,$detectedFieldsData:void 0,patternsCount:void 0,labelsCount:void 0,fieldsCount:void 0,logsCount:void 0,totalLogsCount:void 0}),(0,d.JO)().setServiceSceneState(this.state),this._subs.unsubscribe(),(0,p.Ns)()}showVariables(){s.jh.findByKeyAndType(this,Re.kz,Re.qV).setState({visible:!0}),(0,N.YS)(this).setState({hide:Ae.zL.dontHide})}getMetadata(){const e=(0,d.JO)().getServiceSceneState();e&&this.setState(ze({},e))}onActivate(){s.jh.findByKeyAndType(this,O.y,Ie.H).setState({hidden:!0}),this.showVariables(),this.getMetadata(),this.resetBodyAndData(),this.setBreakdownView(),this.runQueries(),this._subs.add(this.subscribeToPatternsQuery()),this._subs.add(this.subscribeToDetectedLabelsQuery()),this._subs.add(this.subscribeToDetectedFieldsQuery((0,h.FT)()!==h.G3.fields)),this._subs.add(this.subscribeToLogsQuery()),this._subs.add(this.subscribeToLogsCountQuery()),this.setSubscribeToLabelsVariable(),this._subs.add(this.subscribeToFieldsVariable()),this._subs.add(this.subscribeToMetadataVariable()),this._subs.add(this.subscribeToLevelsVariableChangedEvent()),this._subs.add(this.subscribeToLevelsVariableFiltersState()),this._subs.add(this.subscribeToDataSourceVariable()),this._subs.add(this.subscribeToPatternsVariable()),this._subs.add(this.subscribeToLineFiltersVariable()),this._subs.add(this.subscribeToTimeRange()),function(e){const t=i.urlUtil.getUrlSearchParams(),n=t["var-lineFilter"];if(!Array.isArray(n)||!n.length)return;const r=n[0];if("string"!=typeof r||!r)return;const a=s.jh.getAncestor(e,O.P),l=(0,N.Gk)(e),o=null==r?void 0:r.match(/\|=.`(.+?)`/);var c,u;o&&2===o.length&&(null===(u=a.state.body)||void 0===u||null===(c=u.state.lineFilterRenderer)||void 0===c||c.addActivationHandler((()=>{l.setState({filters:[{key:Be.ld.caseSensitive,operator:Be.cK.match,value:Me(o[1],!0),keyLabel:"0"}]})})));const d=null==r?void 0:r.match(/`\(\?i\)(.+)`/);var p,g;d&&2===d.length&&(null===(g=a.state.body)||void 0===g||null===(p=g.state.lineFilterRenderer)||void 0===p||p.addActivationHandler((()=>{l.updateFilters([{key:Be.ld.caseInsensitive,operator:Be.cK.match,value:Me(d[1],!1),keyLabel:"0"}])}))),delete t["var-lineFilter"],F.locationService.replace(i.urlUtil.renderUrl(location.pathname,t))}(this)}subscribeToPatternsVariable(){return(0,N.Ku)(this).subscribeToState(((e,t)=>{var n,r;e.value!==t.value&&(null===(n=this.state.$detectedFieldsData)||void 0===n||n.runQueries(),null===(r=this.state.$logsCount)||void 0===r||r.runQueries())}))}subscribeToLineFiltersVariable(){return(0,N.Gk)(this).subscribeToEvent(s.oh,(()=>{var e,t;null===(e=this.state.$logsCount)||void 0===e||e.runQueries(),null===(t=this.state.$detectedFieldsData)||void 0===t||t.runQueries()}))}subscribeToDataSourceVariable(){return(0,N.S9)(this).subscribeToState((()=>{this.redirectToStart()}))}resetTabCount(){this.setState({fieldsCount:void 0,labelsCount:void 0,patternsCount:void 0}),(0,d.JO)().setServiceSceneState(this.state)}subscribeToFieldsVariable(){return(0,N.ir)(this).subscribeToState(((e,t)=>{var n,r;(0,g.B)(e.filters,t.filters)||(null===(n=this.state.$detectedFieldsData)||void 0===n||n.runQueries(),null===(r=this.state.$logsCount)||void 0===r||r.runQueries())}))}subscribeToMetadataVariable(){return(0,N.oY)(this).subscribeToState(((e,t)=>{var n,r;(0,g.B)(e.filters,t.filters)||(null===(n=this.state.$detectedFieldsData)||void 0===n||n.runQueries(),null===(r=this.state.$logsCount)||void 0===r||r.runQueries())}))}subscribeToLevelsVariableChangedEvent(){return(0,N.iw)(this).subscribeToEvent(s.oh,(()=>{var e;null===(e=this.state.$detectedFieldsData)||void 0===e||e.runQueries()}))}subscribeToLevelsVariableFiltersState(){return(0,N.iw)(this).subscribeToState(((e,t)=>{var n;(0,g.B)(e.filters,t.filters)||null===(n=this.state.$logsCount)||void 0===n||n.runQueries()}))}runQueries(){const e=(0,h.FT)(),t=(0,h.er)();var n,r,a,i;e!==h.G3.patterns&&void 0!==this.state.patternsCount||null===(n=this.state.$patternsData)||void 0===n||n.runQueries(),e!==h.G3.labels&&t!==h._J.label&&void 0!==this.state.labelsCount||null===(r=this.state.$detectedLabelsData)||void 0===r||r.runQueries(),e!==h.G3.fields&&t!==h._J.field&&void 0!==this.state.fieldsCount||null===(a=this.state.$detectedFieldsData)||void 0===a||a.runQueries(),void 0===this.state.logsCount&&(null===(i=this.state.$logsCount)||void 0===i||i.runQueries())}subscribeToPatternsQuery(){var e;return null===(e=this.state.$patternsData)||void 0===e?void 0:e.subscribeToState((e=>{var t;if(this.updateLoadingState(e,fe.patterns),(null===(t=e.data)||void 0===t?void 0:t.state)===i.LoadingState.Done){const t=e.data.series;void 0!==(null==t?void 0:t.length)&&(this.setState({patternsCount:t.length}),(0,d.JO)().setPatternsCount(t.length))}}))}subscribeToDetectedLabelsQuery(){var e;return null===(e=this.state.$detectedLabelsData)||void 0===e?void 0:e.subscribeToState((e=>{var t;if(this.updateLoadingState(e,fe.labels),(null===(t=e.data)||void 0===t?void 0:t.state)===i.LoadingState.Done){const t=e.data,n=t.series[0].fields;if(void 0!==t.series.length&&void 0!==n.length){const e=t.series[0].fields.filter((e=>u.e4!==e.name));this.setState({labelsCount:e.length+1}),(0,d.JO)().setLabelsCount(n.length)}}}))}updateLoadingState(e,t){var n;const r=this.state.loadingStates;r[t]=(null===(n=e.data)||void 0===n?void 0:n.state)===i.LoadingState.Loading;const a=Object.values(r).some((e=>e));this.setState({loading:a,loadingStates:r})}subscribeToLogsQuery(){var e;return null===(e=this.state.$data)||void 0===e?void 0:e.subscribeToState(((e,t)=>{var n,r;if(this.updateLoadingState(e,fe.logs),(null===(n=e.data)||void 0===n?void 0:n.state)===i.LoadingState.Done||(null===(r=e.data)||void 0===r?void 0:r.state)===i.LoadingState.Streaming){var a,s;const t=null!==(s=null===(a=e.data.series[0])||void 0===a?void 0:a.length)&&void 0!==s?s:0;t!==this.state.logsCount&&this.setState({logsCount:t})}}))}subscribeToLogsCountQuery(){var e;return null===(e=this.state.$logsCount)||void 0===e?void 0:e.subscribeToState((e=>{var t;if((null===(t=e.data)||void 0===t?void 0:t.state)===i.LoadingState.Done){var n,r,a,s;const t=null===(s=e.data.series[0])||void 0===s||null===(a=s.fields)||void 0===a||null===(r=a[1])||void 0===r||null===(n=r.values)||void 0===n?void 0:n[0];this.setState({totalLogsCount:t})}}))}subscribeToDetectedFieldsQuery(e){var t;return null===(t=this.state.$detectedFieldsData)||void 0===t?void 0:t.subscribeToState((t=>{var n;if(this.updateLoadingState(t,fe.fields),e&&(null===(n=t.data)||void 0===n?void 0:n.state)===i.LoadingState.Done){const e=t.data.series[0];void 0!==e&&e.length!==this.state.fieldsCount&&(this.setState({fieldsCount:e.length}),(0,d.JO)().setFieldsCount(e.length))}}))}subscribeToTimeRange(){return s.jh.getTimeRange(this).subscribeToState((()=>{var e,t,n,r;null===(e=this.state.$patternsData)||void 0===e||e.runQueries(),null===(t=this.state.$detectedLabelsData)||void 0===t||t.runQueries(),null===(n=this.state.$detectedFieldsData)||void 0===n||n.runQueries(),null===(r=this.state.$logsCount)||void 0===r||r.runQueries()}))}resetBodyAndData(){let e={};this.state.$data||(e.$data=at()),this.state.$patternsData||(e.$patternsData=tt()),this.state.$detectedLabelsData||(e.$detectedLabelsData=nt()),this.state.$detectedFieldsData||(e.$detectedFieldsData=rt()),this.state.$logsCount||(e.$logsCount=it()),this.state.body||(e.body=et()),Object.keys(e).length&&this.setState(e)}setBreakdownView(){const{body:e}=this.state,t=(0,h.FT)(),n=be.find((e=>e.value===t));if(!e){const e=new Error("body is not defined in setBreakdownView!");throw x.v.error(e,{msg:"ServiceScene setBreakdownView error"}),e}if(n)e.setState({children:[...e.state.children.slice(0,1),n.getScene((e=>{"fields"===n.value&&this.setState({fieldsCount:e})}))]});else{const t=(0,h.er)(),n=ye.find((e=>e.value===t));n&&this.state.drillDownLabel?e.setState({children:[...e.state.children.slice(0,1),n.getScene(this.state.drillDownLabel)]}):x.v.error(new Error("not setting breakdown view"),{msg:"setBreakdownView error"})}}constructor(e){var t;super(ze({loadingStates:{[fe.patterns]:!1,[fe.labels]:!1,[fe.fields]:!1,[fe.logs]:!1},loading:!0,body:null!==(t=e.body)&&void 0!==t?t:et(),$data:at(),$patternsData:tt(),$detectedLabelsData:nt(),$detectedFieldsData:rt(),$logsCount:it()},e)),We(this,"_variableDependency",new s.Sh(this,{variableNames:[u.EY,u.MB,u.mB,u.uw,u._Y]})),this.addActivationHandler(this.onActivate.bind(this))}}function et(){return new s.G1({direction:"column",children:[new s.vA({ySizing:"content",body:new je({})})]})}function tt(){return(0,o.FH)([(0,c.BM)(`{${u.S1}}`,"patterns",{refId:"patterns"})])}function nt(){return(0,o.FH)([(0,c.BM)(`{${u.S1}}`,"detected_labels",{refId:"detectedLabels"})])}function rt(){return(0,o.FH)([(0,c.BM)(u.SA,"detected_fields",{refId:"detectedFields"})])}function at(){return(0,o.rS)([(0,c.l)(u.SA,{refId:Qe})])}function it(){const e=(0,o.rS)([(0,c.l)(`sum(count_over_time(${u.SA}[$__auto]))`,{refId:Ke,queryType:"instant"})],{runQueriesMode:"manual"});if(e instanceof s.dt)return e;const t=new Error("log count query provider is not query runner!");throw x.v.error(t,{msg:"getLogCountQueryRunner: invalid return type"}),t}We(Ze,"Component",(({model:e})=>{const{body:t}=e.useState();return t?a().createElement(t.Component,{model:t}):a().createElement(l.LoadingPlaceholder,{text:"Loading..."})}))},866:(e,t,n)=>{n.d(t,{p:()=>g});var r,a,i,s=n(2672),l=n(5959),o=n.n(l),c=n(2007),u=n(6089),d=n(227),p=n(9055);class g extends s.Bs{setHover(e){this.setState({hover:e})}onClick(e){e?(0,p.wy)(this.state.labelName,this.state.labelValue,this):(0,p._J)(this.state.labelName,this.state.labelValue,this)}}i=({model:e})=>{const{ds:t,labelValue:n,labelName:r,hover:a}=e.useState(),i=(0,d.eT)(t,r).includes(n),s=(0,c.useStyles2)((e=>({wrapper:(0,u.css)({display:"flex",flexDirection:"column",justifyContent:"center",alignSelf:"center"})}))),l=i?`Remove ${n} from favorites`:`Add ${n} to favorites`;return o().createElement("span",{className:s.wrapper},o().createElement(c.ToolbarButton,{onMouseOver:()=>{e.setHover(!0)},onMouseOut:()=>{e.setHover(!1)},icon:o().createElement(c.Icon,{name:i?"favorite":"star",size:"lg",type:i?"mono":"default"}),color:i?"rgb(235, 123, 24)":"#ccc",onClick:()=>e.onClick(i),name:"star","aria-label":l,tooltip:l}))},(a="Component")in(r=g)?Object.defineProperty(r,a,{value:i,enumerable:!0,configurable:!0,writable:!0}):r[a]=i},1105:(e,t,n)=>{n.d(t,{X:()=>le,y:()=>ue});var r=n(6089),a=n(3241),i=n(5959),s=n.n(i),l=n(7781),o=n(2672),c=n(2007),u=n(227),d=n(3143),p=n(2718),g=n(8835),h=n(4750),v=n(4793),m=n(1220),f=n(9055);function b(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class y extends o.Bs{constructor(...e){super(...e),b(this,"getLink",(()=>{if(this.state.labelValue)return w(this.state.labelName,this.state.labelValue,this)})),b(this,"onClick",(()=>{S(this.state.labelName,this.state.labelValue,this)}))}}function S(e,t,n){(0,p.EE)(p.NO.service_selection,p.ir.service_selection.service_selected,{value:t,label:e}),(0,f._J)(e,t,n)}function w(e,t,n){var r;const a=(0,h.cR)(n),i=[...a.state.filters.filter((n=>!(n.key===e&&n.value===t))),{key:e,operator:v.w7.Equal,value:t}];e===d.OX&&(e=d.ky);const s=a.clone({filters:i});return(0,g.k9)(e,t,null===(r=s.urlSync)||void 0===r?void 0:r.getUrlState())}function O(e){return{button:(0,r.css)({alignSelf:"center"})}}b(y,"Component",(({model:e})=>{const t=(0,c.useStyles2)(O);(0,h.cR)(e).useState();const n=e.getLink();return s().createElement(c.LinkButton,{"data-testid":m.b.index.showLogsButton,tooltip:`View logs for ${e.state.labelValue}`,className:t.button,variant:"secondary",size:"sm",disabled:!n,href:e.getLink(),onClick:e.onClick},"Show logs")}));var x=n(7918),E=n(5183),C=n(4482);const k=()=>s().createElement(C.R,null,s().createElement("p",null,"Log volume has not been configured."),s().createElement("p",null,s().createElement(c.TextLink,{href:"https://grafana.com/docs/loki/latest/reference/api/#query-log-volume",external:!0},"Instructions to enable volume in the Loki config:")),s().createElement(c.Text,{textAlignment:"left"},s().createElement("pre",null,s().createElement("code",null,"limits_config:",s().createElement("br",null),"  volume_enabled: true")))),F=()=>s().createElement(C.R,null,s().createElement("p",null,"No service matched your search."));var P=n(1383),L=n(4462),j=n(5431),_=n(833),T=n(8531),D=n(5435),N=n(4002),$=n(8538),I=n(8315);function B(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class M extends o.Bs{}B(M,"Component",(({model:e})=>{const t=o.jh.getAncestor(e,ue),n=o.jh.getAncestor(e,W),{tabOptions:r,showPopover:a}=n.useState(),i=(0,c.useStyles2)(A),l=r.map((e=>{return t=function(e){for(var t=1;t{n.toggleShowPopover()},autoFocus:!0,isOpen:a,placeholder:"Search labels",options:l,isSearchable:!0,openMenuOnFocus:!0,onChange:e=>{e.value&&(n.toggleShowPopover(),t.setSelectedTab(e.value))}})))}));const A=e=>({card:{body:(0,r.css)({padding:e.spacing(1)}),p:(0,r.css)({maxWidth:300})}});function R(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function V(e){for(var t=1;t{var e;return null===(e=this.state.$labelsData)||void 0===e?void 0:e.state})()){var t;return null===(t=e.data)||void 0===t?void 0:t.series[0].fields.map((e=>({label:e.name,cardinality:e.values[0]})))}populatePrimaryLabelsVariableOptions(e){const t=o.jh.getAncestor(this,ue).getSelectedTab(),n=(0,u.sj)((0,h.S9)(this).getValue().toString()),r=e.map((e=>{const r=n.indexOf(e.label);return{label:e.label===d.OX?d.ky:e.label,value:e.label,active:t===e.label,saved:-1!==r,savedIndex:r}})).sort(((e,t)=>e.value===d.OX||t.value===d.OX?e.value===d.OX?-1:1:e.labelt.label?1:0));this.setState({tabOptions:r})}runDetectedLabels(){this.state.$labelsData.runQueries()}runDetectedLabelsSubs(){this._subs.add(o.jh.getTimeRange(this).subscribeToState((()=>{this.runDetectedLabels()}))),this._subs.add((0,h.S9)(this).subscribeToState((()=>{this.runDetectedLabels()})))}onActivate(){this.runDetectedLabels(),this.setState({popover:new M({})}),this.runDetectedLabelsSubs(),this._subs.add((0,h.S9)(this).subscribeToState((()=>{this.state.$labelsData.runQueries()}))),this._subs.add((0,h.El)(this).subscribeToState((()=>{var e;const t=this.getLabelsFromQueryRunnerState(null===(e=this.state.$labelsData)||void 0===e?void 0:e.state);t&&this.populatePrimaryLabelsVariableOptions(t)}))),this._subs.add(this.state.$labelsData.subscribeToState((e=>{var t;if((null===(t=e.data)||void 0===t?void 0:t.state)===l.LoadingState.Done){const t=this.getLabelsFromQueryRunnerState(e),n=o.jh.getAncestor(this,ue);t&&this.populatePrimaryLabelsVariableOptions(t);const r=n.getSelectedTab();(null==t?void 0:t.some((e=>e.label===r)))||n.selectDefaultLabelTab()}})))}constructor(e){super(V({showPopover:!1,$labelsData:(0,E.HF)({queries:[(0,x.BM)("","detected_labels")],runQueriesMode:"manual"}),tabOptions:[{label:d.ky,value:d.OX,saved:!0}]},e)),R(this,"removeSavedTab",(e=>{(0,u.Gg)((0,h.S9)(this).getValue().toString(),e);const t=this.getLabelsFromQueryRunnerState();t&&this.populatePrimaryLabelsVariableOptions(t);const n=o.jh.getAncestor(this,ue);n.getSelectedTab()===e&&n.selectDefaultLabelTab()})),R(this,"toggleShowPopover",(()=>{this.setState({showPopover:!this.state.showPopover})})),this.addActivationHandler(this.onActivate.bind(this))}}R(W,"Component",(({model:e})=>{const{tabOptions:t,showPopover:n,popover:u,$labelsData:p}=e.useState(),{data:g}=p.useState(),v=o.jh.getAncestor(e,ue);(0,h.El)(e).useState();const m=(0,c.useStyles2)(z),f=(0,i.useRef)(null);return s().createElement(c.TabsBar,{className:m.tabs},t.filter((e=>e.saved||e.active||e.value===d.OX)).sort(((e,t)=>{return e.value===d.OX||t.value===d.OX?e.value===d.OX?-1:1:(null!==(n=e.savedIndex)&&void 0!==n?n:0)-(null!==(r=t.savedIndex)&&void 0!==r?r:0);var n,r})).map((t=>{const n=s().createElement(c.Tab,{key:t.value,onChangeTab:()=>{v.setSelectedTab(t.value)},label:(0,I.EJ)(t.label,15,!0),active:t.active,suffix:t.value!==d.OX?n=>s().createElement(s().Fragment,null,s().createElement(c.Tooltip,{content:"Remove tab"},s().createElement(c.Icon,{onKeyDownCapture:n=>{"Enter"===n.key&&e.removeSavedTab(t.value)},onClick:n=>{n.stopPropagation(),e.removeSavedTab(t.value)},name:"times",className:(0,r.cx)(n.className)}))):void 0});return t.label.length>15?s().createElement(c.Tooltip,{key:t.value,content:t.label},n):n})),(null==g?void 0:g.state)===l.LoadingState.Loading&&s().createElement(c.Tab,{label:"Loading tabs",icon:"spinner"}),(null==g?void 0:g.state)===l.LoadingState.Done&&s().createElement("span",{className:m.addTab},s().createElement(c.Tab,{onChangeTab:e.toggleShowPopover,label:"Add label",ref:f,icon:"plus-circle"})),u&&s().createElement(c.PopoverController,{content:s().createElement(u.Component,{model:u})},((e,t,r)=>{const i={onBlur:t,onFocus:e};return s().createElement(s().Fragment,null,f.current&&s().createElement(s().Fragment,null,s().createElement(c.Popover,V((l=V({},r,a.rest),o=null!=(o={show:n,wrapperClassName:m.popover,referenceElement:f.current,renderArrow:!0})?o:{},Object.getOwnPropertyDescriptors?Object.defineProperties(l,Object.getOwnPropertyDescriptors(o)):function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t.push.apply(t,n)}return t}(Object(o)).forEach((function(e){Object.defineProperty(l,e,Object.getOwnPropertyDescriptor(o,e))})),l),i))));var l,o})))}));const z=e=>({tabs:(0,r.css)({overflowY:"hidden"}),addTab:(0,r.css)({label:"add-label-tab",color:e.colors.primary.text,"& button":{color:e.colors.primary.text}}),popover:(0,r.css)({borderRadius:e.shape.radius.default,boxShadow:e.shadows.z3,background:e.colors.background.primary,border:`1px solid ${e.colors.border.weak}`})});var H=n(866);const Q=e=>s().createElement(C.R,null,s().createElement("p",null,"No logs found in ",s().createElement("strong",null,e.labelName),".",s().createElement("br",null),"Please adjust time range or select another label."));var K=n(9829),q=n(558);function G(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function U(e){for(var t=1;t{const e=this.isSelected();this.state.included!==e.included&&this.setState(U({},e))})))}getFilter(){return{name:this.state.name,value:this.state.value}}constructor(e){var t,n;super((t=U({},e),n=null!=(n={included:null})?n:{},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t.push.apply(t,n)}return t}(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})),t)),G(this,"isSelected",(()=>{const e=(0,h.cR)(this).state.filters.find((e=>{const t=(0,h.z2)(d.MB,e);return e.key===this.state.name&&t.value===this.state.value}));return e?{included:e.operator===v.w7.Equal}:{included:!1}})),G(this,"onClick",(e=>{const t=this.getFilter();(0,q.Qt)(t.name,t.value,e,this,d.MB);const n=(0,h.cR)(this);(0,p.EE)(p.NO.service_selection,p.ir.service_selection.add_to_filters,{filterType:"index-filters",key:t.name,action:e,filtersLength:(null==n?void 0:n.state.filters.length)||0}),this.setState(U({},this.isSelected()))})),this.addActivationHandler(this.onActivate.bind(this))}}G(J,"Component",(({model:e})=>{const{value:t,hidden:n,included:r}=e.useState();if(n)return s().createElement(s().Fragment,null);const a=(0,c.useStyles2)(Y);return s().createElement("span",{className:a.wrapper},s().createElement(c.Button,{tooltip:!0===r?`Remove ${t} from filters`:`Add ${t} to filters`,variant:"secondary",fill:"outline",icon:!0===r?"minus":"plus",size:"sm","aria-selected":!0===r,className:a.includeButton,onClick:()=>!0===r?e.onClick("clear"):e.onClick("include"),"data-testid":m.b.exploreServiceDetails.buttonFilterInclude}))}));const Y=()=>({container:(0,r.css)({display:"flex",justifyContent:"center"}),includeButton:(0,r.css)({borderRadius:0}),wrapper:(0,r.css)({display:"flex",flexDirection:"column",justifyContent:"center",alignSelf:"center"})});var X=n(6059);function Z(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class ee extends o.Bs{}function te(e){return{icon:(0,r.css)({color:e.colors.text.disabled,marginLeft:e.spacing.x1}),searchPageCountWrap:(0,r.css)({display:"flex",alignItems:"center"}),select:(0,r.css)({maxWidth:"65px",marginLeft:e.spacing(1),marginRight:e.spacing(1)}),searchFieldPlaceholderText:(0,r.css)({fontSize:e.typography.bodySmall.fontSize,color:e.colors.text.disabled,alignItems:"center",display:"flex",flex:"1 0 auto",textWrapMode:"nowrap"})}}function ne(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function re(e){for(var t=1;t{const n=(0,c.useStyles2)(te),r=o.jh.getAncestor(e,ue),{countPerPage:a}=r.useState(),l=function(e){const t=20*Math.ceil(e/20),n=[];for(let r=20;r<=60&&r<=t;r+=20){let t=r.toString();r<20?t=r.toString():r>e&&(t=e.toString()),n.push({value:r.toString(),label:t})}return n}(t);return(0,i.useEffect)((()=>{var e,t;const n=null!==(t=null===(e=l[l.length-1])||void 0===e?void 0:e.value)&&void 0!==t?t:a.toString();a.toString()>n&&r.setState({countPerPage:parseInt(n,10)})}),[a,l,r]),s().createElement("span",{className:n.searchPageCountWrap},s().createElement("span",{className:n.searchFieldPlaceholderText},"Showing"," ",s().createElement(c.Select,{className:n.select,onChange:e=>{if(e.value){const t=parseInt(e.value,10);r.setState({countPerPage:t,currentPage:1}),r.updateBody(),(0,u.uF)(t)}},options:l,value:a.toString()})," ","of ",t," ",s().createElement(c.IconButton,{className:n.icon,"aria-label":"Count info",name:"info-circle",tooltip:`${t} labels have values for the selected time range. Total label count may differ`})))})),Z(ee,"Component",(({model:e,totalCount:t})=>{const n=o.jh.getAncestor(e,ue),{countPerPage:a,currentPage:i}=n.useState(),l=(0,c.useStyles2)((e=>({pagination:(0,r.css)({float:"none"}),paginationWrap:(0,r.css)({[e.breakpoints.up("lg")]:{display:"none"},[e.breakpoints.down("lg")]:{display:"flex",justifyContent:"flex-end",flex:"1 0 auto"}}),paginationWrapMd:(0,r.css)({[e.breakpoints.down("lg")]:{display:"none"},[e.breakpoints.up("lg")]:{display:"flex",justifyContent:"flex-end",flex:"1 0 auto"}})})));return t>a?s().createElement(s().Fragment,null,s().createElement("span",{className:l.paginationWrapMd},s().createElement(c.Pagination,{className:l.pagination,currentPage:i,numberOfPages:Math.ceil(t/a),onNavigate:e=>{n.setState({currentPage:e}),n.updateBody()}})),s().createElement("span",{className:l.paginationWrap},s().createElement(c.Pagination,{showSmallVersion:!0,className:l.pagination,currentPage:i,numberOfPages:Math.ceil(t/a),onNavigate:e=>{n.setState({currentPage:e}),n.updateBody()}}))):null}));const ie=T.config.featureToggles.exploreLogsAggregatedMetrics,se="__aggregated_metric__",le=(0,l.dateTime)("2024-08-30","YYYY-MM-DD"),oe="var-primary_label",ce="var-ds";class ue extends o.Bs{getUrlState(){const{key:e}=de(),t=(0,h.El)(this).state.filters[0];return t.key&&t.key!==e&&(0,h.El)(this).setState({filters:[ae(re({},t),{key:null!=e?e:t.key})]}),{}}updateFromUrl(e){}addDatasourceChangeToBrowserHistory(e){const t=T.locationService.getLocation(),n=new URLSearchParams(t.search),r=n.get(ce);if(r&&e!==r){const r=t.pathname+t.search;n.set(ce,e);const a=t.pathname+"?"+n.toString();r!==a&&(0,g.ad)(a)}}addLabelChangeToBrowserHistory(e,t=!1){const{key:n,search:r,location:a}=de();if(n){const i=null==n?void 0:n.split("|");if((null==i?void 0:i[0])!==e){i[0]=e,r.set(oe,i.join("|"));const n=a.pathname+a.search,s=a.pathname+"?"+r.toString();n!==s&&(t?T.locationService.replace(s):(0,g.ad)(s))}}}getSelectedTab(){var e;return null===(e=(0,h.El)(this).state.filters[0])||void 0===e?void 0:e.key}selectDefaultLabelTab(){this.addLabelChangeToBrowserHistory(d.OX,!0),this.setSelectedTab(d.OX)}setSelectedTab(e){(0,u.cO)((0,h.S9)(this).getValue().toString(),e),(0,h.h)(this),(0,h.BL)(e,this)}buildServiceLayout(e,t,n,r,a,i){var s;let u;n.to.diff(n.from,"hours")>=4&&n.to.diff(n.from,"hours")<=26&&(u="2h");const p=o.d0.timeseries().setTitle(t).setData((0,E.rS)([(0,x.l)(this.getMetricExpression(t,r,a),{legendFormat:`{{${d.e4}}}`,splitDuration:u,refId:`ts-${t}`,step:r.state.value===se?"10s":void 0})],{runQueriesMode:"manual"})).setCustomFieldConfig("stacking",{mode:c.StackingMode.Normal}).setCustomFieldConfig("fillOpacity",100).setCustomFieldConfig("lineWidth",0).setCustomFieldConfig("pointSize",0).setCustomFieldConfig("drawStyle",c.DrawStyle.Bars).setUnit("short").setOverrides(E.jC).setOption("legend",{showLegend:!0,calcs:["sum"],placement:"right",displayMode:c.LegendDisplayMode.Table}).setHeaderActions([new H.p({ds:null===(s=i.getValue())||void 0===s?void 0:s.toString(),labelName:e,labelValue:t}),new J({name:e,value:t,hidden:this.isAggregatedMetricsActive()}),new y({labelValue:t,labelName:e})]).build();p.setState({extendPanelContext:(n,r)=>this.extendTimeSeriesLegendBus(e,t,r,p)});const g=new o.xK({$behaviors:[new o.Gg.K2({key:"serviceCrosshairSync",sync:l.DashboardCursorSync.Crosshair})],body:p});return g.addActivationHandler((()=>{var e;(null===(e=(0,K.oh)(g)[0].state.data)||void 0===e?void 0:e.state)!==l.LoadingState.Done&&this.runPanelQuery(g)})),g}isAggregatedMetricsActive(){const e=this.getQueryOptionsToolbar();return!(null==e?void 0:e.state.options.aggregatedMetrics.disabled)&&(null==e?void 0:e.state.options.aggregatedMetrics.active)}formatPrimaryLabelForUI(){const e=this.getSelectedTab();return e===d.OX?d.ky:e}setVolumeQueryRunner(){this.setState({$data:(0,E.HF)({queries:[(0,x.$k)(`{${d.kl}, ${d.ll}}`,"volume",this.getSelectedTab())],runQueriesMode:"manual"})}),this.subscribeToVolume()}doVariablesNeedSync(){const e=(0,h.cR)(this),t=(0,h.aW)(this),n=this.getSelectedTab(),r=e.state.filters.filter((e=>e.key!==n));return{filters:r,needsSync:!(0,_.B)(r,t.state.filters)}}syncVariables(){const e=(0,h.aW)(this),{filters:t,needsSync:n}=this.doVariablesNeedSync();n&&e.setState({filters:t})}onActivate(){var e;this.fixRequiredUrlParams(),this.syncVariables(),this.setVolumeQueryRunner(),this.subscribeToPrimaryLabelsVariable(),this.subscribeToLabelFilterChanges(),this.subscribeToActiveTabVariable((0,h.El)(this)),(null===(e=this.state.$data.state.data)||void 0===e?void 0:e.state)!==l.LoadingState.Done&&this.runVolumeOnActivate(),this.subscribeToTimeRange(),this.subscribeToDatasource(),this.subscribeToAggregatedMetricToggle(),this.subscribeToAggregatedMetricVariable()}runVolumeOnActivate(){var e,t;this.isTimeRangeTooEarlyForAggMetrics()?(this.onUnsupportedAggregatedMetricTimeRange(),(null===(e=this.state.$data.state.data)||void 0===e?void 0:e.state)!==l.LoadingState.Done&&this.runVolumeQuery()):(this.onSupportedAggregatedMetricTimeRange(),(null===(t=this.state.$data.state.data)||void 0===t?void 0:t.state)!==l.LoadingState.Done&&this.runVolumeQuery())}subscribeToAggregatedMetricToggle(){var e;this._subs.add(null===(e=this.getQueryOptionsToolbar())||void 0===e?void 0:e.subscribeToState(((e,t)=>{e.options.aggregatedMetrics.userOverride!==t.options.aggregatedMetrics.userOverride&&this.runVolumeQuery(!0)})))}subscribeToDatasource(){this._subs.add((0,h.S9)(this).subscribeToState((e=>{this.addDatasourceChangeToBrowserHistory(e.value.toString()),this.runVolumeQuery()})))}subscribeToActiveTabVariable(e){this._subs.add(e.subscribeToState(((e,t)=>{if(e.filterExpression!==t.filterExpression){const t=e.filters[0].key;this.addLabelChangeToBrowserHistory(t);const{needsSync:n}=this.doVariablesNeedSync();n?this.syncVariables():this.runVolumeQuery(!0)}})))}subscribeToAggregatedMetricVariable(){this._subs.add((0,h.vm)(this).subscribeToState(((e,t)=>{e.value!==t.value&&(this.setState({body:new o.gF({children:[]})}),this.updateBody(!0))})))}subscribeToPrimaryLabelsVariable(){const e=(0,h.cR)(this);this._subs.add(e.subscribeToState(((e,t)=>{(0,_.B)(e.filters,t.filters)||this.syncVariables()})))}subscribeToLabelFilterChanges(){const e=(0,h.aW)(this);this._subs.add(e.subscribeToState(((e,t)=>{(0,_.B)(e.filters,t.filters)||this.runVolumeQuery(!0)})))}subscribeToVolume(){this._subs.add(this.state.$data.subscribeToState(((e,t)=>{var n,r,a;(null===(n=e.data)||void 0===n?void 0:n.state)!==l.LoadingState.Done||(0,_.B)(null==t||null===(r=t.data)||void 0===r?void 0:r.series,null==e||null===(a=e.data)||void 0===a?void 0:a.series)||this.updateBody(!0)})))}subscribeToTimeRange(){this._subs.add(o.jh.getTimeRange(this).subscribeToState((()=>{this.isTimeRangeTooEarlyForAggMetrics()?this.onUnsupportedAggregatedMetricTimeRange():this.onSupportedAggregatedMetricTimeRange(),this.runVolumeQuery()})))}fixRequiredUrlParams(){const{key:e}=de();e||this.selectDefaultLabelTab()}isTimeRangeTooEarlyForAggMetrics(){return o.jh.getTimeRange(this).state.value.from.isBefore((0,l.dateTime)(le))}onUnsupportedAggregatedMetricTimeRange(){const e=this.getQueryOptionsToolbar();null==e||e.setState({options:{aggregatedMetrics:ae(re({},null==e?void 0:e.state.options.aggregatedMetrics),{disabled:!0})}})}getQueryOptionsToolbar(){return o.jh.getAncestor(this,$.P).state.controls.find((e=>e instanceof N.s))}onSupportedAggregatedMetricTimeRange(){const e=this.getQueryOptionsToolbar();null==e||e.setState({options:{aggregatedMetrics:ae(re({},null==e?void 0:e.state.options.aggregatedMetrics),{disabled:!1})}})}runVolumeQuery(e=!1){e&&this.setVolumeQueryRunner(),this.updateAggregatedMetricVariable(),this.state.$data.runQueries()}updateAggregatedMetricVariable(){const e=(0,h.vm)(this),t=(0,h.cR)(this);this.isTimeRangeTooEarlyForAggMetrics()&&ie||!this.isAggregatedMetricsActive()?(e.changeValueTo(d.OX),t.setState({hide:D.zL.dontHide}),e.changeValueTo(d.OX),o.jh.findByKeyAndType(this,$.y,X.H).setState({hidden:!1})):(e.changeValueTo(se),t.setState({hide:D.zL.hideVariable,filters:[]}),o.jh.findByKeyAndType(this,$.y,X.H).setState({hidden:!0}))}updateTabs(){if(!this.state.tabs){const e=new W({});this.setState({tabs:e})}}getGridItems(){return this.state.body.state.children}getVizPanel(e){return e.state.body instanceof o.Eb?e.state.body:void 0}runPanelQuery(e){if(e.isActive){const n=(0,K.oh)(e);if(1===n.length){var t;const e=n[0],r=e.state.queries[0],a=null===(t=e.state.data)||void 0===t?void 0:t.timeRange,i=o.jh.getTimeRange(this),s=a?Math.abs(i.state.value.from.diff(null==a?void 0:a.from,"s")):1/0,l=a?Math.abs(i.state.value.to.diff(null==a?void 0:a.to,"s")):1/0,c=o.jh.interpolate(this,r.expr);(e.state.key!==c||s>0||l>0)&&(e.setState({key:c}),e.runQueries())}}}updateBody(e=!1){var t;const{labelsToQuery:n}=this.getLabels(null===(t=this.state.$data.state.data)||void 0===t?void 0:t.series),r=this.getSelectedTab();if(this.updateTabs(),this.state.paginationScene||this.setState({paginationScene:new ee({})}),n&&0!==n.length){const t=[],a=this.getGridItems(),i=o.jh.getTimeRange(this).state.value,s=(0,h.vm)(this),l=(0,h.El)(this),c=(0,h.S9)(this),u=(this.state.currentPage-1)*this.state.countPerPage,d=u+this.state.countPerPage;for(const o of n.slice(u,d)){const n=a.filter((e=>{const t=this.getVizPanel(e);return(null==t?void 0:t.state.title)===o}));if(2===n.length)t.push(n[0],n[1]),n[0].isActive&&e&&this.runPanelQuery(n[0]),n[1].isActive&&e&&this.runPanelQuery(n[1]);else{const e=this.buildServiceLayout(r,o,i,s,l,c),n=this.buildServiceLogsLayout(r,o);t.push(e,n)}}this.state.body.setState({children:t,isLazy:!0,templateColumns:"repeat(auto-fit, minmax(500px, 1fr) minmax(300px, 70vw))",autoRows:"200px",md:{templateColumns:"1fr",rowGap:1,columnGap:1}})}else this.state.body.setState({children:[]})}updateServiceLogs(e,t){var n;if(!this.state.body)return void this.updateBody();const{labelsToQuery:r}=this.getLabels(null===(n=this.state.$data.state.data)||void 0===n?void 0:n.series),a=null==r?void 0:r.indexOf(t);if(void 0===a||a<0)return;let i=[...this.getGridItems()];i.splice(2*a+1,1,this.buildServiceLogsLayout(e,t)),this.state.body.setState({children:i})}getLogExpression(e,t,n){return`{${e}=\`${t}\` , ${d.ll} }${n}`}getMetricExpression(e,t,n){const r=n.state.filters[0];return t.state.value===se?r.key===d.OX?`sum by (${d.e4}) (sum_over_time({${se}=\`${e}\` } | logfmt | unwrap count [$__auto]))`:`sum by (${d.e4}) (sum_over_time({${se}=~\`.+\` } | logfmt | ${r.key}=\`${e}\` | unwrap count [$__auto]))`:`sum by (${d.e4}) (count_over_time({ ${r.key}=\`${e}\`, ${d.ll} } [$__auto]))`}getLabels(e){var t,n,r;const a=null!==(r=null==e||null===(t=e[0])||void 0===t?void 0:t.fields[0].values)&&void 0!==r?r:[],i=null===(n=(0,h.S9)(this).getValue())||void 0===n?void 0:n.toString(),s=(0,h.eY)(this).getValue(),l=this.getSelectedTab(),o=function(e,t,n,r){if(!(null==e?void 0:e.length))return[];".+"===n&&(n="");const a=(0,u.eT)(t,r).filter((t=>t.toLowerCase().includes(n.toLowerCase())&&e.includes(t)));return Array.from(new Set([...a,...e]))}(a,i,String(s),l);return{labelsByVolume:a,labelsToQuery:o}}constructor(e){var t,n;super(re({body:new o.gF({children:[]}),$variables:new o.Pj({variables:[new j.m({name:d.Du,label:"Service",hide:D.zL.hideVariable,skipUrlSync:!0,value:".+"}),new j.m({name:d.Wi,label:"",hide:D.zL.hideLabel,value:d.OX,skipUrlSync:!0,options:[{value:d.OX,label:d.OX},{value:se,label:se}]}),new o.H9({name:d.Gb,hide:D.zL.hideLabel,expressionBuilder:e=>function(e){if(e.length){const t=e[0];return`${t.key}${t.operator}\`${t.value}\``}return""}(e),filters:[{key:null!==(t=de().key)&&void 0!==t?t:d.OX,value:".+",operator:"=~"}]}),new o.H9({name:d.fi,datasource:d.eL,layout:"vertical",filters:[],expressionBuilder:x.VW,hide:D.zL.hideVariable,key:"adhoc_service_filter_replica",skipUrlSync:!0})]}),$data:(0,E.HF)({queries:[],runQueriesMode:"manual"}),serviceLevel:new Map,countPerPage:null!==(n=(0,u.KH)())&&void 0!==n?n:20,currentPage:1,showPopover:!1,tabOptions:[{label:d.ky,value:d.OX}]},e)),ne(this,"_urlSync",new o.So(this,{keys:[oe]})),ne(this,"onSearchServicesChange",(0,a.debounce)((e=>{const t=(0,h.eY)(this);(e?(0,x.vC)(e):".+")!==t.state.value&&t.setState({value:e?(0,x.vC)(e):".+",label:null!=e?e:""});const n=(0,h.El)(this),r=n.state.filters[0];(0,x.vC)(t.state.value.toString())!==r.value&&n.setState({filters:[ae(re({},r),{value:(0,x.vC)(t.state.value.toString())})]}),this.setState({currentPage:1}),(0,p.EE)(p.NO.service_selection,p.ir.service_selection.search_services_changed,{searchQuery:e})}),500)),ne(this,"getLevelFilterForService",(e=>{let t=this.state.serviceLevel.get(e)||[];return 0===t.length?"":` | ${t.map((e=>("logs"===e&&(e=""),`${d.e4}=\`${e}\``))).join(" or ")} `})),ne(this,"buildServiceLogsLayout",((e,t)=>{const n=this.getLevelFilterForService(t),r=new o.xK({$behaviors:[new o.Gg.K2({sync:l.DashboardCursorSync.Off})],body:o.d0.logs().setHoverHeader(!0).setData((0,E.rS)([(0,x.l)(this.getLogExpression(e,t,n),{maxLines:100,refId:`logs-${t}`})],{runQueriesMode:"manual"})).setTitle(t).setOption("showTime",!0).setOption("enableLogDetails",!1).build()});return r.addActivationHandler((()=>{var e;(null===(e=(0,K.oh)(r)[0].state.data)||void 0===e?void 0:e.state)!==l.LoadingState.Done&&this.runPanelQuery(r)})),r})),ne(this,"extendTimeSeriesLegendBus",((e,t,n,r)=>{const a=n.onToggleSeriesVisibility;n.onToggleSeriesVisibility=(n,i)=>{var s,l,o;null==a||a(n,i);const c=(0,P.vX)(null!==(o=null===(l=r.state.$data)||void 0===l||null===(s=l.state.data)||void 0===s?void 0:s.series)&&void 0!==o?o:[]),u=(0,P.pC)(n,this.state.serviceLevel.get(t),i,c);this.state.serviceLevel.set(t,u),this.updateServiceLogs(e,t)}})),this.addActivationHandler(this.onActivate.bind(this))}}function de(){const e=T.locationService.getLocation(),t=new URLSearchParams(e.search),n=t.get(oe),r=null==n?void 0:n.split("|");return{key:null==r?void 0:r[0],search:t,location:e}}function pe(e){return{container:(0,r.css)({display:"flex",flexDirection:"column",flexGrow:1,position:"relative"}),headingWrapper:(0,r.css)({marginTop:e.spacing(1)}),loadingText:(0,r.css)({margin:0}),header:(0,r.css)({position:"absolute",right:0,top:"4px",zIndex:2}),bodyWrapper:(0,r.css)({flexGrow:1,display:"flex",flexDirection:"column"}),body:(0,r.css)({flexGrow:1,display:"flex",flexDirection:"column"}),searchPaginationWrap:(0,r.css)({label:"search-pagination-wrap",display:"flex",alignItems:"center",flexWrap:"wrap",flex:"1 0 auto",[e.breakpoints.down("md")]:{marginTop:e.spacing(1),width:"100%"}}),searchWrapper:(0,r.css)({label:"search-wrapper",display:"flex",alignItems:"center",flexWrap:"wrap",[e.breakpoints.down("md")]:{flexDirection:"column",alignItems:"flex-start"}}),searchField:(0,r.css)({marginTop:e.spacing(1),position:"relative"})}}ne(ue,"Component",(({model:e})=>{var t;const n=(0,c.useStyles2)(pe),{body:r,$data:a,tabs:i,paginationScene:o}=e.useState(),{data:u}=a.useState(),d=e.getSelectedTab(),p=(0,h.eY)(e),{label:v,value:m}=p.useState(),f=m&&".+"!==m,{labelsByVolume:b,labelsToQuery:y}=e.getLabels(null==u?void 0:u.series),O=(null==u?void 0:u.state)===l.LoadingState.Loading||(null==u?void 0:u.state)===l.LoadingState.Streaming||void 0===u,E=(null===(t=a.state.data)||void 0===t?void 0:t.state)===l.LoadingState.Error,C=e.formatPrimaryLabelForUI();let P=p.getValue().toString();".+"===P&&(P="");const j=(0,x.sT)(P);var _;return s().createElement("div",{className:n.container},s().createElement("div",{className:n.bodyWrapper},i&&s().createElement(i.Component,{model:i}),s().createElement(c.Field,{className:n.searchField},s().createElement("div",{className:n.searchWrapper},s().createElement(L.f,{initialFilter:{label:j,value:P,icon:"filter"},isLoading:O,value:P||v,onChange:t=>(t=>{e.onSearchServicesChange(t)})(t),selectOption:t=>{!function(e,t,n){const r=w(e,t,n);S(e,t,n),(0,g.ad)(r)}(d,t,e)},label:C,options:null!==(_=null==y?void 0:y.map((e=>({value:e,label:e}))))&&void 0!==_?_:[]}),!O&&s().createElement("span",{className:n.searchPaginationWrap},o&&s().createElement(ee.PageCount,{model:o,totalCount:y.length}),o&&s().createElement(ee.Component,{model:o,totalCount:y.length})))),!O&&E&&s().createElement(k,null),!O&&!E&&f&&!(null==b?void 0:b.length)&&s().createElement(F,null),!O&&!E&&!f&&!(null==b?void 0:b.length)&&s().createElement(Q,{labelName:d}),!(!O&&E)&&s().createElement("div",{className:n.body},s().createElement(r.Component,{model:r}),s().createElement("div",{className:n.headingWrapper},o&&s().createElement(ee.Component,{totalCount:y.length,model:o})))))}))},8760:(e,t,n)=>{n.d(t,{C:()=>s});var r=n(5959),a=n.n(r),i=n(2007);function s(e){return a().createElement(i.RadioButtonGroup,{options:[{label:"Logs",value:"logs",description:"Show results in logs visualisation"},{label:"Table",value:"table",description:"Show results in table visualisation"}],size:"sm",value:e.vizType,onChange:e.onChange})}},5431:(e,t,n)=>{n.d(t,{m:()=>s});var r=n(1269),a=n(2672);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class s extends a.n8{getValueOptions(e){return(0,r.of)(this.state.options)}constructor(e){super(function(e){for(var t=1;t(0,a.yC)(e)))},7063:(e,t,n)=>{n.d(t,{K:()=>g});var r=n(2672),a=n(4793),i=n(3241),s=n(3143),l=n(4750),o=n(5111),c=n(4011),u=n(227);function d(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function p(e){for(var t=1;te)).forEach((e=>{const t=this.joinCombinedFiltersValues(e,"|");for(const n in e){const r=e[n].operator;a.push({key:n,operator:r,value:t[n]})}})),a}getExpr(){let{equalsFilters:e,notEqualsFilters:t,regexEqualFilters:n,regexNotEqualFilters:r,ltFilters:a,lteFilters:i,gtFilters:s,gteFilters:l}=this.getCombinedLabelFilters();this.options.debug&&console.info("combined filters after merge",{equalsFilters:e,notEqualsFilters:t,regexEqualFilters:n,regexNotEqualFilters:r,ltFilters:a,lteFilters:i,gtFilters:s,gteFilters:l});const o=this.buildLabelsLogQLFromFilters({equalsFilters:e,notEqualsFilters:t,regexEqualFilters:n,regexNotEqualFilters:r,ltFilters:a,lteFilters:i,gtFilters:s,gteFilters:l});var c;return o?(null!==(c=this.options.prefix)&&void 0!==c?c:"")+o:""}getLabelsExpr(e){return this.options=p({},{joinMatchFilters:!0,decodeFilters:!1,filterType:"indexed"},e),this.getExpr()}getMetadataExpr(e){return this.options=p({},{filterSeparator:" |",prefix:"| ",joinMatchFilters:!1,decodeFilters:!1,filterType:"field"},e),this.getExpr()}getLevelsExpr(e){return this.options=p({},{filterSeparator:" |",prefix:"| ",joinMatchFilters:!1,decodeFilters:!1,filterType:"field"},e),this.getExpr()}getFieldsExpr(e){return this.options=p({},{filterSeparator:" |",prefix:"| ",joinMatchFilters:!1,decodeFilters:!0,filterType:"field"},e),this.getExpr()}buildLabelsLogQLFromFilters({equalsFilters:e,notEqualsFilters:t,regexEqualFilters:n,regexNotEqualFilters:r,ltFilters:s,lteFilters:l,gtFilters:o,gteFilters:c}){let u,d,p,g,h,v,m,f;const b=[];var y;this.options.joinMatchFilters?(u=this.joinCombinedFiltersValues(e,"|"),d=this.joinCombinedFiltersValues(t,"|"),p=this.joinCombinedFiltersValues(n,"|"),g=this.joinCombinedFiltersValues(r,"|"),b.push(...this.buildJoinedFilters(u,a.KQ.Equal)),b.push(...this.buildJoinedFilters(d,a.KQ.NotEqual)),b.push(...this.buildJoinedFilters(p,a.KQ.RegexEqual)),b.push(...this.buildJoinedFilters(g,a.KQ.RegexNotEqual))):(u=this.getFilterValues(e),d=this.getFilterValues(t),p=this.getFilterValues(n),g=this.getFilterValues(r),b.push(...this.buildFilter(u,a.KQ.Equal)),b.push(...this.buildFilter(d,a.KQ.NotEqual)),b.push(...this.buildFilter(p,a.KQ.RegexEqual)),b.push(...this.buildFilter(g,a.KQ.RegexNotEqual))),h=this.getFilterValues(s),v=this.getFilterValues(l),m=this.getFilterValues(o),f=this.getFilterValues(c),b.push(...this.buildFilter(h,a.Rk.lt)),b.push(...this.buildFilter(v,a.Rk.lte)),b.push(...this.buildFilter(m,a.Rk.gt)),b.push(...this.buildFilter(f,a.Rk.gte)),this.options.debug&&console.info("combined filters after stringify",{equalFiltersStrings:u,notEqualsFiltersStrings:d,regexEqualFiltersStrings:p,regexNotEqualFiltersStrings:g,ltFiltersStrings:h,lteFiltersStrings:v,gtFiltersStrings:m,gteFiltersStrings:f,allFilters:b});const S=(0,i.trim)(this.combineValues(b,`${null!==(y=this.options.filterSeparator)&&void 0!==y?y:","} `));return this.options.debug&&console.info("DEBUG labels expr",{allFiltersString:S}),S}getCombinedLabelFilters(){const{[a.KQ.Equal]:e,[a.KQ.NotEqual]:t,[a.KQ.RegexEqual]:n,[a.KQ.RegexNotEqual]:r,[a.Rk.lt]:i,[a.Rk.lte]:s,[a.Rk.gt]:l,[a.Rk.gte]:o}=this.groupFiltersByKey(this.filters);let c,u,d,p,g,h,v,m;return this.options.joinMatchFilters?(c=this.combineFiltersValues(e,a.KQ.RegexEqual),u=this.combineFiltersValues(t,a.KQ.RegexNotEqual),d=this.combineFiltersValues(n),p=this.combineFiltersValues(r)):(c=this.combineFiltersValues(e),u=this.combineFiltersValues(t),d=this.combineFiltersValues(n),p=this.combineFiltersValues(r)),g=this.combineFiltersValues(i),h=this.combineFiltersValues(s),v=this.combineFiltersValues(l),m=this.combineFiltersValues(o),this.options.debug&&console.info("combined filters",{equalsFilters:c,notEqualsFilters:u,regexEqualFilters:d,regexNotEqualFilters:p}),this.options.joinMatchFilters&&(c&&(d=this.mergeFilters(a.KQ.RegexEqual,c,d),c=this.removeStaleOperators(c,a.KQ.Equal)),u&&(p=this.mergeFilters(a.KQ.RegexNotEqual,u,p),u=this.removeStaleOperators(u,a.KQ.NotEqual))),{equalsFilters:c,notEqualsFilters:u,regexEqualFilters:d,regexNotEqualFilters:p,ltFilters:g,lteFilters:h,gtFilters:v,gteFilters:m}}buildFilter(e,t){const n=[];for(const r in e){const a=[],i=e[r];(0,o.iu)(t)?i.forEach((e=>a.push(this.buildFilterString(r,t,e,"")))):i.forEach((e=>a.push(this.buildFilterString(r,t,e)))),(0,o.BG)(t)?n.push(a.join(` ${this.positiveFilterValueSeparator} `)):n.push(a.join(` ${this.negativeFilterValueSeparator} `))}return n}buildJoinedFilters(e,t){const n=[];for(const r in e)n.push(this.buildFilterString(r,t,e[r]));return n}removeStaleOperators(e,t){const n={};return Object.keys(e).forEach((r=>{e[r].operator===t&&(n[r]=e[r])})),n}mergeFilters(e,t,n){return Object.keys(t).filter((n=>t[n].operator===e)).map((e=>({values:t[e].values,key:e}))).forEach((r=>{void 0===n&&(n={[r.key]:{values:[],operator:e}}),void 0===n[r.key]&&(n[r.key]={values:[],operator:e}),n[r.key].values.push(...this.mergeCombinedFiltersValues(t[r.key],e))})),n}mergeCombinedFiltersValues(e,t){var n;const r=[];return e.operator===t&&(null===(n=e.values)||void 0===n?void 0:n.length)&&r.push(...e.values),r}joinCombinedFiltersValues(e,t){const n={};for(const r in e)e[r].values.length&&(n[r]=this.combineValues(e[r].values,t));return n}getFilterValues(e){const t={};for(const n in e)e[n].values.length&&(t[n]=e[n].values);return t}combineValues(e,t){return e.join(`${t}`)}combineFiltersValues(e,t){let n={};for(const i in e){if(!e[i].length)continue;const s=(0,c.kR)(e[i][0].operator),l=null!=t?t:s,o=e[i][0];if(n[i]={values:[],operator:l},1===e[i].length){var r;const e=this.escapeFieldValue(o.operator,o.value,null!==(r=o.valueLabels)&&void 0!==r?r:[]);n[i]={operator:s,values:[e]},this.options.debug&&console.info("single value filter",{filter:o,filterString:e})}else{const t=this.escapeFieldValues(i,e,l);var a;void 0===n[i].operator?n[i]={operator:l,values:t}:null===(a=n[i].values)||void 0===a||a.push(...t)}}return n}escapeFieldValues(e,t,n){return t[e].map((e=>{var t;return this.escapeFieldValue(n,e.value,null!==(t=e.valueLabels)&&void 0!==t?t:[])}))}escapeFieldValue(e,t,n){const a=(0,s.zE)(t);return this.options.decodeFilters&&(t=(0,l.bu)({value:t,valueLabels:n}).value),t===s.ZO?(this.options.debug&&console.info("empty variable value, do not escape"),t):a?(this.options.debug&&console.info("ESCAPE: user input - exact selector",{operator:e,value:t,result:r.Go.escapeLabelValueInExactSelector((0,s.Dx)(t))}),r.Go.escapeLabelValueInExactSelector((0,s.Dx)(t))):(0,o.SM)(e)?(this.options.debug&&console.info("ESCAPE: regex selector",{operator:e,value:t}),r.Go.escapeLabelValueInRegexSelector(t)):(this.options.debug&&console.info("ESCAPE: exact selector",{operator:e,value:t}),r.Go.escapeLabelValueInExactSelector(t))}buildFilterString(e,t,n,r='"'){if(n===s.ZO)return`${e}${t}${n}`;const a=`${e}${t}${r}${n}${r}`;return this.options.debug&&console.info("buildDoubleQuotedFilter",{filter:{key:e,operator:t,value:n},filterString:a}),a}groupFiltersByKey(e){let t=e.filter((e=>{var t;return!(null===(t=this.options.ignoreKeys)||void 0===t?void 0:t.includes(e.key))||(0,o.SM)(e.operator)}));"indexed"===this.options.filterType&&t.length<1&&(t=e);const n=t.filter((e=>(0,o.BG)(e.operator)&&!(0,o.SM)(e.operator))),r=t.filter((e=>(0,o.BG)(e.operator)&&(0,o.SM)(e.operator))),s=t.filter((e=>(0,o.Lw)(e.operator)&&!(0,o.SM)(e.operator))),l=t.filter((e=>(0,o.Lw)(e.operator)&&(0,o.SM)(e.operator))),c=t.filter((e=>e.operator===a.w7.gt)),u=t.filter((e=>e.operator===a.w7.gte)),d=t.filter((e=>e.operator===a.w7.lt)),p=t.filter((e=>e.operator===a.w7.lte)),g=(0,i.groupBy)(n,(e=>e.key)),h=(0,i.groupBy)(r,(e=>e.key)),v=(0,i.groupBy)(s,(e=>e.key)),m=(0,i.groupBy)(l,(e=>e.key)),f=(0,i.groupBy)(c,(e=>e.key)),b=(0,i.groupBy)(u,(e=>e.key)),y=(0,i.groupBy)(d,(e=>e.key)),S=(0,i.groupBy)(p,(e=>e.key));return{[a.w7.Equal]:g,[a.w7.RegexEqual]:h,[a.w7.NotEqual]:v,[a.w7.RegexNotEqual]:m,[a.w7.gt]:f,[a.w7.gte]:b,[a.w7.lt]:y,[a.w7.lte]:S}}constructor(e,t={joinMatchFilters:!0,decodeFilters:!1,filterType:"field"}){d(this,"filters",void 0),d(this,"options",void 0),d(this,"positiveFilterValueSeparator","or"),d(this,"negativeFilterValueSeparator","|"),this.filters=e,this.options=t,this.options.debug||(this.options.debug=(0,u.Rb)())}}},2718:(e,t,n)=>{n.d(t,{EE:()=>i,NO:()=>s,ir:()=>l});var r=n(8531),a=n(2533);const i=(e,t,n)=>{(0,r.reportInteraction)(((e,t)=>`${a.id.replace(/-/g,"_")}_${e}_${t}`)(e,t),n)},s={service_selection:"service_selection",service_details:"service_details",all:"all"},l={[s.service_selection]:{search_services_changed:"search_services_changed",service_selected:"service_selected",aggregated_metrics_toggled:"aggregated_metrics_toggled",add_to_filters:"add_to_filters"},[s.service_details]:{open_in_explore_clicked:"open_in_explore_clicked",action_view_changed:"action_view_changed",add_to_filters_in_breakdown_clicked:"add_to_filters_in_breakdown_clicked",select_field_in_breakdown_clicked:"select_field_in_breakdown_clicked",level_in_logs_volume_clicked:"level_in_logs_volume_clicked",label_in_panel_summary_clicked:"label_in_panel_summary_clicked",layout_type_changed:"layout_type_changed",search_string_in_logs_changed:"search_string_in_logs_changed",search_string_in_variables_changed:"search_string_in_variables_changed",pattern_removed:"pattern_removed",pattern_selected:"pattern_selected",pattern_field_clicked:"pattern_field_clicked",logs_visualization_toggle:"logs_visualization_toggle",logs_detail_filter_applied:"logs_detail_filter_applied",logs_popover_line_filter:"logs_popover_line_filter",logs_toggle_displayed_field:"logs_toggle_displayed_field",logs_clear_displayed_fields:"logs_clear_displayed_fields",value_breakdown_sort_change:"value_breakdown_sort_change",wasm_not_supported:"wasm_not_supported",change_viz_type:"change_viz_type"},[s.all]:{interval_too_long:"interval_too_long",open_in_explore_menu_clicked:"open_in_explore_menu_clicked"}}},833:(e,t,n)=>{n.d(t,{B:()=>i,n:()=>s});var r=n(3241),a=n.n(r);const i=(e,t)=>{if(typeof e!=typeof t)return!1;const n=new Set(e),r=new Set(t);return n.size===r.size&&a().isEqual(n,r)},s=(e,t)=>typeof e==typeof t&&a().isEqual(e,t)},2854:(e,t,n)=>{n.r(t),n.d(t,{DETECTED_FIELDS_CARDINALITY_NAME:()=>K,DETECTED_FIELDS_NAME_FIELD:()=>Q,DETECTED_FIELDS_PARSER_NAME:()=>q,DETECTED_FIELDS_TYPE_NAME:()=>G,WRAPPED_LOKI_DS_UID:()=>H,WrappedLokiDatasource:()=>U,default:()=>J});var r=n(7781),a=n(8531),i=n(2672),s=n(1269),l=n(9829),o=n(6001),c=n(3143),u=n(2533),d=n(5745),p=n(2344),g=n(8682);function h(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function v(e){for(var t=1;tfunction(e){return e.trim().length>2&&!function(e,t){let n=!1;return p.K3.parse(e).iterate({enter:({type:e})=>{if(e.id===t)return n=!0,!1}}),n}(e,p.Yw)}(e.expr)))}(e))return!1;if(function(e){return e.targets.find((e=>"instant"===e.queryType))}(e))return!1;for(let n=0;ne.replace("}",`, __stream_shard__=~"${b}"}`),S=(e,t)=>{if(void 0===t||0===t.length)return e.map((e=>m(v({},e),{expr:e.expr.replace(`, __stream_shard__=~"${b}"}`,"}")})));let n=t.join("|");return"-1"===n||1===t.length?(n="-1"===n?"":n,e.map((e=>m(v({},e),{expr:e.expr.replace(`, __stream_shard__=~"${b}"}`,`, __stream_shard__="${n}"}`)})))):e.map((e=>m(v({},e),{expr:e.expr.replace(new RegExp(`${b}`,"g"),n)})))};var w=n(2871);function O(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function x(e){for(var t=1;te.nanos[a]?a+1:a:t.values[n]>e.values[a]?a+1:a}function k(e,t,n,r,a,i){const s=function(e,t,n,r){return e.nanos&&n.nanos?void 0!==e.values[t]&&e.values[t]===n.values[r]&&void 0!==e.nanos[t]&&e.nanos[t]===n.nanos[r]:void 0!==e.values[t]&&e.values[t]===n.values[r]}(e,n,r,i);return!!s&&(null==t||null==a||void 0!==t.values[n]&&t.values[n]===a.values[i])}function F(e,t,n){const r=t.filter((t=>t.name===e.name));return 1===r.length?r[0]:t[n]}const P="Summary: total bytes processed";function L(e,t){const n=e.find((e=>e.displayName===P)),r=t.find((e=>e.displayName===P));if(null!=r&&null!=n)return[{value:r.value+n.value,displayName:P,unit:n.unit}];const a=null!=r?r:n;return null!=a?[a]:[]}function j(e){return E(x({},e),{fields:e.fields.map((e=>E(x({},e),{values:e.values})))})}function _(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function T(e){for(var t=1;te.expr)).map((e=>D(T({},e),{expr:y(e.expr)})));return function(e,t,n){let a=!1,i={data:[],state:r.LoadingState.Streaming,key:(0,d.A)()},l=null,o=new Map,c=null;const u=(s,d,p,g)=>{let h=g,v=!1;null!=l&&(l.unsubscribe(),l=null);const m=()=>{i.state=a?r.LoadingState.Error:r.LoadingState.Done,s.next(i),s.complete()};if(a)return void m();const f=()=>{const e=Math.min(d+g,p.length);d{try{if(e&&!function(e){var t,n,r;const a=e.errors?(null!==(n=e.errors[0].message)&&void 0!==n?n:"").toLowerCase():null!==(r=null===(t=e.error)||void 0===t?void 0:t.message)&&void 0!==r?r:"";if(a.includes("timeout"))return!0;if(a.includes("parse error"))throw new Error(a);return!1}(e))return!1}catch(s){var t,n,r,i,l,h;return w.v.error(s,{msg:"sharding retry error",error:null!==(i=null==e||null===(t=e.error)||void 0===t?void 0:t.message)&&void 0!==i?i:"",errors:null!==(l=null==e||null===(n=e.errors)||void 0===n?void 0:n.map((e=>e.message)).join(" | "))&&void 0!==l?l:"",traces:null!==(h=null==e||null===(r=e.traceIds)||void 0===r?void 0:r.join("|"))&&void 0!==h?h:""}),a=!0,!1}if(g>1)return I(`Possible time out, new group size ${g=Math.floor(Math.sqrt(g))}`),v=!0,u(s,d,p,g),!0;var m;const f=null!==(m=o.get(d))&&void 0!==m?m:0;return f>3?(a=!0,!1):(o.set(d,f+1),c=setTimeout((()=>{w.v.info(`Retrying ${d} (${f+1})`),u(s,d,p,g),c=null}),1500*Math.pow(2,f)),v=!0,!0)},y=function(e,t,n){return t===e.length?[-1]:e.slice(t,t+n)}(p,d,g);I(`Querying ${y.join(", ")}`);const O=D(T({},t),{targets:S(n,y)});t.requestId&&(O.requestId=`${t.requestId}_shard_${d}_${g}`),l=e.runQuery(O).subscribe({next:e=>{var t;((null!==(t=e.errors)&&void 0!==t?t:[]).length>0||null!=e.error)&&b(e)||(h=function(e,t,n){return Math.min(t,Math.max(Math.floor(.7*(n-e)),1))}(d+g,function(e,t){var n,r;if(!e.data.length)return t+1;const a=null===(r=e.data[0].meta)||void 0===r||null===(n=r.stats)||void 0===n?void 0:n.find((e=>"Summary: exec time"===e.displayName));if(a){const e=Math.round(a.value);return I(`${a.value}`),e<=1?Math.floor(1.5*t):e<6?Math.ceil(1.1*t):1===t?t:e<20?Math.ceil(.9*t):Math.floor(t/2)}return t}(e,g),p.length),h!==g&&I(`New group size ${h}`),i=function(e,t){if(!e)return E(x({},n=t),{data:n.data.map(j)});var n,a,i;t.data.forEach((t=>{const n=e.data.find((e=>function(e,t){var n,a,i,s,l,o;if(e.refId!==t.refId)return!1;if(null!=e.name&&null!=t.name&&e.name!==t.name)return!1;const c=null===(n=e.meta)||void 0===n?void 0:n.type;if(c!==(null===(a=t.meta)||void 0===a?void 0:a.type))return!1;if(c===r.DataFrameType.TimeSeriesMulti)return function(e,t){const n=e.fields.find((e=>e.type===r.FieldType.number)),a=t.fields.find((e=>e.type===r.FieldType.number));return void 0!==n&&void 0!==a&&(null==e.name&&(e.name=JSON.stringify(n.labels)),null==t.name&&(t.name=JSON.stringify(a.labels)),e.name===t.name)}(e,t);const u=null===(s=e.meta)||void 0===s||null===(i=s.custom)||void 0===i?void 0:i.frameType,d=null===(o=t.meta)||void 0===o||null===(l=o.custom)||void 0===l?void 0:l.frameType;return"LabeledTimeValues"===u&&"LabeledTimeValues"===d||u===d}(e,t)));n?function(e,t){var n,a;const i=e.fields.find((e=>e.type===r.FieldType.time)),s=e.fields.find((e=>e.type===r.FieldType.string&&"id"===e.name)),l=t.fields.find((e=>e.type===r.FieldType.time)),o=t.fields.find((e=>e.type===r.FieldType.string&&"id"===e.name));if(!i||!l)return void w.v.error(new Error("Time fields not found in the data frames"));var c;const u=null!==(c=null==l?void 0:l.values.slice(0))&&void 0!==c?c:[],d=Math.max(e.fields.length,t.fields.length);for(let n=0;n0&&(e.errors=s);const o=null!==(l=e.error)&&void 0!==l?l:t.error;var c,u;null!=o&&(e.error=o);const d=[...null!==(c=e.traceIds)&&void 0!==c?c:[],...null!==(u=t.traceIds)&&void 0!==u?u:[]];return d.length>0&&(e.traceIds=d),e}(i,e))},complete:()=>{v||(i.data.length&&s.next(i),f())},error:e=>{w.v.error(e,{msg:"failed to shard"}),s.next(i),b()||f()}})},h=n=>{l=e.query(t).subscribe({next:e=>{i=e},complete:()=>{n.next(i)},error:e=>{w.v.error(e,{msg:"runNonSplitRequest subscription error"}),n.error(i)}})},v=new s.Observable((r=>{const i=(e=>{const t=(0,g.QH)(e,[p.MD]);return t.length>0?e.substring(t[0].from,t[0].to).replace(`, __stream_shard__=~"${b}"}`,"}"):""})(n[0].expr);return(0,g.T0)(i)?(e.languageProvider.fetchLabelValues("__stream_shard__",{timeRange:t.range,streamSelector:i||void 0}).then((e=>{const t=e.map((e=>parseInt(e,10)));t&&t.length?(t.sort(((e,t)=>t-e)),I(`Querying ${t.join(", ")} shards`),u(r,0,t,function(e){return Math.floor(Math.sqrt(e.length))}(t))):(w.v.warn("Shard splitting not supported. Issuing a regular query."),h(r))})).catch((e=>{w.v.error(e,{msg:"failed to fetch label values for __stream_shard__"}),h(r)})),()=>{a=!0,c&&clearTimeout(c),null!=l&&(l.unsubscribe(),l=null)}):(I(`Skipping invalid selector: ${i}`),void r.complete())}));return v}(e,t,n)}const $=Boolean(localStorage.getItem(`${u.id}.sharding_debug_enabled`));function I(e){$&&console.log(e)}var B=n(8831),M=n(7918);function A(e,t,n,r,a,i,s){try{var l=e[i](s),o=l.value}catch(e){return void n(e)}l.done?t(o):Promise.resolve(o).then(r,a)}function R(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var i=e.apply(t,n);function s(e){A(i,r,a,s,l,"next",e)}function l(e){A(i,r,a,s,l,"throw",e)}s(void 0)}))}}function V(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function W(e){for(var t=1;t{var n;if(!(null===(n=e.scopedVars)||void 0===n?void 0:n.__sceneObject))throw new Error("Scene object not found in request");var r=this;(0,a.getDataSourceSrv)().get((0,l.U4)(e.scopedVars.__sceneObject.valueOf())).then(function(){var n=R((function*(n){var i;if(!(n instanceof a.DataSourceWithBackend&&"interpolateString"in n&&"getTimeRangeParams"in n))throw new Error("Invalid datasource!");e.targets=null===(i=e.targets)||void 0===i?void 0:i.map((e=>(e.datasource=n,e)));const s=new Set;if(e.targets.forEach((e=>{var t;s.add(null!==(t=e.resource)&&void 0!==t?t:"")})),1!==s.size)throw new Error("A request cannot contain queries to multiple endpoints");switch(e.targets[0].resource){case"volume":yield r.getVolume(e,n,t);break;case"patterns":yield r.getPatterns(e,n,t);break;case"detected_labels":yield r.getDetectedLabels(e,n,t);break;case"detected_fields":yield r.getDetectedFields(e,n,t);break;case"labels":yield r.getLabels(e,n,t);break;default:r.getData(e,n,t)}}));return function(e){return n.apply(this,arguments)}}())}))}getData(e,t,n){const r=a.config.featureToggles.exploreLogsShardSplitting,i=z(W({},e),{targets:t.interpolateVariablesInQueries(e.targets,e.scopedVars).map((e=>z(W({},e),{resource:void 0,expr:(0,M.VT)(e.expr)})))});return(!1!==f(i)&&r?N(t,i):t.query(i)).subscribe(n),n}getPatterns(e,t,n){var a=this;return R((function*(){const i=e.targets.filter((e=>"patterns"===e.resource));if(1!==i.length)throw new Error("Patterns query can only have a single target!");const{interpolatedTarget:s,expression:l}=a.interpolate(t,i,e);n.next({data:[],state:r.LoadingState.Loading});try{var o;const a=t.getResource("patterns",{query:l,start:e.range.from.utc().toISOString(),end:e.range.to.utc().toISOString(),step:e.interval},{requestId:null!==(o=e.requestId)&&void 0!==o?o:"patterns",headers:{"X-Query-Tags":`Source=${B.s_}`}}),i=yield a,u=null==i?void 0:i.data;let d=-1/0,p=0;var c;const g=null!==(c=null==u?void 0:u.map((e=>{const t=[],n=[];let a=0;return e.samples.forEach((([e,r])=>{t.push(1e3*e),n.push(r),r>d&&(d=r),rd&&(d=r),r{var n,r,a,i;return(null===(r=t.meta)||void 0===r||null===(n=r.custom)||void 0===n?void 0:n.sum)-(null===(i=e.meta)||void 0===i||null===(a=i.custom)||void 0===a?void 0:a.sum)})),n.next({data:g,state:r.LoadingState.Done})}catch(e){n.next({data:[],state:r.LoadingState.Error})}return n}))()}interpolate(e,t,n){const r=e.interpolateVariablesInQueries(t,n.scopedVars);if(!r.length)throw new Error("Datasource failed to interpolate query!");const a=r[0];return{interpolatedTarget:a,expression:(0,M.VT)(a.expr)}}getDetectedLabels(e,t,n){var a=this;return R((function*(){const i=e.targets.filter((e=>"detected_labels"===e.resource));if(1!==i.length)throw new Error("Detected labels query can only have a single target!");let{interpolatedTarget:s,expression:l}=a.interpolate(t,i,e);"{}"===l&&(l=""),n.next({data:[],state:r.LoadingState.Loading});try{var c,u,d;const a=null===(u=(yield t.getResource("detected_labels",{query:l,start:e.range.from.utc().toISOString(),end:e.range.to.utc().toISOString()},{requestId:null!==(d=e.requestId)&&void 0!==d?d:"detected_labels",headers:{"X-Query-Tags":`Source=${B.s_}`}})).detectedLabels)||void 0===u||null===(c=u.filter((e=>!o.rm.includes(e.label))))||void 0===c?void 0:c.sort(((e,t)=>(0,o.p_)(e,t))),i=null==a?void 0:a.map((e=>({name:e.label,values:[e.cardinality]}))),p=(0,r.createDataFrame)({refId:s.refId,fields:null!=i?i:[]});n.next({data:[p],state:r.LoadingState.Done})}catch(e){n.next({data:[],state:r.LoadingState.Error})}return n}))()}getDetectedFields(e,t,n){var a=this;return R((function*(){const i=e.targets.filter((e=>"detected_fields"===e.resource));if(1!==i.length)throw new Error("Detected fields query can only have a single target!");n.next({data:[],state:r.LoadingState.Loading});const{interpolatedTarget:s,expression:l}=a.interpolate(t,i,e);try{var c,u;const a=yield t.getResource("detected_fields",{query:l,start:e.range.from.utc().toISOString(),end:e.range.to.utc().toISOString()},{requestId:null!==(u=e.requestId)&&void 0!==u?u:"detected_fields",headers:{"X-Query-Tags":`Source=${B.s_}`}}),i={name:Q,type:r.FieldType.string,values:[],config:{}},d={name:K,type:r.FieldType.number,values:[],config:{}},p={name:q,type:r.FieldType.string,values:[],config:{}},g={name:G,type:r.FieldType.string,values:[],config:{}};null===(c=a.fields)||void 0===c||c.forEach((e=>{var t;o.$R.includes(e.label)||(i.values.push(e.label),d.values.push(e.cardinality),p.values.push((null===(t=e.parsers)||void 0===t?void 0:t.length)?e.parsers.join(", "):"structuredMetadata"),g.values.push(e.type))}));const h=(0,r.createDataFrame)({refId:s.refId,fields:[i,d,p,g]});n.next({data:[h],state:r.LoadingState.Done})}catch(e){w.v.error(e,{msg:"Detected fields error"}),n.next({data:[],state:r.LoadingState.Error})}return n}))()}getVolume(e,t,n){return R((function*(){if(1!==e.targets.length)throw new Error("Volume query can only have a single target!");const a=e.targets[0],i=a.primaryLabel;if(!i)throw new Error("Primary label is required for volume queries!");const s=t.interpolateVariablesInQueries([a],e.scopedVars),l=(0,M.VT)(s[0].expr.replace(".*.*",".+"));n.next({data:[],state:r.LoadingState.Loading});try{var o,u,d;const a=yield t.getResource("index/volume",{query:l,start:e.range.from.utc().toISOString(),end:e.range.to.utc().toISOString(),limit:5e3},{requestId:null!==(d=e.requestId)&&void 0!==d?d:"volume",headers:{"X-Query-Tags":`Source=${B.s_}`}});null==a||a.data.result.sort(((e,t)=>{const n=e.value[1],r=t.value[1];return Number(r)-Number(n)}));const s=(0,r.createDataFrame)({fields:[{name:c.OX,values:null==a||null===(o=a.data.result)||void 0===o?void 0:o.map((e=>e.metric[i]))},{name:"volume",values:null==a||null===(u=a.data.result)||void 0===u?void 0:u.map((e=>Number(e.value[1])))}]});n.next({data:[s]})}catch(e){w.v.error(e),n.next({data:[],state:r.LoadingState.Error})}return n.complete(),n}))()}getLabels(e,t,n){return R((function*(){if(1!==e.targets.length)throw new Error("Volume query can only have a single target!");try{var a;const i=yield t.getResource("labels",{start:e.range.from.utc().toISOString(),end:e.range.to.utc().toISOString()},{requestId:null!==(a=e.requestId)&&void 0!==a?a:"labels",headers:{"X-Query-Tags":`Source=${B.s_}`}}),s=(0,r.createDataFrame)({fields:[{name:"labels",values:null==i?void 0:i.data}]});n.next({data:[s],state:r.LoadingState.Done})}catch(e){n.next({data:[],state:r.LoadingState.Error})}return n.complete(),n}))()}testDatasource(){return Promise.resolve({status:"success",message:"Data source is working",title:"Success"})}constructor(e,t){super(e,t)}}const J=function(){i.Go.registerRuntimeDataSource({dataSource:new U("wrapped-loki-ds",H)})}},1293:(e,t,n)=>{n.d(t,{O:()=>o,m:()=>l});var r=n(3143),a=n(7097),i=n(4750),s=n(2871);function l(e,t,n=!0){const s=(0,i.ir)(e);let l="";n&&t===r.e4&&(l=`| ${r.e4} != ""`);const o=s.state.filters,c=(0,a.k$)(s);if(o.length){if("mixed"===c)return`sum(count_over_time({${r.S1}} ${l} ${r.S6} ${r.sC} ${r.rl} ${r.YN} ${r.Oc} [$__auto])) by (${t})`;if("json"===c)return`sum(count_over_time({${r.S1}} ${l} ${r.S6} ${r.sC} ${r.rl} ${r.VL} ${r.Oc} [$__auto])) by (${t})`;if("logfmt"===c)return`sum(count_over_time({${r.S1}} ${l} ${r.S6} ${r.sC} ${r.rl} ${r.mF} ${r.Oc} [$__auto])) by (${t})`}return`sum(count_over_time({${r.S1}} ${l} ${r.S6} ${r.sC} ${r.rl} ${r.Oc} [$__auto])) by (${t})`}function o(e){switch(e){case r._Y:return r.Sy;case r.sL:return r.fJ;default:const t=new Error(`Unknown variable type: ${e}`);throw s.v.error(t,{variableType:e,msg:`getFieldsTagValuesExpression: Unknown variable type: ${e}`}),t}}},9055:(e,t,n)=>{n.d(t,{_J:()=>u,wy:()=>d});var r=n(2672),a=n(8538),i=n(866),s=n(1105),l=n(4750),o=n(227);function c(e){const t=r.jh.getAncestor(e,a.P);r.jh.findAllObjects(t,(e=>e instanceof i.p)).forEach((e=>e.forceRender())),r.jh.findDescendents(t,s.y).forEach((e=>e.forceRender()))}function u(e,t,n){const r=(0,l.S9)(n).getValue();(0,o.OB)(r,e,t),c(n)}function d(e,t,n){const r=(0,l.S9)(n).getValue();(0,o.cC)(r,e,t),c(n)}},7097:(e,t,n)=>{n.d(t,{JI:()=>E,Jl:()=>k,OE:()=>O,Qg:()=>y,Ri:()=>S,Zp:()=>w,k$:()=>x,ph:()=>C});var r=n(7781),a=n(2007),i=n(2672),s=n(558),l=n(3143),o=n(5183),c=n(1269),u=n(2254),d=n(4750),p=n(2871),g=n(7085),h=n(581),v=n(7232);const m=e=>{if(e&&Object.values(r.ReducerID).includes(e))return e};function f(e){switch(e){case"json":return"json";case"logfmt":return"logfmt";case"":case"structuredMetadata":return"structuredMetadata";default:return"mixed"}}function b(e){switch(e){case"int":case"float":case"duration":case"boolean":case"bytes":return e;default:return"string"}}function y(e){var t;const n=new Set(null!==(t=null==e?void 0:e.map((e=>e.toString())))&&void 0!==t?t:[]);n.delete("structuredMetadata");const r=Array.from(n);return 1===r.length?f(r[0]):0===n.size?"structuredMetadata":"mixed"}function S(e,t){var n;const r=(0,u.rD)(t),a=null==r?void 0:r.fields[2],i=null==r?void 0:r.fields[0],s=null==i?void 0:i.values.indexOf(e);var l;const o=void 0!==s&&-1!==s?f(null!==(l=null==a||null===(n=a.values)||void 0===n?void 0:n[s])&&void 0!==l?l:""):void 0;return void 0===o?(p.v.warn("missing parser, using mixed format for",{fieldName:e}),"mixed"):o}function w(e,t,n,r,u){return(d,p)=>{const h=m(r.state.sortBy),v=i.d0.timeseries().setOption("legend",{showLegend:!1}).setCustomFieldConfig("fillOpacity",9).setTitle(e(d)).setData(new i.Es({transformations:[()=>function(e){return t=>t.pipe((0,c.map)((()=>[e])))}(d)]})).setOverrides(o.jC).setMenu(new g.GD({investigationOptions:{frame:d,fieldName:e(d),labelName:u}})).setHeaderActions([new s.oR({frame:d,variableName:n,hideExclude:u===l.e4})]);return t===a.DrawStyle.Bars&&v.setCustomFieldConfig("stacking",{mode:a.StackingMode.Normal}).setCustomFieldConfig("fillOpacity",100).setCustomFieldConfig("lineWidth",0).setCustomFieldConfig("pointSize",0).setOverrides(o.jC).setCustomFieldConfig("drawStyle",a.DrawStyle.Bars),h&&(v.setOption("legend",{showLegend:!0,calcs:[h]}),v.setDisplayName(" ")),new i.xK({body:v.build()})}}function O(e,t,n){const r=e?(0,h.E)(t,e):v.H.Parsed;if(r)return function(e,t){switch(e){case v.H.Indexed:return l.MB;case v.H.Parsed:return l.mB;case v.H.StructuredMetadata:return t===l.e4?l._Y:l._P;default:{const n=new Error(`Invalid label type for ${t}`);throw p.v.error(n,{type:e,msg:`Invalid label type for ${t}`}),n}}}(r,t);const a=S(t,n);return"structuredMetadata"===a?l._P:(p.v.warn("unable to determine label variable, falling back to parsed field",{key:t,parserForThisField:null!=a?a:""}),l.mB)}function x(e){return y(e.state.filters.map((e=>(0,d.bu)(e).parser)))}function E(e){return"duration"===e||"bytes"===e||"float"===e}function C(e,t){var n;const r=null==t?void 0:t.fields[0],a=null==t?void 0:t.fields[3],i=null==r?void 0:r.values.indexOf(e);return void 0!==i&&-1!==i?b(null==a||null===(n=a.values)||void 0===n?void 0:n[i]):void 0}function k(e,t,n){var r,a;const i=null==n?void 0:n.fields[2],s=null==n?void 0:n.fields[0],l=null==n?void 0:n.fields[3],o=null==s?void 0:s.values.indexOf(e),c=void 0!==o&&-1!==o?f(null==i||null===(r=i.values)||void 0===r?void 0:r[o]):"mixed",u=void 0!==o&&-1!==o?b(null==l||null===(a=l.values)||void 0===a?void 0:a[o]):void 0,p=t.state.filters.map((e=>{var t;const n=null==s?void 0:s.values.indexOf(e.key),r=(0,d.bu)(e);if(r.parser)return r.parser;var a;const l=void 0!==n&&-1!==n?f(null!==(a=null==i||null===(t=i.values)||void 0===t?void 0:t[n])&&void 0!==a?a:"mixed"):void 0;return null!=l?l:"mixed"}));let g="",h="";return"structuredMetadata"===c?h=`| ${e}!=""`:g=`| ${e}!=""`,function(e,t){return t.fieldType&&["bytes","duration"].includes(t.fieldType)?`avg_over_time(${(0,d.DX)(t)} | unwrap `+t.fieldType+`(${e}) | __error__="" [$__auto]) by ()`:t.fieldType&&"float"===t.fieldType?`avg_over_time(${(0,d.DX)(t)} | unwrap `+e+' | __error__="" [$__auto]) by ()':`sum by (${e}) (count_over_time(${(0,d.DX)(t)} [$__auto]))`}(e,{structuredMetadataToAdd:h,fieldExpressionToAdd:g,parser:y([...p,c]),fieldType:u})}},6001:(e,t,n)=>{n.d(t,{$R:()=>s,OH:()=>c,dD:()=>i,p_:()=>a,rd:()=>o,rm:()=>l});var r=n(3143);function a(e,t){return 1===e.cardinality?1:1===t.cardinality?-1:e.cardinality-t.cardinality}function i(e){const t=[...e];e.includes(r.e4)||t.unshift(r.e4);const n=t.map((e=>({label:e,value:String(e)})));return[{label:"All",value:r.To},...n]}const s=["level_extracted",r.e4,"level"],l=["__aggregated_metric__","__stream_shard__"];function o(e){const t=[...e].map((e=>({label:e,value:String(e)})));return[{label:"All",value:r.To},...t]}function c(e){var t;return((0,r.zE)(e.value)?(0,r.Dx)(e.value):e.value)===(null===(t=e.valueLabels)||void 0===t?void 0:t[0])}},4119:(e,t,n)=>{n.d(t,{CP:()=>f,R7:()=>h,_t:()=>m,de:()=>p,di:()=>u,ec:()=>v,oj:()=>d,zr:()=>g});var r=n(3143),a=n(7097),i=n(7918),s=n(4750),l=n(558),o=n(5111),c=n(1383);const u="repeat(auto-fit, minmax(400px, 1fr))";function d(e,t,n){let l="",o="";const c=(0,s.ir)(e),u=(0,a.k$)(c);return n&&n!==r.e4?l=` ,${n} != ""`:n&&n===r.e4&&(o=` | ${n} != ""`),(0,i.l)(`sum(count_over_time(${(0,s.DX)({labelExpressionToAdd:l,structuredMetadataToAdd:o,parser:u})} [$__auto])) by (${t})`,{legendFormat:`{{${t}}}`,refId:"LABEL_BREAKDOWN_VALUES"})}function p(e){return e.map((e=>(0,c.H7)(e))).flatMap((e=>e?[e]:[]))}function g(e,t,n){const i=(0,s.YS)(n),c=0===i.state.filters.length,u="structuredMetadata"===(0,a.Ri)(e,n),d=i.state.filters.find((e=>u?(0,o.BG)(e.operator)&&e.value===t:(0,o.BG)(e.operator)&&(0,s.bu)(e).value===t));return c||!d?((0,l.Qt)(e,t,"include",n,u?r._P:r.mB),"include"):((0,l.Qt)(e,t,"toggle",n,u?r._P:r.mB),"toggle")}function h(e,t,n){const a=(0,s.cR)(n),i=0===a.state.filters.length,c=a.state.filters.find((e=>e.value===t&&(0,o.BG)(e.operator)));return i||!c?((0,l.Qt)(e,t,"include",n,r.MB),"include"):((0,l.Qt)(e,t,"toggle",n,r.MB),"toggle")}function v(e,t,n){return b(e,t,(0,s.cR)(n))}function m(e,t,n){return b(e,t,(0,s.ir)(n))}function f(e,t,n){return b(e,t,(0,s.oY)(n))}function b(e,t,n){const a=n.state.filters.filter((t=>t.key===e&&(0,o.BG)(t.operator))).map((e=>n.state.name===r.mB?(0,s.bu)(e).value:e.value)),i=n.state.filters.filter((t=>t.key===e&&(0,o.Lw)(t.operator))).map((e=>n.state.name===r.mB?(0,s.bu)(e).value:e.value));return t.filter((e=>!i.includes(e)&&(0===a.length||a.includes(e))))}},1383:(e,t,n)=>{n.d(t,{Ex:()=>d,H7:()=>u,PE:()=>g,pC:()=>o,vX:()=>c});var r=n(2007),a=n(3143),i=n(558),s=n(4750),l=n(5111);function o(e,t,n,a){if(n===r.SeriesVisibilityChangeMode.ToggleSelection){const n=null!=t?t:[];return 1===n.length&&n.includes(e)?[]:[e]}let i=(null==t?void 0:t.length)?t:a;return i.includes(e)?i.filter((t=>t!==e)):[...i,e]}function c(e){return e.map((e=>{var t;return null!==(t=u(e))&&void 0!==t?t:"logs"}))}function u(e){var t;const n=null===(t=e.fields[1])||void 0===t?void 0:t.labels;if(!n)return null;const r=Object.keys(n);return 0===r.length?null:n[r[0]]}function d(e,t){const n=(0,s.iw)(t),r=n.state.filters.filter((e=>(0,l.BG)(e.operator))).map((e=>e.value.split("|").map(p))).join("|"),a=n.state.filters.filter((e=>(0,l.Lw)(e.operator))).map((e=>e.value.split("|").map(p))).join("|");return e.filter((e=>!a.includes(e)&&(0===r.length||r.includes(e))))}function p(e){return'""'===e?"logs":e}function g(e,t){const n=(0,s.iw)(t),r=0===n.state.filters.length,o=n.state.filters.find((t=>t.value===e&&(0,l.BG)(t.operator)));return"logs"===e&&(e='""'),r||!o?((0,i.Qt)(a.e4,e,"include",t,a._Y),"include"):((0,i.Qt)(a.e4,e,"toggle",t,a._Y),"toggle")}},9186:(e,t,n)=>{n.d(t,{Il:()=>g,Os:()=>d,bz:()=>c,fF:()=>p,hy:()=>f,po:()=>h,y2:()=>b,z5:()=>v});var r=n(7781);function a(e,t,n){const r=e.getFieldByName(t);if(void 0!==r)return r.type===n?r:void 0}const i="timestamp",s="body",l="severity",o="id",c="labels";function u(e){const t={};return Object.entries(e).forEach((([e,n])=>{t[e]="string"==typeof n?n:JSON.stringify(n)})),t}function d(e){var t;return(null===(t=e.meta)||void 0===t?void 0:t.type)===r.DataFrameType.LogLines?function(e){const t=new r.FieldCache(e),n=a(t,i,r.FieldType.time),d=a(t,s,r.FieldType.string);if(void 0===n||void 0===d)return null;var p;const g=null!==(p=a(t,l,r.FieldType.string))&&void 0!==p?p:null;var h;const v=null!==(h=a(t,o,r.FieldType.string))&&void 0!==h?h:null;var m;const f=null!==(m=a(t,c,r.FieldType.other))&&void 0!==m?m:null,b=null===f?null:f.values,y=t.fields.filter(((e,t)=>t!==n.index&&t!==d.index&&t!==(null==g?void 0:g.index)&&t!==(null==v?void 0:v.index)&&t!==(null==f?void 0:f.index)));return{raw:e,timeField:n,bodyField:d,severityField:g,idField:v,getLogFrameLabels:()=>b,timeNanosecondField:null,getLogFrameLabelsAsLabels:()=>null!==b?b.map(u):null,getLabelFieldName:()=>null!==f?f.name:null,extraFields:y}}(e):function(e){const t=new r.FieldCache(e),n=t.getFirstFieldOfType(r.FieldType.time),a=t.getFirstFieldOfType(r.FieldType.string);if(void 0===n||void 0===a)return null;var i;const s=null!==(i=t.getFieldByName("tsNs"))&&void 0!==i?i:null;var l;const o=null!==(l=t.getFieldByName("level"))&&void 0!==l?l:null;var c;const d=null!==(c=t.getFieldByName("id"))&&void 0!==c?c:null,[p,g]=function(e,t,n){const a=e.getFieldByName("labels");if(void 0!==a&&a.type===r.FieldType.other){const e=a.values.map(u);return[a,()=>e]}return[null,()=>function(e,t){const n=e.labels;if(void 0!==n){const e=new Array(t);return e.fill(n),e}return null}(t,n.length)]}(t,a,e),h=t.fields.filter(((e,t)=>t!==n.index&&t!==a.index&&t!==(null==s?void 0:s.index)&&t!==(null==o?void 0:o.index)&&t!==(null==d?void 0:d.index)&&t!==(null==p?void 0:p.index)));return{timeField:n,bodyField:a,timeNanosecondField:s,severityField:o,idField:d,getLogFrameLabels:g,getLogFrameLabelsAsLabels:g,getLabelFieldName:()=>{var e;return null!==(e=null==p?void 0:p.name)&&void 0!==e?e:null},extraFields:h,raw:e}}(e)}function p(e){var t;return null!==(t=null==e?void 0:e.timeField.name)&&void 0!==t?t:i}function g(e){var t;return null!==(t=null==e?void 0:e.bodyField.name)&&void 0!==t?t:s}function h(e){var t,n;return null!==(n=null==e||null===(t=e.idField)||void 0===t?void 0:t.name)&&void 0!==n?n:o}function v(e){var t;let n=0,a=0;const i=null===(t=e[0])||void 0===t?void 0:t.fields.find((e=>e.type===r.FieldType.time));if(i){const e=[...i.values].sort(),t=e[0]{let r;function a(){r||(r=new i)}n.d(t,{JO:()=>s,rX:()=>a});class i{getServiceSceneState(){return this.serviceSceneState}setPatternsCount(e){this.serviceSceneState||(this.serviceSceneState={}),this.serviceSceneState.patternsCount=e}setLabelsCount(e){this.serviceSceneState||(this.serviceSceneState={}),this.serviceSceneState.labelsCount=e}setFieldsCount(e){this.serviceSceneState||(this.serviceSceneState={}),this.serviceSceneState.fieldsCount=e}setServiceSceneState(e){this.serviceSceneState={patternsCount:e.patternsCount,labelsCount:e.labelsCount,fieldsCount:e.fieldsCount,loading:e.loading,logsCount:e.logsCount,totalLogsCount:e.totalLogsCount}}constructor(){var e,t;t=void 0,(e="serviceSceneState")in this?Object.defineProperty(this,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):this[e]=t}}function s(){return r}},8835:(e,t,n)=>{n.d(t,{FB:()=>v,Ns:()=>O,Vt:()=>y,ad:()=>S,bN:()=>w,fg:()=>m,k9:()=>f,rs:()=>b});var r=n(8538),a=n(3143),i=n(6949),s=n(8531),l=n(892),o=n(2672),c=n(7781),u=n(7608),d=n(8831);function p(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}let g;function h(e,t){return c.urlUtil.renderUrl(e,function(e){return function(e){for(var t=1;t(l.tm.includes(t)&&(e[t]=n),e)),{}),e)}(t))}function v(e,t,n){var s,c;const p=o.jh.getAncestor(n,r.P),g=null===(s=p.state.routeMatch)||void 0===s?void 0:s.params.labelName,v=null===(c=p.state.routeMatch)||void 0===c?void 0:c.params.labelValue;if(g&&v){let r=function(e,t,n,r="service"){return e===a.To&&t===l._J.label?(0,d._F)(`${l.G3.explore}/${r}/${(0,u.uu)(n)}/${l.G3.labels}`):e===a.To&&t===l._J.field?(0,d._F)(`${l.G3.explore}/${r}/${(0,u.uu)(n)}/${l.G3.fields}`):(0,d._F)(`${l.G3.explore}/${r}/${(0,u.uu)(n)}/${t}/${(0,u.uu)(e)}`)}(t,e,v,g);const s=h(r);return n&&(0,i.JO)().setServiceSceneState(n.state),s}return""}function m(e,t,n){const r=v(e,t,n);r&&S(r)}function f(e,t,n){return h(l.bw.logs(t,e),n)}function b(e,t,n){var a,i;const s=o.jh.getAncestor(t,r.P),c=null===(a=s.state.routeMatch)||void 0===a?void 0:a.params.labelValue,p=null===(i=s.state.routeMatch)||void 0===i?void 0:i.params.labelName;return c?h((0,d._F)(`${l.G3.explore}/${p}/${(0,u.uu)(c)}/${e}`),n):""}function y(e,t,n){const r=b(e,t,n);r&&(t&&(0,i.JO)().setServiceSceneState(t.state),S(r))}function S(e){g=e,s.locationService.push(e)}function w(){const e=s.locationService.getLocation();s.locationService.push(e.pathname+e.search)}function O(){const e=s.locationService.getLocation(),t=(0,l.qe)(l.bw.explore()),n=e.pathname+e.search,r=s.locationService.getSearch();t===n||n.includes(t)||(r.get("var-filters")?S(t):(g&&s.locationService.replace(g),s.locationService.push(t)))}},5183:(e,t,n)=>{n.d(t,{rS:()=>I,FH:()=>$,HF:()=>B,jC:()=>k,ZC:()=>F,Nr:()=>T,dO:()=>_,C6:()=>j});var r=n(7781),a=n(2672),i=n(1269),s=n(3321),l=n(2854);class o extends a.dt{runQueries(){const e=a.jh.getTimeRange(this);this.runWithTimeRange(e)}constructor(e){super(e)}}var c=n(2007),u=n(1383),d=n(581),p=n(2254),g=n(9254),h=n(4119),v=n(7097);function m(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function f(e){for(var t=1;te.pipe((0,i.map)((e=>e.map(((t,n)=>b(f({},t),{fields:t.fields.map(((n,a)=>{if(n.type===r.FieldType.time)return n;const i=(0,r.getFieldDisplayName)(n,t,e);return b(f({},n),{config:b(f({},n.config),{displayName:i,color:{mode:r.FieldColorModeId.PaletteClassicByName}})})}))}))))))}function N(){return e=>e.pipe((0,i.map)((e=>e.map((e=>(e.fields.length<2||e.fields[1].config.displayNameFromDS||(e.fields[1].config.displayNameFromDS=y),e))).sort(((e,t)=>{if(e.fields.length<2||t.fields.length<2)return 0;const n=e.fields[1].config.displayNameFromDS,r=(null==n?void 0:n.match(E))?5:(null==n?void 0:n.match(x))?4:(null==n?void 0:n.match(O))?3:(null==n?void 0:n.match(w))||(null==n?void 0:n.match(S))?2:1,a=t.fields[1].config.displayNameFromDS;return r-((null==a?void 0:a.match(E))?5:(null==a?void 0:a.match(x))?4:(null==a?void 0:a.match(O))?3:(null==a?void 0:a.match(w))||(null==a?void 0:a.match(S))?2:1)})))))}function $(e){return new o({datasource:{uid:l.WRAPPED_LOKI_DS_UID},queries:e})}function I(e,t){const n=e.find((e=>{var t;return null===(t=e.legendFormat)||void 0===t?void 0:t.toLowerCase().includes("level")})),r=e.find((e=>e.refId===p.DS||e.refId===p.AA));return n?new a.Es({$data:B(f({datasource:{uid:l.WRAPPED_LOKI_DS_UID},queries:e},t)),transformations:[N]}):r?(e=e.map((e=>b(f({},e),{get direction(){return((0,g.PY)()||(0,g.zQ)())===s.uH.Descending?d.t.Backward:d.t.Forward}}))),B(f({datasource:{uid:l.WRAPPED_LOKI_DS_UID},queries:e},t))):new a.Es({$data:B(f({datasource:{uid:l.WRAPPED_LOKI_DS_UID},queries:e},t)),transformations:[D]})}function B(e){return new a.dt(f({datasource:{uid:l.WRAPPED_LOKI_DS_UID},queries:[]},e))}},8831:(e,t,n)=>{n.d(t,{Gy:()=>a,_F:()=>i,s_:()=>r});const r=n(2533).id,a=`/a/${r}`;function i(e){return`${a}/${e}`}},7918:(e,t,n)=>{n.d(t,{$k:()=>v,BM:()=>p,CY:()=>O,E3:()=>S,PP:()=>b,VT:()=>C,VW:()=>m,ZX:()=>w,_q:()=>y,by:()=>k,c0:()=>f,l:()=>g,sT:()=>E,vC:()=>x});var r=n(3143),a=n(8831),i=n(2672),s=n(4793),l=n(5664),o=n(7063);function c(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function u(e){for(var t=1;td(u(d(u({},h),{resource:t,refId:t}),n),{datasource:{uid:r.gR},expr:e,primaryLabel:a}),g=(e,t)=>d(u({},h,t),{expr:e}),h={refId:"A",queryType:"range",editorMode:"code",supportingQueryType:a.s_},v=(e,t,n,r)=>p(e,t,u({},r),n);function m(e,t){return new o.K(e).getLabelsExpr({ignoreKeys:t})}function f(e){var t,n,a;return e.value?{value:(0,r.OQ)(e.value),valueLabels:[null!==(t=e.label)&&void 0!==t?t:e.value]}:{value:e.value,valueLabels:[null!==(a=null!==(n=e.label)&&void 0!==n?n:e.value)&&void 0!==a?a:""]}}function b(e,t){var n,a,i;const s={value:null!==(a=e.value)&&void 0!==a?a:"",parser:null!==(i=null==t||null===(n=t.meta)||void 0===n?void 0:n.parser)&&void 0!==i?i:"mixed"};var l,o;return"structuredMetadata"===s.parser?{value:(0,r.OQ)(s.value),valueLabels:[null!==(l=e.label)&&void 0!==l?l:s.value]}:{value:(0,r.OQ)(JSON.stringify(s)),valueLabels:[null!==(o=e.label)&&void 0!==o?o:s.value]}}function y(e,t){return new o.K(e).getLevelsExpr({ignoreKeys:t})}function S(e,t){return new o.K(e).getMetadataExpr({ignoreKeys:t})}function w(e,t){return new o.K(e).getFieldsExpr({ignoreKeys:t})}function O(e){return(0,l.F)(e),e.map((e=>{if(!e.value)return"";const t=function(e){var t,n,r;return e.operator===s.cK.match||e.operator===s.cK.negativeMatch?e.key===s.ld.caseInsensitive?i.Go.escapeLabelValueInRegexSelector(null!==(t=e.value)&&void 0!==t?t:""):i.Go.escapeLabelValueInExactSelector(null!==(n=e.value)&&void 0!==n?n:""):i.Go.escapeLabelValueInExactSelector(null!==(r=e.value)&&void 0!==r?r:"")}(e);return function(e,t){return e.key===s.ld.caseInsensitive?e.operator===s.cK.negativeRegex||e.operator===s.cK.negativeMatch?`${s.cK.negativeRegex} "(?i)${t}"`:`${s.cK.regex} "(?i)${t}"`:`${e.operator} "${t}"`}(e,t)})).join(" ")}function x(e){return".+"===e?e:"(?i).*"!==e.substring(0,6)?`(?i).*${e}.*`:e}function E(e){return"(?i).*"===e.substring(0,6)&&".*"===e.slice(-2)?e.slice(6).slice(0,-2):e}function C(e){return e.replace(/\s*,\s*}/,"}")}const k=1e3},892:(e,t,n)=>{n.d(t,{FT:()=>y,G3:()=>d,HU:()=>v,KL:()=>m,NX:()=>E,W6:()=>S,XJ:()=>x,Zt:()=>f,_J:()=>p,bw:()=>g,er:()=>w,mC:()=>h,qe:()=>O,tm:()=>b});var r=n(7781),a=n(3143),i=n(8531),s=n(7608),l=n(4750),o=n(2871),c=n(8831);function u(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var d=function(e){return e.explore="explore",e.logs="logs",e.labels="labels",e.patterns="patterns",e.fields="fields",e}({}),p=function(e){return e.field="field",e.label="label",e}({});const g={explore:()=>(0,c._F)("explore"),logs:(e,t="service")=>(0,c._F)(`explore/${t}/${(0,s.uu)(e)}/logs`),fields:(e,t="service")=>(0,c._F)(`explore/${t}/${(0,s.uu)(e)}/fields`),patterns:(e,t="service")=>(0,c._F)(`explore/${t}/${(0,s.uu)(e)}/patterns`),labels:(e,t="service")=>(0,c._F)(`explore/${t}/${(0,s.uu)(e)}/labels`)},h={label:(e,t="service",n)=>(0,c._F)(`explore/${t}/${(0,s.uu)(e)}/label/${n}`),field:(e,t="service",n)=>(0,c._F)(`explore/${t}/${(0,s.uu)(e)}/field/${n}`)},v={explore:(0,c._F)("explore"),logs:(0,c._F)("explore/:labelName/:labelValue/logs"),fields:(0,c._F)("explore/:labelName/:labelValue/fields"),patterns:(0,c._F)("explore/:labelName/:labelValue/patterns"),labels:(0,c._F)("explore/:labelName/:labelValue/labels")},m={field:(0,c._F)("explore/:labelName/:labelValue/field/:breakdownLabel"),label:(0,c._F)("explore/:labelName/:labelValue/label/:breakdownLabel")},f=["from","to",`var-${a.EY}`,`var-${a.MB}`],b=["from","to","mode","urlColumns","visualizationType","selectedLine","displayedFields","panelState",a.uw,`var-${a.uw}`,`var-${a.EY}`,`var-${a.MB}`,`var-${a.mB}`,`var-${a._Y}`,`var-${a.LI}`,`var-${a.Jg}`,`var-${a.EY}`,`var-${a.WM}`,`var-${a._P}`,`var-${a.NW}`];function y(){const e=i.locationService.getLocation();return e.pathname.slice(e.pathname.lastIndexOf("/")+1,e.pathname.length)}function S(){const e=i.locationService.getLocation(),t=e.pathname.slice(e.pathname.indexOf("/a/grafana-lokiexplore-app/explore")+34+1).split("/");let n=t[0];const r=t[1],s=t[3];return n===a.OX&&(n=a.ky),{labelName:n,labelValue:r,breakdownLabel:s}}function w(){const e=i.locationService.getLocation().pathname.split("/");return e[e.length-2]}function O(e,t){return r.urlUtil.renderUrl(e,function(e){return function(e){for(var t=1;t(f.includes(t)&&(e[t]=n),e)),{}),e)}(t))}function x(e){return{labelName:e.params.labelName,labelValue:e.params.labelValue,breakdownLabel:e.params.breakdownLabel}}function E(e){const t=(0,l.cR)(e);let{labelName:n,labelValue:r}=S();if(n===a.ky&&(n=a.OX),!t.state.filters.find((e=>e.key===n))){const e=i.locationService.getLocation();o.v.info("invalid primary label name in url",{labelName:n,url:`${e.pathname}${e.search}`})}if(!t.state.filters.find((e=>(0,s.uu)(e.value)===r))){const e=i.locationService.getLocation();o.v.info("invalid primary label value in url",{labelValue:r,url:`${e.pathname}${e.search}`})}}},9829:(e,t,n)=>{n.d(t,{Mq:()=>p,Ti:()=>c,U4:()=>u,UX:()=>m,hJ:()=>g,m0:()=>f,oh:()=>v,u9:()=>d}),n(7781);var r=n(8531),a=n(2672),i=n(3143),s=(n(892),n(8538)),l=n(2871);function o(e,t,n,r,a,i,s){try{var l=e[i](s),o=l.value}catch(e){return void n(e)}l.done?t(o):Promise.resolve(o).then(r,a)}function c(e){return a.jh.getAncestor(e,s.P)}function u(e){return a.jh.interpolate(e,i.gR)}function d(e){return a.jh.interpolate(e,i.SA).replace(/\s+/g," ")}function p(e){return a.jh.interpolate(e,i.FX).replace(/\s+/g," ")}function g(e){return h.apply(this,arguments)}function h(){var e;return e=function*(e){return yield(0,r.getDataSourceSrv)().get(i.gR,{__sceneObject:{value:e}})},h=function(){var t=this,n=arguments;return new Promise((function(r,a){var i=e.apply(t,n);function s(e){o(i,r,a,s,l,"next",e)}function l(e){o(i,r,a,s,l,"throw",e)}s(void 0)}))},h.apply(this,arguments)}function v(e){return a.jh.findDescendents(e,a.dt)}function m(e,t,n){const r=a.jh.findObject(e,t);return r instanceof n?r:(null!==r&&l.v.warn(`invalid return type: ${n.toString()}`),null)}function f(e){var t;return null===(t=e.state.controls)||void 0===t?void 0:t.find((e=>e instanceof a.KE))}},4932:(e,t,n)=>{n.d(t,{E:()=>l,X:()=>s});var r=n(7928),a=n(3241);const i=new r.A({intraMode:1,intraIns:1,intraSub:1,intraTrn:1,intraDel:1});function s(e,t,n){const[a,s,l]=i.search(e,t,0,1e5);let o=[],c=new Set;if(a&&l){const t=(e,t)=>{t&&c.add(e)};for(let n=0;n{n.r(t),n.d(t,{DEFAULT_SORT_BY:()=>u,calculateDataFrameChangepoints:()=>p,calculateOutlierValue:()=>m,sortSeries:()=>d,sortSeriesByName:()=>g,wasmSupported:()=>f});var r=n(1854),a=n(6944),i=n(7781),s=n(1383),l=n(3241),o=n(2718),c=n(2871);const u="changepoint",d=(0,l.memoize)(((e,t,n)=>{if("alphabetical"===t)return g(e,n);"outliers"===t&&h(e);const r=n=>{var r;try{if("changepoint"===t)return p(n);if("outliers"===t)return m(e,n)}catch(e){c.v.error(e,{msg:"failed to sort"}),t=i.ReducerID.stdDev}const a=i.fieldReducers.get(t);var s,l;return null!==(l=(null!==(s=null===(r=a.reduce)||void 0===r?void 0:r.call(a,n.fields[1],!0,!0))&&void 0!==s?s:(0,i.doStandardCalcs)(n.fields[1],!0,!0))[t])&&void 0!==l?l:0},a=e.map((e=>({value:r(e),dataFrame:e})));return a.sort(((e,t)=>void 0!==e.value&&void 0!==t.value?t.value-e.value:0)),"asc"===n&&a.reverse(),a.map((({dataFrame:e})=>e))}),((e,t,n)=>{const r=e.length>0?e[0].fields[0].values[0]:0,a=e.length>0?e[e.length-1].fields[0].values[e[e.length-1].fields[0].values.length-1]:0,i=e.length>0?(0,s.H7)(e[0]):"",l=e.length>0?(0,s.H7)(e[e.length-1]):"",o=e.map((e=>e.length+"_"+e.fields.map((e=>e.name+"_"+e.values[0]+"_"+e.values[e.values.length-1]))));return`${i}_${l}_${r}_${a}_${e.length}_${o}_${t}_${n}`})),p=e=>{if(!f())throw new Error("WASM not supported, fall back to stdDev");const t=e.fields.filter((e=>e.type===i.FieldType.number)),n=t[0].values.length;let a=Math.floor(n/100)||1;a>1&&(a=Math.ceil(a/2));const s=t[0].values.filter(((e,t)=>t%a==0)),l=new Float64Array(s);return r.ChangepointDetector.defaultArgpcp().detectChangepoints(l).indices.length},g=(e,t)=>{const n=[...e];return n.sort(((e,t)=>{const n=(0,s.H7)(e),r=(0,s.H7)(t);return n&&r&&null!==(a=null==n?void 0:n.localeCompare(r))&&void 0!==a?a:0;var a})),"desc"===t&&n.reverse(),n},h=e=>{if(!f())return;const t=(0,i.outerJoinDataFrames)({frames:e});if(!t)return;const n=t.fields.filter((e=>e.type===i.FieldType.number)).flatMap((e=>new Float64Array(e.values)));try{const e=a.OutlierDetector.dbscan({sensitivity:.4}).preprocess(n);v=e.detect()}catch(e){c.v.error(e,{msg:"initOutlierDetector: OutlierDetector error"})}};let v;const m=(e,t)=>{if(!f())throw new Error("WASM not supported, fall back to stdDev");if(!v)throw new Error("Initialize outlier detector first");const n=e.indexOf(t);return v.seriesResults[n].isOutlier?v.seriesResults[n].outlierIntervals.length:0},f=()=>{const e="object"==typeof WebAssembly;return e||(0,o.EE)(o.NO.service_details,o.ir.service_details.wasm_not_supported),e}},227:(e,t,n)=>{n.d(t,{Bq:()=>A,GL:()=>M,Gg:()=>v,IW:()=>Q,KH:()=>U,N$:()=>C,OB:()=>p,QB:()=>y,RN:()=>_,Rb:()=>q,Rf:()=>T,Xo:()=>B,YK:()=>L,YM:()=>P,ZF:()=>k,Zs:()=>W,cC:()=>g,cO:()=>h,eT:()=>d,ex:()=>H,fq:()=>x,hp:()=>R,k5:()=>N,ke:()=>S,o5:()=>$,og:()=>V,sj:()=>m,uF:()=>J,vs:()=>O});var r=n(2533),a=n(4750),i=n(2871),s=n(3143),l=n(4011);const o=`${r.id}.services.favorite`,c=`${r.id}.primarylabels.tabs.favorite`,u=`${r.id}.datasource`;function d(e,t){if(!e||"string"!=typeof e)return[];const n=f(e,t);let r=[];try{r=(0,l.aJ)(JSON.parse(localStorage.getItem(n)||"[]"))}catch(e){i.v.error(e,{msg:"Error parsing favorite services from local storage"})}return Array.isArray(r)||(r=[]),r}function p(e,t,n){if(!e||"string"!=typeof e)return;const r=f(e,t);let a=[];try{a=(0,l.aJ)(JSON.parse(localStorage.getItem(r)||"[]"))}catch(e){i.v.error(e,{msg:"Error parsing favorite services from local storage"})}Array.isArray(a)||(a=[]);const s=a.filter((e=>e!==n));s.unshift(n),localStorage.setItem(r,JSON.stringify(s))}function g(e,t,n){if(!e||!t||!n||"string"!=typeof e)return;const r=f(e,t);let a=[];try{a=(0,l.aJ)(JSON.parse(localStorage.getItem(r)||"[]"))}catch(e){i.v.error(e,{msg:"Error parsing favorite services from local storage"})}Array.isArray(a)||(a=[]);const s=a.filter((e=>e!==n));localStorage.setItem(r,JSON.stringify(s))}function h(e,t){if(!e||!t)return;const n=b(e);let r=[];try{r=(0,l.aJ)(JSON.parse(localStorage.getItem(n)||"[]"))}catch(e){i.v.error(e,{msg:"Error parsing saved tabs from local storage"})}if(Array.isArray(r)||(r=[]),-1===r.indexOf(t)){const e=r.filter((e=>e!==t));e.unshift(t),localStorage.setItem(n,JSON.stringify(e))}}function v(e,t){if(!e||!t)return;const n=b(e);let r=[];try{r=(0,l.aJ)(JSON.parse(localStorage.getItem(n)||"[]"))}catch(e){i.v.error(e,{msg:"Error parsing favorite services from local storage"})}Array.isArray(r)||(r=[]);const a=r.filter((e=>e!==t));localStorage.setItem(n,JSON.stringify(a))}function m(e){if(!e||"string"!=typeof e)return[];const t=b(e);let n=[];try{n=(0,l.aJ)(JSON.parse(localStorage.getItem(t)||"[]"))}catch(e){i.v.error(e,{msg:"Error parsing favorite services from local storage"})}return Array.isArray(n)||(n=[]),n}function f(e,t){return t=t===s.OX?"":`_${t}`,`${o}_${e}${t}`}function b(e){return`${c}_${e}`}function y(){var e;return null!==(e=localStorage.getItem(u))&&void 0!==e?e:void 0}function S(e){localStorage.setItem(u,e)}const w=`${r.id}.values.sort`;function O(e,t,n){var r;const a=(null!==(r=localStorage.getItem(`${w}.${e}.by`))&&void 0!==r?r:"").split(".");return a[0]&&a[1]?{sortBy:a[0],direction:a[1]}:{sortBy:t,direction:n}}function x(e,t,n){t&&n&&localStorage.setItem(`${w}.${e}.by`,`${t}.${n}`)}function E(e){return`${(0,a.nH)(e)}.${(0,a.p_)(e)}`}function C(e){const t=E(e),n=localStorage.getItem(`${r.id}.${t}.logs.fields`);return n?JSON.parse(n):[]}function k(e,t){const n=E(e);localStorage.setItem(`${r.id}.${n}.logs.fields`,JSON.stringify(t))}const F=`${r.id}.logs.option`;function P(e,t){return localStorage.getItem(`${F}.${e}`)||t}function L(e,t){let n=t.toString();"boolean"!=typeof t||t||(n=""),localStorage.setItem(`${F}.${e}`,n)}const j="grafana.explore.logs.logsVolume";function _(e,t){const n=`${j}.${e}`;void 0!==t?localStorage.setItem(n,t):localStorage.removeItem(n)}function T(e){return Boolean(localStorage.getItem(`${j}.${e}`))}const D="grafana.explore.logs.visualisationType";function N(){var e;const t=null!==(e=localStorage.getItem(D))&&void 0!==e?e:"";switch(t){case"table":case"logs":return t;default:return"logs"}}function $(e){localStorage.setItem(D,e)}const I=`${r.id}.linefilter.option`;function B(e){let t=e.toString();e||(t=""),localStorage.setItem(`${I}.caseSensitive`,t)}function M(e){let t=e.toString();e||(t=""),localStorage.setItem(`${I}.regex`,t)}function A(e){let t=e.toString();e||(t=""),localStorage.setItem(`${I}.exclusive`,t)}function R(e){return"true"===localStorage.getItem(`${I}.caseSensitive`)||e}function V(e){return"true"===localStorage.getItem(`${I}.regex`)||e}function W(e){return"true"===localStorage.getItem(`${I}.exclusive`)||e}const z=`${r.id}.panel.option`;function H(e,t){const n=localStorage.getItem(`${z}.${e}`);var r;return null!==n&&null!==(r=t.find((e=>n===e)))&&void 0!==r?r:null}function Q(e,t){localStorage.setItem(`${z}.${e}`,t)}const K=`${r.id}.expressionBuilder.debug`;function q(){return!!localStorage.getItem(K)}const G=`${r.id}.serviceSelection.pageCount`;function U(){const e=localStorage.getItem(G);return e?parseInt(e,10):void 0}function J(e){localStorage.setItem(G,e.toString(10))}},1220:(e,t,n)=>{n.d(t,{b:()=>r});const r={appConfig:{container:"data-testid ac-container",apiKey:"data-testid ac-api-key",apiUrl:"data-testid ac-api-url",submit:"data-testid ac-submit-form"},exploreServiceSearch:{search:"data-testid search-services"},header:{refreshPicker:"data-testid RefreshPicker run button"},variables:{datasource:{label:"data-testid Dashboard template variables submenu Label Data source"},combobox:{},serviceName:{label:"data-testid Dashboard template variables submenu Label Labels"},levels:{inputWrap:"data-testid detected_level filter variable"}},breakdowns:{labels:{},fields:{},common:{sortByFunction:"data-testid SortBy function",sortByDirection:"data-testid SortBy direction",filterButtonGroup:"data-testid filter-button-group",filterButton:"data-testid filter-button",filterSelect:"data-testid filter-select",filterNumericPopover:{removeButton:"data-testid filter-numeric-remove",submitButton:"data-testid filter-numeric-submit",cancelButton:"data-testid filter-numeric-cancel",inputGreaterThan:"data-testid filter-numeric-gt",inputGreaterThanUnit:"data-testid filter-numeric-gtu",inputGreaterThanInclusive:"data-testid filter-numeric-gte",inputLessThan:"data-testid filter-numeric-lt",inputLessThanUnit:"data-testid filter-numeric-ltu",inputLessThanInclusive:"data-testid filter-numeric-lte"}}},index:{showLogsButton:"data-testid Show logs",addNewLabelTab:"data-testid Tab Add label",searchLabelValueInput:"data-testid search-services-input",aggregatedMetricsMenu:"data-testid aggregated-metrics-menu",aggregatedMetricsToggle:"data-testid aggregated-metrics-toggle",header:{showLogsButton:"data-testid Show logs header"}},exploreServiceDetails:{searchLogs:"data-testid search-logs",openExplore:"data-testid open-explore",tabPatterns:"data-testid tab-patterns",tabLogs:"data-testid tab-logs",tabFields:"data-testid tab-fields",tabLabels:"data-testid tab-labels",buttonRemovePattern:"data-testid button-remove-pattern",buttonFilterInclude:"data-testid button-filter-include",buttonFilterExclude:"data-testid button-filter-exclude"},patterns:{tableWrapper:"data-testid table-wrapper",buttonIncludedPattern:"data-testid button-included-pattern",buttonExcludedPattern:"data-testid button-excluded-pattern"},logsPanelHeader:{header:"data-testid Panel header Logs",radio:"data-testid radio-button"},table:{wrapper:"data-testid table-wrapper",inspectLine:"data-testid inspect",rawLogLine:"data-testid raw-log-line"}}},8315:(e,t,n)=>{n.d(t,{Dk:()=>s,EJ:()=>c,Ki:()=>u,Zr:()=>o,gW:()=>l});var r=n(8531),a=n(2871),i=n(7781);const s=e=>{if(navigator.clipboard&&window.isSecureContext)navigator.clipboard.writeText(e);else{const t=document.createElement("textarea");t.value=e,document.body.appendChild(t),t.select(),document.execCommand("copy"),document.body.removeChild(t)}},l=(e,t,n)=>{const a=r.locationService.getLocation(),i=new URLSearchParams(a.search);i.set("from",n.from.toISOString()),i.set("to",n.to.toISOString()),i.set(e,JSON.stringify(t));const s=i.toString().replace(/\+/g,"%20");return window.location.origin+a.pathname+"?"+s};function o(e){return e.length?(null==e?void 0:e.charAt(0).toUpperCase())+e.slice(1):(a.v.warn("invalid string argument"),e)}function c(e,t,n){return e.substring(0,t)+(n&&e.length>t?"…":"")}function u(e){const t=(0,i.dateTime)(e.timeEpochMs-1),n=(0,i.dateTime)(e.timeEpochMs+1);return{from:t,to:n,raw:{from:t,to:n}}}},4750:(e,t,n)=>{n.d(t,{BL:()=>F,DX:()=>c,El:()=>k,Gk:()=>O,Hj:()=>S,Ku:()=>u,P4:()=>b,Rr:()=>f,S9:()=>w,YS:()=>h,aW:()=>p,bY:()=>x,bu:()=>L,cR:()=>d,eY:()=>E,h:()=>C,ir:()=>v,iw:()=>m,n5:()=>P,nH:()=>T,oY:()=>g,p_:()=>_,vm:()=>y,z2:()=>j});var r=n(2672),a=n(5431),i=n(3143),s=n(2871),l=n(4011),o=n(6001);function c(e){const{labelExpressionToAdd:t="",structuredMetadataToAdd:n="",fieldExpressionToAdd:r="",parser:a}=e;switch(a){case"structuredMetadata":return`{${i.S1}${t}} ${n} ${i.qZ} ${i.S6} ${i.sC} ${i.rl} ${r} ${i.Oc}`;case"json":return`{${i.S1}${t}} ${n} ${i.qZ} ${i.S6} ${i.sC} ${i.rl} ${i.VL} ${r} ${i.Oc}`;case"logfmt":return`{${i.S1}${t}} ${n} ${i.qZ} ${i.S6} ${i.sC} ${i.rl} ${i.mF} ${r} ${i.Oc}`;default:return`{${i.S1}${t}} ${n} ${i.qZ} ${i.S6} ${i.sC} ${i.rl} ${i.YN} ${r} ${i.Oc}`}}function u(e){const t=r.jh.lookupVariable(i.uw,e);if(!(t instanceof r.yP))throw new Error("VAR_PATTERNS not found");return t}function d(e){return x(i.MB,e)}function p(e){return x(i.fi,e)}function g(e){return x(i._P,e)}function h(e){return x(i.sL,e)}function v(e){return x(i.mB,e)}function m(e){return x(i._Y,e)}function f(e){const t=r.jh.lookupVariable(i.WM,e);if(!(t instanceof r.H9))throw new Error("VAR_LINE_FILTER not found");return t}function b(e){const t=r.jh.lookupVariable(i.Jg,e);if(!(t instanceof a.m))throw new Error("VAR_LABEL_GROUP_BY not found");return t}function y(e){const t=r.jh.lookupVariable(i.Wi,e);if(!(t instanceof a.m))throw new Error("SERVICE_LABEL_VAR not found");return t}function S(e){const t=r.jh.lookupVariable(i.LI,e);if(!(t instanceof a.m))throw new Error("VAR_FIELD_GROUP_BY not found");return t}function w(e){const t=r.jh.lookupVariable(i.EY,e);if(!(t instanceof r.mI))throw new Error("VAR_DATASOURCE not found");return t}function O(e){const t=r.jh.lookupVariable(i.NW,e);if(!(t instanceof r.H9))throw new Error("VAR_LINE_FILTERS not found");return t}function x(e,t){const n=r.jh.lookupVariable(e,t);if(!(n instanceof r.H9))throw new Error(`Could not get AdHocFiltersVariable ${e}. Variable not found.`);return n}function E(e){const t=r.jh.lookupVariable(i.Du,e);if(!(t instanceof a.m))throw new Error("VAR_PRIMARY_LABEL_SEARCH not found");return t}function C(e){E(e).setState({value:".+",label:""})}function k(e){const t=r.jh.lookupVariable(i.Gb,e);if(!(t instanceof r.H9))throw new Error("VAR_PRIMARY_LABEL not found");return t}function F(e,t){k(t).setState({filters:[{value:".+",operator:"=~",key:e}]})}function P(e){return`var-${e}`}function L(e,t=i.mB){if((0,o.OH)(e))return{value:e.value,parser:"structuredMetadata"};try{const t=(0,i.zE)(e.value)?(0,i.Dx)(e.value):e.value,n=(0,l.fS)(JSON.parse(t));if(!1!==n)return n;throw new l.QX("getValueFromFieldsFilter: invalid filter value!")}catch(n){if(n instanceof l.QX?s.v.error(n,{msg:`getValueFromFieldsFilter: Failed to validate ${t}`,value:e.value}):s.v.error(n,{msg:`getValueFromFieldsFilter: Failed to parse ${t}`,value:e.value}),e.value)return{value:e.value,parser:"mixed"};throw n}}function j(e,t){return e===i.mB&&t?L(t):{value:null==t?void 0:t.value}}function _(e){return function(e){const t=e.filters.filter((e=>e.key===i.OX)).map((e=>e.value));if(!t)throw new Error("Service present in filters selected");return t[0]}(d(e).state)}function T(e){return w(e).getValue()}},1863:(e,t,n)=>{n.d(t,{Ht:()=>g,mE:()=>d,rA:()=>p});var r=n(2672),a=n(5431),i=n(3143),s=n(8538),l=n(892),o=n(4793),c=n(5548),u=n(5111);function d(e){const t=r.jh.getVariables(e);let n=[];for(const e of t.state.variables)e instanceof r.H9&&e.state.filters.length&&n.push(e),e instanceof a.m&&e.state.value&&"logsFormat"!==e.state.name&&n.push(e);return n}function p(e){const t=r.jh.getAncestor(e,s.P);t.setState({patterns:[]}),d(t).forEach((e=>{if(e instanceof r.H9&&"adhoc_service_filter"===e.state.key){let{labelName:t}=(0,l.W6)();t===i.ky&&(t=i.OX),e.setState({filters:e.state.filters.filter((e=>e.key===t))})}else e instanceof r.H9?e.setState({filters:[]}):e instanceof a.m&&e.setState({value:"",text:""})}))}const g=function(e){const t=e.state._wip;if(t&&e.state.filters.some((e=>e.key===t.key&&e.operator===o.w7.Equal)))return c._i;const n=e.state.name===i.MB,r=e.state.filters.filter((e=>(0,u.BG)(e.operator))).length,a=!(null==t?void 0:t.key)&&1===r,s=(null==t?void 0:t.key)&&r<1;if(n&&(a||s))return c._i;if(null==t?void 0:t.meta){const e=t.meta.type;if("float"===e||"bytes"===e||"duration"===e)return c.hI}return c.II}}}]); +//# sourceMappingURL=747.js.map \ No newline at end of file diff --git a/grafana/plugins/grafana-lokiexplore-app/747.js.map b/grafana/plugins/grafana-lokiexplore-app/747.js.map new file mode 100644 index 00000000..7a58b225 --- /dev/null +++ b/grafana/plugins/grafana-lokiexplore-app/747.js.map @@ -0,0 +1 @@ +{"version":3,"file":"747.js","mappings":"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","sources":["webpack://grafana-lokiexplore-app/./Components/FilterButton.tsx","webpack://grafana-lokiexplore-app/./Components/GrotError.tsx","webpack://grafana-lokiexplore-app/./Components/IndexScene/InterceptBanner.tsx","webpack://grafana-lokiexplore-app/./Components/IndexScene/GiveFeedbackButton.tsx","webpack://grafana-lokiexplore-app/./Components/IndexScene/CustomVariableValueSelectors.tsx","webpack://grafana-lokiexplore-app/./Components/IndexScene/PatternTag.tsx","webpack://grafana-lokiexplore-app/./Components/IndexScene/PatternControls.tsx","webpack://grafana-lokiexplore-app/./Components/IndexScene/VariableLayoutScene.tsx","webpack://grafana-lokiexplore-app/./Components/IndexScene/LayoutScene.tsx","webpack://grafana-lokiexplore-app/./services/TagValuesProviders.ts","webpack://grafana-lokiexplore-app/./services/TagKeysProviders.ts","webpack://grafana-lokiexplore-app/./services/Mousetrap.ts","webpack://grafana-lokiexplore-app/./services/KeybindingSet.ts","webpack://grafana-lokiexplore-app/./services/keyboardShortcuts.ts","webpack://grafana-lokiexplore-app/./Components/NoLokiSplash.tsx","webpack://grafana-lokiexplore-app/./Components/IndexScene/IndexScene.tsx","webpack://grafana-lokiexplore-app/./Components/IndexScene/LevelsVariableScene.tsx","webpack://grafana-lokiexplore-app/./Components/IndexScene/LineFilterVariable.tsx","webpack://grafana-lokiexplore-app/./Components/IndexScene/LineFilterVariablesScene.tsx","webpack://grafana-lokiexplore-app/./Components/IndexScene/ShowLogsButtonScene.tsx","webpack://grafana-lokiexplore-app/./Components/IndexScene/ToolbarScene.tsx","webpack://grafana-lokiexplore-app/./Components/Pages.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/AddToInvestigationButton.tsx","webpack://grafana-lokiexplore-app/./Components/Panels/PanelMenu.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/GoToExploreButton.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/AddToFiltersButton.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/BreakdownSearchScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/ByFrameRepeater.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/EmptyLayoutScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/FieldSelector.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/FieldValuesBreakdownScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/FieldsAggregatedBreakdownScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/FieldsBreakdownScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/LabelsAggregatedBreakdownScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/LabelBreakdownScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/LabelValuesBreakdownScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/LayoutSwitcher.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/NoMatchingLabelsScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/Panels/ValueSummary.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/SearchInput.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/NumericFilterPopoverScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/SelectLabelActionScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/SortByScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/StatusWrapper.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/TimeSeriesLimit.ts","webpack://grafana-lokiexplore-app/./services/mixins.ts","webpack://grafana-lokiexplore-app/./Components/ServiceScene/LineFilter/RegexIconButton.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/LineFilter/LineFilterCaseSensitivityButton.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/LineFilterInput.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/LineFilter/LineFilterEditor.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/LogOptionsScene.tsx","webpack://grafana-lokiexplore-app/./Components/Table/Context/TableColumnsContext.tsx","webpack://grafana-lokiexplore-app/./Components/Table/Context/TableCellContext.tsx","webpack://grafana-lokiexplore-app/./Components/Table/Context/TableHeaderContext.tsx","webpack://grafana-lokiexplore-app/./Components/Table/ColumnSelection/LogsColumnSearch.tsx","webpack://grafana-lokiexplore-app/./Components/Table/ColumnSelection/LogsTableEmptyFields.tsx","webpack://grafana-lokiexplore-app/./Components/Table/ColumnSelection/LogsTableNavField.tsx","webpack://grafana-lokiexplore-app/./Components/Table/ColumnSelection/LogsTableActiveFields.tsx","webpack://grafana-lokiexplore-app/./Components/Table/ColumnSelection/LogsTableAvailableFields.tsx","webpack://grafana-lokiexplore-app/./Components/Table/ColumnSelection/LogsTableMultiSelect.tsx","webpack://grafana-lokiexplore-app/./Components/Table/ColumnSelection/ColumnSelectionDrawerWrap.tsx","webpack://grafana-lokiexplore-app/./Components/Table/DefaultCellWrapComponent.tsx","webpack://grafana-lokiexplore-app/./Components/Table/Context/QueryContext.tsx","webpack://grafana-lokiexplore-app/./Components/Table/CellContextMenu.tsx","webpack://grafana-lokiexplore-app/./Components/Table/constants.ts","webpack://grafana-lokiexplore-app/./Components/Table/DefaultPill.tsx","webpack://grafana-lokiexplore-app/./Components/Table/LineActionIcons.tsx","webpack://grafana-lokiexplore-app/./Components/Table/DefaultCellComponent.tsx","webpack://grafana-lokiexplore-app/./Components/Table/LogLinePill.tsx","webpack://grafana-lokiexplore-app/./Components/Table/Scroller.tsx","webpack://grafana-lokiexplore-app/./Components/Table/RawLogLineText.tsx","webpack://grafana-lokiexplore-app/./Components/Table/LogLineCellComponent.tsx","webpack://grafana-lokiexplore-app/./Components/Table/LogsTableHeader.tsx","webpack://grafana-lokiexplore-app/./Components/Table/LogsTableHeaderWrap.tsx","webpack://grafana-lokiexplore-app/./Components/Table/Table.tsx","webpack://grafana-lokiexplore-app/./Components/Table/TableWrap.tsx","webpack://grafana-lokiexplore-app/./Components/Table/TableProvider.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/LogsTableScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/LineFilter/LineFilterScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/LogsListScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/CopyLinkButton.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/LogsPanelError.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/LogsPanelScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/LogsVolumeActions.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/LogsVolumePanel.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/Patterns/FilterByPatternsButton.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/Patterns/PatternFieldLabelStatsRow.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/Patterns/PatternFieldLabelStats.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/Patterns/PatternNameLabel.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/Patterns/PatternsLogsSampleScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/Patterns/PatternsTableExpandedRow.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/Patterns/PatternsViewTableScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/Patterns/PatternsFrameScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/Patterns/PatternsViewTextSearch.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/Patterns/PatternsNotDetected.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/Patterns/PatternsBreakdownScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/BreakdownViews.ts","webpack://grafana-lokiexplore-app/./Components/IndexScene/ShareButtonScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/ActionBarScene.tsx","webpack://grafana-lokiexplore-app/./services/migrations.ts","webpack://grafana-lokiexplore-app/./Components/ServiceScene/ServiceScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceSelectionScene/FavoriteServiceHeaderActionScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceSelectionScene/SelectServiceButton.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceSelectionScene/ConfigureVolumeError.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceSelectionScene/NoServiceSearchResults.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceSelectionScene/TabPopoverScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceSelectionScene/ServiceSelectionTabsScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceSelectionScene/NoServiceVolume.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceSelectionScene/AddLabelToFiltersHeaderActionScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceSelectionScene/ServiceSelectionPaginationScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceSelectionScene/ServiceSelectionScene.tsx","webpack://grafana-lokiexplore-app/./Components/Table/LogsHeaderActions.tsx","webpack://grafana-lokiexplore-app/./services/CustomConstantVariable.ts","webpack://grafana-lokiexplore-app/./services/ExpressionBuilder.ts","webpack://grafana-lokiexplore-app/./services/analytics.ts","webpack://grafana-lokiexplore-app/./services/comparison.ts","webpack://grafana-lokiexplore-app/./services/logql.ts","webpack://grafana-lokiexplore-app/./services/combineResponses.ts","webpack://grafana-lokiexplore-app/./services/shardQuerySplitting.ts","webpack://grafana-lokiexplore-app/./services/datasource.ts","webpack://grafana-lokiexplore-app/./services/expressions.ts","webpack://grafana-lokiexplore-app/./services/favorites.ts","webpack://grafana-lokiexplore-app/./services/fields.ts","webpack://grafana-lokiexplore-app/./services/filters.ts","webpack://grafana-lokiexplore-app/./services/labels.ts","webpack://grafana-lokiexplore-app/./services/levels.ts","webpack://grafana-lokiexplore-app/./services/logsFrame.ts","webpack://grafana-lokiexplore-app/./services/metadata.ts","webpack://grafana-lokiexplore-app/./services/navigate.ts","webpack://grafana-lokiexplore-app/./services/LogsSceneQueryRunner.ts","webpack://grafana-lokiexplore-app/./services/panel.ts","webpack://grafana-lokiexplore-app/./services/plugin.ts","webpack://grafana-lokiexplore-app/./services/query.ts","webpack://grafana-lokiexplore-app/./services/routing.ts","webpack://grafana-lokiexplore-app/./services/scenes.ts","webpack://grafana-lokiexplore-app/./services/search.ts","webpack://grafana-lokiexplore-app/./services/sorting.ts","webpack://grafana-lokiexplore-app/./services/store.ts","webpack://grafana-lokiexplore-app/./services/testIds.ts","webpack://grafana-lokiexplore-app/./services/text.ts","webpack://grafana-lokiexplore-app/./services/variableGetters.ts","webpack://grafana-lokiexplore-app/./services/variableHelpers.ts"],"sourcesContent":["import { css } from '@emotion/css';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { Button, useStyles2 } from '@grafana/ui';\nimport React from 'react';\nimport { testIds } from 'services/testIds';\n\ntype Props = {\n onInclude: () => void;\n onClear: () => void;\n isIncluded: boolean;\n onExclude: () => void;\n isExcluded: boolean;\n buttonFill: 'solid' | 'outline' | 'text';\n titles?: {\n include: string;\n exclude: string;\n };\n hideExclude?: boolean;\n};\n\nexport const FilterButton = (props: Props) => {\n const { isExcluded, isIncluded, onInclude, onExclude, onClear, titles, buttonFill, hideExclude } = props;\n const styles = useStyles2(getStyles, isIncluded, isExcluded, hideExclude);\n return (\n
\n \n Include\n \n {!hideExclude && (\n \n Exclude\n \n )}\n
\n );\n};\n\nconst getStyles = (theme: GrafanaTheme2, isIncluded: boolean, isExcluded: boolean, hideExclude?: boolean) => {\n return {\n container: css({\n display: 'flex',\n justifyContent: 'center',\n }),\n includeButton: css({\n borderRadius: 0,\n borderRight: isIncluded || hideExclude ? undefined : 'none',\n }),\n excludeButton: css({\n borderRadius: `0 ${theme.shape.radius.default} ${theme.shape.radius.default} 0`,\n borderLeft: isExcluded ? undefined : 'none',\n }),\n };\n};\n","import React from 'react';\n\nimport { css } from '@emotion/css';\nimport SVG from 'react-inlinesvg';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { useStyles2, useTheme2, Text } from '@grafana/ui';\n\nconst getStyles = (theme: GrafanaTheme2) => {\n return {\n graphicContainer: css({\n display: 'flex',\n justifyContent: 'center',\n margin: '0 auto',\n }),\n graphic: css({ width: '200px', height: '120px', padding: theme.spacing(1) }),\n text: css({\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n }),\n wrap: css({\n margin: '0 auto',\n }),\n };\n};\n\ntype Props = {\n children?: React.ReactNode;\n};\n\nexport const GrotError = ({ children }: React.PropsWithChildren) => {\n const styles = useStyles2(getStyles);\n const theme = useTheme2();\n return (\n
\n
\n \n
\n
\n \n {children ? children : 'An error occurred'}\n \n
\n
\n );\n};\n","import { Alert, useStyles2 } from '@grafana/ui';\nimport React from 'react';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { css } from '@emotion/css';\n\nexport function InterceptBanner(props: { onRemove: () => void }) {\n const styles = useStyles2(getStyles);\n return (\n <>\n \n
\n Check out our{' '}\n \n Get started doc\n \n , or see{' '}\n \n recent changes\n \n .
\n Help us shape the future of the app.{' '}\n \n Send us feedback\n {' '}\n or engage with us on{' '}\n \n GitHub\n \n .\n
\n \n \n );\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n alert: css({\n flex: 'none',\n }),\n };\n}\n","import React from 'react';\nimport { Icon, useStyles2 } from '@grafana/ui';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { css } from '@emotion/css';\n\nexport const GiveFeedbackButton = () => {\n const styles = useStyles2(getStyles);\n return (\n
\n \n Give feedback\n \n
\n );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => {\n return {\n wrapper: css({\n display: 'flex',\n marginLeft: 'auto',\n gap: theme.spacing(1),\n position: 'relative',\n top: theme.spacing(-1),\n }),\n feedback: css({\n alignSelf: 'center',\n color: theme.colors.text.secondary,\n fontSize: theme.typography.bodySmall.fontSize,\n '&:hover': {\n color: theme.colors.text.link,\n },\n }),\n };\n};\n","import {\n ControlsLayout,\n SceneComponentProps,\n sceneGraph,\n SceneObjectBase,\n SceneObjectState,\n VariableValueSelectWrapper,\n} from '@grafana/scenes';\nimport React from 'react';\n\nexport interface VariableValueSelectorsState extends SceneObjectState {\n layout?: ControlsLayout;\n include?: string[];\n exclude?: string[];\n}\n\nexport class CustomVariableValueSelectors extends SceneObjectBase {\n public static Component = CustomVariableValueSelectorsRenderer;\n}\n\nfunction CustomVariableValueSelectorsRenderer({ model }: SceneComponentProps) {\n const variablesSetState = sceneGraph.getVariables(model).useState();\n let variables = variablesSetState.variables;\n\n if (model.state.include?.length) {\n variables = variablesSetState.variables.filter((variable) =>\n model.state.include?.includes(variable.state.name ?? '')\n );\n }\n if (model.state.exclude?.length) {\n variables = variablesSetState.variables.filter(\n (variable) => !model.state.exclude?.includes(variable.state.name ?? '')\n );\n }\n\n return (\n <>\n {variables.map((variable) => (\n \n ))}\n \n );\n}\n","import { css } from '@emotion/css';\nimport { Button, Icon, Tag, useStyles2 } from '@grafana/ui';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport React, { useState } from 'react';\nimport { testIds } from 'services/testIds';\n\ninterface Props {\n onRemove(): void;\n pattern: string;\n size?: PatternSize;\n}\n\ntype PatternSize = 'sm' | 'lg';\n\nexport const PatternTag = ({ onRemove, pattern, size = 'lg' }: Props) => {\n const styles = useStyles2(getStyles);\n const [expanded, setExpanded] = useState(false);\n return (\n
setExpanded(!expanded)} onMouseLeave={() => setExpanded(false)}>\n \n \n \n \n
\n );\n};\n\nconst PREVIEW_WIDTH: Record = {\n sm: 50,\n lg: Math.round(window.innerWidth / 8),\n};\n\nfunction getPatternPreview(pattern: string, size: PatternSize) {\n const length = pattern.length;\n if (length < PREVIEW_WIDTH[size]) {\n return pattern;\n }\n\n const substringLength = Math.round(PREVIEW_WIDTH[size] * 0.4);\n\n return `${pattern.substring(0, substringLength)} … ${pattern.substring(length - substringLength)}`;\n}\n\nconst getStyles = (theme: GrafanaTheme2) => {\n return {\n pattern: css({\n display: 'flex',\n fontFamily: 'monospace',\n gap: theme.spacing(0.25),\n cursor: 'pointer',\n overflow: 'hidden',\n }),\n tag: css({\n borderTopRightRadius: 0,\n borderBottomRightRadius: 0,\n backgroundColor: theme.colors.secondary.main,\n border: `solid 1px ${theme.colors.secondary.border}`,\n color: theme.colors.secondary.text,\n boxSizing: 'border-box',\n padding: theme.spacing(0.25, 0.75),\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n }),\n removeButton: css({\n paddingLeft: 2.5,\n paddingRight: 2.5,\n }),\n };\n};\n","import React from 'react';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { PatternTag } from './PatternTag';\nimport { css } from '@emotion/css';\nimport { useStyles2, Text } from '@grafana/ui';\nimport { USER_EVENTS_ACTIONS, USER_EVENTS_PAGES, reportAppInteraction } from 'services/analytics';\nimport { testIds } from 'services/testIds';\nimport { AppliedPattern } from '../../services/variables';\nimport { addCurrentUrlToHistory } from '../../services/navigate';\n\ntype Props = {\n patterns: AppliedPattern[] | undefined;\n onRemove: (patterns: AppliedPattern[]) => void;\n};\nexport const PatternControls = ({ patterns, onRemove }: Props) => {\n const styles = useStyles2(getStyles);\n\n if (!patterns || patterns.length === 0) {\n return null;\n }\n\n const includePatterns = patterns.filter((pattern) => pattern.type === 'include');\n const excludePatterns = patterns.filter((pattern) => pattern.type !== 'include');\n\n const onRemovePattern = (pattern: AppliedPattern) => {\n addCurrentUrlToHistory();\n onRemove(patterns.filter((pat) => pat !== pattern));\n reportAppInteraction(USER_EVENTS_PAGES.service_details, USER_EVENTS_ACTIONS.service_details.pattern_removed, {\n includePatternsLength: includePatterns.length - (pattern?.type === 'include' ? 1 : 0),\n excludePatternsLength: excludePatterns.length - (pattern?.type !== 'include' ? 1 : 0),\n type: pattern.type,\n });\n };\n\n return (\n
\n {includePatterns.length > 0 && (\n
\n \n Included pattern{patterns.length > 1 ? 's' : ''}\n \n
\n {includePatterns.map((p) => (\n onRemovePattern(p)} />\n ))}\n
\n
\n )}\n {excludePatterns.length > 0 && (\n
\n \n Excluded pattern{excludePatterns.length > 1 ? 's' : ''}:\n \n
\n {excludePatterns.map((p) => (\n 1 ? 'sm' : 'lg'}\n onRemove={() => onRemovePattern(p)}\n />\n ))}\n
\n
\n )}\n
\n );\n};\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n patternsContainer: css({\n overflow: 'hidden',\n }),\n patterns: css({\n display: 'flex',\n gap: theme.spacing(1),\n alignItems: 'center',\n flexWrap: 'wrap',\n }),\n };\n}\n","import { SceneComponentProps, SceneFlexLayout, sceneGraph, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport React from 'react';\nimport { css, cx } from '@emotion/css';\nimport { GiveFeedbackButton } from './GiveFeedbackButton';\nimport { CustomVariableValueSelectors } from './CustomVariableValueSelectors';\nimport { PatternControls } from './PatternControls';\nimport { IndexScene } from './IndexScene';\nimport { CONTROLS_VARS_DATASOURCE, CONTROLS_VARS_FIELDS_COMBINED, LayoutScene } from './LayoutScene';\nimport { useStyles2 } from '@grafana/ui';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { AppliedPattern } from '../../services/variables';\n\ninterface VariableLayoutSceneState extends SceneObjectState {}\nexport class VariableLayoutScene extends SceneObjectBase {\n static Component = ({ model }: SceneComponentProps) => {\n const indexScene = sceneGraph.getAncestor(model, IndexScene);\n const { controls, patterns } = indexScene.useState();\n\n const layoutScene = sceneGraph.getAncestor(model, LayoutScene);\n const { lineFilterRenderer, levelsRenderer } = layoutScene.useState();\n\n const styles = useStyles2(getStyles);\n\n return (\n
\n <>\n {/* First row - datasource, timepicker, refresh, labels, button */}\n {controls && (\n
\n
\n
\n {controls.map((control) => {\n return control instanceof SceneFlexLayout ? (\n \n ) : null;\n })}\n
\n
\n
\n \n
\n {controls.map((control) => {\n return control.state.key === CONTROLS_VARS_DATASOURCE ? (\n \n ) : null;\n })}\n\n
\n {controls.map((control) => {\n return !(control instanceof CustomVariableValueSelectors) &&\n !(control instanceof SceneFlexLayout) ? (\n \n ) : null;\n })}\n
\n
\n
\n
\n )}\n\n {/* Second row - Levels - custom renderer */}\n
\n {levelsRenderer && }\n
\n\n {/* 3rd row - Combined fields (fields + metadata) */}\n
\n {controls && (\n
\n
\n {controls.map((control) => {\n return control instanceof CustomVariableValueSelectors &&\n control.state.key === CONTROLS_VARS_FIELDS_COMBINED ? (\n \n ) : null;\n })}\n
\n
\n )}\n
\n\n {/* 4th row - Patterns */}\n
\n indexScene.setState({ patterns })}\n />\n
\n\n {/* 5th row - Line filters - custom renderer */}\n
\n {lineFilterRenderer && }\n
\n \n
\n );\n };\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n firstRowWrapper: css({\n '& > div > div': {\n gap: '16px',\n label: 'first-row-wrapper',\n\n [theme.breakpoints.down('lg')]: {\n flexDirection: 'column',\n },\n },\n }),\n bodyContainer: css({\n flexGrow: 1,\n display: 'flex',\n minHeight: '100%',\n flexDirection: 'column',\n }),\n container: css({\n flexGrow: 1,\n display: 'flex',\n minHeight: '100%',\n flexDirection: 'column',\n padding: theme.spacing(2),\n maxWidth: '100vw',\n }),\n body: css({\n flexGrow: 1,\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(1),\n }),\n controlsFirstRowContainer: css({\n label: 'controls-first-row',\n display: 'flex',\n gap: theme.spacing(2),\n justifyContent: 'space-between',\n alignItems: 'flex-start',\n }),\n controlsRowContainer: css({\n '&:empty': {\n display: 'none',\n },\n label: 'controls-row',\n display: 'flex',\n // @todo add custom renderers for all variables, this currently results in 2 \"empty\" rows that always take up space\n gap: theme.spacing(1),\n alignItems: 'flex-start',\n paddingLeft: theme.spacing(2),\n }),\n controlsContainer: css({\n label: 'controlsContainer',\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(1),\n }),\n filters: css({\n label: 'filters',\n display: 'flex',\n }),\n filtersWrap: css({\n label: 'filtersWrap',\n display: 'flex',\n gap: theme.spacing(2),\n width: 'calc(100% - 450)',\n flexWrap: 'wrap',\n alignItems: 'flex-end',\n }),\n controlsWrapper: css({\n label: 'controlsWrapper',\n display: 'flex',\n flexDirection: 'column',\n marginTop: theme.spacing(0.375),\n }),\n timeRangeDatasource: css({\n label: 'timeRangeDatasource',\n display: 'flex',\n gap: theme.spacing(1),\n flexWrap: 'wrap',\n justifyContent: 'flex-end',\n }),\n timeRange: css({\n label: 'timeRange',\n display: 'flex',\n flexDirection: 'row',\n gap: theme.spacing(1),\n }),\n controls: css({\n display: 'flex',\n gap: theme.spacing(1),\n }),\n feedback: css({\n textAlign: 'end',\n }),\n rotateIcon: css({\n svg: { transform: 'rotate(180deg)' },\n }),\n };\n}\n","import { GrafanaTheme2 } from '@grafana/data';\nimport { SceneComponentProps, sceneGraph, SceneObject, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport { useStyles2 } from '@grafana/ui';\nimport React from 'react';\nimport { IndexScene } from './IndexScene';\nimport { css } from '@emotion/css';\nimport { InterceptBanner } from './InterceptBanner';\n\nimport { PLUGIN_ID } from '../../services/plugin';\nimport { logger } from '../../services/logger';\nimport { LineFilterVariablesScene } from './LineFilterVariablesScene';\nimport { VariableLayoutScene } from './VariableLayoutScene';\nimport { LevelsVariableScene } from './LevelsVariableScene';\n\ninterface LayoutSceneState extends SceneObjectState {\n interceptDismissed: boolean;\n lineFilterRenderer?: LineFilterVariablesScene;\n levelsRenderer?: LevelsVariableScene;\n variableLayout?: SceneObject;\n}\n\nconst interceptBannerStorageKey = `${PLUGIN_ID}.interceptBannerStorageKey`;\n\nexport const CONTROLS_VARS_FIRST_ROW_KEY = 'vars-row__datasource-labels-timepicker-button';\nexport const CONTROLS_VARS_METADATA_ROW_KEY = 'vars-metadata';\nexport const CONTROLS_VARS_LEVELS_ROW_KEY = 'vars-levels';\nexport const CONTROLS_VARS_FIELDS = 'vars-fields';\nexport const CONTROLS_VARS_FIELDS_COMBINED = 'vars-fields-metadata';\nexport const CONTROLS_VARS_TIMEPICKER = 'vars-timepicker';\nexport const CONTROLS_VARS_REFRESH = 'vars-refresh';\nexport const CONTROLS_VARS_TOOLBAR = 'vars-toolbar';\nexport const CONTROLS_VARS_DATASOURCE = 'vars-ds';\nexport const CONTROLS_VARS_LABELS = 'vars-labels';\n\nexport class LayoutScene extends SceneObjectBase {\n constructor(state: Partial) {\n super({\n ...state,\n interceptDismissed: !!localStorage.getItem(interceptBannerStorageKey),\n });\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n static Component = ({ model }: SceneComponentProps) => {\n const indexScene = sceneGraph.getAncestor(model, IndexScene);\n const { contentScene } = indexScene.useState();\n const { interceptDismissed, variableLayout } = model.useState();\n\n if (!contentScene) {\n logger.warn('content scene not defined');\n return null;\n }\n\n const styles = useStyles2(getStyles);\n return (\n
\n
\n {!interceptDismissed && (\n {\n model.dismiss();\n }}\n />\n )}\n\n {variableLayout && }\n\n {/* Final \"row\" - body */}\n
{contentScene && }
\n
\n
\n );\n };\n\n public onActivate() {\n this.setState({\n lineFilterRenderer: new LineFilterVariablesScene({}),\n levelsRenderer: new LevelsVariableScene({}),\n variableLayout: new VariableLayoutScene({}),\n });\n }\n\n public dismiss() {\n this.setState({\n interceptDismissed: true,\n });\n localStorage.setItem(interceptBannerStorageKey, 'true');\n }\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n bodyContainer: css({\n flexGrow: 1,\n display: 'flex',\n minHeight: '100%',\n flexDirection: 'column',\n }),\n container: css({\n flexGrow: 1,\n display: 'flex',\n minHeight: '100%',\n flexDirection: 'column',\n padding: theme.spacing(2),\n maxWidth: '100vw',\n }),\n body: css({\n label: 'body-wrapper',\n flexGrow: 1,\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(1),\n }),\n controlsContainer: css({\n label: 'controlsContainer',\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(1),\n }),\n };\n}\n","import { AdHocFiltersVariable, AdHocFilterWithLabels, SceneObject } from '@grafana/scenes';\nimport { DataSourceGetTagValuesOptions, GetTagResponse, MetricFindValue, ScopedVars, TimeRange } from '@grafana/data';\nimport { BackendSrvRequest, DataSourceWithBackend, getDataSourceSrv } from '@grafana/runtime';\nimport { getDataSource } from './scenes';\nimport { logger } from './logger';\nimport { LokiDatasource, LokiQuery } from './lokiQuery';\nimport { getDataSourceVariable, getValueFromFieldsFilter } from './variableGetters';\nimport { AdHocFiltersWithLabelsAndMeta, DetectedFieldType, VAR_LEVELS } from './variables';\nimport { isArray } from 'lodash';\nimport { FilterOp } from './filterTypes';\nimport { getFavoriteLabelValuesFromStorage } from './store';\nimport { UIVariableFilterType } from '../Components/ServiceScene/Breakdowns/AddToFiltersButton';\nimport { ExpressionBuilder } from './ExpressionBuilder';\nimport { isOperatorInclusive, isOperatorRegex } from './operatorHelpers';\n\ntype FetchDetectedLabelValuesOptions = {\n expr?: string;\n timeRange?: TimeRange;\n limit?: number;\n scopedVars?: ScopedVars;\n throwError: boolean;\n};\n\nexport type FetchDetectedFieldsOptions = {\n expr: string;\n timeRange?: TimeRange;\n limit?: number;\n scopedVars?: ScopedVars;\n};\n\nexport type DetectedFieldsResult = Array<{\n label: string;\n type: DetectedFieldType;\n cardinality: number;\n parsers: Array<'logfmt' | 'json'> | null;\n}>;\n\nexport interface LokiLanguageProviderWithDetectedLabelValues {\n fetchDetectedLabelValues: (\n labelName: string,\n queryOptions?: FetchDetectedLabelValuesOptions,\n requestOptions?: Partial\n ) => Promise;\n\n fetchDetectedFields: (\n queryOptions?: FetchDetectedFieldsOptions,\n requestOptions?: Partial\n ) => Promise;\n}\n\nexport const getDetectedFieldValuesTagValuesProvider = async (\n filter: AdHocFiltersWithLabelsAndMeta,\n variable: AdHocFiltersVariable,\n expr: string,\n sceneRef: SceneObject,\n timeRange: TimeRange,\n variableType: UIVariableFilterType\n): Promise<{\n replace?: boolean;\n values: MetricFindValue[];\n}> => {\n const datasourceUnknownType = await getDataSourceSrv().get(getDataSource(sceneRef));\n // Narrow the DataSourceApi type to DataSourceWithBackend\n if (!(datasourceUnknownType instanceof DataSourceWithBackend)) {\n logger.error(new Error('getTagValuesProvider: Invalid datasource!'));\n throw new Error('Invalid datasource!');\n }\n\n // Assert datasource is Loki\n const lokiDatasource = datasourceUnknownType as LokiDatasource;\n // Assert language provider is LokiLanguageProvider\n const languageProvider = lokiDatasource.languageProvider as LokiLanguageProviderWithDetectedLabelValues;\n\n let values: MetricFindValue[] = [];\n\n if (languageProvider && languageProvider.fetchDetectedLabelValues) {\n const options: FetchDetectedLabelValuesOptions = {\n expr,\n limit: 1000,\n timeRange,\n throwError: true,\n };\n\n const requestOptions: Partial = {\n showErrorAlert: false,\n };\n\n try {\n let results = await languageProvider.fetchDetectedLabelValues(filter.key, options, requestOptions);\n if (results && isArray(results)) {\n // Always return all level values\n if (variableType === VAR_LEVELS) {\n return { replace: true, values: results.map((key) => ({ text: key })) };\n }\n\n const currentFilters = variable.state.filters;\n\n // Remove values that are already used, if an exact match is found\n let valuesToRemove: string[] = [];\n currentFilters.forEach((filter) => {\n const value = filter.valueLabels?.[0] ?? filter.value;\n if (isOperatorRegex(filter.operator)) {\n value.split('|').forEach((v) => valuesToRemove.push(v));\n } else {\n valuesToRemove.push(value);\n }\n });\n\n const filteredResults = results.filter((value) => {\n return !valuesToRemove.includes(value);\n });\n\n if (filter.meta?.parser !== 'structuredMetadata') {\n if (filter.value) {\n const valueDecoded = getValueFromFieldsFilter(filter, variableType);\n return {\n replace: true,\n values: filteredResults.map((v) => ({\n text: v,\n value: JSON.stringify({\n value: v,\n parser: valueDecoded.parser,\n }),\n })),\n };\n } else {\n // if the filter is wip, we trust that the parser was returned in the getTagKeys method, and added to the meta prop on the filter\n return {\n replace: true,\n values: filteredResults.map((v) => ({\n text: v,\n value: JSON.stringify({\n value: v,\n parser: filter.meta?.parser ?? 'mixed',\n }),\n })),\n };\n }\n } else {\n values = filteredResults.map((r) => ({ text: r }));\n }\n } else {\n values = [];\n logger.error(results, { msg: 'fetchDetectedLabelValues error!' });\n }\n } catch (e) {\n logger.error(e, {\n msg: 'getDetectedFieldValuesTagValuesProvider: loki missing detected_field/.../values endpoint. Upgrade to Loki 3.3.0 or higher.',\n });\n values = [];\n }\n } else {\n logger.warn(\n 'getDetectedFieldValuesTagValuesProvider: fetchDetectedLabelValues is not defined in Loki datasource. Upgrade to Grafana 11.4 or higher.'\n );\n values = [];\n }\n\n return { replace: true, values };\n};\n\nexport function tagValuesFilterAdHocFilters(\n existingFilters: AdHocFilterWithLabels[],\n filter: AdHocFilterWithLabels<{}>\n) {\n let oldFiltersFiltered = existingFilters.filter(\n (f) => !(isOperatorInclusive(filter.operator) && f.key === filter.key)\n );\n\n // If there aren't any inclusive filters, we need to ignore the exclusive ones as well, or Loki will throw an error\n if (!oldFiltersFiltered.some((filter) => isOperatorInclusive(filter.operator))) {\n oldFiltersFiltered = [];\n }\n\n return oldFiltersFiltered;\n}\n\nexport async function getLabelsTagValuesProvider(\n variable: AdHocFiltersVariable,\n filter: AdHocFilterWithLabels\n): Promise<{\n replace?: boolean;\n values: GetTagResponse | MetricFindValue[];\n}> {\n const datasource_ = await getDataSourceSrv().get(getDataSource(variable));\n if (!(datasource_ instanceof DataSourceWithBackend)) {\n logger.error(new Error('getTagValuesProvider: Invalid datasource!'));\n throw new Error('Invalid datasource!');\n }\n const datasource = datasource_ as LokiDatasource;\n\n if (datasource && datasource.getTagValues) {\n // Filter out other values for this key so users can include other values for this label\n const filterTransformer = new ExpressionBuilder(variable.state.filters);\n const filters = filterTransformer.getJoinedLabelsFilters();\n const filtersFiltered = tagValuesFilterAdHocFilters(filters, filter);\n\n const options: DataSourceGetTagValuesOptions = {\n key: filter.key,\n filters: filtersFiltered,\n };\n\n let results = await datasource.getTagValues(options);\n\n if (isArray(results)) {\n results = results.filter((result) => {\n // Filter out values that we already have added as filters\n return !variable.state.filters\n .filter((f) => f.key === filter.key)\n .some((f) => {\n if (isOperatorRegex(f.operator)) {\n const values = f.value.split('|');\n return values.some((value) => value === result.text);\n } else {\n // If true, the results should be filtered out\n return f.operator === FilterOp.Equal && f.value === result.text;\n }\n });\n });\n const favoriteValuesArray = getFavoriteLabelValuesFromStorage(\n getDataSourceVariable(variable).getValue()?.toString(),\n filter.key\n );\n const favoriteValuesSet = new Set(favoriteValuesArray);\n if (favoriteValuesArray.length) {\n results.sort((a, b) => {\n return (favoriteValuesSet.has(b.text) ? 1 : -1) - (favoriteValuesSet.has(a.text) ? 1 : -1);\n });\n }\n }\n\n return { replace: true, values: results };\n } else {\n logger.error(new Error('getTagValuesProvider: missing or invalid datasource!'));\n return { replace: true, values: [] };\n }\n}\n","import { logger } from './logger';\nimport { LokiDatasource, LokiQuery } from './lokiQuery';\nimport {\n DataSourceGetTagKeysOptions,\n getDefaultTimeRange,\n GetTagResponse,\n KeyValue,\n MetricFindValue,\n ScopedVars,\n TimeRange,\n} from '@grafana/data';\nimport { AdHocFiltersVariable, SceneObject } from '@grafana/scenes';\nimport { BackendSrvRequest, DataSourceWithBackend, getDataSourceSrv } from '@grafana/runtime';\nimport { getDataSource } from './scenes';\nimport { LABELS_TO_REMOVE } from './filters';\nimport { DetectedFieldsResult, LokiLanguageProviderWithDetectedLabelValues } from './TagValuesProviders';\nimport { LEVEL_VARIABLE_VALUE, ParserType, VAR_FIELDS_AND_METADATA, VAR_LEVELS } from './variables';\nimport { UIVariableFilterType } from '../Components/ServiceScene/Breakdowns/AddToFiltersButton';\nimport { ExpressionBuilder } from './ExpressionBuilder';\n\nexport async function getLabelsTagKeysProvider(variable: AdHocFiltersVariable): Promise<{\n replace?: boolean;\n values: GetTagResponse | MetricFindValue[];\n}> {\n const datasource_ = await getDataSourceSrv().get(getDataSource(variable));\n if (!(datasource_ instanceof DataSourceWithBackend)) {\n logger.error(new Error('getTagKeysProvider: Invalid datasource!'));\n throw new Error('Invalid datasource!');\n }\n const datasource = datasource_ as LokiDatasource;\n\n if (datasource && datasource.getTagKeys) {\n const filtersTransformer = new ExpressionBuilder(variable.state.filters);\n const filters = filtersTransformer.getJoinedLabelsFilters();\n\n const options: DataSourceGetTagKeysOptions = {\n filters,\n };\n\n const tagKeys = await datasource.getTagKeys(options);\n const result: MetricFindValue[] = Array.isArray(tagKeys) ? tagKeys : [];\n const filteredResult = result.filter((key) => !LABELS_TO_REMOVE.includes(key.text));\n\n return { replace: true, values: filteredResult };\n } else {\n logger.error(new Error('getTagKeysProvider: missing or invalid datasource!'));\n return { replace: true, values: [] };\n }\n}\n\ntype DetectedFieldQueryOptions = {\n expr: string;\n timeRange?: TimeRange;\n limit?: number;\n scopedVars?: ScopedVars;\n sceneRef: SceneObject;\n variableType: UIVariableFilterType;\n};\n\nexport async function getFieldsKeysProvider({\n limit,\n timeRange,\n scopedVars,\n expr,\n sceneRef,\n variableType,\n}: DetectedFieldQueryOptions): Promise<{\n replace?: boolean;\n values: MetricFindValue[];\n}> {\n const datasource_ = await getDataSourceSrv().get(getDataSource(sceneRef));\n if (!(datasource_ instanceof DataSourceWithBackend)) {\n logger.error(new Error('getTagKeysProvider: Invalid datasource!'));\n throw new Error('Invalid datasource!');\n }\n const datasource = datasource_ as LokiDatasource;\n const languageProvider = datasource.languageProvider as LokiLanguageProviderWithDetectedLabelValues;\n\n const options: DetectedFieldQueryOptions = {\n expr,\n timeRange,\n scopedVars,\n variableType,\n sceneRef,\n limit,\n };\n\n // @todo delete after min supported grafana is upgraded to >=11.6\n // see ced526b3e37baded9082ffc3c2378a21201801b6 before this all got messed up\n const fetchDetectedFieldsFn =\n (datasource &&\n typeof languageProvider.fetchDetectedFields === 'function' &&\n languageProvider.fetchDetectedFields.bind(languageProvider)) ||\n function (opts: DetectedFieldQueryOptions) {\n return fetchDetectedFields(datasource, opts);\n };\n\n // fetchDetectedFields did not make the 11.5 cutoff, so is only available in 11.6, to keep this PR from needing to wait for 2 months before release, we're going to copy over the implementation into Grafana Logs Drilldown\n if (fetchDetectedFieldsFn && typeof fetchDetectedFieldsFn === 'function') {\n const tagKeys: DetectedFieldsResult | Error = await fetchDetectedFieldsFn(options);\n\n if (tagKeys instanceof Error) {\n logger.error(tagKeys, { msg: 'Failed to fetch detected fields' });\n throw tagKeys;\n }\n\n const result: MetricFindValue[] = tagKeys\n .filter((field) => {\n if (variableType === VAR_LEVELS) {\n return field.label === LEVEL_VARIABLE_VALUE;\n }\n\n if (variableType === VAR_FIELDS_AND_METADATA && field.label !== LEVEL_VARIABLE_VALUE) {\n return true;\n }\n\n return field.parsers !== null;\n })\n .map((field) => {\n if (variableType === VAR_FIELDS_AND_METADATA) {\n let parser: ParserType = field.parsers?.length === 1 ? field.parsers[0] : 'mixed';\n if (field.parsers === null) {\n parser = 'structuredMetadata';\n }\n\n const type = field.type;\n\n return {\n text: field.label,\n value: field.label,\n group: parser,\n meta: {\n parser,\n type,\n },\n };\n }\n\n return { text: field.label, value: field.label };\n });\n\n result.sort((a, b) => {\n if (a.group === 'structuredMetadata' && b.group !== 'structuredMetadata') {\n return -1;\n }\n if (a.group !== 'structuredMetadata' && b.group === 'structuredMetadata') {\n return 1;\n }\n return 0;\n });\n\n return { replace: true, values: result };\n } else {\n logger.error(new Error('getTagKeysProvider: missing or invalid datasource!'));\n return { replace: true, values: [] };\n }\n}\n\nconst EMPTY_SELECTOR = '{}';\n// @todo delete after min supported grafana is upgraded to >=11.6\nasync function fetchDetectedFields(\n datasource: LokiDatasource,\n queryOptions: DetectedFieldQueryOptions,\n requestOptions?: Partial\n): Promise {\n if (!('interpolateString' in datasource) || typeof datasource?.interpolateString !== 'function') {\n throw new Error('Datasource missing interpolateString method');\n }\n\n const interpolatedExpr =\n queryOptions.expr && queryOptions.expr !== EMPTY_SELECTOR\n ? datasource.interpolateString(queryOptions.expr, queryOptions.scopedVars)\n : undefined;\n\n if (!interpolatedExpr) {\n throw new Error('fetchDetectedFields requires query expression');\n }\n\n const url = `detected_fields`;\n const range = queryOptions?.timeRange ?? getDefaultTimeRange();\n const rangeParams = datasource.getTimeRangeParams(range);\n const { start, end } = rangeParams;\n const params: KeyValue = { start, end, limit: queryOptions?.limit ?? 1000 };\n params.query = interpolatedExpr;\n\n return new Promise(async (resolve, reject) => {\n try {\n const data: { limit: number; fields: DetectedFieldsResult } = await datasource.getResource(\n url,\n params,\n requestOptions\n );\n resolve(data.fields);\n } catch (error) {\n console.error('error', error);\n reject(error);\n }\n });\n}\n","/**\n * Originally from https://github.com/ccampbell/mousetrap\n *\n * Copyright 2012-2017 Craig Campbell\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * Mousetrap is a simple keyboard shortcut library for Javascript with\n * no external dependencies\n *\n * @version 1.6.5\n * @url craig.is/killing/mice\n */\n\ninterface ExtendedKeyboardEvent extends KeyboardEvent {\n returnValue: boolean; // IE returnValue\n}\n\ntype MousetrapCallback = (e: ExtendedKeyboardEvent, combo: string) => boolean | void;\n\ninterface KeyInfo {\n key: string;\n modifiers: string[];\n action: string;\n}\n\ninterface CallbackInfo {\n /**\n * Modifiers (such as `ctrl`) involved in this binding\n */\n modifiers: string[];\n\n /**\n * A single key press binding, such as `t` (for `t v`) or `ctrl + z`\n */\n combo: string;\n\n /**\n * If this binding is a part of a sequence (`t v`, but not `ctrl + z`), this is the full sequence\n */\n seq?: string;\n\n /**\n * The event type, such as keydown, keyup, or keypress\n */\n action: string;\n level: number | undefined;\n callback: MousetrapCallback;\n}\n\n/**\n * mapping of special keycodes to their corresponding keys\n *\n * everything in this dictionary cannot use keypress events\n * so it has to be here to map to the correct keycodes for\n * keyup/keydown events\n */\nlet MAP: Record = {\n 8: 'backspace',\n 9: 'tab',\n 13: 'enter',\n 16: 'shift',\n 17: 'ctrl',\n 18: 'alt',\n 20: 'capslock',\n 27: 'esc',\n 32: 'space',\n 33: 'pageup',\n 34: 'pagedown',\n 35: 'end',\n 36: 'home',\n 37: 'left',\n 38: 'up',\n 39: 'right',\n 40: 'down',\n 45: 'ins',\n 46: 'del',\n 91: 'meta',\n 93: 'meta',\n 224: 'meta',\n};\n\n/**\n * mapping for special characters so they can support\n *\n * this dictionary is only used incase you want to bind a\n * keyup or keydown event to one of these keys\n */\nlet KEYCODE_MAP: Record = {\n 106: '*',\n 107: '+',\n 109: '-',\n 110: '.',\n 111: '/',\n 186: ';',\n 187: '=',\n 188: ',',\n 189: '-',\n 190: '.',\n 191: '/',\n 192: '`',\n 219: '[',\n 220: '\\\\',\n 221: ']',\n 222: \"'\",\n};\n\n/**\n * this is a mapping of keys that require shift on a US keypad\n * back to the non shift equivalents\n *\n * this is so you can use keyup events with these keys\n *\n * note that this will only work reliably on US keyboards\n */\nlet SHIFT_MAP: Record = {\n '~': '`',\n '!': '1',\n '@': '2',\n '#': '3',\n $: '4',\n '%': '5',\n '^': '6',\n '&': '7',\n '*': '8',\n '(': '9',\n ')': '0',\n _: '-',\n '+': '=',\n ':': ';',\n '\"': \"'\",\n '<': ',',\n '>': '.',\n '?': '/',\n '|': '\\\\',\n};\n\n/**\n * this is a list of special strings you can use to map\n * to modifier keys when you specify your keyboard shortcuts\n */\nlet SPECIAL_ALIASES: Record = {\n option: 'alt',\n command: 'meta',\n return: 'enter',\n escape: 'esc',\n plus: '+',\n mod: /Mac|iPod|iPhone|iPad/.test(navigator.platform) ? 'meta' : 'ctrl',\n};\n\n/**\n * variable to store the flipped version of _MAP from above\n * needed to check if we should use keypress or not when no action\n * is specified\n */\nlet REVERSE_MAP: Record | null = null;\n\n/**\n * loop through the f keys, f1 to f19 and add them to the map\n * programmatically\n */\nfor (let i = 1; i < 20; ++i) {\n MAP[111 + i] = 'f' + i;\n}\n\n/**\n * loop through to map numbers on the numeric keypad\n */\nfor (let i = 0; i <= 9; ++i) {\n // This needs to use a string cause otherwise since 0 is falsey\n // mousetrap will never fire for numpad 0 pressed as part of a keydown\n // event.\n //\n // @see https://github.com/ccampbell/mousetrap/pull/258\n MAP[i + 96] = i.toString();\n}\n\n/**\n * takes the event and returns the key character\n */\nfunction characterFromEvent(event: KeyboardEvent): string {\n // for keypress events we should return the character as is\n if (event.type === 'keypress') {\n let character = String.fromCharCode(event.which);\n\n // if the shift key is not pressed then it is safe to assume\n // that we want the character to be lowercase. this means if\n // you accidentally have caps lock on then your key bindings\n // will continue to work\n //\n // the only side effect that might not be desired is if you\n // bind something like 'A' cause you want to trigger an\n // event when capital A is pressed caps lock will no longer\n // trigger the event. shift+a will though.\n if (!event.shiftKey) {\n character = character.toLowerCase();\n }\n\n return character;\n }\n\n // for non keypress events the special maps are needed\n if (MAP[event.which]) {\n return MAP[event.which];\n }\n\n if (KEYCODE_MAP[event.which]) {\n return KEYCODE_MAP[event.which];\n }\n\n // if it is not in the special map\n\n // with keydown and keyup events the character seems to always\n // come in as an uppercase character whether you are pressing shift\n // or not. we should make sure it is always lowercase for comparisons\n return String.fromCharCode(event.which).toLowerCase();\n}\n\n/**\n * checks if two arrays are equal\n */\nfunction modifiersMatch(modifiers1: string[], modifiers2: string[]): boolean {\n return modifiers1.sort().join(',') === modifiers2.sort().join(',');\n}\n\n/**\n * takes a key event and figures out what the modifiers are\n */\nfunction eventModifiers(event: KeyboardEvent): string[] {\n let modifiers = [];\n\n if (event.shiftKey) {\n modifiers.push('shift');\n }\n\n if (event.altKey) {\n modifiers.push('alt');\n }\n\n if (event.ctrlKey) {\n modifiers.push('ctrl');\n }\n\n if (event.metaKey) {\n modifiers.push('meta');\n }\n\n return modifiers;\n}\n\n/**\n * prevents default for this event\n */\nfunction preventDefault(event: KeyboardEvent): void {\n if (event.preventDefault) {\n event.preventDefault();\n return;\n }\n\n event.returnValue = false;\n}\n\n/**\n * stops propagation for this event\n */\nfunction stopPropagation(event: KeyboardEvent): void {\n if (event.stopPropagation) {\n event.stopPropagation();\n return;\n }\n\n event.cancelBubble = true;\n}\n\n/**\n * determines if the keycode specified is a modifier key or not\n */\nfunction isModifier(key: string): boolean {\n return key === 'shift' || key === 'ctrl' || key === 'alt' || key === 'meta';\n}\n\n/**\n * reverses the map lookup so that we can look for specific keys\n * to see what can and can't use keypress\n */\nfunction getReverseMap() {\n if (!REVERSE_MAP) {\n REVERSE_MAP = {};\n for (let key in MAP) {\n const keyNumber = parseInt(key, 10);\n // pull out the numeric keypad from here cause keypress should\n // be able to detect the keys from the character\n if (keyNumber > 95 && keyNumber < 112) {\n continue;\n }\n\n if (MAP.hasOwnProperty(key)) {\n REVERSE_MAP[MAP[key]] = key;\n }\n }\n }\n return REVERSE_MAP;\n}\n\n/**\n * picks the best action based on the key combination\n */\nfunction pickBestAction(key: string, modifiers: string[], action?: string): string {\n // if no action was picked in we should try to pick the one\n // that we think would work best for this key\n if (!action) {\n action = getReverseMap()[key] ? 'keydown' : 'keypress';\n }\n\n // modifier keys don't work as expected with keypress,\n // switch to keydown\n if (action === 'keypress' && modifiers.length) {\n action = 'keydown';\n }\n\n return action;\n}\n\n/**\n * Converts from a string key combination to an array\n */\nfunction keysFromString(combination: string): string[] {\n if (combination === '+') {\n return ['+'];\n }\n\n combination = combination.replace(/\\+{2}/g, '+plus');\n return combination.split('+');\n}\n\n/**\n * Gets info for a specific key combination\n */\nfunction getKeyInfo(combination: string, action?: string): KeyInfo {\n let keys;\n let key;\n let i;\n let modifiers = [];\n\n // take the keys from this pattern and figure out what the actual\n // pattern is all about\n keys = keysFromString(combination);\n\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n\n // normalize key names\n if (SPECIAL_ALIASES[key]) {\n key = SPECIAL_ALIASES[key];\n }\n\n // if this is not a keypress event then we should\n // be smart about using shift keys\n // this will only work for US keyboards however\n if (action && action !== 'keypress' && SHIFT_MAP[key]) {\n key = SHIFT_MAP[key];\n modifiers.push('shift');\n }\n\n // if this key is a modifier then add it to the list of modifiers\n if (isModifier(key)) {\n modifiers.push(key);\n }\n }\n\n if (!key) {\n throw new Error('Unable to get key');\n }\n\n // depending on what the key combination is\n // we will try to pick the best event for it\n action = pickBestAction(key, modifiers, action);\n\n return {\n key: key,\n modifiers: modifiers,\n action: action,\n };\n}\n\nfunction belongsTo(element: null | ParentNode | Element | Document, ancestor: Element | Document): boolean {\n if (element === null || element === document) {\n return false;\n }\n\n if (element === ancestor) {\n return true;\n }\n\n return belongsTo(element.parentNode, ancestor);\n}\n\nexport class Mousetrap {\n target: HTMLElement | Document;\n\n /**\n * a list of all the callbacks setup via Mousetrap.bind()\n */\n _callbacks: Record = {};\n\n /**\n * direct map of string combinations to callbacks used for trigger()\n */\n _directMap: Record = {};\n\n /**\n * keeps track of what level each sequence is at since multiple\n * sequences can start out with the same sequence\n */\n _sequenceLevels: Record = {};\n\n /**\n * variable to store the setTimeout call\n */\n _resetTimer: undefined | number = undefined;\n\n /**\n * temporary state where we will ignore the next keyup\n */\n _ignoreNextKeyup: boolean | string = false;\n\n /**\n * temporary state where we will ignore the next keypress\n */\n _ignoreNextKeypress = false;\n\n /**\n * are we currently inside of a sequence?\n * type of action (\"keyup\" or \"keydown\" or \"keypress\") or false\n */\n _nextExpectedAction: boolean | string = false;\n\n _globalCallbacks: Record = {};\n\n constructor(el: HTMLElement | Document) {\n this.target = el;\n\n this.target.addEventListener('keypress', (event) => {\n if (event instanceof KeyboardEvent) {\n this._handleKeyEvent(event);\n }\n });\n this.target.addEventListener('keydown', (event) => {\n if (event instanceof KeyboardEvent) {\n this._handleKeyEvent(event);\n }\n });\n this.target.addEventListener('keyup', (event) => {\n if (event instanceof KeyboardEvent) {\n this._handleKeyEvent(event);\n }\n });\n }\n\n /**\n * resets all sequence counters except for the ones passed in\n */\n private _resetSequences = (doNotReset: Record): void => {\n doNotReset = doNotReset || {};\n\n let activeSequences = false,\n key;\n\n for (key in this._sequenceLevels) {\n if (doNotReset[key]) {\n activeSequences = true;\n continue;\n }\n this._sequenceLevels[key] = 0;\n }\n\n if (!activeSequences) {\n this._nextExpectedAction = false;\n }\n };\n\n /**\n * finds all callbacks that match based on the keycode, modifiers,\n * and action\n */\n private _getMatches = (\n character: string,\n modifiers: string[],\n event: Pick,\n sequenceName?: string,\n combination?: string,\n level?: number\n ): CallbackInfo[] => {\n let i;\n let callback;\n let matches = [];\n let action = event.type;\n\n // if there are no events related to this keycode\n if (!this._callbacks[character]) {\n return [];\n }\n\n // if a modifier key is coming up on its own we should allow it\n if (action === 'keyup' && isModifier(character)) {\n modifiers = [character];\n }\n\n // loop through all callbacks for the key that was pressed\n // and see if any of them match\n for (i = 0; i < this._callbacks[character].length; ++i) {\n callback = this._callbacks[character][i];\n\n // if a sequence name is not specified, but this is a sequence at\n // the wrong level then move onto the next match\n if (!sequenceName && callback.seq && this._sequenceLevels[callback.seq] !== callback.level) {\n continue;\n }\n\n // if the action we are looking for doesn't match the action we got\n // then we should keep going\n if (action !== callback.action) {\n continue;\n }\n\n // if this is a keypress event and the meta key and control key\n // are not pressed that means that we need to only look at the\n // character, otherwise check the modifiers as well\n //\n // chrome will not fire a keypress if meta or control is down\n // safari will fire a keypress if meta or meta+shift is down\n // firefox will fire a keypress if meta or control is down\n if (\n (action === 'keypress' && !event.metaKey && !event.ctrlKey) ||\n modifiersMatch(modifiers, callback.modifiers)\n ) {\n // when you bind a combination or sequence a second time it\n // should overwrite the first one. if a sequenceName or\n // combination is specified in this call it does just that\n //\n // @todo make deleting its own method?\n let deleteCombo = !sequenceName && callback.combo === combination;\n let deleteSequence = sequenceName && callback.seq === sequenceName && callback.level === level;\n if (deleteCombo || deleteSequence) {\n this._callbacks[character].splice(i, 1);\n }\n\n matches.push(callback);\n }\n }\n\n return matches;\n };\n\n /**\n * actually calls the callback function\n *\n * if your callback function returns false this will use the jquery\n * convention - prevent default and stop propagation on the event\n *\n * @param combo Is the key binding that triggered this callback. When a sequence is triggered, this is the whole sequence. Otherwise, it's the intermediate keys\n * @param sequence Is the 'parent sequence' of the combo. When the whole sequence is triggered, this is undefined.\n */\n private _fireCallback = (callback: Function, e: KeyboardEvent, combo: string, sequence?: string) => {\n // if this event should not happen stop here\n const target = e.target || e.srcElement;\n if (target && target instanceof HTMLElement && this.stopCallback(e, target, combo, sequence)) {\n return;\n }\n\n if (callback(e, combo) === false) {\n preventDefault(e);\n stopPropagation(e);\n }\n };\n\n /**\n * handles a character key event\n */\n private _handleKey = (character: string, modifiers: string[], e: KeyboardEvent) => {\n let callbacks = this._getMatches(character, modifiers, e);\n let i;\n let doNotReset: Record = {};\n let maxLevel = 0;\n let processedSequenceCallback = false;\n\n // Calculate the maxLevel for sequences so we can only execute the longest callback sequence\n for (i = 0; i < callbacks.length; ++i) {\n if (callbacks[i].seq) {\n maxLevel = Math.max(maxLevel, callbacks[i].level ?? 0);\n }\n }\n\n // loop through matching callbacks for this key event\n for (i = 0; i < callbacks.length; ++i) {\n // fire for all sequence callbacks\n // this is because if for example you have multiple sequences\n // bound such as \"g i\" and \"g t\" they both need to fire the\n // callback for matching g cause otherwise you can only ever\n // match the first one\n const seq = callbacks[i].seq;\n if (seq) {\n // only fire callbacks for the maxLevel to prevent\n // subsequences from also firing\n //\n // for example 'a option b' should not cause 'option b' to fire\n // even though 'option b' is part of the other sequence\n //\n // any sequences that do not match here will be discarded\n // below by the _resetSequences call\n if (callbacks[i].level !== maxLevel) {\n continue;\n }\n\n processedSequenceCallback = true;\n\n // keep a list of which sequences were matches for later\n doNotReset[seq] = 1;\n this._fireCallback(callbacks[i].callback, e, callbacks[i].combo, seq);\n\n // When matching a callback, don't reset other callbacks that starts with this prefix\n // This allows chaining of multiple shortcuts that share a prefix. e.g. if we have\n // `t left` and `t right`, allow user to hit `t left`, `right` without resetting the sequence\n const suffixPrefixIndex = seq.lastIndexOf(character);\n const sequencePrefix = seq.slice(0, suffixPrefixIndex);\n for (const [seq, level] of Object.entries(this._sequenceLevels)) {\n if (level > 0 && seq.startsWith(sequencePrefix)) {\n doNotReset[seq] = 1;\n }\n }\n\n continue;\n }\n\n // if there were no sequence matches but we are still here\n // that means this is a regular match so we should fire that\n if (!processedSequenceCallback) {\n this._fireCallback(callbacks[i].callback, e, callbacks[i].combo);\n }\n }\n\n // Don't reset a sequence if this character is the start of a sequence that has already progressed.\n // This allows `t left` to be hit immediately after a `t right`\n for (const callback of this._callbacks[character] ?? []) {\n if (callback.action === e.type && callback.seq && callback.level === 0) {\n doNotReset[callback.seq] = 1;\n }\n }\n\n // if the key you pressed matches the type of sequence without\n // being a modifier (ie \"keyup\" or \"keypress\") then we should\n // reset all sequences that were not matched by this event\n //\n // this is so, for example, if you have the sequence \"h a t\" and you\n // type \"h e a r t\" it does not match. in this case the \"e\" will\n // cause the sequence to reset\n //\n // modifier keys are ignored because you can have a sequence\n // that contains modifiers such as \"enter ctrl+space\" and in most\n // cases the modifier key will be pressed before the next key\n //\n // also if you have a sequence such as \"ctrl+b a\" then pressing the\n // \"b\" key will trigger a \"keypress\" and a \"keydown\"\n //\n // the \"keydown\" is expected when there is a modifier, but the\n // \"keypress\" ends up matching the _nextExpectedAction since it occurs\n // after and that causes the sequence to reset\n //\n // we ignore keypresses in a sequence that directly follow a keydown\n // for the same character\n let ignoreThisKeypress = e.type === 'keypress' && this._ignoreNextKeypress;\n if (e.type === this._nextExpectedAction && !isModifier(character) && !ignoreThisKeypress) {\n this._resetSequences(doNotReset);\n }\n\n this._ignoreNextKeypress = processedSequenceCallback && e.type === 'keydown';\n };\n\n /**\n * handles a keydown event\n */\n private _handleKeyEvent = (rawEvent: Event) => {\n if (!(rawEvent instanceof KeyboardEvent)) {\n throw new Error(\"Didn't get a KeyboardEvent\");\n }\n const event: KeyboardEvent = rawEvent;\n\n // Don't trigger shortcuts when a key is just held down\n if (event.repeat) {\n return;\n }\n\n // normalize e.which for key events\n // @see http://stackoverflow.com/questions/4285627/javascript-keycode-vs-charcode-utter-confusion\n if (typeof event.which !== 'number') {\n // @ts-expect-error - TODO: determine what to do with this compat\n event.which = event.keyCode;\n }\n\n let character = characterFromEvent(event);\n\n // no character found then stop\n if (!character) {\n return;\n }\n\n // need to use === for the character check because the character can be 0\n if (event.type === 'keyup' && this._ignoreNextKeyup === character) {\n this._ignoreNextKeyup = false;\n return;\n }\n\n this.handleKey(character, eventModifiers(event), event);\n };\n\n /**\n * called to set a 1 second timeout on the specified sequence\n *\n * this is so after each key press in the sequence you have 1 second\n * to press the next key before you have to start over\n */\n private _resetSequenceTimer = () => {\n clearTimeout(this._resetTimer);\n this._resetTimer = setTimeout(this._resetSequences, 1000);\n };\n\n /**\n * binds a key sequence to an event\n */\n private _bindSequence = (combo: string, keys: string[], callback: MousetrapCallback, action?: string): void => {\n // start off by adding a sequence level record for this combination\n // and setting the level to 0\n this._sequenceLevels[combo] = 0;\n\n /**\n * callback to increase the sequence level for this sequence and reset\n * all other sequences that were active\n */\n const _increaseSequence = (nextAction: string): MousetrapCallback => {\n return () => {\n this._nextExpectedAction = nextAction;\n ++this._sequenceLevels[combo];\n this._resetSequenceTimer();\n };\n };\n\n /**\n * wraps the specified callback inside of another function in order\n * to reset all sequence counters as soon as this sequence is done\n */\n const _callbackAndReset = (e: KeyboardEvent): void => {\n this._fireCallback(callback, e, combo);\n\n // we should ignore the next key up if the action is key down\n // or keypress. this is so if you finish a sequence and\n // release the key the final key will not trigger a keyup\n if (action !== 'keyup') {\n this._ignoreNextKeyup = characterFromEvent(e);\n }\n\n // Reset the sequence timer and allow for this shortcut to be\n // triggered again just by repeating the last key\n this._resetSequenceTimer();\n };\n\n // loop through keys one at a time and bind the appropriate callback\n // function. for any key leading up to the final one it should\n // increase the sequence. after the final, it should reset all sequences\n //\n // if an action is specified in the original bind call then that will\n // be used throughout. otherwise we will pass the action that the\n // next key in the sequence should match. this allows a sequence\n // to mix and match keypress and keydown events depending on which\n // ones are better suited to the key provided\n for (let i = 0; i < keys.length; ++i) {\n let isFinal = i + 1 === keys.length;\n let wrappedCallback = isFinal ? _callbackAndReset : _increaseSequence(action || getKeyInfo(keys[i + 1]).action);\n this._bindSingle(keys[i], wrappedCallback, action, combo, i);\n }\n };\n\n /**\n * binds a single keyboard combination\n */\n private _bindSingle = (\n combination: string,\n callback: MousetrapCallback,\n action?: string,\n sequenceName?: string,\n level?: number\n ): void => {\n // store a direct mapped reference for use with Mousetrap.trigger\n this._directMap[combination + ':' + action] = callback;\n\n // make sure multiple spaces in a row become a single space\n combination = combination.replace(/\\s+/g, ' ');\n\n let sequence = combination.split(' ');\n let info;\n\n // if this pattern is a sequence of keys then run through this method\n // to reprocess each pattern one key at a time\n if (sequence.length > 1) {\n this._bindSequence(combination, sequence, callback, action);\n return;\n }\n\n info = getKeyInfo(combination, action);\n\n // make sure to initialize array if this is the first time\n // a callback is added for this key\n this._callbacks[info.key] = this._callbacks[info.key] || [];\n\n // remove an existing match if there is one\n const eventLike = { type: info.action, metaKey: false, ctrlKey: false };\n this._getMatches(info.key, info.modifiers, eventLike, sequenceName, combination, level);\n\n const callbackInfo: CallbackInfo = {\n callback: callback,\n modifiers: info.modifiers,\n action: info.action,\n seq: sequenceName,\n level: level,\n combo: combination,\n };\n\n // add this call back to the array\n // if it is a sequence put it at the beginning\n // if not put it at the end\n //\n // this is important because the way these are processed expects\n // the sequence ones to come first\n this._callbacks[info.key][sequenceName ? 'unshift' : 'push'](callbackInfo);\n };\n\n /**\n * binds multiple combinations to the same callback\n */\n private _bindMultiple = (combinations: string[], callback: MousetrapCallback, action: string | undefined): void => {\n for (let i = 0; i < combinations.length; ++i) {\n this._bindSingle(combinations[i], callback, action);\n }\n };\n\n /**\n * binds an event to mousetrap\n *\n * can be a single key, a combination of keys separated with +,\n * an array of keys, or a sequence of keys separated by spaces\n *\n * be sure to list the modifier keys first to make sure that the\n * correct key ends up getting bound (the last key in the pattern)\n */\n bind = (keys: string | string[], callback: MousetrapCallback, action?: string) => {\n keys = keys instanceof Array ? keys : [keys];\n this._bindMultiple(keys, callback, action);\n return self;\n };\n\n /**\n * unbinds an event to mousetrap\n *\n * the unbinding sets the callback function of the specified key combo\n * to an empty function and deletes the corresponding key in the\n * _directMap dict.\n *\n * TODO: actually remove this from the _callbacks dictionary instead\n * of binding an empty function\n *\n * the keycombo+action has to be exactly the same as\n * it was defined in the bind method\n */\n unbind = (keys: string | string[], action?: string) => {\n return this.bind(keys, function () {}, action);\n };\n\n // From bind-global plugin\n // https://github.com/Elvynia/mousetrap-global-bind/blob/master/mousetrap-global-bind.js#L28\n bindGlobal = (keys: string | string[], callback: MousetrapCallback, action?: string) => {\n this.bind(keys, callback, action);\n\n if (keys instanceof Array) {\n for (let i = 0; i < keys.length; i++) {\n this._globalCallbacks[keys[i]] = true;\n }\n return;\n }\n\n this._globalCallbacks[keys] = true;\n };\n\n // From bind-global plugin\n // https://github.com/Elvynia/mousetrap-global-bind/blob/master/mousetrap-global-bind.js#L42\n unbindGlobal = (keys: string | string[], action?: string) => {\n this.unbind(keys, action);\n\n if (keys instanceof Array) {\n for (let i = 0; i < keys.length; i++) {\n this._globalCallbacks[keys[i]] = false;\n }\n return;\n }\n\n this._globalCallbacks[keys] = false;\n };\n\n /**\n * triggers an event that has already been bound\n */\n trigger = (keys: string, action: string | undefined) => {\n let self = this;\n if (self._directMap[keys + ':' + action]) {\n self._directMap[keys + ':' + action]({}, keys);\n }\n return self;\n };\n\n /**\n * resets the library back to its initial state. this is useful\n * if you want to clear out the current keyboard shortcuts and bind\n * new ones - for example if you switch to another page\n */\n reset = () => {\n this._callbacks = {};\n this._directMap = {};\n return this;\n };\n\n /**\n * should we stop this event before firing off callbacks\n */\n stopCallback = (e: Event, element: HTMLElement, combo: string, sequence?: string): boolean => {\n // From global bind plugin https://github.com/Elvynia/mousetrap-global-bind/blob/master/mousetrap-global-bind.js\n if (this._globalCallbacks[combo] || (sequence && this._globalCallbacks[sequence])) {\n return false;\n }\n\n // if the element has the class \"mousetrap\" then no need to stop\n if ((' ' + element.className + ' ').indexOf(' mousetrap ') > -1) {\n return false;\n }\n\n if (belongsTo(element, this.target)) {\n return false;\n }\n\n // Events originating from a shadow DOM are re-targetted and `e.target` is the shadow host,\n // not the initial event target in the shadow tree. Note that not all events cross the\n // shadow boundary.\n // For shadow trees with `mode: 'open'`, the initial event target is the first element in\n // the event’s composed path. For shadow trees with `mode: 'closed'`, the initial event\n // target cannot be obtained.\n if ('composedPath' in e && typeof e.composedPath === 'function') {\n // For open shadow trees, update `element` so that the following check works.\n let initialEventTarget = e.composedPath()[0];\n if (initialEventTarget !== e.target && initialEventTarget instanceof HTMLElement) {\n element = initialEventTarget;\n }\n }\n\n // stop for input, select, and textarea\n return Boolean(\n element.tagName === 'INPUT' ||\n element.tagName === 'SELECT' ||\n element.tagName === 'TEXTAREA' ||\n ('isContentEditable' in element && element.isContentEditable)\n );\n };\n\n /**\n * exposes _handleKey publicly so it can be overwritten by extensions\n */\n handleKey: typeof this._handleKey = (...args) => {\n return this._handleKey(...args);\n };\n\n /**\n * allow custom key mappings\n */\n addKeycodes = (object: Record) => {\n for (let key in object) {\n if (object.hasOwnProperty(key)) {\n MAP[key] = object[key];\n }\n }\n REVERSE_MAP = null;\n };\n}\n","import { Mousetrap } from './Mousetrap';\n\nexport const mousetrap = new Mousetrap(document);\n\nexport interface KeyBindingItem {\n /** Key or key pattern like mod+o */\n key: string;\n /** Defaults to keydown */\n type?: string;\n /** The handler callback */\n onTrigger: () => void;\n}\n\n/**\n * Small util to make it easier to add and unbind Mousetrap keybindings\n */\nexport class KeybindingSet {\n private _binds: KeyBindingItem[] = [];\n\n addBinding(item: KeyBindingItem) {\n mousetrap.bind(\n item.key,\n (evt) => {\n evt.preventDefault();\n evt.stopPropagation();\n evt.returnValue = false;\n item.onTrigger();\n },\n 'keydown'\n );\n this._binds.push(item);\n }\n\n removeAll() {\n this._binds.forEach((item) => {\n mousetrap.unbind(item.key, item.type);\n });\n this._binds = [];\n }\n}\n","import { IndexScene } from '../Components/IndexScene/IndexScene';\nimport { KeybindingSet } from './KeybindingSet';\nimport { getAppEvents, locationService } from '@grafana/runtime';\nimport { BusEventBase, BusEventWithPayload, RawTimeRange, SetPanelAttentionEvent } from '@grafana/data';\nimport { sceneGraph, SceneObject, VizPanel } from '@grafana/scenes';\nimport { getExploreLink } from '../Components/Panels/PanelMenu';\nimport { getTimePicker } from './scenes';\nimport { OptionsWithLegend } from '@grafana/ui';\nimport { narrowTimeRange } from './narrowing';\n\nconst appEvents = getAppEvents();\n\nexport function setupKeyboardShortcuts(scene: IndexScene) {\n const keybindings = new KeybindingSet();\n let vizPanelKey: string | null = null;\n\n const panelAttentionSubscription = appEvents.subscribe(SetPanelAttentionEvent, (event) => {\n if (typeof event.payload.panelId === 'string') {\n vizPanelKey = event.payload.panelId;\n }\n });\n\n function withFocusedPanel(scene: IndexScene, fn: (vizPanel: VizPanel) => void) {\n return () => {\n const vizPanel = sceneGraph.findObject(scene, (o) => o.state.key === vizPanelKey && o.isActive);\n if (vizPanel && vizPanel instanceof VizPanel) {\n fn(vizPanel);\n return;\n }\n };\n }\n\n function withAllPanels(scene: IndexScene, fn: (vizPanel: VizPanel) => void) {\n return () => {\n const vizPanels = sceneGraph.findAllObjects(scene, (o) => o instanceof VizPanel && o.isActive);\n vizPanels.forEach((vizPanel) => {\n if (vizPanel && vizPanel instanceof VizPanel) {\n fn(vizPanel);\n }\n });\n };\n }\n\n // Toggle legend\n keybindings.addBinding({\n key: 'p l',\n onTrigger: withFocusedPanel(scene, toggleVizPanelLegend),\n });\n\n // Toggle all legend\n keybindings.addBinding({\n key: 'a l',\n onTrigger: withAllPanels(scene, toggleVizPanelLegend),\n });\n\n // Go to Explore for panel\n keybindings.addBinding({\n key: 'p x',\n onTrigger: withFocusedPanel(scene, async (vizPanel: VizPanel) => {\n const url = getExploreLink(vizPanel);\n if (url) {\n locationService.push(url);\n }\n }),\n });\n\n // Copy time range\n keybindings.addBinding({\n key: 't c',\n onTrigger: () => {\n const timeRange = sceneGraph.getTimeRange(scene);\n setWindowGrafanaSceneContext(timeRange);\n appEvents.publish(new CopyTimeEvent());\n },\n });\n\n // Paste time range\n keybindings.addBinding({\n key: 't v',\n onTrigger: () => {\n const event = new PasteTimeEvent({ updateUrl: false });\n scene.publishEvent(event);\n appEvents.publish(event);\n },\n });\n\n // Refresh\n keybindings.addBinding({\n key: 'd r',\n onTrigger: () => sceneGraph.getTimeRange(scene).onRefresh(),\n });\n\n // Zoom out\n keybindings.addBinding({\n key: 't z',\n onTrigger: () => {\n handleZoomOut(scene);\n },\n });\n\n // Zoom out alias\n keybindings.addBinding({\n key: 'ctrl+z',\n onTrigger: () => {\n handleZoomOut(scene);\n },\n });\n\n // Relative -> Absolute time range\n keybindings.addBinding({\n key: 't a',\n onTrigger: () => {\n const timePicker = getTimePicker(scene);\n timePicker?.toAbsolute();\n },\n });\n\n keybindings.addBinding({\n key: 't left',\n onTrigger: () => {\n handleTimeRangeShift(scene, 'left');\n },\n });\n keybindings.addBinding({\n key: 't right',\n onTrigger: () => {\n handleTimeRangeShift(scene, 'right');\n },\n });\n return () => {\n keybindings.removeAll();\n panelAttentionSubscription.unsubscribe();\n };\n}\n\nfunction handleZoomOut(scene: IndexScene) {\n const timePicker = getTimePicker(scene);\n timePicker?.onZoom();\n}\n\nfunction handleTimeRangeShift(scene: IndexScene, direction: 'left' | 'right') {\n const timePicker = getTimePicker(scene);\n\n if (!timePicker) {\n return;\n }\n\n if (direction === 'left') {\n timePicker.onMoveBackward();\n }\n if (direction === 'right') {\n timePicker.onMoveForward();\n }\n}\n\nexport function toggleVizPanelLegend(vizPanel: VizPanel): void {\n const options = vizPanel.state.options;\n if (hasLegendOptions(options) && typeof options.legend.showLegend === 'boolean') {\n vizPanel.onOptionsChange({\n legend: {\n showLegend: options.legend.showLegend ? false : true,\n },\n });\n }\n}\n\nfunction hasLegendOptions(optionsWithLegend: unknown): optionsWithLegend is OptionsWithLegend {\n return optionsWithLegend != null && typeof optionsWithLegend === 'object' && 'legend' in optionsWithLegend;\n}\n\n// Copied from https://github.com/grafana/grafana/blob/main/public/app/types/events.ts\n// @todo export from core grafana\nexport class CopyTimeEvent extends BusEventBase {\n static type = 'copy-time';\n}\n\n// Copied from https://github.com/grafana/grafana/blob/main/public/app/types/events.ts\n// @todo export from core grafana\ninterface PasteTimeEventPayload {\n updateUrl?: boolean;\n timeRange?: string;\n}\n\n// Copied from https://github.com/grafana/grafana/blob/main/public/app/types/events.ts\n// @todo export from core grafana\nexport class PasteTimeEvent extends BusEventWithPayload {\n static type = 'paste-time';\n}\n\n/**\n * Adds the scene object to the global window state so that templateSrv in core can interpolate strings using the scene interpolation engine with the scene as scope.\n * This is needed for old datasources that call templateSrv.replace without passing scopedVars. For example in DataSourceAPI.metricFindQuery.\n *\n * This is also used from TimeSrv to access scene time range.\n *\n * @todo delete after https://github.com/grafana/scenes/pull/999 is available\n */\nexport function setWindowGrafanaSceneContext(activeScene: SceneObject) {\n const prevScene = (window as any).__grafanaSceneContext;\n\n (window as any).__grafanaSceneContext = activeScene;\n\n return () => {\n if ((window as any).__grafanaSceneContext === activeScene) {\n (window as any).__grafanaSceneContext = prevScene;\n }\n };\n}\n\n// taken from /Users/galen/projects/grafana/grafana/public/app/core/utils/timePicker.ts\ntype CopiedTimeRangeResult = { range: RawTimeRange; isError: false } | { range: string; isError: true };\n// modified to narrow types from clipboard\nexport async function getCopiedTimeRange(): Promise {\n const raw = await navigator.clipboard.readText();\n let unknownRange: unknown;\n\n try {\n unknownRange = JSON.parse(raw);\n const range = narrowTimeRange(unknownRange);\n if (range) {\n return { isError: false, range };\n }\n } catch (e) {}\n return { range: raw, isError: true };\n}\n","import React from 'react';\nimport { useStyles2, useTheme2 } from '@grafana/ui';\nimport SVG from 'react-inlinesvg';\nimport { GrafanaTheme2, locationUtil } from '@grafana/data';\nimport { css } from '@emotion/css';\n\nexport const NoLokiSplash = () => {\n const styles = useStyles2(getStyles);\n const theme = useTheme2();\n return (\n
\n
\n \n
\n
\n

Welcome to Grafana Logs Drilldown

\n\n

\n We noticed there is no Loki datasource configured.\n
\n Add a{' '}\n \n Loki datasource\n {' '}\n to view logs.\n

\n\n
\n\n

\n Click{' '}\n \n here\n {' '}\n to learn more...\n

\n
\n
\n );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => {\n return {\n graphicContainer: css({\n display: 'flex',\n justifyContent: 'center',\n margin: '0 auto',\n width: '200px',\n height: '250px',\n padding: theme.spacing(1),\n [theme.breakpoints.up('md')]: {\n alignSelf: 'flex-end',\n width: '300px',\n height: 'auto',\n padding: theme.spacing(1),\n },\n [theme.breakpoints.up('lg')]: {\n alignSelf: 'flex-end',\n width: '400px',\n height: 'auto',\n padding: theme.spacing(1),\n },\n }),\n\n text: css({\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n flexDirection: 'column',\n }),\n title: css({\n marginBottom: '1.5rem',\n }),\n wrap: css({\n [theme.breakpoints.up('md')]: {\n margin: '4rem auto auto auto',\n flexDirection: 'row',\n },\n padding: '2rem',\n margin: '0 auto auto auto',\n display: 'flex',\n alignItems: 'center',\n flexDirection: 'column',\n textAlign: 'center',\n }),\n };\n};\n","import React from 'react';\n\nimport { AdHocVariableFilter, AppEvents, AppPluginMeta, rangeUtil } from '@grafana/data';\nimport {\n AdHocFiltersVariable,\n AdHocFilterWithLabels,\n CustomVariable,\n DataSourceVariable,\n SceneComponentProps,\n SceneFlexItem,\n SceneFlexLayout,\n sceneGraph,\n SceneObject,\n SceneObjectBase,\n SceneObjectState,\n SceneObjectUrlSyncConfig,\n SceneObjectUrlValues,\n SceneRefreshPicker,\n SceneTimePicker,\n SceneTimeRange,\n SceneTimeRangeLike,\n SceneTimeRangeState,\n SceneVariableSet,\n} from '@grafana/scenes';\nimport {\n AppliedPattern,\n AdHocFiltersWithLabelsAndMeta,\n EXPLORATION_DS,\n MIXED_FORMAT_EXPR,\n PENDING_FIELDS_EXPR,\n PENDING_METADATA_EXPR,\n VAR_DATASOURCE,\n VAR_FIELDS,\n VAR_FIELDS_AND_METADATA,\n VAR_LABELS,\n VAR_LEVELS,\n VAR_LINE_FILTER,\n VAR_LINE_FILTERS,\n VAR_LOGS_FORMAT,\n VAR_METADATA,\n VAR_PATTERNS,\n} from 'services/variables';\n\nimport { addLastUsedDataSourceToStorage, getLastUsedDataSourceFromStorage } from 'services/store';\nimport { ServiceScene } from '../ServiceScene/ServiceScene';\nimport {\n CONTROLS_VARS_DATASOURCE,\n CONTROLS_VARS_FIELDS,\n CONTROLS_VARS_FIELDS_COMBINED,\n CONTROLS_VARS_FIRST_ROW_KEY,\n CONTROLS_VARS_LABELS,\n CONTROLS_VARS_METADATA_ROW_KEY,\n CONTROLS_VARS_REFRESH,\n CONTROLS_VARS_TIMEPICKER,\n CONTROLS_VARS_TOOLBAR,\n LayoutScene,\n} from './LayoutScene';\nimport { getDrilldownSlug, PageSlugs } from '../../services/routing';\nimport { ServiceSelectionScene } from '../ServiceSelectionScene/ServiceSelectionScene';\nimport { LoadingPlaceholder } from '@grafana/ui';\nimport { config, getAppEvents, locationService } from '@grafana/runtime';\nimport {\n onAddCustomAdHocValue,\n onAddCustomFieldValue,\n renderLevelsFilter,\n renderLogQLFieldFilters,\n renderLogQLLabelFilters,\n renderLogQLLineFilter,\n renderLogQLMetadataFilters,\n} from 'services/query';\nimport { VariableHide } from '@grafana/schema';\nimport { CustomConstantVariable } from '../../services/CustomConstantVariable';\nimport {\n getDataSourceVariable,\n getFieldsAndMetadataVariable,\n getFieldsVariable,\n getLabelsVariable,\n getLevelsVariable,\n getMetadataVariable,\n getPatternsVariable,\n getUrlParamNameForVariable,\n} from '../../services/variableGetters';\nimport { ToolbarScene } from './ToolbarScene';\nimport { DEFAULT_TIME_RANGE, OptionalRouteMatch } from '../Pages';\nimport { plugin } from '../../module';\nimport { JsonData } from '../AppConfig/AppConfig';\nimport { reportAppInteraction } from '../../services/analytics';\nimport { getDetectedFieldValuesTagValuesProvider, getLabelsTagValuesProvider } from '../../services/TagValuesProviders';\nimport { logger } from '../../services/logger';\nimport { getFieldsKeysProvider, getLabelsTagKeysProvider } from '../../services/TagKeysProviders';\nimport { getLokiDatasource } from '../../services/scenes';\nimport { ShowLogsButtonScene } from './ShowLogsButtonScene';\nimport { CustomVariableValueSelectors } from './CustomVariableValueSelectors';\nimport { getCopiedTimeRange, PasteTimeEvent, setupKeyboardShortcuts } from '../../services/keyboardShortcuts';\nimport { LokiDatasource } from '../../services/lokiQuery';\nimport { lineFilterOperators, operators } from '../../services/operators';\nimport { operatorFunction } from '../../services/variableHelpers';\nimport { FilterOp } from '../../services/filterTypes';\nimport { areArraysEqual } from '../../services/comparison';\nimport { isFilterMetadata } from '../../services/filters';\nimport { getFieldsTagValuesExpression } from '../../services/expressions';\nimport { isOperatorInclusive } from '../../services/operatorHelpers';\nimport { renderPatternFilters } from '../../services/renderPatternFilters';\nimport { NoLokiSplash } from '../NoLokiSplash';\n\nexport const showLogsButtonSceneKey = 'showLogsButtonScene';\n\nexport interface IndexSceneState extends SceneObjectState {\n // contentScene is the scene that is displayed in the main body of the index scene - it can be either the service selection or service scene\n contentScene?: SceneObject;\n controls: SceneObject[];\n body?: LayoutScene;\n initialFilters?: AdHocVariableFilter[];\n patterns?: AppliedPattern[];\n routeMatch?: OptionalRouteMatch;\n ds?: LokiDatasource;\n}\n\nexport class IndexScene extends SceneObjectBase {\n protected _urlSync = new SceneObjectUrlSyncConfig(this, { keys: ['patterns'] });\n\n public constructor(state: Partial) {\n const { variablesScene, unsub } = getVariableSet(\n getLastUsedDataSourceFromStorage() ?? 'grafanacloud-logs',\n state.initialFilters\n );\n\n const controls: SceneObject[] = [\n new SceneFlexLayout({\n key: CONTROLS_VARS_FIRST_ROW_KEY,\n direction: 'row',\n children: [\n new SceneFlexItem({\n body: new CustomVariableValueSelectors({\n key: CONTROLS_VARS_LABELS,\n layout: 'vertical',\n include: [VAR_LABELS],\n }),\n }),\n new ShowLogsButtonScene({\n key: showLogsButtonSceneKey,\n disabled: true,\n }),\n ],\n }),\n new CustomVariableValueSelectors({\n key: CONTROLS_VARS_METADATA_ROW_KEY,\n layout: 'vertical',\n include: [VAR_METADATA],\n }),\n new CustomVariableValueSelectors({\n key: CONTROLS_VARS_FIELDS,\n layout: 'vertical',\n include: [VAR_FIELDS],\n }),\n new CustomVariableValueSelectors({\n key: CONTROLS_VARS_DATASOURCE,\n layout: 'horizontal',\n include: [VAR_DATASOURCE],\n }),\n new CustomVariableValueSelectors({\n key: CONTROLS_VARS_FIELDS_COMBINED,\n layout: 'vertical',\n include: [VAR_FIELDS_AND_METADATA],\n }),\n new SceneTimePicker({ key: CONTROLS_VARS_TIMEPICKER }),\n new SceneRefreshPicker({ key: CONTROLS_VARS_REFRESH }),\n ];\n\n if (getDrilldownSlug() === 'explore' && config.featureToggles.exploreLogsAggregatedMetrics) {\n controls.push(\n new ToolbarScene({\n key: CONTROLS_VARS_TOOLBAR,\n isOpen: false,\n })\n );\n }\n\n super({\n $timeRange: state.$timeRange ?? new SceneTimeRange({}),\n $variables: state.$variables ?? variablesScene,\n controls: state.controls ?? controls,\n // Need to clear patterns state when the class in constructed\n patterns: [],\n ...state,\n body: new LayoutScene({}),\n });\n\n this._subs.add(unsub);\n this.addActivationHandler(this.onActivate.bind(this));\n\n getLokiDatasource(this).then((ds) => {\n this.setState({ ds });\n });\n }\n\n static Component = ({ model }: SceneComponentProps) => {\n const { body } = model.useState();\n\n const dsVar = getDataSourceVariable(model);\n if (!dsVar.state.options.length) {\n return ;\n }\n\n if (body) {\n return ;\n }\n\n return ;\n };\n\n public onActivate() {\n const stateUpdate: Partial = {};\n this.setVariableProviders();\n\n // Show \"show logs\" button\n const showLogsButton = sceneGraph.findByKeyAndType(this, showLogsButtonSceneKey, ShowLogsButtonScene);\n showLogsButton.setState({ hidden: false });\n\n if (!this.state.contentScene) {\n stateUpdate.contentScene = getContentScene(this.state.routeMatch?.params.breakdownLabel);\n }\n this.setTagProviders();\n this.setState(stateUpdate);\n\n this.updatePatterns(this.state, getPatternsVariable(this));\n this.resetVariablesIfNotInUrl(getFieldsVariable(this), getUrlParamNameForVariable(VAR_FIELDS));\n this.resetVariablesIfNotInUrl(getLevelsVariable(this), getUrlParamNameForVariable(VAR_LEVELS));\n\n this._subs.add(\n this.subscribeToState((newState) => {\n this.updatePatterns(newState, getPatternsVariable(this));\n })\n );\n\n const timeRange = sceneGraph.getTimeRange(this);\n\n this._subs.add(timeRange.subscribeToState(this.limitMaxInterval(timeRange)));\n this._subs.add(this.subscribeToEvent(PasteTimeEvent, this.subscribeToPasteTimeEvent));\n\n const fieldFilters = getFieldsVariable(this).state.filters;\n const metadataFilters = getMetadataVariable(this).state.filters;\n\n const fieldsAndMetadataVariable = getFieldsAndMetadataVariable(this);\n\n // Sync fields in query variables to support existing urls\n fieldsAndMetadataVariable.updateFilters([...metadataFilters, ...fieldFilters]);\n\n // Update the fields/metadata filters when the combined variable is changed in the variable UI.\n this._subs.add(fieldsAndMetadataVariable.subscribeToState(this.subscribeToCombinedFieldsVariable));\n\n const clearKeyBindings = setupKeyboardShortcuts(this);\n\n return () => {\n clearKeyBindings();\n };\n }\n\n private subscribeToCombinedFieldsVariable = (\n newState: AdHocFiltersVariable['state'],\n prevState?: AdHocFiltersVariable['state']\n ) => {\n if (!areArraysEqual(newState.filters, prevState?.filters)) {\n const metadataFilters = newState.filters.filter((f: AdHocFiltersWithLabelsAndMeta) => isFilterMetadata(f));\n const fieldFilters = newState.filters.filter((f: AdHocFiltersWithLabelsAndMeta) => !isFilterMetadata(f));\n\n getFieldsVariable(this).updateFilters(fieldFilters);\n getMetadataVariable(this).updateFilters(metadataFilters);\n }\n };\n\n private setTagProviders() {\n this.setLabelsProviders();\n }\n\n private setLabelsProviders() {\n const labelsVar = getLabelsVariable(this);\n\n labelsVar._getOperators = () => operatorFunction(labelsVar);\n\n labelsVar.setState({\n getTagKeysProvider: getLabelsTagKeysProvider,\n getTagValuesProvider: getLabelsTagValuesProvider,\n });\n }\n\n private subscribeToPasteTimeEvent = async () => {\n const copiedRange = await getCopiedTimeRange();\n\n if (copiedRange.isError) {\n return;\n }\n\n const timeRange = sceneGraph.getTimeRange(this);\n const to = typeof copiedRange.range.to === 'string' ? copiedRange.range.to : undefined;\n const from = typeof copiedRange.range.from === 'string' ? copiedRange.range.from : undefined;\n const newRange = rangeUtil.convertRawToRange(copiedRange.range);\n\n if (timeRange && newRange) {\n timeRange.setState({\n value: newRange,\n to,\n from,\n });\n } else {\n logger.error(new Error('Invalid time range from clipboard'), {\n msg: 'Invalid time range from clipboard',\n sceneTimeRange: typeof timeRange,\n to: to ?? '',\n from: from ?? '',\n });\n }\n };\n\n /**\n * If user selects a time range longer then the max configured interval, show toast and set the previous time range.\n * @param timeRange\n * @private\n */\n private limitMaxInterval(timeRange: SceneTimeRangeLike) {\n return (newState: SceneTimeRangeState, prevState: SceneTimeRangeState) => {\n const { jsonData } = plugin.meta as AppPluginMeta;\n if (jsonData?.interval) {\n try {\n const maxInterval = rangeUtil.intervalToSeconds(jsonData?.interval ?? '');\n if (!maxInterval) {\n return;\n }\n const timeRangeInterval = newState.value.to.diff(newState.value.from, 'seconds');\n if (timeRangeInterval > maxInterval) {\n const prevInterval = prevState.value.to.diff(prevState.value.from, 'seconds');\n if (timeRangeInterval <= prevInterval) {\n timeRange.setState({\n value: prevState.value,\n from: prevState.from,\n to: prevState.to,\n });\n } else {\n const defaultRange = new SceneTimeRange(DEFAULT_TIME_RANGE);\n timeRange.setState({\n value: defaultRange.state.value,\n from: defaultRange.state.from,\n to: defaultRange.state.to,\n });\n }\n\n const appEvents = getAppEvents();\n appEvents.publish({\n type: AppEvents.alertWarning.name,\n payload: [`Time range interval exceeds maximum interval configured by the administrator.`],\n });\n\n reportAppInteraction('all', 'interval_too_long', {\n attempted_duration_seconds: timeRangeInterval,\n configured_max_interval: maxInterval,\n });\n }\n } catch (e) {\n console.error(e);\n }\n }\n };\n }\n\n private setVariableProviders() {\n const levelsVariable = getLevelsVariable(this);\n const fieldsCombinedVariable = getFieldsAndMetadataVariable(this);\n\n fieldsCombinedVariable._getOperators = () => operatorFunction(fieldsCombinedVariable);\n\n levelsVariable.setState({\n getTagValuesProvider: this.getLevelsTagValuesProvider(),\n getTagKeysProvider: this.getLevelsTagKeysProvider(),\n });\n\n fieldsCombinedVariable.setState({\n getTagKeysProvider: this.getCombinedFieldsTagKeysProvider(),\n getTagValuesProvider: this.getCombinedFieldsTagValuesProvider(),\n });\n }\n\n /**\n * Get tag keys (label names) for the combined fields variable\n */\n private getCombinedFieldsTagKeysProvider() {\n return (variable: AdHocFiltersVariable, currentKey: string | null) => {\n // Current key seems to always be null, I think it's only supported for other variable types that allow editing the key without first removing the value/operator?\n const metadataVar = getMetadataVariable(this);\n const fieldVar = getFieldsVariable(this);\n\n const uninterpolatedExpression = getFieldsTagValuesExpression(VAR_FIELDS_AND_METADATA);\n\n const metadataFilters = metadataVar.state.filters.filter((f) => f.key !== currentKey);\n const fieldFilters = fieldVar.state.filters.filter((f) => f.key !== currentKey);\n const otherFiltersString = this.renderVariableFilters(VAR_FIELDS, fieldFilters);\n const otherMetadataString = this.renderVariableFilters(VAR_METADATA, metadataFilters);\n const expr = uninterpolatedExpression\n .replace(PENDING_FIELDS_EXPR, otherFiltersString)\n .replace(PENDING_METADATA_EXPR, otherMetadataString);\n const interpolated = sceneGraph.interpolate(this, expr);\n\n return getFieldsKeysProvider({\n expr: interpolated,\n sceneRef: this,\n timeRange: sceneGraph.getTimeRange(this).state.value,\n variableType: VAR_FIELDS_AND_METADATA,\n });\n };\n }\n\n /**\n * Get tag values (label values) for combined fields variable\n */\n private getCombinedFieldsTagValuesProvider() {\n return (variable: AdHocFiltersVariable, filter: AdHocFilterWithLabels) => {\n const uninterpolatedExpression = getFieldsTagValuesExpression(VAR_FIELDS_AND_METADATA);\n const metadataVar = getMetadataVariable(this);\n const fieldVar = getFieldsVariable(this);\n\n const metadataFilters = metadataVar.state.filters.filter(\n (f) => f.key !== filter.key && isOperatorInclusive(f.operator)\n );\n const fieldFilters = fieldVar.state.filters.filter(\n (f) => f.key !== filter.key && isOperatorInclusive(f.operator)\n );\n\n const otherFiltersString = this.renderVariableFilters(VAR_FIELDS, fieldFilters);\n const otherMetadataString = this.renderVariableFilters(VAR_METADATA, metadataFilters);\n\n const expr = uninterpolatedExpression\n .replace(PENDING_FIELDS_EXPR, otherFiltersString)\n .replace(PENDING_METADATA_EXPR, otherMetadataString);\n const interpolated = sceneGraph.interpolate(this, expr);\n\n return getDetectedFieldValuesTagValuesProvider(\n filter,\n variable,\n interpolated,\n this,\n sceneGraph.getTimeRange(this).state.value,\n VAR_FIELDS_AND_METADATA\n );\n };\n }\n\n /**\n * Get tag keys (label names) for levels variable\n */\n private getLevelsTagKeysProvider() {\n return (variable: AdHocFiltersVariable, currentKey: string | null) => {\n // Current key seems to always be null, I think it's only supported for other variable types that allow editing the key without first removing the value/operator?\n const filters = variable.state.filters.filter((f) => f.key !== currentKey);\n const otherFiltersString = this.renderVariableFilters(VAR_LEVELS, filters);\n const uninterpolatedExpression = getFieldsTagValuesExpression(VAR_LEVELS);\n const expr = uninterpolatedExpression.replace(PENDING_FIELDS_EXPR, otherFiltersString);\n const interpolated = sceneGraph.interpolate(this, expr);\n return getFieldsKeysProvider({\n expr: interpolated,\n sceneRef: this,\n timeRange: sceneGraph.getTimeRange(this).state.value,\n variableType: VAR_LEVELS,\n });\n };\n }\n\n /**\n * Get tag values (label values) for levels variable\n */\n private getLevelsTagValuesProvider() {\n return (variable: AdHocFiltersVariable, filter: AdHocFilterWithLabels) => {\n // Don't add equals operations to the query, the user might want to select more than one value\n const filters = variable.state.filters.filter((f) => f.key !== filter.key && f.operator === FilterOp.Equal);\n const otherFiltersString = this.renderVariableFilters(VAR_LEVELS, filters);\n const uninterpolatedExpression = getFieldsTagValuesExpression(VAR_LEVELS);\n const expr = uninterpolatedExpression.replace(PENDING_FIELDS_EXPR, otherFiltersString);\n const interpolated = sceneGraph.interpolate(this, expr);\n\n return getDetectedFieldValuesTagValuesProvider(\n filter,\n variable,\n interpolated,\n this,\n sceneGraph.getTimeRange(this).state.value,\n VAR_LEVELS\n );\n };\n }\n\n private renderVariableFilters(\n variableType: typeof VAR_FIELDS | typeof VAR_METADATA | typeof VAR_LEVELS,\n filters: AdHocFilterWithLabels[]\n ) {\n if (variableType === VAR_FIELDS) {\n return renderLogQLFieldFilters(filters);\n } else if (variableType === VAR_METADATA) {\n return renderLogQLMetadataFilters(filters);\n } else if (variableType === VAR_LEVELS) {\n return renderLogQLMetadataFilters(filters);\n } else {\n const error = new Error('getFieldsTagValuesProvider only supports fields, metadata, and levels');\n logger.error(error);\n throw error;\n }\n }\n\n /**\n * @todo why do we need to manually sync fields and levels, but not other ad hoc variables?\n * @param variable\n * @param urlParamName\n * @private\n */\n private resetVariablesIfNotInUrl(variable: AdHocFiltersVariable, urlParamName: string) {\n const location = locationService.getLocation();\n const search = new URLSearchParams(location.search);\n const filtersFromUrl = search.get(urlParamName);\n\n // If the filters aren't in the URL, then they're coming from the cache, set the state to sync with url\n if (filtersFromUrl === null) {\n variable.setState({ filters: [] });\n }\n }\n\n private updatePatterns(newState: IndexSceneState, patternsVariable: CustomVariable) {\n const patternsLine = renderPatternFilters(newState.patterns ?? []);\n patternsVariable.changeValueTo(patternsLine);\n }\n\n getUrlState() {\n return {\n patterns: JSON.stringify(this.state.patterns),\n };\n }\n\n updateFromUrl(values: SceneObjectUrlValues) {\n const stateUpdate: Partial = {};\n\n if (values.patterns && typeof values.patterns === 'string') {\n stateUpdate.patterns = JSON.parse(values.patterns) as AppliedPattern[];\n }\n\n this.setState(stateUpdate);\n }\n}\n\nfunction getContentScene(drillDownLabel?: string) {\n const slug = getDrilldownSlug();\n if (slug === PageSlugs.explore) {\n return new ServiceSelectionScene({});\n }\n\n return new ServiceScene({\n drillDownLabel,\n });\n}\n\nfunction getVariableSet(initialDatasourceUid: string, initialFilters?: AdHocVariableFilter[]) {\n const labelVariable = new AdHocFiltersVariable({\n name: VAR_LABELS,\n datasource: EXPLORATION_DS,\n layout: 'combobox',\n label: 'Labels',\n allowCustomValue: true,\n filters: initialFilters ?? [],\n expressionBuilder: renderLogQLLabelFilters,\n hide: VariableHide.dontHide,\n key: 'adhoc_service_filter',\n onAddCustomValue: onAddCustomAdHocValue,\n });\n\n labelVariable._getOperators = function () {\n return operators;\n };\n\n const fieldsVariable = new AdHocFiltersVariable({\n name: VAR_FIELDS,\n label: 'Detected fields',\n applyMode: 'manual',\n layout: 'combobox',\n expressionBuilder: renderLogQLFieldFilters,\n hide: VariableHide.hideVariable,\n allowCustomValue: true,\n });\n\n fieldsVariable._getOperators = () => {\n return operators;\n };\n\n const metadataVariable = new AdHocFiltersVariable({\n name: VAR_METADATA,\n label: 'Metadata',\n applyMode: 'manual',\n layout: 'combobox',\n expressionBuilder: (filters: AdHocFilterWithLabels[]) => renderLogQLMetadataFilters(filters),\n hide: VariableHide.hideVariable,\n allowCustomValue: true,\n });\n\n metadataVariable._getOperators = () => {\n return operators;\n };\n\n /**\n * Not used in interpolation, used as \"proxy\" variable that routes filters added in the variable UI\n * to the fields and metadata variables which are interpolated but not present in the UI.\n *\n * Not saved in the URL state, as on init we pull the values from the fields/metadata variables\n */\n const fieldsAndMetadataVariable = new AdHocFiltersVariable({\n name: VAR_FIELDS_AND_METADATA,\n label: 'Fields',\n applyMode: 'manual',\n layout: 'combobox',\n hide: VariableHide.hideVariable,\n allowCustomValue: true,\n onAddCustomValue: onAddCustomFieldValue,\n skipUrlSync: true,\n });\n\n const levelsVariable = new AdHocFiltersVariable({\n name: VAR_LEVELS,\n label: 'Error levels',\n applyMode: 'manual',\n layout: 'vertical',\n expressionBuilder: renderLevelsFilter,\n hide: VariableHide.hideVariable,\n supportsMultiValueOperators: true,\n });\n\n const lineFiltersVariable = new AdHocFiltersVariable({\n name: VAR_LINE_FILTERS,\n hide: VariableHide.hideVariable,\n getTagKeysProvider: () => Promise.resolve({ replace: true, values: [] }),\n getTagValuesProvider: () => Promise.resolve({ replace: true, values: [] }),\n expressionBuilder: renderLogQLLineFilter,\n layout: 'horizontal',\n });\n\n lineFiltersVariable._getOperators = () => {\n return lineFilterOperators;\n };\n\n const dsVariable = new DataSourceVariable({\n name: VAR_DATASOURCE,\n label: 'Data source',\n value: initialDatasourceUid,\n pluginId: 'loki',\n });\n\n const unsub = dsVariable.subscribeToState((newState) => {\n const dsValue = `${newState.value}`;\n newState.value && addLastUsedDataSourceToStorage(dsValue);\n });\n\n return {\n variablesScene: new SceneVariableSet({\n variables: [\n dsVariable,\n labelVariable,\n fieldsVariable,\n levelsVariable,\n metadataVariable,\n fieldsAndMetadataVariable,\n new CustomVariable({\n name: VAR_PATTERNS,\n value: '',\n hide: VariableHide.hideVariable,\n }),\n new AdHocFiltersVariable({\n name: VAR_LINE_FILTER,\n hide: VariableHide.hideVariable,\n expressionBuilder: renderLogQLLineFilter,\n }),\n lineFiltersVariable,\n\n // This variable is a hack to get logs context working, this variable should never be used or updated\n new CustomConstantVariable({\n name: VAR_LOGS_FORMAT,\n value: MIXED_FORMAT_EXPR,\n skipUrlSync: true,\n hide: VariableHide.hideVariable,\n options: [{ value: MIXED_FORMAT_EXPR, label: MIXED_FORMAT_EXPR }],\n }),\n ],\n }),\n unsub,\n };\n}\n","import {\n ControlsLabel,\n SceneComponentProps,\n sceneGraph,\n SceneObject,\n SceneObjectBase,\n SceneObjectState,\n SceneVariableValueChangedEvent,\n} from '@grafana/scenes';\nimport React from 'react';\nimport { getLevelsVariable } from '../../services/variableGetters';\nimport { GrafanaTheme2, MetricFindValue, SelectableValue } from '@grafana/data';\nimport { css } from '@emotion/css';\nimport { Icon, MultiSelect, useStyles2 } from '@grafana/ui';\nimport { LEVEL_VARIABLE_VALUE } from '../../services/variables';\nimport { FilterOp } from '../../services/filterTypes';\nimport { testIds } from '../../services/testIds';\nimport { addCurrentUrlToHistory } from '../../services/navigate';\n\ntype ChipOption = MetricFindValue & { selected?: boolean };\nexport interface LevelsVariableSceneState extends SceneObjectState {\n options?: ChipOption[];\n isLoading: boolean;\n visible: boolean;\n isOpen: boolean;\n}\nexport const LEVELS_VARIABLE_SCENE_KEY = 'levels-var-custom-renderer';\nexport class LevelsVariableScene extends SceneObjectBase {\n constructor(state: Partial) {\n super({ ...state, isLoading: false, visible: false, key: LEVELS_VARIABLE_SCENE_KEY, isOpen: false });\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n onActivate() {\n this.onFilterChange();\n\n this._subs.add(\n getLevelsVariable(this).subscribeToEvent(SceneVariableValueChangedEvent, () => {\n this.onFilterChange();\n })\n );\n }\n\n public onFilterChange() {\n const levelsVar = getLevelsVariable(this);\n this.setState({\n options: levelsVar.state.filters.map((filter) => ({\n text: filter.valueLabels?.[0] ?? filter.value,\n selected: true,\n value: filter.value,\n })),\n });\n }\n\n getTagValues = () => {\n this.setState({ isLoading: true });\n const levelsVar = getLevelsVariable(this);\n const levelsKeys = levelsVar?.state?.getTagValuesProvider?.(\n levelsVar,\n levelsVar.state.filters[0] ?? { key: LEVEL_VARIABLE_VALUE }\n );\n levelsKeys?.then((response) => {\n if (Array.isArray(response.values)) {\n this.setState({\n isLoading: false,\n options: response.values.map((value) => {\n return {\n text: value.text,\n value: value.value ?? value.text,\n selected: levelsVar.state.filters.some((filter) => filter.value === value.text),\n };\n }),\n });\n }\n });\n };\n\n updateFilters = (skipPublish: boolean, forcePublish?: boolean) => {\n const levelsVar = getLevelsVariable(this);\n const filterOptions = this.state.options?.filter((opt) => opt.selected);\n\n levelsVar.updateFilters(\n filterOptions?.map((filterOpt) => ({\n key: LEVEL_VARIABLE_VALUE,\n operator: FilterOp.Equal,\n value: filterOpt.text,\n })) ?? [],\n { skipPublish, forcePublish }\n );\n };\n\n onChangeOptions = (options: SelectableValue[]) => {\n // Save current url to history before the filter change\n addCurrentUrlToHistory();\n\n this.setState({\n options: this.state.options?.map((value) => {\n if (options.some((opt) => opt.value === value.value)) {\n return { ...value, selected: true };\n }\n return { ...value, selected: false };\n }),\n });\n\n if (!this.state.isOpen) {\n this.updateFilters(false);\n } else {\n this.updateFilters(true);\n }\n };\n\n openSelect = (isOpen: boolean) => {\n this.setState({ isOpen });\n };\n\n onCloseMenu = () => {\n this.openSelect(false);\n // Update filters and run queries on close\n this.updateFilters(false, true);\n };\n\n static Component = ({ model }: SceneComponentProps) => {\n const { options, isLoading, visible, isOpen } = model.useState();\n const styles = useStyles2(getStyles);\n const levelsVar = getLevelsVariable(model);\n levelsVar.useState();\n\n if (!visible) {\n return null;\n }\n\n return (\n
\n \n }\n placeholder={'All levels'}\n className={styles.flex}\n onChange={model.onChangeOptions}\n onCloseMenu={() => model.onCloseMenu()}\n onOpenMenu={model.getTagValues}\n onFocus={() => model.openSelect(true)}\n menuShouldPortal={true}\n isOpen={isOpen}\n isLoading={isLoading}\n isClearable={true}\n blurInputOnSelect={false}\n closeMenuOnSelect={false}\n openMenuOnFocus={true}\n showAllSelectedWhenOpen={true}\n hideSelectedOptions={false}\n value={options?.filter((v) => v.selected)}\n options={options?.map((val) => ({\n value: val.value,\n label: val.text,\n }))}\n />\n
\n );\n };\n}\nexport function syncLevelsVariable(sceneRef: SceneObject) {\n const levelsVariableScene = sceneGraph.findObject(sceneRef, (obj) => obj instanceof LevelsVariableScene);\n if (levelsVariableScene instanceof LevelsVariableScene) {\n levelsVariableScene.onFilterChange();\n }\n}\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n flex: css({\n flex: '1',\n }),\n});\n","import { GrafanaTheme2 } from '@grafana/data';\nimport { css } from '@emotion/css';\nimport { LineFilterEditor } from '../ServiceScene/LineFilter/LineFilterEditor';\nimport React, { ChangeEvent, KeyboardEvent, useState } from 'react';\nimport { IconButton, useStyles2 } from '@grafana/ui';\nimport { LineFilterCaseSensitive } from '../../services/filterTypes';\nimport { RegexInputValue } from '../ServiceScene/LineFilter/RegexIconButton';\n\nexport interface LineFilterProps {\n exclusive: boolean;\n lineFilter: string;\n caseSensitive: boolean;\n regex: boolean;\n setExclusive: (exclusive: boolean) => void;\n onInputChange: (e: ChangeEvent) => void;\n onCaseSensitiveToggle: (caseSensitive: LineFilterCaseSensitive) => void;\n onRegexToggle: (regex: RegexInputValue) => void;\n updateFilter: (lineFilter: string, debounced: boolean) => void;\n handleEnter: (e: KeyboardEvent, lineFilter: string) => void;\n onSubmitLineFilter?: () => void;\n onClearLineFilter?: () => void;\n}\n\nexport function LineFilterVariable({ onClick, props }: { onClick: () => void; props: LineFilterProps }) {\n const [focus, setFocus] = useState(false);\n const styles = useStyles2(getLineFilterStyles);\n return (\n <>\n \n
\n Line filter\n \n
\n \n \n {focus && (\n setFocus(false)}\n name={'table-collapse-all'}\n />\n )}\n \n
\n \n );\n}\n\nconst getLineFilterStyles = (theme: GrafanaTheme2) => ({\n titleWrap: css({\n display: 'flex',\n fontSize: theme.typography.bodySmall.fontSize,\n marginBottom: theme.spacing(0.5),\n gap: theme.spacing(1),\n }),\n collapseWrap: css({\n display: 'flex',\n }),\n collapseBtn: css({\n marginLeft: theme.spacing(1),\n }),\n});\n","import { AdHocFilterWithLabels, SceneComponentProps, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport React, { ChangeEvent, KeyboardEvent } from 'react';\nimport { getLineFiltersVariable } from '../../services/variableGetters';\nimport { LineFilterCaseSensitive, LineFilterOp } from '../../services/filterTypes';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from '../../services/analytics';\nimport { debounce } from 'lodash';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { css } from '@emotion/css';\nimport { useStyles2 } from '@grafana/ui';\nimport { LineFilterProps, LineFilterVariable } from './LineFilterVariable';\nimport { addCurrentUrlToHistory } from '../../services/navigate';\n\ninterface LineFilterRendererState extends SceneObjectState {}\n\n/**\n * The scene for the submitted line filter that is rendered up top with the other variables.\n * @todo refactor into new directory with other custom variable renderers and/or layout scenes\n */\nexport class LineFilterVariablesScene extends SceneObjectBase {\n static Component = ({ model }: SceneComponentProps) => {\n const lineFilterVar = getLineFiltersVariable(model);\n const { filters } = lineFilterVar.useState();\n const styles = useStyles2(getStyles);\n sortLineFilters(filters);\n\n if (!filters.length) {\n return null;\n }\n\n return (\n
\n {filters.map((filter) => {\n const props: LineFilterProps = {\n lineFilter: filter.value,\n regex: filter.operator === LineFilterOp.regex || filter.operator === LineFilterOp.negativeRegex,\n caseSensitive: filter.key === LineFilterCaseSensitive.caseSensitive,\n exclusive: model.isFilterExclusive(filter),\n handleEnter: (e, lineFilter) => model.handleEnter(e, filter.value, filter),\n setExclusive: () => model.onToggleExclusive(filter),\n updateFilter: (lineFilter, debounced) =>\n model.updateFilter(\n filter,\n {\n ...filter,\n value: lineFilter,\n },\n debounced\n ),\n onRegexToggle: () => model.onRegexToggle(filter),\n onInputChange: (e) => model.onInputChange(e, filter),\n onCaseSensitiveToggle: () => model.onCaseSensitiveToggle(filter),\n };\n return model.removeFilter(filter)} props={props} />;\n })}\n
\n );\n };\n /**\n * Submit on enter\n */\n handleEnter = (e: KeyboardEvent, lineFilter: string, filter: AdHocFilterWithLabels) => {\n if (e.key === 'Enter') {\n // Add the current url to browser history before the state is changed so the user can revert their change.\n addCurrentUrlToHistory();\n this.updateVariableLineFilter(filter, { ...filter, value: lineFilter });\n }\n };\n\n isFilterExclusive({ operator }: AdHocFilterWithLabels): boolean {\n return operator === LineFilterOp.negativeMatch || operator === LineFilterOp.negativeRegex;\n }\n\n /**\n * Updates filter operator when user toggles regex\n */\n onRegexToggle = (filter: AdHocFilterWithLabels) => {\n let newOperator: LineFilterOp;\n // Set value to scene state\n switch (filter.operator) {\n case LineFilterOp.match: {\n newOperator = LineFilterOp.regex;\n break;\n }\n case LineFilterOp.negativeMatch: {\n newOperator = LineFilterOp.negativeRegex;\n break;\n }\n case LineFilterOp.regex: {\n newOperator = LineFilterOp.match;\n break;\n }\n case LineFilterOp.negativeRegex: {\n newOperator = LineFilterOp.negativeMatch;\n break;\n }\n default: {\n throw new Error('Invalid operator!');\n }\n }\n\n this.updateFilter(filter, { ...filter, operator: newOperator }, false);\n };\n\n /**\n * Updates filter operator when user toggles exclusion\n */\n onToggleExclusive = (filter: AdHocFilterWithLabels) => {\n let newOperator: string;\n switch (filter.operator) {\n case LineFilterOp.match: {\n newOperator = LineFilterOp.negativeMatch;\n break;\n }\n case LineFilterOp.negativeMatch: {\n newOperator = LineFilterOp.match;\n break;\n }\n case LineFilterOp.regex: {\n newOperator = LineFilterOp.negativeRegex;\n break;\n }\n case LineFilterOp.negativeRegex: {\n newOperator = LineFilterOp.regex;\n break;\n }\n default: {\n throw new Error('Invalid operator!');\n }\n }\n\n this.updateFilter(filter, { ...filter, operator: newOperator }, false);\n };\n\n /**\n * Updates filter key when user toggles case sensitivity\n */\n onCaseSensitiveToggle = (filter: AdHocFilterWithLabels) => {\n const caseSensitive =\n filter.key === LineFilterCaseSensitive.caseSensitive\n ? LineFilterCaseSensitive.caseInsensitive\n : LineFilterCaseSensitive.caseSensitive;\n this.updateFilter(filter, { ...filter, key: caseSensitive }, false);\n };\n\n /**\n * Updates existing line filter ad-hoc variable filter\n */\n updateFilter(existingFilter: AdHocFilterWithLabels, filterUpdate: AdHocFilterWithLabels, debounced = true) {\n if (debounced) {\n // We want to update the UI right away, which uses the filter state as the UI state, but we don't want to execute the query immediately\n this.updateVariableLineFilter(existingFilter, filterUpdate, true);\n // Run the debounce to force the event emit, as the prior setState will have already set the filterExpression, which will otherwise prevent the emit of the event which will trigger the query\n this.updateVariableDebounced(existingFilter, filterUpdate, false, true);\n } else {\n this.updateVariableLineFilter(existingFilter, filterUpdate);\n }\n }\n\n /**\n * Line filter input onChange helper method\n */\n onInputChange = (e: ChangeEvent, filter: AdHocFilterWithLabels) => {\n this.updateFilter(filter, { ...filter, value: e.target.value }, true);\n };\n\n /**\n * Remove a filter, will trigger query\n */\n removeFilter = (filter: AdHocFilterWithLabels) => {\n addCurrentUrlToHistory();\n const variable = getLineFiltersVariable(this);\n const otherFilters = variable.state.filters.filter(\n (f) => f.keyLabel !== undefined && f.keyLabel !== filter.keyLabel\n );\n\n variable.setState({\n filters: otherFilters,\n });\n };\n\n /**\n * Update existing line filter ad-hoc variable\n */\n private updateVariableLineFilter = (\n existingFilter: AdHocFilterWithLabels,\n filterUpdate: AdHocFilterWithLabels,\n skipPublish = false,\n forcePublish = false\n ) => {\n const variable = getLineFiltersVariable(this);\n const otherFilters = variable.state.filters.filter(\n (f) => f.keyLabel !== undefined && f.keyLabel !== existingFilter.keyLabel\n );\n\n variable.updateFilters(\n [\n {\n keyLabel: existingFilter.keyLabel,\n key: filterUpdate.key,\n operator: filterUpdate.operator,\n value: filterUpdate.value,\n },\n ...otherFilters,\n ],\n { skipPublish, forcePublish }\n );\n\n reportAppInteraction(\n USER_EVENTS_PAGES.service_details,\n USER_EVENTS_ACTIONS.service_details.search_string_in_variables_changed,\n {\n searchQueryLength: existingFilter.value.length,\n containsLevel: existingFilter.value.toLowerCase().includes('level'),\n operator: filterUpdate.operator,\n caseSensitive: filterUpdate.key,\n }\n );\n };\n\n /**\n * Debounce line-filter ad-hoc variable update\n */\n private updateVariableDebounced = debounce(\n (\n existingFilter: AdHocFilterWithLabels,\n filterUpdate: AdHocFilterWithLabels,\n skipPublish = false,\n forcePublish = false\n ) => {\n this.updateVariableLineFilter(existingFilter, filterUpdate, skipPublish, forcePublish);\n },\n 1000\n );\n}\n\n/**\n * Sort line filters by keyLabel, i.e. the order the line filter was added\n */\nexport function sortLineFilters(filters: AdHocFilterWithLabels[]) {\n filters.sort((a, b) => parseInt(a.keyLabel ?? '0', 10) - parseInt(b.keyLabel ?? '0', 10));\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n lineFiltersWrap: css({\n label: 'lineFiltersWrap',\n display: 'flex',\n flexWrap: 'wrap',\n gap: `${theme.spacing(0.25)} ${theme.spacing(2)}`,\n }),\n };\n}\n","import { SceneComponentProps, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport { LinkButton, useStyles2 } from '@grafana/ui';\nimport React from 'react';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { css } from '@emotion/css';\nimport { getDrillDownIndexLink } from '../../services/navigate';\nimport { getLabelsVariable } from '../../services/variableGetters';\nimport { testIds } from '../../services/testIds';\n\nimport { isOperatorInclusive } from '../../services/operatorHelpers';\n\nexport interface ShowLogsButtonSceneState extends SceneObjectState {\n disabled?: boolean;\n hidden?: boolean;\n}\nexport class ShowLogsButtonScene extends SceneObjectBase {\n constructor(state: Partial) {\n super({\n ...state,\n });\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n onActivate() {\n const labelsVar = getLabelsVariable(this);\n const hasPositiveFilter = labelsVar.state.filters.some((f) => isOperatorInclusive(f.operator));\n this.setState({\n disabled: !hasPositiveFilter,\n });\n\n labelsVar.subscribeToState((newState) => {\n const hasPositiveFilter = newState.filters.some((f) => isOperatorInclusive(f.operator));\n this.setState({\n disabled: !hasPositiveFilter,\n });\n });\n }\n\n getLink = () => {\n const labelsVar = getLabelsVariable(this);\n const positiveFilter = labelsVar.state.filters.find((f) => isOperatorInclusive(f.operator));\n\n if (positiveFilter) {\n return getDrillDownIndexLink(positiveFilter.key, positiveFilter.value);\n }\n\n return '';\n };\n\n static Component = ({ model }: SceneComponentProps) => {\n const { disabled, hidden } = model.useState();\n const styles = useStyles2(getStyles);\n\n if (hidden === true) {\n return null;\n }\n\n const link = model.getLink();\n\n return (\n \n Show logs\n \n );\n };\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n button: css({\n [theme.breakpoints.down('lg')]: {\n alignSelf: 'flex-end',\n },\n [theme.breakpoints.down('md')]: {\n marginTop: theme.spacing(1),\n alignSelf: 'flex-start',\n },\n\n alignSelf: 'flex-start',\n marginTop: '22px',\n }),\n };\n}\n","import { SceneComponentProps, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport { Dropdown, Switch, ToolbarButton, useStyles2 } from '@grafana/ui';\nimport React from 'react';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { css } from '@emotion/css';\nimport { config } from '@grafana/runtime';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from '../../services/analytics';\nimport { AGGREGATED_METRIC_START_DATE } from '../ServiceSelectionScene/ServiceSelectionScene';\nimport pluginJson from '../../plugin.json';\nimport { testIds } from '../../services/testIds';\nconst AGGREGATED_METRICS_USER_OVERRIDE_LOCALSTORAGE_KEY = `${pluginJson.id}.serviceSelection.aggregatedMetrics`;\n\nexport interface ToolbarSceneState extends SceneObjectState {\n isOpen: boolean;\n options: {\n aggregatedMetrics: {\n active: boolean;\n userOverride: boolean;\n disabled: boolean;\n };\n };\n}\nexport class ToolbarScene extends SceneObjectBase {\n constructor(state: Partial) {\n const userOverride = localStorage.getItem(AGGREGATED_METRICS_USER_OVERRIDE_LOCALSTORAGE_KEY);\n const active = config.featureToggles.exploreLogsAggregatedMetrics && userOverride !== 'false';\n\n super({\n isOpen: false,\n options: {\n aggregatedMetrics: {\n active: active ?? false,\n userOverride: userOverride === 'true' ?? false,\n disabled: false,\n },\n },\n ...state,\n });\n }\n\n public toggleAggregatedMetricsOverride = () => {\n const active = !this.state.options.aggregatedMetrics.active;\n\n reportAppInteraction(\n USER_EVENTS_PAGES.service_selection,\n USER_EVENTS_ACTIONS.service_selection.aggregated_metrics_toggled,\n {\n enabled: active,\n }\n );\n\n localStorage.setItem(AGGREGATED_METRICS_USER_OVERRIDE_LOCALSTORAGE_KEY, active.toString());\n\n this.setState({\n options: {\n aggregatedMetrics: {\n active,\n disabled: this.state.options.aggregatedMetrics.disabled,\n userOverride: active,\n },\n },\n });\n };\n\n public onToggleOpen = (isOpen: boolean) => {\n this.setState({ isOpen });\n };\n\n static Component = ({ model }: SceneComponentProps) => {\n const { isOpen, options } = model.useState();\n const styles = useStyles2(getStyles);\n\n const renderPopover = () => {\n return (\n
evt.stopPropagation()}>\n
Query options
\n
\n \n Aggregated metrics\n
\n \n \n \n
\n
\n );\n };\n\n if (options.aggregatedMetrics) {\n return (\n \n \n \n );\n }\n\n return <>;\n };\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n popover: css({\n display: 'flex',\n padding: theme.spacing(2),\n flexDirection: 'column',\n background: theme.colors.background.primary,\n boxShadow: theme.shadows.z3,\n borderRadius: theme.shape.radius.default,\n border: `1px solid ${theme.colors.border.weak}`,\n zIndex: 1,\n marginRight: theme.spacing(2),\n }),\n heading: css({\n fontWeight: theme.typography.fontWeightMedium,\n paddingBottom: theme.spacing(2),\n }),\n options: css({\n display: 'grid',\n gridTemplateColumns: '1fr 50px',\n rowGap: theme.spacing(1),\n columnGap: theme.spacing(2),\n alignItems: 'center',\n }),\n };\n}\n","import {\n EmbeddedScene,\n SceneAppPage,\n SceneAppPageLike,\n SceneFlexLayout,\n SceneRouteMatch,\n SceneTimeRange,\n} from '@grafana/scenes';\nimport {\n CHILD_ROUTE_DEFINITIONS,\n ChildDrilldownSlugs,\n DRILLDOWN_URL_KEYS,\n extractValuesFromRoute,\n PageSlugs,\n ParentDrilldownSlugs,\n ROUTE_DEFINITIONS,\n ROUTES,\n SERVICE_URL_KEYS,\n SUB_ROUTES,\n ValueSlugs,\n} from '../services/routing';\nimport { PageLayoutType } from '@grafana/data';\nimport { IndexScene } from './IndexScene/IndexScene';\nimport { navigateToIndex } from '../services/navigate';\nimport { logger } from '../services/logger';\nimport { capitalizeFirstLetter } from '../services/text';\nimport { PLUGIN_BASE_URL, prefixRoute } from '../services/plugin';\n\nexport type RouteProps = { labelName: string; labelValue: string; breakdownLabel?: string };\nexport type RouteMatch = SceneRouteMatch;\ntype Optional = Pick, K> & Omit;\nexport type OptionalRouteProps = Optional;\nexport type OptionalRouteMatch = SceneRouteMatch;\n\nexport const DEFAULT_TIME_RANGE = { from: 'now-15m', to: 'now' };\nfunction getServicesScene(routeMatch: OptionalRouteMatch) {\n return new EmbeddedScene({\n body: new IndexScene({\n $timeRange: new SceneTimeRange(DEFAULT_TIME_RANGE),\n routeMatch,\n }),\n });\n}\n\n// Index page\nexport function makeIndexPage() {\n return new SceneAppPage({\n // Top level breadcrumb\n title: 'Grafana Logs Drilldown',\n url: prefixRoute(PageSlugs.explore),\n layout: PageLayoutType.Custom,\n preserveUrlKeys: SERVICE_URL_KEYS,\n routePath: prefixRoute(PageSlugs.explore),\n getScene: (routeMatch) => getServicesScene(routeMatch),\n drilldowns: [\n {\n routePath: ROUTE_DEFINITIONS.logs,\n getPage: (routeMatch, parent) => makeBreakdownPage(routeMatch, parent, PageSlugs.logs),\n defaultRoute: true,\n },\n {\n routePath: ROUTE_DEFINITIONS.labels,\n getPage: (routeMatch, parent) => makeBreakdownPage(routeMatch, parent, PageSlugs.labels),\n },\n {\n routePath: ROUTE_DEFINITIONS.patterns,\n getPage: (routeMatch, parent) => makeBreakdownPage(routeMatch, parent, PageSlugs.patterns),\n },\n {\n routePath: ROUTE_DEFINITIONS.fields,\n getPage: (routeMatch, parent) => makeBreakdownPage(routeMatch, parent, PageSlugs.fields),\n },\n {\n routePath: CHILD_ROUTE_DEFINITIONS.label,\n getPage: (routeMatch, parent) => makeBreakdownValuePage(routeMatch, parent, ValueSlugs.label),\n },\n {\n routePath: CHILD_ROUTE_DEFINITIONS.field,\n getPage: (routeMatch: RouteMatch, parent) => makeBreakdownValuePage(routeMatch, parent, ValueSlugs.field),\n },\n {\n routePath: '*',\n getPage: () => makeRedirectPage(),\n },\n ],\n });\n}\n\n// Redirect page back to index\nexport function makeRedirectPage() {\n return new SceneAppPage({\n title: '',\n url: PLUGIN_BASE_URL,\n getScene: makeEmptyScene(),\n hideFromBreadcrumbs: true,\n routePath: '*',\n $behaviors: [\n () => {\n navigateToIndex();\n },\n ],\n });\n}\n\nfunction makeEmptyScene(): (routeMatch: SceneRouteMatch) => EmbeddedScene {\n return () =>\n new EmbeddedScene({\n body: new SceneFlexLayout({\n direction: 'column',\n children: [],\n }),\n });\n}\n\nexport function makeBreakdownPage(\n routeMatch: RouteMatch,\n parent: SceneAppPageLike,\n slug: ParentDrilldownSlugs\n): SceneAppPage {\n const { labelName, labelValue } = extractValuesFromRoute(routeMatch);\n return new SceneAppPage({\n title: capitalizeFirstLetter(slug),\n layout: PageLayoutType.Custom,\n url: ROUTES[slug](labelValue, labelName),\n preserveUrlKeys: DRILLDOWN_URL_KEYS,\n getParentPage: () => parent,\n getScene: (routeMatch) => getServicesScene(routeMatch),\n });\n}\n\nexport function makeBreakdownValuePage(\n routeMatch: RouteMatch,\n parent: SceneAppPageLike,\n slug: ChildDrilldownSlugs\n): SceneAppPage {\n const { labelName, labelValue, breakdownLabel } = extractValuesFromRoute(routeMatch);\n\n if (!breakdownLabel) {\n const e = new Error('Breakdown value missing!');\n logger.error(e, {\n msg: 'makeBreakdownValuePage: Breakdown value missing!',\n labelName,\n labelValue,\n breakdownLabel: breakdownLabel ?? '',\n });\n throw e;\n }\n\n return new SceneAppPage({\n title: capitalizeFirstLetter(breakdownLabel),\n layout: PageLayoutType.Custom,\n url: SUB_ROUTES[slug](labelValue, labelName, breakdownLabel),\n preserveUrlKeys: DRILLDOWN_URL_KEYS,\n getParentPage: () => parent,\n getScene: (routeMatch) => getServicesScene(routeMatch),\n });\n}\n","import { DataFrame, FieldConfig, FieldConfigSource, TimeRange } from '@grafana/data';\nimport { usePluginLinks } from '@grafana/runtime';\nimport {\n SceneComponentProps,\n sceneGraph,\n SceneObjectBase,\n SceneObjectState,\n SceneQueryRunner,\n VizPanel,\n} from '@grafana/scenes';\nimport { DataSourceRef } from '@grafana/schema';\nimport { IconButton } from '@grafana/ui';\nimport React from 'react';\nimport { ExtensionPoints } from 'services/extensions/links';\nimport { findObjectOfType, getLokiDatasource } from 'services/scenes';\n\nimport LokiLogo from '../../../img/logo.svg';\nimport { LokiDatasource, LokiQuery } from '../../../services/lokiQuery';\n\nexport interface AddToInvestigationButtonState extends SceneObjectState {\n frame?: DataFrame;\n labelName?: string;\n fieldName?: string;\n ds?: LokiDatasource;\n context?: ExtensionContext;\n queries: LokiQuery[];\n type?: 'timeseries' | 'logs' | undefined;\n}\n\ntype ExtensionContext = {\n timeRange: TimeRange;\n queries: LokiQuery[];\n datasource: DataSourceRef;\n origin: string;\n url: string;\n type: string;\n title: string;\n id: string;\n logoPath: string;\n note?: string;\n drillDownLabel?: string;\n fieldConfig?: FieldConfigSource;\n};\n\nexport class AddToInvestigationButton extends SceneObjectBase {\n constructor(state: Omit) {\n super({ ...state, queries: [] });\n this.addActivationHandler(this.onActivate);\n }\n\n private onActivate = () => {\n getLokiDatasource(this).then((ds) => {\n this.setState({ ds });\n });\n\n this._subs.add(\n this.subscribeToState((newState, prevState) => {\n if (!this.state.queries.length) {\n this.getQueries();\n }\n\n if (!this.state.context && this.state.queries.length) {\n this.getContext();\n }\n })\n );\n };\n\n private getQueries = () => {\n const data = sceneGraph.getData(this);\n const queryRunner = findObjectOfType(data, (o) => o instanceof SceneQueryRunner, SceneQueryRunner);\n\n if (queryRunner) {\n const filter = this.state.frame ? getFilter(this.state.frame) : null;\n const queries = queryRunner.state.queries.map((q) => ({\n ...q,\n expr: sceneGraph.interpolate(queryRunner, q.expr),\n legendFormat: filter?.name ? `{{ ${filter.name} }}` : sceneGraph.interpolate(queryRunner, q.legendFormat),\n datasource: q.datasource ?? undefined,\n }));\n\n if (JSON.stringify(queries) !== JSON.stringify(this.state.queries)) {\n this.setState({ queries });\n }\n }\n };\n\n private getFieldConfig = () => {\n const panel = findObjectOfType(this, (o) => o instanceof VizPanel, VizPanel);\n const data = sceneGraph.getData(this);\n const frames = data?.state.data?.series;\n let fieldConfig = panel?.state.fieldConfig;\n if (fieldConfig && frames?.length) {\n for (const frame of frames) {\n for (const field of frame.fields) {\n const configKeys = Object.keys(field.config);\n const properties = configKeys.map((key) => ({\n id: key,\n value: field.config[key as keyof FieldConfig],\n }));\n\n // check if the override already exists\n const existingOverride = fieldConfig.overrides.find(\n (o) =>\n o.matcher.options === (field.config.displayNameFromDS ?? field.config.displayName ?? field.name) &&\n o.matcher.id === 'byName'\n );\n if (!existingOverride) {\n // add as first override\n fieldConfig.overrides.unshift({\n matcher: {\n id: 'byName',\n options: field.config.displayNameFromDS ?? field.config.displayName ?? field.name,\n },\n properties,\n });\n }\n\n if (existingOverride && JSON.stringify(existingOverride.properties) !== JSON.stringify(properties)) {\n existingOverride.properties = properties;\n }\n }\n }\n }\n return fieldConfig;\n };\n\n private getContext = () => {\n const fieldConfig = this.getFieldConfig();\n const { queries, ds, labelName, fieldName, type } = this.state;\n const timeRange = sceneGraph.getTimeRange(this);\n\n if (!timeRange || !queries || !ds?.uid) {\n return;\n }\n const ctx = {\n origin: 'Grafana Logs Drilldown',\n type: type ?? 'timeseries',\n queries,\n timeRange: { ...timeRange.state.value },\n datasource: { uid: ds.uid },\n url: window.location.href,\n id: `${JSON.stringify(queries)}${labelName}${fieldName}`,\n title: `${labelName}${fieldName ? ` > ${fieldName}` : ''}`,\n logoPath: LokiLogo,\n drillDownLabel: fieldName,\n fieldConfig: fieldConfig,\n };\n if (JSON.stringify(ctx) !== JSON.stringify(this.state.context)) {\n this.setState({ context: ctx });\n }\n };\n\n public static Component = ({ model }: SceneComponentProps) => {\n const { context } = model.useState();\n const { links } = usePluginLinks({ extensionPointId: ExtensionPoints.MetricInvestigation, context });\n\n return (\n <>\n {links\n .filter((link) => link.pluginId === 'grafana-investigations-app' && link.onClick)\n .map((link) => (\n {\n if (link.onClick) {\n link.onClick(e);\n }\n }}\n />\n ))}\n \n );\n };\n}\n\nconst getFilter = (frame: DataFrame) => {\n const filterNameAndValueObj = frame.fields[1]?.labels ?? {};\n if (Object.keys(filterNameAndValueObj).length !== 1) {\n return;\n }\n const name = Object.keys(filterNameAndValueObj)[0];\n return { name, value: filterNameAndValueObj[name] };\n};\n","import { DataFrame, GrafanaTheme2, PanelMenuItem, PluginExtensionLink } from '@grafana/data';\nimport {\n PanelBuilders,\n SceneComponentProps,\n SceneCSSGridItem,\n SceneFlexLayout,\n sceneGraph,\n SceneObject,\n SceneObjectBase,\n SceneObjectState,\n SceneQueryRunner,\n VizPanel,\n VizPanelMenu,\n} from '@grafana/scenes';\nimport React from 'react';\nimport { onExploreLinkClick } from '../ServiceScene/GoToExploreButton';\nimport { IndexScene } from '../IndexScene/IndexScene';\nimport { findObjectOfType, getQueryRunnerFromChildren } from '../../services/scenes';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from '../../services/analytics';\nimport { logger } from '../../services/logger';\nimport { AddToInvestigationButton } from '../ServiceScene/Breakdowns/AddToInvestigationButton';\n// Certain imports are not available in the dependant package, but can be if the plugin is running in a different Grafana version.\n// We need both imports to support Grafana v11 and v12.\n// @ts-expect-error \nimport { getObservablePluginLinks, getPluginLinkExtensions } from '@grafana/runtime';\nimport { ExtensionPoints } from '../../services/extensions/links';\nimport { setLevelColorOverrides } from '../../services/panel';\nimport { setPanelOption } from '../../services/store';\nimport { FieldsAggregatedBreakdownScene } from '../ServiceScene/Breakdowns/FieldsAggregatedBreakdownScene';\nimport { setValueSummaryHeight } from '../ServiceScene/Breakdowns/Panels/ValueSummary';\nimport { FieldValuesBreakdownScene } from '../ServiceScene/Breakdowns/FieldValuesBreakdownScene';\nimport { LabelValuesBreakdownScene } from '../ServiceScene/Breakdowns/LabelValuesBreakdownScene';\nimport { css } from '@emotion/css';\nimport { lastValueFrom } from 'rxjs';\n\nconst ADD_TO_INVESTIGATION_MENU_TEXT = 'Add to investigation';\nconst ADD_TO_INVESTIGATION_MENU_DIVIDER_TEXT = 'investigations_divider'; // Text won't be visible\nconst ADD_TO_INVESTIGATION_MENU_GROUP_TEXT = 'Investigations';\n\nexport enum AvgFieldPanelType {\n 'timeseries' = 'timeseries',\n 'histogram' = 'histogram',\n}\n\nexport enum CollapsablePanelText {\n collapsed = 'Collapse',\n expanded = 'Expand',\n}\n\ninterface InvestigationOptions {\n labelName?: string;\n fieldName?: string;\n frame?: DataFrame;\n type?: 'timeseries' | 'logs';\n getLabelName?: () => string;\n}\n\ninterface PanelMenuState extends SceneObjectState {\n body?: VizPanelMenu;\n addInvestigationsLink?: boolean;\n investigationsButton?: AddToInvestigationButton;\n panelType?: AvgFieldPanelType;\n\n investigationOptions?: InvestigationOptions;\n}\n\n/**\n * @todo the VizPanelMenu interface is overly restrictive, doesn't allow any member functions on this class, so everything is currently inlined\n */\nexport class PanelMenu extends SceneObjectBase implements VizPanelMenu, SceneObject {\n constructor(state: Partial) {\n super({ ...state, addInvestigationsLink: state.addInvestigationsLink ?? true });\n this.addActivationHandler(() => {\n // Navigation options (all panels)\n const items: PanelMenuItem[] = [\n {\n text: 'Navigation',\n type: 'group',\n },\n {\n text: 'Explore',\n iconClassName: 'compass',\n href: getExploreLink(this),\n onClick: () => onExploreLinkClickTracking(),\n shortcut: 'p x',\n },\n ];\n\n let viz;\n try {\n viz = sceneGraph.getAncestor(this, VizPanel);\n } catch (e) {\n // If we can't find the viz panel, we can't add the Explore item. Currently the case for logs table.\n this.setState({\n body: new VizPanelMenu({\n items,\n }),\n });\n return;\n }\n\n this.setState({\n investigationsButton: new AddToInvestigationButton({\n labelName: this.state.investigationOptions?.getLabelName\n ? this.state.investigationOptions?.getLabelName()\n : this.state.investigationOptions?.labelName,\n fieldName: this.state.investigationOptions?.fieldName,\n frame: this.state.investigationOptions?.frame,\n type: this.state.investigationOptions?.type,\n }),\n });\n\n if (this.state.addInvestigationsLink) {\n // @todo rewrite the AddToExplorationButton\n // Manually activate scene\n this.state.investigationsButton?.activate();\n }\n\n // Visualization options\n if (this.state.panelType || viz?.state.collapsible) {\n addVisualizationHeader(items, this);\n }\n\n if (viz?.state.collapsible) {\n addCollapsableItem(items, this);\n }\n\n if (this.state.panelType) {\n addHistogramItem(items, this);\n }\n\n this.setState({\n body: new VizPanelMenu({\n items,\n }),\n });\n\n this._subs.add(\n this.state.investigationsButton?.subscribeToState(async () => {\n await subscribeToAddToInvestigation(this);\n })\n );\n });\n }\n\n addItem(item: PanelMenuItem): void {\n if (this.state.body) {\n this.state.body.addItem(item);\n }\n }\n setItems(items: PanelMenuItem[]): void {\n if (this.state.body) {\n this.state.body.setItems(items);\n }\n }\n\n public static Component = ({ model }: SceneComponentProps) => {\n const { body } = model.useState();\n\n if (body) {\n return ;\n }\n\n return <>;\n };\n}\n\nfunction addVisualizationHeader(items: PanelMenuItem[], sceneRef: PanelMenu) {\n items.push({\n text: '',\n type: 'divider',\n });\n items.push({\n text: 'Visualization',\n type: 'group',\n });\n}\n\nfunction addCollapsableItem(items: PanelMenuItem[], menu: PanelMenu) {\n const viz = sceneGraph.getAncestor(menu, VizPanel);\n items.push({\n text: viz.state.collapsed ? CollapsablePanelText.expanded : CollapsablePanelText.collapsed,\n iconClassName: viz.state.collapsed ? 'table-collapse-all' : 'table-expand-all',\n onClick: () => {\n const newCollapsableState = viz.state.collapsed ? CollapsablePanelText.expanded : CollapsablePanelText.collapsed;\n\n // Update the viz\n const vizPanelFlexLayout = sceneGraph.getAncestor(menu, SceneFlexLayout);\n setValueSummaryHeight(vizPanelFlexLayout, newCollapsableState);\n\n // Set state and update local storage\n viz.setState({\n collapsed: !viz.state.collapsed,\n });\n setPanelOption('collapsed', newCollapsableState);\n },\n });\n}\n\nfunction addHistogramItem(items: PanelMenuItem[], sceneRef: PanelMenu) {\n items.push({\n text: sceneRef.state.panelType !== AvgFieldPanelType.histogram ? 'Histogram' : 'Time series',\n iconClassName: sceneRef.state.panelType !== AvgFieldPanelType.histogram ? 'graph-bar' : 'chart-line',\n\n onClick: () => {\n const gridItem = sceneGraph.getAncestor(sceneRef, SceneCSSGridItem);\n const viz = sceneGraph.getAncestor(sceneRef, VizPanel).clone();\n const $data = sceneGraph.getData(sceneRef).clone();\n const menu = sceneRef.clone();\n const headerActions = Array.isArray(viz.state.headerActions)\n ? viz.state.headerActions.map((o) => o.clone())\n : viz.state.headerActions;\n let body;\n\n if (sceneRef.state.panelType !== AvgFieldPanelType.histogram) {\n body = PanelBuilders.timeseries().setOverrides(setLevelColorOverrides);\n } else {\n body = PanelBuilders.histogram();\n }\n\n gridItem.setState({\n body: body.setMenu(menu).setTitle(viz.state.title).setHeaderActions(headerActions).setData($data).build(),\n });\n\n const newPanelType =\n sceneRef.state.panelType !== AvgFieldPanelType.timeseries\n ? AvgFieldPanelType.timeseries\n : AvgFieldPanelType.histogram;\n setPanelOption('panelType', newPanelType);\n menu.setState({ panelType: newPanelType });\n\n const fieldsAggregatedBreakdownScene = findObjectOfType(\n gridItem,\n (o) => o instanceof FieldsAggregatedBreakdownScene,\n FieldsAggregatedBreakdownScene\n );\n if (fieldsAggregatedBreakdownScene) {\n fieldsAggregatedBreakdownScene.rebuildAvgFields();\n }\n\n onSwitchVizTypeTracking(newPanelType);\n },\n });\n}\n\nexport const getExploreLink = (sceneRef: SceneObject) => {\n const indexScene = sceneGraph.getAncestor(sceneRef, IndexScene);\n const $data = sceneGraph.getData(sceneRef);\n let queryRunner = $data instanceof SceneQueryRunner ? $data : getQueryRunnerFromChildren($data)[0];\n\n // If we don't have a query runner, then our panel is within a SceneCSSGridItem, we need to get the query runner from there\n if (!queryRunner) {\n const breakdownScene = sceneGraph.findObject(\n sceneRef,\n (o) => o instanceof FieldValuesBreakdownScene || o instanceof LabelValuesBreakdownScene\n );\n if (breakdownScene) {\n const queryProvider = sceneGraph.getData(breakdownScene);\n\n if (queryProvider instanceof SceneQueryRunner) {\n queryRunner = queryProvider;\n } else {\n queryRunner = getQueryRunnerFromChildren(queryProvider)[0];\n }\n } else {\n logger.error(new Error('Unable to locate query runner!'), {\n msg: 'PanelMenu - getExploreLink: Unable to locate query runner!',\n });\n }\n }\n const uninterpolatedExpr: string | undefined = queryRunner.state.queries[0].expr;\n const expr = sceneGraph.interpolate(sceneRef, uninterpolatedExpr);\n\n return onExploreLinkClick(indexScene, expr);\n};\n\nconst onExploreLinkClickTracking = () => {\n reportAppInteraction(USER_EVENTS_PAGES.all, USER_EVENTS_ACTIONS.all.open_in_explore_menu_clicked);\n};\n\nconst onSwitchVizTypeTracking = (newVizType: AvgFieldPanelType) => {\n reportAppInteraction(USER_EVENTS_PAGES.service_details, USER_EVENTS_ACTIONS.service_details.change_viz_type, {\n newVizType,\n });\n};\n\nconst getInvestigationLink = async (addToInvestigation: AddToInvestigationButton) => {\n const extensionPointId = ExtensionPoints.MetricInvestigation;\n const context = addToInvestigation.state.context;\n\n // `getPluginLinkExtensions` is removed in Grafana v12\n if (getPluginLinkExtensions !== undefined) {\n const links = getPluginLinkExtensions({\n extensionPointId,\n context,\n });\n\n return links.extensions[0];\n }\n\n // `getObservablePluginLinks` is introduced in Grafana v12\n if (getObservablePluginLinks !== undefined) {\n const links: PluginExtensionLink[] = await lastValueFrom(\n getObservablePluginLinks({\n extensionPointId,\n context,\n })\n );\n\n return links[0];\n }\n\n return undefined;\n};\n\nasync function subscribeToAddToInvestigation(exploreLogsVizPanelMenu: PanelMenu) {\n const addToInvestigationButton = exploreLogsVizPanelMenu.state.investigationsButton;\n if (addToInvestigationButton) {\n const link = await getInvestigationLink(addToInvestigationButton);\n\n const existingMenuItems = exploreLogsVizPanelMenu.state.body?.state.items ?? [];\n\n const existingAddToExplorationLink = existingMenuItems.find((item) => item.text === ADD_TO_INVESTIGATION_MENU_TEXT);\n\n if (link) {\n if (!existingAddToExplorationLink) {\n exploreLogsVizPanelMenu.state.body?.addItem({\n text: ADD_TO_INVESTIGATION_MENU_DIVIDER_TEXT,\n type: 'divider',\n });\n exploreLogsVizPanelMenu.state.body?.addItem({\n text: ADD_TO_INVESTIGATION_MENU_GROUP_TEXT,\n type: 'group',\n });\n exploreLogsVizPanelMenu.state.body?.addItem({\n text: ADD_TO_INVESTIGATION_MENU_TEXT,\n iconClassName: 'plus-square',\n onClick: (e) => link.onClick && link.onClick(e),\n });\n } else {\n if (existingAddToExplorationLink) {\n exploreLogsVizPanelMenu.state.body?.setItems(\n existingMenuItems.filter(\n (item) =>\n [\n ADD_TO_INVESTIGATION_MENU_DIVIDER_TEXT,\n ADD_TO_INVESTIGATION_MENU_GROUP_TEXT,\n ADD_TO_INVESTIGATION_MENU_TEXT,\n ].includes(item.text) === false\n )\n );\n }\n }\n }\n }\n}\n\nexport const getPanelWrapperStyles = (theme: GrafanaTheme2) => {\n return {\n panelWrapper: css({\n width: '100%',\n height: '100%',\n label: 'panel-wrapper',\n position: 'absolute',\n display: 'flex',\n\n // @todo remove this wrapper and styles when core changes are introduced in 11.5\n // Need more specificity to override core style\n 'button.show-on-hover': {\n opacity: 1,\n visibility: 'visible',\n background: 'none',\n '&:hover': {\n background: theme.colors.secondary.shade,\n },\n },\n }),\n };\n};\n","import React from 'react';\n\nimport { toURLRange, urlUtil } from '@grafana/data';\nimport { config } from '@grafana/runtime';\nimport { sceneGraph } from '@grafana/scenes';\nimport { ToolbarButton } from '@grafana/ui';\n\nimport { getDataSource, getQueryExpr } from 'services/scenes';\nimport { testIds } from 'services/testIds';\nimport { IndexScene } from 'Components/IndexScene/IndexScene';\nimport { USER_EVENTS_ACTIONS, USER_EVENTS_PAGES, reportAppInteraction } from 'services/analytics';\nimport { getDisplayedFields, getLogsVisualizationType } from 'services/store';\nimport { unknownToStrings } from '../../services/narrowing';\nimport { DATAPLANE_LABELS_NAME } from '../../services/logsFrame';\ninterface GoToExploreButtonState {\n exploration: IndexScene;\n}\n\nexport const GoToExploreButton = ({ exploration }: GoToExploreButtonState) => {\n const onClick = () => {\n reportAppInteraction(\n USER_EVENTS_PAGES.service_details,\n USER_EVENTS_ACTIONS.service_details.open_in_explore_clicked\n );\n onExploreLinkClick(exploration, undefined, true);\n };\n\n return (\n \n Open in Explore\n \n );\n};\n\nexport const onExploreLinkClick = (indexScene: IndexScene, expr?: string, open = false) => {\n if (!expr) {\n expr = getQueryExpr(indexScene);\n }\n\n expr = expr.replace(/\\s+/g, ' ').trimEnd();\n\n const datasource = getDataSource(indexScene);\n const timeRange = sceneGraph.getTimeRange(indexScene).state.value;\n const displayedFields = getDisplayedFields(indexScene);\n const visualisationType = getLogsVisualizationType();\n const columns = getUrlColumns();\n const exploreState = JSON.stringify({\n ['loki-explore']: {\n range: toURLRange(timeRange.raw),\n queries: [{ refId: 'logs', expr, datasource }],\n panelsState: {\n logs: {\n displayedFields,\n visualisationType,\n columns,\n labelFieldName: visualisationType === 'table' ? DATAPLANE_LABELS_NAME : undefined,\n },\n },\n datasource,\n },\n });\n const subUrl = config.appSubUrl ?? '';\n const link = urlUtil.renderUrl(`${subUrl}/explore`, { panes: exploreState, schemaVersion: 1 });\n if (open) {\n window.open(link, '_blank');\n }\n\n return link;\n};\n\nfunction getUrlColumns() {\n const params = new URLSearchParams(window.location.search);\n const urlColumns = params.get('urlColumns');\n if (urlColumns) {\n try {\n const columns = unknownToStrings(JSON.parse(urlColumns));\n let columnsParam: Record = {};\n for (const key in columns) {\n columnsParam[key] = columns[key];\n }\n return columnsParam;\n } catch (e) {\n console.error(e);\n }\n }\n return undefined;\n}\n","import React from 'react';\n\nimport { AdHocVariableFilter, BusEventBase, DataFrame } from '@grafana/data';\nimport {\n AdHocFiltersVariable,\n SceneComponentProps,\n SceneObject,\n SceneObjectBase,\n SceneObjectState,\n} from '@grafana/scenes';\nimport { VariableHide } from '@grafana/schema';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from 'services/analytics';\nimport {\n LEVEL_VARIABLE_VALUE,\n VAR_FIELDS,\n VAR_FIELDS_AND_METADATA,\n VAR_LABELS,\n VAR_LABELS_REPLICA,\n VAR_LEVELS,\n VAR_METADATA,\n} from 'services/variables';\nimport { FilterButton } from 'Components/FilterButton';\nimport { getDetectedLabelsFrame } from '../ServiceScene';\nimport { getParserForField } from '../../../services/fields';\nimport {\n getAdHocFiltersVariable,\n getFieldsAndMetadataVariable,\n getValueFromAdHocVariableFilter,\n} from '../../../services/variableGetters';\nimport { FilterOp, NumericFilterOp } from '../../../services/filterTypes';\n\nimport { addToFavorites } from '../../../services/favorites';\nimport { areArraysEqual } from '../../../services/comparison';\nimport { logger } from '../../../services/logger';\nimport { isFilterMetadata } from '../../../services/filters';\nimport { addCurrentUrlToHistory } from '../../../services/navigate';\n\nexport interface AddToFiltersButtonState extends SceneObjectState {\n frame: DataFrame;\n variableName: InterpolatedFilterType;\n hideExclude?: boolean;\n isIncluded?: boolean;\n isExcluded?: boolean;\n}\n\nexport class AddFilterEvent extends BusEventBase {\n constructor(\n public source: 'legend' | 'filterButton' | 'variable',\n public operator: FilterType | NumericFilterType,\n public key: string,\n public value?: string\n ) {\n super();\n }\n public static type = 'add-filter';\n}\n\nexport class ClearFilterEvent extends BusEventBase {\n constructor(public key: string, public value?: string, public operator?: FilterType) {\n super();\n }\n public static type = 'add-filter';\n}\n\nexport type NumericFilterType = NumericFilterOp.gt | NumericFilterOp.gte | NumericFilterOp.lt | NumericFilterOp.lte;\n\n/**\n * Filter types:\n * - include/exclude: add a negative or positive filter\n * - clear: remove filter if exists\n * - toggle: if the filter does not exist, add as include; if exists, remove\n */\nexport type FilterType = 'include' | 'clear' | 'exclude' | 'toggle';\n\nexport function addAdHocFilter(filter: AdHocVariableFilter, scene: SceneObject, variableType: InterpolatedFilterType) {\n const type: FilterType = filter.operator === '=' ? 'include' : 'exclude';\n addToFilters(filter.key, filter.value, type, scene, variableType);\n}\n\nexport type InterpolatedFilterType = typeof VAR_LABELS | typeof VAR_FIELDS | typeof VAR_LEVELS | typeof VAR_METADATA;\nexport type UIVariableFilterType = typeof VAR_LEVELS | typeof VAR_FIELDS_AND_METADATA;\nexport type AdHocFilterTypes = InterpolatedFilterType | typeof VAR_LABELS_REPLICA | typeof VAR_FIELDS_AND_METADATA;\n\nexport function clearFilters(\n key: string,\n scene: SceneObject,\n variableType: InterpolatedFilterType,\n value?: string,\n operator?: FilterType\n) {\n const variable = getUIAdHocVariable(variableType, key, scene);\n\n let filters = variable.state.filters.filter((filter) => {\n const fieldValue = getValueFromAdHocVariableFilter(variableType, filter);\n if (value && operator) {\n return !(filter.key === key && fieldValue.value === value && filter.operator === operator);\n }\n if (value) {\n return !(filter.key === key && fieldValue.value === value);\n }\n if (operator) {\n return !(filter.key === key && filter.operator === operator);\n }\n\n return !(filter.key === key);\n });\n\n scene.publishEvent(new ClearFilterEvent(key, value, operator), true);\n\n variable.setState({\n filters,\n });\n}\n\ntype OperatorType = 'greater' | 'lesser';\nconst getNumericOperatorType = (op: NumericFilterType | string): OperatorType | undefined => {\n if (op === FilterOp.gt || op === FilterOp.gte) {\n return 'greater';\n }\n if (op === FilterOp.lt || op === FilterOp.lte) {\n return 'lesser';\n }\n return undefined;\n};\n\nexport function removeNumericFilter(\n key: string,\n scene: SceneObject,\n operator?: NumericFilterType,\n variableType?: InterpolatedFilterType\n) {\n if (!variableType) {\n variableType = resolveVariableTypeForField(key, scene);\n }\n const variable = getUIAdHocVariable(variableType, key, scene);\n const operatorType = operator ? getNumericOperatorType(operator) : undefined;\n\n let filters = variable.state.filters.filter((filter) => {\n return !(\n filter.key === key &&\n (getNumericOperatorType(filter.operator) === operatorType || filter.operator === FilterOp.NotEqual)\n );\n });\n\n variable.setState({\n filters,\n });\n}\n\nexport function addNumericFilter(\n key: string,\n value: string,\n operator: NumericFilterType,\n scene: SceneObject,\n variableType?: InterpolatedFilterType\n) {\n const operatorType = getNumericOperatorType(operator);\n\n if (!variableType) {\n variableType = resolveVariableTypeForField(key, scene);\n }\n const variable = getUIAdHocVariable(variableType, key, scene);\n\n let valueObject: string | undefined = undefined;\n if (variableType === VAR_FIELDS) {\n valueObject = JSON.stringify({\n value,\n parser: getParserForField(key, scene),\n });\n }\n\n let filters = variable.state.filters.filter((filter) => {\n return !(\n filter.key === key &&\n (getNumericOperatorType(filter.operator) === operatorType || filter.operator === FilterOp.NotEqual)\n );\n });\n\n filters = [\n ...filters,\n {\n key,\n operator: operator,\n value: valueObject ? valueObject : value,\n valueLabels: [value],\n },\n ];\n\n variable.setState({\n filters,\n });\n\n scene.publishEvent(new AddFilterEvent('filterButton', operator, key, value), true);\n}\n\n/**\n * Helper for buttons in the UI\n * toggles an ad hoc filter to a given variable type\n */\nexport function addToFilters(\n key: string,\n value: string,\n operator: FilterType,\n scene: SceneObject,\n variableType: InterpolatedFilterType\n) {\n // Add the current url to browser history before the state is changed so the user can revert their change.\n addCurrentUrlToHistory();\n\n if (variableType === VAR_LABELS) {\n addToFavorites(key, value, scene);\n }\n\n const variable = getUIAdHocVariable(variableType, key, scene);\n\n let valueObject: string | undefined = undefined;\n let valueLabel = value;\n if (variableType === VAR_FIELDS) {\n valueObject = JSON.stringify({\n value,\n parser: getParserForField(key, scene),\n });\n } else if (variableType === VAR_LEVELS && operator === 'exclude') {\n valueLabel = `!${value}`;\n }\n\n // If the filter exists, filter it\n let filters = variable.state.filters.filter((filter) => {\n const fieldValue = getValueFromAdHocVariableFilter(variableType, filter);\n\n // if we're including, we want to remove all filters that have this key\n if (operator === 'include') {\n return !(filter.key === key && filter.operator === FilterOp.NotEqual);\n }\n if (operator === 'exclude') {\n return !(filter.key === key && filter.operator === FilterOp.Equal);\n }\n\n return !(filter.key === key && fieldValue.value === value);\n });\n\n const filterExists = filters.length !== variable.state.filters.length;\n\n if (operator === 'include' || operator === 'exclude' || (!filterExists && operator === 'toggle')) {\n filters = [\n ...filters,\n {\n key,\n operator: operator === 'exclude' ? FilterOp.NotEqual : FilterOp.Equal,\n value: valueObject ? valueObject : value,\n valueLabels: [valueLabel],\n },\n ];\n }\n\n // Variable needs to be updated before event is published!\n variable.setState({\n filters,\n });\n\n scene.publishEvent(new AddFilterEvent('filterButton', operator, key, value), true);\n}\n\nexport function replaceFilter(\n key: string,\n value: string,\n operator: Extract,\n scene: SceneObject,\n variableType: InterpolatedFilterType\n) {\n const variable = getUIAdHocVariable(variableType, key, scene);\n\n variable.setState({\n filters: [\n {\n key,\n operator: operator === 'exclude' ? FilterOp.NotEqual : FilterOp.Equal,\n value,\n },\n ],\n hide: VariableHide.hideLabel,\n });\n}\n\nexport function validateVariableNameForField(field: string, variableName: InterpolatedFilterType) {\n // Special case: If the key is LEVEL_VARIABLE_VALUE, we need to use the VAR_FIELDS.\n if (field === LEVEL_VARIABLE_VALUE) {\n return VAR_LEVELS;\n }\n return variableName;\n}\n\nfunction resolveVariableTypeForField(field: string, scene: SceneObject): InterpolatedFilterType {\n const indexedLabel = getDetectedLabelsFrame(scene)?.fields?.find((label) => label.name === field);\n return indexedLabel ? VAR_LABELS : VAR_FIELDS;\n}\n\nexport class AddToFiltersButton extends SceneObjectBase {\n constructor(state: AddToFiltersButtonState) {\n super(state);\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n onActivate() {\n const filter = getFilter(this.state.frame);\n if (filter) {\n const variable = getUIAdHocVariable(this.state.variableName, filter.name, this);\n this.setFilterState(variable);\n\n this._subs.add(\n variable.subscribeToState((newState, prevState) => {\n if (!areArraysEqual(newState.filters, prevState.filters)) {\n this.setFilterState(variable);\n }\n })\n );\n }\n }\n\n private setFilterState(variable: AdHocFiltersVariable) {\n const filter = getFilter(this.state.frame);\n if (!filter) {\n this.setState({\n isIncluded: false,\n isExcluded: false,\n });\n return;\n }\n\n // Check if the filter is already there\n const filterInSelectedFilters = variable.state.filters.find((f) => {\n const isMetadata = isFilterMetadata(filter);\n const value = getValueFromAdHocVariableFilter(isMetadata ? VAR_METADATA : VAR_FIELDS, f);\n return f.key === filter.name && value.value === filter.value;\n });\n\n if (!filterInSelectedFilters) {\n this.setState({\n isIncluded: false,\n isExcluded: false,\n });\n return;\n }\n\n this.setState({\n isIncluded: filterInSelectedFilters.operator === FilterOp.Equal,\n isExcluded: filterInSelectedFilters.operator === FilterOp.NotEqual,\n });\n }\n\n public onClick = (type: FilterType) => {\n const filter = getFilter(this.state.frame);\n if (!filter) {\n return;\n }\n\n addToFilters(filter.name, filter.value, type, this, this.state.variableName);\n const variable = getUIAdHocVariable(this.state.variableName, filter.name, this);\n\n reportAppInteraction(\n USER_EVENTS_PAGES.service_details,\n USER_EVENTS_ACTIONS.service_details.add_to_filters_in_breakdown_clicked,\n {\n filterType: this.state.variableName,\n key: filter.name,\n action: type,\n filtersLength: variable?.state.filters.length || 0,\n }\n );\n };\n\n public static Component = ({ model }: SceneComponentProps) => {\n const { hideExclude, isExcluded, isIncluded } = model.useState();\n return (\n model.onClick('include')}\n onClear={() => model.onClick('clear')}\n onExclude={() => model.onClick('exclude')}\n hideExclude={hideExclude}\n />\n );\n };\n}\n\nconst getFilter = (frame: DataFrame) => {\n // current filter name and value is format {name: value}\n const filterNameAndValueObj = frame.fields[1]?.labels ?? {};\n // Sanity check - filter should have only one key-value pair\n if (Object.keys(filterNameAndValueObj).length !== 1) {\n logger.warn('getFilter: unexpected empty labels');\n return;\n }\n const name = Object.keys(filterNameAndValueObj)[0];\n const value = filterNameAndValueObj[name];\n return { name, value };\n};\n\nconst getUIAdHocVariable = (variableType: InterpolatedFilterType, key: string, scene: SceneObject) => {\n return variableType === VAR_FIELDS || variableType === VAR_METADATA\n ? getFieldsAndMetadataVariable(scene)\n : getAdHocFiltersVariable(validateVariableNameForField(key, variableType), scene);\n};\n","import { SceneComponentProps, sceneGraph, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport React, { ChangeEvent } from 'react';\nimport { ByFrameRepeater } from './ByFrameRepeater';\nimport { SearchInput } from './SearchInput';\nimport { LabelBreakdownScene } from './LabelBreakdownScene';\nimport { FieldsBreakdownScene } from './FieldsBreakdownScene';\nimport { BusEventBase } from '@grafana/data';\nimport { logger } from '../../../services/logger';\n\nexport class BreakdownSearchReset extends BusEventBase {\n public static type = 'breakdown-search-reset';\n}\n\nexport interface BreakdownSearchSceneState extends SceneObjectState {\n filter?: string;\n}\n\nconst recentFilters: Record = {};\n\nexport class BreakdownSearchScene extends SceneObjectBase {\n private cacheKey: string;\n constructor(cacheKey: string) {\n super({\n filter: recentFilters[cacheKey] ?? '',\n });\n this.cacheKey = cacheKey;\n }\n\n public static Component = ({ model }: SceneComponentProps) => {\n const { filter } = model.useState();\n return (\n \n );\n };\n\n public onValueFilterChange = (event: ChangeEvent) => {\n this.setState({ filter: event.target.value });\n this.filterValues(event.target.value);\n };\n\n public clearValueFilter = () => {\n this.setState({ filter: '' });\n this.filterValues('');\n };\n\n public reset = () => {\n this.setState({ filter: '' });\n recentFilters[this.cacheKey] = '';\n };\n\n private filterValues(filter: string) {\n const breakdownScene = sceneGraph.findObject(\n this,\n (o) => o instanceof LabelBreakdownScene || o instanceof FieldsBreakdownScene\n );\n if (breakdownScene instanceof LabelBreakdownScene || breakdownScene instanceof FieldsBreakdownScene) {\n recentFilters[this.cacheKey] = filter;\n const byFrameRepeater = sceneGraph.findDescendents(breakdownScene, ByFrameRepeater);\n byFrameRepeater?.forEach((child) => {\n if (child.state.body.isActive) {\n child.filterByString(filter);\n }\n });\n } else {\n logger.warn('unable to find Breakdown scene', {\n typeofBody: typeof breakdownScene,\n filter,\n });\n }\n }\n}\n","import React from 'react';\n\nimport { DataFrame, LoadingState, PanelData } from '@grafana/data';\nimport {\n SceneByFrameRepeater,\n SceneComponentProps,\n SceneDataTransformer,\n SceneFlexItem,\n SceneFlexLayout,\n sceneGraph,\n SceneLayout,\n SceneObjectBase,\n SceneObjectState,\n SceneReactObject,\n VizPanel,\n} from '@grafana/scenes';\nimport { sortSeries } from 'services/sorting';\nimport { fuzzySearch } from '../../../services/search';\nimport { getLabelValue } from './SortByScene';\nimport { Alert, Button } from '@grafana/ui';\nimport { css } from '@emotion/css';\nimport { BreakdownSearchReset } from './BreakdownSearchScene';\nimport { map, Observable } from 'rxjs';\nimport { LayoutSwitcher } from './LayoutSwitcher';\nimport { VALUE_SUMMARY_PANEL_KEY } from './Panels/ValueSummary';\nimport { logger } from '../../../services/logger';\n\ninterface ByFrameRepeaterState extends SceneObjectState {\n body: SceneLayout;\n getLayoutChild(frame: DataFrame, frameIndex: number): SceneFlexItem;\n}\n\ntype FrameFilterCallback = (frame: DataFrame) => boolean;\ntype FrameIterateCallback = (frames: DataFrame[], seriesIndex: number) => void;\n\nexport class ByFrameRepeater extends SceneObjectBase {\n private unfilteredChildren: SceneFlexItem[] = [];\n private sortBy: string;\n private direction: string;\n private sortedSeries: DataFrame[] = [];\n private getFilter: () => string;\n public constructor({\n sortBy,\n direction,\n getFilter,\n ...state\n }: ByFrameRepeaterState & { sortBy: string; direction: string; getFilter: () => string }) {\n super(state);\n\n this.sortBy = sortBy;\n this.direction = direction;\n this.getFilter = getFilter;\n\n this.addActivationHandler(() => {\n const data = sceneGraph.getData(this);\n\n this._subs.add(\n data.subscribeToState((data, prevData) => {\n if (\n data.data?.state === LoadingState.Done ||\n (data.data?.state === LoadingState.Streaming &&\n data.data.series.length > (prevData.data?.series.length ?? 0))\n ) {\n this.performRepeat(data.data);\n }\n })\n );\n\n if (data.state.data) {\n this.performRepeat(data.state.data);\n }\n });\n }\n\n public sort = (sortBy: string, direction: string) => {\n const data = sceneGraph.getData(this);\n this.sortBy = sortBy;\n this.direction = direction;\n if (data.state.data) {\n this.performRepeat(data.state.data);\n }\n };\n\n private performRepeat(data: PanelData) {\n const newChildren: SceneFlexItem[] = [];\n const sortedSeries = sortSeries(data.series, this.sortBy, this.direction);\n\n for (let seriesIndex = 0; seriesIndex < sortedSeries.length; seriesIndex++) {\n const layoutChild = this.state.getLayoutChild(sortedSeries[seriesIndex], seriesIndex);\n newChildren.push(layoutChild);\n }\n\n this.sortedSeries = sortedSeries;\n this.unfilteredChildren = newChildren;\n\n if (this.getFilter()) {\n this.state.body.setState({ children: [] });\n this.filterByString(this.getFilter());\n } else {\n this.state.body.setState({ children: newChildren });\n }\n }\n\n public iterateFrames = (callback: FrameIterateCallback) => {\n const data = sceneGraph.getData(this).state.data;\n if (!data) {\n return;\n }\n for (let seriesIndex = 0; seriesIndex < this.sortedSeries.length; seriesIndex++) {\n callback(this.sortedSeries, seriesIndex);\n }\n };\n\n filterByString = (filter: string) => {\n let haystack: string[] = [];\n\n this.iterateFrames((frames, seriesIndex) => {\n const labelValue = getLabelValue(frames[seriesIndex]);\n haystack.push(labelValue);\n });\n fuzzySearch(haystack, filter, (data) => {\n if (data && data[0]) {\n // We got search results\n this.filterFrames((frame: DataFrame) => {\n const label = getLabelValue(frame);\n return data[0].includes(label);\n });\n } else {\n // reset search\n this.filterFrames(() => true);\n }\n\n this.filterSummaryChart(data);\n });\n };\n\n /**\n * Filters the summary panel rendered above the breakdown panels by adding a transformation to the panel\n * @param data\n * @private\n */\n private filterSummaryChart(data: string[][]) {\n const layoutSwitcher = sceneGraph.getAncestor(this, LayoutSwitcher);\n\n if (layoutSwitcher) {\n const singleGraphParent = sceneGraph.findAllObjects(\n layoutSwitcher,\n (obj) => obj.isActive && obj.state.key === VALUE_SUMMARY_PANEL_KEY\n );\n if (singleGraphParent[0] instanceof SceneFlexLayout) {\n const panel = sceneGraph.findDescendents(singleGraphParent[0], VizPanel)[0];\n if (panel instanceof VizPanel) {\n panel.setState({\n $data: new SceneDataTransformer({\n transformations: [() => limitFramesByName(data[0])],\n }),\n });\n } else {\n logger.warn('filterSummaryChart: VizPanel not found', { typeofPanel: typeof panel });\n }\n } else {\n logger.warn('filterSummaryChart: SceneFlexItem not found', { typeofGraphParent: typeof singleGraphParent });\n }\n }\n }\n\n public filterFrames = (filterFn: FrameFilterCallback) => {\n const newChildren: SceneFlexItem[] = [];\n this.iterateFrames((frames, seriesIndex) => {\n if (filterFn(frames[seriesIndex])) {\n newChildren.push(this.unfilteredChildren[seriesIndex]);\n }\n });\n\n if (newChildren.length === 0) {\n const filter = this.getFilter();\n this.state.body.setState({ children: [buildNoResultsScene(filter, this.clearFilter)] });\n } else {\n this.state.body.setState({ children: newChildren });\n }\n };\n\n public clearFilter = () => {\n this.publishEvent(new BreakdownSearchReset(), true);\n };\n\n public static Component = ({ model }: SceneComponentProps) => {\n const { body } = model.useState();\n return ;\n };\n}\n\nfunction buildNoResultsScene(filter: string, clearFilter: () => void) {\n return new SceneFlexLayout({\n direction: 'row',\n children: [\n new SceneFlexItem({\n body: new SceneReactObject({\n reactNode: (\n
\n \n No values found matching “{filter}”\n \n \n
\n ),\n }),\n }),\n ],\n });\n}\n\nconst styles = {\n alertContainer: css({\n flexGrow: 1,\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n }),\n noResultsAlert: css({\n minWidth: '30vw',\n flexGrow: 0,\n }),\n clearButton: css({\n marginLeft: '1.5rem',\n }),\n};\n\nexport function limitFramesByName(matches: string[]) {\n return (source: Observable) => {\n return source.pipe(\n map((frames) => {\n if (!matches || !matches.length) {\n return frames;\n }\n let newFrames: DataFrame[] = [];\n frames.forEach((f) => {\n const label = getLabelValue(f);\n if (matches.includes(label)) {\n newFrames.push(f);\n }\n });\n return newFrames;\n })\n );\n };\n}\n","import { SceneComponentProps, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport { GrotError } from '../../GrotError';\nimport { Alert } from '@grafana/ui';\nimport React from 'react';\nimport { emptyStateStyles } from './FieldsBreakdownScene';\n\nexport interface EmptyLayoutSceneState extends SceneObjectState {\n type: 'fields' | 'labels';\n}\n\nexport class EmptyLayoutScene extends SceneObjectBase {\n public static Component({ model }: SceneComponentProps) {\n const { type } = model.useState();\n return (\n \n \n We did not find any {type} for the given timerange. Please{' '}\n \n let us know\n {' '}\n if you think this is a mistake.\n \n \n );\n }\n}\n","import { css } from '@emotion/css';\nimport React, { useState } from 'react';\n\nimport { GrafanaTheme2, SelectableValue } from '@grafana/data';\nimport { Select, useStyles2, InlineField, Icon, ActionMeta, InputActionMeta } from '@grafana/ui';\nimport { testIds } from '../../../services/testIds';\nimport { VariableValueOption } from '@grafana/scenes';\n\nimport { wrapWildcardSearch } from '../../../services/query';\n\ntype Props = {\n options: VariableValueOption[];\n value?: T;\n onChange: (label: T | undefined) => void;\n label: string;\n};\n\nexport type AsyncFieldSelectorProps = {\n selectOption: (value: string) => void;\n isLoading: boolean;\n initialFilter: SelectableValue;\n} & Props;\n\nexport function FieldSelector({ options, value, onChange, label }: Props) {\n const styles = useStyles2(getStyles);\n const [selected, setSelected] = useState(false);\n\n const selectableOptions: SelectableValue[] = options.map((option) => {\n return {\n label: option.label,\n value: option.value,\n };\n });\n return (\n \n setSelected(true)}\n onCloseMenu={() => setSelected(false)}\n onChange={(selected: SelectableValue) => onChange(selected.value)}\n className={styles.select}\n prefix={selected ? undefined : }\n />\n \n );\n}\n\nexport function ServiceFieldSelector({\n options,\n value,\n onChange,\n label,\n selectOption,\n isLoading,\n initialFilter,\n}: AsyncFieldSelectorProps) {\n const styles = useStyles2(getStyles);\n const [selected, setSelected] = useState(false);\n const [customOption, setCustomOption] = useState>(initialFilter);\n\n const selectableOptions: SelectableValue[] = options.map((option) => {\n return {\n label: option.label,\n value: option.value,\n };\n });\n const allOptions =\n customOption && value && customOption.value?.includes(value)\n ? [customOption, ...selectableOptions]\n : selectableOptions;\n\n const selectedOption = allOptions?.find((opt) => opt.value === value);\n\n return (\n \n setSelected(true)}\n onCloseMenu={() => setSelected(false)}\n allowCustomValue={true}\n prefix={selected || selectedOption?.__isNew__ ? undefined : }\n onChange={(value: SelectableValue, actionMeta: ActionMeta) => {\n // Custom added value\n if (value?.__isNew__ || value?.icon) {\n setCustomOption({ ...value, icon: 'filter' });\n return onChange(value.value);\n }\n\n // If the user clears the search\n if (actionMeta.action === 'clear') {\n return onChange('');\n }\n\n // Select the service is the value is not a custom filter\n if (actionMeta.action === 'select-option' && value.value && !value.__isNew__) {\n selectOption(value.value);\n }\n }}\n onInputChange={(value: string | undefined, actionMeta: InputActionMeta) => {\n // Grafana/grafana doesn't have types from react-select, but we need the prevInput to add custom value when user clicks off with active search string\n const meta = actionMeta as InputActionMeta & { prevInputValue: string };\n\n // The user is typing\n if (meta.action === 'input-change') {\n return onChange(value);\n }\n\n // the user closed the menu, with text in search box\n if (meta.action === 'menu-close' && meta.prevInputValue) {\n setCustomOption({\n value: wrapWildcardSearch(meta.prevInputValue),\n label: meta.prevInputValue,\n icon: 'filter',\n __isNew__: true,\n });\n return onChange(meta.prevInputValue);\n }\n }}\n />\n \n );\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n input: css({\n marginBottom: 0,\n }),\n select: css({\n maxWidth: theme.spacing(64),\n minWidth: theme.spacing(20),\n }),\n selectWrapper: css({\n label: 'field-selector-select-wrapper',\n maxWidth: theme.spacing(62.5),\n minWidth: theme.spacing(20),\n marginRight: theme.spacing.x1,\n marginBottom: 0,\n }),\n serviceSceneSelectWrapper: css({\n label: 'service-select-wrapper',\n maxWidth: theme.spacing(62.5),\n minWidth: theme.spacing(20),\n marginRight: theme.spacing.x1,\n marginBottom: 0,\n }),\n };\n}\n","import {\n PanelBuilders,\n SceneComponentProps,\n SceneCSSGridLayout,\n SceneDataProvider,\n SceneDataState,\n SceneFlexItem,\n SceneFlexLayout,\n sceneGraph,\n SceneObject,\n SceneObjectBase,\n SceneObjectState,\n SceneQueryRunner,\n SceneReactObject,\n} from '@grafana/scenes';\nimport { buildDataQuery, renderLogQLFieldFilters, renderLogQLMetadataFilters } from '../../../services/query';\nimport { getSortByPreference } from '../../../services/store';\nimport { DataQueryError, LoadingState } from '@grafana/data';\nimport { LayoutSwitcher } from './LayoutSwitcher';\nimport { getQueryRunner } from '../../../services/panel';\nimport { ByFrameRepeater } from './ByFrameRepeater';\nimport { Alert, DrawStyle, LoadingPlaceholder, useStyles2 } from '@grafana/ui';\nimport {\n buildFieldsQueryString,\n getFilterBreakdownValueScene,\n getParserForField,\n getParserFromFieldsFilters,\n} from '../../../services/fields';\nimport { getLabelValue } from './SortByScene';\nimport { ParserType, VAR_FIELDS, VAR_METADATA } from '../../../services/variables';\nimport React from 'react';\nimport { FIELDS_BREAKDOWN_GRID_TEMPLATE_COLUMNS, FieldsBreakdownScene } from './FieldsBreakdownScene';\nimport { getDetectedFieldsFrame } from '../ServiceScene';\nimport { DEFAULT_SORT_BY } from '../../../services/sorting';\nimport {\n getFieldGroupByVariable,\n getFieldsVariable,\n getLabelsVariable,\n getLevelsVariable,\n getLineFiltersVariable,\n getMetadataVariable,\n getPatternsVariable,\n} from '../../../services/variableGetters';\nimport { LokiQuery } from '../../../services/lokiQuery';\nimport { getPanelWrapperStyles, PanelMenu } from '../../Panels/PanelMenu';\nimport { ValueSummaryPanelScene } from './Panels/ValueSummary';\nimport { areArraysEqual } from '../../../services/comparison';\nimport { logger } from '../../../services/logger';\n\nexport interface FieldValuesBreakdownSceneState extends SceneObjectState {\n body?: (LayoutSwitcher & SceneObject) | (SceneReactObject & SceneObject);\n $data?: SceneDataProvider;\n}\n\nexport class FieldValuesBreakdownScene extends SceneObjectBase {\n constructor(state: Partial) {\n super(state);\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n public static Selector({ model }: SceneComponentProps) {\n const { body } = model.useState();\n if (body instanceof LayoutSwitcher) {\n return <>{body && };\n }\n\n return <>;\n }\n\n public static Component = ({ model }: SceneComponentProps) => {\n const { body } = model.useState();\n const styles = useStyles2(getPanelWrapperStyles);\n if (body) {\n return {body && };\n }\n\n return ;\n };\n\n private getTagKey() {\n const groupByVariable = getFieldGroupByVariable(this);\n return String(groupByVariable.state.value);\n }\n\n onActivate() {\n const query = this.buildQuery();\n\n // Set query runner\n this.setState({\n body: this.build(query),\n $data: this.buildQueryRunner(),\n });\n\n // Subscribe to data query changes\n this._subs.add(\n this.state.$data?.subscribeToState((newState) => {\n this.onValuesDataQueryChange(newState, query);\n })\n );\n\n this.runQuery();\n this.setSubscriptions();\n }\n\n private buildQueryRunner() {\n const query = this.buildQuery();\n return getQueryRunner([query], { runQueriesMode: 'manual' });\n }\n\n /**\n * Builds the LokiQuery for the value breakdown\n */\n private buildQuery() {\n const tagKey = this.getTagKey();\n const fieldsVariable = getFieldsVariable(this);\n const detectedFieldsFrame = getDetectedFieldsFrame(this);\n const queryString = buildFieldsQueryString(tagKey, fieldsVariable, detectedFieldsFrame);\n // Manually interpolate query so we don't pollute the variable interpolation for other queries\n const { variableName, filterExpression } = this.removeFieldLabelFromVariableInterpolation();\n const expression = sceneGraph.interpolate(this, queryString.replace(`$\\{${variableName}}`, filterExpression));\n\n return buildDataQuery(expression, { legendFormat: `{{${tagKey}}}`, refId: tagKey });\n }\n\n /**\n * Sets activation subscriptions\n */\n private setSubscriptions() {\n // Subscribe to time range changes\n this._subs.add(\n sceneGraph.getTimeRange(this).subscribeToState(() => {\n // Run query on time range change\n this.runQuery();\n })\n );\n\n // VARIABLE SUBS\n // Subscribe to line filter changes\n this._subs.add(\n getLineFiltersVariable(this).subscribeToState((newState, prevState) => {\n if (!areArraysEqual(newState.filters, prevState.filters)) {\n this.runQuery();\n }\n })\n );\n\n // Subscribe to pattern filter changes\n this._subs.add(\n getPatternsVariable(this).subscribeToState((newState, prevState) => {\n if (newState.value !== prevState.value) {\n this.runQuery();\n }\n })\n );\n\n // Subscribe to labels variable changes\n this._subs.add(\n getLabelsVariable(this).subscribeToState((newState, prevState) => {\n if (!areArraysEqual(newState.filters, prevState.filters)) {\n this.runQuery();\n }\n })\n );\n\n // Subscribe to levels variable changes\n this._subs.add(\n getLevelsVariable(this).subscribeToState((newState, prevState) => {\n if (!areArraysEqual(newState.filters, prevState.filters)) {\n this.runQuery();\n }\n })\n );\n\n const { parser } = this.getParserForThisField();\n\n if (parser !== 'structuredMetadata') {\n this.setFieldParserSubscriptions();\n } else {\n this.setMetadataParserSubscriptions();\n }\n }\n\n /**\n * Subscribe to variables for metadata breakdowns\n */\n private setMetadataParserSubscriptions() {\n const key = this.getTagKey();\n // Subscribe to any fields change and run the query without change\n this._subs.add(\n getFieldsVariable(this).subscribeToState(async (newState, prevState) => {\n if (!areArraysEqual(newState.filters, prevState.filters)) {\n this.runQuery();\n }\n })\n );\n\n this._subs.add(\n getMetadataVariable(this).subscribeToState(async (newState, prevState) => {\n if (\n !areArraysEqual(\n newState.filters.filter((f) => f.key !== key),\n prevState.filters.filter((f) => f.key !== key)\n )\n ) {\n this.runQuery();\n }\n })\n );\n }\n\n /**\n * Subscribe to variables for field breakdowns\n */\n private setFieldParserSubscriptions() {\n const key = this.getTagKey();\n // Subscribe to any metadata change and run the query without alteration\n this._subs.add(\n getMetadataVariable(this).subscribeToState(async (newState, prevState) => {\n if (!areArraysEqual(newState.filters, prevState.filters)) {\n this.runQuery();\n }\n })\n );\n // Subscribe to fields variable, run the query if the change wasn't for this label\n this._subs.add(\n getFieldsVariable(this).subscribeToState(async (newState, prevState) => {\n if (\n !areArraysEqual(\n newState.filters.filter((f) => f.key !== key),\n prevState.filters.filter((f) => f.key !== key)\n )\n ) {\n this.runQuery();\n }\n })\n );\n }\n\n /**\n * Rebuild the query before running.\n * If so update the query with the new parser and set the parser to state.\n */\n private rebuildQuery() {\n const query = this.buildQuery();\n this.getSceneQueryRunner()?.setState({\n queries: [query],\n });\n }\n\n /**\n * Run the field values breakdown query.\n * Generates the filterExpression excluding all filters with a key that matches the label.\n */\n private runQuery() {\n // Update the filters to exclude the current value so all options are displayed to the user\n this.rebuildQuery();\n const queryRunner = this.getSceneQueryRunner();\n queryRunner?.runQueries();\n }\n\n /**\n * Returns the query runner\n */\n private getSceneQueryRunner() {\n if (this.state.$data) {\n const queryRunners = sceneGraph.findDescendents(this.state.$data, SceneQueryRunner);\n if (queryRunners.length !== 1) {\n const error = new Error('Unable to find query runner in value breakdown!');\n logger.error(error, { msg: 'FieldValuesBreakdownScene: Unable to find query runner in value breakdown!' });\n throw error;\n }\n\n return queryRunners[0];\n }\n logger.warn('FieldValuesBreakdownScene: Query is attempting to execute, but query runner is undefined!');\n return undefined;\n }\n\n /**\n * Sets the expression builder to exclude the current field label\n */\n private removeFieldLabelFromVariableInterpolation() {\n const tagKey = this.getTagKey();\n let filterExpression;\n let variableName: typeof VAR_FIELDS | typeof VAR_METADATA;\n\n // We want the parser for this field, we only need to exclude keys for the variable type that matches this value breakdown\n const parser = this.getQueryParser();\n if (parser === 'structuredMetadata') {\n const metadataVar = getMetadataVariable(this);\n variableName = VAR_METADATA;\n filterExpression = renderLogQLMetadataFilters(metadataVar.state.filters, [tagKey]);\n } else {\n variableName = VAR_FIELDS;\n const fieldsVar = getFieldsVariable(this);\n filterExpression = renderLogQLFieldFilters(fieldsVar.state.filters, [tagKey]);\n }\n\n return { filterExpression, variableName };\n }\n\n /**\n * Actions to run when the value breakdown query response is received.\n */\n private onValuesDataQueryChange(newState: SceneDataState, query: LokiQuery) {\n if (newState.data?.state === LoadingState.Done) {\n if (this.state.body instanceof SceneReactObject) {\n this.setState({\n body: this.build(query),\n });\n }\n }\n if (newState.data?.state === LoadingState.Error) {\n this.setErrorState(newState.data.errors);\n }\n }\n\n /**\n * Sets the error body state\n */\n private setErrorState(errors: DataQueryError[] | undefined) {\n this.setState({\n body: new SceneReactObject({\n reactNode: (\n \n {errors?.map((err, key) => (\n
\n {err.status && (\n <>\n Status: {err.status}
\n \n )}\n {err.message && (\n <>\n Message: {err.message}
\n \n )}\n {err.traceId && (\n <>\n TraceId: {err.traceId}\n \n )}\n
\n ))}\n
\n ),\n }),\n });\n }\n\n /**\n * Builds the layout switcher\n */\n private build(query: LokiQuery) {\n const { optionValue, parser } = this.getParserForThisField();\n const { sortBy, direction } = getSortByPreference('fields', DEFAULT_SORT_BY, 'desc');\n const fieldsBreakdownScene = sceneGraph.getAncestor(this, FieldsBreakdownScene);\n const getFilter = () => fieldsBreakdownScene.state.search.state.filter ?? '';\n\n return new LayoutSwitcher({\n options: [\n { value: 'single', label: 'Single' },\n { value: 'grid', label: 'Grid' },\n { value: 'rows', label: 'Rows' },\n ],\n active: 'grid',\n layouts: [\n // Single\n new SceneFlexLayout({\n direction: 'column',\n children: [\n new SceneReactObject({\n reactNode: ,\n }),\n new SceneFlexItem({\n minHeight: 300,\n body: PanelBuilders.timeseries()\n .setTitle(optionValue)\n // 11.5\n // .setShowMenuAlways(true)\n .setMenu(new PanelMenu({}))\n .build(),\n }),\n ],\n }),\n\n // Grid\n new SceneFlexLayout({\n direction: 'column',\n children: [\n new SceneReactObject({\n reactNode: ,\n }),\n new ValueSummaryPanelScene({ title: optionValue, type: 'field', tagKey: this.getTagKey() }),\n new SceneReactObject({\n reactNode: ,\n }),\n new ByFrameRepeater({\n body: new SceneCSSGridLayout({\n templateColumns: FIELDS_BREAKDOWN_GRID_TEMPLATE_COLUMNS,\n autoRows: '200px',\n children: [\n new SceneFlexItem({\n body: new SceneReactObject({\n reactNode: ,\n }),\n }),\n ],\n isLazy: true,\n }),\n getLayoutChild: getFilterBreakdownValueScene(\n getLabelValue,\n query?.expr.includes('count_over_time') ? DrawStyle.Bars : DrawStyle.Line,\n parser === 'structuredMetadata' ? VAR_METADATA : VAR_FIELDS,\n sceneGraph.getAncestor(this, FieldsBreakdownScene).state.sort,\n optionValue\n ),\n sortBy,\n direction,\n getFilter,\n }),\n ],\n }),\n\n // Rows\n new SceneFlexLayout({\n direction: 'column',\n children: [\n new SceneReactObject({\n reactNode: ,\n }),\n new ValueSummaryPanelScene({ title: optionValue, type: 'field', tagKey: this.getTagKey() }),\n new SceneReactObject({\n reactNode: ,\n }),\n new ByFrameRepeater({\n body: new SceneCSSGridLayout({\n templateColumns: '1fr',\n autoRows: '200px',\n children: [\n new SceneFlexItem({\n body: new SceneReactObject({\n reactNode: ,\n }),\n }),\n ],\n isLazy: true,\n }),\n getLayoutChild: getFilterBreakdownValueScene(\n getLabelValue,\n query?.expr.includes('count_over_time') ? DrawStyle.Bars : DrawStyle.Line,\n parser === 'structuredMetadata' ? VAR_METADATA : VAR_FIELDS,\n sceneGraph.getAncestor(this, FieldsBreakdownScene).state.sort,\n optionValue\n ),\n sortBy,\n direction,\n getFilter,\n }),\n ],\n }),\n ],\n });\n }\n\n /**\n * Gets the parser for the value breakdown\n */\n private getParserForThisField() {\n const groupByVariable = getFieldGroupByVariable(this);\n const optionValue = String(groupByVariable.state.value);\n const parserForThisField = getParserForField(optionValue, this);\n return { optionValue, parser: parserForThisField };\n }\n\n /**\n * Gets the parser needed for fields variables\n */\n private getParserForFields() {\n return getParserFromFieldsFilters(getFieldsVariable(this));\n }\n\n /**\n * Gets the parser needed to run a query for the field variable and the breakdown field\n */\n private getQueryParser(): ParserType {\n const { parser } = this.getParserForThisField();\n const parserForFields = this.getParserForFields();\n\n // If the parser needed to parse this field matches the parser needed to parse the fields\n if (parser === parserForFields) {\n return parserForFields;\n }\n // If there is no parser in the detected_fields frame for this field, let's play it safe and return mixed\n if (parser === undefined) {\n return 'mixed';\n }\n // If the parser for the breakdown field is metadata, return the parser for fields\n if (parser === 'structuredMetadata') {\n return parserForFields;\n }\n // if the parser for fields is metadata, return parser for the breakdown field\n if (parserForFields === 'structuredMetadata') {\n return parser;\n }\n return 'mixed';\n }\n}\n","import {\n PanelBuilders,\n QueryRunnerState,\n SceneComponentProps,\n SceneCSSGridItem,\n SceneCSSGridLayout,\n sceneGraph,\n SceneObjectBase,\n SceneObjectState,\n VizPanel,\n} from '@grafana/scenes';\nimport { ALL_VARIABLE_VALUE, DetectedFieldType, ParserType } from '../../../services/variables';\nimport { buildDataQuery } from '../../../services/query';\nimport { getQueryRunner, setLevelColorOverrides } from '../../../services/panel';\nimport { DrawStyle, LoadingPlaceholder, StackingMode, useStyles2 } from '@grafana/ui';\nimport { LayoutSwitcher } from './LayoutSwitcher';\nimport { FIELDS_BREAKDOWN_GRID_TEMPLATE_COLUMNS, FieldsBreakdownScene } from './FieldsBreakdownScene';\nimport {\n getDetectedFieldsFrame,\n getDetectedFieldsFrameFromQueryRunnerState,\n getDetectedFieldsNamesFromQueryRunnerState,\n getDetectedFieldsParsersFromQueryRunnerState,\n ServiceScene,\n} from '../ServiceScene';\nimport React from 'react';\nimport { SelectLabelActionScene } from './SelectLabelActionScene';\nimport { ValueSlugs } from '../../../services/routing';\nimport { DataFrame, LoadingState } from '@grafana/data';\nimport {\n buildFieldsQueryString,\n extractParserFromArray,\n getDetectedFieldType,\n isAvgField,\n} from '../../../services/fields';\nimport {\n getFieldGroupByVariable,\n getFieldsVariable,\n getValueFromFieldsFilter,\n} from '../../../services/variableGetters';\nimport { AvgFieldPanelType, getPanelWrapperStyles, PanelMenu } from '../../Panels/PanelMenu';\nimport { logger } from '../../../services/logger';\nimport { getPanelOption } from '../../../services/store';\nimport { MAX_NUMBER_OF_TIME_SERIES } from './TimeSeriesLimit';\n\nexport interface FieldsAggregatedBreakdownSceneState extends SceneObjectState {\n body?: LayoutSwitcher;\n}\n\nexport class FieldsAggregatedBreakdownScene extends SceneObjectBase {\n constructor(state: Partial) {\n super(state);\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n private onDetectedFieldsChange = (newState: QueryRunnerState) => {\n if (newState.data?.state === LoadingState.Done) {\n //@todo cardinality looks wrong in API response\n this.updateChildren(newState);\n }\n };\n\n private updateChildren(newState: QueryRunnerState, newParser: ParserType | undefined = undefined) {\n const detectedFieldsFrame = getDetectedFieldsFrameFromQueryRunnerState(newState);\n const newNamesField = getDetectedFieldsNamesFromQueryRunnerState(newState);\n const newParsersField = getDetectedFieldsParsersFromQueryRunnerState(newState);\n const cardinalityMap = this.calculateCardinalityMap(newState);\n\n // Iterate through all the layouts\n this.state.body?.state.layouts.forEach((layout) => {\n if (layout instanceof SceneCSSGridLayout) {\n // populate set of new list of fields\n const newFieldsSet = new Set(newNamesField?.values);\n const updatedChildren = layout.state.children as SceneCSSGridItem[];\n\n // Iterate through all the existing panels\n for (let i = 0; i < updatedChildren.length; i++) {\n const gridItem = layout.state.children[i];\n if (gridItem instanceof SceneCSSGridItem) {\n const panel = gridItem.state.body;\n if (panel instanceof VizPanel) {\n if (newParser) {\n const index = newNamesField?.values.indexOf(panel.state.title);\n const existingParser = index && index !== -1 ? newParsersField?.values[index] : undefined;\n\n // If a new field filter was added that updated the parsers, we'll need to rebuild the query\n if (existingParser !== newParser) {\n const fieldType = getDetectedFieldType(panel.state.title, detectedFieldsFrame);\n const dataTransformer = this.getQueryRunnerForPanel(\n panel.state.title,\n detectedFieldsFrame,\n fieldType\n );\n panel.setState({\n $data: dataTransformer,\n });\n }\n }\n\n if (newFieldsSet.has(panel.state.title)) {\n // If the new response has this field, delete it from the set, but leave it in the layout\n newFieldsSet.delete(panel.state.title);\n } else {\n // Otherwise if the panel doesn't exist in the response, delete it from the layout\n updatedChildren.splice(i, 1);\n // And make sure to update the index, or we'll skip the next one\n i--;\n }\n } else {\n logger.warn('panel is not VizPanel!');\n }\n } else {\n logger.warn('gridItem is not SceneCSSGridItem');\n }\n }\n\n const fieldsToAdd = Array.from(newFieldsSet);\n const options = fieldsToAdd.map((fieldName) => fieldName);\n\n updatedChildren.push(...this.buildChildren(options));\n updatedChildren.sort(this.sortChildren(cardinalityMap));\n\n updatedChildren.map((child) => {\n this.subscribeToPanel(child);\n });\n\n layout.setState({\n children: updatedChildren,\n });\n } else {\n logger.warn('Layout is not SceneCSSGridLayout');\n }\n });\n }\n\n private sortChildren(cardinalityMap: Map) {\n return (a: SceneCSSGridItem, b: SceneCSSGridItem) => {\n const aPanel = a.state.body as VizPanel;\n const bPanel = b.state.body as VizPanel;\n const aCardinality = cardinalityMap.get(aPanel.state.title) ?? 0;\n const bCardinality = cardinalityMap.get(bPanel.state.title) ?? 0;\n return bCardinality - aCardinality;\n };\n }\n\n private calculateCardinalityMap(newState?: QueryRunnerState) {\n const detectedFieldsFrame = getDetectedFieldsFrameFromQueryRunnerState(newState);\n const cardinalityMap = new Map();\n if (detectedFieldsFrame?.length) {\n for (let i = 0; i < detectedFieldsFrame?.length; i++) {\n const name: string = detectedFieldsFrame.fields[0].values[i];\n const cardinality: number = detectedFieldsFrame.fields[1].values[i];\n cardinalityMap.set(name, cardinality);\n }\n }\n return cardinalityMap;\n }\n\n onActivate() {\n this.setState({\n body: this.build(),\n });\n\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n if (serviceScene.state.fieldsCount === undefined) {\n this.updateFieldCount();\n }\n\n this._subs.add(serviceScene.state.$detectedFieldsData?.subscribeToState(this.onDetectedFieldsChange));\n this._subs.add(this.subscribeToFieldsVar());\n }\n\n private subscribeToFieldsVar() {\n const fieldsVar = getFieldsVariable(this);\n\n return fieldsVar.subscribeToState((newState, prevState) => {\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n const newParsers = newState.filters.map((f) => getValueFromFieldsFilter(f).parser);\n const oldParsers = prevState.filters.map((f) => getValueFromFieldsFilter(f).parser);\n\n const newParser = extractParserFromArray(newParsers);\n const oldParser = extractParserFromArray(oldParsers);\n\n if (newParser !== oldParser) {\n const detectedFieldsState = serviceScene.state.$detectedFieldsData?.state;\n if (detectedFieldsState) {\n this.updateChildren(detectedFieldsState, newParser);\n }\n }\n });\n }\n\n public build() {\n const groupByVariable = getFieldGroupByVariable(this);\n const options = groupByVariable.state.options.map((opt) => String(opt.value));\n\n const fieldsBreakdownScene = sceneGraph.getAncestor(this, FieldsBreakdownScene);\n fieldsBreakdownScene.state.search.reset();\n\n const children = this.buildChildren(options);\n\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n const cardinalityMap = this.calculateCardinalityMap(serviceScene.state.$detectedFieldsData?.state);\n children.sort(this.sortChildren(cardinalityMap));\n const childrenClones = children.map((child) => child.clone());\n\n // We must subscribe to the data providers for all children after the clone, or we'll see bugs in the row layout\n [...children, ...childrenClones].map((child) => {\n this.subscribeToPanel(child);\n });\n\n return new LayoutSwitcher({\n options: [\n { value: 'grid', label: 'Grid' },\n { value: 'rows', label: 'Rows' },\n ],\n active: 'grid',\n layouts: [\n new SceneCSSGridLayout({\n templateColumns: FIELDS_BREAKDOWN_GRID_TEMPLATE_COLUMNS,\n autoRows: '200px',\n children: children,\n isLazy: true,\n }),\n new SceneCSSGridLayout({\n templateColumns: '1fr',\n autoRows: '200px',\n children: childrenClones,\n isLazy: true,\n }),\n ],\n });\n }\n\n private subscribeToPanel(child: SceneCSSGridItem) {\n const panel = child.state.body as VizPanel | undefined;\n if (panel) {\n this._subs.add(\n panel?.state.$data?.getResultsStream().subscribe((result) => {\n if (result.data.errors && result.data.errors.length > 0) {\n child.setState({ isHidden: true });\n this.updateFieldCount();\n }\n })\n );\n }\n }\n\n public rebuildAvgFields() {\n const detectedFieldsFrame = getDetectedFieldsFrame(this);\n const activeLayout = this.getActiveGridLayouts();\n const children: SceneCSSGridItem[] = [];\n const panelType =\n getPanelOption('panelType', [AvgFieldPanelType.histogram, AvgFieldPanelType.timeseries]) ??\n AvgFieldPanelType.timeseries;\n\n activeLayout?.state.children.forEach((child) => {\n if (child instanceof SceneCSSGridItem && !child.state.isHidden) {\n const panels = sceneGraph.findDescendents(child, VizPanel);\n if (panels.length) {\n // Will only be one panel as a child of CSSGridItem\n const panel = panels[0];\n const labelName = panel.state.title;\n const fieldType = getDetectedFieldType(labelName, detectedFieldsFrame);\n if (isAvgField(fieldType)) {\n const newChild = this.buildChild(labelName, detectedFieldsFrame, panelType);\n if (newChild) {\n children.push(newChild);\n }\n } else {\n children.push(child);\n }\n }\n }\n });\n\n if (children.length) {\n activeLayout?.setState({\n children,\n });\n }\n }\n\n private buildChildren(options: string[]): SceneCSSGridItem[] {\n const children: SceneCSSGridItem[] = [];\n const detectedFieldsFrame = getDetectedFieldsFrame(this);\n const panelType =\n getPanelOption('panelType', [AvgFieldPanelType.timeseries, AvgFieldPanelType.histogram]) ??\n AvgFieldPanelType.timeseries;\n for (const option of options) {\n if (option === ALL_VARIABLE_VALUE || !option) {\n continue;\n }\n\n const child = this.buildChild(option, detectedFieldsFrame, panelType);\n if (child) {\n children.push(child);\n }\n }\n return children;\n }\n\n private buildChild(labelName: string, detectedFieldsFrame: DataFrame | undefined, panelType?: AvgFieldPanelType) {\n if (labelName === ALL_VARIABLE_VALUE || !labelName) {\n return;\n }\n\n const fieldType = getDetectedFieldType(labelName, detectedFieldsFrame);\n const dataTransformer = this.getQueryRunnerForPanel(labelName, detectedFieldsFrame, fieldType);\n let body;\n\n const headerActions = [];\n if (!isAvgField(fieldType)) {\n body = PanelBuilders.timeseries()\n .setTitle(labelName)\n .setData(dataTransformer)\n .setMenu(new PanelMenu({ investigationOptions: { labelName: labelName } }))\n .setCustomFieldConfig('stacking', { mode: StackingMode.Normal })\n .setCustomFieldConfig('fillOpacity', 100)\n .setCustomFieldConfig('lineWidth', 0)\n .setCustomFieldConfig('pointSize', 0)\n .setCustomFieldConfig('drawStyle', DrawStyle.Bars)\n .setOverrides(setLevelColorOverrides);\n headerActions.push(new SelectLabelActionScene({ labelName: String(labelName), fieldType: ValueSlugs.field }));\n } else {\n if (panelType === 'histogram') {\n body = PanelBuilders.histogram();\n } else {\n body = PanelBuilders.timeseries();\n }\n body\n .setTitle(labelName)\n .setData(dataTransformer)\n .setMenu(new PanelMenu({ investigationOptions: { labelName: labelName }, panelType }));\n headerActions.push(\n new SelectLabelActionScene({\n labelName: String(labelName),\n hideValueDrilldown: true,\n fieldType: ValueSlugs.field,\n })\n );\n }\n body.setHeaderActions(headerActions);\n body.setSeriesLimit(MAX_NUMBER_OF_TIME_SERIES);\n // 11.5\n // body.setShowMenuAlways(true);\n\n const viz = body.build();\n return new SceneCSSGridItem({\n body: viz,\n });\n }\n\n private getQueryRunnerForPanel(\n optionValue: string,\n detectedFieldsFrame: DataFrame | undefined,\n fieldType?: DetectedFieldType\n ) {\n const fieldsVariable = getFieldsVariable(this);\n const queryString = buildFieldsQueryString(optionValue, fieldsVariable, detectedFieldsFrame);\n const query = buildDataQuery(queryString, {\n legendFormat: isAvgField(fieldType) ? optionValue : `{{${optionValue}}}`,\n refId: optionValue,\n });\n\n return getQueryRunner([query]);\n }\n\n private getActiveGridLayouts() {\n return (this.state.body?.state.layouts.find((l) => l.isActive) ?? this.state.body?.state.layouts[0]) as\n | SceneCSSGridLayout\n | undefined;\n }\n\n private updateFieldCount() {\n const activeLayout = this.getActiveGridLayouts();\n const activeLayoutChildren = activeLayout?.state.children as SceneCSSGridItem[] | undefined;\n const activePanels = activeLayoutChildren?.filter((child) => !child.state.isHidden);\n\n const fieldsBreakdownScene = sceneGraph.getAncestor(this, FieldsBreakdownScene);\n fieldsBreakdownScene.state.changeFieldCount?.(activePanels?.length ?? 0);\n }\n\n public static Selector({ model }: SceneComponentProps) {\n const { body } = model.useState();\n return <>{body && };\n }\n\n public static Component = ({ model }: SceneComponentProps) => {\n const { body } = model.useState();\n const styles = useStyles2(getPanelWrapperStyles);\n if (body) {\n return {body && };\n }\n\n return ;\n };\n}\n","import { css } from '@emotion/css';\nimport React from 'react';\n\nimport { DataFrame, GrafanaTheme2, LoadingState } from '@grafana/data';\nimport {\n QueryRunnerState,\n SceneComponentProps,\n sceneGraph,\n SceneObject,\n SceneObjectBase,\n SceneObjectState,\n SceneVariableSet,\n VariableDependencyConfig,\n VariableValueOption,\n} from '@grafana/scenes';\nimport { useStyles2 } from '@grafana/ui';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from 'services/analytics';\nimport { getSortByPreference } from 'services/store';\nimport { ALL_VARIABLE_VALUE, VAR_FIELD_GROUP_BY, VAR_LABELS } from 'services/variables';\nimport { areArraysEqual } from '../../../services/comparison';\nimport { CustomConstantVariable, CustomConstantVariableState } from '../../../services/CustomConstantVariable';\nimport { navigateToValueBreakdown } from '../../../services/navigate';\nimport { checkPrimaryLabel, getPrimaryLabelFromUrl, ValueSlugs } from '../../../services/routing';\nimport { DEFAULT_SORT_BY } from '../../../services/sorting';\nimport { IndexScene } from '../../IndexScene/IndexScene';\nimport { getDetectedFieldsFrame, ServiceScene } from '../ServiceScene';\nimport { BreakdownSearchReset, BreakdownSearchScene } from './BreakdownSearchScene';\nimport { ByFrameRepeater } from './ByFrameRepeater';\nimport { FieldsAggregatedBreakdownScene } from './FieldsAggregatedBreakdownScene';\nimport { FieldSelector } from './FieldSelector';\nimport { FieldValuesBreakdownScene } from './FieldValuesBreakdownScene';\nimport { LayoutSwitcher } from './LayoutSwitcher';\nimport { SortByScene, SortCriteriaChanged } from './SortByScene';\nimport { StatusWrapper } from './StatusWrapper';\nimport { getFieldOptions } from 'services/filters';\nimport { EmptyLayoutScene } from './EmptyLayoutScene';\nimport { getFieldGroupByVariable, getLabelsVariable } from '../../../services/variableGetters';\nimport { NoMatchingLabelsScene } from './NoMatchingLabelsScene';\nimport { clearVariables, getVariablesThatCanBeCleared } from '../../../services/variableHelpers';\n\nexport const averageFields = ['duration', 'count', 'total', 'bytes'];\nexport const FIELDS_BREAKDOWN_GRID_TEMPLATE_COLUMNS = 'repeat(auto-fit, minmax(400px, 1fr))';\n\nexport interface FieldsBreakdownSceneState extends SceneObjectState {\n body?:\n | (NoMatchingLabelsScene & SceneObject)\n | (FieldsAggregatedBreakdownScene & SceneObject)\n | (FieldValuesBreakdownScene & SceneObject)\n | (EmptyLayoutScene & SceneObject);\n search: BreakdownSearchScene;\n sort: SortByScene;\n value?: string;\n loading?: boolean;\n error?: string;\n blockingMessage?: string;\n changeFieldCount?: (n: number) => void;\n}\n\nexport class FieldsBreakdownScene extends SceneObjectBase {\n protected _variableDependency = new VariableDependencyConfig(this, {\n variableNames: [VAR_LABELS],\n });\n\n constructor(state: Partial & { options?: VariableValueOption[]; value?: string }) {\n super({\n $variables:\n state.$variables ??\n new SceneVariableSet({\n variables: [\n new CustomConstantVariable({\n name: VAR_FIELD_GROUP_BY,\n defaultToAll: false,\n includeAll: true,\n value: state.value ?? ALL_VARIABLE_VALUE,\n options: state.options ?? [],\n }),\n ],\n }),\n loading: true,\n sort: new SortByScene({ target: 'fields' }),\n search: new BreakdownSearchScene('fields'),\n value: state.value ?? ALL_VARIABLE_VALUE,\n ...state,\n });\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n private onActivate() {\n const groupByVariable = getFieldGroupByVariable(this);\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n\n this.setState({\n loading: serviceScene.state.$detectedLabelsData?.state.data?.state !== LoadingState.Done,\n });\n\n // Subscriptions\n this._subs.add(\n this.subscribeToEvent(BreakdownSearchReset, () => {\n this.state.search.clearValueFilter();\n })\n );\n this._subs.add(this.subscribeToEvent(SortCriteriaChanged, this.handleSortByChange));\n this._subs.add(groupByVariable.subscribeToState(this.variableChanged));\n\n this._subs.add(\n getLabelsVariable(this).subscribeToState((newState, prevState) => {\n const variable = getFieldGroupByVariable(this);\n let { labelName } = getPrimaryLabelFromUrl();\n\n const newService = newState.filters.find((filter) => filter.key === labelName);\n const prevService = prevState.filters.find((filter) => filter.key === labelName);\n\n // If the user changes the primary label\n if (variable.state.value === ALL_VARIABLE_VALUE && newService !== prevService) {\n this.setState({\n loading: true,\n body: undefined,\n });\n }\n })\n );\n\n this._subs.add(\n serviceScene.state.$detectedFieldsData?.subscribeToState(\n (newState: QueryRunnerState, oldState: QueryRunnerState) => {\n if (newState.data?.state === LoadingState.Done) {\n if (newState.data.series?.[0]) {\n this.updateOptions(newState.data.series?.[0]);\n }\n }\n }\n )\n );\n\n const detectedFieldsFrame = getDetectedFieldsFrame(this);\n // Need to update labels with current state\n if (detectedFieldsFrame) {\n this.updateOptions(detectedFieldsFrame);\n }\n\n checkPrimaryLabel(this);\n }\n\n private variableChanged = (newState: CustomConstantVariableState, oldState: CustomConstantVariableState) => {\n if (\n newState.value !== oldState.value ||\n !areArraysEqual(newState.options, oldState.options) ||\n this.state.body === undefined ||\n this.state.body instanceof EmptyLayoutScene ||\n this.state.body instanceof NoMatchingLabelsScene\n ) {\n this.updateBody(newState);\n }\n };\n\n private updateOptions(dataFrame: DataFrame) {\n if (!dataFrame || !dataFrame.length) {\n const indexScene = sceneGraph.getAncestor(this, IndexScene);\n const variablesToClear = getVariablesThatCanBeCleared(indexScene);\n\n let body;\n if (variablesToClear.length > 1) {\n this.state.changeFieldCount?.(0);\n body = new NoMatchingLabelsScene({ clearCallback: () => clearVariables(this) });\n } else {\n body = new EmptyLayoutScene({ type: 'fields' });\n }\n this.setState({\n loading: false,\n body,\n });\n return;\n }\n\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n const variable = getFieldGroupByVariable(this);\n variable.setState({\n options: getFieldOptions(dataFrame.fields[0].values.map((v) => String(v))),\n loading: false,\n value: serviceScene.state.drillDownLabel ?? ALL_VARIABLE_VALUE,\n });\n this.setState({\n loading: false,\n });\n }\n\n private handleSortByChange = (event: SortCriteriaChanged) => {\n if (event.target !== 'fields') {\n return;\n }\n\n const body = this.state.body;\n if (body instanceof FieldValuesBreakdownScene && body.state.body instanceof LayoutSwitcher) {\n body.state.body?.state.layouts.forEach((layout) => {\n const byFrameRepeater = sceneGraph.findDescendents(body, ByFrameRepeater);\n byFrameRepeater.forEach((r) => r.sort(event.sortBy, event.direction));\n });\n }\n reportAppInteraction(\n USER_EVENTS_PAGES.service_details,\n USER_EVENTS_ACTIONS.service_details.value_breakdown_sort_change,\n {\n target: 'fields',\n criteria: event.sortBy,\n direction: event.direction,\n }\n );\n };\n\n private updateBody(newState: CustomConstantVariableState) {\n const fieldsVariable = getFieldGroupByVariable(this);\n\n // We get the labels from the service scene, if we don't have them yet, assume we're loading\n if (!fieldsVariable.state.options || !fieldsVariable.state.options.length) {\n return;\n }\n\n const stateUpdate: Partial = {};\n\n if (fieldsVariable.state.options && fieldsVariable.state.options.length <= 1) {\n // If there's 1 or fewer fields build the empty or clear layout UI\n const indexScene = sceneGraph.getAncestor(this, IndexScene);\n const variablesToClear = getVariablesThatCanBeCleared(indexScene);\n\n if (variablesToClear.length > 1) {\n this.state.changeFieldCount?.(0);\n stateUpdate.body = new NoMatchingLabelsScene({ clearCallback: () => clearVariables(this) });\n } else {\n stateUpdate.body = new EmptyLayoutScene({ type: 'fields' });\n }\n } else {\n // Otherwise update the body, but don't re-instantiate if it's already the right class\n if (newState.value === ALL_VARIABLE_VALUE && this.state.body instanceof FieldValuesBreakdownScene) {\n stateUpdate.body = new FieldsAggregatedBreakdownScene({});\n } else if (newState.value !== ALL_VARIABLE_VALUE && this.state.body instanceof FieldsAggregatedBreakdownScene) {\n stateUpdate.body = new FieldValuesBreakdownScene({});\n } else if (\n // If the body hasn't been created, or the no-data views are active, we want to replace and render the correct scene\n this.state.body === undefined ||\n this.state.body instanceof EmptyLayoutScene ||\n this.state.body instanceof NoMatchingLabelsScene\n ) {\n stateUpdate.body =\n newState.value === ALL_VARIABLE_VALUE\n ? new FieldsAggregatedBreakdownScene({})\n : new FieldValuesBreakdownScene({});\n }\n }\n\n this.setState(stateUpdate);\n }\n public onFieldSelectorChange = (value?: string) => {\n if (!value) {\n return;\n }\n\n const variable = getFieldGroupByVariable(this);\n const { sortBy, direction } = getSortByPreference('fields', DEFAULT_SORT_BY, 'desc');\n\n reportAppInteraction(\n USER_EVENTS_PAGES.service_details,\n USER_EVENTS_ACTIONS.service_details.select_field_in_breakdown_clicked,\n {\n field: value,\n previousField: variable.getValueText(),\n view: 'fields',\n sortBy,\n sortByDirection: direction,\n }\n );\n\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n navigateToValueBreakdown(ValueSlugs.field, value, serviceScene);\n };\n\n public static LabelsMenu = ({ model }: SceneComponentProps) => {\n const { body, loading, search } = model.useState();\n const styles = useStyles2(getStyles);\n const variable = getFieldGroupByVariable(model);\n const { options, value } = variable.useState();\n return (\n
\n {body instanceof FieldsAggregatedBreakdownScene && }\n {body instanceof FieldValuesBreakdownScene && }\n {body instanceof FieldValuesBreakdownScene && }\n {!loading && options.length > 1 && (\n \n )}\n
\n );\n };\n public static ValuesMenu = ({ model }: SceneComponentProps) => {\n const { loading, sort } = model.useState();\n const styles = useStyles2(getStyles);\n const variable = getFieldGroupByVariable(model);\n const { value } = variable.useState();\n return (\n
\n {!loading && value !== ALL_VARIABLE_VALUE && (\n <>\n \n \n )}\n
\n );\n };\n\n public static Component = ({ model }: SceneComponentProps) => {\n const { body, loading, blockingMessage } = model.useState();\n const styles = useStyles2(getStyles);\n\n return (\n
\n \n {body instanceof FieldsAggregatedBreakdownScene && model && }\n
{body && }
\n
\n
\n );\n };\n}\n\nexport const emptyStateStyles = {\n link: css({\n textDecoration: 'underline',\n }),\n button: css({\n marginLeft: '1.5rem',\n }),\n};\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n container: css({\n flexGrow: 1,\n display: 'flex',\n minHeight: '100%',\n flexDirection: 'column',\n gap: theme.spacing(1),\n }),\n content: css({\n flexGrow: 1,\n display: 'flex',\n paddingTop: theme.spacing(0),\n }),\n labelsMenuWrapper: css({\n flexGrow: 0,\n display: 'flex',\n alignItems: 'top',\n justifyContent: 'space-between',\n flexDirection: 'row-reverse',\n gap: theme.spacing(2),\n }),\n valuesMenuWrapper: css({\n flexGrow: 0,\n display: 'flex',\n alignItems: 'top',\n gap: theme.spacing(2),\n flexDirection: 'row',\n }),\n };\n}\n","import {\n PanelBuilders,\n SceneComponentProps,\n SceneCSSGridItem,\n SceneCSSGridLayout,\n SceneDataProvider,\n sceneGraph,\n SceneObjectBase,\n SceneObjectState,\n SceneQueryRunner,\n VariableValueOption,\n VizPanel,\n} from '@grafana/scenes';\nimport { LayoutSwitcher } from './LayoutSwitcher';\nimport { DrawStyle, LoadingPlaceholder, StackingMode, useStyles2 } from '@grafana/ui';\nimport { getQueryRunner, setLevelColorOverrides } from '../../../services/panel';\nimport { ALL_VARIABLE_VALUE, LEVEL_VARIABLE_VALUE } from '../../../services/variables';\nimport React from 'react';\nimport { LabelBreakdownScene } from './LabelBreakdownScene';\nimport { SelectLabelActionScene } from './SelectLabelActionScene';\nimport { ValueSlugs } from '../../../services/routing';\nimport { buildLabelsQuery, LABEL_BREAKDOWN_GRID_TEMPLATE_COLUMNS } from '../../../services/labels';\nimport { getFieldsVariable, getLabelGroupByVariable } from '../../../services/variableGetters';\nimport { ServiceScene } from '../ServiceScene';\nimport { DataFrame, LoadingState } from '@grafana/data';\nimport { getPanelWrapperStyles, PanelMenu } from '../../Panels/PanelMenu';\nimport { MAX_NUMBER_OF_TIME_SERIES } from './TimeSeriesLimit';\n\nexport interface LabelsAggregatedBreakdownSceneState extends SceneObjectState {\n body?: LayoutSwitcher;\n}\n\nexport class LabelsAggregatedBreakdownScene extends SceneObjectBase {\n constructor(state: Partial) {\n super({\n ...state,\n });\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n onActivate() {\n const fields = getFieldsVariable(this);\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n const $detectedLabels = serviceScene.state.$detectedLabelsData;\n\n // If the body hasn't been built yet, build it\n if (!this.state.body) {\n this.setState({\n body: this.build(),\n });\n }\n // Otherwise if we have the detected labels done loading, update the body\n else if ($detectedLabels?.state.data?.state === LoadingState.Done) {\n this.update($detectedLabels?.state.data.series[0]);\n }\n\n this._subs.add(\n $detectedLabels?.subscribeToState((newState, prevState) => {\n if (newState.data?.state === LoadingState.Done) {\n this.update(newState.data.series[0]);\n }\n })\n );\n\n this._subs.add(\n fields.subscribeToState(() => {\n this.updateQueriesOnFieldsVariableChange();\n })\n );\n }\n\n private updateQueriesOnFieldsVariableChange = () => {\n this.state.body?.state.layouts.forEach((layoutObj) => {\n const layout = layoutObj as SceneCSSGridLayout;\n // Iterate through the existing panels\n for (let i = 0; i < layout.state.children.length; i++) {\n const { panel, title } = this.getPanelByIndex(layout, i);\n const queryRunner: SceneDataProvider | SceneQueryRunner | undefined = panel.state.$data;\n const query = buildLabelsQuery(this, title, title);\n\n // Don't update if query didn't change\n if (queryRunner instanceof SceneQueryRunner) {\n if (query.expr === queryRunner?.state.queries?.[0]?.expr) {\n break;\n }\n }\n\n panel.setState({\n $data: getQueryRunner([query]),\n });\n }\n });\n };\n\n private getPanelByIndex(layout: SceneCSSGridLayout, i: number) {\n const gridItem = layout.state.children[i] as SceneCSSGridItem;\n const panel = gridItem.state.body as VizPanel;\n\n const title = panel.state.title;\n return { panel, title };\n }\n\n private update(detectedLabelsFrame: DataFrame) {\n const variable = getLabelGroupByVariable(this);\n const newLabels = variable.state.options.filter((opt) => opt.value !== ALL_VARIABLE_VALUE).map((opt) => opt.label);\n\n this.state.body?.state.layouts.forEach((layoutObj) => {\n let existingLabels = [];\n const layout = layoutObj as SceneCSSGridLayout;\n const newLabelsSet = new Set(newLabels);\n const updatedChildren = layout.state.children as SceneCSSGridItem[];\n\n for (let i = 0; i < updatedChildren.length; i++) {\n const { title } = this.getPanelByIndex(layout, i);\n\n if (newLabelsSet.has(title)) {\n // If the new response has this field, delete it from the set, but leave it in the layout\n newLabelsSet.delete(title);\n } else {\n // Otherwise if the panel doesn't exist in the response, delete it from the layout\n updatedChildren.splice(i, 1);\n // And make sure to update the index, or we'll skip the next one\n i--;\n }\n existingLabels.push(title);\n }\n\n const labelsToAdd = Array.from(newLabelsSet);\n\n const options = labelsToAdd.map((fieldName) => {\n return {\n label: fieldName,\n value: fieldName,\n };\n });\n\n updatedChildren.push(...this.buildChildren(options));\n\n const cardinalityMap = this.calculateCardinalityMap(detectedLabelsFrame);\n updatedChildren.sort(this.sortChildren(cardinalityMap));\n\n layout.setState({\n children: updatedChildren,\n });\n });\n }\n\n private calculateCardinalityMap(detectedLabels?: DataFrame) {\n const cardinalityMap = new Map();\n if (detectedLabels?.length) {\n for (let i = 0; i < detectedLabels?.fields.length; i++) {\n const name: string = detectedLabels.fields[i].name;\n const cardinality: number = detectedLabels.fields[i].values[0];\n cardinalityMap.set(name, cardinality);\n }\n }\n return cardinalityMap;\n }\n\n private build(): LayoutSwitcher {\n const variable = getLabelGroupByVariable(this);\n const labelBreakdownScene = sceneGraph.getAncestor(this, LabelBreakdownScene);\n labelBreakdownScene.state.search.reset();\n\n const children = this.buildChildren(variable.state.options);\n\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n const $detectedLabels = serviceScene.state.$detectedLabelsData;\n if ($detectedLabels?.state.data?.state === LoadingState.Done) {\n const cardinalityMap = this.calculateCardinalityMap($detectedLabels?.state.data.series[0]);\n children.sort(this.sortChildren(cardinalityMap));\n }\n\n const childrenClones = children.map((child) => child.clone());\n\n return new LayoutSwitcher({\n options: [\n { value: 'grid', label: 'Grid' },\n { value: 'rows', label: 'Rows' },\n ],\n active: 'grid',\n layouts: [\n new SceneCSSGridLayout({\n isLazy: true,\n templateColumns: LABEL_BREAKDOWN_GRID_TEMPLATE_COLUMNS,\n autoRows: '200px',\n children: children,\n }),\n new SceneCSSGridLayout({\n isLazy: true,\n templateColumns: '1fr',\n autoRows: '200px',\n children: childrenClones,\n }),\n ],\n });\n }\n\n private buildChildren(options: VariableValueOption[]) {\n const children: SceneCSSGridItem[] = [];\n for (const option of options) {\n const { value } = option;\n const optionValue = String(value);\n if (value === ALL_VARIABLE_VALUE || !value) {\n continue;\n }\n const query = buildLabelsQuery(this, String(option.value), String(option.value));\n const queryRunner = getQueryRunner([query]);\n\n children.push(\n new SceneCSSGridItem({\n body: PanelBuilders.timeseries()\n .setTitle(optionValue)\n .setData(queryRunner)\n .setHeaderActions([new SelectLabelActionScene({ labelName: optionValue, fieldType: ValueSlugs.label })])\n .setCustomFieldConfig('stacking', { mode: StackingMode.Normal })\n .setCustomFieldConfig('fillOpacity', 100)\n .setCustomFieldConfig('lineWidth', 0)\n .setCustomFieldConfig('pointSize', 0)\n .setCustomFieldConfig('drawStyle', DrawStyle.Bars)\n .setHoverHeader(false)\n // 11.5\n // .setShowMenuAlways(true)\n .setOverrides(setLevelColorOverrides)\n .setMenu(new PanelMenu({ investigationOptions: { labelName: optionValue } }))\n .setSeriesLimit(MAX_NUMBER_OF_TIME_SERIES)\n .build(),\n })\n );\n }\n return children;\n }\n\n private sortChildren(cardinalityMap: Map) {\n return (a: SceneCSSGridItem, b: SceneCSSGridItem) => {\n const aPanel = a.state.body as VizPanel;\n const bPanel = b.state.body as VizPanel;\n if (aPanel.state.title === LEVEL_VARIABLE_VALUE) {\n return -1;\n }\n if (bPanel.state.title === LEVEL_VARIABLE_VALUE) {\n return 1;\n }\n const aCardinality = cardinalityMap.get(aPanel.state.title) ?? 0;\n const bCardinality = cardinalityMap.get(bPanel.state.title) ?? 0;\n return bCardinality - aCardinality;\n };\n }\n\n public static Selector({ model }: SceneComponentProps) {\n const { body } = model.useState();\n return <>{body && };\n }\n\n public static Component = ({ model }: SceneComponentProps) => {\n const { body } = model.useState();\n const styles = useStyles2(getPanelWrapperStyles);\n\n if (body) {\n return {body && };\n }\n\n return ;\n };\n}\n","import { css } from '@emotion/css';\nimport React from 'react';\n\nimport { AdHocVariableFilter, DataFrame, GrafanaTheme2, LoadingState } from '@grafana/data';\nimport {\n QueryRunnerState,\n SceneComponentProps,\n sceneGraph,\n SceneObject,\n SceneObjectBase,\n SceneObjectState,\n SceneVariableSet,\n SceneVariableState,\n VariableDependencyConfig,\n VariableValueOption,\n} from '@grafana/scenes';\nimport { Alert, useStyles2 } from '@grafana/ui';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from 'services/analytics';\nimport { checkPrimaryLabel, getPrimaryLabelFromUrl, ValueSlugs } from 'services/routing';\nimport { ALL_VARIABLE_VALUE, SERVICE_NAME, SERVICE_UI_LABEL, VAR_LABEL_GROUP_BY, VAR_LABELS } from 'services/variables';\nimport { ByFrameRepeater } from './ByFrameRepeater';\nimport { FieldSelector } from './FieldSelector';\nimport { StatusWrapper } from './StatusWrapper';\nimport { getLabelOptions } from 'services/filters';\nimport { BreakdownSearchReset, BreakdownSearchScene } from './BreakdownSearchScene';\nimport { getSortByPreference } from 'services/store';\nimport { SortByScene, SortCriteriaChanged } from './SortByScene';\nimport { getDetectedLabelsFrame, ServiceScene } from '../ServiceScene';\nimport { CustomConstantVariable, CustomConstantVariableState } from '../../../services/CustomConstantVariable';\nimport { navigateToValueBreakdown } from '../../../services/navigate';\nimport { areArraysEqual } from '../../../services/comparison';\nimport { LabelValuesBreakdownScene } from './LabelValuesBreakdownScene';\nimport { LabelsAggregatedBreakdownScene } from './LabelsAggregatedBreakdownScene';\nimport { DEFAULT_SORT_BY } from '../../../services/sorting';\nimport { EmptyLayoutScene } from './EmptyLayoutScene';\nimport { getLabelGroupByVariable, getLabelsVariable } from '../../../services/variableGetters';\n\nexport interface LabelBreakdownSceneState extends SceneObjectState {\n body?: SceneObject;\n search: BreakdownSearchScene;\n sort: SortByScene;\n loading?: boolean;\n error?: boolean;\n blockingMessage?: string;\n // We have to store the value in state because scenes doesn't allow variables that don't have options. We need to hold on to this until the API call getting values is done, and then reset the state\n value?: string;\n}\n\nexport class LabelBreakdownScene extends SceneObjectBase {\n protected _variableDependency = new VariableDependencyConfig(this, {\n variableNames: [VAR_LABELS],\n });\n\n // Labels/options can be passed in when instantiated, but should ONLY exist on the state of the variable\n constructor(state: Partial & { options?: VariableValueOption[]; value?: string }) {\n super({\n ...state,\n $variables:\n state.$variables ??\n new SceneVariableSet({\n variables: [\n new CustomConstantVariable({\n name: VAR_LABEL_GROUP_BY,\n defaultToAll: false,\n includeAll: true,\n value: state.value ?? ALL_VARIABLE_VALUE,\n options: state.options ?? [],\n }),\n ],\n }),\n loading: true,\n sort: new SortByScene({ target: 'labels' }),\n search: new BreakdownSearchScene('labels'),\n value: state.value,\n });\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n private onActivate() {\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n const groupByVariable = getLabelGroupByVariable(this);\n\n this.setState({\n loading: serviceScene.state.$detectedLabelsData?.state.data?.state !== LoadingState.Done,\n error: serviceScene.state.$detectedLabelsData?.state.data?.state === LoadingState.Error,\n });\n\n this._subs.add(\n this.subscribeToEvent(BreakdownSearchReset, () => {\n this.state.search.clearValueFilter();\n })\n );\n this._subs.add(this.subscribeToEvent(SortCriteriaChanged, this.handleSortByChange));\n\n this._subs.add(serviceScene.state.$detectedLabelsData?.subscribeToState(this.onDetectedLabelsDataChange));\n\n this._subs.add(\n getLabelsVariable(this).subscribeToState((newState, prevState) => {\n this.onLabelsVariableChange(newState, prevState);\n })\n );\n\n this._subs.add(\n groupByVariable.subscribeToState((newState, prevState) => {\n this.onGroupByVariableChange(newState, prevState);\n })\n );\n\n const detectedLabelsFrame = getDetectedLabelsFrame(this);\n // Need to update labels with current state\n if (detectedLabelsFrame) {\n this.updateOptions(detectedLabelsFrame);\n }\n\n checkPrimaryLabel(this);\n }\n\n private onGroupByVariableChange(newState: CustomConstantVariableState, prevState: CustomConstantVariableState) {\n // If the aggregation value changed, or the body is not yet defined\n if (\n newState.value !== prevState.value ||\n !areArraysEqual(newState.options, prevState.options) ||\n this.state.body === undefined ||\n this.state.body instanceof EmptyLayoutScene\n ) {\n this.updateBody();\n }\n }\n\n private onLabelsVariableChange(\n newState: SceneVariableState & { filters: AdHocVariableFilter[] },\n prevState: SceneVariableState & { filters: AdHocVariableFilter[] }\n ) {\n let { labelName } = getPrimaryLabelFromUrl();\n if (labelName === SERVICE_UI_LABEL) {\n labelName = SERVICE_NAME;\n }\n const variable = getLabelGroupByVariable(this);\n const newPrimaryLabel = newState.filters.find((filter) => filter.key === labelName);\n const prevPrimaryLabel = prevState.filters.find((filter) => filter.key === labelName);\n\n // If the user changes the service\n if (variable.state.value === ALL_VARIABLE_VALUE && newPrimaryLabel !== prevPrimaryLabel) {\n this.setState({\n loading: true,\n body: undefined,\n error: undefined,\n });\n }\n }\n\n /**\n * Pull the detected_labels from our service scene, update the variable when they change\n * @param newState\n * @param prevState\n */\n private onDetectedLabelsDataChange = (newState: QueryRunnerState, prevState: QueryRunnerState) => {\n if (\n newState.data?.state === LoadingState.Done &&\n newState.data.series?.[0] &&\n !areArraysEqual(newState.data.series?.[0]?.fields, prevState.data?.series?.[0]?.fields)\n ) {\n this.updateOptions(newState.data.series?.[0]);\n } else if (newState.data?.state === LoadingState.Done) {\n // we got a new response, but nothing changed, just need to clear loading\n const variable = getLabelGroupByVariable(this);\n variable.setState({\n loading: false,\n });\n }\n };\n\n private handleSortByChange = (event: SortCriteriaChanged) => {\n if (event.target !== 'labels') {\n return;\n }\n const body = this.state.body;\n if (body instanceof LabelValuesBreakdownScene) {\n const byFrameRepeaters = sceneGraph.findDescendents(body, ByFrameRepeater);\n byFrameRepeaters.forEach((layout) => {\n layout.sort(event.sortBy, event.direction);\n });\n }\n reportAppInteraction(\n USER_EVENTS_PAGES.service_details,\n USER_EVENTS_ACTIONS.service_details.value_breakdown_sort_change,\n {\n target: 'labels',\n criteria: event.sortBy,\n direction: event.direction,\n }\n );\n };\n\n private updateOptions(detectedLabels: DataFrame | undefined) {\n if (!detectedLabels || !detectedLabels.length) {\n this.setState({\n loading: false,\n body: new EmptyLayoutScene({ type: 'labels' }),\n });\n return;\n }\n const variable = getLabelGroupByVariable(this);\n const options = getLabelOptions(detectedLabels.fields.map((label) => label.name));\n\n variable.setState({\n loading: false,\n options,\n value: this.state.value ?? ALL_VARIABLE_VALUE,\n });\n }\n\n private updateBody() {\n const variable = getLabelGroupByVariable(this);\n // We get the labels from the service scene, if we don't have them yet, assume we're loading\n if (!variable.state.options || !variable.state.options.length) {\n return;\n }\n\n const stateUpdate: Partial = {\n loading: false,\n blockingMessage: undefined,\n error: false,\n };\n\n if (variable.hasAllValue() && this.state.body instanceof LabelValuesBreakdownScene) {\n stateUpdate.body = new LabelsAggregatedBreakdownScene({});\n } else if (!variable.hasAllValue() && this.state.body instanceof LabelsAggregatedBreakdownScene) {\n stateUpdate.body = new LabelValuesBreakdownScene({});\n } else if (this.state.body === undefined) {\n if (variable.state.options.length > 0) {\n stateUpdate.body = variable.hasAllValue()\n ? new LabelsAggregatedBreakdownScene({})\n : new LabelValuesBreakdownScene({});\n } else {\n stateUpdate.body = new EmptyLayoutScene({ type: 'labels' });\n }\n } else if (this.state.body instanceof EmptyLayoutScene) {\n if (variable.state.options.length > 0) {\n stateUpdate.body = variable.hasAllValue()\n ? new LabelsAggregatedBreakdownScene({})\n : new LabelValuesBreakdownScene({});\n }\n }\n\n this.setState({ ...stateUpdate });\n }\n\n public onChange = (value?: string) => {\n if (!value) {\n return;\n }\n\n const variable = getLabelGroupByVariable(this);\n variable.changeValueTo(value);\n\n const { sortBy, direction } = getSortByPreference('labels', DEFAULT_SORT_BY, 'desc');\n reportAppInteraction(\n USER_EVENTS_PAGES.service_details,\n USER_EVENTS_ACTIONS.service_details.select_field_in_breakdown_clicked,\n {\n label: value,\n previousLabel: variable.getValueText(),\n view: 'labels',\n sortBy,\n sortByDirection: direction,\n }\n );\n\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n navigateToValueBreakdown(ValueSlugs.label, value, serviceScene);\n };\n\n public static LabelsMenu = ({ model }: SceneComponentProps) => {\n const { body, loading, search } = model.useState();\n const variable = getLabelGroupByVariable(model);\n const { options, value } = variable.useState();\n const styles = useStyles2(getStyles);\n\n return (\n
\n {body instanceof LabelValuesBreakdownScene && }\n {body instanceof LabelsAggregatedBreakdownScene && }\n {body instanceof LabelValuesBreakdownScene && }\n {!loading && options.length > 0 && (\n \n )}\n
\n );\n };\n\n public static ValuesMenu = ({ model }: SceneComponentProps) => {\n const { loading, sort } = model.useState();\n const variable = getLabelGroupByVariable(model);\n const { value } = variable.useState();\n const styles = useStyles2(getStyles);\n\n return (\n
\n {!loading && value !== ALL_VARIABLE_VALUE && (\n <>\n \n \n )}\n
\n );\n };\n\n public static Component = ({ model }: SceneComponentProps) => {\n const { body, loading, blockingMessage, error } = model.useState();\n const styles = useStyles2(getStyles);\n\n return (\n
\n \n {error && (\n \n The labels are not available at this moment. Try using a different time range or check again later.\n \n )}\n\n {body instanceof LabelsAggregatedBreakdownScene && model && }\n\n
{body && }
\n
\n
\n );\n };\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n container: css({\n flexGrow: 1,\n display: 'flex',\n minHeight: '100%',\n flexDirection: 'column',\n gap: theme.spacing(1),\n }),\n content: css({\n flexGrow: 1,\n display: 'flex',\n paddingTop: theme.spacing(0),\n }),\n labelsMenuWrapper: css({\n flexGrow: 0,\n display: 'flex',\n alignItems: 'top',\n justifyContent: 'space-between',\n flexDirection: 'row-reverse',\n gap: theme.spacing(2),\n }),\n valuesMenuWrapper: css({\n flexGrow: 0,\n display: 'flex',\n alignItems: 'top',\n gap: theme.spacing(2),\n flexDirection: 'row',\n }),\n };\n}\n","import {\n PanelBuilders,\n SceneComponentProps,\n SceneCSSGridLayout,\n SceneDataProvider,\n SceneDataState,\n SceneFlexItem,\n SceneFlexLayout,\n sceneGraph,\n SceneObject,\n SceneObjectBase,\n SceneObjectState,\n SceneQueryRunner,\n SceneReactObject,\n} from '@grafana/scenes';\nimport { LayoutSwitcher } from './LayoutSwitcher';\nimport { getLabelValue } from './SortByScene';\nimport { DrawStyle, LoadingPlaceholder, StackingMode, useStyles2 } from '@grafana/ui';\nimport { getQueryRunner, setLevelColorOverrides } from '../../../services/panel';\nimport { getSortByPreference } from '../../../services/store';\nimport { AppEvents, DataQueryError, LoadingState } from '@grafana/data';\nimport { ByFrameRepeater } from './ByFrameRepeater';\nimport { getFilterBreakdownValueScene } from '../../../services/fields';\nimport {\n ALL_VARIABLE_VALUE,\n LEVEL_VARIABLE_VALUE,\n VAR_LABEL_GROUP_BY_EXPR,\n VAR_LABELS,\n VAR_LEVELS,\n} from '../../../services/variables';\nimport React from 'react';\nimport { LabelBreakdownScene } from './LabelBreakdownScene';\nimport { DEFAULT_SORT_BY } from '../../../services/sorting';\nimport { buildLabelsQuery, LABEL_BREAKDOWN_GRID_TEMPLATE_COLUMNS } from '../../../services/labels';\nimport { getAppEvents } from '@grafana/runtime';\nimport {\n getFieldsVariable,\n getLabelGroupByVariable,\n getLabelsVariable,\n getLevelsVariable,\n getLineFiltersVariable,\n getMetadataVariable,\n getPatternsVariable,\n} from '../../../services/variableGetters';\nimport { getPanelWrapperStyles, PanelMenu } from '../../Panels/PanelMenu';\nimport { NoMatchingLabelsScene } from './NoMatchingLabelsScene';\nimport { EmptyLayoutScene } from './EmptyLayoutScene';\nimport { IndexScene } from '../../IndexScene/IndexScene';\nimport { clearVariables, getVariablesThatCanBeCleared } from '../../../services/variableHelpers';\nimport { ValueSummaryPanelScene } from './Panels/ValueSummary';\nimport { renderLevelsFilter, renderLogQLLabelFilters } from '../../../services/query';\nimport { logger } from '../../../services/logger';\nimport { areArraysEqual } from '../../../services/comparison';\n\ntype DisplayError = DataQueryError & { displayed: boolean };\ntype DisplayErrors = Record;\n\nexport interface LabelValueBreakdownSceneState extends SceneObjectState {\n body?: (LayoutSwitcher & SceneObject) | (NoMatchingLabelsScene & SceneObject) | (EmptyLayoutScene & SceneObject);\n $data?: SceneDataProvider;\n errors: DisplayErrors;\n}\n\nexport class LabelValuesBreakdownScene extends SceneObjectBase {\n constructor(state: Partial) {\n super({\n ...state,\n errors: {},\n });\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n onActivate() {\n this.setState({\n $data: this.buildQueryRunner(),\n body: this.build(),\n });\n\n // Run query on activate\n this.runQuery();\n this.setSubscriptions();\n }\n\n private buildQueryRunner() {\n const query = this.buildQuery();\n return getQueryRunner([query], { runQueriesMode: 'manual' });\n }\n\n private buildQuery() {\n const query = buildLabelsQuery(this, VAR_LABEL_GROUP_BY_EXPR, String(getLabelGroupByVariable(this).state.value));\n // Manually interpolate query so we don't pollute the variable interpolation for other queries\n const { variableName, filterExpression } = this.removeValueLabelFromVariableInterpolation();\n query.expr = query.expr.replace(`$\\{${variableName}}`, filterExpression);\n return query;\n }\n\n /**\n * Set variable & event subscriptions\n */\n private setSubscriptions() {\n // QUERY RUNNER SUBS\n // Subscribe to value breakdown state\n this._subs.add(\n this.state.$data?.subscribeToState((newState, prevState) => {\n this.onValuesDataQueryChange(newState);\n })\n );\n\n // VARIABLE SUBS\n // Subscribe to label change via dropdown\n this._subs.add(\n getLabelGroupByVariable(this).subscribeToState((newState) => {\n if (newState.value === ALL_VARIABLE_VALUE) {\n this.setState({\n $data: undefined,\n body: undefined,\n });\n }\n })\n );\n\n // Subscribe to time range changes\n this._subs.add(\n sceneGraph.getTimeRange(this).subscribeToState(() => {\n // Run query on time range change\n this.runQuery();\n })\n );\n\n this._subs.add(\n getFieldsVariable(this).subscribeToState((newState, prevState) => {\n if (!areArraysEqual(newState.filters, prevState.filters)) {\n // Check to see if the new field filter changes the parser, if so rebuild the query\n this.runQuery();\n }\n })\n );\n\n // Subscribe to fields variable changes\n this._subs.add(\n getMetadataVariable(this).subscribeToState((newState, prevState) => {\n if (!areArraysEqual(newState.filters, prevState.filters)) {\n this.runQuery();\n }\n })\n );\n\n // Subscribe to line filter variable changes\n this._subs.add(\n getLineFiltersVariable(this).subscribeToState((newState, prevState) => {\n if (!areArraysEqual(newState.filters, prevState.filters)) {\n this.runQuery();\n }\n })\n );\n\n // Subscribe to pattern variable changes\n this._subs.add(\n getPatternsVariable(this).subscribeToState((newState, prevState) => {\n if (newState.value !== prevState.value) {\n this.runQuery();\n }\n })\n );\n\n const key = this.getTagKey();\n\n this._subs.add(\n getLabelsVariable(this).subscribeToState(async (newState, prevState) => {\n if (\n !areArraysEqual(\n newState.filters.filter((f) => key === LEVEL_VARIABLE_VALUE && f.key !== key),\n prevState.filters.filter((f) => key === LEVEL_VARIABLE_VALUE && f.key !== key)\n )\n ) {\n this.runQuery();\n }\n })\n );\n\n this._subs.add(\n getLevelsVariable(this).subscribeToState(async (newState, prevState) => {\n if (\n !areArraysEqual(\n newState.filters.filter((f) => key !== LEVEL_VARIABLE_VALUE && f.key !== key),\n prevState.filters.filter((f) => key !== LEVEL_VARIABLE_VALUE && f.key !== key)\n )\n ) {\n this.runQuery();\n }\n })\n );\n }\n\n /**\n * Since we run this query manually, we want to rebuild it before every execution\n */\n private rebuildQuery() {\n // Rebuild the query\n this.getSceneQueryRunner()?.setState({\n queries: [this.buildQuery()],\n });\n }\n\n /**\n * Run the label values breakdown query.\n * Generates the filterExpression excluding all filters with a key that matches the label.\n */\n private runQuery() {\n this.rebuildQuery();\n const queryRunner = this.getSceneQueryRunner();\n queryRunner?.runQueries();\n }\n\n /**\n * Helper method that grabs the SceneQueryRunner for the label value breakdown query.\n */\n private getSceneQueryRunner() {\n if (this.state.$data) {\n const queryRunners = sceneGraph.findDescendents(this.state.$data, SceneQueryRunner);\n if (queryRunners.length !== 1) {\n const error = new Error('Unable to find query runner in value breakdown!');\n logger.error(error, { msg: 'LabelValuesBreakdownScene: Unable to find query runner in value breakdown!' });\n throw error;\n }\n\n return queryRunners[0];\n }\n logger.warn('LabelValuesBreakdownScene: Query is attempting to execute, but query runner is undefined!');\n return undefined;\n }\n\n /**\n * Generates the filterExpression for the label value query and saves it to state.\n * We have to manually generate the filterExpression as we want to exclude every filter for the target variable that matches the key used in this value breakdown.\n * e.g. in the \"cluster\" breakdown, we don't want to execute this query containing a cluster filter, or users will only be able to include a single value.\n */\n private removeValueLabelFromVariableInterpolation() {\n const tagKey = this.getTagKey();\n let filterExpression;\n let variableName: typeof VAR_LEVELS | typeof VAR_LABELS;\n\n if (tagKey === LEVEL_VARIABLE_VALUE) {\n const levelsVar = getLevelsVariable(this);\n variableName = VAR_LEVELS;\n filterExpression = renderLevelsFilter(levelsVar.state.filters, [tagKey]);\n } else {\n const labelsVar = getLabelsVariable(this);\n variableName = VAR_LABELS;\n filterExpression = renderLogQLLabelFilters(labelsVar.state.filters, [tagKey]);\n }\n\n return { filterExpression, variableName };\n }\n\n /**\n * Helper method to get the key/label name from the variable on the parent scene\n */\n private getTagKey() {\n const variable = getLabelGroupByVariable(this);\n return String(variable.state.value);\n }\n\n /**\n * Actions to run when the value breakdown query response is received.\n */\n private onValuesDataQueryChange(newState: SceneDataState) {\n // Set empty states\n this.setEmptyStates(newState);\n\n // Set error states\n this.setErrorStates(newState);\n }\n\n /**\n * Sets the error body state\n */\n private setErrorStates(newState: SceneDataState) {\n // If panels have errors\n if (newState?.data?.errors && newState.data?.state !== LoadingState.Done) {\n const errors: DisplayErrors = this.state.errors;\n newState?.data?.errors.forEach((err) => {\n const errorIndex = `${err.status}_${err.traceId}_${err.message}`;\n if (errors[errorIndex] === undefined) {\n errors[errorIndex] = { ...err, displayed: false };\n }\n });\n this.setState({\n errors,\n });\n\n this.showErrorToast(this.state.errors);\n }\n }\n\n /**\n * Sets the empty body state\n */\n private setEmptyStates(newState: SceneDataState) {\n if (newState.data?.state === LoadingState.Done) {\n if (newState.data.series.length > 0 && !(this.state.body instanceof LayoutSwitcher)) {\n this.setState({\n body: this.build(),\n });\n } else if (newState.data.series.length === 0) {\n const indexScene = sceneGraph.getAncestor(this, IndexScene);\n const variablesToClear = getVariablesThatCanBeCleared(indexScene);\n\n if (variablesToClear.length > 1) {\n this.setState({\n body: new NoMatchingLabelsScene({ clearCallback: () => clearVariables(this) }),\n });\n } else {\n this.setState({\n body: new EmptyLayoutScene({ type: 'fields' }),\n });\n }\n }\n }\n }\n\n /**\n * Returns the active layout from the layout switcher\n */\n private getActiveLayout(): SceneFlexLayout | undefined {\n const layoutSwitcher = this.state.body;\n if (layoutSwitcher instanceof LayoutSwitcher) {\n const activeLayout = layoutSwitcher?.state.layouts.find((layout) => layout.isActive);\n if (activeLayout instanceof SceneFlexLayout) {\n return activeLayout;\n }\n }\n return undefined;\n }\n\n /**\n * Returns a boolean when the active layout is empty\n */\n private activeLayoutContainsNoPanels(): boolean {\n const activeLayout = this.getActiveLayout();\n if (activeLayout) {\n const byFrameRepeaters = sceneGraph.findDescendents(activeLayout, ByFrameRepeater);\n return byFrameRepeaters.some((repeater) => {\n const child = repeater.state.body.state.children[0];\n return child instanceof SceneFlexItem || child instanceof SceneReactObject;\n });\n }\n\n return false;\n }\n\n /**\n * Builds the layout switcher\n */\n private build(): LayoutSwitcher {\n const variable = getLabelGroupByVariable(this);\n const variableState = variable.state;\n const tagKey = String(variableState?.value);\n const labelBreakdownScene = sceneGraph.getAncestor(this, LabelBreakdownScene);\n\n let bodyOpts = PanelBuilders.timeseries();\n bodyOpts = bodyOpts\n .setCustomFieldConfig('stacking', { mode: StackingMode.Normal })\n .setCustomFieldConfig('fillOpacity', 100)\n .setCustomFieldConfig('lineWidth', 0)\n .setCustomFieldConfig('pointSize', 0)\n .setCustomFieldConfig('drawStyle', DrawStyle.Bars)\n // Waiting for 11.5\n // .setShowMenuAlways(true)\n .setOverrides(setLevelColorOverrides)\n .setMenu(new PanelMenu({}))\n .setTitle(tagKey);\n\n const body = bodyOpts.build();\n\n const { sortBy, direction } = getSortByPreference('labels', DEFAULT_SORT_BY, 'desc');\n\n const getFilter = () => labelBreakdownScene.state.search.state.filter ?? '';\n\n return new LayoutSwitcher({\n options: [\n { value: 'single', label: 'Single' },\n { value: 'grid', label: 'Grid' },\n { value: 'rows', label: 'Rows' },\n ],\n active: 'grid',\n layouts: [\n new SceneFlexLayout({\n direction: 'column',\n children: [\n new SceneReactObject({ reactNode: }),\n new SceneFlexItem({\n minHeight: 300,\n body,\n }),\n ],\n }),\n new SceneFlexLayout({\n direction: 'column',\n children: [\n new SceneReactObject({ reactNode: }),\n new ValueSummaryPanelScene({ title: tagKey, levelColor: true, tagKey: this.getTagKey(), type: 'label' }),\n new SceneReactObject({ reactNode: }),\n new ByFrameRepeater({\n body: new SceneCSSGridLayout({\n isLazy: true,\n templateColumns: LABEL_BREAKDOWN_GRID_TEMPLATE_COLUMNS,\n autoRows: '200px',\n children: [\n new SceneFlexItem({\n body: new SceneReactObject({\n reactNode: ,\n }),\n }),\n ],\n }),\n getLayoutChild: getFilterBreakdownValueScene(\n getLabelValue,\n DrawStyle.Bars,\n VAR_LABELS,\n sceneGraph.getAncestor(this, LabelBreakdownScene).state.sort,\n tagKey\n ),\n sortBy,\n direction,\n getFilter,\n }),\n ],\n }),\n new SceneFlexLayout({\n direction: 'column',\n children: [\n new SceneReactObject({ reactNode: }),\n new ValueSummaryPanelScene({ title: tagKey, levelColor: true, tagKey: this.getTagKey(), type: 'label' }),\n new SceneReactObject({ reactNode: }),\n new ByFrameRepeater({\n body: new SceneCSSGridLayout({\n templateColumns: '1fr',\n autoRows: '200px',\n children: [\n new SceneFlexItem({\n body: new SceneReactObject({\n reactNode: ,\n }),\n }),\n ],\n }),\n getLayoutChild: getFilterBreakdownValueScene(\n getLabelValue,\n DrawStyle.Bars,\n VAR_LABELS,\n sceneGraph.getAncestor(this, LabelBreakdownScene).state.sort,\n tagKey\n ),\n sortBy,\n direction,\n getFilter,\n }),\n ],\n }),\n ],\n });\n }\n\n private showErrorToast(errors: DisplayErrors) {\n const appEvents = getAppEvents();\n\n // Make sure we only display each error once\n let errorArray: DisplayError[] = [];\n for (const err in errors) {\n const displayError = errors[err];\n if (!displayError.displayed) {\n errorArray.push(displayError);\n displayError.displayed = true;\n }\n }\n\n if (errorArray.length) {\n // If we don't have any panels the error message will replace the loading state, we want to set it as displayed but not render the toast\n if (!this.activeLayoutContainsNoPanels()) {\n appEvents.publish({\n type: AppEvents.alertError.name,\n payload: errorArray?.map((err, key) => this.renderError(key, err)),\n });\n }\n this.setState({\n errors,\n });\n }\n }\n\n private renderError(key: number, err: DataQueryError) {\n return (\n
\n {err.status && (\n <>\n Status: {err.status}
\n \n )}\n {err.message && (\n <>\n Message: {err.message}
\n \n )}\n {err.traceId && (\n <>\n TraceId: {err.traceId}\n \n )}\n
\n );\n }\n\n public static Selector({ model }: SceneComponentProps) {\n const { body } = model.useState();\n return <>{body && body instanceof LayoutSwitcher && };\n }\n\n public static Component = ({ model }: SceneComponentProps) => {\n const { body } = model.useState();\n const styles = useStyles2(getPanelWrapperStyles);\n if (body) {\n return {body && };\n }\n\n return ;\n };\n}\n","import React from 'react';\n\nimport { GrafanaTheme2, SelectableValue } from '@grafana/data';\nimport { SceneComponentProps, SceneObject, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport { Field, RadioButtonGroup, useStyles2 } from '@grafana/ui';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from 'services/analytics';\nimport { getDrilldownSlug } from '../../../services/routing';\nimport { css } from '@emotion/css';\n\nexport interface LayoutSwitcherState extends SceneObjectState {\n active: LayoutType;\n layouts: SceneObject[];\n options: Array>;\n}\n\nexport type LayoutType = 'single' | 'grid' | 'rows';\n\nexport class LayoutSwitcher extends SceneObjectBase {\n public static Selector = LayoutSwitcherComponent;\n\n public onLayoutChange = (active: LayoutType) => {\n reportAppInteraction(USER_EVENTS_PAGES.service_details, USER_EVENTS_ACTIONS.service_details.layout_type_changed, {\n layout: active,\n view: getDrilldownSlug(),\n });\n this.setState({ active });\n };\n\n public static Component = ({ model }: SceneComponentProps) => {\n const { layouts, options, active } = model.useState();\n\n const index = options.findIndex((o) => o.value === active);\n if (index === -1) {\n return null;\n }\n\n const layout = layouts[index];\n\n return ;\n };\n}\n\nfunction LayoutSwitcherComponent({ model }: { model: LayoutSwitcher }) {\n const { active, options } = model.useState();\n const styles = useStyles2(getStyles);\n\n return (\n \n \n \n );\n}\n\nconst getStyles = (theme: GrafanaTheme2) => {\n return {\n field: css({\n marginBottom: 0,\n }),\n };\n};\n","import { SceneComponentProps, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport { GrotError } from '../../GrotError';\nimport { Alert, Button } from '@grafana/ui';\nimport React from 'react';\nimport { emptyStateStyles } from './FieldsBreakdownScene';\n\nexport interface ClearFiltersLayoutSceneState extends SceneObjectState {\n clearCallback: () => void;\n}\nexport class NoMatchingLabelsScene extends SceneObjectBase {\n public static Component = ({ model }: SceneComponentProps) => {\n const { clearCallback } = model.useState();\n return (\n \n \n No labels match these filters.{' '}\n {' '}\n \n \n );\n };\n}\n","import {\n AdHocFiltersVariable,\n PanelBuilders,\n SceneComponentProps,\n SceneDataProvider,\n SceneFlexItem,\n SceneFlexLayout,\n sceneGraph,\n SceneObjectBase,\n SceneObjectState,\n VizPanel,\n} from '@grafana/scenes';\nimport { CollapsablePanelText, PanelMenu } from '../../../Panels/PanelMenu';\nimport { DrawStyle, PanelContext, SeriesVisibilityChangeMode, StackingMode } from '@grafana/ui';\nimport {\n setLevelColorOverrides,\n syncFieldsValueSummaryVisibleSeries,\n syncLabelsValueSummaryVisibleSeries,\n syncLevelsVisibleSeries,\n} from '../../../../services/panel';\nimport { getPanelOption, setPanelOption } from '../../../../services/store';\nimport React from 'react';\nimport {\n getFieldsVariable,\n getLabelsVariable,\n getLevelsVariable,\n getMetadataVariable,\n} from '../../../../services/variableGetters';\nimport { toggleLevelFromFilter } from '../../../../services/levels';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from '../../../../services/analytics';\nimport { DataFrame, LoadingState } from '@grafana/data';\nimport { LEVEL_VARIABLE_VALUE } from '../../../../services/variables';\nimport { logger } from '../../../../services/logger';\nimport { FilterType } from '../AddToFiltersButton';\nimport { toggleFieldFromFilter, toggleLabelFromFilter } from '../../../../services/labels';\n\nconst SUMMARY_PANEL_SERIES_LIMIT = 100;\n\ninterface ValueSummaryPanelSceneState extends SceneObjectState {\n body?: SceneFlexLayout;\n title: string;\n levelColor?: boolean;\n tagKey: string;\n type: 'field' | 'label';\n}\nexport class ValueSummaryPanelScene extends SceneObjectBase {\n constructor(state: ValueSummaryPanelSceneState) {\n super(state);\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n public static Component = ({ model }: SceneComponentProps) => {\n const { body } = model.useState();\n if (body) {\n return (\n
\n \n
\n );\n }\n\n return null;\n };\n\n onActivate() {\n const collapsed =\n getPanelOption('collapsed', [CollapsablePanelText.collapsed, CollapsablePanelText.expanded]) ??\n CollapsablePanelText.expanded;\n const viz = buildValueSummaryPanel(this.state.title, { levelColor: this.state.levelColor });\n const height = getValueSummaryHeight(collapsed);\n\n viz.setState({\n extendPanelContext: (_, context) => this.extendTimeSeriesLegendBus(context),\n });\n\n this.setState({\n body: new SceneFlexLayout({\n key: VALUE_SUMMARY_PANEL_KEY,\n minHeight: height,\n height: height,\n maxHeight: height,\n wrap: 'nowrap',\n children: [\n new SceneFlexItem({\n body: viz,\n }),\n ],\n }),\n });\n\n this._subs.add(\n viz.subscribeToState((newState, prevState) => {\n if (newState.collapsed !== prevState.collapsed) {\n const vizPanelFlexLayout = sceneGraph.getAncestor(viz, SceneFlexLayout);\n setValueSummaryHeight(\n vizPanelFlexLayout,\n newState.collapsed ? CollapsablePanelText.collapsed : CollapsablePanelText.expanded\n );\n setPanelOption(\n 'collapsed',\n newState.collapsed ? CollapsablePanelText.collapsed : CollapsablePanelText.expanded\n );\n }\n })\n );\n }\n\n /**\n * Syncs legend with labels\n */\n private extendTimeSeriesLegendBus = (context: PanelContext) => {\n const $data = sceneGraph.getData(this);\n const dataFrame = $data.state.data?.series;\n const key = this.state.tagKey;\n\n const sceneFlexItem = this.state.body?.state.children[0];\n if (!(sceneFlexItem instanceof SceneFlexItem)) {\n throw new Error('Cannot find sceneFlexItem');\n }\n const panel = sceneFlexItem.state.body;\n\n if (!(panel instanceof VizPanel)) {\n throw new Error('Cannot find VizPanel');\n }\n\n this.initLegendOptions(dataFrame, key, panel);\n\n if (this.state.type === 'label') {\n this._subs.add(this.getLabelsVariableLegendSyncSubscription(key));\n } else {\n this._subs.add(this.getFieldsVariableLegendSyncSubscription(key, getFieldsVariable(this)));\n this._subs.add(this.getFieldsVariableLegendSyncSubscription(key, getMetadataVariable(this)));\n }\n\n this._subs.add(this.getQuerySubscription(key, $data, panel));\n\n context.onToggleSeriesVisibility = (value: string, mode: SeriesVisibilityChangeMode) => {\n let action: FilterType;\n if (this.state.type === 'label') {\n if (key === LEVEL_VARIABLE_VALUE) {\n action = toggleLevelFromFilter(value, this);\n } else {\n action = toggleLabelFromFilter(key, value, this);\n }\n } else {\n action = toggleFieldFromFilter(key, value, this);\n }\n\n reportAppInteraction(\n USER_EVENTS_PAGES.service_details,\n USER_EVENTS_ACTIONS.service_details.label_in_panel_summary_clicked,\n {\n label: value,\n action,\n }\n );\n };\n };\n\n /**\n * Sync legend with current dataframe\n */\n private initLegendOptions(dataFrame: DataFrame[] | undefined, key: string, panel: VizPanel<{}, {}>) {\n if (dataFrame) {\n if (this.state.type === 'label') {\n if (key === LEVEL_VARIABLE_VALUE) {\n syncLevelsVisibleSeries(panel, dataFrame, this);\n } else {\n syncLabelsValueSummaryVisibleSeries(key, panel, dataFrame, this);\n }\n } else {\n syncFieldsValueSummaryVisibleSeries(key, panel, dataFrame, this);\n }\n }\n }\n\n /**\n * Sync visible series on dataframe update\n */\n private getQuerySubscription(key: string, $data: SceneDataProvider, panel: VizPanel<{}, {}>) {\n return $data.subscribeToState((newState, prevState) => {\n if (newState.data?.state === LoadingState.Done) {\n if (this.state.type === 'label') {\n if (key === LEVEL_VARIABLE_VALUE) {\n syncLevelsVisibleSeries(panel, newState.data.series, this);\n } else {\n syncLabelsValueSummaryVisibleSeries(key, panel, newState.data.series, this);\n }\n } else {\n syncFieldsValueSummaryVisibleSeries(key, panel, newState.data.series, this);\n }\n }\n });\n }\n\n private getFieldsVariableLegendSyncSubscription(key: string, variable: AdHocFiltersVariable) {\n return variable?.subscribeToState(() => {\n const sceneFlexItem = this.state.body?.state.children[0];\n if (!(sceneFlexItem instanceof SceneFlexItem)) {\n throw new Error('Cannot find sceneFlexItem');\n }\n const panel = sceneFlexItem.state.body;\n if (!(panel instanceof VizPanel)) {\n throw new Error('ValueSummary - getFieldsVariableLegendSyncSubscription: Cannot find VizPanel');\n }\n\n const $data = sceneGraph.getData(this);\n const dataFrame = $data.state.data?.series;\n\n if (!dataFrame) {\n logger.warn('ValueSummary - getFieldsVariableLegendSyncSubscription: missing dataframe!');\n return;\n }\n\n syncFieldsValueSummaryVisibleSeries(key, panel, dataFrame, this);\n });\n }\n\n /**\n * Returns value subscription for labels\n */\n private getLabelsVariableLegendSyncSubscription(key: string) {\n const isLevel = key === LEVEL_VARIABLE_VALUE;\n const variable = isLevel ? getLevelsVariable(this) : getLabelsVariable(this);\n return variable?.subscribeToState(() => {\n const sceneFlexItem = this.state.body?.state.children[0];\n if (!(sceneFlexItem instanceof SceneFlexItem)) {\n throw new Error('Cannot find sceneFlexItem');\n }\n const panel = sceneFlexItem.state.body;\n if (!(panel instanceof VizPanel)) {\n throw new Error('ValueSummary - getLabelsVariableLegendSyncSubscription: Cannot find VizPanel');\n }\n\n const $data = sceneGraph.getData(this);\n const dataFrame = $data.state.data?.series;\n\n if (!dataFrame) {\n logger.warn('ValueSummary - getLabelsVariableLegendSyncSubscription: missing dataframe!');\n return;\n }\n\n if (isLevel) {\n syncLevelsVisibleSeries(panel, dataFrame, this);\n } else {\n syncLabelsValueSummaryVisibleSeries(key, panel, dataFrame, this);\n }\n });\n }\n}\n\nexport function setValueSummaryHeight(vizPanelFlexLayout: SceneFlexLayout, collapsableState: CollapsablePanelText) {\n const height = getValueSummaryHeight(collapsableState);\n vizPanelFlexLayout.setState({\n minHeight: height,\n height: height,\n maxHeight: height,\n });\n}\n\nfunction getValueSummaryHeight(collapsableState: CollapsablePanelText) {\n return collapsableState === CollapsablePanelText.collapsed ? 35 : 300;\n}\n\nfunction buildValueSummaryPanel(title: string, options?: { levelColor?: boolean }): VizPanel {\n const collapsed =\n getPanelOption('collapsed', [CollapsablePanelText.collapsed, CollapsablePanelText.expanded]) ??\n CollapsablePanelText.expanded;\n\n const body = PanelBuilders.timeseries()\n .setTitle(title)\n .setMenu(new PanelMenu({}))\n .setCollapsible(true)\n .setCollapsed(collapsed === CollapsablePanelText.collapsed)\n .setCustomFieldConfig('stacking', { mode: StackingMode.Normal })\n .setCustomFieldConfig('fillOpacity', 100)\n .setCustomFieldConfig('lineWidth', 0)\n .setCustomFieldConfig('pointSize', 0)\n .setCustomFieldConfig('drawStyle', DrawStyle.Bars)\n // 11.5\n // .setShowMenuAlways(true)\n .setSeriesLimit(SUMMARY_PANEL_SERIES_LIMIT);\n\n if (options?.levelColor) {\n body.setOverrides(setLevelColorOverrides);\n }\n return body.build();\n}\n\nexport const VALUE_SUMMARY_PANEL_KEY = 'value_summary_panel';\n","import { css } from '@emotion/css';\nimport { Icon, IconButton, Input, useStyles2 } from '@grafana/ui';\nimport React, { HTMLProps } from 'react';\nimport { GrafanaTheme2 } from '@grafana/data';\n\ninterface Props extends Omit, 'width' | 'prefix'> {\n onClear?: () => void;\n suffix?: React.ReactNode;\n prefix?: React.ReactNode;\n}\n\nexport const SearchInput = ({ value, onChange, placeholder, onClear, suffix, ...rest }: Props) => {\n const styles = useStyles2(getStyles);\n return (\n \n {onClear && value ? (\n \n ) : undefined}\n {suffix && suffix}\n \n }\n prefix={}\n placeholder={placeholder}\n {...rest}\n />\n );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n suffixWrapper: css({\n gap: theme.spacing(0.5),\n display: 'inline-flex',\n }),\n clearIcon: css({\n cursor: 'pointer',\n }),\n});\n","import { SceneComponentProps, sceneGraph, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport { Button, ClickOutsideWrapper, Field, FieldSet, Input, Label, Select, Stack, useStyles2 } from '@grafana/ui';\nimport React from 'react';\nimport { GrafanaTheme2, SelectableValue } from '@grafana/data';\nimport { css, cx } from '@emotion/css';\nimport { SelectLabelActionScene } from './SelectLabelActionScene';\nimport {\n addNumericFilter,\n removeNumericFilter,\n validateVariableNameForField,\n InterpolatedFilterType,\n} from './AddToFiltersButton';\nimport { FilterOp } from '../../../services/filterTypes';\nimport { getAdHocFiltersVariable, getValueFromFieldsFilter } from '../../../services/variableGetters';\nimport { logger } from '../../../services/logger';\nimport { testIds } from '../../../services/testIds';\n\nexport interface NumericFilterPopoverSceneState extends SceneObjectState {\n labelName: string;\n variableType: InterpolatedFilterType;\n gt?: number;\n gte?: boolean;\n lt?: number;\n lte?: boolean;\n fieldType: 'float' | 'duration' | 'bytes';\n hasExistingFilter?: boolean;\n}\n\nexport type NumericFilterPopoverSceneStateTotal =\n | (NumericFilterPopoverSceneState & FloatTypes)\n | (NumericFilterPopoverSceneState & DurationTypes)\n | (NumericFilterPopoverSceneState & ByteTypes);\n\nenum DisplayDurationUnits {\n ns = 'ns',\n us = 'µs',\n ms = 'ms',\n s = 's',\n m = 'm',\n h = 'h',\n}\n\nexport const validDurationValues: { [key in DisplayDurationUnits]: string[] } = {\n [DisplayDurationUnits.ns]: ['ns'],\n [DisplayDurationUnits.us]: ['µs', 'us'],\n [DisplayDurationUnits.ms]: ['ms'],\n [DisplayDurationUnits.s]: ['s'],\n [DisplayDurationUnits.m]: ['m'],\n [DisplayDurationUnits.h]: ['h'],\n};\n\nenum DisplayByteUnits {\n B = 'B',\n KB = 'KB',\n MB = 'MB',\n GB = 'GB',\n TB = 'TB',\n}\n\nexport enum ValidByteUnitValues {\n B = 'B',\n KB = 'KB',\n MB = 'MB',\n GB = 'GB',\n TB = 'TB',\n\n // Not selectable in the UI, but valid from link extensions\n kB = 'kB',\n KiB = 'KiB',\n MiB = 'MiB',\n GiB = 'GiB',\n TiB = 'TiB',\n}\n\ninterface FloatUnitTypes {\n ltu: '';\n gtu: '';\n}\n\ninterface FloatTypes extends FloatUnitTypes {\n fieldType: 'float';\n}\n\ninterface DurationUnitTypes {\n ltu: DisplayDurationUnits;\n gtu: DisplayDurationUnits;\n}\n\ninterface DurationTypes extends DurationUnitTypes {\n fieldType: 'duration';\n}\n\ninterface ByteUnitTypes {\n ltu: DisplayByteUnits;\n gtu: DisplayByteUnits;\n}\n\ninterface ByteTypes extends ByteUnitTypes {\n fieldType: 'bytes';\n}\n\nexport class NumericFilterPopoverScene extends SceneObjectBase {\n constructor(state: Omit) {\n let units: FloatUnitTypes | DurationUnitTypes | ByteUnitTypes;\n const fieldType: 'float' | 'bytes' | 'duration' = state.fieldType;\n if (fieldType === 'bytes') {\n units = { ltu: DisplayByteUnits.B, gtu: DisplayByteUnits.B };\n } else if (fieldType === 'duration') {\n units = { ltu: DisplayDurationUnits.s, gtu: DisplayDurationUnits.s };\n } else if (fieldType === 'float') {\n units = { ltu: '', gtu: '' };\n } else {\n throw new Error(`field type incorrectly defined: ${fieldType}`);\n }\n\n // @todo - how to avoid type assertion?\n super({ ...state, ...units } as NumericFilterPopoverSceneStateTotal);\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n onActivate() {\n // get existing values if they exist\n const variable = getAdHocFiltersVariable(\n validateVariableNameForField(this.state.labelName, this.state.variableType),\n this\n );\n const filters = variable.state.filters.filter((f) => f.key === this.state.labelName);\n const gtFilter = filters.find((f) => f.operator === FilterOp.gte || f.operator === FilterOp.gt);\n const ltFilter = filters.find((f) => f.operator === FilterOp.lte || f.operator === FilterOp.lt);\n let stateUpdate: Partial = {};\n\n if (this.state.fieldType === 'duration' || this.state.fieldType === 'bytes') {\n if (gtFilter) {\n const extractedValue = extractValueFromString(getValueFromFieldsFilter(gtFilter).value, this.state.fieldType);\n\n if (extractedValue) {\n stateUpdate.gt = extractedValue.value;\n stateUpdate.gtu = extractedValue.unit;\n stateUpdate.gte = gtFilter.operator === FilterOp.gte;\n }\n }\n\n if (ltFilter) {\n const extractedValue = extractValueFromString(getValueFromFieldsFilter(ltFilter).value, this.state.fieldType);\n\n if (extractedValue) {\n stateUpdate.lt = extractedValue.value;\n stateUpdate.ltu = extractedValue.unit;\n stateUpdate.lte = ltFilter.operator === FilterOp.lte;\n }\n }\n } else {\n // Floats have no unit\n if (gtFilter) {\n const extractedValue = getValueFromFieldsFilter(gtFilter).value;\n stateUpdate.gt = Number(extractedValue);\n stateUpdate.gtu = '';\n stateUpdate.gte = gtFilter.operator === FilterOp.gte;\n }\n if (ltFilter) {\n const extractedValue = getValueFromFieldsFilter(ltFilter).value;\n stateUpdate.lt = Number(extractedValue);\n stateUpdate.ltu = '';\n stateUpdate.lte = ltFilter.operator === FilterOp.lte;\n }\n }\n\n if (Object.keys(stateUpdate).length !== 0) {\n stateUpdate.hasExistingFilter = true;\n }\n\n this.setState(stateUpdate);\n }\n\n onSubmit() {\n // \"0\" values break byte queries see https://github.com/grafana/loki/issues/14993, for now we remove the filter when a 0 value is entered to prevent breakage\n // numeric values can only be fields or metadata variable\n if (this.state.gt) {\n addNumericFilter(\n this.state.labelName,\n this.state.gt.toString() + this.state.gtu,\n this.state.gte ? FilterOp.gte : FilterOp.gt,\n this,\n this.state.variableType\n );\n } else {\n removeNumericFilter(\n this.state.labelName,\n this,\n this.state.gte ? FilterOp.gte : FilterOp.gt,\n this.state.variableType\n );\n }\n\n if (this.state.lt) {\n addNumericFilter(\n this.state.labelName,\n this.state.lt.toString() + this.state.ltu,\n this.state.lte ? FilterOp.lte : FilterOp.lt,\n this,\n this.state.variableType\n );\n } else {\n removeNumericFilter(\n this.state.labelName,\n this,\n this.state.lte ? FilterOp.lte : FilterOp.lt,\n this.state.variableType\n );\n }\n\n const selectLabelActionScene = sceneGraph.getAncestor(this, SelectLabelActionScene);\n selectLabelActionScene.togglePopover();\n }\n onInputKeydown = (e: React.KeyboardEvent) => {\n const formDisabled = this.state.gt === undefined && this.state.lt === undefined;\n if (e.key === 'Enter' && !formDisabled) {\n this.onSubmit();\n }\n };\n\n public static Component = ({ model }: SceneComponentProps) => {\n const popoverStyles = useStyles2(getPopoverStyles);\n const { labelName, gt, lt, gte, lte, gtu, ltu, fieldType, hasExistingFilter } = model.useState();\n const subTitle = fieldType !== 'float' && fieldType !== labelName ? `(${fieldType})` : undefined;\n\n const selectLabelActionScene = sceneGraph.getAncestor(model, SelectLabelActionScene);\n const formDisabled = gt === undefined && lt === undefined;\n\n return (\n selectLabelActionScene.togglePopover()}>\n \n
\n
\n {labelName} {subTitle}\n
\n\n
\n {/* greater than */}\n
\n \n \n className={popoverStyles.card.inclusiveInput}\n menuShouldPortal={false}\n value={gte !== undefined ? gte.toString() : 'false'}\n options={[\n { label: 'Greater than', value: 'false' },\n { label: 'Greater than or equal', value: 'true' },\n ]}\n onChange={(value) => model.setState({ gte: value.value === 'true' })}\n />\n \n \n {\n model.setState({\n gt: e.currentTarget.value !== '' ? Number(e.currentTarget.value) : undefined,\n });\n }}\n className={popoverStyles.card.numberInput}\n value={gt}\n type={'number'}\n />\n \n {fieldType !== 'float' && (\n \n )}\n
\n\n {/* less than */}\n
\n \n \n className={popoverStyles.card.inclusiveInput}\n menuShouldPortal={false}\n value={lte !== undefined ? lte.toString() : 'false'}\n options={[\n { label: 'Less than', value: 'false' },\n { label: 'Less than or equal', value: 'true' },\n ]}\n onChange={(value) => model.setState({ lte: value.value === 'true' })}\n />\n \n \n \n model.setState({ lt: e.currentTarget.value !== '' ? Number(e.currentTarget.value) : undefined })\n }\n className={popoverStyles.card.numberInput}\n value={lt}\n type={'number'}\n />\n \n {fieldType !== 'float' && (\n \n )}\n
\n
\n\n {/* buttons */}\n
\n {hasExistingFilter && (\n {\n model.setState({\n gt: undefined,\n lt: undefined,\n });\n model.onSubmit();\n }}\n size={'sm'}\n variant={'destructive'}\n fill={'outline'}\n >\n Remove\n \n )}\n model.onSubmit()}\n size={'sm'}\n variant={'primary'}\n fill={'outline'}\n type={'submit'}\n >\n Add\n \n\n selectLabelActionScene.togglePopover()}\n size={'sm'}\n variant={'secondary'}\n fill={'outline'}\n >\n Cancel\n \n
\n
\n
\n
\n );\n };\n}\n\nexport function extractValueFromString(\n inputString: string,\n inputType: 'bytes' | 'duration'\n): { value: number; unit: DisplayByteUnits | DisplayDurationUnits } | undefined {\n if (inputType === 'duration') {\n const durationValues = Object.values(DisplayDurationUnits);\n\n // Check the end of the filter value for a unit that exactly matches\n const durationValue = durationValues.find((durationValue) => {\n const durationValueLength = durationValue.length;\n return inputString.slice(durationValueLength * -1) === durationValue;\n });\n\n if (durationValue) {\n const value = Number(inputString.replace(durationValue, ''));\n if (!isNaN(value)) {\n return {\n unit: durationValue,\n value: value,\n };\n }\n }\n }\n\n if (inputType === 'bytes') {\n const bytesValues = Object.values(DisplayByteUnits)\n // must be sorted from longest to shortest\n .sort((a, b) => b.length - a.length);\n\n // Check the end of the filter value for a unit that exactly matches\n const bytesValue = bytesValues.find((bytesValue) => {\n const byteValueLength = bytesValue.length;\n return inputString.slice(byteValueLength * -1) === bytesValue;\n });\n\n if (bytesValue) {\n const value = Number(inputString.replace(bytesValue, ''));\n if (!isNaN(value)) {\n return {\n unit: bytesValue,\n value: value,\n };\n }\n }\n }\n\n return undefined;\n}\n\nfunction getUnitOptions(\n fieldType: 'duration' | 'bytes'\n): Array> {\n if (fieldType === 'duration') {\n const keys = Object.keys(DisplayDurationUnits) as Array;\n return keys.map((key) => {\n return {\n text: key,\n value: DisplayDurationUnits[key],\n label: key,\n };\n });\n }\n\n if (fieldType === 'bytes') {\n const keys = Object.keys(DisplayByteUnits) as Array;\n return keys.map((key) => {\n return {\n text: key,\n value: DisplayByteUnits[key],\n label: key,\n };\n });\n }\n\n const error = new Error(`invalid field type: ${fieldType}`);\n logger.error(error, { msg: 'getUnitOptions, invalid field type' });\n throw error;\n}\n\nconst getPopoverStyles = (theme: GrafanaTheme2) => ({\n card: {\n buttons: css({\n display: 'flex',\n flexWrap: 'wrap',\n justifyContent: 'flex-end',\n gap: theme.spacing(1.5),\n marginTop: theme.spacing(1),\n }),\n inclusiveInput: css({\n minWidth: '185px',\n }),\n selectInput: css({\n minWidth: '65px',\n }),\n numberInput: css({\n width: '75px',\n }),\n fieldWrap: css({\n display: 'flex',\n flexDirection: 'column',\n paddingTop: theme.spacing(2),\n paddingBottom: 0,\n }),\n field: css({\n display: 'flex',\n alignItems: 'center',\n marginBottom: theme.spacing(1),\n }),\n inclusiveField: css({\n marginRight: theme.spacing(1),\n }),\n unitFieldLabel: css({\n marginLeft: theme.spacing(2),\n marginRight: theme.spacing(1.5),\n }),\n numberFieldLabel: css({\n width: '100px',\n }),\n switchFieldLabel: css({\n marginLeft: theme.spacing(2),\n marginRight: theme.spacing(1),\n }),\n fieldset: css({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n width: '100%',\n marginBottom: 0,\n }),\n title: css({}),\n body: css({\n padding: theme.spacing(2),\n }),\n p: css({\n maxWidth: 300,\n }),\n },\n});\n","import {\n AdHocFiltersVariable,\n SceneComponentProps,\n sceneGraph,\n SceneObjectBase,\n SceneObjectState,\n SceneQueryRunner,\n VizPanel,\n} from '@grafana/scenes';\nimport { getDetectedFieldsFrame, getLogsPanelFrame, ServiceScene } from '../ServiceScene';\nimport { getValueBreakdownLink } from '../../../services/navigate';\nimport { getPrimaryLabelFromUrl, ValueSlugs } from '../../../services/routing';\nimport {\n Button,\n ButtonGroup,\n ButtonSelect,\n IconButton,\n LinkButton,\n Popover,\n PopoverController,\n useStyles2,\n} from '@grafana/ui';\nimport React, { useRef } from 'react';\nimport { addToFilters, clearFilters, InterpolatedFilterType } from './AddToFiltersButton';\nimport { EMPTY_VARIABLE_VALUE, LEVEL_VARIABLE_VALUE, VAR_FIELDS } from '../../../services/variables';\nimport { AdHocVariableFilter, Field, GrafanaTheme2, Labels, LoadingState, SelectableValue } from '@grafana/data';\nimport {\n getFieldsVariable,\n getLabelsVariable,\n getLevelsVariable,\n getValueFromAdHocVariableFilter,\n getValueFromFieldsFilter,\n} from '../../../services/variableGetters';\nimport { FilterOp } from '../../../services/filterTypes';\nimport { LokiQuery } from '../../../services/lokiQuery';\nimport { css } from '@emotion/css';\nimport { rest } from 'lodash';\nimport { NumericFilterPopoverScene } from './NumericFilterPopoverScene';\nimport { getDetectedFieldType } from '../../../services/fields';\nimport { logger } from '../../../services/logger';\nimport { testIds } from '../../../services/testIds';\nimport { findObjectOfType } from '../../../services/scenes';\nimport { syncLevelsVariable } from '../../IndexScene/LevelsVariableScene';\n\ninterface SelectLabelActionSceneState extends SceneObjectState {\n labelName: string;\n fieldType: ValueSlugs;\n hideValueDrilldown?: boolean;\n hasSparseFilters?: boolean;\n hasNumericFilters?: boolean;\n selectedValue?: SelectableValue;\n popover?: NumericFilterPopoverScene;\n showPopover: boolean;\n}\n\nconst INCLUDE_VALUE = 'Include';\nconst EXCLUDE_VALUE = 'Exclude';\nconst NUMERIC_FILTER_VALUE = 'Add to filter';\n\nexport class SelectLabelActionScene extends SceneObjectBase {\n constructor(state: Omit) {\n super({ ...state, showPopover: false });\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n onChange(value: SelectableValue) {\n const variable = this.getVariable();\n const variableName = variable.state.name as InterpolatedFilterType;\n const existingFilter = this.getExistingFilter(variable);\n const fieldValue = getValueFromAdHocVariableFilter(variableName, existingFilter);\n const isIncluded = existingFilter?.operator === FilterOp.NotEqual && fieldValue.value === EMPTY_VARIABLE_VALUE;\n\n if (isIncluded && value.value === INCLUDE_VALUE) {\n this.clearFilter(variableName);\n } else if (value.value === INCLUDE_VALUE) {\n this.onClickExcludeEmpty(variableName);\n } else if (value.value === EXCLUDE_VALUE) {\n this.onClickIncludeEmpty(variableName);\n } else if (value.value === NUMERIC_FILTER_VALUE) {\n this.onClickNumericFilter(variableName);\n }\n\n this.setState({\n selectedValue: value,\n });\n }\n\n public static Component = ({ model }: SceneComponentProps) => {\n const {\n hideValueDrilldown,\n labelName,\n hasSparseFilters,\n hasNumericFilters,\n selectedValue,\n popover,\n showPopover,\n fieldType,\n } = model.useState();\n const variable = model.getVariable();\n const variableName = variable.useState().name as InterpolatedFilterType;\n const existingFilter = model.getExistingFilter(variable);\n const fieldValue = getValueFromAdHocVariableFilter(variableName, existingFilter);\n const styles = useStyles2(getStyles);\n const popoverRef = useRef(null);\n const filterButtonDisabled =\n fieldType === ValueSlugs.label &&\n variable.state.name === VAR_FIELDS &&\n variable.state.filters.filter((f) => f.key !== labelName && f.operator === FilterOp.Equal).length === 0;\n\n const isIncluded = existingFilter?.operator === FilterOp.NotEqual && fieldValue.value === EMPTY_VARIABLE_VALUE;\n const hasOtherFilter = !!existingFilter;\n\n const selectedOptionValue =\n selectedValue?.value ?? (isIncluded ? INCLUDE_VALUE : hasNumericFilters ? NUMERIC_FILTER_VALUE : INCLUDE_VALUE);\n\n const hasExistingNumericFilter = existingFilter?.operator\n ? [FilterOp.gte, FilterOp.gt, FilterOp.lte, FilterOp.lt].includes(existingFilter.operator)\n : false;\n const numericSelected = selectedOptionValue === NUMERIC_FILTER_VALUE || hasExistingNumericFilter;\n const includeSelected = selectedOptionValue === INCLUDE_VALUE && !numericSelected;\n\n const sparseIncludeOption: SelectableValue = {\n value: INCLUDE_VALUE,\n component: () => (\n \n ),\n };\n const sparseExcludeOption: SelectableValue = {\n value: EXCLUDE_VALUE,\n component: () => ,\n };\n const numericFilterOption: SelectableValue = {\n value: NUMERIC_FILTER_VALUE,\n component: () => (\n 30`} />\n ),\n };\n\n const options: Array> = [];\n if (hasNumericFilters) {\n options.push(numericFilterOption);\n }\n\n if (hasSparseFilters) {\n if (!hasExistingNumericFilter) {\n options.push(sparseIncludeOption);\n }\n\n options.push(sparseExcludeOption);\n }\n\n const defaultOption = isIncluded\n ? sparseIncludeOption\n : hasNumericFilters\n ? numericFilterOption\n : sparseIncludeOption;\n\n return (\n <>\n {hasOtherFilter && (\n model.clearFilters(variableName)}\n />\n )}\n {(hasNumericFilters || hasSparseFilters) && (\n <>\n \n model.onChange(selectedValue ?? defaultOption)}\n size={'sm'}\n fill={'outline'}\n variant={'secondary'}\n >\n {selectedValue?.value ?? defaultOption.value}\n \n {\n model.onChange(value);\n }}\n />\n \n \n )}\n {hideValueDrilldown !== true && (\n \n Select\n \n )}\n\n {popover && (\n }>\n {(showPopper, hidePopper, popperProps) => {\n const blurFocusProps = {\n onBlur: hidePopper,\n onFocus: showPopper,\n };\n\n return (\n <>\n {popoverRef.current && (\n <>\n {/* @ts-expect-error @todo upgrade typescript */}\n \n \n )}\n \n );\n }}\n \n )}\n \n );\n };\n\n private getExistingFilter(variable?: AdHocFiltersVariable): AdHocVariableFilter | undefined {\n let { labelName } = getPrimaryLabelFromUrl();\n if (this.state.labelName !== labelName) {\n return variable?.state.filters.find((filter) => {\n return filter.key === this.state.labelName;\n });\n }\n\n return undefined;\n }\n\n public onActivate() {\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n\n if (serviceScene.state.$data?.state.data?.state === LoadingState.Done) {\n this.calculateSparsity();\n }\n\n this._subs.add(\n sceneGraph.getData(this).subscribeToState((newState) => {\n if (newState.data?.state === LoadingState.Done) {\n if (serviceScene.state.$data?.state.data?.state === LoadingState.Done) {\n this.calculateSparsity();\n }\n\n this._subs.add(\n serviceScene.state.$data?.subscribeToState((newLogsPanelState) => {\n if (newLogsPanelState.data?.state === LoadingState.Done) {\n this.calculateSparsity();\n }\n })\n );\n }\n })\n );\n }\n\n public onClickNumericFilter = (variableType: InterpolatedFilterType) => {\n const detectedFieldFrame = getDetectedFieldsFrame(this);\n const fieldType = getDetectedFieldType(this.state.labelName, detectedFieldFrame);\n\n if (!fieldType || fieldType === 'string' || fieldType === 'boolean' || fieldType === 'int') {\n const error = new Error(`Incorrect field type: ${fieldType}`);\n logger.error(error, { msg: `onClickNumericFilter invalid field type ${fieldType}` });\n throw error;\n }\n\n this.setState({\n popover: new NumericFilterPopoverScene({ labelName: this.state.labelName, variableType, fieldType }),\n });\n this.togglePopover();\n };\n\n public getViewValuesLink = () => {\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n return getValueBreakdownLink(this.state.fieldType, this.state.labelName, serviceScene);\n };\n\n public onClickExcludeEmpty = (variableType: InterpolatedFilterType) => {\n addToFilters(this.state.labelName, EMPTY_VARIABLE_VALUE, 'exclude', this, variableType);\n };\n\n public onClickIncludeEmpty = (variableType: InterpolatedFilterType) => {\n // If json do we want != '{}'?\n addToFilters(this.state.labelName, EMPTY_VARIABLE_VALUE, 'include', this, variableType);\n };\n\n public clearFilter = (variableType: InterpolatedFilterType) => {\n addToFilters(this.state.labelName, EMPTY_VARIABLE_VALUE, 'clear', this, variableType);\n };\n\n public clearFilters = (variableType: InterpolatedFilterType) => {\n clearFilters(this.state.labelName, this, variableType);\n if (this.state.labelName === LEVEL_VARIABLE_VALUE) {\n syncLevelsVariable(this);\n }\n };\n\n public togglePopover() {\n this.setState({\n showPopover: !this.state.showPopover,\n });\n }\n\n private calculateSparsity() {\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n const logsPanelData = getLogsPanelFrame(serviceScene.state.$data?.state.data);\n const labels: Field | undefined = logsPanelData?.fields.find((field) => field.name === 'labels');\n\n const data = sceneGraph.getData(this);\n const queryRunner = findObjectOfType(data, (o) => o instanceof SceneQueryRunner, SceneQueryRunner);\n if (queryRunner) {\n const queries = queryRunner.state.queries;\n const query = queries[0] as LokiQuery | undefined;\n if (query?.expr.includes('avg_over_time')) {\n this.setState({\n hasNumericFilters: true,\n });\n }\n }\n\n if (!labels || !logsPanelData) {\n this.setState({\n hasSparseFilters: false,\n });\n return;\n }\n const variable = this.getVariable();\n // iterate through all the labels on the log panel query result and count how many times this exists\n const logLinesWithLabelCount = labels.values.reduce((acc, labels) => {\n if (labels?.[this.state.labelName]) {\n acc++;\n }\n return acc;\n }, 0);\n\n const panel = sceneGraph.getAncestor(this, VizPanel);\n if (logLinesWithLabelCount !== undefined && logsPanelData.length > 0) {\n const percentage = ((logLinesWithLabelCount / logsPanelData.length) * 100).toLocaleString();\n const description = `${this.state.labelName} exists on ${percentage}% of ${logsPanelData.length} sampled log lines`;\n\n // Update the desc\n panel.setState({\n description,\n });\n } else {\n panel.setState({\n description: undefined,\n });\n }\n\n // Only show for sparse fields and existing include and exclude filters, which will match an empty string in the value\n const existingFilter = this.getExistingFilter(variable);\n const existingFilterValue =\n existingFilter && variable.state.name === VAR_FIELDS ? getValueFromFieldsFilter(existingFilter) : undefined;\n\n if (logLinesWithLabelCount < logsPanelData.length || existingFilterValue?.value === EMPTY_VARIABLE_VALUE) {\n this.setState({\n hasSparseFilters: true,\n });\n } else {\n this.setState({\n hasSparseFilters: false,\n });\n }\n }\n\n private getVariable() {\n if (this.state.fieldType === ValueSlugs.field) {\n return getFieldsVariable(this);\n } else if (this.state.labelName === LEVEL_VARIABLE_VALUE) {\n return getLevelsVariable(this);\n } else {\n return getLabelsVariable(this);\n }\n }\n}\n\nfunction SelectableValueComponent(props: { text: string; selected: boolean }) {\n const styles = useStyles2(getSelectableValueComponentStyles);\n return (\n \n {props.selected && }\n {props.text}\n \n );\n}\n\nconst getSelectableValueComponentStyles = (theme: GrafanaTheme2) => {\n return {\n selected: css({\n label: 'selectable-value-selected',\n '&:before': {\n content: '\"\"',\n position: 'absolute',\n left: 0,\n top: '4px',\n height: 'calc(100% - 8px)',\n width: '2px',\n backgroundColor: theme.colors.warning.main,\n },\n }),\n description: css({\n textAlign: 'left',\n fontSize: theme.typography.pxToRem(12),\n }),\n };\n};\n\nconst getStyles = (theme: GrafanaTheme2) => {\n return {\n popover: css({\n borderRadius: theme.shape.radius.default,\n boxShadow: theme.shadows.z3,\n background: theme.colors.background.primary,\n border: `1px solid ${theme.colors.border.weak}`,\n }),\n description: css({\n textAlign: 'left',\n fontSize: theme.typography.pxToRem(12),\n }),\n buttonSelect: css({\n border: `1px solid ${theme.colors.border.strong}`,\n borderLeft: 'none',\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n padding: 1,\n height: '24px',\n }),\n };\n};\n","import { SceneComponentProps, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport React from 'react';\nimport { BusEventBase, DataFrame, FieldReducerInfo, ReducerID, SelectableValue, fieldReducers } from '@grafana/data';\nimport { getLabelValueFromDataFrame } from 'services/levels';\nimport { InlineField, Select } from '@grafana/ui';\nimport { getSortByPreference, setSortByPreference } from 'services/store';\nimport { testIds } from '../../../services/testIds';\nimport { DEFAULT_SORT_BY } from '../../../services/sorting';\n\nexport type SortBy = 'changepoint' | 'outliers' | ReducerID | '';\nexport type SortDirection = 'asc' | 'desc';\nexport interface SortBySceneState extends SceneObjectState {\n target: 'fields' | 'labels';\n sortBy: SortBy;\n direction: SortDirection;\n}\n\nexport class SortCriteriaChanged extends BusEventBase {\n constructor(public target: 'fields' | 'labels', public sortBy: string, public direction: string) {\n super();\n }\n public static type = 'sort-criteria-changed';\n}\n\nexport class SortByScene extends SceneObjectBase {\n public sortingOptions: Array<{ label: string; options: SelectableValue }> = [\n {\n label: '',\n options: [\n {\n value: 'changepoint',\n label: 'Most relevant',\n description: 'Smart ordering of graphs based on the most significant spikes in the data',\n },\n {\n value: 'outliers',\n label: 'Outlying values',\n description: 'Order by the amount of outlying values in the data',\n },\n {\n value: ReducerID.stdDev,\n label: 'Widest spread',\n description: 'Sort graphs by deviation from the average value',\n },\n {\n value: 'alphabetical',\n label: 'Name',\n description: 'Alphabetical order',\n },\n {\n value: ReducerID.sum,\n label: 'Count',\n description: 'Sort graphs by total number of logs',\n },\n {\n value: ReducerID.max,\n label: 'Highest spike',\n description: 'Sort graphs by the highest values (max)',\n },\n {\n value: ReducerID.min,\n label: 'Lowest dip',\n description: 'Sort graphs by the smallest values (min)',\n },\n ],\n },\n {\n label: 'Percentiles',\n options: [...fieldReducers.selectOptions([], filterReducerOptions).options],\n },\n ];\n\n constructor(state: Pick) {\n const { sortBy, direction } = getSortByPreference(state.target, DEFAULT_SORT_BY, 'desc');\n super({\n target: state.target,\n sortBy,\n direction,\n });\n }\n\n public onCriteriaChange = (criteria: SelectableValue) => {\n if (!criteria.value) {\n return;\n }\n this.setState({ sortBy: criteria.value });\n setSortByPreference(this.state.target, criteria.value, this.state.direction);\n this.publishEvent(new SortCriteriaChanged(this.state.target, criteria.value, this.state.direction), true);\n };\n\n public onDirectionChange = (direction: SelectableValue) => {\n if (!direction.value) {\n return;\n }\n this.setState({ direction: direction.value });\n setSortByPreference(this.state.target, this.state.sortBy, direction.value);\n this.publishEvent(new SortCriteriaChanged(this.state.target, this.state.sortBy, direction.value), true);\n };\n\n public static Component = ({ model }: SceneComponentProps) => {\n const { sortBy, direction } = model.useState();\n const group = model.sortingOptions.find((group) =>\n group.options.find((option: SelectableValue) => option.value === sortBy)\n );\n const sortByValue: SelectableValue | undefined = group?.options.find(\n (option: SelectableValue) => option.value === sortBy\n );\n return (\n <>\n \n \n \n \n \n \n \n );\n };\n}\n\nconst ENABLED_PERCENTILES = ['p10', 'p25', 'p75', 'p90', 'p99'];\nfunction filterReducerOptions(ext: FieldReducerInfo) {\n if (ext.id >= 'p1' && ext.id <= 'p99') {\n return ENABLED_PERCENTILES.includes(ext.id);\n }\n return false;\n}\n\nexport function getLabelValue(frame: DataFrame) {\n return getLabelValueFromDataFrame(frame) ?? 'No labels';\n}\n","import { css } from '@emotion/css';\nimport React, { ReactNode } from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { LoadingPlaceholder, useStyles2 } from '@grafana/ui';\n\ntype Props = {\n blockingMessage?: string;\n isLoading?: boolean;\n children?: ReactNode;\n};\n\nexport function StatusWrapper({ blockingMessage, isLoading, children }: Props) {\n const styles = useStyles2(getStyles);\n\n if (isLoading && !blockingMessage) {\n blockingMessage = 'Loading...';\n }\n\n if (isLoading) {\n return ;\n }\n\n if (!blockingMessage) {\n return <>{children};\n }\n\n return
{blockingMessage}
;\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n statusMessage: css({\n fontStyle: 'italic',\n marginTop: theme.spacing(7),\n textAlign: 'center',\n }),\n };\n}\n","export const MAX_NUMBER_OF_TIME_SERIES = 20;\n","import { GrafanaTheme2 } from '@grafana/data';\n\n// from /grafana/grafana/packages/grafana-ui/src/themes/mixins.ts\nexport function getFocusStyles(theme: GrafanaTheme2) {\n return {\n outline: '2px dotted transparent',\n outlineOffset: '2px',\n boxShadow: `0 0 0 2px ${theme.colors.background.canvas}, 0 0 0px 4px ${theme.colors.primary.main}`,\n transitionTimingFunction: `cubic-bezier(0.19, 1, 0.22, 1)`,\n transitionDuration: '0.2s',\n transitionProperty: 'outline, outline-offset, box-shadow',\n };\n}\n\nexport function getMouseFocusStyles(theme: GrafanaTheme2) {\n return {\n outline: 'none',\n boxShadow: `none`,\n };\n}\n\nexport function getIconButtonBefore(hoverSize: number, theme: GrafanaTheme2) {\n return {\n zIndex: '-1',\n position: 'absolute',\n opacity: '0',\n width: `${hoverSize}px`,\n height: `${hoverSize}px`,\n borderRadius: theme.shape.radius.default,\n content: '\"\"',\n [theme.transitions.handleMotion('no-preference', 'reduce')]: {\n transitionDuration: '0.2s',\n transitionTimingFunction: 'cubic-bezier(0.4, 0, 0.2, 1)',\n transitionProperty: 'opacity',\n },\n };\n}\n","import { IconButtonVariant, Tooltip, useTheme2 } from '@grafana/ui';\nimport React from 'react';\nimport { colorManipulator, GrafanaTheme2 } from '@grafana/data';\nimport { css, cx } from '@emotion/css';\nimport { getFocusStyles, getIconButtonBefore, getMouseFocusStyles } from '../../../services/mixins';\n\nexport type RegexInputValue = 'regex' | 'match';\ninterface Props {\n onRegexToggle: (state: RegexInputValue) => void;\n regex: boolean;\n}\n\nexport const RegexIconButton = (props: Props) => {\n const theme = useTheme2();\n const fill = props.regex ? theme.colors.text.maxContrast : theme.colors.text.disabled;\n const styles = getStyles(theme);\n const description = `${props.regex ? 'Disable' : 'Enable'} regex`;\n\n return (\n \n props.onRegexToggle(props.regex ? 'match' : 'regex')}\n className={cx(styles.button, props.regex ? styles.active : null)}\n aria-label={description}\n >\n \n \n .*\n \n \n \n \n );\n};\n\nconst getStyles = (theme: GrafanaTheme2, variant: IconButtonVariant = 'secondary') => {\n const hoverSize = 16 + theme.spacing.gridSize;\n\n return {\n button: css({\n zIndex: 0,\n position: 'relative',\n margin: `0 ${theme.spacing.x0_5} 0 ${theme.spacing.x0_5}`,\n boxShadow: 'none',\n border: 'none',\n display: 'inline-flex',\n background: 'transparent',\n justifyContent: 'center',\n alignItems: 'center',\n padding: 0,\n color: theme.colors.text.primary,\n\n '&:before': {\n ...getIconButtonBefore(hoverSize, theme),\n position: 'absolute',\n },\n\n '&:hover': {\n '&:before': {\n backgroundColor:\n variant === 'secondary'\n ? theme.colors.action.hover\n : colorManipulator.alpha(theme.colors.text.primary, 0.12),\n opacity: 1,\n },\n },\n\n '&:focus, &:focus-visible': getFocusStyles(theme),\n '&:focus:not(:focus-visible)': getMouseFocusStyles(theme),\n }),\n active: css({\n '&:before': {\n backgroundColor:\n variant === 'secondary' ? theme.colors.action.hover : colorManipulator.alpha(theme.colors.text.primary, 0.12),\n opacity: 1,\n },\n '&:hover': {\n '&:before': {\n backgroundColor: 'none',\n opacity: 0,\n },\n },\n }),\n };\n};\n","import { IconButtonVariant, Tooltip, useTheme2 } from '@grafana/ui';\nimport React from 'react';\nimport { colorManipulator, GrafanaTheme2 } from '@grafana/data';\nimport { css, cx } from '@emotion/css';\nimport { getFocusStyles, getIconButtonBefore, getMouseFocusStyles } from '../../../services/mixins';\nimport { LineFilterCaseSensitive } from '../../../services/filterTypes';\n\ninterface Props {\n onCaseSensitiveToggle: (state: LineFilterCaseSensitive) => void;\n caseSensitive: boolean;\n}\n\nexport const LineFilterCaseSensitivityButton = (props: Props) => {\n const theme = useTheme2();\n const fill = props.caseSensitive ? theme.colors.text.maxContrast : theme.colors.text.disabled;\n const styles = getStyles(theme);\n const description = `${props.caseSensitive ? 'Disable' : 'Enable'} case match`;\n\n return (\n \n \n props.onCaseSensitiveToggle(\n props.caseSensitive ? LineFilterCaseSensitive.caseInsensitive : LineFilterCaseSensitive.caseSensitive\n )\n }\n className={cx(styles.button, props.caseSensitive ? styles.active : null)}\n aria-label={description}\n >\n \n \n Aa\n \n \n \n \n );\n};\n\nconst getStyles = (theme: GrafanaTheme2, variant: IconButtonVariant = 'secondary') => {\n const hoverSize = 16 + theme.spacing.gridSize;\n\n return {\n button: css({\n zIndex: 0,\n position: 'relative',\n margin: `0 ${theme.spacing.x0_5} 0 ${theme.spacing.x0_5}`,\n boxShadow: 'none',\n border: 'none',\n display: 'inline-flex',\n background: 'transparent',\n justifyContent: 'center',\n alignItems: 'center',\n padding: 0,\n color: theme.colors.text.primary,\n\n '&:before': {\n ...getIconButtonBefore(hoverSize, theme),\n position: 'absolute',\n },\n\n '&:hover': {\n '&:before': {\n backgroundColor:\n variant === 'secondary'\n ? theme.colors.action.hover\n : colorManipulator.alpha(theme.colors.text.primary, 0.12),\n opacity: 1,\n },\n },\n\n '&:focus, &:focus-visible': getFocusStyles(theme),\n '&:focus:not(:focus-visible)': getMouseFocusStyles(theme),\n }),\n active: css({\n '&:before': {\n backgroundColor:\n variant === 'secondary' ? theme.colors.action.hover : colorManipulator.alpha(theme.colors.text.primary, 0.12),\n opacity: 1,\n },\n '&:hover': {\n '&:before': {\n backgroundColor: 'none',\n opacity: 0,\n },\n },\n }),\n };\n};\n","import { css } from '@emotion/css';\nimport { Icon, IconButton, Input, useStyles2 } from '@grafana/ui';\nimport React, { HTMLProps } from 'react';\nimport { GrafanaTheme2 } from '@grafana/data';\n\ninterface Props extends Omit, 'width' | 'prefix'> {\n onClear?: () => void;\n suffix?: React.ReactNode;\n prefix?: React.ReactNode;\n width?: number;\n}\n\nexport const LineFilterInput = ({ value, onChange, placeholder, onClear, suffix, width, ...rest }: Props) => {\n const styles = useStyles2(getStyles);\n return (\n \n {onClear && value ? (\n \n ) : undefined}\n {suffix && suffix}\n \n }\n prefix={}\n placeholder={placeholder}\n {...rest}\n />\n );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n suffixWrapper: css({\n gap: theme.spacing(0.5),\n display: 'inline-flex',\n }),\n clearIcon: css({\n cursor: 'pointer',\n }),\n});\n","import React, { useEffect, useState } from 'react';\nimport { RegexIconButton } from './RegexIconButton';\nimport { Button, Field, Select, useStyles2 } from '@grafana/ui';\nimport { testIds } from '../../../services/testIds';\nimport { css, cx } from '@emotion/css';\nimport { LineFilterCaseSensitivityButton } from './LineFilterCaseSensitivityButton';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { LineFilterInput } from '../Breakdowns/LineFilterInput';\nimport { LineFilterProps } from '../../IndexScene/LineFilterVariable';\n\nexport interface LineFilterEditorProps extends LineFilterProps {\n focus: boolean;\n setFocus: (focus: boolean) => void;\n type: 'variable' | 'editor';\n}\n\nconst INITIAL_INPUT_WIDTH = 30;\n\nexport function LineFilterEditor({\n exclusive,\n lineFilter,\n caseSensitive,\n setExclusive,\n regex,\n onInputChange,\n onCaseSensitiveToggle,\n onRegexToggle,\n handleEnter,\n onSubmitLineFilter,\n onClearLineFilter,\n focus,\n setFocus,\n type,\n}: LineFilterEditorProps) {\n const styles = useStyles2((theme) => getStyles(theme, type));\n const [width, setWidth] = useState(INITIAL_INPUT_WIDTH);\n\n function resize(content?: string) {\n // The input width roughly corresponds to char count\n const width = Math.max(content?.length ?? 0, INITIAL_INPUT_WIDTH);\n // We add a few extra because the buttons are absolutely positioned within the input width\n setWidth(width + 9);\n }\n\n useEffect(() => {\n resize(lineFilter);\n }, [lineFilter, focus]);\n\n return (\n
\n {!onSubmitLineFilter && (\n setExclusive(!exclusive)}\n />\n )}\n \n setFocus(true)}\n // onBlur={() => setFocus(false)}\n data-testid={testIds.exploreServiceDetails.searchLogs}\n value={lineFilter}\n className={cx(onSubmitLineFilter ? styles.inputNoBorderRight : undefined, styles.input)}\n onChange={onInputChange}\n suffix={\n \n \n \n \n }\n prefix={null}\n placeholder=\"Search in log lines\"\n onClear={onClearLineFilter}\n onKeyUp={(e) => {\n handleEnter(e, lineFilter);\n resize(lineFilter);\n }}\n />\n \n {onSubmitLineFilter && (\n \n {\n setExclusive(false);\n onSubmitLineFilter();\n }}\n className={styles.includeButton}\n variant={'secondary'}\n fill={'outline'}\n disabled={!lineFilter}\n >\n Include\n \n {\n setExclusive(true);\n onSubmitLineFilter();\n }}\n className={styles.excludeButton}\n variant={'secondary'}\n fill={'outline'}\n disabled={!lineFilter}\n >\n Exclude\n \n \n )}\n
\n );\n}\n\nconst getStyles = (theme: GrafanaTheme2, type: 'variable' | 'editor') => ({\n inputNoBorderRight: css({\n input: {\n borderTopRightRadius: 0,\n borderBottomRightRadius: 0,\n },\n }),\n suffix: css({\n display: 'inline-flex',\n gap: theme.spacing(0.5),\n }),\n removeBtn: css({\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n }),\n buttonWrap: css({\n display: 'flex',\n justifyContent: 'center',\n }),\n includeButton: css({\n borderLeft: 'none',\n borderRadius: 0,\n borderRight: 'none',\n '&[disabled]': {\n borderRight: 'none',\n },\n }),\n excludeButton: css({\n borderRadius: `0 ${theme.shape.radius.default} ${theme.shape.radius.default} 0`,\n borderLeft: 'none',\n '&[disabled]': {\n borderLeft: 'none',\n },\n }),\n submit: css({\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n }),\n select: css({\n label: 'line-filter-exclusion',\n marginLeft: 0,\n paddingLeft: 0,\n height: 'auto',\n borderBottomRightRadius: '0',\n borderTopRightRadius: '0',\n borderRight: 'none',\n minHeight: '30px',\n minWidth: '95px',\n maxWidth: '95px',\n outline: 'none',\n }),\n wrapper: css({\n display: 'flex',\n width: '100%',\n }),\n input: css({\n label: 'line-filter-input-wrapper',\n minWidth: '200px',\n\n // Keeps the input from overflowing container on resize\n maxWidth: type === 'editor' ? 'calc(100vw - 198px)' : 'calc(100vw - 288px)',\n\n input: {\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n fontFamily: 'monospace',\n fontSize: theme.typography.bodySmall.fontSize,\n width: '100%',\n },\n }),\n exclusiveBtn: css({\n marginRight: '1rem',\n }),\n field: css({\n label: 'field',\n flex: '0 1 auto',\n marginBottom: 0,\n }),\n});\n","import { css } from '@emotion/css';\nimport { SceneComponentProps, sceneGraph, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport { Button, InlineField, RadioButtonGroup, Tooltip, useStyles2 } from '@grafana/ui';\nimport React from 'react';\nimport { getLogOption, LogsVisualizationType, setLogOption } from 'services/store';\nimport { LogsListScene } from './LogsListScene';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from 'services/analytics';\nimport { LogsPanelHeaderActions } from '../Table/LogsHeaderActions';\nimport { GrafanaTheme2, LogsSortOrder } from '@grafana/data';\nimport { LogsPanelScene } from './LogsPanelScene';\nimport { locationService } from '@grafana/runtime';\nimport { narrowLogsSortOrder } from '../../services/narrowing';\nimport { logger } from '../../services/logger';\n\ninterface LogOptionsState extends SceneObjectState {\n visualizationType: LogsVisualizationType;\n onChangeVisualizationType: (type: LogsVisualizationType) => void;\n}\n\n/**\n * The options rendered in the logs panel header\n */\nexport class LogOptionsScene extends SceneObjectBase {\n static Component = LogOptionsRenderer;\n\n constructor(state: LogOptionsState) {\n super({\n ...state,\n });\n }\n\n handleWrapLinesChange = (type: boolean) => {\n this.getLogsPanelScene().setState({ wrapLogMessage: type });\n setLogOption('wrapLogMessage', type);\n this.getLogsListScene().setLogsVizOption({ wrapLogMessage: type });\n this.getLogsListScene().setLogsVizOption({ prettifyLogMessage: type });\n };\n\n onChangeLogsSortOrder = (sortOrder: LogsSortOrder) => {\n this.getLogsPanelScene().setState({ sortOrder: sortOrder });\n setLogOption('sortOrder', sortOrder);\n this.getLogsListScene().setLogsVizOption({ sortOrder: sortOrder });\n };\n\n getLogsListScene = () => {\n return sceneGraph.getAncestor(this, LogsListScene);\n };\n\n getLogsPanelScene = () => {\n return sceneGraph.getAncestor(this, LogsPanelScene);\n };\n\n clearDisplayedFields = () => {\n const parentScene = this.getLogsListScene();\n parentScene.clearDisplayedFields();\n reportAppInteraction(\n USER_EVENTS_PAGES.service_details,\n USER_EVENTS_ACTIONS.service_details.logs_clear_displayed_fields\n );\n };\n}\n\nfunction LogOptionsRenderer({ model }: SceneComponentProps) {\n const { onChangeVisualizationType, visualizationType } = model.useState();\n const { wrapLogMessage, sortOrder } = model.getLogsPanelScene().useState();\n const { displayedFields } = model.getLogsListScene().useState();\n const styles = useStyles2(getStyles);\n const wrapLines = wrapLogMessage ?? false;\n\n return (\n
\n {displayedFields.length > 0 && (\n \n \n \n )}\n \n \n \n\n \n \n \n \n
\n );\n}\n\nexport function getLogsPanelSortOrderFromStore() {\n return getLogOption('sortOrder', LogsSortOrder.Descending) as LogsSortOrder;\n}\n\nexport function getLogsPanelSortOrderFromURL() {\n // Since sort order is used to execute queries before the logs panel is instantiated, the scene url state will never influence the query\n // Hacking this for now to manually check the URL search params to override local storage state if set\n const location = locationService.getLocation();\n const search = new URLSearchParams(location.search);\n const sortOrder = search.get('sortOrder');\n\n try {\n if (typeof sortOrder === 'string') {\n const decodedSortOrder = narrowLogsSortOrder(JSON.parse(sortOrder));\n if (decodedSortOrder) {\n return decodedSortOrder;\n }\n }\n } catch (e) {\n // URL Params can be manually changed and it will make JSON.parse() fail.\n logger.error(e, { msg: 'LogOptionsScene(getLogsPanelSortOrderFromURL): unable to parse sortOrder' });\n }\n\n return false;\n}\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n container: css({\n display: 'flex',\n alignItems: 'center',\n gap: theme.spacing(1),\n marginTop: theme.spacing(0.5),\n }),\n buttonGroupWrapper: css({\n margin: 0,\n alignItems: 'center',\n }),\n});\n","import React, { createContext, ReactNode, useCallback, useContext, useEffect, useState } from 'react';\nimport { ActiveFieldMeta, FieldNameMetaStore } from 'Components/Table/TableTypes';\nimport { getBodyName, getTimeName, LogsFrame } from '../../../services/logsFrame';\nimport { logger } from '../../../services/logger';\n\nimport { PLUGIN_ID } from '../../../services/plugin';\nimport { NarrowingError, narrowRecordStringNumber } from '../../../services/narrowing';\n\nconst tableColumnCustomWidths = `${PLUGIN_ID}.tableColumnWidths`;\n\ntype TableColumnsContextType = {\n // the current list of labels from the dataframe combined with UI metadata\n columns: FieldNameMetaStore;\n // The active search results\n filteredColumns?: FieldNameMetaStore;\n // Update the column state\n setColumns(newColumns: FieldNameMetaStore): void;\n // Update search state\n setFilteredColumns(newColumns?: FieldNameMetaStore): void;\n // WIP - sets the visibility of the drawer right now\n visible: boolean;\n setVisible: (v: boolean) => void;\n bodyState: LogLineState;\n setBodyState: (s: LogLineState) => void;\n clearSelectedLine: () => void;\n setColumnWidthMap(map: Record): void;\n columnWidthMap: Record;\n};\n\nexport enum LogLineState {\n text = 'text',\n labels = 'labels',\n auto = 'auto',\n}\n\nconst TableColumnsContext = createContext({\n columnWidthMap: {},\n setColumnWidthMap: () => {},\n columns: {},\n filteredColumns: {},\n setColumns: () => {},\n setFilteredColumns: () => {},\n setVisible: () => false,\n visible: false,\n bodyState: LogLineState.auto,\n setBodyState: () => {},\n clearSelectedLine: () => {},\n});\n\nfunction setDefaultColumns(\n columns: FieldNameMetaStore,\n handleSetColumns: (newColumns: FieldNameMetaStore) => void,\n logsFrame: LogsFrame\n) {\n const pendingColumns = { ...columns };\n\n pendingColumns[getTimeName(logsFrame)] = {\n index: 0,\n active: true,\n type: 'TIME_FIELD',\n percentOfLinesWithLabel: 100,\n cardinality: Infinity,\n };\n pendingColumns[getBodyName(logsFrame)] = {\n index: 1,\n active: true,\n type: 'BODY_FIELD',\n percentOfLinesWithLabel: 100,\n cardinality: Infinity,\n };\n handleSetColumns(pendingColumns);\n}\n\nfunction getColumnWidthsFromLocalStorage(): Record {\n let initialColumnWidths = {};\n const existingWidths = localStorage.getItem(tableColumnCustomWidths);\n if (existingWidths) {\n try {\n initialColumnWidths = narrowRecordStringNumber(JSON.parse(existingWidths));\n if (initialColumnWidths === false) {\n logger.error(\n new NarrowingError('getColumnWidthsFromLocalStorage: unable to validate values in local storage'),\n { msg: 'NarrowingError: error parsing table column widths from local storage' }\n );\n }\n return initialColumnWidths;\n } catch (e) {\n logger.error(e, { msg: 'error parsing table column widths from local storage' });\n }\n }\n return initialColumnWidths;\n}\n\nexport const TableColumnContextProvider = ({\n children,\n initialColumns,\n logsFrame,\n setUrlColumns,\n clearSelectedLine,\n setUrlTableBodyState,\n urlTableBodyState,\n showColumnManagementDrawer,\n isColumnManagementActive,\n}: {\n children: ReactNode;\n initialColumns: FieldNameMetaStore;\n logsFrame: LogsFrame;\n setUrlColumns: (columns: string[]) => void;\n clearSelectedLine: () => void;\n setUrlTableBodyState: (logLineState: LogLineState) => void;\n urlTableBodyState?: LogLineState;\n showColumnManagementDrawer: (isActive: boolean) => void;\n isColumnManagementActive: boolean;\n}) => {\n const [columns, setColumns] = useState(removeExtraColumns(initialColumns));\n const [bodyState, setBodyState] = useState(urlTableBodyState ?? LogLineState.auto);\n const [filteredColumns, setFilteredColumns] = useState(undefined);\n\n const initialColumnWidths = getColumnWidthsFromLocalStorage();\n const [columnWidthMap, setColumnWidthMapState] = useState>(initialColumnWidths);\n const setColumnWidthMap = (map: Record) => {\n localStorage.setItem(tableColumnCustomWidths, JSON.stringify(map));\n setColumnWidthMapState(map);\n };\n\n const getActiveColumns = (columns: FieldNameMetaStore): string[] => {\n let activeColumns: string[] = [];\n Object.keys(columns).forEach((fieldName) => {\n if (columns[fieldName].active && columns[fieldName].index !== undefined) {\n activeColumns.push(fieldName);\n }\n });\n activeColumns.sort((a, b) => {\n // Typescript doesn't seem to know that the indicies we picked in the loop above are only for ActiveFieldMeta, so we're forced to assert\n const colA: ActiveFieldMeta = columns[a] as ActiveFieldMeta;\n const colB: ActiveFieldMeta = columns[b] as ActiveFieldMeta;\n return colA.index - colB.index;\n });\n return activeColumns;\n };\n\n const handleSetColumns = useCallback(\n (newColumns: FieldNameMetaStore) => {\n if (newColumns) {\n const columns = removeExtraColumns(newColumns);\n\n setColumns(columns);\n\n // Sync react state update with scenes url management\n setUrlColumns(getActiveColumns(columns));\n }\n },\n [setUrlColumns]\n );\n\n const handleSetBodyState = useCallback(\n (logLineState: LogLineState) => {\n setBodyState(logLineState);\n\n // Sync change with url state\n setUrlTableBodyState(logLineState);\n },\n [setUrlTableBodyState]\n );\n\n const handleClearSelectedLine = () => {\n clearSelectedLine();\n };\n\n const handleSetVisible = useCallback(\n (isVisible: boolean) => {\n showColumnManagementDrawer(isVisible);\n },\n [showColumnManagementDrawer]\n );\n\n // When the parent component recalculates new columns on dataframe change, we need to update or the column UI will be stale!\n useEffect(() => {\n if (initialColumns) {\n handleSetColumns(initialColumns);\n }\n }, [initialColumns, handleSetColumns]);\n\n // When the columns are updated, we need to check if nothing is selected so we can set the default\n useEffect(() => {\n const activeColumns = getDefaultColumns(columns, logsFrame);\n if (activeColumns?.length) {\n const activeFields = Object.keys(columns).filter((col) => columns[col].active);\n\n // If we're missing all fields, the user must have removed the last column, let's revert back to the default state\n if (activeFields.length === 0) {\n setDefaultColumns(columns, handleSetColumns, logsFrame);\n }\n\n // Reset any local search state\n setFilteredColumns(undefined);\n }\n }, [columns, logsFrame, setFilteredColumns, handleSetColumns]);\n\n return (\n \n {children}\n \n );\n};\n/**\n * Filter out fields that shouldn't be exposed in the UI\n * @param columns\n */\nconst removeExtraColumns = (columns: FieldNameMetaStore): FieldNameMetaStore => {\n // Remove label Types\n if ('labelTypes' in columns) {\n const { labelTypes, ...columnsToSet }: FieldNameMetaStore = {\n ...columns,\n };\n return columnsToSet;\n }\n return columns;\n};\n\nfunction getDefaultColumns(pendingLabelState: FieldNameMetaStore, logsFrame: LogsFrame) {\n if (!logsFrame) {\n logger.warn('missing dataframe, cannot set url state');\n return;\n }\n // Get all active columns and sort by index\n const newColumnsArray = Object.keys(pendingLabelState)\n // Only include active filters\n .filter((key) => pendingLabelState[key]?.active)\n .sort((a, b) => {\n const pa = pendingLabelState[a];\n const pb = pendingLabelState[b];\n if (pa.index !== undefined && pb.index !== undefined) {\n return pa.index - pb.index; // sort by index\n }\n return 0;\n });\n\n const timeField = logsFrame.timeField;\n const bodyField = logsFrame.bodyField;\n\n if ((timeField && bodyField) || newColumnsArray.length) {\n const defaultColumns = [];\n if (timeField?.name) {\n defaultColumns.push(timeField.name);\n }\n if (bodyField?.name) {\n defaultColumns.push(bodyField.name);\n }\n\n // Update url state\n return newColumnsArray.length ? newColumnsArray : defaultColumns;\n }\n\n return [];\n}\n\nexport const useTableColumnContext = () => {\n return useContext(TableColumnsContext);\n};\n","import React, { createContext, ReactNode, useCallback, useContext, useState } from 'react';\n\nexport type CellIndex = {\n fieldName?: string;\n // If the field contains labels (like log line), we need to know which field (line) and which label (e.g. level)\n subFieldName?: string;\n index: number | null;\n numberOfMenuItems?: number;\n};\n\ntype TableCellContextType = {\n cellIndex: CellIndex;\n setActiveCellIndex(cellIndex: CellIndex): void;\n};\n\nconst TableCellContext = createContext({\n cellIndex: { index: null, numberOfMenuItems: 3 },\n setActiveCellIndex: (cellIndex: CellIndex) => false,\n});\n\nexport const TableCellContextProvider = ({ children }: { children: ReactNode }) => {\n const [cellActive, setCellActive] = useState({ index: null });\n\n const handleCellActive = useCallback((cellIndex: CellIndex) => {\n setCellActive(cellIndex);\n }, []);\n\n return (\n \n {children}\n \n );\n};\n\nexport const useTableCellContext = () => {\n return useContext(TableCellContext);\n};\n","import React, { createContext, ReactNode, useCallback, useContext, useState } from 'react';\n\ntype TableHeaderContextType = {\n isHeaderMenuActive: boolean;\n setHeaderMenuActive: (isHeaderMenuActive: boolean) => void;\n};\n\nconst TableHeaderContext = createContext({\n isHeaderMenuActive: false,\n setHeaderMenuActive: (isHeaderMenuActive: boolean) => false,\n});\n\nexport const TableHeaderContextProvider = ({ children }: { children: ReactNode }) => {\n const [isHeaderMenuActive, setHeaderMenuActive] = useState(false);\n\n const handleisHeaderMenuActive = useCallback((isHeaderMenuActive: boolean) => {\n setHeaderMenuActive(isHeaderMenuActive);\n }, []);\n\n return (\n \n {children}\n \n );\n};\n\nexport const useTableHeaderContext = () => {\n return useContext(TableHeaderContext);\n};\n","import React from 'react';\nimport { css } from '@emotion/css';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { Field, Input, useTheme2 } from '@grafana/ui';\n\nimport { useTableColumnContext } from 'Components/Table/Context/TableColumnsContext';\nimport { FieldNameMetaStore } from 'Components/Table/TableTypes';\nimport { reportInteraction } from '@grafana/runtime';\nimport { debouncedFuzzySearch } from '../../../services/search';\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n searchWrap: css({\n padding: `${theme.spacing(0.4)} 0 ${theme.spacing(0.4)} ${theme.spacing(0.4)}`,\n }),\n };\n}\n\ninterface LogsColumnSearchProps {\n searchValue: string;\n setSearchValue: (value: string) => void;\n}\nexport function LogsColumnSearch({ searchValue, setSearchValue }: LogsColumnSearchProps) {\n const { columns, setFilteredColumns } = useTableColumnContext();\n\n // uFuzzy search dispatcher, adds any matches to the local state\n const dispatcher = (data: string[][]) => {\n const matches = data[0];\n let newColumnsWithMeta: FieldNameMetaStore = {};\n let numberOfResults = 0;\n matches.forEach((match) => {\n if (match in columns) {\n newColumnsWithMeta[match] = columns[match];\n numberOfResults++;\n }\n });\n setFilteredColumns(newColumnsWithMeta);\n searchFilterEvent(numberOfResults);\n };\n\n // uFuzzy search\n const search = (needle: string) => {\n debouncedFuzzySearch(Object.keys(columns), needle, dispatcher);\n };\n\n // onChange handler for search input\n const onSearchInputChange = (e: React.FormEvent) => {\n const value = e.currentTarget?.value;\n setSearchValue(value);\n if (value) {\n search(value);\n } else {\n // If the search input is empty, reset the local search state.\n setFilteredColumns(undefined);\n }\n };\n\n const theme = useTheme2();\n const styles = getStyles(theme);\n return (\n \n \n \n );\n}\n\nfunction searchFilterEvent(searchResultCount: number) {\n reportInteraction('grafana_logs_app_table_text_search_result_count', {\n resultCount: searchResultCount,\n });\n}\n","import React from 'react';\nimport { css } from '@emotion/css';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { useTheme2 } from '@grafana/ui';\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n empty: css({\n marginBottom: theme.spacing(2),\n marginLeft: theme.spacing(1.75),\n fontSize: theme.typography.fontSize,\n }),\n };\n}\n\nexport function LogsTableEmptyFields() {\n const theme = useTheme2();\n const styles = getStyles(theme);\n return
No fields
;\n}\n","import React from 'react';\nimport { css } from '@emotion/css';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { Checkbox, Icon, useTheme2 } from '@grafana/ui';\n\nimport { FieldNameMeta } from '../TableTypes';\n\nexport function LogsTableNavField(props: {\n label: string;\n onChange: () => void;\n labels: Record;\n draggable?: boolean;\n showCount?: boolean;\n setColumnWidthMap?: (map: Record) => void;\n columnWidthMap?: Record;\n}): React.JSX.Element | null {\n const theme = useTheme2();\n const styles = getStyles(theme);\n\n if (props.labels[props.label]) {\n return (\n <>\n
\n \n {props.showCount && (\n
\n
{props.labels[props.label]?.percentOfLinesWithLabel}%
\n
\n {props.labels[props.label]?.cardinality}{' '}\n {props.labels[props.label]?.cardinality === 1 ? 'value' : 'values'}\n
\n
\n )}\n {props.columnWidthMap && props.setColumnWidthMap && props.columnWidthMap?.[props.label] !== undefined && (\n {\n const { [props.label]: omit, ...map } = { ...props.columnWidthMap };\n props.setColumnWidthMap?.(map);\n }}\n title={'Clear column width override'}\n className={styles.customWidthWrap}\n >\n Reset column width\n \n
\n )}\n \n {props.draggable && (\n \n )}\n \n );\n }\n\n return null;\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n dragIcon: css({\n cursor: 'drag',\n marginLeft: theme.spacing(1),\n opacity: 0.4,\n }),\n labelCount: css({\n marginLeft: theme.spacing(0.5),\n marginRight: theme.spacing(0.5),\n appearance: 'none',\n background: 'none',\n border: 'none',\n fontSize: theme.typography.pxToRem(11),\n opacity: 0.6,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'self-end',\n }),\n contentWrap: css({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n width: '100%',\n }),\n customWidthWrap: css({\n fontSize: theme.typography.bodySmall.fontSize,\n cursor: 'pointer',\n }),\n // Hide text that overflows, had to select elements within the Checkbox component, so this is a bit fragile\n checkboxLabel: css({\n '> span': {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n display: 'block',\n maxWidth: '100%',\n },\n }),\n };\n}\n","import React, { ReactElement } from 'react';\nimport { DragDropContext, Draggable, DraggableProvided, Droppable, DropResult } from '@hello-pangea/dnd';\nimport { css, cx } from '@emotion/css';\n\nimport { GrafanaTheme2 } from '@grafana/data/';\nimport { useTheme2 } from '@grafana/ui/';\n\nimport { FieldNameMeta, FieldNameMetaStore } from '../TableTypes';\n\nimport { LogsTableEmptyFields } from './LogsTableEmptyFields';\nimport { LogsTableNavField } from './LogsTableNavField';\nimport { useTableColumnContext } from 'Components/Table/Context/TableColumnsContext';\n\nexport function getLogsFieldsStyles(theme: GrafanaTheme2) {\n return {\n wrap: css({\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1),\n display: 'flex',\n background: theme.colors.background.primary,\n }),\n dragging: css({\n background: theme.colors.background.secondary,\n }),\n columnWrapper: css({\n marginBottom: theme.spacing(1.5),\n // need some space or the outline of the checkbox is cut off\n paddingLeft: theme.spacing(0.5),\n }),\n };\n}\n\nfunction sortLabels(labels: Record) {\n return (a: string, b: string) => {\n const la = labels[a];\n const lb = labels[b];\n\n // Sort by index\n if (la.index != null && lb.index != null) {\n return la.index - lb.index;\n }\n\n // otherwise do not sort\n return 0;\n };\n}\n\nexport const LogsTableActiveFields = (props: {\n labels: Record;\n valueFilter: (value: string) => boolean;\n toggleColumn: (columnName: string) => void;\n reorderColumn: (cols: FieldNameMetaStore, sourceIndex: number, destinationIndex: number) => void;\n id: string;\n}): ReactElement => {\n const { columnWidthMap, setColumnWidthMap } = useTableColumnContext();\n const { reorderColumn, labels, valueFilter, toggleColumn } = props;\n const theme = useTheme2();\n const { columns } = useTableColumnContext();\n const styles = getLogsFieldsStyles(theme);\n const labelKeys = Object.keys(labels).filter((labelName) => valueFilter(labelName));\n\n const onDragEnd = (result: DropResult) => {\n if (!result.destination) {\n return;\n }\n reorderColumn(columns, result.source.index, result.destination.index);\n };\n\n const renderTitle = (labelName: string) => {\n const label = labels[labelName];\n if (label) {\n return `${labelName} appears in ${label?.percentOfLinesWithLabel}% of log lines`;\n }\n\n return undefined;\n };\n\n if (labelKeys.length) {\n return (\n \n \n {(provided) => (\n
\n {labelKeys.sort(sortLabels(labels)).map((labelName, index) => (\n \n {(provided: DraggableProvided, snapshot) => (\n \n toggleColumn(labelName)}\n labels={labels}\n draggable={true}\n />\n
\n )}\n \n ))}\n {provided.placeholder}\n \n )}\n
\n
\n );\n }\n\n return ;\n};\n","import React from 'react';\nimport { css } from '@emotion/css';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { useTheme2 } from '@grafana/ui';\n\nimport { FieldNameMeta } from '../TableTypes';\n\nimport { LogsTableEmptyFields } from './LogsTableEmptyFields';\nimport { LogsTableNavField } from './LogsTableNavField';\n\nconst collator = new Intl.Collator(undefined, { sensitivity: 'base' });\n\nfunction getLogsFieldsStyles(theme: GrafanaTheme2) {\n return {\n wrap: css({\n marginTop: theme.spacing(0.25),\n marginBottom: theme.spacing(0.25),\n display: 'flex',\n background: theme.colors.background.primary,\n borderBottom: `1px solid ${theme.colors.background.canvas}`,\n }),\n dragging: css({\n background: theme.colors.background.secondary,\n }),\n columnWrapper: css({\n marginBottom: theme.spacing(1.5),\n // need some space or the outline of the checkbox is cut off\n paddingLeft: theme.spacing(0.5),\n }),\n };\n}\n\nfunction sortLabels(labels: Record) {\n return (a: string, b: string) => {\n const la = labels[a];\n const lb = labels[b];\n\n // ...sort by type and alphabetically\n if (la != null && lb != null) {\n return (\n Number(lb.type === 'TIME_FIELD') - Number(la.type === 'TIME_FIELD') ||\n Number(lb.type === 'BODY_FIELD') - Number(la.type === 'BODY_FIELD') ||\n collator.compare(a, b)\n );\n }\n\n // otherwise do not sort\n return 0;\n };\n}\n\nexport const LogsTableAvailableFields = (props: {\n labels: Record;\n valueFilter: (value: string) => boolean;\n toggleColumn: (columnName: string) => void;\n}): React.ReactElement => {\n const { labels, valueFilter, toggleColumn } = props;\n const theme = useTheme2();\n const styles = getLogsFieldsStyles(theme);\n const labelKeys = Object.keys(labels).filter((labelName) => valueFilter(labelName));\n if (labelKeys.length) {\n // Otherwise show list with a hardcoded order\n return (\n
\n {labelKeys.sort(sortLabels(labels)).map((labelName) => (\n \n toggleColumn(labelName)}\n labels={labels}\n />\n
\n ))}\n \n );\n }\n\n return ;\n};\n","import React from 'react';\nimport { css } from '@emotion/css';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { useTheme2 } from '@grafana/ui';\n\nimport { LogsTableActiveFields } from 'Components/Table/ColumnSelection/LogsTableActiveFields';\nimport { LogsTableAvailableFields } from 'Components/Table/ColumnSelection/LogsTableAvailableFields';\n\nimport { FieldNameMeta, FieldNameMetaStore } from '../TableTypes';\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n sidebarWrap: css({\n overflowY: 'scroll',\n height: 'calc(100% - 50px)',\n /* Hide scrollbar for Chrome, Safari, and Opera */\n '&::-webkit-scrollbar': {\n display: 'none',\n },\n /* Hide scrollbar for Firefox */\n scrollbarWidth: 'none',\n }),\n columnHeaderButton: css({\n appearance: 'none',\n background: 'none',\n border: 'none',\n fontSize: theme.typography.pxToRem(11),\n }),\n columnHeader: css({\n display: 'flex',\n justifyContent: 'space-between',\n fontSize: theme.typography.h6.fontSize,\n background: theme.colors.background.secondary,\n position: 'sticky',\n top: 0,\n left: 0,\n paddingTop: theme.spacing(0.75),\n paddingRight: theme.spacing(0.75),\n paddingBottom: theme.spacing(0.75),\n paddingLeft: theme.spacing(1.5),\n zIndex: 3,\n marginBottom: theme.spacing(2),\n }),\n };\n}\n\nexport const LogsTableMultiSelect = (props: {\n toggleColumn: (columnName: string) => void;\n filteredColumnsWithMeta: Record | undefined;\n columnsWithMeta: Record;\n clear: () => void;\n reorderColumn: (cols: FieldNameMetaStore, oldIndex: number, newIndex: number) => void;\n}) => {\n const theme = useTheme2();\n const styles = getStyles(theme);\n\n return (\n
\n {/* Sidebar columns */}\n <>\n
\n Selected fields\n \n
\n props.columnsWithMeta[value]?.active ?? false}\n id={'selected-fields'}\n />\n\n
Fields
\n !props.columnsWithMeta[value]?.active}\n />\n \n
\n );\n};\n","import React, { useState } from 'react';\n\nimport { ClickOutsideWrapper } from '@grafana/ui';\n\nimport { useTableColumnContext } from 'Components/Table/Context/TableColumnsContext';\nimport { LogsColumnSearch } from 'Components/Table/ColumnSelection/LogsColumnSearch';\nimport { LogsTableMultiSelect } from 'Components/Table/ColumnSelection/LogsTableMultiSelect';\n\nimport { FieldNameMetaStore } from '../TableTypes';\nimport { reportInteraction } from '@grafana/runtime';\nimport { logger } from '../../../services/logger';\n\nexport function getReorderColumn(setColumns: (cols: FieldNameMetaStore) => void) {\n return (columns: FieldNameMetaStore, sourceIndex: number, destinationIndex: number) => {\n if (sourceIndex === destinationIndex) {\n return;\n }\n\n const pendingLabelState = { ...columns };\n const keys = Object.keys(pendingLabelState)\n .filter((key) => pendingLabelState[key].active)\n .map((key) => ({\n fieldName: key,\n index: pendingLabelState[key].index ?? 0,\n }))\n .sort((a, b) => a.index - b.index);\n\n const [source] = keys.splice(sourceIndex, 1);\n keys.splice(destinationIndex, 0, source);\n\n keys\n .filter((key) => key !== undefined)\n .forEach((key, index) => {\n pendingLabelState[key.fieldName].index = index;\n });\n\n // Set local state\n setColumns(pendingLabelState);\n };\n}\n\nfunction logError(columnName: string, columns: FieldNameMetaStore) {\n let logContext;\n try {\n logContext = {\n columns: JSON.stringify(columns),\n columnName: columnName,\n };\n } catch (e) {\n logContext = {\n msg: 'Table: ColumnSelectionDrawerWrap failed to encode context',\n columnName: columnName,\n };\n }\n logger.warn('failed to get column', logContext);\n}\n\nexport function ColumnSelectionDrawerWrap() {\n const { columns, setColumns, setVisible, filteredColumns, setFilteredColumns } = useTableColumnContext();\n const [searchValue, setSearchValue] = useState('');\n const toggleColumn = (columnName: string) => {\n if (!columns || !(columnName in columns)) {\n logError(columnName, columns);\n return;\n }\n\n const length = Object.keys(columns).filter((c) => columns[c].active).length;\n const isActive = !columns[columnName].active ? true : undefined;\n\n let pendingLabelState: FieldNameMetaStore;\n if (isActive) {\n pendingLabelState = {\n ...columns,\n [columnName]: {\n ...columns[columnName],\n active: isActive,\n index: length,\n },\n };\n } else {\n pendingLabelState = {\n ...columns,\n [columnName]: {\n ...columns[columnName],\n active: false,\n index: undefined,\n },\n };\n }\n\n // Analytics\n columnFilterEvent(columnName);\n\n // Set local state\n setColumns(pendingLabelState);\n\n // If user is currently filtering, update filtered state\n if (filteredColumns) {\n const active = !filteredColumns[columnName]?.active;\n let pendingFilteredLabelState: FieldNameMetaStore;\n if (active) {\n pendingFilteredLabelState = {\n ...filteredColumns,\n [columnName]: {\n ...filteredColumns[columnName],\n active: active,\n index: length,\n },\n };\n } else {\n pendingFilteredLabelState = {\n ...filteredColumns,\n [columnName]: {\n ...filteredColumns[columnName],\n active: false,\n index: undefined,\n },\n };\n }\n\n setFilteredColumns(pendingFilteredLabelState);\n setSearchValue('');\n }\n };\n\n const reorderColumn = getReorderColumn(setColumns);\n\n const clearSelection = () => {\n const pendingLabelState = { ...columns };\n let index = 0;\n Object.keys(pendingLabelState).forEach((key) => {\n const isDefaultField =\n pendingLabelState[key].type === 'BODY_FIELD' || pendingLabelState[key].type === 'TIME_FIELD';\n // after reset the only active fields are the special time and body fields\n pendingLabelState[key].active = isDefaultField;\n // reset the index\n pendingLabelState[key].index = isDefaultField ? index++ : undefined;\n });\n\n setColumns(pendingLabelState);\n setFilteredColumns(pendingLabelState);\n setSearchValue('');\n };\n\n // Tracking event for filtering columns\n function columnFilterEvent(columnName: string) {\n if (columns) {\n const newState = !columns[columnName]?.active;\n const priorActiveCount = Object.keys(columns).filter((column) => columns[column]?.active)?.length;\n const event = {\n columnAction: newState ? 'add' : 'remove',\n columnCount: newState ? priorActiveCount + 1 : priorActiveCount - 1,\n };\n reportInteraction('grafana_logs_app_table_column_filter_clicked', event);\n }\n }\n\n return (\n {\n setVisible(false);\n setFilteredColumns(columns);\n setSearchValue('');\n }}\n useCapture={true}\n >\n \n \n \n );\n}\n","import React, { PropsWithChildren } from 'react';\nimport { css, cx } from '@emotion/css';\n\nimport { Field, GrafanaTheme2 } from '@grafana/data';\nimport { useTheme2 } from '@grafana/ui';\n\nimport { useTableCellContext } from 'Components/Table/Context/TableCellContext';\n\ninterface DefaultCellWrapComponentProps {}\n\ninterface Props extends PropsWithChildren {\n rowIndex: number;\n field: Field;\n onClick?: () => void;\n onMouseIn?: () => void;\n onMouseOut?: () => void;\n}\n\nconst getStyles = (theme: GrafanaTheme2, bgColor?: string, numberOfMenuItems?: number) => ({\n active: css({\n // Save 20px for context menu\n height: `calc(${100}% + 36px)`,\n zIndex: theme.zIndex.tooltip,\n background: 'transparent',\n }),\n wrap: css({\n position: 'absolute',\n overflowX: 'hidden',\n whiteSpace: 'nowrap',\n width: '100%',\n height: '100%',\n left: 0,\n top: 0,\n margin: 'auto',\n background: bgColor ?? 'transparent',\n }),\n});\n\nexport const DefaultCellWrapComponent = (props: Props) => {\n return (\n \n {props.children}\n \n );\n};\n\nconst CellWrapInnerComponent = (props: Props) => {\n const theme = useTheme2();\n const cellState = useTableCellContext();\n const styles = getStyles(theme, undefined, cellState.cellIndex?.numberOfMenuItems);\n\n return (\n \n {props.children}\n \n );\n};\n","import React, { createContext, ReactNode, useContext } from 'react';\nimport { LogsFrame } from '../../../services/logsFrame';\nimport { AdHocVariableFilter, TimeRange } from '@grafana/data';\nimport { SelectedTableRow } from '../LogLineCellComponent';\n\nexport type Label = { name: string; values: string[]; indexed: boolean };\n\nexport type QueryContextType = {\n logsFrame: LogsFrame | null;\n addFilter: (filter: AdHocVariableFilter) => void;\n selectedLine?: SelectedTableRow;\n timeRange?: TimeRange;\n};\n\nexport const initialState = {\n logsFrame: null,\n addFilter: (filter: AdHocVariableFilter) => {},\n timeRange: undefined,\n selectedLine: undefined,\n};\n\nexport const QueryContext = createContext(initialState);\n\nexport const QueryContextProvider = ({\n children,\n logsFrame,\n addFilter,\n selectedLine,\n timeRange,\n}: {\n children: ReactNode;\n logsFrame: LogsFrame;\n addFilter: (filter: AdHocVariableFilter) => void;\n selectedLine?: SelectedTableRow;\n timeRange?: TimeRange;\n}) => {\n return (\n \n {children}\n \n );\n};\n\nexport const useQueryContext = () => {\n return useContext(QueryContext);\n};\n","import React from 'react';\nimport { css } from '@emotion/css';\n\nimport { GrafanaTheme2, LinkModel } from '@grafana/data';\nimport { Icon, useTheme2 } from '@grafana/ui';\nimport { useQueryContext } from './Context/QueryContext';\n\nimport { FilterOp } from '../../services/filterTypes';\n\ninterface Props {\n fieldType?: 'derived';\n label: string;\n value: string;\n showColumn?: () => void;\n links?: LinkModel[];\n pillType: 'logPill' | 'column';\n}\n\nconst getStyles = (theme: GrafanaTheme2, pillType: 'logPill' | 'column') => ({\n menu: css({\n position: 'relative',\n paddingRight: '5px',\n display: 'flex',\n minWidth: '60px',\n justifyContent: 'flex-start',\n }),\n menuItemsWrap: css({\n boxShadow: theme.shadows.z3,\n display: 'flex',\n background: theme.colors.background.secondary,\n padding: '5px 0',\n marginLeft: pillType === 'column' ? '5px' : undefined,\n }),\n menuItem: css({\n overflow: 'auto',\n textOverflow: 'ellipsis',\n cursor: 'pointer',\n paddingLeft: '5px',\n paddingRight: '5px',\n display: 'flex',\n alignItems: 'center',\n }),\n});\n\nexport const CellContextMenu = (props: Props) => {\n const theme = useTheme2();\n const styles = getStyles(theme, props.pillType);\n const { addFilter } = useQueryContext();\n\n return (\n \n \n {props.fieldType !== 'derived' && (\n <>\n {\n addFilter({\n key: props.label,\n value: props.value,\n operator: FilterOp.Equal,\n });\n }}\n >\n \n \n {\n addFilter({\n key: props.label,\n value: props.value,\n operator: FilterOp.NotEqual,\n });\n }}\n >\n \n \n \n )}\n\n {props.showColumn && (\n
\n \n \n \n \n
\n )}\n\n {props.links &&\n props.links.map((link) => {\n return (\n {\n window.open(link.href, '_blank');\n }}\n key={link.href}\n >\n \n \n );\n })}\n
\n
\n );\n};\n","export const LEVEL_NAME = 'detected_level';\n","import React, { ReactElement } from 'react';\nimport { css, cx } from '@emotion/css';\n\nimport { Field, FieldType, GrafanaTheme2 } from '@grafana/data';\nimport { useTheme2 } from '@grafana/ui';\n\nimport { useTableCellContext } from 'Components/Table/Context/TableCellContext';\nimport { CellContextMenu } from 'Components/Table/CellContextMenu';\nimport { getFieldMappings } from 'Components/Table/Table';\nimport { LEVEL_NAME } from './constants';\n\ninterface DefaultPillProps {\n label: string;\n showColumns?: () => void;\n value: string | unknown | ReactElement;\n rowIndex: number;\n field: Field;\n}\n\nconst getStyles = (theme: GrafanaTheme2, levelColor?: string) => ({\n activePillWrap: css({}),\n pillWrap: css({\n width: '100%',\n }),\n pill: css({\n border: `1px solid ${theme.colors.border.weak}`,\n '&:hover': {\n border: `1px solid ${theme.colors.border.strong}`,\n },\n marginRight: '5px',\n marginTop: '4px',\n marginLeft: '5px',\n padding: '2px 5px',\n position: 'relative',\n display: 'inline-flex',\n flexDirection: 'row-reverse',\n backgroundColor: 'transparent',\n\n paddingLeft: levelColor ? `${theme.spacing(0.75)}` : `2px`,\n\n '&:before': {\n content: '\"\"',\n position: 'absolute',\n left: 0,\n top: 0,\n height: '100%',\n width: `${theme.spacing(0.25)}`,\n backgroundColor: levelColor,\n },\n }),\n menu: css({\n width: '100%',\n }),\n menuItem: css({\n overflow: 'auto',\n textOverflow: 'ellipsis',\n }),\n menuItemText: css({\n width: '65px',\n display: 'inline-block',\n }),\n});\nexport const DefaultPill = (props: DefaultPillProps) => {\n const { label, value } = props;\n const theme = useTheme2();\n const { cellIndex } = useTableCellContext();\n let levelColor;\n\n if (label === LEVEL_NAME) {\n const mappings = getFieldMappings().options;\n if (typeof value === 'string' && value in mappings) {\n levelColor = mappings[value].color;\n }\n }\n\n const isPillActive = cellIndex.index === props.rowIndex && props.field.name === cellIndex.fieldName;\n\n const styles = getStyles(theme, levelColor);\n return (\n
\n {!!value && (\n <>\n \n <>{value}\n \n {isPillActive && typeof value === 'string' && props.field.type !== FieldType.time && (\n \n )}\n \n )}\n
\n );\n};\n","import { ClipboardButton, IconButton, Modal, useTheme2 } from '@grafana/ui';\nimport React, { useCallback, useState } from 'react';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { css } from '@emotion/css';\nimport { useQueryContext } from 'Components/Table/Context/QueryContext';\nimport { testIds } from '../../services/testIds';\nimport { generateLogShortlink } from 'services/text';\n\nexport const getStyles = (theme: GrafanaTheme2, bgColor?: string) => ({\n clipboardButton: css({\n padding: 0,\n height: '100%',\n lineHeight: '1',\n width: '20px',\n }),\n inspectButton: css({\n display: 'inline-flex',\n verticalAlign: 'middle',\n margin: 0,\n overflow: 'hidden',\n borderRadius: '5px',\n }),\n iconWrapper: css({\n height: '35px',\n position: 'sticky',\n left: 0,\n display: 'flex',\n background: theme.colors.background.secondary,\n padding: `0 ${theme.spacing(0.5)}`,\n zIndex: 1,\n boxShadow: theme.shadows.z2,\n }),\n inspect: css({\n padding: '5px 3px',\n\n '&:hover': {\n color: theme.colors.text.link,\n cursor: 'pointer',\n },\n }),\n});\nexport function LineActionIcons(props: { rowIndex: number; value: unknown }) {\n const theme = useTheme2();\n const styles = getStyles(theme);\n const { logsFrame, timeRange } = useQueryContext();\n const logId = logsFrame?.idField?.values[props.rowIndex];\n const lineValue = logsFrame?.bodyField.values[props.rowIndex];\n const [isInspecting, setIsInspecting] = useState(false);\n const getText = useCallback(() => {\n if (timeRange) {\n return generateLogShortlink('selectedLine', { id: logId, row: props.rowIndex }, timeRange);\n }\n return '';\n }, [logId, props.rowIndex, timeRange]);\n return (\n <>\n
\n
\n setIsInspecting(true)}\n tabIndex={0}\n />\n
\n
\n \n
\n
\n <>\n {isInspecting && (\n setIsInspecting(false)} isOpen={true} title=\"Inspect value\">\n
{lineValue}
\n \n props.value as string}>\n Copy to Clipboard\n \n \n
\n )}\n \n \n );\n}\n","import React, { ReactElement } from 'react';\nimport { Row } from 'react-table';\nimport { css } from '@emotion/css';\n\nimport { FieldType, formattedValueToString, GrafanaTheme2 } from '@grafana/data';\nimport { CustomCellRendererProps, DataLinksContextMenu, getCellLinks, useTheme2 } from '@grafana/ui';\n\nimport { useTableCellContext } from 'Components/Table/Context/TableCellContext';\nimport { useTableColumnContext } from 'Components/Table/Context/TableColumnsContext';\nimport { DefaultCellWrapComponent } from 'Components/Table/DefaultCellWrapComponent';\nimport { DefaultPill } from 'Components/Table/DefaultPill';\nimport { LineActionIcons } from 'Components/Table/LineActionIcons';\n\nconst getStyles = (theme: GrafanaTheme2, fieldType?: FieldType) => ({\n flexWrap: css({\n display: 'flex',\n alignItems: 'flex-start',\n flexDirection: fieldType === FieldType.number ? 'row-reverse' : 'row',\n textAlign: fieldType === FieldType.number ? 'right' : 'left',\n }),\n content: css({\n position: 'relative',\n overflow: 'hidden',\n display: 'flex',\n height: '100%',\n }),\n linkWrapper: css({\n color: theme.colors.text.link,\n marginTop: '7px',\n marginLeft: '7px',\n '&:hover': {\n textDecoration: 'underline',\n },\n }),\n});\n\ninterface DefaultCellComponentCustomProps {\n fieldIndex: number;\n}\nexport const DefaultCellComponent = (props: CustomCellRendererProps & DefaultCellComponentCustomProps) => {\n let value = props.value;\n const field = props.field;\n const displayValue = field.display!(value);\n const theme = useTheme2();\n const styles = getStyles(theme, props.field.type);\n const { setVisible } = useTableColumnContext();\n const { cellIndex, setActiveCellIndex } = useTableCellContext();\n\n // We don't get back the full react.table row here, but the calling function only uses the index, which are in `CustomCellRendererProps`\n const row = { index: props.rowIndex } as Row;\n const hasLinks = Boolean(getCellLinks(props.field, row)?.length);\n\n if (value === null) {\n return <>;\n }\n\n if (React.isValidElement(props.value)) {\n value = props.value;\n } else if (typeof value === 'object') {\n value = JSON.stringify(props.value);\n } else {\n value = formattedValueToString(displayValue);\n }\n\n const renderValue = (value: string | unknown | ReactElement, label: string) => {\n return (\n setVisible(true)}\n label={label}\n value={value}\n />\n );\n };\n\n return (\n {\n if (props.rowIndex === cellIndex.index && props.field.name === cellIndex.fieldName) {\n return setActiveCellIndex({ index: null });\n }\n return setActiveCellIndex({ index: props.rowIndex, fieldName: props.field.name, numberOfMenuItems: 3 });\n }}\n field={props.field}\n rowIndex={props.rowIndex}\n >\n
\n {props.fieldIndex === 0 && }\n
\n\n {!hasLinks && renderValue(value, field.name)}\n\n {hasLinks && field.getLinks && (\n getCellLinks(field, row) ?? []}>\n {(api) => {\n if (api.openMenu) {\n return (\n
\n <>{value}\n
\n );\n } else {\n return (\n
\n <>{value}\n
\n );\n }\n }}\n
\n )}\n
\n \n );\n};\n","import React, { useMemo } from 'react';\nimport { Row } from 'react-table';\nimport { css, cx } from '@emotion/css';\n\nimport { DataFrame, Field, FieldType, getLinksSupplier, GrafanaTheme2, LinkModel } from '@grafana/data';\nimport { getCellLinks, useTheme2 } from '@grafana/ui';\n\nimport { useTableCellContext } from 'Components/Table/Context/TableCellContext';\nimport { CellContextMenu } from 'Components/Table/CellContextMenu';\nimport { getFieldMappings } from 'Components/Table/Table';\nimport { FieldNameMetaStore } from 'Components/Table/TableTypes';\nimport { useTableColumnContext } from 'Components/Table/Context/TableColumnsContext';\nimport { getTemplateSrv } from '@grafana/runtime';\nimport { LEVEL_NAME } from './constants';\n\ninterface LogLinePillProps {\n originalField?: Field;\n field?: Field;\n columns: FieldNameMetaStore;\n label: string;\n showColumns: () => void;\n rowIndex: number;\n frame: DataFrame;\n originalFrame: DataFrame | undefined;\n isDerivedField: boolean;\n value: string;\n}\n\nconst getStyles = (theme: GrafanaTheme2, levelColor?: string) => ({\n pill: css({\n flex: '0 1 auto',\n marginLeft: theme.spacing(0.5),\n marginRight: theme.spacing(0.5),\n padding: `${theme.spacing(0.25)} ${theme.spacing(0.25)}`,\n position: 'relative',\n display: 'inline-flex',\n flexDirection: 'column',\n marginTop: theme.spacing(0.5),\n }),\n activePill: css({}),\n valueWrap: css({\n border: `1px solid ${theme.colors.background.secondary}`,\n boxShadow: `-2px 2px 5px 0px ${theme.colors.background.secondary}`,\n backgroundColor: 'transparent',\n cursor: 'pointer',\n position: 'relative',\n\n paddingRight: `${theme.spacing(0.5)}`,\n paddingLeft: levelColor ? `${theme.spacing(0.75)}` : `${theme.spacing(0.5)}`,\n\n '&:before': {\n content: '\"\"',\n position: 'absolute',\n left: 0,\n top: 0,\n height: '100%',\n width: `${theme.spacing(0.25)}`,\n backgroundColor: levelColor,\n },\n\n '&:hover': {\n border: `1px solid ${theme.colors.border.strong}`,\n },\n }),\n});\n\nfunction LogLinePillValue(props: {\n fieldType?: 'derived';\n onClick: () => void;\n label: string;\n value: string;\n menuActive: boolean;\n onClickAdd: () => void;\n links?: LinkModel[];\n}) {\n const theme = useTheme2();\n\n let levelColor;\n if (props.label === LEVEL_NAME) {\n const mappings = getFieldMappings().options;\n if (props.value in mappings) {\n levelColor = mappings[props.value].color;\n }\n }\n\n const styles = getStyles(theme, levelColor);\n\n return (\n \n \n {props.label}={props.value}\n \n {props.menuActive && (\n \n )}\n \n );\n}\n\nexport const LogLinePill = (props: LogLinePillProps) => {\n const { label } = props;\n const { cellIndex, setActiveCellIndex } = useTableCellContext();\n const { columns, setColumns } = useTableColumnContext();\n const value = props.value;\n const templateSrv = getTemplateSrv();\n const replace = useMemo(() => templateSrv.replace.bind(templateSrv), [templateSrv]);\n\n // Need untransformed frame for links?\n const field = props.field;\n\n if (!field || field?.type === FieldType.other) {\n return null;\n }\n const row = { index: props.rowIndex } as Row;\n\n if (props.originalField && props.isDerivedField && props.originalFrame) {\n props.originalField.getLinks = getLinksSupplier(props.originalFrame, props.originalField, {}, replace);\n }\n\n const links = props.originalField && getCellLinks(props.originalField, row);\n\n /**\n * This Could be moved?\n * Callback called by the pill context menu\n * @param fieldName\n */\n const addFieldToColumns = (fieldName: string) => {\n const pendingColumns = { ...columns };\n\n const length = Object.keys(columns).filter((c) => columns[c].active).length;\n if (pendingColumns[fieldName].active) {\n pendingColumns[fieldName].active = false;\n pendingColumns[fieldName].index = undefined;\n } else {\n pendingColumns[fieldName].active = true;\n pendingColumns[fieldName].index = length;\n }\n\n setColumns(pendingColumns);\n };\n\n return (\n {\n if (\n props.rowIndex === cellIndex.index &&\n field.name === cellIndex.fieldName &&\n label === cellIndex.subFieldName\n ) {\n return setActiveCellIndex({ index: null });\n }\n\n return setActiveCellIndex({\n index: props.rowIndex,\n fieldName: field.name,\n subFieldName: label,\n numberOfMenuItems: props.isDerivedField ? 2 : 3,\n });\n }}\n menuActive={\n cellIndex.index === props.rowIndex && cellIndex.fieldName === field.name && cellIndex.subFieldName === label\n }\n fieldType={props.isDerivedField ? 'derived' : undefined}\n label={label}\n value={value}\n onClickAdd={() => addFieldToColumns(label)}\n links={links}\n />\n );\n};\n","import { Icon, useTheme2 } from '@grafana/ui';\nimport React from 'react';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { css } from '@emotion/css';\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n scroller: css`\n position: absolute;\n right: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 20px;\n top: 32px;\n margin-top: -24px;\n // For some reason clicking on this button causes text to be selected in the following row\n user-select: none;\n `,\n scrollLeft: css`\n cursor: pointer;\n background: ${theme.colors.background.primary};\n\n &:hover {\n background: ${theme.colors.background.secondary};\n }\n `,\n scrollRight: css`\n cursor: pointer;\n background: ${theme.colors.background.primary};\n\n &:hover {\n background: ${theme.colors.background.secondary};\n }\n `,\n});\n\nconst stopScroll = (id: React.MutableRefObject) => {\n id?.current?.scrollTo({\n left: id.current?.scrollLeft,\n });\n};\n\nconst goLeft = (id: React.MutableRefObject) => {\n id?.current?.scrollTo({\n top: 0,\n left: 0,\n behavior: 'smooth',\n });\n};\n\nconst goRight = (id: React.MutableRefObject) => {\n id?.current?.scrollTo({\n top: 0,\n left: id.current.scrollWidth,\n behavior: 'smooth',\n });\n};\n\nexport function Scroller({ scrollerRef: ref }: { scrollerRef: React.MutableRefObject }) {\n const theme = useTheme2();\n const styles = getStyles(theme);\n return (\n
\n goLeft(ref)} onPointerUp={() => stopScroll(ref)} className={styles.scrollLeft}>\n \n \n goRight(ref)} onPointerUp={() => stopScroll(ref)} className={styles.scrollRight}>\n \n \n
\n );\n}\n","import React from 'react';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { css } from '@emotion/css';\nimport { useTheme2 } from '@grafana/ui';\nimport { testIds } from '../../services/testIds';\n\nexport function RawLogLineText(props: { value: unknown }) {\n const theme = useTheme2();\n const styles = getStyles(theme);\n return (\n
\n <>{props.value}\n
\n );\n}\n\nexport const getStyles = (theme: GrafanaTheme2, bgColor?: string) => ({\n rawLogLine: css({\n fontFamily: theme.typography.fontFamilyMonospace,\n height: '35px',\n lineHeight: '35px',\n paddingRight: theme.spacing(1.5),\n paddingLeft: theme.spacing(1),\n fontSize: theme.typography.bodySmall.fontSize,\n }),\n});\n","import React, { useRef, useState } from 'react';\nimport { ScrollSyncPane } from 'react-scroll-sync';\n\nimport { FieldType, formattedValueToString, GrafanaTheme2, Labels } from '@grafana/data';\nimport { CustomCellRendererProps, useTheme2 } from '@grafana/ui';\n\nimport { useQueryContext } from 'Components/Table/Context/QueryContext';\nimport { LogLineState, useTableColumnContext } from 'Components/Table/Context/TableColumnsContext';\nimport { DefaultCellWrapComponent } from 'Components/Table/DefaultCellWrapComponent';\nimport { LogLinePill } from 'Components/Table/LogLinePill';\nimport { Scroller } from 'Components/Table/Scroller';\nimport { css } from '@emotion/css';\nimport { LineActionIcons } from 'Components/Table/LineActionIcons';\nimport { RawLogLineText } from 'Components/Table/RawLogLineText';\nimport { getBodyName } from '../../services/logsFrame';\nimport { LEVEL_NAME } from './constants';\n\nexport type SelectedTableRow = {\n row: number;\n id: string;\n};\n\ninterface Props extends CustomCellRendererProps {\n labels: Labels;\n fieldIndex: number;\n}\nexport const LogLineCellComponent = (props: Props) => {\n let value = props.value;\n const field = props.field;\n const displayValue = field.display!(value);\n const theme = useTheme2();\n const styles = getStyles(theme);\n const { columns, setVisible, bodyState } = useTableColumnContext();\n const { logsFrame } = useQueryContext();\n const [isHover, setIsHover] = useState(false);\n const ref = useRef(null);\n\n if (React.isValidElement(props.value)) {\n value = props.value;\n } else if (typeof value === 'object') {\n value = JSON.stringify(props.value);\n } else {\n value = formattedValueToString(displayValue);\n }\n\n /**\n * Render labels as log line pills\n * @param labels Label[]\n */\n const renderLabels = (labels: Labels) => {\n const columnLabelNames = Object.keys(columns);\n const labelNames = columnLabelNames\n .filter((name) => name !== getBodyName(logsFrame))\n .sort((a, b) => {\n // Sort level first\n if (a === LEVEL_NAME) {\n return -1;\n }\n if (b === LEVEL_NAME) {\n return 1;\n }\n // Then sort links\n if (columns[a].type === 'LINK_FIELD') {\n return -1;\n }\n if (columns[b].type === 'LINK_FIELD') {\n return 1;\n }\n\n // Finally sort fields by cardinality descending\n return columns[a].cardinality > columns[b].cardinality ? -1 : 1;\n });\n\n const filteredLabels = labelNames.filter(\n (label) =>\n // Not already visible in another column\n !columns[label].active &&\n // And the cardinality is greater than 1\n columns[label].cardinality > 1\n );\n\n return filteredLabels\n .map((label) => {\n const labelValue = labels[label];\n const untransformedField = logsFrame?.raw?.fields.find((field) => field.name === label);\n const rawValue = field?.values[props.rowIndex];\n const isDerived = !labelValue && !!rawValue;\n\n // If we have a label value, the field is not derived\n if (labelValue) {\n return (\n setVisible(true)}\n key={label}\n label={label}\n isDerivedField={false}\n value={labelValue}\n />\n );\n }\n\n // Otherwise, the field might be derived\n if (isDerived && untransformedField?.name) {\n const untransformedValue = untransformedField?.values[props.rowIndex];\n if (untransformedField?.type === FieldType.string && untransformedValue) {\n return (\n setVisible(true)}\n key={untransformedField.name}\n label={untransformedField.name}\n isDerivedField={true}\n />\n );\n }\n }\n\n return null;\n })\n .filter((v) => v);\n };\n\n const labels = renderLabels(props.labels);\n const isAuto = bodyState === LogLineState.auto;\n const hasLabels = labels.length > 0;\n\n return (\n {\n setIsHover(true);\n }}\n onMouseOut={() => {\n setIsHover(false);\n }}\n rowIndex={props.rowIndex}\n field={props.field}\n >\n \n
\n {/* First Field gets the icons */}\n {props.fieldIndex === 0 && }\n {/* Labels */}\n {isAuto && hasLabels && <>{labels}}\n {bodyState === LogLineState.labels && hasLabels && <>{labels}}\n {bodyState === LogLineState.labels && !hasLabels && }\n\n {/* Raw log line*/}\n {isAuto && !hasLabels && }\n {bodyState === LogLineState.text && }\n\n {isHover && }\n
\n
\n \n );\n};\n\nexport const getStyles = (theme: GrafanaTheme2) => ({\n content: css`\n white-space: nowrap;\n overflow-x: auto;\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n padding-right: 30px;\n display: flex;\n align-items: flex-start;\n height: 100%;\n &::-webkit-scrollbar {\n display: none; /* Chrome, Safari and Opera */\n }\n\n &:after {\n pointer-events: none;\n content: '';\n width: 100%;\n height: 100%;\n position: absolute;\n left: 0;\n top: 0;\n // Fade out text in last 10px to background color to add affordance to horiziontal scroll\n background: linear-gradient(to right, transparent calc(100% - 10px), ${theme.colors.background.primary});\n }\n `,\n});\n","import React, { PropsWithChildren, useRef } from 'react';\nimport { css } from '@emotion/css';\n\nimport { Field, GrafanaTheme2 } from '@grafana/data';\nimport { ClickOutsideWrapper, IconButton, Popover, useTheme2 } from '@grafana/ui';\n\nimport { useTableHeaderContext } from 'Components/Table/Context/TableHeaderContext';\nimport { useQueryContext } from './Context/QueryContext';\nimport { getBodyName } from '../../services/logsFrame';\nimport { LogLineState, useTableColumnContext } from './Context/TableColumnsContext';\n\nexport interface LogsTableHeaderProps extends PropsWithChildren {\n fieldIndex: number;\n}\n//@todo delete when released in Grafana core\nexport interface CustomHeaderRendererProps {\n field: Field;\n defaultContent: React.ReactNode;\n}\n\nconst getStyles = (theme: GrafanaTheme2, isFirstColumn: boolean, isLine: boolean) => ({\n logLineButton: css({\n marginLeft: '5px',\n }),\n tableHeaderMenu: css({\n label: 'tableHeaderMenu',\n width: '100%',\n minWidth: '250px',\n height: '100%',\n maxHeight: '400px',\n backgroundColor: theme.colors.background.primary,\n border: `1px solid ${theme.colors.border.weak}`,\n padding: theme.spacing(2),\n margin: theme.spacing(1, 0),\n boxShadow: theme.shadows.z3,\n borderRadius: theme.shape.radius.default,\n }),\n leftAlign: css({\n label: 'left-align',\n display: 'flex',\n width: 'calc(100% - 20px)',\n }),\n clearButton: css({\n marginLeft: '5px',\n }),\n rightAlign: css({\n label: 'right-align',\n display: 'flex',\n marginRight: '5px',\n }),\n wrapper: css({\n label: 'wrapper',\n display: 'flex',\n marginLeft: isFirstColumn ? '56px' : '6px',\n // Body has extra padding then other columns\n width: isLine ? 'calc(100% + 6px)' : '100%',\n\n // Hack to show a visible resize indicator, despite 6px of padding on the header in grafana/table\n borderRight: `1px solid ${theme.colors.border.weak}`,\n marginRight: '-6px',\n }),\n defaultContentWrapper: css({\n borderLeft: isFirstColumn ? `1px solid ${theme.colors.border.weak}` : 'none',\n marginLeft: isFirstColumn ? '-6px' : 0,\n paddingLeft: isFirstColumn ? '12px' : 0,\n display: 'flex',\n }),\n});\n\nexport const LogsTableHeader = (props: LogsTableHeaderProps) => {\n const { setHeaderMenuActive, isHeaderMenuActive } = useTableHeaderContext();\n const { logsFrame } = useQueryContext();\n const referenceElement = useRef(null);\n const theme = useTheme2();\n const styles = getStyles(theme, props.fieldIndex === 0, props.field.name === getBodyName(logsFrame));\n const { columnWidthMap, setColumnWidthMap, setBodyState, bodyState } = useTableColumnContext();\n const isBodyField = props.field.name === getBodyName(logsFrame);\n\n const onLogTextToggle = () => {\n setBodyState(bodyState === LogLineState.text ? LogLineState.labels : LogLineState.text);\n };\n\n return (\n \n \n {props.defaultContent}\n {columnWidthMap && setColumnWidthMap && columnWidthMap?.[props.field.name] !== undefined && (\n {\n const { [props.field.name]: omit, ...map } = { ...columnWidthMap };\n setColumnWidthMap?.(map);\n }}\n />\n )}\n {isBodyField && (\n <>\n {bodyState === LogLineState.text ? (\n \n ) : (\n \n )}\n \n )}\n \n \n {\n setHeaderMenuActive(!isHeaderMenuActive);\n }}\n name={'ellipsis-v'}\n />\n \n\n {referenceElement.current && (\n //@ts-ignore\n setHeaderMenuActive(false)} useCapture={true}>\n
{props.children}
\n \n }\n referenceElement={referenceElement.current}\n />\n )}\n
\n );\n};\n","import { LogsTableHeader, LogsTableHeaderProps } from 'Components/Table/LogsTableHeader';\nimport { FieldNameMetaStore } from 'Components/Table/TableTypes';\nimport { useTableHeaderContext } from 'Components/Table/Context/TableHeaderContext';\nimport { LogLineState, useTableColumnContext } from 'Components/Table/Context/TableColumnsContext';\nimport { Icon } from '@grafana/ui';\nimport React, { useCallback } from 'react';\nimport { Field } from '@grafana/data';\nimport { getBodyName } from '../../services/logsFrame';\nimport { css, cx } from '@emotion/css';\nimport { useQueryContext } from './Context/QueryContext';\n\nexport function LogsTableHeaderWrap(props: {\n headerProps: LogsTableHeaderProps;\n openColumnManagementDrawer: () => void;\n\n // Moves the current column forward or backward one index\n slideLeft?: (cols: FieldNameMetaStore) => void;\n slideRight?: (cols: FieldNameMetaStore) => void;\n\n autoColumnWidths?: () => void;\n}) {\n const { setHeaderMenuActive } = useTableHeaderContext();\n const { columns, setColumns, bodyState, setBodyState } = useTableColumnContext();\n const { logsFrame } = useQueryContext();\n const styles = getStyles();\n\n const hideColumn = useCallback(\n (field: Field) => {\n const pendingColumnState = { ...columns };\n\n const columnsThatNeedIndexUpdate = Object.keys(pendingColumnState)\n .filter((col) => {\n const columnIndex = pendingColumnState[col].index;\n const fieldIndex = pendingColumnState[field.name].index;\n return pendingColumnState[col].active && fieldIndex && columnIndex && columnIndex > fieldIndex;\n })\n .map((cols) => pendingColumnState[cols]);\n\n columnsThatNeedIndexUpdate.forEach((col) => {\n if (col.index !== undefined) {\n col.index--;\n }\n });\n\n pendingColumnState[field.name].active = false;\n pendingColumnState[field.name].index = undefined;\n setColumns(pendingColumnState);\n },\n [columns, setColumns]\n );\n\n const isBodyField = props.headerProps.field.name === getBodyName(logsFrame);\n\n return (\n \n
\n {\n props.openColumnManagementDrawer();\n setHeaderMenuActive(false);\n }}\n >\n \n Manage columns\n \n
\n \n {props.slideLeft && (\n \n )}\n {props.slideRight && (\n \n )}\n {isBodyField && (\n
\n {\n if (bodyState === LogLineState.text) {\n setBodyState(LogLineState.labels);\n } else {\n setBodyState(LogLineState.text);\n }\n }}\n >\n {bodyState === LogLineState.text ? (\n \n ) : (\n \n )}\n\n {bodyState === LogLineState.text ? 'Show labels' : 'Show log text'}\n \n
\n )}\n\n {props.autoColumnWidths && (\n \n )}\n
\n );\n}\n\nconst getStyles = () => {\n return {\n reverse: css({\n transform: 'scaleX(-1)',\n }),\n link: css({\n paddingTop: '5px',\n paddingBottom: '5px',\n }),\n icon: css({\n marginRight: '10px',\n }),\n linkWrap: css({}),\n };\n};\n","import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { ScrollSync } from 'react-scroll-sync';\nimport { css } from '@emotion/css';\nimport { lastValueFrom } from 'rxjs';\n\nimport {\n applyFieldOverrides,\n CustomTransformOperator,\n DataFrame,\n DataFrameType,\n DataTransformerConfig,\n Field,\n FieldType,\n FieldWithIndex,\n Labels,\n MappingType,\n transformDataFrame,\n ValueMap,\n} from '@grafana/data';\nimport { getTemplateSrv } from '@grafana/runtime';\nimport { TableCellHeight, TableColoredBackgroundCellOptions } from '@grafana/schema';\nimport { Drawer, Table as GrafanaTable, TableCellDisplayMode, TableCustomCellOptions, useTheme2 } from '@grafana/ui';\n\nimport { TableCellContextProvider } from 'Components/Table/Context/TableCellContext';\nimport { useTableColumnContext } from 'Components/Table/Context/TableColumnsContext';\nimport { TableHeaderContextProvider } from 'Components/Table/Context/TableHeaderContext';\nimport {\n ColumnSelectionDrawerWrap,\n getReorderColumn,\n} from 'Components/Table/ColumnSelection/ColumnSelectionDrawerWrap';\nimport { DefaultCellComponent } from 'Components/Table/DefaultCellComponent';\nimport { LogLineCellComponent } from 'Components/Table/LogLineCellComponent';\nimport { CustomHeaderRendererProps } from 'Components/Table/LogsTableHeader';\nimport { FieldName, FieldNameMeta, FieldNameMetaStore } from 'Components/Table/TableTypes';\nimport { guessLogsFieldTypeForValue } from 'Components/Table/TableWrap';\nimport { LogsTableHeaderWrap } from 'Components/Table/LogsTableHeaderWrap';\nimport { getBodyName, getIdName, getTimeName, LogsFrame } from '../../services/logsFrame';\nimport { useQueryContext } from './Context/QueryContext';\nimport { testIds } from '../../services/testIds';\nimport { debounce } from 'lodash';\n\ninterface Props {\n height: number;\n timeZone: string;\n logsFrame: LogsFrame;\n width: number;\n labels: Labels[];\n}\n\nconst getStyles = () => ({\n section: css({\n position: 'relative',\n }),\n tableWrap: css({\n '.cellActions': {\n // Hacky but without inspect turned on the table will change the width of the row on hover, but we don't want the default icons to show\n display: 'none !important',\n },\n }),\n});\n\nfunction TableAndContext(props: {\n data: DataFrame;\n height: number;\n width: number;\n selectedLine?: number;\n logsFrame: LogsFrame;\n onResize: (fieldDisplayName: string, width: number) => void;\n}) {\n return (\n \n );\n}\n\nexport const Table = (props: Props) => {\n const { height, timeZone, logsFrame, width, labels } = props;\n const theme = useTheme2();\n const styles = getStyles();\n\n const [tableFrame, setTableFrame] = useState(undefined);\n const {\n columns,\n visible,\n setVisible,\n setFilteredColumns,\n setColumns,\n clearSelectedLine,\n columnWidthMap,\n setColumnWidthMap,\n } = useTableColumnContext();\n\n const { selectedLine } = useQueryContext();\n\n // Create a local state for selected line so we can clear the state tied to the URL\n const [localSelectedLine] = useState(selectedLine);\n\n const reorderColumn = getReorderColumn(setColumns);\n\n const templateSrv = getTemplateSrv();\n const replace = useMemo(() => templateSrv.replace.bind(templateSrv), [templateSrv]);\n\n const prepareTableFrame = useCallback(\n (frame: DataFrame): DataFrame => {\n if (!frame.length) {\n return frame;\n }\n\n const [frameWithOverrides] = applyFieldOverrides({\n data: [frame],\n timeZone: timeZone,\n theme: theme,\n replaceVariables: replace,\n fieldConfig: {\n defaults: {\n custom: {},\n },\n overrides: [],\n },\n });\n\n // `getLinks` and `applyFieldOverrides` are taken from TableContainer.tsx\n for (const [index, field] of frameWithOverrides.fields.entries()) {\n // If it's a string, then try to guess for a better type for numeric support in viz\n field.type =\n field.type === FieldType.string ? guessLogsFieldTypeForField(field) ?? FieldType.string : field.type;\n\n field.config = {\n ...field.config,\n\n custom: {\n inspect: true,\n filterable: true, // This sets the columns to be filterable\n headerComponent: (props: CustomHeaderRendererProps) => (\n \n setVisible(true)}\n slideLeft={\n index !== 0 ? (cols: FieldNameMetaStore) => reorderColumn(cols, index, index - 1) : undefined\n }\n slideRight={\n index !== frame.fields.length - 1\n ? (cols: FieldNameMetaStore) => reorderColumn(cols, index, index + 1)\n : undefined\n }\n autoColumnWidths={\n Object.keys(columnWidthMap).length > 0\n ? () => {\n setColumnWidthMap({});\n }\n : undefined\n }\n />\n \n ),\n width:\n columnWidthMap[field.name] ??\n getInitialFieldWidth(field, index, columns, width, frameWithOverrides.fields.length, logsFrame),\n cellOptions: getTableCellOptions(field, index, labels, logsFrame),\n ...field.config.custom,\n },\n // This sets the individual field value as filterable\n // filterable: isFieldFilterable(field, logsFrame?.bodyField.name ?? '', logsFrame?.timeField.name ?? ''),\n filterable: true,\n };\n }\n\n return frameWithOverrides;\n },\n // This function is building the table dataframe that will be transformed, even though the components within the dataframe (cells, headers) can mutate the dataframe!\n // If we try to update the dataframe whenever the columns are changed (which are rebuilt using this dataframe after being transformed), react will infinitely update frame -> columns -> frame -> ...\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [timeZone, theme, labels, width, replace, setVisible, columnWidthMap]\n );\n\n // prepare dataFrame\n useEffect(() => {\n const prepare = async () => {\n const transformations: Array = getExtractFieldsTransform(\n logsFrame.raw\n );\n\n let labelFilters = buildColumnsWithMeta(columns);\n\n const labelFiltersTransform = getOrganizeFieldsTransform(labelFilters);\n if (labelFiltersTransform) {\n transformations.push(labelFiltersTransform);\n } else {\n const specialFields = {\n time: logsFrame.timeField,\n body: logsFrame.bodyField,\n extraFields: logsFrame.extraFields,\n };\n if (specialFields && specialFields.body !== undefined && specialFields.time !== undefined) {\n transformations.push(\n getDefaultStateOrganizeFieldsTransform(\n specialFields as {\n time: FieldWithIndex;\n body: FieldWithIndex;\n }\n )\n );\n }\n }\n\n if (transformations.length > 0) {\n const transformedDataFrame: DataFrame[] = await lastValueFrom(\n // @ts-ignore\n transformDataFrame(transformations, [logsFrame.raw])\n );\n const tableFrame = prepareTableFrame(transformedDataFrame[0]);\n setTableFrame(tableFrame);\n } else {\n setTableFrame(prepareTableFrame(logsFrame.raw));\n }\n };\n prepare();\n }, [logsFrame.raw, logsFrame.bodyField, logsFrame.timeField, logsFrame.extraFields, prepareTableFrame, columns]);\n\n // Clear selected line from URL so it doesn't pollute future queries\n useEffect(() => {\n if (localSelectedLine && selectedLine) {\n clearSelectedLine();\n return;\n }\n }, [localSelectedLine, clearSelectedLine, selectedLine]);\n\n const idField = logsFrame.raw.fields.find((field) => field.name === getIdName(logsFrame));\n const lineIndex = idField?.values.findIndex((v) => v === localSelectedLine?.id);\n const cleanLineIndex = lineIndex && lineIndex !== -1 ? lineIndex : undefined;\n\n if (!tableFrame) {\n return <>;\n }\n\n const onResize = (fieldDisplayName: string, width: number) => {\n const key = Object.keys(columns)\n .filter((key) => columns[key].active)\n .find((key) => key === fieldDisplayName);\n\n if (key && width > 0) {\n const map = { ...columnWidthMap };\n map[key] = width;\n setColumnWidthMap(map);\n }\n };\n\n return (\n
\n {visible && (\n {\n setVisible(false);\n setFilteredColumns(columns);\n }}\n >\n \n \n )}\n\n
\n \n \n \n \n \n
\n
\n );\n};\n\nfunction getDefaultStateOrganizeFieldsTransform(specialFields: { time: FieldWithIndex; body: FieldWithIndex }) {\n return {\n id: 'organize',\n options: {\n indexByName: {\n [specialFields.time.name]: 0,\n [specialFields.body.name]: 1,\n },\n includeByName: {\n [specialFields.body.name]: true,\n [specialFields.time.name]: true,\n },\n },\n };\n}\n\nfunction guessLogsFieldTypeForField(field: Field): FieldType | undefined {\n // 1. Use the column name to guess\n if (field.name) {\n const name = field.name.toLowerCase();\n if (name === 'date' || name === 'time') {\n return FieldType.time;\n }\n }\n\n // 2. Check the first non-null value\n for (let i = 0; i < field.values.length; i++) {\n const v = field.values[i];\n if (v != null) {\n return guessLogsFieldTypeForValue(v);\n }\n }\n\n // Could not find anything\n return undefined;\n}\n\nexport const getFieldMappings = (): ValueMap => {\n return {\n options: {\n critical: {\n color: '#705da0',\n index: 0,\n },\n crit: {\n color: '#705da0',\n index: 1,\n },\n error: {\n color: '#e24d42',\n index: 2,\n },\n err: {\n color: '#e24d42',\n index: 3,\n },\n eror: {\n color: '#e24d42',\n index: 4,\n },\n warning: {\n color: '#FF9900',\n index: 5,\n },\n warn: {\n color: '#FF9900',\n index: 6,\n },\n info: {\n color: '#7eb26d',\n index: 7,\n },\n debug: {\n color: '#1f78c1',\n index: 8,\n },\n trace: {\n color: '#6ed0e0',\n index: 9,\n },\n },\n type: MappingType.ValueToText,\n };\n};\n\nfunction buildColumnsWithMeta(columnsWithMeta: Record) {\n // Create object of label filters to include columns selected by the user\n let labelFilters: Record = {};\n Object.keys(columnsWithMeta)\n .filter((key) => columnsWithMeta[key].active)\n .forEach((key) => {\n const index = columnsWithMeta[key].index;\n // Index should always be defined for any active column\n if (index !== undefined) {\n labelFilters[key] = index;\n }\n });\n\n return labelFilters;\n}\n\nfunction getOrganizeFieldsTransform(labelFilters: Record) {\n let labelFiltersInclude: Record = {};\n\n for (const key in labelFilters) {\n labelFiltersInclude[key] = true;\n }\n\n if (Object.keys(labelFilters).length > 0) {\n return {\n id: 'organize',\n options: {\n indexByName: labelFilters,\n includeByName: labelFiltersInclude,\n },\n };\n }\n return null;\n}\n\nexport function getExtractFieldsTransform(dataFrame: DataFrame) {\n return dataFrame.fields\n .filter((field: Field & { typeInfo?: { frame: string } }) => {\n const isFieldLokiLabels =\n field.typeInfo?.frame === 'json.RawMessage' &&\n field.name === 'labels' &&\n dataFrame?.meta?.type !== DataFrameType.LogLines;\n const isFieldDataplaneLabels =\n field.name === 'labels' && field.type === FieldType.other && dataFrame?.meta?.type === DataFrameType.LogLines;\n return isFieldLokiLabels || isFieldDataplaneLabels;\n })\n .flatMap((field: Field) => {\n return [\n {\n id: 'extractFields',\n options: {\n format: 'json',\n keepTime: false,\n replace: false,\n source: field.name,\n },\n },\n ];\n });\n}\n\nfunction getTableCellOptions(\n field: Field,\n fieldIndex: number,\n labels: Labels[],\n logsFrame: LogsFrame\n): TableCustomCellOptions | TableColoredBackgroundCellOptions {\n if (field.name === getBodyName(logsFrame)) {\n return {\n cellComponent: (props) => (\n \n ),\n type: TableCellDisplayMode.Custom,\n };\n }\n\n return {\n cellComponent: (props) => ,\n type: TableCellDisplayMode.Custom,\n };\n}\n\nfunction getInitialFieldWidth(\n field: Field,\n fieldIndex: number,\n columns: FieldNameMetaStore,\n tableWidth: number,\n numberOfFields: number,\n logsFrame: LogsFrame\n): number | undefined {\n const minWidth = 90;\n\n // Columns shouldn't take more than half the available space, unless there are only 2 columns\n const maxWidth = numberOfFields <= 2 ? tableWidth : Math.min(tableWidth / 2);\n\n // First field gets icons, and a little extra width\n const extraPadding = fieldIndex === 0 ? 50 : 0;\n\n // Time fields have consistent widths\n if (field.type === FieldType.time) {\n return 200 + extraPadding;\n }\n\n const columnMeta = columns[field.name];\n\n if (columnMeta === undefined) {\n return undefined;\n }\n\n const maxLength = Math.max(columnMeta.maxLength ?? 0, field.name.length);\n\n if (columnMeta.maxLength) {\n // Super rough estimate, about 6.5px per char, and 95px for some space for the header icons (remember when sorted a new icon is added to the table header).\n // I guess to be a little tighter we could only add the extra padding IF the field name is longer then the longest value\n return Math.min(Math.max(maxLength * 6.5 + 95 + extraPadding, minWidth + extraPadding), maxWidth);\n }\n\n if (field.name === getBodyName(logsFrame)) {\n return undefined;\n }\n\n // Just derived fields, which should have uniform length\n return Math.min(\n Math.max((field.values?.[0]?.length ?? 80) * 6.5 + 95 + extraPadding, minWidth + extraPadding),\n maxWidth\n );\n}\n","import React, { useCallback, useState } from 'react';\nimport { css } from '@emotion/css';\n\nimport { DataFrame, FieldType, FieldWithIndex, getTimeZone, guessFieldTypeFromValue, Labels } from '@grafana/data';\n\nimport { LogLineState, TableColumnContextProvider } from 'Components/Table/Context/TableColumnsContext';\nimport { Table } from 'Components/Table/Table';\nimport { FieldNameMeta, FieldNameMetaStore } from 'Components/Table/TableTypes';\nimport { useQueryContext } from 'Components/Table/Context/QueryContext';\nimport { useResizeObserver } from '@react-aria/utils';\n\nexport type SpecialFieldsType = {\n time: FieldWithIndex;\n body: FieldWithIndex;\n extraFields: FieldWithIndex[];\n};\n\n// matches common ISO 8601\nconst iso8601Regex = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{3,})?(?:Z|[-+]\\d{2}:?\\d{2})$/;\n\ninterface TableWrapProps {\n urlColumns: string[];\n urlTableBodyState?: LogLineState;\n setUrlColumns: (columns: string[]) => void;\n panelWrap: React.RefObject;\n clearSelectedLine: () => void;\n setUrlTableBodyState: (logLineState: LogLineState) => void;\n showColumnManagementDrawer: (isActive: boolean) => void;\n isColumnManagementActive: boolean;\n}\n\nconst getStyles = () => ({\n section: css({\n position: 'relative',\n }),\n});\n\nexport const TableWrap = (props: TableWrapProps) => {\n const { logsFrame } = useQueryContext();\n\n const [panelWrapSize, setPanelWrapSize] = useState({ width: 0, height: 0 });\n\n // Table needs to be positioned absolutely, passing in reference wrapping panelChrome from parent\n useResizeObserver({\n ref: props.panelWrap,\n onResize: () => {\n const element = props.panelWrap.current;\n if (element) {\n if (panelWrapSize.width !== element.clientWidth || panelWrapSize.height !== element.clientHeight) {\n setPanelWrapSize({\n width: element.clientWidth,\n height: element.clientHeight,\n });\n }\n }\n },\n });\n\n const styles = getStyles();\n const timeZone = getTimeZone();\n\n // This function is called when we want to grab the column names that are currently stored in the URL.\n // So instead we have to grab the current columns directly from the URL.\n const getColumnsFromProps = useCallback(\n (fieldNames: FieldNameMetaStore) => {\n const previouslySelected = props.urlColumns;\n if (previouslySelected?.length) {\n Object.values(previouslySelected).forEach((key, index) => {\n if (fieldNames[key]) {\n fieldNames[key].active = true;\n fieldNames[key].index = index;\n }\n });\n }\n\n return fieldNames;\n },\n [props.urlColumns]\n );\n\n // If the data frame is empty, there's nothing to viz, it could mean the user has unselected all columns\n if (!logsFrame || !logsFrame.raw.length) {\n return null;\n }\n\n const labels = logsFrame.getLogFrameLabelsAsLabels() ?? [];\n const numberOfLogLines = logsFrame ? logsFrame.raw.length : 0;\n\n // If we have labels and log lines\n let pendingLabelState = mapLabelsToInitialState(logsFrame.raw, labels);\n const specialFields = {\n time: logsFrame.timeField,\n body: logsFrame.bodyField,\n extraFields: logsFrame.extraFields,\n };\n\n // Normalize the other fields\n if (specialFields) {\n addSpecialLabelsState(\n [specialFields.time, specialFields.body, ...specialFields.extraFields],\n pendingLabelState,\n numberOfLogLines\n );\n\n pendingLabelState = getColumnsFromProps(pendingLabelState);\n\n // Get all active columns\n const active = Object.keys(pendingLabelState).filter((key) => pendingLabelState[key].active);\n\n // If nothing is selected, then select the default columns\n setSpecialFieldMeta(active, specialFields, pendingLabelState);\n }\n\n return (\n
\n \n \n \n
\n );\n};\n\nconst normalize = (value: number, total: number): number => {\n return Math.ceil((100 * value) / total);\n};\n\ntype labelName = string;\ntype labelValue = string;\n\nexport function getCardinalityMapFromLabels(labels: Labels[]) {\n const cardinalityMap = new Map; maxLength: number }>();\n labels.forEach((fieldLabels) => {\n const labelNames = Object.keys(fieldLabels);\n labelNames.forEach((labelName) => {\n if (cardinalityMap.has(labelName)) {\n const setObj = cardinalityMap.get(labelName);\n const values = setObj?.valueSet;\n const maxLength = setObj?.maxLength;\n\n if (values && !values?.has(fieldLabels[labelName])) {\n values?.add(fieldLabels[labelName]);\n if (maxLength && fieldLabels[labelName].length > maxLength) {\n cardinalityMap.set(labelName, { maxLength: fieldLabels[labelName].length, valueSet: values });\n }\n }\n } else {\n cardinalityMap.set(labelName, {\n maxLength: fieldLabels[labelName].length,\n valueSet: new Set([fieldLabels[labelName]]),\n });\n }\n });\n });\n\n return cardinalityMap;\n}\n\n/**\n * Guess the field type of the value\n * @param value\n */\nexport function guessLogsFieldTypeForValue(value: string) {\n let fieldType = guessFieldTypeFromValue(value);\n const isISO8601 = fieldType === 'string' && iso8601Regex.test(value);\n if (isISO8601) {\n fieldType = FieldType.time;\n }\n return fieldType;\n}\n\nfunction mapLabelsToInitialState(dataFrame: DataFrame, labels: Labels[]) {\n let pendingLabelState: FieldNameMetaStore = {};\n\n // Use a map to dedupe labels and count their occurrences in the logs\n const labelMap = new Map();\n const cardinality = getCardinalityMapFromLabels(labels);\n const numberOfLogLines = dataFrame ? dataFrame.length : 0;\n\n if (labels?.length && numberOfLogLines) {\n // Iterate through all of Labels\n labels.forEach((labels: Labels) => {\n const labelsArray = Object.keys(labels);\n // Iterate through the label values\n labelsArray.forEach((label) => {\n const cardinalityMap = cardinality.get(label);\n const cardinalityCount = cardinalityMap?.valueSet?.size ?? 0;\n // If it's already in our map, increment the count\n if (labelMap.has(label)) {\n const value = labelMap.get(label);\n\n if (value) {\n if (value?.active) {\n labelMap.set(label, {\n percentOfLinesWithLabel: value.percentOfLinesWithLabel + 1,\n active: true,\n index: value.index,\n cardinality: cardinalityCount,\n maxLength: cardinalityMap?.maxLength,\n });\n } else {\n labelMap.set(label, {\n percentOfLinesWithLabel: value.percentOfLinesWithLabel + 1,\n active: false,\n index: undefined,\n cardinality: cardinalityCount,\n maxLength: cardinalityMap?.maxLength,\n });\n }\n }\n // Otherwise add it\n } else {\n labelMap.set(label, {\n percentOfLinesWithLabel: 1,\n active: false,\n index: undefined,\n cardinality: cardinalityCount,\n maxLength: cardinalityMap?.maxLength,\n });\n }\n });\n });\n\n // Converting the map to an object\n pendingLabelState = Object.fromEntries(labelMap);\n\n // Convert count to percent of log lines\n Object.keys(pendingLabelState).forEach((key) => {\n pendingLabelState[key].percentOfLinesWithLabel = normalize(\n pendingLabelState[key].percentOfLinesWithLabel,\n numberOfLogLines\n );\n });\n }\n return pendingLabelState;\n}\n\n/**\n * Add special fields like time and body\n * @param specialFieldArray\n * @param pendingLabelState\n * @param numberOfLogLines\n */\nfunction addSpecialLabelsState(\n specialFieldArray: Array,\n pendingLabelState: FieldNameMetaStore,\n numberOfLogLines: number\n) {\n specialFieldArray.forEach((field) => {\n if (!field) {\n return;\n }\n const isActive = pendingLabelState[field.name]?.active;\n const index = pendingLabelState[field.name]?.index;\n if (isActive && index !== undefined) {\n pendingLabelState[field.name] = {\n percentOfLinesWithLabel: normalize(\n field.values.filter((value) => value !== null && value !== undefined).length,\n numberOfLogLines\n ),\n active: true,\n index: index,\n cardinality: numberOfLogLines,\n };\n } else {\n pendingLabelState[field.name] = {\n percentOfLinesWithLabel: normalize(\n field.values.filter((value) => value !== null && value !== undefined).length,\n numberOfLogLines\n ),\n active: false,\n index: undefined,\n cardinality: numberOfLogLines,\n };\n }\n });\n\n return pendingLabelState;\n}\n\nfunction setSpecialFieldMeta(\n active: string[],\n specialFields: SpecialFieldsType,\n pendingLabelState: FieldNameMetaStore\n) {\n // If no fields are visible, set defaults\n if (active.length === 0) {\n if (specialFields.body?.name) {\n pendingLabelState[specialFields.body?.name].active = true;\n pendingLabelState[specialFields.body?.name].index = 1;\n }\n if (specialFields.time?.name) {\n pendingLabelState[specialFields.time?.name].active = true;\n pendingLabelState[specialFields.time?.name].index = 0;\n }\n }\n\n if (specialFields.time?.name && specialFields.body?.name) {\n pendingLabelState[specialFields.body?.name].type = 'BODY_FIELD';\n pendingLabelState[specialFields.time?.name].type = 'TIME_FIELD';\n }\n\n if (specialFields.extraFields.length) {\n specialFields.extraFields.forEach((field) => {\n const hasLinks = field.config.links?.length;\n if (hasLinks) {\n pendingLabelState[field.name].type = 'LINK_FIELD';\n }\n });\n }\n}\n","import React from 'react';\n\nimport { TableWrap } from 'Components/Table/TableWrap';\nimport { AdHocVariableFilter, DataFrame, TimeRange } from '@grafana/data';\nimport { QueryContextProvider } from 'Components/Table/Context/QueryContext';\nimport { parseLogsFrame } from '../../services/logsFrame';\nimport { SelectedTableRow } from './LogLineCellComponent';\nimport { LogLineState } from './Context/TableColumnsContext';\n\ninterface TableProviderProps {\n dataFrame: DataFrame;\n setUrlColumns: (columns: string[]) => void;\n urlColumns: string[];\n addFilter: (filter: AdHocVariableFilter) => void;\n selectedLine?: SelectedTableRow;\n timeRange?: TimeRange;\n panelWrap: React.RefObject;\n clearSelectedLine: () => void;\n setUrlTableBodyState: (logLineState: LogLineState) => void;\n urlTableBodyState?: LogLineState;\n showColumnManagementDrawer: (isActive: boolean) => void;\n isColumnManagementActive: boolean;\n}\n\nexport const TableProvider = ({\n dataFrame,\n setUrlColumns,\n urlColumns,\n addFilter,\n selectedLine,\n timeRange,\n panelWrap,\n clearSelectedLine,\n setUrlTableBodyState,\n urlTableBodyState,\n showColumnManagementDrawer,\n isColumnManagementActive,\n}: TableProviderProps) => {\n if (!dataFrame) {\n return null;\n }\n\n const logsFrame = parseLogsFrame(dataFrame);\n if (!logsFrame) {\n return null;\n }\n\n return (\n \n \n \n );\n};\n","import { SceneComponentProps, sceneGraph, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport { LogsListScene } from './LogsListScene';\nimport { AdHocVariableFilter, GrafanaTheme2 } from '@grafana/data';\nimport { TableProvider } from '../Table/TableProvider';\nimport React, { useRef } from 'react';\nimport { Button, PanelChrome, useStyles2 } from '@grafana/ui';\nimport { LogsPanelHeaderActions } from '../Table/LogsHeaderActions';\nimport { css } from '@emotion/css';\nimport { addAdHocFilter } from './Breakdowns/AddToFiltersButton';\nimport { areArraysStrictlyEqual } from '../../services/comparison';\nimport { getLogsPanelFrame } from './ServiceScene';\nimport { getVariableForLabel } from '../../services/fields';\nimport { PanelMenu } from '../Panels/PanelMenu';\nimport { LogLineState } from '../Table/Context/TableColumnsContext';\n\ninterface LogsTableSceneState extends SceneObjectState {\n menu?: PanelMenu;\n isColumnManagementActive: boolean;\n}\nexport class LogsTableScene extends SceneObjectBase {\n constructor(state: Partial) {\n super({ ...state, isColumnManagementActive: false });\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n public showColumnManagementDrawer = (isActive: boolean) => {\n this.setState({\n isColumnManagementActive: isActive,\n });\n };\n\n public onActivate() {\n this.setState({\n menu: new PanelMenu({ addInvestigationsLink: false }),\n });\n }\n public static Component = ({ model }: SceneComponentProps) => {\n const styles = useStyles2(getStyles);\n // Get state from parent model\n const parentModel = sceneGraph.getAncestor(model, LogsListScene);\n const { data } = sceneGraph.getData(model).useState();\n const { selectedLine, urlColumns, visualizationType, tableLogLineState } = parentModel.useState();\n const { menu, isColumnManagementActive } = model.useState();\n\n // Get time range\n const timeRange = sceneGraph.getTimeRange(model);\n const { value: timeRangeValue } = timeRange.useState();\n\n const dataFrame = getLogsPanelFrame(data);\n\n // Define callback function to update filters in react\n const addFilter = (filter: AdHocVariableFilter) => {\n const variableType = getVariableForLabel(dataFrame, filter.key, model);\n addAdHocFilter(filter, parentModel, variableType);\n };\n\n // Get reference to panel wrapper so table knows how much space it can use to render\n const panelWrap = useRef(null);\n\n // Define callback function to update url columns in react\n const setUrlColumns = (urlColumns: string[]) => {\n if (!areArraysStrictlyEqual(urlColumns, parentModel.state.urlColumns)) {\n parentModel.setState({ urlColumns });\n }\n };\n\n const setUrlTableBodyState = (logLineState: LogLineState) => {\n parentModel.setState({ tableLogLineState: logLineState });\n };\n\n const clearSelectedLine = () => {\n if (parentModel.state.selectedLine) {\n parentModel.clearSelectedLine();\n }\n };\n\n return (\n
\n : undefined}\n actions={\n <>\n \n \n \n }\n >\n {dataFrame && (\n \n )}\n \n
\n );\n };\n}\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n panelWrapper: css({\n width: '100%',\n height: '100%',\n label: 'panel-wrapper-table',\n\n // @todo remove this wrapper and styles when core changes are introduced in 11.5\n // Need more specificity to override core style\n 'button.show-on-hover': {\n opacity: 1,\n visibility: 'visible',\n background: 'none',\n '&:hover': {\n background: theme.colors.secondary.shade,\n },\n },\n }),\n});\n","import { SceneComponentProps, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport debounce from 'lodash/debounce';\nimport { ChangeEvent, KeyboardEvent, useState } from 'react';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from 'services/analytics';\nimport { getLineFiltersVariable, getLineFilterVariable } from '../../../services/variableGetters';\nimport {\n getLineFilterCase,\n getLineFilterExclusive,\n getLineFilterRegex,\n setLineFilterCase,\n setLineFilterExclusive,\n setLineFilterRegex,\n} from '../../../services/store';\nimport { RegexInputValue } from './RegexIconButton';\nimport { LineFilterCaseSensitive, LineFilterOp } from '../../../services/filterTypes';\nimport { LineFilterEditor } from './LineFilterEditor';\nimport { addCurrentUrlToHistory } from '../../../services/navigate';\n\ninterface LineFilterState extends SceneObjectState {\n lineFilter: string;\n caseSensitive: boolean;\n regex: boolean;\n exclusive: boolean;\n}\n\n/**\n * The line filter scene used in the logs tab\n */\nexport class LineFilterScene extends SceneObjectBase {\n static Component = LineFilterComponent;\n\n /**\n * Sets default regex/sensitivity/exclusivity state from local storage\n */\n constructor(state?: Partial) {\n super({\n lineFilter: state?.lineFilter || '',\n caseSensitive: state?.caseSensitive ?? getLineFilterCase(false),\n regex: state?.regex ?? getLineFilterRegex(false),\n exclusive: state?.exclusive ?? getLineFilterExclusive(false),\n ...state,\n });\n this.addActivationHandler(this.onActivate);\n }\n\n /**\n * Set initial state on activation\n */\n private onActivate = () => {\n const filter = this.getFilter();\n\n if (!filter) {\n return;\n }\n\n this.setState({\n lineFilter: filter.value,\n regex: filter.operator === LineFilterOp.regex || filter.operator === LineFilterOp.negativeRegex,\n caseSensitive: filter.key === LineFilterCaseSensitive.caseSensitive,\n exclusive: filter.operator === LineFilterOp.negativeMatch || filter.operator === LineFilterOp.negativeRegex,\n });\n\n return () => {\n // This won't clear the variable as the URL won't have time to sync, but it does prevent changes to the variable that haven't yet been synced with this scene state\n this.clearFilter();\n };\n };\n\n /**\n * Clear filter variable\n */\n private clearVariable() {\n const variable = getLineFilterVariable(this);\n variable.updateFilters([], {\n skipPublish: true,\n });\n this.setState({\n lineFilter: '',\n });\n }\n /**\n * Returns operator from current state\n */\n private getOperator(): LineFilterOp {\n if (this.state.regex && this.state.exclusive) {\n return LineFilterOp.negativeRegex;\n }\n if (this.state.regex && !this.state.exclusive) {\n return LineFilterOp.regex;\n }\n if (!this.state.regex && this.state.exclusive) {\n return LineFilterOp.negativeMatch;\n }\n if (!this.state.regex && !this.state.exclusive) {\n return LineFilterOp.match;\n }\n\n throw new Error('getOperator: failed to determine operation');\n }\n\n /**\n * Since there is no \"key\" for line-filters in logQL that will map to the key of the ad-hoc filter, we currently use the key to store the case sensitivity state\n * Note: This is technically a non-standard implementation (hack) of the ad-hoc variable, we should look into adding metadata to the ad-hoc variables in scenes\n * However the behavior of the ad-hoc variable lines up well with our use-case, we want case sensitivity state to be saved in the URL and to trigger query updates.\n * Since we use a custom renderer, this should be fine, but a source of tech-debt nonetheless.\n */\n private getFilterKey() {\n return this.state.caseSensitive ? LineFilterCaseSensitive.caseSensitive : LineFilterCaseSensitive.caseInsensitive;\n }\n\n /**\n * Returns the current ad-hoc variable filter\n */\n private getFilter() {\n const lineFilterVariable = getLineFilterVariable(this);\n return lineFilterVariable.state.filters[0];\n }\n\n /**\n * Clears filter input and clears debounce queue\n */\n clearFilter = () => {\n this.updateVariableDebounced.cancel();\n this.updateFilter('', false);\n };\n\n /**\n * Updates line filter state\n * Note: Updating/debouncing the queries onChange was removed to prevent people from accidentally hammering loki while writing line filters (particularly regex)\n * The code has been left in for now as we discussed adding an \"edit\" mode with a dedicated logs panel with a smaller line limit to let users debug the results as they type\n */\n updateFilter(lineFilter: string, debounced = true) {\n this.updateInputState(lineFilter);\n if (debounced) {\n this.updateVariableDebounced(lineFilter);\n } else {\n this.updateVariable(lineFilter);\n }\n }\n\n updateInputState(lineFilter: string) {\n this.setState({\n lineFilter,\n });\n }\n\n /**\n * Update exclusive state, triggers re-query without debounce\n */\n onToggleExclusive = (exclusive: boolean) => {\n setLineFilterExclusive(exclusive);\n this.setState({\n exclusive,\n });\n\n this.updateFilter(this.state.lineFilter, false);\n };\n\n /**\n * Moves the filter to the \"global\" line-filter ad-hoc variable after flushing the debounce queue.\n * Clears the state of the local ad-hoc variable.\n */\n onSubmitLineFilter = () => {\n addCurrentUrlToHistory();\n this.updateFilter(this.state.lineFilter, false);\n // Flush any debounced updates before grabbing the filter. Important that this happens before getFilter is called!\n this.updateVariableDebounced.flush();\n\n const lineFiltersVariable = getLineFiltersVariable(this);\n const existingFilters = lineFiltersVariable.state.filters;\n const thisFilter = this.getFilter();\n\n lineFiltersVariable.updateFilters([...existingFilters, thisFilter]);\n this.clearVariable();\n };\n\n /**\n * Passes the input value to the updateFilter method\n */\n handleChange = (e: ChangeEvent) => {\n this.updateInputState(e.target.value);\n };\n\n /**\n * Submits on enter\n */\n handleEnter = (e: KeyboardEvent) => {\n if (e.key === 'Enter' && this.state.lineFilter) {\n this.onSubmitLineFilter();\n }\n };\n\n /**\n * Sets local state and triggers query on case sensitivity toggle\n */\n onCaseSensitiveToggle = (newState: LineFilterCaseSensitive) => {\n const caseSensitive = newState === LineFilterCaseSensitive.caseSensitive;\n\n // Set value to scene state\n this.setState({\n caseSensitive,\n });\n\n // Set value in local storage\n setLineFilterCase(caseSensitive);\n\n this.updateFilter(this.state.lineFilter, false);\n };\n\n /**\n * Sets local state and triggers query on regex toggle\n */\n onRegexToggle = (newState: RegexInputValue) => {\n const regex = newState === 'regex';\n\n // Set value to scene state\n this.setState({\n regex,\n });\n\n // Set value in local storage\n setLineFilterRegex(regex);\n\n this.updateFilter(this.state.lineFilter, false);\n };\n\n /**\n * Instance variable reference to debounced update method\n */\n updateVariableDebounced = debounce((search: string) => {\n this.updateVariable(search);\n }, 1000);\n\n /**\n * Updates the ad-hoc variable from local state and triggers a query.\n * Sends analytics event.\n */\n updateVariable = (search: string) => {\n this.updateVariableDebounced.flush();\n const variable = getLineFilterVariable(this);\n const variables = getLineFiltersVariable(this);\n const filter = {\n key: this.getFilterKey(),\n // The keyLabel is used to sort line filters by order added.\n keyLabel: variables.state.filters.length.toString(),\n operator: this.getOperator(),\n value: search,\n };\n\n variable.updateFilters([filter]);\n\n reportAppInteraction(\n USER_EVENTS_PAGES.service_details,\n USER_EVENTS_ACTIONS.service_details.search_string_in_logs_changed,\n {\n searchQueryLength: search.length,\n containsLevel: search.toLowerCase().includes('level'),\n operator: filter.operator,\n caseSensitive: filter.key,\n }\n );\n };\n}\n\nfunction LineFilterComponent({ model }: SceneComponentProps) {\n const { lineFilter, caseSensitive, regex, exclusive } = model.useState();\n const [focus, setFocus] = useState(false);\n return LineFilterEditor({\n exclusive,\n lineFilter,\n caseSensitive,\n regex,\n onSubmitLineFilter: model.onSubmitLineFilter,\n handleEnter: model.handleEnter,\n onInputChange: model.handleChange,\n updateFilter: model.updateFilter,\n onCaseSensitiveToggle: model.onCaseSensitiveToggle,\n onRegexToggle: model.onRegexToggle,\n setExclusive: model.onToggleExclusive,\n onClearLineFilter: model.clearFilter,\n focus,\n setFocus,\n type: 'editor',\n });\n}\n","import React from 'react';\n\nimport {\n SceneComponentProps,\n SceneFlexItem,\n SceneFlexLayout,\n sceneGraph,\n SceneObjectBase,\n SceneObjectState,\n SceneObjectUrlSyncConfig,\n SceneObjectUrlValues,\n SceneTimeRangeLike,\n} from '@grafana/scenes';\nimport { SelectedTableRow } from '../Table/LogLineCellComponent';\nimport { LogsTableScene } from './LogsTableScene';\nimport { css } from '@emotion/css';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from '../../services/analytics';\nimport { locationService } from '@grafana/runtime';\nimport { LogsPanelScene } from './LogsPanelScene';\nimport {\n getDisplayedFields,\n getLogsVisualizationType,\n LogsVisualizationType,\n setLogsVisualizationType,\n} from 'services/store';\nimport { logger } from '../../services/logger';\nimport { Options } from '@grafana/schema/dist/esm/raw/composable/logs/panelcfg/x/LogsPanelCfg_types.gen';\nimport { narrowLogsVisualizationType, narrowSelectedTableRow, unknownToStrings } from '../../services/narrowing';\nimport { LogLineState } from '../Table/Context/TableColumnsContext';\nimport { LineFilterScene } from './LineFilter/LineFilterScene';\n\nexport interface LogsListSceneState extends SceneObjectState {\n loading?: boolean;\n panel?: SceneFlexLayout;\n visualizationType: LogsVisualizationType;\n urlColumns?: string[];\n tableLogLineState?: LogLineState;\n selectedLine?: SelectedTableRow;\n $timeRange?: SceneTimeRangeLike;\n displayedFields: string[];\n lineFilter?: string;\n}\n\nexport class LogsListScene extends SceneObjectBase {\n protected _urlSync = new SceneObjectUrlSyncConfig(this, {\n keys: ['urlColumns', 'selectedLine', 'visualizationType', 'displayedFields', 'tableLogLineState'],\n });\n private logsPanelScene?: LogsPanelScene = undefined;\n constructor(state: Partial) {\n super({\n ...state,\n visualizationType: getLogsVisualizationType(),\n displayedFields: [],\n });\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n getUrlState() {\n const urlColumns = this.state.urlColumns ?? [];\n const selectedLine = this.state.selectedLine;\n const visualizationType = this.state.visualizationType;\n const displayedFields = this.state.displayedFields ?? getDisplayedFields(this) ?? [];\n return {\n urlColumns: JSON.stringify(urlColumns),\n selectedLine: JSON.stringify(selectedLine),\n visualizationType: JSON.stringify(visualizationType),\n displayedFields: JSON.stringify(displayedFields),\n tableLogLineState: JSON.stringify(this.state.tableLogLineState),\n };\n }\n\n updateFromUrl(values: SceneObjectUrlValues) {\n const stateUpdate: Partial = {};\n try {\n if (typeof values.urlColumns === 'string') {\n const decodedUrlColumns: string[] = unknownToStrings(JSON.parse(values.urlColumns));\n if (decodedUrlColumns !== this.state.urlColumns) {\n stateUpdate.urlColumns = decodedUrlColumns;\n }\n }\n if (typeof values.selectedLine === 'string') {\n const unknownTableRow = narrowSelectedTableRow(JSON.parse(values.selectedLine));\n if (unknownTableRow) {\n const decodedSelectedTableRow: SelectedTableRow = unknownTableRow;\n if (decodedSelectedTableRow !== this.state.selectedLine) {\n stateUpdate.selectedLine = decodedSelectedTableRow;\n }\n }\n }\n if (typeof values.visualizationType === 'string') {\n const decodedVisualizationType = narrowLogsVisualizationType(JSON.parse(values.visualizationType));\n if (decodedVisualizationType && decodedVisualizationType !== this.state.visualizationType) {\n stateUpdate.visualizationType = decodedVisualizationType;\n }\n }\n if (typeof values.displayedFields === 'string') {\n const displayedFields = unknownToStrings(JSON.parse(values.displayedFields));\n if (displayedFields && displayedFields.length) {\n stateUpdate.displayedFields = displayedFields;\n }\n }\n if (typeof values.tableLogLineState === 'string') {\n const tableLogLineState = JSON.parse(values.tableLogLineState);\n if (tableLogLineState === LogLineState.labels || tableLogLineState === LogLineState.text) {\n stateUpdate.tableLogLineState = tableLogLineState;\n }\n }\n } catch (e) {\n // URL Params can be manually changed and it will make JSON.parse() fail.\n logger.error(e, { msg: 'LogsListScene: updateFromUrl unexpected error' });\n }\n\n if (Object.keys(stateUpdate).length) {\n this.setState(stateUpdate);\n }\n }\n\n clearSelectedLine() {\n this.setState({\n selectedLine: undefined,\n });\n }\n\n clearDisplayedFields = () => {\n this.setState({ displayedFields: [] });\n if (this.logsPanelScene) {\n this.logsPanelScene.clearDisplayedFields();\n }\n };\n\n public onActivate() {\n const searchParams = new URLSearchParams(locationService.getLocation().search);\n this.setStateFromUrl(searchParams);\n\n if (!this.state.panel) {\n this.updateLogsPanel();\n }\n\n this._subs.add(\n this.subscribeToState((newState, prevState) => {\n if (newState.visualizationType !== prevState.visualizationType) {\n this.updateLogsPanel();\n }\n })\n );\n }\n\n private setStateFromUrl(searchParams: URLSearchParams) {\n const selectedLineUrl = searchParams.get('selectedLine');\n const urlColumnsUrl = searchParams.get('urlColumns');\n const vizTypeUrl = searchParams.get('visualizationType');\n const displayedFieldsUrl = searchParams.get('displayedFields') ?? JSON.stringify(getDisplayedFields(this));\n const tableLogLineState = searchParams.get('tableLogLineState');\n\n this.updateFromUrl({\n selectedLine: selectedLineUrl,\n urlColumns: urlColumnsUrl,\n vizType: vizTypeUrl,\n displayedFields: displayedFieldsUrl,\n tableLogLineState,\n });\n }\n\n public setLogsVizOption = (options: Partial = {}) => {\n if (this.logsPanelScene) {\n this.logsPanelScene.setLogsVizOption(options);\n }\n };\n\n public updateLogsPanel = () => {\n this.setState({\n panel: this.getVizPanel(),\n });\n\n // Subscribe to line filter state so we can pass the current filter between different viz\n if (this.state.panel) {\n const lineFilterScenes = sceneGraph.findDescendents(this.state.panel, LineFilterScene);\n if (lineFilterScenes.length) {\n const lineFilterScene = lineFilterScenes[0];\n this._subs.add(\n lineFilterScene.subscribeToState((newState, prevState) => {\n if (newState.lineFilter !== prevState.lineFilter) {\n this.setState({\n lineFilter: newState.lineFilter,\n });\n }\n })\n );\n }\n }\n };\n\n public setVisualizationType = (type: LogsVisualizationType) => {\n this.setState({\n visualizationType: type,\n });\n\n reportAppInteraction(\n USER_EVENTS_PAGES.service_details,\n USER_EVENTS_ACTIONS.service_details.logs_visualization_toggle,\n {\n visualisationType: type,\n }\n );\n setLogsVisualizationType(type);\n };\n\n private getVizPanel() {\n this.logsPanelScene = new LogsPanelScene({});\n\n return new SceneFlexLayout({\n direction: 'column',\n children:\n this.state.visualizationType === 'logs'\n ? [\n new SceneFlexLayout({\n children: [\n new SceneFlexItem({\n body: new LineFilterScene({ lineFilter: this.state.lineFilter }),\n xSizing: 'fill',\n }),\n ],\n }),\n new SceneFlexItem({\n height: 'calc(100vh - 220px)',\n body: this.logsPanelScene,\n }),\n ]\n : [\n new SceneFlexItem({\n body: new LineFilterScene({ lineFilter: this.state.lineFilter }),\n xSizing: 'fill',\n }),\n new SceneFlexItem({\n height: 'calc(100vh - 220px)',\n body: new LogsTableScene({}),\n }),\n ],\n });\n }\n\n public static Component = ({ model }: SceneComponentProps) => {\n const { panel } = model.useState();\n\n if (!panel) {\n return;\n }\n\n return (\n
\n \n
\n );\n };\n}\n\nconst styles = {\n panelWrapper: css({\n // Hack to select internal div\n 'section > div[class$=\"panel-content\"]': css({\n // A components withing the Logs viz sets contain, which creates a new containing block that is not body which breaks the popover menu\n contain: 'none',\n // Prevent overflow from spilling out of parent container\n overflow: 'auto',\n }),\n }),\n};\n","import { LogRowModel } from '@grafana/data';\nimport { IconButton } from '@grafana/ui';\nimport React, { MouseEvent, useCallback, useEffect, useState } from 'react';\n\ninterface Props {\n onClick(event: MouseEvent, row?: LogRowModel): void;\n}\n\nexport const CopyLinkButton = ({ onClick }: Props) => {\n const [copied, setCopied] = useState(false);\n\n useEffect(() => {\n let timeoutId: ReturnType;\n\n if (copied) {\n timeoutId = setTimeout(() => {\n setCopied(false);\n }, 2000);\n }\n\n return () => {\n clearTimeout(timeoutId);\n };\n }, [copied]);\n\n const handleClick = useCallback(\n (event: MouseEvent, row?: LogRowModel) => {\n onClick(event, row);\n setCopied(true);\n },\n [onClick]\n );\n\n return (\n \n );\n};\n","import React from 'react';\nimport { GrotError } from 'Components/GrotError';\nimport { Button } from '@grafana/ui';\n\ninterface Props {\n clearFilters(): void;\n error: string;\n}\n\nexport const LogsPanelError = ({ clearFilters, error }: Props) => {\n return (\n \n
\n

{error}

\n \n
\n
\n );\n};\n","import {\n AdHocFiltersVariable,\n PanelBuilders,\n SceneComponentProps,\n sceneGraph,\n SceneObjectBase,\n SceneObjectState,\n SceneObjectUrlSyncConfig,\n SceneObjectUrlValues,\n SceneQueryRunner,\n VizPanel,\n} from '@grafana/scenes';\nimport { DataFrame, getValueFormat, LoadingState, LogRowModel, PanelData } from '@grafana/data';\nimport { getLogOption, getLogsVolumeOption, setDisplayedFields } from '../../services/store';\nimport React, { MouseEvent } from 'react';\nimport { LogsListScene } from './LogsListScene';\nimport { LoadingPlaceholder, useStyles2 } from '@grafana/ui';\nimport { addToFilters, FilterType } from './Breakdowns/AddToFiltersButton';\nimport { getVariableForLabel } from '../../services/fields';\nimport { VAR_FIELDS, VAR_LABELS, VAR_LEVELS, VAR_METADATA } from '../../services/variables';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from '../../services/analytics';\nimport {\n getAdHocFiltersVariable,\n getLineFiltersVariable,\n getValueFromFieldsFilter,\n} from '../../services/variableGetters';\nimport { copyText, generateLogShortlink, resolveRowTimeRangeForSharing } from 'services/text';\nimport { CopyLinkButton } from './CopyLinkButton';\nimport { getLogsPanelSortOrderFromStore, LogOptionsScene } from './LogOptionsScene';\nimport { LogsVolumePanel, logsVolumePanelKey } from './LogsVolumePanel';\nimport { getPanelWrapperStyles, PanelMenu } from '../Panels/PanelMenu';\nimport { ServiceScene } from './ServiceScene';\nimport { LineFilterCaseSensitive, LineFilterOp } from '../../services/filterTypes';\nimport { Options } from '@grafana/schema/dist/esm/raw/composable/logs/panelcfg/x/LogsPanelCfg_types.gen';\nimport { locationService } from '@grafana/runtime';\nimport { narrowLogsSortOrder } from '../../services/narrowing';\nimport { logger } from '../../services/logger';\nimport { LogsSortOrder } from '@grafana/schema';\nimport { getPrettyQueryExpr } from 'services/scenes';\nimport { LogsPanelError } from './LogsPanelError';\nimport { clearVariables } from 'services/variableHelpers';\nimport { isEmptyLogsResult } from 'services/logsFrame';\n\ninterface LogsPanelSceneState extends SceneObjectState {\n body?: VizPanel;\n error?: string;\n logsVolumeCollapsedByError?: boolean;\n sortOrder?: LogsSortOrder;\n wrapLogMessage?: boolean;\n}\n\nexport class LogsPanelScene extends SceneObjectBase {\n protected _urlSync = new SceneObjectUrlSyncConfig(this, {\n keys: ['sortOrder', 'wrapLogMessage'],\n });\n\n constructor(state: Partial) {\n super({\n sortOrder: getLogsPanelSortOrderFromStore(),\n wrapLogMessage: Boolean(getLogOption('wrapLogMessage', false)),\n error: undefined,\n ...state,\n });\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n private setStateFromUrl() {\n const searchParams = new URLSearchParams(locationService.getLocation().search);\n\n this.updateFromUrl({\n sortOrder: searchParams.get('sortOrder'),\n wrapLogMessage: searchParams.get('wrapLogMessage'),\n });\n }\n\n getUrlState() {\n return {\n sortOrder: JSON.stringify(this.state.sortOrder),\n wrapLogMessage: JSON.stringify(this.state.wrapLogMessage),\n };\n }\n\n updateFromUrl(values: SceneObjectUrlValues) {\n const stateUpdate: Partial = {};\n try {\n if (typeof values.sortOrder === 'string' && values.sortOrder) {\n const decodedSortOrder = narrowLogsSortOrder(JSON.parse(values.sortOrder));\n if (decodedSortOrder) {\n stateUpdate.sortOrder = decodedSortOrder;\n this.setLogsVizOption({ sortOrder: decodedSortOrder });\n }\n }\n\n if (typeof values.wrapLogMessage === 'string' && values.wrapLogMessage) {\n const decodedWrapLogMessage = JSON.parse(values.wrapLogMessage);\n if (typeof decodedWrapLogMessage === 'boolean') {\n stateUpdate.wrapLogMessage = decodedWrapLogMessage;\n this.setLogsVizOption({ wrapLogMessage: decodedWrapLogMessage });\n this.setLogsVizOption({ prettifyLogMessage: decodedWrapLogMessage });\n }\n }\n } catch (e) {\n // URL Params can be manually changed and it will make JSON.parse() fail.\n logger.error(e, { msg: 'LogOptionsScene: updateFromUrl unexpected error' });\n }\n\n if (Object.keys(stateUpdate).length) {\n this.setState({ ...stateUpdate });\n }\n }\n\n public onActivate() {\n // Need viz to set options, but setting options will trigger query\n this.setStateFromUrl();\n\n if (!this.state.body) {\n this.setState({\n body: this.getLogsPanel({\n wrapLogMessage: this.state.wrapLogMessage,\n prettifyLogMessage: this.state.wrapLogMessage,\n sortOrder: this.state.sortOrder,\n }),\n });\n }\n\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n this._subs.add(\n serviceScene.subscribeToState((newState, prevState) => {\n if (newState.$data?.state.data?.state === LoadingState.Error) {\n this.handleLogsError(newState.$data?.state.data);\n } else if (\n newState.$data?.state.data?.state === LoadingState.Done &&\n isEmptyLogsResult(newState.$data?.state.data.series)\n ) {\n this.handleNoData();\n } else if (this.state.error) {\n this.clearLogsError();\n }\n if (newState.logsCount !== prevState.logsCount) {\n if (!this.state.body) {\n this.setState({\n body: this.getLogsPanel({\n wrapLogMessage: this.state.wrapLogMessage,\n prettifyLogMessage: this.state.wrapLogMessage,\n sortOrder: this.state.sortOrder,\n }),\n });\n } else {\n this.state.body.setState({\n title: this.getTitle(newState.logsCount),\n });\n }\n }\n })\n );\n }\n\n handleLogsError(data: PanelData) {\n const error = data.errors?.length ? data.errors[0] : data.error;\n const errorResponse = error?.message;\n if (errorResponse) {\n logger.error(new Error('Logs Panel error'), {\n msg: errorResponse,\n status: error.statusText ?? 'N/A',\n type: error.type ?? 'N/A',\n });\n }\n\n let errorMessage = 'Unexpected error response. Please review your filters or try a different time range.';\n if (errorResponse?.includes('parse error')) {\n errorMessage =\n 'Logs could not be retrieved due to invalid filter parameters. Please review your filters and try again.';\n } else if (errorResponse?.includes('response larger than the max message size')) {\n errorMessage =\n 'The response is too large to process. Try narrowing your search or using filters to reduce the data size.';\n }\n\n this.showLogsError(errorMessage);\n }\n\n handleNoData() {\n this.showLogsError('No logs match your search. Please review your filters or try a different time range.');\n }\n\n showLogsError(error: string) {\n const logsVolumeCollapsedByError = this.state.logsVolumeCollapsedByError ?? !getLogsVolumeOption('collapsed');\n\n this.setState({ error, logsVolumeCollapsedByError });\n\n if (logsVolumeCollapsedByError) {\n const logsVolume = sceneGraph.findByKeyAndType(this, logsVolumePanelKey, LogsVolumePanel);\n logsVolume.state.panel?.setState({ collapsed: true });\n }\n }\n\n clearLogsError() {\n if (this.state.logsVolumeCollapsedByError) {\n const logsVolume = sceneGraph.findByKeyAndType(this, logsVolumePanelKey, LogsVolumePanel);\n logsVolume.state.panel?.setState({ collapsed: false });\n }\n\n this.setState({ error: undefined, logsVolumeCollapsedByError: undefined });\n }\n\n onClickShowField = (field: string) => {\n const parent = this.getParentScene();\n const index = parent.state.displayedFields.indexOf(field);\n\n if (index === -1 && this.state.body) {\n const displayedFields = [...parent.state.displayedFields, field];\n this.setLogsVizOption({\n displayedFields,\n });\n parent.setState({ displayedFields });\n setDisplayedFields(this, parent.state.displayedFields);\n\n reportAppInteraction(\n USER_EVENTS_PAGES.service_details,\n USER_EVENTS_ACTIONS.service_details.logs_toggle_displayed_field\n );\n }\n };\n\n onClickHideField = (field: string) => {\n const parent = this.getParentScene();\n const index = parent.state.displayedFields.indexOf(field);\n\n if (index >= 0 && this.state.body) {\n const displayedFields = parent.state.displayedFields.filter((displayedField) => field !== displayedField);\n this.setLogsVizOption({\n displayedFields,\n });\n parent.setState({ displayedFields });\n setDisplayedFields(this, parent.state.displayedFields);\n\n reportAppInteraction(\n USER_EVENTS_PAGES.service_details,\n USER_EVENTS_ACTIONS.service_details.logs_toggle_displayed_field\n );\n }\n };\n\n setLogsVizOption(options: Partial = {}) {\n if (!this.state.body) {\n return;\n }\n if ('sortOrder' in options && options.sortOrder !== this.state.body.state.options.sortOrder) {\n const $data = sceneGraph.getData(this);\n const queryRunner =\n $data instanceof SceneQueryRunner ? $data : sceneGraph.findDescendents($data, SceneQueryRunner)[0];\n if (queryRunner) {\n queryRunner.runQueries();\n }\n }\n this.state.body.onOptionsChange(options);\n }\n\n clearDisplayedFields = () => {\n if (!this.state.body) {\n return;\n }\n this.setLogsVizOption({\n displayedFields: [],\n });\n setDisplayedFields(this, []);\n };\n\n private getParentScene() {\n return sceneGraph.getAncestor(this, LogsListScene);\n }\n\n private getTitle(logsCount: number | undefined) {\n const valueFormatter = getValueFormat('short');\n const formattedCount = logsCount !== undefined ? valueFormatter(logsCount, 0) : undefined;\n return formattedCount !== undefined ? `Logs (${formattedCount.text}${formattedCount.suffix?.trim()})` : 'Logs';\n }\n\n private getLogsPanel(options: Partial) {\n const parentModel = this.getParentScene();\n const visualizationType = parentModel.state.visualizationType;\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n return (\n PanelBuilders.logs()\n .setTitle(this.getTitle(serviceScene.state.logsCount))\n .setOption('showTime', true)\n .setOption('onClickFilterLabel', this.handleLabelFilterClick)\n .setOption('onClickFilterOutLabel', this.handleLabelFilterOutClick)\n .setOption('isFilterLabelActive', this.handleIsFilterLabelActive)\n .setOption('onClickFilterString', this.handleFilterStringClick)\n .setOption('onClickFilterOutString', this.handleFilterOutStringClick)\n .setOption('onClickShowField', this.onClickShowField)\n .setOption('onClickHideField', this.onClickHideField)\n .setOption('displayedFields', parentModel.state.displayedFields)\n .setOption('sortOrder', options.sortOrder ?? getLogsPanelSortOrderFromStore())\n .setOption('wrapLogMessage', options.wrapLogMessage ?? Boolean(getLogOption('wrapLogMessage', false)))\n .setOption(\n 'prettifyLogMessage',\n options.prettifyLogMessage ?? Boolean(getLogOption('wrapLogMessage', false))\n )\n .setMenu(\n new PanelMenu({\n investigationOptions: { type: 'logs', getLabelName: () => `Logs: ${getPrettyQueryExpr(serviceScene)}` },\n })\n )\n .setOption('showLogContextToggle', true)\n // @ts-expect-error Requires Grafana 11.5\n .setOption('enableInfiniteScrolling', true)\n // @ts-expect-error Grafana 11.5\n .setOption('onNewLogsReceived', this.updateVisibleRange)\n // @ts-expect-error Grafana 11.5\n .setOption('logRowMenuIconsAfter', [])\n\n .setHeaderActions(\n new LogOptionsScene({ visualizationType, onChangeVisualizationType: parentModel.setVisualizationType })\n )\n .build()\n );\n }\n\n private updateVisibleRange = (newLogs: DataFrame[]) => {\n // Update logs count\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n serviceScene.setState({\n logsCount: newLogs[0].length,\n });\n\n if (serviceScene.state.$data?.state.data?.series) {\n // We need to update the state with the new data without triggering state-dependent changes.\n serviceScene.state.$data.setState({\n ...serviceScene.state.$data.state,\n data: {\n ...serviceScene.state.$data.state.data,\n series: newLogs,\n },\n });\n }\n\n const logsVolumeScene = sceneGraph.findByKeyAndType(this, logsVolumePanelKey, LogsVolumePanel);\n logsVolumeScene.updateVisibleRange(newLogs);\n };\n\n private handleShareLogLineClick = (event: MouseEvent, row?: LogRowModel) => {\n if (row?.rowId && this.state.body) {\n const parent = this.getParentScene();\n const timeRange = resolveRowTimeRangeForSharing(row);\n copyText(\n generateLogShortlink(\n 'panelState',\n {\n logs: { id: row.uid, displayedFields: parent.state.displayedFields },\n },\n timeRange\n )\n );\n }\n };\n\n private handleLabelFilterClick = (key: string, value: string, frame?: DataFrame) => {\n this.handleLabelFilter(key, value, frame, 'toggle');\n };\n\n private handleLabelFilterOutClick = (key: string, value: string, frame?: DataFrame) => {\n this.handleLabelFilter(key, value, frame, 'exclude');\n };\n\n private handleIsFilterLabelActive = (key: string, value: string) => {\n const labels = getAdHocFiltersVariable(VAR_LABELS, this);\n const fields = getAdHocFiltersVariable(VAR_FIELDS, this);\n const levels = getAdHocFiltersVariable(VAR_LEVELS, this);\n const metadata = getAdHocFiltersVariable(VAR_METADATA, this);\n\n const hasKeyValueFilter = (filter: AdHocFiltersVariable | null) => {\n return (\n filter &&\n filter.state.filters.findIndex(\n (filter) => filter.operator === '=' && filter.key === key && filter.value === value\n ) >= 0\n );\n };\n\n // Fields have json encoded values unlike the other variables, get the value for the matching filter and parse it before comparing\n const hasKeyValueFilterField = (filter: AdHocFiltersVariable | null) => {\n if (filter) {\n const fieldFilter = filter.state.filters.find((filter) => filter.operator === '=' && filter.key === key);\n\n if (fieldFilter) {\n const fieldValue = getValueFromFieldsFilter(fieldFilter, key);\n return fieldValue.value === value;\n }\n }\n return false;\n };\n\n return (\n hasKeyValueFilter(labels) ||\n hasKeyValueFilterField(fields) ||\n hasKeyValueFilter(levels) ||\n hasKeyValueFilter(metadata)\n );\n };\n\n private handleFilterOutStringClick = (value: string) => {\n const lineFiltersVar = getLineFiltersVariable(this);\n if (lineFiltersVar) {\n lineFiltersVar.setState({\n filters: [\n ...lineFiltersVar.state.filters,\n {\n operator: LineFilterOp.negativeMatch,\n value,\n key: LineFilterCaseSensitive.caseSensitive,\n keyLabel: lineFiltersVar.state.filters.length.toString(),\n },\n ],\n });\n reportAppInteraction(\n USER_EVENTS_PAGES.service_details,\n USER_EVENTS_ACTIONS.service_details.logs_popover_line_filter,\n {\n selectionLength: value.length,\n }\n );\n }\n };\n\n private handleFilterStringClick = (value: string) => {\n const lineFiltersVar = getLineFiltersVariable(this);\n if (lineFiltersVar) {\n lineFiltersVar.setState({\n filters: [\n ...lineFiltersVar.state.filters,\n {\n operator: LineFilterOp.match,\n value,\n key: LineFilterCaseSensitive.caseSensitive,\n keyLabel: lineFiltersVar.state.filters.length.toString(),\n },\n ],\n });\n reportAppInteraction(\n USER_EVENTS_PAGES.service_details,\n USER_EVENTS_ACTIONS.service_details.logs_popover_line_filter,\n {\n selectionLength: value.length,\n }\n );\n }\n };\n\n private handleLabelFilter(key: string, value: string, frame: DataFrame | undefined, operator: FilterType) {\n const variableType = getVariableForLabel(frame, key, this);\n addToFilters(key, value, operator, this, variableType);\n\n reportAppInteraction(\n USER_EVENTS_PAGES.service_details,\n USER_EVENTS_ACTIONS.service_details.logs_detail_filter_applied,\n {\n filterType: variableType,\n key,\n action: operator,\n }\n );\n }\n\n public static Component = ({ model }: SceneComponentProps) => {\n const { body, error } = model.useState();\n const styles = useStyles2(getPanelWrapperStyles);\n if (body) {\n return (\n \n {!error && }\n {error && clearVariables(body)} />}\n \n );\n }\n return ;\n };\n}\n","import React from 'react';\n\nimport { SceneComponentProps, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport { usePluginComponent } from '@grafana/runtime';\nimport { VAR_LABELS } from 'services/variables';\nimport { getAdHocFiltersVariable } from 'services/variableGetters';\nimport { AdHocVariableFilter } from '@grafana/data';\nimport { getDataSource } from 'services/scenes';\n\ninterface LogsVolumeActionsState extends SceneObjectState {}\n\nexport class LogsVolumeActions extends SceneObjectBase {\n static Component = Component;\n}\n\ntype StreamSelector = Pick;\n\ntype TemporaryExemptionsProps = {\n /** An ordered list of lower-case [a-z]+ string identifiers to provide context clues of where this component is being embedded and how we might want to consider displaying it */\n contextHints?: string[];\n /** Currently selected data source */\n dataSourceUid?: string;\n /** The stream selector, broken down into a list of structured subselector filter items */\n streamSelector?: StreamSelector[];\n};\n\nfunction Component({ model }: SceneComponentProps) {\n const { component: TemporaryExemptionsButton, isLoading } = usePluginComponent(\n 'grafana-adaptivelogs-app/temporary-exemptions/v1'\n );\n\n const labelsVar = getAdHocFiltersVariable(VAR_LABELS, model);\n const { filters } = labelsVar.useState();\n const streamSelector = filters.map(({ key, operator, value }: AdHocVariableFilter) => ({ key, operator, value }));\n\n const dataSourceUid = getDataSource(model);\n\n if (isLoading || !TemporaryExemptionsButton) {\n return null;\n }\n\n return (\n \n );\n}\n","import React from 'react';\n\nimport {\n PanelBuilders,\n SceneComponentProps,\n SceneFlexLayout,\n sceneGraph,\n SceneObjectBase,\n SceneObjectState,\n VizPanel,\n} from '@grafana/scenes';\nimport { LegendDisplayMode, PanelContext, SeriesVisibilityChangeMode, useStyles2 } from '@grafana/ui';\nimport { getQueryRunner, setLogsVolumeFieldConfigs, syncLevelsVisibleSeries } from 'services/panel';\nimport { buildDataQuery, LINE_LIMIT } from 'services/query';\nimport { LEVEL_VARIABLE_VALUE } from 'services/variables';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from 'services/analytics';\nimport { getTimeSeriesExpr } from '../../services/expressions';\nimport { toggleLevelFromFilter } from 'services/levels';\nimport { DataFrame, getValueFormat, LoadingState } from '@grafana/data';\nimport { getFieldsVariable, getLabelsVariable, getLevelsVariable } from '../../services/variableGetters';\nimport { areArraysEqual } from '../../services/comparison';\nimport { getPanelWrapperStyles, PanelMenu } from '../Panels/PanelMenu';\nimport { ServiceScene } from './ServiceScene';\nimport { getSeriesVisibleRange, getVisibleRangeFrame } from 'services/logsFrame';\nimport { getLogsVolumeOption, setLogsVolumeOption } from 'services/store';\nimport { IndexScene } from '../IndexScene/IndexScene';\nimport { LogsVolumeActions } from './LogsVolumeActions';\nimport { AddFilterEvent } from './Breakdowns/AddToFiltersButton';\nimport { LevelsVariableScene } from '../IndexScene/LevelsVariableScene';\n\nexport interface LogsVolumePanelState extends SceneObjectState {\n panel?: VizPanel;\n}\n\nexport const logsVolumePanelKey = 'logs-volume-panel';\nexport class LogsVolumePanel extends SceneObjectBase {\n private updatedLogSeries: DataFrame[] | null = null;\n constructor(state: LogsVolumePanelState) {\n super({\n ...state,\n key: logsVolumePanelKey,\n });\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n private onActivate() {\n if (!this.state.panel) {\n const panel = this.getVizPanel();\n this.setState({\n panel,\n });\n this.updateContainerHeight(panel);\n }\n\n const labels = getLabelsVariable(this);\n const fields = getFieldsVariable(this);\n\n // Set panel on labels variable filter update\n this._subs.add(\n labels.subscribeToState((newState, prevState) => {\n if (!areArraysEqual(newState.filters, prevState.filters)) {\n this.setState({\n panel: this.getVizPanel(),\n });\n }\n })\n );\n\n // Set Panel on fields variable filter update\n this._subs.add(\n fields.subscribeToState((newState, prevState) => {\n if (!areArraysEqual(newState.filters, prevState.filters)) {\n this.setState({\n panel: this.getVizPanel(),\n });\n }\n })\n );\n\n // trigger variable render on AddFilterEvent, set filter state to trigger logs panel query\n this._subs.add(\n this.subscribeToEvent(AddFilterEvent, (event) => {\n if (event.key === LEVEL_VARIABLE_VALUE) {\n const levelsVariableScene = sceneGraph.findObject(this, (obj) => obj instanceof LevelsVariableScene);\n if (levelsVariableScene instanceof LevelsVariableScene) {\n const levelsVar = getLevelsVariable(this);\n levelsVar.setState({ filters: levelsVar.state.filters });\n }\n }\n })\n );\n }\n\n private getTitle(totalLogsCount: number | undefined, logsCount: number | undefined) {\n const indexScene = sceneGraph.getAncestor(this, IndexScene);\n const maxLines = indexScene.state.ds?.maxLines ?? LINE_LIMIT;\n const valueFormatter = getValueFormat('short');\n const formattedTotalCount = totalLogsCount !== undefined ? valueFormatter(totalLogsCount, 0) : undefined;\n // The instant query (totalLogsCount) doesn't return good results for small result sets, if we're below the max number of lines, use the logs query result instead.\n if (totalLogsCount === undefined && logsCount !== undefined && logsCount < maxLines) {\n const formattedCount = valueFormatter(logsCount, 0);\n return formattedCount !== undefined\n ? `Log volume (${formattedCount.text}${formattedCount.suffix?.trim()})`\n : 'Log volume';\n }\n return formattedTotalCount !== undefined\n ? `Log volume (${formattedTotalCount.text}${formattedTotalCount.suffix?.trim()})`\n : 'Log volume';\n }\n\n private getVizPanel() {\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n const viz = PanelBuilders.timeseries()\n .setTitle(this.getTitle(serviceScene.state.totalLogsCount, serviceScene.state.logsCount))\n .setOption('legend', { showLegend: true, calcs: ['sum'], displayMode: LegendDisplayMode.List })\n .setUnit('short')\n .setMenu(new PanelMenu({ investigationOptions: { labelName: 'level' } }))\n .setCollapsible(true)\n .setCollapsed(getLogsVolumeOption('collapsed'))\n .setHeaderActions(new LogsVolumeActions({}))\n // 11.5\n // .setShowMenuAlways(true)\n .setData(\n getQueryRunner([\n buildDataQuery(getTimeSeriesExpr(this, LEVEL_VARIABLE_VALUE, false), {\n legendFormat: `{{${LEVEL_VARIABLE_VALUE}}}`,\n }),\n ])\n );\n\n setLogsVolumeFieldConfigs(viz);\n\n const panel = viz.build();\n panel.setState({\n extendPanelContext: (_, context) => this.extendTimeSeriesLegendBus(context),\n });\n\n this._subs.add(\n panel.subscribeToState((newState, prevState) => {\n if (newState.collapsed !== prevState.collapsed) {\n this.updateContainerHeight(panel);\n setLogsVolumeOption('collapsed', newState.collapsed ? 'true' : undefined);\n }\n })\n );\n\n this._subs.add(\n panel.state.$data?.subscribeToState((newState) => {\n if (newState.data?.state !== LoadingState.Done) {\n return;\n }\n if (serviceScene.state.$data?.state.data?.state === LoadingState.Done && !newState.data.annotations?.length) {\n this.updateVisibleRange(serviceScene.state.$data?.state.data?.series);\n } else {\n this.displayVisibleRange();\n }\n syncLevelsVisibleSeries(panel, newState.data.series, this);\n })\n );\n\n this._subs.add(\n serviceScene.state.$data?.subscribeToState((newState) => {\n if (newState.data?.state === LoadingState.Done) {\n this.updateVisibleRange(newState.data.series);\n }\n })\n );\n\n this._subs.add(\n serviceScene.subscribeToState((newState, prevState) => {\n if (newState.totalLogsCount !== prevState.totalLogsCount || newState.logsCount !== undefined) {\n if (!this.state.panel) {\n this.setState({\n panel: this.getVizPanel(),\n });\n } else {\n this.state.panel.setState({\n title: this.getTitle(newState.totalLogsCount, newState.logsCount),\n });\n }\n }\n })\n );\n\n return panel;\n }\n\n public updateContainerHeight(panel: VizPanel) {\n const containerLayout = sceneGraph.getAncestor(panel, SceneFlexLayout);\n const height = panel.state.collapsed ? 35 : Math.max(Math.round(window.innerHeight * 0.2), 100);\n containerLayout.setState({\n minHeight: height,\n height: height,\n maxHeight: height,\n });\n }\n\n public updateVisibleRange(data: DataFrame[] = []) {\n this.updatedLogSeries = data;\n this.displayVisibleRange();\n }\n\n private displayVisibleRange() {\n const panel = this.state.panel;\n if (\n !panel ||\n !panel.state.$data?.state.data ||\n panel.state.$data?.state.data.state !== LoadingState.Done ||\n !this.updatedLogSeries\n ) {\n return;\n }\n const visibleRange = getSeriesVisibleRange(this.updatedLogSeries);\n this.updatedLogSeries = null;\n panel.state.$data.setState({\n data: {\n ...panel.state.$data.state.data,\n annotations: [getVisibleRangeFrame(visibleRange.start, visibleRange.end)],\n },\n });\n }\n\n private extendTimeSeriesLegendBus = (context: PanelContext) => {\n const levelFilter = getLevelsVariable(this);\n this._subs.add(\n levelFilter?.subscribeToState(() => {\n const panel = this.state.panel;\n if (!panel?.state.$data?.state.data?.series) {\n return;\n }\n\n syncLevelsVisibleSeries(panel, panel?.state.$data?.state.data?.series, this);\n })\n );\n\n context.onToggleSeriesVisibility = (label: string, mode: SeriesVisibilityChangeMode) => {\n const action = toggleLevelFromFilter(label, this);\n this.publishEvent(new AddFilterEvent('legend', 'include', LEVEL_VARIABLE_VALUE, label), true);\n\n reportAppInteraction(\n USER_EVENTS_PAGES.service_details,\n USER_EVENTS_ACTIONS.service_details.level_in_logs_volume_clicked,\n {\n level: label,\n action,\n }\n );\n };\n };\n\n public static Component = ({ model }: SceneComponentProps) => {\n const { panel } = model.useState();\n if (!panel) {\n return;\n }\n const styles = useStyles2(getPanelWrapperStyles);\n\n return (\n \n \n \n );\n };\n}\n","import { sceneGraph, SceneObjectState } from '@grafana/scenes';\nimport { IndexScene } from '../../../IndexScene/IndexScene';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from 'services/analytics';\nimport { logger } from '../../../../services/logger';\nimport { addCurrentUrlToHistory } from '../../../../services/navigate';\n\nexport interface FilterByPatternsButtonState extends SceneObjectState {\n pattern: string;\n type: 'exclude' | 'include' | 'undo';\n}\n\nexport interface FilterByPatternsState extends FilterByPatternsButtonState {\n indexScene: IndexScene;\n}\n\nexport function onPatternClick(props: FilterByPatternsState) {\n const { indexScene: staleIndex, pattern, type } = { ...props };\n\n const indexScene = sceneGraph.getAncestor(staleIndex, IndexScene);\n\n if (!indexScene) {\n logger.warn('logs exploration scene not found');\n return;\n }\n\n addCurrentUrlToHistory();\n const { patterns = [] } = indexScene.state;\n\n // Remove the pattern if it's already there\n const filteredPatterns = patterns.filter((pat) => pat.pattern !== pattern);\n // Analytics\n const includePatternsLength = filteredPatterns.filter((p) => p.type === 'include')?.length ?? 0;\n const excludePatternsLength = filteredPatterns.filter((p) => p.type === 'exclude')?.length ?? 0;\n reportAppInteraction(USER_EVENTS_PAGES.service_details, USER_EVENTS_ACTIONS.service_details.pattern_selected, {\n type: type,\n includePatternsLength: includePatternsLength + (type === 'include' ? 1 : 0),\n excludePatternsLength: excludePatternsLength + (type === 'exclude' ? 1 : 0),\n });\n\n // If we have type undo, then we don't need to add the pattern\n if (type === 'undo') {\n indexScene.setState({\n patterns: filteredPatterns,\n });\n } else {\n // Otherwise, add the pattern\n indexScene.setState({\n patterns: [...filteredPatterns, { pattern: pattern, type: type }],\n });\n }\n}\n","import { css } from '@emotion/css';\nimport React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { useStyles2 } from '@grafana/ui';\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n logsStatsRow: css({\n margin: `${theme.spacing(1.15)}px 0`,\n }),\n logsStatsRowActive: css({\n color: theme.colors.primary.text,\n position: 'relative',\n }),\n logsStatsRowLabel: css({\n display: 'flex',\n marginBottom: '1px',\n }),\n logsStatsRowValue: css({\n flex: 1,\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n }),\n logsStatsRowCount: css({\n textAlign: 'right',\n marginLeft: theme.spacing(0.75),\n }),\n logsStatsRowPercent: css({\n textAlign: 'right',\n marginLeft: theme.spacing(0.75),\n width: theme.spacing(4.5),\n }),\n logsStatsRowBar: css({\n height: theme.spacing(0.5),\n overflow: 'hidden',\n background: theme.colors.text.disabled,\n }),\n logsStatsRowInnerBar: css({\n height: theme.spacing(0.5),\n overflow: 'hidden',\n background: theme.colors.primary.main,\n }),\n});\n\nexport interface Props {\n active?: boolean;\n count: number;\n proportion: number;\n value?: string;\n}\n\nexport const PatternFieldLabelStatsRow = ({ active, count, proportion, value }: Props) => {\n const style = useStyles2(getStyles);\n const percent = `${Math.round(proportion * 100)}%`;\n const barStyle = { width: percent };\n\n return (\n
\n
\n
\n {value}\n
\n
{count}
\n
{percent}
\n
\n
\n
\n
\n
\n );\n};\n","import { css } from '@emotion/css';\nimport React from 'react';\n\nimport { LogLabelStatsModel, GrafanaTheme2 } from '@grafana/data';\nimport { useStyles2 } from '@grafana/ui';\n\n//Components\nimport { PatternFieldLabelStatsRow } from './PatternFieldLabelStatsRow';\n\nconst STATS_ROW_LIMIT = 10;\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n logsStats: css({\n background: 'inherit',\n color: theme.colors.text.primary,\n wordBreak: 'break-all',\n width: 'fit-content',\n maxHeight: '40vh',\n overflowY: 'auto',\n marginTop: theme.spacing(1),\n }),\n logsStatsHeader: css({\n borderBottom: `1px solid ${theme.colors.border.medium}`,\n display: 'flex',\n }),\n logsStatsTitle: css({\n fontWeight: theme.typography.fontWeightMedium,\n paddingRight: theme.spacing(2),\n display: 'inline-block',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n flexGrow: 1,\n }),\n logsStatsClose: css({\n cursor: 'pointer',\n }),\n logsStatsBody: css({\n padding: '5px 0px',\n }),\n});\n\ninterface PatternFieldLabelStatsProps {\n stats: LogLabelStatsModel[];\n value: string;\n}\n\nexport const PatternFieldLabelStats = (props: PatternFieldLabelStatsProps) => {\n const style = useStyles2(getStyles);\n\n const { stats, value } = props;\n\n const topRows = stats.slice(0, STATS_ROW_LIMIT);\n let activeRow = topRows.find((row) => row.value === value);\n let otherRows = stats.slice(STATS_ROW_LIMIT);\n const insertActiveRow = !activeRow;\n\n // Remove active row from other to show extra\n if (insertActiveRow) {\n activeRow = otherRows.find((row) => row.value === value);\n otherRows = otherRows.filter((row) => row.value !== value);\n }\n\n const otherCount = otherRows.reduce((sum, row) => sum + row.count, 0);\n const topCount = topRows.reduce((sum, row) => sum + row.count, 0);\n const total = topCount + otherCount;\n\n // Combine topRows and otherRows\n let combinedRows = [...topRows];\n\n // If there's an \"Other\" category, add it to combinedRows\n if (otherCount > 0) {\n combinedRows.push({ value: 'Other', count: otherCount, proportion: otherCount / total });\n }\n\n // Sort combinedRows by count in descending order\n combinedRows.sort((a, b) => b.count - a.count);\n\n return (\n
\n
\n
From a sample of {total} rows found
\n
\n
\n {combinedRows.map((stat) => (\n \n ))}\n
\n
\n );\n};\n","import React, { useMemo, useRef, useState } from 'react';\nimport { AdHocFiltersVariable, sceneGraph } from '@grafana/scenes';\nimport { Spinner, Toggletip, useStyles2 } from '@grafana/ui';\nimport { getLokiDatasource } from 'services/scenes';\nimport { IndexScene } from 'Components/IndexScene/IndexScene';\nimport { buildDataQuery } from 'services/query';\nimport { PatternFieldLabelStats } from './PatternFieldLabelStats';\nimport { GrafanaTheme2, LoadingState, LogLabelStatsModel, TimeRange } from '@grafana/data';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from 'services/analytics';\nimport { css } from '@emotion/css';\nimport { getLabelsVariable } from '../../../../services/variableGetters';\n\ninterface PatternNameLabelProps {\n exploration: IndexScene;\n pattern: string;\n maxLines: number;\n}\n\nexport const PatternNameLabel = ({ exploration, pattern, maxLines }: PatternNameLabelProps) => {\n const patternIndices = extractPatternIndices(pattern);\n const [stats, setStats] = useState(undefined);\n const [statsError, setStatsError] = useState(false);\n const styles = useStyles2(getStyles);\n\n // Refs to store the previous values of query and timeRange\n const previousQueryRef = useRef(null);\n const previousTimeRangeRef = useRef(null);\n\n const handlePatternClick = async () => {\n reportAppInteraction(USER_EVENTS_PAGES.service_details, USER_EVENTS_ACTIONS.service_details.pattern_field_clicked);\n const query = constructQuery(pattern, patternIndices, getLabelsVariable(exploration));\n const datasource = await getLokiDatasource(exploration);\n const currentTimeRange = sceneGraph.getTimeRange(exploration).state.value;\n\n // If the query and timeRange are the same as the previous ones, do not re-query\n if (stats && query === previousQueryRef.current && currentTimeRange === previousTimeRangeRef.current) {\n return;\n }\n\n // Update the refs with the new values\n previousQueryRef.current = query;\n previousTimeRangeRef.current = currentTimeRange;\n\n datasource\n ?.query({\n requestId: '1',\n interval: '',\n intervalMs: 0,\n scopedVars: {},\n range: currentTimeRange,\n targets: [buildDataQuery(query, { maxLines })],\n timezone: '',\n app: '',\n startTime: 0,\n })\n .forEach((result) => {\n if (result.state === LoadingState.Done && !result.errors?.length) {\n setStats(convertResultToStats(result, patternIndices.length, maxLines));\n setStatsError(false);\n } else if (result.state === LoadingState.Error || result.errors?.length) {\n setStats(undefined);\n setStatsError(true);\n }\n });\n };\n\n const parts = useMemo(() => pattern.split('<_>'), [pattern]);\n\n return (\n
\n {parts.map((part, index) => (\n \n {part}\n {index !== patternIndices.length && (\n \n {stats && stats[index].length > 0 && }\n {stats && stats[index].length === 0 && (\n
No available stats for this field in the current timestamp.
\n )}\n {!stats && statsError &&
Could not load stats for this pattern.
}\n {!stats && !statsError && (\n
\n \n
\n )}\n \n }\n >\n <_>\n \n )}\n
\n ))}\n
\n );\n};\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n pattern: css({\n cursor: 'pointer',\n backgroundColor: theme.colors.emphasize(theme.colors.background.primary, 0.1),\n margin: '0 2px',\n\n '&:hover': {\n backgroundColor: theme.colors.emphasize(theme.colors.background.primary, 0.2),\n },\n }),\n };\n}\n\n// Convert the result to statistics data structure\nfunction convertResultToStats(result: any, fieldCount: number, maxLines: number): LogLabelStatsModel[][] {\n const fieldStatsMap = new Map>();\n\n // Populate the fieldStatsMap with values from the result\n result.data[0].fields[0].values.toArray().forEach((value: Record) => {\n Object.keys(value).forEach((key) => {\n if (!fieldStatsMap.has(key)) {\n fieldStatsMap.set(key, new Map());\n }\n fieldStatsMap.get(key)?.set(value[key], (fieldStatsMap.get(key)?.get(value[key]) || 0) + 1);\n });\n });\n\n const stats: LogLabelStatsModel[][] = [];\n\n // Construct stats array from fieldStatsMap\n for (let i = 0; i <= fieldCount; i++) {\n const fieldStats: LogLabelStatsModel[] = [];\n fieldStatsMap.get(`field_${i + 1}`)?.forEach((count, key) => {\n fieldStats.push({ value: key, count, proportion: count / maxLines });\n });\n fieldStats.sort((a, b) => b.count - a.count);\n stats.push(fieldStats);\n }\n\n return stats;\n}\n\n// Extract indices of the pattern '<_>' in the given string\nfunction extractPatternIndices(pattern: string): number[] {\n const indices: number[] = [];\n let currentIndex = pattern.indexOf('<_>');\n\n while (currentIndex !== -1) {\n indices.push(currentIndex);\n currentIndex = pattern.indexOf('<_>', currentIndex + 1);\n }\n return indices;\n}\n\n// Construct the query string based on pattern and other conditions\nfunction constructQuery(pattern: string, patternIndices: number[], filters: AdHocFiltersVariable): string {\n let fieldIndex = 1;\n const patternExtractor = pattern.replace(/<_>/g, () => ``);\n const filterExpression = filters.state.filterExpression;\n const fields = patternIndices.map((_value, index) => `field_${index + 1}`).join(' ,');\n return `{${filterExpression}} |> \\`${pattern}\\` | pattern \\`${patternExtractor}\\` | keep ${fields} | line_format \"\"`;\n}\n","import {\n PanelBuilders,\n SceneComponentProps,\n SceneDataProviderResult,\n SceneFlexItem,\n SceneFlexLayout,\n sceneGraph,\n SceneObjectBase,\n SceneObjectState,\n SceneReactObject,\n VizPanel,\n} from '@grafana/scenes';\nimport React from 'react';\n\nimport { LoadingState } from '@grafana/data';\nimport { Alert, Button } from '@grafana/ui';\nimport {\n AppliedPattern,\n LOG_STREAM_SELECTOR_EXPR,\n PATTERNS_SAMPLE_SELECTOR_EXPR,\n VAR_PATTERNS_EXPR,\n} from '../../../../services/variables';\nimport { buildDataQuery } from '../../../../services/query';\nimport { getQueryRunner } from '../../../../services/panel';\nimport { PatternsViewTableScene } from './PatternsViewTableScene';\nimport { emptyStateStyles } from '../FieldsBreakdownScene';\nimport { getFieldsVariable, getLevelsVariable, getLineFiltersVariable } from '../../../../services/variableGetters';\nimport { LokiQuery } from '../../../../services/lokiQuery';\nimport { logger } from '../../../../services/logger';\nimport { renderPatternFilters } from '../../../../services/renderPatternFilters';\n\ninterface PatternsLogsSampleSceneState extends SceneObjectState {\n pattern: string;\n body?: SceneFlexLayout;\n}\nexport class PatternsLogsSampleScene extends SceneObjectBase {\n constructor(state: PatternsLogsSampleSceneState) {\n super(state);\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n private onActivate() {\n if (this.state.body) {\n return;\n }\n\n // We start by querying with the users current query context\n const queryWithFilters = buildDataQuery(LOG_STREAM_SELECTOR_EXPR);\n this.replacePatternsInQuery(queryWithFilters);\n\n // but if that fails to return results, we fire the query without the filters, instead of showing no-data in the viz\n const queryRunnerWithFilters = getQueryRunner([queryWithFilters]);\n queryRunnerWithFilters.getResultsStream().subscribe((value) => {\n this.onQueryWithFiltersResult(value);\n });\n\n this.setState({\n body: new SceneFlexLayout({\n direction: 'column',\n children: [\n new SceneFlexItem({\n body: undefined,\n width: '100%',\n height: 0,\n }),\n new SceneFlexItem({\n height: 300,\n width: '100%',\n body: PanelBuilders.logs()\n .setHoverHeader(true)\n .setOption('showLogContextToggle', true)\n .setOption('showTime', true)\n .setData(queryRunnerWithFilters)\n .build(),\n }),\n ],\n }),\n });\n }\n\n private replacePatternsInQuery(queryWithFilters: LokiQuery) {\n const pendingPattern: AppliedPattern = {\n pattern: this.state.pattern,\n type: 'include',\n };\n const patternsLine = renderPatternFilters([pendingPattern]);\n queryWithFilters.expr = queryWithFilters.expr.replace(VAR_PATTERNS_EXPR, patternsLine);\n }\n\n private clearFilters = () => {\n const filterVariable = getFieldsVariable(this);\n const lineFiltersVariable = getLineFiltersVariable(this);\n const levelsVariable = getLevelsVariable(this);\n filterVariable.setState({\n filters: [],\n });\n levelsVariable.setState({\n filters: [],\n });\n if (lineFiltersVariable.state.filters.length) {\n lineFiltersVariable.setState({\n filters: [],\n });\n\n const noticeFlexItem = this.getNoticeFlexItem();\n\n // The query we just fired is already correct after we clear the filters, we just need to hide the warning, and allow filtering\n noticeFlexItem?.setState({\n isHidden: true,\n });\n\n this.removePatternFromFilterExclusion();\n }\n };\n\n private removePatternFromFilterExclusion() {\n const patternsViewTableScene = sceneGraph.getAncestor(this, PatternsViewTableScene);\n const patternsNotMatchingFilters = patternsViewTableScene.state.patternsNotMatchingFilters ?? [];\n\n const index = patternsNotMatchingFilters.findIndex((pattern) => pattern === this.state.pattern);\n\n if (index !== -1) {\n patternsNotMatchingFilters.splice(index, 1);\n // remove this pattern, as they can filter by this pattern again\n patternsViewTableScene.setState({\n patternsNotMatchingFilters: patternsNotMatchingFilters,\n });\n }\n }\n\n /**\n * If the first query with the users filters applied fails, we run another one after removing the filters\n * @param value\n */\n private onQueryError = (value: SceneDataProviderResult) => {\n if (\n (value.data.state === LoadingState.Done &&\n (value.data.series.length === 0 || value.data.series.every((frame) => frame.length === 0))) ||\n value.data.state === LoadingState.Error\n ) {\n // Logging an error so loki folks can debug why some patterns returned from the API seem to fail.\n let logContext;\n try {\n logContext = {\n pattern: this.state.pattern,\n traceIds: JSON.stringify(value.data.traceIds),\n request: JSON.stringify(value.data.request),\n msg: 'onQueryError',\n };\n } catch (e) {\n logContext = {\n pattern: this.state.pattern,\n msg: 'Failed to encode context',\n };\n }\n\n // Logging an error so loki folks can debug why some patterns returned from the API seem to fail.\n logger.error(new Error('Pattern sample query returns no results'), logContext);\n\n this.setWarningMessage(\n \n This pattern returns no logs.\n \n );\n\n const panelFlexItem = this.getVizFlexItem();\n\n // Run another query without the filters so we can still show log lines of what the pattern looks like.\n if (panelFlexItem instanceof SceneFlexItem) {\n panelFlexItem.setState({\n isHidden: true,\n });\n }\n }\n };\n\n private setWarningMessage(reactNode: React.ReactNode) {\n const noticeFlexItem = this.getNoticeFlexItem();\n const vizFlexItem = this.getVizFlexItem();\n\n if (noticeFlexItem instanceof SceneFlexItem) {\n noticeFlexItem.setState({\n isHidden: false,\n height: 'auto',\n body: new SceneReactObject({\n reactNode: reactNode,\n }),\n });\n }\n return vizFlexItem;\n }\n\n private getNoticeFlexItem() {\n const children = this.getFlexItemChildren();\n return children?.[0];\n }\n private getVizFlexItem() {\n const children = this.getFlexItemChildren();\n return children?.[1];\n }\n\n private getFlexItemChildren() {\n return this.state.body?.state.children;\n }\n\n /**\n * Callback to subscription of pattern sample query with all of the current query filters applied.\n * If this query fails to return data, we show a warning, and attempt the pattern sample query again without applying the existing filters.\n * We also add the pattern to the state of the PatternsTableViewScene so we can hide the filter buttons for this pattern, as including it would break the query\n * @param value\n */\n private onQueryWithFiltersResult = (value: SceneDataProviderResult) => {\n const queryWithoutFilters = buildDataQuery(PATTERNS_SAMPLE_SELECTOR_EXPR);\n this.replacePatternsInQuery(queryWithoutFilters);\n\n const queryRunnerWithoutFilters = getQueryRunner([queryWithoutFilters]);\n\n // Subscribe to the secondary query, so we can log errors and update the UI\n queryRunnerWithoutFilters.getResultsStream().subscribe(this.onQueryError);\n\n if (\n value.data.state === LoadingState.Done &&\n (value.data.series.length === 0 || value.data.series.every((frame) => frame.length === 0))\n ) {\n const noticeFlexItem = this.getNoticeFlexItem();\n const panelFlexItem = this.getVizFlexItem();\n\n // Add a warning notice that the patterns shown will not show up in their current log results due to their existing filters.\n if (noticeFlexItem instanceof SceneFlexItem) {\n noticeFlexItem.setState({\n isHidden: false,\n height: 'auto',\n body: new SceneReactObject({\n reactNode: (\n \n The logs returned by this pattern do not match the current query filters.\n \n \n ),\n }),\n });\n }\n\n // Run another query without the filters so we can still show log lines of what the pattern looks like.\n if (panelFlexItem instanceof SceneFlexItem) {\n const panel = panelFlexItem.state.body;\n if (panel instanceof VizPanel) {\n panel?.setState({\n $data: queryRunnerWithoutFilters,\n });\n }\n }\n this.excludeThisPatternFromFiltering();\n }\n\n if (value.data.state === LoadingState.Error) {\n this.onQueryError(value);\n }\n };\n\n private excludeThisPatternFromFiltering() {\n const patternsViewTableScene = sceneGraph.getAncestor(this, PatternsViewTableScene);\n const patternsThatDontMatchCurrentFilters = patternsViewTableScene.state.patternsNotMatchingFilters ?? [];\n\n // Add this pattern to the array of patterns that don't match current filters\n patternsViewTableScene.setState({\n patternsNotMatchingFilters: [...patternsThatDontMatchCurrentFilters, this.state.pattern],\n });\n }\n\n public static Component({ model }: SceneComponentProps) {\n const { body } = model.useState();\n if (body) {\n return ;\n }\n return null;\n }\n}\n","import React, { useEffect } from 'react';\nimport { PatternsLogsSampleScene } from './PatternsLogsSampleScene';\nimport { PatternsTableCellData, PatternsViewTableScene } from './PatternsViewTableScene';\n\ninterface ExpandedRowProps {\n tableViz: PatternsViewTableScene;\n row: PatternsTableCellData;\n}\n\nexport function PatternsTableExpandedRow({ tableViz, row }: ExpandedRowProps) {\n const { expandedRows } = tableViz.useState();\n\n const rowScene = expandedRows?.find((scene) => scene.state.key === row.pattern);\n\n useEffect(() => {\n if (!rowScene) {\n const newRowScene = buildExpandedRowScene(row.pattern);\n tableViz.setState({ expandedRows: [...(tableViz.state.expandedRows ?? []), newRowScene] });\n }\n }, [row, tableViz, rowScene]);\n\n return rowScene ? : null;\n}\n\nfunction buildExpandedRowScene(pattern: string) {\n return new PatternsLogsSampleScene({\n pattern: pattern,\n key: pattern,\n });\n}\n","import {\n PanelBuilders,\n SceneComponentProps,\n SceneDataNode,\n sceneGraph,\n SceneObject,\n SceneObjectBase,\n SceneObjectState,\n} from '@grafana/scenes';\nimport { PatternFrame } from './PatternsBreakdownScene';\nimport React from 'react';\nimport { IndexScene } from '../../../IndexScene/IndexScene';\nimport { DataFrame, GrafanaTheme2, LoadingState, PanelData, scaledUnits } from '@grafana/data';\nimport { AxisPlacement, Column, InteractiveTable, TooltipDisplayMode, useTheme2 } from '@grafana/ui';\nimport { CellProps } from 'react-table';\nimport { css, cx } from '@emotion/css';\nimport { onPatternClick } from './FilterByPatternsButton';\nimport { FilterButton } from '../../../FilterButton';\nimport { config } from '@grafana/runtime';\nimport { testIds } from '../../../../services/testIds';\nimport { PatternsFrameScene } from './PatternsFrameScene';\nimport { PatternNameLabel } from './PatternNameLabel';\nimport { getExplorationFor } from 'services/scenes';\nimport { PatternsTableExpandedRow } from './PatternsTableExpandedRow';\nimport { LINE_LIMIT } from '../../../../services/query';\nimport { AppliedPattern } from '../../../../services/variables';\n\n// copied from from grafana repository packages/grafana-data/src/valueFormats/categories.ts\n// that is used in Grafana codebase for \"short\" units\nconst SCALED_UNITS = ['', ' K', ' Mil', ' Bil', ' Tri', ' Quadr', ' Quint', ' Sext', ' Sept'];\nexport interface SingleViewTableSceneState extends SceneObjectState {\n // The local copy of the pattern frames, the parent breakdown scene decides if we get the filtered subset or not, in this scene we just present the data\n patternFrames: PatternFrame[] | undefined;\n expandedRows?: SceneObject[];\n\n // An array of patterns to exclude links\n patternsNotMatchingFilters?: string[];\n maxLines?: number;\n}\n\nexport interface PatternsTableCellData {\n pattern: string;\n dataFrame: DataFrame;\n sum: number;\n includeLink: () => void;\n excludeLink: () => void;\n undoLink: () => void;\n}\n\nexport class PatternsViewTableScene extends SceneObjectBase {\n constructor(state: SingleViewTableSceneState) {\n super(state);\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n onActivate() {\n const indexScene = sceneGraph.getAncestor(this, IndexScene);\n const maxLines = indexScene.state.ds?.maxLines;\n this.setState({ maxLines });\n }\n\n public static Component = PatternTableViewSceneComponent;\n\n /**\n * Build columns for interactive table (wrapper for react-table v7)\n * @param total\n * @param appliedPatterns\n * @param theme\n * @param patternsNotMatchingFilters\n * @protected\n */\n public buildColumns(\n total: number,\n appliedPatterns: AppliedPattern[] | undefined,\n theme: GrafanaTheme2,\n maxLines: number,\n patternsNotMatchingFilters?: string[]\n ) {\n const styles = getColumnStyles(theme);\n const timeRange = sceneGraph.getTimeRange(this).state.value;\n const columns: Array> = [\n {\n id: 'volume-samples',\n header: '',\n cell: (props: CellProps) => {\n const panelData: PanelData = {\n timeRange: timeRange,\n series: [props.cell.row.original.dataFrame],\n state: LoadingState.Done,\n };\n const dataNode = new SceneDataNode({\n data: panelData,\n });\n\n const timeSeries = PanelBuilders.timeseries()\n .setData(dataNode)\n .setHoverHeader(true)\n .setOption('tooltip', {\n mode: TooltipDisplayMode.None,\n })\n .setCustomFieldConfig('hideFrom', {\n legend: true,\n tooltip: true,\n })\n .setCustomFieldConfig('axisPlacement', AxisPlacement.Hidden)\n .setDisplayMode('transparent')\n .build();\n\n return (\n
\n
\n \n
\n
\n );\n },\n },\n {\n id: 'count',\n header: 'Count',\n sortType: 'number',\n cell: (props) => {\n const value = scaledUnits(1000, SCALED_UNITS)(props.cell.row.original.sum);\n return (\n
\n
\n {value.prefix ?? ''}\n {value.text}\n {value.suffix ?? ''}\n
\n
\n );\n },\n },\n {\n id: 'percent',\n header: '%',\n sortType: 'number',\n cell: (props) => (\n
\n
{((100 * props.cell.row.original.sum) / total).toFixed(0)}%
\n
\n ),\n },\n {\n id: 'pattern',\n header: 'Pattern',\n cell: (props: CellProps) => {\n return (\n
\n \n
\n );\n },\n },\n {\n id: 'include',\n header: undefined,\n disableGrow: true,\n cell: (props: CellProps) => {\n if (patternsNotMatchingFilters?.includes(props.cell.row.original.pattern)) {\n return undefined;\n }\n\n const existingPattern = appliedPatterns?.find(\n (appliedPattern) => appliedPattern.pattern === props.cell.row.original.pattern\n );\n const isIncluded = existingPattern?.type === 'include';\n const isExcluded = existingPattern?.type === 'exclude';\n return (\n props.cell.row.original.includeLink()}\n onExclude={() => props.cell.row.original.excludeLink()}\n onClear={() => props.cell.row.original.undoLink()}\n buttonFill={'outline'}\n />\n );\n },\n },\n ];\n return columns;\n }\n\n /**\n * Filter visible patterns in table, and return cell data for InteractiveTable\n * @param patternFrames\n * @param legendSyncPatterns\n * @private\n */\n public buildTableData(patternFrames: PatternFrame[], legendSyncPatterns: Set): PatternsTableCellData[] {\n const logExploration = sceneGraph.getAncestor(this, IndexScene);\n return patternFrames\n .filter((patternFrame) => {\n return legendSyncPatterns.size ? legendSyncPatterns.has(patternFrame.pattern) : true;\n })\n .map((pattern: PatternFrame) => {\n return {\n dataFrame: pattern.dataFrame,\n pattern: pattern.pattern,\n sum: pattern.sum,\n includeLink: () =>\n onPatternClick({\n pattern: pattern.pattern,\n type: 'include',\n indexScene: logExploration,\n }),\n excludeLink: () =>\n onPatternClick({\n pattern: pattern.pattern,\n type: 'exclude',\n indexScene: logExploration,\n }),\n undoLink: () =>\n onPatternClick({\n pattern: pattern.pattern,\n type: 'undo',\n indexScene: logExploration,\n }),\n };\n });\n }\n}\n\nconst theme = config.theme2;\n\nconst getTablePatternTextStyles = () => {\n return css({\n minWidth: '200px',\n fontFamily: theme.typography.fontFamilyMonospace,\n overflow: 'hidden',\n overflowWrap: 'break-word',\n });\n};\n\nconst getTableStyles = (theme: GrafanaTheme2) => {\n return {\n link: css({\n textDecoration: 'underline',\n }),\n tableWrap: css({\n // Override interactive table style\n '> div': {\n // Need to define explicit height for overflowX\n height: 'calc(100vh - 450px)',\n minHeight: '470px',\n },\n // Make table headers sticky\n th: {\n top: 0,\n position: 'sticky',\n backgroundColor: theme.colors.background.canvas,\n zIndex: theme.zIndex.navbarFixed,\n },\n }),\n };\n};\nconst getColumnStyles = (theme: GrafanaTheme2) => {\n return {\n tablePatternTextDefault: css({\n fontFamily: theme.typography.fontFamilyMonospace,\n minWidth: '200px',\n maxWidth: '100%',\n overflow: 'hidden',\n overflowWrap: 'break-word',\n fontSize: theme.typography.bodySmall.fontSize,\n wordBreak: 'break-word',\n }),\n countTextWrap: css({\n textAlign: 'right',\n fontSize: theme.typography.bodySmall.fontSize,\n }),\n tableTimeSeriesWrap: css({\n width: '230px',\n pointerEvents: 'none',\n }),\n tableTimeSeries: css({\n height: '30px',\n overflow: 'hidden',\n }),\n };\n};\n\nexport function PatternTableViewSceneComponent({ model }: SceneComponentProps) {\n const indexScene = sceneGraph.getAncestor(model, IndexScene);\n const { patterns: appliedPatterns } = indexScene.useState();\n const theme = useTheme2();\n const styles = getTableStyles(theme);\n\n // Get state from parent\n const patternsFrameScene = sceneGraph.getAncestor(model, PatternsFrameScene);\n const { legendSyncPatterns } = patternsFrameScene.useState();\n\n // Must use local patternFrames as the parent decides if we get the filtered or not\n const { patternFrames: patternFramesRaw, patternsNotMatchingFilters } = model.useState();\n const patternFrames = patternFramesRaw ?? [];\n\n // Calculate total for percentages\n const total = patternFrames.reduce((previousValue, frame) => {\n return previousValue + frame.sum;\n }, 0);\n\n const tableData = model.buildTableData(patternFrames, legendSyncPatterns);\n const columns = model.buildColumns(\n total,\n appliedPatterns,\n theme,\n model.state.maxLines ?? LINE_LIMIT,\n patternsNotMatchingFilters\n );\n\n return (\n
\n r.pattern}\n renderExpandedRow={(row) => }\n />\n
\n );\n}\n","import React from 'react';\n\nimport { ConfigOverrideRule, FieldColor, LoadingState } from '@grafana/data';\nimport {\n PanelBuilders,\n SceneComponentProps,\n SceneCSSGridLayout,\n SceneDataNode,\n sceneGraph,\n SceneObjectBase,\n SceneObjectState,\n VizPanel,\n} from '@grafana/scenes';\nimport { LegendDisplayMode, PanelContext, SeriesVisibilityChangeMode } from '@grafana/ui';\nimport { ServiceScene } from '../../ServiceScene';\nimport { onPatternClick } from './FilterByPatternsButton';\nimport { IndexScene } from '../../../IndexScene/IndexScene';\nimport { PatternsViewTableScene } from './PatternsViewTableScene';\nimport { config } from '@grafana/runtime';\nimport { css } from '@emotion/css';\nimport { PatternFrame, PatternsBreakdownScene } from './PatternsBreakdownScene';\nimport { areArraysEqual } from '../../../../services/comparison';\nimport { logger } from '../../../../services/logger';\n\nconst palette = config.theme2.visualization.palette;\n\nexport interface PatternsFrameSceneState extends SceneObjectState {\n body?: SceneCSSGridLayout;\n loading?: boolean;\n legendSyncPatterns: Set;\n}\n\nexport class PatternsFrameScene extends SceneObjectBase {\n constructor(state?: Partial) {\n super({\n loading: true,\n ...state,\n legendSyncPatterns: new Set(),\n });\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n // parent render\n public static Component = ({ model }: SceneComponentProps) => {\n const { body, loading } = model.useState();\n const logsByServiceScene = sceneGraph.getAncestor(model, ServiceScene);\n const { $patternsData } = logsByServiceScene.useState();\n const patterns = $patternsData?.state.data?.series;\n\n return (\n
\n {!loading && patterns && patterns.length > 0 && <>{body && }}\n
\n );\n };\n\n private onActivate() {\n this.updateBody();\n\n // If the patterns have changed, recalculate the dataframes\n this._subs.add(\n sceneGraph.getAncestor(this, ServiceScene).subscribeToState((newState, prevState) => {\n const newFrame = newState?.$patternsData?.state?.data?.series;\n const prevFrame = prevState?.$patternsData?.state?.data?.series;\n\n if (!areArraysEqual(newFrame, prevFrame)) {\n const patternsBreakdownScene = sceneGraph.getAncestor(this, PatternsBreakdownScene);\n this.updatePatterns(patternsBreakdownScene.state.patternFrames);\n\n // In order to keep the search state from clearing, we need to clear the filtered state\n patternsBreakdownScene.setState({\n filteredPatterns: undefined,\n });\n }\n })\n );\n\n // If the text search results have changed, update the components to use the filtered dataframe\n this._subs.add(\n sceneGraph.getAncestor(this, PatternsBreakdownScene).subscribeToState((newState, prevState) => {\n const patternsBreakdownScene = sceneGraph.getAncestor(this, PatternsBreakdownScene);\n if (newState.filteredPatterns && !areArraysEqual(newState.filteredPatterns, prevState.filteredPatterns)) {\n this.updatePatterns(patternsBreakdownScene.state.filteredPatterns);\n } else {\n // If there is no search string, clear the state\n if (!patternsBreakdownScene.state.patternFilter) {\n this.updatePatterns(patternsBreakdownScene.state.patternFrames);\n }\n }\n })\n );\n }\n\n private async updatePatterns(patternFrames: PatternFrame[] = []) {\n // CSS Grid doesn't need rebuilding, just the children need the updated dataframe\n this.state.body?.forEachChild((child) => {\n if (child instanceof VizPanel) {\n child.setState({\n $data: this.getTimeseriesDataNode(patternFrames),\n });\n }\n if (child instanceof PatternsViewTableScene) {\n child.setState({\n patternFrames,\n });\n }\n });\n }\n\n private async updateBody() {\n const patternsBreakdownScene = sceneGraph.getAncestor(this, PatternsBreakdownScene);\n const patternFrames = patternsBreakdownScene.state.patternFrames;\n\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n\n const lokiPatterns = serviceScene.state.$patternsData?.state.data?.series;\n if (!lokiPatterns || !patternFrames) {\n logger.warn('Failed to update PatternsFrameScene body');\n return;\n }\n\n this.setState({\n body: this.getSingleViewLayout(),\n legendSyncPatterns: new Set(),\n loading: false,\n });\n }\n\n private extendTimeSeriesLegendBus(vizPanel: VizPanel, context: PanelContext) {\n const originalOnToggleSeriesVisibility = context.onToggleSeriesVisibility;\n\n context.onToggleSeriesVisibility = (label: string, mode: SeriesVisibilityChangeMode) => {\n originalOnToggleSeriesVisibility?.(label, mode);\n\n const override: ConfigOverrideRule | undefined = vizPanel.state.fieldConfig.overrides?.[0];\n const patternsToShow: string[] = override?.matcher.options.names;\n const legendSyncPatterns = new Set();\n\n if (patternsToShow) {\n patternsToShow.forEach(legendSyncPatterns.add, legendSyncPatterns);\n }\n\n this.setState({\n legendSyncPatterns,\n });\n };\n }\n\n private getSingleViewLayout() {\n const patternsBreakdownScene = sceneGraph.getAncestor(this, PatternsBreakdownScene);\n const patternFrames = patternsBreakdownScene.state.patternFrames;\n\n if (!patternFrames) {\n logger.warn('Failed to set getSingleViewLayout');\n return;\n }\n\n const timeSeries = this.getTimeSeries(patternFrames);\n\n return new SceneCSSGridLayout({\n templateColumns: '100%',\n autoRows: '200px',\n isLazy: true,\n\n children: [\n timeSeries,\n new PatternsViewTableScene({\n patternFrames,\n }),\n ],\n });\n }\n\n private getTimeSeries(patternFrames: PatternFrame[]) {\n const logExploration = sceneGraph.getAncestor(this, IndexScene);\n\n const timeSeries = PanelBuilders.timeseries()\n .setData(this.getTimeseriesDataNode(patternFrames))\n .setOption('legend', {\n asTable: true,\n showLegend: true,\n displayMode: LegendDisplayMode.Table,\n placement: 'right',\n width: 200,\n })\n .setHoverHeader(true)\n .setUnit('short')\n .setLinks([\n {\n url: '#',\n targetBlank: false,\n onClick: (event) => {\n onPatternClick({\n pattern: event.origin.labels.name,\n type: 'include',\n indexScene: logExploration,\n });\n },\n title: 'Include',\n },\n {\n url: '#',\n targetBlank: false,\n onClick: (event) => {\n onPatternClick({\n pattern: event.origin.labels.name,\n type: 'exclude',\n indexScene: logExploration,\n });\n },\n title: 'Exclude',\n },\n ])\n .build();\n\n timeSeries.setState({\n extendPanelContext: (vizPanel, context) => this.extendTimeSeriesLegendBus(vizPanel, context),\n });\n\n return timeSeries;\n }\n\n private getTimeseriesDataNode(patternFrames: PatternFrame[]) {\n const timeRange = sceneGraph.getTimeRange(this).state.value;\n\n return new SceneDataNode({\n data: {\n series: patternFrames.map((patternFrame, seriesIndex) => {\n // Mutating the dataframe config here means that we don't need to update the colors in the table view\n const dataFrame = patternFrame.dataFrame;\n dataFrame.fields[1].config.color = overrideToFixedColor(seriesIndex);\n dataFrame.fields[1].name = '';\n return dataFrame;\n }),\n state: LoadingState.Done,\n timeRange: timeRange,\n },\n });\n }\n}\n\nexport function overrideToFixedColor(key: keyof typeof palette): FieldColor {\n return {\n mode: 'fixed',\n fixedColor: palette[key] as string,\n };\n}\n\nconst styles = {\n container: css({\n width: '100%',\n // Hide header on hover hack\n '.show-on-hover': {\n display: 'none',\n },\n }),\n};\n","import { SceneComponentProps, sceneGraph, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport React, { ChangeEvent } from 'react';\nimport { Field } from '@grafana/ui';\nimport { css } from '@emotion/css';\nimport { PatternFrame, PatternsBreakdownScene } from './PatternsBreakdownScene';\nimport { debouncedFuzzySearch, fuzzySearch } from '../../../../services/search';\nimport { SearchInput } from '../SearchInput';\nimport { areArraysEqual } from '../../../../services/comparison';\n\nexport interface PatternsViewTextSearchState extends SceneObjectState {}\n\nexport class PatternsViewTextSearch extends SceneObjectBase {\n public static Component = PatternTextSearchComponent;\n\n constructor(state?: Partial) {\n super({\n ...state,\n });\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n /**\n * On click callback to clear current text search\n */\n public clearSearch = () => {\n const patternsBreakdownScene = sceneGraph.getAncestor(this, PatternsBreakdownScene);\n patternsBreakdownScene.setState({\n patternFilter: '',\n });\n };\n\n /**\n * Search input onchange callback\n * @param e\n */\n public handleSearchChange = (e: ChangeEvent) => {\n const patternsBreakdownScene = sceneGraph.getAncestor(this, PatternsBreakdownScene);\n patternsBreakdownScene.setState({\n patternFilter: e.target.value,\n });\n };\n\n /**\n * Activation handler\n * @private\n */\n private onActivate() {\n const patternsBreakdownScene = sceneGraph.getAncestor(this, PatternsBreakdownScene);\n this._subs.add(\n patternsBreakdownScene.subscribeToState((newState, prevState) => {\n if (newState.patternFilter !== prevState.patternFilter) {\n const patternsBreakdownScene = sceneGraph.getAncestor(this, PatternsBreakdownScene);\n if (patternsBreakdownScene.state.patternFrames) {\n debouncedFuzzySearch(\n patternsBreakdownScene.state.patternFrames.map((frame) => frame.pattern),\n patternsBreakdownScene.state.patternFilter,\n this.onSearchResult\n );\n }\n }\n })\n );\n\n this._subs.add(\n patternsBreakdownScene.subscribeToState((newState, prevState) => {\n // If we have a search string, but no filtered patterns, run the search\n if (\n newState.patternFilter &&\n !newState.filteredPatterns &&\n newState.patternFrames &&\n !areArraysEqual(newState.filteredPatterns, prevState.filteredPatterns)\n ) {\n fuzzySearch(\n newState.patternFrames.map((frame) => frame.pattern),\n newState.patternFilter,\n this.onSearchResult\n );\n }\n })\n );\n }\n\n /**\n * Sets the patterns filtered by string match\n * @param patterns\n * @param patternFramesOverride\n */\n setFilteredPatterns(patterns: string[], patternFramesOverride?: PatternFrame[]) {\n const patternsBreakdownScene = sceneGraph.getAncestor(this, PatternsBreakdownScene);\n const patternFrames = patternFramesOverride ?? patternsBreakdownScene.state.patternFrames;\n\n if (patternFrames) {\n const filteredPatternFrames = patternFrames.filter((patternFrame) => {\n if (patternsBreakdownScene.state.patternFilter && patternFrames?.length) {\n return patterns.find((pattern) => pattern === patternFrame.pattern);\n }\n return false;\n });\n\n patternsBreakdownScene.setState({\n filteredPatterns: filteredPatternFrames,\n });\n }\n }\n\n /**\n * Fuzzy search callback\n * @param data\n */\n onSearchResult = (data: string[][]) => {\n const patternsBreakdownScene = sceneGraph.getAncestor(this, PatternsBreakdownScene);\n // If we have a search string\n if (patternsBreakdownScene.state.patternFilter) {\n this.setFilteredPatterns(data[0]);\n } else if (patternsBreakdownScene.state.filteredPatterns && !patternsBreakdownScene.state.patternFilter) {\n // Wipe the parent filtered state\n this.setEmptySearch();\n }\n };\n\n /**\n * Wipes filtered patterns when search string is empty\n */\n private setEmptySearch() {\n const patternsBreakdownScene = sceneGraph.getAncestor(this, PatternsBreakdownScene);\n patternsBreakdownScene.setState({\n filteredPatterns: undefined,\n });\n }\n}\n\nconst styles = {\n field: css({\n label: 'field',\n marginBottom: 0,\n }),\n icon: css({\n cursor: 'pointer',\n }),\n};\n\nexport function PatternTextSearchComponent({ model }: SceneComponentProps) {\n const patternsBreakdownScene = sceneGraph.getAncestor(model, PatternsBreakdownScene);\n const { patternFilter } = patternsBreakdownScene.useState();\n return (\n \n \n \n );\n}\n","import { GrotError } from '../../../GrotError';\nimport { TextLink } from '@grafana/ui';\nimport React from 'react';\nimport { PATTERNS_MAX_AGE_HOURS } from './PatternsBreakdownScene';\n\nexport function PatternsNotDetected() {\n return (\n \n
\n

\n Sorry, we could not detect any patterns.\n

\n

\n Check back later or reach out to the team in the{' '}\n \n Grafana Labs community Slack channel\n \n

\n

Patterns let you detect similar log lines to include or exclude from your search.

\n
\n
\n );\n}\n\nexport function PatternsTooOld() {\n return (\n \n
\n

\n Patterns are only available for the most recent {PATTERNS_MAX_AGE_HOURS} hours of data.\n

\n

\n See the{' '}\n \n patterns docs\n {' '}\n for more info.\n

\n
\n
\n );\n}\n","import { css } from '@emotion/css';\nimport React from 'react';\n\nimport { DataFrame, dateTime, GrafanaTheme2, LoadingState } from '@grafana/data';\nimport {\n CustomVariable,\n SceneComponentProps,\n SceneDataState,\n SceneFlexItem,\n SceneFlexLayout,\n sceneGraph,\n SceneObjectBase,\n SceneObjectState,\n SceneVariableSet,\n} from '@grafana/scenes';\nimport { Text, useStyles2 } from '@grafana/ui';\nimport { StatusWrapper } from 'Components/ServiceScene/Breakdowns/StatusWrapper';\nimport { VAR_LABEL_GROUP_BY } from 'services/variables';\nimport { ServiceScene } from '../../ServiceScene';\nimport { IndexScene } from '../../../IndexScene/IndexScene';\nimport { PatternsFrameScene } from './PatternsFrameScene';\nimport { PatternsViewTextSearch } from './PatternsViewTextSearch';\nimport { PatternsNotDetected, PatternsTooOld } from './PatternsNotDetected';\nimport { areArraysEqual } from '../../../../services/comparison';\n\nexport interface PatternsBreakdownSceneState extends SceneObjectState {\n body?: SceneFlexLayout;\n value?: string;\n loading?: boolean;\n error?: boolean;\n blockingMessage?: string;\n // The dataframe built from the patterns that we get back from the loki Patterns API\n patternFrames?: PatternFrame[];\n\n // Subset of patternFrames, undefined if empty, empty array if search results returned nothing (no data)\n filteredPatterns?: PatternFrame[];\n patternFilter: string;\n}\n\nexport type PatternFrame = {\n dataFrame: DataFrame;\n pattern: string;\n sum: number;\n status?: 'include' | 'exclude';\n};\n\nexport const PATTERNS_MAX_AGE_HOURS = 3;\n\nexport class PatternsBreakdownScene extends SceneObjectBase {\n constructor(state: Partial) {\n super({\n $variables:\n state.$variables ??\n new SceneVariableSet({\n variables: [new CustomVariable({ name: VAR_LABEL_GROUP_BY, defaultToAll: true, includeAll: true })],\n }),\n loading: true,\n patternFilter: '',\n ...state,\n });\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n // parent render\n public static Component = ({ model }: SceneComponentProps) => {\n const { body, loading, blockingMessage, patternFrames, error } = model.useState();\n const { value: timeRange } = sceneGraph.getTimeRange(model).useState();\n const styles = useStyles2(getStyles);\n const timeRangeTooOld = dateTime().diff(timeRange.to, 'hours') >= PATTERNS_MAX_AGE_HOURS;\n\n return (\n
\n \n {!loading && error && (\n
\n \n

There are no pattern matches.

\n

Pattern matching has not been configured.

\n

Patterns let you detect similar log lines and add or exclude them from your search.

\n

To see them in action, add the following to your Loki configuration

\n

\n --pattern-ingester.enabled=true\n

\n
\n
\n )}\n\n {!error && !loading && patternFrames?.length === 0 && timeRangeTooOld && }\n {!error && !loading && patternFrames?.length === 0 && !timeRangeTooOld && }\n {!error && !loading && patternFrames && patternFrames.length > 0 && (\n
{body && }
\n )}\n
\n
\n );\n };\n\n private onActivate() {\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n this.setBody();\n\n // If the patterns exist already, update the dataframe\n if (serviceScene.state.$patternsData?.state) {\n this.onDataChange(serviceScene.state.$patternsData?.state);\n }\n\n // Subscribe to changes from pattern API call\n this._subs.add(serviceScene.state.$patternsData?.subscribeToState(this.onDataChange));\n }\n\n private onDataChange = (newState: SceneDataState, prevState?: SceneDataState) => {\n const newFrames = newState.data?.series;\n const prevFrames = prevState?.data?.series;\n\n if (newState.data?.state === LoadingState.Done) {\n this.setState({\n loading: false,\n error: false,\n });\n\n if (!areArraysEqual(newFrames, prevFrames)) {\n this.updatePatternFrames(newFrames);\n }\n } else if (newState.data?.state === LoadingState.Loading) {\n this.setState({\n loading: true,\n error: false,\n });\n } else if (newState.data?.state === LoadingState.Error) {\n this.setState({\n loading: false,\n error: true,\n });\n }\n };\n\n private setBody() {\n this.setState({\n body: new SceneFlexLayout({\n direction: 'column',\n children: [\n new SceneFlexItem({\n ySizing: 'content',\n body: new PatternsViewTextSearch(),\n }),\n new SceneFlexItem({\n body: new PatternsFrameScene(),\n }),\n ],\n }),\n });\n }\n\n private updatePatternFrames(dataFrames?: DataFrame[]) {\n if (!dataFrames) {\n return;\n }\n\n const patternFrames = this.dataFrameToPatternFrame(dataFrames);\n\n this.setState({\n patternFrames,\n });\n }\n\n private dataFrameToPatternFrame(dataFrame: DataFrame[]): PatternFrame[] {\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n const appliedPatterns = sceneGraph.getAncestor(serviceScene, IndexScene).state.patterns;\n\n return dataFrame.map((dataFrame) => {\n const existingPattern = appliedPatterns?.find((appliedPattern) => appliedPattern.pattern === dataFrame.name);\n\n const sum: number = dataFrame.meta?.custom?.sum;\n const patternFrame: PatternFrame = {\n dataFrame,\n pattern: dataFrame.name ?? '',\n sum,\n status: existingPattern?.type,\n };\n\n return patternFrame;\n });\n }\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n container: css({\n flexGrow: 1,\n display: 'flex',\n minHeight: '100%',\n flexDirection: 'column',\n }),\n content: css({\n flexGrow: 1,\n display: 'flex',\n paddingTop: theme.spacing(0),\n }),\n controls: css({\n flexGrow: 0,\n display: 'flex',\n alignItems: 'top',\n gap: theme.spacing(2),\n }),\n controlsRight: css({\n flexGrow: 0,\n display: 'flex',\n justifyContent: 'flex-end',\n }),\n controlsLeft: css({\n display: 'flex',\n justifyContent: 'flex-left',\n justifyItems: 'left',\n width: '100%',\n flexDirection: 'column',\n }),\n patternMissingText: css({\n padding: theme.spacing(2),\n }),\n };\n}\n","import { PageSlugs, ValueSlugs } from '../../services/routing';\nimport { LogsListScene } from './LogsListScene';\nimport { testIds } from '../../services/testIds';\nimport { LabelBreakdownScene } from './Breakdowns/LabelBreakdownScene';\nimport { FieldsBreakdownScene } from './Breakdowns/FieldsBreakdownScene';\nimport { PatternsBreakdownScene } from './Breakdowns/Patterns/PatternsBreakdownScene';\nimport { behaviors, SceneFlexItem, SceneFlexLayout, SceneObject } from '@grafana/scenes';\nimport { LogsVolumePanel } from './LogsVolumePanel';\nimport { DashboardCursorSync } from '@grafana/schema';\n\ninterface ValueBreakdownViewDefinition {\n displayName: string;\n value: ValueSlugs;\n testId: string;\n getScene: (value: string) => SceneObject;\n}\n\nexport enum TabNames {\n logs = 'Logs',\n labels = 'Labels',\n fields = 'Fields',\n patterns = 'Patterns',\n}\nexport interface BreakdownViewDefinition {\n displayName: TabNames;\n value: PageSlugs;\n testId: string;\n getScene: (changeFields: (f: number) => void) => SceneObject;\n}\n\nexport const breakdownViewsDefinitions: BreakdownViewDefinition[] = [\n {\n displayName: TabNames.logs,\n value: PageSlugs.logs,\n getScene: () => buildLogsListScene(),\n testId: testIds.exploreServiceDetails.tabLogs,\n },\n {\n displayName: TabNames.labels,\n value: PageSlugs.labels,\n getScene: () => buildLabelBreakdownActionScene(),\n testId: testIds.exploreServiceDetails.tabLabels,\n },\n {\n displayName: TabNames.fields,\n value: PageSlugs.fields,\n getScene: (f) => buildFieldsBreakdownActionScene(f),\n testId: testIds.exploreServiceDetails.tabFields,\n },\n {\n displayName: TabNames.patterns,\n value: PageSlugs.patterns,\n getScene: () => buildPatternsScene(),\n testId: testIds.exploreServiceDetails.tabPatterns,\n },\n];\nexport const valueBreakdownViews: ValueBreakdownViewDefinition[] = [\n {\n displayName: 'Label',\n value: ValueSlugs.label,\n getScene: (value: string) => buildLabelValuesBreakdownActionScene(value),\n testId: testIds.exploreServiceDetails.tabLabels,\n },\n {\n displayName: 'Field',\n value: ValueSlugs.field,\n getScene: (value: string) => buildFieldValuesBreakdownActionScene(value),\n testId: testIds.exploreServiceDetails.tabFields,\n },\n];\n\nfunction buildPatternsScene() {\n return new SceneFlexLayout({\n children: [\n new SceneFlexItem({\n body: new PatternsBreakdownScene({}),\n }),\n ],\n });\n}\n\nfunction buildFieldsBreakdownActionScene(changeFieldNumber: (n: number) => void) {\n return new SceneFlexLayout({\n $behaviors: [new behaviors.CursorSync({ key: 'sync', sync: DashboardCursorSync.Crosshair })],\n children: [\n new SceneFlexItem({\n body: new FieldsBreakdownScene({ changeFieldCount: changeFieldNumber }),\n }),\n ],\n });\n}\n\nfunction buildFieldValuesBreakdownActionScene(value: string) {\n return new SceneFlexLayout({\n $behaviors: [new behaviors.CursorSync({ key: 'sync', sync: DashboardCursorSync.Crosshair })],\n children: [\n new SceneFlexItem({\n body: new FieldsBreakdownScene({ value }),\n }),\n ],\n });\n}\n\nfunction buildLabelValuesBreakdownActionScene(value: string) {\n return new SceneFlexLayout({\n $behaviors: [new behaviors.CursorSync({ key: 'sync', sync: DashboardCursorSync.Crosshair })],\n children: [\n new SceneFlexItem({\n body: new LabelBreakdownScene({ value }),\n }),\n ],\n });\n}\n\nfunction buildLogsListScene() {\n return new SceneFlexLayout({\n direction: 'column',\n children: [\n new SceneFlexItem({\n body: new LogsVolumePanel({}),\n }),\n new SceneFlexItem({\n minHeight: '470px',\n height: 'calc(100vh - 500px)',\n body: new LogsListScene({}),\n }),\n ],\n });\n}\n\nfunction buildLabelBreakdownActionScene() {\n return new SceneFlexLayout({\n $behaviors: [new behaviors.CursorSync({ key: 'sync', sync: DashboardCursorSync.Crosshair })],\n children: [\n new SceneFlexItem({\n body: new LabelBreakdownScene({}),\n }),\n ],\n });\n}\n","import {\n SceneComponentProps,\n sceneGraph,\n SceneObjectBase,\n SceneObjectState,\n SceneTimeRangeLike,\n} from '@grafana/scenes';\nimport { ButtonGroup, Dropdown, IconName, Menu, MenuGroup, ToolbarButton } from '@grafana/ui';\nimport React from 'react';\nimport { config, getAppEvents, getBackendSrv, locationService, reportInteraction } from '@grafana/runtime';\nimport { AppEvents, toUtc, urlUtil } from '@grafana/data';\nimport { copyText } from '../../services/text';\n\ninterface ShortLinkMenuItemData {\n key: string;\n label: string;\n icon: IconName;\n getUrl: Function;\n shorten: boolean;\n absTime: boolean;\n}\n\ninterface ShortLinkGroupData {\n key: string;\n label: string;\n items: ShortLinkMenuItemData[];\n}\n\nexport interface ShareButtonSceneState extends SceneObjectState {\n lastSelected: ShortLinkMenuItemData;\n isOpen: boolean;\n /**\n * Reference to $timeRange\n */\n getSceneTimeRange?: () => SceneTimeRangeLike;\n /**\n * Callback on link copy\n */\n onCopyLink?: (shortened: boolean, absTime: boolean, url?: string) => void;\n}\n\nexport class ShareButtonScene extends SceneObjectBase {\n constructor(state: Partial) {\n super({ isOpen: false, lastSelected: defaultMode, ...state });\n }\n\n public setIsOpen(isOpen: boolean) {\n this.setState({ isOpen });\n }\n\n public onCopyLink(shorten: boolean, absTime: boolean, url?: string) {\n if (shorten) {\n createAndCopyShortLink(url || global.location.href);\n reportInteraction('grafana_explore_shortened_link_clicked', { isAbsoluteTime: absTime });\n } else {\n copyText(\n url !== undefined\n ? `${window.location.protocol}//${window.location.host}${config.appSubUrl}${url}`\n : global.location.href\n );\n\n if (this.state.onCopyLink) {\n this.state.onCopyLink(shorten, absTime, url);\n }\n }\n }\n\n static MenuActions = ({ model }: SceneComponentProps) => {\n const menuOptions: ShortLinkGroupData[] = [\n {\n key: 'normal',\n label: 'Normal URL links',\n items: [\n {\n key: 'copy-shortened-link',\n icon: 'link',\n label: 'Copy shortened URL',\n getUrl: () => undefined,\n shorten: true,\n absTime: false,\n },\n {\n key: 'copy-link',\n icon: 'link',\n label: 'Copy URL',\n getUrl: () => undefined,\n shorten: false,\n absTime: false,\n },\n ],\n },\n {\n key: 'timesync',\n label: 'Time-sync URL links (share with time range intact)',\n items: [\n {\n key: 'copy-short-link-abs-time',\n icon: 'clock-nine',\n label: 'Copy absolute shortened URL',\n shorten: true,\n getUrl: () => {\n return constructAbsoluteUrl(\n model.state.getSceneTimeRange !== undefined\n ? model.state.getSceneTimeRange()\n : sceneGraph.getTimeRange(model)\n );\n },\n absTime: true,\n },\n {\n key: 'copy-link-abs-time',\n icon: 'clock-nine',\n label: 'Copy absolute URL',\n shorten: false,\n getUrl: () => {\n return constructAbsoluteUrl(\n model.state.getSceneTimeRange !== undefined\n ? model.state.getSceneTimeRange()\n : sceneGraph.getTimeRange(model)\n );\n },\n absTime: true,\n },\n ],\n },\n ];\n\n return (\n \n {menuOptions.map((groupOption) => {\n return (\n \n {groupOption.items.map((option) => {\n return (\n {\n const url = option.getUrl();\n model.onCopyLink(option.shorten, option.absTime, url);\n model.setState({\n lastSelected: option,\n });\n }}\n />\n );\n })}\n \n );\n })}\n \n );\n };\n\n static Component = ({ model }: SceneComponentProps) => {\n const { lastSelected, isOpen } = model.useState();\n\n return (\n \n {\n const url = lastSelected.getUrl();\n model.onCopyLink(lastSelected.shorten, lastSelected.absTime, url);\n }}\n aria-label={'Copy shortened URL'}\n >\n Share\n \n }\n placement=\"bottom-end\"\n onVisibleChange={model.setIsOpen.bind(model)}\n >\n \n \n \n );\n };\n}\n\nconst defaultMode: ShortLinkMenuItemData = {\n key: 'copy-link',\n label: 'Copy shortened URL',\n icon: 'share-alt',\n getUrl: () => undefined,\n shorten: true,\n absTime: false,\n};\n\n// Adapted from grafana/grafana/public/app/core/utils/shortLinks.ts shortLinks.ts\nfunction buildHostUrl() {\n return `${window.location.protocol}//${window.location.host}${config.appSubUrl}`;\n}\n\nfunction getRelativeURLPath(url: string) {\n let path = url.replace(buildHostUrl(), '');\n return path.startsWith('/') ? path.substring(1, path.length) : path;\n}\n\nexport const createShortLink = async function (path: string) {\n const appEvents = getAppEvents();\n try {\n const shortLink = await getBackendSrv().post(`/api/short-urls`, {\n path: getRelativeURLPath(path),\n });\n return shortLink.url;\n } catch (err) {\n console.error('Error when creating shortened link: ', err);\n\n appEvents.publish({\n type: AppEvents.alertError.name,\n payload: ['Error generating shortened link'],\n });\n }\n};\n\nexport const createAndCopyShortLink = async (path: string) => {\n const appEvents = getAppEvents();\n const shortLink = await createShortLink(path);\n if (shortLink) {\n copyText(shortLink);\n appEvents.publish({\n type: AppEvents.alertSuccess.name,\n payload: ['Shortened link copied to clipboard'],\n });\n } else {\n appEvents.publish({\n type: AppEvents.alertError.name,\n payload: ['Error generating shortened link'],\n });\n }\n};\n\n/**\n * Adapted from /grafana/grafana/public/app/features/explore/utils/links.ts\n * Returns the current URL with absolute time range\n */\nconst constructAbsoluteUrl = (timeRange: SceneTimeRangeLike): string => {\n const from = toUtc(timeRange.state.value.from);\n const to = toUtc(timeRange.state.value.to);\n const location = locationService.getLocation();\n const searchParams = urlUtil.getUrlSearchParams();\n searchParams['from'] = from.toISOString();\n searchParams['to'] = to.toISOString();\n return urlUtil.renderUrl(location.pathname, searchParams);\n};\n","import { SceneComponentProps, sceneGraph, SceneObject, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport { Box, Dropdown, Menu, Stack, Tab, TabsBar, ToolbarButton, useStyles2 } from '@grafana/ui';\nimport { getDrilldownSlug, getDrilldownValueSlug, PageSlugs, ValueSlugs } from '../../services/routing';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from '../../services/analytics';\nimport { getDrillDownTabLink } from '../../services/navigate';\nimport React, { useEffect, useState } from 'react';\nimport { ServiceScene, ServiceSceneCustomState } from './ServiceScene';\nimport { getValueFormat, GrafanaTheme2 } from '@grafana/data';\nimport { css, cx } from '@emotion/css';\nimport { BreakdownViewDefinition, breakdownViewsDefinitions, TabNames } from './BreakdownViews';\nimport { config, usePluginLinks } from '@grafana/runtime';\nimport { getLabelsVariable } from '../../services/variableGetters';\nimport { IndexScene } from '../IndexScene/IndexScene';\nimport { LINE_LIMIT } from '../../services/query';\nimport { ShareButtonScene } from '../IndexScene/ShareButtonScene';\n\nexport interface ActionBarSceneState extends SceneObjectState {\n maxLines?: number;\n shareButtonScene?: ShareButtonScene;\n}\n\nexport class ActionBarScene extends SceneObjectBase {\n constructor(state: Partial) {\n super(state);\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n onActivate() {\n const indexScene = sceneGraph.getAncestor(this, IndexScene);\n const dataSource = indexScene.state.ds;\n if (dataSource?.maxLines !== undefined) {\n this.setState({\n maxLines: dataSource.maxLines,\n });\n }\n\n if (!this.state.shareButtonScene) {\n this.setState({\n shareButtonScene: new ShareButtonScene({}),\n });\n }\n }\n public static Component = ({ model }: SceneComponentProps) => {\n const styles = useStyles2(getStyles);\n let currentBreakdownViewSlug = getDrilldownSlug();\n let allowNavToParent = false;\n\n if (!Object.values(PageSlugs).includes(currentBreakdownViewSlug)) {\n const drilldownValueSlug = getDrilldownValueSlug();\n allowNavToParent = true;\n if (drilldownValueSlug === ValueSlugs.field) {\n currentBreakdownViewSlug = PageSlugs.fields;\n }\n if (drilldownValueSlug === ValueSlugs.label) {\n currentBreakdownViewSlug = PageSlugs.labels;\n }\n }\n\n const serviceScene = sceneGraph.getAncestor(model, ServiceScene);\n const { loading, $data, logsCount, totalLogsCount, ...state } = serviceScene.useState();\n const { maxLines } = model.useState();\n\n const loadingStates = state.loadingStates;\n\n return (\n \n
\n \n {config.featureToggles.appSidecar && }\n {model.state.shareButtonScene && (\n \n )}\n \n
\n\n \n {breakdownViewsDefinitions.map((tab, index) => {\n return (\n LogsCount(className, totalLogsCount, logsCount, maxLines ?? LINE_LIMIT)\n : undefined\n }\n icon={loadingStates[tab.displayName] ? 'spinner' : undefined}\n href={getDrillDownTabLink(tab.value, serviceScene)}\n onChangeTab={() => {\n if ((tab.value && tab.value !== currentBreakdownViewSlug) || allowNavToParent) {\n reportAppInteraction(\n USER_EVENTS_PAGES.service_details,\n USER_EVENTS_ACTIONS.service_details.action_view_changed,\n {\n newActionView: tab.value,\n previousActionView: currentBreakdownViewSlug,\n }\n );\n }\n }}\n />\n );\n })}\n \n
\n );\n };\n}\nconst getCounter = (tab: BreakdownViewDefinition, state: ServiceSceneCustomState) => {\n switch (tab.value) {\n case 'fields':\n return state.fieldsCount;\n case 'patterns':\n return state.patternsCount;\n case 'labels':\n return state.labelsCount;\n default:\n return undefined;\n }\n};\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n actions: css({\n display: 'flex',\n justifyContent: 'flex-end',\n\n [theme.breakpoints.up(theme.breakpoints.values.md)]: {\n position: 'absolute',\n right: 0,\n zIndex: 2,\n },\n }),\n };\n}\n\n/**\n * Shows extensions in the toolbar.\n * Shows a single button if there is only one extension or a dropdown if there are multiple.\n * @param props\n * @constructor\n */\nfunction ToolbarExtensionsRenderer(props: { serviceScene: SceneObject }) {\n const [filters, setFilters] = useState>(\n getLabelsVariable(props.serviceScene).state.filters\n );\n useEffect(() => {\n const sub = getLabelsVariable(props.serviceScene).subscribeToState((newState) => {\n setFilters(newState.filters);\n });\n return () => {\n sub.unsubscribe();\n };\n }, [props.serviceScene]);\n\n const [isOpen, setIsOpen] = useState(false);\n const extensions = usePluginLinks({\n extensionPointId: 'grafana-lokiexplore-app/toolbar-open-related/v1',\n limitPerPlugin: 3,\n context: { filters },\n });\n\n if (extensions.isLoading || extensions.links.length === 0) {\n return null;\n }\n\n if (extensions.links.length === 1) {\n const e = extensions.links[0];\n\n return (\n
\n e.onClick?.(event)} icon={e.icon}>\n Related {e.title}\n \n
\n );\n }\n\n const menu = (\n \n {extensions.links.map((link) => {\n return (\n {\n link.onClick?.(event);\n }}\n />\n );\n })}\n \n );\n\n return (\n \n \n Open related\n \n \n );\n}\n\nfunction LogsCount(\n className: string | undefined,\n totalCount: number | undefined,\n logsCount: number | undefined,\n maxLines: number\n) {\n const styles = useStyles2(getLogsCountStyles);\n const valueFormatter = getValueFormat('short');\n\n // The instant query (totalCount) doesn't return good results for small result sets, if we're below the max number of lines, use the logs query result instead.\n if (totalCount === undefined && logsCount !== undefined && logsCount < maxLines) {\n const formattedCount = valueFormatter(logsCount, 0);\n return (\n \n {formattedCount.text}\n {formattedCount.suffix?.trim()}\n \n );\n } else if (totalCount !== undefined) {\n const formattedTotalCount = valueFormatter(totalCount, 0);\n return (\n \n {formattedTotalCount.text}\n {formattedTotalCount.suffix?.trim()}\n \n );\n }\n\n return ;\n}\n\nfunction getLogsCountStyles(theme: GrafanaTheme2) {\n return {\n emptyCountStyles: css({\n display: 'inline-block',\n fontSize: theme.typography.bodySmall.fontSize,\n minWidth: '1em',\n marginLeft: theme.spacing(1),\n padding: theme.spacing(0.25, 1),\n }),\n logsCountStyles: css({\n fontSize: theme.typography.bodySmall.fontSize,\n label: 'counter',\n marginLeft: theme.spacing(1),\n borderRadius: theme.spacing(3),\n backgroundColor: theme.colors.action.hover,\n padding: theme.spacing(0.25, 1),\n color: theme.colors.text.secondary,\n fontWeight: theme.typography.fontWeightMedium,\n }),\n };\n}\n","import { locationService } from '@grafana/runtime';\nimport { getLineFiltersVariable } from './variableGetters';\nimport { LineFilterCaseSensitive, LineFilterOp } from './filterTypes';\nimport { ServiceScene } from '../Components/ServiceScene/ServiceScene';\nimport { urlUtil } from '@grafana/data';\nimport { sceneGraph } from '@grafana/scenes';\nimport { IndexScene } from '../Components/IndexScene/IndexScene';\n\nfunction removeEscapeChar(value: string, caseSensitive: boolean) {\n const charsEscapedByEscapeRegExp = ['^', '$', '.', '*', '+', '?', '(', ')', '[', ']', '{', '}', '|'];\n if (!caseSensitive) {\n charsEscapedByEscapeRegExp.push('\\\\');\n }\n return value\n .split('')\n .filter((char, index, stringArray) => {\n // We need to differentiate between user entered escape chars, and escape chars added by lodash escapeRegExp to return the same query results in urls from before the line filter regex feature\n // Since there is no reverse of the escapeRegExp method provided by lodash we're essentially building our own \"unescapeRegExp\"\n const nextChar = stringArray[index + 1];\n const isNextCharRegex = charsEscapedByEscapeRegExp.includes(nextChar);\n return !(char === '\\\\' && isNextCharRegex);\n })\n .join('');\n}\n\n/**\n * Migrates old line filter to new variables\n */\nexport function migrateLineFilterV1(serviceScene: ServiceScene) {\n const search = urlUtil.getUrlSearchParams();\n\n const deprecatedLineFilterArray = search['var-lineFilter'];\n if (!Array.isArray(deprecatedLineFilterArray) || !deprecatedLineFilterArray.length) {\n return;\n }\n const deprecatedLineFilter = deprecatedLineFilterArray[0];\n if (typeof deprecatedLineFilter !== 'string' || !deprecatedLineFilter) {\n return;\n }\n\n const indexScene = sceneGraph.getAncestor(serviceScene, IndexScene);\n const globalLineFilterVars = getLineFiltersVariable(serviceScene);\n const caseSensitiveMatches = deprecatedLineFilter?.match(/\\|=.`(.+?)`/);\n\n if (caseSensitiveMatches && caseSensitiveMatches.length === 2) {\n indexScene.state.body?.state.lineFilterRenderer?.addActivationHandler(() => {\n globalLineFilterVars.setState({\n filters: [\n {\n key: LineFilterCaseSensitive.caseSensitive,\n operator: LineFilterOp.match,\n value: removeEscapeChar(caseSensitiveMatches[1], true),\n keyLabel: '0',\n },\n ],\n });\n });\n }\n\n const caseInsensitiveMatches = deprecatedLineFilter?.match(/`\\(\\?i\\)(.+)`/);\n if (caseInsensitiveMatches && caseInsensitiveMatches.length === 2) {\n indexScene.state.body?.state.lineFilterRenderer?.addActivationHandler(() => {\n globalLineFilterVars.updateFilters([\n {\n key: LineFilterCaseSensitive.caseInsensitive,\n operator: LineFilterOp.match,\n value: removeEscapeChar(caseInsensitiveMatches[1], false),\n keyLabel: '0',\n },\n ]);\n });\n }\n\n // Remove from url without refreshing\n delete search['var-lineFilter'];\n locationService.replace(urlUtil.renderUrl(location.pathname, search));\n}\n","import React from 'react';\n\nimport { LoadingState, PanelData } from '@grafana/data';\nimport {\n QueryRunnerState,\n SceneComponentProps,\n SceneDataProvider,\n SceneDataState,\n SceneFlexItem,\n SceneFlexLayout,\n sceneGraph,\n SceneObject,\n SceneObjectBase,\n SceneObjectState,\n SceneQueryRunner,\n SceneVariableValueChangedEvent,\n VariableDependencyConfig,\n} from '@grafana/scenes';\nimport { LoadingPlaceholder } from '@grafana/ui';\nimport { getQueryRunner, getResourceQueryRunner } from 'services/panel';\nimport { buildDataQuery, buildResourceQuery } from 'services/query';\nimport {\n EMPTY_VARIABLE_VALUE,\n isAdHocFilterValueUserInput,\n LEVEL_VARIABLE_VALUE,\n LOG_STREAM_SELECTOR_EXPR,\n SERVICE_NAME,\n SERVICE_UI_LABEL,\n stripAdHocFilterUserInputPrefix,\n VAR_DATASOURCE,\n VAR_FIELDS,\n VAR_LABELS,\n VAR_LABELS_EXPR,\n VAR_LEVELS,\n VAR_PATTERNS,\n} from 'services/variables';\nimport { getMetadataService } from '../../services/metadata';\nimport { navigateToDrilldownPage, navigateToIndex, navigateToValueBreakdown } from '../../services/navigate';\nimport { areArraysEqual } from '../../services/comparison';\nimport { ActionBarScene } from './ActionBarScene';\nimport { breakdownViewsDefinitions, TabNames, valueBreakdownViews } from './BreakdownViews';\nimport {\n getDataSourceVariable,\n getFieldsAndMetadataVariable,\n getFieldsVariable,\n getLabelsVariable,\n getLevelsVariable,\n getLineFiltersVariable,\n getMetadataVariable,\n getPatternsVariable,\n} from '../../services/variableGetters';\nimport { logger } from '../../services/logger';\nimport { IndexScene, showLogsButtonSceneKey } from '../IndexScene/IndexScene';\nimport {\n getDrilldownSlug,\n getDrilldownValueSlug,\n getPrimaryLabelFromUrl,\n PageSlugs,\n ValueSlugs,\n} from '../../services/routing';\nimport { replaceSlash } from '../../services/extensions/links';\nimport { ShowLogsButtonScene } from '../IndexScene/ShowLogsButtonScene';\nimport { migrateLineFilterV1 } from '../../services/migrations';\nimport { VariableHide } from '@grafana/schema';\nimport { LEVELS_VARIABLE_SCENE_KEY, LevelsVariableScene } from '../IndexScene/LevelsVariableScene';\nimport { isOperatorInclusive } from '../../services/operatorHelpers';\n\nexport const LOGS_PANEL_QUERY_REFID = 'logsPanelQuery';\nexport const LOGS_COUNT_QUERY_REFID = 'logsCountQuery';\nconst PATTERNS_QUERY_REFID = 'patterns';\nconst DETECTED_LABELS_QUERY_REFID = 'detectedLabels';\nconst DETECTED_FIELDS_QUERY_REFID = 'detectedFields';\n\ntype MakeOptional = Pick, K> & Omit;\n\ntype ServiceSceneLoadingStates = {\n [name in TabNames]: boolean;\n};\n\nexport interface ServiceSceneCustomState {\n labelsCount?: number;\n patternsCount?: number;\n fieldsCount?: number;\n loading?: boolean;\n totalLogsCount?: number;\n logsCount?: number;\n}\n\nexport interface ServiceSceneState extends SceneObjectState, ServiceSceneCustomState {\n body: SceneFlexLayout | undefined;\n drillDownLabel?: string;\n $data: SceneDataProvider | undefined;\n $logsCount: SceneQueryRunner | undefined;\n $patternsData: SceneQueryRunner | undefined;\n $detectedLabelsData: SceneQueryRunner | undefined;\n $detectedFieldsData: SceneQueryRunner | undefined;\n loadingStates: ServiceSceneLoadingStates;\n}\n\nexport function getLogsPanelFrame(data: PanelData | undefined) {\n return data?.series.find((series) => series.refId === LOGS_PANEL_QUERY_REFID);\n}\n\nexport function getDetectedLabelsFrame(sceneRef: SceneObject) {\n const serviceScene = sceneGraph.getAncestor(sceneRef, ServiceScene);\n return serviceScene.state.$detectedLabelsData?.state.data?.series?.[0];\n}\n\nexport function getDetectedFieldsFrame(sceneRef: SceneObject) {\n const serviceScene = sceneGraph.getAncestor(sceneRef, ServiceScene);\n return getDetectedFieldsFrameFromQueryRunnerState(serviceScene.state.$detectedFieldsData?.state);\n}\n\nexport const getDetectedFieldsFrameFromQueryRunnerState = (state?: QueryRunnerState) => {\n // Only ever one frame in the response\n return state?.data?.series?.[0];\n};\n\nexport const getDetectedFieldsNamesFromQueryRunnerState = (state: QueryRunnerState) => {\n // The first field, DETECTED_FIELDS_NAME_FIELD, has the list of names of the detected fields\n return state.data?.series?.[0]?.fields?.[0];\n};\n\nexport const getDetectedFieldsParsersFromQueryRunnerState = (state: QueryRunnerState) => {\n // The third field, DETECTED_FIELDS_PARSER_NAME, has the list of parsers of the detected fields\n return state.data?.series?.[0]?.fields?.[2];\n};\n\nexport class ServiceScene extends SceneObjectBase {\n protected _variableDependency = new VariableDependencyConfig(this, {\n variableNames: [VAR_DATASOURCE, VAR_LABELS, VAR_FIELDS, VAR_PATTERNS, VAR_LEVELS],\n });\n\n public constructor(\n state: MakeOptional<\n ServiceSceneState,\n | 'body'\n | '$data'\n | '$patternsData'\n | '$detectedLabelsData'\n | '$detectedFieldsData'\n | 'loadingStates'\n | '$logsCount'\n >\n ) {\n super({\n loadingStates: {\n [TabNames.patterns]: false,\n [TabNames.labels]: false,\n [TabNames.fields]: false,\n [TabNames.logs]: false,\n },\n loading: true,\n body: state.body ?? buildGraphScene(),\n $data: getServiceSceneQueryRunner(),\n $patternsData: getPatternsQueryRunner(),\n $detectedLabelsData: getDetectedLabelsQueryRunner(),\n $detectedFieldsData: getDetectedFieldsQueryRunner(),\n $logsCount: getLogCountQueryRunner(),\n ...state,\n });\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n private setSubscribeToLabelsVariable() {\n const variable = getLabelsVariable(this);\n if (variable.state.filters.length === 0) {\n this.redirectToStart();\n return;\n }\n this._subs.add(\n variable.subscribeToState((newState, prevState) => {\n if (newState.filters.length === 0) {\n this.redirectToStart();\n }\n\n // If we remove the service name filter, we should redirect to the start\n let { labelName, labelValue, breakdownLabel } = getPrimaryLabelFromUrl();\n\n // Before we dynamically pulled label filter keys into the URL, we had hardcoded \"service\" as the primary label slug, we want to keep URLs the same, so overwrite \"service_name\" with \"service\" if that's the primary label\n if (labelName === SERVICE_UI_LABEL) {\n labelName = SERVICE_NAME;\n }\n const indexScene = sceneGraph.getAncestor(this, IndexScene);\n const prevRouteMatch = indexScene.state.routeMatch;\n\n // The \"primary\" label used in the URL is no longer active, pick a new one\n if (\n !newState.filters.some(\n (f) => f.key === labelName && isOperatorInclusive(f.operator) && replaceSlash(f.value) === labelValue\n )\n ) {\n const newPrimaryLabel = newState.filters.find(\n (f) => isOperatorInclusive(f.operator) && f.value !== EMPTY_VARIABLE_VALUE\n );\n if (newPrimaryLabel) {\n const newPrimaryLabelValue = isAdHocFilterValueUserInput(newPrimaryLabel.value)\n ? replaceSlash(stripAdHocFilterUserInputPrefix(newPrimaryLabel.value))\n : replaceSlash(newPrimaryLabel.value);\n indexScene.setState({\n routeMatch: {\n ...prevRouteMatch,\n params: {\n ...prevRouteMatch?.params,\n labelName: newPrimaryLabel.key === SERVICE_NAME ? SERVICE_UI_LABEL : newPrimaryLabel.key,\n // If there are a bunch of values separated by pipe, like labels that come from explore, let's truncate the value so the slug doesn't get too long\n labelValue: newPrimaryLabelValue.split('|')[0],\n },\n url: prevRouteMatch?.url ?? '',\n path: prevRouteMatch?.path ?? '',\n isExact: prevRouteMatch?.isExact ?? true,\n },\n });\n\n this.resetTabCount();\n\n if (!breakdownLabel) {\n navigateToDrilldownPage(getDrilldownSlug(), this);\n } else {\n navigateToValueBreakdown(getDrilldownValueSlug(), breakdownLabel, this);\n }\n } else {\n this.redirectToStart();\n }\n } else if (!areArraysEqual(newState.filters, prevState.filters)) {\n this.state.$patternsData?.runQueries();\n this.state.$detectedLabelsData?.runQueries();\n this.state.$detectedFieldsData?.runQueries();\n this.state.$logsCount?.runQueries();\n }\n })\n );\n }\n\n private redirectToStart() {\n // Clear ongoing queries\n this.setState({\n $data: undefined,\n $logsCount: undefined,\n body: undefined,\n $patternsData: undefined,\n $detectedLabelsData: undefined,\n $detectedFieldsData: undefined,\n patternsCount: undefined,\n labelsCount: undefined,\n fieldsCount: undefined,\n logsCount: undefined,\n totalLogsCount: undefined,\n });\n getMetadataService().setServiceSceneState(this.state);\n this._subs.unsubscribe();\n\n // Redirect to root with updated params, which will trigger history push back to index route, preventing empty page or empty service query bugs\n navigateToIndex();\n }\n\n private showVariables() {\n const levelsVar = sceneGraph.findByKeyAndType(this, LEVELS_VARIABLE_SCENE_KEY, LevelsVariableScene);\n levelsVar.setState({ visible: true });\n getFieldsAndMetadataVariable(this).setState({ hide: VariableHide.dontHide });\n }\n\n /**\n * After routing we need to pull any data set to the service scene by other routes from the metadata singleton,\n * as each route has a different instantiation of this scene\n * @private\n */\n private getMetadata() {\n const metadataService = getMetadataService();\n const state = metadataService.getServiceSceneState();\n\n if (state) {\n this.setState({\n ...state,\n });\n }\n }\n\n private onActivate() {\n // Hide show logs button\n const showLogsButton = sceneGraph.findByKeyAndType(this, showLogsButtonSceneKey, ShowLogsButtonScene);\n showLogsButton.setState({ hidden: true });\n this.showVariables();\n this.getMetadata();\n this.resetBodyAndData();\n\n this.setBreakdownView();\n\n // Run queries on activate\n this.runQueries();\n\n // Query Subscriptions\n this._subs.add(this.subscribeToPatternsQuery());\n this._subs.add(this.subscribeToDetectedLabelsQuery());\n\n // Fields tab will update its own count, and update count when a query fails\n this._subs.add(this.subscribeToDetectedFieldsQuery(getDrilldownSlug() !== PageSlugs.fields));\n this._subs.add(this.subscribeToLogsQuery());\n this._subs.add(this.subscribeToLogsCountQuery());\n\n // Variable subscriptions\n this.setSubscribeToLabelsVariable();\n this._subs.add(this.subscribeToFieldsVariable());\n this._subs.add(this.subscribeToMetadataVariable());\n this._subs.add(this.subscribeToLevelsVariableChangedEvent());\n this._subs.add(this.subscribeToLevelsVariableFiltersState());\n this._subs.add(this.subscribeToDataSourceVariable());\n this._subs.add(this.subscribeToPatternsVariable());\n this._subs.add(this.subscribeToLineFiltersVariable());\n\n // Update query runner on manual time range change\n this._subs.add(this.subscribeToTimeRange());\n\n // Migrations\n migrateLineFilterV1(this);\n }\n\n private subscribeToPatternsVariable() {\n return getPatternsVariable(this).subscribeToState((newState, prevState) => {\n if (newState.value !== prevState.value) {\n this.state.$detectedFieldsData?.runQueries();\n this.state.$logsCount?.runQueries();\n }\n });\n }\n\n private subscribeToLineFiltersVariable() {\n return getLineFiltersVariable(this).subscribeToEvent(SceneVariableValueChangedEvent, () => {\n this.state.$logsCount?.runQueries();\n this.state.$detectedFieldsData?.runQueries();\n });\n }\n\n private subscribeToDataSourceVariable() {\n return getDataSourceVariable(this).subscribeToState(() => {\n this.redirectToStart();\n });\n }\n\n private resetTabCount() {\n this.setState({\n fieldsCount: undefined,\n labelsCount: undefined,\n patternsCount: undefined,\n });\n\n getMetadataService().setServiceSceneState(this.state);\n }\n\n private subscribeToFieldsVariable() {\n const fieldsVar = getFieldsVariable(this);\n return fieldsVar.subscribeToState((newState, prevState) => {\n if (!areArraysEqual(newState.filters, prevState.filters)) {\n this.state.$detectedFieldsData?.runQueries();\n this.state.$logsCount?.runQueries();\n }\n });\n }\n\n private subscribeToMetadataVariable() {\n const metadataVar = getMetadataVariable(this);\n return metadataVar.subscribeToState((newState, prevState) => {\n if (!areArraysEqual(newState.filters, prevState.filters)) {\n this.state.$detectedFieldsData?.runQueries();\n this.state.$logsCount?.runQueries();\n }\n });\n }\n\n /**\n * Subscribe to SceneVariableValueChangedEvent and run logs count and detectedFields on update.\n * In the levels variable renderer we update the ad-hoc filters, but we don't always want to immediately execute queries.\n */\n private subscribeToLevelsVariableChangedEvent() {\n return getLevelsVariable(this).subscribeToEvent(SceneVariableValueChangedEvent, () => {\n this.state.$detectedFieldsData?.runQueries();\n });\n }\n\n /**\n * Subscribe to actual filter changes and update the logs count\n * @private\n */\n private subscribeToLevelsVariableFiltersState() {\n const levelsVariable = getLevelsVariable(this);\n return levelsVariable.subscribeToState((newState, prevState) => {\n if (!areArraysEqual(newState.filters, prevState.filters)) {\n this.state.$logsCount?.runQueries();\n }\n });\n }\n\n private runQueries() {\n const slug = getDrilldownSlug();\n const parentSlug = getDrilldownValueSlug();\n\n // If we don't have a patterns count in the tabs, or we are activating the patterns scene, run the pattern query\n if (slug === PageSlugs.patterns || this.state.patternsCount === undefined) {\n this.state.$patternsData?.runQueries();\n }\n\n // If we don't have a detected labels count, or we are activating the labels scene, run the detected labels query\n if (slug === PageSlugs.labels || parentSlug === ValueSlugs.label || this.state.labelsCount === undefined) {\n this.state.$detectedLabelsData?.runQueries();\n }\n\n // If we don't have a detected fields count, or we are activating the fields scene, run the detected fields query\n if (slug === PageSlugs.fields || parentSlug === ValueSlugs.field || this.state.fieldsCount === undefined) {\n this.state.$detectedFieldsData?.runQueries();\n }\n if (this.state.logsCount === undefined) {\n this.state.$logsCount?.runQueries();\n }\n }\n\n private subscribeToPatternsQuery() {\n return this.state.$patternsData?.subscribeToState((newState) => {\n this.updateLoadingState(newState, TabNames.patterns);\n if (newState.data?.state === LoadingState.Done) {\n const patternsResponse = newState.data.series;\n if (patternsResponse?.length !== undefined) {\n // Save the count of patterns to state\n this.setState({\n patternsCount: patternsResponse.length,\n });\n getMetadataService().setPatternsCount(patternsResponse.length);\n }\n }\n });\n }\n\n private subscribeToDetectedLabelsQuery() {\n return this.state.$detectedLabelsData?.subscribeToState((newState) => {\n this.updateLoadingState(newState, TabNames.labels);\n if (newState.data?.state === LoadingState.Done) {\n const detectedLabelsResponse = newState.data;\n // Detected labels API call always returns a single frame, with a field for each label\n const detectedLabelsFields = detectedLabelsResponse.series[0].fields;\n if (detectedLabelsResponse.series.length !== undefined && detectedLabelsFields.length !== undefined) {\n const removeSpecialFields = detectedLabelsResponse.series[0].fields.filter(\n (f) => LEVEL_VARIABLE_VALUE !== f.name\n );\n\n this.setState({\n labelsCount: removeSpecialFields.length + 1, // Add one for detected_level\n });\n getMetadataService().setLabelsCount(detectedLabelsFields.length);\n }\n }\n });\n }\n\n private updateLoadingState(newState: SceneDataState, key: keyof ServiceSceneLoadingStates) {\n const loadingStates = this.state.loadingStates;\n loadingStates[key] = newState.data?.state === LoadingState.Loading;\n // set loading state to true if any of the queries are loading\n const loading = Object.values(loadingStates).some((v) => v);\n this.setState({ loading, loadingStates });\n }\n\n private subscribeToLogsQuery() {\n return this.state.$data?.subscribeToState((newState, prevState) => {\n this.updateLoadingState(newState, TabNames.logs);\n if (newState.data?.state === LoadingState.Done || newState.data?.state === LoadingState.Streaming) {\n const resultCount = newState.data.series[0]?.length ?? 0;\n if (resultCount !== this.state.logsCount) {\n this.setState({\n logsCount: resultCount,\n });\n }\n }\n });\n }\n\n private subscribeToLogsCountQuery() {\n return this.state.$logsCount?.subscribeToState((newState) => {\n if (newState.data?.state === LoadingState.Done) {\n const value: number | undefined = newState.data.series[0]?.fields?.[1]?.values?.[0];\n this.setState({\n totalLogsCount: value,\n });\n }\n });\n }\n\n private subscribeToDetectedFieldsQuery(updateFieldsCount: boolean) {\n return this.state.$detectedFieldsData?.subscribeToState((newState) => {\n this.updateLoadingState(newState, TabNames.fields);\n if (updateFieldsCount && newState.data?.state === LoadingState.Done) {\n const detectedFieldsResponse = newState.data;\n const detectedFieldsFields = detectedFieldsResponse.series[0];\n\n if (detectedFieldsFields !== undefined && detectedFieldsFields.length !== this.state.fieldsCount) {\n this.setState({\n fieldsCount: detectedFieldsFields.length,\n });\n getMetadataService().setFieldsCount(detectedFieldsFields.length);\n }\n }\n });\n }\n\n private subscribeToTimeRange() {\n return sceneGraph.getTimeRange(this).subscribeToState(() => {\n this.state.$patternsData?.runQueries();\n this.state.$detectedLabelsData?.runQueries();\n this.state.$detectedFieldsData?.runQueries();\n this.state.$logsCount?.runQueries();\n });\n }\n\n private resetBodyAndData() {\n let stateUpdate: Partial = {};\n\n if (!this.state.$data) {\n stateUpdate.$data = getServiceSceneQueryRunner();\n }\n\n if (!this.state.$patternsData) {\n stateUpdate.$patternsData = getPatternsQueryRunner();\n }\n\n if (!this.state.$detectedLabelsData) {\n stateUpdate.$detectedLabelsData = getDetectedLabelsQueryRunner();\n }\n\n if (!this.state.$detectedFieldsData) {\n stateUpdate.$detectedFieldsData = getDetectedFieldsQueryRunner();\n }\n\n if (!this.state.$logsCount) {\n stateUpdate.$logsCount = getLogCountQueryRunner();\n }\n\n if (!this.state.body) {\n stateUpdate.body = buildGraphScene();\n }\n\n if (Object.keys(stateUpdate).length) {\n this.setState(stateUpdate);\n }\n }\n\n public setBreakdownView() {\n const { body } = this.state;\n const breakdownView = getDrilldownSlug();\n const breakdownViewDef = breakdownViewsDefinitions.find((v) => v.value === breakdownView);\n\n if (!body) {\n const err = new Error('body is not defined in setBreakdownView!');\n logger.error(err, { msg: 'ServiceScene setBreakdownView error' });\n throw err;\n }\n\n if (breakdownViewDef) {\n body.setState({\n children: [\n ...body.state.children.slice(0, 1),\n breakdownViewDef.getScene((length) => {\n if (breakdownViewDef.value === 'fields') {\n this.setState({ fieldsCount: length });\n }\n }),\n ],\n });\n } else {\n const valueBreakdownView = getDrilldownValueSlug();\n const valueBreakdownViewDef = valueBreakdownViews.find((v) => v.value === valueBreakdownView);\n\n if (valueBreakdownViewDef && this.state.drillDownLabel) {\n body.setState({\n children: [...body.state.children.slice(0, 1), valueBreakdownViewDef.getScene(this.state.drillDownLabel)],\n });\n } else {\n logger.error(new Error('not setting breakdown view'), { msg: 'setBreakdownView error' });\n }\n }\n }\n\n static Component = ({ model }: SceneComponentProps) => {\n const { body } = model.useState();\n if (body) {\n return ;\n }\n\n return ;\n };\n}\n\nfunction buildGraphScene() {\n return new SceneFlexLayout({\n direction: 'column',\n children: [\n new SceneFlexItem({\n ySizing: 'content',\n body: new ActionBarScene({}),\n }),\n ],\n });\n}\n\nfunction getPatternsQueryRunner() {\n return getResourceQueryRunner([\n buildResourceQuery(`{${VAR_LABELS_EXPR}}`, 'patterns', { refId: PATTERNS_QUERY_REFID }),\n ]);\n}\n\nfunction getDetectedLabelsQueryRunner() {\n return getResourceQueryRunner([\n buildResourceQuery(`{${VAR_LABELS_EXPR}}`, 'detected_labels', { refId: DETECTED_LABELS_QUERY_REFID }),\n ]);\n}\n\nfunction getDetectedFieldsQueryRunner() {\n return getResourceQueryRunner([\n buildResourceQuery(LOG_STREAM_SELECTOR_EXPR, 'detected_fields', { refId: DETECTED_FIELDS_QUERY_REFID }),\n ]);\n}\n\nfunction getServiceSceneQueryRunner() {\n return getQueryRunner([buildDataQuery(LOG_STREAM_SELECTOR_EXPR, { refId: LOGS_PANEL_QUERY_REFID })]);\n}\n\nfunction getLogCountQueryRunner() {\n const queryRunner = getQueryRunner(\n [\n buildDataQuery(`sum(count_over_time(${LOG_STREAM_SELECTOR_EXPR}[$__auto]))`, {\n refId: LOGS_COUNT_QUERY_REFID,\n queryType: 'instant',\n }),\n ],\n { runQueriesMode: 'manual' } // for some reason when this query is set to auto, it doesn't run on time range update, looks like there is different behavior with data providers not in the special $data prop\n );\n\n if (queryRunner instanceof SceneQueryRunner) {\n return queryRunner;\n }\n const error = new Error('log count query provider is not query runner!');\n logger.error(error, { msg: 'getLogCountQueryRunner: invalid return type' });\n throw error;\n}\n","import { SceneComponentProps, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport React from 'react';\nimport { Icon, ToolbarButton, useStyles2 } from '@grafana/ui';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { css } from '@emotion/css';\nimport { getFavoriteLabelValuesFromStorage } from '../../services/store';\nimport { addToFavorites, removeFromFavorites } from '../../services/favorites';\n\nexport interface FavoriteServiceHeaderActionSceneState extends SceneObjectState {\n labelValue: string;\n labelName: string;\n ds: string;\n hover?: boolean;\n}\n\nexport class FavoriteServiceHeaderActionScene extends SceneObjectBase {\n public static Component = ({ model }: SceneComponentProps) => {\n const { ds, labelValue, labelName, hover } = model.useState();\n const isFavorite = getFavoriteLabelValuesFromStorage(ds, labelName).includes(labelValue);\n const styles = useStyles2((theme) => getStyles(theme, isFavorite, hover));\n const tooltipCopy = isFavorite ? `Remove ${labelValue} from favorites` : `Add ${labelValue} to favorites`;\n\n return (\n \n {\n model.setHover(true);\n }}\n onMouseOut={() => {\n model.setHover(false);\n }}\n icon={}\n color={isFavorite ? 'rgb(235, 123, 24)' : '#ccc'}\n onClick={() => model.onClick(isFavorite)}\n name={'star'}\n aria-label={tooltipCopy}\n tooltip={tooltipCopy}\n />\n \n );\n };\n\n public setHover(hover: boolean) {\n this.setState({\n hover,\n });\n }\n\n public onClick(isFavorite: boolean) {\n if (isFavorite) {\n removeFromFavorites(this.state.labelName, this.state.labelValue, this);\n } else {\n addToFavorites(this.state.labelName, this.state.labelValue, this);\n }\n }\n}\n\nfunction getStyles(theme: GrafanaTheme2, isFavorite: boolean, hover = false) {\n return {\n wrapper: css({\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignSelf: 'center',\n }),\n };\n}\n","import React from 'react';\n\nimport { SceneComponentProps, SceneObject, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport { LinkButton, useStyles2 } from '@grafana/ui';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from 'services/analytics';\nimport { getDrillDownIndexLink, pushUrlHandler } from '../../services/navigate';\nimport { getLabelsVariable } from '../../services/variableGetters';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { css } from '@emotion/css';\nimport { SERVICE_NAME, SERVICE_UI_LABEL } from '../../services/variables';\nimport { FilterOp } from '../../services/filterTypes';\nimport { testIds } from '../../services/testIds';\nimport { addToFavorites } from '../../services/favorites';\n\nexport interface SelectServiceButtonState extends SceneObjectState {\n labelValue: string;\n labelName: string;\n}\n\nexport class SelectServiceButton extends SceneObjectBase {\n public getLink = () => {\n if (!this.state.labelValue) {\n return;\n }\n\n return getLabelDrilldownLink(this.state.labelName, this.state.labelValue, this);\n };\n\n public onClick = () => {\n selectLabel(this.state.labelName, this.state.labelValue, this);\n };\n\n public static Component = ({ model }: SceneComponentProps) => {\n const styles = useStyles2(getStyles);\n const labels = getLabelsVariable(model);\n // Re-render links on label filter changes\n labels.useState();\n const link = model.getLink();\n return (\n \n Show logs\n \n );\n };\n}\n\n/**\n * Select label tracking and add to favorites\n */\nfunction selectLabel(primaryLabelName: string, primaryLabelValue: string, sceneRef: SceneObject) {\n reportAppInteraction(USER_EVENTS_PAGES.service_selection, USER_EVENTS_ACTIONS.service_selection.service_selected, {\n value: primaryLabelValue,\n label: primaryLabelName,\n });\n\n addToFavorites(primaryLabelName, primaryLabelValue, sceneRef);\n}\n\n/**\n * Builds label drilldown link\n */\nexport function getLabelDrilldownLink(primaryLabelName: string, primaryLabelValue: string, sceneRef: SceneObject) {\n const variable = getLabelsVariable(sceneRef);\n\n const filteredFilters = variable.state.filters.filter(\n (f) => !(f.key === primaryLabelName && f.value === primaryLabelValue)\n );\n\n const filters = [\n ...filteredFilters,\n {\n key: primaryLabelName,\n operator: FilterOp.Equal,\n value: primaryLabelValue,\n },\n ];\n\n if (primaryLabelName === SERVICE_NAME) {\n primaryLabelName = SERVICE_UI_LABEL;\n }\n\n const clonedVar = variable.clone({ filters });\n\n // In this case, we don't have a ServiceScene created yet, so we call a special function to navigate there for the first time\n return getDrillDownIndexLink(primaryLabelName, primaryLabelValue, clonedVar.urlSync?.getUrlState());\n}\n\n/**\n * Navigates to drilldown\n */\nexport function goToLabelDrillDownLink(primaryLabelName: string, primaryLabelValue: string, sceneRef: SceneObject) {\n const link = getLabelDrilldownLink(primaryLabelName, primaryLabelValue, sceneRef);\n selectLabel(primaryLabelName, primaryLabelValue, sceneRef);\n pushUrlHandler(link);\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n button: css({\n alignSelf: 'center',\n }),\n };\n}\n","import React from 'react';\nimport { GrotError } from 'Components/GrotError';\nimport { TextLink, Text } from '@grafana/ui';\n\nexport const ConfigureVolumeError = () => {\n return (\n \n

Log volume has not been configured.

\n

\n \n Instructions to enable volume in the Loki config:\n \n

\n \n
\n          \n            limits_config:\n            
\n   volume_enabled: true\n
\n
\n
\n
\n );\n};\n","import React from 'react';\nimport { GrotError } from 'Components/GrotError';\n\nexport const NoServiceSearchResults = () => {\n return (\n \n

No service matched your search.

\n
\n );\n};\n","import { SceneComponentProps, sceneGraph, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport { Select, Stack, useStyles2 } from '@grafana/ui';\nimport React from 'react';\nimport { ServiceSelectionScene } from './ServiceSelectionScene';\nimport { ServiceSelectionTabsScene, TabOption } from './ServiceSelectionTabsScene';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { css } from '@emotion/css';\n\nexport interface TabPopoverSceneState extends SceneObjectState {}\n\nexport class TabPopoverScene extends SceneObjectBase {\n public static Component = ({ model }: SceneComponentProps) => {\n const serviceSelectionScene = sceneGraph.getAncestor(model, ServiceSelectionScene);\n const serviceSelectionTabsScene = sceneGraph.getAncestor(model, ServiceSelectionTabsScene);\n const { tabOptions, showPopover } = serviceSelectionTabsScene.useState();\n const popoverStyles = useStyles2(getPopoverStyles);\n\n const tabOptionsWithIcon: TabOption[] = tabOptions.map((opt) => {\n return {\n ...opt,\n icon: opt.saved ? 'save' : undefined,\n label: `${opt.label}`,\n };\n });\n\n return (\n \n
\n \n menuShouldPortal={false}\n width={50}\n onBlur={() => {\n serviceSelectionTabsScene.toggleShowPopover();\n }}\n autoFocus={true}\n isOpen={showPopover}\n placeholder={'Search labels'}\n options={tabOptionsWithIcon}\n isSearchable={true}\n openMenuOnFocus={true}\n onChange={(option) => {\n // Add value to variable\n if (option.value) {\n // Hide the popover\n serviceSelectionTabsScene.toggleShowPopover();\n // Set new tab\n serviceSelectionScene.setSelectedTab(option.value);\n }\n }}\n />\n
\n
\n );\n };\n}\n\nconst getPopoverStyles = (theme: GrafanaTheme2) => ({\n card: {\n body: css({\n padding: theme.spacing(1),\n }),\n p: css({\n maxWidth: 300,\n }),\n },\n});\n","import { SceneComponentProps, sceneGraph, SceneObjectBase, SceneObjectState, SceneQueryRunner } from '@grafana/scenes';\nimport React, { useRef } from 'react';\nimport { Icon, Popover, PopoverController, Tab, TabsBar, Tooltip, useStyles2 } from '@grafana/ui';\nimport { GrafanaTheme2, LoadingState, SelectableValue } from '@grafana/data';\nimport { css, cx } from '@emotion/css';\nimport { SERVICE_NAME, SERVICE_UI_LABEL } from '../../services/variables';\nimport { truncateText } from '../../services/text';\nimport { rest } from 'lodash';\nimport { ServiceSelectionScene } from './ServiceSelectionScene';\nimport { getSceneQueryRunner } from '../../services/panel';\nimport { buildResourceQuery } from '../../services/query';\nimport { TabPopoverScene } from './TabPopoverScene';\nimport { getDataSourceVariable, getServiceSelectionPrimaryLabel } from '../../services/variableGetters';\nimport { getFavoriteTabsFromStorage, removeTabFromLocalStorage } from '../../services/store';\n\nexport interface TabOption extends SelectableValue {\n label: string;\n value: string;\n active?: boolean;\n saved?: boolean;\n savedIndex?: number;\n}\n\nexport interface ServiceSelectionTabsSceneState extends SceneObjectState {\n tabOptions: TabOption[];\n showPopover: boolean;\n $labelsData: SceneQueryRunner;\n popover?: TabPopoverScene;\n}\n\ninterface LabelOptions {\n label: string;\n cardinality: number;\n}\n\nexport class ServiceSelectionTabsScene extends SceneObjectBase {\n constructor(state: Partial) {\n super({\n showPopover: false,\n $labelsData: getSceneQueryRunner({\n queries: [buildResourceQuery('', 'detected_labels')],\n runQueriesMode: 'manual',\n }),\n tabOptions: [\n {\n label: SERVICE_UI_LABEL,\n value: SERVICE_NAME,\n saved: true,\n },\n ],\n ...state,\n });\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n public static Component = ({ model }: SceneComponentProps) => {\n // Scene vars\n const { tabOptions, showPopover, popover, $labelsData } = model.useState();\n const { data } = $labelsData.useState();\n const serviceSelectionScene = sceneGraph.getAncestor(model, ServiceSelectionScene);\n const primaryLabel = getServiceSelectionPrimaryLabel(model);\n // Re-render when active tab changes, which is stored in the primary label variable\n primaryLabel.useState();\n\n // Constants\n const styles = useStyles2(getTabsStyles);\n const popoverRef = useRef(null);\n const maxLabelLength = 15;\n\n return (\n \n {tabOptions\n .filter((tabLabel) => tabLabel.saved || tabLabel.active || tabLabel.value === SERVICE_NAME)\n .sort((a, b) => {\n // Service name goes first\n if (a.value === SERVICE_NAME || b.value === SERVICE_NAME) {\n return a.value === SERVICE_NAME ? -1 : 1;\n }\n\n // Then sort by the order added to local storage\n return (a.savedIndex ?? 0) - (b.savedIndex ?? 0);\n })\n .map((tabLabel) => {\n const tab = (\n {\n // Set the new active tab\n serviceSelectionScene.setSelectedTab(tabLabel.value);\n }}\n label={truncateText(tabLabel.label, maxLabelLength, true)}\n active={tabLabel.active}\n suffix={\n tabLabel.value !== SERVICE_NAME\n ? (props) => {\n return (\n <>\n \n {\n if (e.key === 'Enter') {\n model.removeSavedTab(tabLabel.value);\n }\n }}\n onClick={(e) => {\n // Don't bubble up to the tab component, we don't want to select the tab we're removing\n e.stopPropagation();\n model.removeSavedTab(tabLabel.value);\n }}\n name={'times'}\n className={cx(props.className)}\n />\n \n \n );\n }\n : undefined\n }\n />\n );\n\n if (tabLabel.label.length > maxLabelLength) {\n return (\n \n {tab}\n \n );\n } else {\n return tab;\n }\n })}\n {data?.state === LoadingState.Loading && }\n\n {/* Add more tabs tab */}\n {data?.state === LoadingState.Done && (\n \n \n \n )}\n\n {popover && (\n }>\n {(showPopper, hidePopper, popperProps) => {\n const blurFocusProps = {\n onBlur: hidePopper,\n onFocus: showPopper,\n };\n\n return (\n <>\n {popoverRef.current && (\n <>\n {/* @ts-expect-error @todo upgrade typescript */}\n \n \n )}\n \n );\n }}\n \n )}\n \n );\n };\n\n removeSavedTab = (labelName: string) => {\n removeTabFromLocalStorage(getDataSourceVariable(this).getValue().toString(), labelName);\n\n const labels = this.getLabelsFromQueryRunnerState();\n if (labels) {\n this.populatePrimaryLabelsVariableOptions(labels);\n }\n\n // If the user is closing the active tab, select the default tab\n const serviceSelectionScene = sceneGraph.getAncestor(this, ServiceSelectionScene);\n if (serviceSelectionScene.getSelectedTab() === labelName) {\n serviceSelectionScene.selectDefaultLabelTab();\n }\n };\n\n toggleShowPopover = () => {\n this.setState({\n showPopover: !this.state.showPopover,\n });\n };\n\n getLabelsFromQueryRunnerState(state = this.state.$labelsData?.state): LabelOptions[] | undefined {\n return state.data?.series[0].fields.map((f) => {\n return {\n label: f.name,\n cardinality: f.values[0],\n };\n });\n }\n\n public populatePrimaryLabelsVariableOptions(labels: LabelOptions[]) {\n const serviceSelectionScene = sceneGraph.getAncestor(this, ServiceSelectionScene);\n const selectedTab = serviceSelectionScene.getSelectedTab();\n const savedTabs = getFavoriteTabsFromStorage(getDataSourceVariable(this).getValue().toString());\n\n const tabOptions: TabOption[] = labels\n .map((l) => {\n const savedIndex = savedTabs.indexOf(l.label);\n const option: TabOption = {\n label: l.label === SERVICE_NAME ? SERVICE_UI_LABEL : l.label,\n value: l.label,\n active: selectedTab === l.label,\n saved: savedIndex !== -1,\n savedIndex,\n };\n return option;\n })\n .sort((a, b) => {\n // Sort service first\n if (a.value === SERVICE_NAME || b.value === SERVICE_NAME) {\n return a.value === SERVICE_NAME ? -1 : 1;\n }\n\n // Then sort alphabetically\n return a.label < b.label ? -1 : a.label > b.label ? 1 : 0;\n });\n this.setState({\n tabOptions,\n });\n }\n\n private runDetectedLabels() {\n this.state.$labelsData.runQueries();\n }\n\n private runDetectedLabelsSubs() {\n // Update labels/tabs on time range change\n this._subs.add(\n sceneGraph.getTimeRange(this).subscribeToState(() => {\n this.runDetectedLabels();\n })\n );\n\n // Update labels (tabs) when datasource is changed\n this._subs.add(\n getDataSourceVariable(this).subscribeToState(() => {\n this.runDetectedLabels();\n })\n );\n }\n\n private onActivate() {\n // Get labels\n this.runDetectedLabels();\n\n this.setState({\n popover: new TabPopoverScene({}),\n });\n\n this.runDetectedLabelsSubs();\n\n // Update labels (tabs) when datasource is changed\n this._subs.add(\n getDataSourceVariable(this).subscribeToState(() => {\n this.state.$labelsData.runQueries();\n })\n );\n\n this._subs.add(\n getServiceSelectionPrimaryLabel(this).subscribeToState(() => {\n const labels = this.getLabelsFromQueryRunnerState(this.state.$labelsData?.state);\n if (labels) {\n this.populatePrimaryLabelsVariableOptions(labels);\n }\n })\n );\n\n this._subs.add(\n this.state.$labelsData.subscribeToState((newState) => {\n if (newState.data?.state === LoadingState.Done) {\n const labels = this.getLabelsFromQueryRunnerState(newState);\n const serviceSelectionScene = sceneGraph.getAncestor(this, ServiceSelectionScene);\n\n if (labels) {\n this.populatePrimaryLabelsVariableOptions(labels);\n }\n\n const selectedTab = serviceSelectionScene.getSelectedTab();\n // If the tab is no longer available, either because the user changed the datasource, or time range, select the default tab\n if (!labels?.some((label) => label.label === selectedTab)) {\n serviceSelectionScene.selectDefaultLabelTab();\n }\n }\n })\n );\n }\n}\n\nconst getTabsStyles = (theme: GrafanaTheme2) => ({\n tabs: css({\n overflowY: 'hidden',\n }),\n addTab: css({\n label: 'add-label-tab',\n color: theme.colors.primary.text,\n '& button': {\n color: theme.colors.primary.text,\n },\n }),\n popover: css({\n borderRadius: theme.shape.radius.default,\n boxShadow: theme.shadows.z3,\n background: theme.colors.background.primary,\n border: `1px solid ${theme.colors.border.weak}`,\n }),\n});\n","import React from 'react';\nimport { GrotError } from 'Components/GrotError';\n\nexport const NoServiceVolume = (props: { labelName: string }) => {\n return (\n \n

\n No logs found in {props.labelName}.
\n Please adjust time range or select another label.\n

\n
\n );\n};\n","import { SceneComponentProps, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport { Button, useStyles2 } from '@grafana/ui';\nimport { testIds } from '../../services/testIds';\nimport { addToFilters, FilterType } from '../ServiceScene/Breakdowns/AddToFiltersButton';\nimport { VAR_LABELS } from '../../services/variables';\nimport { getLabelsVariable, getValueFromAdHocVariableFilter } from '../../services/variableGetters';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from '../../services/analytics';\nimport { css } from '@emotion/css';\nimport React from 'react';\nimport { FilterOp } from '../../services/filterTypes';\n\nexport interface AddLabelToFiltersHeaderActionSceneState extends SceneObjectState {\n name: string;\n value: string;\n hidden?: boolean;\n included: boolean | null;\n}\n\nexport class AddLabelToFiltersHeaderActionScene extends SceneObjectBase {\n constructor(state: Omit) {\n super({\n ...state,\n included: null,\n });\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n onActivate() {\n this.setState({ ...this.isSelected() });\n this._subs.add(\n getLabelsVariable(this).subscribeToState(() => {\n const selected = this.isSelected();\n if (this.state.included !== selected.included) {\n this.setState({ ...selected });\n }\n })\n );\n }\n\n isSelected = () => {\n const variable = getLabelsVariable(this);\n\n // Check if the filter is already there\n const filterInSelectedFilters = variable.state.filters.find((f) => {\n const value = getValueFromAdHocVariableFilter(VAR_LABELS, f);\n return f.key === this.state.name && value.value === this.state.value;\n });\n\n if (!filterInSelectedFilters) {\n return { included: false };\n }\n\n // @todo support regex operator\n return {\n included: filterInSelectedFilters.operator === FilterOp.Equal,\n };\n };\n\n public static Component = ({ model }: SceneComponentProps) => {\n const { value, hidden, included } = model.useState();\n\n if (hidden) {\n return <>;\n }\n\n const styles = useStyles2(getStyles);\n return (\n \n (included === true ? model.onClick('clear') : model.onClick('include'))}\n data-testid={testIds.exploreServiceDetails.buttonFilterInclude}\n />\n \n );\n };\n\n public getFilter() {\n return { name: this.state.name, value: this.state.value };\n }\n\n public onClick = (type: FilterType) => {\n const filter = this.getFilter();\n\n addToFilters(filter.name, filter.value, type, this, VAR_LABELS);\n\n const variable = getLabelsVariable(this);\n reportAppInteraction(USER_EVENTS_PAGES.service_selection, USER_EVENTS_ACTIONS.service_selection.add_to_filters, {\n filterType: 'index-filters',\n key: filter.name,\n action: type,\n filtersLength: variable?.state.filters.length || 0,\n });\n\n this.setState({ ...this.isSelected() });\n };\n}\n\nconst getStyles = () => {\n return {\n container: css({\n display: 'flex',\n justifyContent: 'center',\n }),\n includeButton: css({\n borderRadius: 0,\n }),\n wrapper: css({\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignSelf: 'center',\n }),\n };\n};\n","import { SceneComponentProps, sceneGraph, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport { GrafanaTheme2, SelectableValue } from '@grafana/data';\nimport { css } from '@emotion/css';\nimport { IconButton, Pagination, Select, useStyles2 } from '@grafana/ui';\nimport React, { useEffect } from 'react';\nimport { ServiceSelectionScene } from './ServiceSelectionScene';\nimport { setServiceSelectionPageCount } from '../../services/store';\n\nexport interface ServiceSelectionPaginationSceneState extends SceneObjectState {}\n\nexport class ServiceSelectionPaginationScene extends SceneObjectBase {\n public static PageCount = ({\n model,\n totalCount,\n }: SceneComponentProps & { totalCount: number }) => {\n const styles = useStyles2(getPageCountStyles);\n const serviceSelectionScene = sceneGraph.getAncestor(model, ServiceSelectionScene);\n const { countPerPage } = serviceSelectionScene.useState();\n const options = getCountOptionsFromTotal(totalCount);\n useEffect(() => {\n const lastOptionValue = options[options.length - 1]?.value ?? countPerPage.toString();\n if (countPerPage.toString() > lastOptionValue) {\n serviceSelectionScene.setState({ countPerPage: parseInt(lastOptionValue, 10) });\n }\n }, [countPerPage, options, serviceSelectionScene]);\n return (\n \n \n Showing{' '}\n {\n if (value.value) {\n const countPerPage = parseInt(value.value, 10);\n serviceSelectionScene.setState({ countPerPage, currentPage: 1 });\n serviceSelectionScene.updateBody();\n setServiceSelectionPageCount(countPerPage);\n }\n }}\n options={options}\n value={countPerPage.toString()}\n />{' '}\n of {totalCount}{' '}\n \n \n \n );\n };\n public static Component = ({\n model,\n totalCount,\n }: SceneComponentProps & { totalCount: number }) => {\n const serviceSelectionScene = sceneGraph.getAncestor(model, ServiceSelectionScene);\n const { countPerPage, currentPage } = serviceSelectionScene.useState();\n const getStyles = (theme: GrafanaTheme2) => ({\n pagination: css({\n float: 'none',\n }),\n paginationWrap: css({\n [theme.breakpoints.up('lg')]: {\n display: 'none',\n },\n [theme.breakpoints.down('lg')]: {\n display: 'flex',\n justifyContent: 'flex-end',\n flex: '1 0 auto',\n },\n }),\n paginationWrapMd: css({\n [theme.breakpoints.down('lg')]: {\n display: 'none',\n },\n [theme.breakpoints.up('lg')]: {\n display: 'flex',\n justifyContent: 'flex-end',\n flex: '1 0 auto',\n },\n }),\n });\n\n const styles = useStyles2(getStyles);\n\n if (totalCount > countPerPage) {\n return (\n <>\n \n {\n serviceSelectionScene.setState({ currentPage: toPage });\n serviceSelectionScene.updateBody();\n }}\n />\n \n \n {\n serviceSelectionScene.setState({ currentPage: toPage });\n serviceSelectionScene.updateBody();\n }}\n />\n \n \n );\n }\n\n return null;\n };\n}\n\nfunction getPageCountStyles(theme: GrafanaTheme2) {\n return {\n icon: css({\n color: theme.colors.text.disabled,\n marginLeft: theme.spacing.x1,\n }),\n searchPageCountWrap: css({\n display: 'flex',\n alignItems: 'center',\n }),\n select: css({\n maxWidth: '65px',\n marginLeft: theme.spacing(1),\n marginRight: theme.spacing(1),\n }),\n searchFieldPlaceholderText: css({\n fontSize: theme.typography.bodySmall.fontSize,\n color: theme.colors.text.disabled,\n alignItems: 'center',\n display: 'flex',\n flex: '1 0 auto',\n textWrapMode: 'nowrap',\n }),\n };\n}\n\nexport function getCountOptionsFromTotal(totalCount: number) {\n const delta = 20;\n const end = 60;\n const roundedTotalCount = Math.ceil(totalCount / delta) * delta;\n\n const options: Array> = [];\n for (let count = delta; count <= end && count <= roundedTotalCount; count += delta) {\n let label = count.toString();\n if (count < delta) {\n label = count.toString();\n } else if (count > totalCount) {\n label = totalCount.toString();\n }\n options.push({\n value: count.toString(),\n label,\n });\n }\n\n return options;\n}\n","import { css } from '@emotion/css';\nimport { debounce } from 'lodash';\nimport React from 'react';\nimport {\n AdHocVariableFilter,\n DashboardCursorSync,\n DataFrame,\n dateTime,\n GrafanaTheme2,\n LoadingState,\n TimeRange,\n} from '@grafana/data';\nimport {\n AdHocFiltersVariable,\n behaviors,\n DataSourceVariable,\n PanelBuilders,\n SceneComponentProps,\n SceneCSSGridItem,\n SceneCSSGridLayout,\n sceneGraph,\n SceneObjectBase,\n SceneObjectState,\n SceneObjectUrlSyncConfig,\n SceneObjectUrlValues,\n SceneQueryRunner,\n SceneVariableSet,\n VizPanel,\n} from '@grafana/scenes';\nimport {\n DrawStyle,\n Field,\n LegendDisplayMode,\n PanelContext,\n SeriesVisibilityChangeMode,\n StackingMode,\n useStyles2,\n} from '@grafana/ui';\nimport { addTabToLocalStorage, getFavoriteLabelValuesFromStorage, getServiceSelectionPageCount } from 'services/store';\nimport {\n EXPLORATION_DS,\n LEVEL_VARIABLE_VALUE,\n SERVICE_NAME,\n SERVICE_UI_LABEL,\n VAR_AGGREGATED_METRICS,\n VAR_LABELS_REPLICA,\n VAR_LABELS_REPLICA_EXPR,\n VAR_PRIMARY_LABEL,\n VAR_PRIMARY_LABEL_EXPR,\n VAR_PRIMARY_LABEL_SEARCH,\n} from 'services/variables';\nimport { goToLabelDrillDownLink, SelectServiceButton } from './SelectServiceButton';\nimport {\n buildDataQuery,\n buildVolumeQuery,\n renderLogQLLabelFilters,\n unwrapWildcardSearch,\n wrapWildcardSearch,\n} from 'services/query';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from 'services/analytics';\nimport { getQueryRunner, getSceneQueryRunner, setLevelColorOverrides } from 'services/panel';\nimport { ConfigureVolumeError } from './ConfigureVolumeError';\nimport { NoServiceSearchResults } from './NoServiceSearchResults';\nimport { getLevelLabelsFromSeries, toggleLevelVisibility } from 'services/levels';\nimport { ServiceFieldSelector } from '../ServiceScene/Breakdowns/FieldSelector';\nimport { CustomConstantVariable } from '../../services/CustomConstantVariable';\nimport { areArraysEqual } from '../../services/comparison';\nimport {\n clearServiceSelectionSearchVariable,\n getAggregatedMetricsVariable,\n getDataSourceVariable,\n getLabelsVariable,\n getLabelsVariableReplica,\n getServiceSelectionPrimaryLabel,\n getServiceSelectionSearchVariable,\n setServiceSelectionPrimaryLabelKey,\n} from '../../services/variableGetters';\nimport { config, locationService } from '@grafana/runtime';\nimport { VariableHide } from '@grafana/schema';\nimport { ToolbarScene } from '../IndexScene/ToolbarScene';\nimport { IndexScene, showLogsButtonSceneKey } from '../IndexScene/IndexScene';\nimport { ServiceSelectionTabsScene } from './ServiceSelectionTabsScene';\nimport { FavoriteServiceHeaderActionScene } from './FavoriteServiceHeaderActionScene';\nimport { pushUrlHandler } from '../../services/navigate';\nimport { NoServiceVolume } from './NoServiceVolume';\nimport { getQueryRunnerFromChildren } from '../../services/scenes';\nimport { AddLabelToFiltersHeaderActionScene } from './AddLabelToFiltersHeaderActionScene';\nimport { ShowLogsButtonScene } from '../IndexScene/ShowLogsButtonScene';\nimport { ServiceSelectionPaginationScene } from './ServiceSelectionPaginationScene';\n\nconst aggregatedMetricsEnabled: boolean | undefined = config.featureToggles.exploreLogsAggregatedMetrics;\n// Don't export AGGREGATED_SERVICE_NAME, we want to rename things so the rest of the application is agnostic to how we got the services\nconst AGGREGATED_SERVICE_NAME = '__aggregated_metric__';\n\n//@todo make start date user configurable, currently hardcoded for experimental cloud release\nexport const AGGREGATED_METRIC_START_DATE = dateTime('2024-08-30', 'YYYY-MM-DD');\n\ninterface ServiceSelectionSceneState extends SceneObjectState {\n // The body of the component\n body: SceneCSSGridLayout;\n // Show logs of a certain level for a given service\n serviceLevel: Map;\n // Logs volume API response as dataframe with SceneQueryRunner\n $data: SceneQueryRunner;\n tabs?: ServiceSelectionTabsScene;\n // Pagination options\n countPerPage: number;\n currentPage: number;\n paginationScene?: ServiceSelectionPaginationScene;\n\n showPopover: boolean;\n tabOptions: Array<{\n label: string;\n value: string;\n }>;\n}\n\nfunction renderPrimaryLabelFilters(filters: AdHocVariableFilter[]): string {\n if (filters.length) {\n const filter = filters[0];\n return `${filter.key}${filter.operator}\\`${filter.value}\\``;\n }\n\n return '';\n}\n\nconst primaryLabelUrlKey = 'var-primary_label';\nconst datasourceUrlKey = 'var-ds';\n\nexport class ServiceSelectionScene extends SceneObjectBase {\n protected _urlSync = new SceneObjectUrlSyncConfig(this, {\n keys: [primaryLabelUrlKey],\n });\n\n constructor(state: Partial) {\n super({\n body: new SceneCSSGridLayout({ children: [] }),\n $variables: new SceneVariableSet({\n variables: [\n // Service search variable\n new CustomConstantVariable({\n name: VAR_PRIMARY_LABEL_SEARCH,\n label: 'Service',\n hide: VariableHide.hideVariable,\n skipUrlSync: true,\n value: '.+',\n }),\n // variable that stores if aggregated metrics are supported for the query\n new CustomConstantVariable({\n name: VAR_AGGREGATED_METRICS,\n label: '',\n hide: VariableHide.hideLabel,\n value: SERVICE_NAME,\n skipUrlSync: true,\n options: [\n {\n value: SERVICE_NAME,\n label: SERVICE_NAME,\n },\n {\n value: AGGREGATED_SERVICE_NAME,\n label: AGGREGATED_SERVICE_NAME,\n },\n ],\n }),\n // The active tab expression, hidden variable\n new AdHocFiltersVariable({\n name: VAR_PRIMARY_LABEL,\n hide: VariableHide.hideLabel,\n expressionBuilder: (filters) => {\n return renderPrimaryLabelFilters(filters);\n },\n filters: [\n {\n key: getSelectedTabFromUrl().key ?? SERVICE_NAME,\n value: '.+',\n operator: '=~',\n },\n ],\n }),\n new AdHocFiltersVariable({\n name: VAR_LABELS_REPLICA,\n datasource: EXPLORATION_DS,\n layout: 'vertical',\n filters: [],\n expressionBuilder: renderLogQLLabelFilters,\n hide: VariableHide.hideVariable,\n key: 'adhoc_service_filter_replica',\n skipUrlSync: true,\n }),\n ],\n }),\n $data: getSceneQueryRunner({\n queries: [],\n runQueriesMode: 'manual',\n }),\n serviceLevel: new Map(),\n // pagination\n countPerPage: getServiceSelectionPageCount() ?? 20,\n currentPage: 1,\n\n showPopover: false,\n tabOptions: [\n {\n label: SERVICE_UI_LABEL,\n value: SERVICE_NAME,\n },\n ],\n ...state,\n });\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n public static Component = ({ model }: SceneComponentProps) => {\n const styles = useStyles2(getStyles);\n const { body, $data, tabs, paginationScene } = model.useState();\n const { data } = $data.useState();\n const selectedTab = model.getSelectedTab();\n\n const serviceStringVariable = getServiceSelectionSearchVariable(model);\n const { label, value: searchValue } = serviceStringVariable.useState();\n const hasSearch = searchValue && searchValue !== '.+';\n\n const { labelsByVolume, labelsToQuery } = model.getLabels(data?.series);\n const isLogVolumeLoading =\n data?.state === LoadingState.Loading || data?.state === LoadingState.Streaming || data === undefined;\n const volumeApiError = $data.state.data?.state === LoadingState.Error;\n\n const onSearchChange = (serviceName?: string) => {\n model.onSearchServicesChange(serviceName);\n };\n\n const filterLabel = model.formatPrimaryLabelForUI();\n let customValue = serviceStringVariable.getValue().toString();\n if (customValue === '.+') {\n customValue = '';\n }\n const customLabel = unwrapWildcardSearch(customValue);\n\n return (\n
\n
\n {tabs && }\n \n
\n onSearchChange(serviceName)}\n selectOption={(value: string) => {\n goToLabelDrillDownLink(selectedTab, value, model);\n }}\n label={filterLabel}\n options={\n labelsToQuery?.map((serviceName) => ({\n value: serviceName,\n label: serviceName,\n })) ?? []\n }\n />\n {!isLogVolumeLoading && (\n \n {paginationScene && (\n \n )}\n {paginationScene && (\n \n )}\n \n )}\n
\n
\n {/** If we don't have any servicesByVolume, volume endpoint is probably not enabled */}\n {!isLogVolumeLoading && volumeApiError && }\n {!isLogVolumeLoading && !volumeApiError && hasSearch && !labelsByVolume?.length && }\n {!isLogVolumeLoading && !volumeApiError && !hasSearch && !labelsByVolume?.length && (\n \n )}\n {!(!isLogVolumeLoading && volumeApiError) && (\n
\n \n
\n {paginationScene && (\n \n )}\n
\n
\n )}\n
\n
\n );\n };\n\n // We could also run model.setState in component, but it is recommended to implement the state-modifying methods in the scene object\n onSearchServicesChange = debounce((primaryLabelSearch?: string) => {\n // Set search variable\n const searchVar = getServiceSelectionSearchVariable(this);\n\n const newSearchString = primaryLabelSearch ? wrapWildcardSearch(primaryLabelSearch) : '.+';\n if (newSearchString !== searchVar.state.value) {\n searchVar.setState({\n value: primaryLabelSearch ? wrapWildcardSearch(primaryLabelSearch) : '.+',\n label: primaryLabelSearch ?? '',\n });\n }\n\n const primaryLabelVar = getServiceSelectionPrimaryLabel(this);\n const filter = primaryLabelVar.state.filters[0];\n\n // Update primary label with search string\n if (wrapWildcardSearch(searchVar.state.value.toString()) !== filter.value) {\n primaryLabelVar.setState({\n filters: [\n {\n ...filter,\n value: wrapWildcardSearch(searchVar.state.value.toString()),\n },\n ],\n });\n }\n\n this.setState({\n currentPage: 1,\n });\n\n reportAppInteraction(\n USER_EVENTS_PAGES.service_selection,\n USER_EVENTS_ACTIONS.service_selection.search_services_changed,\n {\n searchQuery: primaryLabelSearch,\n }\n );\n }, 500);\n\n /**\n * Set changes from the URL to the state of the primary label variable\n */\n getUrlState() {\n const { key } = getSelectedTabFromUrl();\n const primaryLabelVar = getServiceSelectionPrimaryLabel(this);\n const filter = primaryLabelVar.state.filters[0];\n\n if (filter.key && filter.key !== key) {\n getServiceSelectionPrimaryLabel(this).setState({\n filters: [\n {\n ...filter,\n key: key ?? filter.key,\n },\n ],\n });\n }\n\n return {};\n }\n\n /**\n * Unused, but required\n * @param values\n */\n updateFromUrl(values: SceneObjectUrlValues) {}\n\n addDatasourceChangeToBrowserHistory(newDs: string) {\n const location = locationService.getLocation();\n const search = new URLSearchParams(location.search);\n const dsUrl = search.get(datasourceUrlKey);\n if (dsUrl && newDs !== dsUrl) {\n const currentUrl = location.pathname + location.search;\n search.set(datasourceUrlKey, newDs);\n const newUrl = location.pathname + '?' + search.toString();\n if (currentUrl !== newUrl) {\n pushUrlHandler(newUrl);\n }\n }\n }\n\n /**\n * Attempting to add any change to the primary label variable (i.e. the selected tab) as a browser history event\n * @param newKey\n * @param replace\n */\n addLabelChangeToBrowserHistory(newKey: string, replace = false) {\n const { key: primaryLabelRaw, search, location } = getSelectedTabFromUrl();\n if (primaryLabelRaw) {\n const primaryLabelSplit = primaryLabelRaw?.split('|');\n const keyInUrl = primaryLabelSplit?.[0];\n\n if (keyInUrl !== newKey) {\n primaryLabelSplit[0] = newKey;\n search.set(primaryLabelUrlKey, primaryLabelSplit.join('|'));\n const currentUrl = location.pathname + location.search;\n const newUrl = location.pathname + '?' + search.toString();\n if (currentUrl !== newUrl) {\n if (replace) {\n locationService.replace(newUrl);\n } else {\n pushUrlHandler(newUrl);\n }\n }\n }\n }\n }\n\n getSelectedTab() {\n return getServiceSelectionPrimaryLabel(this).state.filters[0]?.key;\n }\n\n selectDefaultLabelTab() {\n // Need to update the history before the state with replace instead of push, or we'll get invalid services saved to url state after changing datasource\n this.addLabelChangeToBrowserHistory(SERVICE_NAME, true);\n this.setSelectedTab(SERVICE_NAME);\n }\n\n setSelectedTab(labelName: string) {\n addTabToLocalStorage(getDataSourceVariable(this).getValue().toString(), labelName);\n\n // clear active search\n clearServiceSelectionSearchVariable(this);\n\n // Update the primary label variable\n setServiceSelectionPrimaryLabelKey(labelName, this);\n }\n\n // Creates a layout with timeseries panel\n buildServiceLayout(\n primaryLabelName: string,\n primaryLabelValue: string,\n timeRange: TimeRange,\n serviceLabelVar: CustomConstantVariable,\n primaryLabelVar: AdHocFiltersVariable,\n datasourceVar: DataSourceVariable\n ) {\n let splitDuration;\n if (timeRange.to.diff(timeRange.from, 'hours') >= 4 && timeRange.to.diff(timeRange.from, 'hours') <= 26) {\n splitDuration = '2h';\n }\n const panel = PanelBuilders.timeseries()\n // If service was previously selected, we show it in the title\n .setTitle(primaryLabelValue)\n .setData(\n getQueryRunner(\n [\n buildDataQuery(this.getMetricExpression(primaryLabelValue, serviceLabelVar, primaryLabelVar), {\n legendFormat: `{{${LEVEL_VARIABLE_VALUE}}}`,\n splitDuration,\n refId: `ts-${primaryLabelValue}`,\n step: serviceLabelVar.state.value === AGGREGATED_SERVICE_NAME ? '10s' : undefined,\n }),\n ],\n { runQueriesMode: 'manual' }\n )\n )\n .setCustomFieldConfig('stacking', { mode: StackingMode.Normal })\n .setCustomFieldConfig('fillOpacity', 100)\n .setCustomFieldConfig('lineWidth', 0)\n .setCustomFieldConfig('pointSize', 0)\n .setCustomFieldConfig('drawStyle', DrawStyle.Bars)\n .setUnit('short')\n .setOverrides(setLevelColorOverrides)\n .setOption('legend', {\n showLegend: true,\n calcs: ['sum'],\n placement: 'right',\n displayMode: LegendDisplayMode.Table,\n })\n .setHeaderActions([\n new FavoriteServiceHeaderActionScene({\n ds: datasourceVar.getValue()?.toString(),\n labelName: primaryLabelName,\n labelValue: primaryLabelValue,\n }),\n new AddLabelToFiltersHeaderActionScene({\n name: primaryLabelName,\n value: primaryLabelValue,\n hidden: this.isAggregatedMetricsActive(),\n }),\n new SelectServiceButton({ labelValue: primaryLabelValue, labelName: primaryLabelName }),\n ])\n .build();\n\n panel.setState({\n extendPanelContext: (_, context) =>\n this.extendTimeSeriesLegendBus(primaryLabelName, primaryLabelValue, context, panel),\n });\n\n const cssGridItem = new SceneCSSGridItem({\n $behaviors: [new behaviors.CursorSync({ key: 'serviceCrosshairSync', sync: DashboardCursorSync.Crosshair })],\n body: panel,\n });\n\n cssGridItem.addActivationHandler(() => {\n const runner = getQueryRunnerFromChildren(cssGridItem)[0];\n // If the query runner has already ran, the scene must be cached, don't re-run as the volume query will be triggered which will execute another panel query\n if (runner.state.data?.state !== LoadingState.Done) {\n this.runPanelQuery(cssGridItem);\n }\n });\n\n return cssGridItem;\n }\n\n isAggregatedMetricsActive() {\n const toolbar = this.getQueryOptionsToolbar();\n return !toolbar?.state.options.aggregatedMetrics.disabled && toolbar?.state.options.aggregatedMetrics.active;\n }\n\n getLevelFilterForService = (service: string) => {\n let serviceLevels = this.state.serviceLevel.get(service) || [];\n if (serviceLevels.length === 0) {\n return '';\n }\n const filters = serviceLevels.map((level) => {\n if (level === 'logs') {\n level = '';\n }\n return `${LEVEL_VARIABLE_VALUE}=\\`${level}\\``;\n });\n return ` | ${filters.join(' or ')} `;\n };\n\n // Creates a layout with logs panel\n buildServiceLogsLayout = (labelName: string, labelValue: string) => {\n const levelFilter = this.getLevelFilterForService(labelValue);\n const cssGridItem = new SceneCSSGridItem({\n $behaviors: [new behaviors.CursorSync({ sync: DashboardCursorSync.Off })],\n body: PanelBuilders.logs()\n // Hover header set to true removes unused header padding, displaying more logs\n .setHoverHeader(true)\n .setData(\n getQueryRunner(\n [\n buildDataQuery(this.getLogExpression(labelName, labelValue, levelFilter), {\n maxLines: 100,\n refId: `logs-${labelValue}`,\n }),\n ],\n {\n runQueriesMode: 'manual',\n }\n )\n )\n .setTitle(labelValue)\n .setOption('showTime', true)\n .setOption('enableLogDetails', false)\n .build(),\n });\n\n cssGridItem.addActivationHandler(() => {\n const runner = getQueryRunnerFromChildren(cssGridItem)[0];\n // If the query runner has already ran, the scene must be cached, don't re-run as the volume query will be triggered which will execute another panel query\n if (runner.state.data?.state !== LoadingState.Done) {\n this.runPanelQuery(cssGridItem);\n }\n });\n\n return cssGridItem;\n };\n\n formatPrimaryLabelForUI() {\n const selectedTab = this.getSelectedTab();\n return selectedTab === SERVICE_NAME ? SERVICE_UI_LABEL : selectedTab;\n }\n\n private setVolumeQueryRunner() {\n this.setState({\n $data: getSceneQueryRunner({\n queries: [\n buildVolumeQuery(`{${VAR_PRIMARY_LABEL_EXPR}, ${VAR_LABELS_REPLICA_EXPR}}`, 'volume', this.getSelectedTab()),\n ],\n runQueriesMode: 'manual',\n }),\n });\n\n // Need to re-init any subscriptions since we changed the query runner\n this.subscribeToVolume();\n }\n\n private doVariablesNeedSync() {\n const labelsVarPrimary = getLabelsVariable(this);\n const labelsVarReplica = getLabelsVariableReplica(this);\n\n const activeTab = this.getSelectedTab();\n const filteredFilters = labelsVarPrimary.state.filters.filter((f) => f.key !== activeTab);\n\n return { filters: filteredFilters, needsSync: !areArraysEqual(filteredFilters, labelsVarReplica.state.filters) };\n }\n\n private syncVariables() {\n const labelsVarReplica = getLabelsVariableReplica(this);\n\n const { filters, needsSync } = this.doVariablesNeedSync();\n if (needsSync) {\n labelsVarReplica.setState({ filters });\n }\n }\n\n private onActivate() {\n this.fixRequiredUrlParams();\n\n // Sync initial state from primary labels to local replica\n this.syncVariables();\n\n // Clear existing volume data on activate or we'll show stale cached data, potentially from a different datasource\n this.setVolumeQueryRunner();\n\n // Subscribe to primary labels for further updates\n this.subscribeToPrimaryLabelsVariable();\n\n // Subscribe to variables replica\n this.subscribeToLabelFilterChanges();\n\n // Subscribe to tab changes (primary label)\n this.subscribeToActiveTabVariable(getServiceSelectionPrimaryLabel(this));\n\n if (this.state.$data.state.data?.state !== LoadingState.Done) {\n this.runVolumeOnActivate();\n }\n\n // Update labels on time range change\n this.subscribeToTimeRange();\n\n // Update labels on datasource change\n this.subscribeToDatasource();\n\n this.subscribeToAggregatedMetricToggle();\n\n this.subscribeToAggregatedMetricVariable();\n }\n\n private runVolumeOnActivate() {\n if (this.isTimeRangeTooEarlyForAggMetrics()) {\n this.onUnsupportedAggregatedMetricTimeRange();\n if (this.state.$data.state.data?.state !== LoadingState.Done) {\n this.runVolumeQuery();\n }\n } else {\n this.onSupportedAggregatedMetricTimeRange();\n if (this.state.$data.state.data?.state !== LoadingState.Done) {\n this.runVolumeQuery();\n }\n }\n }\n\n private subscribeToAggregatedMetricToggle() {\n this._subs.add(\n this.getQueryOptionsToolbar()?.subscribeToState((newState, prevState) => {\n if (newState.options.aggregatedMetrics.userOverride !== prevState.options.aggregatedMetrics.userOverride) {\n this.runVolumeQuery(true);\n }\n })\n );\n }\n\n private subscribeToDatasource() {\n this._subs.add(\n getDataSourceVariable(this).subscribeToState((newState) => {\n this.addDatasourceChangeToBrowserHistory(newState.value.toString());\n this.runVolumeQuery();\n })\n );\n }\n\n private subscribeToActiveTabVariable(primaryLabelVar: AdHocFiltersVariable) {\n this._subs.add(\n primaryLabelVar.subscribeToState((newState, prevState) => {\n if (newState.filterExpression !== prevState.filterExpression) {\n const newKey = newState.filters[0].key;\n this.addLabelChangeToBrowserHistory(newKey);\n // Need to tear down volume query runner to select other labels, as we need the selected tab to parse the volume response\n const { needsSync } = this.doVariablesNeedSync();\n\n if (needsSync) {\n this.syncVariables();\n } else {\n this.runVolumeQuery(true);\n }\n }\n })\n );\n }\n\n /**\n * agg metrics need parser and unwrap, have to tear down and rebuild panels when the variable changes\n * @private\n */\n private subscribeToAggregatedMetricVariable() {\n this._subs.add(\n getAggregatedMetricsVariable(this).subscribeToState((newState, prevState) => {\n if (newState.value !== prevState.value) {\n // Clear the body panels\n this.setState({\n body: new SceneCSSGridLayout({ children: [] }),\n });\n // And re-init with the new query\n this.updateBody(true);\n }\n })\n );\n }\n\n private subscribeToPrimaryLabelsVariable() {\n const labelsVarPrimary = getLabelsVariable(this);\n this._subs.add(\n labelsVarPrimary.subscribeToState((newState, prevState) => {\n if (!areArraysEqual(newState.filters, prevState.filters)) {\n this.syncVariables();\n }\n })\n );\n }\n\n private subscribeToLabelFilterChanges() {\n const labelsVar = getLabelsVariableReplica(this);\n this._subs.add(\n labelsVar.subscribeToState((newState, prevState) => {\n if (!areArraysEqual(newState.filters, prevState.filters)) {\n this.runVolumeQuery(true);\n }\n })\n );\n }\n\n private subscribeToVolume() {\n this._subs.add(\n this.state.$data.subscribeToState((newState, prevState) => {\n // update body if the data is done loading, and the dataframes have changed\n if (\n newState.data?.state === LoadingState.Done &&\n !areArraysEqual(prevState?.data?.series, newState?.data?.series)\n ) {\n this.updateBody(true);\n }\n })\n );\n }\n\n private subscribeToTimeRange() {\n this._subs.add(\n sceneGraph.getTimeRange(this).subscribeToState(() => {\n if (this.isTimeRangeTooEarlyForAggMetrics()) {\n this.onUnsupportedAggregatedMetricTimeRange();\n } else {\n this.onSupportedAggregatedMetricTimeRange();\n }\n this.runVolumeQuery();\n })\n );\n }\n\n /**\n * If the user copies a partial URL we want to prevent throwing runtime errors or running invalid queries, so we set the default tab which will trigger updates to the primary_label\n * @private\n */\n private fixRequiredUrlParams() {\n // If the selected tab is not in the URL, set the default\n const { key } = getSelectedTabFromUrl();\n if (!key) {\n this.selectDefaultLabelTab();\n }\n }\n\n private isTimeRangeTooEarlyForAggMetrics(): boolean {\n const timeRange = sceneGraph.getTimeRange(this);\n return timeRange.state.value.from.isBefore(dateTime(AGGREGATED_METRIC_START_DATE));\n }\n\n private onUnsupportedAggregatedMetricTimeRange() {\n const toolbar = this.getQueryOptionsToolbar();\n toolbar?.setState({\n options: {\n aggregatedMetrics: {\n ...toolbar?.state.options.aggregatedMetrics,\n disabled: true,\n },\n },\n });\n }\n\n private getQueryOptionsToolbar() {\n const indexScene = sceneGraph.getAncestor(this, IndexScene);\n return indexScene.state.controls.find((control) => control instanceof ToolbarScene) as ToolbarScene | undefined;\n }\n\n private onSupportedAggregatedMetricTimeRange() {\n const toolbar = this.getQueryOptionsToolbar();\n toolbar?.setState({\n options: {\n aggregatedMetrics: {\n ...toolbar?.state.options.aggregatedMetrics,\n disabled: false,\n },\n },\n });\n }\n\n /**\n * Executes the Volume API call\n * @param resetQueryRunner - optional param which will replace the query runner state with a new instantiation\n * @private\n */\n private runVolumeQuery(resetQueryRunner = false) {\n if (resetQueryRunner) {\n this.setVolumeQueryRunner();\n }\n\n this.updateAggregatedMetricVariable();\n this.state.$data.runQueries();\n }\n\n private updateAggregatedMetricVariable() {\n const serviceLabelVar = getAggregatedMetricsVariable(this);\n const labelsVar = getLabelsVariable(this);\n if ((!this.isTimeRangeTooEarlyForAggMetrics() || !aggregatedMetricsEnabled) && this.isAggregatedMetricsActive()) {\n serviceLabelVar.changeValueTo(AGGREGATED_SERVICE_NAME);\n\n // Hide combobox and reset filters if aggregated metrics is enabled\n labelsVar.setState({\n hide: VariableHide.hideVariable,\n filters: [],\n });\n\n // Hide the show logs button\n const showLogsButton = sceneGraph.findByKeyAndType(this, showLogsButtonSceneKey, ShowLogsButtonScene);\n showLogsButton.setState({ hidden: true });\n } else {\n serviceLabelVar.changeValueTo(SERVICE_NAME);\n // Show combobox if not aggregated metrics\n labelsVar.setState({\n hide: VariableHide.dontHide,\n });\n serviceLabelVar.changeValueTo(SERVICE_NAME);\n\n // Show the show logs button\n const showLogsButton = sceneGraph.findByKeyAndType(this, showLogsButtonSceneKey, ShowLogsButtonScene);\n showLogsButton.setState({ hidden: false });\n }\n }\n\n private updateTabs() {\n if (!this.state.tabs) {\n const tabs = new ServiceSelectionTabsScene({});\n this.setState({\n tabs,\n });\n }\n }\n\n private getGridItems(): SceneCSSGridItem[] {\n return this.state.body.state.children as SceneCSSGridItem[];\n }\n\n private getVizPanel(child: SceneCSSGridItem) {\n return child.state.body instanceof VizPanel ? child.state.body : undefined;\n }\n\n /**\n * Runs logs/volume panel queries if lazy loaded grid item is active\n * @param child\n * @private\n */\n private runPanelQuery(child: SceneCSSGridItem) {\n if (child.isActive) {\n const queryRunners = getQueryRunnerFromChildren(child);\n if (queryRunners.length === 1) {\n const queryRunner = queryRunners[0];\n const query = queryRunner.state.queries[0];\n\n // If the scene was cached, the time range will still be the same as what was executed in the query\n const requestTimeRange = queryRunner.state.data?.timeRange;\n const sceneTimeRange = sceneGraph.getTimeRange(this);\n const fromDiff = requestTimeRange\n ? Math.abs(sceneTimeRange.state.value.from.diff(requestTimeRange?.from, 's'))\n : Infinity;\n const toDiff = requestTimeRange\n ? Math.abs(sceneTimeRange.state.value.to.diff(requestTimeRange?.to, 's'))\n : Infinity;\n\n const interpolated = sceneGraph.interpolate(this, query.expr);\n // If we haven't already run this exact same query, run it\n if (queryRunner.state.key !== interpolated || fromDiff > 0 || toDiff > 0) {\n queryRunner.setState({\n key: interpolated,\n });\n queryRunner.runQueries();\n }\n }\n }\n }\n\n public updateBody(runQueries = false) {\n const { labelsToQuery } = this.getLabels(this.state.$data.state.data?.series);\n const selectedTab = this.getSelectedTab();\n this.updateTabs();\n\n if (!this.state.paginationScene) {\n this.setState({\n paginationScene: new ServiceSelectionPaginationScene({}),\n });\n }\n\n // If no services are to be queried, clear the body\n if (!labelsToQuery || labelsToQuery.length === 0) {\n this.state.body.setState({ children: [] });\n } else {\n // If we have services to query, build the layout with the services. Children is an array of layouts for each service (1 row with 2 columns - timeseries and logs panel)\n const newChildren: SceneCSSGridItem[] = [];\n const existingChildren = this.getGridItems();\n const timeRange = sceneGraph.getTimeRange(this).state.value;\n const aggregatedMetricsVariable = getAggregatedMetricsVariable(this);\n const primaryLabelVar = getServiceSelectionPrimaryLabel(this);\n const datasourceVariable = getDataSourceVariable(this);\n\n const start = (this.state.currentPage - 1) * this.state.countPerPage;\n const end = start + this.state.countPerPage;\n\n for (const primaryLabelValue of labelsToQuery.slice(start, end)) {\n const existing = existingChildren.filter((child) => {\n const vizPanel = this.getVizPanel(child);\n return vizPanel?.state.title === primaryLabelValue;\n });\n\n if (existing.length === 2) {\n // If we already have grid items for this service, move them over to the new array of children, this will preserve their queryRunners, preventing duplicate queries from getting run\n newChildren.push(existing[0], existing[1]);\n\n if (existing[0].isActive && runQueries) {\n this.runPanelQuery(existing[0]);\n }\n\n if (existing[1].isActive && runQueries) {\n this.runPanelQuery(existing[1]);\n }\n } else {\n const newChildTs = this.buildServiceLayout(\n selectedTab,\n primaryLabelValue,\n timeRange,\n aggregatedMetricsVariable,\n primaryLabelVar,\n datasourceVariable\n );\n const newChildLogs = this.buildServiceLogsLayout(selectedTab, primaryLabelValue);\n // for each service, we create a layout with timeseries and logs panel\n newChildren.push(newChildTs, newChildLogs);\n }\n }\n\n this.state.body.setState({\n children: newChildren,\n isLazy: true,\n templateColumns: 'repeat(auto-fit, minmax(500px, 1fr) minmax(300px, 70vw))',\n autoRows: '200px',\n md: {\n templateColumns: '1fr',\n rowGap: 1,\n columnGap: 1,\n },\n });\n }\n }\n\n /**\n * Redraws service logs after toggling level visibility.\n */\n private updateServiceLogs(labelName: string, labelValue: string) {\n if (!this.state.body) {\n this.updateBody();\n return;\n }\n const { labelsToQuery } = this.getLabels(this.state.$data.state.data?.series);\n const serviceIndex = labelsToQuery?.indexOf(labelValue);\n if (serviceIndex === undefined || serviceIndex < 0) {\n return;\n }\n let newChildren = [...this.getGridItems()];\n newChildren.splice(serviceIndex * 2 + 1, 1, this.buildServiceLogsLayout(labelName, labelValue));\n this.state.body.setState({ children: newChildren });\n }\n\n private getLogExpression(labelName: string, labelValue: string, levelFilter: string) {\n return `{${labelName}=\\`${labelValue}\\` , ${VAR_LABELS_REPLICA_EXPR} }${levelFilter}`;\n }\n\n private getMetricExpression(\n labelValue: string,\n serviceLabelVar: CustomConstantVariable,\n primaryLabelVar: AdHocFiltersVariable\n ) {\n const filter = primaryLabelVar.state.filters[0];\n if (serviceLabelVar.state.value === AGGREGATED_SERVICE_NAME) {\n if (filter.key === SERVICE_NAME) {\n return `sum by (${LEVEL_VARIABLE_VALUE}) (sum_over_time({${AGGREGATED_SERVICE_NAME}=\\`${labelValue}\\` } | logfmt | unwrap count [$__auto]))`;\n } else {\n return `sum by (${LEVEL_VARIABLE_VALUE}) (sum_over_time({${AGGREGATED_SERVICE_NAME}=~\\`.+\\` } | logfmt | ${filter.key}=\\`${labelValue}\\` | unwrap count [$__auto]))`;\n }\n }\n return `sum by (${LEVEL_VARIABLE_VALUE}) (count_over_time({ ${filter.key}=\\`${labelValue}\\`, ${VAR_LABELS_REPLICA_EXPR} } [$__auto]))`;\n }\n\n private extendTimeSeriesLegendBus = (\n labelName: string,\n labelValue: string,\n context: PanelContext,\n panel: VizPanel\n ) => {\n const originalOnToggleSeriesVisibility = context.onToggleSeriesVisibility;\n\n context.onToggleSeriesVisibility = (level: string, mode: SeriesVisibilityChangeMode) => {\n originalOnToggleSeriesVisibility?.(level, mode);\n\n const allLevels = getLevelLabelsFromSeries(panel.state.$data?.state.data?.series ?? []);\n const levels = toggleLevelVisibility(level, this.state.serviceLevel.get(labelValue), mode, allLevels);\n this.state.serviceLevel.set(labelValue, levels);\n\n this.updateServiceLogs(labelName, labelValue);\n };\n };\n\n private getLabels(series?: DataFrame[]) {\n const labelsByVolume: string[] = series?.[0]?.fields[0].values ?? [];\n const dsString = getDataSourceVariable(this).getValue()?.toString();\n const searchString = getServiceSelectionSearchVariable(this).getValue();\n const selectedTab = this.getSelectedTab();\n const labelsToQuery = createListOfLabelsToQuery(labelsByVolume, dsString, String(searchString), selectedTab);\n return { labelsByVolume, labelsToQuery: labelsToQuery };\n }\n}\n\n// Create a list of services to query:\n// 1. Filters provided services by searchString\n// 2. Gets favoriteServicesToQuery from localStorage and filters them by searchString\n// 3. Orders them correctly\nfunction createListOfLabelsToQuery(services: string[], ds: string, searchString: string, labelName: string) {\n if (!services?.length) {\n return [];\n }\n\n if (searchString === '.+') {\n searchString = '';\n }\n\n const favoriteServicesToQuery = getFavoriteLabelValuesFromStorage(ds, labelName).filter(\n (service) => service.toLowerCase().includes(searchString.toLowerCase()) && services.includes(service)\n );\n\n // Deduplicate\n return Array.from(new Set([...favoriteServicesToQuery, ...services]));\n}\n\nfunction getSelectedTabFromUrl() {\n const location = locationService.getLocation();\n const search = new URLSearchParams(location.search);\n const primaryLabelRaw = search.get(primaryLabelUrlKey);\n const primaryLabelSplit = primaryLabelRaw?.split('|');\n const key = primaryLabelSplit?.[0];\n return { key, search, location };\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n container: css({\n display: 'flex',\n flexDirection: 'column',\n flexGrow: 1,\n position: 'relative',\n }),\n headingWrapper: css({\n marginTop: theme.spacing(1),\n }),\n loadingText: css({\n margin: 0,\n }),\n header: css({\n position: 'absolute',\n right: 0,\n top: '4px',\n zIndex: 2,\n }),\n bodyWrapper: css({\n flexGrow: 1,\n display: 'flex',\n flexDirection: 'column',\n }),\n body: css({\n flexGrow: 1,\n display: 'flex',\n flexDirection: 'column',\n }),\n searchPaginationWrap: css({\n label: 'search-pagination-wrap',\n display: 'flex',\n alignItems: 'center',\n flexWrap: 'wrap',\n flex: '1 0 auto',\n [theme.breakpoints.down('md')]: {\n marginTop: theme.spacing(1),\n width: '100%',\n },\n }),\n searchWrapper: css({\n label: 'search-wrapper',\n display: 'flex',\n alignItems: 'center',\n flexWrap: 'wrap',\n [theme.breakpoints.down('md')]: {\n flexDirection: 'column',\n alignItems: 'flex-start',\n },\n }),\n searchField: css({\n marginTop: theme.spacing(1),\n position: 'relative',\n }),\n };\n}\n","import React from 'react';\nimport { RadioButtonGroup } from '@grafana/ui';\nimport { LogsVisualizationType } from 'services/store';\n\n/**\n * The options shared between logs and table panels\n * @param props\n * @constructor\n */\nexport function LogsPanelHeaderActions(props: {\n vizType: LogsVisualizationType;\n onChange: (type: LogsVisualizationType) => void;\n}) {\n return (\n \n );\n}\n","import { Observable, of } from 'rxjs';\nimport {\n MultiValueVariable,\n MultiValueVariableState,\n renderSelectForVariable,\n SceneComponentProps,\n VariableGetOptionsArgs,\n VariableValueOption,\n VariableValueSingle,\n} from '@grafana/scenes';\n\nexport interface CustomConstantVariableState extends MultiValueVariableState {\n value: VariableValueSingle;\n isMulti?: false;\n}\n\nexport class CustomConstantVariable extends MultiValueVariable {\n public constructor(initialState: Partial) {\n super({\n type: 'custom',\n value: '',\n text: '',\n options: [],\n name: '',\n ...initialState,\n });\n }\n\n public getValueOptions(args: VariableGetOptionsArgs): Observable {\n return of(this.state.options);\n }\n\n public static Component = ({ model }: SceneComponentProps) => {\n return renderSelectForVariable(model);\n };\n}\n","import { AdHocFilterWithLabels, sceneUtils } from '@grafana/scenes';\nimport { AdHocVariableFilter } from '@grafana/data';\nimport { FilterOp, FilterOpType, LabelFilterOp, NumericFilterOp } from './filterTypes';\nimport { Dictionary, groupBy, trim } from 'lodash';\nimport { EMPTY_VARIABLE_VALUE, isAdHocFilterValueUserInput, stripAdHocFilterUserInputPrefix } from './variables';\nimport { getValueFromFieldsFilter } from './variableGetters';\nimport { isOperatorExclusive, isOperatorInclusive, isOperatorNumeric, isOperatorRegex } from './operatorHelpers';\nimport { narrowFilterOperator } from './narrowing';\nimport { getExpressionBuilderDebug } from './store';\n\ntype Key = string;\ntype Value = string;\ntype CombinedFiltersValues = { operator: LabelFilterOp | NumericFilterOp; values: Value[] };\ntype CombinedFiltersValuesByKey = Record;\ntype CombinedOperatorFilters = Record;\ntype OperatorFilters = Record;\n\ninterface Options {\n /**\n * Sets debug output\n */\n debug?: boolean;\n\n /**\n * Separator between filters with different keys or operators\n */\n filterSeparator?: string;\n\n /**\n * Prefix of the logQL expression\n */\n prefix?: string;\n\n /**\n * Sets if match filters join values together in a regex filter\n * i.e. multiple filters with operators: '=' | '!=' => '=~' | '!~'\n */\n joinMatchFilters: boolean;\n\n /**\n * Sets if the values are JSON encoded\n */\n decodeFilters: boolean;\n\n /**\n * Keys to ignore\n */\n ignoreKeys?: string[];\n\n filterType: 'indexed' | 'field';\n}\n\nexport class ExpressionBuilder {\n private filters: AdHocFilterWithLabels[];\n private options: Options;\n private positiveFilterValueSeparator = 'or';\n private negativeFilterValueSeparator = '|';\n\n constructor(\n filters: AdHocFilterWithLabels[],\n options: Options = { joinMatchFilters: true, decodeFilters: false, filterType: 'field' }\n ) {\n this.filters = filters;\n this.options = options;\n if (!this.options.debug) {\n this.options.debug = getExpressionBuilderDebug();\n }\n }\n\n /**\n * Joins filters with same keys similar operators\n * e.g. {level=\"info\"}, {level=\"warn\"} => {level=~\"warn|info\"}\n */\n public getJoinedLabelsFilters(): AdHocFilterWithLabels[] {\n let { equalsFilters, notEqualsFilters, regexEqualFilters, regexNotEqualFilters } = this.getCombinedLabelFilters();\n const adHocFilters: AdHocFilterWithLabels[] = [];\n const filters = [equalsFilters, notEqualsFilters, regexEqualFilters, regexNotEqualFilters].filter(\n (filter) => filter\n );\n filters.forEach((operatorFilters) => {\n const joinedValues = this.joinCombinedFiltersValues(operatorFilters, '|');\n\n for (const key in operatorFilters) {\n const filter = operatorFilters[key];\n const operator = filter.operator;\n adHocFilters.push({ key, operator, value: joinedValues[key] });\n }\n });\n\n return adHocFilters;\n }\n\n /**\n * Returns logQL expression for AdHocFilterWithLabels[]\n * Merges multiple include matches into regex\n */\n protected getExpr(): string {\n let {\n equalsFilters,\n notEqualsFilters,\n regexEqualFilters,\n regexNotEqualFilters,\n ltFilters,\n lteFilters,\n gtFilters,\n gteFilters,\n } = this.getCombinedLabelFilters();\n\n if (this.options.debug) {\n console.info('combined filters after merge', {\n equalsFilters,\n notEqualsFilters,\n regexEqualFilters,\n regexNotEqualFilters,\n ltFilters,\n lteFilters,\n gtFilters,\n gteFilters,\n });\n }\n\n const filtersString = this.buildLabelsLogQLFromFilters({\n equalsFilters,\n notEqualsFilters,\n regexEqualFilters,\n regexNotEqualFilters,\n ltFilters,\n lteFilters,\n gtFilters,\n gteFilters,\n });\n\n if (filtersString) {\n // Append prefix if defined\n return (this.options.prefix ?? '') + filtersString;\n }\n\n return '';\n }\n\n public getLabelsExpr(options?: Partial): string {\n const defaultOptions: Options = { joinMatchFilters: true, decodeFilters: false, filterType: 'indexed' };\n this.options = { ...defaultOptions, ...options };\n return this.getExpr();\n }\n\n /**\n * Returns merged filters separated by pipe\n */\n public getMetadataExpr(options?: Partial): string {\n const defaultOptions: Options = {\n filterSeparator: ' |',\n prefix: '| ',\n joinMatchFilters: false,\n decodeFilters: false,\n filterType: 'field',\n };\n this.options = { ...defaultOptions, ...options };\n return this.getExpr();\n }\n\n /**\n * Same as metadata, but only include operators supported\n */\n public getLevelsExpr(options?: Partial): string {\n const defaultOptions: Options = {\n filterSeparator: ' |',\n prefix: '| ',\n joinMatchFilters: false,\n decodeFilters: false,\n filterType: 'field',\n };\n\n this.options = { ...defaultOptions, ...options };\n return this.getExpr();\n }\n\n /**\n * Returns merged filters separated by pipe\n * JSON encodes value\n */\n public getFieldsExpr(options?: Partial): string {\n const defaultOptions: Options = {\n filterSeparator: ' |',\n prefix: '| ',\n joinMatchFilters: false,\n decodeFilters: true,\n filterType: 'field',\n };\n this.options = { ...defaultOptions, ...options };\n return this.getExpr();\n }\n\n /**\n * Transforms joined field value objects into logQL strings\n */\n private buildLabelsLogQLFromFilters({\n equalsFilters,\n notEqualsFilters,\n regexEqualFilters,\n regexNotEqualFilters,\n ltFilters,\n lteFilters,\n gtFilters,\n gteFilters,\n }: {\n equalsFilters: CombinedFiltersValuesByKey | undefined;\n notEqualsFilters: CombinedFiltersValuesByKey | undefined;\n regexEqualFilters: CombinedFiltersValuesByKey | undefined;\n regexNotEqualFilters: CombinedFiltersValuesByKey | undefined;\n ltFilters: CombinedFiltersValuesByKey | undefined;\n lteFilters: CombinedFiltersValuesByKey | undefined;\n gtFilters: CombinedFiltersValuesByKey | undefined;\n gteFilters: CombinedFiltersValuesByKey | undefined;\n }) {\n let equalFiltersStrings: CombinedOperatorFilters | OperatorFilters;\n let notEqualsFiltersStrings: CombinedOperatorFilters | OperatorFilters;\n let regexEqualFiltersStrings: CombinedOperatorFilters | OperatorFilters;\n let regexNotEqualFiltersStrings: CombinedOperatorFilters | OperatorFilters;\n let ltFiltersStrings: OperatorFilters;\n let lteFiltersStrings: OperatorFilters;\n let gtFiltersStrings: OperatorFilters;\n let gteFiltersStrings: OperatorFilters;\n\n // Build the LogQL filters\n const allFilters: string[] = [];\n\n if (this.options.joinMatchFilters) {\n // Join values arrays for all keys with \"|\" char\n equalFiltersStrings = this.joinCombinedFiltersValues(equalsFilters, '|');\n notEqualsFiltersStrings = this.joinCombinedFiltersValues(notEqualsFilters, '|');\n regexEqualFiltersStrings = this.joinCombinedFiltersValues(regexEqualFilters, '|');\n regexNotEqualFiltersStrings = this.joinCombinedFiltersValues(regexNotEqualFilters, '|');\n\n allFilters.push(...this.buildJoinedFilters(equalFiltersStrings, LabelFilterOp.Equal));\n allFilters.push(...this.buildJoinedFilters(notEqualsFiltersStrings, LabelFilterOp.NotEqual));\n allFilters.push(...this.buildJoinedFilters(regexEqualFiltersStrings, LabelFilterOp.RegexEqual));\n allFilters.push(...this.buildJoinedFilters(regexNotEqualFiltersStrings, LabelFilterOp.RegexNotEqual));\n } else {\n // Do not join filters\n equalFiltersStrings = this.getFilterValues(equalsFilters);\n notEqualsFiltersStrings = this.getFilterValues(notEqualsFilters);\n regexEqualFiltersStrings = this.getFilterValues(regexEqualFilters);\n regexNotEqualFiltersStrings = this.getFilterValues(regexNotEqualFilters);\n\n allFilters.push(...this.buildFilter(equalFiltersStrings, LabelFilterOp.Equal));\n allFilters.push(...this.buildFilter(notEqualsFiltersStrings, LabelFilterOp.NotEqual));\n allFilters.push(...this.buildFilter(regexEqualFiltersStrings, LabelFilterOp.RegexEqual));\n allFilters.push(...this.buildFilter(regexNotEqualFiltersStrings, LabelFilterOp.RegexNotEqual));\n }\n\n // //Numeric fields are never joined\n ltFiltersStrings = this.getFilterValues(ltFilters);\n lteFiltersStrings = this.getFilterValues(lteFilters);\n gtFiltersStrings = this.getFilterValues(gtFilters);\n gteFiltersStrings = this.getFilterValues(gteFilters);\n\n allFilters.push(...this.buildFilter(ltFiltersStrings, NumericFilterOp.lt));\n allFilters.push(...this.buildFilter(lteFiltersStrings, NumericFilterOp.lte));\n allFilters.push(...this.buildFilter(gtFiltersStrings, NumericFilterOp.gt));\n allFilters.push(...this.buildFilter(gteFiltersStrings, NumericFilterOp.gte));\n\n if (this.options.debug) {\n console.info('combined filters after stringify', {\n equalFiltersStrings,\n notEqualsFiltersStrings,\n regexEqualFiltersStrings,\n regexNotEqualFiltersStrings,\n ltFiltersStrings,\n lteFiltersStrings,\n gtFiltersStrings,\n gteFiltersStrings,\n allFilters,\n });\n }\n\n // Create the final output string by joining filters with filterSeparator char\n const allFiltersString = trim(this.combineValues(allFilters, `${this.options.filterSeparator ?? ','} `));\n\n if (this.options.debug) {\n console.info('DEBUG labels expr', { allFiltersString });\n }\n\n return allFiltersString;\n }\n\n /**\n * Group filter values by key\n */\n private getCombinedLabelFilters() {\n // Group filters by operator and key\n const {\n [LabelFilterOp.Equal]: equal,\n [LabelFilterOp.NotEqual]: notEqual,\n [LabelFilterOp.RegexEqual]: regexEqual,\n [LabelFilterOp.RegexNotEqual]: regexNotEqual,\n [NumericFilterOp.lt]: lt,\n [NumericFilterOp.lte]: lte,\n [NumericFilterOp.gt]: gt,\n [NumericFilterOp.gte]: gte,\n } = this.groupFiltersByKey(this.filters);\n\n let equalsFilters: CombinedFiltersValuesByKey | undefined;\n let notEqualsFilters: CombinedFiltersValuesByKey | undefined;\n let regexEqualFilters: CombinedFiltersValuesByKey | undefined;\n let regexNotEqualFilters: CombinedFiltersValuesByKey | undefined;\n\n let ltFilters: CombinedFiltersValuesByKey | undefined;\n let lteFilters: CombinedFiltersValuesByKey | undefined;\n let gtFilters: CombinedFiltersValuesByKey | undefined;\n let gteFilters: CombinedFiltersValuesByKey | undefined;\n\n // Escape values and combine filters by key and operator, multiple non-regex operations are returned under a different operator\n if (this.options.joinMatchFilters) {\n equalsFilters = this.combineFiltersValues(equal, LabelFilterOp.RegexEqual);\n notEqualsFilters = this.combineFiltersValues(notEqual, LabelFilterOp.RegexNotEqual);\n regexEqualFilters = this.combineFiltersValues(regexEqual);\n regexNotEqualFilters = this.combineFiltersValues(regexNotEqual);\n } else {\n equalsFilters = this.combineFiltersValues(equal);\n notEqualsFilters = this.combineFiltersValues(notEqual);\n regexEqualFilters = this.combineFiltersValues(regexEqual);\n regexNotEqualFilters = this.combineFiltersValues(regexNotEqual);\n }\n\n // Numeric filters are never combined\n ltFilters = this.combineFiltersValues(lt);\n lteFilters = this.combineFiltersValues(lte);\n gtFilters = this.combineFiltersValues(gt);\n gteFilters = this.combineFiltersValues(gte);\n\n if (this.options.debug) {\n console.info('combined filters', {\n equalsFilters,\n notEqualsFilters,\n regexEqualFilters,\n regexNotEqualFilters,\n });\n }\n\n if (this.options.joinMatchFilters) {\n // If we changed the operation, merge the values and remove the stale operator from the object\n if (equalsFilters) {\n regexEqualFilters = this.mergeFilters(LabelFilterOp.RegexEqual, equalsFilters, regexEqualFilters);\n equalsFilters = this.removeStaleOperators(equalsFilters, LabelFilterOp.Equal);\n }\n if (notEqualsFilters) {\n regexNotEqualFilters = this.mergeFilters(LabelFilterOp.RegexNotEqual, notEqualsFilters, regexNotEqualFilters);\n notEqualsFilters = this.removeStaleOperators(notEqualsFilters, LabelFilterOp.NotEqual);\n }\n }\n\n return {\n equalsFilters,\n notEqualsFilters,\n regexEqualFilters,\n regexNotEqualFilters,\n ltFilters,\n lteFilters,\n gtFilters,\n gteFilters,\n };\n }\n\n /**\n * Transforms values grouped by key to logQL filter strings\n */\n private buildFilter(filters: OperatorFilters, operator: LabelFilterOp | NumericFilterOp): string[] {\n const filterStrings: string[] = [];\n\n for (const key in filters) {\n const filtersWithSameOperatorsAndKeys: string[] = [];\n const values = filters[key];\n if (isOperatorNumeric(operator)) {\n values.forEach((value) =>\n filtersWithSameOperatorsAndKeys.push(this.buildFilterString(key, operator, value, ''))\n );\n } else {\n values.forEach((value) => filtersWithSameOperatorsAndKeys.push(this.buildFilterString(key, operator, value)));\n }\n\n if (isOperatorInclusive(operator)) {\n filterStrings.push(filtersWithSameOperatorsAndKeys.join(` ${this.positiveFilterValueSeparator} `));\n } else {\n filterStrings.push(filtersWithSameOperatorsAndKeys.join(` ${this.negativeFilterValueSeparator} `));\n }\n }\n\n return filterStrings;\n }\n\n /**\n * Transforms escaped & concatenated values into strings grouped by key to logQL filter strings\n */\n private buildJoinedFilters(equalFiltersStrings: CombinedOperatorFilters, operator: LabelFilterOp) {\n const filterStrings = [];\n for (const key in equalFiltersStrings) {\n filterStrings.push(this.buildFilterString(key, operator, equalFiltersStrings[key]));\n }\n return filterStrings;\n }\n\n /**\n * Cleans up CombinedFiltersValuesByKey if the operator was transformed\n */\n private removeStaleOperators(filters: CombinedFiltersValuesByKey, expectedOperator: LabelFilterOp) {\n const result: CombinedFiltersValuesByKey = {};\n Object.keys(filters).forEach((key) => {\n if (filters[key].operator === expectedOperator) {\n result[key] = filters[key];\n }\n });\n return result;\n }\n\n /**\n * Merges filters grouped by key from one operator group to another\n */\n private mergeFilters(\n operatorTo: LabelFilterOp,\n filtersFrom: CombinedFiltersValuesByKey,\n filtersTo: CombinedFiltersValuesByKey | undefined\n ) {\n const convertedEqualsFilters = Object.keys(filtersFrom)\n .filter((key) => filtersFrom[key].operator === operatorTo)\n .map((key) => ({ values: filtersFrom[key].values, key }));\n\n convertedEqualsFilters.forEach((valuesToMove) => {\n if (filtersTo === undefined) {\n filtersTo = { [valuesToMove.key]: { values: [], operator: operatorTo } };\n }\n if (filtersTo[valuesToMove.key] === undefined) {\n filtersTo[valuesToMove.key] = { values: [], operator: operatorTo };\n }\n filtersTo[valuesToMove.key].values.push(\n ...this.mergeCombinedFiltersValues(filtersFrom[valuesToMove.key], operatorTo)\n );\n });\n return filtersTo;\n }\n\n /**\n * Merges values for a single filter key\n */\n private mergeCombinedFiltersValues(filtersFrom: CombinedFiltersValues, operatorTo: LabelFilterOp) {\n const values: string[] = [];\n if (filtersFrom.operator === operatorTo && filtersFrom.values?.length) {\n values.push(...filtersFrom.values);\n }\n return values;\n }\n\n /**\n * Iterates through all keys in an operator group and combines values with separator\n */\n private joinCombinedFiltersValues(\n filters: CombinedFiltersValuesByKey | undefined,\n separator: string\n ): CombinedOperatorFilters {\n const filterCombinedValues: CombinedOperatorFilters = {};\n for (const key in filters) {\n if (!filters[key].values.length) {\n continue;\n }\n\n filterCombinedValues[key] = this.combineValues(filters[key].values, separator);\n }\n\n return filterCombinedValues;\n }\n\n /**\n * Iterates through key groups and transforms filter values to key => values object\n */\n private getFilterValues(filters: CombinedFiltersValuesByKey | undefined): OperatorFilters {\n const filterValues: OperatorFilters = {};\n for (const key in filters) {\n if (!filters[key].values.length) {\n continue;\n }\n\n filterValues[key] = filters[key].values;\n }\n\n return filterValues;\n }\n\n /**\n * Combines an array of values by separator\n * Completely unnecessary wrapper of join\n */\n private combineValues(values: string[], separator: string) {\n return values.join(`${separator}`);\n }\n\n /**\n * Combines and escapes values with the same operator, note assumes every filter has the same operator\n * If multipleValuesOperator is set, multiple values will be combined into a single filter to use that operator in the output\n * @param filtersByKey\n * @param multipleValuesOperator\n * @private\n */\n private combineFiltersValues(\n filtersByKey: Dictionary,\n multipleValuesOperator?: LabelFilterOp\n ): CombinedFiltersValuesByKey | undefined {\n let updatedOperatorAndEscapedValues: CombinedFiltersValuesByKey = {};\n\n for (const key in filtersByKey) {\n if (!filtersByKey[key].length) {\n continue;\n }\n\n const currentOperator = narrowFilterOperator(filtersByKey[key][0].operator);\n const updatedOperator = multipleValuesOperator ?? currentOperator;\n const firstFilter = filtersByKey[key][0];\n\n updatedOperatorAndEscapedValues[key] = { values: [], operator: updatedOperator };\n\n // Only one value for this key\n if (filtersByKey[key].length === 1) {\n const filterString = this.escapeFieldValue(\n firstFilter.operator,\n firstFilter.value,\n firstFilter.valueLabels ?? []\n );\n updatedOperatorAndEscapedValues[key] = { operator: currentOperator, values: [filterString] };\n\n if (this.options.debug) {\n console.info('single value filter', { filter: firstFilter, filterString });\n }\n } else {\n const values = this.escapeFieldValues(key, filtersByKey, updatedOperator);\n if (updatedOperatorAndEscapedValues[key].operator === undefined) {\n updatedOperatorAndEscapedValues[key] = { operator: updatedOperator, values };\n } else {\n updatedOperatorAndEscapedValues[key].values?.push(...values);\n }\n }\n }\n\n return updatedOperatorAndEscapedValues;\n }\n\n /**\n * Iterates through all keys in a merged operator group and escapes the values\n */\n private escapeFieldValues(\n key: string,\n filtersByKey: Dictionary,\n updatedOperator: LabelFilterOp | NumericFilterOp\n ) {\n // Convert single operator to regex\n return filtersByKey[key].map((filter) =>\n this.escapeFieldValue(updatedOperator, filter.value, filter.valueLabels ?? [])\n );\n }\n\n /**\n * Escape field values:\n * If value is encoded, decode it\n * If value is empty, don't escape double quotes\n * If value is custom user input, strip prefix and don't escape special regex chars\n */\n private escapeFieldValue(operator: LabelFilterOp | string, value: string, valueLabels: string[]): string {\n const isUserInput = isAdHocFilterValueUserInput(value);\n\n // decode value\n if (this.options.decodeFilters) {\n const fieldObject = getValueFromFieldsFilter({ value, valueLabels });\n value = fieldObject.value;\n }\n\n if (value === EMPTY_VARIABLE_VALUE) {\n if (this.options.debug) {\n console.info('empty variable value, do not escape');\n }\n // Don't encode empty value\n return value;\n }\n\n if (isUserInput) {\n if (this.options.debug) {\n console.info('ESCAPE: user input - exact selector', {\n operator,\n value,\n result: sceneUtils.escapeLabelValueInExactSelector(stripAdHocFilterUserInputPrefix(value)),\n });\n }\n return sceneUtils.escapeLabelValueInExactSelector(stripAdHocFilterUserInputPrefix(value));\n }\n if (isOperatorRegex(operator)) {\n if (this.options.debug) {\n console.info('ESCAPE: regex selector', { operator, value });\n }\n return sceneUtils.escapeLabelValueInRegexSelector(value);\n }\n\n if (this.options.debug) {\n console.info('ESCAPE: exact selector', { operator, value });\n }\n\n return sceneUtils.escapeLabelValueInExactSelector(value);\n }\n\n /**\n * Builds logQL filter string.\n * Expects pre-escaped content\n * @private\n */\n private buildFilterString(key: string, operator: LabelFilterOp | string, rawValue: string, quoteChar = '\"') {\n if (rawValue === EMPTY_VARIABLE_VALUE) {\n return `${key}${operator}${rawValue}`;\n }\n\n const filterString = `${key}${operator}${quoteChar}${rawValue}${quoteChar}`;\n if (this.options.debug) {\n console.info('buildDoubleQuotedFilter', { filter: { key, operator, value: rawValue }, filterString });\n }\n\n return filterString;\n }\n\n /**\n * Groups all filters by operator and key\n */\n private groupFiltersByKey(filters: AdHocVariableFilter[]): Record> {\n let filteredFilters: AdHocVariableFilter[] = filters.filter(\n (f) => !this.options.ignoreKeys?.includes(f.key) || isOperatorRegex(f.operator)\n );\n\n // We need at least one inclusive filter\n if (this.options.filterType === 'indexed') {\n if (filteredFilters.length < 1) {\n filteredFilters = filters;\n }\n }\n\n const positiveMatch = filteredFilters.filter(\n (filter) => isOperatorInclusive(filter.operator) && !isOperatorRegex(filter.operator)\n );\n const positiveRegex = filteredFilters.filter(\n (filter) => isOperatorInclusive(filter.operator) && isOperatorRegex(filter.operator)\n );\n const negativeMatch = filteredFilters.filter(\n (filter) => isOperatorExclusive(filter.operator) && !isOperatorRegex(filter.operator)\n );\n const negativeRegex = filteredFilters.filter(\n (filter) => isOperatorExclusive(filter.operator) && isOperatorRegex(filter.operator)\n );\n const gt = filteredFilters.filter((filter) => filter.operator === FilterOp.gt);\n const gte = filteredFilters.filter((filter) => filter.operator === FilterOp.gte);\n const lt = filteredFilters.filter((filter) => filter.operator === FilterOp.lt);\n const lte = filteredFilters.filter((filter) => filter.operator === FilterOp.lte);\n\n // Field ops\n const positiveMatchGroup = groupBy(positiveMatch, (filter) => filter.key);\n const positiveRegexGroup = groupBy(positiveRegex, (filter) => filter.key);\n const negativeMatchGroup = groupBy(negativeMatch, (filter) => filter.key);\n const negativeRegexGroup = groupBy(negativeRegex, (filter) => filter.key);\n\n // Duration ops\n const gtGroup = groupBy(gt, (filter) => filter.key);\n const gteGroup = groupBy(gte, (filter) => filter.key);\n const ltGroup = groupBy(lt, (filter) => filter.key);\n const lteGroup = groupBy(lte, (filter) => filter.key);\n\n return {\n [FilterOp.Equal]: positiveMatchGroup,\n [FilterOp.RegexEqual]: positiveRegexGroup,\n [FilterOp.NotEqual]: negativeMatchGroup,\n [FilterOp.RegexNotEqual]: negativeRegexGroup,\n [FilterOp.gt]: gtGroup,\n [FilterOp.gte]: gteGroup,\n [FilterOp.lt]: ltGroup,\n [FilterOp.lte]: lteGroup,\n };\n }\n}\n","import { reportInteraction } from '@grafana/runtime';\nimport pluginJson from '../plugin.json';\n\n// Helper function to create a unique interaction name for analytics\nconst createInteractionName = (page: UserEventPagesType, action: string) => {\n return `${pluginJson.id.replace(/-/g, '_')}_${page}_${action}`;\n};\n\n// Runs reportInteraction with a standardized interaction name\nexport const reportAppInteraction = (\n page: UserEventPagesType,\n action: UserEventActionType,\n properties?: Record\n) => {\n reportInteraction(createInteractionName(page, action), properties);\n};\n\nexport const USER_EVENTS_PAGES = {\n service_selection: 'service_selection',\n service_details: 'service_details',\n all: 'all',\n} as const;\n\ntype UserEventPagesType = keyof typeof USER_EVENTS_PAGES;\ntype UserEventActionType =\n | keyof (typeof USER_EVENTS_ACTIONS)['service_selection']\n | keyof (typeof USER_EVENTS_ACTIONS)['service_details']\n | keyof (typeof USER_EVENTS_ACTIONS)['all'];\n\nexport const USER_EVENTS_ACTIONS = {\n [USER_EVENTS_PAGES.service_selection]: {\n // Searching for service using search input. Props: searchQueryLength, containsLevel\n search_services_changed: 'search_services_changed',\n // Selecting service. Props: service\n service_selected: 'service_selected',\n // Toggling aggregated metrics on/off\n aggregated_metrics_toggled: 'aggregated_metrics_toggled',\n add_to_filters: 'add_to_filters',\n },\n [USER_EVENTS_PAGES.service_details]: {\n open_in_explore_clicked: 'open_in_explore_clicked',\n // Selecting action view tab (logs/labels/fields/patterns). Props: newActionView, previousActionView\n action_view_changed: 'action_view_changed',\n // Clicking on \"Include\" button in time series panels. Used in multiple views. The view type is passed as a parameter. Props: filterType, key, isFilterDuplicate, filtersLength\n add_to_filters_in_breakdown_clicked: 'add_to_filters_in_breakdown_clicked',\n // Clicking on \"Select\" button button in time series panels. Used in multiple views.The view type is passed as a parameter. Props: field, previousField, view\n select_field_in_breakdown_clicked: 'select_field_in_breakdown_clicked',\n // Clicking on one of the levels in the Logs Volume panel\n level_in_logs_volume_clicked: 'level_in_logs_volume_clicked',\n label_in_panel_summary_clicked: 'label_in_panel_summary_clicked',\n // Changing layout type (e.g. single/grid/rows). Used in multiple views. The view type is passed as a parameter. Props: layout, view\n layout_type_changed: 'layout_type_changed',\n // Changing search string in logs. Props: searchQuery\n search_string_in_logs_changed: 'search_string_in_logs_changed',\n search_string_in_variables_changed: 'search_string_in_variables_changed',\n // Removing a pattern (e.g. include/exclude) from the list. Props: includePatternsLength, excludePatternsLength, type\n pattern_removed: 'pattern_removed',\n // Selecting a pattern (e.g. include/exclude) from the list. Props: includePatternsLength, excludePatternsLength, type\n pattern_selected: 'pattern_selected',\n // Clicking on a pattern field in the pattern name.\n pattern_field_clicked: 'pattern_field_clicked',\n // Toggling between logs/table view\n logs_visualization_toggle: 'logs_visualization_toggle',\n // Filter (include, exclude) from log details\n logs_detail_filter_applied: 'logs_detail_filter_applied',\n // Popover menu filter\n logs_popover_line_filter: 'logs_popover_line_filter',\n // Toggle displayed fields\n logs_toggle_displayed_field: 'logs_toggle_displayed_field',\n // Clear all displayed fields\n logs_clear_displayed_fields: 'logs_clear_displayed_fields',\n // Value breakdown sort change\n value_breakdown_sort_change: 'value_breakdown_sort_change',\n // Wasm not supported\n wasm_not_supported: 'wasm_not_supported',\n change_viz_type: 'change_viz_type',\n },\n [USER_EVENTS_PAGES.all]: {\n interval_too_long: 'interval_too_long',\n open_in_explore_menu_clicked: 'open_in_explore_menu_clicked',\n },\n} as const;\n","import _ from 'lodash';\n\n/**\n * Order doesn't matter, converts to sets, deep compare via lodash isEqual\n * @param arr1\n * @param arr2\n */\n\nexport const areArraysEqual = (arr1: any[] | undefined, arr2: any[] | undefined) => {\n // If one array is undefined, and the other is empty, they will cast to the same set.\n if (typeof arr1 !== typeof arr2) {\n return false;\n }\n const set1 = new Set(arr1);\n const set2 = new Set(arr2);\n\n // Save us from running the isEqual check if the set sizes are different\n if (set1.size !== set2.size) {\n return false;\n }\n\n return _.isEqual(set1, set2);\n};\n\nexport const areArraysStrictlyEqual = (arr1: any[] | undefined, arr2: any[] | undefined) => {\n // If one array is undefined, and the other is empty, they will cast to the same set.\n if (typeof arr1 !== typeof arr2) {\n return false;\n }\n return _.isEqual(arr1, arr2);\n};\n","import { MetricExpr, parser, Selector } from '@grafana/lezer-logql';\nimport { LokiQuery } from './lokiQuery';\nimport { getNodesFromQuery } from './logqlMatchers';\nimport { SceneDataQueryRequest } from './datasourceTypes';\n\nexport function isQueryWithNode(query: string, nodeType: number): boolean {\n let isQueryWithNode = false;\n const tree = parser.parse(query);\n tree.iterate({\n enter: ({ type }): false | void => {\n if (type.id === nodeType) {\n isQueryWithNode = true;\n return false;\n }\n },\n });\n return isQueryWithNode;\n}\n\nexport function isLogsQuery(query: string): boolean {\n // As a safeguard we are checking for a length of 2, because at least the query should be `{}`\n return query.trim().length > 2 && !isQueryWithNode(query, MetricExpr);\n}\n\nexport function isLogsRequest(request: SceneDataQueryRequest) {\n return request.targets.find((query) => isLogsQuery(query.expr)) !== undefined;\n}\n\nexport function isInstantQuery(request: SceneDataQueryRequest) {\n return request.targets.find((query) => query.queryType === 'instant');\n}\n\nexport function requestSupportsSharding(request: SceneDataQueryRequest) {\n if (isLogsRequest(request)) {\n return false;\n }\n if (isInstantQuery(request)) {\n return false;\n }\n for (let i = 0; i < request.targets.length; i++) {\n if (request.targets[i].expr?.includes('avg_over_time')) {\n return false;\n }\n }\n return true;\n}\n\nconst SHARDING_PLACEHOLDER = '__stream_shard_number__';\nexport const addShardingPlaceholderSelector = (query: string) => {\n return query.replace('}', `, __stream_shard__=~\"${SHARDING_PLACEHOLDER}\"}`);\n};\n\nexport const interpolateShardingSelector = (queries: LokiQuery[], shards?: number[]) => {\n if (shards === undefined || shards.length === 0) {\n return queries.map((query) => ({\n ...query,\n expr: query.expr.replace(`, __stream_shard__=~\"${SHARDING_PLACEHOLDER}\"}`, '}'),\n }));\n }\n\n let shardValue = shards.join('|');\n\n // -1 means empty shard value\n if (shardValue === '-1' || shards.length === 1) {\n shardValue = shardValue === '-1' ? '' : shardValue;\n return queries.map((query) => ({\n ...query,\n expr: query.expr.replace(`, __stream_shard__=~\"${SHARDING_PLACEHOLDER}\"}`, `, __stream_shard__=\"${shardValue}\"}`),\n }));\n }\n\n return queries.map((query) => ({\n ...query,\n expr: query.expr.replace(new RegExp(`${SHARDING_PLACEHOLDER}`, 'g'), shardValue),\n }));\n};\n\nexport const getSelectorForShardValues = (query: string) => {\n const selector = getNodesFromQuery(query, [Selector]);\n if (selector.length > 0) {\n return query\n .substring(selector[0].from, selector[0].to)\n .replace(`, __stream_shard__=~\"${SHARDING_PLACEHOLDER}\"}`, '}');\n }\n return '';\n};\n","import {\n closestIdx,\n DataFrame,\n DataFrameType,\n DataQueryResponse,\n DataQueryResponseData,\n Field,\n FieldType,\n QueryResultMetaStat,\n} from '@grafana/data';\nimport { logger } from './logger';\n\nexport function combineResponses(currentResult: DataQueryResponse | null, newResult: DataQueryResponse) {\n if (!currentResult) {\n return cloneQueryResponse(newResult);\n }\n\n newResult.data.forEach((newFrame) => {\n const currentFrame = currentResult.data.find((frame) => shouldCombine(frame, newFrame));\n if (!currentFrame) {\n currentResult.data.push(cloneDataFrame(newFrame));\n return;\n }\n mergeFrames(currentFrame, newFrame);\n });\n\n const mergedErrors = [...(currentResult.errors ?? []), ...(newResult.errors ?? [])];\n\n // we make sure to have `.errors` as undefined, instead of empty-array\n // when no errors.\n\n if (mergedErrors.length > 0) {\n currentResult.errors = mergedErrors;\n }\n\n // the `.error` attribute is obsolete now,\n // but we have to maintain it, otherwise\n // some grafana parts do not behave well.\n // we just choose the old error, if it exists,\n // otherwise the new error, if it exists.\n const mergedError = currentResult.error ?? newResult.error;\n if (mergedError != null) {\n currentResult.error = mergedError;\n }\n\n const mergedTraceIds = [...(currentResult.traceIds ?? []), ...(newResult.traceIds ?? [])];\n if (mergedTraceIds.length > 0) {\n currentResult.traceIds = mergedTraceIds;\n }\n\n return currentResult;\n}\n\n/**\n * Given two data frames, merge their values. Overlapping values will be added together.\n */\nexport function mergeFrames(dest: DataFrame, source: DataFrame) {\n const destTimeField = dest.fields.find((field) => field.type === FieldType.time);\n const destIdField = dest.fields.find((field) => field.type === FieldType.string && field.name === 'id');\n const sourceTimeField = source.fields.find((field) => field.type === FieldType.time);\n const sourceIdField = source.fields.find((field) => field.type === FieldType.string && field.name === 'id');\n\n if (!destTimeField || !sourceTimeField) {\n logger.error(new Error(`Time fields not found in the data frames`));\n return;\n }\n\n const sourceTimeValues = sourceTimeField?.values.slice(0) ?? [];\n const totalFields = Math.max(dest.fields.length, source.fields.length);\n\n for (let i = 0; i < sourceTimeValues.length; i++) {\n const destIdx = resolveIdx(destTimeField, sourceTimeField, i);\n\n const entryExistsInDest = compareEntries(destTimeField, destIdField, destIdx, sourceTimeField, sourceIdField, i);\n\n for (let f = 0; f < totalFields; f++) {\n // For now, skip undefined fields that exist in the new frame\n if (!dest.fields[f]) {\n continue;\n }\n // Index is not reliable when frames have disordered fields, or an extra/missing field, so we find them by name.\n // If the field has no name, we fallback to the old index version.\n const sourceField = findSourceField(dest.fields[f], source.fields, f);\n if (!sourceField) {\n continue;\n }\n // Same value, accumulate\n if (entryExistsInDest) {\n if (dest.fields[f].type === FieldType.time) {\n // Time already exists, skip\n continue;\n } else if (dest.fields[f].type === FieldType.number) {\n // Number, add\n dest.fields[f].values[destIdx] = (dest.fields[f].values[destIdx] ?? 0) + sourceField.values[i];\n } else if (dest.fields[f].type === FieldType.other) {\n // Possibly labels, combine\n if (typeof sourceField.values[i] === 'object') {\n dest.fields[f].values[destIdx] = {\n ...dest.fields[f].values[destIdx],\n ...sourceField.values[i],\n };\n } else if (sourceField.values[i] != null) {\n dest.fields[f].values[destIdx] = sourceField.values[i];\n }\n } else {\n // Replace value\n dest.fields[f].values[destIdx] = sourceField.values[i];\n }\n } else if (sourceField.values[i] !== undefined) {\n // Insert in the `destIdx` position\n dest.fields[f].values.splice(destIdx, 0, sourceField.values[i]);\n if (sourceField.nanos) {\n dest.fields[f].nanos = dest.fields[f].nanos ?? new Array(dest.fields[f].values.length - 1).fill(0);\n dest.fields[f].nanos?.splice(destIdx, 0, sourceField.nanos[i]);\n }\n }\n }\n }\n\n dest.length = dest.fields[0].values.length;\n\n dest.meta = {\n ...dest.meta,\n stats: getCombinedMetadataStats(dest.meta?.stats ?? [], source.meta?.stats ?? []),\n };\n}\n\nfunction resolveIdx(destField: Field, sourceField: Field, index: number) {\n const idx = closestIdx(sourceField.values[index], destField.values);\n if (idx < 0) {\n return 0;\n }\n if (sourceField.values[index] === destField.values[idx] && sourceField.nanos != null && destField.nanos != null) {\n return sourceField.nanos[index] > destField.nanos[idx] ? idx + 1 : idx;\n }\n if (sourceField.values[index] > destField.values[idx]) {\n return idx + 1;\n }\n return idx;\n}\n\nfunction compareEntries(\n destTimeField: Field,\n destIdField: Field | undefined,\n destIndex: number,\n sourceTimeField: Field,\n sourceIdField: Field | undefined,\n sourceIndex: number\n) {\n const sameTimestamp = compareNsTimestamps(destTimeField, destIndex, sourceTimeField, sourceIndex);\n if (!sameTimestamp) {\n return false;\n }\n if (destIdField == null || sourceIdField == null) {\n return true;\n }\n // Log frames, check indexes\n return (\n destIdField.values[destIndex] !== undefined && destIdField.values[destIndex] === sourceIdField.values[sourceIndex]\n );\n}\n\nfunction compareNsTimestamps(destField: Field, destIndex: number, sourceField: Field, sourceIndex: number) {\n if (destField.nanos && sourceField.nanos) {\n return (\n destField.values[destIndex] !== undefined &&\n destField.values[destIndex] === sourceField.values[sourceIndex] &&\n destField.nanos[destIndex] !== undefined &&\n destField.nanos[destIndex] === sourceField.nanos[sourceIndex]\n );\n }\n return destField.values[destIndex] !== undefined && destField.values[destIndex] === sourceField.values[sourceIndex];\n}\n\nfunction findSourceField(referenceField: Field, sourceFields: Field[], index: number) {\n const candidates = sourceFields.filter((f) => f.name === referenceField.name);\n\n if (candidates.length === 1) {\n return candidates[0];\n }\n\n return sourceFields[index];\n}\n\nconst TOTAL_BYTES_STAT = 'Summary: total bytes processed';\n// This is specific for Loki\nfunction getCombinedMetadataStats(\n destStats: QueryResultMetaStat[],\n sourceStats: QueryResultMetaStat[]\n): QueryResultMetaStat[] {\n // in the current approach, we only handle a single stat\n const destStat = destStats.find((s) => s.displayName === TOTAL_BYTES_STAT);\n const sourceStat = sourceStats.find((s) => s.displayName === TOTAL_BYTES_STAT);\n\n if (sourceStat != null && destStat != null) {\n return [{ value: sourceStat.value + destStat.value, displayName: TOTAL_BYTES_STAT, unit: destStat.unit }];\n }\n\n // maybe one of them exist\n const eitherStat = sourceStat ?? destStat;\n if (eitherStat != null) {\n return [eitherStat];\n }\n\n return [];\n}\n\n/**\n * Deep clones a DataQueryResponse\n */\nexport function cloneQueryResponse(response: DataQueryResponse): DataQueryResponse {\n const newResponse = {\n ...response,\n data: response.data.map(cloneDataFrame),\n };\n return newResponse;\n}\n\nfunction cloneDataFrame(frame: DataQueryResponseData): DataQueryResponseData {\n return {\n ...frame,\n fields: frame.fields.map((field: Field) => ({\n ...field,\n values: field.values,\n })),\n };\n}\n\nfunction shouldCombine(frame1: DataFrame, frame2: DataFrame): boolean {\n if (frame1.refId !== frame2.refId) {\n return false;\n }\n if (frame1.name != null && frame2.name != null && frame1.name !== frame2.name) {\n return false;\n }\n\n const frameType1 = frame1.meta?.type;\n const frameType2 = frame2.meta?.type;\n\n if (frameType1 !== frameType2) {\n // we do not join things that have a different type\n return false;\n }\n\n // metric range query data\n if (frameType1 === DataFrameType.TimeSeriesMulti) {\n return compareLabels(frame1, frame2);\n }\n\n // logs query data\n // logs use a special attribute in the dataframe's \"custom\" section\n // because we do not have a good \"frametype\" value for them yet.\n const customType1 = frame1.meta?.custom?.frameType;\n const customType2 = frame2.meta?.custom?.frameType;\n // Legacy frames have this custom type\n if (customType1 === 'LabeledTimeValues' && customType2 === 'LabeledTimeValues') {\n return true;\n } else if (customType1 === customType2) {\n // Data plane frames don't\n return true;\n }\n\n // should never reach here\n return false;\n}\n\nfunction compareLabels(frame1: DataFrame, frame2: DataFrame) {\n const field1 = frame1.fields.find((f) => f.type === FieldType.number);\n const field2 = frame2.fields.find((f) => f.type === FieldType.number);\n if (field1 === undefined || field2 === undefined) {\n // should never happen\n return false;\n }\n // undefined == null\n if (frame1.name == null) {\n frame1.name = JSON.stringify(field1.labels);\n }\n if (frame2.name == null) {\n frame2.name = JSON.stringify(field2.labels);\n }\n return frame1.name === frame2.name;\n}\n","import pluginJson from '../plugin.json';\nimport { Observable, Subscriber, Subscription } from 'rxjs';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport { DataQueryRequest, DataQueryResponse, LoadingState, QueryResultMetaStat } from '@grafana/data';\nimport { addShardingPlaceholderSelector, getSelectorForShardValues, interpolateShardingSelector } from './logql';\nimport { combineResponses } from './combineResponses';\nimport { LokiDatasource, LokiQuery } from './lokiQuery';\nimport { logger } from './logger';\nimport { isValidQuery } from './logqlMatchers';\n\n/**\n * Query splitting by stream shards.\n * Query splitting was introduced in Loki to optimize querying for long intervals and high volume of data,\n * dividing a big request into smaller sub-requests, combining and displaying the results as they arrive.\n *\n * This approach, inspired by the time-based query splitting, takes advantage of the __stream_shard__\n * internal label, representing how data is spread into different sources that can be queried individually.\n *\n * The main entry point of this module is runShardSplitQuery(), which prepares the query for execution and\n * passes it to splitQueriesByStreamShard() to begin the querying loop.\n *\n * splitQueriesByStreamShard() has the following structure:\n * - Creates and returns an Observable to which the UI will subscribe\n * - Requests the __stream_shard__ values of the selected service:\n * . If there are no shard values, it falls back to the standard querying approach of the data source in runNonSplitRequest()\n * . If there are shards:\n * - It sorts them by value, descending. Higher shard numbers correspond with the least volume.\n * - It defines an initial group size, roughly Math.sqrt(amountOfShards).\n * - It begins the querying loop with runNextRequest().\n * - runNextRequest() will create a group of groupSize shards from the nth shard (cycle), and has the following internal structure:\n * . groupShardRequests() returns an array of shards from cycle to cycle + groupSize.\n * . interpolateShardingSelector() will update the stream selector with the shard numbers in the current group.\n * . After query execution:\n * - If the response is successful:\n * . It will add new data to the response with combineResponses()\n * . Using the data and meta data of the response, updateGroupSizeFromResponse() will increase or decrease the group size.\n * . nextRequest() will use the current cycle and group size to determine the next request or complete execution with done().\n * - If the response is unsuccessful:\n * . If the response is not a query error, and the group size bigger than 1, it will decrease the group size.\n * . If the group size is already 1, it will retry the request up to 4 times.\n * . If there are retry attempts, it will retry the current cycle, or else stop querying.\n * - Once all request groups have been executed, it will be done().\n */\n\nexport function runShardSplitQuery(datasource: LokiDatasource, request: DataQueryRequest) {\n const queries = datasource\n .interpolateVariablesInQueries(request.targets, request.scopedVars)\n .filter((query) => query.expr)\n .map((target) => ({\n ...target,\n expr: addShardingPlaceholderSelector(target.expr),\n }));\n\n return splitQueriesByStreamShard(datasource, request, queries);\n}\n\nfunction splitQueriesByStreamShard(\n datasource: LokiDatasource,\n request: DataQueryRequest,\n splittingTargets: LokiQuery[]\n) {\n let shouldStop = false;\n let mergedResponse: DataQueryResponse = { data: [], state: LoadingState.Streaming, key: uuidv4() };\n let subquerySubscription: Subscription | null = null;\n let retriesMap = new Map();\n let retryTimer: ReturnType | null = null;\n\n const runNextRequest = (\n subscriber: Subscriber,\n cycle: number,\n shards: number[],\n groupSize: number\n ) => {\n let nextGroupSize = groupSize;\n let retrying = false;\n\n if (subquerySubscription != null) {\n subquerySubscription.unsubscribe();\n subquerySubscription = null;\n }\n\n const done = () => {\n mergedResponse.state = shouldStop ? LoadingState.Error : LoadingState.Done;\n subscriber.next(mergedResponse);\n subscriber.complete();\n };\n\n if (shouldStop) {\n done();\n return;\n }\n\n const nextRequest = () => {\n const nextCycle = Math.min(cycle + groupSize, shards.length);\n if (cycle < shards.length && nextCycle <= shards.length) {\n runNextRequest(subscriber, nextCycle, shards, nextGroupSize);\n return;\n }\n done();\n };\n\n const retry = (errorResponse?: DataQueryResponse) => {\n try {\n if (errorResponse && !isRetriableError(errorResponse)) {\n return false;\n }\n } catch (e) {\n logger.error(e, {\n msg: 'sharding retry error',\n error: errorResponse?.error?.message ?? '',\n errors: errorResponse?.errors?.map((e) => e.message).join(' | ') ?? '',\n traces: errorResponse?.traceIds?.join('|') ?? '',\n });\n shouldStop = true;\n return false;\n }\n\n if (groupSize > 1) {\n groupSize = Math.floor(Math.sqrt(groupSize));\n debug(`Possible time out, new group size ${groupSize}`);\n retrying = true;\n runNextRequest(subscriber, cycle, shards, groupSize);\n return true;\n }\n\n const retries = retriesMap.get(cycle) ?? 0;\n if (retries > 3) {\n shouldStop = true;\n return false;\n }\n\n retriesMap.set(cycle, retries + 1);\n\n retryTimer = setTimeout(() => {\n logger.info(`Retrying ${cycle} (${retries + 1})`);\n runNextRequest(subscriber, cycle, shards, groupSize);\n retryTimer = null;\n }, 1500 * Math.pow(2, retries)); // Exponential backoff\n\n retrying = true;\n\n return true;\n };\n\n const shardsToQuery = groupShardRequests(shards, cycle, groupSize);\n debug(`Querying ${shardsToQuery.join(', ')}`);\n const subRequest = { ...request, targets: interpolateShardingSelector(splittingTargets, shardsToQuery) };\n // Request may not have a request id\n if (request.requestId) {\n subRequest.requestId = `${request.requestId}_shard_${cycle}_${groupSize}`;\n }\n\n // @ts-expect-error\n subquerySubscription = datasource.runQuery(subRequest).subscribe({\n next: (partialResponse: DataQueryResponse) => {\n if ((partialResponse.errors ?? []).length > 0 || partialResponse.error != null) {\n if (retry(partialResponse)) {\n return;\n }\n }\n nextGroupSize = constrainGroupSize(\n cycle + groupSize,\n updateGroupSizeFromResponse(partialResponse, groupSize),\n shards.length\n );\n if (nextGroupSize !== groupSize) {\n debug(`New group size ${nextGroupSize}`);\n }\n mergedResponse = combineResponses(mergedResponse, partialResponse);\n },\n complete: () => {\n if (retrying) {\n return;\n }\n // Prevent flashing \"no data\"\n if (mergedResponse.data.length) {\n subscriber.next(mergedResponse);\n }\n nextRequest();\n },\n error: (error: unknown) => {\n logger.error(error, { msg: 'failed to shard' });\n subscriber.next(mergedResponse);\n if (retry()) {\n return;\n }\n nextRequest();\n },\n });\n };\n\n const runNonSplitRequest = (subscriber: Subscriber) => {\n subquerySubscription = datasource.query(request).subscribe({\n next: (partialResponse: DataQueryResponse) => {\n mergedResponse = partialResponse;\n },\n complete: () => {\n subscriber.next(mergedResponse);\n },\n error: (error: unknown) => {\n logger.error(error, { msg: 'runNonSplitRequest subscription error' });\n subscriber.error(mergedResponse);\n },\n });\n };\n\n const response = new Observable((subscriber) => {\n const selector = getSelectorForShardValues(splittingTargets[0].expr);\n\n if (!isValidQuery(selector)) {\n debug(`Skipping invalid selector: ${selector}`);\n subscriber.complete();\n return;\n }\n\n datasource.languageProvider\n .fetchLabelValues('__stream_shard__', {\n timeRange: request.range,\n streamSelector: selector ? selector : undefined,\n })\n .then((values: string[]) => {\n const shards = values.map((value) => parseInt(value, 10));\n if (!shards || !shards.length) {\n logger.warn(`Shard splitting not supported. Issuing a regular query.`);\n runNonSplitRequest(subscriber);\n } else {\n shards.sort((a, b) => b - a);\n debug(`Querying ${shards.join(', ')} shards`);\n runNextRequest(subscriber, 0, shards, getInitialGroupSize(shards));\n }\n })\n .catch((e: unknown) => {\n logger.error(e, { msg: 'failed to fetch label values for __stream_shard__' });\n runNonSplitRequest(subscriber);\n });\n return () => {\n shouldStop = true;\n if (retryTimer) {\n clearTimeout(retryTimer);\n }\n if (subquerySubscription != null) {\n subquerySubscription.unsubscribe();\n subquerySubscription = null;\n }\n };\n });\n\n return response;\n}\n\nfunction updateGroupSizeFromResponse(response: DataQueryResponse, currentSize: number) {\n if (!response.data.length) {\n // Empty response, increase group size\n return currentSize + 1;\n }\n\n const metaExecutionTime: QueryResultMetaStat | undefined = response.data[0].meta?.stats?.find(\n (stat: QueryResultMetaStat) => stat.displayName === 'Summary: exec time'\n );\n\n if (metaExecutionTime) {\n const executionTime = Math.round(metaExecutionTime.value);\n debug(`${metaExecutionTime.value}`);\n // Positive scenarios\n if (executionTime <= 1) {\n return Math.floor(currentSize * 1.5);\n } else if (executionTime < 6) {\n return Math.ceil(currentSize * 1.1);\n }\n\n // Negative scenarios\n if (currentSize === 1) {\n return currentSize;\n } else if (executionTime < 20) {\n return Math.ceil(currentSize * 0.9);\n } else {\n return Math.floor(currentSize / 2);\n }\n }\n\n return currentSize;\n}\n\n/**\n * Prevents the group size for ever being more than maxFactor% of the pending shards.\n */\nfunction constrainGroupSize(cycle: number, groupSize: number, shards: number) {\n const maxFactor = 0.7;\n return Math.min(groupSize, Math.max(Math.floor((shards - cycle) * maxFactor), 1));\n}\n\nfunction groupShardRequests(shards: number[], start: number, groupSize: number) {\n if (start === shards.length) {\n return [-1];\n }\n return shards.slice(start, start + groupSize);\n}\n\nfunction getInitialGroupSize(shards: number[]) {\n return Math.floor(Math.sqrt(shards.length));\n}\n\nfunction isRetriableError(errorResponse: DataQueryResponse) {\n const message = errorResponse.errors\n ? (errorResponse.errors[0].message ?? '').toLowerCase()\n : errorResponse.error?.message ?? '';\n if (message.includes('timeout')) {\n return true;\n } else if (message.includes('parse error')) {\n // If the error is a parse error, we want to signal to stop querying.\n throw new Error(message);\n }\n return false;\n}\n\n// Enable to output debugging logs\nconst DEBUG_ENABLED = Boolean(localStorage.getItem(`${pluginJson.id}.sharding_debug_enabled`));\nfunction debug(message: string) {\n if (!DEBUG_ENABLED) {\n return;\n }\n console.log(message);\n}\n","import {\n createDataFrame,\n DataFrame,\n DataQueryRequest,\n DataQueryResponse,\n Field,\n FieldType,\n LoadingState,\n TestDataSourceResponse,\n} from '@grafana/data';\nimport { config, DataSourceWithBackend, getDataSourceSrv } from '@grafana/runtime';\nimport { RuntimeDataSource, sceneUtils } from '@grafana/scenes';\nimport { DataQuery } from '@grafana/schema';\nimport { Observable, Subscriber } from 'rxjs';\nimport { getDataSource } from './scenes';\nimport { DetectedFieldsResponse, DetectedLabelsResponse } from './fields';\nimport { FIELDS_TO_REMOVE, LABELS_TO_REMOVE, sortLabelsByCardinality } from './filters';\nimport { SERVICE_NAME } from './variables';\nimport { runShardSplitQuery } from './shardQuerySplitting';\nimport { requestSupportsSharding } from './logql';\nimport { LokiDatasource, LokiQuery } from './lokiQuery';\nimport { SceneDataQueryRequest, SceneDataQueryResourceRequest, VolumeRequestProps } from './datasourceTypes';\nimport { logger } from './logger';\nimport { PLUGIN_ID } from './plugin';\nimport { sanitizeStreamSelector } from './query';\n\nexport const WRAPPED_LOKI_DS_UID = 'wrapped-loki-ds-uid';\n\ntype TimeStampOfVolumeEval = number;\ntype VolumeCount = string;\ntype VolumeValue = [TimeStampOfVolumeEval, VolumeCount];\ntype VolumeResult = {\n metric: {\n service_name?: string;\n __aggregated_metric__?: string;\n [index: string]: string | undefined;\n };\n value: VolumeValue;\n};\n\ntype IndexVolumeResponse = {\n data: {\n result: VolumeResult[];\n };\n};\n\ntype LabelsResponse = {\n status: string;\n data: string[];\n};\n\ntype SampleTimeStamp = number;\ntype SampleCount = number;\ntype PatternSample = [SampleTimeStamp, SampleCount];\n\nexport interface LokiPattern {\n pattern: string;\n samples: PatternSample[];\n}\n\ntype PatternsResponse = {\n data: LokiPattern[];\n};\n\nexport const DETECTED_FIELDS_NAME_FIELD = 'name';\n\nexport const DETECTED_FIELDS_CARDINALITY_NAME = 'cardinality';\n\nexport const DETECTED_FIELDS_PARSER_NAME = 'parser';\n\nexport const DETECTED_FIELDS_TYPE_NAME = 'type';\n\nexport class WrappedLokiDatasource extends RuntimeDataSource {\n constructor(pluginId: string, uid: string) {\n super(pluginId, uid);\n }\n\n query(request: SceneDataQueryRequest): Promise | Observable {\n return new Observable((subscriber) => {\n if (!request.scopedVars?.__sceneObject) {\n throw new Error('Scene object not found in request');\n }\n\n getDataSourceSrv()\n .get(getDataSource(request.scopedVars.__sceneObject.valueOf()))\n .then(async (ds) => {\n if (!(ds instanceof DataSourceWithBackend) || !('interpolateString' in ds) || !('getTimeRangeParams' in ds)) {\n throw new Error('Invalid datasource!');\n }\n\n // override the target datasource to Loki\n request.targets = request.targets?.map((target) => {\n target.datasource = ds;\n return target;\n });\n\n const targetsSet = new Set();\n request.targets.forEach((target) => {\n targetsSet.add(target.resource ?? '');\n });\n\n if (targetsSet.size !== 1) {\n throw new Error('A request cannot contain queries to multiple endpoints');\n }\n\n const requestType = request.targets[0].resource;\n\n switch (requestType) {\n case 'volume': {\n await this.getVolume(request, ds, subscriber);\n break;\n }\n case 'patterns': {\n await this.getPatterns(request, ds, subscriber);\n break;\n }\n case 'detected_labels': {\n await this.getDetectedLabels(request, ds, subscriber);\n break;\n }\n case 'detected_fields': {\n await this.getDetectedFields(request, ds, subscriber);\n break;\n }\n case 'labels': {\n await this.getLabels(request, ds, subscriber);\n break;\n }\n default: {\n this.getData(request, ds, subscriber);\n break;\n }\n }\n });\n });\n }\n\n private getData(request: SceneDataQueryRequest, ds: LokiDatasource, subscriber: Subscriber) {\n const shardingEnabled = config.featureToggles.exploreLogsShardSplitting;\n\n const updatedRequest = {\n ...request,\n targets: ds.interpolateVariablesInQueries(request.targets, request.scopedVars).map((target) => ({\n ...target,\n resource: undefined,\n expr: sanitizeStreamSelector(target.expr),\n })),\n };\n\n // Query the datasource and return either observable or promise\n const dsResponse =\n requestSupportsSharding(updatedRequest) === false || !shardingEnabled\n ? ds.query(updatedRequest)\n : runShardSplitQuery(ds, updatedRequest);\n dsResponse.subscribe(subscriber);\n\n return subscriber;\n }\n\n private async getPatterns(\n request: DataQueryRequest,\n ds: LokiDatasource,\n subscriber: Subscriber\n ) {\n const targets = request.targets.filter((target) => {\n return target.resource === 'patterns';\n });\n\n if (targets.length !== 1) {\n throw new Error('Patterns query can only have a single target!');\n }\n const { interpolatedTarget, expression } = this.interpolate(ds, targets, request);\n subscriber.next({ data: [], state: LoadingState.Loading });\n\n try {\n const dsResponse = ds.getResource(\n 'patterns',\n {\n query: expression,\n start: request.range.from.utc().toISOString(),\n end: request.range.to.utc().toISOString(),\n step: request.interval,\n },\n {\n requestId: request.requestId ?? 'patterns',\n headers: {\n 'X-Query-Tags': `Source=${PLUGIN_ID}`,\n },\n }\n );\n const response: PatternsResponse = await dsResponse;\n const lokiPatterns = response?.data;\n\n let maxValue = -Infinity;\n let minValue = 0;\n\n const frames: DataFrame[] =\n lokiPatterns?.map((pattern: LokiPattern) => {\n const timeValues: number[] = [];\n const countValues: number[] = [];\n let sum = 0;\n pattern.samples.forEach(([time, count]) => {\n timeValues.push(time * 1000);\n countValues.push(count);\n if (count > maxValue) {\n maxValue = count;\n }\n if (count < minValue) {\n minValue = count;\n }\n if (count > maxValue) {\n maxValue = count;\n }\n if (count < minValue) {\n minValue = count;\n }\n sum += count;\n });\n return createDataFrame({\n refId: interpolatedTarget.refId,\n name: pattern.pattern,\n fields: [\n {\n name: 'time',\n type: FieldType.time,\n values: timeValues,\n config: {},\n },\n {\n name: pattern.pattern,\n type: FieldType.number,\n values: countValues,\n config: {},\n },\n ],\n meta: {\n preferredVisualisationType: 'graph',\n custom: {\n sum,\n },\n },\n });\n }) ?? [];\n\n frames.sort((a, b) => (b.meta?.custom?.sum as number) - (a.meta?.custom?.sum as number));\n subscriber.next({ data: frames, state: LoadingState.Done });\n } catch (e) {\n subscriber.next({ data: [], state: LoadingState.Error });\n }\n\n return subscriber;\n }\n\n private interpolate(\n ds: LokiDatasource,\n targets: Array,\n request: DataQueryRequest\n ) {\n const targetsInterpolated = ds.interpolateVariablesInQueries(targets, request.scopedVars);\n if (!targetsInterpolated.length) {\n throw new Error('Datasource failed to interpolate query!');\n }\n const interpolatedTarget = targetsInterpolated[0];\n const expression = sanitizeStreamSelector(interpolatedTarget.expr);\n return { interpolatedTarget, expression };\n }\n\n private async getDetectedLabels(\n request: DataQueryRequest,\n ds: LokiDatasource,\n subscriber: Subscriber\n ) {\n const targets = request.targets.filter((target) => {\n return target.resource === 'detected_labels';\n });\n\n if (targets.length !== 1) {\n throw new Error('Detected labels query can only have a single target!');\n }\n\n let { interpolatedTarget, expression } = this.interpolate(ds, targets, request);\n\n // Detected_labels is a bit different then other queries that interpolate the labels variable, it can be empty, but if it is empty it must be completely empty or we'll get the \"queries require at least one regexp or equality\" error from Loki\n if (expression === `{}`) {\n expression = '';\n }\n\n subscriber.next({ data: [], state: LoadingState.Loading });\n\n try {\n const response = await ds.getResource(\n 'detected_labels',\n {\n query: expression,\n start: request.range.from.utc().toISOString(),\n end: request.range.to.utc().toISOString(),\n },\n {\n requestId: request.requestId ?? 'detected_labels',\n headers: {\n 'X-Query-Tags': `Source=${PLUGIN_ID}`,\n },\n }\n );\n\n const labels = response.detectedLabels\n ?.filter((label) => !LABELS_TO_REMOVE.includes(label.label))\n ?.sort((a, b) => sortLabelsByCardinality(a, b));\n\n const detectedLabelFields: Array> = labels?.map((label) => {\n return {\n name: label.label,\n values: [label.cardinality],\n };\n });\n\n const dataFrame = createDataFrame({\n refId: interpolatedTarget.refId,\n fields: detectedLabelFields ?? [],\n });\n\n subscriber.next({ data: [dataFrame], state: LoadingState.Done });\n } catch (e) {\n subscriber.next({ data: [], state: LoadingState.Error });\n }\n\n return subscriber;\n }\n\n private async getDetectedFields(\n request: DataQueryRequest,\n ds: LokiDatasource,\n subscriber: Subscriber\n ) {\n const targets = request.targets.filter((target) => {\n return target.resource === 'detected_fields';\n });\n\n if (targets.length !== 1) {\n throw new Error('Detected fields query can only have a single target!');\n }\n\n subscriber.next({ data: [], state: LoadingState.Loading });\n\n const { interpolatedTarget, expression } = this.interpolate(ds, targets, request);\n\n try {\n const response = await ds.getResource(\n 'detected_fields',\n {\n query: expression,\n start: request.range.from.utc().toISOString(),\n end: request.range.to.utc().toISOString(),\n },\n {\n requestId: request.requestId ?? 'detected_fields',\n headers: {\n 'X-Query-Tags': `Source=${PLUGIN_ID}`,\n },\n }\n );\n\n const nameField: Field = { name: DETECTED_FIELDS_NAME_FIELD, type: FieldType.string, values: [], config: {} };\n const cardinalityField: Field = {\n name: DETECTED_FIELDS_CARDINALITY_NAME,\n type: FieldType.number,\n values: [],\n config: {},\n };\n const parserField: Field = { name: DETECTED_FIELDS_PARSER_NAME, type: FieldType.string, values: [], config: {} };\n const typeField: Field = { name: DETECTED_FIELDS_TYPE_NAME, type: FieldType.string, values: [], config: {} };\n\n response.fields?.forEach((field) => {\n if (!FIELDS_TO_REMOVE.includes(field.label)) {\n nameField.values.push(field.label);\n cardinalityField.values.push(field.cardinality);\n parserField.values.push(field.parsers?.length ? field.parsers.join(', ') : 'structuredMetadata');\n typeField.values.push(field.type);\n }\n });\n\n const dataFrame = createDataFrame({\n refId: interpolatedTarget.refId,\n fields: [nameField, cardinalityField, parserField, typeField],\n });\n\n subscriber.next({ data: [dataFrame], state: LoadingState.Done });\n } catch (e) {\n logger.error(e, { msg: 'Detected fields error' });\n subscriber.next({ data: [], state: LoadingState.Error });\n }\n\n return subscriber;\n }\n\n //@todo doesn't work with multiple queries\n private async getVolume(\n request: DataQueryRequest,\n ds: LokiDatasource,\n subscriber: Subscriber\n ) {\n if (request.targets.length !== 1) {\n throw new Error('Volume query can only have a single target!');\n }\n\n const target = request.targets[0];\n const primaryLabel = target.primaryLabel;\n if (!primaryLabel) {\n throw new Error('Primary label is required for volume queries!');\n }\n\n const targetsInterpolated = ds.interpolateVariablesInQueries([target], request.scopedVars);\n const expression = sanitizeStreamSelector(targetsInterpolated[0].expr.replace('.*.*', '.+'));\n\n subscriber.next({ data: [], state: LoadingState.Loading });\n\n try {\n const volumeResponse: IndexVolumeResponse = await ds.getResource(\n 'index/volume',\n {\n query: expression,\n start: request.range.from.utc().toISOString(),\n end: request.range.to.utc().toISOString(),\n limit: 5000,\n },\n {\n requestId: request.requestId ?? 'volume',\n headers: {\n 'X-Query-Tags': `Source=${PLUGIN_ID}`,\n },\n }\n );\n volumeResponse?.data.result.sort((lhs: VolumeResult, rhs: VolumeResult) => {\n const lVolumeCount: VolumeCount = lhs.value[1];\n const rVolumeCount: VolumeCount = rhs.value[1];\n return Number(rVolumeCount) - Number(lVolumeCount);\n });\n\n // Scenes will only emit dataframes from the SceneQueryRunner, so for now we need to convert the API response to a dataframe\n const df = createDataFrame({\n fields: [\n {\n // @todo rename\n name: SERVICE_NAME,\n values: volumeResponse?.data.result?.map((r) => {\n return r.metric[primaryLabel];\n }),\n },\n { name: 'volume', values: volumeResponse?.data.result?.map((r) => Number(r.value[1])) },\n ],\n });\n\n subscriber.next({ data: [df] });\n } catch (e) {\n logger.error(e);\n subscriber.next({ data: [], state: LoadingState.Error });\n }\n\n subscriber.complete();\n\n return subscriber;\n }\n\n private async getLabels(\n request: DataQueryRequest,\n ds: LokiDatasource,\n subscriber: Subscriber\n ) {\n if (request.targets.length !== 1) {\n throw new Error('Volume query can only have a single target!');\n }\n\n try {\n const labelsResponse: LabelsResponse = await ds.getResource(\n 'labels',\n {\n start: request.range.from.utc().toISOString(),\n end: request.range.to.utc().toISOString(),\n },\n {\n requestId: request.requestId ?? 'labels',\n headers: {\n 'X-Query-Tags': `Source=${PLUGIN_ID}`,\n },\n }\n );\n\n // Scenes will only emit dataframes from the SceneQueryRunner, so for now we need to convert the API response to a dataframe\n const df = createDataFrame({\n fields: [{ name: 'labels', values: labelsResponse?.data }],\n });\n subscriber.next({ data: [df], state: LoadingState.Done });\n } catch (e) {\n subscriber.next({ data: [], state: LoadingState.Error });\n }\n\n subscriber.complete();\n\n return subscriber;\n }\n\n testDatasource(): Promise {\n return Promise.resolve({ status: 'success', message: 'Data source is working', title: 'Success' });\n }\n}\n\nfunction init() {\n sceneUtils.registerRuntimeDataSource({\n dataSource: new WrappedLokiDatasource('wrapped-loki-ds', WRAPPED_LOKI_DS_UID),\n });\n}\n\nexport default init;\n","import {\n DETECTED_FIELD_AND_METADATA_VALUES_EXPR,\n DETECTED_LEVELS_VALUES_EXPR,\n JSON_FORMAT_EXPR,\n LEVEL_VARIABLE_VALUE,\n LOGS_FORMAT_EXPR,\n MIXED_FORMAT_EXPR,\n VAR_FIELDS_AND_METADATA,\n VAR_FIELDS_EXPR,\n VAR_LABELS_EXPR,\n VAR_LEVELS,\n VAR_LINE_FILTERS_EXPR,\n VAR_METADATA_EXPR,\n VAR_PATTERNS_EXPR,\n} from './variables';\nimport { SceneObject } from '@grafana/scenes';\nimport { getParserFromFieldsFilters } from './fields';\nimport { getFieldsVariable } from './variableGetters';\nimport { UIVariableFilterType } from '../Components/ServiceScene/Breakdowns/AddToFiltersButton';\nimport { logger } from './logger';\n\n/**\n * Crafts count over time query that excludes empty values for stream selector name\n * Will only add parsers if there are filters that require them.\n * @param sceneRef\n * @param streamSelectorName - the name of the stream selector we are aggregating by\n * @param excludeEmpty - if true, the query will exclude empty values for the given streamSelectorName\n */\nexport function getTimeSeriesExpr(sceneRef: SceneObject, streamSelectorName: string, excludeEmpty = true): string {\n const fieldsVariable = getFieldsVariable(sceneRef);\n\n let metadataExpressionToAdd = '';\n if (excludeEmpty) {\n // `LEVEL_VARIABLE_VALUE` is a special case where we don't want to add this to the stream selector\n if (streamSelectorName === LEVEL_VARIABLE_VALUE) {\n metadataExpressionToAdd = `| ${LEVEL_VARIABLE_VALUE} != \"\"`;\n }\n }\n\n const fieldFilters = fieldsVariable.state.filters;\n const parser = getParserFromFieldsFilters(fieldsVariable);\n\n // if we have fields, we also need to add parsers\n if (fieldFilters.length) {\n if (parser === 'mixed') {\n return `sum(count_over_time({${VAR_LABELS_EXPR}} ${metadataExpressionToAdd} ${VAR_METADATA_EXPR} ${VAR_PATTERNS_EXPR} ${VAR_LINE_FILTERS_EXPR} ${MIXED_FORMAT_EXPR} ${VAR_FIELDS_EXPR} [$__auto])) by (${streamSelectorName})`;\n }\n if (parser === 'json') {\n return `sum(count_over_time({${VAR_LABELS_EXPR}} ${metadataExpressionToAdd} ${VAR_METADATA_EXPR} ${VAR_PATTERNS_EXPR} ${VAR_LINE_FILTERS_EXPR} ${JSON_FORMAT_EXPR} ${VAR_FIELDS_EXPR} [$__auto])) by (${streamSelectorName})`;\n }\n if (parser === 'logfmt') {\n return `sum(count_over_time({${VAR_LABELS_EXPR}} ${metadataExpressionToAdd} ${VAR_METADATA_EXPR} ${VAR_PATTERNS_EXPR} ${VAR_LINE_FILTERS_EXPR} ${LOGS_FORMAT_EXPR} ${VAR_FIELDS_EXPR} [$__auto])) by (${streamSelectorName})`;\n }\n }\n return `sum(count_over_time({${VAR_LABELS_EXPR}} ${metadataExpressionToAdd} ${VAR_METADATA_EXPR} ${VAR_PATTERNS_EXPR} ${VAR_LINE_FILTERS_EXPR} ${VAR_FIELDS_EXPR} [$__auto])) by (${streamSelectorName})`;\n}\n\n/**\n * Get expressions for UI variables\n * @param variableType\n */\nexport function getFieldsTagValuesExpression(variableType: UIVariableFilterType) {\n switch (variableType) {\n case VAR_LEVELS:\n return DETECTED_LEVELS_VALUES_EXPR;\n case VAR_FIELDS_AND_METADATA:\n return DETECTED_FIELD_AND_METADATA_VALUES_EXPR;\n default:\n const error = new Error(`Unknown variable type: ${variableType}`);\n logger.error(error, {\n variableType,\n msg: `getFieldsTagValuesExpression: Unknown variable type: ${variableType}`,\n });\n throw error;\n }\n}\n","import { sceneGraph, SceneObject } from '@grafana/scenes';\nimport { IndexScene } from '../Components/IndexScene/IndexScene';\nimport { FavoriteServiceHeaderActionScene } from '../Components/ServiceSelectionScene/FavoriteServiceHeaderActionScene';\nimport { ServiceSelectionScene } from '../Components/ServiceSelectionScene/ServiceSelectionScene';\nimport { getDataSourceVariable } from './variableGetters';\nimport { addToFavoriteLabelValueInStorage, removeFromFavoritesInStorage } from './store';\n\nexport function rerenderFavorites(sceneRef: SceneObject) {\n // Find all FavoriteServiceHeaderActionScene and re-render\n const indexScene = sceneGraph.getAncestor(sceneRef, IndexScene);\n const favoriteServiceHeaderActionScene = sceneGraph.findAllObjects(\n indexScene,\n (o) => o instanceof FavoriteServiceHeaderActionScene\n );\n favoriteServiceHeaderActionScene.forEach((s) => s.forceRender());\n\n // Find the ServiceFieldSelector's parent (currently service selection scene) and force re-render so dropdown has correct order\n // @todo move ServiceFieldSelector to new scene\n const serviceSelectionScene = sceneGraph.findDescendents(indexScene, ServiceSelectionScene);\n serviceSelectionScene.forEach((s) => s.forceRender());\n}\n\nexport function addToFavorites(labelName: string, labelValue: string, sceneRef: SceneObject) {\n const ds = getDataSourceVariable(sceneRef).getValue();\n addToFavoriteLabelValueInStorage(ds, labelName, labelValue);\n rerenderFavorites(sceneRef);\n}\n\nexport function removeFromFavorites(labelName: string, labelValue: string, sceneRef: SceneObject) {\n const ds = getDataSourceVariable(sceneRef).getValue();\n removeFromFavoritesInStorage(ds, labelName, labelValue);\n rerenderFavorites(sceneRef);\n}\n","import { DataFrame, Field, ReducerID } from '@grafana/data';\nimport { DrawStyle, StackingMode } from '@grafana/ui';\nimport {\n AdHocFiltersVariable,\n PanelBuilders,\n SceneCSSGridItem,\n SceneDataTransformer,\n SceneObject,\n} from '@grafana/scenes';\nimport { AddToFiltersButton, InterpolatedFilterType } from 'Components/ServiceScene/Breakdowns/AddToFiltersButton';\nimport {\n DetectedFieldType,\n LEVEL_VARIABLE_VALUE,\n LogsQueryOptions,\n ParserType,\n VAR_FIELDS,\n VAR_LABELS,\n VAR_LEVELS,\n VAR_METADATA,\n} from './variables';\nimport { setLevelColorOverrides } from './panel';\nimport { map, Observable } from 'rxjs';\nimport { SortBy, SortByScene } from '../Components/ServiceScene/Breakdowns/SortByScene';\nimport { getDetectedFieldsFrame } from '../Components/ServiceScene/ServiceScene';\nimport { getLogsStreamSelector, getValueFromFieldsFilter } from './variableGetters';\nimport { logger } from './logger';\nimport { PanelMenu } from '../Components/Panels/PanelMenu';\nimport { getLabelTypeFromFrame } from './lokiQuery';\nimport { LabelType } from './fieldsTypes';\n\nexport type DetectedLabel = {\n label: string;\n cardinality: number;\n};\n\nexport type DetectedLabelsResponse = {\n detectedLabels: DetectedLabel[];\n};\n\nexport type DetectedField = {\n label: string;\n cardinality: number;\n type: string;\n parsers: string[] | null;\n};\n\nexport type DetectedFieldsResponse = {\n fields: DetectedField[];\n};\n\nconst getReducerId = (sortBy: SortBy) => {\n if (sortBy) {\n const values: string[] = Object.values(ReducerID);\n if (values.includes(sortBy)) {\n return sortBy;\n }\n }\n return undefined;\n};\n\n/**\n * Extracts the ExtractedFieldsType from the string returned on the detected_fields api parser field value\n * @param parserString\n */\nexport function extractParserFromString(parserString?: string): ParserType {\n switch (parserString) {\n case 'json':\n return 'json';\n case 'logfmt':\n return 'logfmt';\n case '': // Structured metadata is empty\n return 'structuredMetadata';\n case 'structuredMetadata': // Structured metadata is empty\n return 'structuredMetadata';\n default: // if we get a parser with multiple\n return 'mixed';\n }\n}\n\nexport function extractFieldTypeFromString(fieldString?: string): DetectedFieldType {\n switch (fieldString) {\n case 'int':\n case 'float':\n case 'duration':\n case 'boolean':\n case 'bytes':\n return fieldString;\n default:\n return 'string';\n }\n}\n\nexport function extractParserFromArray(parsers?: string[]): ParserType {\n const parsersSet = new Set(parsers?.map((v) => v.toString()) ?? []);\n\n // Structured metadata doesn't change the parser we use, so remove it\n parsersSet.delete('structuredMetadata');\n\n // get unique values\n const parsersArray = Array.from(parsersSet);\n\n if (parsersArray.length === 1) {\n return extractParserFromString(parsersArray[0]);\n }\n\n // If the set size is zero, we only had structured metadata detected as a parser\n if (parsersSet.size === 0) {\n return 'structuredMetadata';\n }\n\n // Otherwise if there was more then one value, return mixed parser\n return 'mixed';\n}\n\nexport function getParserForField(fieldName: string, sceneRef: SceneObject): ParserType | undefined {\n const detectedFieldsFrame = getDetectedFieldsFrame(sceneRef);\n const parserField: Field | undefined = detectedFieldsFrame?.fields[2];\n const namesField: Field | undefined = detectedFieldsFrame?.fields[0];\n\n const index = namesField?.values.indexOf(fieldName);\n const parser =\n index !== undefined && index !== -1 ? extractParserFromString(parserField?.values?.[index] ?? '') : undefined;\n\n if (parser === undefined) {\n logger.warn('missing parser, using mixed format for', { fieldName });\n return 'mixed';\n }\n return parser;\n}\n\nexport function getFilterBreakdownValueScene(\n getTitle: (df: DataFrame) => string,\n style: DrawStyle,\n variableName: typeof VAR_FIELDS | typeof VAR_LABELS | typeof VAR_METADATA,\n sortByScene: SortByScene,\n labelKey?: string\n) {\n return (frame: DataFrame, frameIndex: number) => {\n const reducerID = getReducerId(sortByScene.state.sortBy);\n const panel = PanelBuilders.timeseries()\n .setOption('legend', { showLegend: false })\n .setCustomFieldConfig('fillOpacity', 9)\n .setTitle(getTitle(frame))\n // 11.5\n // .setShowMenuAlways(true)\n .setData(\n new SceneDataTransformer({\n transformations: [() => selectFrameTransformation(frame)],\n })\n )\n .setOverrides(setLevelColorOverrides)\n .setMenu(new PanelMenu({ investigationOptions: { frame, fieldName: getTitle(frame), labelName: labelKey } }))\n .setHeaderActions([\n new AddToFiltersButton({ frame, variableName, hideExclude: labelKey === LEVEL_VARIABLE_VALUE }),\n ]);\n\n if (style === DrawStyle.Bars) {\n panel\n .setCustomFieldConfig('stacking', { mode: StackingMode.Normal })\n .setCustomFieldConfig('fillOpacity', 100)\n .setCustomFieldConfig('lineWidth', 0)\n .setCustomFieldConfig('pointSize', 0)\n .setOverrides(setLevelColorOverrides)\n .setCustomFieldConfig('drawStyle', DrawStyle.Bars);\n }\n\n if (reducerID) {\n panel.setOption('legend', {\n showLegend: true,\n calcs: [reducerID],\n });\n // These will only have a single series, no need to show the title twice\n panel.setDisplayName(' ');\n }\n\n return new SceneCSSGridItem({\n body: panel.build(),\n });\n };\n}\n\nexport function selectFrameTransformation(frame: DataFrame) {\n return (source: Observable) => {\n return source.pipe(\n map(() => {\n return [frame];\n })\n );\n };\n}\n\n/**\n * Returns the variable to use when adding filters in a panel.\n * @param frame\n * @param key\n * @param sceneRef\n */\nexport function getVariableForLabel(\n frame: DataFrame | undefined,\n key: string,\n sceneRef: SceneObject\n): InterpolatedFilterType {\n const labelType = frame ? getLabelTypeFromFrame(key, frame) : LabelType.Parsed;\n\n if (labelType) {\n // Use the labelType from the dataframe\n return getFilterTypeFromLabelType(labelType, key);\n }\n\n // If the dataframe doesn't have labelTypes, check if the detected_fields response returned a parser.\n const parserForThisField = getParserForField(key, sceneRef);\n if (parserForThisField === 'structuredMetadata') {\n return VAR_METADATA;\n }\n\n logger.warn('unable to determine label variable, falling back to parsed field', {\n key,\n parserForThisField: parserForThisField ?? '',\n });\n\n return VAR_FIELDS;\n}\n\nexport function getFilterTypeFromLabelType(type: LabelType, key: string): InterpolatedFilterType {\n switch (type) {\n case LabelType.Indexed: {\n return VAR_LABELS;\n }\n case LabelType.Parsed: {\n return VAR_FIELDS;\n }\n case LabelType.StructuredMetadata: {\n // Structured metadata is either a special level variable, or a field variable\n if (key === LEVEL_VARIABLE_VALUE) {\n return VAR_LEVELS;\n }\n return VAR_METADATA;\n }\n default: {\n const err = new Error(`Invalid label type for ${key}`);\n logger.error(err, { type, msg: `Invalid label type for ${key}` });\n throw err;\n }\n }\n}\n\nexport function getParserFromFieldsFilters(fields: AdHocFiltersVariable): ParserType {\n const parsers = fields.state.filters.map((filter) => {\n return getValueFromFieldsFilter(filter).parser;\n });\n\n return extractParserFromArray(parsers);\n}\n\nexport function isAvgField(fieldType: DetectedFieldType | undefined) {\n return fieldType === 'duration' || fieldType === 'bytes' || fieldType === 'float';\n}\n\nexport function buildFieldsQuery(optionValue: string, options: LogsQueryOptions) {\n if (options.fieldType && ['bytes', 'duration'].includes(options.fieldType)) {\n return (\n `avg_over_time(${getLogsStreamSelector(options)} | unwrap ` +\n options.fieldType +\n `(${optionValue}) | __error__=\"\" [$__auto]) by ()`\n );\n } else if (options.fieldType && options.fieldType === 'float') {\n return (\n `avg_over_time(${getLogsStreamSelector(options)} | unwrap ` + optionValue + ` | __error__=\"\" [$__auto]) by ()`\n );\n } else {\n return `sum by (${optionValue}) (count_over_time(${getLogsStreamSelector(options)} [$__auto]))`;\n }\n}\n\n/**\n * Returns the DetectedFieldType if available for a specific label\n * @param optionValue\n * @param detectedFieldsFrame\n */\nexport function getDetectedFieldType(optionValue: string, detectedFieldsFrame?: DataFrame) {\n const namesField: Field | undefined = detectedFieldsFrame?.fields[0];\n const typesField: Field | undefined = detectedFieldsFrame?.fields[3];\n const index = namesField?.values.indexOf(optionValue);\n return index !== undefined && index !== -1 ? extractFieldTypeFromString(typesField?.values?.[index]) : undefined;\n}\n\nexport function buildFieldsQueryString(\n optionValue: string,\n fieldsVariable: AdHocFiltersVariable,\n detectedFieldsFrame?: DataFrame\n) {\n const parserField: Field | undefined = detectedFieldsFrame?.fields[2];\n const namesField: Field | undefined = detectedFieldsFrame?.fields[0];\n const typesField: Field | undefined = detectedFieldsFrame?.fields[3];\n const index = namesField?.values.indexOf(optionValue);\n\n const parserForThisField =\n index !== undefined && index !== -1 ? extractParserFromString(parserField?.values?.[index]) : 'mixed';\n\n const optionType =\n index !== undefined && index !== -1 ? extractFieldTypeFromString(typesField?.values?.[index]) : undefined;\n\n // Get the parser from the json payload of each filter\n const parsers = fieldsVariable.state.filters.map((filter) => {\n const index = namesField?.values.indexOf(filter.key);\n const parserFromFilterValue = getValueFromFieldsFilter(filter);\n if (parserFromFilterValue.parser) {\n return parserFromFilterValue.parser;\n }\n\n // Then fallback to check the latest response\n const parser =\n index !== undefined && index !== -1\n ? extractParserFromString(parserField?.values?.[index] ?? 'mixed')\n : undefined;\n return parser ?? 'mixed';\n });\n\n const parser = extractParserFromArray([...parsers, parserForThisField]);\n\n let fieldExpressionToAdd = '';\n let structuredMetadataToAdd = '';\n\n if (parserForThisField === 'structuredMetadata') {\n structuredMetadataToAdd = `| ${optionValue}!=\"\"`;\n // Structured metadata\n } else {\n fieldExpressionToAdd = `| ${optionValue}!=\"\"`;\n }\n\n // is option structured metadata\n const options: LogsQueryOptions = {\n structuredMetadataToAdd,\n fieldExpressionToAdd,\n parser: parser,\n fieldType: optionType,\n };\n\n return buildFieldsQuery(optionValue, options);\n}\n\n// copied from /grafana/grafana/public/app/plugins/datasource/loki/datasource.ts:1204\nexport function lokiRegularEscape(value: T) {\n if (typeof value === 'string') {\n return value.replace(/'/g, \"\\\\\\\\'\");\n }\n return value;\n}\n","import { DetectedLabel } from './fields';\nimport {\n ALL_VARIABLE_VALUE,\n isAdHocFilterValueUserInput,\n LEVEL_VARIABLE_VALUE,\n stripAdHocFilterUserInputPrefix,\n} from './variables';\nimport { VariableValueOption } from '@grafana/scenes';\n\n// We want to show labels with cardinality 1 at the end of the list because they are less useful\n// And then we want to sort by cardinality - from lowest to highest\nexport function sortLabelsByCardinality(a: DetectedLabel, b: DetectedLabel) {\n if (a.cardinality === 1) {\n return 1;\n }\n if (b.cardinality === 1) {\n return -1;\n }\n return a.cardinality - b.cardinality;\n}\n\n// Creates label options by taking all labels and if LEVEL_VARIABLE_VALUE is not in the list, it is added at the beginning.\n// It also adds 'All' option at the beginning\nexport function getLabelOptions(labels: string[]) {\n const options = [...labels];\n if (!labels.includes(LEVEL_VARIABLE_VALUE)) {\n options.unshift(LEVEL_VARIABLE_VALUE);\n }\n\n const labelOptions: VariableValueOption[] = options.map((label) => ({\n label,\n value: String(label),\n }));\n\n return [{ label: 'All', value: ALL_VARIABLE_VALUE }, ...labelOptions];\n}\nexport const LEVEL_INDEX_NAME = 'level';\nexport const FIELDS_TO_REMOVE = ['level_extracted', LEVEL_VARIABLE_VALUE, LEVEL_INDEX_NAME];\n\nexport const LABELS_TO_REMOVE = ['__aggregated_metric__', '__stream_shard__'];\nexport function getFieldOptions(labels: string[]) {\n const options = [...labels];\n const labelOptions: VariableValueOption[] = options.map((label) => ({\n label,\n value: String(label),\n }));\n\n return [{ label: 'All', value: ALL_VARIABLE_VALUE }, ...labelOptions];\n}\n\n// Since \"meta\" is not saved in the URL state, it's ephemeral and can only be used for wip keys, but we can differentiate fields from metadata if the value is not encoded (and therefore different then the label)\nexport function isFilterMetadata(filter: { value: string; valueLabels?: string[] }) {\n const value = isAdHocFilterValueUserInput(filter.value)\n ? stripAdHocFilterUserInputPrefix(filter.value)\n : filter.value;\n return value === filter.valueLabels?.[0];\n}\n","import { AdHocFiltersVariable, SceneObject } from '@grafana/scenes';\nimport { LEVEL_VARIABLE_VALUE, VAR_FIELDS, VAR_LABELS, VAR_METADATA } from './variables';\nimport { getParserForField, getParserFromFieldsFilters } from './fields';\nimport { buildDataQuery } from './query';\nimport {\n getFieldsAndMetadataVariable,\n getFieldsVariable,\n getLabelsVariable,\n getLogsStreamSelector,\n getMetadataVariable,\n getValueFromFieldsFilter,\n} from './variableGetters';\nimport { addToFilters, FilterType } from '../Components/ServiceScene/Breakdowns/AddToFiltersButton';\nimport { isOperatorExclusive, isOperatorInclusive } from './operatorHelpers';\nimport { getLabelValueFromDataFrame } from './levels';\nimport { DataFrame } from '@grafana/data';\n\nexport const LABEL_BREAKDOWN_GRID_TEMPLATE_COLUMNS = 'repeat(auto-fit, minmax(400px, 1fr))';\n\nexport function buildLabelsQuery(sceneRef: SceneObject, optionValue: string, optionName: string) {\n let labelExpressionToAdd = '';\n let structuredMetadataToAdd = '';\n\n const fields = getFieldsVariable(sceneRef);\n const parser = getParserFromFieldsFilters(fields);\n\n if (optionName && optionName !== LEVEL_VARIABLE_VALUE) {\n labelExpressionToAdd = ` ,${optionName} != \"\"`;\n } else if (optionName && optionName === LEVEL_VARIABLE_VALUE) {\n structuredMetadataToAdd = ` | ${optionName} != \"\"`;\n }\n\n return buildDataQuery(\n `sum(count_over_time(${getLogsStreamSelector({\n labelExpressionToAdd,\n structuredMetadataToAdd,\n parser,\n })} [$__auto])) by (${optionValue})`,\n { legendFormat: `{{${optionValue}}}`, refId: 'LABEL_BREAKDOWN_VALUES' }\n );\n}\n\nexport function getLabelsFromSeries(series: DataFrame[]): string[] {\n const labels = series.map((dataFrame) => getLabelValueFromDataFrame(dataFrame));\n return labels.flatMap((f) => (f ? [f] : []));\n}\n\nexport function toggleFieldFromFilter(key: string, value: string, sceneRef: SceneObject): FilterType {\n const fieldsAndMetadataVariable = getFieldsAndMetadataVariable(sceneRef);\n const empty = fieldsAndMetadataVariable.state.filters.length === 0;\n const detectedFieldType = getParserForField(key, sceneRef);\n const isMetadata = detectedFieldType === 'structuredMetadata';\n\n const filterExists = fieldsAndMetadataVariable.state.filters.find((filter) => {\n if (isMetadata) {\n return isOperatorInclusive(filter.operator) && filter.value === value;\n }\n return isOperatorInclusive(filter.operator) && getValueFromFieldsFilter(filter).value === value;\n });\n\n if (empty || !filterExists) {\n addToFilters(key, value, 'include', sceneRef, isMetadata ? VAR_METADATA : VAR_FIELDS);\n return 'include';\n } else {\n addToFilters(key, value, 'toggle', sceneRef, isMetadata ? VAR_METADATA : VAR_FIELDS);\n return 'toggle';\n }\n}\n\nexport function toggleLabelFromFilter(key: string, value: string, sceneRef: SceneObject): FilterType {\n const labelsVariable = getLabelsVariable(sceneRef);\n const empty = labelsVariable.state.filters.length === 0;\n const filterExists = labelsVariable.state.filters.find(\n (filter) => filter.value === value && isOperatorInclusive(filter.operator)\n );\n\n if (empty || !filterExists) {\n addToFilters(key, value, 'include', sceneRef, VAR_LABELS);\n return 'include';\n } else {\n addToFilters(key, value, 'toggle', sceneRef, VAR_LABELS);\n return 'toggle';\n }\n}\n\nexport function getVisibleLabels(key: string, allLabels: string[], sceneRef: SceneObject) {\n const labelsVariable = getLabelsVariable(sceneRef);\n return getVisibleFilters(key, allLabels, labelsVariable);\n}\n\nexport function getVisibleFields(key: string, allLabels: string[], sceneRef: SceneObject) {\n const fieldsVariable = getFieldsVariable(sceneRef);\n return getVisibleFilters(key, allLabels, fieldsVariable);\n}\n\nexport function getVisibleMetadata(key: string, allLabels: string[], sceneRef: SceneObject) {\n const metadataVariable = getMetadataVariable(sceneRef);\n return getVisibleFilters(key, allLabels, metadataVariable);\n}\n\nexport function getVisibleFilters(key: string, allLabels: string[], variable: AdHocFiltersVariable) {\n const inclusiveFilters = variable.state.filters\n .filter((filter) => filter.key === key && isOperatorInclusive(filter.operator))\n .map((filter) => (variable.state.name === VAR_FIELDS ? getValueFromFieldsFilter(filter).value : filter.value));\n const exclusiveLabels = variable.state.filters\n .filter((filter) => filter.key === key && isOperatorExclusive(filter.operator))\n .map((filter) => (variable.state.name === VAR_FIELDS ? getValueFromFieldsFilter(filter).value : filter.value));\n\n return allLabels.filter((label) => {\n if (exclusiveLabels.includes(label)) {\n return false;\n }\n return inclusiveFilters.length === 0 || inclusiveFilters.includes(label);\n });\n}\n","import { DataFrame } from '@grafana/data';\nimport { SeriesVisibilityChangeMode } from '@grafana/ui';\nimport { LEVEL_VARIABLE_VALUE, VAR_LEVELS } from './variables';\nimport { SceneObject } from '@grafana/scenes';\nimport { addToFilters, FilterType } from 'Components/ServiceScene/Breakdowns/AddToFiltersButton';\nimport { getLevelsVariable } from './variableGetters';\n\nimport { isOperatorExclusive, isOperatorInclusive } from './operatorHelpers';\n\n/**\n * Given a set of `visibleLevels` in a panel, it returns a list of the new visible levels\n * after applying the visibility change in `mode`.\n */\nexport function toggleLevelVisibility(\n level: string,\n visibleLevels: string[] | undefined,\n mode: SeriesVisibilityChangeMode,\n allLevels: string[]\n) {\n if (mode === SeriesVisibilityChangeMode.ToggleSelection) {\n const levels = visibleLevels ?? [];\n if (levels.length === 1 && levels.includes(level)) {\n return [];\n }\n return [level];\n }\n /**\n * When the behavior is `AppendToSelection` and the filter is empty, we initialize it\n * with all levels because the user is excluding this level in their action.\n */\n let levels = !visibleLevels?.length ? allLevels : visibleLevels;\n if (levels.includes(level)) {\n return levels.filter((existingLevel) => existingLevel !== level);\n }\n\n return [...levels, level];\n}\n\nexport function getLevelLabelsFromSeries(series: DataFrame[]) {\n return series.map((dataFrame) => getLabelValueFromDataFrame(dataFrame) ?? 'logs');\n}\n\nexport function getLabelValueFromDataFrame(frame: DataFrame) {\n const labels = frame.fields[1]?.labels;\n\n if (!labels) {\n return null;\n }\n\n const keys = Object.keys(labels);\n if (keys.length === 0) {\n return null;\n }\n\n return labels[keys[0]];\n}\n\n/*\n * From the current state of the levels filter, return the level names that\n * the user wants to see.\n */\nexport function getVisibleLevels(allLevels: string[], sceneRef: SceneObject) {\n const levelsFilter = getLevelsVariable(sceneRef);\n const wantedLevels = levelsFilter.state.filters\n .filter((filter) => isOperatorInclusive(filter.operator))\n .map((filter) => filter.value.split('|').map(normalizeLevelName))\n .join('|');\n const unwantedLevels = levelsFilter.state.filters\n .filter((filter) => isOperatorExclusive(filter.operator))\n .map((filter) => filter.value.split('|').map(normalizeLevelName))\n .join('|');\n return allLevels.filter((level) => {\n if (unwantedLevels.includes(level)) {\n return false;\n }\n return wantedLevels.length === 0 || wantedLevels.includes(level);\n });\n}\n\nfunction normalizeLevelName(level: string) {\n if (level === '\"\"') {\n return 'logs';\n }\n return level;\n}\n\n/**\n * Toggle a level from the filter state.\n * If the filter is empty, it's added.\n * If the filter exists but it's different, it's replaced.\n * If the filter exists, it's removed.\n */\nexport function toggleLevelFromFilter(level: string, sceneRef: SceneObject): FilterType {\n const levelFilter = getLevelsVariable(sceneRef);\n const empty = levelFilter.state.filters.length === 0;\n const filterExists = levelFilter.state.filters.find(\n (filter) => filter.value === level && isOperatorInclusive(filter.operator)\n );\n\n if (level === 'logs') {\n level = '\"\"';\n }\n\n if (empty || !filterExists) {\n addToFilters(LEVEL_VARIABLE_VALUE, level, 'include', sceneRef, VAR_LEVELS);\n return 'include';\n } else {\n addToFilters(LEVEL_VARIABLE_VALUE, level, 'toggle', sceneRef, VAR_LEVELS);\n return 'toggle';\n }\n}\n","import {\n arrayToDataFrame,\n DataFrame,\n DataFrameType,\n DataTopic,\n Field,\n FieldCache,\n FieldType,\n FieldWithIndex,\n Labels,\n} from '@grafana/data';\n\n// these are like Labels, but their values can be\n// arbitrary structures, not just strings\nexport type LogFrameLabels = Record;\n\n// the attributes-access is a little awkward, but it's necessary\n// because there are multiple,very different dataFrame-representations.\nexport type LogsFrame = {\n timeField: FieldWithIndex;\n bodyField: FieldWithIndex;\n timeNanosecondField: FieldWithIndex | null;\n severityField: FieldWithIndex | null;\n idField: FieldWithIndex | null;\n getLogFrameLabels: () => LogFrameLabels[] | null; // may be slow, so we only do it when asked for it explicitly\n getLogFrameLabelsAsLabels: () => Labels[] | null; // temporarily exists to make the labels=>attributes migration simpler\n getLabelFieldName: () => string | null;\n extraFields: FieldWithIndex[];\n raw: DataFrame;\n};\n\nfunction getField(cache: FieldCache, name: string, fieldType: FieldType): FieldWithIndex | undefined {\n const field = cache.getFieldByName(name);\n if (field === undefined) {\n return undefined;\n }\n\n return field.type === fieldType ? field : undefined;\n}\n\nexport const DATAPLANE_TIMESTAMP_NAME = 'timestamp';\nexport const DATAPLANE_BODY_NAME = 'body';\nexport const DATAPLANE_SEVERITY_NAME = 'severity';\nexport const DATAPLANE_ID_NAME = 'id';\nexport const DATAPLANE_LABELS_NAME = 'labels';\n\nexport function logFrameLabelsToLabels(logFrameLabels: LogFrameLabels): Labels {\n const result: Labels = {};\n\n Object.entries(logFrameLabels).forEach(([k, v]) => {\n result[k] = typeof v === 'string' ? v : JSON.stringify(v);\n });\n\n return result;\n}\n\nexport function parseLogsFrame(frame: DataFrame): LogsFrame | null {\n if (frame.meta?.type === DataFrameType.LogLines) {\n return parseDataplaneLogsFrame(frame);\n } else {\n return parseLegacyLogsFrame(frame);\n }\n}\n\nexport function parseDataplaneLogsFrame(frame: DataFrame): LogsFrame | null {\n const cache = new FieldCache(frame);\n\n const timestampField = getField(cache, DATAPLANE_TIMESTAMP_NAME, FieldType.time);\n const bodyField = getField(cache, DATAPLANE_BODY_NAME, FieldType.string);\n\n // these two are mandatory\n if (timestampField === undefined || bodyField === undefined) {\n return null;\n }\n\n const severityField = getField(cache, DATAPLANE_SEVERITY_NAME, FieldType.string) ?? null;\n const idField = getField(cache, DATAPLANE_ID_NAME, FieldType.string) ?? null;\n const labelsField = getField(cache, DATAPLANE_LABELS_NAME, FieldType.other) ?? null;\n\n const labels = labelsField === null ? null : labelsField.values;\n\n const extraFields = cache.fields.filter(\n (_, i) =>\n i !== timestampField.index &&\n i !== bodyField.index &&\n i !== severityField?.index &&\n i !== idField?.index &&\n i !== labelsField?.index\n );\n\n return {\n raw: frame,\n timeField: timestampField,\n bodyField,\n severityField,\n idField,\n getLogFrameLabels: () => labels,\n timeNanosecondField: null,\n getLogFrameLabelsAsLabels: () => (labels !== null ? labels.map(logFrameLabelsToLabels) : null),\n getLabelFieldName: () => (labelsField !== null ? labelsField.name : null),\n extraFields,\n };\n}\n\n// Copied from https://github.com/grafana/grafana/blob/main/public/app/features/logs/legacyLogsFrame.ts\nexport function parseLegacyLogsFrame(frame: DataFrame): LogsFrame | null {\n const cache = new FieldCache(frame);\n const timeField = cache.getFirstFieldOfType(FieldType.time);\n const bodyField = cache.getFirstFieldOfType(FieldType.string);\n\n // these two are mandatory\n if (timeField === undefined || bodyField === undefined) {\n return null;\n }\n\n const timeNanosecondField = cache.getFieldByName('tsNs') ?? null;\n const severityField = cache.getFieldByName('level') ?? null;\n const idField = cache.getFieldByName('id') ?? null;\n\n // extracting the labels is done very differently for old-loki-style and simple-style\n // dataframes, so it's a little awkward to handle it,\n // we both need to on-demand extract the labels, and also get teh labelsField,\n // but only if the labelsField is used.\n const [labelsField, getL] = makeLabelsGetter(cache, bodyField, frame);\n\n const extraFields = cache.fields.filter(\n (_, i) =>\n i !== timeField.index &&\n i !== bodyField.index &&\n i !== timeNanosecondField?.index &&\n i !== severityField?.index &&\n i !== idField?.index &&\n i !== labelsField?.index\n );\n\n return {\n timeField,\n bodyField,\n timeNanosecondField,\n severityField,\n idField,\n getLogFrameLabels: getL,\n getLogFrameLabelsAsLabels: getL,\n getLabelFieldName: () => labelsField?.name ?? null,\n extraFields,\n raw: frame,\n };\n}\n\n// if the frame has \"labels\" field with type \"other\", adjust the behavior.\n// we also have to return the labels-field (if we used it),\n// to be able to remove it from the unused-fields, later.\nfunction makeLabelsGetter(\n cache: FieldCache,\n lineField: Field,\n frame: DataFrame\n): [FieldWithIndex | null, () => Labels[] | null] {\n // If we have labels field with type \"other\", use that\n const labelsField = cache.getFieldByName('labels');\n if (labelsField !== undefined && labelsField.type === FieldType.other) {\n const values = labelsField.values.map(logFrameLabelsToLabels);\n return [labelsField, () => values];\n } else {\n // Otherwise we use the labels on the line-field, and make an array with it\n return [null, () => makeLabelsArray(lineField, frame.length)];\n }\n}\n\n// take the labels from the line-field, and \"stretch\" it into an array\n// with the length of the frame (so there are the same labels for every row)\nfunction makeLabelsArray(lineField: Field, length: number): Labels[] | null {\n const lineLabels = lineField.labels;\n if (lineLabels !== undefined) {\n const result = new Array(length);\n result.fill(lineLabels);\n return result;\n } else {\n return null;\n }\n}\n\nexport function getTimeName(logsFrame?: LogsFrame) {\n return logsFrame?.timeField.name ?? DATAPLANE_TIMESTAMP_NAME;\n}\n\nexport function getBodyName(logsFrame?: LogsFrame | null): string {\n return logsFrame?.bodyField.name ?? DATAPLANE_BODY_NAME;\n}\n\nexport function getIdName(logsFrame?: LogsFrame): string {\n return logsFrame?.idField?.name ?? DATAPLANE_ID_NAME;\n}\n\nexport function getSeriesVisibleRange(series: DataFrame[]) {\n let start = 0;\n let end = 0;\n\n const timeField = series[0]?.fields.find((field) => field.type === FieldType.time);\n if (timeField) {\n const values = [...timeField.values].sort();\n const oldestFirst = values[0] < values[values.length - 1];\n start = oldestFirst ? values[0] : values[values.length - 1];\n end = oldestFirst ? values[values.length - 1] : values[0];\n }\n return { start, end };\n}\n\nexport const VISIBLE_RANGE_NAME = 'Visible range';\nexport function getVisibleRangeFrame(start: number, end: number) {\n const frame = arrayToDataFrame([\n {\n time: start,\n timeEnd: end,\n isRegion: true,\n text: 'Range from oldest to newest logs in display',\n color: 'rgba(58, 113, 255, 0.3)',\n },\n ]);\n frame.name = VISIBLE_RANGE_NAME;\n frame.meta = {\n dataTopic: DataTopic.Annotations,\n };\n\n return frame;\n}\n\nexport function isEmptyLogsResult(series: DataFrame[]) {\n return series.length === 0 || series[0].fields[0].values.length === 0;\n}\n","import { ServiceSceneCustomState } from '../Components/ServiceScene/ServiceScene';\n\nlet metadataService: MetadataService;\n\nexport function initializeMetadataService(): void {\n if (!metadataService) {\n metadataService = new MetadataService();\n }\n}\n\n/**\n * Singleton class for sharing state across drilldown routes with common parent scene\n */\nexport class MetadataService {\n private serviceSceneState: ServiceSceneCustomState | undefined = undefined;\n public getServiceSceneState() {\n return this.serviceSceneState;\n }\n\n public setPatternsCount(count: number) {\n if (!this.serviceSceneState) {\n this.serviceSceneState = {};\n }\n\n this.serviceSceneState.patternsCount = count;\n }\n\n public setLabelsCount(count: number) {\n if (!this.serviceSceneState) {\n this.serviceSceneState = {};\n }\n\n this.serviceSceneState.labelsCount = count;\n }\n\n public setFieldsCount(count: number) {\n if (!this.serviceSceneState) {\n this.serviceSceneState = {};\n }\n\n this.serviceSceneState.fieldsCount = count;\n }\n\n public setServiceSceneState(state: ServiceSceneCustomState) {\n this.serviceSceneState = {\n patternsCount: state.patternsCount,\n labelsCount: state.labelsCount,\n fieldsCount: state.fieldsCount,\n loading: state.loading,\n logsCount: state.logsCount,\n totalLogsCount: state.totalLogsCount,\n };\n }\n}\n\nexport function getMetadataService(): MetadataService {\n return metadataService;\n}\n","import { ServiceScene } from '../Components/ServiceScene/ServiceScene';\nimport { IndexScene } from '../Components/IndexScene/IndexScene';\nimport { ALL_VARIABLE_VALUE } from './variables';\nimport { getMetadataService } from './metadata';\nimport { locationService } from '@grafana/runtime';\nimport { buildServicesUrl, DRILLDOWN_URL_KEYS, PageSlugs, ROUTES, ValueSlugs } from './routing';\nimport { sceneGraph } from '@grafana/scenes';\nimport { UrlQueryMap, urlUtil } from '@grafana/data';\nimport { replaceSlash } from './extensions/links';\nimport { prefixRoute } from './plugin';\n\nlet previousRoute: string | undefined = undefined;\n\nfunction buildValueBreakdownUrl(label: string, newPath: ValueSlugs, labelValue: string, labelName = 'service') {\n if (label === ALL_VARIABLE_VALUE && newPath === ValueSlugs.label) {\n return prefixRoute(`${PageSlugs.explore}/${labelName}/${replaceSlash(labelValue)}/${PageSlugs.labels}`);\n } else if (label === ALL_VARIABLE_VALUE && newPath === ValueSlugs.field) {\n return prefixRoute(`${PageSlugs.explore}/${labelName}/${replaceSlash(labelValue)}/${PageSlugs.fields}`);\n } else {\n return prefixRoute(\n `${PageSlugs.explore}/${labelName}/${replaceSlash(labelValue)}/${newPath}/${replaceSlash(label)}`\n );\n }\n}\n\nexport function buildDrilldownPageUrl(path: PageSlugs | string, extraQueryParams?: UrlQueryMap): string {\n return urlUtil.renderUrl(path, buildDrilldownPageRoute(extraQueryParams));\n}\n\nexport function buildDrilldownPageRoute(extraQueryParams?: UrlQueryMap): UrlQueryMap {\n return {\n ...Object.entries(urlUtil.getUrlSearchParams()).reduce((acc, [key, value]) => {\n if (DRILLDOWN_URL_KEYS.includes(key)) {\n acc[key] = value;\n }\n\n return acc;\n }, {}),\n ...extraQueryParams,\n };\n}\n\nexport function getValueBreakdownLink(newPath: ValueSlugs, label: string, serviceScene: ServiceScene) {\n const indexScene = sceneGraph.getAncestor(serviceScene, IndexScene);\n const urlLabelName = indexScene.state.routeMatch?.params.labelName;\n const urlLabelValue = indexScene.state.routeMatch?.params.labelValue;\n\n if (urlLabelName && urlLabelValue) {\n let urlPath = buildValueBreakdownUrl(label, newPath, urlLabelValue, urlLabelName);\n const fullUrl = buildDrilldownPageUrl(urlPath);\n\n // If we're going to navigate, we need to share the state between this instantiation of the service scene\n if (serviceScene) {\n const metadataService = getMetadataService();\n metadataService.setServiceSceneState(serviceScene.state);\n }\n\n return fullUrl;\n }\n\n return '';\n}\n\n/**\n * Navigate to value breakdown url\n * @param newPath\n * @param label\n * @param serviceScene\n */\nexport function navigateToValueBreakdown(newPath: ValueSlugs, label: string, serviceScene: ServiceScene) {\n const link = getValueBreakdownLink(newPath, label, serviceScene);\n if (link) {\n pushUrlHandler(link);\n }\n}\n\n/**\n * The case for initial navigation from the service selection to the service index is a special case, as we don't yet have a serviceScene constructed to pull the selected service.\n * This function will route users to the initial (logs) page from the service selection view, which will populate the service scene state with the selected service string.\n * @param labelName\n * @param labelValue\n */\nexport function getDrillDownIndexLink(labelName: string, labelValue: string, labelFilters?: UrlQueryMap) {\n const breakdownUrl = buildDrilldownPageUrl(ROUTES.logs(labelValue, labelName), labelFilters);\n return breakdownUrl;\n}\n\nexport function getDrillDownTabLink(path: PageSlugs, serviceScene: ServiceScene, extraQueryParams?: UrlQueryMap) {\n const indexScene = sceneGraph.getAncestor(serviceScene, IndexScene);\n const urlLabelValue = indexScene.state.routeMatch?.params.labelValue;\n const urlLabelName = indexScene.state.routeMatch?.params.labelName;\n\n if (urlLabelValue) {\n const fullUrl = prefixRoute(`${PageSlugs.explore}/${urlLabelName}/${replaceSlash(urlLabelValue)}/${path}`);\n return buildDrilldownPageUrl(fullUrl, extraQueryParams);\n }\n return '';\n}\n\n/**\n * Navigates to the drilldown page specified by the path slug\n *\n * @param path\n * @param serviceScene\n * @param extraQueryParams\n */\nexport function navigateToDrilldownPage(path: PageSlugs, serviceScene: ServiceScene, extraQueryParams?: UrlQueryMap) {\n const drilldownLink = getDrillDownTabLink(path, serviceScene, extraQueryParams);\n\n if (drilldownLink) {\n // If we're going to navigate, we need to share the state between this instantiation of the service scene\n if (serviceScene) {\n const metadataService = getMetadataService();\n metadataService.setServiceSceneState(serviceScene.state);\n }\n\n pushUrlHandler(drilldownLink);\n return;\n }\n}\n\nexport function pushUrlHandler(newUrl: string) {\n previousRoute = newUrl;\n locationService.push(newUrl);\n}\n\nexport function addCurrentUrlToHistory() {\n // Add the current url to browser history before the state is changed so the user can revert their change.\n const location = locationService.getLocation();\n locationService.push(location.pathname + location.search);\n}\n\n/**\n * Navigate to the services selection url\n */\nexport function navigateToIndex() {\n const location = locationService.getLocation();\n const serviceUrl = buildServicesUrl(ROUTES.explore());\n const currentUrl = location.pathname + location.search;\n const search = locationService.getSearch();\n\n if (serviceUrl === currentUrl || currentUrl.includes(serviceUrl)) {\n return;\n }\n\n if (!search.get('var-filters')) {\n // If we don't have filters, we don't want to keep this url in browser history since this is fired AFTER the url props are made invalid, push the previous route and replace it\n if (previousRoute) {\n locationService.replace(previousRoute);\n }\n locationService.push(serviceUrl);\n } else {\n pushUrlHandler(serviceUrl);\n }\n}\n","import { QueryRunnerState, sceneGraph, SceneQueryRunner } from '@grafana/scenes';\n\nexport class LogsSceneQueryRunner extends SceneQueryRunner {\n constructor(initialState: QueryRunnerState) {\n super(initialState);\n }\n\n public runQueries() {\n const timeRange = sceneGraph.getTimeRange(this);\n\n // We don't want to subscribe to time range changes, or we'll get duplicate queries\n // this.subscribeToTimeRangeChanges(timeRange);\n\n // @todo can we make runWithTimeRange protected? (https://github.com/grafana/scenes/pull/866)\n // Hack to call private method\n this['runWithTimeRange'](timeRange);\n }\n}\n","import {\n DataFrame,\n FieldColorModeId,\n FieldConfig,\n FieldMatcherID,\n FieldType,\n getFieldDisplayName,\n} from '@grafana/data';\nimport {\n FieldConfigBuilder,\n FieldConfigBuilders,\n FieldConfigOverridesBuilder,\n PanelBuilders,\n QueryRunnerState,\n SceneDataProvider,\n SceneDataTransformer,\n SceneObject,\n SceneQueryRunner,\n VizPanel,\n} from '@grafana/scenes';\nimport { map, Observable } from 'rxjs';\nimport { HideSeriesConfig, LogsSortOrder } from '@grafana/schema';\nimport { WRAPPED_LOKI_DS_UID } from './datasource';\nimport { LogsSceneQueryRunner } from './LogsSceneQueryRunner';\nimport { DrawStyle, StackingMode } from '@grafana/ui';\nimport { getLevelLabelsFromSeries, getVisibleLevels } from './levels';\nimport { LokiQuery, LokiQueryDirection } from './lokiQuery';\nimport { LOGS_COUNT_QUERY_REFID, LOGS_PANEL_QUERY_REFID } from '../Components/ServiceScene/ServiceScene';\nimport { getLogsPanelSortOrderFromStore, getLogsPanelSortOrderFromURL } from 'Components/ServiceScene/LogOptionsScene';\nimport { getLabelsFromSeries, getVisibleFields, getVisibleLabels, getVisibleMetadata } from './labels';\nimport { getParserForField } from './fields';\n\nconst UNKNOWN_LEVEL_LOGS = 'logs';\nexport const INFO_LEVEL_FIELD_NAME_REGEX = /^info$/i;\nexport const DEBUG_LEVEL_FIELD_NAME_REGEX = /^debug$/i;\nexport const WARNING_LEVEL_FIELD_NAME_REGEX = /^(warn|warning)$/i;\nexport const ERROR_LEVEL_FIELD_NAME_REGEX = /^error$/i;\nexport const CRITICAL_LEVEL_FIELD_NAME_REGEX = /^(crit|critical|fatal)$/i;\nexport const UNKNOWN_LEVEL_FIELD_NAME_REGEX = /^(logs|unknown)$/i;\n\nexport function setLevelColorOverrides(overrides: FieldConfigOverridesBuilder) {\n overrides.matchFieldsWithNameByRegex(INFO_LEVEL_FIELD_NAME_REGEX.source).overrideColor({\n mode: 'fixed',\n fixedColor: 'semi-dark-green',\n });\n overrides.matchFieldsWithNameByRegex(DEBUG_LEVEL_FIELD_NAME_REGEX.source).overrideColor({\n mode: 'fixed',\n fixedColor: 'semi-dark-blue',\n });\n overrides.matchFieldsWithNameByRegex(WARNING_LEVEL_FIELD_NAME_REGEX.source).overrideColor({\n mode: 'fixed',\n fixedColor: 'semi-dark-orange',\n });\n overrides.matchFieldsWithNameByRegex(ERROR_LEVEL_FIELD_NAME_REGEX.source).overrideColor({\n mode: 'fixed',\n fixedColor: 'semi-dark-red',\n });\n overrides.matchFieldsWithNameByRegex(CRITICAL_LEVEL_FIELD_NAME_REGEX.source).overrideColor({\n mode: 'fixed',\n fixedColor: '#705da0',\n });\n overrides.matchFieldsWithNameByRegex(UNKNOWN_LEVEL_FIELD_NAME_REGEX.source).overrideColor({\n mode: 'fixed',\n fixedColor: 'darkgray',\n });\n}\n\nexport function setLogsVolumeFieldConfigs(\n builder: ReturnType | ReturnType\n) {\n return builder\n .setCustomFieldConfig('stacking', { mode: StackingMode.Normal })\n .setCustomFieldConfig('fillOpacity', 100)\n .setCustomFieldConfig('lineWidth', 0)\n .setCustomFieldConfig('pointSize', 0)\n .setCustomFieldConfig('axisSoftMin', 0)\n .setCustomFieldConfig('drawStyle', DrawStyle.Bars)\n .setOverrides(setLevelColorOverrides);\n}\n\nexport function setValueSummaryFieldConfigs(\n builder: ReturnType | ReturnType\n) {\n return builder\n .setCustomFieldConfig('stacking', { mode: StackingMode.Normal })\n .setCustomFieldConfig('fillOpacity', 100)\n .setCustomFieldConfig('lineWidth', 0)\n .setCustomFieldConfig('pointSize', 0)\n .setCustomFieldConfig('drawStyle', DrawStyle.Bars);\n}\n\ninterface TimeSeriesFieldConfig extends FieldConfig {\n hideFrom: HideSeriesConfig;\n}\n\nexport function setLabelSeriesOverrides(labels: string[], overrideConfig: FieldConfigOverridesBuilder) {\n overrideConfig\n .match({\n id: FieldMatcherID.byNames,\n options: {\n mode: 'exclude',\n names: labels,\n prefix: 'All except:',\n readOnly: true,\n },\n })\n .overrideCustomFieldConfig('hideFrom', {\n legend: false,\n tooltip: false,\n viz: true,\n });\n\n // Setting __systemRef to hideSeriesFrom, allows the override to be changed by interacting with the viz\n const overrides = overrideConfig.build();\n // @ts-expect-error\n overrides[overrides.length - 1].__systemRef = 'hideSeriesFrom';\n}\n\n/**\n * Sets labels series visibility in the panel\n */\nexport function syncLevelsVisibleSeries(panel: VizPanel, series: DataFrame[], sceneRef: SceneObject) {\n const focusedLevels = getVisibleLevels(getLevelLabelsFromSeries(series), sceneRef);\n const config = setLogsVolumeFieldConfigs(FieldConfigBuilders.timeseries()).setOverrides(\n setLabelSeriesOverrides.bind(null, focusedLevels)\n );\n if (config instanceof FieldConfigBuilder) {\n panel.onFieldConfigChange(config.build(), true);\n }\n}\n\n/**\n * @todo unit test\n * Set levels series visibility in the panel\n */\nexport function syncLabelsValueSummaryVisibleSeries(\n key: string,\n panel: VizPanel,\n series: DataFrame[],\n sceneRef: SceneObject\n) {\n const allLabels = getLabelsFromSeries(series);\n const focusedLabels = getVisibleLabels(key, allLabels, sceneRef);\n\n const config = setValueSummaryFieldConfigs(FieldConfigBuilders.timeseries());\n if (focusedLabels.length) {\n config.setOverrides(setLabelSeriesOverrides.bind(null, focusedLabels));\n }\n if (config instanceof FieldConfigBuilder) {\n panel.onFieldConfigChange(config.build(), true);\n }\n}\n\n/**\n * Set fields series visibility in the panel\n */\nexport function syncFieldsValueSummaryVisibleSeries(\n key: string,\n panel: VizPanel,\n series: DataFrame[],\n sceneRef: SceneObject\n) {\n const allLabels = getLabelsFromSeries(series);\n const detectedFieldType = getParserForField(key, sceneRef);\n\n const focusedLabels =\n detectedFieldType === 'structuredMetadata'\n ? getVisibleMetadata(key, allLabels, sceneRef)\n : getVisibleFields(key, allLabels, sceneRef);\n\n const config = setValueSummaryFieldConfigs(FieldConfigBuilders.timeseries());\n\n if (focusedLabels.length) {\n config.setOverrides(setLabelSeriesOverrides.bind(null, focusedLabels));\n }\n if (config instanceof FieldConfigBuilder) {\n panel.onFieldConfigChange(config.build(), true);\n }\n}\n\nfunction setColorByDisplayNameTransformation() {\n return (source: Observable) => {\n return source.pipe(\n map((data: DataFrame[]) => {\n return data.map((frame, frameIndex) => {\n return {\n ...frame,\n fields: frame.fields.map((f, fieldIndex) => {\n // Time fields do not have color config\n if (f.type === FieldType.time) {\n return f;\n }\n const displayName = getFieldDisplayName(f, frame, data);\n return {\n ...f,\n config: {\n ...f.config,\n displayName,\n color: {\n mode: FieldColorModeId.PaletteClassicByName,\n },\n },\n };\n }),\n };\n });\n })\n );\n };\n}\n\nexport function sortLevelTransformation() {\n return (source: Observable) => {\n return source.pipe(\n map((data: DataFrame[]) => {\n return data\n .map((d) => {\n if (d.fields.length < 2) {\n return d;\n }\n if (!d.fields[1].config.displayNameFromDS) {\n d.fields[1].config.displayNameFromDS = UNKNOWN_LEVEL_LOGS;\n }\n return d;\n })\n .sort((a, b) => {\n if (a.fields.length < 2 || b.fields.length < 2) {\n return 0;\n }\n const aName: string | undefined = a.fields[1].config.displayNameFromDS;\n const aVal = aName?.match(CRITICAL_LEVEL_FIELD_NAME_REGEX)\n ? 5\n : aName?.match(ERROR_LEVEL_FIELD_NAME_REGEX)\n ? 4\n : aName?.match(WARNING_LEVEL_FIELD_NAME_REGEX)\n ? 3\n : aName?.match(DEBUG_LEVEL_FIELD_NAME_REGEX)\n ? 2\n : aName?.match(INFO_LEVEL_FIELD_NAME_REGEX)\n ? 2\n : 1;\n const bName: string | undefined = b.fields[1].config.displayNameFromDS;\n const bVal = bName?.match(CRITICAL_LEVEL_FIELD_NAME_REGEX)\n ? 5\n : bName?.match(ERROR_LEVEL_FIELD_NAME_REGEX)\n ? 4\n : bName?.match(WARNING_LEVEL_FIELD_NAME_REGEX)\n ? 3\n : bName?.match(DEBUG_LEVEL_FIELD_NAME_REGEX)\n ? 2\n : bName?.match(INFO_LEVEL_FIELD_NAME_REGEX)\n ? 2\n : 1;\n\n return aVal - bVal;\n });\n })\n );\n };\n}\n\nexport function getResourceQueryRunner(queries: LokiQuery[]) {\n return new LogsSceneQueryRunner({\n datasource: { uid: WRAPPED_LOKI_DS_UID },\n queries: queries,\n });\n}\n\nexport function getQueryRunner(queries: LokiQuery[], queryRunnerOptions?: Partial) {\n // if there's a legendFormat related to any `level` like label, we want to\n // sort the output equally. That's purposefully not `LEVEL_VARIABLE_VALUE`,\n // such that the `detected_level` graph looks the same as a graph for the\n // `level` label.\n\n const hasLevel = queries.find((query) => query.legendFormat?.toLowerCase().includes('level'));\n const isLogPanelQuery = queries.find(\n (query) => query.refId === LOGS_PANEL_QUERY_REFID || query.refId === LOGS_COUNT_QUERY_REFID\n );\n\n if (hasLevel) {\n return new SceneDataTransformer({\n $data: getSceneQueryRunner({\n datasource: { uid: WRAPPED_LOKI_DS_UID },\n queries: queries,\n ...queryRunnerOptions,\n }),\n transformations: [sortLevelTransformation],\n });\n }\n\n if (!isLogPanelQuery) {\n return new SceneDataTransformer({\n $data: getSceneQueryRunner({\n datasource: { uid: WRAPPED_LOKI_DS_UID },\n queries: queries,\n ...queryRunnerOptions,\n }),\n transformations: [setColorByDisplayNameTransformation],\n });\n } else {\n queries = queries.map((query) => ({\n ...query,\n get direction() {\n const sortOrder = getLogsPanelSortOrderFromURL() || getLogsPanelSortOrderFromStore();\n return sortOrder === LogsSortOrder.Descending ? LokiQueryDirection.Backward : LokiQueryDirection.Forward;\n },\n }));\n }\n\n return getSceneQueryRunner({\n datasource: { uid: WRAPPED_LOKI_DS_UID },\n queries: queries,\n ...queryRunnerOptions,\n });\n}\n\nexport function getSceneQueryRunner(queryRunnerOptions?: Partial) {\n return new SceneQueryRunner({\n datasource: { uid: WRAPPED_LOKI_DS_UID },\n queries: [],\n ...queryRunnerOptions,\n });\n}\n\nexport function getQueryRunnerFromProvider(provider: SceneDataProvider): SceneQueryRunner {\n if (provider instanceof SceneQueryRunner) {\n return provider;\n }\n\n if (provider.state.$data instanceof SceneQueryRunner) {\n return provider.state.$data;\n }\n\n throw new Error('SceneDataProvider is missing SceneQueryRunner');\n}\n","import pluginJson from '../plugin.json';\n\n// jest tests struggle with import order when importing from the plugin.json, moving methods that use the plugin_id to its own file makes it simpler to import when mocking\nexport const PLUGIN_ID = pluginJson.id;\nexport const PLUGIN_BASE_URL = `/a/${PLUGIN_ID}`;\n\n// Prefixes the route with the base URL of the plugin\nexport function prefixRoute(route: string): string {\n return `${PLUGIN_BASE_URL}/${route}`;\n}\n","import { AdHocVariableFilter, SelectableValue } from '@grafana/data';\nimport {\n addAdHocFilterUserInputPrefix,\n AdHocFiltersWithLabelsAndMeta,\n FieldValue,\n VAR_DATASOURCE_EXPR,\n} from './variables';\nimport { LokiQuery } from './lokiQuery';\nimport { SceneDataQueryResourceRequest, SceneDataQueryResourceRequestOptions } from './datasourceTypes';\nimport { PLUGIN_ID } from './plugin';\nimport { AdHocFilterWithLabels, sceneUtils } from '@grafana/scenes';\nimport { LineFilterCaseSensitive, LineFilterOp } from './filterTypes';\nimport { sortLineFilters } from '../Components/IndexScene/LineFilterVariablesScene';\nimport { ExpressionBuilder } from './ExpressionBuilder';\n\n/**\n * Builds the resource query\n * @param expr string to be interpolated and executed in the resource request\n * @param resource\n * @param queryParamsOverrides\n * @param primaryLabel\n */\nexport const buildResourceQuery = (\n expr: string,\n resource: SceneDataQueryResourceRequestOptions,\n queryParamsOverrides?: Partial,\n primaryLabel?: string\n): LokiQuery & SceneDataQueryResourceRequest & { primaryLabel?: string } => {\n return {\n ...defaultQueryParams,\n resource,\n refId: resource,\n ...queryParamsOverrides,\n datasource: { uid: VAR_DATASOURCE_EXPR },\n expr,\n primaryLabel,\n };\n};\n/**\n * Builds a loki data query\n * @param expr\n * @param queryParamsOverrides\n * @returns LokiQuery\n */\nexport const buildDataQuery = (expr: string, queryParamsOverrides?: Partial): LokiQuery => {\n return {\n ...defaultQueryParams,\n ...queryParamsOverrides,\n expr,\n };\n};\n\nconst defaultQueryParams = {\n refId: 'A',\n queryType: 'range',\n editorMode: 'code',\n supportingQueryType: PLUGIN_ID,\n};\n\nexport const buildVolumeQuery = (\n expr: string,\n resource: 'volume' | 'patterns' | 'detected_labels' | 'detected_fields' | 'labels',\n primaryLabel: string,\n queryParamsOverrides?: Record\n): LokiQuery & SceneDataQueryResourceRequest => {\n return buildResourceQuery(expr, resource, { ...queryParamsOverrides }, primaryLabel);\n};\n\nexport function renderLogQLLabelFilters(filters: AdHocFilterWithLabels[], ignoreKeys?: string[]) {\n const filtersTransformer = new ExpressionBuilder(filters);\n return filtersTransformer.getLabelsExpr({ ignoreKeys });\n}\n\nexport function onAddCustomAdHocValue(item: SelectableValue): {\n value: string | undefined;\n valueLabels: string[];\n} {\n if (item.value) {\n return {\n value: addAdHocFilterUserInputPrefix(item.value),\n valueLabels: [item.label ?? item.value],\n };\n }\n\n return {\n value: item.value,\n valueLabels: [item.label ?? item.value ?? ''],\n };\n}\n\nexport function onAddCustomFieldValue(\n item: SelectableValue & { isCustom?: boolean },\n filter: AdHocFiltersWithLabelsAndMeta\n): { value: string | undefined; valueLabels: string[] } {\n const field: FieldValue = {\n value: item.value ?? '',\n parser: filter?.meta?.parser ?? 'mixed',\n };\n\n // metadata is not encoded\n if (field.parser === 'structuredMetadata') {\n return {\n value: addAdHocFilterUserInputPrefix(field.value),\n valueLabels: [item.label ?? field.value],\n };\n }\n\n return {\n value: addAdHocFilterUserInputPrefix(JSON.stringify(field)),\n valueLabels: [item.label ?? field.value],\n };\n}\n\nexport function renderLevelsFilter(filters: AdHocVariableFilter[], ignoreKeys?: string[]) {\n const filterTransformer = new ExpressionBuilder(filters);\n return filterTransformer.getLevelsExpr({ ignoreKeys });\n}\n\nexport function renderLogQLMetadataFilters(filters: AdHocVariableFilter[], ignoreKeys?: string[]) {\n const filterTransformer = new ExpressionBuilder(filters);\n return filterTransformer.getMetadataExpr({ ignoreKeys });\n}\n\nexport function renderLogQLFieldFilters(filters: AdHocVariableFilter[], ignoreKeys?: string[]) {\n const filterTransformer = new ExpressionBuilder(filters);\n return filterTransformer.getFieldsExpr({ ignoreKeys });\n}\n\nexport function escapeDoubleQuotedLineFilter(filter: AdHocFilterWithLabels) {\n // Is not regex\n if (filter.operator === LineFilterOp.match || filter.operator === LineFilterOp.negativeMatch) {\n if (filter.key === LineFilterCaseSensitive.caseInsensitive) {\n return sceneUtils.escapeLabelValueInRegexSelector(filter.value ?? '');\n } else {\n return sceneUtils.escapeLabelValueInExactSelector(filter.value ?? '');\n }\n } else {\n return sceneUtils.escapeLabelValueInExactSelector(filter.value ?? '');\n }\n}\n\n/**\n * Builds line filter as a double-quoted LogQL string\n * Expects pre-escaped values\n */\nfunction buildLogQlLineFilter(filter: AdHocFilterWithLabels, value: string) {\n // Change operator if needed and insert caseInsensitive flag\n if (filter.key === LineFilterCaseSensitive.caseInsensitive) {\n if (filter.operator === LineFilterOp.negativeRegex || filter.operator === LineFilterOp.negativeMatch) {\n return `${LineFilterOp.negativeRegex} \"(?i)${value}\"`;\n }\n return `${LineFilterOp.regex} \"(?i)${value}\"`;\n }\n\n return `${filter.operator} \"${value}\"`;\n}\n\n/**\n * Converts line filter ad-hoc filters to LogQL\n *\n * the filter key is LineFilterCaseSensitive\n * the filter operator is LineFilterOp\n * the value is the user input\n */\nexport function renderLogQLLineFilter(filters: AdHocFilterWithLabels[]) {\n sortLineFilters(filters);\n return filters\n .map((filter) => {\n if (!filter.value) {\n return '';\n }\n\n const value = escapeDoubleQuotedLineFilter(filter);\n return buildLogQlLineFilter(filter, value);\n })\n .join(' ');\n}\nexport function wrapWildcardSearch(input: string) {\n if (input === '.+') {\n return input;\n } else if (input.substring(0, 6) !== '(?i).*') {\n return `(?i).*${input}.*`;\n }\n\n return input;\n}\n\nexport function unwrapWildcardSearch(input: string) {\n if (input.substring(0, 6) === '(?i).*' && input.slice(-2) === '.*') {\n return input.slice(6).slice(0, -2);\n }\n\n return input;\n}\n\nexport function sanitizeStreamSelector(expression: string) {\n return expression.replace(/\\s*,\\s*}/, '}');\n}\n\n// default line limit; each data source can define it's own line limit too\nexport const LINE_LIMIT = 1000;\n","import { UrlQueryMap, urlUtil } from '@grafana/data';\nimport {\n SERVICE_NAME,\n SERVICE_UI_LABEL,\n VAR_DATASOURCE,\n VAR_FIELD_GROUP_BY,\n VAR_FIELDS,\n VAR_LABEL_GROUP_BY,\n VAR_LABELS,\n VAR_LEVELS,\n VAR_LINE_FILTER,\n VAR_LINE_FILTERS,\n VAR_METADATA,\n VAR_PATTERNS,\n} from './variables';\nimport { locationService } from '@grafana/runtime';\nimport { RouteMatch, RouteProps } from '../Components/Pages';\nimport { replaceSlash } from './extensions/links';\nimport { SceneObject } from '@grafana/scenes';\nimport { getLabelsVariable } from './variableGetters';\nimport { logger } from './logger';\nimport { PLUGIN_BASE_URL, prefixRoute } from './plugin';\n\nexport enum PageSlugs {\n explore = 'explore',\n logs = 'logs',\n labels = 'labels',\n patterns = 'patterns',\n fields = 'fields',\n}\nexport enum ValueSlugs {\n field = 'field',\n label = 'label',\n}\n\nexport type ParentDrilldownSlugs =\n | PageSlugs.explore\n | PageSlugs.fields\n | PageSlugs.logs\n | PageSlugs.labels\n | PageSlugs.patterns;\nexport type ChildDrilldownSlugs = ValueSlugs.field | ValueSlugs.label;\n\nexport const ROUTES = {\n explore: () => prefixRoute(PageSlugs.explore),\n logs: (labelValue: string, labelName = 'service') =>\n prefixRoute(`${PageSlugs.explore}/${labelName}/${replaceSlash(labelValue)}/${PageSlugs.logs}`),\n fields: (labelValue: string, labelName = 'service') =>\n prefixRoute(`${PageSlugs.explore}/${labelName}/${replaceSlash(labelValue)}/${PageSlugs.fields}`),\n patterns: (labelValue: string, labelName = 'service') =>\n prefixRoute(`${PageSlugs.explore}/${labelName}/${replaceSlash(labelValue)}/${PageSlugs.patterns}`),\n labels: (labelValue: string, labelName = 'service') =>\n prefixRoute(`${PageSlugs.explore}/${labelName}/${replaceSlash(labelValue)}/${PageSlugs.labels}`),\n};\n\nexport const SUB_ROUTES = {\n label: (labelValue: string, labelName = 'service', breakdownLabelName: string) =>\n prefixRoute(\n `${PageSlugs.explore}/${labelName}/${replaceSlash(labelValue)}/${ValueSlugs.label}/${breakdownLabelName}`\n ),\n field: (labelValue: string, labelName = 'service', breakdownLabelName: string) =>\n prefixRoute(\n `${PageSlugs.explore}/${labelName}/${replaceSlash(labelValue)}/${ValueSlugs.field}/${breakdownLabelName}`\n ),\n};\n\nexport const ROUTE_DEFINITIONS: Record = {\n explore: prefixRoute(PageSlugs.explore),\n logs: prefixRoute(`${PageSlugs.explore}/:labelName/:labelValue/${PageSlugs.logs}`),\n fields: prefixRoute(`${PageSlugs.explore}/:labelName/:labelValue/${PageSlugs.fields}`),\n patterns: prefixRoute(`${PageSlugs.explore}/:labelName/:labelValue/${PageSlugs.patterns}`),\n labels: prefixRoute(`${PageSlugs.explore}/:labelName/:labelValue/${PageSlugs.labels}`),\n};\n\nexport const CHILD_ROUTE_DEFINITIONS: Record = {\n field: prefixRoute(`${PageSlugs.explore}/:labelName/:labelValue/${ValueSlugs.field}/:breakdownLabel`),\n label: prefixRoute(`${PageSlugs.explore}/:labelName/:labelValue/${ValueSlugs.label}/:breakdownLabel`),\n};\n\nexport const EXPLORATIONS_ROUTE = `${PLUGIN_BASE_URL}/${PageSlugs.explore}`;\n\n// For redirect back to service, we just want to keep datasource, and timerange\nexport const SERVICE_URL_KEYS = ['from', 'to', `var-${VAR_DATASOURCE}`, `var-${VAR_LABELS}`];\n//@todo why patterns and var-patterns?\nexport const DRILLDOWN_URL_KEYS = [\n 'from',\n 'to',\n 'mode',\n 'urlColumns',\n 'visualizationType',\n 'selectedLine',\n 'displayedFields',\n 'panelState',\n VAR_PATTERNS,\n `var-${VAR_PATTERNS}`,\n `var-${VAR_DATASOURCE}`,\n `var-${VAR_LABELS}`,\n `var-${VAR_FIELDS}`,\n `var-${VAR_LEVELS}`,\n `var-${VAR_FIELD_GROUP_BY}`,\n `var-${VAR_LABEL_GROUP_BY}`,\n `var-${VAR_DATASOURCE}`,\n `var-${VAR_LINE_FILTER}`,\n `var-${VAR_METADATA}`,\n `var-${VAR_LINE_FILTERS}`,\n];\n\nexport function getDrilldownSlug() {\n const location = locationService.getLocation();\n const slug = location.pathname.slice(location.pathname.lastIndexOf('/') + 1, location.pathname.length);\n return slug as PageSlugs;\n}\n\n/**\n * The \"primary\" label, is the replacement for the service_name paradigm\n * It must be an indexed label with an include filter\n * Note: Will return the label as it exists in the url, so \"service_name\" will be returned as \"service\", we'll need to adjust for this case if we want to support URLs from before this change\n */\nexport function getPrimaryLabelFromUrl(): RouteProps {\n const location = locationService.getLocation();\n const startOfUrl = '/a/grafana-lokiexplore-app/explore';\n const endOfUrl = location.pathname.slice(location.pathname.indexOf(startOfUrl) + startOfUrl.length + 1);\n const routeParams = endOfUrl.split('/');\n\n let labelName = routeParams[0];\n const labelValue = routeParams[1];\n const breakdownLabel = routeParams[3];\n // Keep urls the same\n if (labelName === SERVICE_NAME) {\n labelName = SERVICE_UI_LABEL;\n }\n return { labelName, labelValue, breakdownLabel };\n}\n\nexport function getDrilldownValueSlug() {\n const location = locationService.getLocation();\n const locationArray = location.pathname.split('/');\n const slug = locationArray[locationArray.length - 2];\n return slug as ValueSlugs;\n}\n\nexport function buildServicesUrl(path: string, extraQueryParams?: UrlQueryMap): string {\n return urlUtil.renderUrl(path, buildServicesRoute(extraQueryParams));\n}\nexport function extractValuesFromRoute(routeMatch: RouteMatch): RouteProps {\n return {\n labelName: routeMatch.params.labelName,\n labelValue: routeMatch.params.labelValue,\n breakdownLabel: routeMatch.params.breakdownLabel,\n };\n}\n\nexport function buildServicesRoute(extraQueryParams?: UrlQueryMap): UrlQueryMap {\n return {\n ...Object.entries(urlUtil.getUrlSearchParams()).reduce((acc, [key, value]) => {\n if (SERVICE_URL_KEYS.includes(key)) {\n acc[key] = value;\n }\n\n return acc;\n }, {}),\n ...extraQueryParams,\n };\n}\n\n/**\n * Compare slugs against variable filters and log discrepancies\n * These don't cause errors or render empty UIs, but shouldn't be possible when routing within the app\n * If we see these logged in production it indicates we're navigating users incorrectly\n * @param sceneRef\n */\nexport function checkPrimaryLabel(sceneRef: SceneObject) {\n const labelsVariable = getLabelsVariable(sceneRef);\n let { labelName, labelValue } = getPrimaryLabelFromUrl();\n if (labelName === SERVICE_UI_LABEL) {\n labelName = SERVICE_NAME;\n }\n const primaryLabel = labelsVariable.state.filters.find((filter) => filter.key === labelName);\n if (!primaryLabel) {\n const location = locationService.getLocation();\n\n logger.info('invalid primary label name in url', {\n labelName,\n url: `${location.pathname}${location.search}`,\n });\n }\n\n const primaryLabelValue = labelsVariable.state.filters.find((filter) => replaceSlash(filter.value) === labelValue);\n if (!primaryLabelValue) {\n const location = locationService.getLocation();\n\n logger.info('invalid primary label value in url', {\n labelValue,\n url: `${location.pathname}${location.search}`,\n });\n }\n}\n","import { urlUtil } from '@grafana/data';\nimport { config, getDataSourceSrv } from '@grafana/runtime';\nimport { sceneGraph, SceneObject, SceneObjectUrlValues, SceneQueryRunner, SceneTimePicker } from '@grafana/scenes';\nimport {\n LOG_STREAM_SELECTOR_EXPR,\n PRETTY_LOG_STREAM_SELECTOR_EXPR,\n VAR_DATASOURCE_EXPR,\n VAR_LABELS_EXPR,\n} from './variables';\nimport { EXPLORATIONS_ROUTE } from './routing';\nimport { IndexScene } from 'Components/IndexScene/IndexScene';\nimport { logger } from './logger';\nimport { LokiDatasource } from './lokiQuery';\n\nexport function getExplorationFor(model: SceneObject): IndexScene {\n return sceneGraph.getAncestor(model, IndexScene);\n}\n\nexport function getUrlForValues(values: SceneObjectUrlValues) {\n return urlUtil.renderUrl(EXPLORATIONS_ROUTE, values);\n}\n\nexport function getDataSource(sceneObject: SceneObject) {\n return sceneGraph.interpolate(sceneObject, VAR_DATASOURCE_EXPR);\n}\n\nexport function getQueryExpr(exploration: SceneObject) {\n return sceneGraph.interpolate(exploration, LOG_STREAM_SELECTOR_EXPR).replace(/\\s+/g, ' ');\n}\n\nexport function getPrettyQueryExpr(exploration: SceneObject) {\n return sceneGraph.interpolate(exploration, PRETTY_LOG_STREAM_SELECTOR_EXPR).replace(/\\s+/g, ' ');\n}\n\nexport function getPatternExpr(exploration: SceneObject) {\n return sceneGraph.interpolate(exploration, VAR_LABELS_EXPR).replace(/\\s+/g, ' ');\n}\n\nexport function getColorByIndex(index: number) {\n const visTheme = config.theme2.visualization;\n return visTheme.getColorByName(visTheme.palette[index % 8]);\n}\n\nexport async function getLokiDatasource(sceneObject: SceneObject) {\n const ds = (await getDataSourceSrv().get(VAR_DATASOURCE_EXPR, { __sceneObject: { value: sceneObject } })) as\n | LokiDatasource\n | undefined;\n return ds;\n}\n\nexport function isDefined(value: T | null | undefined): value is T {\n return value !== null && value !== undefined;\n}\n\nexport function getQueryRunnerFromChildren(sceneObject: SceneObject) {\n return sceneGraph.findDescendents(sceneObject, SceneQueryRunner);\n}\n\ninterface SceneType extends Function {\n new (...args: never[]): T;\n}\n\nexport function findObjectOfType(\n scene: SceneObject,\n check: (obj: SceneObject) => boolean,\n returnType: SceneType\n) {\n const obj = sceneGraph.findObject(scene, check);\n if (obj instanceof returnType) {\n return obj;\n } else if (obj !== null) {\n logger.warn(`invalid return type: ${returnType.toString()}`);\n }\n\n return null;\n}\n\nexport function getTimePicker(scene: IndexScene) {\n return scene.state.controls?.find((s) => s instanceof SceneTimePicker) as SceneTimePicker;\n}\n","import uFuzzy from '@leeoniya/ufuzzy';\nimport { debounce as debounceLodash } from 'lodash';\n\nconst uf = new uFuzzy({\n intraMode: 1,\n intraIns: 1,\n intraSub: 1,\n intraTrn: 1,\n intraDel: 1,\n});\n\nexport function fuzzySearch(haystack: string[], query: string, callback: (data: string[][]) => void) {\n const [idxs, info, order] = uf.search(haystack, query, 0, 1e5);\n\n let haystackOrder: string[] = [];\n let matchesSet: Set = new Set();\n if (idxs && order) {\n /**\n * get the fuzzy matches for highlighting\n * @param part\n * @param matched\n */\n const mark = (part: string, matched: boolean) => {\n if (matched) {\n matchesSet.add(part);\n }\n };\n\n // Iterate to create the order of needles(queries) and the matches\n for (let i = 0; i < order.length; i++) {\n let infoIdx = order[i];\n\n /** Evaluate the match, get the matches for highlighting */\n uFuzzy.highlight(haystack[info.idx[infoIdx]], info.ranges[infoIdx], mark);\n /** Get the order */\n haystackOrder.push(haystack[info.idx[infoIdx]]);\n }\n\n callback([haystackOrder, [...matchesSet]]);\n } else if (!query) {\n callback([]);\n }\n}\n\nexport const debouncedFuzzySearch = debounceLodash(fuzzySearch, 300);\n","import { ChangepointDetector } from '@bsull/augurs/changepoint';\nimport { OutlierDetector, OutlierOutput } from '@bsull/augurs/outlier';\nimport { DataFrame, doStandardCalcs, fieldReducers, FieldType, outerJoinDataFrames, ReducerID } from '@grafana/data';\nimport { getLabelValueFromDataFrame } from './levels';\nimport { memoize } from 'lodash';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from './analytics';\nimport { logger } from './logger';\n\nexport const DEFAULT_SORT_BY = 'changepoint';\n\nexport const sortSeries = memoize(\n (series: DataFrame[], sortBy: string, direction: string) => {\n if (sortBy === 'alphabetical') {\n return sortSeriesByName(series, direction);\n }\n\n if (sortBy === 'outliers') {\n initOutlierDetector(series);\n }\n\n const reducer = (dataFrame: DataFrame) => {\n // ML & Wasm sorting options\n try {\n if (sortBy === 'changepoint') {\n return calculateDataFrameChangepoints(dataFrame);\n } else if (sortBy === 'outliers') {\n return calculateOutlierValue(series, dataFrame);\n }\n } catch (e) {\n logger.error(e, { msg: 'failed to sort' });\n\n // ML sorting panicked, fallback to stdDev\n sortBy = ReducerID.stdDev;\n }\n const fieldReducer = fieldReducers.get(sortBy);\n const value =\n fieldReducer.reduce?.(dataFrame.fields[1], true, true) ?? doStandardCalcs(dataFrame.fields[1], true, true);\n return value[sortBy] ?? 0;\n };\n\n const seriesCalcs = series.map((dataFrame) => ({\n value: reducer(dataFrame),\n dataFrame: dataFrame,\n }));\n\n seriesCalcs.sort((a, b) => {\n if (a.value !== undefined && b.value !== undefined) {\n return b.value - a.value;\n }\n return 0;\n });\n\n if (direction === 'asc') {\n seriesCalcs.reverse();\n }\n\n return seriesCalcs.map(({ dataFrame }) => dataFrame);\n },\n (series: DataFrame[], sortBy: string, direction: string) => {\n const firstTimestamp = series.length > 0 ? series[0].fields[0].values[0] : 0;\n const lastTimestamp =\n series.length > 0\n ? series[series.length - 1].fields[0].values[series[series.length - 1].fields[0].values.length - 1]\n : 0;\n const firstValue = series.length > 0 ? getLabelValueFromDataFrame(series[0]) : '';\n const lastValue = series.length > 0 ? getLabelValueFromDataFrame(series[series.length - 1]) : '';\n // This still isn't good enough, if the dataframe returns the same number of fields, with the same start and end values, we'll fail to update the UI\n const allSeriesKey = series.map(\n (frame) =>\n frame.length +\n '_' +\n frame.fields.map((field) => field.name + '_' + field.values[0] + '_' + field.values[field.values.length - 1])\n );\n return `${firstValue}_${lastValue}_${firstTimestamp}_${lastTimestamp}_${series.length}_${allSeriesKey}_${sortBy}_${direction}`;\n }\n);\n\nexport const calculateDataFrameChangepoints = (data: DataFrame) => {\n if (!wasmSupported()) {\n throw new Error('WASM not supported, fall back to stdDev');\n }\n\n const fields = data.fields.filter((f) => f.type === FieldType.number);\n\n const dataPoints = fields[0].values.length;\n\n let samplingStep = Math.floor(dataPoints / 100) || 1;\n if (samplingStep > 1) {\n // Avoiding \"big\" steps for more accuracy\n samplingStep = Math.ceil(samplingStep / 2);\n }\n\n const sample = fields[0].values.filter((_, i) => i % samplingStep === 0);\n\n const values = new Float64Array(sample);\n const points = ChangepointDetector.defaultArgpcp().detectChangepoints(values);\n\n return points.indices.length;\n};\n\nexport const sortSeriesByName = (series: DataFrame[], direction: string) => {\n const sortedSeries = [...series];\n sortedSeries.sort((a, b) => {\n const valueA = getLabelValueFromDataFrame(a);\n const valueB = getLabelValueFromDataFrame(b);\n if (!valueA || !valueB) {\n return 0;\n }\n return valueA?.localeCompare(valueB) ?? 0;\n });\n if (direction === 'desc') {\n sortedSeries.reverse();\n }\n return sortedSeries;\n};\n\nconst initOutlierDetector = (series: DataFrame[]) => {\n if (!wasmSupported()) {\n return;\n }\n\n // Combine all frames into one by joining on time.\n const joined = outerJoinDataFrames({ frames: series });\n if (!joined) {\n return;\n }\n\n // Get number fields: these are our series.\n const joinedSeries = joined.fields.filter((f) => f.type === FieldType.number);\n const points = joinedSeries.flatMap((series) => new Float64Array(series.values));\n\n try {\n const detector = OutlierDetector.dbscan({ sensitivity: 0.4 }).preprocess(points);\n outliers = detector.detect();\n } catch (e) {\n logger.error(e, { msg: 'initOutlierDetector: OutlierDetector error' });\n }\n};\n\nlet outliers: OutlierOutput | undefined = undefined;\n\nexport const calculateOutlierValue = (series: DataFrame[], data: DataFrame): number => {\n if (!wasmSupported()) {\n throw new Error('WASM not supported, fall back to stdDev');\n }\n if (!outliers) {\n throw new Error('Initialize outlier detector first');\n }\n\n const index = series.indexOf(data);\n if (outliers.seriesResults[index].isOutlier) {\n return outliers.seriesResults[index].outlierIntervals.length;\n }\n\n return 0;\n};\n\nexport const wasmSupported = () => {\n const support = typeof WebAssembly === 'object';\n\n if (!support) {\n reportAppInteraction(USER_EVENTS_PAGES.service_details, USER_EVENTS_ACTIONS.service_details.wasm_not_supported);\n }\n\n return support;\n};\n","import pluginJson from '../plugin.json';\nimport { SortBy, SortDirection } from '../Components/ServiceScene/Breakdowns/SortByScene';\nimport { SceneObject, VariableValue } from '@grafana/scenes';\nimport { getDataSourceName, getServiceName } from './variableGetters';\nimport { logger } from './logger';\nimport { SERVICE_NAME } from './variables';\nimport { Options } from '@grafana/schema/dist/esm/raw/composable/logs/panelcfg/x/LogsPanelCfg_types.gen';\nimport { unknownToStrings } from './narrowing';\nimport { AvgFieldPanelType, CollapsablePanelText } from '../Components/Panels/PanelMenu';\n\nconst FAVORITE_PRIMARY_LABEL_VALUES_LOCALSTORAGE_KEY = `${pluginJson.id}.services.favorite`;\nconst FAVORITE_PRIMARY_LABEL_NAME_LOCALSTORAGE_KEY = `${pluginJson.id}.primarylabels.tabs.favorite`;\nconst DS_LOCALSTORAGE_KEY = `${pluginJson.id}.datasource`;\n\n// This should be a string, but we'll accept anything and return an empty array if it's not a string\nexport function getFavoriteLabelValuesFromStorage(dsKey: string | unknown, labelName: string): string[] {\n if (!dsKey || typeof dsKey !== 'string') {\n return [];\n }\n const key = createPrimaryLabelLocalStorageKey(dsKey, labelName);\n let labelValues: string[] = [];\n try {\n labelValues = unknownToStrings(JSON.parse(localStorage.getItem(key) || '[]'));\n } catch (e) {\n logger.error(e, { msg: 'Error parsing favorite services from local storage' });\n }\n\n if (!Array.isArray(labelValues)) {\n labelValues = [];\n }\n return labelValues;\n}\n\n// This should be a string, but we'll accept anything and return early\nexport function addToFavoriteLabelValueInStorage(dsKey: string | unknown, labelName: string, labelValue: string) {\n if (!dsKey || typeof dsKey !== 'string') {\n return;\n }\n const key = createPrimaryLabelLocalStorageKey(dsKey, labelName);\n let services: string[] = [];\n try {\n services = unknownToStrings(JSON.parse(localStorage.getItem(key) || '[]'));\n } catch (e) {\n logger.error(e, { msg: 'Error parsing favorite services from local storage' });\n }\n\n if (!Array.isArray(services)) {\n services = [];\n }\n\n // We want to put this service at the top of the list and remove any duplicates\n const servicesToStore = services.filter((service: string) => service !== labelValue);\n servicesToStore.unshift(labelValue);\n\n localStorage.setItem(key, JSON.stringify(servicesToStore));\n}\n\nexport function removeFromFavoritesInStorage(dsKey: VariableValue, labelName: string, labelValue: string) {\n if (!dsKey || !labelName || !labelValue || typeof dsKey !== 'string') {\n return;\n }\n const key = createPrimaryLabelLocalStorageKey(dsKey, labelName);\n let services: string[] = [];\n try {\n services = unknownToStrings(JSON.parse(localStorage.getItem(key) || '[]'));\n } catch (e) {\n logger.error(e, { msg: 'Error parsing favorite services from local storage' });\n }\n\n if (!Array.isArray(services)) {\n services = [];\n }\n const servicesToStore = services.filter((service: string) => service !== labelValue);\n localStorage.setItem(key, JSON.stringify(servicesToStore));\n}\n\nexport function addTabToLocalStorage(dsKey: string, labelName: string) {\n if (!dsKey || !labelName) {\n return;\n }\n\n const key = createTabsLocalStorageKey(dsKey);\n\n let services: string[] = [];\n try {\n services = unknownToStrings(JSON.parse(localStorage.getItem(key) || '[]'));\n } catch (e) {\n logger.error(e, { msg: 'Error parsing saved tabs from local storage' });\n }\n\n if (!Array.isArray(services)) {\n services = [];\n }\n\n if (services.indexOf(labelName) === -1) {\n // We want to put this service at the top of the list and remove any duplicates\n const servicesToStore = services.filter((tabName: string) => tabName !== labelName);\n servicesToStore.unshift(labelName);\n\n localStorage.setItem(key, JSON.stringify(servicesToStore));\n }\n}\n\nexport function removeTabFromLocalStorage(dsKey: string, labelName: string) {\n if (!dsKey || !labelName) {\n return;\n }\n const key = createTabsLocalStorageKey(dsKey);\n let services: string[] = [];\n try {\n services = unknownToStrings(JSON.parse(localStorage.getItem(key) || '[]'));\n } catch (e) {\n logger.error(e, { msg: 'Error parsing favorite services from local storage' });\n }\n\n if (!Array.isArray(services)) {\n services = [];\n }\n const servicesToStore = services.filter((tabName: string) => tabName !== labelName);\n localStorage.setItem(key, JSON.stringify(servicesToStore));\n}\n\nexport function getFavoriteTabsFromStorage(dsKey: string | unknown): string[] {\n if (!dsKey || typeof dsKey !== 'string') {\n return [];\n }\n const key = createTabsLocalStorageKey(dsKey);\n let tabNames: string[] = [];\n try {\n tabNames = unknownToStrings(JSON.parse(localStorage.getItem(key) || '[]'));\n } catch (e) {\n logger.error(e, { msg: 'Error parsing favorite services from local storage' });\n }\n\n if (!Array.isArray(tabNames)) {\n tabNames = [];\n }\n return tabNames;\n}\n\nfunction createPrimaryLabelLocalStorageKey(ds: string, labelName: string) {\n if (labelName === SERVICE_NAME) {\n labelName = '';\n } else {\n labelName = `_${labelName}`;\n }\n return `${FAVORITE_PRIMARY_LABEL_VALUES_LOCALSTORAGE_KEY}_${ds}${labelName}`;\n}\n\nfunction createTabsLocalStorageKey(ds: string) {\n return `${FAVORITE_PRIMARY_LABEL_NAME_LOCALSTORAGE_KEY}_${ds}`;\n}\n\nexport function getLastUsedDataSourceFromStorage(): string | undefined {\n return localStorage.getItem(DS_LOCALSTORAGE_KEY) ?? undefined;\n}\n\nexport function addLastUsedDataSourceToStorage(dsKey: string) {\n localStorage.setItem(DS_LOCALSTORAGE_KEY, dsKey);\n}\n\nconst SORT_BY_LOCALSTORAGE_KEY = `${pluginJson.id}.values.sort`;\nexport function getSortByPreference(\n target: string,\n defaultSortBy: SortBy,\n defaultDirection: SortDirection\n): { sortBy: SortBy | ''; direction: SortDirection } {\n const preference = localStorage.getItem(`${SORT_BY_LOCALSTORAGE_KEY}.${target}.by`) ?? '';\n const parts = preference.split('.');\n if (!parts[0] || !parts[1]) {\n return { sortBy: defaultSortBy, direction: defaultDirection };\n }\n const sortBy = parts[0] as SortBy;\n const direction = parts[1] as SortDirection;\n return { sortBy, direction };\n}\n\nexport function setSortByPreference(target: string, sortBy: string, direction: string) {\n // Prevent storing empty values\n if (sortBy && direction) {\n localStorage.setItem(`${SORT_BY_LOCALSTORAGE_KEY}.${target}.by`, `${sortBy}.${direction}`);\n }\n}\n\nfunction getExplorationPrefix(sceneRef: SceneObject) {\n const ds = getDataSourceName(sceneRef);\n const serviceName = getServiceName(sceneRef);\n return `${ds}.${serviceName}`;\n}\n\nexport function getDisplayedFields(sceneRef: SceneObject) {\n const PREFIX = getExplorationPrefix(sceneRef);\n const storedFields = localStorage.getItem(`${pluginJson.id}.${PREFIX}.logs.fields`);\n if (storedFields) {\n return JSON.parse(storedFields);\n }\n return [];\n}\n\nexport function setDisplayedFields(sceneRef: SceneObject, fields: string[]) {\n const PREFIX = getExplorationPrefix(sceneRef);\n localStorage.setItem(`${pluginJson.id}.${PREFIX}.logs.fields`, JSON.stringify(fields));\n}\n\n// Log panel options\nconst LOG_OPTIONS_LOCALSTORAGE_KEY = `${pluginJson.id}.logs.option`;\nexport function getLogOption(option: keyof Options, defaultValue: T) {\n const localStorageResult = localStorage.getItem(`${LOG_OPTIONS_LOCALSTORAGE_KEY}.${option}`);\n return localStorageResult ? localStorageResult : defaultValue;\n}\n\nexport function setLogOption(option: keyof Options, value: string | number | boolean) {\n let storedValue = value.toString();\n if (typeof value === 'boolean' && !value) {\n storedValue = '';\n }\n localStorage.setItem(`${LOG_OPTIONS_LOCALSTORAGE_KEY}.${option}`, storedValue);\n}\n\n// Logs volume options\nconst LOGS_VOLUME_LOCALSTORAGE_KEY = 'grafana.explore.logs.logsVolume';\nexport function setLogsVolumeOption(option: 'collapsed', value: string | undefined) {\n const key = `${LOGS_VOLUME_LOCALSTORAGE_KEY}.${option}`;\n if (value === undefined) {\n localStorage.removeItem(key);\n return;\n }\n localStorage.setItem(key, value);\n}\n\nexport function getLogsVolumeOption(option: 'collapsed') {\n return Boolean(localStorage.getItem(`${LOGS_VOLUME_LOCALSTORAGE_KEY}.${option}`));\n}\n\n// Log visualization options\nexport type LogsVisualizationType = 'logs' | 'table';\n\nconst VISUALIZATION_TYPE_LOCALSTORAGE_KEY = 'grafana.explore.logs.visualisationType';\nexport function getLogsVisualizationType(): LogsVisualizationType {\n const storedType = localStorage.getItem(VISUALIZATION_TYPE_LOCALSTORAGE_KEY) ?? '';\n switch (storedType) {\n case 'table':\n case 'logs':\n return storedType;\n default:\n return 'logs';\n }\n}\n\nexport function setLogsVisualizationType(type: string) {\n localStorage.setItem(VISUALIZATION_TYPE_LOCALSTORAGE_KEY, type);\n}\n\n// Line filter options\nconst LINE_FILTER_OPTIONS_LOCALSTORAGE_KEY = `${pluginJson.id}.linefilter.option`;\nexport function setLineFilterCase(caseSensitive: boolean) {\n let storedValue = caseSensitive.toString();\n if (!caseSensitive) {\n storedValue = '';\n }\n\n localStorage.setItem(`${LINE_FILTER_OPTIONS_LOCALSTORAGE_KEY}.caseSensitive`, storedValue);\n}\n\nexport function setLineFilterRegex(regex: boolean) {\n let storedValue = regex.toString();\n if (!regex) {\n storedValue = '';\n }\n\n localStorage.setItem(`${LINE_FILTER_OPTIONS_LOCALSTORAGE_KEY}.regex`, storedValue);\n}\n\nexport function setLineFilterExclusive(exclusive: boolean) {\n let storedValue = exclusive.toString();\n if (!exclusive) {\n storedValue = '';\n }\n\n localStorage.setItem(`${LINE_FILTER_OPTIONS_LOCALSTORAGE_KEY}.exclusive`, storedValue);\n}\n\nexport function getLineFilterCase(defaultValue: boolean): boolean {\n const storedValue = localStorage.getItem(`${LINE_FILTER_OPTIONS_LOCALSTORAGE_KEY}.caseSensitive`);\n return storedValue === 'true' ? true : defaultValue;\n}\n\nexport function getLineFilterRegex(defaultValue: boolean): boolean {\n const storedValue = localStorage.getItem(`${LINE_FILTER_OPTIONS_LOCALSTORAGE_KEY}.regex`);\n return storedValue === 'true' ? true : defaultValue;\n}\n\nexport function getLineFilterExclusive(defaultValue: boolean): boolean {\n const storedValue = localStorage.getItem(`${LINE_FILTER_OPTIONS_LOCALSTORAGE_KEY}.exclusive`);\n return storedValue === 'true' ? true : defaultValue;\n}\n\n// Panel options\nconst PANEL_OPTIONS_LOCALSTORAGE_KEY = `${pluginJson.id}.panel.option`;\nexport interface PanelOptions {\n panelType: AvgFieldPanelType;\n collapsed: CollapsablePanelText;\n}\nexport function getPanelOption(\n option: K,\n values: V[]\n): V | null {\n const result = localStorage.getItem(`${PANEL_OPTIONS_LOCALSTORAGE_KEY}.${option}`);\n if (result !== null) {\n return values.find((v) => result === v) ?? null;\n }\n\n return null;\n}\n\nexport function setPanelOption(option: K, value: V) {\n localStorage.setItem(`${PANEL_OPTIONS_LOCALSTORAGE_KEY}.${option}`, value);\n}\n\nconst EXPRESSION_BUILDER_DEBUG_LOCALSTORAGE_KEY = `${pluginJson.id}.expressionBuilder.debug`;\nexport function getExpressionBuilderDebug() {\n const value = localStorage.getItem(EXPRESSION_BUILDER_DEBUG_LOCALSTORAGE_KEY);\n return !!value;\n}\n\nconst SERVICE_SELECTION_PAGE_COUNT_KEY = `${pluginJson.id}.serviceSelection.pageCount`;\n\nexport function getServiceSelectionPageCount(): number | undefined {\n const value = localStorage.getItem(SERVICE_SELECTION_PAGE_COUNT_KEY);\n return value ? parseInt(value, 10) : undefined;\n}\nexport function setServiceSelectionPageCount(pageCount: number) {\n localStorage.setItem(SERVICE_SELECTION_PAGE_COUNT_KEY, pageCount.toString(10));\n}\n","export const testIds = {\n appConfig: {\n container: 'data-testid ac-container',\n apiKey: 'data-testid ac-api-key',\n apiUrl: 'data-testid ac-api-url',\n submit: 'data-testid ac-submit-form',\n },\n exploreServiceSearch: {\n search: 'data-testid search-services',\n },\n header: {\n refreshPicker: 'data-testid RefreshPicker run button',\n },\n variables: {\n datasource: {\n label: 'data-testid Dashboard template variables submenu Label Data source',\n },\n combobox: {},\n serviceName: {\n label: 'data-testid Dashboard template variables submenu Label Labels',\n },\n levels: {\n inputWrap: 'data-testid detected_level filter variable',\n },\n },\n breakdowns: {\n labels: {},\n fields: {},\n common: {\n sortByFunction: 'data-testid SortBy function',\n sortByDirection: 'data-testid SortBy direction',\n filterButtonGroup: 'data-testid filter-button-group',\n filterButton: 'data-testid filter-button',\n filterSelect: 'data-testid filter-select',\n filterNumericPopover: {\n removeButton: 'data-testid filter-numeric-remove',\n submitButton: 'data-testid filter-numeric-submit',\n cancelButton: 'data-testid filter-numeric-cancel',\n inputGreaterThan: 'data-testid filter-numeric-gt',\n inputGreaterThanUnit: 'data-testid filter-numeric-gtu',\n inputGreaterThanInclusive: 'data-testid filter-numeric-gte',\n\n inputLessThan: 'data-testid filter-numeric-lt',\n inputLessThanUnit: 'data-testid filter-numeric-ltu',\n inputLessThanInclusive: 'data-testid filter-numeric-lte',\n },\n },\n },\n\n index: {\n showLogsButton: 'data-testid Show logs',\n addNewLabelTab: 'data-testid Tab Add label',\n searchLabelValueInput: 'data-testid search-services-input',\n aggregatedMetricsMenu: 'data-testid aggregated-metrics-menu',\n aggregatedMetricsToggle: 'data-testid aggregated-metrics-toggle',\n header: {\n showLogsButton: 'data-testid Show logs header',\n },\n },\n\n exploreServiceDetails: {\n searchLogs: 'data-testid search-logs',\n openExplore: 'data-testid open-explore',\n tabPatterns: 'data-testid tab-patterns',\n tabLogs: 'data-testid tab-logs',\n tabFields: 'data-testid tab-fields',\n tabLabels: 'data-testid tab-labels',\n buttonRemovePattern: 'data-testid button-remove-pattern',\n buttonFilterInclude: 'data-testid button-filter-include',\n buttonFilterExclude: 'data-testid button-filter-exclude',\n },\n patterns: {\n tableWrapper: 'data-testid table-wrapper',\n buttonIncludedPattern: 'data-testid button-included-pattern',\n buttonExcludedPattern: 'data-testid button-excluded-pattern',\n },\n logsPanelHeader: {\n header: 'data-testid Panel header Logs',\n radio: 'data-testid radio-button',\n },\n table: {\n wrapper: 'data-testid table-wrapper',\n inspectLine: 'data-testid inspect',\n rawLogLine: 'data-testid raw-log-line',\n },\n};\n","import { locationService } from '@grafana/runtime';\nimport { logger } from './logger';\nimport { dateTime, LogRowModel, TimeRange } from '@grafana/data';\n\nexport const copyText = (string: string) => {\n if (navigator.clipboard && window.isSecureContext) {\n navigator.clipboard.writeText(string);\n } else {\n const el = document.createElement('textarea');\n el.value = string;\n document.body.appendChild(el);\n el.select();\n document.execCommand('copy');\n document.body.removeChild(el);\n }\n};\n\nexport enum UrlParameterType {\n From = 'from',\n To = 'to',\n}\n\ntype PermalinkDataType =\n | {\n id?: string;\n row?: number;\n }\n | {\n logs: {\n id: string;\n displayedFields: string[];\n };\n };\n\nexport const generateLogShortlink = (paramName: string, data: PermalinkDataType, timeRange: TimeRange) => {\n const location = locationService.getLocation();\n const searchParams = new URLSearchParams(location.search);\n\n searchParams.set(UrlParameterType.From, timeRange.from.toISOString());\n searchParams.set(UrlParameterType.To, timeRange.to.toISOString());\n searchParams.set(paramName, JSON.stringify(data));\n\n // @todo can encoding + as %20 break other stuff? Can label names or values have + in them that we don't want encoded? Should we just update values?\n // + encoding for whitespace is for application/x-www-form-urlencoded, which appears to be the default encoding for URLSearchParams, replacing + with %20 to keep urls meant for the browser from breaking\n const searchString = searchParams.toString().replace(/\\+/g, '%20');\n return window.location.origin + location.pathname + '?' + searchString;\n};\n\nexport function capitalizeFirstLetter(input: string) {\n if (input.length) {\n return input?.charAt(0).toUpperCase() + input.slice(1);\n }\n\n logger.warn('invalid string argument');\n return input;\n}\n\nexport function truncateText(input: string, length: number, ellipsis: boolean) {\n return input.substring(0, length) + (ellipsis && input.length > length ? '…' : '');\n}\n\nexport function resolveRowTimeRangeForSharing(row: LogRowModel): TimeRange {\n // With infinite scrolling, we cannot rely on the time picker range, so we use a time range around the shared log line.\n const from = dateTime(row.timeEpochMs - 1);\n const to = dateTime(row.timeEpochMs + 1);\n\n const range = {\n from,\n to,\n raw: {\n from,\n to,\n },\n };\n\n return range;\n}\n","import {\n AdHocFiltersVariable,\n CustomVariable,\n DataSourceVariable,\n sceneGraph,\n SceneObject,\n SceneVariableState,\n} from '@grafana/scenes';\nimport { CustomConstantVariable } from './CustomConstantVariable';\nimport {\n AdHocFieldValue,\n FieldValue,\n isAdHocFilterValueUserInput,\n JSON_FORMAT_EXPR,\n LOGS_FORMAT_EXPR,\n LogsQueryOptions,\n MIXED_FORMAT_EXPR,\n SERVICE_NAME,\n stripAdHocFilterUserInputPrefix,\n VAR_AGGREGATED_METRICS,\n VAR_DATASOURCE,\n VAR_FIELD_GROUP_BY,\n VAR_FIELDS,\n VAR_FIELDS_AND_METADATA,\n VAR_FIELDS_EXPR,\n VAR_LABEL_GROUP_BY,\n VAR_LABELS,\n VAR_LABELS_EXPR,\n VAR_LABELS_REPLICA,\n VAR_LEVELS,\n VAR_LEVELS_EXPR,\n VAR_LINE_FILTER,\n VAR_LINE_FILTERS,\n VAR_LINE_FILTERS_EXPR,\n VAR_METADATA,\n VAR_METADATA_EXPR,\n VAR_PATTERNS,\n VAR_PATTERNS_EXPR,\n VAR_PRIMARY_LABEL,\n VAR_PRIMARY_LABEL_SEARCH,\n} from './variables';\nimport { AdHocVariableFilter } from '@grafana/data';\nimport { logger } from './logger';\nimport { narrowFieldValue, NarrowingError } from './narrowing';\nimport { isFilterMetadata } from './filters';\nimport { AdHocFilterTypes, InterpolatedFilterType } from '../Components/ServiceScene/Breakdowns/AddToFiltersButton';\n\nexport function getLogsStreamSelector(options: LogsQueryOptions) {\n const {\n labelExpressionToAdd = '',\n structuredMetadataToAdd = '',\n fieldExpressionToAdd = '',\n parser = undefined,\n } = options;\n\n switch (parser) {\n case 'structuredMetadata':\n return `{${VAR_LABELS_EXPR}${labelExpressionToAdd}} ${structuredMetadataToAdd} ${VAR_LEVELS_EXPR} ${VAR_METADATA_EXPR} ${VAR_PATTERNS_EXPR} ${VAR_LINE_FILTERS_EXPR} ${fieldExpressionToAdd} ${VAR_FIELDS_EXPR}`;\n case 'json':\n return `{${VAR_LABELS_EXPR}${labelExpressionToAdd}} ${structuredMetadataToAdd} ${VAR_LEVELS_EXPR} ${VAR_METADATA_EXPR} ${VAR_PATTERNS_EXPR} ${VAR_LINE_FILTERS_EXPR} ${JSON_FORMAT_EXPR} ${fieldExpressionToAdd} ${VAR_FIELDS_EXPR}`;\n case 'logfmt':\n return `{${VAR_LABELS_EXPR}${labelExpressionToAdd}} ${structuredMetadataToAdd} ${VAR_LEVELS_EXPR} ${VAR_METADATA_EXPR} ${VAR_PATTERNS_EXPR} ${VAR_LINE_FILTERS_EXPR} ${LOGS_FORMAT_EXPR} ${fieldExpressionToAdd} ${VAR_FIELDS_EXPR}`;\n default:\n return `{${VAR_LABELS_EXPR}${labelExpressionToAdd}} ${structuredMetadataToAdd} ${VAR_LEVELS_EXPR} ${VAR_METADATA_EXPR} ${VAR_PATTERNS_EXPR} ${VAR_LINE_FILTERS_EXPR} ${MIXED_FORMAT_EXPR} ${fieldExpressionToAdd} ${VAR_FIELDS_EXPR}`;\n }\n}\n\nexport function getPatternsVariable(scene: SceneObject) {\n const variable = sceneGraph.lookupVariable(VAR_PATTERNS, scene);\n if (!(variable instanceof CustomVariable)) {\n throw new Error('VAR_PATTERNS not found');\n }\n return variable;\n}\n\nexport function getLabelsVariable(scene: SceneObject) {\n return getAdHocFiltersVariable(VAR_LABELS, scene);\n}\n\nexport function getLabelsVariableReplica(scene: SceneObject) {\n return getAdHocFiltersVariable(VAR_LABELS_REPLICA, scene);\n}\n\nexport function getMetadataVariable(scene: SceneObject) {\n return getAdHocFiltersVariable(VAR_METADATA, scene);\n}\n\n// Combined fields and metadata, editable in the UI, changes to this variable flow into FIELDS and METADATA\nexport function getFieldsAndMetadataVariable(scene: SceneObject) {\n return getAdHocFiltersVariable(VAR_FIELDS_AND_METADATA, scene);\n}\n\nexport function getFieldsVariable(scene: SceneObject) {\n return getAdHocFiltersVariable(VAR_FIELDS, scene);\n}\n\nexport function getLevelsVariable(scene: SceneObject) {\n return getAdHocFiltersVariable(VAR_LEVELS, scene);\n}\n\nexport function getLineFilterVariable(scene: SceneObject) {\n const variable = sceneGraph.lookupVariable(VAR_LINE_FILTER, scene);\n if (!(variable instanceof AdHocFiltersVariable)) {\n throw new Error('VAR_LINE_FILTER not found');\n }\n return variable;\n}\n\nexport function getLabelGroupByVariable(scene: SceneObject) {\n const variable = sceneGraph.lookupVariable(VAR_LABEL_GROUP_BY, scene);\n if (!(variable instanceof CustomConstantVariable)) {\n throw new Error('VAR_LABEL_GROUP_BY not found');\n }\n return variable;\n}\n\nexport function getAggregatedMetricsVariable(scene: SceneObject) {\n const variable = sceneGraph.lookupVariable(VAR_AGGREGATED_METRICS, scene);\n if (!(variable instanceof CustomConstantVariable)) {\n throw new Error('SERVICE_LABEL_VAR not found');\n }\n return variable;\n}\n\nexport function getFieldGroupByVariable(scene: SceneObject) {\n const variable = sceneGraph.lookupVariable(VAR_FIELD_GROUP_BY, scene);\n if (!(variable instanceof CustomConstantVariable)) {\n throw new Error('VAR_FIELD_GROUP_BY not found');\n }\n return variable;\n}\n\nexport function getDataSourceVariable(scene: SceneObject) {\n const variable = sceneGraph.lookupVariable(VAR_DATASOURCE, scene);\n if (!(variable instanceof DataSourceVariable)) {\n throw new Error('VAR_DATASOURCE not found');\n }\n return variable;\n}\n\nexport function getLineFiltersVariable(scene: SceneObject) {\n const variable = sceneGraph.lookupVariable(VAR_LINE_FILTERS, scene);\n if (!(variable instanceof AdHocFiltersVariable)) {\n throw new Error('VAR_LINE_FILTERS not found');\n }\n return variable;\n}\n\nexport function getAdHocFiltersVariable(variableName: AdHocFilterTypes, scene: SceneObject) {\n const variable = sceneGraph.lookupVariable(variableName, scene);\n\n if (!(variable instanceof AdHocFiltersVariable)) {\n throw new Error(`Could not get AdHocFiltersVariable ${variableName}. Variable not found.`);\n }\n return variable;\n}\n\nexport function getServiceSelectionSearchVariable(sceneRef: SceneObject) {\n const variable = sceneGraph.lookupVariable(VAR_PRIMARY_LABEL_SEARCH, sceneRef);\n if (!(variable instanceof CustomConstantVariable)) {\n throw new Error('VAR_PRIMARY_LABEL_SEARCH not found');\n }\n return variable;\n}\n\nexport function clearServiceSelectionSearchVariable(sceneRef: SceneObject) {\n getServiceSelectionSearchVariable(sceneRef).setState({\n value: '.+',\n label: '',\n });\n}\n\nexport function getServiceSelectionPrimaryLabel(sceneRef: SceneObject) {\n const variable = sceneGraph.lookupVariable(VAR_PRIMARY_LABEL, sceneRef);\n if (!(variable instanceof AdHocFiltersVariable)) {\n throw new Error('VAR_PRIMARY_LABEL not found');\n }\n return variable;\n}\n\nexport function setServiceSelectionPrimaryLabelKey(key: string, sceneRef: SceneObject) {\n getServiceSelectionPrimaryLabel(sceneRef).setState({\n filters: [\n {\n // the value is replaced by the value in VAR_PRIMARY_LABEL_SEARCH if a search is active, so we just need to set the filter key (label name)\n value: '.+',\n operator: '=~',\n key: key,\n },\n ],\n });\n}\n\nexport function getUrlParamNameForVariable(variableName: string) {\n return `var-${variableName}`;\n}\n\n/**\n * Parses an adHoc filter and returns the encoded value and parser\n * @param filter\n * @param variableName - only used for debugging\n */\nexport function getValueFromFieldsFilter(\n filter: { value: string; valueLabels?: string[] },\n variableName: string = VAR_FIELDS\n): FieldValue {\n if (isFilterMetadata(filter)) {\n return {\n value: filter.value,\n parser: 'structuredMetadata',\n };\n }\n\n try {\n const encodedValue = isAdHocFilterValueUserInput(filter.value)\n ? stripAdHocFilterUserInputPrefix(filter.value)\n : filter.value;\n const fieldValue = narrowFieldValue(JSON.parse(encodedValue));\n if (fieldValue !== false) {\n return fieldValue;\n } else {\n throw new NarrowingError('getValueFromFieldsFilter: invalid filter value!');\n }\n } catch (e) {\n if (e instanceof NarrowingError) {\n logger.error(e, { msg: `getValueFromFieldsFilter: Failed to validate ${variableName}`, value: filter.value });\n } else {\n logger.error(e, { msg: `getValueFromFieldsFilter: Failed to parse ${variableName}`, value: filter.value });\n }\n\n // If the user has a URL from before 0.1.4 where detected_fields changed the format of the fields value to include the parser, fall back to mixed parser if we have a value\n if (filter.value) {\n return {\n value: filter.value,\n parser: 'mixed',\n };\n }\n throw e;\n }\n}\n\nexport function getValueFromAdHocVariableFilter(\n variableName: InterpolatedFilterType,\n filter?: AdHocVariableFilter\n): AdHocFieldValue {\n if (variableName === VAR_FIELDS && filter) {\n return getValueFromFieldsFilter(filter);\n }\n\n return {\n value: filter?.value,\n };\n}\n\nexport function getServiceName(scene: SceneObject) {\n const labelsVariable = getLabelsVariable(scene);\n return getServiceNameFromVariableState(labelsVariable.state);\n}\n\nexport function getServiceNameFromVariableState(\n adHocFiltersVariableState: SceneVariableState & { filters: AdHocVariableFilter[] }\n) {\n const serviceName = adHocFiltersVariableState.filters\n .filter((filter) => filter.key === SERVICE_NAME)\n .map((filter) => filter.value);\n\n if (!serviceName) {\n throw new Error('Service present in filters selected');\n }\n return serviceName[0];\n}\n\nexport function getDataSourceName(scene: SceneObject) {\n const dsVariable = getDataSourceVariable(scene);\n return dsVariable.getValue();\n}\n","import { AdHocFiltersVariable, sceneGraph, SceneObject, SceneVariable } from '@grafana/scenes';\nimport { CustomConstantVariable } from './CustomConstantVariable';\nimport { SERVICE_NAME, SERVICE_UI_LABEL, VAR_LABELS } from './variables';\nimport { IndexScene } from '../Components/IndexScene/IndexScene';\nimport { getPrimaryLabelFromUrl } from './routing';\nimport { FilterOp } from './filterTypes';\nimport { includeOperators, numericOperators, operators } from './operators';\nimport { isOperatorInclusive } from './operatorHelpers';\n\nexport function getVariablesThatCanBeCleared(indexScene: IndexScene) {\n const variables = sceneGraph.getVariables(indexScene);\n let variablesToClear: SceneVariable[] = [];\n\n for (const variable of variables.state.variables) {\n if (variable instanceof AdHocFiltersVariable && variable.state.filters.length) {\n variablesToClear.push(variable);\n }\n if (variable instanceof CustomConstantVariable && variable.state.value && variable.state.name !== 'logsFormat') {\n variablesToClear.push(variable);\n }\n }\n return variablesToClear;\n}\n\nexport function clearVariables(sceneRef: SceneObject) {\n // clear patterns: needs to happen first, or it won't work as patterns is split into a variable and a state, and updating the variable triggers a state update\n const indexScene = sceneGraph.getAncestor(sceneRef, IndexScene);\n indexScene.setState({\n patterns: [],\n });\n\n const variablesToClear = getVariablesThatCanBeCleared(indexScene);\n\n variablesToClear.forEach((variable) => {\n if (variable instanceof AdHocFiltersVariable && variable.state.key === 'adhoc_service_filter') {\n let { labelName } = getPrimaryLabelFromUrl();\n // getPrimaryLabelFromUrl returns the label name that exists in the URL, which is \"service\" not \"service_name\"\n if (labelName === SERVICE_UI_LABEL) {\n labelName = SERVICE_NAME;\n }\n variable.setState({\n filters: variable.state.filters.filter((filter) => filter.key === labelName),\n });\n } else if (variable instanceof AdHocFiltersVariable) {\n variable.setState({\n filters: [],\n });\n } else if (variable instanceof CustomConstantVariable) {\n variable.setState({\n value: '',\n text: '',\n });\n }\n });\n}\n\nexport const operatorFunction = function (variable: AdHocFiltersVariable) {\n const wip = variable.state._wip;\n\n // If there is already a non-regex inclusion operator for this key, don't allow exclusion\n if (wip && variable.state.filters.some((filter) => filter.key === wip.key && filter.operator === FilterOp.Equal)) {\n return includeOperators;\n }\n\n const isLabelsVar = variable.state.name === VAR_LABELS;\n const inclusiveOperatorCount = variable.state.filters.filter((filter) => isOperatorInclusive(filter.operator)).length;\n const isEditingOnlyFilter = !wip?.key && inclusiveOperatorCount === 1;\n const isAddingFirstFilter = wip?.key && inclusiveOperatorCount < 1;\n\n // Should not be able to exclude the only operator\n if (isLabelsVar && (isEditingOnlyFilter || isAddingFirstFilter)) {\n return includeOperators;\n }\n\n // Only fields or metadata can have field types?\n if (wip?.meta) {\n const meta: Record = wip.meta;\n const type = meta.type;\n\n if (type === 'float' || type === 'bytes' || type === 'duration') {\n return numericOperators;\n }\n }\n\n return operators;\n};\n"],"names":["FilterButton","props","isExcluded","isIncluded","onInclude","onExclude","onClear","titles","buttonFill","hideExclude","styles","useStyles2","getStyles","div","className","container","Button","variant","fill","size","aria-selected","includeButton","onClick","data-testid","testIds","exploreServiceDetails","buttonFilterInclude","title","include","excludeButton","exclude","buttonFilterExclude","theme","css","display","justifyContent","borderRadius","borderRight","undefined","shape","radius","default","borderLeft","graphicContainer","margin","graphic","width","height","padding","spacing","text","alignItems","wrap","GrotError","children","useTheme2","SVG","src","isDark","Text","textAlignment","color","element","InterceptBanner","Alert","alert","severity","onRemove","a","target","href","rel","br","flex","GiveFeedbackButton","wrapper","feedback","Icon","name","marginLeft","gap","position","top","alignSelf","colors","secondary","fontSize","typography","bodySmall","link","CustomVariableValueSelectors","SceneObjectBase","model","variablesSetState","sceneGraph","getVariables","useState","variables","state","length","filter","variable","includes","map","VariableValueSelectWrapper","key","layout","Component","PatternTag","pattern","expanded","setExpanded","onMouseLeave","Tag","getPatternPreview","tag","aria-label","buttonRemovePattern","removeButton","PREVIEW_WIDTH","sm","lg","Math","round","window","innerWidth","substringLength","substring","fontFamily","cursor","overflow","borderTopRightRadius","borderBottomRightRadius","backgroundColor","main","border","boxSizing","textOverflow","paddingLeft","paddingRight","PatternControls","patterns","includePatterns","type","excludePatterns","onRemovePattern","addCurrentUrlToHistory","pat","reportAppInteraction","USER_EVENTS_PAGES","service_details","USER_EVENTS_ACTIONS","pattern_removed","includePatternsLength","excludePatternsLength","patternsContainer","weight","buttonIncludedPattern","p","buttonExcludedPattern","flexWrap","VariableLayoutScene","firstRowWrapper","label","breakpoints","down","flexDirection","bodyContainer","flexGrow","minHeight","maxWidth","body","controlsFirstRowContainer","controlsRowContainer","controlsContainer","filters","filtersWrap","controlsWrapper","marginTop","timeRangeDatasource","timeRange","controls","textAlign","rotateIcon","svg","transform","indexScene","getAncestor","IndexScene","layoutScene","LayoutScene","lineFilterRenderer","levelsRenderer","cx","control","SceneFlexLayout","CONTROLS_VARS_DATASOURCE","CONTROLS_VARS_FIELDS_COMBINED","setState","interceptBannerStorageKey","PLUGIN_ID","onActivate","this","LineFilterVariablesScene","LevelsVariableScene","variableLayout","dismiss","interceptDismissed","localStorage","setItem","constructor","super","getItem","addActivationHandler","bind","contentScene","logger","warn","getDetectedFieldValuesTagValuesProvider","expr","sceneRef","variableType","datasourceUnknownType","getDataSourceSrv","get","getDataSource","DataSourceWithBackend","error","Error","languageProvider","values","fetchDetectedLabelValues","options","limit","throwError","requestOptions","showErrorAlert","results","isArray","VAR_LEVELS","replace","currentFilters","valuesToRemove","forEach","value","valueLabels","isOperatorRegex","operator","split","v","push","filteredResults","meta","parser","valueDecoded","getValueFromFieldsFilter","JSON","stringify","r","msg","e","getLabelsTagValuesProvider","datasource_","datasource","getTagValues","filtersFiltered","existingFilters","oldFiltersFiltered","f","isOperatorInclusive","some","tagValuesFilterAdHocFilters","ExpressionBuilder","getJoinedLabelsFilters","getDataSourceVariable","result","FilterOp","Equal","favoriteValuesArray","getFavoriteLabelValuesFromStorage","getValue","toString","favoriteValuesSet","Set","sort","b","has","getLabelsTagKeysProvider","getTagKeys","tagKeys","filteredResult","Array","LABELS_TO_REMOVE","getFieldsKeysProvider","scopedVars","fetchDetectedFieldsFn","fetchDetectedFields","opts","queryOptions","field","LEVEL_VARIABLE_VALUE","VAR_FIELDS_AND_METADATA","parsers","group","interpolateString","interpolatedExpr","range","getDefaultTimeRange","rangeParams","getTimeRangeParams","start","end","params","query","Promise","resolve","reject","getResource","fields","console","MAP","KEYCODE_MAP","SHIFT_MAP","$","_","SPECIAL_ALIASES","option","command","return","escape","plus","mod","test","navigator","platform","REVERSE_MAP","i","characterFromEvent","event","character","String","fromCharCode","which","shiftKey","toLowerCase","isModifier","pickBestAction","modifiers","action","keyNumber","parseInt","hasOwnProperty","getReverseMap","getKeyInfo","combination","keys","keysFromString","belongsTo","ancestor","document","parentNode","mousetrap","el","_callbacks","_directMap","_sequenceLevels","_resetTimer","_ignoreNextKeyup","_ignoreNextKeypress","_nextExpectedAction","_globalCallbacks","_resetSequences","doNotReset","activeSequences","_getMatches","sequenceName","level","callback","matches","seq","metaKey","ctrlKey","modifiers1","modifiers2","join","deleteCombo","combo","deleteSequence","splice","_fireCallback","sequence","srcElement","HTMLElement","stopCallback","preventDefault","returnValue","stopPropagation","cancelBubble","_handleKey","callbacks","maxLevel","processedSequenceCallback","max","suffixPrefixIndex","lastIndexOf","sequencePrefix","slice","Object","entries","startsWith","ignoreThisKeypress","_handleKeyEvent","rawEvent","KeyboardEvent","repeat","keyCode","handleKey","altKey","eventModifiers","_resetSequenceTimer","clearTimeout","setTimeout","_bindSequence","_increaseSequence","nextAction","_callbackAndReset","wrappedCallback","_bindSingle","info","eventLike","callbackInfo","_bindMultiple","combinations","self","unbind","bindGlobal","unbindGlobal","trigger","reset","indexOf","composedPath","initialEventTarget","Boolean","tagName","isContentEditable","args","addKeycodes","object","addEventListener","KeybindingSet","addBinding","item","evt","onTrigger","_binds","removeAll","appEvents","getAppEvents","handleZoomOut","scene","timePicker","getTimePicker","onZoom","handleTimeRangeShift","direction","onMoveBackward","onMoveForward","toggleVizPanelLegend","vizPanel","optionsWithLegend","legend","showLegend","onOptionsChange","CopyTimeEvent","BusEventBase","PasteTimeEvent","BusEventWithPayload","getCopiedTimeRange","raw","clipboard","readText","unknownRange","parse","narrowTimeRange","isError","NoLokiSplash","h3","locationUtil","assureBaseUrl","up","marginBottom","showLogsButtonSceneKey","stateUpdate","drillDownLabel","setVariableProviders","findByKeyAndType","ShowLogsButtonScene","hidden","routeMatch","breakdownLabel","getDrilldownSlug","PageSlugs","explore","ServiceSelectionScene","ServiceScene","setTagProviders","updatePatterns","getPatternsVariable","resetVariablesIfNotInUrl","getFieldsVariable","getUrlParamNameForVariable","VAR_FIELDS","getLevelsVariable","_subs","add","subscribeToState","newState","getTimeRange","limitMaxInterval","subscribeToEvent","subscribeToPasteTimeEvent","fieldFilters","metadataFilters","getMetadataVariable","fieldsAndMetadataVariable","getFieldsAndMetadataVariable","updateFilters","subscribeToCombinedFieldsVariable","clearKeyBindings","keybindings","vizPanelKey","panelAttentionSubscription","subscribe","SetPanelAttentionEvent","payload","panelId","withFocusedPanel","fn","findObject","o","isActive","VizPanel","findAllObjects","withAllPanels","url","getExploreLink","locationService","activeScene","__grafanaSceneContext","publish","updateUrl","publishEvent","onRefresh","toAbsolute","unsubscribe","setupKeyboardShortcuts","setLabelsProviders","labelsVar","getLabelsVariable","_getOperators","operatorFunction","getTagKeysProvider","getTagValuesProvider","prevState","jsonData","plugin","interval","maxInterval","rangeUtil","intervalToSeconds","timeRangeInterval","to","diff","from","defaultRange","SceneTimeRange","DEFAULT_TIME_RANGE","AppEvents","alertWarning","attempted_duration_seconds","configured_max_interval","levelsVariable","fieldsCombinedVariable","getLevelsTagValuesProvider","getLevelsTagKeysProvider","getCombinedFieldsTagKeysProvider","getCombinedFieldsTagValuesProvider","currentKey","metadataVar","fieldVar","uninterpolatedExpression","getFieldsTagValuesExpression","otherFiltersString","renderVariableFilters","otherMetadataString","VAR_METADATA","PENDING_FIELDS_EXPR","PENDING_METADATA_EXPR","interpolate","interpolated","renderLogQLFieldFilters","renderLogQLMetadataFilters","urlParamName","location","getLocation","URLSearchParams","search","patternsVariable","patternsLine","renderPatternFilters","changeValueTo","getUrlState","updateFromUrl","getLastUsedDataSourceFromStorage","variablesScene","unsub","initialDatasourceUid","initialFilters","labelVariable","AdHocFiltersVariable","VAR_LABELS","EXPLORATION_DS","allowCustomValue","expressionBuilder","renderLogQLLabelFilters","hide","VariableHide","dontHide","onAddCustomValue","onAddCustomAdHocValue","operators","fieldsVariable","applyMode","hideVariable","metadataVariable","onAddCustomFieldValue","skipUrlSync","renderLevelsFilter","supportsMultiValueOperators","lineFiltersVariable","VAR_LINE_FILTERS","renderLogQLLineFilter","lineFilterOperators","dsVariable","DataSourceVariable","VAR_DATASOURCE","pluginId","dsValue","addLastUsedDataSourceToStorage","SceneVariableSet","CustomVariable","VAR_PATTERNS","VAR_LINE_FILTER","CustomConstantVariable","VAR_LOGS_FORMAT","MIXED_FORMAT_EXPR","getVariableSet","SceneFlexItem","disabled","SceneTimePicker","SceneRefreshPicker","config","featureToggles","exploreLogsAggregatedMetrics","ToolbarScene","isOpen","$timeRange","$variables","_urlSync","SceneObjectUrlSyncConfig","areArraysEqual","isFilterMetadata","copiedRange","newRange","convertRawToRange","sceneTimeRange","getLokiDatasource","then","ds","LoadingPlaceholder","LEVELS_VARIABLE_SCENE_KEY","onFilterChange","SceneVariableValueChangedEvent","levelsVar","selected","isLoading","visible","levelsKeys","response","skipPublish","forcePublish","filterOptions","opt","filterOpt","onChangeOptions","openSelect","onCloseMenu","syncLevelsVariable","levelsVariableScene","obj","levels","inputWrap","ControlsLabel","MultiSelect","prefix","placeholder","onChange","onOpenMenu","onFocus","menuShouldPortal","isClearable","blurInputOnSelect","closeMenuOnSelect","openMenuOnFocus","showAllSelectedWhenOpen","hideSelectedOptions","val","LineFilterVariable","focus","setFocus","getLineFilterStyles","span","titleWrap","IconButton","collapseWrap","LineFilterEditor","collapseBtn","tooltip","isFilterExclusive","LineFilterOp","negativeMatch","negativeRegex","updateFilter","existingFilter","filterUpdate","debounced","updateVariableLineFilter","updateVariableDebounced","handleEnter","lineFilter","onRegexToggle","newOperator","match","regex","onToggleExclusive","onCaseSensitiveToggle","caseSensitive","LineFilterCaseSensitive","caseInsensitive","onInputChange","removeFilter","getLineFiltersVariable","otherFilters","keyLabel","search_string_in_variables_changed","searchQueryLength","containsLevel","debounce","sortLineFilters","lineFiltersWrap","lineFilterVar","exclusive","setExclusive","hasPositiveFilter","getLink","positiveFilter","find","getDrillDownIndexLink","button","LinkButton","index","header","showLogsButton","AGGREGATED_METRICS_USER_OVERRIDE_LOCALSTORAGE_KEY","pluginJson","userOverride","active","aggregatedMetrics","toggleAggregatedMetricsOverride","service_selection","aggregated_metrics_toggled","enabled","onToggleOpen","popover","background","primary","boxShadow","shadows","z3","weak","zIndex","marginRight","heading","fontWeight","fontWeightMedium","paddingBottom","gridTemplateColumns","rowGap","columnGap","Dropdown","overlay","AGGREGATED_METRIC_START_DATE","toLocaleString","Switch","aggregatedMetricsToggle","placement","onVisibleChange","ToolbarButton","icon","aggregatedMetricsMenu","getServicesScene","EmbeddedScene","makeIndexPage","SceneAppPage","prefixRoute","PageLayoutType","Custom","preserveUrlKeys","SERVICE_URL_KEYS","routePath","getScene","drilldowns","ROUTE_DEFINITIONS","logs","getPage","parent","makeBreakdownPage","defaultRoute","labels","CHILD_ROUTE_DEFINITIONS","makeBreakdownValuePage","ValueSlugs","makeRedirectPage","PLUGIN_BASE_URL","hideFromBreadcrumbs","$behaviors","navigateToIndex","slug","labelName","labelValue","extractValuesFromRoute","capitalizeFirstLetter","ROUTES","DRILLDOWN_URL_KEYS","getParentPage","SUB_ROUTES","AddToInvestigationButton","queries","getQueries","context","getContext","data","getData","queryRunner","findObjectOfType","SceneQueryRunner","frame","getFilter","q","legendFormat","getFieldConfig","panel","frames","series","fieldConfig","properties","id","existingOverride","overrides","matcher","displayNameFromDS","displayName","unshift","fieldName","uid","ctx","origin","logoPath","links","usePluginLinks","extensionPointId","ExtensionPoints","MetricInvestigation","description","filterNameAndValueObj","ADD_TO_INVESTIGATION_MENU_TEXT","ADD_TO_INVESTIGATION_MENU_DIVIDER_TEXT","ADD_TO_INVESTIGATION_MENU_GROUP_TEXT","AvgFieldPanelType","CollapsablePanelText","PanelMenu","addItem","setItems","items","addInvestigationsLink","iconClassName","onExploreLinkClickTracking","shortcut","viz","VizPanelMenu","investigationsButton","investigationOptions","getLabelName","activate","panelType","collapsible","addVisualizationHeader","menu","collapsed","newCollapsableState","vizPanelFlexLayout","setValueSummaryHeight","setPanelOption","addCollapsableItem","gridItem","SceneCSSGridItem","clone","$data","headerActions","PanelBuilders","timeseries","setOverrides","setLevelColorOverrides","histogram","setMenu","setTitle","setHeaderActions","setData","build","newPanelType","fieldsAggregatedBreakdownScene","FieldsAggregatedBreakdownScene","rebuildAvgFields","onSwitchVizTypeTracking","addHistogramItem","exploreLogsVizPanelMenu","subscribeToAddToInvestigation","getQueryRunnerFromChildren","breakdownScene","FieldValuesBreakdownScene","LabelValuesBreakdownScene","queryProvider","uninterpolatedExpr","open","getQueryExpr","trimEnd","displayedFields","getDisplayedFields","visualisationType","getLogsVisualizationType","columns","urlColumns","unknownToStrings","columnsParam","getUrlColumns","exploreState","toURLRange","refId","panelsState","labelFieldName","DATAPLANE_LABELS_NAME","subUrl","appSubUrl","urlUtil","renderUrl","panes","schemaVersion","onExploreLinkClick","all","open_in_explore_menu_clicked","newVizType","change_viz_type","getInvestigationLink","addToInvestigation","getPluginLinkExtensions","extensions","getObservablePluginLinks","lastValueFrom","addToInvestigationButton","existingMenuItems","existingAddToExplorationLink","getPanelWrapperStyles","panelWrapper","opacity","visibility","shade","AddFilterEvent","source","ClearFilterEvent","addAdHocFilter","addToFilters","clearFilters","getUIAdHocVariable","fieldValue","getValueFromAdHocVariableFilter","getNumericOperatorType","op","gt","gte","lt","lte","removeNumericFilter","resolveVariableTypeForField","operatorType","NotEqual","addNumericFilter","valueObject","getParserForField","addToFavorites","valueLabel","filterExists","validateVariableNameForField","variableName","getDetectedLabelsFrame","AddToFiltersButton","setFilterState","filterInSelectedFilters","isMetadata","add_to_filters_in_breakdown_clicked","filterType","filtersLength","getAdHocFiltersVariable","BreakdownSearchReset","recentFilters","BreakdownSearchScene","filterValues","LabelBreakdownScene","FieldsBreakdownScene","cacheKey","byFrameRepeater","findDescendents","ByFrameRepeater","child","filterByString","typeofBody","onValueFilterChange","clearValueFilter","SearchInput","performRepeat","newChildren","sortedSeries","sortSeries","sortBy","seriesIndex","layoutChild","getLayoutChild","unfilteredChildren","layoutSwitcher","LayoutSwitcher","singleGraphParent","VALUE_SUMMARY_PANEL_KEY","SceneDataTransformer","transformations","limitFramesByName","pipe","newFrames","getLabelValue","typeofPanel","typeofGraphParent","iterateFrames","haystack","fuzzySearch","filterFrames","filterSummaryChart","filterFn","buildNoResultsScene","clearFilter","prevData","LoadingState","Done","Streaming","SceneReactObject","reactNode","alertContainer","noResultsAlert","clearButton","minWidth","EmptyLayoutScene","emptyStateStyles","FieldSelector","setSelected","selectableOptions","InlineField","selectWrapper","Select","select","ServiceFieldSelector","selectOption","initialFilter","customOption","setCustomOption","allOptions","selectedOption","serviceSceneSelectWrapper","exploreServiceSearch","__isNew__","actionMeta","prevInputValue","wrapWildcardSearch","input","x1","Selector","getTagKey","groupByVariable","getFieldGroupByVariable","buildQuery","buildQueryRunner","onValuesDataQueryChange","runQuery","setSubscriptions","getQueryRunner","runQueriesMode","tagKey","detectedFieldsFrame","getDetectedFieldsFrame","queryString","buildFieldsQueryString","filterExpression","removeFieldLabelFromVariableInterpolation","expression","buildDataQuery","getParserForThisField","setFieldParserSubscriptions","setMetadataParserSubscriptions","getSceneQueryRunner","rebuildQuery","runQueries","queryRunners","getQueryParser","fieldsVar","setErrorState","errors","err","status","strong","message","traceId","optionValue","getSortByPreference","DEFAULT_SORT_BY","fieldsBreakdownScene","layouts","LabelsMenu","ValueSummaryPanelScene","ValuesMenu","SceneCSSGridLayout","templateColumns","FIELDS_BREAKDOWN_GRID_TEMPLATE_COLUMNS","autoRows","isLazy","getFilterBreakdownValueScene","DrawStyle","Bars","Line","getParserFromFieldsFilters","parserForFields","getParserForFields","updateChildren","newParser","getDetectedFieldsFrameFromQueryRunnerState","newNamesField","getDetectedFieldsNamesFromQueryRunnerState","newParsersField","getDetectedFieldsParsersFromQueryRunnerState","cardinalityMap","calculateCardinalityMap","newFieldsSet","updatedChildren","fieldType","getDetectedFieldType","dataTransformer","getQueryRunnerForPanel","delete","buildChildren","sortChildren","subscribeToPanel","aPanel","bPanel","aCardinality","Map","cardinality","set","serviceScene","fieldsCount","updateFieldCount","$detectedFieldsData","onDetectedFieldsChange","subscribeToFieldsVar","newParsers","oldParsers","extractParserFromArray","detectedFieldsState","childrenClones","getResultsStream","isHidden","activeLayout","getActiveGridLayouts","getPanelOption","panels","isAvgField","newChild","buildChild","ALL_VARIABLE_VALUE","SelectLabelActionScene","hideValueDrilldown","setCustomFieldConfig","mode","StackingMode","Normal","setSeriesLimit","MAX_NUMBER_OF_TIME_SERIES","l","activeLayoutChildren","activePanels","changeFieldCount","loading","$detectedLabelsData","SortCriteriaChanged","handleSortByChange","variableChanged","getPrimaryLabelFromUrl","newService","prevService","oldState","updateOptions","checkPrimaryLabel","dataFrame","getVariablesThatCanBeCleared","NoMatchingLabelsScene","clearCallback","clearVariables","getFieldOptions","updateBody","VAR_FIELD_GROUP_BY","defaultToAll","includeAll","SortByScene","_variableDependency","VariableDependencyConfig","variableNames","value_breakdown_sort_change","criteria","onFieldSelectorChange","select_field_in_breakdown_clicked","previousField","getValueText","view","sortByDirection","navigateToValueBreakdown","labelsMenuWrapper","valuesMenuWrapper","blockingMessage","StatusWrapper","content","textDecoration","paddingTop","LabelsAggregatedBreakdownScene","$detectedLabels","update","updateQueriesOnFieldsVariableChange","getPanelByIndex","detectedLabelsFrame","newLabels","getLabelGroupByVariable","layoutObj","existingLabels","newLabelsSet","detectedLabels","LABEL_BREAKDOWN_GRID_TEMPLATE_COLUMNS","buildLabelsQuery","setHoverHeader","onDetectedLabelsDataChange","onLabelsVariableChange","onGroupByVariableChange","SERVICE_UI_LABEL","SERVICE_NAME","newPrimaryLabel","prevPrimaryLabel","getLabelOptions","hasAllValue","VAR_LABEL_GROUP_BY","previousLabel","VAR_LABEL_GROUP_BY_EXPR","removeValueLabelFromVariableInterpolation","setEmptyStates","setErrorStates","errorIndex","displayed","showErrorToast","getActiveLayout","repeater","variableState","labelBreakdownScene","bodyOpts","levelColor","errorArray","displayError","activeLayoutContainsNoPanels","alertError","renderError","onLayoutChange","layout_type_changed","Field","RadioButtonGroup","findIndex","setCollapsible","setCollapsed","buildValueSummaryPanel","getValueSummaryHeight","extendPanelContext","extendTimeSeriesLegendBus","maxHeight","syncLevelsVisibleSeries","syncLabelsValueSummaryVisibleSeries","syncFieldsValueSummaryVisibleSeries","getFieldsVariableLegendSyncSubscription","sceneFlexItem","isLevel","initLegendOptions","getLabelsVariableLegendSyncSubscription","getQuerySubscription","onToggleSeriesVisibility","toggleLevelFromFilter","toggleLabelFromFilter","toggleFieldFromFilter","label_in_panel_summary_clicked","collapsableState","suffix","rest","Input","suffixWrapper","clearIcon","DisplayDurationUnits","DisplayByteUnits","NumericFilterPopoverScene","gtFilter","ltFilter","extractedValue","extractValueFromString","gtu","unit","ltu","Number","hasExistingFilter","onSubmit","togglePopover","units","onInputKeydown","formDisabled","inputString","inputType","durationValue","durationValueLength","isNaN","bytesValue","byteValueLength","getUnitOptions","popoverStyles","getPopoverStyles","subTitle","selectLabelActionScene","ClickOutsideWrapper","useCapture","Stack","role","card","fieldWrap","FieldSet","fieldset","breakdowns","common","filterNumericPopover","inputGreaterThanInclusive","horizontal","inclusiveField","inclusiveInput","inputGreaterThan","onKeyDownCapture","autoFocus","currentTarget","numberInput","Label","inputGreaterThanUnit","unitFieldLabel","selectInput","inputLessThanInclusive","inputLessThan","inputLessThanUnit","buttons","submitButton","cancelButton","numberFieldLabel","switchFieldLabel","INCLUDE_VALUE","EXCLUDE_VALUE","NUMERIC_FILTER_VALUE","getVariable","getExistingFilter","EMPTY_VARIABLE_VALUE","onClickExcludeEmpty","onClickIncludeEmpty","onClickNumericFilter","selectedValue","calculateSparsity","newLogsPanelState","showPopover","logsPanelData","getLogsPanelFrame","hasNumericFilters","hasSparseFilters","logLinesWithLabelCount","reduce","acc","percentage","existingFilterValue","detectedFieldFrame","getViewValuesLink","getValueBreakdownLink","SelectableValueComponent","getSelectableValueComponentStyles","popoverRef","useRef","filterButtonDisabled","hasOtherFilter","selectedOptionValue","hasExistingNumericFilter","numericSelected","includeSelected","sparseIncludeOption","component","sparseExcludeOption","numericFilterOption","defaultOption","ButtonGroup","filterButtonGroup","filterButton","ref","ButtonSelect","filterSelect","buttonSelect","PopoverController","showPopper","hidePopper","popperProps","blurFocusProps","onBlur","current","Popover","show","wrapperClassName","referenceElement","renderArrow","left","warning","pxToRem","borderTopLeftRadius","borderBottomLeftRadius","sortingOptions","ReducerID","stdDev","sum","min","fieldReducers","selectOptions","filterReducerOptions","onCriteriaChange","setSortByPreference","onDirectionChange","sortByValue","htmlFor","sortByFunction","isSearchable","inputId","ENABLED_PERCENTILES","ext","getLabelValueFromDataFrame","statusMessage","fontStyle","getFocusStyles","outline","outlineOffset","canvas","transitionTimingFunction","transitionDuration","transitionProperty","getIconButtonBefore","hoverSize","transitions","handleMotion","RegexIconButton","maxContrast","Tooltip","viewBox","xmlns","x","y","dominantBaseline","textAnchor","gridSize","x0_5","hover","colorManipulator","alpha","LineFilterCaseSensitivityButton","LineFilterInput","rows","INITIAL_INPUT_WIDTH","onSubmitLineFilter","onClearLineFilter","setWidth","resize","useEffect","searchLogs","inputNoBorderRight","onKeyUp","buttonWrap","removeBtn","submit","exclusiveBtn","LogOptionsScene","handleWrapLinesChange","getLogsPanelScene","wrapLogMessage","setLogOption","getLogsListScene","setLogsVizOption","prettifyLogMessage","onChangeLogsSortOrder","sortOrder","LogsListScene","LogsPanelScene","clearDisplayedFields","logs_clear_displayed_fields","getLogsPanelSortOrderFromStore","getLogOption","LogsSortOrder","Descending","getLogsPanelSortOrderFromURL","decodedSortOrder","narrowLogsSortOrder","onChangeVisualizationType","visualizationType","wrapLines","buttonGroupWrapper","transparent","Ascending","LogsPanelHeaderActions","vizType","tableColumnCustomWidths","LogLineState","TableColumnsContext","createContext","columnWidthMap","setColumnWidthMap","filteredColumns","setColumns","setFilteredColumns","setVisible","bodyState","setBodyState","clearSelectedLine","TableColumnContextProvider","initialColumns","logsFrame","setUrlColumns","setUrlTableBodyState","urlTableBodyState","showColumnManagementDrawer","isColumnManagementActive","removeExtraColumns","initialColumnWidths","existingWidths","narrowRecordStringNumber","NarrowingError","getColumnWidthsFromLocalStorage","setColumnWidthMapState","handleSetColumns","useCallback","newColumns","activeColumns","colA","colB","getActiveColumns","handleSetBodyState","logLineState","handleSetVisible","isVisible","pendingLabelState","newColumnsArray","pa","pb","timeField","bodyField","defaultColumns","getDefaultColumns","col","pendingColumns","getTimeName","percentOfLinesWithLabel","Infinity","getBodyName","setDefaultColumns","Provider","labelTypes","columnsToSet","useTableColumnContext","useContext","TableCellContext","cellIndex","numberOfMenuItems","setActiveCellIndex","TableCellContextProvider","cellActive","setCellActive","handleCellActive","useTableCellContext","TableHeaderContext","isHeaderMenuActive","setHeaderMenuActive","TableHeaderContextProvider","handleisHeaderMenuActive","useTableHeaderContext","LogsColumnSearch","searchValue","setSearchValue","dispatcher","newColumnsWithMeta","numberOfResults","searchResultCount","reportInteraction","resultCount","searchWrap","needle","debouncedFuzzySearch","LogsTableEmptyFields","empty","LogsTableNavField","dragIcon","labelCount","appearance","contentWrap","customWidthWrap","checkboxLabel","whiteSpace","Checkbox","checked","showCount","omit","draggable","LogsTableActiveFields","reorderColumn","valueFilter","toggleColumn","dragging","columnWrapper","getLogsFieldsStyles","labelKeys","renderTitle","DragDropContext","onDragEnd","destination","Droppable","droppableId","provided","droppableProps","innerRef","la","lb","sortLabels","Draggable","draggableId","snapshot","isDragging","draggableProps","dragHandleProps","collator","Intl","Collator","sensitivity","LogsTableAvailableFields","borderBottom","compare","LogsTableMultiSelect","sidebarWrap","overflowY","scrollbarWidth","columnHeaderButton","columnHeader","h6","clear","filteredColumnsWithMeta","columnsWithMeta","getReorderColumn","sourceIndex","destinationIndex","ColumnSelectionDrawerWrap","columnName","logContext","logError","c","priorActiveCount","column","columnAction","columnCount","columnFilterEvent","pendingFilteredLabelState","isDefaultField","DefaultCellWrapComponent","CellWrapInnerComponent","onMouseOut","onMouseIn","rowIndex","cellState","overflowX","onMouseEnter","initialState","addFilter","selectedLine","QueryContext","QueryContextProvider","useQueryContext","CellContextMenu","pillType","menuItemsWrap","menuItem","showColumn","path","fillRule","clipRule","d","fillOpacity","LEVEL_NAME","DefaultPill","mappings","getFieldMappings","isPillActive","activePillWrap","pillWrap","pill","menuItemText","FieldType","time","LineActionIcons","clipboardButton","lineHeight","inspectButton","verticalAlign","iconWrapper","z2","inspect","logId","idField","lineValue","isInspecting","setIsInspecting","getText","generateLogShortlink","row","table","inspectLine","tooltipPlacement","tabIndex","ClipboardButton","Modal","onDismiss","pre","ButtonRow","DefaultCellComponent","getCellLinks","displayValue","number","linkWrapper","hasLinks","React","formattedValueToString","fieldIndex","showColumns","renderValue","getLinks","DataLinksContextMenu","api","openMenu","LogLinePillValue","activePill","valueWrap","menuActive","onClickAdd","LogLinePill","templateSrv","getTemplateSrv","useMemo","other","originalField","isDerivedField","originalFrame","getLinksSupplier","subFieldName","addFieldToColumns","stopScroll","scrollTo","scrollLeft","Scroller","scrollerRef","scroller","scrollRight","onPointerDown","behavior","onPointerUp","scrollWidth","RawLogLineText","rawLogLine","bgColor","fontFamilyMonospace","LogLineCellComponent","isHover","setIsHover","untransformedField","rawValue","isDerived","untransformedValue","string","renderLabels","isAuto","auto","hasLabels","ScrollSyncPane","LogsTableHeader","isFirstColumn","isLine","logLineButton","tableHeaderMenu","leftAlign","rightAlign","defaultContentWrapper","isBodyField","onLogTextToggle","defaultContent","LogsTableHeaderWrap","hideColumn","pendingColumnState","columnIndex","cols","headerProps","linkWrap","openColumnManagementDrawer","slideLeft","reverse","slideRight","autoColumnWidths","TableAndContext","GrafanaTable","onColumnResize","onResize","initialSortBy","desc","initialRowIndex","cellHeight","TableCellHeight","Sm","footerOptions","reducer","countRows","Table","timeZone","section","tableWrap","tableFrame","setTableFrame","localSelectedLine","prepareTableFrame","frameWithOverrides","applyFieldOverrides","replaceVariables","defaults","custom","guessLogsFieldTypeForField","filterable","headerComponent","getInitialFieldWidth","cellOptions","getTableCellOptions","prepare","isFieldLokiLabels","typeInfo","DataFrameType","LogLines","isFieldDataplaneLabels","flatMap","format","keepTime","labelFiltersTransform","labelFilters","labelFiltersInclude","indexByName","includeByName","getOrganizeFieldsTransform","buildColumnsWithMeta","specialFields","extraFields","getDefaultStateOrganizeFieldsTransform","transformedDataFrame","transformDataFrame","getIdName","lineIndex","cleanLineIndex","Drawer","onClose","ScrollSync","vertical","proportional","fieldDisplayName","guessLogsFieldTypeForValue","critical","crit","eror","debug","trace","MappingType","ValueToText","cellComponent","TableCellDisplayMode","tableWidth","numberOfFields","extraPadding","columnMeta","maxLength","iso8601Regex","TableWrap","panelWrapSize","setPanelWrapSize","useResizeObserver","panelWrap","clientWidth","clientHeight","getTimeZone","getColumnsFromProps","fieldNames","previouslySelected","getLogFrameLabelsAsLabels","numberOfLogLines","labelMap","fieldLabels","setObj","valueSet","getCardinalityMapFromLabels","cardinalityCount","fromEntries","normalize","mapLabelsToInitialState","specialFieldArray","addSpecialLabelsState","setSpecialFieldMeta","total","ceil","guessFieldTypeFromValue","TableProvider","parseLogsFrame","LogsTableScene","parentModel","tableLogLineState","timeRangeValue","PanelChrome","loadingState","actions","setVisualizationType","getVariableForLabel","areArraysStrictlyEqual","LineFilterScene","getLineFilterVariable","updateInputState","updateVariable","getLineFilterCase","getLineFilterRegex","getLineFilterExclusive","cancel","setLineFilterExclusive","flush","thisFilter","clearVariable","handleChange","setLineFilterCase","setLineFilterRegex","getFilterKey","getOperator","search_string_in_logs_changed","decodedUrlColumns","unknownTableRow","narrowSelectedTableRow","decodedSelectedTableRow","decodedVisualizationType","narrowLogsVisualizationType","searchParams","setStateFromUrl","updateLogsPanel","selectedLineUrl","urlColumnsUrl","vizTypeUrl","displayedFieldsUrl","getVizPanel","logsPanelScene","xSizing","lineFilterScenes","lineFilterScene","logs_visualization_toggle","setLogsVisualizationType","contain","CopyLinkButton","copied","setCopied","timeoutId","handleClick","LogsPanelError","decodedWrapLogMessage","getLogsPanel","handleLogsError","isEmptyLogsResult","handleNoData","clearLogsError","logsCount","getTitle","errorResponse","statusText","errorMessage","showLogsError","logsVolumeCollapsedByError","getLogsVolumeOption","logsVolume","logsVolumePanelKey","LogsVolumePanel","getParentScene","formattedCount","valueFormatter","getValueFormat","trim","setOption","handleLabelFilterClick","handleLabelFilterOutClick","handleIsFilterLabelActive","handleFilterStringClick","handleFilterOutStringClick","onClickShowField","onClickHideField","getPrettyQueryExpr","updateVisibleRange","handleShareLogLineClick","handleLabelFilter","logs_detail_filter_applied","setDisplayedFields","logs_toggle_displayed_field","displayedField","newLogs","rowId","resolveRowTimeRangeForSharing","copyText","metadata","hasKeyValueFilter","fieldFilter","hasKeyValueFilterField","lineFiltersVar","logs_popover_line_filter","selectionLength","LogsVolumeActions","TemporaryExemptionsButton","usePluginComponent","streamSelector","dataSourceUid","contextHints","updateContainerHeight","totalLogsCount","formattedTotalCount","maxLines","LINE_LIMIT","calcs","displayMode","LegendDisplayMode","List","setUnit","getTimeSeriesExpr","setLogsVolumeFieldConfigs","setLogsVolumeOption","annotations","displayVisibleRange","containerLayout","innerHeight","updatedLogSeries","visibleRange","getSeriesVisibleRange","getVisibleRangeFrame","levelFilter","level_in_logs_volume_clicked","onPatternClick","filteredPatterns","staleIndex","pattern_selected","logsStatsRow","logsStatsRowActive","logsStatsRowLabel","logsStatsRowValue","logsStatsRowCount","logsStatsRowPercent","logsStatsRowBar","logsStatsRowInnerBar","PatternFieldLabelStatsRow","count","proportion","style","percent","barStyle","logsStats","wordBreak","logsStatsHeader","medium","logsStatsTitle","logsStatsClose","logsStatsBody","PatternFieldLabelStats","stats","topRows","activeRow","otherRows","otherCount","combinedRows","stat","PatternNameLabel","exploration","patternIndices","indices","currentIndex","extractPatternIndices","setStats","statsError","setStatsError","previousQueryRef","previousTimeRangeRef","handlePatternClick","pattern_field_clicked","patternExtractor","_value","constructQuery","currentTimeRange","requestId","intervalMs","targets","timezone","app","startTime","fieldCount","fieldStatsMap","toArray","fieldStats","convertResultToStats","parts","part","Toggletip","onOpen","Spinner","emphasize","PatternsLogsSampleScene","queryWithFilters","LOG_STREAM_SELECTOR_EXPR","replacePatternsInQuery","queryRunnerWithFilters","onQueryWithFiltersResult","pendingPattern","VAR_PATTERNS_EXPR","removePatternFromFilterExclusion","patternsViewTableScene","PatternsViewTableScene","patternsNotMatchingFilters","setWarningMessage","noticeFlexItem","getNoticeFlexItem","vizFlexItem","getVizFlexItem","getFlexItemChildren","excludeThisPatternFromFiltering","patternsThatDontMatchCurrentFilters","filterVariable","onQueryError","every","traceIds","request","panelFlexItem","queryWithoutFilters","PATTERNS_SAMPLE_SELECTOR_EXPR","queryRunnerWithoutFilters","PatternsTableExpandedRow","tableViz","expandedRows","rowScene","newRowScene","SCALED_UNITS","appliedPatterns","getColumnStyles","cell","panelData","original","dataNode","SceneDataNode","timeSeries","TooltipDisplayMode","None","AxisPlacement","Hidden","setDisplayMode","tableTimeSeriesWrap","tableTimeSeries","sortType","scaledUnits","countTextWrap","toFixed","getTablePatternTextStyles","tablePatternTextDefault","getExplorationFor","disableGrow","existingPattern","appliedPattern","includeLink","excludeLink","undoLink","patternFrames","legendSyncPatterns","logExploration","patternFrame","getTableStyles","patternsFrameScene","PatternsFrameScene","patternFramesRaw","previousValue","tableData","buildTableData","buildColumns","tableWrapper","InteractiveTable","getRowId","renderExpandedRow","theme2","overflowWrap","th","navbarFixed","pointerEvents","palette","visualization","newFrame","$patternsData","prevFrame","patternsBreakdownScene","PatternsBreakdownScene","patternFilter","forEachChild","getTimeseriesDataNode","getSingleViewLayout","originalOnToggleSeriesVisibility","override","patternsToShow","names","getTimeSeries","asTable","setLinks","targetBlank","fixedColor","overrideToFixedColor","logsByServiceScene","PatternsViewTextSearch","onSearchResult","setFilteredPatterns","patternFramesOverride","filteredPatternFrames","clearSearch","handleSearchChange","setEmptySearch","PatternsNotDetected","TextLink","external","PatternsTooOld","PATTERNS_MAX_AGE_HOURS","setBody","onDataChange","ySizing","updatePatternFrames","dataFrames","dataFrameToPatternFrame","prevFrames","Loading","controlsRight","controlsLeft","justifyItems","patternMissingText","timeRangeTooOld","dateTime","code","TabNames","breakdownViewsDefinitions","testId","tabLogs","behaviors","sync","DashboardCursorSync","Crosshair","tabLabels","buildFieldsBreakdownActionScene","changeFieldNumber","tabFields","tabPatterns","valueBreakdownViews","buildLabelValuesBreakdownActionScene","buildFieldValuesBreakdownActionScene","ShareButtonScene","setIsOpen","onCopyLink","shorten","absTime","createAndCopyShortLink","global","isAbsoluteTime","protocol","host","lastSelected","defaultMode","MenuActions","menuOptions","getUrl","constructAbsoluteUrl","getSceneTimeRange","Menu","groupOption","MenuGroup","Item","narrow","getRelativeURLPath","createShortLink","getBackendSrv","post","shortLink","alertSuccess","toUtc","getUrlSearchParams","toISOString","pathname","ActionBarScene","dataSource","shareButtonScene","currentBreakdownViewSlug","allowNavToParent","drilldownValueSlug","getDrilldownValueSlug","loadingStates","Box","paddingY","appSidecar","ToolbarExtensionsRenderer","TabsBar","tab","Tab","counter","getCounter","totalCount","getLogsCountStyles","logsCountStyles","emptyCountStyles","LogsCount","getDrillDownTabLink","onChangeTab","action_view_changed","newActionView","previousActionView","patternsCount","labelsCount","md","right","setFilters","sub","limitPerPlugin","ariaLabel","removeEscapeChar","charsEscapedByEscapeRegExp","char","stringArray","nextChar","isNextCharRegex","LOGS_PANEL_QUERY_REFID","LOGS_COUNT_QUERY_REFID","setSubscribeToLabelsVariable","redirectToStart","prevRouteMatch","replaceSlash","$logsCount","newPrimaryLabelValue","isAdHocFilterValueUserInput","stripAdHocFilterUserInputPrefix","isExact","resetTabCount","navigateToDrilldownPage","getMetadataService","setServiceSceneState","showVariables","getServiceSceneState","getMetadata","resetBodyAndData","setBreakdownView","subscribeToPatternsQuery","subscribeToDetectedLabelsQuery","subscribeToDetectedFieldsQuery","subscribeToLogsQuery","subscribeToLogsCountQuery","subscribeToFieldsVariable","subscribeToMetadataVariable","subscribeToLevelsVariableChangedEvent","subscribeToLevelsVariableFiltersState","subscribeToDataSourceVariable","subscribeToPatternsVariable","subscribeToLineFiltersVariable","subscribeToTimeRange","deprecatedLineFilterArray","deprecatedLineFilter","globalLineFilterVars","caseSensitiveMatches","caseInsensitiveMatches","migrateLineFilterV1","parentSlug","updateLoadingState","patternsResponse","setPatternsCount","detectedLabelsResponse","detectedLabelsFields","removeSpecialFields","setLabelsCount","updateFieldsCount","detectedFieldsFields","setFieldsCount","getServiceSceneQueryRunner","getPatternsQueryRunner","getDetectedLabelsQueryRunner","getDetectedFieldsQueryRunner","getLogCountQueryRunner","buildGraphScene","breakdownView","breakdownViewDef","valueBreakdownView","valueBreakdownViewDef","getResourceQueryRunner","buildResourceQuery","VAR_LABELS_EXPR","queryType","FavoriteServiceHeaderActionScene","setHover","isFavorite","removeFromFavorites","tooltipCopy","onMouseOver","SelectServiceButton","getLabelDrilldownLink","selectLabel","primaryLabelName","primaryLabelValue","service_selected","clonedVar","urlSync","ConfigureVolumeError","NoServiceSearchResults","TabPopoverScene","serviceSelectionScene","serviceSelectionTabsScene","ServiceSelectionTabsScene","tabOptions","tabOptionsWithIcon","saved","toggleShowPopover","setSelectedTab","getLabelsFromQueryRunnerState","$labelsData","populatePrimaryLabelsVariableOptions","selectedTab","getSelectedTab","savedTabs","getFavoriteTabsFromStorage","savedIndex","runDetectedLabels","runDetectedLabelsSubs","getServiceSelectionPrimaryLabel","selectDefaultLabelTab","removeSavedTab","removeTabFromLocalStorage","getTabsStyles","tabs","tabLabel","truncateText","addTab","NoServiceVolume","AddLabelToFiltersHeaderActionScene","isSelected","included","add_to_filters","ServiceSelectionPaginationScene","getPageCountStyles","searchPageCountWrap","searchFieldPlaceholderText","textWrapMode","PageCount","countPerPage","roundedTotalCount","getCountOptionsFromTotal","lastOptionValue","currentPage","setServiceSelectionPageCount","pagination","float","paginationWrap","paginationWrapMd","Pagination","numberOfPages","onNavigate","toPage","showSmallVersion","aggregatedMetricsEnabled","AGGREGATED_SERVICE_NAME","primaryLabelUrlKey","datasourceUrlKey","getSelectedTabFromUrl","addDatasourceChangeToBrowserHistory","newDs","dsUrl","currentUrl","newUrl","pushUrlHandler","addLabelChangeToBrowserHistory","newKey","primaryLabelRaw","primaryLabelSplit","addTabToLocalStorage","clearServiceSelectionSearchVariable","setServiceSelectionPrimaryLabelKey","buildServiceLayout","serviceLabelVar","primaryLabelVar","datasourceVar","splitDuration","getMetricExpression","step","isAggregatedMetricsActive","cssGridItem","runner","runPanelQuery","toolbar","getQueryOptionsToolbar","formatPrimaryLabelForUI","setVolumeQueryRunner","buildVolumeQuery","VAR_PRIMARY_LABEL_EXPR","VAR_LABELS_REPLICA_EXPR","subscribeToVolume","doVariablesNeedSync","labelsVarPrimary","labelsVarReplica","getLabelsVariableReplica","activeTab","filteredFilters","needsSync","syncVariables","fixRequiredUrlParams","subscribeToPrimaryLabelsVariable","subscribeToLabelFilterChanges","subscribeToActiveTabVariable","runVolumeOnActivate","subscribeToDatasource","subscribeToAggregatedMetricToggle","subscribeToAggregatedMetricVariable","isTimeRangeTooEarlyForAggMetrics","onUnsupportedAggregatedMetricTimeRange","runVolumeQuery","onSupportedAggregatedMetricTimeRange","getAggregatedMetricsVariable","isBefore","resetQueryRunner","updateAggregatedMetricVariable","updateTabs","getGridItems","requestTimeRange","fromDiff","abs","toDiff","labelsToQuery","getLabels","paginationScene","existingChildren","aggregatedMetricsVariable","datasourceVariable","existing","newChildTs","newChildLogs","buildServiceLogsLayout","serviceIndex","getLogExpression","labelsByVolume","dsString","searchString","getServiceSelectionSearchVariable","services","favoriteServicesToQuery","service","createListOfLabelsToQuery","getServiceSelectionPageCount","VAR_PRIMARY_LABEL_SEARCH","VAR_AGGREGATED_METRICS","hideLabel","VAR_PRIMARY_LABEL","renderPrimaryLabelFilters","VAR_LABELS_REPLICA","serviceLevel","onSearchServicesChange","primaryLabelSearch","searchVar","search_services_changed","searchQuery","getLevelFilterForService","serviceLevels","Off","allLevels","getLevelLabelsFromSeries","toggleLevelVisibility","updateServiceLogs","headingWrapper","loadingText","bodyWrapper","searchPaginationWrap","searchWrapper","searchField","serviceStringVariable","hasSearch","isLogVolumeLoading","volumeApiError","filterLabel","customValue","customLabel","unwrapWildcardSearch","serviceName","onSearchChange","goToLabelDrillDownLink","MultiValueVariable","getValueOptions","of","renderSelectForVariable","equalsFilters","notEqualsFilters","regexEqualFilters","regexNotEqualFilters","getCombinedLabelFilters","adHocFilters","operatorFilters","joinedValues","joinCombinedFiltersValues","ltFilters","lteFilters","gtFilters","gteFilters","filtersString","buildLabelsLogQLFromFilters","getLabelsExpr","joinMatchFilters","decodeFilters","getExpr","filterSeparator","equalFiltersStrings","notEqualsFiltersStrings","regexEqualFiltersStrings","regexNotEqualFiltersStrings","ltFiltersStrings","lteFiltersStrings","gtFiltersStrings","gteFiltersStrings","allFilters","buildJoinedFilters","LabelFilterOp","RegexEqual","RegexNotEqual","getFilterValues","buildFilter","NumericFilterOp","allFiltersString","combineValues","equal","notEqual","regexEqual","regexNotEqual","groupFiltersByKey","combineFiltersValues","mergeFilters","removeStaleOperators","filterStrings","filtersWithSameOperatorsAndKeys","isOperatorNumeric","buildFilterString","positiveFilterValueSeparator","negativeFilterValueSeparator","expectedOperator","operatorTo","filtersFrom","filtersTo","valuesToMove","mergeCombinedFiltersValues","separator","filterCombinedValues","filtersByKey","multipleValuesOperator","updatedOperatorAndEscapedValues","currentOperator","narrowFilterOperator","updatedOperator","firstFilter","filterString","escapeFieldValue","escapeFieldValues","isUserInput","sceneUtils","escapeLabelValueInExactSelector","escapeLabelValueInRegexSelector","quoteChar","ignoreKeys","positiveMatch","positiveRegex","isOperatorExclusive","positiveMatchGroup","groupBy","positiveRegexGroup","negativeMatchGroup","negativeRegexGroup","gtGroup","gteGroup","ltGroup","lteGroup","getExpressionBuilderDebug","page","createInteractionName","open_in_explore_clicked","wasm_not_supported","interval_too_long","arr1","arr2","set1","set2","requestSupportsSharding","nodeType","isQueryWithNode","iterate","enter","MetricExpr","isLogsQuery","isLogsRequest","isInstantQuery","SHARDING_PLACEHOLDER","addShardingPlaceholderSelector","interpolateShardingSelector","shards","shardValue","RegExp","resolveIdx","destField","sourceField","idx","closestIdx","nanos","compareEntries","destTimeField","destIdField","destIndex","sourceTimeField","sourceIdField","sameTimestamp","compareNsTimestamps","findSourceField","referenceField","sourceFields","candidates","TOTAL_BYTES_STAT","getCombinedMetadataStats","destStats","sourceStats","destStat","s","sourceStat","eitherStat","cloneDataFrame","runShardSplitQuery","interpolateVariablesInQueries","splittingTargets","shouldStop","mergedResponse","uuidv4","subquerySubscription","retriesMap","retryTimer","runNextRequest","subscriber","cycle","groupSize","nextGroupSize","retrying","done","next","complete","nextRequest","nextCycle","retry","isRetriableError","traces","floor","sqrt","retries","pow","shardsToQuery","groupShardRequests","subRequest","partialResponse","constrainGroupSize","currentSize","metaExecutionTime","executionTime","updateGroupSizeFromResponse","currentResult","newResult","currentFrame","frame1","frame2","frameType1","TimeSeriesMulti","field1","field2","compareLabels","customType1","frameType","customType2","shouldCombine","dest","sourceTimeValues","totalFields","destIdx","entryExistsInDest","mergeFrames","mergedErrors","mergedError","mergedTraceIds","combineResponses","runNonSplitRequest","Observable","selector","getNodesFromQuery","getSelectorForShardValues","isValidQuery","fetchLabelValues","getInitialGroupSize","catch","splitQueriesByStreamShard","DEBUG_ENABLED","log","WRAPPED_LOKI_DS_UID","DETECTED_FIELDS_NAME_FIELD","DETECTED_FIELDS_CARDINALITY_NAME","DETECTED_FIELDS_PARSER_NAME","DETECTED_FIELDS_TYPE_NAME","WrappedLokiDatasource","RuntimeDataSource","__sceneObject","valueOf","targetsSet","resource","getVolume","getPatterns","getDetectedLabels","getDetectedFields","shardingEnabled","exploreLogsShardSplitting","updatedRequest","sanitizeStreamSelector","interpolatedTarget","dsResponse","utc","headers","lokiPatterns","maxValue","minValue","timeValues","countValues","samples","createDataFrame","preferredVisualisationType","targetsInterpolated","sortLabelsByCardinality","detectedLabelFields","nameField","cardinalityField","parserField","typeField","FIELDS_TO_REMOVE","primaryLabel","volumeResponse","lhs","rhs","lVolumeCount","rVolumeCount","df","metric","labelsResponse","testDatasource","registerRuntimeDataSource","streamSelectorName","excludeEmpty","metadataExpressionToAdd","VAR_METADATA_EXPR","VAR_LINE_FILTERS_EXPR","VAR_FIELDS_EXPR","JSON_FORMAT_EXPR","LOGS_FORMAT_EXPR","DETECTED_LEVELS_VALUES_EXPR","DETECTED_FIELD_AND_METADATA_VALUES_EXPR","rerenderFavorites","forceRender","addToFavoriteLabelValueInStorage","removeFromFavoritesInStorage","getReducerId","extractParserFromString","parserString","extractFieldTypeFromString","fieldString","parsersSet","parsersArray","namesField","sortByScene","labelKey","frameIndex","reducerID","selectFrameTransformation","setDisplayName","labelType","getLabelTypeFromFrame","LabelType","Parsed","Indexed","StructuredMetadata","getFilterTypeFromLabelType","parserForThisField","typesField","optionType","parserFromFilterValue","fieldExpressionToAdd","structuredMetadataToAdd","getLogsStreamSelector","buildFieldsQuery","labelOptions","optionName","labelExpressionToAdd","getLabelsFromSeries","labelsVariable","getVisibleLabels","allLabels","getVisibleFilters","getVisibleFields","getVisibleMetadata","inclusiveFilters","exclusiveLabels","visibleLevels","SeriesVisibilityChangeMode","ToggleSelection","existingLevel","getVisibleLevels","levelsFilter","wantedLevels","normalizeLevelName","unwantedLevels","getField","cache","getFieldByName","DATAPLANE_TIMESTAMP_NAME","DATAPLANE_BODY_NAME","DATAPLANE_SEVERITY_NAME","DATAPLANE_ID_NAME","logFrameLabelsToLabels","logFrameLabels","k","FieldCache","timestampField","severityField","labelsField","getLogFrameLabels","timeNanosecondField","getLabelFieldName","parseDataplaneLogsFrame","getFirstFieldOfType","getL","lineField","lineLabels","makeLabelsArray","makeLabelsGetter","parseLegacyLogsFrame","oldestFirst","VISIBLE_RANGE_NAME","arrayToDataFrame","timeEnd","isRegion","dataTopic","DataTopic","Annotations","metadataService","initializeMetadataService","MetadataService","serviceSceneState","previousRoute","buildDrilldownPageUrl","extraQueryParams","buildDrilldownPageRoute","newPath","urlLabelName","urlLabelValue","urlPath","buildValueBreakdownUrl","fullUrl","drilldownLink","serviceUrl","buildServicesUrl","getSearch","LogsSceneQueryRunner","UNKNOWN_LEVEL_LOGS","INFO_LEVEL_FIELD_NAME_REGEX","DEBUG_LEVEL_FIELD_NAME_REGEX","WARNING_LEVEL_FIELD_NAME_REGEX","ERROR_LEVEL_FIELD_NAME_REGEX","CRITICAL_LEVEL_FIELD_NAME_REGEX","UNKNOWN_LEVEL_FIELD_NAME_REGEX","matchFieldsWithNameByRegex","overrideColor","builder","setValueSummaryFieldConfigs","setLabelSeriesOverrides","overrideConfig","FieldMatcherID","byNames","readOnly","overrideCustomFieldConfig","__systemRef","focusedLevels","FieldConfigBuilders","FieldConfigBuilder","onFieldConfigChange","focusedLabels","setColorByDisplayNameTransformation","getFieldDisplayName","FieldColorModeId","PaletteClassicByName","sortLevelTransformation","aName","aVal","bName","queryRunnerOptions","hasLevel","isLogPanelQuery","LokiQueryDirection","Backward","Forward","route","queryParamsOverrides","defaultQueryParams","VAR_DATASOURCE_EXPR","editorMode","supportingQueryType","addAdHocFilterUserInputPrefix","getLevelsExpr","getMetadataExpr","getFieldsExpr","escapeDoubleQuotedLineFilter","buildLogQlLineFilter","breakdownLabelName","routeParams","startOfUrl","locationArray","buildServicesRoute","sceneObject","PRETTY_LOG_STREAM_SELECTOR_EXPR","check","returnType","uf","uFuzzy","intraMode","intraIns","intraSub","intraTrn","intraDel","idxs","order","haystackOrder","matchesSet","mark","matched","infoIdx","highlight","ranges","debounceLodash","memoize","sortSeriesByName","initOutlierDetector","fieldReducer","calculateDataFrameChangepoints","calculateOutlierValue","doStandardCalcs","seriesCalcs","firstTimestamp","lastTimestamp","firstValue","lastValue","allSeriesKey","wasmSupported","dataPoints","samplingStep","sample","Float64Array","ChangepointDetector","defaultArgpcp","detectChangepoints","valueA","valueB","localeCompare","joined","outerJoinDataFrames","points","detector","OutlierDetector","dbscan","preprocess","outliers","detect","seriesResults","isOutlier","outlierIntervals","support","WebAssembly","FAVORITE_PRIMARY_LABEL_VALUES_LOCALSTORAGE_KEY","FAVORITE_PRIMARY_LABEL_NAME_LOCALSTORAGE_KEY","DS_LOCALSTORAGE_KEY","dsKey","createPrimaryLabelLocalStorageKey","labelValues","servicesToStore","createTabsLocalStorageKey","tabName","tabNames","SORT_BY_LOCALSTORAGE_KEY","defaultSortBy","defaultDirection","getExplorationPrefix","getDataSourceName","getServiceName","PREFIX","storedFields","LOG_OPTIONS_LOCALSTORAGE_KEY","defaultValue","storedValue","LOGS_VOLUME_LOCALSTORAGE_KEY","removeItem","VISUALIZATION_TYPE_LOCALSTORAGE_KEY","storedType","LINE_FILTER_OPTIONS_LOCALSTORAGE_KEY","PANEL_OPTIONS_LOCALSTORAGE_KEY","EXPRESSION_BUILDER_DEBUG_LOCALSTORAGE_KEY","SERVICE_SELECTION_PAGE_COUNT_KEY","pageCount","appConfig","apiKey","apiUrl","refreshPicker","combobox","addNewLabelTab","searchLabelValueInput","openExplore","logsPanelHeader","radio","isSecureContext","writeText","createElement","appendChild","execCommand","removeChild","paramName","charAt","toUpperCase","ellipsis","timeEpochMs","VAR_LEVELS_EXPR","lookupVariable","encodedValue","narrowFieldValue","adHocFiltersVariableState","getServiceNameFromVariableState","variablesToClear","wip","_wip","includeOperators","isLabelsVar","inclusiveOperatorCount","isEditingOnlyFilter","isAddingFirstFilter","numericOperators"],"sourceRoot":""} \ No newline at end of file diff --git a/grafana/plugins/grafana-lokiexplore-app/CHANGELOG.md b/grafana/plugins/grafana-lokiexplore-app/CHANGELOG.md index b734e263..e180c162 100644 --- a/grafana/plugins/grafana-lokiexplore-app/CHANGELOG.md +++ b/grafana/plugins/grafana-lokiexplore-app/CHANGELOG.md @@ -1,3 +1,27 @@ +#### 1.0.10 (2025-04-03) + +##### Chores + +* Fix e2e test (#1135) (7873d6dd) + +##### Documentation Changes + +* Update readme to include discover_log_levels config requirement (#1143) (359e9766) + +##### New Features + +* Add critical/fatal log level (#1146) (038a8146) +* Add support for uppercase log level and color warning as a warn (#1137) (4675f4a7) + +##### Bug Fixes + +* Error thrown when toggling case sensitivity with an empty value (#1153) (156245c9) +* Set step as 10s for aggregated metric queries (#1145) (b370c190) + +##### Other Changes + +* Make extensions compatibly with different Grafana versions (#1148) (e2c75d29) + # Changelog View [releases](https://github.com/grafana/explore-logs/releases/) on GitHub for up-to-date changelog information. diff --git a/grafana/plugins/grafana-lokiexplore-app/MANIFEST.txt b/grafana/plugins/grafana-lokiexplore-app/MANIFEST.txt index f5bf871d..bbc1da30 100644 --- a/grafana/plugins/grafana-lokiexplore-app/MANIFEST.txt +++ b/grafana/plugins/grafana-lokiexplore-app/MANIFEST.txt @@ -8,8 +8,8 @@ Hash: SHA512 "signedByOrg": "grafana", "signedByOrgName": "Grafana Labs", "plugin": "grafana-lokiexplore-app", - "version": "1.0.9", - "time": 1742399021184, + "version": "1.0.10", + "time": 1743678868266, "keyId": "7e4d0c6a708866e7", "files": { "105.js": "edee7847f3427cc7c2a0f5f8725ae8b1403076faa4883a9825356b4ffd922d28", @@ -18,20 +18,20 @@ Hash: SHA512 "1759fd27b2c9f73dea05.wasm": "c79b8fa1bea557bdcd6b743a00e5c47aef7f71a457dcbaa63218dd4a706475b6", "220.js": "a01b3cfdffea44bdead95d49980696e170b44719c09162077a5ff57b0aa1251d", "220.js.map": "a3258afce70521793cfa720c06011a43625fd4251efaa08f23150fbe86ac68aa", - "341.js": "2abe46583f3d8379bd2f5899fa00649579996d99f92afb5a35a7bfda017a8f76", - "341.js.map": "81b3e3e8cd466f58e849c7616e1297c749eee693ec8dcd1474273ff6ae15b062", "543.js": "87b65f17eeb500d732c45fb315c8a62a9a123c9cdd87ed9c6307453363685587", "543.js.map": "413c0f7fa95767cb471c1233ed487662b191bcf38604482668152e0eafb3f044", "599.js": "fdd48b18a822784bc6a4b1507392ecacdd5a20baa2838359257dbea4f441ad6c", "599.js.map": "c39c9adbe22500dd6e60c01925866a84e04ab8929fe36368360e328aa3a91dcb", - "631.js": "b8896fe8a06a48011baccef2450df637f961d0f81ece8ff8a3cefe7b66a52a9f", + "631.js": "0b2fe6a8dbd97cbff2fcb9c0c0eb4c8748fd78b5dd5bae23152cbb568d312ec8", "631.js.map": "72778084036addd3019d565b8460ac2965b6ea26648324a6a2a45457bfa39b49", "649058283f564041551d.wasm": "84a1635aaca10061a9fad641983327dc9d261fb2cd3ca5ff3dd26bf3072664df", + "747.js": "245381b84770febdec88e6109abc18e1197e7c368081de39d2c86a07b310bb02", + "747.js.map": "1a0bf44ee920111cda192efa0a633518ed0bf8c7ee762b07c9c8c65e0998c056", "854.js": "f7b5c0281ea90108ac385972e8b5c3d53d694269b4e30c41a2676c695073a216", "854.js.map": "2ca819a163e860e4d4cf72f96ce1c6f5f73117083d3cf5023bd3da7d40e4e7fb", "944.js": "04ccf9314434a9b994567a225259f2f0b3a8286eba750cc34dd559401fda8f5b", "944.js.map": "1c04a358822e19bba71f7ae6ab627054ad6e2a0ddd101628671b0b82ff87548c", - "CHANGELOG.md": "a63ee66bc91f790d57061782cf01de8941bcd4b39959150191b2c0e331dd7da8", + "CHANGELOG.md": "acff566528153dcd33d0b6d3ad9041a247af2bee7d8b178a1512c636a52e1d4f", "LICENSE": "8486a10c4393cee1c25392769ddd3b2d6c242d6ec7928e1414efff7dfb2f07ef", "README.md": "c0bb6ec895f571f81feb93086942219c7aa987c824134791ecc81724bcabab56", "img/3d96a93cfcb32df74eef.svg": "11ca1cf6edec87db3a9725b071f17c93c2313d9130d31d37da3458509a8ff67b", @@ -45,19 +45,19 @@ Hash: SHA512 "img/patterns.png": "bf100549ec168420e9a7b6d759f492a761f964d33d45a3217ba30b9827b2bece", "img/service_logs.jpg": "42f41204403337358ae437a7ad052daec6f9b6f9bef7f297fd065c1e68133bf4", "img/table.png": "fe2fa65a8a761feb0a93c62231644645fb60ee06c44dda3ab16dc4e432286572", - "module.js": "1eba59c92b959d7f6bdf7b366f31d91886ffb62bb4c6156e6944c40830e7a276", - "module.js.map": "a44c075ab07272610e5b0777abd505f11a282fab6fead4f6fb16b066a13a7b48", - "plugin.json": "48599cd3e79fe8431bd0d19ced31a7401d932fc3eb2591407c13c71fc28fd583" + "module.js": "d5e2e8addac6b4df344ee9f7418712f305acd470fd7ec356896de7f88f17844f", + "module.js.map": "a7bac029a39c60ea58f4e1ec1946bdf34b9c9d11f33ba23042c15fea0fe9966e", + "plugin.json": "826a5f03283689fa061fe21d0f4cd6ba2a1bf95907cc72a0793b84682bd7a313" } } -----BEGIN PGP SIGNATURE----- Version: OpenPGP.js v4.10.11 Comment: https://openpgpjs.org -wrkEARMKAAYFAmfa5i0AIQkQfk0ManCIZucWIQTzOyW2kQdOhGNlcPN+TQxq -cIhm50ZaAgkBH5fjd0ZHqVI4xxqTxN/RUKbLiVWo6s4NpL1MxO9Md/m2lkiM -5Ks9qBw+GE+nbr0k8bzhCnti/A9mOwNOLU7JNNUCCQHpSVdKH/0g7cZEcC8W -YLNqkBzXpaGsaNDswxrPhRmlta0KrzlSMqCEc1tKZaa+A+ozTDGcHBEaa8Ps -2jV4CsSK7A== -=ZPAz +wrkEARMKAAYFAmfubZQAIQkQfk0ManCIZucWIQTzOyW2kQdOhGNlcPN+TQxq +cIhm57/nAgkBsw9oPef+o/m4oC2nT1yxJBKpfDV3sT+srJuky5Y8OE/y3wBm +2kKaqJWMKM06G+lhjtY2tHmTUOXH0Ktr4mzJ3psCCQEwX+1U1fCrFMbLI8Jm +WBaSaeNs6CGDBnce0lQUE8NeyYC2m+I/LeNaunwT7aXPsT4A+PPn7+U4vLQn +rSx1kJg42A== +=6yYA -----END PGP SIGNATURE----- diff --git a/grafana/plugins/grafana-lokiexplore-app/module.js b/grafana/plugins/grafana-lokiexplore-app/module.js index 53c439ac..2b50a86b 100644 --- a/grafana/plugins/grafana-lokiexplore-app/module.js +++ b/grafana/plugins/grafana-lokiexplore-app/module.js @@ -1,2 +1,2 @@ -define(["@emotion/css","@grafana/data","@grafana/runtime","@grafana/ui","lodash","react","react-dom","react-redux","react-router-dom","redux","rxjs"],((t,e,r,i,s,n,o,a,h,l,u)=>(()=>{"use strict";var O,f,c,p,d={9077:(t,e,r)=>{r.r(e),r.d(e,{plugin:()=>p});var i=r(5959),s=r.n(i),n=r(7781),o=r(7608),a=r(2007);const h=(0,i.lazy)((()=>r.e(543).then(r.bind(r,1543)))),l=[{id:"grafana-lokiexplore-app/open-in-explore-logs-button/v1",title:"Open in Logs Drilldown button",description:"A button that opens a logs view in the Logs Drilldown app.",component:function(t){return s().createElement(i.Suspense,{fallback:s().createElement(a.LinkButton,{variant:"secondary",disabled:!0},"Open in Logs Drilldown")},s().createElement(h,t))}}];function u(t,e,r,i,s,n,o){try{var a=t[n](o),h=a.value}catch(t){return void r(t)}a.done?e(h):Promise.resolve(h).then(i,s)}function O(t){return function(){var e=this,r=arguments;return new Promise((function(i,s){var n=t.apply(e,r);function o(t){u(n,i,s,o,a,"next",t)}function a(t){u(n,i,s,o,a,"throw",t)}o(void 0)}))}}const f=(0,i.lazy)(O((function*(){const{wasmSupported:t}=yield Promise.all([r.e(854),r.e(944),r.e(105),r.e(341)]).then(r.bind(r,5722)),{default:e}=yield Promise.all([r.e(854),r.e(944),r.e(105),r.e(341)]).then(r.bind(r,2854)),{default:i}=yield r.e(854).then(r.bind(r,1854)),{default:s}=yield r.e(944).then(r.bind(r,6944));return e(),t()&&(yield Promise.all([i(),s()])),r.e(631).then(r.bind(r,9631))}))),c=(0,i.lazy)(O((function*(){return yield r.e(599).then(r.bind(r,4599))}))),p=(new n.AppPlugin).setRootPage(f).addConfigPage({title:"Configuration",icon:"cog",body:c,id:"configuration"});for(const t of o.Ge)p.addLink(t);for(const t of l)p.exposeComponent(t)},7608:(t,e,r)=>{r.d(e,{Ge:()=>g,I8:()=>b,R6:()=>d,Rk:()=>Q,XH:()=>w,rx:()=>P,uu:()=>X,vh:()=>m,xh:()=>k,zH:()=>v});var i=r(7781),s=r(3143),n=r(2533),o=r(8682),a=r(7232),h=r(5111),l=r(4793),u=r(541);const O="Grafana Logs Drilldown",f=`Open in ${O}`,c=`Open current query in the ${O} view`,p="gf-logs",d={MetricInvestigation:"grafana-lokiexplore-app/investigation/v1"},g=[{targets:i.PluginExtensionPoints.DashboardPanelMenu,title:f,description:c,icon:p,path:Q(),configure:x},{targets:i.PluginExtensionPoints.ExploreToolbarAction,title:f,description:c,icon:p,path:Q(),configure:x}];function $(t){return t||s.ZO}function P(t){return null==t?void 0:t.replace(/\\\\/g,"\\")}function m(t){return t?(0,s.OQ)(P(t)):s.ZO}function x(t){var e,r;if(!t)return;const i=t.targets.find((t=>{var e;return"loki"===(null===(e=t.datasource)||void 0===e?void 0:e.type)}));if(!i||!(null===(e=i.datasource)||void 0===e?void 0:e.uid))return;const n=i.expr,{labelFilters:O,lineFilters:f,fields:c,patternFilters:p}=(0,o.BW)(n,t,i),d=O.find((t=>(0,h.BG)(t.operator)));if(!d)return;const g=X(d.value.split("|")[0]);let x=d.key===s.OX?"service":d.key;O.sort((t=>t.key===x?-1:1));let y=k(b.DatasourceId,null===(r=i.datasource)||void 0===r?void 0:r.uid,new URLSearchParams);y=k(b.TimeRangeFrom,t.timeRange.from.valueOf().toString(),y),y=k(b.TimeRangeTo,t.timeRange.to.valueOf().toString(),y);for(const t of O){if(t.type!==a.H.Indexed)continue;const e=`${t.key}|${t.operator}|${w(m(t.value))},${w(P(t.value))}`;y=v(b.Labels,e,y)}if(f)for(const t of f)y=v(b.LineFilters,`${t.key}|${w(t.operator)}|${w($(t.value))}`,y);if(null==c?void 0:c.length)for(const t of c)if(t.type===a.H.StructuredMetadata)y=t.key===s.e4?v(b.Levels,`${t.key}|${t.operator}|${w($(t.value))}`,y):v(b.Metadata,`${t.key}|${t.operator}|${w(m(t.value))},${w(P(t.value))}`,y);else{const e={value:t.value,parser:t.parser},r=`${t.key}|${t.operator}|${w(m(JSON.stringify(e)))},${R=e.value,R?w(P(R)):s.ZO}`;y=v(b.Fields,r,y)}var R;if(null==p?void 0:p.length){const t=[];for(const e of p)t.push({type:e.operator===l.a6.match?"include":"exclude",pattern:$(e.value)});let e=(0,u.M)(t);y=v(b.Patterns,JSON.stringify(t),y),y=v(b.PatternsVariable,e,y)}return{path:Q(`/explore/${x}/${g}/logs`,y)}}function Q(t="/explore",e){return`/a/${n.id}${t}${e?`?${e.toString()}`:""}`}const b={DatasourceId:`var-${s.EY}`,TimeRangeFrom:"from",TimeRangeTo:"to",Labels:`var-${s.MB}`,Fields:`var-${s.mB}`,Metadata:`var-${s._P}`,Levels:`var-${s._Y}`,LineFilters:`var-${s.NW}`,Patterns:s.uw,PatternsVariable:`var-${s.uw}`};function k(t,e,r){var i;const s=new URLSearchParams(null!==(i=null==r?void 0:r.toString())&&void 0!==i?i:location.search);return s.set(t,e),s}function v(t,e,r){var i;const s=new URLSearchParams(null!==(i=null==r?void 0:r.toString())&&void 0!==i?i:location.search);return s.append(t,e),s}function X(t){return(0,s.Dx)(t).replace(/\//g,"-").replace(/\\/g,"-")}function w(t){return function(t){return null==t?"":/,/g[Symbol.replace](t,"__gfc__")}(function(t){return null==t?"":/\|/g[Symbol.replace](t,"__gfp__")}(t))}},7232:(t,e,r)=>{r.d(e,{H:()=>i});var i=function(t){return t.Indexed="I",t.StructuredMetadata="S",t.Parsed="P",t}({})},4793:(t,e,r)=>{function i(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}r.d(e,{KQ:()=>s,Rk:()=>n,a6:()=>h,cK:()=>a,ld:()=>l,w7:()=>o});var s=function(t){return t.Equal="=",t.NotEqual="!=",t.RegexEqual="=~",t.RegexNotEqual="!~",t}({}),n=function(t){return t.gt=">",t.lt="<",t.gte=">=",t.lte="<=",t}({});const o=function(t){for(var e=1;e{r.d(e,{v:()=>l});var i=r(8531),s=r(2533),n=r(4011);function o(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function a(t){for(var e=1;e{const r=a({},h,e);console.log(t,r),u(t,r)},warn:(t,e)=>{const r=a({},h,e);console.warn(t,r),O(t,r)},error:(t,e)=>{const r=a({},h,e);console.error(t,r),f(t,r)}},u=(t,e)=>{try{(0,i.logInfo)(t,e)}catch(t){console.warn("Failed to log faro event!")}},O=(t,e)=>{try{(0,i.logWarning)(t,e)}catch(r){console.warn("Failed to log faro warning!",{msg:t,context:e})}},f=(t,e)=>{let r=e;try{!function(t,e){if("object"==typeof t&&null!==t&&((0,n.u4)(t)&&Object.keys(t).forEach((r=>{const i=t[r];"string"!=typeof i&&"boolean"!=typeof i&&"number"!=typeof i||(e[r]=i.toString())})),c(t)))if("object"==typeof t.data&&null!==t.data)try{e.data=JSON.stringify(t.data)}catch(t){}else"string"!=typeof t.data&&"boolean"!=typeof t.data&&"number"!=typeof t.data||(e.data=t.data.toString())}(t,r),t instanceof Error?(0,i.logError)(t,r):"string"==typeof t?(0,i.logError)(new Error(t),r):t&&"object"==typeof t?r.msg?(0,i.logError)(new Error(r.msg),r):(0,i.logError)(new Error("error object"),r):(0,i.logError)(new Error("unknown error"),r)}catch(e){console.error("Failed to log faro error!",{err:t,context:r})}},c=t=>"data"in t},8682:(t,e,r)=>{r.d(e,{BW:()=>d,QH:()=>l,T0:()=>$});var i=r(2344),s=r(4793),n=r(581),o=r(7232);function a(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}class h{static fromNode(t){return new h(t.from,t.to,t,t.type)}contains(t){return this.from<=t.from&&this.to>=t.to}getExpression(t){return t.substring(this.from,this.to)}constructor(t,e,r,i){a(this,"from",void 0),a(this,"to",void 0),a(this,"type",void 0),a(this,"syntaxNode",void 0),this.from=t,this.to=e,this.type=i,this.syntaxNode=r}}function l(t,e){const r=[];return i.K3.parse(t).iterate({enter:t=>{(void 0===e||e.includes(t.type.id))&&r.push(t.node)}}),r}function u(t,e){if(t.type.id===e)return[h.fromNode(t)];const r=[];let i=0,s=t.childAfter(i);for(;s;)r.push(...u(s,e)),i=s.to,s=t.childAfter(i);return r}function O(t,e,r,i,n){const o=n===s.cK.regex||n===s.cK.negativeRegex,a=t.includes("(?i)")&&o;if('"'===e&&o){const e=new RegExp(/\\\\/,"g");t=t.replace(e,"\\")}else if('"'===e){const e=new RegExp(/\\\\\"/,"g");t=t.replace(e,'"');const r=new RegExp(/\\\\/,"g");t=t.replace(r,"\\")}return a&&(t=t.replace("(?i)","")),r.push({key:a?s.ld.caseInsensitive.toString():s.ld.caseSensitive.toString()+","+i.toString(),operator:n,value:t}),t}function f(t,e,r){const i=new RegExp(/\\"/,"g");t=t.replace(i,'"'),e.push({operator:r,value:t})}function c(t){return u(t,i._2).length?s.w7.lte:u(t,i.Hd).length?s.w7.lt:u(t,i.H3).length?s.w7.gte:u(t,i.AN).length?s.w7.gt:void console.warn("unknown numeric operator")}function p(t){return u(t,i.Eq).length?s.w7.Equal:u(t,i.l3).length?s.w7.NotEqual:u(t,i.Re).length?s.w7.RegexEqual:u(t,i.q6).length?s.w7.RegexNotEqual:void 0}function d(t,e,r){const a=[],d=[],g=[],$=[],m=l(t,[i.MD]);return 0===m.length?{labelFilters:a}:(function(t,e){const r=l(t,[i.g$]);for(const h of r){var n,a;const r=u(h,i.gw),l=u(h,i.Qf),O=t.substring(null===(n=r[0])||void 0===n?void 0:n.to,null===(a=l[0])||void 0===a?void 0:a.from),f=r[0].getExpression(t),c=l.map((e=>t.substring(e.from+1,e.to-1)))[0];f&&c&&(O===s.w7.NotEqual||O===s.w7.Equal||O===s.w7.RegexEqual||O===s.w7.RegexNotEqual)&&e.push({key:f,operator:O,value:c,type:o.H.Indexed})}}(u(m[0],i.MD)[0].getExpression(t),a),function(t,e,r){const n=l(t,[i.PN]);for(const[o,a]of n.entries()){const n=u(a,i.Sg),h=u(a,i.q5),l=u(a,i.l3),c=u(a,i.q6),p=u(a,i.ds),d=u(a,i._9),g=P(a);for(const i of g){const u=t.substring((null==i?void 0:i.from)+1,null==i?void 0:i.from);let g=t.substring((null==i?void 0:i.from)+1,(null==i?void 0:i.to)-1);if(g.length){let i;if(n.length)i=s.cK.match;else if(l.length)i=s.cK.negativeMatch;else if(c.length)i=s.cK.negativeRegex;else if(h.length)i=s.cK.regex;else if(p.length)i=s.a6.match;else{if(!d.length){console.warn("unknown line filter",{query:t.substring(a.from,a.to)});continue}i=s.a6.negativeMatch}i!==s.a6.match&&i!==s.a6.negativeMatch?O(g,u,e,o,i):f(g,r,i)}}}}(t,d,g),function(t,e,r,s){var a;const O=null===(a=r.data)||void 0===a?void 0:a.series.find((t=>t.refId===s.refId)),f=l(t,[i.bY]);for(const r of f){var d;const s=h.fromNode(r).getExpression(t);if(r.getChild(i.bY))continue;if("__error__"===s.substring(0,9))continue;const a=l(t.substring(0,r.node.to),[i.c$]),f=l(t.substring(0,r.node.to),[i.LM]),$=null===(d=u(r,i.gw)[0])||void 0===d?void 0:d.getExpression(t),P=u(r,i.Qf),m=u(r,i.wN),x=u(r,i.Ix),Q=u(r,i.dw);let b,k,v;if(P.length)k=p(r),b=t.substring(P[0].from+1,P[0].to-1);else if(m.length)b=m[0].getExpression(t),k=c(r);else if(Q.length)k=c(r),b=Q[0].getExpression(t);else{if(!x.length)continue;k=c(r),b=x[0].getExpression(t)}var g;if(O&&(v=null!==(g=(0,n.E)($,O))&&void 0!==g?g:void 0),k){let t;a.length&&f.length?t="mixed":a.length?t="logfmt":f.length?t="json":v=o.H.StructuredMetadata,e.push({key:$,operator:k,type:null!=v?v:o.H.Parsed,parser:t,value:b})}}}(t,$,e,r),{labelFilters:a,lineFilters:d,fields:$,patternFilters:g})}const g=0;function $(t){return!1===function(t,e){let r=!1;return i.K3.parse(t).iterate({enter:({type:t})=>{if(t.id===e)return r=!0,!1}}),r}(t,g)}function P(t){const e=[];let r=t;do{const t=r.getChild(i.Qf);t&&!r.getChild(i.w7)&&e.push(t),r=r.getChild(i.ih)}while(null!=r);return e}},581:(t,e,r)=>{r.d(e,{E:()=>n,t:()=>s});var i=r(7232),s=function(t){return t.Backward="backward",t.Forward="forward",t.Scan="scan",t}({});function n(t,e,r=0){var s;const n=null===(s=e.fields.find((t=>"labelTypes"===t.name)))||void 0===s?void 0:s.values[r];if(!n)return null;switch(n[t]){case"I":return i.H.Indexed;case"S":return i.H.StructuredMetadata;case"P":return i.H.Parsed;default:return null}}},4011:(t,e,r)=>{r.d(e,{FH:()=>f,OK:()=>d,QX:()=>$,Zt:()=>p,aJ:()=>l,fS:()=>c,kR:()=>g,lb:()=>u,u4:()=>h,v_:()=>O});var i=r(7781),s=r(4793);const n=t=>"object"==typeof t&&null!==t;function o(t,e){return e in t}const a=t=>"string"==typeof t&&t||"",h=t=>"object"==typeof t;function l(t){let e=[];if(Array.isArray(t))for(let r=0;r{r.d(e,{BG:()=>n,Lw:()=>o,SM:()=>a,iu:()=>h});var i=r(4793),s=r(5548);const n=t=>t===i.w7.Equal||t===i.w7.RegexEqual,o=t=>t===i.w7.NotEqual||t===i.w7.RegexNotEqual,a=t=>t===i.w7.RegexEqual||t===i.w7.RegexNotEqual,h=t=>s.nB.includes(t)},5548:(t,e,r)=>{r.d(e,{_i:()=>a,eb:()=>u,nB:()=>h,hI:()=>l,II:()=>o});var i=r(4793),s=r(2871);function n(t){if(t===i.w7.NotEqual)return"Not equal";if(t===i.w7.RegexNotEqual)return"Does not match regex";if(t===i.w7.Equal)return"Equals";if(t===i.w7.RegexEqual)return"Matches regex";if(t===i.w7.lt)return"Less than";if(t===i.w7.gt)return"Greater than";if(t===i.w7.gte)return"Greater than or equal to";if(t===i.w7.lte)return"Less than or equal to";const e=new Error("Invalid operator!");throw s.v.error(e,{msg:"Invalid operator",operator:t}),e}const o=[i.w7.Equal,i.w7.NotEqual,i.w7.RegexEqual,i.w7.RegexNotEqual].map(((t,e,r)=>({description:n(t),label:t,value:t}))),a=[i.w7.Equal,i.w7.RegexEqual].map((t=>({description:n(t),label:t,value:t}))),h=[i.w7.gt,i.w7.gte,i.w7.lt,i.w7.lte],l=h.map((t=>({description:n(t),label:t,value:t}))),u=[{label:"match",value:i.cK.match},{label:"negativeMatch",value:i.cK.negativeMatch},{label:"regex",value:i.cK.regex},{label:"negativeRegex",value:i.cK.negativeRegex}]},541:(t,e,r)=>{function i(t){return t.replace(/\\/g,"\\\\").replace(/\n/g,"\\n").replace(/"/g,'\\"')}function s(t){const e=t.filter((t=>"exclude"===t.type)).map((t=>`!> "${i(t.pattern)}"`)).join(" ").trim(),r=t.filter((t=>"include"===t.type));let s="";return r.length>0&&(s=1===r.length?`|> "${i(r[0].pattern)}"`:`|> ${r.map((t=>`"${i(t.pattern)}"`)).join(" or ")}`),`${e} ${s}`.trim()}r.d(e,{M:()=>s})},3143:(t,e,r)=>{r.d(e,{Du:()=>Q,Dx:()=>I,EY:()=>v,FX:()=>j,Gb:()=>b,Gd:()=>l,Jg:()=>m,LI:()=>P,MB:()=>i,NW:()=>q,OQ:()=>B,OX:()=>W,Oc:()=>h,QE:()=>S,S1:()=>s,S6:()=>c,SA:()=>z,Sy:()=>A,To:()=>V,VL:()=>y,WM:()=>E,Wi:()=>Y,YN:()=>w,ZO:()=>D,_P:()=>f,_Y:()=>g,e4:()=>G,eL:()=>N,fJ:()=>Z,fi:()=>n,gR:()=>X,kl:()=>k,ky:()=>U,ll:()=>o,mB:()=>a,mF:()=>R,pT:()=>C,qZ:()=>$,rl:()=>T,sC:()=>d,sL:()=>O,uw:()=>p,w0:()=>u,zE:()=>F,zp:()=>x});const i="filters",s="${filters}",n="filters_replica",o="${filters_replica}",a="fields",h="${fields}",l="${pendingFields}",u="${pendingMetadata}",O="all-fields",f="metadata",c="${metadata}",p="patterns",d="${patterns}",g="levels",$="${levels}",P="fieldBy",m="labelBy",x="${labelBy}",Q="primary_label_search",b="primary_label",k="${primary_label}",v="ds",X="${ds}",w="| json | logfmt | drop __error__, __error_details__",y="| json | drop __error__, __error_details__",R="| logfmt",S="logsFormat",_="${logsFormat}",E="lineFilterV2",q="lineFilters",T="${lineFilters}",z=`{${s}} ${$} ${c} ${d} ${T} ${_} ${h}`,Z=`{${s}} ${$} ${u} ${d} ${T} ${_} ${l}`,A=`{${s}} ${l} ${c} ${d} ${T} ${_} ${h}`,C=`{${s}} ${c} ${d} ${_}`,j=`${s} ${$} ${c} ${d} ${T} ${h}`,N={uid:X},V="$__all",G="detected_level",W="service_name",U="service",Y="var_aggregated_metrics",D='""',L="__CVΩ__";function I(t=""){return t.startsWith(L)?t.substring(L.length):t}function F(t=""){return t.startsWith(L)}function B(t=""){return L+t}},6089:e=>{e.exports=t},7781:t=>{t.exports=e},8531:t=>{t.exports=r},2007:t=>{t.exports=i},3241:t=>{t.exports=s},5959:t=>{t.exports=n},8398:t=>{t.exports=o},200:t=>{t.exports=a},3806:t=>{t.exports=h},7694:t=>{t.exports=l},1269:t=>{t.exports=u},2344:(t,e,r)=>{r.d(e,{Ix:()=>St,dw:()=>Xt,Eq:()=>Ot,w7:()=>Qt,H3:()=>wt,AN:()=>vt,gw:()=>ut,LM:()=>ot,bY:()=>kt,PN:()=>gt,c$:()=>at,Hd:()=>yt,_2:()=>Rt,g$:()=>lt,Yw:()=>Et,l3:()=>ct,_9:()=>xt,q6:()=>dt,wN:()=>_t,ih:()=>bt,Sg:()=>$t,q5:()=>Pt,ds:()=>mt,Re:()=>pt,MD:()=>ht,Qf:()=>ft,K3:()=>nt});const i=1024;let s=0;class n{constructor(t,e){this.from=t,this.to=e}}class o{constructor(t={}){this.id=s++,this.perNode=!!t.perNode,this.deserialize=t.deserialize||(()=>{throw new Error("This node type doesn't define a deserialize function")})}add(t){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return"function"!=typeof t&&(t=l.match(t)),e=>{let r=t(e);return void 0===r?null:[this,r]}}}o.closedBy=new o({deserialize:t=>t.split(" ")}),o.openedBy=new o({deserialize:t=>t.split(" ")}),o.group=new o({deserialize:t=>t.split(" ")}),o.isolate=new o({deserialize:t=>{if(t&&"rtl"!=t&&"ltr"!=t&&"auto"!=t)throw new RangeError("Invalid value for isolate: "+t);return t||"auto"}}),o.contextHash=new o({perNode:!0}),o.lookAhead=new o({perNode:!0}),o.mounted=new o({perNode:!0});class a{constructor(t,e,r){this.tree=t,this.overlay=e,this.parser=r}static get(t){return t&&t.props&&t.props[o.mounted.id]}}const h=Object.create(null);class l{constructor(t,e,r,i=0){this.name=t,this.props=e,this.id=r,this.flags=i}static define(t){let e=t.props&&t.props.length?Object.create(null):h,r=(t.top?1:0)|(t.skipped?2:0)|(t.error?4:0)|(null==t.name?8:0),i=new l(t.name||"",e,t.id,r);if(t.props)for(let r of t.props)if(Array.isArray(r)||(r=r(i)),r){if(r[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");e[r[0].id]=r[1]}return i}prop(t){return this.props[t.id]}get isTop(){return(1&this.flags)>0}get isSkipped(){return(2&this.flags)>0}get isError(){return(4&this.flags)>0}get isAnonymous(){return(8&this.flags)>0}is(t){if("string"==typeof t){if(this.name==t)return!0;let e=this.prop(o.group);return!!e&&e.indexOf(t)>-1}return this.id==t}static match(t){let e=Object.create(null);for(let r in t)for(let i of r.split(" "))e[i]=t[r];return t=>{for(let r=t.prop(o.group),i=-1;i<(r?r.length:0);i++){let s=e[i<0?t.name:r[i]];if(s)return s}}}}l.none=new l("",Object.create(null),0,8);class u{constructor(t){this.types=t;for(let e=0;e=e){let o=new x(n.tree,n.overlay[0].from+t.from,-1,t);(s||(s=[i])).push(P(o,e,r,!1))}}return s?X(s):i}(this,t,e)}iterate(t){let{enter:e,leave:r,from:i=0,to:s=this.length}=t,n=t.mode||0,o=(n&c.IncludeAnonymous)>0;for(let t=this.cursor(n|c.IncludeAnonymous);;){let n=!1;if(t.from<=s&&t.to>=i&&(!o&&t.type.isAnonymous||!1!==e(t))){if(t.firstChild())continue;n=!0}for(;n&&r&&(o||!t.type.isAnonymous)&&r(t),!t.nextSibling();){if(!t.parent())return;n=!0}}}prop(t){return t.perNode?this.props?this.props[t.id]:void 0:this.type.prop(t)}get propValues(){let t=[];if(this.props)for(let e in this.props)t.push([+e,this.props[e]]);return t}balance(t={}){return this.children.length<=8?this:E(l.none,this.children,this.positions,0,this.children.length,0,this.length,((t,e,r)=>new p(this.type,t,e,r,this.propValues)),t.makeTree||((t,e,r)=>new p(l.none,t,e,r)))}static build(t){return function(t){var e;let{buffer:r,nodeSet:s,maxBufferLength:n=i,reused:a=[],minRepeatType:h=s.types.length}=t,l=Array.isArray(r)?new d(r,r.length):r,u=s.types,O=0,f=0;function c(t,e,r,i,d,Q){let{id:b,start:k,end:v,size:X}=l,w=f,y=O;for(;X<0;){if(l.next(),-1==X){let e=a[b];return r.push(e),void i.push(k-t)}if(-3==X)return void(O=b);if(-4==X)return void(f=b);throw new RangeError(`Unrecognized record size: ${X}`)}let R,S,_=u[b],q=k-t;if(v-k<=n&&(S=function(t,e){let r=l.fork(),i=0,s=0,o=0,a=r.end-n,u={size:0,start:0,skip:0};t:for(let n=r.pos-t;r.pos>n;){let t=r.size;if(r.id==e&&t>=0){u.size=i,u.start=s,u.skip=o,o+=4,i+=4,r.next();continue}let l=r.pos-t;if(t<0||l=h?4:0,f=r.start;for(r.next();r.pos>l;){if(r.size<0){if(-3!=r.size)break t;O+=4}else r.id>=h&&(O+=4);r.next()}s=f,i+=t,o+=O}return(e<0||i==t)&&(u.size=i,u.start=s,u.skip=o),u.size>4?u:void 0}(l.pos-e,d))){let e=new Uint16Array(S.size-S.skip),r=l.pos-S.size,i=e.length;for(;l.pos>r;)i=x(S.start,e,i);R=new g(e,v-S.start,s),q=S.start-t}else{let t=l.pos-X;l.next();let e=[],r=[],i=b>=h?b:-1,s=0,a=v;for(;l.pos>t;)i>=0&&l.id==i&&l.size>=0?(l.end<=a-n&&(P(e,r,k,s,l.end,a,i,w,y),s=e.length,a=l.end),l.next()):Q>2500?$(k,t,e,r):c(k,t,e,r,i,Q+1);if(i>=0&&s>0&&s-1&&s>0){let t=function(t,e){return(r,i,s)=>{let n,a,h=0,l=r.length-1;if(l>=0&&(n=r[l])instanceof p){if(!l&&n.type==t&&n.length==s)return n;(a=n.prop(o.lookAhead))&&(h=i[l]+n.length+a)}return m(t,r,i,s,h,e)}}(_,y);R=E(_,e,r,0,e.length,0,v-k,t,t)}else R=m(_,e,r,v-k,w-v,y)}r.push(R),i.push(q)}function $(t,e,r,i){let o=[],a=0,h=-1;for(;l.pos>e;){let{id:t,start:e,end:r,size:i}=l;if(i>4)l.next();else{if(h>-1&&e=0;t-=3)e[r++]=o[t],e[r++]=o[t+1]-n,e[r++]=o[t+2]-n,e[r++]=r;r.push(new g(e,o[2]-n,s)),i.push(n-t)}}function P(t,e,r,i,n,o,a,h,l){let u=[],O=[];for(;t.length>i;)u.push(t.pop()),O.push(e.pop()+r-n);t.push(m(s.types[a],u,O,o-n,h-o,l)),e.push(n-r)}function m(t,e,r,i,s,n,a){if(n){let t=[o.contextHash,n];a=a?[t].concat(a):[t]}if(s>25){let t=[o.lookAhead,s];a=a?[t].concat(a):[t]}return new p(t,e,r,i,a)}function x(t,e,r){let{id:i,start:s,end:n,size:o}=l;if(l.next(),o>=0&&i4){let i=l.pos-(o-4);for(;l.pos>i;)r=x(t,e,r)}e[--r]=a,e[--r]=n-t,e[--r]=s-t,e[--r]=i}else-3==o?O=i:-4==o&&(f=i);return r}let Q=[],b=[];for(;l.pos>0;)c(t.start||0,t.bufferStart||0,Q,b,-1,0);let k=null!==(e=t.length)&&void 0!==e?e:Q.length?b[0]+Q[0].length:0;return new p(u[t.topID],Q.reverse(),b.reverse(),k)}(t)}}p.empty=new p(l.none,[],[],0);class d{constructor(t,e){this.buffer=t,this.index=e}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new d(this.buffer,this.index)}}class g{constructor(t,e,r){this.buffer=t,this.length=e,this.set=r}get type(){return l.none}toString(){let t=[];for(let e=0;e0));a=n[a+3]);return o}slice(t,e,r){let i=this.buffer,s=new Uint16Array(e-t),n=0;for(let o=t,a=0;o=e&&re;case 1:return r<=e&&i>e;case 2:return i>e;case 4:return!0}}function P(t,e,r,i){for(var s;t.from==t.to||(r<1?t.from>=e:t.from>e)||(r>-1?t.to<=e:t.to0?o.length:-1;t!=l;t+=e){let l=o[t],u=h[t]+n.from;if($(i,r,u,u+l.length))if(l instanceof g){if(s&c.ExcludeBuffers)continue;let o=l.findChild(0,l.buffer.length,e,r-u,i);if(o>-1)return new v(new k(n,l,t,u),null,o)}else if(s&c.IncludeAnonymous||!l.type.isAnonymous||R(l)){let o;if(!(s&c.IgnoreMounts)&&(o=a.get(l))&&!o.overlay)return new x(o.tree,u,t,n);let h=new x(l,u,t,n);return s&c.IncludeAnonymous||!h.type.isAnonymous?h:h.nextChild(e<0?l.children.length-1:0,e,r,i)}}if(s&c.IncludeAnonymous||!n.type.isAnonymous)return null;if(t=n.index>=0?n.index+e:e<0?-1:n._parent._tree.children.length,n=n._parent,!n)return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(t){return this.nextChild(0,1,t,2)}childBefore(t){return this.nextChild(this._tree.children.length-1,-1,t,-2)}enter(t,e,r=0){let i;if(!(r&c.IgnoreOverlays)&&(i=a.get(this._tree))&&i.overlay){let r=t-this.from;for(let{from:t,to:s}of i.overlay)if((e>0?t<=r:t=r:s>r))return new x(i.tree,i.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,t,e,r)}nextSignificantParent(){let t=this;for(;t.type.isAnonymous&&t._parent;)t=t._parent;return t}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}}function Q(t,e,r,i){let s=t.cursor(),n=[];if(!s.firstChild())return n;if(null!=r)for(let t=!1;!t;)if(t=s.type.is(r),!s.nextSibling())return n;for(;;){if(null!=i&&s.type.is(i))return n;if(s.type.is(e)&&n.push(s.node),!s.nextSibling())return null==i?n:[]}}function b(t,e,r=e.length-1){for(let i=t;r>=0;i=i.parent){if(!i)return!1;if(!i.type.isAnonymous){if(e[r]&&e[r]!=i.name)return!1;r--}}return!0}class k{constructor(t,e,r,i){this.parent=t,this.buffer=e,this.index=r,this.start=i}}class v extends m{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(t,e,r){super(),this.context=t,this._parent=e,this.index=r,this.type=t.buffer.set.types[t.buffer.buffer[r]]}child(t,e,r){let{buffer:i}=this.context,s=i.findChild(this.index+4,i.buffer[this.index+3],t,e-this.context.start,r);return s<0?null:new v(this.context,this,s)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(t){return this.child(1,t,2)}childBefore(t){return this.child(-1,t,-2)}enter(t,e,r=0){if(r&c.ExcludeBuffers)return null;let{buffer:i}=this.context,s=i.findChild(this.index+4,i.buffer[this.index+3],e>0?1:-1,t-this.context.start,e);return s<0?null:new v(this.context,this,s)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(t){return this._parent?null:this.context.parent.nextChild(this.context.index+t,t,0,4)}get nextSibling(){let{buffer:t}=this.context,e=t.buffer[this.index+3];return e<(this._parent?t.buffer[this._parent.index+3]:t.buffer.length)?new v(this.context,this._parent,e):this.externalSibling(1)}get prevSibling(){let{buffer:t}=this.context,e=this._parent?this._parent.index+4:0;return this.index==e?this.externalSibling(-1):new v(this.context,this._parent,t.findChild(e,this.index,-1,0,4))}get tree(){return null}toTree(){let t=[],e=[],{buffer:r}=this.context,i=this.index+4,s=r.buffer[this.index+3];if(s>i){let n=r.buffer[this.index+1];t.push(r.slice(i,s,n)),e.push(0)}return new p(this.type,t,e,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}}function X(t){if(!t.length)return null;let e=0,r=t[0];for(let i=1;ir.from||s.to0){if(this.index-1)for(let i=e+t,s=t<0?-1:r._tree.children.length;i!=s;i+=t){let t=r._tree.children[i];if(this.mode&c.IncludeAnonymous||t instanceof g||!t.type.isAnonymous||R(t))return!1}return!0}move(t,e){if(e&&this.enterChild(t,0,4))return!0;for(;;){if(this.sibling(t))return!0;if(this.atLastNode(t)||!this.parent())return!1}}next(t=!0){return this.move(1,t)}prev(t=!0){return this.move(-1,t)}moveTo(t,e=0){for(;(this.from==this.to||(e<1?this.from>=t:this.from>t)||(e>-1?this.to<=t:this.to=0;){for(let n=t;n;n=n._parent)if(n.index==i){if(i==this.index)return n;e=n,r=s+1;break t}i=this.stack[--s]}for(let t=r;t=0;s--){if(s<0)return b(this._tree,t,i);let n=r[e.buffer[this.stack[s]]];if(!n.isAnonymous){if(t[i]&&t[i]!=n.name)return!1;i--}}return!0}}function R(t){return t.children.some((t=>t instanceof g||!t.type.isAnonymous||R(t)))}const S=new WeakMap;function _(t,e){if(!t.isAnonymous||e instanceof g||e.type!=t)return 1;let r=S.get(e);if(null==r){r=1;for(let i of e.children){if(i.type!=t||!(i instanceof p)){r=1;break}r+=_(t,i)}S.set(e,r)}return r}function E(t,e,r,i,s,n,o,a,h){let l=0;for(let r=i;r=u)break;p+=e}if(l==s+1){if(p>u){let t=r[s];e(t.children,t.positions,0,t.children.length,i[s]+a);continue}O.push(r[s])}else{let e=i[l-1]+r[l-1].length-c;O.push(E(t,r,i,s,l,c,e,null,h))}f.push(c+a-n)}}(e,r,i,s,0),(a||h)(O,f,o)}class q{startParse(t,e,r){return"string"==typeof t&&(t=new T(t)),r=r?r.length?r.map((t=>new n(t.from,t.to))):[new n(0,0)]:[new n(0,t.length)],this.createParse(t,e||[],r)}parse(t,e,r){let i=this.startParse(t,e,r);for(;;){let t=i.advance();if(t)return t}}}class T{constructor(t){this.string=t}get length(){return this.string.length}chunk(t){return this.string.slice(t)}get lineChunks(){return!1}read(t,e){return this.string.slice(t,e)}}new o({perNode:!0});class z{constructor(t,e,r,i,s,n,o,a,h,l=0,u){this.p=t,this.stack=e,this.state=r,this.reducePos=i,this.pos=s,this.score=n,this.buffer=o,this.bufferBase=a,this.curContext=h,this.lookAhead=l,this.parent=u}toString(){return`[${this.stack.filter(((t,e)=>e%3==0)).concat(this.state)}]@${this.pos}${this.score?"!"+this.score:""}`}static start(t,e,r=0){let i=t.parser.context;return new z(t,[],e,r,r,0,[],0,i?new Z(i,i.start):null,0,null)}get context(){return this.curContext?this.curContext.context:null}pushState(t,e){this.stack.push(this.state,e,this.bufferBase+this.buffer.length),this.state=t}reduce(t){var e;let r=t>>19,i=65535&t,{parser:s}=this.p,n=this.reducePos=2e3&&!(null===(e=this.p.parser.nodeSet.types[i])||void 0===e?void 0:e.isAnonymous)&&(h==this.p.lastBigReductionStart?(this.p.bigReductionCount++,this.p.lastBigReductionSize=l):this.p.lastBigReductionSizea;)this.stack.pop();this.reduceContext(i,h)}storeNode(t,e,r,i=4,s=!1){if(0==t&&(!this.stack.length||this.stack[this.stack.length-1]0&&0==t.buffer[i-4]&&t.buffer[i-1]>-1){if(e==r)return;if(t.buffer[i-2]>=e)return void(t.buffer[i-2]=r)}}if(s&&this.pos!=r){let s=this.buffer.length;if(s>0&&0!=this.buffer[s-4]){let t=!1;for(let e=s;e>0&&this.buffer[e-2]>r;e-=4)if(this.buffer[e-1]>=0){t=!0;break}if(t)for(;s>0&&this.buffer[s-2]>r;)this.buffer[s]=this.buffer[s-4],this.buffer[s+1]=this.buffer[s-3],this.buffer[s+2]=this.buffer[s-2],this.buffer[s+3]=this.buffer[s-1],s-=4,i>4&&(i-=4)}this.buffer[s]=t,this.buffer[s+1]=e,this.buffer[s+2]=r,this.buffer[s+3]=i}else this.buffer.push(t,e,r,i)}shift(t,e,r,i){if(131072&t)this.pushState(65535&t,this.pos);else if(262144&t)this.pos=i,this.shiftContext(e,r),e<=this.p.parser.maxNode&&this.buffer.push(e,r,i,4);else{let s=t,{parser:n}=this.p;(i>this.pos||e<=n.maxNode)&&(this.pos=i,n.stateFlag(s,1)||(this.reducePos=i)),this.pushState(s,r),this.shiftContext(e,r),e<=n.maxNode&&this.buffer.push(e,r,i,4)}}apply(t,e,r,i){65536&t?this.reduce(t):this.shift(t,e,r,i)}useNode(t,e){let r=this.p.reused.length-1;(r<0||this.p.reused[r]!=t)&&(this.p.reused.push(t),r++);let i=this.pos;this.reducePos=this.pos=i+t.length,this.pushState(e,i),this.buffer.push(r,i,this.reducePos,-1),this.curContext&&this.updateContext(this.curContext.tracker.reuse(this.curContext.context,t,this,this.p.stream.reset(this.pos-t.length)))}split(){let t=this,e=t.buffer.length;for(;e>0&&t.buffer[e-2]>t.reducePos;)e-=4;let r=t.buffer.slice(e),i=t.bufferBase+e;for(;t&&i==t.bufferBase;)t=t.parent;return new z(this.p,this.stack.slice(),this.state,this.reducePos,this.pos,this.score,r,i,this.curContext,this.lookAhead,t)}recoverByDelete(t,e){let r=t<=this.p.parser.maxNode;r&&this.storeNode(t,this.pos,e,4),this.storeNode(0,this.pos,e,r?8:4),this.pos=this.reducePos=e,this.score-=190}canShift(t){for(let e=new A(this);;){let r=this.p.parser.stateSlot(e.state,4)||this.p.parser.hasAction(e.state,t);if(0==r)return!1;if(!(65536&r))return!0;e.reduce(r)}}recoverByInsert(t){if(this.stack.length>=300)return[];let e=this.p.parser.nextStates(this.state);if(e.length>8||this.stack.length>=120){let r=[];for(let i,s=0;s1&e&&t==i))||r.push(e[t],i)}e=r}let r=[];for(let t=0;t>19,i=65535&e,s=this.stack.length-3*r;if(s<0||t.getGoto(this.stack[s],i,!1)<0){let t=this.findForcedReduction();if(null==t)return!1;e=t}this.storeNode(0,this.pos,this.pos,4,!0),this.score-=100}return this.reducePos=this.pos,this.reduce(e),!0}findForcedReduction(){let{parser:t}=this.p,e=[],r=(i,s)=>{if(!e.includes(i))return e.push(i),t.allActions(i,(e=>{if(393216&e);else if(65536&e){let r=(e>>19)-s;if(r>1){let i=65535&e,s=this.stack.length-3*r;if(s>=0&&t.getGoto(this.stack[s],i,!1)>=0)return r<<19|65536|i}}else{let t=r(e,s+1);if(null!=t)return t}}))};return r(this.state,0)}forceAll(){for(;!this.p.parser.stateFlag(this.state,2);)if(!this.forceReduce()){this.storeNode(0,this.pos,this.pos,4,!0);break}return this}get deadEnd(){if(3!=this.stack.length)return!1;let{parser:t}=this.p;return 65535==t.data[t.stateSlot(this.state,1)]&&!t.stateSlot(this.state,4)}restart(){this.storeNode(0,this.pos,this.pos,4,!0),this.state=this.stack[0],this.stack.length=0}sameState(t){if(this.state!=t.state||this.stack.length!=t.stack.length)return!1;for(let e=0;ethis.lookAhead&&(this.emitLookAhead(),this.lookAhead=t)}close(){this.curContext&&this.curContext.tracker.strict&&this.emitContext(),this.lookAhead>0&&this.emitLookAhead()}}class Z{constructor(t,e){this.tracker=t,this.context=e,this.hash=t.strict?t.hash(e):0}}class A{constructor(t){this.start=t,this.state=t.state,this.stack=t.stack,this.base=this.stack.length}reduce(t){let e=65535&t,r=t>>19;0==r?(this.stack==this.start.stack&&(this.stack=this.stack.slice()),this.stack.push(this.state,0,0),this.base+=3):this.base-=3*(r-1);let i=this.start.p.parser.getGoto(this.stack[this.base-3],e,!0);this.state=i}}class C{constructor(t,e,r){this.stack=t,this.pos=e,this.index=r,this.buffer=t.buffer,0==this.index&&this.maybeNext()}static create(t,e=t.bufferBase+t.buffer.length){return new C(t,e,e-t.bufferBase)}maybeNext(){let t=this.stack.parent;null!=t&&(this.index=this.stack.bufferBase-t.bufferBase,this.stack=t,this.buffer=t.buffer)}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}next(){this.index-=4,this.pos-=4,0==this.index&&this.maybeNext()}fork(){return new C(this.stack,this.pos,this.index)}}function j(t,e=Uint16Array){if("string"!=typeof t)return t;let r=null;for(let i=0,s=0;i=92&&e--,e>=34&&e--;let s=e-32;if(s>=46&&(s-=46,r=!0),n+=s,r)break;n*=46}r?r[s++]=n:r=new e(n)}return r}class N{constructor(){this.start=-1,this.value=-1,this.end=-1,this.extended=-1,this.lookAhead=0,this.mask=0,this.context=0}}const V=new N;class G{constructor(t,e){this.input=t,this.ranges=e,this.chunk="",this.chunkOff=0,this.chunk2="",this.chunk2Pos=0,this.next=-1,this.token=V,this.rangeIndex=0,this.pos=this.chunkPos=e[0].from,this.range=e[0],this.end=e[e.length-1].to,this.readNext()}resolveOffset(t,e){let r=this.range,i=this.rangeIndex,s=this.pos+t;for(;sr.to:s>=r.to;){if(i==this.ranges.length-1)return null;let t=this.ranges[++i];s+=t.from-r.to,r=t}return s}clipPos(t){if(t>=this.range.from&&tt)return Math.max(t,e.from);return this.end}peek(t){let e,r,i=this.chunkOff+t;if(i>=0&&i=this.chunk2Pos&&ei.to&&(this.chunk2=this.chunk2.slice(0,i.to-e)),r=this.chunk2.charCodeAt(0)}}return e>=this.token.lookAhead&&(this.token.lookAhead=e+1),r}acceptToken(t,e=0){let r=e?this.resolveOffset(e,-1):this.pos;if(null==r||r=this.chunk2Pos&&this.posthis.range.to?t.slice(0,this.range.to-this.pos):t,this.chunkPos=this.pos,this.chunkOff=0}}readNext(){return this.chunkOff>=this.chunk.length&&(this.getChunk(),this.chunkOff==this.chunk.length)?this.next=-1:this.next=this.chunk.charCodeAt(this.chunkOff)}advance(t=1){for(this.chunkOff+=t;this.pos+t>=this.range.to;){if(this.rangeIndex==this.ranges.length-1)return this.setDone();t-=this.range.to-this.pos,this.range=this.ranges[++this.rangeIndex],this.pos=this.range.from}return this.pos+=t,this.pos>=this.token.lookAhead&&(this.token.lookAhead=this.pos+1),this.readNext()}setDone(){return this.pos=this.chunkPos=this.end,this.range=this.ranges[this.rangeIndex=this.ranges.length-1],this.chunk="",this.next=-1}reset(t,e){if(e?(this.token=e,e.start=t,e.lookAhead=t+1,e.value=e.extended=-1):this.token=V,this.pos!=t){if(this.pos=t,t==this.end)return this.setDone(),this;for(;t=this.range.to;)this.range=this.ranges[++this.rangeIndex];t>=this.chunkPos&&t=this.chunkPos&&e<=this.chunkPos+this.chunk.length)return this.chunk.slice(t-this.chunkPos,e-this.chunkPos);if(t>=this.chunk2Pos&&e<=this.chunk2Pos+this.chunk2.length)return this.chunk2.slice(t-this.chunk2Pos,e-this.chunk2Pos);if(t>=this.range.from&&e<=this.range.to)return this.input.read(t,e);let r="";for(let i of this.ranges){if(i.from>=e)break;i.to>t&&(r+=this.input.read(Math.max(i.from,t),Math.min(i.to,e)))}return r}}class W{constructor(t,e){this.data=t,this.id=e}token(t,e){let{parser:r}=e.p;!function(t,e,r,i,s,n){let o=0,a=1<0){let r=t[i];if(h.allows(r)&&(-1==e.token.value||e.token.value==r||Y(r,e.token.value,s,n))){e.acceptToken(r);break}}let i=e.next,l=0,u=t[o+2];if(!(e.next<0&&u>l&&65535==t[r+3*u-3])){for(;l>1,n=r+s+(s<<1),a=t[n],h=t[n+1]||65536;if(i=h)){o=t[n+2],e.advance();continue t}l=s+1}}break}o=t[r+3*u-1]}}(this.data,t,e,this.id,r.data,r.tokenPrecTable)}}function U(t,e,r){for(let i,s=e;65535!=(i=t[s]);s++)if(i==r)return s-e;return-1}function Y(t,e,r,i){let s=U(r,i,e);return s<0||U(r,i,t)e)&&!i.type.isError)return r<0?Math.max(0,Math.min(i.to-1,e-25)):Math.min(t.length,Math.max(i.from+1,e+25));if(r<0?i.prevSibling():i.nextSibling())break;if(!i.parent())return r<0?0:t.length}}class F{constructor(t,e){this.fragments=t,this.nodeSet=e,this.i=0,this.fragment=null,this.safeFrom=-1,this.safeTo=-1,this.trees=[],this.start=[],this.index=[],this.nextFragment()}nextFragment(){let t=this.fragment=this.i==this.fragments.length?null:this.fragments[this.i++];if(t){for(this.safeFrom=t.openStart?I(t.tree,t.from+t.offset,1)-t.offset:t.from,this.safeTo=t.openEnd?I(t.tree,t.to+t.offset,-1)-t.offset:t.to;this.trees.length;)this.trees.pop(),this.start.pop(),this.index.pop();this.trees.push(t.tree),this.start.push(-t.offset),this.index.push(0),this.nextStart=this.safeFrom}else this.nextStart=1e9}nodeAt(t){if(tt)return this.nextStart=n,null;if(s instanceof p){if(n==t){if(n=Math.max(this.safeFrom,t)&&(this.trees.push(s),this.start.push(n),this.index.push(0))}else this.index[e]++,this.nextStart=n+s.length}}}class B{constructor(t,e){this.stream=e,this.tokens=[],this.mainToken=null,this.actions=[],this.tokens=t.tokenizers.map((t=>new N))}getActions(t){let e=0,r=null,{parser:i}=t.p,{tokenizers:s}=i,n=i.stateSlot(t.state,3),o=t.curContext?t.curContext.hash:0,a=0;for(let i=0;il.end+25&&(a=Math.max(l.lookAhead,a)),0!=l.value)){let i=e;if(l.extended>-1&&(e=this.addActions(t,l.extended,l.end,e)),e=this.addActions(t,l.value,l.end,e),!h.extend&&(r=l,e>i))break}}for(;this.actions.length>e;)this.actions.pop();return a&&t.setLookAhead(a),r||t.pos!=this.stream.end||(r=new N,r.value=t.p.parser.eofTerm,r.start=r.end=t.pos,e=this.addActions(t,r.value,r.end,e)),this.mainToken=r,this.actions}getMainToken(t){if(this.mainToken)return this.mainToken;let e=new N,{pos:r,p:i}=t;return e.start=r,e.end=Math.min(r+1,i.stream.end),e.value=r==i.stream.end?i.parser.eofTerm:0,e}updateCachedToken(t,e,r){let i=this.stream.clipPos(r.pos);if(e.token(this.stream.reset(i,t),r),t.value>-1){let{parser:e}=r.p;for(let i=0;i=0&&r.p.parser.dialect.allows(s>>1)){1&s?t.extended=s>>1:t.value=s>>1;break}}}else t.value=0,t.end=this.stream.clipPos(i+1)}putAction(t,e,r,i){for(let e=0;e4*t.bufferLength?new F(r,t.nodeSet):null}get parsedPos(){return this.minStackPos}advance(){let t,e,r=this.stacks,i=this.minStackPos,s=this.stacks=[];if(this.bigReductionCount>300&&1==r.length){let[t]=r;for(;t.forceReduce()&&t.stack.length&&t.stack[t.stack.length-2]>=this.lastBigReductionStart;);this.bigReductionCount=this.lastBigReductionSize=0}for(let n=0;ni)s.push(o);else{if(this.advanceStack(o,s,r))continue;{t||(t=[],e=[]),t.push(o);let r=this.tokens.getMainToken(o);e.push(r.value,r.end)}}break}}if(!s.length){let e=t&&function(t){let e=null;for(let r of t){let t=r.p.stoppedAt;(r.pos==r.p.stream.end||null!=t&&r.pos>t)&&r.p.parser.stateFlag(r.state,2)&&(!e||e.scorethis.stoppedAt?t[0]:this.runRecovery(t,e,s);if(r)return D&&console.log("Force-finish "+this.stackID(r)),this.stackToTree(r.forceAll())}if(this.recovering){let t=1==this.recovering?1:3*this.recovering;if(s.length>t)for(s.sort(((t,e)=>e.score-t.score));s.length>t;)s.pop();s.some((t=>t.reducePos>i))&&this.recovering--}else if(s.length>1){t:for(let t=0;t500&&i.buffer.length>500){if(!((e.score-i.score||e.buffer.length-i.buffer.length)>0)){s.splice(t--,1);continue t}s.splice(r--,1)}}}s.length>12&&s.splice(12,s.length-12)}this.minStackPos=s[0].pos;for(let t=1;t ":"";if(null!=this.stoppedAt&&i>this.stoppedAt)return t.forceReduce()?t:null;if(this.fragments){let e=t.curContext&&t.curContext.tracker.strict,r=e?t.curContext.hash:0;for(let a=this.fragments.nodeAt(i);a;){let i=this.parser.nodeSet.types[a.type.id]==a.type?s.getGoto(t.state,a.type.id):-1;if(i>-1&&a.length&&(!e||(a.prop(o.contextHash)||0)==r))return t.useNode(a,i),D&&console.log(n+this.stackID(t)+` (via reuse of ${s.getName(a.type.id)})`),!0;if(!(a instanceof p)||0==a.children.length||a.positions[0]>0)break;let h=a.children[0];if(!(h instanceof p&&0==a.positions[0]))break;a=h}}let a=s.stateSlot(t.state,4);if(a>0)return t.reduce(a),D&&console.log(n+this.stackID(t)+` (via always-reduce ${s.getName(65535&a)})`),!0;if(t.stack.length>=8400)for(;t.stack.length>6e3&&t.forceReduce(););let h=this.tokens.getActions(t);for(let o=0;oi?e.push(f):r.push(f)}return!1}advanceFully(t,e){let r=t.pos;for(;;){if(!this.advanceStack(t,null,null))return!1;if(t.pos>r)return J(t,e),!0}}runRecovery(t,e,r){let i=null,s=!1;for(let n=0;n ":"";if(o.deadEnd){if(s)continue;if(s=!0,o.restart(),D&&console.log(l+this.stackID(o)+" (restarted)"),this.advanceFully(o,r))continue}let u=o.split(),O=l;for(let t=0;u.forceReduce()&&t<10&&(D&&console.log(O+this.stackID(u)+" (via force-reduce)"),!this.advanceFully(u,r));t++)D&&(O=this.stackID(u)+" -> ");for(let t of o.recoverByInsert(a))D&&console.log(l+this.stackID(t)+" (via recover-insert)"),this.advanceFully(t,r);this.stream.end>o.pos?(h==o.pos&&(h++,a=0),o.recoverByDelete(a,h),D&&console.log(l+this.stackID(o)+` (via recover-delete ${this.parser.getName(a)})`),J(o,r)):(!i||i.scoret.topRules[e][1])),s=[];for(let t=0;t=0)n(i,t,e[r++]);else{let s=e[r+-i];for(let o=-i;o>0;o--)n(e[r++],t,s);r++}}}this.nodeSet=new u(e.map(((e,i)=>l.define({name:i>=this.minRepeatTerm?void 0:e,id:i,props:s[i],top:r.indexOf(i)>-1,error:0==i,skipped:t.skippedNodes&&t.skippedNodes.indexOf(i)>-1})))),t.propSources&&(this.nodeSet=this.nodeSet.extend(...t.propSources)),this.strict=!1,this.bufferLength=i;let a=j(t.tokenData);this.context=t.context,this.specializerSpecs=t.specialized||[],this.specialized=new Uint16Array(this.specializerSpecs.length);for(let t=0;t"number"==typeof t?new W(a,t):t)),this.topRules=t.topRules,this.dialects=t.dialects||{},this.dynamicPrecedences=t.dynamicPrecedences||null,this.tokenPrecTable=t.tokenPrec,this.termNames=t.termNames||null,this.maxNode=this.nodeSet.types.length-1,this.dialect=this.parseDialect(),this.top=this.topRules[Object.keys(this.topRules)[0]]}createParse(t,e,r){let i=new M(this,t,e,r);for(let s of this.wrappers)i=s(i,t,e,r);return i}getGoto(t,e,r=!1){let i=this.goto;if(e>=i[0])return-1;for(let s=i[e+1];;){let e=i[s++],n=1&e,o=i[s++];if(n&&r)return o;for(let r=s+(e>>1);s0}validAction(t,e){return!!this.allActions(t,(t=>t==e||null))}allActions(t,e){let r=this.stateSlot(t,4),i=r?e(r):void 0;for(let r=this.stateSlot(t,1);null==i;r+=3){if(65535==this.data[r]){if(1!=this.data[r+1])break;r=tt(this.data,r+2)}i=e(tt(this.data,r+1))}return i}nextStates(t){let e=[];for(let r=this.stateSlot(t,1);;r+=3){if(65535==this.data[r]){if(1!=this.data[r+1])break;r=tt(this.data,r+2)}if(!(1&this.data[r+2])){let t=this.data[r+1];e.some(((e,r)=>1&r&&e==t))||e.push(this.data[r],t)}}return e}configure(t){let e=Object.assign(Object.create(H.prototype),this);if(t.props&&(e.nodeSet=this.nodeSet.extend(...t.props)),t.top){let r=this.topRules[t.top];if(!r)throw new RangeError(`Invalid top rule name ${t.top}`);e.top=r}return t.tokenizers&&(e.tokenizers=this.tokenizers.map((e=>{let r=t.tokenizers.find((t=>t.from==e));return r?r.to:e}))),t.specializers&&(e.specializers=this.specializers.slice(),e.specializerSpecs=this.specializerSpecs.map(((r,i)=>{let s=t.specializers.find((t=>t.from==r.external));if(!s)return r;let n=Object.assign(Object.assign({},r),{external:s.to});return e.specializers[i]=et(n),n}))),t.contextTracker&&(e.context=t.contextTracker),t.dialect&&(e.dialect=this.parseDialect(t.dialect)),null!=t.strict&&(e.strict=t.strict),t.wrap&&(e.wrappers=e.wrappers.concat(t.wrap)),null!=t.bufferLength&&(e.bufferLength=t.bufferLength),e}hasWrappers(){return this.wrappers.length>0}getName(t){return this.termNames?this.termNames[t]:String(t<=this.maxNode&&this.nodeSet.types[t].name||t)}get eofTerm(){return this.maxNode+1}get topNode(){return this.nodeSet.types[this.top[1]]}dynamicPrecedence(t){let e=this.dynamicPrecedences;return null==e?0:e[t]||0}parseDialect(t){let e=Object.keys(this.dialects),r=e.map((()=>!1));if(t)for(let i of t.split(" ")){let t=e.indexOf(i);t>=0&&(r[t]=!0)}let i=null;for(let t=0;tt.external(r,i)<<1|e}return t.get}const rt={json:1,logfmt:2,unpack:3,pattern:4,regexp:5,label_format:7,line_format:8,label_replace:9,vector:10,offset:11,bool:12,on:13,ignoring:14,group_left:15,group_right:16,unwrap:6,decolorize:17,drop:18,keep:19},it={by:20,without:21,and:22,or:23,unless:24,sum:25,avg:26,count:27,max:28,min:29,stddev:30,stdvar:31,bottomk:32,topk:33,sort:34,sort_desc:35},st={__proto__:null,ip:295,count_over_time:301,rate:303,rate_counter:305,bytes_over_time:307,bytes_rate:309,avg_over_time:311,sum_over_time:313,min_over_time:315,max_over_time:317,stddev_over_time:319,stdvar_over_time:321,quantile_over_time:323,first_over_time:325,last_over_time:327,absent_over_time:329,bytes:335,duration:337,duration_seconds:339},nt=H.deserialize({version:14,states:"EtOYQPOOO#cQPO'#DUOOQO'#ER'#ERO#hQPO'#ERO$}QPO'#DTOYQPO'#DTOOQO'#Ed'#EdO%[QPO'#EcOOQO'#FP'#FPO%aQPO'#FOQ%lQPOOO&mQPO'#F]O&rQPO'#F^OOQO'#Eb'#EbOOQO'#DS'#DSOOQO'#Ee'#EeOOQO'#Ef'#EfOOQO'#Eg'#EgOOQO'#Eh'#EhOOQO'#Ei'#EiOOQO'#Ej'#EjOOQO'#Ek'#EkOOQO'#El'#ElOOQO'#Em'#EmOOQO'#En'#EnOOQO'#Eo'#EoOOQO'#Ep'#EpOOQO'#Eq'#EqOOQO'#Er'#ErOOQO'#Es'#EsO&wQPO'#DWOOQO'#DV'#DVO'VQPO,59pOOQO,5:m,5:mOOQO'#Dc'#DcO'_QPO'#DbO'gQPO'#DaO)lQPO'#D`O*{QPO'#D`OOQO'#D_'#D_O+sQPO,59oO-}QPO,59oO.UQPO,5:|O.]QPO,5:}O.hQPO'#E|O0sQPO,5;jO0zQPO,5;jO1PQPO,5;lO1PQPO,5;lO1PQPO,5;lO1PQPO,5;lO1PQPO,5;lO1PQPO,5;lOYQPO,5;wO3cQPO,5;xO3hQPO,59rO#cQPO,59qOOQO1G/[1G/[OOQO'#Dh'#DhO3mQPO,59|O5^QPO,59|OOQO'#Di'#DiO5cQPO,59{OOQO,59{,59{O5kQPO'#DWO6YQPO'#DlO8PQPO'#DoO9sQPO'#DoOOQO'#Do'#DoOOQO'#Dv'#DvOOQO'#Dt'#DtO+kQPO'#DtO9xQPO,59zO;iQPO'#EVO;nQPO'#EWOOQO'#EZ'#EZO;sQPO'#E[O;xQPO'#E_OOQO,59z,59zOOQO,59y,59yOOQO1G/Z1G/ZOOQO1G0h1G0hO;}QPO'#EtO.`QPO'#EtOUQPO'#FSO@dQPO'#FRO@nQPO'#FROYQPO1G1WOYQPO1G1WOYQPO1G1WOYQPO1G1WOYQPO1G1WOYQPO1G1WO@xQPO1G1cOAPQPO1G1dOOQO1G/^1G/^OOQO1G/]1G/]O5cQPO1G/hOAUQPO1G/hOAZQPO'#DjOBzQPO'#DjOOQO1G/g1G/gOCbQPO,59rOCPQPO,5:cOOQO'#Dm'#DmOClQPO,5:WOEcQPO'#DrOOQO'#Dq'#DqOGVQPO,5:_OHvQPO,5:[OOQO,5:Z,5:ZOJgQPO,5:`O+kQPO,5:`O+kQPO,5:`OOQO,5:q,5:qOJuQPO'#EYOOQO'#EX'#EXOJzQPO,5:rOLkQPO'#E^OOQO'#E^'#E^OOQO'#E]'#E]ONbQPO,5:vO!!RQPO'#EaOOQO'#Ea'#EaOOQO'#E`'#E`O!#xQPO,5:yO!%iQPO'#D`O;}QPO,5;`O!%pQPO'#EuO!%uQPO,5;`O!%}QPO,5;`O!&[QPO,5;`O!&iQPO,5;`O!&nQPO7+&TO.`QPO7+&TOOQO'#E}'#E}O!(OQPO1G1SOOQO1G1S1G1SOYQPO7+&pO!(WQPO7+&pO!)hQPO7+&pO!)oQPO7+&pO!)vQQO'#FTOOQO,5;n,5;nO!,UQPO,5;mO!,]QPO,5;mO!-nQPO7+&rO!-uQPO7+&rOOQO7+&r7+&rO!.SQPO7+&rO!.ZQPO7+&rO!/`QPO7+&rO!/pQPO7+&}OOQO7+'O7+'OOOQO7+%S7+%SO!/uQPO7+%SO5cQPO,5:UO!/zQPO,5:UO!0PQPO1G/{OOQO1G/}1G/}OOQO1G0U1G0UOOQO1G0W1G0WOOQO,5:X,5:XO!0UQPO1G/yO!1uQPO,5:^O!1zQPO,5:]OOQO1G/z1G/zO!2PQPO1G/zO!3pQPO,5:tO;nQPO,5:sO;sQPO,5:wO;xQPO,5:zO!3xQPO,5;cO!%uQPO1G0zO!4WQPO1G0zO!4`QPO,5;aO+kQPO,5;cO!4eQPO1G0zO!4oQPO'#EvO!4tQPO1G0zO!4eQPO1G0zO!4|QPO1G0zO!5ZQPO1G0zO!%xQPO1G0zOOQO1G0z1G0zOOQO<mAN>mO!=uQPO<SQPOLD+ZOOQOAN?oAN?oOOQO,5:r,5:rO!>XQPO!$'NuO!>^QPO!)9DaO!>cQPO!.K9{OOQO!4//g!4//gO;nQPO'#EWO!>hQPO'#D`O!?`QPO,59oO!@fQPO'#DTOYQPO1G1WOYQPO1G1WOYQPO1G1WOYQPO1G1WOYQPO1G1WOYQPO1G1WO1PQPO,5;lO1PQPO,5;lO1PQPO,5;lO1PQPO,5;lO1PQPO,5;lO1PQPO,5;lO!AqQPO7+&rO!AxQPO7+&rO!BVQPO7+&rO!C_QPO7+&rO!CfQPO7+&rO!B^QPO'#FQ",stateData:"!Cs~O$TOStOS~OXZOY[OiWOjWOkWOlWOmWOnWOoWOpWOqWOrWOsWO!vQO!wRO!xRO$UPO$YTO$[_O$]`O$^aO$_bO$`cO$adO$beO$cfO$dgO$ehO$fiO$gjO$hkO$ilO$jmO~O{nO~O!vqO~O!OrO!QrO!WrO!XrO!YrO!ZrOfwXgwXhwX!lwX!nwX!owX!pwX!qwX!wwX!xwX#{wX#|wX#}wX$OwX~O!_vO$RwX$ZwX~P#mO$Y{O~Od|Oe|O$Y}O~Of!QOg!POh!QO!O!UO!l!UO!n!UO!o!UO!p!UO!q!UO!w!RO!x!RO#{!SO#|!SO#}!SO$O!TO~O$Y!VO~O$Y!WO~O|!XO!O!XO!P!XO!Q!XO~O$V!YO$W!ZO~O}!]O$X!_O~Og!`Of!TXh!TX!O!TX!Q!TX!W!TX!X!TX!Y!TX!Z!TX!_!TX!l!TX!n!TX!o!TX!p!TX!q!TX!w!TX!x!TX#{!TX#|!TX#}!TX$O!TX$R!TX$Z!TX$k!TX$V!TX~O!OrO!QrO!WrO!XrO!YrO!ZrO~Of!SXg!SXh!SX!_!SX!l!SX!n!SX!o!SX!p!SX!q!SX!w!SX!x!SX#{!SX#|!SX#}!SX$O!SX$R!SX$Z!SX$k!SX$V!SX~P)WOP!dOQ!cOR!fOS!eOT!eOV!lOW!kOa!mOb!nOc!oO{!bO$Y!iO~O!_vOfwagwahwa!lwa!nwa!owa!pwa!qwa!wwa!xwa#{wa#|wa#}wa$Owa$Rwa$Zwa~P)WOfvXgvXhvX!OvX!lvX!nvX!ovX!pvX!qvX!wvX!xvX#{vX#|vX#}vX$OvX~O$Z!rO~P,|O$Z!sO~P,|O!v!wO$UPO$Y!uO~O$Y!xO~OXZOY[OiWOjWOkWOlWOmWOnWOoWOpWOqWOrWOsWO!wRO!xRO$UPO$YTO$[_O$]`O$^aO$_bO$`cO$adO$beO$cfO$dgO$ehO$fiO$gjO$hkO$ilO$jmO~O!v!yO~P.mO$Y!{O~O[#OO]!|O^!|OX#uPY#uPi#uPj#uPk#uPl#uPm#uPn#uPo#uPp#uPq#uPr#uPs#uP!v#uP!w#uP!x#uP$U#uP$Y#uP$[#uP$]#uP$^#uP$_#uP$`#uP$a#uP$b#uP$c#uP$d#uP$e#uP$f#uP$g#uP$h#uP$i#uP$j#uP~O!v#WO~O}#XO~Og#ZOf!Uah!Ua!O!Ua!Q!Ua!W!Ua!X!Ua!Y!Ua!Z!Ua!_!Ua!l!Ua!n!Ua!o!Ua!p!Ua!q!Ua!w!Ua!x!Ua#{!Ua#|!Ua#}!Ua$O!Ua$R!Ua$Z!Ua$k!Ua$V!Ua~O$Y#[O~O}#]O$X!_O~O|#`O!O#`O!P!XO!Q!XO!l#aO!n#aO!o#aO!p#aO!q#aO~O{#dO!b#bOf!`Xg!`Xh!`X!O!`X!Q!`X!W!`X!X!`X!Y!`X!Z!`X!_!`X!l!`X!n!`X!o!`X!p!`X!q!`X!w!`X!x!`X#{!`X#|!`X#}!`X$O!`X$R!`X$Z!`X$k!`X$V!`X~O{#dOf!cXg!cXh!cX!O!cX!Q!cX!W!cX!X!cX!Y!cX!Z!cX!_!cX!l!cX!n!cX!o!cX!p!cX!q!cX!w!cX!x!cX#{!cX#|!cX#}!cX$O!cX$R!cX$Z!cX$k!cX$V!cX~O}#hO~Of#jOg#kO$V#jOh!Sa!O!Sa!Q!Sa!W!Sa!X!Sa!Y!Sa!Z!Sa!_!Sa!l!Sa!n!Sa!o!Sa!p!Sa!q!Sa!w!Sa!x!Sa#{!Sa#|!Sa#}!Sa$O!Sa$R!Sa$Z!Sa$k!Sa~O}#lO~O{#mO~O{#pO~O{#tO~O!_#xO$k#zO~P)WO$Z$PO~O$V$QO~O{$RO$Z$TO~Of!uXg!uXh!uX!O!uX!l!uX!n!uX!o!uX!p!uX!q!uX!w!uX!x!uX#{!uX#|!uX#}!uX$O!uX$Z!uX~O$V$UO~PZO]!|O^!|O~P>ZO$V$dO~P,|O$Z$eO~O}$gO~Og$hOf!^Xh!^X!O!^X!Q!^X!W!^X!X!^X!Y!^X!Z!^X!_!^X!l!^X!n!^X!o!^X!p!^X!q!^X!w!^X!x!^X#{!^X#|!^X#}!^X$O!^X$R!^X$Z!^X$k!^X$V!^X~O$Y$iO~O!m$kO!s$lO!vQO!wRO!xRO~O}#XO$X!_O~PCPO{#dO!b$nOf!`ag!`ah!`a!O!`a!Q!`a!W!`a!X!`a!Y!`a!Z!`a!_!`a!l!`a!n!`a!o!`a!p!`a!q!`a!w!`a!x!`a#{!`a#|!`a#}!`a$O!`a$R!`a$Z!`a$k!`a$V!`a~O|$pOf!fXg!fXh!fX!O!fX!Q!fX!W!fX!X!fX!Y!fX!Z!fX!_!fX!l!fX!n!fX!o!fX!p!fX!q!fX!w!fX!x!fX#{!fX#|!fX#}!fX$O!fX$R!fX$V!fX$Z!fX$k!fX~O$V$qOf!gag!gah!ga!O!ga!Q!ga!W!ga!X!ga!Y!ga!Z!ga!_!ga!l!ga!n!ga!o!ga!p!ga!q!ga!w!ga!x!ga#{!ga#|!ga#}!ga$O!ga$R!ga$Z!ga$k!ga~O$V$qOf!dag!dah!da!O!da!Q!da!W!da!X!da!Y!da!Z!da!_!da!l!da!n!da!o!da!p!da!q!da!w!da!x!da#{!da#|!da#}!da$O!da$R!da$Z!da$k!da~Of#jOg#kO$V#jO$Z$rO~O|$tO~O$V$uOf!zag!zah!za!O!za!Q!za!W!za!X!za!Y!za!Z!za!_!za!l!za!n!za!o!za!p!za!q!za!w!za!x!za#{!za#|!za#}!za$O!za$R!za$Z!za$k!za~O|!XO!O!XO!P!XO!Q!XOf#QXg#QXh#QX!W#QX!X#QX!Y#QX!Z#QX!_#QX!l#QX!n#QX!o#QX!p#QX!q#QX!w#QX!x#QX#{#QX#|#QX#}#QX$O#QX$R#QX$V#QX$Z#QX$k#QX~O$V$vOf#Oag#Oah#Oa!O#Oa!Q#Oa!W#Oa!X#Oa!Y#Oa!Z#Oa!_#Oa!l#Oa!n#Oa!o#Oa!p#Oa!q#Oa!w#Oa!x#Oa#{#Oa#|#Oa#}#Oa$O#Oa$R#Oa$Z#Oa$k#Oa~O|!XO!O!XO!P!XO!Q!XOf#TXg#TXh#TX!W#TX!X#TX!Y#TX!Z#TX!_#TX!l#TX!n#TX!o#TX!p#TX!q#TX!w#TX!x#TX#{#TX#|#TX#}#TX$O#TX$R#TX$V#TX$Z#TX$k#TX~O$V$wOf#Rag#Rah#Ra!O#Ra!Q#Ra!W#Ra!X#Ra!Y#Ra!Z#Ra!_#Ra!l#Ra!n#Ra!o#Ra!p#Ra!q#Ra!w#Ra!x#Ra#{#Ra#|#Ra#}#Ra$O#Ra$R#Ra$Z#Ra$k#Ra~OU$xO~P*{O!m${O~O!_$|O$k#zO~OZ%OO!_#xO$Z#ha~P)WO!_#xO$Z%TO$k#zO~P)WO$Z%UO~Od|Oe|Of#Vqg#Vqh#Vq!O#Vq!l#Vq!n#Vq!o#Vq!p#Vq!q#Vq!w#Vq!x#Vq#{#Vq#|#Vq#}#Vq$O#Vq$R#Vq$Z#Vq$V#Vq~O$V%XO$Z%YO~Od|Oe|Of#rqg#rqh#rq!O#rq!l#rq!n#rq!o#rq!p#rq!q#rq!w#rq!x#rq#{#rq#|#rq#}#rq$O#rq$R#rq$Z#rq$V#rq~O$V%]O~P(t=>rt[t.toLowerCase()]||-1)(t)<<1},{term:43,get:(t,e)=>(t=>it[t.toLowerCase()]||-1)(t)<<1|1},{term:43,get:t=>st[t]||-1}],tokenPrec:0}),ot=1,at=2,ht=40,lt=42,ut=43,Ot=44,ft=45,ct=46,pt=47,dt=48,gt=52,$t=54,Pt=55,mt=56,xt=57,Qt=58,bt=60,kt=70,vt=74,Xt=75,wt=76,yt=77,Rt=78,St=81,_t=84,Et=98},2533:t=>{t.exports=JSON.parse('{"id":"grafana-lokiexplore-app"}')}},g={};function $(t){var e=g[t];if(void 0!==e)return e.exports;var r=g[t]={exports:{}};return d[t].call(r.exports,r,r.exports,$),r.exports}return $.m=d,$.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return $.d(e,{a:e}),e},f=Object.getPrototypeOf?t=>Object.getPrototypeOf(t):t=>t.__proto__,$.t=function(t,e){if(1&e&&(t=this(t)),8&e)return t;if("object"==typeof t&&t){if(4&e&&t.__esModule)return t;if(16&e&&"function"==typeof t.then)return t}var r=Object.create(null);$.r(r);var i={};O=O||[null,f({}),f([]),f(f)];for(var s=2&e&&t;"object"==typeof s&&!~O.indexOf(s);s=f(s))Object.getOwnPropertyNames(s).forEach((e=>i[e]=()=>t[e]));return i.default=()=>t,$.d(r,i),r},$.d=(t,e)=>{for(var r in e)$.o(e,r)&&!$.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},$.f={},$.e=t=>Promise.all(Object.keys($.f).reduce(((e,r)=>($.f[r](t,e),e)),[])),$.u=t=>t+".js",$.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),$.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),c={},p="grafana-lokiexplore-app:",$.l=(t,e,r,i)=>{if(c[t])c[t].push(e);else{var s,n;if(void 0!==r)for(var o=document.getElementsByTagName("script"),a=0;a{s.onerror=s.onload=null,clearTimeout(u);var i=c[t];if(delete c[t],s.parentNode&&s.parentNode.removeChild(s),i&&i.forEach((t=>t(r))),e)return e(r)},u=setTimeout(l.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=l.bind(null,s.onerror),s.onload=l.bind(null,s.onload),n&&document.head.appendChild(s)}},$.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},$.p="public/plugins/grafana-lokiexplore-app/",(()=>{$.b=document.baseURI||self.location.href;var t={231:0};$.f.j=(e,r)=>{var i=$.o(t,e)?t[e]:void 0;if(0!==i)if(i)r.push(i[2]);else{var s=new Promise(((r,s)=>i=t[e]=[r,s]));r.push(i[2]=s);var n=$.p+$.u(e),o=new Error;$.l(n,(r=>{if($.o(t,e)&&(0!==(i=t[e])&&(t[e]=void 0),i)){var s=r&&("load"===r.type?"missing":r.type),n=r&&r.target&&r.target.src;o.message="Loading chunk "+e+" failed.\n("+s+": "+n+")",o.name="ChunkLoadError",o.type=s,o.request=n,i[1](o)}}),"chunk-"+e,e)}};var e=(e,r)=>{var i,s,[n,o,a]=r,h=0;if(n.some((e=>0!==t[e]))){for(i in o)$.o(o,i)&&($.m[i]=o[i]);a&&a($)}for(e&&e(r);h(()=>{"use strict";var O,f,c,p,d={9077:(t,e,r)=>{r.r(e),r.d(e,{plugin:()=>p});var i=r(5959),s=r.n(i),n=r(7781),o=r(7608),a=r(2007);const h=(0,i.lazy)((()=>r.e(543).then(r.bind(r,1543)))),l=[{id:"grafana-lokiexplore-app/open-in-explore-logs-button/v1",title:"Open in Logs Drilldown button",description:"A button that opens a logs view in the Logs Drilldown app.",component:function(t){return s().createElement(i.Suspense,{fallback:s().createElement(a.LinkButton,{variant:"secondary",disabled:!0},"Open in Logs Drilldown")},s().createElement(h,t))}}];function u(t,e,r,i,s,n,o){try{var a=t[n](o),h=a.value}catch(t){return void r(t)}a.done?e(h):Promise.resolve(h).then(i,s)}function O(t){return function(){var e=this,r=arguments;return new Promise((function(i,s){var n=t.apply(e,r);function o(t){u(n,i,s,o,a,"next",t)}function a(t){u(n,i,s,o,a,"throw",t)}o(void 0)}))}}const f=(0,i.lazy)(O((function*(){const{wasmSupported:t}=yield Promise.all([r.e(854),r.e(944),r.e(105),r.e(747)]).then(r.bind(r,5722)),{default:e}=yield Promise.all([r.e(854),r.e(944),r.e(105),r.e(747)]).then(r.bind(r,2854)),{default:i}=yield r.e(854).then(r.bind(r,1854)),{default:s}=yield r.e(944).then(r.bind(r,6944));return e(),t()&&(yield Promise.all([i(),s()])),r.e(631).then(r.bind(r,9631))}))),c=(0,i.lazy)(O((function*(){return yield r.e(599).then(r.bind(r,4599))}))),p=(new n.AppPlugin).setRootPage(f).addConfigPage({title:"Configuration",icon:"cog",body:c,id:"configuration"});for(const t of o.Ge)p.addLink(t);for(const t of l)p.exposeComponent(t)},7608:(t,e,r)=>{r.d(e,{Ge:()=>g,I8:()=>b,R6:()=>d,Rk:()=>Q,XH:()=>w,rx:()=>P,uu:()=>X,vh:()=>m,xh:()=>k,zH:()=>v});var i=r(7781),s=r(3143),n=r(2533),o=r(8682),a=r(7232),h=r(5111),l=r(4793),u=r(541);const O="Grafana Logs Drilldown",f=`Open in ${O}`,c=`Open current query in the ${O} view`,p="gf-logs",d={MetricInvestigation:"grafana-lokiexplore-app/investigation/v1"},g=[{targets:i.PluginExtensionPoints.DashboardPanelMenu,title:f,description:c,icon:p,path:Q(),configure:x},{targets:i.PluginExtensionPoints.ExploreToolbarAction,title:f,description:c,icon:p,path:Q(),configure:x}];function $(t){return t||s.ZO}function P(t){return null==t?void 0:t.replace(/\\\\/g,"\\")}function m(t){return t?(0,s.OQ)(P(t)):s.ZO}function x(t){var e,r;if(!t)return;const i=t.targets.find((t=>{var e;return"loki"===(null===(e=t.datasource)||void 0===e?void 0:e.type)}));if(!i||!(null===(e=i.datasource)||void 0===e?void 0:e.uid))return;const n=i.expr,{labelFilters:O,lineFilters:f,fields:c,patternFilters:p}=(0,o.BW)(n,t,i),d=O.find((t=>(0,h.BG)(t.operator)));if(!d)return;const g=X(d.value.split("|")[0]);let x=d.key===s.OX?"service":d.key;O.sort((t=>t.key===x?-1:1));let y=k(b.DatasourceId,null===(r=i.datasource)||void 0===r?void 0:r.uid,new URLSearchParams);y=k(b.TimeRangeFrom,t.timeRange.from.valueOf().toString(),y),y=k(b.TimeRangeTo,t.timeRange.to.valueOf().toString(),y);for(const t of O){if(t.type!==a.H.Indexed)continue;const e=`${t.key}|${t.operator}|${w(m(t.value))},${w(P(t.value))}`;y=v(b.Labels,e,y)}if(f)for(const t of f)y=v(b.LineFilters,`${t.key}|${w(t.operator)}|${w($(t.value))}`,y);if(null==c?void 0:c.length)for(const t of c)if(t.type===a.H.StructuredMetadata)y=t.key===s.e4?v(b.Levels,`${t.key}|${t.operator}|${w($(t.value))}`,y):v(b.Metadata,`${t.key}|${t.operator}|${w(m(t.value))},${w(P(t.value))}`,y);else{const e={value:t.value,parser:t.parser},r=`${t.key}|${t.operator}|${w(m(JSON.stringify(e)))},${R=e.value,R?w(P(R)):s.ZO}`;y=v(b.Fields,r,y)}var R;if(null==p?void 0:p.length){const t=[];for(const e of p)t.push({type:e.operator===l.a6.match?"include":"exclude",pattern:$(e.value)});let e=(0,u.M)(t);y=v(b.Patterns,JSON.stringify(t),y),y=v(b.PatternsVariable,e,y)}return{path:Q(`/explore/${x}/${g}/logs`,y)}}function Q(t="/explore",e){return`/a/${n.id}${t}${e?`?${e.toString()}`:""}`}const b={DatasourceId:`var-${s.EY}`,TimeRangeFrom:"from",TimeRangeTo:"to",Labels:`var-${s.MB}`,Fields:`var-${s.mB}`,Metadata:`var-${s._P}`,Levels:`var-${s._Y}`,LineFilters:`var-${s.NW}`,Patterns:s.uw,PatternsVariable:`var-${s.uw}`};function k(t,e,r){var i;const s=new URLSearchParams(null!==(i=null==r?void 0:r.toString())&&void 0!==i?i:location.search);return s.set(t,e),s}function v(t,e,r){var i;const s=new URLSearchParams(null!==(i=null==r?void 0:r.toString())&&void 0!==i?i:location.search);return s.append(t,e),s}function X(t){return(0,s.Dx)(t).replace(/\//g,"-").replace(/\\/g,"-")}function w(t){return function(t){return null==t?"":/,/g[Symbol.replace](t,"__gfc__")}(function(t){return null==t?"":/\|/g[Symbol.replace](t,"__gfp__")}(t))}},7232:(t,e,r)=>{r.d(e,{H:()=>i});var i=function(t){return t.Indexed="I",t.StructuredMetadata="S",t.Parsed="P",t}({})},4793:(t,e,r)=>{function i(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}r.d(e,{KQ:()=>s,Rk:()=>n,a6:()=>h,cK:()=>a,ld:()=>l,w7:()=>o});var s=function(t){return t.Equal="=",t.NotEqual="!=",t.RegexEqual="=~",t.RegexNotEqual="!~",t}({}),n=function(t){return t.gt=">",t.lt="<",t.gte=">=",t.lte="<=",t}({});const o=function(t){for(var e=1;e{r.d(e,{v:()=>l});var i=r(8531),s=r(2533),n=r(4011);function o(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function a(t){for(var e=1;e{const r=a({},h,e);console.log(t,r),u(t,r)},warn:(t,e)=>{const r=a({},h,e);console.warn(t,r),O(t,r)},error:(t,e)=>{const r=a({},h,e);console.error(t,r),f(t,r)}},u=(t,e)=>{try{(0,i.logInfo)(t,e)}catch(t){console.warn("Failed to log faro event!")}},O=(t,e)=>{try{(0,i.logWarning)(t,e)}catch(r){console.warn("Failed to log faro warning!",{msg:t,context:e})}},f=(t,e)=>{let r=e;try{!function(t,e){if("object"==typeof t&&null!==t&&((0,n.u4)(t)&&Object.keys(t).forEach((r=>{const i=t[r];"string"!=typeof i&&"boolean"!=typeof i&&"number"!=typeof i||(e[r]=i.toString())})),c(t)))if("object"==typeof t.data&&null!==t.data)try{e.data=JSON.stringify(t.data)}catch(t){}else"string"!=typeof t.data&&"boolean"!=typeof t.data&&"number"!=typeof t.data||(e.data=t.data.toString())}(t,r),t instanceof Error?(0,i.logError)(t,r):"string"==typeof t?(0,i.logError)(new Error(t),r):t&&"object"==typeof t?r.msg?(0,i.logError)(new Error(r.msg),r):(0,i.logError)(new Error("error object"),r):(0,i.logError)(new Error("unknown error"),r)}catch(e){console.error("Failed to log faro error!",{err:t,context:r})}},c=t=>"data"in t},8682:(t,e,r)=>{r.d(e,{BW:()=>d,QH:()=>l,T0:()=>$});var i=r(2344),s=r(4793),n=r(581),o=r(7232);function a(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}class h{static fromNode(t){return new h(t.from,t.to,t,t.type)}contains(t){return this.from<=t.from&&this.to>=t.to}getExpression(t){return t.substring(this.from,this.to)}constructor(t,e,r,i){a(this,"from",void 0),a(this,"to",void 0),a(this,"type",void 0),a(this,"syntaxNode",void 0),this.from=t,this.to=e,this.type=i,this.syntaxNode=r}}function l(t,e){const r=[];return i.K3.parse(t).iterate({enter:t=>{(void 0===e||e.includes(t.type.id))&&r.push(t.node)}}),r}function u(t,e){if(t.type.id===e)return[h.fromNode(t)];const r=[];let i=0,s=t.childAfter(i);for(;s;)r.push(...u(s,e)),i=s.to,s=t.childAfter(i);return r}function O(t,e,r,i,n){const o=n===s.cK.regex||n===s.cK.negativeRegex,a=t.includes("(?i)")&&o;if('"'===e&&o){const e=new RegExp(/\\\\/,"g");t=t.replace(e,"\\")}else if('"'===e){const e=new RegExp(/\\\\\"/,"g");t=t.replace(e,'"');const r=new RegExp(/\\\\/,"g");t=t.replace(r,"\\")}return a&&(t=t.replace("(?i)","")),r.push({key:a?s.ld.caseInsensitive.toString():s.ld.caseSensitive.toString()+","+i.toString(),operator:n,value:t}),t}function f(t,e,r){const i=new RegExp(/\\"/,"g");t=t.replace(i,'"'),e.push({operator:r,value:t})}function c(t){return u(t,i._2).length?s.w7.lte:u(t,i.Hd).length?s.w7.lt:u(t,i.H3).length?s.w7.gte:u(t,i.AN).length?s.w7.gt:void console.warn("unknown numeric operator")}function p(t){return u(t,i.Eq).length?s.w7.Equal:u(t,i.l3).length?s.w7.NotEqual:u(t,i.Re).length?s.w7.RegexEqual:u(t,i.q6).length?s.w7.RegexNotEqual:void 0}function d(t,e,r){const a=[],d=[],g=[],$=[],m=l(t,[i.MD]);return 0===m.length?{labelFilters:a}:(function(t,e){const r=l(t,[i.g$]);for(const h of r){var n,a;const r=u(h,i.gw),l=u(h,i.Qf),O=t.substring(null===(n=r[0])||void 0===n?void 0:n.to,null===(a=l[0])||void 0===a?void 0:a.from),f=r[0].getExpression(t),c=l.map((e=>t.substring(e.from+1,e.to-1)))[0];f&&c&&(O===s.w7.NotEqual||O===s.w7.Equal||O===s.w7.RegexEqual||O===s.w7.RegexNotEqual)&&e.push({key:f,operator:O,value:c,type:o.H.Indexed})}}(u(m[0],i.MD)[0].getExpression(t),a),function(t,e,r){const n=l(t,[i.PN]);for(const[o,a]of n.entries()){const n=u(a,i.Sg),h=u(a,i.q5),l=u(a,i.l3),c=u(a,i.q6),p=u(a,i.ds),d=u(a,i._9),g=P(a);for(const i of g){const u=t.substring((null==i?void 0:i.from)+1,null==i?void 0:i.from);let g=t.substring((null==i?void 0:i.from)+1,(null==i?void 0:i.to)-1);if(g.length){let i;if(n.length)i=s.cK.match;else if(l.length)i=s.cK.negativeMatch;else if(c.length)i=s.cK.negativeRegex;else if(h.length)i=s.cK.regex;else if(p.length)i=s.a6.match;else{if(!d.length){console.warn("unknown line filter",{query:t.substring(a.from,a.to)});continue}i=s.a6.negativeMatch}i!==s.a6.match&&i!==s.a6.negativeMatch?O(g,u,e,o,i):f(g,r,i)}}}}(t,d,g),function(t,e,r,s){var a;const O=null===(a=r.data)||void 0===a?void 0:a.series.find((t=>t.refId===s.refId)),f=l(t,[i.bY]);for(const r of f){var d;const s=h.fromNode(r).getExpression(t);if(r.getChild(i.bY))continue;if("__error__"===s.substring(0,9))continue;const a=l(t.substring(0,r.node.to),[i.c$]),f=l(t.substring(0,r.node.to),[i.LM]),$=null===(d=u(r,i.gw)[0])||void 0===d?void 0:d.getExpression(t),P=u(r,i.Qf),m=u(r,i.wN),x=u(r,i.Ix),Q=u(r,i.dw);let b,k,v;if(P.length)k=p(r),b=t.substring(P[0].from+1,P[0].to-1);else if(m.length)b=m[0].getExpression(t),k=c(r);else if(Q.length)k=c(r),b=Q[0].getExpression(t);else{if(!x.length)continue;k=c(r),b=x[0].getExpression(t)}var g;if(O&&(v=null!==(g=(0,n.E)($,O))&&void 0!==g?g:void 0),k){let t;a.length&&f.length?t="mixed":a.length?t="logfmt":f.length?t="json":v=o.H.StructuredMetadata,e.push({key:$,operator:k,type:null!=v?v:o.H.Parsed,parser:t,value:b})}}}(t,$,e,r),{labelFilters:a,lineFilters:d,fields:$,patternFilters:g})}const g=0;function $(t){return!1===function(t,e){let r=!1;return i.K3.parse(t).iterate({enter:({type:t})=>{if(t.id===e)return r=!0,!1}}),r}(t,g)}function P(t){const e=[];let r=t;do{const t=r.getChild(i.Qf);t&&!r.getChild(i.w7)&&e.push(t),r=r.getChild(i.ih)}while(null!=r);return e}},581:(t,e,r)=>{r.d(e,{E:()=>n,t:()=>s});var i=r(7232),s=function(t){return t.Backward="backward",t.Forward="forward",t.Scan="scan",t}({});function n(t,e,r=0){var s;const n=null===(s=e.fields.find((t=>"labelTypes"===t.name)))||void 0===s?void 0:s.values[r];if(!n)return null;switch(n[t]){case"I":return i.H.Indexed;case"S":return i.H.StructuredMetadata;case"P":return i.H.Parsed;default:return null}}},4011:(t,e,r)=>{r.d(e,{FH:()=>f,OK:()=>d,QX:()=>$,Zt:()=>p,aJ:()=>l,fS:()=>c,kR:()=>g,lb:()=>u,u4:()=>h,v_:()=>O});var i=r(7781),s=r(4793);const n=t=>"object"==typeof t&&null!==t;function o(t,e){return e in t}const a=t=>"string"==typeof t&&t||"",h=t=>"object"==typeof t;function l(t){let e=[];if(Array.isArray(t))for(let r=0;r{r.d(e,{BG:()=>n,Lw:()=>o,SM:()=>a,iu:()=>h});var i=r(4793),s=r(5548);const n=t=>t===i.w7.Equal||t===i.w7.RegexEqual,o=t=>t===i.w7.NotEqual||t===i.w7.RegexNotEqual,a=t=>t===i.w7.RegexEqual||t===i.w7.RegexNotEqual,h=t=>s.nB.includes(t)},5548:(t,e,r)=>{r.d(e,{_i:()=>a,eb:()=>u,nB:()=>h,hI:()=>l,II:()=>o});var i=r(4793),s=r(2871);function n(t){if(t===i.w7.NotEqual)return"Not equal";if(t===i.w7.RegexNotEqual)return"Does not match regex";if(t===i.w7.Equal)return"Equals";if(t===i.w7.RegexEqual)return"Matches regex";if(t===i.w7.lt)return"Less than";if(t===i.w7.gt)return"Greater than";if(t===i.w7.gte)return"Greater than or equal to";if(t===i.w7.lte)return"Less than or equal to";const e=new Error("Invalid operator!");throw s.v.error(e,{msg:"Invalid operator",operator:t}),e}const o=[i.w7.Equal,i.w7.NotEqual,i.w7.RegexEqual,i.w7.RegexNotEqual].map(((t,e,r)=>({description:n(t),label:t,value:t}))),a=[i.w7.Equal,i.w7.RegexEqual].map((t=>({description:n(t),label:t,value:t}))),h=[i.w7.gt,i.w7.gte,i.w7.lt,i.w7.lte],l=h.map((t=>({description:n(t),label:t,value:t}))),u=[{label:"match",value:i.cK.match},{label:"negativeMatch",value:i.cK.negativeMatch},{label:"regex",value:i.cK.regex},{label:"negativeRegex",value:i.cK.negativeRegex}]},541:(t,e,r)=>{function i(t){return t.replace(/\\/g,"\\\\").replace(/\n/g,"\\n").replace(/"/g,'\\"')}function s(t){const e=t.filter((t=>"exclude"===t.type)).map((t=>`!> "${i(t.pattern)}"`)).join(" ").trim(),r=t.filter((t=>"include"===t.type));let s="";return r.length>0&&(s=1===r.length?`|> "${i(r[0].pattern)}"`:`|> ${r.map((t=>`"${i(t.pattern)}"`)).join(" or ")}`),`${e} ${s}`.trim()}r.d(e,{M:()=>s})},3143:(t,e,r)=>{r.d(e,{Du:()=>Q,Dx:()=>I,EY:()=>v,FX:()=>j,Gb:()=>b,Gd:()=>l,Jg:()=>m,LI:()=>P,MB:()=>i,NW:()=>q,OQ:()=>B,OX:()=>W,Oc:()=>h,QE:()=>S,S1:()=>s,S6:()=>c,SA:()=>z,Sy:()=>A,To:()=>V,VL:()=>y,WM:()=>E,Wi:()=>Y,YN:()=>w,ZO:()=>D,_P:()=>f,_Y:()=>g,e4:()=>G,eL:()=>N,fJ:()=>Z,fi:()=>n,gR:()=>X,kl:()=>k,ky:()=>U,ll:()=>o,mB:()=>a,mF:()=>R,pT:()=>C,qZ:()=>$,rl:()=>T,sC:()=>d,sL:()=>O,uw:()=>p,w0:()=>u,zE:()=>F,zp:()=>x});const i="filters",s="${filters}",n="filters_replica",o="${filters_replica}",a="fields",h="${fields}",l="${pendingFields}",u="${pendingMetadata}",O="all-fields",f="metadata",c="${metadata}",p="patterns",d="${patterns}",g="levels",$="${levels}",P="fieldBy",m="labelBy",x="${labelBy}",Q="primary_label_search",b="primary_label",k="${primary_label}",v="ds",X="${ds}",w="| json | logfmt | drop __error__, __error_details__",y="| json | drop __error__, __error_details__",R="| logfmt",S="logsFormat",_="${logsFormat}",E="lineFilterV2",q="lineFilters",T="${lineFilters}",z=`{${s}} ${$} ${c} ${d} ${T} ${_} ${h}`,Z=`{${s}} ${$} ${u} ${d} ${T} ${_} ${l}`,A=`{${s}} ${l} ${c} ${d} ${T} ${_} ${h}`,C=`{${s}} ${c} ${d} ${_}`,j=`${s} ${$} ${c} ${d} ${T} ${h}`,N={uid:X},V="$__all",G="detected_level",W="service_name",U="service",Y="var_aggregated_metrics",D='""',L="__CVΩ__";function I(t=""){return t.startsWith(L)?t.substring(L.length):t}function F(t=""){return t.startsWith(L)}function B(t=""){return L+t}},6089:e=>{e.exports=t},7781:t=>{t.exports=e},8531:t=>{t.exports=r},2007:t=>{t.exports=i},3241:t=>{t.exports=s},5959:t=>{t.exports=n},8398:t=>{t.exports=o},200:t=>{t.exports=a},3806:t=>{t.exports=h},7694:t=>{t.exports=l},1269:t=>{t.exports=u},2344:(t,e,r)=>{r.d(e,{Ix:()=>St,dw:()=>Xt,Eq:()=>Ot,w7:()=>Qt,H3:()=>wt,AN:()=>vt,gw:()=>ut,LM:()=>ot,bY:()=>kt,PN:()=>gt,c$:()=>at,Hd:()=>yt,_2:()=>Rt,g$:()=>lt,Yw:()=>Et,l3:()=>ct,_9:()=>xt,q6:()=>dt,wN:()=>_t,ih:()=>bt,Sg:()=>$t,q5:()=>Pt,ds:()=>mt,Re:()=>pt,MD:()=>ht,Qf:()=>ft,K3:()=>nt});const i=1024;let s=0;class n{constructor(t,e){this.from=t,this.to=e}}class o{constructor(t={}){this.id=s++,this.perNode=!!t.perNode,this.deserialize=t.deserialize||(()=>{throw new Error("This node type doesn't define a deserialize function")})}add(t){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return"function"!=typeof t&&(t=l.match(t)),e=>{let r=t(e);return void 0===r?null:[this,r]}}}o.closedBy=new o({deserialize:t=>t.split(" ")}),o.openedBy=new o({deserialize:t=>t.split(" ")}),o.group=new o({deserialize:t=>t.split(" ")}),o.isolate=new o({deserialize:t=>{if(t&&"rtl"!=t&&"ltr"!=t&&"auto"!=t)throw new RangeError("Invalid value for isolate: "+t);return t||"auto"}}),o.contextHash=new o({perNode:!0}),o.lookAhead=new o({perNode:!0}),o.mounted=new o({perNode:!0});class a{constructor(t,e,r){this.tree=t,this.overlay=e,this.parser=r}static get(t){return t&&t.props&&t.props[o.mounted.id]}}const h=Object.create(null);class l{constructor(t,e,r,i=0){this.name=t,this.props=e,this.id=r,this.flags=i}static define(t){let e=t.props&&t.props.length?Object.create(null):h,r=(t.top?1:0)|(t.skipped?2:0)|(t.error?4:0)|(null==t.name?8:0),i=new l(t.name||"",e,t.id,r);if(t.props)for(let r of t.props)if(Array.isArray(r)||(r=r(i)),r){if(r[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");e[r[0].id]=r[1]}return i}prop(t){return this.props[t.id]}get isTop(){return(1&this.flags)>0}get isSkipped(){return(2&this.flags)>0}get isError(){return(4&this.flags)>0}get isAnonymous(){return(8&this.flags)>0}is(t){if("string"==typeof t){if(this.name==t)return!0;let e=this.prop(o.group);return!!e&&e.indexOf(t)>-1}return this.id==t}static match(t){let e=Object.create(null);for(let r in t)for(let i of r.split(" "))e[i]=t[r];return t=>{for(let r=t.prop(o.group),i=-1;i<(r?r.length:0);i++){let s=e[i<0?t.name:r[i]];if(s)return s}}}}l.none=new l("",Object.create(null),0,8);class u{constructor(t){this.types=t;for(let e=0;e=e){let o=new x(n.tree,n.overlay[0].from+t.from,-1,t);(s||(s=[i])).push(P(o,e,r,!1))}}return s?X(s):i}(this,t,e)}iterate(t){let{enter:e,leave:r,from:i=0,to:s=this.length}=t,n=t.mode||0,o=(n&c.IncludeAnonymous)>0;for(let t=this.cursor(n|c.IncludeAnonymous);;){let n=!1;if(t.from<=s&&t.to>=i&&(!o&&t.type.isAnonymous||!1!==e(t))){if(t.firstChild())continue;n=!0}for(;n&&r&&(o||!t.type.isAnonymous)&&r(t),!t.nextSibling();){if(!t.parent())return;n=!0}}}prop(t){return t.perNode?this.props?this.props[t.id]:void 0:this.type.prop(t)}get propValues(){let t=[];if(this.props)for(let e in this.props)t.push([+e,this.props[e]]);return t}balance(t={}){return this.children.length<=8?this:E(l.none,this.children,this.positions,0,this.children.length,0,this.length,((t,e,r)=>new p(this.type,t,e,r,this.propValues)),t.makeTree||((t,e,r)=>new p(l.none,t,e,r)))}static build(t){return function(t){var e;let{buffer:r,nodeSet:s,maxBufferLength:n=i,reused:a=[],minRepeatType:h=s.types.length}=t,l=Array.isArray(r)?new d(r,r.length):r,u=s.types,O=0,f=0;function c(t,e,r,i,d,Q){let{id:b,start:k,end:v,size:X}=l,w=f,y=O;for(;X<0;){if(l.next(),-1==X){let e=a[b];return r.push(e),void i.push(k-t)}if(-3==X)return void(O=b);if(-4==X)return void(f=b);throw new RangeError(`Unrecognized record size: ${X}`)}let R,S,_=u[b],q=k-t;if(v-k<=n&&(S=function(t,e){let r=l.fork(),i=0,s=0,o=0,a=r.end-n,u={size:0,start:0,skip:0};t:for(let n=r.pos-t;r.pos>n;){let t=r.size;if(r.id==e&&t>=0){u.size=i,u.start=s,u.skip=o,o+=4,i+=4,r.next();continue}let l=r.pos-t;if(t<0||l=h?4:0,f=r.start;for(r.next();r.pos>l;){if(r.size<0){if(-3!=r.size)break t;O+=4}else r.id>=h&&(O+=4);r.next()}s=f,i+=t,o+=O}return(e<0||i==t)&&(u.size=i,u.start=s,u.skip=o),u.size>4?u:void 0}(l.pos-e,d))){let e=new Uint16Array(S.size-S.skip),r=l.pos-S.size,i=e.length;for(;l.pos>r;)i=x(S.start,e,i);R=new g(e,v-S.start,s),q=S.start-t}else{let t=l.pos-X;l.next();let e=[],r=[],i=b>=h?b:-1,s=0,a=v;for(;l.pos>t;)i>=0&&l.id==i&&l.size>=0?(l.end<=a-n&&(P(e,r,k,s,l.end,a,i,w,y),s=e.length,a=l.end),l.next()):Q>2500?$(k,t,e,r):c(k,t,e,r,i,Q+1);if(i>=0&&s>0&&s-1&&s>0){let t=function(t,e){return(r,i,s)=>{let n,a,h=0,l=r.length-1;if(l>=0&&(n=r[l])instanceof p){if(!l&&n.type==t&&n.length==s)return n;(a=n.prop(o.lookAhead))&&(h=i[l]+n.length+a)}return m(t,r,i,s,h,e)}}(_,y);R=E(_,e,r,0,e.length,0,v-k,t,t)}else R=m(_,e,r,v-k,w-v,y)}r.push(R),i.push(q)}function $(t,e,r,i){let o=[],a=0,h=-1;for(;l.pos>e;){let{id:t,start:e,end:r,size:i}=l;if(i>4)l.next();else{if(h>-1&&e=0;t-=3)e[r++]=o[t],e[r++]=o[t+1]-n,e[r++]=o[t+2]-n,e[r++]=r;r.push(new g(e,o[2]-n,s)),i.push(n-t)}}function P(t,e,r,i,n,o,a,h,l){let u=[],O=[];for(;t.length>i;)u.push(t.pop()),O.push(e.pop()+r-n);t.push(m(s.types[a],u,O,o-n,h-o,l)),e.push(n-r)}function m(t,e,r,i,s,n,a){if(n){let t=[o.contextHash,n];a=a?[t].concat(a):[t]}if(s>25){let t=[o.lookAhead,s];a=a?[t].concat(a):[t]}return new p(t,e,r,i,a)}function x(t,e,r){let{id:i,start:s,end:n,size:o}=l;if(l.next(),o>=0&&i4){let i=l.pos-(o-4);for(;l.pos>i;)r=x(t,e,r)}e[--r]=a,e[--r]=n-t,e[--r]=s-t,e[--r]=i}else-3==o?O=i:-4==o&&(f=i);return r}let Q=[],b=[];for(;l.pos>0;)c(t.start||0,t.bufferStart||0,Q,b,-1,0);let k=null!==(e=t.length)&&void 0!==e?e:Q.length?b[0]+Q[0].length:0;return new p(u[t.topID],Q.reverse(),b.reverse(),k)}(t)}}p.empty=new p(l.none,[],[],0);class d{constructor(t,e){this.buffer=t,this.index=e}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new d(this.buffer,this.index)}}class g{constructor(t,e,r){this.buffer=t,this.length=e,this.set=r}get type(){return l.none}toString(){let t=[];for(let e=0;e0));a=n[a+3]);return o}slice(t,e,r){let i=this.buffer,s=new Uint16Array(e-t),n=0;for(let o=t,a=0;o=e&&re;case 1:return r<=e&&i>e;case 2:return i>e;case 4:return!0}}function P(t,e,r,i){for(var s;t.from==t.to||(r<1?t.from>=e:t.from>e)||(r>-1?t.to<=e:t.to0?o.length:-1;t!=l;t+=e){let l=o[t],u=h[t]+n.from;if($(i,r,u,u+l.length))if(l instanceof g){if(s&c.ExcludeBuffers)continue;let o=l.findChild(0,l.buffer.length,e,r-u,i);if(o>-1)return new v(new k(n,l,t,u),null,o)}else if(s&c.IncludeAnonymous||!l.type.isAnonymous||R(l)){let o;if(!(s&c.IgnoreMounts)&&(o=a.get(l))&&!o.overlay)return new x(o.tree,u,t,n);let h=new x(l,u,t,n);return s&c.IncludeAnonymous||!h.type.isAnonymous?h:h.nextChild(e<0?l.children.length-1:0,e,r,i)}}if(s&c.IncludeAnonymous||!n.type.isAnonymous)return null;if(t=n.index>=0?n.index+e:e<0?-1:n._parent._tree.children.length,n=n._parent,!n)return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(t){return this.nextChild(0,1,t,2)}childBefore(t){return this.nextChild(this._tree.children.length-1,-1,t,-2)}enter(t,e,r=0){let i;if(!(r&c.IgnoreOverlays)&&(i=a.get(this._tree))&&i.overlay){let r=t-this.from;for(let{from:t,to:s}of i.overlay)if((e>0?t<=r:t=r:s>r))return new x(i.tree,i.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,t,e,r)}nextSignificantParent(){let t=this;for(;t.type.isAnonymous&&t._parent;)t=t._parent;return t}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}}function Q(t,e,r,i){let s=t.cursor(),n=[];if(!s.firstChild())return n;if(null!=r)for(let t=!1;!t;)if(t=s.type.is(r),!s.nextSibling())return n;for(;;){if(null!=i&&s.type.is(i))return n;if(s.type.is(e)&&n.push(s.node),!s.nextSibling())return null==i?n:[]}}function b(t,e,r=e.length-1){for(let i=t;r>=0;i=i.parent){if(!i)return!1;if(!i.type.isAnonymous){if(e[r]&&e[r]!=i.name)return!1;r--}}return!0}class k{constructor(t,e,r,i){this.parent=t,this.buffer=e,this.index=r,this.start=i}}class v extends m{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(t,e,r){super(),this.context=t,this._parent=e,this.index=r,this.type=t.buffer.set.types[t.buffer.buffer[r]]}child(t,e,r){let{buffer:i}=this.context,s=i.findChild(this.index+4,i.buffer[this.index+3],t,e-this.context.start,r);return s<0?null:new v(this.context,this,s)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(t){return this.child(1,t,2)}childBefore(t){return this.child(-1,t,-2)}enter(t,e,r=0){if(r&c.ExcludeBuffers)return null;let{buffer:i}=this.context,s=i.findChild(this.index+4,i.buffer[this.index+3],e>0?1:-1,t-this.context.start,e);return s<0?null:new v(this.context,this,s)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(t){return this._parent?null:this.context.parent.nextChild(this.context.index+t,t,0,4)}get nextSibling(){let{buffer:t}=this.context,e=t.buffer[this.index+3];return e<(this._parent?t.buffer[this._parent.index+3]:t.buffer.length)?new v(this.context,this._parent,e):this.externalSibling(1)}get prevSibling(){let{buffer:t}=this.context,e=this._parent?this._parent.index+4:0;return this.index==e?this.externalSibling(-1):new v(this.context,this._parent,t.findChild(e,this.index,-1,0,4))}get tree(){return null}toTree(){let t=[],e=[],{buffer:r}=this.context,i=this.index+4,s=r.buffer[this.index+3];if(s>i){let n=r.buffer[this.index+1];t.push(r.slice(i,s,n)),e.push(0)}return new p(this.type,t,e,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}}function X(t){if(!t.length)return null;let e=0,r=t[0];for(let i=1;ir.from||s.to0){if(this.index-1)for(let i=e+t,s=t<0?-1:r._tree.children.length;i!=s;i+=t){let t=r._tree.children[i];if(this.mode&c.IncludeAnonymous||t instanceof g||!t.type.isAnonymous||R(t))return!1}return!0}move(t,e){if(e&&this.enterChild(t,0,4))return!0;for(;;){if(this.sibling(t))return!0;if(this.atLastNode(t)||!this.parent())return!1}}next(t=!0){return this.move(1,t)}prev(t=!0){return this.move(-1,t)}moveTo(t,e=0){for(;(this.from==this.to||(e<1?this.from>=t:this.from>t)||(e>-1?this.to<=t:this.to=0;){for(let n=t;n;n=n._parent)if(n.index==i){if(i==this.index)return n;e=n,r=s+1;break t}i=this.stack[--s]}for(let t=r;t=0;s--){if(s<0)return b(this._tree,t,i);let n=r[e.buffer[this.stack[s]]];if(!n.isAnonymous){if(t[i]&&t[i]!=n.name)return!1;i--}}return!0}}function R(t){return t.children.some((t=>t instanceof g||!t.type.isAnonymous||R(t)))}const S=new WeakMap;function _(t,e){if(!t.isAnonymous||e instanceof g||e.type!=t)return 1;let r=S.get(e);if(null==r){r=1;for(let i of e.children){if(i.type!=t||!(i instanceof p)){r=1;break}r+=_(t,i)}S.set(e,r)}return r}function E(t,e,r,i,s,n,o,a,h){let l=0;for(let r=i;r=u)break;p+=e}if(l==s+1){if(p>u){let t=r[s];e(t.children,t.positions,0,t.children.length,i[s]+a);continue}O.push(r[s])}else{let e=i[l-1]+r[l-1].length-c;O.push(E(t,r,i,s,l,c,e,null,h))}f.push(c+a-n)}}(e,r,i,s,0),(a||h)(O,f,o)}class q{startParse(t,e,r){return"string"==typeof t&&(t=new T(t)),r=r?r.length?r.map((t=>new n(t.from,t.to))):[new n(0,0)]:[new n(0,t.length)],this.createParse(t,e||[],r)}parse(t,e,r){let i=this.startParse(t,e,r);for(;;){let t=i.advance();if(t)return t}}}class T{constructor(t){this.string=t}get length(){return this.string.length}chunk(t){return this.string.slice(t)}get lineChunks(){return!1}read(t,e){return this.string.slice(t,e)}}new o({perNode:!0});class z{constructor(t,e,r,i,s,n,o,a,h,l=0,u){this.p=t,this.stack=e,this.state=r,this.reducePos=i,this.pos=s,this.score=n,this.buffer=o,this.bufferBase=a,this.curContext=h,this.lookAhead=l,this.parent=u}toString(){return`[${this.stack.filter(((t,e)=>e%3==0)).concat(this.state)}]@${this.pos}${this.score?"!"+this.score:""}`}static start(t,e,r=0){let i=t.parser.context;return new z(t,[],e,r,r,0,[],0,i?new Z(i,i.start):null,0,null)}get context(){return this.curContext?this.curContext.context:null}pushState(t,e){this.stack.push(this.state,e,this.bufferBase+this.buffer.length),this.state=t}reduce(t){var e;let r=t>>19,i=65535&t,{parser:s}=this.p,n=this.reducePos=2e3&&!(null===(e=this.p.parser.nodeSet.types[i])||void 0===e?void 0:e.isAnonymous)&&(h==this.p.lastBigReductionStart?(this.p.bigReductionCount++,this.p.lastBigReductionSize=l):this.p.lastBigReductionSizea;)this.stack.pop();this.reduceContext(i,h)}storeNode(t,e,r,i=4,s=!1){if(0==t&&(!this.stack.length||this.stack[this.stack.length-1]0&&0==t.buffer[i-4]&&t.buffer[i-1]>-1){if(e==r)return;if(t.buffer[i-2]>=e)return void(t.buffer[i-2]=r)}}if(s&&this.pos!=r){let s=this.buffer.length;if(s>0&&0!=this.buffer[s-4]){let t=!1;for(let e=s;e>0&&this.buffer[e-2]>r;e-=4)if(this.buffer[e-1]>=0){t=!0;break}if(t)for(;s>0&&this.buffer[s-2]>r;)this.buffer[s]=this.buffer[s-4],this.buffer[s+1]=this.buffer[s-3],this.buffer[s+2]=this.buffer[s-2],this.buffer[s+3]=this.buffer[s-1],s-=4,i>4&&(i-=4)}this.buffer[s]=t,this.buffer[s+1]=e,this.buffer[s+2]=r,this.buffer[s+3]=i}else this.buffer.push(t,e,r,i)}shift(t,e,r,i){if(131072&t)this.pushState(65535&t,this.pos);else if(262144&t)this.pos=i,this.shiftContext(e,r),e<=this.p.parser.maxNode&&this.buffer.push(e,r,i,4);else{let s=t,{parser:n}=this.p;(i>this.pos||e<=n.maxNode)&&(this.pos=i,n.stateFlag(s,1)||(this.reducePos=i)),this.pushState(s,r),this.shiftContext(e,r),e<=n.maxNode&&this.buffer.push(e,r,i,4)}}apply(t,e,r,i){65536&t?this.reduce(t):this.shift(t,e,r,i)}useNode(t,e){let r=this.p.reused.length-1;(r<0||this.p.reused[r]!=t)&&(this.p.reused.push(t),r++);let i=this.pos;this.reducePos=this.pos=i+t.length,this.pushState(e,i),this.buffer.push(r,i,this.reducePos,-1),this.curContext&&this.updateContext(this.curContext.tracker.reuse(this.curContext.context,t,this,this.p.stream.reset(this.pos-t.length)))}split(){let t=this,e=t.buffer.length;for(;e>0&&t.buffer[e-2]>t.reducePos;)e-=4;let r=t.buffer.slice(e),i=t.bufferBase+e;for(;t&&i==t.bufferBase;)t=t.parent;return new z(this.p,this.stack.slice(),this.state,this.reducePos,this.pos,this.score,r,i,this.curContext,this.lookAhead,t)}recoverByDelete(t,e){let r=t<=this.p.parser.maxNode;r&&this.storeNode(t,this.pos,e,4),this.storeNode(0,this.pos,e,r?8:4),this.pos=this.reducePos=e,this.score-=190}canShift(t){for(let e=new A(this);;){let r=this.p.parser.stateSlot(e.state,4)||this.p.parser.hasAction(e.state,t);if(0==r)return!1;if(!(65536&r))return!0;e.reduce(r)}}recoverByInsert(t){if(this.stack.length>=300)return[];let e=this.p.parser.nextStates(this.state);if(e.length>8||this.stack.length>=120){let r=[];for(let i,s=0;s1&e&&t==i))||r.push(e[t],i)}e=r}let r=[];for(let t=0;t>19,i=65535&e,s=this.stack.length-3*r;if(s<0||t.getGoto(this.stack[s],i,!1)<0){let t=this.findForcedReduction();if(null==t)return!1;e=t}this.storeNode(0,this.pos,this.pos,4,!0),this.score-=100}return this.reducePos=this.pos,this.reduce(e),!0}findForcedReduction(){let{parser:t}=this.p,e=[],r=(i,s)=>{if(!e.includes(i))return e.push(i),t.allActions(i,(e=>{if(393216&e);else if(65536&e){let r=(e>>19)-s;if(r>1){let i=65535&e,s=this.stack.length-3*r;if(s>=0&&t.getGoto(this.stack[s],i,!1)>=0)return r<<19|65536|i}}else{let t=r(e,s+1);if(null!=t)return t}}))};return r(this.state,0)}forceAll(){for(;!this.p.parser.stateFlag(this.state,2);)if(!this.forceReduce()){this.storeNode(0,this.pos,this.pos,4,!0);break}return this}get deadEnd(){if(3!=this.stack.length)return!1;let{parser:t}=this.p;return 65535==t.data[t.stateSlot(this.state,1)]&&!t.stateSlot(this.state,4)}restart(){this.storeNode(0,this.pos,this.pos,4,!0),this.state=this.stack[0],this.stack.length=0}sameState(t){if(this.state!=t.state||this.stack.length!=t.stack.length)return!1;for(let e=0;ethis.lookAhead&&(this.emitLookAhead(),this.lookAhead=t)}close(){this.curContext&&this.curContext.tracker.strict&&this.emitContext(),this.lookAhead>0&&this.emitLookAhead()}}class Z{constructor(t,e){this.tracker=t,this.context=e,this.hash=t.strict?t.hash(e):0}}class A{constructor(t){this.start=t,this.state=t.state,this.stack=t.stack,this.base=this.stack.length}reduce(t){let e=65535&t,r=t>>19;0==r?(this.stack==this.start.stack&&(this.stack=this.stack.slice()),this.stack.push(this.state,0,0),this.base+=3):this.base-=3*(r-1);let i=this.start.p.parser.getGoto(this.stack[this.base-3],e,!0);this.state=i}}class C{constructor(t,e,r){this.stack=t,this.pos=e,this.index=r,this.buffer=t.buffer,0==this.index&&this.maybeNext()}static create(t,e=t.bufferBase+t.buffer.length){return new C(t,e,e-t.bufferBase)}maybeNext(){let t=this.stack.parent;null!=t&&(this.index=this.stack.bufferBase-t.bufferBase,this.stack=t,this.buffer=t.buffer)}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}next(){this.index-=4,this.pos-=4,0==this.index&&this.maybeNext()}fork(){return new C(this.stack,this.pos,this.index)}}function j(t,e=Uint16Array){if("string"!=typeof t)return t;let r=null;for(let i=0,s=0;i=92&&e--,e>=34&&e--;let s=e-32;if(s>=46&&(s-=46,r=!0),n+=s,r)break;n*=46}r?r[s++]=n:r=new e(n)}return r}class N{constructor(){this.start=-1,this.value=-1,this.end=-1,this.extended=-1,this.lookAhead=0,this.mask=0,this.context=0}}const V=new N;class G{constructor(t,e){this.input=t,this.ranges=e,this.chunk="",this.chunkOff=0,this.chunk2="",this.chunk2Pos=0,this.next=-1,this.token=V,this.rangeIndex=0,this.pos=this.chunkPos=e[0].from,this.range=e[0],this.end=e[e.length-1].to,this.readNext()}resolveOffset(t,e){let r=this.range,i=this.rangeIndex,s=this.pos+t;for(;sr.to:s>=r.to;){if(i==this.ranges.length-1)return null;let t=this.ranges[++i];s+=t.from-r.to,r=t}return s}clipPos(t){if(t>=this.range.from&&tt)return Math.max(t,e.from);return this.end}peek(t){let e,r,i=this.chunkOff+t;if(i>=0&&i=this.chunk2Pos&&ei.to&&(this.chunk2=this.chunk2.slice(0,i.to-e)),r=this.chunk2.charCodeAt(0)}}return e>=this.token.lookAhead&&(this.token.lookAhead=e+1),r}acceptToken(t,e=0){let r=e?this.resolveOffset(e,-1):this.pos;if(null==r||r=this.chunk2Pos&&this.posthis.range.to?t.slice(0,this.range.to-this.pos):t,this.chunkPos=this.pos,this.chunkOff=0}}readNext(){return this.chunkOff>=this.chunk.length&&(this.getChunk(),this.chunkOff==this.chunk.length)?this.next=-1:this.next=this.chunk.charCodeAt(this.chunkOff)}advance(t=1){for(this.chunkOff+=t;this.pos+t>=this.range.to;){if(this.rangeIndex==this.ranges.length-1)return this.setDone();t-=this.range.to-this.pos,this.range=this.ranges[++this.rangeIndex],this.pos=this.range.from}return this.pos+=t,this.pos>=this.token.lookAhead&&(this.token.lookAhead=this.pos+1),this.readNext()}setDone(){return this.pos=this.chunkPos=this.end,this.range=this.ranges[this.rangeIndex=this.ranges.length-1],this.chunk="",this.next=-1}reset(t,e){if(e?(this.token=e,e.start=t,e.lookAhead=t+1,e.value=e.extended=-1):this.token=V,this.pos!=t){if(this.pos=t,t==this.end)return this.setDone(),this;for(;t=this.range.to;)this.range=this.ranges[++this.rangeIndex];t>=this.chunkPos&&t=this.chunkPos&&e<=this.chunkPos+this.chunk.length)return this.chunk.slice(t-this.chunkPos,e-this.chunkPos);if(t>=this.chunk2Pos&&e<=this.chunk2Pos+this.chunk2.length)return this.chunk2.slice(t-this.chunk2Pos,e-this.chunk2Pos);if(t>=this.range.from&&e<=this.range.to)return this.input.read(t,e);let r="";for(let i of this.ranges){if(i.from>=e)break;i.to>t&&(r+=this.input.read(Math.max(i.from,t),Math.min(i.to,e)))}return r}}class W{constructor(t,e){this.data=t,this.id=e}token(t,e){let{parser:r}=e.p;!function(t,e,r,i,s,n){let o=0,a=1<0){let r=t[i];if(h.allows(r)&&(-1==e.token.value||e.token.value==r||Y(r,e.token.value,s,n))){e.acceptToken(r);break}}let i=e.next,l=0,u=t[o+2];if(!(e.next<0&&u>l&&65535==t[r+3*u-3])){for(;l>1,n=r+s+(s<<1),a=t[n],h=t[n+1]||65536;if(i=h)){o=t[n+2],e.advance();continue t}l=s+1}}break}o=t[r+3*u-1]}}(this.data,t,e,this.id,r.data,r.tokenPrecTable)}}function U(t,e,r){for(let i,s=e;65535!=(i=t[s]);s++)if(i==r)return s-e;return-1}function Y(t,e,r,i){let s=U(r,i,e);return s<0||U(r,i,t)e)&&!i.type.isError)return r<0?Math.max(0,Math.min(i.to-1,e-25)):Math.min(t.length,Math.max(i.from+1,e+25));if(r<0?i.prevSibling():i.nextSibling())break;if(!i.parent())return r<0?0:t.length}}class F{constructor(t,e){this.fragments=t,this.nodeSet=e,this.i=0,this.fragment=null,this.safeFrom=-1,this.safeTo=-1,this.trees=[],this.start=[],this.index=[],this.nextFragment()}nextFragment(){let t=this.fragment=this.i==this.fragments.length?null:this.fragments[this.i++];if(t){for(this.safeFrom=t.openStart?I(t.tree,t.from+t.offset,1)-t.offset:t.from,this.safeTo=t.openEnd?I(t.tree,t.to+t.offset,-1)-t.offset:t.to;this.trees.length;)this.trees.pop(),this.start.pop(),this.index.pop();this.trees.push(t.tree),this.start.push(-t.offset),this.index.push(0),this.nextStart=this.safeFrom}else this.nextStart=1e9}nodeAt(t){if(tt)return this.nextStart=n,null;if(s instanceof p){if(n==t){if(n=Math.max(this.safeFrom,t)&&(this.trees.push(s),this.start.push(n),this.index.push(0))}else this.index[e]++,this.nextStart=n+s.length}}}class B{constructor(t,e){this.stream=e,this.tokens=[],this.mainToken=null,this.actions=[],this.tokens=t.tokenizers.map((t=>new N))}getActions(t){let e=0,r=null,{parser:i}=t.p,{tokenizers:s}=i,n=i.stateSlot(t.state,3),o=t.curContext?t.curContext.hash:0,a=0;for(let i=0;il.end+25&&(a=Math.max(l.lookAhead,a)),0!=l.value)){let i=e;if(l.extended>-1&&(e=this.addActions(t,l.extended,l.end,e)),e=this.addActions(t,l.value,l.end,e),!h.extend&&(r=l,e>i))break}}for(;this.actions.length>e;)this.actions.pop();return a&&t.setLookAhead(a),r||t.pos!=this.stream.end||(r=new N,r.value=t.p.parser.eofTerm,r.start=r.end=t.pos,e=this.addActions(t,r.value,r.end,e)),this.mainToken=r,this.actions}getMainToken(t){if(this.mainToken)return this.mainToken;let e=new N,{pos:r,p:i}=t;return e.start=r,e.end=Math.min(r+1,i.stream.end),e.value=r==i.stream.end?i.parser.eofTerm:0,e}updateCachedToken(t,e,r){let i=this.stream.clipPos(r.pos);if(e.token(this.stream.reset(i,t),r),t.value>-1){let{parser:e}=r.p;for(let i=0;i=0&&r.p.parser.dialect.allows(s>>1)){1&s?t.extended=s>>1:t.value=s>>1;break}}}else t.value=0,t.end=this.stream.clipPos(i+1)}putAction(t,e,r,i){for(let e=0;e4*t.bufferLength?new F(r,t.nodeSet):null}get parsedPos(){return this.minStackPos}advance(){let t,e,r=this.stacks,i=this.minStackPos,s=this.stacks=[];if(this.bigReductionCount>300&&1==r.length){let[t]=r;for(;t.forceReduce()&&t.stack.length&&t.stack[t.stack.length-2]>=this.lastBigReductionStart;);this.bigReductionCount=this.lastBigReductionSize=0}for(let n=0;ni)s.push(o);else{if(this.advanceStack(o,s,r))continue;{t||(t=[],e=[]),t.push(o);let r=this.tokens.getMainToken(o);e.push(r.value,r.end)}}break}}if(!s.length){let e=t&&function(t){let e=null;for(let r of t){let t=r.p.stoppedAt;(r.pos==r.p.stream.end||null!=t&&r.pos>t)&&r.p.parser.stateFlag(r.state,2)&&(!e||e.scorethis.stoppedAt?t[0]:this.runRecovery(t,e,s);if(r)return D&&console.log("Force-finish "+this.stackID(r)),this.stackToTree(r.forceAll())}if(this.recovering){let t=1==this.recovering?1:3*this.recovering;if(s.length>t)for(s.sort(((t,e)=>e.score-t.score));s.length>t;)s.pop();s.some((t=>t.reducePos>i))&&this.recovering--}else if(s.length>1){t:for(let t=0;t500&&i.buffer.length>500){if(!((e.score-i.score||e.buffer.length-i.buffer.length)>0)){s.splice(t--,1);continue t}s.splice(r--,1)}}}s.length>12&&s.splice(12,s.length-12)}this.minStackPos=s[0].pos;for(let t=1;t ":"";if(null!=this.stoppedAt&&i>this.stoppedAt)return t.forceReduce()?t:null;if(this.fragments){let e=t.curContext&&t.curContext.tracker.strict,r=e?t.curContext.hash:0;for(let a=this.fragments.nodeAt(i);a;){let i=this.parser.nodeSet.types[a.type.id]==a.type?s.getGoto(t.state,a.type.id):-1;if(i>-1&&a.length&&(!e||(a.prop(o.contextHash)||0)==r))return t.useNode(a,i),D&&console.log(n+this.stackID(t)+` (via reuse of ${s.getName(a.type.id)})`),!0;if(!(a instanceof p)||0==a.children.length||a.positions[0]>0)break;let h=a.children[0];if(!(h instanceof p&&0==a.positions[0]))break;a=h}}let a=s.stateSlot(t.state,4);if(a>0)return t.reduce(a),D&&console.log(n+this.stackID(t)+` (via always-reduce ${s.getName(65535&a)})`),!0;if(t.stack.length>=8400)for(;t.stack.length>6e3&&t.forceReduce(););let h=this.tokens.getActions(t);for(let o=0;oi?e.push(f):r.push(f)}return!1}advanceFully(t,e){let r=t.pos;for(;;){if(!this.advanceStack(t,null,null))return!1;if(t.pos>r)return J(t,e),!0}}runRecovery(t,e,r){let i=null,s=!1;for(let n=0;n ":"";if(o.deadEnd){if(s)continue;if(s=!0,o.restart(),D&&console.log(l+this.stackID(o)+" (restarted)"),this.advanceFully(o,r))continue}let u=o.split(),O=l;for(let t=0;u.forceReduce()&&t<10&&(D&&console.log(O+this.stackID(u)+" (via force-reduce)"),!this.advanceFully(u,r));t++)D&&(O=this.stackID(u)+" -> ");for(let t of o.recoverByInsert(a))D&&console.log(l+this.stackID(t)+" (via recover-insert)"),this.advanceFully(t,r);this.stream.end>o.pos?(h==o.pos&&(h++,a=0),o.recoverByDelete(a,h),D&&console.log(l+this.stackID(o)+` (via recover-delete ${this.parser.getName(a)})`),J(o,r)):(!i||i.scoret.topRules[e][1])),s=[];for(let t=0;t=0)n(i,t,e[r++]);else{let s=e[r+-i];for(let o=-i;o>0;o--)n(e[r++],t,s);r++}}}this.nodeSet=new u(e.map(((e,i)=>l.define({name:i>=this.minRepeatTerm?void 0:e,id:i,props:s[i],top:r.indexOf(i)>-1,error:0==i,skipped:t.skippedNodes&&t.skippedNodes.indexOf(i)>-1})))),t.propSources&&(this.nodeSet=this.nodeSet.extend(...t.propSources)),this.strict=!1,this.bufferLength=i;let a=j(t.tokenData);this.context=t.context,this.specializerSpecs=t.specialized||[],this.specialized=new Uint16Array(this.specializerSpecs.length);for(let t=0;t"number"==typeof t?new W(a,t):t)),this.topRules=t.topRules,this.dialects=t.dialects||{},this.dynamicPrecedences=t.dynamicPrecedences||null,this.tokenPrecTable=t.tokenPrec,this.termNames=t.termNames||null,this.maxNode=this.nodeSet.types.length-1,this.dialect=this.parseDialect(),this.top=this.topRules[Object.keys(this.topRules)[0]]}createParse(t,e,r){let i=new M(this,t,e,r);for(let s of this.wrappers)i=s(i,t,e,r);return i}getGoto(t,e,r=!1){let i=this.goto;if(e>=i[0])return-1;for(let s=i[e+1];;){let e=i[s++],n=1&e,o=i[s++];if(n&&r)return o;for(let r=s+(e>>1);s0}validAction(t,e){return!!this.allActions(t,(t=>t==e||null))}allActions(t,e){let r=this.stateSlot(t,4),i=r?e(r):void 0;for(let r=this.stateSlot(t,1);null==i;r+=3){if(65535==this.data[r]){if(1!=this.data[r+1])break;r=tt(this.data,r+2)}i=e(tt(this.data,r+1))}return i}nextStates(t){let e=[];for(let r=this.stateSlot(t,1);;r+=3){if(65535==this.data[r]){if(1!=this.data[r+1])break;r=tt(this.data,r+2)}if(!(1&this.data[r+2])){let t=this.data[r+1];e.some(((e,r)=>1&r&&e==t))||e.push(this.data[r],t)}}return e}configure(t){let e=Object.assign(Object.create(H.prototype),this);if(t.props&&(e.nodeSet=this.nodeSet.extend(...t.props)),t.top){let r=this.topRules[t.top];if(!r)throw new RangeError(`Invalid top rule name ${t.top}`);e.top=r}return t.tokenizers&&(e.tokenizers=this.tokenizers.map((e=>{let r=t.tokenizers.find((t=>t.from==e));return r?r.to:e}))),t.specializers&&(e.specializers=this.specializers.slice(),e.specializerSpecs=this.specializerSpecs.map(((r,i)=>{let s=t.specializers.find((t=>t.from==r.external));if(!s)return r;let n=Object.assign(Object.assign({},r),{external:s.to});return e.specializers[i]=et(n),n}))),t.contextTracker&&(e.context=t.contextTracker),t.dialect&&(e.dialect=this.parseDialect(t.dialect)),null!=t.strict&&(e.strict=t.strict),t.wrap&&(e.wrappers=e.wrappers.concat(t.wrap)),null!=t.bufferLength&&(e.bufferLength=t.bufferLength),e}hasWrappers(){return this.wrappers.length>0}getName(t){return this.termNames?this.termNames[t]:String(t<=this.maxNode&&this.nodeSet.types[t].name||t)}get eofTerm(){return this.maxNode+1}get topNode(){return this.nodeSet.types[this.top[1]]}dynamicPrecedence(t){let e=this.dynamicPrecedences;return null==e?0:e[t]||0}parseDialect(t){let e=Object.keys(this.dialects),r=e.map((()=>!1));if(t)for(let i of t.split(" ")){let t=e.indexOf(i);t>=0&&(r[t]=!0)}let i=null;for(let t=0;tt.external(r,i)<<1|e}return t.get}const rt={json:1,logfmt:2,unpack:3,pattern:4,regexp:5,label_format:7,line_format:8,label_replace:9,vector:10,offset:11,bool:12,on:13,ignoring:14,group_left:15,group_right:16,unwrap:6,decolorize:17,drop:18,keep:19},it={by:20,without:21,and:22,or:23,unless:24,sum:25,avg:26,count:27,max:28,min:29,stddev:30,stdvar:31,bottomk:32,topk:33,sort:34,sort_desc:35},st={__proto__:null,ip:295,count_over_time:301,rate:303,rate_counter:305,bytes_over_time:307,bytes_rate:309,avg_over_time:311,sum_over_time:313,min_over_time:315,max_over_time:317,stddev_over_time:319,stdvar_over_time:321,quantile_over_time:323,first_over_time:325,last_over_time:327,absent_over_time:329,bytes:335,duration:337,duration_seconds:339},nt=H.deserialize({version:14,states:"EtOYQPOOO#cQPO'#DUOOQO'#ER'#ERO#hQPO'#ERO$}QPO'#DTOYQPO'#DTOOQO'#Ed'#EdO%[QPO'#EcOOQO'#FP'#FPO%aQPO'#FOQ%lQPOOO&mQPO'#F]O&rQPO'#F^OOQO'#Eb'#EbOOQO'#DS'#DSOOQO'#Ee'#EeOOQO'#Ef'#EfOOQO'#Eg'#EgOOQO'#Eh'#EhOOQO'#Ei'#EiOOQO'#Ej'#EjOOQO'#Ek'#EkOOQO'#El'#ElOOQO'#Em'#EmOOQO'#En'#EnOOQO'#Eo'#EoOOQO'#Ep'#EpOOQO'#Eq'#EqOOQO'#Er'#ErOOQO'#Es'#EsO&wQPO'#DWOOQO'#DV'#DVO'VQPO,59pOOQO,5:m,5:mOOQO'#Dc'#DcO'_QPO'#DbO'gQPO'#DaO)lQPO'#D`O*{QPO'#D`OOQO'#D_'#D_O+sQPO,59oO-}QPO,59oO.UQPO,5:|O.]QPO,5:}O.hQPO'#E|O0sQPO,5;jO0zQPO,5;jO1PQPO,5;lO1PQPO,5;lO1PQPO,5;lO1PQPO,5;lO1PQPO,5;lO1PQPO,5;lOYQPO,5;wO3cQPO,5;xO3hQPO,59rO#cQPO,59qOOQO1G/[1G/[OOQO'#Dh'#DhO3mQPO,59|O5^QPO,59|OOQO'#Di'#DiO5cQPO,59{OOQO,59{,59{O5kQPO'#DWO6YQPO'#DlO8PQPO'#DoO9sQPO'#DoOOQO'#Do'#DoOOQO'#Dv'#DvOOQO'#Dt'#DtO+kQPO'#DtO9xQPO,59zO;iQPO'#EVO;nQPO'#EWOOQO'#EZ'#EZO;sQPO'#E[O;xQPO'#E_OOQO,59z,59zOOQO,59y,59yOOQO1G/Z1G/ZOOQO1G0h1G0hO;}QPO'#EtO.`QPO'#EtOUQPO'#FSO@dQPO'#FRO@nQPO'#FROYQPO1G1WOYQPO1G1WOYQPO1G1WOYQPO1G1WOYQPO1G1WOYQPO1G1WO@xQPO1G1cOAPQPO1G1dOOQO1G/^1G/^OOQO1G/]1G/]O5cQPO1G/hOAUQPO1G/hOAZQPO'#DjOBzQPO'#DjOOQO1G/g1G/gOCbQPO,59rOCPQPO,5:cOOQO'#Dm'#DmOClQPO,5:WOEcQPO'#DrOOQO'#Dq'#DqOGVQPO,5:_OHvQPO,5:[OOQO,5:Z,5:ZOJgQPO,5:`O+kQPO,5:`O+kQPO,5:`OOQO,5:q,5:qOJuQPO'#EYOOQO'#EX'#EXOJzQPO,5:rOLkQPO'#E^OOQO'#E^'#E^OOQO'#E]'#E]ONbQPO,5:vO!!RQPO'#EaOOQO'#Ea'#EaOOQO'#E`'#E`O!#xQPO,5:yO!%iQPO'#D`O;}QPO,5;`O!%pQPO'#EuO!%uQPO,5;`O!%}QPO,5;`O!&[QPO,5;`O!&iQPO,5;`O!&nQPO7+&TO.`QPO7+&TOOQO'#E}'#E}O!(OQPO1G1SOOQO1G1S1G1SOYQPO7+&pO!(WQPO7+&pO!)hQPO7+&pO!)oQPO7+&pO!)vQQO'#FTOOQO,5;n,5;nO!,UQPO,5;mO!,]QPO,5;mO!-nQPO7+&rO!-uQPO7+&rOOQO7+&r7+&rO!.SQPO7+&rO!.ZQPO7+&rO!/`QPO7+&rO!/pQPO7+&}OOQO7+'O7+'OOOQO7+%S7+%SO!/uQPO7+%SO5cQPO,5:UO!/zQPO,5:UO!0PQPO1G/{OOQO1G/}1G/}OOQO1G0U1G0UOOQO1G0W1G0WOOQO,5:X,5:XO!0UQPO1G/yO!1uQPO,5:^O!1zQPO,5:]OOQO1G/z1G/zO!2PQPO1G/zO!3pQPO,5:tO;nQPO,5:sO;sQPO,5:wO;xQPO,5:zO!3xQPO,5;cO!%uQPO1G0zO!4WQPO1G0zO!4`QPO,5;aO+kQPO,5;cO!4eQPO1G0zO!4oQPO'#EvO!4tQPO1G0zO!4eQPO1G0zO!4|QPO1G0zO!5ZQPO1G0zO!%xQPO1G0zOOQO1G0z1G0zOOQO<mAN>mO!=uQPO<SQPOLD+ZOOQOAN?oAN?oOOQO,5:r,5:rO!>XQPO!$'NuO!>^QPO!)9DaO!>cQPO!.K9{OOQO!4//g!4//gO;nQPO'#EWO!>hQPO'#D`O!?`QPO,59oO!@fQPO'#DTOYQPO1G1WOYQPO1G1WOYQPO1G1WOYQPO1G1WOYQPO1G1WOYQPO1G1WO1PQPO,5;lO1PQPO,5;lO1PQPO,5;lO1PQPO,5;lO1PQPO,5;lO1PQPO,5;lO!AqQPO7+&rO!AxQPO7+&rO!BVQPO7+&rO!C_QPO7+&rO!CfQPO7+&rO!B^QPO'#FQ",stateData:"!Cs~O$TOStOS~OXZOY[OiWOjWOkWOlWOmWOnWOoWOpWOqWOrWOsWO!vQO!wRO!xRO$UPO$YTO$[_O$]`O$^aO$_bO$`cO$adO$beO$cfO$dgO$ehO$fiO$gjO$hkO$ilO$jmO~O{nO~O!vqO~O!OrO!QrO!WrO!XrO!YrO!ZrOfwXgwXhwX!lwX!nwX!owX!pwX!qwX!wwX!xwX#{wX#|wX#}wX$OwX~O!_vO$RwX$ZwX~P#mO$Y{O~Od|Oe|O$Y}O~Of!QOg!POh!QO!O!UO!l!UO!n!UO!o!UO!p!UO!q!UO!w!RO!x!RO#{!SO#|!SO#}!SO$O!TO~O$Y!VO~O$Y!WO~O|!XO!O!XO!P!XO!Q!XO~O$V!YO$W!ZO~O}!]O$X!_O~Og!`Of!TXh!TX!O!TX!Q!TX!W!TX!X!TX!Y!TX!Z!TX!_!TX!l!TX!n!TX!o!TX!p!TX!q!TX!w!TX!x!TX#{!TX#|!TX#}!TX$O!TX$R!TX$Z!TX$k!TX$V!TX~O!OrO!QrO!WrO!XrO!YrO!ZrO~Of!SXg!SXh!SX!_!SX!l!SX!n!SX!o!SX!p!SX!q!SX!w!SX!x!SX#{!SX#|!SX#}!SX$O!SX$R!SX$Z!SX$k!SX$V!SX~P)WOP!dOQ!cOR!fOS!eOT!eOV!lOW!kOa!mOb!nOc!oO{!bO$Y!iO~O!_vOfwagwahwa!lwa!nwa!owa!pwa!qwa!wwa!xwa#{wa#|wa#}wa$Owa$Rwa$Zwa~P)WOfvXgvXhvX!OvX!lvX!nvX!ovX!pvX!qvX!wvX!xvX#{vX#|vX#}vX$OvX~O$Z!rO~P,|O$Z!sO~P,|O!v!wO$UPO$Y!uO~O$Y!xO~OXZOY[OiWOjWOkWOlWOmWOnWOoWOpWOqWOrWOsWO!wRO!xRO$UPO$YTO$[_O$]`O$^aO$_bO$`cO$adO$beO$cfO$dgO$ehO$fiO$gjO$hkO$ilO$jmO~O!v!yO~P.mO$Y!{O~O[#OO]!|O^!|OX#uPY#uPi#uPj#uPk#uPl#uPm#uPn#uPo#uPp#uPq#uPr#uPs#uP!v#uP!w#uP!x#uP$U#uP$Y#uP$[#uP$]#uP$^#uP$_#uP$`#uP$a#uP$b#uP$c#uP$d#uP$e#uP$f#uP$g#uP$h#uP$i#uP$j#uP~O!v#WO~O}#XO~Og#ZOf!Uah!Ua!O!Ua!Q!Ua!W!Ua!X!Ua!Y!Ua!Z!Ua!_!Ua!l!Ua!n!Ua!o!Ua!p!Ua!q!Ua!w!Ua!x!Ua#{!Ua#|!Ua#}!Ua$O!Ua$R!Ua$Z!Ua$k!Ua$V!Ua~O$Y#[O~O}#]O$X!_O~O|#`O!O#`O!P!XO!Q!XO!l#aO!n#aO!o#aO!p#aO!q#aO~O{#dO!b#bOf!`Xg!`Xh!`X!O!`X!Q!`X!W!`X!X!`X!Y!`X!Z!`X!_!`X!l!`X!n!`X!o!`X!p!`X!q!`X!w!`X!x!`X#{!`X#|!`X#}!`X$O!`X$R!`X$Z!`X$k!`X$V!`X~O{#dOf!cXg!cXh!cX!O!cX!Q!cX!W!cX!X!cX!Y!cX!Z!cX!_!cX!l!cX!n!cX!o!cX!p!cX!q!cX!w!cX!x!cX#{!cX#|!cX#}!cX$O!cX$R!cX$Z!cX$k!cX$V!cX~O}#hO~Of#jOg#kO$V#jOh!Sa!O!Sa!Q!Sa!W!Sa!X!Sa!Y!Sa!Z!Sa!_!Sa!l!Sa!n!Sa!o!Sa!p!Sa!q!Sa!w!Sa!x!Sa#{!Sa#|!Sa#}!Sa$O!Sa$R!Sa$Z!Sa$k!Sa~O}#lO~O{#mO~O{#pO~O{#tO~O!_#xO$k#zO~P)WO$Z$PO~O$V$QO~O{$RO$Z$TO~Of!uXg!uXh!uX!O!uX!l!uX!n!uX!o!uX!p!uX!q!uX!w!uX!x!uX#{!uX#|!uX#}!uX$O!uX$Z!uX~O$V$UO~PZO]!|O^!|O~P>ZO$V$dO~P,|O$Z$eO~O}$gO~Og$hOf!^Xh!^X!O!^X!Q!^X!W!^X!X!^X!Y!^X!Z!^X!_!^X!l!^X!n!^X!o!^X!p!^X!q!^X!w!^X!x!^X#{!^X#|!^X#}!^X$O!^X$R!^X$Z!^X$k!^X$V!^X~O$Y$iO~O!m$kO!s$lO!vQO!wRO!xRO~O}#XO$X!_O~PCPO{#dO!b$nOf!`ag!`ah!`a!O!`a!Q!`a!W!`a!X!`a!Y!`a!Z!`a!_!`a!l!`a!n!`a!o!`a!p!`a!q!`a!w!`a!x!`a#{!`a#|!`a#}!`a$O!`a$R!`a$Z!`a$k!`a$V!`a~O|$pOf!fXg!fXh!fX!O!fX!Q!fX!W!fX!X!fX!Y!fX!Z!fX!_!fX!l!fX!n!fX!o!fX!p!fX!q!fX!w!fX!x!fX#{!fX#|!fX#}!fX$O!fX$R!fX$V!fX$Z!fX$k!fX~O$V$qOf!gag!gah!ga!O!ga!Q!ga!W!ga!X!ga!Y!ga!Z!ga!_!ga!l!ga!n!ga!o!ga!p!ga!q!ga!w!ga!x!ga#{!ga#|!ga#}!ga$O!ga$R!ga$Z!ga$k!ga~O$V$qOf!dag!dah!da!O!da!Q!da!W!da!X!da!Y!da!Z!da!_!da!l!da!n!da!o!da!p!da!q!da!w!da!x!da#{!da#|!da#}!da$O!da$R!da$Z!da$k!da~Of#jOg#kO$V#jO$Z$rO~O|$tO~O$V$uOf!zag!zah!za!O!za!Q!za!W!za!X!za!Y!za!Z!za!_!za!l!za!n!za!o!za!p!za!q!za!w!za!x!za#{!za#|!za#}!za$O!za$R!za$Z!za$k!za~O|!XO!O!XO!P!XO!Q!XOf#QXg#QXh#QX!W#QX!X#QX!Y#QX!Z#QX!_#QX!l#QX!n#QX!o#QX!p#QX!q#QX!w#QX!x#QX#{#QX#|#QX#}#QX$O#QX$R#QX$V#QX$Z#QX$k#QX~O$V$vOf#Oag#Oah#Oa!O#Oa!Q#Oa!W#Oa!X#Oa!Y#Oa!Z#Oa!_#Oa!l#Oa!n#Oa!o#Oa!p#Oa!q#Oa!w#Oa!x#Oa#{#Oa#|#Oa#}#Oa$O#Oa$R#Oa$Z#Oa$k#Oa~O|!XO!O!XO!P!XO!Q!XOf#TXg#TXh#TX!W#TX!X#TX!Y#TX!Z#TX!_#TX!l#TX!n#TX!o#TX!p#TX!q#TX!w#TX!x#TX#{#TX#|#TX#}#TX$O#TX$R#TX$V#TX$Z#TX$k#TX~O$V$wOf#Rag#Rah#Ra!O#Ra!Q#Ra!W#Ra!X#Ra!Y#Ra!Z#Ra!_#Ra!l#Ra!n#Ra!o#Ra!p#Ra!q#Ra!w#Ra!x#Ra#{#Ra#|#Ra#}#Ra$O#Ra$R#Ra$Z#Ra$k#Ra~OU$xO~P*{O!m${O~O!_$|O$k#zO~OZ%OO!_#xO$Z#ha~P)WO!_#xO$Z%TO$k#zO~P)WO$Z%UO~Od|Oe|Of#Vqg#Vqh#Vq!O#Vq!l#Vq!n#Vq!o#Vq!p#Vq!q#Vq!w#Vq!x#Vq#{#Vq#|#Vq#}#Vq$O#Vq$R#Vq$Z#Vq$V#Vq~O$V%XO$Z%YO~Od|Oe|Of#rqg#rqh#rq!O#rq!l#rq!n#rq!o#rq!p#rq!q#rq!w#rq!x#rq#{#rq#|#rq#}#rq$O#rq$R#rq$Z#rq$V#rq~O$V%]O~P(t=>rt[t.toLowerCase()]||-1)(t)<<1},{term:43,get:(t,e)=>(t=>it[t.toLowerCase()]||-1)(t)<<1|1},{term:43,get:t=>st[t]||-1}],tokenPrec:0}),ot=1,at=2,ht=40,lt=42,ut=43,Ot=44,ft=45,ct=46,pt=47,dt=48,gt=52,$t=54,Pt=55,mt=56,xt=57,Qt=58,bt=60,kt=70,vt=74,Xt=75,wt=76,yt=77,Rt=78,St=81,_t=84,Et=98},2533:t=>{t.exports=JSON.parse('{"id":"grafana-lokiexplore-app"}')}},g={};function $(t){var e=g[t];if(void 0!==e)return e.exports;var r=g[t]={exports:{}};return d[t].call(r.exports,r,r.exports,$),r.exports}return $.m=d,$.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return $.d(e,{a:e}),e},f=Object.getPrototypeOf?t=>Object.getPrototypeOf(t):t=>t.__proto__,$.t=function(t,e){if(1&e&&(t=this(t)),8&e)return t;if("object"==typeof t&&t){if(4&e&&t.__esModule)return t;if(16&e&&"function"==typeof t.then)return t}var r=Object.create(null);$.r(r);var i={};O=O||[null,f({}),f([]),f(f)];for(var s=2&e&&t;"object"==typeof s&&!~O.indexOf(s);s=f(s))Object.getOwnPropertyNames(s).forEach((e=>i[e]=()=>t[e]));return i.default=()=>t,$.d(r,i),r},$.d=(t,e)=>{for(var r in e)$.o(e,r)&&!$.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},$.f={},$.e=t=>Promise.all(Object.keys($.f).reduce(((e,r)=>($.f[r](t,e),e)),[])),$.u=t=>t+".js",$.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),$.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),c={},p="grafana-lokiexplore-app:",$.l=(t,e,r,i)=>{if(c[t])c[t].push(e);else{var s,n;if(void 0!==r)for(var o=document.getElementsByTagName("script"),a=0;a{s.onerror=s.onload=null,clearTimeout(u);var i=c[t];if(delete c[t],s.parentNode&&s.parentNode.removeChild(s),i&&i.forEach((t=>t(r))),e)return e(r)},u=setTimeout(l.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=l.bind(null,s.onerror),s.onload=l.bind(null,s.onload),n&&document.head.appendChild(s)}},$.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},$.p="public/plugins/grafana-lokiexplore-app/",(()=>{$.b=document.baseURI||self.location.href;var t={231:0};$.f.j=(e,r)=>{var i=$.o(t,e)?t[e]:void 0;if(0!==i)if(i)r.push(i[2]);else{var s=new Promise(((r,s)=>i=t[e]=[r,s]));r.push(i[2]=s);var n=$.p+$.u(e),o=new Error;$.l(n,(r=>{if($.o(t,e)&&(0!==(i=t[e])&&(t[e]=void 0),i)){var s=r&&("load"===r.type?"missing":r.type),n=r&&r.target&&r.target.src;o.message="Loading chunk "+e+" failed.\n("+s+": "+n+")",o.name="ChunkLoadError",o.type=s,o.request=n,i[1](o)}}),"chunk-"+e,e)}};var e=(e,r)=>{var i,s,[n,o,a]=r,h=0;if(n.some((e=>0!==t[e]))){for(i in o)$.o(o,i)&&($.m[i]=o[i]);a&&a($)}for(e&&e(r);h (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"grafana-lokiexplore-app:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","import { LinkButton } from '@grafana/ui';\nimport { OpenInLogsDrilldownButtonProps } from 'Components/OpenInLogsDrilldownButton/types';\nimport React, { lazy, Suspense } from 'react';\nconst OpenInLogsDrilldownButton = lazy(() => import('Components/OpenInLogsDrilldownButton/OpenInLogsDrilldownButton'));\n\nfunction SuspendedOpenInLogsDrilldownButton(props: OpenInLogsDrilldownButtonProps) {\n return (\n \n Open in Logs Drilldown\n \n }\n >\n \n \n );\n}\n\nexport const exposedComponents = [\n {\n id: `grafana-lokiexplore-app/open-in-explore-logs-button/v1`,\n title: 'Open in Logs Drilldown button',\n description: 'A button that opens a logs view in the Logs Drilldown app.',\n component: SuspendedOpenInLogsDrilldownButton,\n },\n];\n","import { lazy } from 'react';\nimport { AppPlugin } from '@grafana/data';\nimport { linkConfigs } from 'services/extensions/links';\nimport { exposedComponents } from 'services/extensions/exposedComponents';\n\n// Anything imported in this file is included in the main bundle which is pre-loaded in Grafana\n// Don't add imports to this file without lazy loading\n// Link extensions are the exception as they must be included in the main bundle in order to work in core Grafana\nconst App = lazy(async () => {\n const { wasmSupported } = await import('services/sorting');\n\n const { default: initRuntimeDs } = await import('services/datasource');\n const { default: initChangepoint } = await import('@bsull/augurs/changepoint');\n const { default: initOutlier } = await import('@bsull/augurs/outlier');\n\n initRuntimeDs();\n\n if (wasmSupported()) {\n await Promise.all([initChangepoint(), initOutlier()]);\n }\n\n return import('Components/App');\n});\n\nconst AppConfig = lazy(async () => {\n return await import('./Components/AppConfig/AppConfig');\n});\n\nexport const plugin = new AppPlugin<{}>().setRootPage(App).addConfigPage({\n title: 'Configuration',\n icon: 'cog',\n body: AppConfig,\n id: 'configuration',\n});\n\nfor (const linkConfig of linkConfigs) {\n plugin.addLink(linkConfig);\n}\n\nfor (const exposedComponentConfig of exposedComponents) {\n plugin.exposeComponent(exposedComponentConfig);\n}\n","// Warning: This file (and any imports) are included in the main bundle with Grafana in order to provide link extension support in Grafana core, in an effort to keep Grafana loading quickly, please do not add any unnecessary imports to this file and run the bundle analyzer before committing any changes!\nimport { PluginExtensionLinkConfig, PluginExtensionPanelContext, PluginExtensionPoints } from '@grafana/data';\n\nimport {\n addAdHocFilterUserInputPrefix,\n AdHocFieldValue,\n AppliedPattern,\n EMPTY_VARIABLE_VALUE,\n LEVEL_VARIABLE_VALUE,\n SERVICE_NAME,\n stripAdHocFilterUserInputPrefix,\n VAR_DATASOURCE,\n VAR_FIELDS,\n VAR_LABELS,\n VAR_LEVELS,\n VAR_LINE_FILTERS,\n VAR_METADATA,\n VAR_PATTERNS,\n} from 'services/variables';\nimport pluginJson from '../../plugin.json';\nimport { getMatcherFromQuery } from '../logqlMatchers';\nimport { LokiQuery } from '../lokiQuery';\nimport { LabelType } from '../fieldsTypes';\n\nimport { isOperatorInclusive } from '../operatorHelpers';\nimport { PatternFilterOp } from '../filterTypes';\nimport { renderPatternFilters } from '../renderPatternFilters';\n\nconst PRODUCT_NAME = 'Grafana Logs Drilldown';\nconst title = `Open in ${PRODUCT_NAME}`;\nconst description = `Open current query in the ${PRODUCT_NAME} view`;\nconst icon = 'gf-logs';\n\nexport const ExtensionPoints = {\n MetricInvestigation: 'grafana-lokiexplore-app/investigation/v1',\n} as const;\n\nexport type LinkConfigs = Array<\n {\n targets: string | string[];\n // eslint-disable-next-line deprecation/deprecation\n } & Omit, 'type' | 'extensionPointId'>\n>;\n\n// `plugin.addLink` requires these types; unfortunately, the correct `PluginExtensionAddedLinkConfig` type is not exported with 11.2.x\n// TODO: fix this type when we move to `@grafana/data` 11.3.x\nexport const linkConfigs: LinkConfigs = [\n {\n targets: PluginExtensionPoints.DashboardPanelMenu,\n title,\n description,\n icon,\n path: createAppUrl(),\n configure: contextToLink,\n },\n {\n targets: PluginExtensionPoints.ExploreToolbarAction,\n title,\n description,\n icon,\n path: createAppUrl(),\n configure: contextToLink,\n },\n];\n\nfunction stringifyValues(value?: string): string {\n if (!value) {\n return EMPTY_VARIABLE_VALUE;\n }\n return value;\n}\n\n// Why are there twice as many escape chars in the url as expected?\nexport function replaceEscapeChars(value?: string): string | undefined {\n return value?.replace(/\\\\\\\\/g, '\\\\');\n}\n\nexport function stringifyAdHocValues(value?: string): string {\n if (!value) {\n return EMPTY_VARIABLE_VALUE;\n }\n\n // All label values from explore are already escaped, so we mark them as custom values to prevent them from getting escaped again when rendering the LogQL\n return addAdHocFilterUserInputPrefix(replaceEscapeChars(value));\n}\n\nexport function stringifyAdHocValueLabels(value?: string): string {\n if (!value) {\n return EMPTY_VARIABLE_VALUE;\n }\n\n return escapeURLDelimiters(replaceEscapeChars(value));\n}\n\nfunction contextToLink(context?: T) {\n if (!context) {\n return undefined;\n }\n const lokiQuery = context.targets.find((target) => target.datasource?.type === 'loki') as LokiQuery | undefined;\n if (!lokiQuery || !lokiQuery.datasource?.uid) {\n return undefined;\n }\n\n const expr = lokiQuery.expr;\n const { labelFilters, lineFilters, fields, patternFilters } = getMatcherFromQuery(expr, context, lokiQuery);\n const labelSelector = labelFilters.find((selector) => isOperatorInclusive(selector.operator));\n\n // Require at least one inclusive operator to run a valid Loki query\n if (!labelSelector) {\n return undefined;\n }\n\n // If there are a bunch of values for the same field, the value slug can get really long, let's just use the first one in the URL\n const urlLabelValue = labelSelector.value.split('|')[0];\n const labelValue = replaceSlash(urlLabelValue);\n let labelName = labelSelector.key === SERVICE_NAME ? 'service' : labelSelector.key;\n // sort `primary label` first\n labelFilters.sort((a) => (a.key === labelName ? -1 : 1));\n\n let params = setUrlParameter(UrlParameters.DatasourceId, lokiQuery.datasource?.uid, new URLSearchParams());\n params = setUrlParameter(UrlParameters.TimeRangeFrom, context.timeRange.from.valueOf().toString(), params);\n params = setUrlParameter(UrlParameters.TimeRangeTo, context.timeRange.to.valueOf().toString(), params);\n\n for (const labelFilter of labelFilters) {\n // skip non-indexed filters for now\n if (labelFilter.type !== LabelType.Indexed) {\n continue;\n }\n\n const labelsAdHocFilterURLString = `${labelFilter.key}|${labelFilter.operator}|${escapeURLDelimiters(\n stringifyAdHocValues(labelFilter.value)\n )},${escapeURLDelimiters(replaceEscapeChars(labelFilter.value))}`;\n\n params = appendUrlParameter(UrlParameters.Labels, labelsAdHocFilterURLString, params);\n }\n\n if (lineFilters) {\n for (const lineFilter of lineFilters) {\n params = appendUrlParameter(\n UrlParameters.LineFilters,\n `${lineFilter.key}|${escapeURLDelimiters(lineFilter.operator)}|${escapeURLDelimiters(\n stringifyValues(lineFilter.value)\n )}`,\n params\n );\n }\n }\n if (fields?.length) {\n for (const field of fields) {\n if (field.type === LabelType.StructuredMetadata) {\n if (field.key === LEVEL_VARIABLE_VALUE) {\n params = appendUrlParameter(\n UrlParameters.Levels,\n `${field.key}|${field.operator}|${escapeURLDelimiters(stringifyValues(field.value))}`,\n params\n );\n } else {\n params = appendUrlParameter(\n UrlParameters.Metadata,\n `${field.key}|${field.operator}|${escapeURLDelimiters(\n stringifyAdHocValues(field.value)\n )},${escapeURLDelimiters(replaceEscapeChars(field.value))}`,\n params\n );\n }\n } else {\n const fieldValue: AdHocFieldValue = {\n value: field.value,\n parser: field.parser,\n };\n\n const adHocFilterURLString = `${field.key}|${field.operator}|${escapeURLDelimiters(\n stringifyAdHocValues(JSON.stringify(fieldValue))\n )},${stringifyAdHocValueLabels(fieldValue.value)}`;\n\n params = appendUrlParameter(UrlParameters.Fields, adHocFilterURLString, params);\n }\n }\n }\n if (patternFilters?.length) {\n const patterns: AppliedPattern[] = [];\n\n for (const field of patternFilters) {\n patterns.push({\n type: field.operator === PatternFilterOp.match ? 'include' : 'exclude',\n pattern: stringifyValues(field.value),\n });\n }\n\n let patternsString = renderPatternFilters(patterns);\n\n params = appendUrlParameter(UrlParameters.Patterns, JSON.stringify(patterns), params);\n params = appendUrlParameter(UrlParameters.PatternsVariable, patternsString, params);\n }\n\n return {\n path: createAppUrl(`/explore/${labelName}/${labelValue}/logs`, params),\n };\n}\n\nexport function createAppUrl(path = '/explore', urlParams?: URLSearchParams): string {\n return `/a/${pluginJson.id}${path}${urlParams ? `?${urlParams.toString()}` : ''}`;\n}\n\nexport const UrlParameters = {\n DatasourceId: `var-${VAR_DATASOURCE}`,\n TimeRangeFrom: 'from',\n TimeRangeTo: 'to',\n Labels: `var-${VAR_LABELS}`,\n Fields: `var-${VAR_FIELDS}`,\n Metadata: `var-${VAR_METADATA}`,\n Levels: `var-${VAR_LEVELS}`,\n LineFilters: `var-${VAR_LINE_FILTERS}`,\n Patterns: VAR_PATTERNS,\n PatternsVariable: `var-${VAR_PATTERNS}`,\n} as const;\nexport type UrlParameterType = (typeof UrlParameters)[keyof typeof UrlParameters];\n\nexport function setUrlParameter(key: UrlParameterType, value: string, initalParams?: URLSearchParams): URLSearchParams {\n const searchParams = new URLSearchParams(initalParams?.toString() ?? location.search);\n searchParams.set(key, value);\n\n return searchParams;\n}\n\nexport function appendUrlParameter(\n key: UrlParameterType,\n value: string,\n initalParams?: URLSearchParams\n): URLSearchParams {\n const searchParams = new URLSearchParams(initalParams?.toString() ?? location.search);\n searchParams.append(key, value);\n\n return searchParams;\n}\n\nexport function replaceSlash(parameter: string): string {\n return (\n stripAdHocFilterUserInputPrefix(parameter)\n // back-slash is converted to forward-slash in the URL, replace that char\n .replace(/\\//g, '-')\n .replace(/\\\\/g, '-')\n );\n}\n\n// Manually copied over from @grafana/scenes so we don't need to import scenes to build links\nfunction escapeUrlCommaDelimiters(value: string | undefined): string {\n if (value === null || value === undefined) {\n return '';\n }\n\n // Replace the comma due to using it as a value/label separator\n return /,/g[Symbol.replace](value, '__gfc__');\n}\n\nexport function escapeUrlPipeDelimiters(value: string | undefined): string {\n if (value === null || value === undefined) {\n return '';\n }\n\n // Replace the pipe due to using it as a filter separator\n return (value = /\\|/g[Symbol.replace](value, '__gfp__'));\n}\n\nexport function escapeURLDelimiters(value: string | undefined): string {\n return escapeUrlCommaDelimiters(escapeUrlPipeDelimiters(value));\n}\n","// copied from public/app/plugins/datasource/loki/types.ts\nexport enum LabelType {\n Indexed = 'I',\n StructuredMetadata = 'S',\n Parsed = 'P',\n}\n","// Warning: This file (and any imports) are included in the main bundle with Grafana in order to provide link extension support in Grafana core, in an effort to keep Grafana loading quickly, please do not add any unnecessary imports to this file and run the bundle analyzer before committing any changes!\n\nimport { LabelType } from './fieldsTypes';\nimport { ParserType } from './variables';\n\nexport type FilterOpType = LabelFilterOp | NumericFilterOp;\nexport enum LabelFilterOp {\n Equal = '=',\n NotEqual = '!=',\n RegexEqual = '=~',\n RegexNotEqual = '!~',\n}\n\nexport enum NumericFilterOp {\n gt = '>',\n lt = '<',\n gte = '>=',\n lte = '<=',\n}\nexport const FilterOp = { ...LabelFilterOp, ...NumericFilterOp };\n\nexport type IndexedLabelFilter = {\n key: string;\n operator: FilterOpType;\n value: string;\n type?: LabelType;\n};\n\nexport type FieldFilter = {\n key: string;\n operator: FilterOpType;\n value: string;\n type?: LabelType;\n parser?: ParserType;\n};\n\nexport type LineFilterType = {\n key: string;\n operator: LineFilterOp;\n value: string;\n};\n\nexport type PatternFilterType = {\n operator: PatternFilterOp;\n value: string;\n};\n\nexport enum LineFilterOp {\n match = '|=',\n negativeMatch = `!=`,\n regex = '|~',\n negativeRegex = `!~`,\n}\n\nexport enum PatternFilterOp {\n match = '|>',\n negativeMatch = '!>',\n}\n\nexport enum LineFilterCaseSensitive {\n caseSensitive = 'caseSensitive',\n caseInsensitive = 'caseInsensitive',\n}\n","import { LogContext } from '@grafana/faro-web-sdk';\nimport { FetchError, logError, logInfo, logWarning } from '@grafana/runtime';\nimport pluginJson from '../plugin.json';\nimport packageJson from '../../package.json';\nimport { isRecord } from './narrowing';\n\nconst defaultContext = {\n app: pluginJson.id,\n version: packageJson.version,\n};\n\nexport const logger = {\n info: (msg: string, context?: LogContext) => {\n const ctx = { ...defaultContext, ...context };\n console.log(msg, ctx);\n attemptFaroInfo(msg, ctx);\n },\n warn: (msg: string, context?: LogContext) => {\n const ctx = { ...defaultContext, ...context };\n console.warn(msg, ctx);\n attemptFaroWarn(msg, ctx);\n },\n error: (err: Error | unknown, context?: LogContext) => {\n const ctx = { ...defaultContext, ...context };\n console.error(err, ctx);\n attemptFaroErr(err, ctx);\n },\n};\n\nconst attemptFaroInfo = (msg: string, context?: LogContext) => {\n try {\n logInfo(msg, context);\n } catch (e) {\n console.warn('Failed to log faro event!');\n }\n};\n\nconst attemptFaroWarn = (msg: string, context?: LogContext) => {\n try {\n logWarning(msg, context);\n } catch (e) {\n console.warn('Failed to log faro warning!', { msg, context });\n }\n};\n/**\n * Checks unknown error for properties from Records like FetchError and adds them to the context\n * @param err\n * @param context\n */\nfunction populateFetchErrorContext(err: unknown | FetchError, context: LogContext) {\n if (typeof err === 'object' && err !== null) {\n if (isRecord(err)) {\n Object.keys(err).forEach((key: string) => {\n const value = err[key];\n if (typeof value === 'string' || typeof value === 'boolean' || typeof value === 'number') {\n context[key] = value.toString();\n }\n });\n }\n\n if (hasData(err)) {\n if (typeof err.data === 'object' && err.data !== null) {\n try {\n context.data = JSON.stringify(err.data);\n } catch (e) {\n // do nothing\n }\n } else if (typeof err.data === 'string' || typeof err.data === 'boolean' || typeof err.data === 'number') {\n context.data = err.data.toString();\n }\n }\n }\n}\n\nconst attemptFaroErr = (err: Error | FetchError | unknown, context2: LogContext) => {\n let context = context2;\n try {\n populateFetchErrorContext(err, context);\n\n if (err instanceof Error) {\n logError(err, context);\n } else if (typeof err === 'string') {\n logError(new Error(err), context);\n } else if (err && typeof err === 'object') {\n if (context.msg) {\n logError(new Error(context.msg), context);\n } else {\n logError(new Error('error object'), context);\n }\n } else {\n logError(new Error('unknown error'), context);\n }\n } catch (e) {\n console.error('Failed to log faro error!', { err, context });\n }\n};\n\nconst hasData = (value: object): value is { data: unknown } => {\n return 'data' in value;\n};\n","// Warning: This file (and any imports) are included in the main bundle with Grafana in order to provide link extension support in Grafana core, in an effort to keep Grafana loading quickly, please do not add any unnecessary imports to this file and run the bundle analyzer before committing any changes!\n\nimport {\n Bytes,\n Duration,\n Eq,\n FilterOp,\n Gte,\n Gtr,\n Identifier,\n Json,\n LabelFilter,\n LineFilter,\n Logfmt,\n Lss,\n Lte,\n Matcher,\n Neq,\n Npa,\n Nre,\n Number,\n OrFilter,\n parser,\n PipeExact,\n PipeMatch,\n PipePattern,\n Re,\n Selector,\n String,\n} from '@grafana/lezer-logql';\nimport { NodeType, SyntaxNode, Tree } from '@lezer/common';\nimport {\n FieldFilter,\n FilterOp as FilterOperator,\n FilterOpType,\n IndexedLabelFilter,\n LineFilterCaseSensitive,\n LineFilterOp,\n LineFilterType,\n PatternFilterOp,\n PatternFilterType,\n} from './filterTypes';\nimport { PluginExtensionPanelContext } from '@grafana/data';\nimport { getLabelTypeFromFrame, LokiQuery } from './lokiQuery';\nimport { LabelType } from './fieldsTypes';\nimport { ParserType } from './variables';\n\nexport class NodePosition {\n from: number;\n to: number;\n type?: NodeType;\n syntaxNode?: SyntaxNode;\n\n constructor(from: number, to: number, syntaxNode?: SyntaxNode, type?: NodeType) {\n this.from = from;\n this.to = to;\n this.type = type;\n this.syntaxNode = syntaxNode;\n }\n\n static fromNode(node: SyntaxNode): NodePosition {\n return new NodePosition(node.from, node.to, node, node.type);\n }\n\n contains(position: NodePosition): boolean {\n return this.from <= position.from && this.to >= position.to;\n }\n\n getExpression(query: string): string {\n return query.substring(this.from, this.to);\n }\n}\n\nexport function getNodesFromQuery(query: string, nodeTypes?: number[]): SyntaxNode[] {\n const nodes: SyntaxNode[] = [];\n const tree: Tree = parser.parse(query);\n tree.iterate({\n enter: (node): false | void => {\n if (nodeTypes === undefined || nodeTypes.includes(node.type.id)) {\n nodes.push(node.node);\n }\n },\n });\n return nodes;\n}\n\nfunction getAllPositionsInNodeByType(node: SyntaxNode, type: number): NodePosition[] {\n if (node.type.id === type) {\n return [NodePosition.fromNode(node)];\n }\n\n const positions: NodePosition[] = [];\n let pos = 0;\n let child = node.childAfter(pos);\n while (child) {\n positions.push(...getAllPositionsInNodeByType(child, type));\n pos = child.to;\n child = node.childAfter(pos);\n }\n return positions;\n}\n\nfunction parseLabelFilters(query: string, filter: IndexedLabelFilter[]) {\n // `Matcher` will select field filters as well as indexed label filters\n const allMatcher = getNodesFromQuery(query, [Matcher]);\n for (const matcher of allMatcher) {\n const identifierPosition = getAllPositionsInNodeByType(matcher, Identifier);\n const valuePosition = getAllPositionsInNodeByType(matcher, String);\n const operator = query.substring(identifierPosition[0]?.to, valuePosition[0]?.from);\n const key = identifierPosition[0].getExpression(query);\n const value = valuePosition.map((position) => query.substring(position.from + 1, position.to - 1))[0];\n\n if (\n !key ||\n !value ||\n (operator !== FilterOperator.NotEqual &&\n operator !== FilterOperator.Equal &&\n operator !== FilterOperator.RegexEqual &&\n operator !== FilterOperator.RegexNotEqual)\n ) {\n continue;\n }\n\n filter.push({\n key,\n operator,\n value,\n type: LabelType.Indexed,\n });\n }\n}\n\nfunction parseNonPatternFilters(\n lineFilterValue: string,\n quoteString: string,\n lineFilters: LineFilterType[],\n index: number,\n operator: LineFilterOp\n) {\n const isRegexSelector = operator === LineFilterOp.regex || operator === LineFilterOp.negativeRegex;\n const isCaseInsensitive = lineFilterValue.includes('(?i)') && isRegexSelector;\n\n // If quoteString is `, we shouldn't need to un-escape anything\n // But if the quoteString is \", we'll need to remove double escape chars, as these values are re-escaped when building the query expression (but not stored in the value/url)\n if (quoteString === '\"' && isRegexSelector) {\n const replaceDoubleEscape = new RegExp(/\\\\\\\\/, 'g');\n lineFilterValue = lineFilterValue.replace(replaceDoubleEscape, '\\\\');\n } else if (quoteString === '\"') {\n const replaceDoubleQuoteEscape = new RegExp(/\\\\\\\\\\\"/, 'g');\n lineFilterValue = lineFilterValue.replace(replaceDoubleQuoteEscape, '\"');\n\n const replaceDoubleEscape = new RegExp(/\\\\\\\\/, 'g');\n lineFilterValue = lineFilterValue.replace(replaceDoubleEscape, '\\\\');\n }\n\n if (isCaseInsensitive) {\n // If `(?i)` exists in a regex it would need to be escaped to match log lines containing `(?i)`, so it should be safe to replace all instances of `(?i)` in the line filter?\n lineFilterValue = lineFilterValue.replace('(?i)', '');\n }\n\n lineFilters.push({\n key: isCaseInsensitive\n ? LineFilterCaseSensitive.caseInsensitive.toString()\n : LineFilterCaseSensitive.caseSensitive.toString() + ',' + index.toString(),\n operator: operator,\n value: lineFilterValue,\n });\n\n return lineFilterValue;\n}\n\nfunction parsePatternFilters(lineFilterValue: string, patternFilters: PatternFilterType[], operator: PatternFilterOp) {\n const replaceDoubleQuoteEscape = new RegExp(/\\\\\"/, 'g');\n lineFilterValue = lineFilterValue.replace(replaceDoubleQuoteEscape, '\"');\n patternFilters.push({\n operator,\n value: lineFilterValue,\n });\n}\n\nfunction parseLineFilters(query: string, lineFilters: LineFilterType[], patternFilters: PatternFilterType[]) {\n const allLineFilters = getNodesFromQuery(query, [LineFilter]);\n for (const [index, matcher] of allLineFilters.entries()) {\n const equal = getAllPositionsInNodeByType(matcher, PipeExact);\n const pipeRegExp = getAllPositionsInNodeByType(matcher, PipeMatch);\n const notEqual = getAllPositionsInNodeByType(matcher, Neq);\n const notEqualRegExp = getAllPositionsInNodeByType(matcher, Nre);\n const patternInclude = getAllPositionsInNodeByType(matcher, PipePattern);\n const patternExclude = getAllPositionsInNodeByType(matcher, Npa);\n\n const lineFilterValueNodes = getStringsFromLineFilter(matcher);\n\n for (const lineFilterValueNode of lineFilterValueNodes) {\n const quoteString = query.substring(lineFilterValueNode?.from + 1, lineFilterValueNode?.from);\n\n // Remove quotes\n let lineFilterValue = query.substring(lineFilterValueNode?.from + 1, lineFilterValueNode?.to - 1);\n\n if (lineFilterValue.length) {\n let operator;\n if (equal.length) {\n operator = LineFilterOp.match;\n } else if (notEqual.length) {\n operator = LineFilterOp.negativeMatch;\n } else if (notEqualRegExp.length) {\n operator = LineFilterOp.negativeRegex;\n } else if (pipeRegExp.length) {\n operator = LineFilterOp.regex;\n } else if (patternInclude.length) {\n operator = PatternFilterOp.match;\n } else if (patternExclude.length) {\n operator = PatternFilterOp.negativeMatch;\n } else {\n console.warn('unknown line filter', {\n query: query.substring(matcher.from, matcher.to),\n });\n\n continue;\n }\n\n if (!(operator === PatternFilterOp.match || operator === PatternFilterOp.negativeMatch)) {\n parseNonPatternFilters(lineFilterValue, quoteString, lineFilters, index, operator);\n } else {\n parsePatternFilters(lineFilterValue, patternFilters, operator);\n }\n }\n }\n }\n}\n\nfunction getNumericFieldOperator(matcher: SyntaxNode) {\n if (getAllPositionsInNodeByType(matcher, Lte).length) {\n return FilterOperator.lte;\n } else if (getAllPositionsInNodeByType(matcher, Lss).length) {\n return FilterOperator.lt;\n } else if (getAllPositionsInNodeByType(matcher, Gte).length) {\n return FilterOperator.gte;\n } else if (getAllPositionsInNodeByType(matcher, Gtr).length) {\n return FilterOperator.gt;\n }\n\n console.warn('unknown numeric operator');\n\n return undefined;\n}\n\nfunction getStringFieldOperator(matcher: SyntaxNode) {\n if (getAllPositionsInNodeByType(matcher, Eq).length) {\n return FilterOperator.Equal; // =\n } else if (getAllPositionsInNodeByType(matcher, Neq).length) {\n return FilterOperator.NotEqual; // !=\n } else if (getAllPositionsInNodeByType(matcher, Re).length) {\n return FilterOperator.RegexEqual; // =~\n } else if (getAllPositionsInNodeByType(matcher, Nre).length) {\n return FilterOperator.RegexNotEqual; // !~\n }\n\n return undefined;\n}\n\nfunction parseFields(query: string, fields: FieldFilter[], context: PluginExtensionPanelContext, lokiQuery: LokiQuery) {\n const dataFrame = context.data?.series.find((frame) => frame.refId === lokiQuery.refId);\n // We do not currently support \"or\" in Grafana Logs Drilldown, so grab the left hand side LabelFilter leaf nodes as this will be the first filter expression in a given pipeline stage\n const allFields = getNodesFromQuery(query, [LabelFilter]);\n for (const matcher of allFields) {\n const position = NodePosition.fromNode(matcher);\n const expression = position.getExpression(query);\n const isParentNode = matcher.getChild(LabelFilter);\n\n // If the Label filter contains other Label Filter nodes, we want to skip this node so we only add the leaf LabelFilter nodes\n if (isParentNode) {\n continue;\n }\n\n // Skip error expression, it will get added automatically when Grafana Logs Drilldown adds a parser\n if (expression.substring(0, 9) === `__error__`) {\n continue;\n }\n\n // @todo we need to use detected_fields API to get the \"right\" parser for a specific field\n // Currently we just check to see if there is a parser before the current node, this means that queries that are placing metadata filters after the parser will query the metadata field as a parsed field, which will lead to degraded performance\n const logFmtParser = getNodesFromQuery(query.substring(0, matcher.node.to), [Logfmt]);\n const jsonParser = getNodesFromQuery(query.substring(0, matcher.node.to), [Json]);\n\n // field filter key\n const fieldNameNode = getAllPositionsInNodeByType(matcher, Identifier);\n const fieldName = fieldNameNode[0]?.getExpression(query);\n\n // field filter value\n const fieldStringValue = getAllPositionsInNodeByType(matcher, String);\n const fieldNumberValue = getAllPositionsInNodeByType(matcher, Number);\n const fieldBytesValue = getAllPositionsInNodeByType(matcher, Bytes);\n const fieldDurationValue = getAllPositionsInNodeByType(matcher, Duration);\n\n let fieldValue: string, operator: FilterOpType | undefined;\n if (fieldStringValue.length) {\n operator = getStringFieldOperator(matcher);\n // Strip out quotes\n fieldValue = query.substring(fieldStringValue[0].from + 1, fieldStringValue[0].to - 1);\n } else if (fieldNumberValue.length) {\n fieldValue = fieldNumberValue[0].getExpression(query);\n operator = getNumericFieldOperator(matcher);\n } else if (fieldDurationValue.length) {\n operator = getNumericFieldOperator(matcher);\n fieldValue = fieldDurationValue[0].getExpression(query);\n } else if (fieldBytesValue.length) {\n operator = getNumericFieldOperator(matcher);\n fieldValue = fieldBytesValue[0].getExpression(query);\n } else {\n continue;\n }\n\n // Label type\n let labelType: LabelType | undefined;\n if (dataFrame) {\n // @todo if the field label is not in the first line, we'll always add this filter as a field filter\n // Also negative filters that exclude all values of a field will always fail to get a label type for that exclusion filter?\n labelType = getLabelTypeFromFrame(fieldName, dataFrame) ?? undefined;\n }\n\n if (operator) {\n let parser: ParserType | undefined;\n if (logFmtParser.length && jsonParser.length) {\n parser = 'mixed';\n } else if (logFmtParser.length) {\n parser = 'logfmt';\n } else if (jsonParser.length) {\n parser = 'json';\n } else {\n // If there is no parser in the query, the field would have to be metadata or an invalid query?\n labelType = LabelType.StructuredMetadata;\n }\n\n fields.push({\n key: fieldName,\n operator: operator,\n type: labelType ?? LabelType.Parsed,\n parser,\n value: fieldValue,\n });\n }\n }\n}\n\nexport function getMatcherFromQuery(\n query: string,\n context: PluginExtensionPanelContext,\n lokiQuery: LokiQuery\n): {\n labelFilters: IndexedLabelFilter[];\n lineFilters?: LineFilterType[];\n fields?: FieldFilter[];\n patternFilters?: PatternFilterType[];\n} {\n const filter: IndexedLabelFilter[] = [];\n const lineFilters: LineFilterType[] = [];\n const patternFilters: PatternFilterType[] = [];\n const fields: FieldFilter[] = [];\n const selector = getNodesFromQuery(query, [Selector]);\n\n if (selector.length === 0) {\n return { labelFilters: filter };\n }\n\n // Get the stream selector portion of the query\n const selectorQuery = getAllPositionsInNodeByType(selector[0], Selector)[0].getExpression(query);\n\n parseLabelFilters(selectorQuery, filter);\n parseLineFilters(query, lineFilters, patternFilters);\n parseFields(query, fields, context, lokiQuery);\n\n return { labelFilters: filter, lineFilters, fields, patternFilters };\n}\n\nexport function isQueryWithNode(query: string, nodeType: number): boolean {\n let isQueryWithNode = false;\n const tree = parser.parse(query);\n tree.iterate({\n enter: ({ type }): false | void => {\n if (type.id === nodeType) {\n isQueryWithNode = true;\n return false;\n }\n },\n });\n return isQueryWithNode;\n}\n\n/**\n * Parses the query and looks for error nodes. If there is at least one, it returns true.\n * Grafana variables are considered errors, so if you need to validate a query\n * with variables you should interpolate it first.\n */\nexport const ErrorId = 0;\nexport function isValidQuery(query: string): boolean {\n return isQueryWithNode(query, ErrorId) === false;\n}\n\nfunction getStringsFromLineFilter(filter: SyntaxNode): SyntaxNode[] {\n const nodes: SyntaxNode[] = [];\n let node: SyntaxNode | null = filter;\n do {\n const string = node.getChild(String);\n if (string && !node.getChild(FilterOp)) {\n nodes.push(string);\n }\n node = node.getChild(OrFilter);\n } while (node != null);\n\n return nodes;\n}\n","// Warning: This file (and any imports) are included in the main bundle with Grafana in order to provide link extension support in Grafana core, in an effort to keep Grafana loading quickly, please do not add any unnecessary imports to this file and run the bundle analyzer before committing any changes!\nimport { DataSourceRef } from '@grafana/schema';\nimport { DataSourceWithBackend } from '@grafana/runtime';\nimport { DataFrame, DataSourceJsonData, ScopedVars, TimeRange } from '@grafana/data';\nimport { LabelType } from './fieldsTypes';\n\nexport enum LokiQueryDirection {\n Backward = 'backward',\n Forward = 'forward',\n Scan = 'scan',\n}\n\nexport type LokiQuery = {\n refId: string;\n queryType?: LokiQueryType;\n editorMode?: string;\n supportingQueryType?: string;\n expr: string;\n legendFormat?: string;\n splitDuration?: string;\n datasource?: DataSourceRef;\n maxLines?: number;\n direction?: LokiQueryDirection;\n};\n\nexport type LokiQueryType = 'instant' | 'range' | 'stream' | string;\n\nexport type LokiDatasource = DataSourceWithBackend & {\n maxLines?: number;\n} & {\n // @todo delete after min supported grafana is upgraded to >=11.6\n interpolateString?: (string: string, scopedVars?: ScopedVars) => string;\n getTimeRangeParams: (timeRange: TimeRange) => { start: number; end: number };\n};\n\nexport function getLabelTypeFromFrame(labelKey: string, frame: DataFrame, index = 0): null | LabelType {\n const typeField = frame.fields.find((field) => field.name === 'labelTypes')?.values[index];\n if (!typeField) {\n return null;\n }\n switch (typeField[labelKey]) {\n case 'I':\n return LabelType.Indexed;\n case 'S':\n return LabelType.StructuredMetadata;\n case 'P':\n return LabelType.Parsed;\n default:\n return null;\n }\n}\n","import { SelectedTableRow } from '../Components/Table/LogLineCellComponent';\nimport { LogsVisualizationType } from './store';\nimport { FieldValue, ParserType } from './variables';\nimport { LogsSortOrder, RawTimeRange } from '@grafana/data';\nimport { LabelFilterOp, NumericFilterOp } from './filterTypes';\n\nconst isObj = (o: unknown): o is object => typeof o === 'object' && o !== null;\n\nfunction hasProp(data: object, prop: K): data is Record {\n return prop in data;\n}\n\nconst isString = (s: unknown) => (typeof s === 'string' && s) || '';\n\nexport const isRecord = (obj: unknown): obj is Record => typeof obj === 'object';\n\nexport function unknownToStrings(a: unknown): string[] {\n let strings: string[] = [];\n if (Array.isArray(a)) {\n for (let i = 0; i < a.length; i++) {\n strings.push(isString(a[i]));\n }\n }\n return strings;\n}\n\nexport function narrowSelectedTableRow(o: unknown): SelectedTableRow | false {\n const narrowed = isObj(o) && hasProp(o, 'row') && hasProp(o, 'id') && o;\n\n if (narrowed) {\n const row = typeof narrowed.row === 'number' && narrowed.row;\n const id = typeof narrowed.id === 'string' && narrowed.id;\n if (id !== false && row !== false) {\n return { row, id };\n }\n }\n\n return false;\n}\n\nexport function narrowLogsVisualizationType(o: unknown): LogsVisualizationType | false {\n return typeof o === 'string' && (o === 'logs' || o === 'table') && o;\n}\nexport function narrowLogsSortOrder(o: unknown): LogsSortOrder | false {\n if (typeof o === 'string' && o === LogsSortOrder.Ascending.toString()) {\n return LogsSortOrder.Ascending;\n }\n\n if (typeof o === 'string' && o === LogsSortOrder.Descending.toString()) {\n return LogsSortOrder.Descending;\n }\n\n return false;\n}\n\nexport function narrowFieldValue(o: unknown): FieldValue | false {\n const narrowed = isObj(o) && hasProp(o, 'value') && hasProp(o, 'parser') && o;\n\n if (narrowed) {\n const parser: ParserType | false =\n typeof narrowed.parser === 'string' &&\n (narrowed.parser === 'logfmt' ||\n narrowed.parser === 'json' ||\n narrowed.parser === 'mixed' ||\n narrowed.parser === 'structuredMetadata') &&\n narrowed.parser;\n const value = typeof narrowed.value === 'string' && narrowed.value;\n\n if (parser !== false && value !== false) {\n return { parser, value };\n }\n }\n\n return false;\n}\n\nexport function narrowRecordStringNumber(o: unknown): Record | false {\n const narrowed = isObj(o) && isRecord(o) && o;\n\n if (narrowed) {\n const keys = Object.keys(narrowed);\n const returnRecord: Record = {};\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const value = narrowed[keys[i]];\n if (typeof value === 'number') {\n returnRecord[key] = value;\n }\n }\n\n return returnRecord;\n }\n\n return false;\n}\n\nexport function narrowTimeRange(unknownRange: unknown): RawTimeRange | undefined {\n const range = isObj(unknownRange) && hasProp(unknownRange, 'to') && hasProp(unknownRange, 'from') && unknownRange;\n if (range) {\n const to = isString(range.to);\n const from = isString(range.from);\n if (to && from) {\n return { to, from };\n }\n }\n\n return undefined;\n}\n\nexport function narrowFilterOperator(op: string): LabelFilterOp | NumericFilterOp {\n switch (op) {\n case LabelFilterOp.Equal:\n case LabelFilterOp.NotEqual:\n case LabelFilterOp.RegexEqual:\n case LabelFilterOp.RegexNotEqual:\n case NumericFilterOp.gt:\n case NumericFilterOp.gte:\n case NumericFilterOp.lt:\n case NumericFilterOp.lte:\n return op;\n default:\n throw new NarrowingError('operator is invalid!');\n }\n}\n\nexport class NarrowingError extends Error {}\n","import { FilterOp, FilterOpType, NumericFilterOp } from './filterTypes';\nimport { numericOperatorArray } from './operators';\n\nexport const isOperatorInclusive = (op: string | FilterOpType): boolean => {\n return op === FilterOp.Equal || op === FilterOp.RegexEqual;\n};\nexport const isOperatorExclusive = (op: string | FilterOpType): boolean => {\n return op === FilterOp.NotEqual || op === FilterOp.RegexNotEqual;\n};\nexport const isOperatorRegex = (op: string | FilterOpType): boolean => {\n return op === FilterOp.RegexEqual || op === FilterOp.RegexNotEqual;\n};\nexport const isOperatorNumeric = (op: string | NumericFilterOp): boolean => {\n return numericOperatorArray.includes(op);\n};\n","import { FilterOp, FilterOpType } from './filterTypes';\nimport { logger } from './logger';\n\nexport function getOperatorDescription(op: FilterOpType): string {\n if (op === FilterOp.NotEqual) {\n return 'Not equal';\n }\n if (op === FilterOp.RegexNotEqual) {\n return 'Does not match regex';\n }\n if (op === FilterOp.Equal) {\n return 'Equals';\n }\n if (op === FilterOp.RegexEqual) {\n return 'Matches regex';\n }\n if (op === FilterOp.lt) {\n return 'Less than';\n }\n if (op === FilterOp.gt) {\n return 'Greater than';\n }\n if (op === FilterOp.gte) {\n return 'Greater than or equal to';\n }\n if (op === FilterOp.lte) {\n return 'Less than or equal to';\n }\n\n const error = new Error('Invalid operator!');\n logger.error(error, { msg: 'Invalid operator', operator: op });\n throw error;\n}\n","import { FilterOp, LineFilterOp } from './filterTypes';\nimport { SelectableValue } from '@grafana/data';\nimport { getOperatorDescription } from './getOperatorDescription';\n\nexport const operators = [FilterOp.Equal, FilterOp.NotEqual, FilterOp.RegexEqual, FilterOp.RegexNotEqual].map<\n SelectableValue\n>((value, index, array) => {\n return {\n description: getOperatorDescription(value),\n label: value,\n value,\n };\n});\n\nexport const includeOperators = [FilterOp.Equal, FilterOp.RegexEqual].map>((value) => ({\n description: getOperatorDescription(value),\n label: value,\n value,\n}));\n\nexport const numericOperatorArray = [FilterOp.gt, FilterOp.gte, FilterOp.lt, FilterOp.lte];\n\nexport const numericOperators = numericOperatorArray.map>((value) => ({\n description: getOperatorDescription(value),\n label: value,\n value,\n}));\n\nexport const lineFilterOperators: SelectableValue[] = [\n { label: 'match', value: LineFilterOp.match },\n { label: 'negativeMatch', value: LineFilterOp.negativeMatch },\n { label: 'regex', value: LineFilterOp.regex },\n { label: 'negativeRegex', value: LineFilterOp.negativeRegex },\n];\n","// Warning, this file is included in the main module.tsx bundle, and doesn't contain any imports to keep that bundle size small. Don't add imports to this file!\n\n/**\n * Methods copied from scenes that we want in the module (to generate links which cannot be lazy loaded), without including all of scenes.\n * See https://github.com/grafana/scenes/issues/1046\n */\n// based on the openmetrics-documentation, the 3 symbols we have to handle are:\n// - \\n ... the newline character\n// - \\ ... the backslash character\n// - \" ... the double-quote character\nexport function escapeLabelValueInExactSelector(labelValue: string): string {\n return labelValue.replace(/\\\\/g, '\\\\\\\\').replace(/\\n/g, '\\\\n').replace(/\"/g, '\\\\\"');\n}\n","// Warning, this file is included in the main module.tsx bundle, and doesn't contain many imports to keep that bundle size small. Don't add imports to this file!\nimport { AppliedPattern } from './variables';\nimport { escapeLabelValueInExactSelector } from './extensions/scenesMethods';\n\nexport function renderPatternFilters(patterns: AppliedPattern[]) {\n const excludePatterns = patterns.filter((pattern) => pattern.type === 'exclude');\n const excludePatternsLine = excludePatterns\n .map((p) => `!> \"${escapeLabelValueInExactSelector(p.pattern)}\"`)\n .join(' ')\n .trim();\n\n const includePatterns = patterns.filter((pattern) => pattern.type === 'include');\n let includePatternsLine = '';\n if (includePatterns.length > 0) {\n if (includePatterns.length === 1) {\n includePatternsLine = `|> \"${escapeLabelValueInExactSelector(includePatterns[0].pattern)}\"`;\n } else {\n includePatternsLine = `|> ${includePatterns\n .map((p) => `\"${escapeLabelValueInExactSelector(p.pattern)}\"`)\n .join(' or ')}`;\n }\n }\n return `${excludePatternsLine} ${includePatternsLine}`.trim();\n}\n","// Warning, this file is included in the main module.tsx bundle, and doesn't contain any imports to keep that bundle size small. Don't add imports to this file!\n\nimport { AdHocFilterWithLabels } from '@grafana/scenes';\n\nexport interface FieldValue {\n value: string;\n parser: ParserType;\n}\n\nexport interface AdHocFieldValue {\n value?: string;\n parser?: ParserType;\n}\nexport interface AppliedPattern {\n pattern: string;\n type: 'include' | 'exclude';\n}\n\nexport type ParserType = 'logfmt' | 'json' | 'mixed' | 'structuredMetadata';\nexport type DetectedFieldType = 'int' | 'float' | 'duration' | 'bytes' | 'boolean' | 'string';\nexport type AdHocFilterWithLabelsMeta = { parser?: ParserType; type?: DetectedFieldType };\nexport type AdHocFiltersWithLabelsAndMeta = AdHocFilterWithLabels;\n\nexport type LogsQueryOptions = {\n labelExpressionToAdd?: string;\n structuredMetadataToAdd?: string;\n fieldExpressionToAdd?: string;\n parser?: ParserType;\n fieldType?: DetectedFieldType;\n};\n\nexport const VAR_LABELS = 'filters';\nexport const VAR_LABELS_EXPR = '${filters}';\nexport const VAR_LABELS_REPLICA = 'filters_replica';\nexport const VAR_LABELS_REPLICA_EXPR = '${filters_replica}';\nexport const VAR_FIELDS = 'fields';\nexport const VAR_FIELDS_EXPR = '${fields}';\nexport const PENDING_FIELDS_EXPR = '${pendingFields}';\nexport const PENDING_METADATA_EXPR = '${pendingMetadata}';\nexport const VAR_FIELDS_AND_METADATA = 'all-fields';\nexport const VAR_METADATA = 'metadata';\nexport const VAR_METADATA_EXPR = '${metadata}';\nexport const VAR_PATTERNS = 'patterns';\nexport const VAR_PATTERNS_EXPR = '${patterns}';\nexport const VAR_LEVELS = 'levels';\nexport const VAR_LEVELS_EXPR = '${levels}';\nexport const VAR_FIELD_GROUP_BY = 'fieldBy';\nexport const VAR_LABEL_GROUP_BY = 'labelBy';\nexport const VAR_LABEL_GROUP_BY_EXPR = '${labelBy}';\nexport const VAR_PRIMARY_LABEL_SEARCH = 'primary_label_search';\nexport const VAR_PRIMARY_LABEL_SEARCH_EXPR = '${primary_label_search}';\nexport const VAR_PRIMARY_LABEL = 'primary_label';\nexport const VAR_PRIMARY_LABEL_EXPR = '${primary_label}';\nexport const VAR_DATASOURCE = 'ds';\nexport const VAR_DATASOURCE_EXPR = '${ds}';\nexport const MIXED_FORMAT_EXPR = `| json | logfmt | drop __error__, __error_details__`;\nexport const JSON_FORMAT_EXPR = `| json | drop __error__, __error_details__`;\nexport const LOGS_FORMAT_EXPR = `| logfmt`;\n// This variable is hardcoded to the value of MIXED_FORMAT_EXPR. This is a hack to get logs context working, we don't want to use a variable for a value that doesn't change and cannot be updated by the user.\nexport const VAR_LOGS_FORMAT = 'logsFormat';\nexport const VAR_LOGS_FORMAT_EXPR = '${logsFormat}';\n// The deprecated line filter (custom variable)\nexport const VAR_LINE_FILTER_DEPRECATED = 'lineFilter';\n// The new single value line filter (ad-hoc variable), results are added to VAR_LINE_FILTER_AD_HOC when \"submitted\"\nexport const VAR_LINE_FILTER = 'lineFilterV2';\nexport const VAR_LINE_FILTER_EXPR = '${lineFilterV2}';\n// The new multi value line filter (ad-hoc variable)\nexport const VAR_LINE_FILTERS = 'lineFilters';\nexport const VAR_LINE_FILTERS_EXPR = '${lineFilters}';\nexport const LOG_STREAM_SELECTOR_EXPR = `{${VAR_LABELS_EXPR}} ${VAR_LEVELS_EXPR} ${VAR_METADATA_EXPR} ${VAR_PATTERNS_EXPR} ${VAR_LINE_FILTERS_EXPR} ${VAR_LOGS_FORMAT_EXPR} ${VAR_FIELDS_EXPR}`;\n// Same as the LOG_STREAM_SELECTOR_EXPR, but without the fields as they will need to be built manually to exclude the current filter value\nexport const DETECTED_FIELD_VALUES_EXPR = `{${VAR_LABELS_EXPR}} ${VAR_LEVELS_EXPR} ${VAR_METADATA_EXPR} ${VAR_PATTERNS_EXPR} ${VAR_LINE_FILTERS_EXPR} ${VAR_LOGS_FORMAT_EXPR} ${PENDING_FIELDS_EXPR}`;\nexport const DETECTED_FIELD_AND_METADATA_VALUES_EXPR = `{${VAR_LABELS_EXPR}} ${VAR_LEVELS_EXPR} ${PENDING_METADATA_EXPR} ${VAR_PATTERNS_EXPR} ${VAR_LINE_FILTERS_EXPR} ${VAR_LOGS_FORMAT_EXPR} ${PENDING_FIELDS_EXPR}`;\nexport const DETECTED_METADATA_VALUES_EXPR = `{${VAR_LABELS_EXPR}} ${VAR_LEVELS_EXPR} ${PENDING_FIELDS_EXPR} ${VAR_PATTERNS_EXPR} ${VAR_LINE_FILTERS_EXPR} ${VAR_LOGS_FORMAT_EXPR} ${VAR_FIELDS_EXPR}`;\nexport const DETECTED_LEVELS_VALUES_EXPR = `{${VAR_LABELS_EXPR}} ${PENDING_FIELDS_EXPR} ${VAR_METADATA_EXPR} ${VAR_PATTERNS_EXPR} ${VAR_LINE_FILTERS_EXPR} ${VAR_LOGS_FORMAT_EXPR} ${VAR_FIELDS_EXPR}`;\nexport const PATTERNS_SAMPLE_SELECTOR_EXPR = `{${VAR_LABELS_EXPR}} ${VAR_METADATA_EXPR} ${VAR_PATTERNS_EXPR} ${VAR_LOGS_FORMAT_EXPR}`;\nexport const PRETTY_LOG_STREAM_SELECTOR_EXPR = `${VAR_LABELS_EXPR} ${VAR_LEVELS_EXPR} ${VAR_METADATA_EXPR} ${VAR_PATTERNS_EXPR} ${VAR_LINE_FILTERS_EXPR} ${VAR_FIELDS_EXPR}`;\nexport const EXPLORATION_DS = { uid: VAR_DATASOURCE_EXPR };\nexport const ALL_VARIABLE_VALUE = '$__all';\nexport const LEVEL_VARIABLE_VALUE = 'detected_level';\nexport const SERVICE_NAME = 'service_name';\nexport const SERVICE_UI_LABEL = 'service';\nexport const VAR_AGGREGATED_METRICS = 'var_aggregated_metrics';\nexport const VAR_AGGREGATED_METRICS_EXPR = '${var_aggregated_metrics}';\nexport const EMPTY_VARIABLE_VALUE = '\"\"';\n\n// Delimiter used at the start of a label value to denote user input that should not be escaped\n// @todo we need ad-hoc-filter meta that is persisted in the URL so we can clean this up.\nexport const USER_INPUT_ADHOC_VALUE_PREFIX = '__CVΩ__';\nexport function stripAdHocFilterUserInputPrefix(value = '') {\n if (value.startsWith(USER_INPUT_ADHOC_VALUE_PREFIX)) {\n return value.substring(USER_INPUT_ADHOC_VALUE_PREFIX.length);\n }\n return value;\n}\nexport function isAdHocFilterValueUserInput(value = '') {\n return value.startsWith(USER_INPUT_ADHOC_VALUE_PREFIX);\n}\nexport function addAdHocFilterUserInputPrefix(value = '') {\n return USER_INPUT_ADHOC_VALUE_PREFIX + value;\n}\n","module.exports = __WEBPACK_EXTERNAL_MODULE__6089__;","module.exports = __WEBPACK_EXTERNAL_MODULE__7781__;","module.exports = __WEBPACK_EXTERNAL_MODULE__8531__;","module.exports = __WEBPACK_EXTERNAL_MODULE__2007__;","module.exports = __WEBPACK_EXTERNAL_MODULE__3241__;","module.exports = __WEBPACK_EXTERNAL_MODULE__5959__;","module.exports = __WEBPACK_EXTERNAL_MODULE__8398__;","module.exports = __WEBPACK_EXTERNAL_MODULE__200__;","module.exports = __WEBPACK_EXTERNAL_MODULE__3806__;","module.exports = __WEBPACK_EXTERNAL_MODULE__7694__;","module.exports = __WEBPACK_EXTERNAL_MODULE__1269__;","/**\nThe default maximum length of a `TreeBuffer` node.\n*/\nconst DefaultBufferLength = 1024;\nlet nextPropID = 0;\nclass Range {\n constructor(from, to) {\n this.from = from;\n this.to = to;\n }\n}\n/**\nEach [node type](#common.NodeType) or [individual tree](#common.Tree)\ncan have metadata associated with it in props. Instances of this\nclass represent prop names.\n*/\nclass NodeProp {\n /**\n Create a new node prop type.\n */\n constructor(config = {}) {\n this.id = nextPropID++;\n this.perNode = !!config.perNode;\n this.deserialize = config.deserialize || (() => {\n throw new Error(\"This node type doesn't define a deserialize function\");\n });\n }\n /**\n This is meant to be used with\n [`NodeSet.extend`](#common.NodeSet.extend) or\n [`LRParser.configure`](#lr.ParserConfig.props) to compute\n prop values for each node type in the set. Takes a [match\n object](#common.NodeType^match) or function that returns undefined\n if the node type doesn't get this prop, and the prop's value if\n it does.\n */\n add(match) {\n if (this.perNode)\n throw new RangeError(\"Can't add per-node props to node types\");\n if (typeof match != \"function\")\n match = NodeType.match(match);\n return (type) => {\n let result = match(type);\n return result === undefined ? null : [this, result];\n };\n }\n}\n/**\nProp that is used to describe matching delimiters. For opening\ndelimiters, this holds an array of node names (written as a\nspace-separated string when declaring this prop in a grammar)\nfor the node types of closing delimiters that match it.\n*/\nNodeProp.closedBy = new NodeProp({ deserialize: str => str.split(\" \") });\n/**\nThe inverse of [`closedBy`](#common.NodeProp^closedBy). This is\nattached to closing delimiters, holding an array of node names\nof types of matching opening delimiters.\n*/\nNodeProp.openedBy = new NodeProp({ deserialize: str => str.split(\" \") });\n/**\nUsed to assign node types to groups (for example, all node\ntypes that represent an expression could be tagged with an\n`\"Expression\"` group).\n*/\nNodeProp.group = new NodeProp({ deserialize: str => str.split(\" \") });\n/**\nAttached to nodes to indicate these should be\n[displayed](https://codemirror.net/docs/ref/#language.syntaxTree)\nin a bidirectional text isolate, so that direction-neutral\ncharacters on their sides don't incorrectly get associated with\nsurrounding text. You'll generally want to set this for nodes\nthat contain arbitrary text, like strings and comments, and for\nnodes that appear _inside_ arbitrary text, like HTML tags. When\nnot given a value, in a grammar declaration, defaults to\n`\"auto\"`.\n*/\nNodeProp.isolate = new NodeProp({ deserialize: value => {\n if (value && value != \"rtl\" && value != \"ltr\" && value != \"auto\")\n throw new RangeError(\"Invalid value for isolate: \" + value);\n return value || \"auto\";\n } });\n/**\nThe hash of the [context](#lr.ContextTracker.constructor)\nthat the node was parsed in, if any. Used to limit reuse of\ncontextual nodes.\n*/\nNodeProp.contextHash = new NodeProp({ perNode: true });\n/**\nThe distance beyond the end of the node that the tokenizer\nlooked ahead for any of the tokens inside the node. (The LR\nparser only stores this when it is larger than 25, for\nefficiency reasons.)\n*/\nNodeProp.lookAhead = new NodeProp({ perNode: true });\n/**\nThis per-node prop is used to replace a given node, or part of a\nnode, with another tree. This is useful to include trees from\ndifferent languages in mixed-language parsers.\n*/\nNodeProp.mounted = new NodeProp({ perNode: true });\n/**\nA mounted tree, which can be [stored](#common.NodeProp^mounted) on\na tree node to indicate that parts of its content are\nrepresented by another tree.\n*/\nclass MountedTree {\n constructor(\n /**\n The inner tree.\n */\n tree, \n /**\n If this is null, this tree replaces the entire node (it will\n be included in the regular iteration instead of its host\n node). If not, only the given ranges are considered to be\n covered by this tree. This is used for trees that are mixed in\n a way that isn't strictly hierarchical. Such mounted trees are\n only entered by [`resolveInner`](#common.Tree.resolveInner)\n and [`enter`](#common.SyntaxNode.enter).\n */\n overlay, \n /**\n The parser used to create this subtree.\n */\n parser) {\n this.tree = tree;\n this.overlay = overlay;\n this.parser = parser;\n }\n /**\n @internal\n */\n static get(tree) {\n return tree && tree.props && tree.props[NodeProp.mounted.id];\n }\n}\nconst noProps = Object.create(null);\n/**\nEach node in a syntax tree has a node type associated with it.\n*/\nclass NodeType {\n /**\n @internal\n */\n constructor(\n /**\n The name of the node type. Not necessarily unique, but if the\n grammar was written properly, different node types with the\n same name within a node set should play the same semantic\n role.\n */\n name, \n /**\n @internal\n */\n props, \n /**\n The id of this node in its set. Corresponds to the term ids\n used in the parser.\n */\n id, \n /**\n @internal\n */\n flags = 0) {\n this.name = name;\n this.props = props;\n this.id = id;\n this.flags = flags;\n }\n /**\n Define a node type.\n */\n static define(spec) {\n let props = spec.props && spec.props.length ? Object.create(null) : noProps;\n let flags = (spec.top ? 1 /* NodeFlag.Top */ : 0) | (spec.skipped ? 2 /* NodeFlag.Skipped */ : 0) |\n (spec.error ? 4 /* NodeFlag.Error */ : 0) | (spec.name == null ? 8 /* NodeFlag.Anonymous */ : 0);\n let type = new NodeType(spec.name || \"\", props, spec.id, flags);\n if (spec.props)\n for (let src of spec.props) {\n if (!Array.isArray(src))\n src = src(type);\n if (src) {\n if (src[0].perNode)\n throw new RangeError(\"Can't store a per-node prop on a node type\");\n props[src[0].id] = src[1];\n }\n }\n return type;\n }\n /**\n Retrieves a node prop for this type. Will return `undefined` if\n the prop isn't present on this node.\n */\n prop(prop) { return this.props[prop.id]; }\n /**\n True when this is the top node of a grammar.\n */\n get isTop() { return (this.flags & 1 /* NodeFlag.Top */) > 0; }\n /**\n True when this node is produced by a skip rule.\n */\n get isSkipped() { return (this.flags & 2 /* NodeFlag.Skipped */) > 0; }\n /**\n Indicates whether this is an error node.\n */\n get isError() { return (this.flags & 4 /* NodeFlag.Error */) > 0; }\n /**\n When true, this node type doesn't correspond to a user-declared\n named node, for example because it is used to cache repetition.\n */\n get isAnonymous() { return (this.flags & 8 /* NodeFlag.Anonymous */) > 0; }\n /**\n Returns true when this node's name or one of its\n [groups](#common.NodeProp^group) matches the given string.\n */\n is(name) {\n if (typeof name == 'string') {\n if (this.name == name)\n return true;\n let group = this.prop(NodeProp.group);\n return group ? group.indexOf(name) > -1 : false;\n }\n return this.id == name;\n }\n /**\n Create a function from node types to arbitrary values by\n specifying an object whose property names are node or\n [group](#common.NodeProp^group) names. Often useful with\n [`NodeProp.add`](#common.NodeProp.add). You can put multiple\n names, separated by spaces, in a single property name to map\n multiple node names to a single value.\n */\n static match(map) {\n let direct = Object.create(null);\n for (let prop in map)\n for (let name of prop.split(\" \"))\n direct[name] = map[prop];\n return (node) => {\n for (let groups = node.prop(NodeProp.group), i = -1; i < (groups ? groups.length : 0); i++) {\n let found = direct[i < 0 ? node.name : groups[i]];\n if (found)\n return found;\n }\n };\n }\n}\n/**\nAn empty dummy node type to use when no actual type is available.\n*/\nNodeType.none = new NodeType(\"\", Object.create(null), 0, 8 /* NodeFlag.Anonymous */);\n/**\nA node set holds a collection of node types. It is used to\ncompactly represent trees by storing their type ids, rather than a\nfull pointer to the type object, in a numeric array. Each parser\n[has](#lr.LRParser.nodeSet) a node set, and [tree\nbuffers](#common.TreeBuffer) can only store collections of nodes\nfrom the same set. A set can have a maximum of 2**16 (65536) node\ntypes in it, so that the ids fit into 16-bit typed array slots.\n*/\nclass NodeSet {\n /**\n Create a set with the given types. The `id` property of each\n type should correspond to its position within the array.\n */\n constructor(\n /**\n The node types in this set, by id.\n */\n types) {\n this.types = types;\n for (let i = 0; i < types.length; i++)\n if (types[i].id != i)\n throw new RangeError(\"Node type ids should correspond to array positions when creating a node set\");\n }\n /**\n Create a copy of this set with some node properties added. The\n arguments to this method can be created with\n [`NodeProp.add`](#common.NodeProp.add).\n */\n extend(...props) {\n let newTypes = [];\n for (let type of this.types) {\n let newProps = null;\n for (let source of props) {\n let add = source(type);\n if (add) {\n if (!newProps)\n newProps = Object.assign({}, type.props);\n newProps[add[0].id] = add[1];\n }\n }\n newTypes.push(newProps ? new NodeType(type.name, newProps, type.id, type.flags) : type);\n }\n return new NodeSet(newTypes);\n }\n}\nconst CachedNode = new WeakMap(), CachedInnerNode = new WeakMap();\n/**\nOptions that control iteration. Can be combined with the `|`\noperator to enable multiple ones.\n*/\nvar IterMode;\n(function (IterMode) {\n /**\n When enabled, iteration will only visit [`Tree`](#common.Tree)\n objects, not nodes packed into\n [`TreeBuffer`](#common.TreeBuffer)s.\n */\n IterMode[IterMode[\"ExcludeBuffers\"] = 1] = \"ExcludeBuffers\";\n /**\n Enable this to make iteration include anonymous nodes (such as\n the nodes that wrap repeated grammar constructs into a balanced\n tree).\n */\n IterMode[IterMode[\"IncludeAnonymous\"] = 2] = \"IncludeAnonymous\";\n /**\n By default, regular [mounted](#common.NodeProp^mounted) nodes\n replace their base node in iteration. Enable this to ignore them\n instead.\n */\n IterMode[IterMode[\"IgnoreMounts\"] = 4] = \"IgnoreMounts\";\n /**\n This option only applies in\n [`enter`](#common.SyntaxNode.enter)-style methods. It tells the\n library to not enter mounted overlays if one covers the given\n position.\n */\n IterMode[IterMode[\"IgnoreOverlays\"] = 8] = \"IgnoreOverlays\";\n})(IterMode || (IterMode = {}));\n/**\nA piece of syntax tree. There are two ways to approach these\ntrees: the way they are actually stored in memory, and the\nconvenient way.\n\nSyntax trees are stored as a tree of `Tree` and `TreeBuffer`\nobjects. By packing detail information into `TreeBuffer` leaf\nnodes, the representation is made a lot more memory-efficient.\n\nHowever, when you want to actually work with tree nodes, this\nrepresentation is very awkward, so most client code will want to\nuse the [`TreeCursor`](#common.TreeCursor) or\n[`SyntaxNode`](#common.SyntaxNode) interface instead, which provides\na view on some part of this data structure, and can be used to\nmove around to adjacent nodes.\n*/\nclass Tree {\n /**\n Construct a new tree. See also [`Tree.build`](#common.Tree^build).\n */\n constructor(\n /**\n The type of the top node.\n */\n type, \n /**\n This node's child nodes.\n */\n children, \n /**\n The positions (offsets relative to the start of this tree) of\n the children.\n */\n positions, \n /**\n The total length of this tree\n */\n length, \n /**\n Per-node [node props](#common.NodeProp) to associate with this node.\n */\n props) {\n this.type = type;\n this.children = children;\n this.positions = positions;\n this.length = length;\n /**\n @internal\n */\n this.props = null;\n if (props && props.length) {\n this.props = Object.create(null);\n for (let [prop, value] of props)\n this.props[typeof prop == \"number\" ? prop : prop.id] = value;\n }\n }\n /**\n @internal\n */\n toString() {\n let mounted = MountedTree.get(this);\n if (mounted && !mounted.overlay)\n return mounted.tree.toString();\n let children = \"\";\n for (let ch of this.children) {\n let str = ch.toString();\n if (str) {\n if (children)\n children += \",\";\n children += str;\n }\n }\n return !this.type.name ? children :\n (/\\W/.test(this.type.name) && !this.type.isError ? JSON.stringify(this.type.name) : this.type.name) +\n (children.length ? \"(\" + children + \")\" : \"\");\n }\n /**\n Get a [tree cursor](#common.TreeCursor) positioned at the top of\n the tree. Mode can be used to [control](#common.IterMode) which\n nodes the cursor visits.\n */\n cursor(mode = 0) {\n return new TreeCursor(this.topNode, mode);\n }\n /**\n Get a [tree cursor](#common.TreeCursor) pointing into this tree\n at the given position and side (see\n [`moveTo`](#common.TreeCursor.moveTo).\n */\n cursorAt(pos, side = 0, mode = 0) {\n let scope = CachedNode.get(this) || this.topNode;\n let cursor = new TreeCursor(scope);\n cursor.moveTo(pos, side);\n CachedNode.set(this, cursor._tree);\n return cursor;\n }\n /**\n Get a [syntax node](#common.SyntaxNode) object for the top of the\n tree.\n */\n get topNode() {\n return new TreeNode(this, 0, 0, null);\n }\n /**\n Get the [syntax node](#common.SyntaxNode) at the given position.\n If `side` is -1, this will move into nodes that end at the\n position. If 1, it'll move into nodes that start at the\n position. With 0, it'll only enter nodes that cover the position\n from both sides.\n \n Note that this will not enter\n [overlays](#common.MountedTree.overlay), and you often want\n [`resolveInner`](#common.Tree.resolveInner) instead.\n */\n resolve(pos, side = 0) {\n let node = resolveNode(CachedNode.get(this) || this.topNode, pos, side, false);\n CachedNode.set(this, node);\n return node;\n }\n /**\n Like [`resolve`](#common.Tree.resolve), but will enter\n [overlaid](#common.MountedTree.overlay) nodes, producing a syntax node\n pointing into the innermost overlaid tree at the given position\n (with parent links going through all parent structure, including\n the host trees).\n */\n resolveInner(pos, side = 0) {\n let node = resolveNode(CachedInnerNode.get(this) || this.topNode, pos, side, true);\n CachedInnerNode.set(this, node);\n return node;\n }\n /**\n In some situations, it can be useful to iterate through all\n nodes around a position, including those in overlays that don't\n directly cover the position. This method gives you an iterator\n that will produce all nodes, from small to big, around the given\n position.\n */\n resolveStack(pos, side = 0) {\n return stackIterator(this, pos, side);\n }\n /**\n Iterate over the tree and its children, calling `enter` for any\n node that touches the `from`/`to` region (if given) before\n running over such a node's children, and `leave` (if given) when\n leaving the node. When `enter` returns `false`, that node will\n not have its children iterated over (or `leave` called).\n */\n iterate(spec) {\n let { enter, leave, from = 0, to = this.length } = spec;\n let mode = spec.mode || 0, anon = (mode & IterMode.IncludeAnonymous) > 0;\n for (let c = this.cursor(mode | IterMode.IncludeAnonymous);;) {\n let entered = false;\n if (c.from <= to && c.to >= from && (!anon && c.type.isAnonymous || enter(c) !== false)) {\n if (c.firstChild())\n continue;\n entered = true;\n }\n for (;;) {\n if (entered && leave && (anon || !c.type.isAnonymous))\n leave(c);\n if (c.nextSibling())\n break;\n if (!c.parent())\n return;\n entered = true;\n }\n }\n }\n /**\n Get the value of the given [node prop](#common.NodeProp) for this\n node. Works with both per-node and per-type props.\n */\n prop(prop) {\n return !prop.perNode ? this.type.prop(prop) : this.props ? this.props[prop.id] : undefined;\n }\n /**\n Returns the node's [per-node props](#common.NodeProp.perNode) in a\n format that can be passed to the [`Tree`](#common.Tree)\n constructor.\n */\n get propValues() {\n let result = [];\n if (this.props)\n for (let id in this.props)\n result.push([+id, this.props[id]]);\n return result;\n }\n /**\n Balance the direct children of this tree, producing a copy of\n which may have children grouped into subtrees with type\n [`NodeType.none`](#common.NodeType^none).\n */\n balance(config = {}) {\n return this.children.length <= 8 /* Balance.BranchFactor */ ? this :\n balanceRange(NodeType.none, this.children, this.positions, 0, this.children.length, 0, this.length, (children, positions, length) => new Tree(this.type, children, positions, length, this.propValues), config.makeTree || ((children, positions, length) => new Tree(NodeType.none, children, positions, length)));\n }\n /**\n Build a tree from a postfix-ordered buffer of node information,\n or a cursor over such a buffer.\n */\n static build(data) { return buildTree(data); }\n}\n/**\nThe empty tree\n*/\nTree.empty = new Tree(NodeType.none, [], [], 0);\nclass FlatBufferCursor {\n constructor(buffer, index) {\n this.buffer = buffer;\n this.index = index;\n }\n get id() { return this.buffer[this.index - 4]; }\n get start() { return this.buffer[this.index - 3]; }\n get end() { return this.buffer[this.index - 2]; }\n get size() { return this.buffer[this.index - 1]; }\n get pos() { return this.index; }\n next() { this.index -= 4; }\n fork() { return new FlatBufferCursor(this.buffer, this.index); }\n}\n/**\nTree buffers contain (type, start, end, endIndex) quads for each\nnode. In such a buffer, nodes are stored in prefix order (parents\nbefore children, with the endIndex of the parent indicating which\nchildren belong to it).\n*/\nclass TreeBuffer {\n /**\n Create a tree buffer.\n */\n constructor(\n /**\n The buffer's content.\n */\n buffer, \n /**\n The total length of the group of nodes in the buffer.\n */\n length, \n /**\n The node set used in this buffer.\n */\n set) {\n this.buffer = buffer;\n this.length = length;\n this.set = set;\n }\n /**\n @internal\n */\n get type() { return NodeType.none; }\n /**\n @internal\n */\n toString() {\n let result = [];\n for (let index = 0; index < this.buffer.length;) {\n result.push(this.childString(index));\n index = this.buffer[index + 3];\n }\n return result.join(\",\");\n }\n /**\n @internal\n */\n childString(index) {\n let id = this.buffer[index], endIndex = this.buffer[index + 3];\n let type = this.set.types[id], result = type.name;\n if (/\\W/.test(result) && !type.isError)\n result = JSON.stringify(result);\n index += 4;\n if (endIndex == index)\n return result;\n let children = [];\n while (index < endIndex) {\n children.push(this.childString(index));\n index = this.buffer[index + 3];\n }\n return result + \"(\" + children.join(\",\") + \")\";\n }\n /**\n @internal\n */\n findChild(startIndex, endIndex, dir, pos, side) {\n let { buffer } = this, pick = -1;\n for (let i = startIndex; i != endIndex; i = buffer[i + 3]) {\n if (checkSide(side, pos, buffer[i + 1], buffer[i + 2])) {\n pick = i;\n if (dir > 0)\n break;\n }\n }\n return pick;\n }\n /**\n @internal\n */\n slice(startI, endI, from) {\n let b = this.buffer;\n let copy = new Uint16Array(endI - startI), len = 0;\n for (let i = startI, j = 0; i < endI;) {\n copy[j++] = b[i++];\n copy[j++] = b[i++] - from;\n let to = copy[j++] = b[i++] - from;\n copy[j++] = b[i++] - startI;\n len = Math.max(len, to);\n }\n return new TreeBuffer(copy, len, this.set);\n }\n}\nfunction checkSide(side, pos, from, to) {\n switch (side) {\n case -2 /* Side.Before */: return from < pos;\n case -1 /* Side.AtOrBefore */: return to >= pos && from < pos;\n case 0 /* Side.Around */: return from < pos && to > pos;\n case 1 /* Side.AtOrAfter */: return from <= pos && to > pos;\n case 2 /* Side.After */: return to > pos;\n case 4 /* Side.DontCare */: return true;\n }\n}\nfunction resolveNode(node, pos, side, overlays) {\n var _a;\n // Move up to a node that actually holds the position, if possible\n while (node.from == node.to ||\n (side < 1 ? node.from >= pos : node.from > pos) ||\n (side > -1 ? node.to <= pos : node.to < pos)) {\n let parent = !overlays && node instanceof TreeNode && node.index < 0 ? null : node.parent;\n if (!parent)\n return node;\n node = parent;\n }\n let mode = overlays ? 0 : IterMode.IgnoreOverlays;\n // Must go up out of overlays when those do not overlap with pos\n if (overlays)\n for (let scan = node, parent = scan.parent; parent; scan = parent, parent = scan.parent) {\n if (scan instanceof TreeNode && scan.index < 0 && ((_a = parent.enter(pos, side, mode)) === null || _a === void 0 ? void 0 : _a.from) != scan.from)\n node = parent;\n }\n for (;;) {\n let inner = node.enter(pos, side, mode);\n if (!inner)\n return node;\n node = inner;\n }\n}\nclass BaseNode {\n cursor(mode = 0) { return new TreeCursor(this, mode); }\n getChild(type, before = null, after = null) {\n let r = getChildren(this, type, before, after);\n return r.length ? r[0] : null;\n }\n getChildren(type, before = null, after = null) {\n return getChildren(this, type, before, after);\n }\n resolve(pos, side = 0) {\n return resolveNode(this, pos, side, false);\n }\n resolveInner(pos, side = 0) {\n return resolveNode(this, pos, side, true);\n }\n matchContext(context) {\n return matchNodeContext(this.parent, context);\n }\n enterUnfinishedNodesBefore(pos) {\n let scan = this.childBefore(pos), node = this;\n while (scan) {\n let last = scan.lastChild;\n if (!last || last.to != scan.to)\n break;\n if (last.type.isError && last.from == last.to) {\n node = scan;\n scan = last.prevSibling;\n }\n else {\n scan = last;\n }\n }\n return node;\n }\n get node() { return this; }\n get next() { return this.parent; }\n}\nclass TreeNode extends BaseNode {\n constructor(_tree, from, \n // Index in parent node, set to -1 if the node is not a direct child of _parent.node (overlay)\n index, _parent) {\n super();\n this._tree = _tree;\n this.from = from;\n this.index = index;\n this._parent = _parent;\n }\n get type() { return this._tree.type; }\n get name() { return this._tree.type.name; }\n get to() { return this.from + this._tree.length; }\n nextChild(i, dir, pos, side, mode = 0) {\n for (let parent = this;;) {\n for (let { children, positions } = parent._tree, e = dir > 0 ? children.length : -1; i != e; i += dir) {\n let next = children[i], start = positions[i] + parent.from;\n if (!checkSide(side, pos, start, start + next.length))\n continue;\n if (next instanceof TreeBuffer) {\n if (mode & IterMode.ExcludeBuffers)\n continue;\n let index = next.findChild(0, next.buffer.length, dir, pos - start, side);\n if (index > -1)\n return new BufferNode(new BufferContext(parent, next, i, start), null, index);\n }\n else if ((mode & IterMode.IncludeAnonymous) || (!next.type.isAnonymous || hasChild(next))) {\n let mounted;\n if (!(mode & IterMode.IgnoreMounts) && (mounted = MountedTree.get(next)) && !mounted.overlay)\n return new TreeNode(mounted.tree, start, i, parent);\n let inner = new TreeNode(next, start, i, parent);\n return (mode & IterMode.IncludeAnonymous) || !inner.type.isAnonymous ? inner\n : inner.nextChild(dir < 0 ? next.children.length - 1 : 0, dir, pos, side);\n }\n }\n if ((mode & IterMode.IncludeAnonymous) || !parent.type.isAnonymous)\n return null;\n if (parent.index >= 0)\n i = parent.index + dir;\n else\n i = dir < 0 ? -1 : parent._parent._tree.children.length;\n parent = parent._parent;\n if (!parent)\n return null;\n }\n }\n get firstChild() { return this.nextChild(0, 1, 0, 4 /* Side.DontCare */); }\n get lastChild() { return this.nextChild(this._tree.children.length - 1, -1, 0, 4 /* Side.DontCare */); }\n childAfter(pos) { return this.nextChild(0, 1, pos, 2 /* Side.After */); }\n childBefore(pos) { return this.nextChild(this._tree.children.length - 1, -1, pos, -2 /* Side.Before */); }\n enter(pos, side, mode = 0) {\n let mounted;\n if (!(mode & IterMode.IgnoreOverlays) && (mounted = MountedTree.get(this._tree)) && mounted.overlay) {\n let rPos = pos - this.from;\n for (let { from, to } of mounted.overlay) {\n if ((side > 0 ? from <= rPos : from < rPos) &&\n (side < 0 ? to >= rPos : to > rPos))\n return new TreeNode(mounted.tree, mounted.overlay[0].from + this.from, -1, this);\n }\n }\n return this.nextChild(0, 1, pos, side, mode);\n }\n nextSignificantParent() {\n let val = this;\n while (val.type.isAnonymous && val._parent)\n val = val._parent;\n return val;\n }\n get parent() {\n return this._parent ? this._parent.nextSignificantParent() : null;\n }\n get nextSibling() {\n return this._parent && this.index >= 0 ? this._parent.nextChild(this.index + 1, 1, 0, 4 /* Side.DontCare */) : null;\n }\n get prevSibling() {\n return this._parent && this.index >= 0 ? this._parent.nextChild(this.index - 1, -1, 0, 4 /* Side.DontCare */) : null;\n }\n get tree() { return this._tree; }\n toTree() { return this._tree; }\n /**\n @internal\n */\n toString() { return this._tree.toString(); }\n}\nfunction getChildren(node, type, before, after) {\n let cur = node.cursor(), result = [];\n if (!cur.firstChild())\n return result;\n if (before != null)\n for (let found = false; !found;) {\n found = cur.type.is(before);\n if (!cur.nextSibling())\n return result;\n }\n for (;;) {\n if (after != null && cur.type.is(after))\n return result;\n if (cur.type.is(type))\n result.push(cur.node);\n if (!cur.nextSibling())\n return after == null ? result : [];\n }\n}\nfunction matchNodeContext(node, context, i = context.length - 1) {\n for (let p = node; i >= 0; p = p.parent) {\n if (!p)\n return false;\n if (!p.type.isAnonymous) {\n if (context[i] && context[i] != p.name)\n return false;\n i--;\n }\n }\n return true;\n}\nclass BufferContext {\n constructor(parent, buffer, index, start) {\n this.parent = parent;\n this.buffer = buffer;\n this.index = index;\n this.start = start;\n }\n}\nclass BufferNode extends BaseNode {\n get name() { return this.type.name; }\n get from() { return this.context.start + this.context.buffer.buffer[this.index + 1]; }\n get to() { return this.context.start + this.context.buffer.buffer[this.index + 2]; }\n constructor(context, _parent, index) {\n super();\n this.context = context;\n this._parent = _parent;\n this.index = index;\n this.type = context.buffer.set.types[context.buffer.buffer[index]];\n }\n child(dir, pos, side) {\n let { buffer } = this.context;\n let index = buffer.findChild(this.index + 4, buffer.buffer[this.index + 3], dir, pos - this.context.start, side);\n return index < 0 ? null : new BufferNode(this.context, this, index);\n }\n get firstChild() { return this.child(1, 0, 4 /* Side.DontCare */); }\n get lastChild() { return this.child(-1, 0, 4 /* Side.DontCare */); }\n childAfter(pos) { return this.child(1, pos, 2 /* Side.After */); }\n childBefore(pos) { return this.child(-1, pos, -2 /* Side.Before */); }\n enter(pos, side, mode = 0) {\n if (mode & IterMode.ExcludeBuffers)\n return null;\n let { buffer } = this.context;\n let index = buffer.findChild(this.index + 4, buffer.buffer[this.index + 3], side > 0 ? 1 : -1, pos - this.context.start, side);\n return index < 0 ? null : new BufferNode(this.context, this, index);\n }\n get parent() {\n return this._parent || this.context.parent.nextSignificantParent();\n }\n externalSibling(dir) {\n return this._parent ? null : this.context.parent.nextChild(this.context.index + dir, dir, 0, 4 /* Side.DontCare */);\n }\n get nextSibling() {\n let { buffer } = this.context;\n let after = buffer.buffer[this.index + 3];\n if (after < (this._parent ? buffer.buffer[this._parent.index + 3] : buffer.buffer.length))\n return new BufferNode(this.context, this._parent, after);\n return this.externalSibling(1);\n }\n get prevSibling() {\n let { buffer } = this.context;\n let parentStart = this._parent ? this._parent.index + 4 : 0;\n if (this.index == parentStart)\n return this.externalSibling(-1);\n return new BufferNode(this.context, this._parent, buffer.findChild(parentStart, this.index, -1, 0, 4 /* Side.DontCare */));\n }\n get tree() { return null; }\n toTree() {\n let children = [], positions = [];\n let { buffer } = this.context;\n let startI = this.index + 4, endI = buffer.buffer[this.index + 3];\n if (endI > startI) {\n let from = buffer.buffer[this.index + 1];\n children.push(buffer.slice(startI, endI, from));\n positions.push(0);\n }\n return new Tree(this.type, children, positions, this.to - this.from);\n }\n /**\n @internal\n */\n toString() { return this.context.buffer.childString(this.index); }\n}\nfunction iterStack(heads) {\n if (!heads.length)\n return null;\n let pick = 0, picked = heads[0];\n for (let i = 1; i < heads.length; i++) {\n let node = heads[i];\n if (node.from > picked.from || node.to < picked.to) {\n picked = node;\n pick = i;\n }\n }\n let next = picked instanceof TreeNode && picked.index < 0 ? null : picked.parent;\n let newHeads = heads.slice();\n if (next)\n newHeads[pick] = next;\n else\n newHeads.splice(pick, 1);\n return new StackIterator(newHeads, picked);\n}\nclass StackIterator {\n constructor(heads, node) {\n this.heads = heads;\n this.node = node;\n }\n get next() { return iterStack(this.heads); }\n}\nfunction stackIterator(tree, pos, side) {\n let inner = tree.resolveInner(pos, side), layers = null;\n for (let scan = inner instanceof TreeNode ? inner : inner.context.parent; scan; scan = scan.parent) {\n if (scan.index < 0) { // This is an overlay root\n let parent = scan.parent;\n (layers || (layers = [inner])).push(parent.resolve(pos, side));\n scan = parent;\n }\n else {\n let mount = MountedTree.get(scan.tree);\n // Relevant overlay branching off\n if (mount && mount.overlay && mount.overlay[0].from <= pos && mount.overlay[mount.overlay.length - 1].to >= pos) {\n let root = new TreeNode(mount.tree, mount.overlay[0].from + scan.from, -1, scan);\n (layers || (layers = [inner])).push(resolveNode(root, pos, side, false));\n }\n }\n }\n return layers ? iterStack(layers) : inner;\n}\n/**\nA tree cursor object focuses on a given node in a syntax tree, and\nallows you to move to adjacent nodes.\n*/\nclass TreeCursor {\n /**\n Shorthand for `.type.name`.\n */\n get name() { return this.type.name; }\n /**\n @internal\n */\n constructor(node, \n /**\n @internal\n */\n mode = 0) {\n this.mode = mode;\n /**\n @internal\n */\n this.buffer = null;\n this.stack = [];\n /**\n @internal\n */\n this.index = 0;\n this.bufferNode = null;\n if (node instanceof TreeNode) {\n this.yieldNode(node);\n }\n else {\n this._tree = node.context.parent;\n this.buffer = node.context;\n for (let n = node._parent; n; n = n._parent)\n this.stack.unshift(n.index);\n this.bufferNode = node;\n this.yieldBuf(node.index);\n }\n }\n yieldNode(node) {\n if (!node)\n return false;\n this._tree = node;\n this.type = node.type;\n this.from = node.from;\n this.to = node.to;\n return true;\n }\n yieldBuf(index, type) {\n this.index = index;\n let { start, buffer } = this.buffer;\n this.type = type || buffer.set.types[buffer.buffer[index]];\n this.from = start + buffer.buffer[index + 1];\n this.to = start + buffer.buffer[index + 2];\n return true;\n }\n /**\n @internal\n */\n yield(node) {\n if (!node)\n return false;\n if (node instanceof TreeNode) {\n this.buffer = null;\n return this.yieldNode(node);\n }\n this.buffer = node.context;\n return this.yieldBuf(node.index, node.type);\n }\n /**\n @internal\n */\n toString() {\n return this.buffer ? this.buffer.buffer.childString(this.index) : this._tree.toString();\n }\n /**\n @internal\n */\n enterChild(dir, pos, side) {\n if (!this.buffer)\n return this.yield(this._tree.nextChild(dir < 0 ? this._tree._tree.children.length - 1 : 0, dir, pos, side, this.mode));\n let { buffer } = this.buffer;\n let index = buffer.findChild(this.index + 4, buffer.buffer[this.index + 3], dir, pos - this.buffer.start, side);\n if (index < 0)\n return false;\n this.stack.push(this.index);\n return this.yieldBuf(index);\n }\n /**\n Move the cursor to this node's first child. When this returns\n false, the node has no child, and the cursor has not been moved.\n */\n firstChild() { return this.enterChild(1, 0, 4 /* Side.DontCare */); }\n /**\n Move the cursor to this node's last child.\n */\n lastChild() { return this.enterChild(-1, 0, 4 /* Side.DontCare */); }\n /**\n Move the cursor to the first child that ends after `pos`.\n */\n childAfter(pos) { return this.enterChild(1, pos, 2 /* Side.After */); }\n /**\n Move to the last child that starts before `pos`.\n */\n childBefore(pos) { return this.enterChild(-1, pos, -2 /* Side.Before */); }\n /**\n Move the cursor to the child around `pos`. If side is -1 the\n child may end at that position, when 1 it may start there. This\n will also enter [overlaid](#common.MountedTree.overlay)\n [mounted](#common.NodeProp^mounted) trees unless `overlays` is\n set to false.\n */\n enter(pos, side, mode = this.mode) {\n if (!this.buffer)\n return this.yield(this._tree.enter(pos, side, mode));\n return mode & IterMode.ExcludeBuffers ? false : this.enterChild(1, pos, side);\n }\n /**\n Move to the node's parent node, if this isn't the top node.\n */\n parent() {\n if (!this.buffer)\n return this.yieldNode((this.mode & IterMode.IncludeAnonymous) ? this._tree._parent : this._tree.parent);\n if (this.stack.length)\n return this.yieldBuf(this.stack.pop());\n let parent = (this.mode & IterMode.IncludeAnonymous) ? this.buffer.parent : this.buffer.parent.nextSignificantParent();\n this.buffer = null;\n return this.yieldNode(parent);\n }\n /**\n @internal\n */\n sibling(dir) {\n if (!this.buffer)\n return !this._tree._parent ? false\n : this.yield(this._tree.index < 0 ? null\n : this._tree._parent.nextChild(this._tree.index + dir, dir, 0, 4 /* Side.DontCare */, this.mode));\n let { buffer } = this.buffer, d = this.stack.length - 1;\n if (dir < 0) {\n let parentStart = d < 0 ? 0 : this.stack[d] + 4;\n if (this.index != parentStart)\n return this.yieldBuf(buffer.findChild(parentStart, this.index, -1, 0, 4 /* Side.DontCare */));\n }\n else {\n let after = buffer.buffer[this.index + 3];\n if (after < (d < 0 ? buffer.buffer.length : buffer.buffer[this.stack[d] + 3]))\n return this.yieldBuf(after);\n }\n return d < 0 ? this.yield(this.buffer.parent.nextChild(this.buffer.index + dir, dir, 0, 4 /* Side.DontCare */, this.mode)) : false;\n }\n /**\n Move to this node's next sibling, if any.\n */\n nextSibling() { return this.sibling(1); }\n /**\n Move to this node's previous sibling, if any.\n */\n prevSibling() { return this.sibling(-1); }\n atLastNode(dir) {\n let index, parent, { buffer } = this;\n if (buffer) {\n if (dir > 0) {\n if (this.index < buffer.buffer.buffer.length)\n return false;\n }\n else {\n for (let i = 0; i < this.index; i++)\n if (buffer.buffer.buffer[i + 3] < this.index)\n return false;\n }\n ({ index, parent } = buffer);\n }\n else {\n ({ index, _parent: parent } = this._tree);\n }\n for (; parent; { index, _parent: parent } = parent) {\n if (index > -1)\n for (let i = index + dir, e = dir < 0 ? -1 : parent._tree.children.length; i != e; i += dir) {\n let child = parent._tree.children[i];\n if ((this.mode & IterMode.IncludeAnonymous) ||\n child instanceof TreeBuffer ||\n !child.type.isAnonymous ||\n hasChild(child))\n return false;\n }\n }\n return true;\n }\n move(dir, enter) {\n if (enter && this.enterChild(dir, 0, 4 /* Side.DontCare */))\n return true;\n for (;;) {\n if (this.sibling(dir))\n return true;\n if (this.atLastNode(dir) || !this.parent())\n return false;\n }\n }\n /**\n Move to the next node in a\n [pre-order](https://en.wikipedia.org/wiki/Tree_traversal#Pre-order,_NLR)\n traversal, going from a node to its first child or, if the\n current node is empty or `enter` is false, its next sibling or\n the next sibling of the first parent node that has one.\n */\n next(enter = true) { return this.move(1, enter); }\n /**\n Move to the next node in a last-to-first pre-order traversal. A\n node is followed by its last child or, if it has none, its\n previous sibling or the previous sibling of the first parent\n node that has one.\n */\n prev(enter = true) { return this.move(-1, enter); }\n /**\n Move the cursor to the innermost node that covers `pos`. If\n `side` is -1, it will enter nodes that end at `pos`. If it is 1,\n it will enter nodes that start at `pos`.\n */\n moveTo(pos, side = 0) {\n // Move up to a node that actually holds the position, if possible\n while (this.from == this.to ||\n (side < 1 ? this.from >= pos : this.from > pos) ||\n (side > -1 ? this.to <= pos : this.to < pos))\n if (!this.parent())\n break;\n // Then scan down into child nodes as far as possible\n while (this.enterChild(1, pos, side)) { }\n return this;\n }\n /**\n Get a [syntax node](#common.SyntaxNode) at the cursor's current\n position.\n */\n get node() {\n if (!this.buffer)\n return this._tree;\n let cache = this.bufferNode, result = null, depth = 0;\n if (cache && cache.context == this.buffer) {\n scan: for (let index = this.index, d = this.stack.length; d >= 0;) {\n for (let c = cache; c; c = c._parent)\n if (c.index == index) {\n if (index == this.index)\n return c;\n result = c;\n depth = d + 1;\n break scan;\n }\n index = this.stack[--d];\n }\n }\n for (let i = depth; i < this.stack.length; i++)\n result = new BufferNode(this.buffer, result, this.stack[i]);\n return this.bufferNode = new BufferNode(this.buffer, result, this.index);\n }\n /**\n Get the [tree](#common.Tree) that represents the current node, if\n any. Will return null when the node is in a [tree\n buffer](#common.TreeBuffer).\n */\n get tree() {\n return this.buffer ? null : this._tree._tree;\n }\n /**\n Iterate over the current node and all its descendants, calling\n `enter` when entering a node and `leave`, if given, when leaving\n one. When `enter` returns `false`, any children of that node are\n skipped, and `leave` isn't called for it.\n */\n iterate(enter, leave) {\n for (let depth = 0;;) {\n let mustLeave = false;\n if (this.type.isAnonymous || enter(this) !== false) {\n if (this.firstChild()) {\n depth++;\n continue;\n }\n if (!this.type.isAnonymous)\n mustLeave = true;\n }\n for (;;) {\n if (mustLeave && leave)\n leave(this);\n mustLeave = this.type.isAnonymous;\n if (!depth)\n return;\n if (this.nextSibling())\n break;\n this.parent();\n depth--;\n mustLeave = true;\n }\n }\n }\n /**\n Test whether the current node matches a given context—a sequence\n of direct parent node names. Empty strings in the context array\n are treated as wildcards.\n */\n matchContext(context) {\n if (!this.buffer)\n return matchNodeContext(this.node.parent, context);\n let { buffer } = this.buffer, { types } = buffer.set;\n for (let i = context.length - 1, d = this.stack.length - 1; i >= 0; d--) {\n if (d < 0)\n return matchNodeContext(this._tree, context, i);\n let type = types[buffer.buffer[this.stack[d]]];\n if (!type.isAnonymous) {\n if (context[i] && context[i] != type.name)\n return false;\n i--;\n }\n }\n return true;\n }\n}\nfunction hasChild(tree) {\n return tree.children.some(ch => ch instanceof TreeBuffer || !ch.type.isAnonymous || hasChild(ch));\n}\nfunction buildTree(data) {\n var _a;\n let { buffer, nodeSet, maxBufferLength = DefaultBufferLength, reused = [], minRepeatType = nodeSet.types.length } = data;\n let cursor = Array.isArray(buffer) ? new FlatBufferCursor(buffer, buffer.length) : buffer;\n let types = nodeSet.types;\n let contextHash = 0, lookAhead = 0;\n function takeNode(parentStart, minPos, children, positions, inRepeat, depth) {\n let { id, start, end, size } = cursor;\n let lookAheadAtStart = lookAhead, contextAtStart = contextHash;\n while (size < 0) {\n cursor.next();\n if (size == -1 /* SpecialRecord.Reuse */) {\n let node = reused[id];\n children.push(node);\n positions.push(start - parentStart);\n return;\n }\n else if (size == -3 /* SpecialRecord.ContextChange */) { // Context change\n contextHash = id;\n return;\n }\n else if (size == -4 /* SpecialRecord.LookAhead */) {\n lookAhead = id;\n return;\n }\n else {\n throw new RangeError(`Unrecognized record size: ${size}`);\n }\n }\n let type = types[id], node, buffer;\n let startPos = start - parentStart;\n if (end - start <= maxBufferLength && (buffer = findBufferSize(cursor.pos - minPos, inRepeat))) {\n // Small enough for a buffer, and no reused nodes inside\n let data = new Uint16Array(buffer.size - buffer.skip);\n let endPos = cursor.pos - buffer.size, index = data.length;\n while (cursor.pos > endPos)\n index = copyToBuffer(buffer.start, data, index);\n node = new TreeBuffer(data, end - buffer.start, nodeSet);\n startPos = buffer.start - parentStart;\n }\n else { // Make it a node\n let endPos = cursor.pos - size;\n cursor.next();\n let localChildren = [], localPositions = [];\n let localInRepeat = id >= minRepeatType ? id : -1;\n let lastGroup = 0, lastEnd = end;\n while (cursor.pos > endPos) {\n if (localInRepeat >= 0 && cursor.id == localInRepeat && cursor.size >= 0) {\n if (cursor.end <= lastEnd - maxBufferLength) {\n makeRepeatLeaf(localChildren, localPositions, start, lastGroup, cursor.end, lastEnd, localInRepeat, lookAheadAtStart, contextAtStart);\n lastGroup = localChildren.length;\n lastEnd = cursor.end;\n }\n cursor.next();\n }\n else if (depth > 2500 /* CutOff.Depth */) {\n takeFlatNode(start, endPos, localChildren, localPositions);\n }\n else {\n takeNode(start, endPos, localChildren, localPositions, localInRepeat, depth + 1);\n }\n }\n if (localInRepeat >= 0 && lastGroup > 0 && lastGroup < localChildren.length)\n makeRepeatLeaf(localChildren, localPositions, start, lastGroup, start, lastEnd, localInRepeat, lookAheadAtStart, contextAtStart);\n localChildren.reverse();\n localPositions.reverse();\n if (localInRepeat > -1 && lastGroup > 0) {\n let make = makeBalanced(type, contextAtStart);\n node = balanceRange(type, localChildren, localPositions, 0, localChildren.length, 0, end - start, make, make);\n }\n else {\n node = makeTree(type, localChildren, localPositions, end - start, lookAheadAtStart - end, contextAtStart);\n }\n }\n children.push(node);\n positions.push(startPos);\n }\n function takeFlatNode(parentStart, minPos, children, positions) {\n let nodes = []; // Temporary, inverted array of leaf nodes found, with absolute positions\n let nodeCount = 0, stopAt = -1;\n while (cursor.pos > minPos) {\n let { id, start, end, size } = cursor;\n if (size > 4) { // Not a leaf\n cursor.next();\n }\n else if (stopAt > -1 && start < stopAt) {\n break;\n }\n else {\n if (stopAt < 0)\n stopAt = end - maxBufferLength;\n nodes.push(id, start, end);\n nodeCount++;\n cursor.next();\n }\n }\n if (nodeCount) {\n let buffer = new Uint16Array(nodeCount * 4);\n let start = nodes[nodes.length - 2];\n for (let i = nodes.length - 3, j = 0; i >= 0; i -= 3) {\n buffer[j++] = nodes[i];\n buffer[j++] = nodes[i + 1] - start;\n buffer[j++] = nodes[i + 2] - start;\n buffer[j++] = j;\n }\n children.push(new TreeBuffer(buffer, nodes[2] - start, nodeSet));\n positions.push(start - parentStart);\n }\n }\n function makeBalanced(type, contextHash) {\n return (children, positions, length) => {\n let lookAhead = 0, lastI = children.length - 1, last, lookAheadProp;\n if (lastI >= 0 && (last = children[lastI]) instanceof Tree) {\n if (!lastI && last.type == type && last.length == length)\n return last;\n if (lookAheadProp = last.prop(NodeProp.lookAhead))\n lookAhead = positions[lastI] + last.length + lookAheadProp;\n }\n return makeTree(type, children, positions, length, lookAhead, contextHash);\n };\n }\n function makeRepeatLeaf(children, positions, base, i, from, to, type, lookAhead, contextHash) {\n let localChildren = [], localPositions = [];\n while (children.length > i) {\n localChildren.push(children.pop());\n localPositions.push(positions.pop() + base - from);\n }\n children.push(makeTree(nodeSet.types[type], localChildren, localPositions, to - from, lookAhead - to, contextHash));\n positions.push(from - base);\n }\n function makeTree(type, children, positions, length, lookAhead, contextHash, props) {\n if (contextHash) {\n let pair = [NodeProp.contextHash, contextHash];\n props = props ? [pair].concat(props) : [pair];\n }\n if (lookAhead > 25) {\n let pair = [NodeProp.lookAhead, lookAhead];\n props = props ? [pair].concat(props) : [pair];\n }\n return new Tree(type, children, positions, length, props);\n }\n function findBufferSize(maxSize, inRepeat) {\n // Scan through the buffer to find previous siblings that fit\n // together in a TreeBuffer, and don't contain any reused nodes\n // (which can't be stored in a buffer).\n // If `inRepeat` is > -1, ignore node boundaries of that type for\n // nesting, but make sure the end falls either at the start\n // (`maxSize`) or before such a node.\n let fork = cursor.fork();\n let size = 0, start = 0, skip = 0, minStart = fork.end - maxBufferLength;\n let result = { size: 0, start: 0, skip: 0 };\n scan: for (let minPos = fork.pos - maxSize; fork.pos > minPos;) {\n let nodeSize = fork.size;\n // Pretend nested repeat nodes of the same type don't exist\n if (fork.id == inRepeat && nodeSize >= 0) {\n // Except that we store the current state as a valid return\n // value.\n result.size = size;\n result.start = start;\n result.skip = skip;\n skip += 4;\n size += 4;\n fork.next();\n continue;\n }\n let startPos = fork.pos - nodeSize;\n if (nodeSize < 0 || startPos < minPos || fork.start < minStart)\n break;\n let localSkipped = fork.id >= minRepeatType ? 4 : 0;\n let nodeStart = fork.start;\n fork.next();\n while (fork.pos > startPos) {\n if (fork.size < 0) {\n if (fork.size == -3 /* SpecialRecord.ContextChange */)\n localSkipped += 4;\n else\n break scan;\n }\n else if (fork.id >= minRepeatType) {\n localSkipped += 4;\n }\n fork.next();\n }\n start = nodeStart;\n size += nodeSize;\n skip += localSkipped;\n }\n if (inRepeat < 0 || size == maxSize) {\n result.size = size;\n result.start = start;\n result.skip = skip;\n }\n return result.size > 4 ? result : undefined;\n }\n function copyToBuffer(bufferStart, buffer, index) {\n let { id, start, end, size } = cursor;\n cursor.next();\n if (size >= 0 && id < minRepeatType) {\n let startIndex = index;\n if (size > 4) {\n let endPos = cursor.pos - (size - 4);\n while (cursor.pos > endPos)\n index = copyToBuffer(bufferStart, buffer, index);\n }\n buffer[--index] = startIndex;\n buffer[--index] = end - bufferStart;\n buffer[--index] = start - bufferStart;\n buffer[--index] = id;\n }\n else if (size == -3 /* SpecialRecord.ContextChange */) {\n contextHash = id;\n }\n else if (size == -4 /* SpecialRecord.LookAhead */) {\n lookAhead = id;\n }\n return index;\n }\n let children = [], positions = [];\n while (cursor.pos > 0)\n takeNode(data.start || 0, data.bufferStart || 0, children, positions, -1, 0);\n let length = (_a = data.length) !== null && _a !== void 0 ? _a : (children.length ? positions[0] + children[0].length : 0);\n return new Tree(types[data.topID], children.reverse(), positions.reverse(), length);\n}\nconst nodeSizeCache = new WeakMap;\nfunction nodeSize(balanceType, node) {\n if (!balanceType.isAnonymous || node instanceof TreeBuffer || node.type != balanceType)\n return 1;\n let size = nodeSizeCache.get(node);\n if (size == null) {\n size = 1;\n for (let child of node.children) {\n if (child.type != balanceType || !(child instanceof Tree)) {\n size = 1;\n break;\n }\n size += nodeSize(balanceType, child);\n }\n nodeSizeCache.set(node, size);\n }\n return size;\n}\nfunction balanceRange(\n// The type the balanced tree's inner nodes.\nbalanceType, \n// The direct children and their positions\nchildren, positions, \n// The index range in children/positions to use\nfrom, to, \n// The start position of the nodes, relative to their parent.\nstart, \n// Length of the outer node\nlength, \n// Function to build the top node of the balanced tree\nmkTop, \n// Function to build internal nodes for the balanced tree\nmkTree) {\n let total = 0;\n for (let i = from; i < to; i++)\n total += nodeSize(balanceType, children[i]);\n let maxChild = Math.ceil((total * 1.5) / 8 /* Balance.BranchFactor */);\n let localChildren = [], localPositions = [];\n function divide(children, positions, from, to, offset) {\n for (let i = from; i < to;) {\n let groupFrom = i, groupStart = positions[i], groupSize = nodeSize(balanceType, children[i]);\n i++;\n for (; i < to; i++) {\n let nextSize = nodeSize(balanceType, children[i]);\n if (groupSize + nextSize >= maxChild)\n break;\n groupSize += nextSize;\n }\n if (i == groupFrom + 1) {\n if (groupSize > maxChild) {\n let only = children[groupFrom]; // Only trees can have a size > 1\n divide(only.children, only.positions, 0, only.children.length, positions[groupFrom] + offset);\n continue;\n }\n localChildren.push(children[groupFrom]);\n }\n else {\n let length = positions[i - 1] + children[i - 1].length - groupStart;\n localChildren.push(balanceRange(balanceType, children, positions, groupFrom, i, groupStart, length, null, mkTree));\n }\n localPositions.push(groupStart + offset - start);\n }\n }\n divide(children, positions, from, to, 0);\n return (mkTop || mkTree)(localChildren, localPositions, length);\n}\n/**\nProvides a way to associate values with pieces of trees. As long\nas that part of the tree is reused, the associated values can be\nretrieved from an updated tree.\n*/\nclass NodeWeakMap {\n constructor() {\n this.map = new WeakMap();\n }\n setBuffer(buffer, index, value) {\n let inner = this.map.get(buffer);\n if (!inner)\n this.map.set(buffer, inner = new Map);\n inner.set(index, value);\n }\n getBuffer(buffer, index) {\n let inner = this.map.get(buffer);\n return inner && inner.get(index);\n }\n /**\n Set the value for this syntax node.\n */\n set(node, value) {\n if (node instanceof BufferNode)\n this.setBuffer(node.context.buffer, node.index, value);\n else if (node instanceof TreeNode)\n this.map.set(node.tree, value);\n }\n /**\n Retrieve value for this syntax node, if it exists in the map.\n */\n get(node) {\n return node instanceof BufferNode ? this.getBuffer(node.context.buffer, node.index)\n : node instanceof TreeNode ? this.map.get(node.tree) : undefined;\n }\n /**\n Set the value for the node that a cursor currently points to.\n */\n cursorSet(cursor, value) {\n if (cursor.buffer)\n this.setBuffer(cursor.buffer.buffer, cursor.index, value);\n else\n this.map.set(cursor.tree, value);\n }\n /**\n Retrieve the value for the node that a cursor currently points\n to.\n */\n cursorGet(cursor) {\n return cursor.buffer ? this.getBuffer(cursor.buffer.buffer, cursor.index) : this.map.get(cursor.tree);\n }\n}\n\n/**\nTree fragments are used during [incremental\nparsing](#common.Parser.startParse) to track parts of old trees\nthat can be reused in a new parse. An array of fragments is used\nto track regions of an old tree whose nodes might be reused in new\nparses. Use the static\n[`applyChanges`](#common.TreeFragment^applyChanges) method to\nupdate fragments for document changes.\n*/\nclass TreeFragment {\n /**\n Construct a tree fragment. You'll usually want to use\n [`addTree`](#common.TreeFragment^addTree) and\n [`applyChanges`](#common.TreeFragment^applyChanges) instead of\n calling this directly.\n */\n constructor(\n /**\n The start of the unchanged range pointed to by this fragment.\n This refers to an offset in the _updated_ document (as opposed\n to the original tree).\n */\n from, \n /**\n The end of the unchanged range.\n */\n to, \n /**\n The tree that this fragment is based on.\n */\n tree, \n /**\n The offset between the fragment's tree and the document that\n this fragment can be used against. Add this when going from\n document to tree positions, subtract it to go from tree to\n document positions.\n */\n offset, openStart = false, openEnd = false) {\n this.from = from;\n this.to = to;\n this.tree = tree;\n this.offset = offset;\n this.open = (openStart ? 1 /* Open.Start */ : 0) | (openEnd ? 2 /* Open.End */ : 0);\n }\n /**\n Whether the start of the fragment represents the start of a\n parse, or the end of a change. (In the second case, it may not\n be safe to reuse some nodes at the start, depending on the\n parsing algorithm.)\n */\n get openStart() { return (this.open & 1 /* Open.Start */) > 0; }\n /**\n Whether the end of the fragment represents the end of a\n full-document parse, or the start of a change.\n */\n get openEnd() { return (this.open & 2 /* Open.End */) > 0; }\n /**\n Create a set of fragments from a freshly parsed tree, or update\n an existing set of fragments by replacing the ones that overlap\n with a tree with content from the new tree. When `partial` is\n true, the parse is treated as incomplete, and the resulting\n fragment has [`openEnd`](#common.TreeFragment.openEnd) set to\n true.\n */\n static addTree(tree, fragments = [], partial = false) {\n let result = [new TreeFragment(0, tree.length, tree, 0, false, partial)];\n for (let f of fragments)\n if (f.to > tree.length)\n result.push(f);\n return result;\n }\n /**\n Apply a set of edits to an array of fragments, removing or\n splitting fragments as necessary to remove edited ranges, and\n adjusting offsets for fragments that moved.\n */\n static applyChanges(fragments, changes, minGap = 128) {\n if (!changes.length)\n return fragments;\n let result = [];\n let fI = 1, nextF = fragments.length ? fragments[0] : null;\n for (let cI = 0, pos = 0, off = 0;; cI++) {\n let nextC = cI < changes.length ? changes[cI] : null;\n let nextPos = nextC ? nextC.fromA : 1e9;\n if (nextPos - pos >= minGap)\n while (nextF && nextF.from < nextPos) {\n let cut = nextF;\n if (pos >= cut.from || nextPos <= cut.to || off) {\n let fFrom = Math.max(cut.from, pos) - off, fTo = Math.min(cut.to, nextPos) - off;\n cut = fFrom >= fTo ? null : new TreeFragment(fFrom, fTo, cut.tree, cut.offset + off, cI > 0, !!nextC);\n }\n if (cut)\n result.push(cut);\n if (nextF.to > nextPos)\n break;\n nextF = fI < fragments.length ? fragments[fI++] : null;\n }\n if (!nextC)\n break;\n pos = nextC.toA;\n off = nextC.toA - nextC.toB;\n }\n return result;\n }\n}\n/**\nA superclass that parsers should extend.\n*/\nclass Parser {\n /**\n Start a parse, returning a [partial parse](#common.PartialParse)\n object. [`fragments`](#common.TreeFragment) can be passed in to\n make the parse incremental.\n \n By default, the entire input is parsed. You can pass `ranges`,\n which should be a sorted array of non-empty, non-overlapping\n ranges, to parse only those ranges. The tree returned in that\n case will start at `ranges[0].from`.\n */\n startParse(input, fragments, ranges) {\n if (typeof input == \"string\")\n input = new StringInput(input);\n ranges = !ranges ? [new Range(0, input.length)] : ranges.length ? ranges.map(r => new Range(r.from, r.to)) : [new Range(0, 0)];\n return this.createParse(input, fragments || [], ranges);\n }\n /**\n Run a full parse, returning the resulting tree.\n */\n parse(input, fragments, ranges) {\n let parse = this.startParse(input, fragments, ranges);\n for (;;) {\n let done = parse.advance();\n if (done)\n return done;\n }\n }\n}\nclass StringInput {\n constructor(string) {\n this.string = string;\n }\n get length() { return this.string.length; }\n chunk(from) { return this.string.slice(from); }\n get lineChunks() { return false; }\n read(from, to) { return this.string.slice(from, to); }\n}\n\n/**\nCreate a parse wrapper that, after the inner parse completes,\nscans its tree for mixed language regions with the `nest`\nfunction, runs the resulting [inner parses](#common.NestedParse),\nand then [mounts](#common.NodeProp^mounted) their results onto the\ntree.\n*/\nfunction parseMixed(nest) {\n return (parse, input, fragments, ranges) => new MixedParse(parse, nest, input, fragments, ranges);\n}\nclass InnerParse {\n constructor(parser, parse, overlay, target, from) {\n this.parser = parser;\n this.parse = parse;\n this.overlay = overlay;\n this.target = target;\n this.from = from;\n }\n}\nfunction checkRanges(ranges) {\n if (!ranges.length || ranges.some(r => r.from >= r.to))\n throw new RangeError(\"Invalid inner parse ranges given: \" + JSON.stringify(ranges));\n}\nclass ActiveOverlay {\n constructor(parser, predicate, mounts, index, start, target, prev) {\n this.parser = parser;\n this.predicate = predicate;\n this.mounts = mounts;\n this.index = index;\n this.start = start;\n this.target = target;\n this.prev = prev;\n this.depth = 0;\n this.ranges = [];\n }\n}\nconst stoppedInner = new NodeProp({ perNode: true });\nclass MixedParse {\n constructor(base, nest, input, fragments, ranges) {\n this.nest = nest;\n this.input = input;\n this.fragments = fragments;\n this.ranges = ranges;\n this.inner = [];\n this.innerDone = 0;\n this.baseTree = null;\n this.stoppedAt = null;\n this.baseParse = base;\n }\n advance() {\n if (this.baseParse) {\n let done = this.baseParse.advance();\n if (!done)\n return null;\n this.baseParse = null;\n this.baseTree = done;\n this.startInner();\n if (this.stoppedAt != null)\n for (let inner of this.inner)\n inner.parse.stopAt(this.stoppedAt);\n }\n if (this.innerDone == this.inner.length) {\n let result = this.baseTree;\n if (this.stoppedAt != null)\n result = new Tree(result.type, result.children, result.positions, result.length, result.propValues.concat([[stoppedInner, this.stoppedAt]]));\n return result;\n }\n let inner = this.inner[this.innerDone], done = inner.parse.advance();\n if (done) {\n this.innerDone++;\n // This is a somewhat dodgy but super helpful hack where we\n // patch up nodes created by the inner parse (and thus\n // presumably not aliased anywhere else) to hold the information\n // about the inner parse.\n let props = Object.assign(Object.create(null), inner.target.props);\n props[NodeProp.mounted.id] = new MountedTree(done, inner.overlay, inner.parser);\n inner.target.props = props;\n }\n return null;\n }\n get parsedPos() {\n if (this.baseParse)\n return 0;\n let pos = this.input.length;\n for (let i = this.innerDone; i < this.inner.length; i++) {\n if (this.inner[i].from < pos)\n pos = Math.min(pos, this.inner[i].parse.parsedPos);\n }\n return pos;\n }\n stopAt(pos) {\n this.stoppedAt = pos;\n if (this.baseParse)\n this.baseParse.stopAt(pos);\n else\n for (let i = this.innerDone; i < this.inner.length; i++)\n this.inner[i].parse.stopAt(pos);\n }\n startInner() {\n let fragmentCursor = new FragmentCursor(this.fragments);\n let overlay = null;\n let covered = null;\n let cursor = new TreeCursor(new TreeNode(this.baseTree, this.ranges[0].from, 0, null), IterMode.IncludeAnonymous | IterMode.IgnoreMounts);\n scan: for (let nest, isCovered;;) {\n let enter = true, range;\n if (this.stoppedAt != null && cursor.from >= this.stoppedAt) {\n enter = false;\n }\n else if (fragmentCursor.hasNode(cursor)) {\n if (overlay) {\n let match = overlay.mounts.find(m => m.frag.from <= cursor.from && m.frag.to >= cursor.to && m.mount.overlay);\n if (match)\n for (let r of match.mount.overlay) {\n let from = r.from + match.pos, to = r.to + match.pos;\n if (from >= cursor.from && to <= cursor.to && !overlay.ranges.some(r => r.from < to && r.to > from))\n overlay.ranges.push({ from, to });\n }\n }\n enter = false;\n }\n else if (covered && (isCovered = checkCover(covered.ranges, cursor.from, cursor.to))) {\n enter = isCovered != 2 /* Cover.Full */;\n }\n else if (!cursor.type.isAnonymous && (nest = this.nest(cursor, this.input)) &&\n (cursor.from < cursor.to || !nest.overlay)) {\n if (!cursor.tree)\n materialize(cursor);\n let oldMounts = fragmentCursor.findMounts(cursor.from, nest.parser);\n if (typeof nest.overlay == \"function\") {\n overlay = new ActiveOverlay(nest.parser, nest.overlay, oldMounts, this.inner.length, cursor.from, cursor.tree, overlay);\n }\n else {\n let ranges = punchRanges(this.ranges, nest.overlay ||\n (cursor.from < cursor.to ? [new Range(cursor.from, cursor.to)] : []));\n if (ranges.length)\n checkRanges(ranges);\n if (ranges.length || !nest.overlay)\n this.inner.push(new InnerParse(nest.parser, ranges.length ? nest.parser.startParse(this.input, enterFragments(oldMounts, ranges), ranges)\n : nest.parser.startParse(\"\"), nest.overlay ? nest.overlay.map(r => new Range(r.from - cursor.from, r.to - cursor.from)) : null, cursor.tree, ranges.length ? ranges[0].from : cursor.from));\n if (!nest.overlay)\n enter = false;\n else if (ranges.length)\n covered = { ranges, depth: 0, prev: covered };\n }\n }\n else if (overlay && (range = overlay.predicate(cursor))) {\n if (range === true)\n range = new Range(cursor.from, cursor.to);\n if (range.from < range.to) {\n let last = overlay.ranges.length - 1;\n if (last >= 0 && overlay.ranges[last].to == range.from)\n overlay.ranges[last] = { from: overlay.ranges[last].from, to: range.to };\n else\n overlay.ranges.push(range);\n }\n }\n if (enter && cursor.firstChild()) {\n if (overlay)\n overlay.depth++;\n if (covered)\n covered.depth++;\n }\n else {\n for (;;) {\n if (cursor.nextSibling())\n break;\n if (!cursor.parent())\n break scan;\n if (overlay && !--overlay.depth) {\n let ranges = punchRanges(this.ranges, overlay.ranges);\n if (ranges.length) {\n checkRanges(ranges);\n this.inner.splice(overlay.index, 0, new InnerParse(overlay.parser, overlay.parser.startParse(this.input, enterFragments(overlay.mounts, ranges), ranges), overlay.ranges.map(r => new Range(r.from - overlay.start, r.to - overlay.start)), overlay.target, ranges[0].from));\n }\n overlay = overlay.prev;\n }\n if (covered && !--covered.depth)\n covered = covered.prev;\n }\n }\n }\n }\n}\nfunction checkCover(covered, from, to) {\n for (let range of covered) {\n if (range.from >= to)\n break;\n if (range.to > from)\n return range.from <= from && range.to >= to ? 2 /* Cover.Full */ : 1 /* Cover.Partial */;\n }\n return 0 /* Cover.None */;\n}\n// Take a piece of buffer and convert it into a stand-alone\n// TreeBuffer.\nfunction sliceBuf(buf, startI, endI, nodes, positions, off) {\n if (startI < endI) {\n let from = buf.buffer[startI + 1];\n nodes.push(buf.slice(startI, endI, from));\n positions.push(from - off);\n }\n}\n// This function takes a node that's in a buffer, and converts it, and\n// its parent buffer nodes, into a Tree. This is again acting on the\n// assumption that the trees and buffers have been constructed by the\n// parse that was ran via the mix parser, and thus aren't shared with\n// any other code, making violations of the immutability safe.\nfunction materialize(cursor) {\n let { node } = cursor, stack = [];\n let buffer = node.context.buffer;\n // Scan up to the nearest tree\n do {\n stack.push(cursor.index);\n cursor.parent();\n } while (!cursor.tree);\n // Find the index of the buffer in that tree\n let base = cursor.tree, i = base.children.indexOf(buffer);\n let buf = base.children[i], b = buf.buffer, newStack = [i];\n // Split a level in the buffer, putting the nodes before and after\n // the child that contains `node` into new buffers.\n function split(startI, endI, type, innerOffset, length, stackPos) {\n let targetI = stack[stackPos];\n let children = [], positions = [];\n sliceBuf(buf, startI, targetI, children, positions, innerOffset);\n let from = b[targetI + 1], to = b[targetI + 2];\n newStack.push(children.length);\n let child = stackPos\n ? split(targetI + 4, b[targetI + 3], buf.set.types[b[targetI]], from, to - from, stackPos - 1)\n : node.toTree();\n children.push(child);\n positions.push(from - innerOffset);\n sliceBuf(buf, b[targetI + 3], endI, children, positions, innerOffset);\n return new Tree(type, children, positions, length);\n }\n base.children[i] = split(0, b.length, NodeType.none, 0, buf.length, stack.length - 1);\n // Move the cursor back to the target node\n for (let index of newStack) {\n let tree = cursor.tree.children[index], pos = cursor.tree.positions[index];\n cursor.yield(new TreeNode(tree, pos + cursor.from, index, cursor._tree));\n }\n}\nclass StructureCursor {\n constructor(root, offset) {\n this.offset = offset;\n this.done = false;\n this.cursor = root.cursor(IterMode.IncludeAnonymous | IterMode.IgnoreMounts);\n }\n // Move to the first node (in pre-order) that starts at or after `pos`.\n moveTo(pos) {\n let { cursor } = this, p = pos - this.offset;\n while (!this.done && cursor.from < p) {\n if (cursor.to >= pos && cursor.enter(p, 1, IterMode.IgnoreOverlays | IterMode.ExcludeBuffers)) ;\n else if (!cursor.next(false))\n this.done = true;\n }\n }\n hasNode(cursor) {\n this.moveTo(cursor.from);\n if (!this.done && this.cursor.from + this.offset == cursor.from && this.cursor.tree) {\n for (let tree = this.cursor.tree;;) {\n if (tree == cursor.tree)\n return true;\n if (tree.children.length && tree.positions[0] == 0 && tree.children[0] instanceof Tree)\n tree = tree.children[0];\n else\n break;\n }\n }\n return false;\n }\n}\nclass FragmentCursor {\n constructor(fragments) {\n var _a;\n this.fragments = fragments;\n this.curTo = 0;\n this.fragI = 0;\n if (fragments.length) {\n let first = this.curFrag = fragments[0];\n this.curTo = (_a = first.tree.prop(stoppedInner)) !== null && _a !== void 0 ? _a : first.to;\n this.inner = new StructureCursor(first.tree, -first.offset);\n }\n else {\n this.curFrag = this.inner = null;\n }\n }\n hasNode(node) {\n while (this.curFrag && node.from >= this.curTo)\n this.nextFrag();\n return this.curFrag && this.curFrag.from <= node.from && this.curTo >= node.to && this.inner.hasNode(node);\n }\n nextFrag() {\n var _a;\n this.fragI++;\n if (this.fragI == this.fragments.length) {\n this.curFrag = this.inner = null;\n }\n else {\n let frag = this.curFrag = this.fragments[this.fragI];\n this.curTo = (_a = frag.tree.prop(stoppedInner)) !== null && _a !== void 0 ? _a : frag.to;\n this.inner = new StructureCursor(frag.tree, -frag.offset);\n }\n }\n findMounts(pos, parser) {\n var _a;\n let result = [];\n if (this.inner) {\n this.inner.cursor.moveTo(pos, 1);\n for (let pos = this.inner.cursor.node; pos; pos = pos.parent) {\n let mount = (_a = pos.tree) === null || _a === void 0 ? void 0 : _a.prop(NodeProp.mounted);\n if (mount && mount.parser == parser) {\n for (let i = this.fragI; i < this.fragments.length; i++) {\n let frag = this.fragments[i];\n if (frag.from >= pos.to)\n break;\n if (frag.tree == this.curFrag.tree)\n result.push({\n frag,\n pos: pos.from - frag.offset,\n mount\n });\n }\n }\n }\n }\n return result;\n }\n}\nfunction punchRanges(outer, ranges) {\n let copy = null, current = ranges;\n for (let i = 1, j = 0; i < outer.length; i++) {\n let gapFrom = outer[i - 1].to, gapTo = outer[i].from;\n for (; j < current.length; j++) {\n let r = current[j];\n if (r.from >= gapTo)\n break;\n if (r.to <= gapFrom)\n continue;\n if (!copy)\n current = copy = ranges.slice();\n if (r.from < gapFrom) {\n copy[j] = new Range(r.from, gapFrom);\n if (r.to > gapTo)\n copy.splice(j + 1, 0, new Range(gapTo, r.to));\n }\n else if (r.to > gapTo) {\n copy[j--] = new Range(gapTo, r.to);\n }\n else {\n copy.splice(j--, 1);\n }\n }\n }\n return current;\n}\nfunction findCoverChanges(a, b, from, to) {\n let iA = 0, iB = 0, inA = false, inB = false, pos = -1e9;\n let result = [];\n for (;;) {\n let nextA = iA == a.length ? 1e9 : inA ? a[iA].to : a[iA].from;\n let nextB = iB == b.length ? 1e9 : inB ? b[iB].to : b[iB].from;\n if (inA != inB) {\n let start = Math.max(pos, from), end = Math.min(nextA, nextB, to);\n if (start < end)\n result.push(new Range(start, end));\n }\n pos = Math.min(nextA, nextB);\n if (pos == 1e9)\n break;\n if (nextA == pos) {\n if (!inA)\n inA = true;\n else {\n inA = false;\n iA++;\n }\n }\n if (nextB == pos) {\n if (!inB)\n inB = true;\n else {\n inB = false;\n iB++;\n }\n }\n }\n return result;\n}\n// Given a number of fragments for the outer tree, and a set of ranges\n// to parse, find fragments for inner trees mounted around those\n// ranges, if any.\nfunction enterFragments(mounts, ranges) {\n let result = [];\n for (let { pos, mount, frag } of mounts) {\n let startPos = pos + (mount.overlay ? mount.overlay[0].from : 0), endPos = startPos + mount.tree.length;\n let from = Math.max(frag.from, startPos), to = Math.min(frag.to, endPos);\n if (mount.overlay) {\n let overlay = mount.overlay.map(r => new Range(r.from + pos, r.to + pos));\n let changes = findCoverChanges(ranges, overlay, from, to);\n for (let i = 0, pos = from;; i++) {\n let last = i == changes.length, end = last ? to : changes[i].from;\n if (end > pos)\n result.push(new TreeFragment(pos, end, mount.tree, -startPos, frag.from >= pos || frag.openStart, frag.to <= end || frag.openEnd));\n if (last)\n break;\n pos = changes[i].to;\n }\n }\n else {\n result.push(new TreeFragment(from, to, mount.tree, -startPos, frag.from >= startPos || frag.openStart, frag.to <= endPos || frag.openEnd));\n }\n }\n return result;\n}\n\nexport { DefaultBufferLength, IterMode, MountedTree, NodeProp, NodeSet, NodeType, NodeWeakMap, Parser, Tree, TreeBuffer, TreeCursor, TreeFragment, parseMixed };\n","import { Parser, NodeProp, NodeSet, NodeType, DefaultBufferLength, Tree, IterMode } from '@lezer/common';\n\n/**\nA parse stack. These are used internally by the parser to track\nparsing progress. They also provide some properties and methods\nthat external code such as a tokenizer can use to get information\nabout the parse state.\n*/\nclass Stack {\n /**\n @internal\n */\n constructor(\n /**\n The parse that this stack is part of @internal\n */\n p, \n /**\n Holds state, input pos, buffer index triplets for all but the\n top state @internal\n */\n stack, \n /**\n The current parse state @internal\n */\n state, \n // The position at which the next reduce should take place. This\n // can be less than `this.pos` when skipped expressions have been\n // added to the stack (which should be moved outside of the next\n // reduction)\n /**\n @internal\n */\n reducePos, \n /**\n The input position up to which this stack has parsed.\n */\n pos, \n /**\n The dynamic score of the stack, including dynamic precedence\n and error-recovery penalties\n @internal\n */\n score, \n // The output buffer. Holds (type, start, end, size) quads\n // representing nodes created by the parser, where `size` is\n // amount of buffer array entries covered by this node.\n /**\n @internal\n */\n buffer, \n // The base offset of the buffer. When stacks are split, the split\n // instance shared the buffer history with its parent up to\n // `bufferBase`, which is the absolute offset (including the\n // offset of previous splits) into the buffer at which this stack\n // starts writing.\n /**\n @internal\n */\n bufferBase, \n /**\n @internal\n */\n curContext, \n /**\n @internal\n */\n lookAhead = 0, \n // A parent stack from which this was split off, if any. This is\n // set up so that it always points to a stack that has some\n // additional buffer content, never to a stack with an equal\n // `bufferBase`.\n /**\n @internal\n */\n parent) {\n this.p = p;\n this.stack = stack;\n this.state = state;\n this.reducePos = reducePos;\n this.pos = pos;\n this.score = score;\n this.buffer = buffer;\n this.bufferBase = bufferBase;\n this.curContext = curContext;\n this.lookAhead = lookAhead;\n this.parent = parent;\n }\n /**\n @internal\n */\n toString() {\n return `[${this.stack.filter((_, i) => i % 3 == 0).concat(this.state)}]@${this.pos}${this.score ? \"!\" + this.score : \"\"}`;\n }\n // Start an empty stack\n /**\n @internal\n */\n static start(p, state, pos = 0) {\n let cx = p.parser.context;\n return new Stack(p, [], state, pos, pos, 0, [], 0, cx ? new StackContext(cx, cx.start) : null, 0, null);\n }\n /**\n The stack's current [context](#lr.ContextTracker) value, if\n any. Its type will depend on the context tracker's type\n parameter, or it will be `null` if there is no context\n tracker.\n */\n get context() { return this.curContext ? this.curContext.context : null; }\n // Push a state onto the stack, tracking its start position as well\n // as the buffer base at that point.\n /**\n @internal\n */\n pushState(state, start) {\n this.stack.push(this.state, start, this.bufferBase + this.buffer.length);\n this.state = state;\n }\n // Apply a reduce action\n /**\n @internal\n */\n reduce(action) {\n var _a;\n let depth = action >> 19 /* Action.ReduceDepthShift */, type = action & 65535 /* Action.ValueMask */;\n let { parser } = this.p;\n let lookaheadRecord = this.reducePos < this.pos - 25 /* Lookahead.Margin */;\n if (lookaheadRecord)\n this.setLookAhead(this.pos);\n let dPrec = parser.dynamicPrecedence(type);\n if (dPrec)\n this.score += dPrec;\n if (depth == 0) {\n this.pushState(parser.getGoto(this.state, type, true), this.reducePos);\n // Zero-depth reductions are a special case—they add stuff to\n // the stack without popping anything off.\n if (type < parser.minRepeatTerm)\n this.storeNode(type, this.reducePos, this.reducePos, lookaheadRecord ? 8 : 4, true);\n this.reduceContext(type, this.reducePos);\n return;\n }\n // Find the base index into `this.stack`, content after which will\n // be dropped. Note that with `StayFlag` reductions we need to\n // consume two extra frames (the dummy parent node for the skipped\n // expression and the state that we'll be staying in, which should\n // be moved to `this.state`).\n let base = this.stack.length - ((depth - 1) * 3) - (action & 262144 /* Action.StayFlag */ ? 6 : 0);\n let start = base ? this.stack[base - 2] : this.p.ranges[0].from, size = this.reducePos - start;\n // This is a kludge to try and detect overly deep left-associative\n // trees, which will not increase the parse stack depth and thus\n // won't be caught by the regular stack-depth limit check.\n if (size >= 2000 /* Recover.MinBigReduction */ && !((_a = this.p.parser.nodeSet.types[type]) === null || _a === void 0 ? void 0 : _a.isAnonymous)) {\n if (start == this.p.lastBigReductionStart) {\n this.p.bigReductionCount++;\n this.p.lastBigReductionSize = size;\n }\n else if (this.p.lastBigReductionSize < size) {\n this.p.bigReductionCount = 1;\n this.p.lastBigReductionStart = start;\n this.p.lastBigReductionSize = size;\n }\n }\n let bufferBase = base ? this.stack[base - 1] : 0, count = this.bufferBase + this.buffer.length - bufferBase;\n // Store normal terms or `R -> R R` repeat reductions\n if (type < parser.minRepeatTerm || (action & 131072 /* Action.RepeatFlag */)) {\n let pos = parser.stateFlag(this.state, 1 /* StateFlag.Skipped */) ? this.pos : this.reducePos;\n this.storeNode(type, start, pos, count + 4, true);\n }\n if (action & 262144 /* Action.StayFlag */) {\n this.state = this.stack[base];\n }\n else {\n let baseStateID = this.stack[base - 3];\n this.state = parser.getGoto(baseStateID, type, true);\n }\n while (this.stack.length > base)\n this.stack.pop();\n this.reduceContext(type, start);\n }\n // Shift a value into the buffer\n /**\n @internal\n */\n storeNode(term, start, end, size = 4, mustSink = false) {\n if (term == 0 /* Term.Err */ &&\n (!this.stack.length || this.stack[this.stack.length - 1] < this.buffer.length + this.bufferBase)) {\n // Try to omit/merge adjacent error nodes\n let cur = this, top = this.buffer.length;\n if (top == 0 && cur.parent) {\n top = cur.bufferBase - cur.parent.bufferBase;\n cur = cur.parent;\n }\n if (top > 0 && cur.buffer[top - 4] == 0 /* Term.Err */ && cur.buffer[top - 1] > -1) {\n if (start == end)\n return;\n if (cur.buffer[top - 2] >= start) {\n cur.buffer[top - 2] = end;\n return;\n }\n }\n }\n if (!mustSink || this.pos == end) { // Simple case, just append\n this.buffer.push(term, start, end, size);\n }\n else { // There may be skipped nodes that have to be moved forward\n let index = this.buffer.length;\n if (index > 0 && this.buffer[index - 4] != 0 /* Term.Err */) {\n let mustMove = false;\n for (let scan = index; scan > 0 && this.buffer[scan - 2] > end; scan -= 4) {\n if (this.buffer[scan - 1] >= 0) {\n mustMove = true;\n break;\n }\n }\n if (mustMove)\n while (index > 0 && this.buffer[index - 2] > end) {\n // Move this record forward\n this.buffer[index] = this.buffer[index - 4];\n this.buffer[index + 1] = this.buffer[index - 3];\n this.buffer[index + 2] = this.buffer[index - 2];\n this.buffer[index + 3] = this.buffer[index - 1];\n index -= 4;\n if (size > 4)\n size -= 4;\n }\n }\n this.buffer[index] = term;\n this.buffer[index + 1] = start;\n this.buffer[index + 2] = end;\n this.buffer[index + 3] = size;\n }\n }\n // Apply a shift action\n /**\n @internal\n */\n shift(action, type, start, end) {\n if (action & 131072 /* Action.GotoFlag */) {\n this.pushState(action & 65535 /* Action.ValueMask */, this.pos);\n }\n else if ((action & 262144 /* Action.StayFlag */) == 0) { // Regular shift\n let nextState = action, { parser } = this.p;\n if (end > this.pos || type <= parser.maxNode) {\n this.pos = end;\n if (!parser.stateFlag(nextState, 1 /* StateFlag.Skipped */))\n this.reducePos = end;\n }\n this.pushState(nextState, start);\n this.shiftContext(type, start);\n if (type <= parser.maxNode)\n this.buffer.push(type, start, end, 4);\n }\n else { // Shift-and-stay, which means this is a skipped token\n this.pos = end;\n this.shiftContext(type, start);\n if (type <= this.p.parser.maxNode)\n this.buffer.push(type, start, end, 4);\n }\n }\n // Apply an action\n /**\n @internal\n */\n apply(action, next, nextStart, nextEnd) {\n if (action & 65536 /* Action.ReduceFlag */)\n this.reduce(action);\n else\n this.shift(action, next, nextStart, nextEnd);\n }\n // Add a prebuilt (reused) node into the buffer.\n /**\n @internal\n */\n useNode(value, next) {\n let index = this.p.reused.length - 1;\n if (index < 0 || this.p.reused[index] != value) {\n this.p.reused.push(value);\n index++;\n }\n let start = this.pos;\n this.reducePos = this.pos = start + value.length;\n this.pushState(next, start);\n this.buffer.push(index, start, this.reducePos, -1 /* size == -1 means this is a reused value */);\n if (this.curContext)\n this.updateContext(this.curContext.tracker.reuse(this.curContext.context, value, this, this.p.stream.reset(this.pos - value.length)));\n }\n // Split the stack. Due to the buffer sharing and the fact\n // that `this.stack` tends to stay quite shallow, this isn't very\n // expensive.\n /**\n @internal\n */\n split() {\n let parent = this;\n let off = parent.buffer.length;\n // Because the top of the buffer (after this.pos) may be mutated\n // to reorder reductions and skipped tokens, and shared buffers\n // should be immutable, this copies any outstanding skipped tokens\n // to the new buffer, and puts the base pointer before them.\n while (off > 0 && parent.buffer[off - 2] > parent.reducePos)\n off -= 4;\n let buffer = parent.buffer.slice(off), base = parent.bufferBase + off;\n // Make sure parent points to an actual parent with content, if there is such a parent.\n while (parent && base == parent.bufferBase)\n parent = parent.parent;\n return new Stack(this.p, this.stack.slice(), this.state, this.reducePos, this.pos, this.score, buffer, base, this.curContext, this.lookAhead, parent);\n }\n // Try to recover from an error by 'deleting' (ignoring) one token.\n /**\n @internal\n */\n recoverByDelete(next, nextEnd) {\n let isNode = next <= this.p.parser.maxNode;\n if (isNode)\n this.storeNode(next, this.pos, nextEnd, 4);\n this.storeNode(0 /* Term.Err */, this.pos, nextEnd, isNode ? 8 : 4);\n this.pos = this.reducePos = nextEnd;\n this.score -= 190 /* Recover.Delete */;\n }\n /**\n Check if the given term would be able to be shifted (optionally\n after some reductions) on this stack. This can be useful for\n external tokenizers that want to make sure they only provide a\n given token when it applies.\n */\n canShift(term) {\n for (let sim = new SimulatedStack(this);;) {\n let action = this.p.parser.stateSlot(sim.state, 4 /* ParseState.DefaultReduce */) || this.p.parser.hasAction(sim.state, term);\n if (action == 0)\n return false;\n if ((action & 65536 /* Action.ReduceFlag */) == 0)\n return true;\n sim.reduce(action);\n }\n }\n // Apply up to Recover.MaxNext recovery actions that conceptually\n // inserts some missing token or rule.\n /**\n @internal\n */\n recoverByInsert(next) {\n if (this.stack.length >= 300 /* Recover.MaxInsertStackDepth */)\n return [];\n let nextStates = this.p.parser.nextStates(this.state);\n if (nextStates.length > 4 /* Recover.MaxNext */ << 1 || this.stack.length >= 120 /* Recover.DampenInsertStackDepth */) {\n let best = [];\n for (let i = 0, s; i < nextStates.length; i += 2) {\n if ((s = nextStates[i + 1]) != this.state && this.p.parser.hasAction(s, next))\n best.push(nextStates[i], s);\n }\n if (this.stack.length < 120 /* Recover.DampenInsertStackDepth */)\n for (let i = 0; best.length < 4 /* Recover.MaxNext */ << 1 && i < nextStates.length; i += 2) {\n let s = nextStates[i + 1];\n if (!best.some((v, i) => (i & 1) && v == s))\n best.push(nextStates[i], s);\n }\n nextStates = best;\n }\n let result = [];\n for (let i = 0; i < nextStates.length && result.length < 4 /* Recover.MaxNext */; i += 2) {\n let s = nextStates[i + 1];\n if (s == this.state)\n continue;\n let stack = this.split();\n stack.pushState(s, this.pos);\n stack.storeNode(0 /* Term.Err */, stack.pos, stack.pos, 4, true);\n stack.shiftContext(nextStates[i], this.pos);\n stack.reducePos = this.pos;\n stack.score -= 200 /* Recover.Insert */;\n result.push(stack);\n }\n return result;\n }\n // Force a reduce, if possible. Return false if that can't\n // be done.\n /**\n @internal\n */\n forceReduce() {\n let { parser } = this.p;\n let reduce = parser.stateSlot(this.state, 5 /* ParseState.ForcedReduce */);\n if ((reduce & 65536 /* Action.ReduceFlag */) == 0)\n return false;\n if (!parser.validAction(this.state, reduce)) {\n let depth = reduce >> 19 /* Action.ReduceDepthShift */, term = reduce & 65535 /* Action.ValueMask */;\n let target = this.stack.length - depth * 3;\n if (target < 0 || parser.getGoto(this.stack[target], term, false) < 0) {\n let backup = this.findForcedReduction();\n if (backup == null)\n return false;\n reduce = backup;\n }\n this.storeNode(0 /* Term.Err */, this.pos, this.pos, 4, true);\n this.score -= 100 /* Recover.Reduce */;\n }\n this.reducePos = this.pos;\n this.reduce(reduce);\n return true;\n }\n /**\n Try to scan through the automaton to find some kind of reduction\n that can be applied. Used when the regular ForcedReduce field\n isn't a valid action. @internal\n */\n findForcedReduction() {\n let { parser } = this.p, seen = [];\n let explore = (state, depth) => {\n if (seen.includes(state))\n return;\n seen.push(state);\n return parser.allActions(state, (action) => {\n if (action & (262144 /* Action.StayFlag */ | 131072 /* Action.GotoFlag */)) ;\n else if (action & 65536 /* Action.ReduceFlag */) {\n let rDepth = (action >> 19 /* Action.ReduceDepthShift */) - depth;\n if (rDepth > 1) {\n let term = action & 65535 /* Action.ValueMask */, target = this.stack.length - rDepth * 3;\n if (target >= 0 && parser.getGoto(this.stack[target], term, false) >= 0)\n return (rDepth << 19 /* Action.ReduceDepthShift */) | 65536 /* Action.ReduceFlag */ | term;\n }\n }\n else {\n let found = explore(action, depth + 1);\n if (found != null)\n return found;\n }\n });\n };\n return explore(this.state, 0);\n }\n /**\n @internal\n */\n forceAll() {\n while (!this.p.parser.stateFlag(this.state, 2 /* StateFlag.Accepting */)) {\n if (!this.forceReduce()) {\n this.storeNode(0 /* Term.Err */, this.pos, this.pos, 4, true);\n break;\n }\n }\n return this;\n }\n /**\n Check whether this state has no further actions (assumed to be a direct descendant of the\n top state, since any other states must be able to continue\n somehow). @internal\n */\n get deadEnd() {\n if (this.stack.length != 3)\n return false;\n let { parser } = this.p;\n return parser.data[parser.stateSlot(this.state, 1 /* ParseState.Actions */)] == 65535 /* Seq.End */ &&\n !parser.stateSlot(this.state, 4 /* ParseState.DefaultReduce */);\n }\n /**\n Restart the stack (put it back in its start state). Only safe\n when this.stack.length == 3 (state is directly below the top\n state). @internal\n */\n restart() {\n this.storeNode(0 /* Term.Err */, this.pos, this.pos, 4, true);\n this.state = this.stack[0];\n this.stack.length = 0;\n }\n /**\n @internal\n */\n sameState(other) {\n if (this.state != other.state || this.stack.length != other.stack.length)\n return false;\n for (let i = 0; i < this.stack.length; i += 3)\n if (this.stack[i] != other.stack[i])\n return false;\n return true;\n }\n /**\n Get the parser used by this stack.\n */\n get parser() { return this.p.parser; }\n /**\n Test whether a given dialect (by numeric ID, as exported from\n the terms file) is enabled.\n */\n dialectEnabled(dialectID) { return this.p.parser.dialect.flags[dialectID]; }\n shiftContext(term, start) {\n if (this.curContext)\n this.updateContext(this.curContext.tracker.shift(this.curContext.context, term, this, this.p.stream.reset(start)));\n }\n reduceContext(term, start) {\n if (this.curContext)\n this.updateContext(this.curContext.tracker.reduce(this.curContext.context, term, this, this.p.stream.reset(start)));\n }\n /**\n @internal\n */\n emitContext() {\n let last = this.buffer.length - 1;\n if (last < 0 || this.buffer[last] != -3)\n this.buffer.push(this.curContext.hash, this.pos, this.pos, -3);\n }\n /**\n @internal\n */\n emitLookAhead() {\n let last = this.buffer.length - 1;\n if (last < 0 || this.buffer[last] != -4)\n this.buffer.push(this.lookAhead, this.pos, this.pos, -4);\n }\n updateContext(context) {\n if (context != this.curContext.context) {\n let newCx = new StackContext(this.curContext.tracker, context);\n if (newCx.hash != this.curContext.hash)\n this.emitContext();\n this.curContext = newCx;\n }\n }\n /**\n @internal\n */\n setLookAhead(lookAhead) {\n if (lookAhead > this.lookAhead) {\n this.emitLookAhead();\n this.lookAhead = lookAhead;\n }\n }\n /**\n @internal\n */\n close() {\n if (this.curContext && this.curContext.tracker.strict)\n this.emitContext();\n if (this.lookAhead > 0)\n this.emitLookAhead();\n }\n}\nclass StackContext {\n constructor(tracker, context) {\n this.tracker = tracker;\n this.context = context;\n this.hash = tracker.strict ? tracker.hash(context) : 0;\n }\n}\n// Used to cheaply run some reductions to scan ahead without mutating\n// an entire stack\nclass SimulatedStack {\n constructor(start) {\n this.start = start;\n this.state = start.state;\n this.stack = start.stack;\n this.base = this.stack.length;\n }\n reduce(action) {\n let term = action & 65535 /* Action.ValueMask */, depth = action >> 19 /* Action.ReduceDepthShift */;\n if (depth == 0) {\n if (this.stack == this.start.stack)\n this.stack = this.stack.slice();\n this.stack.push(this.state, 0, 0);\n this.base += 3;\n }\n else {\n this.base -= (depth - 1) * 3;\n }\n let goto = this.start.p.parser.getGoto(this.stack[this.base - 3], term, true);\n this.state = goto;\n }\n}\n// This is given to `Tree.build` to build a buffer, and encapsulates\n// the parent-stack-walking necessary to read the nodes.\nclass StackBufferCursor {\n constructor(stack, pos, index) {\n this.stack = stack;\n this.pos = pos;\n this.index = index;\n this.buffer = stack.buffer;\n if (this.index == 0)\n this.maybeNext();\n }\n static create(stack, pos = stack.bufferBase + stack.buffer.length) {\n return new StackBufferCursor(stack, pos, pos - stack.bufferBase);\n }\n maybeNext() {\n let next = this.stack.parent;\n if (next != null) {\n this.index = this.stack.bufferBase - next.bufferBase;\n this.stack = next;\n this.buffer = next.buffer;\n }\n }\n get id() { return this.buffer[this.index - 4]; }\n get start() { return this.buffer[this.index - 3]; }\n get end() { return this.buffer[this.index - 2]; }\n get size() { return this.buffer[this.index - 1]; }\n next() {\n this.index -= 4;\n this.pos -= 4;\n if (this.index == 0)\n this.maybeNext();\n }\n fork() {\n return new StackBufferCursor(this.stack, this.pos, this.index);\n }\n}\n\n// See lezer-generator/src/encode.ts for comments about the encoding\n// used here\nfunction decodeArray(input, Type = Uint16Array) {\n if (typeof input != \"string\")\n return input;\n let array = null;\n for (let pos = 0, out = 0; pos < input.length;) {\n let value = 0;\n for (;;) {\n let next = input.charCodeAt(pos++), stop = false;\n if (next == 126 /* Encode.BigValCode */) {\n value = 65535 /* Encode.BigVal */;\n break;\n }\n if (next >= 92 /* Encode.Gap2 */)\n next--;\n if (next >= 34 /* Encode.Gap1 */)\n next--;\n let digit = next - 32 /* Encode.Start */;\n if (digit >= 46 /* Encode.Base */) {\n digit -= 46 /* Encode.Base */;\n stop = true;\n }\n value += digit;\n if (stop)\n break;\n value *= 46 /* Encode.Base */;\n }\n if (array)\n array[out++] = value;\n else\n array = new Type(value);\n }\n return array;\n}\n\nclass CachedToken {\n constructor() {\n this.start = -1;\n this.value = -1;\n this.end = -1;\n this.extended = -1;\n this.lookAhead = 0;\n this.mask = 0;\n this.context = 0;\n }\n}\nconst nullToken = new CachedToken;\n/**\n[Tokenizers](#lr.ExternalTokenizer) interact with the input\nthrough this interface. It presents the input as a stream of\ncharacters, tracking lookahead and hiding the complexity of\n[ranges](#common.Parser.parse^ranges) from tokenizer code.\n*/\nclass InputStream {\n /**\n @internal\n */\n constructor(\n /**\n @internal\n */\n input, \n /**\n @internal\n */\n ranges) {\n this.input = input;\n this.ranges = ranges;\n /**\n @internal\n */\n this.chunk = \"\";\n /**\n @internal\n */\n this.chunkOff = 0;\n /**\n Backup chunk\n */\n this.chunk2 = \"\";\n this.chunk2Pos = 0;\n /**\n The character code of the next code unit in the input, or -1\n when the stream is at the end of the input.\n */\n this.next = -1;\n /**\n @internal\n */\n this.token = nullToken;\n this.rangeIndex = 0;\n this.pos = this.chunkPos = ranges[0].from;\n this.range = ranges[0];\n this.end = ranges[ranges.length - 1].to;\n this.readNext();\n }\n /**\n @internal\n */\n resolveOffset(offset, assoc) {\n let range = this.range, index = this.rangeIndex;\n let pos = this.pos + offset;\n while (pos < range.from) {\n if (!index)\n return null;\n let next = this.ranges[--index];\n pos -= range.from - next.to;\n range = next;\n }\n while (assoc < 0 ? pos > range.to : pos >= range.to) {\n if (index == this.ranges.length - 1)\n return null;\n let next = this.ranges[++index];\n pos += next.from - range.to;\n range = next;\n }\n return pos;\n }\n /**\n @internal\n */\n clipPos(pos) {\n if (pos >= this.range.from && pos < this.range.to)\n return pos;\n for (let range of this.ranges)\n if (range.to > pos)\n return Math.max(pos, range.from);\n return this.end;\n }\n /**\n Look at a code unit near the stream position. `.peek(0)` equals\n `.next`, `.peek(-1)` gives you the previous character, and so\n on.\n \n Note that looking around during tokenizing creates dependencies\n on potentially far-away content, which may reduce the\n effectiveness incremental parsing—when looking forward—or even\n cause invalid reparses when looking backward more than 25 code\n units, since the library does not track lookbehind.\n */\n peek(offset) {\n let idx = this.chunkOff + offset, pos, result;\n if (idx >= 0 && idx < this.chunk.length) {\n pos = this.pos + offset;\n result = this.chunk.charCodeAt(idx);\n }\n else {\n let resolved = this.resolveOffset(offset, 1);\n if (resolved == null)\n return -1;\n pos = resolved;\n if (pos >= this.chunk2Pos && pos < this.chunk2Pos + this.chunk2.length) {\n result = this.chunk2.charCodeAt(pos - this.chunk2Pos);\n }\n else {\n let i = this.rangeIndex, range = this.range;\n while (range.to <= pos)\n range = this.ranges[++i];\n this.chunk2 = this.input.chunk(this.chunk2Pos = pos);\n if (pos + this.chunk2.length > range.to)\n this.chunk2 = this.chunk2.slice(0, range.to - pos);\n result = this.chunk2.charCodeAt(0);\n }\n }\n if (pos >= this.token.lookAhead)\n this.token.lookAhead = pos + 1;\n return result;\n }\n /**\n Accept a token. By default, the end of the token is set to the\n current stream position, but you can pass an offset (relative to\n the stream position) to change that.\n */\n acceptToken(token, endOffset = 0) {\n let end = endOffset ? this.resolveOffset(endOffset, -1) : this.pos;\n if (end == null || end < this.token.start)\n throw new RangeError(\"Token end out of bounds\");\n this.token.value = token;\n this.token.end = end;\n }\n /**\n Accept a token ending at a specific given position.\n */\n acceptTokenTo(token, endPos) {\n this.token.value = token;\n this.token.end = endPos;\n }\n getChunk() {\n if (this.pos >= this.chunk2Pos && this.pos < this.chunk2Pos + this.chunk2.length) {\n let { chunk, chunkPos } = this;\n this.chunk = this.chunk2;\n this.chunkPos = this.chunk2Pos;\n this.chunk2 = chunk;\n this.chunk2Pos = chunkPos;\n this.chunkOff = this.pos - this.chunkPos;\n }\n else {\n this.chunk2 = this.chunk;\n this.chunk2Pos = this.chunkPos;\n let nextChunk = this.input.chunk(this.pos);\n let end = this.pos + nextChunk.length;\n this.chunk = end > this.range.to ? nextChunk.slice(0, this.range.to - this.pos) : nextChunk;\n this.chunkPos = this.pos;\n this.chunkOff = 0;\n }\n }\n readNext() {\n if (this.chunkOff >= this.chunk.length) {\n this.getChunk();\n if (this.chunkOff == this.chunk.length)\n return this.next = -1;\n }\n return this.next = this.chunk.charCodeAt(this.chunkOff);\n }\n /**\n Move the stream forward N (defaults to 1) code units. Returns\n the new value of [`next`](#lr.InputStream.next).\n */\n advance(n = 1) {\n this.chunkOff += n;\n while (this.pos + n >= this.range.to) {\n if (this.rangeIndex == this.ranges.length - 1)\n return this.setDone();\n n -= this.range.to - this.pos;\n this.range = this.ranges[++this.rangeIndex];\n this.pos = this.range.from;\n }\n this.pos += n;\n if (this.pos >= this.token.lookAhead)\n this.token.lookAhead = this.pos + 1;\n return this.readNext();\n }\n setDone() {\n this.pos = this.chunkPos = this.end;\n this.range = this.ranges[this.rangeIndex = this.ranges.length - 1];\n this.chunk = \"\";\n return this.next = -1;\n }\n /**\n @internal\n */\n reset(pos, token) {\n if (token) {\n this.token = token;\n token.start = pos;\n token.lookAhead = pos + 1;\n token.value = token.extended = -1;\n }\n else {\n this.token = nullToken;\n }\n if (this.pos != pos) {\n this.pos = pos;\n if (pos == this.end) {\n this.setDone();\n return this;\n }\n while (pos < this.range.from)\n this.range = this.ranges[--this.rangeIndex];\n while (pos >= this.range.to)\n this.range = this.ranges[++this.rangeIndex];\n if (pos >= this.chunkPos && pos < this.chunkPos + this.chunk.length) {\n this.chunkOff = pos - this.chunkPos;\n }\n else {\n this.chunk = \"\";\n this.chunkOff = 0;\n }\n this.readNext();\n }\n return this;\n }\n /**\n @internal\n */\n read(from, to) {\n if (from >= this.chunkPos && to <= this.chunkPos + this.chunk.length)\n return this.chunk.slice(from - this.chunkPos, to - this.chunkPos);\n if (from >= this.chunk2Pos && to <= this.chunk2Pos + this.chunk2.length)\n return this.chunk2.slice(from - this.chunk2Pos, to - this.chunk2Pos);\n if (from >= this.range.from && to <= this.range.to)\n return this.input.read(from, to);\n let result = \"\";\n for (let r of this.ranges) {\n if (r.from >= to)\n break;\n if (r.to > from)\n result += this.input.read(Math.max(r.from, from), Math.min(r.to, to));\n }\n return result;\n }\n}\n/**\n@internal\n*/\nclass TokenGroup {\n constructor(data, id) {\n this.data = data;\n this.id = id;\n }\n token(input, stack) {\n let { parser } = stack.p;\n readToken(this.data, input, stack, this.id, parser.data, parser.tokenPrecTable);\n }\n}\nTokenGroup.prototype.contextual = TokenGroup.prototype.fallback = TokenGroup.prototype.extend = false;\n/**\n@hide\n*/\nclass LocalTokenGroup {\n constructor(data, precTable, elseToken) {\n this.precTable = precTable;\n this.elseToken = elseToken;\n this.data = typeof data == \"string\" ? decodeArray(data) : data;\n }\n token(input, stack) {\n let start = input.pos, skipped = 0;\n for (;;) {\n let atEof = input.next < 0, nextPos = input.resolveOffset(1, 1);\n readToken(this.data, input, stack, 0, this.data, this.precTable);\n if (input.token.value > -1)\n break;\n if (this.elseToken == null)\n return;\n if (!atEof)\n skipped++;\n if (nextPos == null)\n break;\n input.reset(nextPos, input.token);\n }\n if (skipped) {\n input.reset(start, input.token);\n input.acceptToken(this.elseToken, skipped);\n }\n }\n}\nLocalTokenGroup.prototype.contextual = TokenGroup.prototype.fallback = TokenGroup.prototype.extend = false;\n/**\n`@external tokens` declarations in the grammar should resolve to\nan instance of this class.\n*/\nclass ExternalTokenizer {\n /**\n Create a tokenizer. The first argument is the function that,\n given an input stream, scans for the types of tokens it\n recognizes at the stream's position, and calls\n [`acceptToken`](#lr.InputStream.acceptToken) when it finds\n one.\n */\n constructor(\n /**\n @internal\n */\n token, options = {}) {\n this.token = token;\n this.contextual = !!options.contextual;\n this.fallback = !!options.fallback;\n this.extend = !!options.extend;\n }\n}\n// Tokenizer data is stored a big uint16 array containing, for each\n// state:\n//\n// - A group bitmask, indicating what token groups are reachable from\n// this state, so that paths that can only lead to tokens not in\n// any of the current groups can be cut off early.\n//\n// - The position of the end of the state's sequence of accepting\n// tokens\n//\n// - The number of outgoing edges for the state\n//\n// - The accepting tokens, as (token id, group mask) pairs\n//\n// - The outgoing edges, as (start character, end character, state\n// index) triples, with end character being exclusive\n//\n// This function interprets that data, running through a stream as\n// long as new states with the a matching group mask can be reached,\n// and updating `input.token` when it matches a token.\nfunction readToken(data, input, stack, group, precTable, precOffset) {\n let state = 0, groupMask = 1 << group, { dialect } = stack.p.parser;\n scan: for (;;) {\n if ((groupMask & data[state]) == 0)\n break;\n let accEnd = data[state + 1];\n // Check whether this state can lead to a token in the current group\n // Accept tokens in this state, possibly overwriting\n // lower-precedence / shorter tokens\n for (let i = state + 3; i < accEnd; i += 2)\n if ((data[i + 1] & groupMask) > 0) {\n let term = data[i];\n if (dialect.allows(term) &&\n (input.token.value == -1 || input.token.value == term ||\n overrides(term, input.token.value, precTable, precOffset))) {\n input.acceptToken(term);\n break;\n }\n }\n let next = input.next, low = 0, high = data[state + 2];\n // Special case for EOF\n if (input.next < 0 && high > low && data[accEnd + high * 3 - 3] == 65535 /* Seq.End */) {\n state = data[accEnd + high * 3 - 1];\n continue scan;\n }\n // Do a binary search on the state's edges\n for (; low < high;) {\n let mid = (low + high) >> 1;\n let index = accEnd + mid + (mid << 1);\n let from = data[index], to = data[index + 1] || 0x10000;\n if (next < from)\n high = mid;\n else if (next >= to)\n low = mid + 1;\n else {\n state = data[index + 2];\n input.advance();\n continue scan;\n }\n }\n break;\n }\n}\nfunction findOffset(data, start, term) {\n for (let i = start, next; (next = data[i]) != 65535 /* Seq.End */; i++)\n if (next == term)\n return i - start;\n return -1;\n}\nfunction overrides(token, prev, tableData, tableOffset) {\n let iPrev = findOffset(tableData, tableOffset, prev);\n return iPrev < 0 || findOffset(tableData, tableOffset, token) < iPrev;\n}\n\n// Environment variable used to control console output\nconst verbose = typeof process != \"undefined\" && process.env && /\\bparse\\b/.test(process.env.LOG);\nlet stackIDs = null;\nfunction cutAt(tree, pos, side) {\n let cursor = tree.cursor(IterMode.IncludeAnonymous);\n cursor.moveTo(pos);\n for (;;) {\n if (!(side < 0 ? cursor.childBefore(pos) : cursor.childAfter(pos)))\n for (;;) {\n if ((side < 0 ? cursor.to < pos : cursor.from > pos) && !cursor.type.isError)\n return side < 0 ? Math.max(0, Math.min(cursor.to - 1, pos - 25 /* Lookahead.Margin */))\n : Math.min(tree.length, Math.max(cursor.from + 1, pos + 25 /* Lookahead.Margin */));\n if (side < 0 ? cursor.prevSibling() : cursor.nextSibling())\n break;\n if (!cursor.parent())\n return side < 0 ? 0 : tree.length;\n }\n }\n}\nclass FragmentCursor {\n constructor(fragments, nodeSet) {\n this.fragments = fragments;\n this.nodeSet = nodeSet;\n this.i = 0;\n this.fragment = null;\n this.safeFrom = -1;\n this.safeTo = -1;\n this.trees = [];\n this.start = [];\n this.index = [];\n this.nextFragment();\n }\n nextFragment() {\n let fr = this.fragment = this.i == this.fragments.length ? null : this.fragments[this.i++];\n if (fr) {\n this.safeFrom = fr.openStart ? cutAt(fr.tree, fr.from + fr.offset, 1) - fr.offset : fr.from;\n this.safeTo = fr.openEnd ? cutAt(fr.tree, fr.to + fr.offset, -1) - fr.offset : fr.to;\n while (this.trees.length) {\n this.trees.pop();\n this.start.pop();\n this.index.pop();\n }\n this.trees.push(fr.tree);\n this.start.push(-fr.offset);\n this.index.push(0);\n this.nextStart = this.safeFrom;\n }\n else {\n this.nextStart = 1e9;\n }\n }\n // `pos` must be >= any previously given `pos` for this cursor\n nodeAt(pos) {\n if (pos < this.nextStart)\n return null;\n while (this.fragment && this.safeTo <= pos)\n this.nextFragment();\n if (!this.fragment)\n return null;\n for (;;) {\n let last = this.trees.length - 1;\n if (last < 0) { // End of tree\n this.nextFragment();\n return null;\n }\n let top = this.trees[last], index = this.index[last];\n if (index == top.children.length) {\n this.trees.pop();\n this.start.pop();\n this.index.pop();\n continue;\n }\n let next = top.children[index];\n let start = this.start[last] + top.positions[index];\n if (start > pos) {\n this.nextStart = start;\n return null;\n }\n if (next instanceof Tree) {\n if (start == pos) {\n if (start < this.safeFrom)\n return null;\n let end = start + next.length;\n if (end <= this.safeTo) {\n let lookAhead = next.prop(NodeProp.lookAhead);\n if (!lookAhead || end + lookAhead < this.fragment.to)\n return next;\n }\n }\n this.index[last]++;\n if (start + next.length >= Math.max(this.safeFrom, pos)) { // Enter this node\n this.trees.push(next);\n this.start.push(start);\n this.index.push(0);\n }\n }\n else {\n this.index[last]++;\n this.nextStart = start + next.length;\n }\n }\n }\n}\nclass TokenCache {\n constructor(parser, stream) {\n this.stream = stream;\n this.tokens = [];\n this.mainToken = null;\n this.actions = [];\n this.tokens = parser.tokenizers.map(_ => new CachedToken);\n }\n getActions(stack) {\n let actionIndex = 0;\n let main = null;\n let { parser } = stack.p, { tokenizers } = parser;\n let mask = parser.stateSlot(stack.state, 3 /* ParseState.TokenizerMask */);\n let context = stack.curContext ? stack.curContext.hash : 0;\n let lookAhead = 0;\n for (let i = 0; i < tokenizers.length; i++) {\n if (((1 << i) & mask) == 0)\n continue;\n let tokenizer = tokenizers[i], token = this.tokens[i];\n if (main && !tokenizer.fallback)\n continue;\n if (tokenizer.contextual || token.start != stack.pos || token.mask != mask || token.context != context) {\n this.updateCachedToken(token, tokenizer, stack);\n token.mask = mask;\n token.context = context;\n }\n if (token.lookAhead > token.end + 25 /* Lookahead.Margin */)\n lookAhead = Math.max(token.lookAhead, lookAhead);\n if (token.value != 0 /* Term.Err */) {\n let startIndex = actionIndex;\n if (token.extended > -1)\n actionIndex = this.addActions(stack, token.extended, token.end, actionIndex);\n actionIndex = this.addActions(stack, token.value, token.end, actionIndex);\n if (!tokenizer.extend) {\n main = token;\n if (actionIndex > startIndex)\n break;\n }\n }\n }\n while (this.actions.length > actionIndex)\n this.actions.pop();\n if (lookAhead)\n stack.setLookAhead(lookAhead);\n if (!main && stack.pos == this.stream.end) {\n main = new CachedToken;\n main.value = stack.p.parser.eofTerm;\n main.start = main.end = stack.pos;\n actionIndex = this.addActions(stack, main.value, main.end, actionIndex);\n }\n this.mainToken = main;\n return this.actions;\n }\n getMainToken(stack) {\n if (this.mainToken)\n return this.mainToken;\n let main = new CachedToken, { pos, p } = stack;\n main.start = pos;\n main.end = Math.min(pos + 1, p.stream.end);\n main.value = pos == p.stream.end ? p.parser.eofTerm : 0 /* Term.Err */;\n return main;\n }\n updateCachedToken(token, tokenizer, stack) {\n let start = this.stream.clipPos(stack.pos);\n tokenizer.token(this.stream.reset(start, token), stack);\n if (token.value > -1) {\n let { parser } = stack.p;\n for (let i = 0; i < parser.specialized.length; i++)\n if (parser.specialized[i] == token.value) {\n let result = parser.specializers[i](this.stream.read(token.start, token.end), stack);\n if (result >= 0 && stack.p.parser.dialect.allows(result >> 1)) {\n if ((result & 1) == 0 /* Specialize.Specialize */)\n token.value = result >> 1;\n else\n token.extended = result >> 1;\n break;\n }\n }\n }\n else {\n token.value = 0 /* Term.Err */;\n token.end = this.stream.clipPos(start + 1);\n }\n }\n putAction(action, token, end, index) {\n // Don't add duplicate actions\n for (let i = 0; i < index; i += 3)\n if (this.actions[i] == action)\n return index;\n this.actions[index++] = action;\n this.actions[index++] = token;\n this.actions[index++] = end;\n return index;\n }\n addActions(stack, token, end, index) {\n let { state } = stack, { parser } = stack.p, { data } = parser;\n for (let set = 0; set < 2; set++) {\n for (let i = parser.stateSlot(state, set ? 2 /* ParseState.Skip */ : 1 /* ParseState.Actions */);; i += 3) {\n if (data[i] == 65535 /* Seq.End */) {\n if (data[i + 1] == 1 /* Seq.Next */) {\n i = pair(data, i + 2);\n }\n else {\n if (index == 0 && data[i + 1] == 2 /* Seq.Other */)\n index = this.putAction(pair(data, i + 2), token, end, index);\n break;\n }\n }\n if (data[i] == token)\n index = this.putAction(pair(data, i + 1), token, end, index);\n }\n }\n return index;\n }\n}\nclass Parse {\n constructor(parser, input, fragments, ranges) {\n this.parser = parser;\n this.input = input;\n this.ranges = ranges;\n this.recovering = 0;\n this.nextStackID = 0x2654; // ♔, ♕, ♖, ♗, ♘, ♙, ♠, ♡, ♢, ♣, ♤, ♥, ♦, ♧\n this.minStackPos = 0;\n this.reused = [];\n this.stoppedAt = null;\n this.lastBigReductionStart = -1;\n this.lastBigReductionSize = 0;\n this.bigReductionCount = 0;\n this.stream = new InputStream(input, ranges);\n this.tokens = new TokenCache(parser, this.stream);\n this.topTerm = parser.top[1];\n let { from } = ranges[0];\n this.stacks = [Stack.start(this, parser.top[0], from)];\n this.fragments = fragments.length && this.stream.end - from > parser.bufferLength * 4\n ? new FragmentCursor(fragments, parser.nodeSet) : null;\n }\n get parsedPos() {\n return this.minStackPos;\n }\n // Move the parser forward. This will process all parse stacks at\n // `this.pos` and try to advance them to a further position. If no\n // stack for such a position is found, it'll start error-recovery.\n //\n // When the parse is finished, this will return a syntax tree. When\n // not, it returns `null`.\n advance() {\n let stacks = this.stacks, pos = this.minStackPos;\n // This will hold stacks beyond `pos`.\n let newStacks = this.stacks = [];\n let stopped, stoppedTokens;\n // If a large amount of reductions happened with the same start\n // position, force the stack out of that production in order to\n // avoid creating a tree too deep to recurse through.\n // (This is an ugly kludge, because unfortunately there is no\n // straightforward, cheap way to check for this happening, due to\n // the history of reductions only being available in an\n // expensive-to-access format in the stack buffers.)\n if (this.bigReductionCount > 300 /* Rec.MaxLeftAssociativeReductionCount */ && stacks.length == 1) {\n let [s] = stacks;\n while (s.forceReduce() && s.stack.length && s.stack[s.stack.length - 2] >= this.lastBigReductionStart) { }\n this.bigReductionCount = this.lastBigReductionSize = 0;\n }\n // Keep advancing any stacks at `pos` until they either move\n // forward or can't be advanced. Gather stacks that can't be\n // advanced further in `stopped`.\n for (let i = 0; i < stacks.length; i++) {\n let stack = stacks[i];\n for (;;) {\n this.tokens.mainToken = null;\n if (stack.pos > pos) {\n newStacks.push(stack);\n }\n else if (this.advanceStack(stack, newStacks, stacks)) {\n continue;\n }\n else {\n if (!stopped) {\n stopped = [];\n stoppedTokens = [];\n }\n stopped.push(stack);\n let tok = this.tokens.getMainToken(stack);\n stoppedTokens.push(tok.value, tok.end);\n }\n break;\n }\n }\n if (!newStacks.length) {\n let finished = stopped && findFinished(stopped);\n if (finished) {\n if (verbose)\n console.log(\"Finish with \" + this.stackID(finished));\n return this.stackToTree(finished);\n }\n if (this.parser.strict) {\n if (verbose && stopped)\n console.log(\"Stuck with token \" + (this.tokens.mainToken ? this.parser.getName(this.tokens.mainToken.value) : \"none\"));\n throw new SyntaxError(\"No parse at \" + pos);\n }\n if (!this.recovering)\n this.recovering = 5 /* Rec.Distance */;\n }\n if (this.recovering && stopped) {\n let finished = this.stoppedAt != null && stopped[0].pos > this.stoppedAt ? stopped[0]\n : this.runRecovery(stopped, stoppedTokens, newStacks);\n if (finished) {\n if (verbose)\n console.log(\"Force-finish \" + this.stackID(finished));\n return this.stackToTree(finished.forceAll());\n }\n }\n if (this.recovering) {\n let maxRemaining = this.recovering == 1 ? 1 : this.recovering * 3 /* Rec.MaxRemainingPerStep */;\n if (newStacks.length > maxRemaining) {\n newStacks.sort((a, b) => b.score - a.score);\n while (newStacks.length > maxRemaining)\n newStacks.pop();\n }\n if (newStacks.some(s => s.reducePos > pos))\n this.recovering--;\n }\n else if (newStacks.length > 1) {\n // Prune stacks that are in the same state, or that have been\n // running without splitting for a while, to avoid getting stuck\n // with multiple successful stacks running endlessly on.\n outer: for (let i = 0; i < newStacks.length - 1; i++) {\n let stack = newStacks[i];\n for (let j = i + 1; j < newStacks.length; j++) {\n let other = newStacks[j];\n if (stack.sameState(other) ||\n stack.buffer.length > 500 /* Rec.MinBufferLengthPrune */ && other.buffer.length > 500 /* Rec.MinBufferLengthPrune */) {\n if (((stack.score - other.score) || (stack.buffer.length - other.buffer.length)) > 0) {\n newStacks.splice(j--, 1);\n }\n else {\n newStacks.splice(i--, 1);\n continue outer;\n }\n }\n }\n }\n if (newStacks.length > 12 /* Rec.MaxStackCount */)\n newStacks.splice(12 /* Rec.MaxStackCount */, newStacks.length - 12 /* Rec.MaxStackCount */);\n }\n this.minStackPos = newStacks[0].pos;\n for (let i = 1; i < newStacks.length; i++)\n if (newStacks[i].pos < this.minStackPos)\n this.minStackPos = newStacks[i].pos;\n return null;\n }\n stopAt(pos) {\n if (this.stoppedAt != null && this.stoppedAt < pos)\n throw new RangeError(\"Can't move stoppedAt forward\");\n this.stoppedAt = pos;\n }\n // Returns an updated version of the given stack, or null if the\n // stack can't advance normally. When `split` and `stacks` are\n // given, stacks split off by ambiguous operations will be pushed to\n // `split`, or added to `stacks` if they move `pos` forward.\n advanceStack(stack, stacks, split) {\n let start = stack.pos, { parser } = this;\n let base = verbose ? this.stackID(stack) + \" -> \" : \"\";\n if (this.stoppedAt != null && start > this.stoppedAt)\n return stack.forceReduce() ? stack : null;\n if (this.fragments) {\n let strictCx = stack.curContext && stack.curContext.tracker.strict, cxHash = strictCx ? stack.curContext.hash : 0;\n for (let cached = this.fragments.nodeAt(start); cached;) {\n let match = this.parser.nodeSet.types[cached.type.id] == cached.type ? parser.getGoto(stack.state, cached.type.id) : -1;\n if (match > -1 && cached.length && (!strictCx || (cached.prop(NodeProp.contextHash) || 0) == cxHash)) {\n stack.useNode(cached, match);\n if (verbose)\n console.log(base + this.stackID(stack) + ` (via reuse of ${parser.getName(cached.type.id)})`);\n return true;\n }\n if (!(cached instanceof Tree) || cached.children.length == 0 || cached.positions[0] > 0)\n break;\n let inner = cached.children[0];\n if (inner instanceof Tree && cached.positions[0] == 0)\n cached = inner;\n else\n break;\n }\n }\n let defaultReduce = parser.stateSlot(stack.state, 4 /* ParseState.DefaultReduce */);\n if (defaultReduce > 0) {\n stack.reduce(defaultReduce);\n if (verbose)\n console.log(base + this.stackID(stack) + ` (via always-reduce ${parser.getName(defaultReduce & 65535 /* Action.ValueMask */)})`);\n return true;\n }\n if (stack.stack.length >= 8400 /* Rec.CutDepth */) {\n while (stack.stack.length > 6000 /* Rec.CutTo */ && stack.forceReduce()) { }\n }\n let actions = this.tokens.getActions(stack);\n for (let i = 0; i < actions.length;) {\n let action = actions[i++], term = actions[i++], end = actions[i++];\n let last = i == actions.length || !split;\n let localStack = last ? stack : stack.split();\n let main = this.tokens.mainToken;\n localStack.apply(action, term, main ? main.start : localStack.pos, end);\n if (verbose)\n console.log(base + this.stackID(localStack) + ` (via ${(action & 65536 /* Action.ReduceFlag */) == 0 ? \"shift\"\n : `reduce of ${parser.getName(action & 65535 /* Action.ValueMask */)}`} for ${parser.getName(term)} @ ${start}${localStack == stack ? \"\" : \", split\"})`);\n if (last)\n return true;\n else if (localStack.pos > start)\n stacks.push(localStack);\n else\n split.push(localStack);\n }\n return false;\n }\n // Advance a given stack forward as far as it will go. Returns the\n // (possibly updated) stack if it got stuck, or null if it moved\n // forward and was given to `pushStackDedup`.\n advanceFully(stack, newStacks) {\n let pos = stack.pos;\n for (;;) {\n if (!this.advanceStack(stack, null, null))\n return false;\n if (stack.pos > pos) {\n pushStackDedup(stack, newStacks);\n return true;\n }\n }\n }\n runRecovery(stacks, tokens, newStacks) {\n let finished = null, restarted = false;\n for (let i = 0; i < stacks.length; i++) {\n let stack = stacks[i], token = tokens[i << 1], tokenEnd = tokens[(i << 1) + 1];\n let base = verbose ? this.stackID(stack) + \" -> \" : \"\";\n if (stack.deadEnd) {\n if (restarted)\n continue;\n restarted = true;\n stack.restart();\n if (verbose)\n console.log(base + this.stackID(stack) + \" (restarted)\");\n let done = this.advanceFully(stack, newStacks);\n if (done)\n continue;\n }\n let force = stack.split(), forceBase = base;\n for (let j = 0; force.forceReduce() && j < 10 /* Rec.ForceReduceLimit */; j++) {\n if (verbose)\n console.log(forceBase + this.stackID(force) + \" (via force-reduce)\");\n let done = this.advanceFully(force, newStacks);\n if (done)\n break;\n if (verbose)\n forceBase = this.stackID(force) + \" -> \";\n }\n for (let insert of stack.recoverByInsert(token)) {\n if (verbose)\n console.log(base + this.stackID(insert) + \" (via recover-insert)\");\n this.advanceFully(insert, newStacks);\n }\n if (this.stream.end > stack.pos) {\n if (tokenEnd == stack.pos) {\n tokenEnd++;\n token = 0 /* Term.Err */;\n }\n stack.recoverByDelete(token, tokenEnd);\n if (verbose)\n console.log(base + this.stackID(stack) + ` (via recover-delete ${this.parser.getName(token)})`);\n pushStackDedup(stack, newStacks);\n }\n else if (!finished || finished.score < stack.score) {\n finished = stack;\n }\n }\n return finished;\n }\n // Convert the stack's buffer to a syntax tree.\n stackToTree(stack) {\n stack.close();\n return Tree.build({ buffer: StackBufferCursor.create(stack),\n nodeSet: this.parser.nodeSet,\n topID: this.topTerm,\n maxBufferLength: this.parser.bufferLength,\n reused: this.reused,\n start: this.ranges[0].from,\n length: stack.pos - this.ranges[0].from,\n minRepeatType: this.parser.minRepeatTerm });\n }\n stackID(stack) {\n let id = (stackIDs || (stackIDs = new WeakMap)).get(stack);\n if (!id)\n stackIDs.set(stack, id = String.fromCodePoint(this.nextStackID++));\n return id + stack;\n }\n}\nfunction pushStackDedup(stack, newStacks) {\n for (let i = 0; i < newStacks.length; i++) {\n let other = newStacks[i];\n if (other.pos == stack.pos && other.sameState(stack)) {\n if (newStacks[i].score < stack.score)\n newStacks[i] = stack;\n return;\n }\n }\n newStacks.push(stack);\n}\nclass Dialect {\n constructor(source, flags, disabled) {\n this.source = source;\n this.flags = flags;\n this.disabled = disabled;\n }\n allows(term) { return !this.disabled || this.disabled[term] == 0; }\n}\nconst id = x => x;\n/**\nContext trackers are used to track stateful context (such as\nindentation in the Python grammar, or parent elements in the XML\ngrammar) needed by external tokenizers. You declare them in a\ngrammar file as `@context exportName from \"module\"`.\n\nContext values should be immutable, and can be updated (replaced)\non shift or reduce actions.\n\nThe export used in a `@context` declaration should be of this\ntype.\n*/\nclass ContextTracker {\n /**\n Define a context tracker.\n */\n constructor(spec) {\n this.start = spec.start;\n this.shift = spec.shift || id;\n this.reduce = spec.reduce || id;\n this.reuse = spec.reuse || id;\n this.hash = spec.hash || (() => 0);\n this.strict = spec.strict !== false;\n }\n}\n/**\nHolds the parse tables for a given grammar, as generated by\n`lezer-generator`, and provides [methods](#common.Parser) to parse\ncontent with.\n*/\nclass LRParser extends Parser {\n /**\n @internal\n */\n constructor(spec) {\n super();\n /**\n @internal\n */\n this.wrappers = [];\n if (spec.version != 14 /* File.Version */)\n throw new RangeError(`Parser version (${spec.version}) doesn't match runtime version (${14 /* File.Version */})`);\n let nodeNames = spec.nodeNames.split(\" \");\n this.minRepeatTerm = nodeNames.length;\n for (let i = 0; i < spec.repeatNodeCount; i++)\n nodeNames.push(\"\");\n let topTerms = Object.keys(spec.topRules).map(r => spec.topRules[r][1]);\n let nodeProps = [];\n for (let i = 0; i < nodeNames.length; i++)\n nodeProps.push([]);\n function setProp(nodeID, prop, value) {\n nodeProps[nodeID].push([prop, prop.deserialize(String(value))]);\n }\n if (spec.nodeProps)\n for (let propSpec of spec.nodeProps) {\n let prop = propSpec[0];\n if (typeof prop == \"string\")\n prop = NodeProp[prop];\n for (let i = 1; i < propSpec.length;) {\n let next = propSpec[i++];\n if (next >= 0) {\n setProp(next, prop, propSpec[i++]);\n }\n else {\n let value = propSpec[i + -next];\n for (let j = -next; j > 0; j--)\n setProp(propSpec[i++], prop, value);\n i++;\n }\n }\n }\n this.nodeSet = new NodeSet(nodeNames.map((name, i) => NodeType.define({\n name: i >= this.minRepeatTerm ? undefined : name,\n id: i,\n props: nodeProps[i],\n top: topTerms.indexOf(i) > -1,\n error: i == 0,\n skipped: spec.skippedNodes && spec.skippedNodes.indexOf(i) > -1\n })));\n if (spec.propSources)\n this.nodeSet = this.nodeSet.extend(...spec.propSources);\n this.strict = false;\n this.bufferLength = DefaultBufferLength;\n let tokenArray = decodeArray(spec.tokenData);\n this.context = spec.context;\n this.specializerSpecs = spec.specialized || [];\n this.specialized = new Uint16Array(this.specializerSpecs.length);\n for (let i = 0; i < this.specializerSpecs.length; i++)\n this.specialized[i] = this.specializerSpecs[i].term;\n this.specializers = this.specializerSpecs.map(getSpecializer);\n this.states = decodeArray(spec.states, Uint32Array);\n this.data = decodeArray(spec.stateData);\n this.goto = decodeArray(spec.goto);\n this.maxTerm = spec.maxTerm;\n this.tokenizers = spec.tokenizers.map(value => typeof value == \"number\" ? new TokenGroup(tokenArray, value) : value);\n this.topRules = spec.topRules;\n this.dialects = spec.dialects || {};\n this.dynamicPrecedences = spec.dynamicPrecedences || null;\n this.tokenPrecTable = spec.tokenPrec;\n this.termNames = spec.termNames || null;\n this.maxNode = this.nodeSet.types.length - 1;\n this.dialect = this.parseDialect();\n this.top = this.topRules[Object.keys(this.topRules)[0]];\n }\n createParse(input, fragments, ranges) {\n let parse = new Parse(this, input, fragments, ranges);\n for (let w of this.wrappers)\n parse = w(parse, input, fragments, ranges);\n return parse;\n }\n /**\n Get a goto table entry @internal\n */\n getGoto(state, term, loose = false) {\n let table = this.goto;\n if (term >= table[0])\n return -1;\n for (let pos = table[term + 1];;) {\n let groupTag = table[pos++], last = groupTag & 1;\n let target = table[pos++];\n if (last && loose)\n return target;\n for (let end = pos + (groupTag >> 1); pos < end; pos++)\n if (table[pos] == state)\n return target;\n if (last)\n return -1;\n }\n }\n /**\n Check if this state has an action for a given terminal @internal\n */\n hasAction(state, terminal) {\n let data = this.data;\n for (let set = 0; set < 2; set++) {\n for (let i = this.stateSlot(state, set ? 2 /* ParseState.Skip */ : 1 /* ParseState.Actions */), next;; i += 3) {\n if ((next = data[i]) == 65535 /* Seq.End */) {\n if (data[i + 1] == 1 /* Seq.Next */)\n next = data[i = pair(data, i + 2)];\n else if (data[i + 1] == 2 /* Seq.Other */)\n return pair(data, i + 2);\n else\n break;\n }\n if (next == terminal || next == 0 /* Term.Err */)\n return pair(data, i + 1);\n }\n }\n return 0;\n }\n /**\n @internal\n */\n stateSlot(state, slot) {\n return this.states[(state * 6 /* ParseState.Size */) + slot];\n }\n /**\n @internal\n */\n stateFlag(state, flag) {\n return (this.stateSlot(state, 0 /* ParseState.Flags */) & flag) > 0;\n }\n /**\n @internal\n */\n validAction(state, action) {\n return !!this.allActions(state, a => a == action ? true : null);\n }\n /**\n @internal\n */\n allActions(state, action) {\n let deflt = this.stateSlot(state, 4 /* ParseState.DefaultReduce */);\n let result = deflt ? action(deflt) : undefined;\n for (let i = this.stateSlot(state, 1 /* ParseState.Actions */); result == null; i += 3) {\n if (this.data[i] == 65535 /* Seq.End */) {\n if (this.data[i + 1] == 1 /* Seq.Next */)\n i = pair(this.data, i + 2);\n else\n break;\n }\n result = action(pair(this.data, i + 1));\n }\n return result;\n }\n /**\n Get the states that can follow this one through shift actions or\n goto jumps. @internal\n */\n nextStates(state) {\n let result = [];\n for (let i = this.stateSlot(state, 1 /* ParseState.Actions */);; i += 3) {\n if (this.data[i] == 65535 /* Seq.End */) {\n if (this.data[i + 1] == 1 /* Seq.Next */)\n i = pair(this.data, i + 2);\n else\n break;\n }\n if ((this.data[i + 2] & (65536 /* Action.ReduceFlag */ >> 16)) == 0) {\n let value = this.data[i + 1];\n if (!result.some((v, i) => (i & 1) && v == value))\n result.push(this.data[i], value);\n }\n }\n return result;\n }\n /**\n Configure the parser. Returns a new parser instance that has the\n given settings modified. Settings not provided in `config` are\n kept from the original parser.\n */\n configure(config) {\n // Hideous reflection-based kludge to make it easy to create a\n // slightly modified copy of a parser.\n let copy = Object.assign(Object.create(LRParser.prototype), this);\n if (config.props)\n copy.nodeSet = this.nodeSet.extend(...config.props);\n if (config.top) {\n let info = this.topRules[config.top];\n if (!info)\n throw new RangeError(`Invalid top rule name ${config.top}`);\n copy.top = info;\n }\n if (config.tokenizers)\n copy.tokenizers = this.tokenizers.map(t => {\n let found = config.tokenizers.find(r => r.from == t);\n return found ? found.to : t;\n });\n if (config.specializers) {\n copy.specializers = this.specializers.slice();\n copy.specializerSpecs = this.specializerSpecs.map((s, i) => {\n let found = config.specializers.find(r => r.from == s.external);\n if (!found)\n return s;\n let spec = Object.assign(Object.assign({}, s), { external: found.to });\n copy.specializers[i] = getSpecializer(spec);\n return spec;\n });\n }\n if (config.contextTracker)\n copy.context = config.contextTracker;\n if (config.dialect)\n copy.dialect = this.parseDialect(config.dialect);\n if (config.strict != null)\n copy.strict = config.strict;\n if (config.wrap)\n copy.wrappers = copy.wrappers.concat(config.wrap);\n if (config.bufferLength != null)\n copy.bufferLength = config.bufferLength;\n return copy;\n }\n /**\n Tells you whether any [parse wrappers](#lr.ParserConfig.wrap)\n are registered for this parser.\n */\n hasWrappers() {\n return this.wrappers.length > 0;\n }\n /**\n Returns the name associated with a given term. This will only\n work for all terms when the parser was generated with the\n `--names` option. By default, only the names of tagged terms are\n stored.\n */\n getName(term) {\n return this.termNames ? this.termNames[term] : String(term <= this.maxNode && this.nodeSet.types[term].name || term);\n }\n /**\n The eof term id is always allocated directly after the node\n types. @internal\n */\n get eofTerm() { return this.maxNode + 1; }\n /**\n The type of top node produced by the parser.\n */\n get topNode() { return this.nodeSet.types[this.top[1]]; }\n /**\n @internal\n */\n dynamicPrecedence(term) {\n let prec = this.dynamicPrecedences;\n return prec == null ? 0 : prec[term] || 0;\n }\n /**\n @internal\n */\n parseDialect(dialect) {\n let values = Object.keys(this.dialects), flags = values.map(() => false);\n if (dialect)\n for (let part of dialect.split(\" \")) {\n let id = values.indexOf(part);\n if (id >= 0)\n flags[id] = true;\n }\n let disabled = null;\n for (let i = 0; i < values.length; i++)\n if (!flags[i]) {\n for (let j = this.dialects[values[i]], id; (id = this.data[j++]) != 65535 /* Seq.End */;)\n (disabled || (disabled = new Uint8Array(this.maxTerm + 1)))[id] = 1;\n }\n return new Dialect(dialect, flags, disabled);\n }\n /**\n Used by the output of the parser generator. Not available to\n user code. @hide\n */\n static deserialize(spec) {\n return new LRParser(spec);\n }\n}\nfunction pair(data, off) { return data[off] | (data[off + 1] << 16); }\nfunction findFinished(stacks) {\n let best = null;\n for (let stack of stacks) {\n let stopped = stack.p.stoppedAt;\n if ((stack.pos == stack.p.stream.end || stopped != null && stack.pos > stopped) &&\n stack.p.parser.stateFlag(stack.state, 2 /* StateFlag.Accepting */) &&\n (!best || best.score < stack.score))\n best = stack;\n }\n return best;\n}\nfunction getSpecializer(spec) {\n if (spec.external) {\n let mask = spec.extend ? 1 /* Specialize.Extend */ : 0 /* Specialize.Specialize */;\n return (value, stack) => (spec.external(value, stack) << 1) | mask;\n }\n return spec.get;\n}\n\nexport { ContextTracker, ExternalTokenizer, InputStream, LRParser, LocalTokenGroup, Stack };\n","import { LRParser } from '@lezer/lr';\n\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst Json$1 = 1,\n Logfmt$1 = 2,\n Unpack$1 = 3,\n Pattern$1 = 4,\n Regexp$1 = 5,\n Unwrap$1 = 6,\n LabelFormat$1 = 7,\n LineFormat$1 = 8,\n LabelReplace$1 = 9,\n Vector$1 = 10,\n Offset$1 = 11,\n Bool$1 = 12,\n On$1 = 13,\n Ignoring$1 = 14,\n GroupLeft$1 = 15,\n GroupRight$1 = 16,\n Decolorize$1 = 17,\n Drop$1 = 18,\n Keep$1 = 19,\n By$1 = 20,\n Without$1 = 21,\n And$1 = 22,\n Or$1 = 23,\n Unless$1 = 24,\n Sum$1 = 25,\n Avg$1 = 26,\n Count$1 = 27,\n Max$1 = 28,\n Min$1 = 29,\n Stddev$1 = 30,\n Stdvar$1 = 31,\n Bottomk$1 = 32,\n Topk$1 = 33,\n Sort$1 = 34,\n Sort_Desc$1 = 35;\n\nconst keywordTokens = {\n json: Json$1,\n logfmt: Logfmt$1,\n unpack: Unpack$1,\n pattern: Pattern$1,\n regexp: Regexp$1,\n label_format: LabelFormat$1,\n line_format: LineFormat$1,\n label_replace: LabelReplace$1,\n vector: Vector$1,\n offset: Offset$1,\n bool: Bool$1,\n on: On$1,\n ignoring: Ignoring$1,\n group_left: GroupLeft$1,\n group_right: GroupRight$1,\n unwrap: Unwrap$1,\n decolorize: Decolorize$1,\n drop: Drop$1,\n keep: Keep$1,\n};\n\nconst specializeIdentifier = (value) => {\n return keywordTokens[value.toLowerCase()] || -1;\n};\n\nconst contextualKeywordTokens = {\n by: By$1,\n without: Without$1,\n and: And$1,\n or: Or$1,\n unless: Unless$1,\n sum: Sum$1,\n avg: Avg$1,\n count: Count$1,\n max: Max$1,\n min: Min$1,\n stddev: Stddev$1,\n stdvar: Stdvar$1,\n bottomk: Bottomk$1,\n topk: Topk$1,\n sort: Sort$1,\n sort_desc: Sort_Desc$1,\n};\n\nconst extendIdentifier = (value) => {\n return contextualKeywordTokens[value.toLowerCase()] || -1;\n};\n\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst spec_Identifier = {__proto__:null,ip:295, count_over_time:301, rate:303, rate_counter:305, bytes_over_time:307, bytes_rate:309, avg_over_time:311, sum_over_time:313, min_over_time:315, max_over_time:317, stddev_over_time:319, stdvar_over_time:321, quantile_over_time:323, first_over_time:325, last_over_time:327, absent_over_time:329, bytes:335, duration:337, duration_seconds:339};\nconst parser = LRParser.deserialize({\n version: 14,\n states: \"EtOYQPOOO#cQPO'#DUOOQO'#ER'#ERO#hQPO'#ERO$}QPO'#DTOYQPO'#DTOOQO'#Ed'#EdO%[QPO'#EcOOQO'#FP'#FPO%aQPO'#FOQ%lQPOOO&mQPO'#F]O&rQPO'#F^OOQO'#Eb'#EbOOQO'#DS'#DSOOQO'#Ee'#EeOOQO'#Ef'#EfOOQO'#Eg'#EgOOQO'#Eh'#EhOOQO'#Ei'#EiOOQO'#Ej'#EjOOQO'#Ek'#EkOOQO'#El'#ElOOQO'#Em'#EmOOQO'#En'#EnOOQO'#Eo'#EoOOQO'#Ep'#EpOOQO'#Eq'#EqOOQO'#Er'#ErOOQO'#Es'#EsO&wQPO'#DWOOQO'#DV'#DVO'VQPO,59pOOQO,5:m,5:mOOQO'#Dc'#DcO'_QPO'#DbO'gQPO'#DaO)lQPO'#D`O*{QPO'#D`OOQO'#D_'#D_O+sQPO,59oO-}QPO,59oO.UQPO,5:|O.]QPO,5:}O.hQPO'#E|O0sQPO,5;jO0zQPO,5;jO1PQPO,5;lO1PQPO,5;lO1PQPO,5;lO1PQPO,5;lO1PQPO,5;lO1PQPO,5;lOYQPO,5;wO3cQPO,5;xO3hQPO,59rO#cQPO,59qOOQO1G/[1G/[OOQO'#Dh'#DhO3mQPO,59|O5^QPO,59|OOQO'#Di'#DiO5cQPO,59{OOQO,59{,59{O5kQPO'#DWO6YQPO'#DlO8PQPO'#DoO9sQPO'#DoOOQO'#Do'#DoOOQO'#Dv'#DvOOQO'#Dt'#DtO+kQPO'#DtO9xQPO,59zO;iQPO'#EVO;nQPO'#EWOOQO'#EZ'#EZO;sQPO'#E[O;xQPO'#E_OOQO,59z,59zOOQO,59y,59yOOQO1G/Z1G/ZOOQO1G0h1G0hO;}QPO'#EtO.`QPO'#EtOUQPO'#FSO@dQPO'#FRO@nQPO'#FROYQPO1G1WOYQPO1G1WOYQPO1G1WOYQPO1G1WOYQPO1G1WOYQPO1G1WO@xQPO1G1cOAPQPO1G1dOOQO1G/^1G/^OOQO1G/]1G/]O5cQPO1G/hOAUQPO1G/hOAZQPO'#DjOBzQPO'#DjOOQO1G/g1G/gOCbQPO,59rOCPQPO,5:cOOQO'#Dm'#DmOClQPO,5:WOEcQPO'#DrOOQO'#Dq'#DqOGVQPO,5:_OHvQPO,5:[OOQO,5:Z,5:ZOJgQPO,5:`O+kQPO,5:`O+kQPO,5:`OOQO,5:q,5:qOJuQPO'#EYOOQO'#EX'#EXOJzQPO,5:rOLkQPO'#E^OOQO'#E^'#E^OOQO'#E]'#E]ONbQPO,5:vO!!RQPO'#EaOOQO'#Ea'#EaOOQO'#E`'#E`O!#xQPO,5:yO!%iQPO'#D`O;}QPO,5;`O!%pQPO'#EuO!%uQPO,5;`O!%}QPO,5;`O!&[QPO,5;`O!&iQPO,5;`O!&nQPO7+&TO.`QPO7+&TOOQO'#E}'#E}O!(OQPO1G1SOOQO1G1S1G1SOYQPO7+&pO!(WQPO7+&pO!)hQPO7+&pO!)oQPO7+&pO!)vQQO'#FTOOQO,5;n,5;nO!,UQPO,5;mO!,]QPO,5;mO!-nQPO7+&rO!-uQPO7+&rOOQO7+&r7+&rO!.SQPO7+&rO!.ZQPO7+&rO!/`QPO7+&rO!/pQPO7+&}OOQO7+'O7+'OOOQO7+%S7+%SO!/uQPO7+%SO5cQPO,5:UO!/zQPO,5:UO!0PQPO1G/{OOQO1G/}1G/}OOQO1G0U1G0UOOQO1G0W1G0WOOQO,5:X,5:XO!0UQPO1G/yO!1uQPO,5:^O!1zQPO,5:]OOQO1G/z1G/zO!2PQPO1G/zO!3pQPO,5:tO;nQPO,5:sO;sQPO,5:wO;xQPO,5:zO!3xQPO,5;cO!%uQPO1G0zO!4WQPO1G0zO!4`QPO,5;aO+kQPO,5;cO!4eQPO1G0zO!4oQPO'#EvO!4tQPO1G0zO!4eQPO1G0zO!4|QPO1G0zO!5ZQPO1G0zO!%xQPO1G0zOOQO1G0z1G0zOOQO<mAN>mO!=uQPO<SQPOLD+ZOOQOAN?oAN?oOOQO,5:r,5:rO!>XQPO!$'NuO!>^QPO!)9DaO!>cQPO!.K9{OOQO!4//g!4//gO;nQPO'#EWO!>hQPO'#D`O!?`QPO,59oO!@fQPO'#DTOYQPO1G1WOYQPO1G1WOYQPO1G1WOYQPO1G1WOYQPO1G1WOYQPO1G1WO1PQPO,5;lO1PQPO,5;lO1PQPO,5;lO1PQPO,5;lO1PQPO,5;lO1PQPO,5;lO!AqQPO7+&rO!AxQPO7+&rO!BVQPO7+&rO!C_QPO7+&rO!CfQPO7+&rO!B^QPO'#FQ\",\n stateData: \"!Cs~O$TOStOS~OXZOY[OiWOjWOkWOlWOmWOnWOoWOpWOqWOrWOsWO!vQO!wRO!xRO$UPO$YTO$[_O$]`O$^aO$_bO$`cO$adO$beO$cfO$dgO$ehO$fiO$gjO$hkO$ilO$jmO~O{nO~O!vqO~O!OrO!QrO!WrO!XrO!YrO!ZrOfwXgwXhwX!lwX!nwX!owX!pwX!qwX!wwX!xwX#{wX#|wX#}wX$OwX~O!_vO$RwX$ZwX~P#mO$Y{O~Od|Oe|O$Y}O~Of!QOg!POh!QO!O!UO!l!UO!n!UO!o!UO!p!UO!q!UO!w!RO!x!RO#{!SO#|!SO#}!SO$O!TO~O$Y!VO~O$Y!WO~O|!XO!O!XO!P!XO!Q!XO~O$V!YO$W!ZO~O}!]O$X!_O~Og!`Of!TXh!TX!O!TX!Q!TX!W!TX!X!TX!Y!TX!Z!TX!_!TX!l!TX!n!TX!o!TX!p!TX!q!TX!w!TX!x!TX#{!TX#|!TX#}!TX$O!TX$R!TX$Z!TX$k!TX$V!TX~O!OrO!QrO!WrO!XrO!YrO!ZrO~Of!SXg!SXh!SX!_!SX!l!SX!n!SX!o!SX!p!SX!q!SX!w!SX!x!SX#{!SX#|!SX#}!SX$O!SX$R!SX$Z!SX$k!SX$V!SX~P)WOP!dOQ!cOR!fOS!eOT!eOV!lOW!kOa!mOb!nOc!oO{!bO$Y!iO~O!_vOfwagwahwa!lwa!nwa!owa!pwa!qwa!wwa!xwa#{wa#|wa#}wa$Owa$Rwa$Zwa~P)WOfvXgvXhvX!OvX!lvX!nvX!ovX!pvX!qvX!wvX!xvX#{vX#|vX#}vX$OvX~O$Z!rO~P,|O$Z!sO~P,|O!v!wO$UPO$Y!uO~O$Y!xO~OXZOY[OiWOjWOkWOlWOmWOnWOoWOpWOqWOrWOsWO!wRO!xRO$UPO$YTO$[_O$]`O$^aO$_bO$`cO$adO$beO$cfO$dgO$ehO$fiO$gjO$hkO$ilO$jmO~O!v!yO~P.mO$Y!{O~O[#OO]!|O^!|OX#uPY#uPi#uPj#uPk#uPl#uPm#uPn#uPo#uPp#uPq#uPr#uPs#uP!v#uP!w#uP!x#uP$U#uP$Y#uP$[#uP$]#uP$^#uP$_#uP$`#uP$a#uP$b#uP$c#uP$d#uP$e#uP$f#uP$g#uP$h#uP$i#uP$j#uP~O!v#WO~O}#XO~Og#ZOf!Uah!Ua!O!Ua!Q!Ua!W!Ua!X!Ua!Y!Ua!Z!Ua!_!Ua!l!Ua!n!Ua!o!Ua!p!Ua!q!Ua!w!Ua!x!Ua#{!Ua#|!Ua#}!Ua$O!Ua$R!Ua$Z!Ua$k!Ua$V!Ua~O$Y#[O~O}#]O$X!_O~O|#`O!O#`O!P!XO!Q!XO!l#aO!n#aO!o#aO!p#aO!q#aO~O{#dO!b#bOf!`Xg!`Xh!`X!O!`X!Q!`X!W!`X!X!`X!Y!`X!Z!`X!_!`X!l!`X!n!`X!o!`X!p!`X!q!`X!w!`X!x!`X#{!`X#|!`X#}!`X$O!`X$R!`X$Z!`X$k!`X$V!`X~O{#dOf!cXg!cXh!cX!O!cX!Q!cX!W!cX!X!cX!Y!cX!Z!cX!_!cX!l!cX!n!cX!o!cX!p!cX!q!cX!w!cX!x!cX#{!cX#|!cX#}!cX$O!cX$R!cX$Z!cX$k!cX$V!cX~O}#hO~Of#jOg#kO$V#jOh!Sa!O!Sa!Q!Sa!W!Sa!X!Sa!Y!Sa!Z!Sa!_!Sa!l!Sa!n!Sa!o!Sa!p!Sa!q!Sa!w!Sa!x!Sa#{!Sa#|!Sa#}!Sa$O!Sa$R!Sa$Z!Sa$k!Sa~O}#lO~O{#mO~O{#pO~O{#tO~O!_#xO$k#zO~P)WO$Z$PO~O$V$QO~O{$RO$Z$TO~Of!uXg!uXh!uX!O!uX!l!uX!n!uX!o!uX!p!uX!q!uX!w!uX!x!uX#{!uX#|!uX#}!uX$O!uX$Z!uX~O$V$UO~PZO]!|O^!|O~P>ZO$V$dO~P,|O$Z$eO~O}$gO~Og$hOf!^Xh!^X!O!^X!Q!^X!W!^X!X!^X!Y!^X!Z!^X!_!^X!l!^X!n!^X!o!^X!p!^X!q!^X!w!^X!x!^X#{!^X#|!^X#}!^X$O!^X$R!^X$Z!^X$k!^X$V!^X~O$Y$iO~O!m$kO!s$lO!vQO!wRO!xRO~O}#XO$X!_O~PCPO{#dO!b$nOf!`ag!`ah!`a!O!`a!Q!`a!W!`a!X!`a!Y!`a!Z!`a!_!`a!l!`a!n!`a!o!`a!p!`a!q!`a!w!`a!x!`a#{!`a#|!`a#}!`a$O!`a$R!`a$Z!`a$k!`a$V!`a~O|$pOf!fXg!fXh!fX!O!fX!Q!fX!W!fX!X!fX!Y!fX!Z!fX!_!fX!l!fX!n!fX!o!fX!p!fX!q!fX!w!fX!x!fX#{!fX#|!fX#}!fX$O!fX$R!fX$V!fX$Z!fX$k!fX~O$V$qOf!gag!gah!ga!O!ga!Q!ga!W!ga!X!ga!Y!ga!Z!ga!_!ga!l!ga!n!ga!o!ga!p!ga!q!ga!w!ga!x!ga#{!ga#|!ga#}!ga$O!ga$R!ga$Z!ga$k!ga~O$V$qOf!dag!dah!da!O!da!Q!da!W!da!X!da!Y!da!Z!da!_!da!l!da!n!da!o!da!p!da!q!da!w!da!x!da#{!da#|!da#}!da$O!da$R!da$Z!da$k!da~Of#jOg#kO$V#jO$Z$rO~O|$tO~O$V$uOf!zag!zah!za!O!za!Q!za!W!za!X!za!Y!za!Z!za!_!za!l!za!n!za!o!za!p!za!q!za!w!za!x!za#{!za#|!za#}!za$O!za$R!za$Z!za$k!za~O|!XO!O!XO!P!XO!Q!XOf#QXg#QXh#QX!W#QX!X#QX!Y#QX!Z#QX!_#QX!l#QX!n#QX!o#QX!p#QX!q#QX!w#QX!x#QX#{#QX#|#QX#}#QX$O#QX$R#QX$V#QX$Z#QX$k#QX~O$V$vOf#Oag#Oah#Oa!O#Oa!Q#Oa!W#Oa!X#Oa!Y#Oa!Z#Oa!_#Oa!l#Oa!n#Oa!o#Oa!p#Oa!q#Oa!w#Oa!x#Oa#{#Oa#|#Oa#}#Oa$O#Oa$R#Oa$Z#Oa$k#Oa~O|!XO!O!XO!P!XO!Q!XOf#TXg#TXh#TX!W#TX!X#TX!Y#TX!Z#TX!_#TX!l#TX!n#TX!o#TX!p#TX!q#TX!w#TX!x#TX#{#TX#|#TX#}#TX$O#TX$R#TX$V#TX$Z#TX$k#TX~O$V$wOf#Rag#Rah#Ra!O#Ra!Q#Ra!W#Ra!X#Ra!Y#Ra!Z#Ra!_#Ra!l#Ra!n#Ra!o#Ra!p#Ra!q#Ra!w#Ra!x#Ra#{#Ra#|#Ra#}#Ra$O#Ra$R#Ra$Z#Ra$k#Ra~OU$xO~P*{O!m${O~O!_$|O$k#zO~OZ%OO!_#xO$Z#ha~P)WO!_#xO$Z%TO$k#zO~P)WO$Z%UO~Od|Oe|Of#Vqg#Vqh#Vq!O#Vq!l#Vq!n#Vq!o#Vq!p#Vq!q#Vq!w#Vq!x#Vq#{#Vq#|#Vq#}#Vq$O#Vq$R#Vq$Z#Vq$V#Vq~O$V%XO$Z%YO~Od|Oe|Of#rqg#rqh#rq!O#rq!l#rq!n#rq!o#rq!p#rq!q#rq!w#rq!x#rq#{#rq#|#rq#}#rq$O#rq$R#rq$Z#rq$V#rq~O$V%]O~P (specializeIdentifier(value) << 1)},{term: 43, get: (value, stack) => (extendIdentifier(value) << 1) | 1},{term: 43, get: value => spec_Identifier[value] || -1}],\n tokenPrec: 0\n});\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst Json = 1,\n Logfmt = 2,\n Unpack = 3,\n Pattern = 4,\n Regexp = 5,\n Unwrap = 6,\n LabelFormat = 7,\n LineFormat = 8,\n LabelReplace = 9,\n Vector = 10,\n Offset = 11,\n Bool = 12,\n On = 13,\n Ignoring = 14,\n GroupLeft = 15,\n GroupRight = 16,\n Decolorize = 17,\n Drop = 18,\n Keep = 19,\n By = 20,\n Without = 21,\n And = 22,\n Or = 23,\n Unless = 24,\n Sum = 25,\n Avg = 26,\n Count = 27,\n Max = 28,\n Min = 29,\n Stddev = 30,\n Stdvar = 31,\n Bottomk = 32,\n Topk = 33,\n Sort = 34,\n Sort_Desc = 35,\n LineComment = 36,\n LogQL = 37,\n Expr = 38,\n LogExpr = 39,\n Selector = 40,\n Matchers = 41,\n Matcher = 42,\n Identifier = 43,\n Eq = 44,\n String = 45,\n Neq = 46,\n Re = 47,\n Nre = 48,\n PipelineExpr = 49,\n PipelineStage = 50,\n LineFilters = 51,\n LineFilter = 52,\n Filter = 53,\n PipeExact = 54,\n PipeMatch = 55,\n PipePattern = 56,\n Npa = 57,\n FilterOp = 58,\n Ip = 59,\n OrFilter = 60,\n Pipe = 61,\n LogfmtParser = 62,\n LogfmtParserFlags = 63,\n ParserFlag = 64,\n LabelParser = 65,\n JsonExpressionParser = 66,\n LabelExtractionExpressionList = 67,\n LabelExtractionExpression = 68,\n LogfmtExpressionParser = 69,\n LabelFilter = 70,\n IpLabelFilter = 71,\n UnitFilter = 72,\n DurationFilter = 73,\n Gtr = 74,\n Duration = 75,\n Gte = 76,\n Lss = 77,\n Lte = 78,\n Eql = 79,\n BytesFilter = 80,\n Bytes = 81,\n NumberFilter = 82,\n LiteralExpr = 83,\n Number = 84,\n Add = 85,\n Sub = 86,\n LineFormatExpr = 87,\n LabelFormatExpr = 88,\n LabelsFormat = 89,\n LabelFormatMatcher = 90,\n DecolorizeExpr = 91,\n DropLabelsExpr = 92,\n DropLabels = 93,\n DropLabel = 94,\n KeepLabelsExpr = 95,\n KeepLabels = 96,\n KeepLabel = 97,\n MetricExpr = 98,\n RangeAggregationExpr = 99,\n RangeOp = 100,\n CountOverTime = 101,\n Rate = 102,\n RateCounter = 103,\n BytesOverTime = 104,\n BytesRate = 105,\n AvgOverTime = 106,\n SumOverTime = 107,\n MinOverTime = 108,\n MaxOverTime = 109,\n StddevOverTime = 110,\n StdvarOverTime = 111,\n QuantileOverTime = 112,\n FirstOverTime = 113,\n LastOverTime = 114,\n AbsentOverTime = 115,\n LogRangeExpr = 116,\n Range = 117,\n OffsetExpr = 118,\n UnwrapExpr = 119,\n ConvOp = 120,\n BytesConv = 121,\n DurationConv = 122,\n DurationSecondsConv = 123,\n Grouping = 124,\n Labels = 125,\n VectorAggregationExpr = 126,\n VectorOp = 127,\n BinOpExpr = 128,\n BinOpModifier = 129,\n OnOrIgnoringModifier = 130,\n GroupingLabels = 131,\n GroupingLabelList = 132,\n GroupingLabel = 133,\n LabelName = 134,\n Mul = 135,\n Div = 136,\n Mod = 137,\n Pow = 138,\n LabelReplaceExpr = 139,\n VectorExpr = 140;\n\nexport { AbsentOverTime, Add, And, Avg, AvgOverTime, BinOpExpr, BinOpModifier, Bool, Bottomk, By, Bytes, BytesConv, BytesFilter, BytesOverTime, BytesRate, ConvOp, Count, CountOverTime, Decolorize, DecolorizeExpr, Div, Drop, DropLabel, DropLabels, DropLabelsExpr, Duration, DurationConv, DurationFilter, DurationSecondsConv, Eq, Eql, Expr, Filter, FilterOp, FirstOverTime, GroupLeft, GroupRight, Grouping, GroupingLabel, GroupingLabelList, GroupingLabels, Gte, Gtr, Identifier, Ignoring, Ip, IpLabelFilter, Json, JsonExpressionParser, Keep, KeepLabel, KeepLabels, KeepLabelsExpr, LabelExtractionExpression, LabelExtractionExpressionList, LabelFilter, LabelFormat, LabelFormatExpr, LabelFormatMatcher, LabelName, LabelParser, LabelReplace, LabelReplaceExpr, Labels, LabelsFormat, LastOverTime, LineComment, LineFilter, LineFilters, LineFormat, LineFormatExpr, LiteralExpr, LogExpr, LogQL, LogRangeExpr, Logfmt, LogfmtExpressionParser, LogfmtParser, LogfmtParserFlags, Lss, Lte, Matcher, Matchers, Max, MaxOverTime, MetricExpr, Min, MinOverTime, Mod, Mul, Neq, Npa, Nre, Number, NumberFilter, Offset, OffsetExpr, On, OnOrIgnoringModifier, Or, OrFilter, ParserFlag, Pattern, Pipe, PipeExact, PipeMatch, PipePattern, PipelineExpr, PipelineStage, Pow, QuantileOverTime, Range, RangeAggregationExpr, RangeOp, Rate, RateCounter, Re, Regexp, Selector, Sort, Sort_Desc, Stddev, StddevOverTime, Stdvar, StdvarOverTime, String, Sub, Sum, SumOverTime, Topk, UnitFilter, Unless, Unpack, Unwrap, UnwrapExpr, Vector, VectorAggregationExpr, VectorExpr, VectorOp, Without, parser };\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \".js\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"public/plugins/grafana-lokiexplore-app/\";","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t231: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkgrafana_lokiexplore_app\"] = self[\"webpackChunkgrafana_lokiexplore_app\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(9077);\n"],"names":["leafPrototypes","getProto","inProgress","dataWebpackPrefix","OpenInLogsDrilldownButton","lazy","exposedComponents","id","title","description","component","props","Suspense","fallback","LinkButton","variant","disabled","App","wasmSupported","default","initRuntimeDs","initChangepoint","initOutlier","Promise","all","AppConfig","plugin","AppPlugin","setRootPage","addConfigPage","icon","body","linkConfig","linkConfigs","addLink","exposedComponentConfig","exposeComponent","PRODUCT_NAME","ExtensionPoints","MetricInvestigation","targets","PluginExtensionPoints","DashboardPanelMenu","path","createAppUrl","configure","contextToLink","ExploreToolbarAction","stringifyValues","value","EMPTY_VARIABLE_VALUE","replaceEscapeChars","replace","stringifyAdHocValues","addAdHocFilterUserInputPrefix","context","lokiQuery","find","target","datasource","type","uid","expr","labelFilters","lineFilters","fields","patternFilters","getMatcherFromQuery","labelSelector","selector","isOperatorInclusive","operator","labelValue","replaceSlash","split","labelName","key","SERVICE_NAME","sort","a","params","setUrlParameter","UrlParameters","DatasourceId","URLSearchParams","TimeRangeFrom","timeRange","from","valueOf","toString","TimeRangeTo","to","labelFilter","LabelType","Indexed","labelsAdHocFilterURLString","escapeURLDelimiters","appendUrlParameter","Labels","lineFilter","LineFilters","length","field","StructuredMetadata","LEVEL_VARIABLE_VALUE","Levels","Metadata","fieldValue","parser","adHocFilterURLString","JSON","stringify","Fields","patterns","push","PatternFilterOp","match","pattern","patternsString","renderPatternFilters","Patterns","PatternsVariable","urlParams","pluginJson","VAR_DATASOURCE","VAR_LABELS","VAR_FIELDS","VAR_METADATA","VAR_LEVELS","VAR_LINE_FILTERS","VAR_PATTERNS","initalParams","searchParams","location","search","set","append","parameter","stripAdHocFilterUserInputPrefix","Symbol","escapeUrlCommaDelimiters","escapeUrlPipeDelimiters","LabelFilterOp","NumericFilterOp","FilterOp","LineFilterOp","LineFilterCaseSensitive","defaultContext","app","version","logger","info","msg","ctx","console","log","attemptFaroInfo","warn","attemptFaroWarn","error","err","attemptFaroErr","logInfo","e","logWarning","context2","isRecord","Object","keys","forEach","hasData","data","populateFetchErrorContext","Error","logError","NodePosition","fromNode","node","contains","position","this","getExpression","query","substring","constructor","syntaxNode","getNodesFromQuery","nodeTypes","nodes","parse","iterate","enter","undefined","includes","getAllPositionsInNodeByType","positions","pos","child","childAfter","parseNonPatternFilters","lineFilterValue","quoteString","index","isRegexSelector","regex","negativeRegex","isCaseInsensitive","replaceDoubleEscape","RegExp","replaceDoubleQuoteEscape","caseInsensitive","caseSensitive","parsePatternFilters","getNumericFieldOperator","matcher","Lte","FilterOperator","lte","Lss","lt","Gte","gte","Gtr","gt","getStringFieldOperator","Eq","Equal","Neq","NotEqual","Re","RegexEqual","Nre","RegexNotEqual","filter","Selector","allMatcher","Matcher","identifierPosition","valuePosition","Identifier","String","map","parseLabelFilters","allLineFilters","LineFilter","entries","equal","PipeExact","pipeRegExp","PipeMatch","notEqual","notEqualRegExp","patternInclude","PipePattern","patternExclude","Npa","lineFilterValueNodes","getStringsFromLineFilter","lineFilterValueNode","negativeMatch","parseLineFilters","dataFrame","series","frame","refId","allFields","LabelFilter","fieldNameNode","expression","getChild","logFmtParser","Logfmt","jsonParser","Json","fieldName","fieldStringValue","fieldNumberValue","Number","fieldBytesValue","Bytes","fieldDurationValue","Duration","labelType","getLabelTypeFromFrame","Parsed","parseFields","ErrorId","isValidQuery","nodeType","isQueryWithNode","string","OrFilter","LokiQueryDirection","labelKey","typeField","name","values","isObj","o","hasProp","prop","isString","s","obj","unknownToStrings","strings","Array","isArray","i","narrowSelectedTableRow","narrowed","row","narrowLogsVisualizationType","narrowLogsSortOrder","LogsSortOrder","Ascending","Descending","narrowFieldValue","narrowRecordStringNumber","returnRecord","narrowTimeRange","unknownRange","range","narrowFilterOperator","op","NarrowingError","isOperatorExclusive","isOperatorRegex","isOperatorNumeric","numericOperatorArray","getOperatorDescription","operators","array","label","includeOperators","numericOperators","lineFilterOperators","escapeLabelValueInExactSelector","excludePatternsLine","p","join","trim","includePatterns","includePatternsLine","VAR_LABELS_EXPR","VAR_LABELS_REPLICA","VAR_LABELS_REPLICA_EXPR","VAR_FIELDS_EXPR","PENDING_FIELDS_EXPR","PENDING_METADATA_EXPR","VAR_FIELDS_AND_METADATA","VAR_METADATA_EXPR","VAR_PATTERNS_EXPR","VAR_LEVELS_EXPR","VAR_FIELD_GROUP_BY","VAR_LABEL_GROUP_BY","VAR_LABEL_GROUP_BY_EXPR","VAR_PRIMARY_LABEL_SEARCH","VAR_PRIMARY_LABEL","VAR_PRIMARY_LABEL_EXPR","VAR_DATASOURCE_EXPR","MIXED_FORMAT_EXPR","JSON_FORMAT_EXPR","LOGS_FORMAT_EXPR","VAR_LOGS_FORMAT","VAR_LOGS_FORMAT_EXPR","VAR_LINE_FILTER","VAR_LINE_FILTERS_EXPR","LOG_STREAM_SELECTOR_EXPR","DETECTED_FIELD_AND_METADATA_VALUES_EXPR","DETECTED_LEVELS_VALUES_EXPR","PATTERNS_SAMPLE_SELECTOR_EXPR","PRETTY_LOG_STREAM_SELECTOR_EXPR","EXPLORATION_DS","ALL_VARIABLE_VALUE","SERVICE_UI_LABEL","VAR_AGGREGATED_METRICS","USER_INPUT_ADHOC_VALUE_PREFIX","startsWith","isAdHocFilterValueUserInput","module","exports","__WEBPACK_EXTERNAL_MODULE__6089__","__WEBPACK_EXTERNAL_MODULE__7781__","__WEBPACK_EXTERNAL_MODULE__8531__","__WEBPACK_EXTERNAL_MODULE__2007__","__WEBPACK_EXTERNAL_MODULE__3241__","__WEBPACK_EXTERNAL_MODULE__5959__","__WEBPACK_EXTERNAL_MODULE__8398__","__WEBPACK_EXTERNAL_MODULE__200__","__WEBPACK_EXTERNAL_MODULE__3806__","__WEBPACK_EXTERNAL_MODULE__7694__","__WEBPACK_EXTERNAL_MODULE__1269__","DefaultBufferLength","nextPropID","Range","NodeProp","config","perNode","deserialize","add","RangeError","NodeType","result","closedBy","str","openedBy","group","isolate","contextHash","lookAhead","mounted","MountedTree","tree","overlay","get","noProps","create","flags","define","spec","top","skipped","src","isTop","isSkipped","isError","isAnonymous","is","indexOf","direct","groups","found","none","NodeSet","types","extend","newTypes","newProps","source","assign","CachedNode","WeakMap","CachedInnerNode","IterMode","Tree","children","ch","test","cursor","mode","TreeCursor","topNode","cursorAt","side","scope","moveTo","_tree","TreeNode","resolve","resolveNode","resolveInner","resolveStack","inner","layers","scan","parent","mount","root","iterStack","stackIterator","leave","anon","IncludeAnonymous","c","entered","firstChild","nextSibling","propValues","balance","balanceRange","makeTree","build","_a","buffer","nodeSet","maxBufferLength","reused","minRepeatType","FlatBufferCursor","takeNode","parentStart","minPos","inRepeat","depth","start","end","size","lookAheadAtStart","contextAtStart","next","startPos","maxSize","fork","skip","minStart","nodeSize","localSkipped","nodeStart","findBufferSize","Uint16Array","endPos","copyToBuffer","TreeBuffer","localChildren","localPositions","localInRepeat","lastGroup","lastEnd","makeRepeatLeaf","takeFlatNode","reverse","make","last","lookAheadProp","lastI","makeBalanced","nodeCount","stopAt","j","base","pop","pair","concat","bufferStart","startIndex","topID","buildTree","empty","childString","endIndex","findChild","dir","pick","checkSide","slice","startI","endI","b","copy","len","Math","max","overlays","IgnoreOverlays","BaseNode","before","after","r","getChildren","matchContext","matchNodeContext","enterUnfinishedNodesBefore","childBefore","lastChild","prevSibling","_parent","super","nextChild","ExcludeBuffers","BufferNode","BufferContext","hasChild","IgnoreMounts","rPos","nextSignificantParent","val","toTree","cur","externalSibling","heads","picked","newHeads","splice","StackIterator","stack","bufferNode","yieldNode","n","unshift","yieldBuf","yield","enterChild","sibling","d","atLastNode","move","prev","cache","mustLeave","some","nodeSizeCache","balanceType","mkTop","mkTree","total","maxChild","ceil","divide","offset","groupFrom","groupStart","groupSize","nextSize","only","Parser","startParse","input","fragments","ranges","StringInput","createParse","done","advance","chunk","lineChunks","read","Stack","state","reducePos","score","bufferBase","curContext","_","cx","StackContext","pushState","reduce","action","lookaheadRecord","setLookAhead","dPrec","dynamicPrecedence","getGoto","minRepeatTerm","storeNode","reduceContext","lastBigReductionStart","bigReductionCount","lastBigReductionSize","count","stateFlag","baseStateID","term","mustSink","mustMove","shift","shiftContext","maxNode","nextState","apply","nextStart","nextEnd","useNode","updateContext","tracker","reuse","stream","reset","off","recoverByDelete","isNode","canShift","sim","SimulatedStack","stateSlot","hasAction","recoverByInsert","nextStates","best","v","forceReduce","validAction","backup","findForcedReduction","seen","explore","allActions","rDepth","forceAll","deadEnd","restart","sameState","other","dialectEnabled","dialectID","dialect","emitContext","hash","emitLookAhead","newCx","close","strict","goto","StackBufferCursor","maybeNext","decodeArray","Type","out","charCodeAt","stop","digit","CachedToken","extended","mask","nullToken","InputStream","chunkOff","chunk2","chunk2Pos","token","rangeIndex","chunkPos","readNext","resolveOffset","assoc","clipPos","peek","idx","resolved","acceptToken","endOffset","acceptTokenTo","getChunk","nextChunk","setDone","min","TokenGroup","precTable","precOffset","groupMask","accEnd","allows","overrides","low","high","mid","readToken","tokenPrecTable","findOffset","tableData","tableOffset","iPrev","prototype","contextual","verbose","process","env","LOG","stackIDs","cutAt","fragment","safeFrom","safeTo","trees","nextFragment","fr","openStart","openEnd","nodeAt","TokenCache","tokens","mainToken","actions","tokenizers","getActions","actionIndex","main","tokenizer","updateCachedToken","addActions","eofTerm","getMainToken","specialized","specializers","putAction","Parse","recovering","nextStackID","minStackPos","stoppedAt","topTerm","stacks","bufferLength","parsedPos","stopped","stoppedTokens","newStacks","advanceStack","tok","finished","findFinished","stackID","stackToTree","getName","SyntaxError","runRecovery","maxRemaining","outer","strictCx","cxHash","cached","defaultReduce","localStack","advanceFully","pushStackDedup","restarted","tokenEnd","force","forceBase","insert","fromCodePoint","Dialect","LRParser","wrappers","nodeNames","repeatNodeCount","topTerms","topRules","nodeProps","setProp","nodeID","propSpec","skippedNodes","propSources","tokenArray","tokenData","specializerSpecs","getSpecializer","states","Uint32Array","stateData","maxTerm","dialects","dynamicPrecedences","tokenPrec","termNames","parseDialect","w","loose","table","groupTag","terminal","slot","flag","deflt","t","external","contextTracker","wrap","hasWrappers","prec","part","Uint8Array","keywordTokens","json","logfmt","unpack","regexp","label_format","line_format","label_replace","vector","bool","on","ignoring","group_left","group_right","unwrap","decolorize","drop","keep","contextualKeywordTokens","by","without","and","or","unless","sum","avg","stddev","stdvar","bottomk","topk","sort_desc","spec_Identifier","__proto__","ip","count_over_time","rate","rate_counter","bytes_over_time","bytes_rate","avg_over_time","sum_over_time","min_over_time","max_over_time","stddev_over_time","stdvar_over_time","quantile_over_time","first_over_time","last_over_time","absent_over_time","bytes","duration","duration_seconds","toLowerCase","specializeIdentifier","extendIdentifier","MetricExpr","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","call","m","getter","__esModule","getPrototypeOf","then","ns","def","current","getOwnPropertyNames","definition","defineProperty","enumerable","f","chunkId","promises","u","g","globalThis","Function","window","hasOwnProperty","l","url","script","needAttach","scripts","document","getElementsByTagName","getAttribute","createElement","charset","timeout","nc","setAttribute","onScriptComplete","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","fn","setTimeout","bind","head","appendChild","toStringTag","baseURI","self","href","installedChunks","installedChunkData","promise","reject","errorType","realSrc","message","request","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","chunkLoadingGlobal"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"module.js","mappings":"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","sources":["webpack://grafana-lokiexplore-app/webpack/runtime/create fake namespace object","webpack://grafana-lokiexplore-app/webpack/runtime/load script","webpack://grafana-lokiexplore-app/./services/extensions/exposedComponents.tsx","webpack://grafana-lokiexplore-app/./module.tsx","webpack://grafana-lokiexplore-app/./services/extensions/links.ts","webpack://grafana-lokiexplore-app/./services/fieldsTypes.ts","webpack://grafana-lokiexplore-app/./services/filterTypes.ts","webpack://grafana-lokiexplore-app/./services/logger.ts","webpack://grafana-lokiexplore-app/./services/logqlMatchers.ts","webpack://grafana-lokiexplore-app/./services/lokiQuery.ts","webpack://grafana-lokiexplore-app/./services/narrowing.ts","webpack://grafana-lokiexplore-app/./services/operatorHelpers.ts","webpack://grafana-lokiexplore-app/./services/getOperatorDescription.ts","webpack://grafana-lokiexplore-app/./services/operators.ts","webpack://grafana-lokiexplore-app/./services/extensions/scenesMethods.ts","webpack://grafana-lokiexplore-app/./services/renderPatternFilters.ts","webpack://grafana-lokiexplore-app/./services/variables.ts","webpack://grafana-lokiexplore-app/external amd \"@emotion/css\"","webpack://grafana-lokiexplore-app/external amd \"@grafana/data\"","webpack://grafana-lokiexplore-app/external amd \"@grafana/runtime\"","webpack://grafana-lokiexplore-app/external amd \"@grafana/ui\"","webpack://grafana-lokiexplore-app/external amd \"lodash\"","webpack://grafana-lokiexplore-app/external amd \"react\"","webpack://grafana-lokiexplore-app/external amd \"react-dom\"","webpack://grafana-lokiexplore-app/external amd \"react-redux\"","webpack://grafana-lokiexplore-app/external amd \"react-router-dom\"","webpack://grafana-lokiexplore-app/external amd \"redux\"","webpack://grafana-lokiexplore-app/external amd \"rxjs\"","webpack://grafana-lokiexplore-app/../node_modules/@lezer/common/dist/index.js","webpack://grafana-lokiexplore-app/../node_modules/@lezer/lr/dist/index.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/lezer-logql/index.es.js","webpack://grafana-lokiexplore-app/webpack/bootstrap","webpack://grafana-lokiexplore-app/webpack/runtime/compat get default export","webpack://grafana-lokiexplore-app/webpack/runtime/define property getters","webpack://grafana-lokiexplore-app/webpack/runtime/ensure chunk","webpack://grafana-lokiexplore-app/webpack/runtime/get javascript chunk filename","webpack://grafana-lokiexplore-app/webpack/runtime/global","webpack://grafana-lokiexplore-app/webpack/runtime/hasOwnProperty shorthand","webpack://grafana-lokiexplore-app/webpack/runtime/make namespace object","webpack://grafana-lokiexplore-app/webpack/runtime/publicPath","webpack://grafana-lokiexplore-app/webpack/runtime/jsonp chunk loading","webpack://grafana-lokiexplore-app/webpack/startup"],"sourcesContent":["var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"grafana-lokiexplore-app:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","import { LinkButton } from '@grafana/ui';\nimport { OpenInLogsDrilldownButtonProps } from 'Components/OpenInLogsDrilldownButton/types';\nimport React, { lazy, Suspense } from 'react';\nconst OpenInLogsDrilldownButton = lazy(() => import('Components/OpenInLogsDrilldownButton/OpenInLogsDrilldownButton'));\n\nfunction SuspendedOpenInLogsDrilldownButton(props: OpenInLogsDrilldownButtonProps) {\n return (\n \n Open in Logs Drilldown\n \n }\n >\n \n \n );\n}\n\nexport const exposedComponents = [\n {\n id: `grafana-lokiexplore-app/open-in-explore-logs-button/v1`,\n title: 'Open in Logs Drilldown button',\n description: 'A button that opens a logs view in the Logs Drilldown app.',\n component: SuspendedOpenInLogsDrilldownButton,\n },\n];\n","import { lazy } from 'react';\nimport { AppPlugin } from '@grafana/data';\nimport { linkConfigs } from 'services/extensions/links';\nimport { exposedComponents } from 'services/extensions/exposedComponents';\n\n// Anything imported in this file is included in the main bundle which is pre-loaded in Grafana\n// Don't add imports to this file without lazy loading\n// Link extensions are the exception as they must be included in the main bundle in order to work in core Grafana\nconst App = lazy(async () => {\n const { wasmSupported } = await import('services/sorting');\n\n const { default: initRuntimeDs } = await import('services/datasource');\n const { default: initChangepoint } = await import('@bsull/augurs/changepoint');\n const { default: initOutlier } = await import('@bsull/augurs/outlier');\n\n initRuntimeDs();\n\n if (wasmSupported()) {\n await Promise.all([initChangepoint(), initOutlier()]);\n }\n\n return import('Components/App');\n});\n\nconst AppConfig = lazy(async () => {\n return await import('./Components/AppConfig/AppConfig');\n});\n\nexport const plugin = new AppPlugin<{}>().setRootPage(App).addConfigPage({\n title: 'Configuration',\n icon: 'cog',\n body: AppConfig,\n id: 'configuration',\n});\n\nfor (const linkConfig of linkConfigs) {\n plugin.addLink(linkConfig);\n}\n\nfor (const exposedComponentConfig of exposedComponents) {\n plugin.exposeComponent(exposedComponentConfig);\n}\n","// Warning: This file (and any imports) are included in the main bundle with Grafana in order to provide link extension support in Grafana core, in an effort to keep Grafana loading quickly, please do not add any unnecessary imports to this file and run the bundle analyzer before committing any changes!\nimport { PluginExtensionLinkConfig, PluginExtensionPanelContext, PluginExtensionPoints } from '@grafana/data';\n\nimport {\n addAdHocFilterUserInputPrefix,\n AdHocFieldValue,\n AppliedPattern,\n EMPTY_VARIABLE_VALUE,\n LEVEL_VARIABLE_VALUE,\n SERVICE_NAME,\n stripAdHocFilterUserInputPrefix,\n VAR_DATASOURCE,\n VAR_FIELDS,\n VAR_LABELS,\n VAR_LEVELS,\n VAR_LINE_FILTERS,\n VAR_METADATA,\n VAR_PATTERNS,\n} from 'services/variables';\nimport pluginJson from '../../plugin.json';\nimport { getMatcherFromQuery } from '../logqlMatchers';\nimport { LokiQuery } from '../lokiQuery';\nimport { LabelType } from '../fieldsTypes';\n\nimport { isOperatorInclusive } from '../operatorHelpers';\nimport { PatternFilterOp } from '../filterTypes';\nimport { renderPatternFilters } from '../renderPatternFilters';\n\nconst PRODUCT_NAME = 'Grafana Logs Drilldown';\nconst title = `Open in ${PRODUCT_NAME}`;\nconst description = `Open current query in the ${PRODUCT_NAME} view`;\nconst icon = 'gf-logs';\n\nexport const ExtensionPoints = {\n MetricInvestigation: 'grafana-lokiexplore-app/investigation/v1',\n} as const;\n\nexport type LinkConfigs = Array<\n {\n targets: string | string[];\n // eslint-disable-next-line deprecation/deprecation\n } & Omit, 'type' | 'extensionPointId'>\n>;\n\n// `plugin.addLink` requires these types; unfortunately, the correct `PluginExtensionAddedLinkConfig` type is not exported with 11.2.x\n// TODO: fix this type when we move to `@grafana/data` 11.3.x\nexport const linkConfigs: LinkConfigs = [\n {\n targets: PluginExtensionPoints.DashboardPanelMenu,\n title,\n description,\n icon,\n path: createAppUrl(),\n configure: contextToLink,\n },\n {\n targets: PluginExtensionPoints.ExploreToolbarAction,\n title,\n description,\n icon,\n path: createAppUrl(),\n configure: contextToLink,\n },\n];\n\nfunction stringifyValues(value?: string): string {\n if (!value) {\n return EMPTY_VARIABLE_VALUE;\n }\n return value;\n}\n\n// Why are there twice as many escape chars in the url as expected?\nexport function replaceEscapeChars(value?: string): string | undefined {\n return value?.replace(/\\\\\\\\/g, '\\\\');\n}\n\nexport function stringifyAdHocValues(value?: string): string {\n if (!value) {\n return EMPTY_VARIABLE_VALUE;\n }\n\n // All label values from explore are already escaped, so we mark them as custom values to prevent them from getting escaped again when rendering the LogQL\n return addAdHocFilterUserInputPrefix(replaceEscapeChars(value));\n}\n\nexport function stringifyAdHocValueLabels(value?: string): string {\n if (!value) {\n return EMPTY_VARIABLE_VALUE;\n }\n\n return escapeURLDelimiters(replaceEscapeChars(value));\n}\n\nfunction contextToLink(context?: T) {\n if (!context) {\n return undefined;\n }\n const lokiQuery = context.targets.find((target) => target.datasource?.type === 'loki') as LokiQuery | undefined;\n if (!lokiQuery || !lokiQuery.datasource?.uid) {\n return undefined;\n }\n\n const expr = lokiQuery.expr;\n const { labelFilters, lineFilters, fields, patternFilters } = getMatcherFromQuery(expr, context, lokiQuery);\n const labelSelector = labelFilters.find((selector) => isOperatorInclusive(selector.operator));\n\n // Require at least one inclusive operator to run a valid Loki query\n if (!labelSelector) {\n return undefined;\n }\n\n // If there are a bunch of values for the same field, the value slug can get really long, let's just use the first one in the URL\n const urlLabelValue = labelSelector.value.split('|')[0];\n const labelValue = replaceSlash(urlLabelValue);\n let labelName = labelSelector.key === SERVICE_NAME ? 'service' : labelSelector.key;\n // sort `primary label` first\n labelFilters.sort((a) => (a.key === labelName ? -1 : 1));\n\n let params = setUrlParameter(UrlParameters.DatasourceId, lokiQuery.datasource?.uid, new URLSearchParams());\n params = setUrlParameter(UrlParameters.TimeRangeFrom, context.timeRange.from.valueOf().toString(), params);\n params = setUrlParameter(UrlParameters.TimeRangeTo, context.timeRange.to.valueOf().toString(), params);\n\n for (const labelFilter of labelFilters) {\n // skip non-indexed filters for now\n if (labelFilter.type !== LabelType.Indexed) {\n continue;\n }\n\n const labelsAdHocFilterURLString = `${labelFilter.key}|${labelFilter.operator}|${escapeURLDelimiters(\n stringifyAdHocValues(labelFilter.value)\n )},${escapeURLDelimiters(replaceEscapeChars(labelFilter.value))}`;\n\n params = appendUrlParameter(UrlParameters.Labels, labelsAdHocFilterURLString, params);\n }\n\n if (lineFilters) {\n for (const lineFilter of lineFilters) {\n params = appendUrlParameter(\n UrlParameters.LineFilters,\n `${lineFilter.key}|${escapeURLDelimiters(lineFilter.operator)}|${escapeURLDelimiters(\n stringifyValues(lineFilter.value)\n )}`,\n params\n );\n }\n }\n if (fields?.length) {\n for (const field of fields) {\n if (field.type === LabelType.StructuredMetadata) {\n if (field.key === LEVEL_VARIABLE_VALUE) {\n params = appendUrlParameter(\n UrlParameters.Levels,\n `${field.key}|${field.operator}|${escapeURLDelimiters(stringifyValues(field.value))}`,\n params\n );\n } else {\n params = appendUrlParameter(\n UrlParameters.Metadata,\n `${field.key}|${field.operator}|${escapeURLDelimiters(\n stringifyAdHocValues(field.value)\n )},${escapeURLDelimiters(replaceEscapeChars(field.value))}`,\n params\n );\n }\n } else {\n const fieldValue: AdHocFieldValue = {\n value: field.value,\n parser: field.parser,\n };\n\n const adHocFilterURLString = `${field.key}|${field.operator}|${escapeURLDelimiters(\n stringifyAdHocValues(JSON.stringify(fieldValue))\n )},${stringifyAdHocValueLabels(fieldValue.value)}`;\n\n params = appendUrlParameter(UrlParameters.Fields, adHocFilterURLString, params);\n }\n }\n }\n if (patternFilters?.length) {\n const patterns: AppliedPattern[] = [];\n\n for (const field of patternFilters) {\n patterns.push({\n type: field.operator === PatternFilterOp.match ? 'include' : 'exclude',\n pattern: stringifyValues(field.value),\n });\n }\n\n let patternsString = renderPatternFilters(patterns);\n\n params = appendUrlParameter(UrlParameters.Patterns, JSON.stringify(patterns), params);\n params = appendUrlParameter(UrlParameters.PatternsVariable, patternsString, params);\n }\n\n return {\n path: createAppUrl(`/explore/${labelName}/${labelValue}/logs`, params),\n };\n}\n\nexport function createAppUrl(path = '/explore', urlParams?: URLSearchParams): string {\n return `/a/${pluginJson.id}${path}${urlParams ? `?${urlParams.toString()}` : ''}`;\n}\n\nexport const UrlParameters = {\n DatasourceId: `var-${VAR_DATASOURCE}`,\n TimeRangeFrom: 'from',\n TimeRangeTo: 'to',\n Labels: `var-${VAR_LABELS}`,\n Fields: `var-${VAR_FIELDS}`,\n Metadata: `var-${VAR_METADATA}`,\n Levels: `var-${VAR_LEVELS}`,\n LineFilters: `var-${VAR_LINE_FILTERS}`,\n Patterns: VAR_PATTERNS,\n PatternsVariable: `var-${VAR_PATTERNS}`,\n} as const;\nexport type UrlParameterType = (typeof UrlParameters)[keyof typeof UrlParameters];\n\nexport function setUrlParameter(key: UrlParameterType, value: string, initalParams?: URLSearchParams): URLSearchParams {\n const searchParams = new URLSearchParams(initalParams?.toString() ?? location.search);\n searchParams.set(key, value);\n\n return searchParams;\n}\n\nexport function appendUrlParameter(\n key: UrlParameterType,\n value: string,\n initalParams?: URLSearchParams\n): URLSearchParams {\n const searchParams = new URLSearchParams(initalParams?.toString() ?? location.search);\n searchParams.append(key, value);\n\n return searchParams;\n}\n\nexport function replaceSlash(parameter: string): string {\n return (\n stripAdHocFilterUserInputPrefix(parameter)\n // back-slash is converted to forward-slash in the URL, replace that char\n .replace(/\\//g, '-')\n .replace(/\\\\/g, '-')\n );\n}\n\n// Manually copied over from @grafana/scenes so we don't need to import scenes to build links\nfunction escapeUrlCommaDelimiters(value: string | undefined): string {\n if (value === null || value === undefined) {\n return '';\n }\n\n // Replace the comma due to using it as a value/label separator\n return /,/g[Symbol.replace](value, '__gfc__');\n}\n\nexport function escapeUrlPipeDelimiters(value: string | undefined): string {\n if (value === null || value === undefined) {\n return '';\n }\n\n // Replace the pipe due to using it as a filter separator\n return (value = /\\|/g[Symbol.replace](value, '__gfp__'));\n}\n\nexport function escapeURLDelimiters(value: string | undefined): string {\n return escapeUrlCommaDelimiters(escapeUrlPipeDelimiters(value));\n}\n","// copied from public/app/plugins/datasource/loki/types.ts\nexport enum LabelType {\n Indexed = 'I',\n StructuredMetadata = 'S',\n Parsed = 'P',\n}\n","// Warning: This file (and any imports) are included in the main bundle with Grafana in order to provide link extension support in Grafana core, in an effort to keep Grafana loading quickly, please do not add any unnecessary imports to this file and run the bundle analyzer before committing any changes!\n\nimport { LabelType } from './fieldsTypes';\nimport { ParserType } from './variables';\n\nexport type FilterOpType = LabelFilterOp | NumericFilterOp;\nexport enum LabelFilterOp {\n Equal = '=',\n NotEqual = '!=',\n RegexEqual = '=~',\n RegexNotEqual = '!~',\n}\n\nexport enum NumericFilterOp {\n gt = '>',\n lt = '<',\n gte = '>=',\n lte = '<=',\n}\nexport const FilterOp = { ...LabelFilterOp, ...NumericFilterOp };\n\nexport type IndexedLabelFilter = {\n key: string;\n operator: FilterOpType;\n value: string;\n type?: LabelType;\n};\n\nexport type FieldFilter = {\n key: string;\n operator: FilterOpType;\n value: string;\n type?: LabelType;\n parser?: ParserType;\n};\n\nexport type LineFilterType = {\n key: string;\n operator: LineFilterOp;\n value: string;\n};\n\nexport type PatternFilterType = {\n operator: PatternFilterOp;\n value: string;\n};\n\nexport enum LineFilterOp {\n match = '|=',\n negativeMatch = `!=`,\n regex = '|~',\n negativeRegex = `!~`,\n}\n\nexport enum PatternFilterOp {\n match = '|>',\n negativeMatch = '!>',\n}\n\nexport enum LineFilterCaseSensitive {\n caseSensitive = 'caseSensitive',\n caseInsensitive = 'caseInsensitive',\n}\n","import { LogContext } from '@grafana/faro-web-sdk';\nimport { FetchError, logError, logInfo, logWarning } from '@grafana/runtime';\nimport pluginJson from '../plugin.json';\nimport packageJson from '../../package.json';\nimport { isRecord } from './narrowing';\n\nconst defaultContext = {\n app: pluginJson.id,\n version: packageJson.version,\n};\n\nexport const logger = {\n info: (msg: string, context?: LogContext) => {\n const ctx = { ...defaultContext, ...context };\n console.log(msg, ctx);\n attemptFaroInfo(msg, ctx);\n },\n warn: (msg: string, context?: LogContext) => {\n const ctx = { ...defaultContext, ...context };\n console.warn(msg, ctx);\n attemptFaroWarn(msg, ctx);\n },\n error: (err: Error | unknown, context?: LogContext) => {\n const ctx = { ...defaultContext, ...context };\n console.error(err, ctx);\n attemptFaroErr(err, ctx);\n },\n};\n\nconst attemptFaroInfo = (msg: string, context?: LogContext) => {\n try {\n logInfo(msg, context);\n } catch (e) {\n console.warn('Failed to log faro event!');\n }\n};\n\nconst attemptFaroWarn = (msg: string, context?: LogContext) => {\n try {\n logWarning(msg, context);\n } catch (e) {\n console.warn('Failed to log faro warning!', { msg, context });\n }\n};\n/**\n * Checks unknown error for properties from Records like FetchError and adds them to the context\n * @param err\n * @param context\n */\nfunction populateFetchErrorContext(err: unknown | FetchError, context: LogContext) {\n if (typeof err === 'object' && err !== null) {\n if (isRecord(err)) {\n Object.keys(err).forEach((key: string) => {\n const value = err[key];\n if (typeof value === 'string' || typeof value === 'boolean' || typeof value === 'number') {\n context[key] = value.toString();\n }\n });\n }\n\n if (hasData(err)) {\n if (typeof err.data === 'object' && err.data !== null) {\n try {\n context.data = JSON.stringify(err.data);\n } catch (e) {\n // do nothing\n }\n } else if (typeof err.data === 'string' || typeof err.data === 'boolean' || typeof err.data === 'number') {\n context.data = err.data.toString();\n }\n }\n }\n}\n\nconst attemptFaroErr = (err: Error | FetchError | unknown, context2: LogContext) => {\n let context = context2;\n try {\n populateFetchErrorContext(err, context);\n\n if (err instanceof Error) {\n logError(err, context);\n } else if (typeof err === 'string') {\n logError(new Error(err), context);\n } else if (err && typeof err === 'object') {\n if (context.msg) {\n logError(new Error(context.msg), context);\n } else {\n logError(new Error('error object'), context);\n }\n } else {\n logError(new Error('unknown error'), context);\n }\n } catch (e) {\n console.error('Failed to log faro error!', { err, context });\n }\n};\n\nconst hasData = (value: object): value is { data: unknown } => {\n return 'data' in value;\n};\n","// Warning: This file (and any imports) are included in the main bundle with Grafana in order to provide link extension support in Grafana core, in an effort to keep Grafana loading quickly, please do not add any unnecessary imports to this file and run the bundle analyzer before committing any changes!\n\nimport {\n Bytes,\n Duration,\n Eq,\n FilterOp,\n Gte,\n Gtr,\n Identifier,\n Json,\n LabelFilter,\n LineFilter,\n Logfmt,\n Lss,\n Lte,\n Matcher,\n Neq,\n Npa,\n Nre,\n Number,\n OrFilter,\n parser,\n PipeExact,\n PipeMatch,\n PipePattern,\n Re,\n Selector,\n String,\n} from '@grafana/lezer-logql';\nimport { NodeType, SyntaxNode, Tree } from '@lezer/common';\nimport {\n FieldFilter,\n FilterOp as FilterOperator,\n FilterOpType,\n IndexedLabelFilter,\n LineFilterCaseSensitive,\n LineFilterOp,\n LineFilterType,\n PatternFilterOp,\n PatternFilterType,\n} from './filterTypes';\nimport { PluginExtensionPanelContext } from '@grafana/data';\nimport { getLabelTypeFromFrame, LokiQuery } from './lokiQuery';\nimport { LabelType } from './fieldsTypes';\nimport { ParserType } from './variables';\n\nexport class NodePosition {\n from: number;\n to: number;\n type?: NodeType;\n syntaxNode?: SyntaxNode;\n\n constructor(from: number, to: number, syntaxNode?: SyntaxNode, type?: NodeType) {\n this.from = from;\n this.to = to;\n this.type = type;\n this.syntaxNode = syntaxNode;\n }\n\n static fromNode(node: SyntaxNode): NodePosition {\n return new NodePosition(node.from, node.to, node, node.type);\n }\n\n contains(position: NodePosition): boolean {\n return this.from <= position.from && this.to >= position.to;\n }\n\n getExpression(query: string): string {\n return query.substring(this.from, this.to);\n }\n}\n\nexport function getNodesFromQuery(query: string, nodeTypes?: number[]): SyntaxNode[] {\n const nodes: SyntaxNode[] = [];\n const tree: Tree = parser.parse(query);\n tree.iterate({\n enter: (node): false | void => {\n if (nodeTypes === undefined || nodeTypes.includes(node.type.id)) {\n nodes.push(node.node);\n }\n },\n });\n return nodes;\n}\n\nfunction getAllPositionsInNodeByType(node: SyntaxNode, type: number): NodePosition[] {\n if (node.type.id === type) {\n return [NodePosition.fromNode(node)];\n }\n\n const positions: NodePosition[] = [];\n let pos = 0;\n let child = node.childAfter(pos);\n while (child) {\n positions.push(...getAllPositionsInNodeByType(child, type));\n pos = child.to;\n child = node.childAfter(pos);\n }\n return positions;\n}\n\nfunction parseLabelFilters(query: string, filter: IndexedLabelFilter[]) {\n // `Matcher` will select field filters as well as indexed label filters\n const allMatcher = getNodesFromQuery(query, [Matcher]);\n for (const matcher of allMatcher) {\n const identifierPosition = getAllPositionsInNodeByType(matcher, Identifier);\n const valuePosition = getAllPositionsInNodeByType(matcher, String);\n const operator = query.substring(identifierPosition[0]?.to, valuePosition[0]?.from);\n const key = identifierPosition[0].getExpression(query);\n const value = valuePosition.map((position) => query.substring(position.from + 1, position.to - 1))[0];\n\n if (\n !key ||\n !value ||\n (operator !== FilterOperator.NotEqual &&\n operator !== FilterOperator.Equal &&\n operator !== FilterOperator.RegexEqual &&\n operator !== FilterOperator.RegexNotEqual)\n ) {\n continue;\n }\n\n filter.push({\n key,\n operator,\n value,\n type: LabelType.Indexed,\n });\n }\n}\n\nfunction parseNonPatternFilters(\n lineFilterValue: string,\n quoteString: string,\n lineFilters: LineFilterType[],\n index: number,\n operator: LineFilterOp\n) {\n const isRegexSelector = operator === LineFilterOp.regex || operator === LineFilterOp.negativeRegex;\n const isCaseInsensitive = lineFilterValue.includes('(?i)') && isRegexSelector;\n\n // If quoteString is `, we shouldn't need to un-escape anything\n // But if the quoteString is \", we'll need to remove double escape chars, as these values are re-escaped when building the query expression (but not stored in the value/url)\n if (quoteString === '\"' && isRegexSelector) {\n const replaceDoubleEscape = new RegExp(/\\\\\\\\/, 'g');\n lineFilterValue = lineFilterValue.replace(replaceDoubleEscape, '\\\\');\n } else if (quoteString === '\"') {\n const replaceDoubleQuoteEscape = new RegExp(/\\\\\\\\\\\"/, 'g');\n lineFilterValue = lineFilterValue.replace(replaceDoubleQuoteEscape, '\"');\n\n const replaceDoubleEscape = new RegExp(/\\\\\\\\/, 'g');\n lineFilterValue = lineFilterValue.replace(replaceDoubleEscape, '\\\\');\n }\n\n if (isCaseInsensitive) {\n // If `(?i)` exists in a regex it would need to be escaped to match log lines containing `(?i)`, so it should be safe to replace all instances of `(?i)` in the line filter?\n lineFilterValue = lineFilterValue.replace('(?i)', '');\n }\n\n lineFilters.push({\n key: isCaseInsensitive\n ? LineFilterCaseSensitive.caseInsensitive.toString()\n : LineFilterCaseSensitive.caseSensitive.toString() + ',' + index.toString(),\n operator: operator,\n value: lineFilterValue,\n });\n\n return lineFilterValue;\n}\n\nfunction parsePatternFilters(lineFilterValue: string, patternFilters: PatternFilterType[], operator: PatternFilterOp) {\n const replaceDoubleQuoteEscape = new RegExp(/\\\\\"/, 'g');\n lineFilterValue = lineFilterValue.replace(replaceDoubleQuoteEscape, '\"');\n patternFilters.push({\n operator,\n value: lineFilterValue,\n });\n}\n\nfunction parseLineFilters(query: string, lineFilters: LineFilterType[], patternFilters: PatternFilterType[]) {\n const allLineFilters = getNodesFromQuery(query, [LineFilter]);\n for (const [index, matcher] of allLineFilters.entries()) {\n const equal = getAllPositionsInNodeByType(matcher, PipeExact);\n const pipeRegExp = getAllPositionsInNodeByType(matcher, PipeMatch);\n const notEqual = getAllPositionsInNodeByType(matcher, Neq);\n const notEqualRegExp = getAllPositionsInNodeByType(matcher, Nre);\n const patternInclude = getAllPositionsInNodeByType(matcher, PipePattern);\n const patternExclude = getAllPositionsInNodeByType(matcher, Npa);\n\n const lineFilterValueNodes = getStringsFromLineFilter(matcher);\n\n for (const lineFilterValueNode of lineFilterValueNodes) {\n const quoteString = query.substring(lineFilterValueNode?.from + 1, lineFilterValueNode?.from);\n\n // Remove quotes\n let lineFilterValue = query.substring(lineFilterValueNode?.from + 1, lineFilterValueNode?.to - 1);\n\n if (lineFilterValue.length) {\n let operator;\n if (equal.length) {\n operator = LineFilterOp.match;\n } else if (notEqual.length) {\n operator = LineFilterOp.negativeMatch;\n } else if (notEqualRegExp.length) {\n operator = LineFilterOp.negativeRegex;\n } else if (pipeRegExp.length) {\n operator = LineFilterOp.regex;\n } else if (patternInclude.length) {\n operator = PatternFilterOp.match;\n } else if (patternExclude.length) {\n operator = PatternFilterOp.negativeMatch;\n } else {\n console.warn('unknown line filter', {\n query: query.substring(matcher.from, matcher.to),\n });\n\n continue;\n }\n\n if (!(operator === PatternFilterOp.match || operator === PatternFilterOp.negativeMatch)) {\n parseNonPatternFilters(lineFilterValue, quoteString, lineFilters, index, operator);\n } else {\n parsePatternFilters(lineFilterValue, patternFilters, operator);\n }\n }\n }\n }\n}\n\nfunction getNumericFieldOperator(matcher: SyntaxNode) {\n if (getAllPositionsInNodeByType(matcher, Lte).length) {\n return FilterOperator.lte;\n } else if (getAllPositionsInNodeByType(matcher, Lss).length) {\n return FilterOperator.lt;\n } else if (getAllPositionsInNodeByType(matcher, Gte).length) {\n return FilterOperator.gte;\n } else if (getAllPositionsInNodeByType(matcher, Gtr).length) {\n return FilterOperator.gt;\n }\n\n console.warn('unknown numeric operator');\n\n return undefined;\n}\n\nfunction getStringFieldOperator(matcher: SyntaxNode) {\n if (getAllPositionsInNodeByType(matcher, Eq).length) {\n return FilterOperator.Equal; // =\n } else if (getAllPositionsInNodeByType(matcher, Neq).length) {\n return FilterOperator.NotEqual; // !=\n } else if (getAllPositionsInNodeByType(matcher, Re).length) {\n return FilterOperator.RegexEqual; // =~\n } else if (getAllPositionsInNodeByType(matcher, Nre).length) {\n return FilterOperator.RegexNotEqual; // !~\n }\n\n return undefined;\n}\n\nfunction parseFields(query: string, fields: FieldFilter[], context: PluginExtensionPanelContext, lokiQuery: LokiQuery) {\n const dataFrame = context.data?.series.find((frame) => frame.refId === lokiQuery.refId);\n // We do not currently support \"or\" in Grafana Logs Drilldown, so grab the left hand side LabelFilter leaf nodes as this will be the first filter expression in a given pipeline stage\n const allFields = getNodesFromQuery(query, [LabelFilter]);\n for (const matcher of allFields) {\n const position = NodePosition.fromNode(matcher);\n const expression = position.getExpression(query);\n const isParentNode = matcher.getChild(LabelFilter);\n\n // If the Label filter contains other Label Filter nodes, we want to skip this node so we only add the leaf LabelFilter nodes\n if (isParentNode) {\n continue;\n }\n\n // Skip error expression, it will get added automatically when Grafana Logs Drilldown adds a parser\n if (expression.substring(0, 9) === `__error__`) {\n continue;\n }\n\n // @todo we need to use detected_fields API to get the \"right\" parser for a specific field\n // Currently we just check to see if there is a parser before the current node, this means that queries that are placing metadata filters after the parser will query the metadata field as a parsed field, which will lead to degraded performance\n const logFmtParser = getNodesFromQuery(query.substring(0, matcher.node.to), [Logfmt]);\n const jsonParser = getNodesFromQuery(query.substring(0, matcher.node.to), [Json]);\n\n // field filter key\n const fieldNameNode = getAllPositionsInNodeByType(matcher, Identifier);\n const fieldName = fieldNameNode[0]?.getExpression(query);\n\n // field filter value\n const fieldStringValue = getAllPositionsInNodeByType(matcher, String);\n const fieldNumberValue = getAllPositionsInNodeByType(matcher, Number);\n const fieldBytesValue = getAllPositionsInNodeByType(matcher, Bytes);\n const fieldDurationValue = getAllPositionsInNodeByType(matcher, Duration);\n\n let fieldValue: string, operator: FilterOpType | undefined;\n if (fieldStringValue.length) {\n operator = getStringFieldOperator(matcher);\n // Strip out quotes\n fieldValue = query.substring(fieldStringValue[0].from + 1, fieldStringValue[0].to - 1);\n } else if (fieldNumberValue.length) {\n fieldValue = fieldNumberValue[0].getExpression(query);\n operator = getNumericFieldOperator(matcher);\n } else if (fieldDurationValue.length) {\n operator = getNumericFieldOperator(matcher);\n fieldValue = fieldDurationValue[0].getExpression(query);\n } else if (fieldBytesValue.length) {\n operator = getNumericFieldOperator(matcher);\n fieldValue = fieldBytesValue[0].getExpression(query);\n } else {\n continue;\n }\n\n // Label type\n let labelType: LabelType | undefined;\n if (dataFrame) {\n // @todo if the field label is not in the first line, we'll always add this filter as a field filter\n // Also negative filters that exclude all values of a field will always fail to get a label type for that exclusion filter?\n labelType = getLabelTypeFromFrame(fieldName, dataFrame) ?? undefined;\n }\n\n if (operator) {\n let parser: ParserType | undefined;\n if (logFmtParser.length && jsonParser.length) {\n parser = 'mixed';\n } else if (logFmtParser.length) {\n parser = 'logfmt';\n } else if (jsonParser.length) {\n parser = 'json';\n } else {\n // If there is no parser in the query, the field would have to be metadata or an invalid query?\n labelType = LabelType.StructuredMetadata;\n }\n\n fields.push({\n key: fieldName,\n operator: operator,\n type: labelType ?? LabelType.Parsed,\n parser,\n value: fieldValue,\n });\n }\n }\n}\n\nexport function getMatcherFromQuery(\n query: string,\n context: PluginExtensionPanelContext,\n lokiQuery: LokiQuery\n): {\n labelFilters: IndexedLabelFilter[];\n lineFilters?: LineFilterType[];\n fields?: FieldFilter[];\n patternFilters?: PatternFilterType[];\n} {\n const filter: IndexedLabelFilter[] = [];\n const lineFilters: LineFilterType[] = [];\n const patternFilters: PatternFilterType[] = [];\n const fields: FieldFilter[] = [];\n const selector = getNodesFromQuery(query, [Selector]);\n\n if (selector.length === 0) {\n return { labelFilters: filter };\n }\n\n // Get the stream selector portion of the query\n const selectorQuery = getAllPositionsInNodeByType(selector[0], Selector)[0].getExpression(query);\n\n parseLabelFilters(selectorQuery, filter);\n parseLineFilters(query, lineFilters, patternFilters);\n parseFields(query, fields, context, lokiQuery);\n\n return { labelFilters: filter, lineFilters, fields, patternFilters };\n}\n\nexport function isQueryWithNode(query: string, nodeType: number): boolean {\n let isQueryWithNode = false;\n const tree = parser.parse(query);\n tree.iterate({\n enter: ({ type }): false | void => {\n if (type.id === nodeType) {\n isQueryWithNode = true;\n return false;\n }\n },\n });\n return isQueryWithNode;\n}\n\n/**\n * Parses the query and looks for error nodes. If there is at least one, it returns true.\n * Grafana variables are considered errors, so if you need to validate a query\n * with variables you should interpolate it first.\n */\nexport const ErrorId = 0;\nexport function isValidQuery(query: string): boolean {\n return isQueryWithNode(query, ErrorId) === false;\n}\n\nfunction getStringsFromLineFilter(filter: SyntaxNode): SyntaxNode[] {\n const nodes: SyntaxNode[] = [];\n let node: SyntaxNode | null = filter;\n do {\n const string = node.getChild(String);\n if (string && !node.getChild(FilterOp)) {\n nodes.push(string);\n }\n node = node.getChild(OrFilter);\n } while (node != null);\n\n return nodes;\n}\n","// Warning: This file (and any imports) are included in the main bundle with Grafana in order to provide link extension support in Grafana core, in an effort to keep Grafana loading quickly, please do not add any unnecessary imports to this file and run the bundle analyzer before committing any changes!\nimport { DataSourceRef } from '@grafana/schema';\nimport { DataSourceWithBackend } from '@grafana/runtime';\nimport { DataFrame, DataSourceJsonData, ScopedVars, TimeRange } from '@grafana/data';\nimport { LabelType } from './fieldsTypes';\n\nexport enum LokiQueryDirection {\n Backward = 'backward',\n Forward = 'forward',\n Scan = 'scan',\n}\n\nexport type LokiQuery = {\n refId: string;\n queryType?: LokiQueryType;\n editorMode?: string;\n supportingQueryType?: string;\n expr: string;\n legendFormat?: string;\n splitDuration?: string;\n datasource?: DataSourceRef;\n maxLines?: number;\n direction?: LokiQueryDirection;\n step?: string;\n};\n\nexport type LokiQueryType = 'instant' | 'range' | 'stream' | string;\n\nexport type LokiDatasource = DataSourceWithBackend & {\n maxLines?: number;\n} & {\n // @todo delete after min supported grafana is upgraded to >=11.6\n interpolateString?: (string: string, scopedVars?: ScopedVars) => string;\n getTimeRangeParams: (timeRange: TimeRange) => { start: number; end: number };\n};\n\nexport function getLabelTypeFromFrame(labelKey: string, frame: DataFrame, index = 0): null | LabelType {\n const typeField = frame.fields.find((field) => field.name === 'labelTypes')?.values[index];\n if (!typeField) {\n return null;\n }\n switch (typeField[labelKey]) {\n case 'I':\n return LabelType.Indexed;\n case 'S':\n return LabelType.StructuredMetadata;\n case 'P':\n return LabelType.Parsed;\n default:\n return null;\n }\n}\n","import { SelectedTableRow } from '../Components/Table/LogLineCellComponent';\nimport { LogsVisualizationType } from './store';\nimport { FieldValue, ParserType } from './variables';\nimport { LogsSortOrder, RawTimeRange } from '@grafana/data';\nimport { LabelFilterOp, NumericFilterOp } from './filterTypes';\n\nconst isObj = (o: unknown): o is object => typeof o === 'object' && o !== null;\n\nfunction hasProp(data: object, prop: K): data is Record {\n return prop in data;\n}\n\nconst isString = (s: unknown) => (typeof s === 'string' && s) || '';\n\nexport const isRecord = (obj: unknown): obj is Record => typeof obj === 'object';\n\nexport function unknownToStrings(a: unknown): string[] {\n let strings: string[] = [];\n if (Array.isArray(a)) {\n for (let i = 0; i < a.length; i++) {\n strings.push(isString(a[i]));\n }\n }\n return strings;\n}\n\nexport function narrowSelectedTableRow(o: unknown): SelectedTableRow | false {\n const narrowed = isObj(o) && hasProp(o, 'row') && hasProp(o, 'id') && o;\n\n if (narrowed) {\n const row = typeof narrowed.row === 'number' && narrowed.row;\n const id = typeof narrowed.id === 'string' && narrowed.id;\n if (id !== false && row !== false) {\n return { row, id };\n }\n }\n\n return false;\n}\n\nexport function narrowLogsVisualizationType(o: unknown): LogsVisualizationType | false {\n return typeof o === 'string' && (o === 'logs' || o === 'table') && o;\n}\nexport function narrowLogsSortOrder(o: unknown): LogsSortOrder | false {\n if (typeof o === 'string' && o === LogsSortOrder.Ascending.toString()) {\n return LogsSortOrder.Ascending;\n }\n\n if (typeof o === 'string' && o === LogsSortOrder.Descending.toString()) {\n return LogsSortOrder.Descending;\n }\n\n return false;\n}\n\nexport function narrowFieldValue(o: unknown): FieldValue | false {\n const narrowed = isObj(o) && hasProp(o, 'value') && hasProp(o, 'parser') && o;\n\n if (narrowed) {\n const parser: ParserType | false =\n typeof narrowed.parser === 'string' &&\n (narrowed.parser === 'logfmt' ||\n narrowed.parser === 'json' ||\n narrowed.parser === 'mixed' ||\n narrowed.parser === 'structuredMetadata') &&\n narrowed.parser;\n const value = typeof narrowed.value === 'string' && narrowed.value;\n\n if (parser !== false && value !== false) {\n return { parser, value };\n }\n }\n\n return false;\n}\n\nexport function narrowRecordStringNumber(o: unknown): Record | false {\n const narrowed = isObj(o) && isRecord(o) && o;\n\n if (narrowed) {\n const keys = Object.keys(narrowed);\n const returnRecord: Record = {};\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const value = narrowed[keys[i]];\n if (typeof value === 'number') {\n returnRecord[key] = value;\n }\n }\n\n return returnRecord;\n }\n\n return false;\n}\n\nexport function narrowTimeRange(unknownRange: unknown): RawTimeRange | undefined {\n const range = isObj(unknownRange) && hasProp(unknownRange, 'to') && hasProp(unknownRange, 'from') && unknownRange;\n if (range) {\n const to = isString(range.to);\n const from = isString(range.from);\n if (to && from) {\n return { to, from };\n }\n }\n\n return undefined;\n}\n\nexport function narrowFilterOperator(op: string): LabelFilterOp | NumericFilterOp {\n switch (op) {\n case LabelFilterOp.Equal:\n case LabelFilterOp.NotEqual:\n case LabelFilterOp.RegexEqual:\n case LabelFilterOp.RegexNotEqual:\n case NumericFilterOp.gt:\n case NumericFilterOp.gte:\n case NumericFilterOp.lt:\n case NumericFilterOp.lte:\n return op;\n default:\n throw new NarrowingError('operator is invalid!');\n }\n}\n\nexport class NarrowingError extends Error {}\n","import { FilterOp, FilterOpType, NumericFilterOp } from './filterTypes';\nimport { numericOperatorArray } from './operators';\n\nexport const isOperatorInclusive = (op: string | FilterOpType): boolean => {\n return op === FilterOp.Equal || op === FilterOp.RegexEqual;\n};\nexport const isOperatorExclusive = (op: string | FilterOpType): boolean => {\n return op === FilterOp.NotEqual || op === FilterOp.RegexNotEqual;\n};\nexport const isOperatorRegex = (op: string | FilterOpType): boolean => {\n return op === FilterOp.RegexEqual || op === FilterOp.RegexNotEqual;\n};\nexport const isOperatorNumeric = (op: string | NumericFilterOp): boolean => {\n return numericOperatorArray.includes(op);\n};\n","import { FilterOp, FilterOpType } from './filterTypes';\nimport { logger } from './logger';\n\nexport function getOperatorDescription(op: FilterOpType): string {\n if (op === FilterOp.NotEqual) {\n return 'Not equal';\n }\n if (op === FilterOp.RegexNotEqual) {\n return 'Does not match regex';\n }\n if (op === FilterOp.Equal) {\n return 'Equals';\n }\n if (op === FilterOp.RegexEqual) {\n return 'Matches regex';\n }\n if (op === FilterOp.lt) {\n return 'Less than';\n }\n if (op === FilterOp.gt) {\n return 'Greater than';\n }\n if (op === FilterOp.gte) {\n return 'Greater than or equal to';\n }\n if (op === FilterOp.lte) {\n return 'Less than or equal to';\n }\n\n const error = new Error('Invalid operator!');\n logger.error(error, { msg: 'Invalid operator', operator: op });\n throw error;\n}\n","import { FilterOp, LineFilterOp } from './filterTypes';\nimport { SelectableValue } from '@grafana/data';\nimport { getOperatorDescription } from './getOperatorDescription';\n\nexport const operators = [FilterOp.Equal, FilterOp.NotEqual, FilterOp.RegexEqual, FilterOp.RegexNotEqual].map<\n SelectableValue\n>((value, index, array) => {\n return {\n description: getOperatorDescription(value),\n label: value,\n value,\n };\n});\n\nexport const includeOperators = [FilterOp.Equal, FilterOp.RegexEqual].map>((value) => ({\n description: getOperatorDescription(value),\n label: value,\n value,\n}));\n\nexport const numericOperatorArray = [FilterOp.gt, FilterOp.gte, FilterOp.lt, FilterOp.lte];\n\nexport const numericOperators = numericOperatorArray.map>((value) => ({\n description: getOperatorDescription(value),\n label: value,\n value,\n}));\n\nexport const lineFilterOperators: SelectableValue[] = [\n { label: 'match', value: LineFilterOp.match },\n { label: 'negativeMatch', value: LineFilterOp.negativeMatch },\n { label: 'regex', value: LineFilterOp.regex },\n { label: 'negativeRegex', value: LineFilterOp.negativeRegex },\n];\n","// Warning, this file is included in the main module.tsx bundle, and doesn't contain any imports to keep that bundle size small. Don't add imports to this file!\n\n/**\n * Methods copied from scenes that we want in the module (to generate links which cannot be lazy loaded), without including all of scenes.\n * See https://github.com/grafana/scenes/issues/1046\n */\n// based on the openmetrics-documentation, the 3 symbols we have to handle are:\n// - \\n ... the newline character\n// - \\ ... the backslash character\n// - \" ... the double-quote character\nexport function escapeLabelValueInExactSelector(labelValue: string): string {\n return labelValue.replace(/\\\\/g, '\\\\\\\\').replace(/\\n/g, '\\\\n').replace(/\"/g, '\\\\\"');\n}\n","// Warning, this file is included in the main module.tsx bundle, and doesn't contain many imports to keep that bundle size small. Don't add imports to this file!\nimport { AppliedPattern } from './variables';\nimport { escapeLabelValueInExactSelector } from './extensions/scenesMethods';\n\nexport function renderPatternFilters(patterns: AppliedPattern[]) {\n const excludePatterns = patterns.filter((pattern) => pattern.type === 'exclude');\n const excludePatternsLine = excludePatterns\n .map((p) => `!> \"${escapeLabelValueInExactSelector(p.pattern)}\"`)\n .join(' ')\n .trim();\n\n const includePatterns = patterns.filter((pattern) => pattern.type === 'include');\n let includePatternsLine = '';\n if (includePatterns.length > 0) {\n if (includePatterns.length === 1) {\n includePatternsLine = `|> \"${escapeLabelValueInExactSelector(includePatterns[0].pattern)}\"`;\n } else {\n includePatternsLine = `|> ${includePatterns\n .map((p) => `\"${escapeLabelValueInExactSelector(p.pattern)}\"`)\n .join(' or ')}`;\n }\n }\n return `${excludePatternsLine} ${includePatternsLine}`.trim();\n}\n","// Warning, this file is included in the main module.tsx bundle, and doesn't contain any imports to keep that bundle size small. Don't add imports to this file!\n\nimport { AdHocFilterWithLabels } from '@grafana/scenes';\n\nexport interface FieldValue {\n value: string;\n parser: ParserType;\n}\n\nexport interface AdHocFieldValue {\n value?: string;\n parser?: ParserType;\n}\nexport interface AppliedPattern {\n pattern: string;\n type: 'include' | 'exclude';\n}\n\nexport type ParserType = 'logfmt' | 'json' | 'mixed' | 'structuredMetadata';\nexport type DetectedFieldType = 'int' | 'float' | 'duration' | 'bytes' | 'boolean' | 'string';\nexport type AdHocFilterWithLabelsMeta = { parser?: ParserType; type?: DetectedFieldType };\nexport type AdHocFiltersWithLabelsAndMeta = AdHocFilterWithLabels;\n\nexport type LogsQueryOptions = {\n labelExpressionToAdd?: string;\n structuredMetadataToAdd?: string;\n fieldExpressionToAdd?: string;\n parser?: ParserType;\n fieldType?: DetectedFieldType;\n};\n\nexport const VAR_LABELS = 'filters';\nexport const VAR_LABELS_EXPR = '${filters}';\nexport const VAR_LABELS_REPLICA = 'filters_replica';\nexport const VAR_LABELS_REPLICA_EXPR = '${filters_replica}';\nexport const VAR_FIELDS = 'fields';\nexport const VAR_FIELDS_EXPR = '${fields}';\nexport const PENDING_FIELDS_EXPR = '${pendingFields}';\nexport const PENDING_METADATA_EXPR = '${pendingMetadata}';\nexport const VAR_FIELDS_AND_METADATA = 'all-fields';\nexport const VAR_METADATA = 'metadata';\nexport const VAR_METADATA_EXPR = '${metadata}';\nexport const VAR_PATTERNS = 'patterns';\nexport const VAR_PATTERNS_EXPR = '${patterns}';\nexport const VAR_LEVELS = 'levels';\nexport const VAR_LEVELS_EXPR = '${levels}';\nexport const VAR_FIELD_GROUP_BY = 'fieldBy';\nexport const VAR_LABEL_GROUP_BY = 'labelBy';\nexport const VAR_LABEL_GROUP_BY_EXPR = '${labelBy}';\nexport const VAR_PRIMARY_LABEL_SEARCH = 'primary_label_search';\nexport const VAR_PRIMARY_LABEL_SEARCH_EXPR = '${primary_label_search}';\nexport const VAR_PRIMARY_LABEL = 'primary_label';\nexport const VAR_PRIMARY_LABEL_EXPR = '${primary_label}';\nexport const VAR_DATASOURCE = 'ds';\nexport const VAR_DATASOURCE_EXPR = '${ds}';\nexport const MIXED_FORMAT_EXPR = `| json | logfmt | drop __error__, __error_details__`;\nexport const JSON_FORMAT_EXPR = `| json | drop __error__, __error_details__`;\nexport const LOGS_FORMAT_EXPR = `| logfmt`;\n// This variable is hardcoded to the value of MIXED_FORMAT_EXPR. This is a hack to get logs context working, we don't want to use a variable for a value that doesn't change and cannot be updated by the user.\nexport const VAR_LOGS_FORMAT = 'logsFormat';\nexport const VAR_LOGS_FORMAT_EXPR = '${logsFormat}';\n// The deprecated line filter (custom variable)\nexport const VAR_LINE_FILTER_DEPRECATED = 'lineFilter';\n// The new single value line filter (ad-hoc variable), results are added to VAR_LINE_FILTER_AD_HOC when \"submitted\"\nexport const VAR_LINE_FILTER = 'lineFilterV2';\nexport const VAR_LINE_FILTER_EXPR = '${lineFilterV2}';\n// The new multi value line filter (ad-hoc variable)\nexport const VAR_LINE_FILTERS = 'lineFilters';\nexport const VAR_LINE_FILTERS_EXPR = '${lineFilters}';\nexport const LOG_STREAM_SELECTOR_EXPR = `{${VAR_LABELS_EXPR}} ${VAR_LEVELS_EXPR} ${VAR_METADATA_EXPR} ${VAR_PATTERNS_EXPR} ${VAR_LINE_FILTERS_EXPR} ${VAR_LOGS_FORMAT_EXPR} ${VAR_FIELDS_EXPR}`;\n// Same as the LOG_STREAM_SELECTOR_EXPR, but without the fields as they will need to be built manually to exclude the current filter value\nexport const DETECTED_FIELD_VALUES_EXPR = `{${VAR_LABELS_EXPR}} ${VAR_LEVELS_EXPR} ${VAR_METADATA_EXPR} ${VAR_PATTERNS_EXPR} ${VAR_LINE_FILTERS_EXPR} ${VAR_LOGS_FORMAT_EXPR} ${PENDING_FIELDS_EXPR}`;\nexport const DETECTED_FIELD_AND_METADATA_VALUES_EXPR = `{${VAR_LABELS_EXPR}} ${VAR_LEVELS_EXPR} ${PENDING_METADATA_EXPR} ${VAR_PATTERNS_EXPR} ${VAR_LINE_FILTERS_EXPR} ${VAR_LOGS_FORMAT_EXPR} ${PENDING_FIELDS_EXPR}`;\nexport const DETECTED_METADATA_VALUES_EXPR = `{${VAR_LABELS_EXPR}} ${VAR_LEVELS_EXPR} ${PENDING_FIELDS_EXPR} ${VAR_PATTERNS_EXPR} ${VAR_LINE_FILTERS_EXPR} ${VAR_LOGS_FORMAT_EXPR} ${VAR_FIELDS_EXPR}`;\nexport const DETECTED_LEVELS_VALUES_EXPR = `{${VAR_LABELS_EXPR}} ${PENDING_FIELDS_EXPR} ${VAR_METADATA_EXPR} ${VAR_PATTERNS_EXPR} ${VAR_LINE_FILTERS_EXPR} ${VAR_LOGS_FORMAT_EXPR} ${VAR_FIELDS_EXPR}`;\nexport const PATTERNS_SAMPLE_SELECTOR_EXPR = `{${VAR_LABELS_EXPR}} ${VAR_METADATA_EXPR} ${VAR_PATTERNS_EXPR} ${VAR_LOGS_FORMAT_EXPR}`;\nexport const PRETTY_LOG_STREAM_SELECTOR_EXPR = `${VAR_LABELS_EXPR} ${VAR_LEVELS_EXPR} ${VAR_METADATA_EXPR} ${VAR_PATTERNS_EXPR} ${VAR_LINE_FILTERS_EXPR} ${VAR_FIELDS_EXPR}`;\nexport const EXPLORATION_DS = { uid: VAR_DATASOURCE_EXPR };\nexport const ALL_VARIABLE_VALUE = '$__all';\nexport const LEVEL_VARIABLE_VALUE = 'detected_level';\nexport const SERVICE_NAME = 'service_name';\nexport const SERVICE_UI_LABEL = 'service';\nexport const VAR_AGGREGATED_METRICS = 'var_aggregated_metrics';\nexport const VAR_AGGREGATED_METRICS_EXPR = '${var_aggregated_metrics}';\nexport const EMPTY_VARIABLE_VALUE = '\"\"';\n\n// Delimiter used at the start of a label value to denote user input that should not be escaped\n// @todo we need ad-hoc-filter meta that is persisted in the URL so we can clean this up.\nexport const USER_INPUT_ADHOC_VALUE_PREFIX = '__CVΩ__';\nexport function stripAdHocFilterUserInputPrefix(value = '') {\n if (value.startsWith(USER_INPUT_ADHOC_VALUE_PREFIX)) {\n return value.substring(USER_INPUT_ADHOC_VALUE_PREFIX.length);\n }\n return value;\n}\nexport function isAdHocFilterValueUserInput(value = '') {\n return value.startsWith(USER_INPUT_ADHOC_VALUE_PREFIX);\n}\nexport function addAdHocFilterUserInputPrefix(value = '') {\n return USER_INPUT_ADHOC_VALUE_PREFIX + value;\n}\n","module.exports = __WEBPACK_EXTERNAL_MODULE__6089__;","module.exports = __WEBPACK_EXTERNAL_MODULE__7781__;","module.exports = __WEBPACK_EXTERNAL_MODULE__8531__;","module.exports = __WEBPACK_EXTERNAL_MODULE__2007__;","module.exports = __WEBPACK_EXTERNAL_MODULE__3241__;","module.exports = __WEBPACK_EXTERNAL_MODULE__5959__;","module.exports = __WEBPACK_EXTERNAL_MODULE__8398__;","module.exports = __WEBPACK_EXTERNAL_MODULE__200__;","module.exports = __WEBPACK_EXTERNAL_MODULE__3806__;","module.exports = __WEBPACK_EXTERNAL_MODULE__7694__;","module.exports = __WEBPACK_EXTERNAL_MODULE__1269__;","/**\nThe default maximum length of a `TreeBuffer` node.\n*/\nconst DefaultBufferLength = 1024;\nlet nextPropID = 0;\nclass Range {\n constructor(from, to) {\n this.from = from;\n this.to = to;\n }\n}\n/**\nEach [node type](#common.NodeType) or [individual tree](#common.Tree)\ncan have metadata associated with it in props. Instances of this\nclass represent prop names.\n*/\nclass NodeProp {\n /**\n Create a new node prop type.\n */\n constructor(config = {}) {\n this.id = nextPropID++;\n this.perNode = !!config.perNode;\n this.deserialize = config.deserialize || (() => {\n throw new Error(\"This node type doesn't define a deserialize function\");\n });\n }\n /**\n This is meant to be used with\n [`NodeSet.extend`](#common.NodeSet.extend) or\n [`LRParser.configure`](#lr.ParserConfig.props) to compute\n prop values for each node type in the set. Takes a [match\n object](#common.NodeType^match) or function that returns undefined\n if the node type doesn't get this prop, and the prop's value if\n it does.\n */\n add(match) {\n if (this.perNode)\n throw new RangeError(\"Can't add per-node props to node types\");\n if (typeof match != \"function\")\n match = NodeType.match(match);\n return (type) => {\n let result = match(type);\n return result === undefined ? null : [this, result];\n };\n }\n}\n/**\nProp that is used to describe matching delimiters. For opening\ndelimiters, this holds an array of node names (written as a\nspace-separated string when declaring this prop in a grammar)\nfor the node types of closing delimiters that match it.\n*/\nNodeProp.closedBy = new NodeProp({ deserialize: str => str.split(\" \") });\n/**\nThe inverse of [`closedBy`](#common.NodeProp^closedBy). This is\nattached to closing delimiters, holding an array of node names\nof types of matching opening delimiters.\n*/\nNodeProp.openedBy = new NodeProp({ deserialize: str => str.split(\" \") });\n/**\nUsed to assign node types to groups (for example, all node\ntypes that represent an expression could be tagged with an\n`\"Expression\"` group).\n*/\nNodeProp.group = new NodeProp({ deserialize: str => str.split(\" \") });\n/**\nAttached to nodes to indicate these should be\n[displayed](https://codemirror.net/docs/ref/#language.syntaxTree)\nin a bidirectional text isolate, so that direction-neutral\ncharacters on their sides don't incorrectly get associated with\nsurrounding text. You'll generally want to set this for nodes\nthat contain arbitrary text, like strings and comments, and for\nnodes that appear _inside_ arbitrary text, like HTML tags. When\nnot given a value, in a grammar declaration, defaults to\n`\"auto\"`.\n*/\nNodeProp.isolate = new NodeProp({ deserialize: value => {\n if (value && value != \"rtl\" && value != \"ltr\" && value != \"auto\")\n throw new RangeError(\"Invalid value for isolate: \" + value);\n return value || \"auto\";\n } });\n/**\nThe hash of the [context](#lr.ContextTracker.constructor)\nthat the node was parsed in, if any. Used to limit reuse of\ncontextual nodes.\n*/\nNodeProp.contextHash = new NodeProp({ perNode: true });\n/**\nThe distance beyond the end of the node that the tokenizer\nlooked ahead for any of the tokens inside the node. (The LR\nparser only stores this when it is larger than 25, for\nefficiency reasons.)\n*/\nNodeProp.lookAhead = new NodeProp({ perNode: true });\n/**\nThis per-node prop is used to replace a given node, or part of a\nnode, with another tree. This is useful to include trees from\ndifferent languages in mixed-language parsers.\n*/\nNodeProp.mounted = new NodeProp({ perNode: true });\n/**\nA mounted tree, which can be [stored](#common.NodeProp^mounted) on\na tree node to indicate that parts of its content are\nrepresented by another tree.\n*/\nclass MountedTree {\n constructor(\n /**\n The inner tree.\n */\n tree, \n /**\n If this is null, this tree replaces the entire node (it will\n be included in the regular iteration instead of its host\n node). If not, only the given ranges are considered to be\n covered by this tree. This is used for trees that are mixed in\n a way that isn't strictly hierarchical. Such mounted trees are\n only entered by [`resolveInner`](#common.Tree.resolveInner)\n and [`enter`](#common.SyntaxNode.enter).\n */\n overlay, \n /**\n The parser used to create this subtree.\n */\n parser) {\n this.tree = tree;\n this.overlay = overlay;\n this.parser = parser;\n }\n /**\n @internal\n */\n static get(tree) {\n return tree && tree.props && tree.props[NodeProp.mounted.id];\n }\n}\nconst noProps = Object.create(null);\n/**\nEach node in a syntax tree has a node type associated with it.\n*/\nclass NodeType {\n /**\n @internal\n */\n constructor(\n /**\n The name of the node type. Not necessarily unique, but if the\n grammar was written properly, different node types with the\n same name within a node set should play the same semantic\n role.\n */\n name, \n /**\n @internal\n */\n props, \n /**\n The id of this node in its set. Corresponds to the term ids\n used in the parser.\n */\n id, \n /**\n @internal\n */\n flags = 0) {\n this.name = name;\n this.props = props;\n this.id = id;\n this.flags = flags;\n }\n /**\n Define a node type.\n */\n static define(spec) {\n let props = spec.props && spec.props.length ? Object.create(null) : noProps;\n let flags = (spec.top ? 1 /* NodeFlag.Top */ : 0) | (spec.skipped ? 2 /* NodeFlag.Skipped */ : 0) |\n (spec.error ? 4 /* NodeFlag.Error */ : 0) | (spec.name == null ? 8 /* NodeFlag.Anonymous */ : 0);\n let type = new NodeType(spec.name || \"\", props, spec.id, flags);\n if (spec.props)\n for (let src of spec.props) {\n if (!Array.isArray(src))\n src = src(type);\n if (src) {\n if (src[0].perNode)\n throw new RangeError(\"Can't store a per-node prop on a node type\");\n props[src[0].id] = src[1];\n }\n }\n return type;\n }\n /**\n Retrieves a node prop for this type. Will return `undefined` if\n the prop isn't present on this node.\n */\n prop(prop) { return this.props[prop.id]; }\n /**\n True when this is the top node of a grammar.\n */\n get isTop() { return (this.flags & 1 /* NodeFlag.Top */) > 0; }\n /**\n True when this node is produced by a skip rule.\n */\n get isSkipped() { return (this.flags & 2 /* NodeFlag.Skipped */) > 0; }\n /**\n Indicates whether this is an error node.\n */\n get isError() { return (this.flags & 4 /* NodeFlag.Error */) > 0; }\n /**\n When true, this node type doesn't correspond to a user-declared\n named node, for example because it is used to cache repetition.\n */\n get isAnonymous() { return (this.flags & 8 /* NodeFlag.Anonymous */) > 0; }\n /**\n Returns true when this node's name or one of its\n [groups](#common.NodeProp^group) matches the given string.\n */\n is(name) {\n if (typeof name == 'string') {\n if (this.name == name)\n return true;\n let group = this.prop(NodeProp.group);\n return group ? group.indexOf(name) > -1 : false;\n }\n return this.id == name;\n }\n /**\n Create a function from node types to arbitrary values by\n specifying an object whose property names are node or\n [group](#common.NodeProp^group) names. Often useful with\n [`NodeProp.add`](#common.NodeProp.add). You can put multiple\n names, separated by spaces, in a single property name to map\n multiple node names to a single value.\n */\n static match(map) {\n let direct = Object.create(null);\n for (let prop in map)\n for (let name of prop.split(\" \"))\n direct[name] = map[prop];\n return (node) => {\n for (let groups = node.prop(NodeProp.group), i = -1; i < (groups ? groups.length : 0); i++) {\n let found = direct[i < 0 ? node.name : groups[i]];\n if (found)\n return found;\n }\n };\n }\n}\n/**\nAn empty dummy node type to use when no actual type is available.\n*/\nNodeType.none = new NodeType(\"\", Object.create(null), 0, 8 /* NodeFlag.Anonymous */);\n/**\nA node set holds a collection of node types. It is used to\ncompactly represent trees by storing their type ids, rather than a\nfull pointer to the type object, in a numeric array. Each parser\n[has](#lr.LRParser.nodeSet) a node set, and [tree\nbuffers](#common.TreeBuffer) can only store collections of nodes\nfrom the same set. A set can have a maximum of 2**16 (65536) node\ntypes in it, so that the ids fit into 16-bit typed array slots.\n*/\nclass NodeSet {\n /**\n Create a set with the given types. The `id` property of each\n type should correspond to its position within the array.\n */\n constructor(\n /**\n The node types in this set, by id.\n */\n types) {\n this.types = types;\n for (let i = 0; i < types.length; i++)\n if (types[i].id != i)\n throw new RangeError(\"Node type ids should correspond to array positions when creating a node set\");\n }\n /**\n Create a copy of this set with some node properties added. The\n arguments to this method can be created with\n [`NodeProp.add`](#common.NodeProp.add).\n */\n extend(...props) {\n let newTypes = [];\n for (let type of this.types) {\n let newProps = null;\n for (let source of props) {\n let add = source(type);\n if (add) {\n if (!newProps)\n newProps = Object.assign({}, type.props);\n newProps[add[0].id] = add[1];\n }\n }\n newTypes.push(newProps ? new NodeType(type.name, newProps, type.id, type.flags) : type);\n }\n return new NodeSet(newTypes);\n }\n}\nconst CachedNode = new WeakMap(), CachedInnerNode = new WeakMap();\n/**\nOptions that control iteration. Can be combined with the `|`\noperator to enable multiple ones.\n*/\nvar IterMode;\n(function (IterMode) {\n /**\n When enabled, iteration will only visit [`Tree`](#common.Tree)\n objects, not nodes packed into\n [`TreeBuffer`](#common.TreeBuffer)s.\n */\n IterMode[IterMode[\"ExcludeBuffers\"] = 1] = \"ExcludeBuffers\";\n /**\n Enable this to make iteration include anonymous nodes (such as\n the nodes that wrap repeated grammar constructs into a balanced\n tree).\n */\n IterMode[IterMode[\"IncludeAnonymous\"] = 2] = \"IncludeAnonymous\";\n /**\n By default, regular [mounted](#common.NodeProp^mounted) nodes\n replace their base node in iteration. Enable this to ignore them\n instead.\n */\n IterMode[IterMode[\"IgnoreMounts\"] = 4] = \"IgnoreMounts\";\n /**\n This option only applies in\n [`enter`](#common.SyntaxNode.enter)-style methods. It tells the\n library to not enter mounted overlays if one covers the given\n position.\n */\n IterMode[IterMode[\"IgnoreOverlays\"] = 8] = \"IgnoreOverlays\";\n})(IterMode || (IterMode = {}));\n/**\nA piece of syntax tree. There are two ways to approach these\ntrees: the way they are actually stored in memory, and the\nconvenient way.\n\nSyntax trees are stored as a tree of `Tree` and `TreeBuffer`\nobjects. By packing detail information into `TreeBuffer` leaf\nnodes, the representation is made a lot more memory-efficient.\n\nHowever, when you want to actually work with tree nodes, this\nrepresentation is very awkward, so most client code will want to\nuse the [`TreeCursor`](#common.TreeCursor) or\n[`SyntaxNode`](#common.SyntaxNode) interface instead, which provides\na view on some part of this data structure, and can be used to\nmove around to adjacent nodes.\n*/\nclass Tree {\n /**\n Construct a new tree. See also [`Tree.build`](#common.Tree^build).\n */\n constructor(\n /**\n The type of the top node.\n */\n type, \n /**\n This node's child nodes.\n */\n children, \n /**\n The positions (offsets relative to the start of this tree) of\n the children.\n */\n positions, \n /**\n The total length of this tree\n */\n length, \n /**\n Per-node [node props](#common.NodeProp) to associate with this node.\n */\n props) {\n this.type = type;\n this.children = children;\n this.positions = positions;\n this.length = length;\n /**\n @internal\n */\n this.props = null;\n if (props && props.length) {\n this.props = Object.create(null);\n for (let [prop, value] of props)\n this.props[typeof prop == \"number\" ? prop : prop.id] = value;\n }\n }\n /**\n @internal\n */\n toString() {\n let mounted = MountedTree.get(this);\n if (mounted && !mounted.overlay)\n return mounted.tree.toString();\n let children = \"\";\n for (let ch of this.children) {\n let str = ch.toString();\n if (str) {\n if (children)\n children += \",\";\n children += str;\n }\n }\n return !this.type.name ? children :\n (/\\W/.test(this.type.name) && !this.type.isError ? JSON.stringify(this.type.name) : this.type.name) +\n (children.length ? \"(\" + children + \")\" : \"\");\n }\n /**\n Get a [tree cursor](#common.TreeCursor) positioned at the top of\n the tree. Mode can be used to [control](#common.IterMode) which\n nodes the cursor visits.\n */\n cursor(mode = 0) {\n return new TreeCursor(this.topNode, mode);\n }\n /**\n Get a [tree cursor](#common.TreeCursor) pointing into this tree\n at the given position and side (see\n [`moveTo`](#common.TreeCursor.moveTo).\n */\n cursorAt(pos, side = 0, mode = 0) {\n let scope = CachedNode.get(this) || this.topNode;\n let cursor = new TreeCursor(scope);\n cursor.moveTo(pos, side);\n CachedNode.set(this, cursor._tree);\n return cursor;\n }\n /**\n Get a [syntax node](#common.SyntaxNode) object for the top of the\n tree.\n */\n get topNode() {\n return new TreeNode(this, 0, 0, null);\n }\n /**\n Get the [syntax node](#common.SyntaxNode) at the given position.\n If `side` is -1, this will move into nodes that end at the\n position. If 1, it'll move into nodes that start at the\n position. With 0, it'll only enter nodes that cover the position\n from both sides.\n \n Note that this will not enter\n [overlays](#common.MountedTree.overlay), and you often want\n [`resolveInner`](#common.Tree.resolveInner) instead.\n */\n resolve(pos, side = 0) {\n let node = resolveNode(CachedNode.get(this) || this.topNode, pos, side, false);\n CachedNode.set(this, node);\n return node;\n }\n /**\n Like [`resolve`](#common.Tree.resolve), but will enter\n [overlaid](#common.MountedTree.overlay) nodes, producing a syntax node\n pointing into the innermost overlaid tree at the given position\n (with parent links going through all parent structure, including\n the host trees).\n */\n resolveInner(pos, side = 0) {\n let node = resolveNode(CachedInnerNode.get(this) || this.topNode, pos, side, true);\n CachedInnerNode.set(this, node);\n return node;\n }\n /**\n In some situations, it can be useful to iterate through all\n nodes around a position, including those in overlays that don't\n directly cover the position. This method gives you an iterator\n that will produce all nodes, from small to big, around the given\n position.\n */\n resolveStack(pos, side = 0) {\n return stackIterator(this, pos, side);\n }\n /**\n Iterate over the tree and its children, calling `enter` for any\n node that touches the `from`/`to` region (if given) before\n running over such a node's children, and `leave` (if given) when\n leaving the node. When `enter` returns `false`, that node will\n not have its children iterated over (or `leave` called).\n */\n iterate(spec) {\n let { enter, leave, from = 0, to = this.length } = spec;\n let mode = spec.mode || 0, anon = (mode & IterMode.IncludeAnonymous) > 0;\n for (let c = this.cursor(mode | IterMode.IncludeAnonymous);;) {\n let entered = false;\n if (c.from <= to && c.to >= from && (!anon && c.type.isAnonymous || enter(c) !== false)) {\n if (c.firstChild())\n continue;\n entered = true;\n }\n for (;;) {\n if (entered && leave && (anon || !c.type.isAnonymous))\n leave(c);\n if (c.nextSibling())\n break;\n if (!c.parent())\n return;\n entered = true;\n }\n }\n }\n /**\n Get the value of the given [node prop](#common.NodeProp) for this\n node. Works with both per-node and per-type props.\n */\n prop(prop) {\n return !prop.perNode ? this.type.prop(prop) : this.props ? this.props[prop.id] : undefined;\n }\n /**\n Returns the node's [per-node props](#common.NodeProp.perNode) in a\n format that can be passed to the [`Tree`](#common.Tree)\n constructor.\n */\n get propValues() {\n let result = [];\n if (this.props)\n for (let id in this.props)\n result.push([+id, this.props[id]]);\n return result;\n }\n /**\n Balance the direct children of this tree, producing a copy of\n which may have children grouped into subtrees with type\n [`NodeType.none`](#common.NodeType^none).\n */\n balance(config = {}) {\n return this.children.length <= 8 /* Balance.BranchFactor */ ? this :\n balanceRange(NodeType.none, this.children, this.positions, 0, this.children.length, 0, this.length, (children, positions, length) => new Tree(this.type, children, positions, length, this.propValues), config.makeTree || ((children, positions, length) => new Tree(NodeType.none, children, positions, length)));\n }\n /**\n Build a tree from a postfix-ordered buffer of node information,\n or a cursor over such a buffer.\n */\n static build(data) { return buildTree(data); }\n}\n/**\nThe empty tree\n*/\nTree.empty = new Tree(NodeType.none, [], [], 0);\nclass FlatBufferCursor {\n constructor(buffer, index) {\n this.buffer = buffer;\n this.index = index;\n }\n get id() { return this.buffer[this.index - 4]; }\n get start() { return this.buffer[this.index - 3]; }\n get end() { return this.buffer[this.index - 2]; }\n get size() { return this.buffer[this.index - 1]; }\n get pos() { return this.index; }\n next() { this.index -= 4; }\n fork() { return new FlatBufferCursor(this.buffer, this.index); }\n}\n/**\nTree buffers contain (type, start, end, endIndex) quads for each\nnode. In such a buffer, nodes are stored in prefix order (parents\nbefore children, with the endIndex of the parent indicating which\nchildren belong to it).\n*/\nclass TreeBuffer {\n /**\n Create a tree buffer.\n */\n constructor(\n /**\n The buffer's content.\n */\n buffer, \n /**\n The total length of the group of nodes in the buffer.\n */\n length, \n /**\n The node set used in this buffer.\n */\n set) {\n this.buffer = buffer;\n this.length = length;\n this.set = set;\n }\n /**\n @internal\n */\n get type() { return NodeType.none; }\n /**\n @internal\n */\n toString() {\n let result = [];\n for (let index = 0; index < this.buffer.length;) {\n result.push(this.childString(index));\n index = this.buffer[index + 3];\n }\n return result.join(\",\");\n }\n /**\n @internal\n */\n childString(index) {\n let id = this.buffer[index], endIndex = this.buffer[index + 3];\n let type = this.set.types[id], result = type.name;\n if (/\\W/.test(result) && !type.isError)\n result = JSON.stringify(result);\n index += 4;\n if (endIndex == index)\n return result;\n let children = [];\n while (index < endIndex) {\n children.push(this.childString(index));\n index = this.buffer[index + 3];\n }\n return result + \"(\" + children.join(\",\") + \")\";\n }\n /**\n @internal\n */\n findChild(startIndex, endIndex, dir, pos, side) {\n let { buffer } = this, pick = -1;\n for (let i = startIndex; i != endIndex; i = buffer[i + 3]) {\n if (checkSide(side, pos, buffer[i + 1], buffer[i + 2])) {\n pick = i;\n if (dir > 0)\n break;\n }\n }\n return pick;\n }\n /**\n @internal\n */\n slice(startI, endI, from) {\n let b = this.buffer;\n let copy = new Uint16Array(endI - startI), len = 0;\n for (let i = startI, j = 0; i < endI;) {\n copy[j++] = b[i++];\n copy[j++] = b[i++] - from;\n let to = copy[j++] = b[i++] - from;\n copy[j++] = b[i++] - startI;\n len = Math.max(len, to);\n }\n return new TreeBuffer(copy, len, this.set);\n }\n}\nfunction checkSide(side, pos, from, to) {\n switch (side) {\n case -2 /* Side.Before */: return from < pos;\n case -1 /* Side.AtOrBefore */: return to >= pos && from < pos;\n case 0 /* Side.Around */: return from < pos && to > pos;\n case 1 /* Side.AtOrAfter */: return from <= pos && to > pos;\n case 2 /* Side.After */: return to > pos;\n case 4 /* Side.DontCare */: return true;\n }\n}\nfunction resolveNode(node, pos, side, overlays) {\n var _a;\n // Move up to a node that actually holds the position, if possible\n while (node.from == node.to ||\n (side < 1 ? node.from >= pos : node.from > pos) ||\n (side > -1 ? node.to <= pos : node.to < pos)) {\n let parent = !overlays && node instanceof TreeNode && node.index < 0 ? null : node.parent;\n if (!parent)\n return node;\n node = parent;\n }\n let mode = overlays ? 0 : IterMode.IgnoreOverlays;\n // Must go up out of overlays when those do not overlap with pos\n if (overlays)\n for (let scan = node, parent = scan.parent; parent; scan = parent, parent = scan.parent) {\n if (scan instanceof TreeNode && scan.index < 0 && ((_a = parent.enter(pos, side, mode)) === null || _a === void 0 ? void 0 : _a.from) != scan.from)\n node = parent;\n }\n for (;;) {\n let inner = node.enter(pos, side, mode);\n if (!inner)\n return node;\n node = inner;\n }\n}\nclass BaseNode {\n cursor(mode = 0) { return new TreeCursor(this, mode); }\n getChild(type, before = null, after = null) {\n let r = getChildren(this, type, before, after);\n return r.length ? r[0] : null;\n }\n getChildren(type, before = null, after = null) {\n return getChildren(this, type, before, after);\n }\n resolve(pos, side = 0) {\n return resolveNode(this, pos, side, false);\n }\n resolveInner(pos, side = 0) {\n return resolveNode(this, pos, side, true);\n }\n matchContext(context) {\n return matchNodeContext(this.parent, context);\n }\n enterUnfinishedNodesBefore(pos) {\n let scan = this.childBefore(pos), node = this;\n while (scan) {\n let last = scan.lastChild;\n if (!last || last.to != scan.to)\n break;\n if (last.type.isError && last.from == last.to) {\n node = scan;\n scan = last.prevSibling;\n }\n else {\n scan = last;\n }\n }\n return node;\n }\n get node() { return this; }\n get next() { return this.parent; }\n}\nclass TreeNode extends BaseNode {\n constructor(_tree, from, \n // Index in parent node, set to -1 if the node is not a direct child of _parent.node (overlay)\n index, _parent) {\n super();\n this._tree = _tree;\n this.from = from;\n this.index = index;\n this._parent = _parent;\n }\n get type() { return this._tree.type; }\n get name() { return this._tree.type.name; }\n get to() { return this.from + this._tree.length; }\n nextChild(i, dir, pos, side, mode = 0) {\n for (let parent = this;;) {\n for (let { children, positions } = parent._tree, e = dir > 0 ? children.length : -1; i != e; i += dir) {\n let next = children[i], start = positions[i] + parent.from;\n if (!checkSide(side, pos, start, start + next.length))\n continue;\n if (next instanceof TreeBuffer) {\n if (mode & IterMode.ExcludeBuffers)\n continue;\n let index = next.findChild(0, next.buffer.length, dir, pos - start, side);\n if (index > -1)\n return new BufferNode(new BufferContext(parent, next, i, start), null, index);\n }\n else if ((mode & IterMode.IncludeAnonymous) || (!next.type.isAnonymous || hasChild(next))) {\n let mounted;\n if (!(mode & IterMode.IgnoreMounts) && (mounted = MountedTree.get(next)) && !mounted.overlay)\n return new TreeNode(mounted.tree, start, i, parent);\n let inner = new TreeNode(next, start, i, parent);\n return (mode & IterMode.IncludeAnonymous) || !inner.type.isAnonymous ? inner\n : inner.nextChild(dir < 0 ? next.children.length - 1 : 0, dir, pos, side);\n }\n }\n if ((mode & IterMode.IncludeAnonymous) || !parent.type.isAnonymous)\n return null;\n if (parent.index >= 0)\n i = parent.index + dir;\n else\n i = dir < 0 ? -1 : parent._parent._tree.children.length;\n parent = parent._parent;\n if (!parent)\n return null;\n }\n }\n get firstChild() { return this.nextChild(0, 1, 0, 4 /* Side.DontCare */); }\n get lastChild() { return this.nextChild(this._tree.children.length - 1, -1, 0, 4 /* Side.DontCare */); }\n childAfter(pos) { return this.nextChild(0, 1, pos, 2 /* Side.After */); }\n childBefore(pos) { return this.nextChild(this._tree.children.length - 1, -1, pos, -2 /* Side.Before */); }\n enter(pos, side, mode = 0) {\n let mounted;\n if (!(mode & IterMode.IgnoreOverlays) && (mounted = MountedTree.get(this._tree)) && mounted.overlay) {\n let rPos = pos - this.from;\n for (let { from, to } of mounted.overlay) {\n if ((side > 0 ? from <= rPos : from < rPos) &&\n (side < 0 ? to >= rPos : to > rPos))\n return new TreeNode(mounted.tree, mounted.overlay[0].from + this.from, -1, this);\n }\n }\n return this.nextChild(0, 1, pos, side, mode);\n }\n nextSignificantParent() {\n let val = this;\n while (val.type.isAnonymous && val._parent)\n val = val._parent;\n return val;\n }\n get parent() {\n return this._parent ? this._parent.nextSignificantParent() : null;\n }\n get nextSibling() {\n return this._parent && this.index >= 0 ? this._parent.nextChild(this.index + 1, 1, 0, 4 /* Side.DontCare */) : null;\n }\n get prevSibling() {\n return this._parent && this.index >= 0 ? this._parent.nextChild(this.index - 1, -1, 0, 4 /* Side.DontCare */) : null;\n }\n get tree() { return this._tree; }\n toTree() { return this._tree; }\n /**\n @internal\n */\n toString() { return this._tree.toString(); }\n}\nfunction getChildren(node, type, before, after) {\n let cur = node.cursor(), result = [];\n if (!cur.firstChild())\n return result;\n if (before != null)\n for (let found = false; !found;) {\n found = cur.type.is(before);\n if (!cur.nextSibling())\n return result;\n }\n for (;;) {\n if (after != null && cur.type.is(after))\n return result;\n if (cur.type.is(type))\n result.push(cur.node);\n if (!cur.nextSibling())\n return after == null ? result : [];\n }\n}\nfunction matchNodeContext(node, context, i = context.length - 1) {\n for (let p = node; i >= 0; p = p.parent) {\n if (!p)\n return false;\n if (!p.type.isAnonymous) {\n if (context[i] && context[i] != p.name)\n return false;\n i--;\n }\n }\n return true;\n}\nclass BufferContext {\n constructor(parent, buffer, index, start) {\n this.parent = parent;\n this.buffer = buffer;\n this.index = index;\n this.start = start;\n }\n}\nclass BufferNode extends BaseNode {\n get name() { return this.type.name; }\n get from() { return this.context.start + this.context.buffer.buffer[this.index + 1]; }\n get to() { return this.context.start + this.context.buffer.buffer[this.index + 2]; }\n constructor(context, _parent, index) {\n super();\n this.context = context;\n this._parent = _parent;\n this.index = index;\n this.type = context.buffer.set.types[context.buffer.buffer[index]];\n }\n child(dir, pos, side) {\n let { buffer } = this.context;\n let index = buffer.findChild(this.index + 4, buffer.buffer[this.index + 3], dir, pos - this.context.start, side);\n return index < 0 ? null : new BufferNode(this.context, this, index);\n }\n get firstChild() { return this.child(1, 0, 4 /* Side.DontCare */); }\n get lastChild() { return this.child(-1, 0, 4 /* Side.DontCare */); }\n childAfter(pos) { return this.child(1, pos, 2 /* Side.After */); }\n childBefore(pos) { return this.child(-1, pos, -2 /* Side.Before */); }\n enter(pos, side, mode = 0) {\n if (mode & IterMode.ExcludeBuffers)\n return null;\n let { buffer } = this.context;\n let index = buffer.findChild(this.index + 4, buffer.buffer[this.index + 3], side > 0 ? 1 : -1, pos - this.context.start, side);\n return index < 0 ? null : new BufferNode(this.context, this, index);\n }\n get parent() {\n return this._parent || this.context.parent.nextSignificantParent();\n }\n externalSibling(dir) {\n return this._parent ? null : this.context.parent.nextChild(this.context.index + dir, dir, 0, 4 /* Side.DontCare */);\n }\n get nextSibling() {\n let { buffer } = this.context;\n let after = buffer.buffer[this.index + 3];\n if (after < (this._parent ? buffer.buffer[this._parent.index + 3] : buffer.buffer.length))\n return new BufferNode(this.context, this._parent, after);\n return this.externalSibling(1);\n }\n get prevSibling() {\n let { buffer } = this.context;\n let parentStart = this._parent ? this._parent.index + 4 : 0;\n if (this.index == parentStart)\n return this.externalSibling(-1);\n return new BufferNode(this.context, this._parent, buffer.findChild(parentStart, this.index, -1, 0, 4 /* Side.DontCare */));\n }\n get tree() { return null; }\n toTree() {\n let children = [], positions = [];\n let { buffer } = this.context;\n let startI = this.index + 4, endI = buffer.buffer[this.index + 3];\n if (endI > startI) {\n let from = buffer.buffer[this.index + 1];\n children.push(buffer.slice(startI, endI, from));\n positions.push(0);\n }\n return new Tree(this.type, children, positions, this.to - this.from);\n }\n /**\n @internal\n */\n toString() { return this.context.buffer.childString(this.index); }\n}\nfunction iterStack(heads) {\n if (!heads.length)\n return null;\n let pick = 0, picked = heads[0];\n for (let i = 1; i < heads.length; i++) {\n let node = heads[i];\n if (node.from > picked.from || node.to < picked.to) {\n picked = node;\n pick = i;\n }\n }\n let next = picked instanceof TreeNode && picked.index < 0 ? null : picked.parent;\n let newHeads = heads.slice();\n if (next)\n newHeads[pick] = next;\n else\n newHeads.splice(pick, 1);\n return new StackIterator(newHeads, picked);\n}\nclass StackIterator {\n constructor(heads, node) {\n this.heads = heads;\n this.node = node;\n }\n get next() { return iterStack(this.heads); }\n}\nfunction stackIterator(tree, pos, side) {\n let inner = tree.resolveInner(pos, side), layers = null;\n for (let scan = inner instanceof TreeNode ? inner : inner.context.parent; scan; scan = scan.parent) {\n if (scan.index < 0) { // This is an overlay root\n let parent = scan.parent;\n (layers || (layers = [inner])).push(parent.resolve(pos, side));\n scan = parent;\n }\n else {\n let mount = MountedTree.get(scan.tree);\n // Relevant overlay branching off\n if (mount && mount.overlay && mount.overlay[0].from <= pos && mount.overlay[mount.overlay.length - 1].to >= pos) {\n let root = new TreeNode(mount.tree, mount.overlay[0].from + scan.from, -1, scan);\n (layers || (layers = [inner])).push(resolveNode(root, pos, side, false));\n }\n }\n }\n return layers ? iterStack(layers) : inner;\n}\n/**\nA tree cursor object focuses on a given node in a syntax tree, and\nallows you to move to adjacent nodes.\n*/\nclass TreeCursor {\n /**\n Shorthand for `.type.name`.\n */\n get name() { return this.type.name; }\n /**\n @internal\n */\n constructor(node, \n /**\n @internal\n */\n mode = 0) {\n this.mode = mode;\n /**\n @internal\n */\n this.buffer = null;\n this.stack = [];\n /**\n @internal\n */\n this.index = 0;\n this.bufferNode = null;\n if (node instanceof TreeNode) {\n this.yieldNode(node);\n }\n else {\n this._tree = node.context.parent;\n this.buffer = node.context;\n for (let n = node._parent; n; n = n._parent)\n this.stack.unshift(n.index);\n this.bufferNode = node;\n this.yieldBuf(node.index);\n }\n }\n yieldNode(node) {\n if (!node)\n return false;\n this._tree = node;\n this.type = node.type;\n this.from = node.from;\n this.to = node.to;\n return true;\n }\n yieldBuf(index, type) {\n this.index = index;\n let { start, buffer } = this.buffer;\n this.type = type || buffer.set.types[buffer.buffer[index]];\n this.from = start + buffer.buffer[index + 1];\n this.to = start + buffer.buffer[index + 2];\n return true;\n }\n /**\n @internal\n */\n yield(node) {\n if (!node)\n return false;\n if (node instanceof TreeNode) {\n this.buffer = null;\n return this.yieldNode(node);\n }\n this.buffer = node.context;\n return this.yieldBuf(node.index, node.type);\n }\n /**\n @internal\n */\n toString() {\n return this.buffer ? this.buffer.buffer.childString(this.index) : this._tree.toString();\n }\n /**\n @internal\n */\n enterChild(dir, pos, side) {\n if (!this.buffer)\n return this.yield(this._tree.nextChild(dir < 0 ? this._tree._tree.children.length - 1 : 0, dir, pos, side, this.mode));\n let { buffer } = this.buffer;\n let index = buffer.findChild(this.index + 4, buffer.buffer[this.index + 3], dir, pos - this.buffer.start, side);\n if (index < 0)\n return false;\n this.stack.push(this.index);\n return this.yieldBuf(index);\n }\n /**\n Move the cursor to this node's first child. When this returns\n false, the node has no child, and the cursor has not been moved.\n */\n firstChild() { return this.enterChild(1, 0, 4 /* Side.DontCare */); }\n /**\n Move the cursor to this node's last child.\n */\n lastChild() { return this.enterChild(-1, 0, 4 /* Side.DontCare */); }\n /**\n Move the cursor to the first child that ends after `pos`.\n */\n childAfter(pos) { return this.enterChild(1, pos, 2 /* Side.After */); }\n /**\n Move to the last child that starts before `pos`.\n */\n childBefore(pos) { return this.enterChild(-1, pos, -2 /* Side.Before */); }\n /**\n Move the cursor to the child around `pos`. If side is -1 the\n child may end at that position, when 1 it may start there. This\n will also enter [overlaid](#common.MountedTree.overlay)\n [mounted](#common.NodeProp^mounted) trees unless `overlays` is\n set to false.\n */\n enter(pos, side, mode = this.mode) {\n if (!this.buffer)\n return this.yield(this._tree.enter(pos, side, mode));\n return mode & IterMode.ExcludeBuffers ? false : this.enterChild(1, pos, side);\n }\n /**\n Move to the node's parent node, if this isn't the top node.\n */\n parent() {\n if (!this.buffer)\n return this.yieldNode((this.mode & IterMode.IncludeAnonymous) ? this._tree._parent : this._tree.parent);\n if (this.stack.length)\n return this.yieldBuf(this.stack.pop());\n let parent = (this.mode & IterMode.IncludeAnonymous) ? this.buffer.parent : this.buffer.parent.nextSignificantParent();\n this.buffer = null;\n return this.yieldNode(parent);\n }\n /**\n @internal\n */\n sibling(dir) {\n if (!this.buffer)\n return !this._tree._parent ? false\n : this.yield(this._tree.index < 0 ? null\n : this._tree._parent.nextChild(this._tree.index + dir, dir, 0, 4 /* Side.DontCare */, this.mode));\n let { buffer } = this.buffer, d = this.stack.length - 1;\n if (dir < 0) {\n let parentStart = d < 0 ? 0 : this.stack[d] + 4;\n if (this.index != parentStart)\n return this.yieldBuf(buffer.findChild(parentStart, this.index, -1, 0, 4 /* Side.DontCare */));\n }\n else {\n let after = buffer.buffer[this.index + 3];\n if (after < (d < 0 ? buffer.buffer.length : buffer.buffer[this.stack[d] + 3]))\n return this.yieldBuf(after);\n }\n return d < 0 ? this.yield(this.buffer.parent.nextChild(this.buffer.index + dir, dir, 0, 4 /* Side.DontCare */, this.mode)) : false;\n }\n /**\n Move to this node's next sibling, if any.\n */\n nextSibling() { return this.sibling(1); }\n /**\n Move to this node's previous sibling, if any.\n */\n prevSibling() { return this.sibling(-1); }\n atLastNode(dir) {\n let index, parent, { buffer } = this;\n if (buffer) {\n if (dir > 0) {\n if (this.index < buffer.buffer.buffer.length)\n return false;\n }\n else {\n for (let i = 0; i < this.index; i++)\n if (buffer.buffer.buffer[i + 3] < this.index)\n return false;\n }\n ({ index, parent } = buffer);\n }\n else {\n ({ index, _parent: parent } = this._tree);\n }\n for (; parent; { index, _parent: parent } = parent) {\n if (index > -1)\n for (let i = index + dir, e = dir < 0 ? -1 : parent._tree.children.length; i != e; i += dir) {\n let child = parent._tree.children[i];\n if ((this.mode & IterMode.IncludeAnonymous) ||\n child instanceof TreeBuffer ||\n !child.type.isAnonymous ||\n hasChild(child))\n return false;\n }\n }\n return true;\n }\n move(dir, enter) {\n if (enter && this.enterChild(dir, 0, 4 /* Side.DontCare */))\n return true;\n for (;;) {\n if (this.sibling(dir))\n return true;\n if (this.atLastNode(dir) || !this.parent())\n return false;\n }\n }\n /**\n Move to the next node in a\n [pre-order](https://en.wikipedia.org/wiki/Tree_traversal#Pre-order,_NLR)\n traversal, going from a node to its first child or, if the\n current node is empty or `enter` is false, its next sibling or\n the next sibling of the first parent node that has one.\n */\n next(enter = true) { return this.move(1, enter); }\n /**\n Move to the next node in a last-to-first pre-order traversal. A\n node is followed by its last child or, if it has none, its\n previous sibling or the previous sibling of the first parent\n node that has one.\n */\n prev(enter = true) { return this.move(-1, enter); }\n /**\n Move the cursor to the innermost node that covers `pos`. If\n `side` is -1, it will enter nodes that end at `pos`. If it is 1,\n it will enter nodes that start at `pos`.\n */\n moveTo(pos, side = 0) {\n // Move up to a node that actually holds the position, if possible\n while (this.from == this.to ||\n (side < 1 ? this.from >= pos : this.from > pos) ||\n (side > -1 ? this.to <= pos : this.to < pos))\n if (!this.parent())\n break;\n // Then scan down into child nodes as far as possible\n while (this.enterChild(1, pos, side)) { }\n return this;\n }\n /**\n Get a [syntax node](#common.SyntaxNode) at the cursor's current\n position.\n */\n get node() {\n if (!this.buffer)\n return this._tree;\n let cache = this.bufferNode, result = null, depth = 0;\n if (cache && cache.context == this.buffer) {\n scan: for (let index = this.index, d = this.stack.length; d >= 0;) {\n for (let c = cache; c; c = c._parent)\n if (c.index == index) {\n if (index == this.index)\n return c;\n result = c;\n depth = d + 1;\n break scan;\n }\n index = this.stack[--d];\n }\n }\n for (let i = depth; i < this.stack.length; i++)\n result = new BufferNode(this.buffer, result, this.stack[i]);\n return this.bufferNode = new BufferNode(this.buffer, result, this.index);\n }\n /**\n Get the [tree](#common.Tree) that represents the current node, if\n any. Will return null when the node is in a [tree\n buffer](#common.TreeBuffer).\n */\n get tree() {\n return this.buffer ? null : this._tree._tree;\n }\n /**\n Iterate over the current node and all its descendants, calling\n `enter` when entering a node and `leave`, if given, when leaving\n one. When `enter` returns `false`, any children of that node are\n skipped, and `leave` isn't called for it.\n */\n iterate(enter, leave) {\n for (let depth = 0;;) {\n let mustLeave = false;\n if (this.type.isAnonymous || enter(this) !== false) {\n if (this.firstChild()) {\n depth++;\n continue;\n }\n if (!this.type.isAnonymous)\n mustLeave = true;\n }\n for (;;) {\n if (mustLeave && leave)\n leave(this);\n mustLeave = this.type.isAnonymous;\n if (!depth)\n return;\n if (this.nextSibling())\n break;\n this.parent();\n depth--;\n mustLeave = true;\n }\n }\n }\n /**\n Test whether the current node matches a given context—a sequence\n of direct parent node names. Empty strings in the context array\n are treated as wildcards.\n */\n matchContext(context) {\n if (!this.buffer)\n return matchNodeContext(this.node.parent, context);\n let { buffer } = this.buffer, { types } = buffer.set;\n for (let i = context.length - 1, d = this.stack.length - 1; i >= 0; d--) {\n if (d < 0)\n return matchNodeContext(this._tree, context, i);\n let type = types[buffer.buffer[this.stack[d]]];\n if (!type.isAnonymous) {\n if (context[i] && context[i] != type.name)\n return false;\n i--;\n }\n }\n return true;\n }\n}\nfunction hasChild(tree) {\n return tree.children.some(ch => ch instanceof TreeBuffer || !ch.type.isAnonymous || hasChild(ch));\n}\nfunction buildTree(data) {\n var _a;\n let { buffer, nodeSet, maxBufferLength = DefaultBufferLength, reused = [], minRepeatType = nodeSet.types.length } = data;\n let cursor = Array.isArray(buffer) ? new FlatBufferCursor(buffer, buffer.length) : buffer;\n let types = nodeSet.types;\n let contextHash = 0, lookAhead = 0;\n function takeNode(parentStart, minPos, children, positions, inRepeat, depth) {\n let { id, start, end, size } = cursor;\n let lookAheadAtStart = lookAhead, contextAtStart = contextHash;\n while (size < 0) {\n cursor.next();\n if (size == -1 /* SpecialRecord.Reuse */) {\n let node = reused[id];\n children.push(node);\n positions.push(start - parentStart);\n return;\n }\n else if (size == -3 /* SpecialRecord.ContextChange */) { // Context change\n contextHash = id;\n return;\n }\n else if (size == -4 /* SpecialRecord.LookAhead */) {\n lookAhead = id;\n return;\n }\n else {\n throw new RangeError(`Unrecognized record size: ${size}`);\n }\n }\n let type = types[id], node, buffer;\n let startPos = start - parentStart;\n if (end - start <= maxBufferLength && (buffer = findBufferSize(cursor.pos - minPos, inRepeat))) {\n // Small enough for a buffer, and no reused nodes inside\n let data = new Uint16Array(buffer.size - buffer.skip);\n let endPos = cursor.pos - buffer.size, index = data.length;\n while (cursor.pos > endPos)\n index = copyToBuffer(buffer.start, data, index);\n node = new TreeBuffer(data, end - buffer.start, nodeSet);\n startPos = buffer.start - parentStart;\n }\n else { // Make it a node\n let endPos = cursor.pos - size;\n cursor.next();\n let localChildren = [], localPositions = [];\n let localInRepeat = id >= minRepeatType ? id : -1;\n let lastGroup = 0, lastEnd = end;\n while (cursor.pos > endPos) {\n if (localInRepeat >= 0 && cursor.id == localInRepeat && cursor.size >= 0) {\n if (cursor.end <= lastEnd - maxBufferLength) {\n makeRepeatLeaf(localChildren, localPositions, start, lastGroup, cursor.end, lastEnd, localInRepeat, lookAheadAtStart, contextAtStart);\n lastGroup = localChildren.length;\n lastEnd = cursor.end;\n }\n cursor.next();\n }\n else if (depth > 2500 /* CutOff.Depth */) {\n takeFlatNode(start, endPos, localChildren, localPositions);\n }\n else {\n takeNode(start, endPos, localChildren, localPositions, localInRepeat, depth + 1);\n }\n }\n if (localInRepeat >= 0 && lastGroup > 0 && lastGroup < localChildren.length)\n makeRepeatLeaf(localChildren, localPositions, start, lastGroup, start, lastEnd, localInRepeat, lookAheadAtStart, contextAtStart);\n localChildren.reverse();\n localPositions.reverse();\n if (localInRepeat > -1 && lastGroup > 0) {\n let make = makeBalanced(type, contextAtStart);\n node = balanceRange(type, localChildren, localPositions, 0, localChildren.length, 0, end - start, make, make);\n }\n else {\n node = makeTree(type, localChildren, localPositions, end - start, lookAheadAtStart - end, contextAtStart);\n }\n }\n children.push(node);\n positions.push(startPos);\n }\n function takeFlatNode(parentStart, minPos, children, positions) {\n let nodes = []; // Temporary, inverted array of leaf nodes found, with absolute positions\n let nodeCount = 0, stopAt = -1;\n while (cursor.pos > minPos) {\n let { id, start, end, size } = cursor;\n if (size > 4) { // Not a leaf\n cursor.next();\n }\n else if (stopAt > -1 && start < stopAt) {\n break;\n }\n else {\n if (stopAt < 0)\n stopAt = end - maxBufferLength;\n nodes.push(id, start, end);\n nodeCount++;\n cursor.next();\n }\n }\n if (nodeCount) {\n let buffer = new Uint16Array(nodeCount * 4);\n let start = nodes[nodes.length - 2];\n for (let i = nodes.length - 3, j = 0; i >= 0; i -= 3) {\n buffer[j++] = nodes[i];\n buffer[j++] = nodes[i + 1] - start;\n buffer[j++] = nodes[i + 2] - start;\n buffer[j++] = j;\n }\n children.push(new TreeBuffer(buffer, nodes[2] - start, nodeSet));\n positions.push(start - parentStart);\n }\n }\n function makeBalanced(type, contextHash) {\n return (children, positions, length) => {\n let lookAhead = 0, lastI = children.length - 1, last, lookAheadProp;\n if (lastI >= 0 && (last = children[lastI]) instanceof Tree) {\n if (!lastI && last.type == type && last.length == length)\n return last;\n if (lookAheadProp = last.prop(NodeProp.lookAhead))\n lookAhead = positions[lastI] + last.length + lookAheadProp;\n }\n return makeTree(type, children, positions, length, lookAhead, contextHash);\n };\n }\n function makeRepeatLeaf(children, positions, base, i, from, to, type, lookAhead, contextHash) {\n let localChildren = [], localPositions = [];\n while (children.length > i) {\n localChildren.push(children.pop());\n localPositions.push(positions.pop() + base - from);\n }\n children.push(makeTree(nodeSet.types[type], localChildren, localPositions, to - from, lookAhead - to, contextHash));\n positions.push(from - base);\n }\n function makeTree(type, children, positions, length, lookAhead, contextHash, props) {\n if (contextHash) {\n let pair = [NodeProp.contextHash, contextHash];\n props = props ? [pair].concat(props) : [pair];\n }\n if (lookAhead > 25) {\n let pair = [NodeProp.lookAhead, lookAhead];\n props = props ? [pair].concat(props) : [pair];\n }\n return new Tree(type, children, positions, length, props);\n }\n function findBufferSize(maxSize, inRepeat) {\n // Scan through the buffer to find previous siblings that fit\n // together in a TreeBuffer, and don't contain any reused nodes\n // (which can't be stored in a buffer).\n // If `inRepeat` is > -1, ignore node boundaries of that type for\n // nesting, but make sure the end falls either at the start\n // (`maxSize`) or before such a node.\n let fork = cursor.fork();\n let size = 0, start = 0, skip = 0, minStart = fork.end - maxBufferLength;\n let result = { size: 0, start: 0, skip: 0 };\n scan: for (let minPos = fork.pos - maxSize; fork.pos > minPos;) {\n let nodeSize = fork.size;\n // Pretend nested repeat nodes of the same type don't exist\n if (fork.id == inRepeat && nodeSize >= 0) {\n // Except that we store the current state as a valid return\n // value.\n result.size = size;\n result.start = start;\n result.skip = skip;\n skip += 4;\n size += 4;\n fork.next();\n continue;\n }\n let startPos = fork.pos - nodeSize;\n if (nodeSize < 0 || startPos < minPos || fork.start < minStart)\n break;\n let localSkipped = fork.id >= minRepeatType ? 4 : 0;\n let nodeStart = fork.start;\n fork.next();\n while (fork.pos > startPos) {\n if (fork.size < 0) {\n if (fork.size == -3 /* SpecialRecord.ContextChange */)\n localSkipped += 4;\n else\n break scan;\n }\n else if (fork.id >= minRepeatType) {\n localSkipped += 4;\n }\n fork.next();\n }\n start = nodeStart;\n size += nodeSize;\n skip += localSkipped;\n }\n if (inRepeat < 0 || size == maxSize) {\n result.size = size;\n result.start = start;\n result.skip = skip;\n }\n return result.size > 4 ? result : undefined;\n }\n function copyToBuffer(bufferStart, buffer, index) {\n let { id, start, end, size } = cursor;\n cursor.next();\n if (size >= 0 && id < minRepeatType) {\n let startIndex = index;\n if (size > 4) {\n let endPos = cursor.pos - (size - 4);\n while (cursor.pos > endPos)\n index = copyToBuffer(bufferStart, buffer, index);\n }\n buffer[--index] = startIndex;\n buffer[--index] = end - bufferStart;\n buffer[--index] = start - bufferStart;\n buffer[--index] = id;\n }\n else if (size == -3 /* SpecialRecord.ContextChange */) {\n contextHash = id;\n }\n else if (size == -4 /* SpecialRecord.LookAhead */) {\n lookAhead = id;\n }\n return index;\n }\n let children = [], positions = [];\n while (cursor.pos > 0)\n takeNode(data.start || 0, data.bufferStart || 0, children, positions, -1, 0);\n let length = (_a = data.length) !== null && _a !== void 0 ? _a : (children.length ? positions[0] + children[0].length : 0);\n return new Tree(types[data.topID], children.reverse(), positions.reverse(), length);\n}\nconst nodeSizeCache = new WeakMap;\nfunction nodeSize(balanceType, node) {\n if (!balanceType.isAnonymous || node instanceof TreeBuffer || node.type != balanceType)\n return 1;\n let size = nodeSizeCache.get(node);\n if (size == null) {\n size = 1;\n for (let child of node.children) {\n if (child.type != balanceType || !(child instanceof Tree)) {\n size = 1;\n break;\n }\n size += nodeSize(balanceType, child);\n }\n nodeSizeCache.set(node, size);\n }\n return size;\n}\nfunction balanceRange(\n// The type the balanced tree's inner nodes.\nbalanceType, \n// The direct children and their positions\nchildren, positions, \n// The index range in children/positions to use\nfrom, to, \n// The start position of the nodes, relative to their parent.\nstart, \n// Length of the outer node\nlength, \n// Function to build the top node of the balanced tree\nmkTop, \n// Function to build internal nodes for the balanced tree\nmkTree) {\n let total = 0;\n for (let i = from; i < to; i++)\n total += nodeSize(balanceType, children[i]);\n let maxChild = Math.ceil((total * 1.5) / 8 /* Balance.BranchFactor */);\n let localChildren = [], localPositions = [];\n function divide(children, positions, from, to, offset) {\n for (let i = from; i < to;) {\n let groupFrom = i, groupStart = positions[i], groupSize = nodeSize(balanceType, children[i]);\n i++;\n for (; i < to; i++) {\n let nextSize = nodeSize(balanceType, children[i]);\n if (groupSize + nextSize >= maxChild)\n break;\n groupSize += nextSize;\n }\n if (i == groupFrom + 1) {\n if (groupSize > maxChild) {\n let only = children[groupFrom]; // Only trees can have a size > 1\n divide(only.children, only.positions, 0, only.children.length, positions[groupFrom] + offset);\n continue;\n }\n localChildren.push(children[groupFrom]);\n }\n else {\n let length = positions[i - 1] + children[i - 1].length - groupStart;\n localChildren.push(balanceRange(balanceType, children, positions, groupFrom, i, groupStart, length, null, mkTree));\n }\n localPositions.push(groupStart + offset - start);\n }\n }\n divide(children, positions, from, to, 0);\n return (mkTop || mkTree)(localChildren, localPositions, length);\n}\n/**\nProvides a way to associate values with pieces of trees. As long\nas that part of the tree is reused, the associated values can be\nretrieved from an updated tree.\n*/\nclass NodeWeakMap {\n constructor() {\n this.map = new WeakMap();\n }\n setBuffer(buffer, index, value) {\n let inner = this.map.get(buffer);\n if (!inner)\n this.map.set(buffer, inner = new Map);\n inner.set(index, value);\n }\n getBuffer(buffer, index) {\n let inner = this.map.get(buffer);\n return inner && inner.get(index);\n }\n /**\n Set the value for this syntax node.\n */\n set(node, value) {\n if (node instanceof BufferNode)\n this.setBuffer(node.context.buffer, node.index, value);\n else if (node instanceof TreeNode)\n this.map.set(node.tree, value);\n }\n /**\n Retrieve value for this syntax node, if it exists in the map.\n */\n get(node) {\n return node instanceof BufferNode ? this.getBuffer(node.context.buffer, node.index)\n : node instanceof TreeNode ? this.map.get(node.tree) : undefined;\n }\n /**\n Set the value for the node that a cursor currently points to.\n */\n cursorSet(cursor, value) {\n if (cursor.buffer)\n this.setBuffer(cursor.buffer.buffer, cursor.index, value);\n else\n this.map.set(cursor.tree, value);\n }\n /**\n Retrieve the value for the node that a cursor currently points\n to.\n */\n cursorGet(cursor) {\n return cursor.buffer ? this.getBuffer(cursor.buffer.buffer, cursor.index) : this.map.get(cursor.tree);\n }\n}\n\n/**\nTree fragments are used during [incremental\nparsing](#common.Parser.startParse) to track parts of old trees\nthat can be reused in a new parse. An array of fragments is used\nto track regions of an old tree whose nodes might be reused in new\nparses. Use the static\n[`applyChanges`](#common.TreeFragment^applyChanges) method to\nupdate fragments for document changes.\n*/\nclass TreeFragment {\n /**\n Construct a tree fragment. You'll usually want to use\n [`addTree`](#common.TreeFragment^addTree) and\n [`applyChanges`](#common.TreeFragment^applyChanges) instead of\n calling this directly.\n */\n constructor(\n /**\n The start of the unchanged range pointed to by this fragment.\n This refers to an offset in the _updated_ document (as opposed\n to the original tree).\n */\n from, \n /**\n The end of the unchanged range.\n */\n to, \n /**\n The tree that this fragment is based on.\n */\n tree, \n /**\n The offset between the fragment's tree and the document that\n this fragment can be used against. Add this when going from\n document to tree positions, subtract it to go from tree to\n document positions.\n */\n offset, openStart = false, openEnd = false) {\n this.from = from;\n this.to = to;\n this.tree = tree;\n this.offset = offset;\n this.open = (openStart ? 1 /* Open.Start */ : 0) | (openEnd ? 2 /* Open.End */ : 0);\n }\n /**\n Whether the start of the fragment represents the start of a\n parse, or the end of a change. (In the second case, it may not\n be safe to reuse some nodes at the start, depending on the\n parsing algorithm.)\n */\n get openStart() { return (this.open & 1 /* Open.Start */) > 0; }\n /**\n Whether the end of the fragment represents the end of a\n full-document parse, or the start of a change.\n */\n get openEnd() { return (this.open & 2 /* Open.End */) > 0; }\n /**\n Create a set of fragments from a freshly parsed tree, or update\n an existing set of fragments by replacing the ones that overlap\n with a tree with content from the new tree. When `partial` is\n true, the parse is treated as incomplete, and the resulting\n fragment has [`openEnd`](#common.TreeFragment.openEnd) set to\n true.\n */\n static addTree(tree, fragments = [], partial = false) {\n let result = [new TreeFragment(0, tree.length, tree, 0, false, partial)];\n for (let f of fragments)\n if (f.to > tree.length)\n result.push(f);\n return result;\n }\n /**\n Apply a set of edits to an array of fragments, removing or\n splitting fragments as necessary to remove edited ranges, and\n adjusting offsets for fragments that moved.\n */\n static applyChanges(fragments, changes, minGap = 128) {\n if (!changes.length)\n return fragments;\n let result = [];\n let fI = 1, nextF = fragments.length ? fragments[0] : null;\n for (let cI = 0, pos = 0, off = 0;; cI++) {\n let nextC = cI < changes.length ? changes[cI] : null;\n let nextPos = nextC ? nextC.fromA : 1e9;\n if (nextPos - pos >= minGap)\n while (nextF && nextF.from < nextPos) {\n let cut = nextF;\n if (pos >= cut.from || nextPos <= cut.to || off) {\n let fFrom = Math.max(cut.from, pos) - off, fTo = Math.min(cut.to, nextPos) - off;\n cut = fFrom >= fTo ? null : new TreeFragment(fFrom, fTo, cut.tree, cut.offset + off, cI > 0, !!nextC);\n }\n if (cut)\n result.push(cut);\n if (nextF.to > nextPos)\n break;\n nextF = fI < fragments.length ? fragments[fI++] : null;\n }\n if (!nextC)\n break;\n pos = nextC.toA;\n off = nextC.toA - nextC.toB;\n }\n return result;\n }\n}\n/**\nA superclass that parsers should extend.\n*/\nclass Parser {\n /**\n Start a parse, returning a [partial parse](#common.PartialParse)\n object. [`fragments`](#common.TreeFragment) can be passed in to\n make the parse incremental.\n \n By default, the entire input is parsed. You can pass `ranges`,\n which should be a sorted array of non-empty, non-overlapping\n ranges, to parse only those ranges. The tree returned in that\n case will start at `ranges[0].from`.\n */\n startParse(input, fragments, ranges) {\n if (typeof input == \"string\")\n input = new StringInput(input);\n ranges = !ranges ? [new Range(0, input.length)] : ranges.length ? ranges.map(r => new Range(r.from, r.to)) : [new Range(0, 0)];\n return this.createParse(input, fragments || [], ranges);\n }\n /**\n Run a full parse, returning the resulting tree.\n */\n parse(input, fragments, ranges) {\n let parse = this.startParse(input, fragments, ranges);\n for (;;) {\n let done = parse.advance();\n if (done)\n return done;\n }\n }\n}\nclass StringInput {\n constructor(string) {\n this.string = string;\n }\n get length() { return this.string.length; }\n chunk(from) { return this.string.slice(from); }\n get lineChunks() { return false; }\n read(from, to) { return this.string.slice(from, to); }\n}\n\n/**\nCreate a parse wrapper that, after the inner parse completes,\nscans its tree for mixed language regions with the `nest`\nfunction, runs the resulting [inner parses](#common.NestedParse),\nand then [mounts](#common.NodeProp^mounted) their results onto the\ntree.\n*/\nfunction parseMixed(nest) {\n return (parse, input, fragments, ranges) => new MixedParse(parse, nest, input, fragments, ranges);\n}\nclass InnerParse {\n constructor(parser, parse, overlay, target, from) {\n this.parser = parser;\n this.parse = parse;\n this.overlay = overlay;\n this.target = target;\n this.from = from;\n }\n}\nfunction checkRanges(ranges) {\n if (!ranges.length || ranges.some(r => r.from >= r.to))\n throw new RangeError(\"Invalid inner parse ranges given: \" + JSON.stringify(ranges));\n}\nclass ActiveOverlay {\n constructor(parser, predicate, mounts, index, start, target, prev) {\n this.parser = parser;\n this.predicate = predicate;\n this.mounts = mounts;\n this.index = index;\n this.start = start;\n this.target = target;\n this.prev = prev;\n this.depth = 0;\n this.ranges = [];\n }\n}\nconst stoppedInner = new NodeProp({ perNode: true });\nclass MixedParse {\n constructor(base, nest, input, fragments, ranges) {\n this.nest = nest;\n this.input = input;\n this.fragments = fragments;\n this.ranges = ranges;\n this.inner = [];\n this.innerDone = 0;\n this.baseTree = null;\n this.stoppedAt = null;\n this.baseParse = base;\n }\n advance() {\n if (this.baseParse) {\n let done = this.baseParse.advance();\n if (!done)\n return null;\n this.baseParse = null;\n this.baseTree = done;\n this.startInner();\n if (this.stoppedAt != null)\n for (let inner of this.inner)\n inner.parse.stopAt(this.stoppedAt);\n }\n if (this.innerDone == this.inner.length) {\n let result = this.baseTree;\n if (this.stoppedAt != null)\n result = new Tree(result.type, result.children, result.positions, result.length, result.propValues.concat([[stoppedInner, this.stoppedAt]]));\n return result;\n }\n let inner = this.inner[this.innerDone], done = inner.parse.advance();\n if (done) {\n this.innerDone++;\n // This is a somewhat dodgy but super helpful hack where we\n // patch up nodes created by the inner parse (and thus\n // presumably not aliased anywhere else) to hold the information\n // about the inner parse.\n let props = Object.assign(Object.create(null), inner.target.props);\n props[NodeProp.mounted.id] = new MountedTree(done, inner.overlay, inner.parser);\n inner.target.props = props;\n }\n return null;\n }\n get parsedPos() {\n if (this.baseParse)\n return 0;\n let pos = this.input.length;\n for (let i = this.innerDone; i < this.inner.length; i++) {\n if (this.inner[i].from < pos)\n pos = Math.min(pos, this.inner[i].parse.parsedPos);\n }\n return pos;\n }\n stopAt(pos) {\n this.stoppedAt = pos;\n if (this.baseParse)\n this.baseParse.stopAt(pos);\n else\n for (let i = this.innerDone; i < this.inner.length; i++)\n this.inner[i].parse.stopAt(pos);\n }\n startInner() {\n let fragmentCursor = new FragmentCursor(this.fragments);\n let overlay = null;\n let covered = null;\n let cursor = new TreeCursor(new TreeNode(this.baseTree, this.ranges[0].from, 0, null), IterMode.IncludeAnonymous | IterMode.IgnoreMounts);\n scan: for (let nest, isCovered;;) {\n let enter = true, range;\n if (this.stoppedAt != null && cursor.from >= this.stoppedAt) {\n enter = false;\n }\n else if (fragmentCursor.hasNode(cursor)) {\n if (overlay) {\n let match = overlay.mounts.find(m => m.frag.from <= cursor.from && m.frag.to >= cursor.to && m.mount.overlay);\n if (match)\n for (let r of match.mount.overlay) {\n let from = r.from + match.pos, to = r.to + match.pos;\n if (from >= cursor.from && to <= cursor.to && !overlay.ranges.some(r => r.from < to && r.to > from))\n overlay.ranges.push({ from, to });\n }\n }\n enter = false;\n }\n else if (covered && (isCovered = checkCover(covered.ranges, cursor.from, cursor.to))) {\n enter = isCovered != 2 /* Cover.Full */;\n }\n else if (!cursor.type.isAnonymous && (nest = this.nest(cursor, this.input)) &&\n (cursor.from < cursor.to || !nest.overlay)) {\n if (!cursor.tree)\n materialize(cursor);\n let oldMounts = fragmentCursor.findMounts(cursor.from, nest.parser);\n if (typeof nest.overlay == \"function\") {\n overlay = new ActiveOverlay(nest.parser, nest.overlay, oldMounts, this.inner.length, cursor.from, cursor.tree, overlay);\n }\n else {\n let ranges = punchRanges(this.ranges, nest.overlay ||\n (cursor.from < cursor.to ? [new Range(cursor.from, cursor.to)] : []));\n if (ranges.length)\n checkRanges(ranges);\n if (ranges.length || !nest.overlay)\n this.inner.push(new InnerParse(nest.parser, ranges.length ? nest.parser.startParse(this.input, enterFragments(oldMounts, ranges), ranges)\n : nest.parser.startParse(\"\"), nest.overlay ? nest.overlay.map(r => new Range(r.from - cursor.from, r.to - cursor.from)) : null, cursor.tree, ranges.length ? ranges[0].from : cursor.from));\n if (!nest.overlay)\n enter = false;\n else if (ranges.length)\n covered = { ranges, depth: 0, prev: covered };\n }\n }\n else if (overlay && (range = overlay.predicate(cursor))) {\n if (range === true)\n range = new Range(cursor.from, cursor.to);\n if (range.from < range.to) {\n let last = overlay.ranges.length - 1;\n if (last >= 0 && overlay.ranges[last].to == range.from)\n overlay.ranges[last] = { from: overlay.ranges[last].from, to: range.to };\n else\n overlay.ranges.push(range);\n }\n }\n if (enter && cursor.firstChild()) {\n if (overlay)\n overlay.depth++;\n if (covered)\n covered.depth++;\n }\n else {\n for (;;) {\n if (cursor.nextSibling())\n break;\n if (!cursor.parent())\n break scan;\n if (overlay && !--overlay.depth) {\n let ranges = punchRanges(this.ranges, overlay.ranges);\n if (ranges.length) {\n checkRanges(ranges);\n this.inner.splice(overlay.index, 0, new InnerParse(overlay.parser, overlay.parser.startParse(this.input, enterFragments(overlay.mounts, ranges), ranges), overlay.ranges.map(r => new Range(r.from - overlay.start, r.to - overlay.start)), overlay.target, ranges[0].from));\n }\n overlay = overlay.prev;\n }\n if (covered && !--covered.depth)\n covered = covered.prev;\n }\n }\n }\n }\n}\nfunction checkCover(covered, from, to) {\n for (let range of covered) {\n if (range.from >= to)\n break;\n if (range.to > from)\n return range.from <= from && range.to >= to ? 2 /* Cover.Full */ : 1 /* Cover.Partial */;\n }\n return 0 /* Cover.None */;\n}\n// Take a piece of buffer and convert it into a stand-alone\n// TreeBuffer.\nfunction sliceBuf(buf, startI, endI, nodes, positions, off) {\n if (startI < endI) {\n let from = buf.buffer[startI + 1];\n nodes.push(buf.slice(startI, endI, from));\n positions.push(from - off);\n }\n}\n// This function takes a node that's in a buffer, and converts it, and\n// its parent buffer nodes, into a Tree. This is again acting on the\n// assumption that the trees and buffers have been constructed by the\n// parse that was ran via the mix parser, and thus aren't shared with\n// any other code, making violations of the immutability safe.\nfunction materialize(cursor) {\n let { node } = cursor, stack = [];\n let buffer = node.context.buffer;\n // Scan up to the nearest tree\n do {\n stack.push(cursor.index);\n cursor.parent();\n } while (!cursor.tree);\n // Find the index of the buffer in that tree\n let base = cursor.tree, i = base.children.indexOf(buffer);\n let buf = base.children[i], b = buf.buffer, newStack = [i];\n // Split a level in the buffer, putting the nodes before and after\n // the child that contains `node` into new buffers.\n function split(startI, endI, type, innerOffset, length, stackPos) {\n let targetI = stack[stackPos];\n let children = [], positions = [];\n sliceBuf(buf, startI, targetI, children, positions, innerOffset);\n let from = b[targetI + 1], to = b[targetI + 2];\n newStack.push(children.length);\n let child = stackPos\n ? split(targetI + 4, b[targetI + 3], buf.set.types[b[targetI]], from, to - from, stackPos - 1)\n : node.toTree();\n children.push(child);\n positions.push(from - innerOffset);\n sliceBuf(buf, b[targetI + 3], endI, children, positions, innerOffset);\n return new Tree(type, children, positions, length);\n }\n base.children[i] = split(0, b.length, NodeType.none, 0, buf.length, stack.length - 1);\n // Move the cursor back to the target node\n for (let index of newStack) {\n let tree = cursor.tree.children[index], pos = cursor.tree.positions[index];\n cursor.yield(new TreeNode(tree, pos + cursor.from, index, cursor._tree));\n }\n}\nclass StructureCursor {\n constructor(root, offset) {\n this.offset = offset;\n this.done = false;\n this.cursor = root.cursor(IterMode.IncludeAnonymous | IterMode.IgnoreMounts);\n }\n // Move to the first node (in pre-order) that starts at or after `pos`.\n moveTo(pos) {\n let { cursor } = this, p = pos - this.offset;\n while (!this.done && cursor.from < p) {\n if (cursor.to >= pos && cursor.enter(p, 1, IterMode.IgnoreOverlays | IterMode.ExcludeBuffers)) ;\n else if (!cursor.next(false))\n this.done = true;\n }\n }\n hasNode(cursor) {\n this.moveTo(cursor.from);\n if (!this.done && this.cursor.from + this.offset == cursor.from && this.cursor.tree) {\n for (let tree = this.cursor.tree;;) {\n if (tree == cursor.tree)\n return true;\n if (tree.children.length && tree.positions[0] == 0 && tree.children[0] instanceof Tree)\n tree = tree.children[0];\n else\n break;\n }\n }\n return false;\n }\n}\nclass FragmentCursor {\n constructor(fragments) {\n var _a;\n this.fragments = fragments;\n this.curTo = 0;\n this.fragI = 0;\n if (fragments.length) {\n let first = this.curFrag = fragments[0];\n this.curTo = (_a = first.tree.prop(stoppedInner)) !== null && _a !== void 0 ? _a : first.to;\n this.inner = new StructureCursor(first.tree, -first.offset);\n }\n else {\n this.curFrag = this.inner = null;\n }\n }\n hasNode(node) {\n while (this.curFrag && node.from >= this.curTo)\n this.nextFrag();\n return this.curFrag && this.curFrag.from <= node.from && this.curTo >= node.to && this.inner.hasNode(node);\n }\n nextFrag() {\n var _a;\n this.fragI++;\n if (this.fragI == this.fragments.length) {\n this.curFrag = this.inner = null;\n }\n else {\n let frag = this.curFrag = this.fragments[this.fragI];\n this.curTo = (_a = frag.tree.prop(stoppedInner)) !== null && _a !== void 0 ? _a : frag.to;\n this.inner = new StructureCursor(frag.tree, -frag.offset);\n }\n }\n findMounts(pos, parser) {\n var _a;\n let result = [];\n if (this.inner) {\n this.inner.cursor.moveTo(pos, 1);\n for (let pos = this.inner.cursor.node; pos; pos = pos.parent) {\n let mount = (_a = pos.tree) === null || _a === void 0 ? void 0 : _a.prop(NodeProp.mounted);\n if (mount && mount.parser == parser) {\n for (let i = this.fragI; i < this.fragments.length; i++) {\n let frag = this.fragments[i];\n if (frag.from >= pos.to)\n break;\n if (frag.tree == this.curFrag.tree)\n result.push({\n frag,\n pos: pos.from - frag.offset,\n mount\n });\n }\n }\n }\n }\n return result;\n }\n}\nfunction punchRanges(outer, ranges) {\n let copy = null, current = ranges;\n for (let i = 1, j = 0; i < outer.length; i++) {\n let gapFrom = outer[i - 1].to, gapTo = outer[i].from;\n for (; j < current.length; j++) {\n let r = current[j];\n if (r.from >= gapTo)\n break;\n if (r.to <= gapFrom)\n continue;\n if (!copy)\n current = copy = ranges.slice();\n if (r.from < gapFrom) {\n copy[j] = new Range(r.from, gapFrom);\n if (r.to > gapTo)\n copy.splice(j + 1, 0, new Range(gapTo, r.to));\n }\n else if (r.to > gapTo) {\n copy[j--] = new Range(gapTo, r.to);\n }\n else {\n copy.splice(j--, 1);\n }\n }\n }\n return current;\n}\nfunction findCoverChanges(a, b, from, to) {\n let iA = 0, iB = 0, inA = false, inB = false, pos = -1e9;\n let result = [];\n for (;;) {\n let nextA = iA == a.length ? 1e9 : inA ? a[iA].to : a[iA].from;\n let nextB = iB == b.length ? 1e9 : inB ? b[iB].to : b[iB].from;\n if (inA != inB) {\n let start = Math.max(pos, from), end = Math.min(nextA, nextB, to);\n if (start < end)\n result.push(new Range(start, end));\n }\n pos = Math.min(nextA, nextB);\n if (pos == 1e9)\n break;\n if (nextA == pos) {\n if (!inA)\n inA = true;\n else {\n inA = false;\n iA++;\n }\n }\n if (nextB == pos) {\n if (!inB)\n inB = true;\n else {\n inB = false;\n iB++;\n }\n }\n }\n return result;\n}\n// Given a number of fragments for the outer tree, and a set of ranges\n// to parse, find fragments for inner trees mounted around those\n// ranges, if any.\nfunction enterFragments(mounts, ranges) {\n let result = [];\n for (let { pos, mount, frag } of mounts) {\n let startPos = pos + (mount.overlay ? mount.overlay[0].from : 0), endPos = startPos + mount.tree.length;\n let from = Math.max(frag.from, startPos), to = Math.min(frag.to, endPos);\n if (mount.overlay) {\n let overlay = mount.overlay.map(r => new Range(r.from + pos, r.to + pos));\n let changes = findCoverChanges(ranges, overlay, from, to);\n for (let i = 0, pos = from;; i++) {\n let last = i == changes.length, end = last ? to : changes[i].from;\n if (end > pos)\n result.push(new TreeFragment(pos, end, mount.tree, -startPos, frag.from >= pos || frag.openStart, frag.to <= end || frag.openEnd));\n if (last)\n break;\n pos = changes[i].to;\n }\n }\n else {\n result.push(new TreeFragment(from, to, mount.tree, -startPos, frag.from >= startPos || frag.openStart, frag.to <= endPos || frag.openEnd));\n }\n }\n return result;\n}\n\nexport { DefaultBufferLength, IterMode, MountedTree, NodeProp, NodeSet, NodeType, NodeWeakMap, Parser, Tree, TreeBuffer, TreeCursor, TreeFragment, parseMixed };\n","import { Parser, NodeProp, NodeSet, NodeType, DefaultBufferLength, Tree, IterMode } from '@lezer/common';\n\n/**\nA parse stack. These are used internally by the parser to track\nparsing progress. They also provide some properties and methods\nthat external code such as a tokenizer can use to get information\nabout the parse state.\n*/\nclass Stack {\n /**\n @internal\n */\n constructor(\n /**\n The parse that this stack is part of @internal\n */\n p, \n /**\n Holds state, input pos, buffer index triplets for all but the\n top state @internal\n */\n stack, \n /**\n The current parse state @internal\n */\n state, \n // The position at which the next reduce should take place. This\n // can be less than `this.pos` when skipped expressions have been\n // added to the stack (which should be moved outside of the next\n // reduction)\n /**\n @internal\n */\n reducePos, \n /**\n The input position up to which this stack has parsed.\n */\n pos, \n /**\n The dynamic score of the stack, including dynamic precedence\n and error-recovery penalties\n @internal\n */\n score, \n // The output buffer. Holds (type, start, end, size) quads\n // representing nodes created by the parser, where `size` is\n // amount of buffer array entries covered by this node.\n /**\n @internal\n */\n buffer, \n // The base offset of the buffer. When stacks are split, the split\n // instance shared the buffer history with its parent up to\n // `bufferBase`, which is the absolute offset (including the\n // offset of previous splits) into the buffer at which this stack\n // starts writing.\n /**\n @internal\n */\n bufferBase, \n /**\n @internal\n */\n curContext, \n /**\n @internal\n */\n lookAhead = 0, \n // A parent stack from which this was split off, if any. This is\n // set up so that it always points to a stack that has some\n // additional buffer content, never to a stack with an equal\n // `bufferBase`.\n /**\n @internal\n */\n parent) {\n this.p = p;\n this.stack = stack;\n this.state = state;\n this.reducePos = reducePos;\n this.pos = pos;\n this.score = score;\n this.buffer = buffer;\n this.bufferBase = bufferBase;\n this.curContext = curContext;\n this.lookAhead = lookAhead;\n this.parent = parent;\n }\n /**\n @internal\n */\n toString() {\n return `[${this.stack.filter((_, i) => i % 3 == 0).concat(this.state)}]@${this.pos}${this.score ? \"!\" + this.score : \"\"}`;\n }\n // Start an empty stack\n /**\n @internal\n */\n static start(p, state, pos = 0) {\n let cx = p.parser.context;\n return new Stack(p, [], state, pos, pos, 0, [], 0, cx ? new StackContext(cx, cx.start) : null, 0, null);\n }\n /**\n The stack's current [context](#lr.ContextTracker) value, if\n any. Its type will depend on the context tracker's type\n parameter, or it will be `null` if there is no context\n tracker.\n */\n get context() { return this.curContext ? this.curContext.context : null; }\n // Push a state onto the stack, tracking its start position as well\n // as the buffer base at that point.\n /**\n @internal\n */\n pushState(state, start) {\n this.stack.push(this.state, start, this.bufferBase + this.buffer.length);\n this.state = state;\n }\n // Apply a reduce action\n /**\n @internal\n */\n reduce(action) {\n var _a;\n let depth = action >> 19 /* Action.ReduceDepthShift */, type = action & 65535 /* Action.ValueMask */;\n let { parser } = this.p;\n let lookaheadRecord = this.reducePos < this.pos - 25 /* Lookahead.Margin */;\n if (lookaheadRecord)\n this.setLookAhead(this.pos);\n let dPrec = parser.dynamicPrecedence(type);\n if (dPrec)\n this.score += dPrec;\n if (depth == 0) {\n this.pushState(parser.getGoto(this.state, type, true), this.reducePos);\n // Zero-depth reductions are a special case—they add stuff to\n // the stack without popping anything off.\n if (type < parser.minRepeatTerm)\n this.storeNode(type, this.reducePos, this.reducePos, lookaheadRecord ? 8 : 4, true);\n this.reduceContext(type, this.reducePos);\n return;\n }\n // Find the base index into `this.stack`, content after which will\n // be dropped. Note that with `StayFlag` reductions we need to\n // consume two extra frames (the dummy parent node for the skipped\n // expression and the state that we'll be staying in, which should\n // be moved to `this.state`).\n let base = this.stack.length - ((depth - 1) * 3) - (action & 262144 /* Action.StayFlag */ ? 6 : 0);\n let start = base ? this.stack[base - 2] : this.p.ranges[0].from, size = this.reducePos - start;\n // This is a kludge to try and detect overly deep left-associative\n // trees, which will not increase the parse stack depth and thus\n // won't be caught by the regular stack-depth limit check.\n if (size >= 2000 /* Recover.MinBigReduction */ && !((_a = this.p.parser.nodeSet.types[type]) === null || _a === void 0 ? void 0 : _a.isAnonymous)) {\n if (start == this.p.lastBigReductionStart) {\n this.p.bigReductionCount++;\n this.p.lastBigReductionSize = size;\n }\n else if (this.p.lastBigReductionSize < size) {\n this.p.bigReductionCount = 1;\n this.p.lastBigReductionStart = start;\n this.p.lastBigReductionSize = size;\n }\n }\n let bufferBase = base ? this.stack[base - 1] : 0, count = this.bufferBase + this.buffer.length - bufferBase;\n // Store normal terms or `R -> R R` repeat reductions\n if (type < parser.minRepeatTerm || (action & 131072 /* Action.RepeatFlag */)) {\n let pos = parser.stateFlag(this.state, 1 /* StateFlag.Skipped */) ? this.pos : this.reducePos;\n this.storeNode(type, start, pos, count + 4, true);\n }\n if (action & 262144 /* Action.StayFlag */) {\n this.state = this.stack[base];\n }\n else {\n let baseStateID = this.stack[base - 3];\n this.state = parser.getGoto(baseStateID, type, true);\n }\n while (this.stack.length > base)\n this.stack.pop();\n this.reduceContext(type, start);\n }\n // Shift a value into the buffer\n /**\n @internal\n */\n storeNode(term, start, end, size = 4, mustSink = false) {\n if (term == 0 /* Term.Err */ &&\n (!this.stack.length || this.stack[this.stack.length - 1] < this.buffer.length + this.bufferBase)) {\n // Try to omit/merge adjacent error nodes\n let cur = this, top = this.buffer.length;\n if (top == 0 && cur.parent) {\n top = cur.bufferBase - cur.parent.bufferBase;\n cur = cur.parent;\n }\n if (top > 0 && cur.buffer[top - 4] == 0 /* Term.Err */ && cur.buffer[top - 1] > -1) {\n if (start == end)\n return;\n if (cur.buffer[top - 2] >= start) {\n cur.buffer[top - 2] = end;\n return;\n }\n }\n }\n if (!mustSink || this.pos == end) { // Simple case, just append\n this.buffer.push(term, start, end, size);\n }\n else { // There may be skipped nodes that have to be moved forward\n let index = this.buffer.length;\n if (index > 0 && this.buffer[index - 4] != 0 /* Term.Err */) {\n let mustMove = false;\n for (let scan = index; scan > 0 && this.buffer[scan - 2] > end; scan -= 4) {\n if (this.buffer[scan - 1] >= 0) {\n mustMove = true;\n break;\n }\n }\n if (mustMove)\n while (index > 0 && this.buffer[index - 2] > end) {\n // Move this record forward\n this.buffer[index] = this.buffer[index - 4];\n this.buffer[index + 1] = this.buffer[index - 3];\n this.buffer[index + 2] = this.buffer[index - 2];\n this.buffer[index + 3] = this.buffer[index - 1];\n index -= 4;\n if (size > 4)\n size -= 4;\n }\n }\n this.buffer[index] = term;\n this.buffer[index + 1] = start;\n this.buffer[index + 2] = end;\n this.buffer[index + 3] = size;\n }\n }\n // Apply a shift action\n /**\n @internal\n */\n shift(action, type, start, end) {\n if (action & 131072 /* Action.GotoFlag */) {\n this.pushState(action & 65535 /* Action.ValueMask */, this.pos);\n }\n else if ((action & 262144 /* Action.StayFlag */) == 0) { // Regular shift\n let nextState = action, { parser } = this.p;\n if (end > this.pos || type <= parser.maxNode) {\n this.pos = end;\n if (!parser.stateFlag(nextState, 1 /* StateFlag.Skipped */))\n this.reducePos = end;\n }\n this.pushState(nextState, start);\n this.shiftContext(type, start);\n if (type <= parser.maxNode)\n this.buffer.push(type, start, end, 4);\n }\n else { // Shift-and-stay, which means this is a skipped token\n this.pos = end;\n this.shiftContext(type, start);\n if (type <= this.p.parser.maxNode)\n this.buffer.push(type, start, end, 4);\n }\n }\n // Apply an action\n /**\n @internal\n */\n apply(action, next, nextStart, nextEnd) {\n if (action & 65536 /* Action.ReduceFlag */)\n this.reduce(action);\n else\n this.shift(action, next, nextStart, nextEnd);\n }\n // Add a prebuilt (reused) node into the buffer.\n /**\n @internal\n */\n useNode(value, next) {\n let index = this.p.reused.length - 1;\n if (index < 0 || this.p.reused[index] != value) {\n this.p.reused.push(value);\n index++;\n }\n let start = this.pos;\n this.reducePos = this.pos = start + value.length;\n this.pushState(next, start);\n this.buffer.push(index, start, this.reducePos, -1 /* size == -1 means this is a reused value */);\n if (this.curContext)\n this.updateContext(this.curContext.tracker.reuse(this.curContext.context, value, this, this.p.stream.reset(this.pos - value.length)));\n }\n // Split the stack. Due to the buffer sharing and the fact\n // that `this.stack` tends to stay quite shallow, this isn't very\n // expensive.\n /**\n @internal\n */\n split() {\n let parent = this;\n let off = parent.buffer.length;\n // Because the top of the buffer (after this.pos) may be mutated\n // to reorder reductions and skipped tokens, and shared buffers\n // should be immutable, this copies any outstanding skipped tokens\n // to the new buffer, and puts the base pointer before them.\n while (off > 0 && parent.buffer[off - 2] > parent.reducePos)\n off -= 4;\n let buffer = parent.buffer.slice(off), base = parent.bufferBase + off;\n // Make sure parent points to an actual parent with content, if there is such a parent.\n while (parent && base == parent.bufferBase)\n parent = parent.parent;\n return new Stack(this.p, this.stack.slice(), this.state, this.reducePos, this.pos, this.score, buffer, base, this.curContext, this.lookAhead, parent);\n }\n // Try to recover from an error by 'deleting' (ignoring) one token.\n /**\n @internal\n */\n recoverByDelete(next, nextEnd) {\n let isNode = next <= this.p.parser.maxNode;\n if (isNode)\n this.storeNode(next, this.pos, nextEnd, 4);\n this.storeNode(0 /* Term.Err */, this.pos, nextEnd, isNode ? 8 : 4);\n this.pos = this.reducePos = nextEnd;\n this.score -= 190 /* Recover.Delete */;\n }\n /**\n Check if the given term would be able to be shifted (optionally\n after some reductions) on this stack. This can be useful for\n external tokenizers that want to make sure they only provide a\n given token when it applies.\n */\n canShift(term) {\n for (let sim = new SimulatedStack(this);;) {\n let action = this.p.parser.stateSlot(sim.state, 4 /* ParseState.DefaultReduce */) || this.p.parser.hasAction(sim.state, term);\n if (action == 0)\n return false;\n if ((action & 65536 /* Action.ReduceFlag */) == 0)\n return true;\n sim.reduce(action);\n }\n }\n // Apply up to Recover.MaxNext recovery actions that conceptually\n // inserts some missing token or rule.\n /**\n @internal\n */\n recoverByInsert(next) {\n if (this.stack.length >= 300 /* Recover.MaxInsertStackDepth */)\n return [];\n let nextStates = this.p.parser.nextStates(this.state);\n if (nextStates.length > 4 /* Recover.MaxNext */ << 1 || this.stack.length >= 120 /* Recover.DampenInsertStackDepth */) {\n let best = [];\n for (let i = 0, s; i < nextStates.length; i += 2) {\n if ((s = nextStates[i + 1]) != this.state && this.p.parser.hasAction(s, next))\n best.push(nextStates[i], s);\n }\n if (this.stack.length < 120 /* Recover.DampenInsertStackDepth */)\n for (let i = 0; best.length < 4 /* Recover.MaxNext */ << 1 && i < nextStates.length; i += 2) {\n let s = nextStates[i + 1];\n if (!best.some((v, i) => (i & 1) && v == s))\n best.push(nextStates[i], s);\n }\n nextStates = best;\n }\n let result = [];\n for (let i = 0; i < nextStates.length && result.length < 4 /* Recover.MaxNext */; i += 2) {\n let s = nextStates[i + 1];\n if (s == this.state)\n continue;\n let stack = this.split();\n stack.pushState(s, this.pos);\n stack.storeNode(0 /* Term.Err */, stack.pos, stack.pos, 4, true);\n stack.shiftContext(nextStates[i], this.pos);\n stack.reducePos = this.pos;\n stack.score -= 200 /* Recover.Insert */;\n result.push(stack);\n }\n return result;\n }\n // Force a reduce, if possible. Return false if that can't\n // be done.\n /**\n @internal\n */\n forceReduce() {\n let { parser } = this.p;\n let reduce = parser.stateSlot(this.state, 5 /* ParseState.ForcedReduce */);\n if ((reduce & 65536 /* Action.ReduceFlag */) == 0)\n return false;\n if (!parser.validAction(this.state, reduce)) {\n let depth = reduce >> 19 /* Action.ReduceDepthShift */, term = reduce & 65535 /* Action.ValueMask */;\n let target = this.stack.length - depth * 3;\n if (target < 0 || parser.getGoto(this.stack[target], term, false) < 0) {\n let backup = this.findForcedReduction();\n if (backup == null)\n return false;\n reduce = backup;\n }\n this.storeNode(0 /* Term.Err */, this.pos, this.pos, 4, true);\n this.score -= 100 /* Recover.Reduce */;\n }\n this.reducePos = this.pos;\n this.reduce(reduce);\n return true;\n }\n /**\n Try to scan through the automaton to find some kind of reduction\n that can be applied. Used when the regular ForcedReduce field\n isn't a valid action. @internal\n */\n findForcedReduction() {\n let { parser } = this.p, seen = [];\n let explore = (state, depth) => {\n if (seen.includes(state))\n return;\n seen.push(state);\n return parser.allActions(state, (action) => {\n if (action & (262144 /* Action.StayFlag */ | 131072 /* Action.GotoFlag */)) ;\n else if (action & 65536 /* Action.ReduceFlag */) {\n let rDepth = (action >> 19 /* Action.ReduceDepthShift */) - depth;\n if (rDepth > 1) {\n let term = action & 65535 /* Action.ValueMask */, target = this.stack.length - rDepth * 3;\n if (target >= 0 && parser.getGoto(this.stack[target], term, false) >= 0)\n return (rDepth << 19 /* Action.ReduceDepthShift */) | 65536 /* Action.ReduceFlag */ | term;\n }\n }\n else {\n let found = explore(action, depth + 1);\n if (found != null)\n return found;\n }\n });\n };\n return explore(this.state, 0);\n }\n /**\n @internal\n */\n forceAll() {\n while (!this.p.parser.stateFlag(this.state, 2 /* StateFlag.Accepting */)) {\n if (!this.forceReduce()) {\n this.storeNode(0 /* Term.Err */, this.pos, this.pos, 4, true);\n break;\n }\n }\n return this;\n }\n /**\n Check whether this state has no further actions (assumed to be a direct descendant of the\n top state, since any other states must be able to continue\n somehow). @internal\n */\n get deadEnd() {\n if (this.stack.length != 3)\n return false;\n let { parser } = this.p;\n return parser.data[parser.stateSlot(this.state, 1 /* ParseState.Actions */)] == 65535 /* Seq.End */ &&\n !parser.stateSlot(this.state, 4 /* ParseState.DefaultReduce */);\n }\n /**\n Restart the stack (put it back in its start state). Only safe\n when this.stack.length == 3 (state is directly below the top\n state). @internal\n */\n restart() {\n this.storeNode(0 /* Term.Err */, this.pos, this.pos, 4, true);\n this.state = this.stack[0];\n this.stack.length = 0;\n }\n /**\n @internal\n */\n sameState(other) {\n if (this.state != other.state || this.stack.length != other.stack.length)\n return false;\n for (let i = 0; i < this.stack.length; i += 3)\n if (this.stack[i] != other.stack[i])\n return false;\n return true;\n }\n /**\n Get the parser used by this stack.\n */\n get parser() { return this.p.parser; }\n /**\n Test whether a given dialect (by numeric ID, as exported from\n the terms file) is enabled.\n */\n dialectEnabled(dialectID) { return this.p.parser.dialect.flags[dialectID]; }\n shiftContext(term, start) {\n if (this.curContext)\n this.updateContext(this.curContext.tracker.shift(this.curContext.context, term, this, this.p.stream.reset(start)));\n }\n reduceContext(term, start) {\n if (this.curContext)\n this.updateContext(this.curContext.tracker.reduce(this.curContext.context, term, this, this.p.stream.reset(start)));\n }\n /**\n @internal\n */\n emitContext() {\n let last = this.buffer.length - 1;\n if (last < 0 || this.buffer[last] != -3)\n this.buffer.push(this.curContext.hash, this.pos, this.pos, -3);\n }\n /**\n @internal\n */\n emitLookAhead() {\n let last = this.buffer.length - 1;\n if (last < 0 || this.buffer[last] != -4)\n this.buffer.push(this.lookAhead, this.pos, this.pos, -4);\n }\n updateContext(context) {\n if (context != this.curContext.context) {\n let newCx = new StackContext(this.curContext.tracker, context);\n if (newCx.hash != this.curContext.hash)\n this.emitContext();\n this.curContext = newCx;\n }\n }\n /**\n @internal\n */\n setLookAhead(lookAhead) {\n if (lookAhead > this.lookAhead) {\n this.emitLookAhead();\n this.lookAhead = lookAhead;\n }\n }\n /**\n @internal\n */\n close() {\n if (this.curContext && this.curContext.tracker.strict)\n this.emitContext();\n if (this.lookAhead > 0)\n this.emitLookAhead();\n }\n}\nclass StackContext {\n constructor(tracker, context) {\n this.tracker = tracker;\n this.context = context;\n this.hash = tracker.strict ? tracker.hash(context) : 0;\n }\n}\n// Used to cheaply run some reductions to scan ahead without mutating\n// an entire stack\nclass SimulatedStack {\n constructor(start) {\n this.start = start;\n this.state = start.state;\n this.stack = start.stack;\n this.base = this.stack.length;\n }\n reduce(action) {\n let term = action & 65535 /* Action.ValueMask */, depth = action >> 19 /* Action.ReduceDepthShift */;\n if (depth == 0) {\n if (this.stack == this.start.stack)\n this.stack = this.stack.slice();\n this.stack.push(this.state, 0, 0);\n this.base += 3;\n }\n else {\n this.base -= (depth - 1) * 3;\n }\n let goto = this.start.p.parser.getGoto(this.stack[this.base - 3], term, true);\n this.state = goto;\n }\n}\n// This is given to `Tree.build` to build a buffer, and encapsulates\n// the parent-stack-walking necessary to read the nodes.\nclass StackBufferCursor {\n constructor(stack, pos, index) {\n this.stack = stack;\n this.pos = pos;\n this.index = index;\n this.buffer = stack.buffer;\n if (this.index == 0)\n this.maybeNext();\n }\n static create(stack, pos = stack.bufferBase + stack.buffer.length) {\n return new StackBufferCursor(stack, pos, pos - stack.bufferBase);\n }\n maybeNext() {\n let next = this.stack.parent;\n if (next != null) {\n this.index = this.stack.bufferBase - next.bufferBase;\n this.stack = next;\n this.buffer = next.buffer;\n }\n }\n get id() { return this.buffer[this.index - 4]; }\n get start() { return this.buffer[this.index - 3]; }\n get end() { return this.buffer[this.index - 2]; }\n get size() { return this.buffer[this.index - 1]; }\n next() {\n this.index -= 4;\n this.pos -= 4;\n if (this.index == 0)\n this.maybeNext();\n }\n fork() {\n return new StackBufferCursor(this.stack, this.pos, this.index);\n }\n}\n\n// See lezer-generator/src/encode.ts for comments about the encoding\n// used here\nfunction decodeArray(input, Type = Uint16Array) {\n if (typeof input != \"string\")\n return input;\n let array = null;\n for (let pos = 0, out = 0; pos < input.length;) {\n let value = 0;\n for (;;) {\n let next = input.charCodeAt(pos++), stop = false;\n if (next == 126 /* Encode.BigValCode */) {\n value = 65535 /* Encode.BigVal */;\n break;\n }\n if (next >= 92 /* Encode.Gap2 */)\n next--;\n if (next >= 34 /* Encode.Gap1 */)\n next--;\n let digit = next - 32 /* Encode.Start */;\n if (digit >= 46 /* Encode.Base */) {\n digit -= 46 /* Encode.Base */;\n stop = true;\n }\n value += digit;\n if (stop)\n break;\n value *= 46 /* Encode.Base */;\n }\n if (array)\n array[out++] = value;\n else\n array = new Type(value);\n }\n return array;\n}\n\nclass CachedToken {\n constructor() {\n this.start = -1;\n this.value = -1;\n this.end = -1;\n this.extended = -1;\n this.lookAhead = 0;\n this.mask = 0;\n this.context = 0;\n }\n}\nconst nullToken = new CachedToken;\n/**\n[Tokenizers](#lr.ExternalTokenizer) interact with the input\nthrough this interface. It presents the input as a stream of\ncharacters, tracking lookahead and hiding the complexity of\n[ranges](#common.Parser.parse^ranges) from tokenizer code.\n*/\nclass InputStream {\n /**\n @internal\n */\n constructor(\n /**\n @internal\n */\n input, \n /**\n @internal\n */\n ranges) {\n this.input = input;\n this.ranges = ranges;\n /**\n @internal\n */\n this.chunk = \"\";\n /**\n @internal\n */\n this.chunkOff = 0;\n /**\n Backup chunk\n */\n this.chunk2 = \"\";\n this.chunk2Pos = 0;\n /**\n The character code of the next code unit in the input, or -1\n when the stream is at the end of the input.\n */\n this.next = -1;\n /**\n @internal\n */\n this.token = nullToken;\n this.rangeIndex = 0;\n this.pos = this.chunkPos = ranges[0].from;\n this.range = ranges[0];\n this.end = ranges[ranges.length - 1].to;\n this.readNext();\n }\n /**\n @internal\n */\n resolveOffset(offset, assoc) {\n let range = this.range, index = this.rangeIndex;\n let pos = this.pos + offset;\n while (pos < range.from) {\n if (!index)\n return null;\n let next = this.ranges[--index];\n pos -= range.from - next.to;\n range = next;\n }\n while (assoc < 0 ? pos > range.to : pos >= range.to) {\n if (index == this.ranges.length - 1)\n return null;\n let next = this.ranges[++index];\n pos += next.from - range.to;\n range = next;\n }\n return pos;\n }\n /**\n @internal\n */\n clipPos(pos) {\n if (pos >= this.range.from && pos < this.range.to)\n return pos;\n for (let range of this.ranges)\n if (range.to > pos)\n return Math.max(pos, range.from);\n return this.end;\n }\n /**\n Look at a code unit near the stream position. `.peek(0)` equals\n `.next`, `.peek(-1)` gives you the previous character, and so\n on.\n \n Note that looking around during tokenizing creates dependencies\n on potentially far-away content, which may reduce the\n effectiveness incremental parsing—when looking forward—or even\n cause invalid reparses when looking backward more than 25 code\n units, since the library does not track lookbehind.\n */\n peek(offset) {\n let idx = this.chunkOff + offset, pos, result;\n if (idx >= 0 && idx < this.chunk.length) {\n pos = this.pos + offset;\n result = this.chunk.charCodeAt(idx);\n }\n else {\n let resolved = this.resolveOffset(offset, 1);\n if (resolved == null)\n return -1;\n pos = resolved;\n if (pos >= this.chunk2Pos && pos < this.chunk2Pos + this.chunk2.length) {\n result = this.chunk2.charCodeAt(pos - this.chunk2Pos);\n }\n else {\n let i = this.rangeIndex, range = this.range;\n while (range.to <= pos)\n range = this.ranges[++i];\n this.chunk2 = this.input.chunk(this.chunk2Pos = pos);\n if (pos + this.chunk2.length > range.to)\n this.chunk2 = this.chunk2.slice(0, range.to - pos);\n result = this.chunk2.charCodeAt(0);\n }\n }\n if (pos >= this.token.lookAhead)\n this.token.lookAhead = pos + 1;\n return result;\n }\n /**\n Accept a token. By default, the end of the token is set to the\n current stream position, but you can pass an offset (relative to\n the stream position) to change that.\n */\n acceptToken(token, endOffset = 0) {\n let end = endOffset ? this.resolveOffset(endOffset, -1) : this.pos;\n if (end == null || end < this.token.start)\n throw new RangeError(\"Token end out of bounds\");\n this.token.value = token;\n this.token.end = end;\n }\n /**\n Accept a token ending at a specific given position.\n */\n acceptTokenTo(token, endPos) {\n this.token.value = token;\n this.token.end = endPos;\n }\n getChunk() {\n if (this.pos >= this.chunk2Pos && this.pos < this.chunk2Pos + this.chunk2.length) {\n let { chunk, chunkPos } = this;\n this.chunk = this.chunk2;\n this.chunkPos = this.chunk2Pos;\n this.chunk2 = chunk;\n this.chunk2Pos = chunkPos;\n this.chunkOff = this.pos - this.chunkPos;\n }\n else {\n this.chunk2 = this.chunk;\n this.chunk2Pos = this.chunkPos;\n let nextChunk = this.input.chunk(this.pos);\n let end = this.pos + nextChunk.length;\n this.chunk = end > this.range.to ? nextChunk.slice(0, this.range.to - this.pos) : nextChunk;\n this.chunkPos = this.pos;\n this.chunkOff = 0;\n }\n }\n readNext() {\n if (this.chunkOff >= this.chunk.length) {\n this.getChunk();\n if (this.chunkOff == this.chunk.length)\n return this.next = -1;\n }\n return this.next = this.chunk.charCodeAt(this.chunkOff);\n }\n /**\n Move the stream forward N (defaults to 1) code units. Returns\n the new value of [`next`](#lr.InputStream.next).\n */\n advance(n = 1) {\n this.chunkOff += n;\n while (this.pos + n >= this.range.to) {\n if (this.rangeIndex == this.ranges.length - 1)\n return this.setDone();\n n -= this.range.to - this.pos;\n this.range = this.ranges[++this.rangeIndex];\n this.pos = this.range.from;\n }\n this.pos += n;\n if (this.pos >= this.token.lookAhead)\n this.token.lookAhead = this.pos + 1;\n return this.readNext();\n }\n setDone() {\n this.pos = this.chunkPos = this.end;\n this.range = this.ranges[this.rangeIndex = this.ranges.length - 1];\n this.chunk = \"\";\n return this.next = -1;\n }\n /**\n @internal\n */\n reset(pos, token) {\n if (token) {\n this.token = token;\n token.start = pos;\n token.lookAhead = pos + 1;\n token.value = token.extended = -1;\n }\n else {\n this.token = nullToken;\n }\n if (this.pos != pos) {\n this.pos = pos;\n if (pos == this.end) {\n this.setDone();\n return this;\n }\n while (pos < this.range.from)\n this.range = this.ranges[--this.rangeIndex];\n while (pos >= this.range.to)\n this.range = this.ranges[++this.rangeIndex];\n if (pos >= this.chunkPos && pos < this.chunkPos + this.chunk.length) {\n this.chunkOff = pos - this.chunkPos;\n }\n else {\n this.chunk = \"\";\n this.chunkOff = 0;\n }\n this.readNext();\n }\n return this;\n }\n /**\n @internal\n */\n read(from, to) {\n if (from >= this.chunkPos && to <= this.chunkPos + this.chunk.length)\n return this.chunk.slice(from - this.chunkPos, to - this.chunkPos);\n if (from >= this.chunk2Pos && to <= this.chunk2Pos + this.chunk2.length)\n return this.chunk2.slice(from - this.chunk2Pos, to - this.chunk2Pos);\n if (from >= this.range.from && to <= this.range.to)\n return this.input.read(from, to);\n let result = \"\";\n for (let r of this.ranges) {\n if (r.from >= to)\n break;\n if (r.to > from)\n result += this.input.read(Math.max(r.from, from), Math.min(r.to, to));\n }\n return result;\n }\n}\n/**\n@internal\n*/\nclass TokenGroup {\n constructor(data, id) {\n this.data = data;\n this.id = id;\n }\n token(input, stack) {\n let { parser } = stack.p;\n readToken(this.data, input, stack, this.id, parser.data, parser.tokenPrecTable);\n }\n}\nTokenGroup.prototype.contextual = TokenGroup.prototype.fallback = TokenGroup.prototype.extend = false;\n/**\n@hide\n*/\nclass LocalTokenGroup {\n constructor(data, precTable, elseToken) {\n this.precTable = precTable;\n this.elseToken = elseToken;\n this.data = typeof data == \"string\" ? decodeArray(data) : data;\n }\n token(input, stack) {\n let start = input.pos, skipped = 0;\n for (;;) {\n let atEof = input.next < 0, nextPos = input.resolveOffset(1, 1);\n readToken(this.data, input, stack, 0, this.data, this.precTable);\n if (input.token.value > -1)\n break;\n if (this.elseToken == null)\n return;\n if (!atEof)\n skipped++;\n if (nextPos == null)\n break;\n input.reset(nextPos, input.token);\n }\n if (skipped) {\n input.reset(start, input.token);\n input.acceptToken(this.elseToken, skipped);\n }\n }\n}\nLocalTokenGroup.prototype.contextual = TokenGroup.prototype.fallback = TokenGroup.prototype.extend = false;\n/**\n`@external tokens` declarations in the grammar should resolve to\nan instance of this class.\n*/\nclass ExternalTokenizer {\n /**\n Create a tokenizer. The first argument is the function that,\n given an input stream, scans for the types of tokens it\n recognizes at the stream's position, and calls\n [`acceptToken`](#lr.InputStream.acceptToken) when it finds\n one.\n */\n constructor(\n /**\n @internal\n */\n token, options = {}) {\n this.token = token;\n this.contextual = !!options.contextual;\n this.fallback = !!options.fallback;\n this.extend = !!options.extend;\n }\n}\n// Tokenizer data is stored a big uint16 array containing, for each\n// state:\n//\n// - A group bitmask, indicating what token groups are reachable from\n// this state, so that paths that can only lead to tokens not in\n// any of the current groups can be cut off early.\n//\n// - The position of the end of the state's sequence of accepting\n// tokens\n//\n// - The number of outgoing edges for the state\n//\n// - The accepting tokens, as (token id, group mask) pairs\n//\n// - The outgoing edges, as (start character, end character, state\n// index) triples, with end character being exclusive\n//\n// This function interprets that data, running through a stream as\n// long as new states with the a matching group mask can be reached,\n// and updating `input.token` when it matches a token.\nfunction readToken(data, input, stack, group, precTable, precOffset) {\n let state = 0, groupMask = 1 << group, { dialect } = stack.p.parser;\n scan: for (;;) {\n if ((groupMask & data[state]) == 0)\n break;\n let accEnd = data[state + 1];\n // Check whether this state can lead to a token in the current group\n // Accept tokens in this state, possibly overwriting\n // lower-precedence / shorter tokens\n for (let i = state + 3; i < accEnd; i += 2)\n if ((data[i + 1] & groupMask) > 0) {\n let term = data[i];\n if (dialect.allows(term) &&\n (input.token.value == -1 || input.token.value == term ||\n overrides(term, input.token.value, precTable, precOffset))) {\n input.acceptToken(term);\n break;\n }\n }\n let next = input.next, low = 0, high = data[state + 2];\n // Special case for EOF\n if (input.next < 0 && high > low && data[accEnd + high * 3 - 3] == 65535 /* Seq.End */) {\n state = data[accEnd + high * 3 - 1];\n continue scan;\n }\n // Do a binary search on the state's edges\n for (; low < high;) {\n let mid = (low + high) >> 1;\n let index = accEnd + mid + (mid << 1);\n let from = data[index], to = data[index + 1] || 0x10000;\n if (next < from)\n high = mid;\n else if (next >= to)\n low = mid + 1;\n else {\n state = data[index + 2];\n input.advance();\n continue scan;\n }\n }\n break;\n }\n}\nfunction findOffset(data, start, term) {\n for (let i = start, next; (next = data[i]) != 65535 /* Seq.End */; i++)\n if (next == term)\n return i - start;\n return -1;\n}\nfunction overrides(token, prev, tableData, tableOffset) {\n let iPrev = findOffset(tableData, tableOffset, prev);\n return iPrev < 0 || findOffset(tableData, tableOffset, token) < iPrev;\n}\n\n// Environment variable used to control console output\nconst verbose = typeof process != \"undefined\" && process.env && /\\bparse\\b/.test(process.env.LOG);\nlet stackIDs = null;\nfunction cutAt(tree, pos, side) {\n let cursor = tree.cursor(IterMode.IncludeAnonymous);\n cursor.moveTo(pos);\n for (;;) {\n if (!(side < 0 ? cursor.childBefore(pos) : cursor.childAfter(pos)))\n for (;;) {\n if ((side < 0 ? cursor.to < pos : cursor.from > pos) && !cursor.type.isError)\n return side < 0 ? Math.max(0, Math.min(cursor.to - 1, pos - 25 /* Lookahead.Margin */))\n : Math.min(tree.length, Math.max(cursor.from + 1, pos + 25 /* Lookahead.Margin */));\n if (side < 0 ? cursor.prevSibling() : cursor.nextSibling())\n break;\n if (!cursor.parent())\n return side < 0 ? 0 : tree.length;\n }\n }\n}\nclass FragmentCursor {\n constructor(fragments, nodeSet) {\n this.fragments = fragments;\n this.nodeSet = nodeSet;\n this.i = 0;\n this.fragment = null;\n this.safeFrom = -1;\n this.safeTo = -1;\n this.trees = [];\n this.start = [];\n this.index = [];\n this.nextFragment();\n }\n nextFragment() {\n let fr = this.fragment = this.i == this.fragments.length ? null : this.fragments[this.i++];\n if (fr) {\n this.safeFrom = fr.openStart ? cutAt(fr.tree, fr.from + fr.offset, 1) - fr.offset : fr.from;\n this.safeTo = fr.openEnd ? cutAt(fr.tree, fr.to + fr.offset, -1) - fr.offset : fr.to;\n while (this.trees.length) {\n this.trees.pop();\n this.start.pop();\n this.index.pop();\n }\n this.trees.push(fr.tree);\n this.start.push(-fr.offset);\n this.index.push(0);\n this.nextStart = this.safeFrom;\n }\n else {\n this.nextStart = 1e9;\n }\n }\n // `pos` must be >= any previously given `pos` for this cursor\n nodeAt(pos) {\n if (pos < this.nextStart)\n return null;\n while (this.fragment && this.safeTo <= pos)\n this.nextFragment();\n if (!this.fragment)\n return null;\n for (;;) {\n let last = this.trees.length - 1;\n if (last < 0) { // End of tree\n this.nextFragment();\n return null;\n }\n let top = this.trees[last], index = this.index[last];\n if (index == top.children.length) {\n this.trees.pop();\n this.start.pop();\n this.index.pop();\n continue;\n }\n let next = top.children[index];\n let start = this.start[last] + top.positions[index];\n if (start > pos) {\n this.nextStart = start;\n return null;\n }\n if (next instanceof Tree) {\n if (start == pos) {\n if (start < this.safeFrom)\n return null;\n let end = start + next.length;\n if (end <= this.safeTo) {\n let lookAhead = next.prop(NodeProp.lookAhead);\n if (!lookAhead || end + lookAhead < this.fragment.to)\n return next;\n }\n }\n this.index[last]++;\n if (start + next.length >= Math.max(this.safeFrom, pos)) { // Enter this node\n this.trees.push(next);\n this.start.push(start);\n this.index.push(0);\n }\n }\n else {\n this.index[last]++;\n this.nextStart = start + next.length;\n }\n }\n }\n}\nclass TokenCache {\n constructor(parser, stream) {\n this.stream = stream;\n this.tokens = [];\n this.mainToken = null;\n this.actions = [];\n this.tokens = parser.tokenizers.map(_ => new CachedToken);\n }\n getActions(stack) {\n let actionIndex = 0;\n let main = null;\n let { parser } = stack.p, { tokenizers } = parser;\n let mask = parser.stateSlot(stack.state, 3 /* ParseState.TokenizerMask */);\n let context = stack.curContext ? stack.curContext.hash : 0;\n let lookAhead = 0;\n for (let i = 0; i < tokenizers.length; i++) {\n if (((1 << i) & mask) == 0)\n continue;\n let tokenizer = tokenizers[i], token = this.tokens[i];\n if (main && !tokenizer.fallback)\n continue;\n if (tokenizer.contextual || token.start != stack.pos || token.mask != mask || token.context != context) {\n this.updateCachedToken(token, tokenizer, stack);\n token.mask = mask;\n token.context = context;\n }\n if (token.lookAhead > token.end + 25 /* Lookahead.Margin */)\n lookAhead = Math.max(token.lookAhead, lookAhead);\n if (token.value != 0 /* Term.Err */) {\n let startIndex = actionIndex;\n if (token.extended > -1)\n actionIndex = this.addActions(stack, token.extended, token.end, actionIndex);\n actionIndex = this.addActions(stack, token.value, token.end, actionIndex);\n if (!tokenizer.extend) {\n main = token;\n if (actionIndex > startIndex)\n break;\n }\n }\n }\n while (this.actions.length > actionIndex)\n this.actions.pop();\n if (lookAhead)\n stack.setLookAhead(lookAhead);\n if (!main && stack.pos == this.stream.end) {\n main = new CachedToken;\n main.value = stack.p.parser.eofTerm;\n main.start = main.end = stack.pos;\n actionIndex = this.addActions(stack, main.value, main.end, actionIndex);\n }\n this.mainToken = main;\n return this.actions;\n }\n getMainToken(stack) {\n if (this.mainToken)\n return this.mainToken;\n let main = new CachedToken, { pos, p } = stack;\n main.start = pos;\n main.end = Math.min(pos + 1, p.stream.end);\n main.value = pos == p.stream.end ? p.parser.eofTerm : 0 /* Term.Err */;\n return main;\n }\n updateCachedToken(token, tokenizer, stack) {\n let start = this.stream.clipPos(stack.pos);\n tokenizer.token(this.stream.reset(start, token), stack);\n if (token.value > -1) {\n let { parser } = stack.p;\n for (let i = 0; i < parser.specialized.length; i++)\n if (parser.specialized[i] == token.value) {\n let result = parser.specializers[i](this.stream.read(token.start, token.end), stack);\n if (result >= 0 && stack.p.parser.dialect.allows(result >> 1)) {\n if ((result & 1) == 0 /* Specialize.Specialize */)\n token.value = result >> 1;\n else\n token.extended = result >> 1;\n break;\n }\n }\n }\n else {\n token.value = 0 /* Term.Err */;\n token.end = this.stream.clipPos(start + 1);\n }\n }\n putAction(action, token, end, index) {\n // Don't add duplicate actions\n for (let i = 0; i < index; i += 3)\n if (this.actions[i] == action)\n return index;\n this.actions[index++] = action;\n this.actions[index++] = token;\n this.actions[index++] = end;\n return index;\n }\n addActions(stack, token, end, index) {\n let { state } = stack, { parser } = stack.p, { data } = parser;\n for (let set = 0; set < 2; set++) {\n for (let i = parser.stateSlot(state, set ? 2 /* ParseState.Skip */ : 1 /* ParseState.Actions */);; i += 3) {\n if (data[i] == 65535 /* Seq.End */) {\n if (data[i + 1] == 1 /* Seq.Next */) {\n i = pair(data, i + 2);\n }\n else {\n if (index == 0 && data[i + 1] == 2 /* Seq.Other */)\n index = this.putAction(pair(data, i + 2), token, end, index);\n break;\n }\n }\n if (data[i] == token)\n index = this.putAction(pair(data, i + 1), token, end, index);\n }\n }\n return index;\n }\n}\nclass Parse {\n constructor(parser, input, fragments, ranges) {\n this.parser = parser;\n this.input = input;\n this.ranges = ranges;\n this.recovering = 0;\n this.nextStackID = 0x2654; // ♔, ♕, ♖, ♗, ♘, ♙, ♠, ♡, ♢, ♣, ♤, ♥, ♦, ♧\n this.minStackPos = 0;\n this.reused = [];\n this.stoppedAt = null;\n this.lastBigReductionStart = -1;\n this.lastBigReductionSize = 0;\n this.bigReductionCount = 0;\n this.stream = new InputStream(input, ranges);\n this.tokens = new TokenCache(parser, this.stream);\n this.topTerm = parser.top[1];\n let { from } = ranges[0];\n this.stacks = [Stack.start(this, parser.top[0], from)];\n this.fragments = fragments.length && this.stream.end - from > parser.bufferLength * 4\n ? new FragmentCursor(fragments, parser.nodeSet) : null;\n }\n get parsedPos() {\n return this.minStackPos;\n }\n // Move the parser forward. This will process all parse stacks at\n // `this.pos` and try to advance them to a further position. If no\n // stack for such a position is found, it'll start error-recovery.\n //\n // When the parse is finished, this will return a syntax tree. When\n // not, it returns `null`.\n advance() {\n let stacks = this.stacks, pos = this.minStackPos;\n // This will hold stacks beyond `pos`.\n let newStacks = this.stacks = [];\n let stopped, stoppedTokens;\n // If a large amount of reductions happened with the same start\n // position, force the stack out of that production in order to\n // avoid creating a tree too deep to recurse through.\n // (This is an ugly kludge, because unfortunately there is no\n // straightforward, cheap way to check for this happening, due to\n // the history of reductions only being available in an\n // expensive-to-access format in the stack buffers.)\n if (this.bigReductionCount > 300 /* Rec.MaxLeftAssociativeReductionCount */ && stacks.length == 1) {\n let [s] = stacks;\n while (s.forceReduce() && s.stack.length && s.stack[s.stack.length - 2] >= this.lastBigReductionStart) { }\n this.bigReductionCount = this.lastBigReductionSize = 0;\n }\n // Keep advancing any stacks at `pos` until they either move\n // forward or can't be advanced. Gather stacks that can't be\n // advanced further in `stopped`.\n for (let i = 0; i < stacks.length; i++) {\n let stack = stacks[i];\n for (;;) {\n this.tokens.mainToken = null;\n if (stack.pos > pos) {\n newStacks.push(stack);\n }\n else if (this.advanceStack(stack, newStacks, stacks)) {\n continue;\n }\n else {\n if (!stopped) {\n stopped = [];\n stoppedTokens = [];\n }\n stopped.push(stack);\n let tok = this.tokens.getMainToken(stack);\n stoppedTokens.push(tok.value, tok.end);\n }\n break;\n }\n }\n if (!newStacks.length) {\n let finished = stopped && findFinished(stopped);\n if (finished) {\n if (verbose)\n console.log(\"Finish with \" + this.stackID(finished));\n return this.stackToTree(finished);\n }\n if (this.parser.strict) {\n if (verbose && stopped)\n console.log(\"Stuck with token \" + (this.tokens.mainToken ? this.parser.getName(this.tokens.mainToken.value) : \"none\"));\n throw new SyntaxError(\"No parse at \" + pos);\n }\n if (!this.recovering)\n this.recovering = 5 /* Rec.Distance */;\n }\n if (this.recovering && stopped) {\n let finished = this.stoppedAt != null && stopped[0].pos > this.stoppedAt ? stopped[0]\n : this.runRecovery(stopped, stoppedTokens, newStacks);\n if (finished) {\n if (verbose)\n console.log(\"Force-finish \" + this.stackID(finished));\n return this.stackToTree(finished.forceAll());\n }\n }\n if (this.recovering) {\n let maxRemaining = this.recovering == 1 ? 1 : this.recovering * 3 /* Rec.MaxRemainingPerStep */;\n if (newStacks.length > maxRemaining) {\n newStacks.sort((a, b) => b.score - a.score);\n while (newStacks.length > maxRemaining)\n newStacks.pop();\n }\n if (newStacks.some(s => s.reducePos > pos))\n this.recovering--;\n }\n else if (newStacks.length > 1) {\n // Prune stacks that are in the same state, or that have been\n // running without splitting for a while, to avoid getting stuck\n // with multiple successful stacks running endlessly on.\n outer: for (let i = 0; i < newStacks.length - 1; i++) {\n let stack = newStacks[i];\n for (let j = i + 1; j < newStacks.length; j++) {\n let other = newStacks[j];\n if (stack.sameState(other) ||\n stack.buffer.length > 500 /* Rec.MinBufferLengthPrune */ && other.buffer.length > 500 /* Rec.MinBufferLengthPrune */) {\n if (((stack.score - other.score) || (stack.buffer.length - other.buffer.length)) > 0) {\n newStacks.splice(j--, 1);\n }\n else {\n newStacks.splice(i--, 1);\n continue outer;\n }\n }\n }\n }\n if (newStacks.length > 12 /* Rec.MaxStackCount */)\n newStacks.splice(12 /* Rec.MaxStackCount */, newStacks.length - 12 /* Rec.MaxStackCount */);\n }\n this.minStackPos = newStacks[0].pos;\n for (let i = 1; i < newStacks.length; i++)\n if (newStacks[i].pos < this.minStackPos)\n this.minStackPos = newStacks[i].pos;\n return null;\n }\n stopAt(pos) {\n if (this.stoppedAt != null && this.stoppedAt < pos)\n throw new RangeError(\"Can't move stoppedAt forward\");\n this.stoppedAt = pos;\n }\n // Returns an updated version of the given stack, or null if the\n // stack can't advance normally. When `split` and `stacks` are\n // given, stacks split off by ambiguous operations will be pushed to\n // `split`, or added to `stacks` if they move `pos` forward.\n advanceStack(stack, stacks, split) {\n let start = stack.pos, { parser } = this;\n let base = verbose ? this.stackID(stack) + \" -> \" : \"\";\n if (this.stoppedAt != null && start > this.stoppedAt)\n return stack.forceReduce() ? stack : null;\n if (this.fragments) {\n let strictCx = stack.curContext && stack.curContext.tracker.strict, cxHash = strictCx ? stack.curContext.hash : 0;\n for (let cached = this.fragments.nodeAt(start); cached;) {\n let match = this.parser.nodeSet.types[cached.type.id] == cached.type ? parser.getGoto(stack.state, cached.type.id) : -1;\n if (match > -1 && cached.length && (!strictCx || (cached.prop(NodeProp.contextHash) || 0) == cxHash)) {\n stack.useNode(cached, match);\n if (verbose)\n console.log(base + this.stackID(stack) + ` (via reuse of ${parser.getName(cached.type.id)})`);\n return true;\n }\n if (!(cached instanceof Tree) || cached.children.length == 0 || cached.positions[0] > 0)\n break;\n let inner = cached.children[0];\n if (inner instanceof Tree && cached.positions[0] == 0)\n cached = inner;\n else\n break;\n }\n }\n let defaultReduce = parser.stateSlot(stack.state, 4 /* ParseState.DefaultReduce */);\n if (defaultReduce > 0) {\n stack.reduce(defaultReduce);\n if (verbose)\n console.log(base + this.stackID(stack) + ` (via always-reduce ${parser.getName(defaultReduce & 65535 /* Action.ValueMask */)})`);\n return true;\n }\n if (stack.stack.length >= 8400 /* Rec.CutDepth */) {\n while (stack.stack.length > 6000 /* Rec.CutTo */ && stack.forceReduce()) { }\n }\n let actions = this.tokens.getActions(stack);\n for (let i = 0; i < actions.length;) {\n let action = actions[i++], term = actions[i++], end = actions[i++];\n let last = i == actions.length || !split;\n let localStack = last ? stack : stack.split();\n let main = this.tokens.mainToken;\n localStack.apply(action, term, main ? main.start : localStack.pos, end);\n if (verbose)\n console.log(base + this.stackID(localStack) + ` (via ${(action & 65536 /* Action.ReduceFlag */) == 0 ? \"shift\"\n : `reduce of ${parser.getName(action & 65535 /* Action.ValueMask */)}`} for ${parser.getName(term)} @ ${start}${localStack == stack ? \"\" : \", split\"})`);\n if (last)\n return true;\n else if (localStack.pos > start)\n stacks.push(localStack);\n else\n split.push(localStack);\n }\n return false;\n }\n // Advance a given stack forward as far as it will go. Returns the\n // (possibly updated) stack if it got stuck, or null if it moved\n // forward and was given to `pushStackDedup`.\n advanceFully(stack, newStacks) {\n let pos = stack.pos;\n for (;;) {\n if (!this.advanceStack(stack, null, null))\n return false;\n if (stack.pos > pos) {\n pushStackDedup(stack, newStacks);\n return true;\n }\n }\n }\n runRecovery(stacks, tokens, newStacks) {\n let finished = null, restarted = false;\n for (let i = 0; i < stacks.length; i++) {\n let stack = stacks[i], token = tokens[i << 1], tokenEnd = tokens[(i << 1) + 1];\n let base = verbose ? this.stackID(stack) + \" -> \" : \"\";\n if (stack.deadEnd) {\n if (restarted)\n continue;\n restarted = true;\n stack.restart();\n if (verbose)\n console.log(base + this.stackID(stack) + \" (restarted)\");\n let done = this.advanceFully(stack, newStacks);\n if (done)\n continue;\n }\n let force = stack.split(), forceBase = base;\n for (let j = 0; force.forceReduce() && j < 10 /* Rec.ForceReduceLimit */; j++) {\n if (verbose)\n console.log(forceBase + this.stackID(force) + \" (via force-reduce)\");\n let done = this.advanceFully(force, newStacks);\n if (done)\n break;\n if (verbose)\n forceBase = this.stackID(force) + \" -> \";\n }\n for (let insert of stack.recoverByInsert(token)) {\n if (verbose)\n console.log(base + this.stackID(insert) + \" (via recover-insert)\");\n this.advanceFully(insert, newStacks);\n }\n if (this.stream.end > stack.pos) {\n if (tokenEnd == stack.pos) {\n tokenEnd++;\n token = 0 /* Term.Err */;\n }\n stack.recoverByDelete(token, tokenEnd);\n if (verbose)\n console.log(base + this.stackID(stack) + ` (via recover-delete ${this.parser.getName(token)})`);\n pushStackDedup(stack, newStacks);\n }\n else if (!finished || finished.score < stack.score) {\n finished = stack;\n }\n }\n return finished;\n }\n // Convert the stack's buffer to a syntax tree.\n stackToTree(stack) {\n stack.close();\n return Tree.build({ buffer: StackBufferCursor.create(stack),\n nodeSet: this.parser.nodeSet,\n topID: this.topTerm,\n maxBufferLength: this.parser.bufferLength,\n reused: this.reused,\n start: this.ranges[0].from,\n length: stack.pos - this.ranges[0].from,\n minRepeatType: this.parser.minRepeatTerm });\n }\n stackID(stack) {\n let id = (stackIDs || (stackIDs = new WeakMap)).get(stack);\n if (!id)\n stackIDs.set(stack, id = String.fromCodePoint(this.nextStackID++));\n return id + stack;\n }\n}\nfunction pushStackDedup(stack, newStacks) {\n for (let i = 0; i < newStacks.length; i++) {\n let other = newStacks[i];\n if (other.pos == stack.pos && other.sameState(stack)) {\n if (newStacks[i].score < stack.score)\n newStacks[i] = stack;\n return;\n }\n }\n newStacks.push(stack);\n}\nclass Dialect {\n constructor(source, flags, disabled) {\n this.source = source;\n this.flags = flags;\n this.disabled = disabled;\n }\n allows(term) { return !this.disabled || this.disabled[term] == 0; }\n}\nconst id = x => x;\n/**\nContext trackers are used to track stateful context (such as\nindentation in the Python grammar, or parent elements in the XML\ngrammar) needed by external tokenizers. You declare them in a\ngrammar file as `@context exportName from \"module\"`.\n\nContext values should be immutable, and can be updated (replaced)\non shift or reduce actions.\n\nThe export used in a `@context` declaration should be of this\ntype.\n*/\nclass ContextTracker {\n /**\n Define a context tracker.\n */\n constructor(spec) {\n this.start = spec.start;\n this.shift = spec.shift || id;\n this.reduce = spec.reduce || id;\n this.reuse = spec.reuse || id;\n this.hash = spec.hash || (() => 0);\n this.strict = spec.strict !== false;\n }\n}\n/**\nHolds the parse tables for a given grammar, as generated by\n`lezer-generator`, and provides [methods](#common.Parser) to parse\ncontent with.\n*/\nclass LRParser extends Parser {\n /**\n @internal\n */\n constructor(spec) {\n super();\n /**\n @internal\n */\n this.wrappers = [];\n if (spec.version != 14 /* File.Version */)\n throw new RangeError(`Parser version (${spec.version}) doesn't match runtime version (${14 /* File.Version */})`);\n let nodeNames = spec.nodeNames.split(\" \");\n this.minRepeatTerm = nodeNames.length;\n for (let i = 0; i < spec.repeatNodeCount; i++)\n nodeNames.push(\"\");\n let topTerms = Object.keys(spec.topRules).map(r => spec.topRules[r][1]);\n let nodeProps = [];\n for (let i = 0; i < nodeNames.length; i++)\n nodeProps.push([]);\n function setProp(nodeID, prop, value) {\n nodeProps[nodeID].push([prop, prop.deserialize(String(value))]);\n }\n if (spec.nodeProps)\n for (let propSpec of spec.nodeProps) {\n let prop = propSpec[0];\n if (typeof prop == \"string\")\n prop = NodeProp[prop];\n for (let i = 1; i < propSpec.length;) {\n let next = propSpec[i++];\n if (next >= 0) {\n setProp(next, prop, propSpec[i++]);\n }\n else {\n let value = propSpec[i + -next];\n for (let j = -next; j > 0; j--)\n setProp(propSpec[i++], prop, value);\n i++;\n }\n }\n }\n this.nodeSet = new NodeSet(nodeNames.map((name, i) => NodeType.define({\n name: i >= this.minRepeatTerm ? undefined : name,\n id: i,\n props: nodeProps[i],\n top: topTerms.indexOf(i) > -1,\n error: i == 0,\n skipped: spec.skippedNodes && spec.skippedNodes.indexOf(i) > -1\n })));\n if (spec.propSources)\n this.nodeSet = this.nodeSet.extend(...spec.propSources);\n this.strict = false;\n this.bufferLength = DefaultBufferLength;\n let tokenArray = decodeArray(spec.tokenData);\n this.context = spec.context;\n this.specializerSpecs = spec.specialized || [];\n this.specialized = new Uint16Array(this.specializerSpecs.length);\n for (let i = 0; i < this.specializerSpecs.length; i++)\n this.specialized[i] = this.specializerSpecs[i].term;\n this.specializers = this.specializerSpecs.map(getSpecializer);\n this.states = decodeArray(spec.states, Uint32Array);\n this.data = decodeArray(spec.stateData);\n this.goto = decodeArray(spec.goto);\n this.maxTerm = spec.maxTerm;\n this.tokenizers = spec.tokenizers.map(value => typeof value == \"number\" ? new TokenGroup(tokenArray, value) : value);\n this.topRules = spec.topRules;\n this.dialects = spec.dialects || {};\n this.dynamicPrecedences = spec.dynamicPrecedences || null;\n this.tokenPrecTable = spec.tokenPrec;\n this.termNames = spec.termNames || null;\n this.maxNode = this.nodeSet.types.length - 1;\n this.dialect = this.parseDialect();\n this.top = this.topRules[Object.keys(this.topRules)[0]];\n }\n createParse(input, fragments, ranges) {\n let parse = new Parse(this, input, fragments, ranges);\n for (let w of this.wrappers)\n parse = w(parse, input, fragments, ranges);\n return parse;\n }\n /**\n Get a goto table entry @internal\n */\n getGoto(state, term, loose = false) {\n let table = this.goto;\n if (term >= table[0])\n return -1;\n for (let pos = table[term + 1];;) {\n let groupTag = table[pos++], last = groupTag & 1;\n let target = table[pos++];\n if (last && loose)\n return target;\n for (let end = pos + (groupTag >> 1); pos < end; pos++)\n if (table[pos] == state)\n return target;\n if (last)\n return -1;\n }\n }\n /**\n Check if this state has an action for a given terminal @internal\n */\n hasAction(state, terminal) {\n let data = this.data;\n for (let set = 0; set < 2; set++) {\n for (let i = this.stateSlot(state, set ? 2 /* ParseState.Skip */ : 1 /* ParseState.Actions */), next;; i += 3) {\n if ((next = data[i]) == 65535 /* Seq.End */) {\n if (data[i + 1] == 1 /* Seq.Next */)\n next = data[i = pair(data, i + 2)];\n else if (data[i + 1] == 2 /* Seq.Other */)\n return pair(data, i + 2);\n else\n break;\n }\n if (next == terminal || next == 0 /* Term.Err */)\n return pair(data, i + 1);\n }\n }\n return 0;\n }\n /**\n @internal\n */\n stateSlot(state, slot) {\n return this.states[(state * 6 /* ParseState.Size */) + slot];\n }\n /**\n @internal\n */\n stateFlag(state, flag) {\n return (this.stateSlot(state, 0 /* ParseState.Flags */) & flag) > 0;\n }\n /**\n @internal\n */\n validAction(state, action) {\n return !!this.allActions(state, a => a == action ? true : null);\n }\n /**\n @internal\n */\n allActions(state, action) {\n let deflt = this.stateSlot(state, 4 /* ParseState.DefaultReduce */);\n let result = deflt ? action(deflt) : undefined;\n for (let i = this.stateSlot(state, 1 /* ParseState.Actions */); result == null; i += 3) {\n if (this.data[i] == 65535 /* Seq.End */) {\n if (this.data[i + 1] == 1 /* Seq.Next */)\n i = pair(this.data, i + 2);\n else\n break;\n }\n result = action(pair(this.data, i + 1));\n }\n return result;\n }\n /**\n Get the states that can follow this one through shift actions or\n goto jumps. @internal\n */\n nextStates(state) {\n let result = [];\n for (let i = this.stateSlot(state, 1 /* ParseState.Actions */);; i += 3) {\n if (this.data[i] == 65535 /* Seq.End */) {\n if (this.data[i + 1] == 1 /* Seq.Next */)\n i = pair(this.data, i + 2);\n else\n break;\n }\n if ((this.data[i + 2] & (65536 /* Action.ReduceFlag */ >> 16)) == 0) {\n let value = this.data[i + 1];\n if (!result.some((v, i) => (i & 1) && v == value))\n result.push(this.data[i], value);\n }\n }\n return result;\n }\n /**\n Configure the parser. Returns a new parser instance that has the\n given settings modified. Settings not provided in `config` are\n kept from the original parser.\n */\n configure(config) {\n // Hideous reflection-based kludge to make it easy to create a\n // slightly modified copy of a parser.\n let copy = Object.assign(Object.create(LRParser.prototype), this);\n if (config.props)\n copy.nodeSet = this.nodeSet.extend(...config.props);\n if (config.top) {\n let info = this.topRules[config.top];\n if (!info)\n throw new RangeError(`Invalid top rule name ${config.top}`);\n copy.top = info;\n }\n if (config.tokenizers)\n copy.tokenizers = this.tokenizers.map(t => {\n let found = config.tokenizers.find(r => r.from == t);\n return found ? found.to : t;\n });\n if (config.specializers) {\n copy.specializers = this.specializers.slice();\n copy.specializerSpecs = this.specializerSpecs.map((s, i) => {\n let found = config.specializers.find(r => r.from == s.external);\n if (!found)\n return s;\n let spec = Object.assign(Object.assign({}, s), { external: found.to });\n copy.specializers[i] = getSpecializer(spec);\n return spec;\n });\n }\n if (config.contextTracker)\n copy.context = config.contextTracker;\n if (config.dialect)\n copy.dialect = this.parseDialect(config.dialect);\n if (config.strict != null)\n copy.strict = config.strict;\n if (config.wrap)\n copy.wrappers = copy.wrappers.concat(config.wrap);\n if (config.bufferLength != null)\n copy.bufferLength = config.bufferLength;\n return copy;\n }\n /**\n Tells you whether any [parse wrappers](#lr.ParserConfig.wrap)\n are registered for this parser.\n */\n hasWrappers() {\n return this.wrappers.length > 0;\n }\n /**\n Returns the name associated with a given term. This will only\n work for all terms when the parser was generated with the\n `--names` option. By default, only the names of tagged terms are\n stored.\n */\n getName(term) {\n return this.termNames ? this.termNames[term] : String(term <= this.maxNode && this.nodeSet.types[term].name || term);\n }\n /**\n The eof term id is always allocated directly after the node\n types. @internal\n */\n get eofTerm() { return this.maxNode + 1; }\n /**\n The type of top node produced by the parser.\n */\n get topNode() { return this.nodeSet.types[this.top[1]]; }\n /**\n @internal\n */\n dynamicPrecedence(term) {\n let prec = this.dynamicPrecedences;\n return prec == null ? 0 : prec[term] || 0;\n }\n /**\n @internal\n */\n parseDialect(dialect) {\n let values = Object.keys(this.dialects), flags = values.map(() => false);\n if (dialect)\n for (let part of dialect.split(\" \")) {\n let id = values.indexOf(part);\n if (id >= 0)\n flags[id] = true;\n }\n let disabled = null;\n for (let i = 0; i < values.length; i++)\n if (!flags[i]) {\n for (let j = this.dialects[values[i]], id; (id = this.data[j++]) != 65535 /* Seq.End */;)\n (disabled || (disabled = new Uint8Array(this.maxTerm + 1)))[id] = 1;\n }\n return new Dialect(dialect, flags, disabled);\n }\n /**\n Used by the output of the parser generator. Not available to\n user code. @hide\n */\n static deserialize(spec) {\n return new LRParser(spec);\n }\n}\nfunction pair(data, off) { return data[off] | (data[off + 1] << 16); }\nfunction findFinished(stacks) {\n let best = null;\n for (let stack of stacks) {\n let stopped = stack.p.stoppedAt;\n if ((stack.pos == stack.p.stream.end || stopped != null && stack.pos > stopped) &&\n stack.p.parser.stateFlag(stack.state, 2 /* StateFlag.Accepting */) &&\n (!best || best.score < stack.score))\n best = stack;\n }\n return best;\n}\nfunction getSpecializer(spec) {\n if (spec.external) {\n let mask = spec.extend ? 1 /* Specialize.Extend */ : 0 /* Specialize.Specialize */;\n return (value, stack) => (spec.external(value, stack) << 1) | mask;\n }\n return spec.get;\n}\n\nexport { ContextTracker, ExternalTokenizer, InputStream, LRParser, LocalTokenGroup, Stack };\n","import { LRParser } from '@lezer/lr';\n\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst Json$1 = 1,\n Logfmt$1 = 2,\n Unpack$1 = 3,\n Pattern$1 = 4,\n Regexp$1 = 5,\n Unwrap$1 = 6,\n LabelFormat$1 = 7,\n LineFormat$1 = 8,\n LabelReplace$1 = 9,\n Vector$1 = 10,\n Offset$1 = 11,\n Bool$1 = 12,\n On$1 = 13,\n Ignoring$1 = 14,\n GroupLeft$1 = 15,\n GroupRight$1 = 16,\n Decolorize$1 = 17,\n Drop$1 = 18,\n Keep$1 = 19,\n By$1 = 20,\n Without$1 = 21,\n And$1 = 22,\n Or$1 = 23,\n Unless$1 = 24,\n Sum$1 = 25,\n Avg$1 = 26,\n Count$1 = 27,\n Max$1 = 28,\n Min$1 = 29,\n Stddev$1 = 30,\n Stdvar$1 = 31,\n Bottomk$1 = 32,\n Topk$1 = 33,\n Sort$1 = 34,\n Sort_Desc$1 = 35;\n\nconst keywordTokens = {\n json: Json$1,\n logfmt: Logfmt$1,\n unpack: Unpack$1,\n pattern: Pattern$1,\n regexp: Regexp$1,\n label_format: LabelFormat$1,\n line_format: LineFormat$1,\n label_replace: LabelReplace$1,\n vector: Vector$1,\n offset: Offset$1,\n bool: Bool$1,\n on: On$1,\n ignoring: Ignoring$1,\n group_left: GroupLeft$1,\n group_right: GroupRight$1,\n unwrap: Unwrap$1,\n decolorize: Decolorize$1,\n drop: Drop$1,\n keep: Keep$1,\n};\n\nconst specializeIdentifier = (value) => {\n return keywordTokens[value.toLowerCase()] || -1;\n};\n\nconst contextualKeywordTokens = {\n by: By$1,\n without: Without$1,\n and: And$1,\n or: Or$1,\n unless: Unless$1,\n sum: Sum$1,\n avg: Avg$1,\n count: Count$1,\n max: Max$1,\n min: Min$1,\n stddev: Stddev$1,\n stdvar: Stdvar$1,\n bottomk: Bottomk$1,\n topk: Topk$1,\n sort: Sort$1,\n sort_desc: Sort_Desc$1,\n};\n\nconst extendIdentifier = (value) => {\n return contextualKeywordTokens[value.toLowerCase()] || -1;\n};\n\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst spec_Identifier = {__proto__:null,ip:295, count_over_time:301, rate:303, rate_counter:305, bytes_over_time:307, bytes_rate:309, avg_over_time:311, sum_over_time:313, min_over_time:315, max_over_time:317, stddev_over_time:319, stdvar_over_time:321, quantile_over_time:323, first_over_time:325, last_over_time:327, absent_over_time:329, bytes:335, duration:337, duration_seconds:339};\nconst parser = LRParser.deserialize({\n version: 14,\n states: \"EtOYQPOOO#cQPO'#DUOOQO'#ER'#ERO#hQPO'#ERO$}QPO'#DTOYQPO'#DTOOQO'#Ed'#EdO%[QPO'#EcOOQO'#FP'#FPO%aQPO'#FOQ%lQPOOO&mQPO'#F]O&rQPO'#F^OOQO'#Eb'#EbOOQO'#DS'#DSOOQO'#Ee'#EeOOQO'#Ef'#EfOOQO'#Eg'#EgOOQO'#Eh'#EhOOQO'#Ei'#EiOOQO'#Ej'#EjOOQO'#Ek'#EkOOQO'#El'#ElOOQO'#Em'#EmOOQO'#En'#EnOOQO'#Eo'#EoOOQO'#Ep'#EpOOQO'#Eq'#EqOOQO'#Er'#ErOOQO'#Es'#EsO&wQPO'#DWOOQO'#DV'#DVO'VQPO,59pOOQO,5:m,5:mOOQO'#Dc'#DcO'_QPO'#DbO'gQPO'#DaO)lQPO'#D`O*{QPO'#D`OOQO'#D_'#D_O+sQPO,59oO-}QPO,59oO.UQPO,5:|O.]QPO,5:}O.hQPO'#E|O0sQPO,5;jO0zQPO,5;jO1PQPO,5;lO1PQPO,5;lO1PQPO,5;lO1PQPO,5;lO1PQPO,5;lO1PQPO,5;lOYQPO,5;wO3cQPO,5;xO3hQPO,59rO#cQPO,59qOOQO1G/[1G/[OOQO'#Dh'#DhO3mQPO,59|O5^QPO,59|OOQO'#Di'#DiO5cQPO,59{OOQO,59{,59{O5kQPO'#DWO6YQPO'#DlO8PQPO'#DoO9sQPO'#DoOOQO'#Do'#DoOOQO'#Dv'#DvOOQO'#Dt'#DtO+kQPO'#DtO9xQPO,59zO;iQPO'#EVO;nQPO'#EWOOQO'#EZ'#EZO;sQPO'#E[O;xQPO'#E_OOQO,59z,59zOOQO,59y,59yOOQO1G/Z1G/ZOOQO1G0h1G0hO;}QPO'#EtO.`QPO'#EtOUQPO'#FSO@dQPO'#FRO@nQPO'#FROYQPO1G1WOYQPO1G1WOYQPO1G1WOYQPO1G1WOYQPO1G1WOYQPO1G1WO@xQPO1G1cOAPQPO1G1dOOQO1G/^1G/^OOQO1G/]1G/]O5cQPO1G/hOAUQPO1G/hOAZQPO'#DjOBzQPO'#DjOOQO1G/g1G/gOCbQPO,59rOCPQPO,5:cOOQO'#Dm'#DmOClQPO,5:WOEcQPO'#DrOOQO'#Dq'#DqOGVQPO,5:_OHvQPO,5:[OOQO,5:Z,5:ZOJgQPO,5:`O+kQPO,5:`O+kQPO,5:`OOQO,5:q,5:qOJuQPO'#EYOOQO'#EX'#EXOJzQPO,5:rOLkQPO'#E^OOQO'#E^'#E^OOQO'#E]'#E]ONbQPO,5:vO!!RQPO'#EaOOQO'#Ea'#EaOOQO'#E`'#E`O!#xQPO,5:yO!%iQPO'#D`O;}QPO,5;`O!%pQPO'#EuO!%uQPO,5;`O!%}QPO,5;`O!&[QPO,5;`O!&iQPO,5;`O!&nQPO7+&TO.`QPO7+&TOOQO'#E}'#E}O!(OQPO1G1SOOQO1G1S1G1SOYQPO7+&pO!(WQPO7+&pO!)hQPO7+&pO!)oQPO7+&pO!)vQQO'#FTOOQO,5;n,5;nO!,UQPO,5;mO!,]QPO,5;mO!-nQPO7+&rO!-uQPO7+&rOOQO7+&r7+&rO!.SQPO7+&rO!.ZQPO7+&rO!/`QPO7+&rO!/pQPO7+&}OOQO7+'O7+'OOOQO7+%S7+%SO!/uQPO7+%SO5cQPO,5:UO!/zQPO,5:UO!0PQPO1G/{OOQO1G/}1G/}OOQO1G0U1G0UOOQO1G0W1G0WOOQO,5:X,5:XO!0UQPO1G/yO!1uQPO,5:^O!1zQPO,5:]OOQO1G/z1G/zO!2PQPO1G/zO!3pQPO,5:tO;nQPO,5:sO;sQPO,5:wO;xQPO,5:zO!3xQPO,5;cO!%uQPO1G0zO!4WQPO1G0zO!4`QPO,5;aO+kQPO,5;cO!4eQPO1G0zO!4oQPO'#EvO!4tQPO1G0zO!4eQPO1G0zO!4|QPO1G0zO!5ZQPO1G0zO!%xQPO1G0zOOQO1G0z1G0zOOQO<mAN>mO!=uQPO<SQPOLD+ZOOQOAN?oAN?oOOQO,5:r,5:rO!>XQPO!$'NuO!>^QPO!)9DaO!>cQPO!.K9{OOQO!4//g!4//gO;nQPO'#EWO!>hQPO'#D`O!?`QPO,59oO!@fQPO'#DTOYQPO1G1WOYQPO1G1WOYQPO1G1WOYQPO1G1WOYQPO1G1WOYQPO1G1WO1PQPO,5;lO1PQPO,5;lO1PQPO,5;lO1PQPO,5;lO1PQPO,5;lO1PQPO,5;lO!AqQPO7+&rO!AxQPO7+&rO!BVQPO7+&rO!C_QPO7+&rO!CfQPO7+&rO!B^QPO'#FQ\",\n stateData: \"!Cs~O$TOStOS~OXZOY[OiWOjWOkWOlWOmWOnWOoWOpWOqWOrWOsWO!vQO!wRO!xRO$UPO$YTO$[_O$]`O$^aO$_bO$`cO$adO$beO$cfO$dgO$ehO$fiO$gjO$hkO$ilO$jmO~O{nO~O!vqO~O!OrO!QrO!WrO!XrO!YrO!ZrOfwXgwXhwX!lwX!nwX!owX!pwX!qwX!wwX!xwX#{wX#|wX#}wX$OwX~O!_vO$RwX$ZwX~P#mO$Y{O~Od|Oe|O$Y}O~Of!QOg!POh!QO!O!UO!l!UO!n!UO!o!UO!p!UO!q!UO!w!RO!x!RO#{!SO#|!SO#}!SO$O!TO~O$Y!VO~O$Y!WO~O|!XO!O!XO!P!XO!Q!XO~O$V!YO$W!ZO~O}!]O$X!_O~Og!`Of!TXh!TX!O!TX!Q!TX!W!TX!X!TX!Y!TX!Z!TX!_!TX!l!TX!n!TX!o!TX!p!TX!q!TX!w!TX!x!TX#{!TX#|!TX#}!TX$O!TX$R!TX$Z!TX$k!TX$V!TX~O!OrO!QrO!WrO!XrO!YrO!ZrO~Of!SXg!SXh!SX!_!SX!l!SX!n!SX!o!SX!p!SX!q!SX!w!SX!x!SX#{!SX#|!SX#}!SX$O!SX$R!SX$Z!SX$k!SX$V!SX~P)WOP!dOQ!cOR!fOS!eOT!eOV!lOW!kOa!mOb!nOc!oO{!bO$Y!iO~O!_vOfwagwahwa!lwa!nwa!owa!pwa!qwa!wwa!xwa#{wa#|wa#}wa$Owa$Rwa$Zwa~P)WOfvXgvXhvX!OvX!lvX!nvX!ovX!pvX!qvX!wvX!xvX#{vX#|vX#}vX$OvX~O$Z!rO~P,|O$Z!sO~P,|O!v!wO$UPO$Y!uO~O$Y!xO~OXZOY[OiWOjWOkWOlWOmWOnWOoWOpWOqWOrWOsWO!wRO!xRO$UPO$YTO$[_O$]`O$^aO$_bO$`cO$adO$beO$cfO$dgO$ehO$fiO$gjO$hkO$ilO$jmO~O!v!yO~P.mO$Y!{O~O[#OO]!|O^!|OX#uPY#uPi#uPj#uPk#uPl#uPm#uPn#uPo#uPp#uPq#uPr#uPs#uP!v#uP!w#uP!x#uP$U#uP$Y#uP$[#uP$]#uP$^#uP$_#uP$`#uP$a#uP$b#uP$c#uP$d#uP$e#uP$f#uP$g#uP$h#uP$i#uP$j#uP~O!v#WO~O}#XO~Og#ZOf!Uah!Ua!O!Ua!Q!Ua!W!Ua!X!Ua!Y!Ua!Z!Ua!_!Ua!l!Ua!n!Ua!o!Ua!p!Ua!q!Ua!w!Ua!x!Ua#{!Ua#|!Ua#}!Ua$O!Ua$R!Ua$Z!Ua$k!Ua$V!Ua~O$Y#[O~O}#]O$X!_O~O|#`O!O#`O!P!XO!Q!XO!l#aO!n#aO!o#aO!p#aO!q#aO~O{#dO!b#bOf!`Xg!`Xh!`X!O!`X!Q!`X!W!`X!X!`X!Y!`X!Z!`X!_!`X!l!`X!n!`X!o!`X!p!`X!q!`X!w!`X!x!`X#{!`X#|!`X#}!`X$O!`X$R!`X$Z!`X$k!`X$V!`X~O{#dOf!cXg!cXh!cX!O!cX!Q!cX!W!cX!X!cX!Y!cX!Z!cX!_!cX!l!cX!n!cX!o!cX!p!cX!q!cX!w!cX!x!cX#{!cX#|!cX#}!cX$O!cX$R!cX$Z!cX$k!cX$V!cX~O}#hO~Of#jOg#kO$V#jOh!Sa!O!Sa!Q!Sa!W!Sa!X!Sa!Y!Sa!Z!Sa!_!Sa!l!Sa!n!Sa!o!Sa!p!Sa!q!Sa!w!Sa!x!Sa#{!Sa#|!Sa#}!Sa$O!Sa$R!Sa$Z!Sa$k!Sa~O}#lO~O{#mO~O{#pO~O{#tO~O!_#xO$k#zO~P)WO$Z$PO~O$V$QO~O{$RO$Z$TO~Of!uXg!uXh!uX!O!uX!l!uX!n!uX!o!uX!p!uX!q!uX!w!uX!x!uX#{!uX#|!uX#}!uX$O!uX$Z!uX~O$V$UO~PZO]!|O^!|O~P>ZO$V$dO~P,|O$Z$eO~O}$gO~Og$hOf!^Xh!^X!O!^X!Q!^X!W!^X!X!^X!Y!^X!Z!^X!_!^X!l!^X!n!^X!o!^X!p!^X!q!^X!w!^X!x!^X#{!^X#|!^X#}!^X$O!^X$R!^X$Z!^X$k!^X$V!^X~O$Y$iO~O!m$kO!s$lO!vQO!wRO!xRO~O}#XO$X!_O~PCPO{#dO!b$nOf!`ag!`ah!`a!O!`a!Q!`a!W!`a!X!`a!Y!`a!Z!`a!_!`a!l!`a!n!`a!o!`a!p!`a!q!`a!w!`a!x!`a#{!`a#|!`a#}!`a$O!`a$R!`a$Z!`a$k!`a$V!`a~O|$pOf!fXg!fXh!fX!O!fX!Q!fX!W!fX!X!fX!Y!fX!Z!fX!_!fX!l!fX!n!fX!o!fX!p!fX!q!fX!w!fX!x!fX#{!fX#|!fX#}!fX$O!fX$R!fX$V!fX$Z!fX$k!fX~O$V$qOf!gag!gah!ga!O!ga!Q!ga!W!ga!X!ga!Y!ga!Z!ga!_!ga!l!ga!n!ga!o!ga!p!ga!q!ga!w!ga!x!ga#{!ga#|!ga#}!ga$O!ga$R!ga$Z!ga$k!ga~O$V$qOf!dag!dah!da!O!da!Q!da!W!da!X!da!Y!da!Z!da!_!da!l!da!n!da!o!da!p!da!q!da!w!da!x!da#{!da#|!da#}!da$O!da$R!da$Z!da$k!da~Of#jOg#kO$V#jO$Z$rO~O|$tO~O$V$uOf!zag!zah!za!O!za!Q!za!W!za!X!za!Y!za!Z!za!_!za!l!za!n!za!o!za!p!za!q!za!w!za!x!za#{!za#|!za#}!za$O!za$R!za$Z!za$k!za~O|!XO!O!XO!P!XO!Q!XOf#QXg#QXh#QX!W#QX!X#QX!Y#QX!Z#QX!_#QX!l#QX!n#QX!o#QX!p#QX!q#QX!w#QX!x#QX#{#QX#|#QX#}#QX$O#QX$R#QX$V#QX$Z#QX$k#QX~O$V$vOf#Oag#Oah#Oa!O#Oa!Q#Oa!W#Oa!X#Oa!Y#Oa!Z#Oa!_#Oa!l#Oa!n#Oa!o#Oa!p#Oa!q#Oa!w#Oa!x#Oa#{#Oa#|#Oa#}#Oa$O#Oa$R#Oa$Z#Oa$k#Oa~O|!XO!O!XO!P!XO!Q!XOf#TXg#TXh#TX!W#TX!X#TX!Y#TX!Z#TX!_#TX!l#TX!n#TX!o#TX!p#TX!q#TX!w#TX!x#TX#{#TX#|#TX#}#TX$O#TX$R#TX$V#TX$Z#TX$k#TX~O$V$wOf#Rag#Rah#Ra!O#Ra!Q#Ra!W#Ra!X#Ra!Y#Ra!Z#Ra!_#Ra!l#Ra!n#Ra!o#Ra!p#Ra!q#Ra!w#Ra!x#Ra#{#Ra#|#Ra#}#Ra$O#Ra$R#Ra$Z#Ra$k#Ra~OU$xO~P*{O!m${O~O!_$|O$k#zO~OZ%OO!_#xO$Z#ha~P)WO!_#xO$Z%TO$k#zO~P)WO$Z%UO~Od|Oe|Of#Vqg#Vqh#Vq!O#Vq!l#Vq!n#Vq!o#Vq!p#Vq!q#Vq!w#Vq!x#Vq#{#Vq#|#Vq#}#Vq$O#Vq$R#Vq$Z#Vq$V#Vq~O$V%XO$Z%YO~Od|Oe|Of#rqg#rqh#rq!O#rq!l#rq!n#rq!o#rq!p#rq!q#rq!w#rq!x#rq#{#rq#|#rq#}#rq$O#rq$R#rq$Z#rq$V#rq~O$V%]O~P (specializeIdentifier(value) << 1)},{term: 43, get: (value, stack) => (extendIdentifier(value) << 1) | 1},{term: 43, get: value => spec_Identifier[value] || -1}],\n tokenPrec: 0\n});\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst Json = 1,\n Logfmt = 2,\n Unpack = 3,\n Pattern = 4,\n Regexp = 5,\n Unwrap = 6,\n LabelFormat = 7,\n LineFormat = 8,\n LabelReplace = 9,\n Vector = 10,\n Offset = 11,\n Bool = 12,\n On = 13,\n Ignoring = 14,\n GroupLeft = 15,\n GroupRight = 16,\n Decolorize = 17,\n Drop = 18,\n Keep = 19,\n By = 20,\n Without = 21,\n And = 22,\n Or = 23,\n Unless = 24,\n Sum = 25,\n Avg = 26,\n Count = 27,\n Max = 28,\n Min = 29,\n Stddev = 30,\n Stdvar = 31,\n Bottomk = 32,\n Topk = 33,\n Sort = 34,\n Sort_Desc = 35,\n LineComment = 36,\n LogQL = 37,\n Expr = 38,\n LogExpr = 39,\n Selector = 40,\n Matchers = 41,\n Matcher = 42,\n Identifier = 43,\n Eq = 44,\n String = 45,\n Neq = 46,\n Re = 47,\n Nre = 48,\n PipelineExpr = 49,\n PipelineStage = 50,\n LineFilters = 51,\n LineFilter = 52,\n Filter = 53,\n PipeExact = 54,\n PipeMatch = 55,\n PipePattern = 56,\n Npa = 57,\n FilterOp = 58,\n Ip = 59,\n OrFilter = 60,\n Pipe = 61,\n LogfmtParser = 62,\n LogfmtParserFlags = 63,\n ParserFlag = 64,\n LabelParser = 65,\n JsonExpressionParser = 66,\n LabelExtractionExpressionList = 67,\n LabelExtractionExpression = 68,\n LogfmtExpressionParser = 69,\n LabelFilter = 70,\n IpLabelFilter = 71,\n UnitFilter = 72,\n DurationFilter = 73,\n Gtr = 74,\n Duration = 75,\n Gte = 76,\n Lss = 77,\n Lte = 78,\n Eql = 79,\n BytesFilter = 80,\n Bytes = 81,\n NumberFilter = 82,\n LiteralExpr = 83,\n Number = 84,\n Add = 85,\n Sub = 86,\n LineFormatExpr = 87,\n LabelFormatExpr = 88,\n LabelsFormat = 89,\n LabelFormatMatcher = 90,\n DecolorizeExpr = 91,\n DropLabelsExpr = 92,\n DropLabels = 93,\n DropLabel = 94,\n KeepLabelsExpr = 95,\n KeepLabels = 96,\n KeepLabel = 97,\n MetricExpr = 98,\n RangeAggregationExpr = 99,\n RangeOp = 100,\n CountOverTime = 101,\n Rate = 102,\n RateCounter = 103,\n BytesOverTime = 104,\n BytesRate = 105,\n AvgOverTime = 106,\n SumOverTime = 107,\n MinOverTime = 108,\n MaxOverTime = 109,\n StddevOverTime = 110,\n StdvarOverTime = 111,\n QuantileOverTime = 112,\n FirstOverTime = 113,\n LastOverTime = 114,\n AbsentOverTime = 115,\n LogRangeExpr = 116,\n Range = 117,\n OffsetExpr = 118,\n UnwrapExpr = 119,\n ConvOp = 120,\n BytesConv = 121,\n DurationConv = 122,\n DurationSecondsConv = 123,\n Grouping = 124,\n Labels = 125,\n VectorAggregationExpr = 126,\n VectorOp = 127,\n BinOpExpr = 128,\n BinOpModifier = 129,\n OnOrIgnoringModifier = 130,\n GroupingLabels = 131,\n GroupingLabelList = 132,\n GroupingLabel = 133,\n LabelName = 134,\n Mul = 135,\n Div = 136,\n Mod = 137,\n Pow = 138,\n LabelReplaceExpr = 139,\n VectorExpr = 140;\n\nexport { AbsentOverTime, Add, And, Avg, AvgOverTime, BinOpExpr, BinOpModifier, Bool, Bottomk, By, Bytes, BytesConv, BytesFilter, BytesOverTime, BytesRate, ConvOp, Count, CountOverTime, Decolorize, DecolorizeExpr, Div, Drop, DropLabel, DropLabels, DropLabelsExpr, Duration, DurationConv, DurationFilter, DurationSecondsConv, Eq, Eql, Expr, Filter, FilterOp, FirstOverTime, GroupLeft, GroupRight, Grouping, GroupingLabel, GroupingLabelList, GroupingLabels, Gte, Gtr, Identifier, Ignoring, Ip, IpLabelFilter, Json, JsonExpressionParser, Keep, KeepLabel, KeepLabels, KeepLabelsExpr, LabelExtractionExpression, LabelExtractionExpressionList, LabelFilter, LabelFormat, LabelFormatExpr, LabelFormatMatcher, LabelName, LabelParser, LabelReplace, LabelReplaceExpr, Labels, LabelsFormat, LastOverTime, LineComment, LineFilter, LineFilters, LineFormat, LineFormatExpr, LiteralExpr, LogExpr, LogQL, LogRangeExpr, Logfmt, LogfmtExpressionParser, LogfmtParser, LogfmtParserFlags, Lss, Lte, Matcher, Matchers, Max, MaxOverTime, MetricExpr, Min, MinOverTime, Mod, Mul, Neq, Npa, Nre, Number, NumberFilter, Offset, OffsetExpr, On, OnOrIgnoringModifier, Or, OrFilter, ParserFlag, Pattern, Pipe, PipeExact, PipeMatch, PipePattern, PipelineExpr, PipelineStage, Pow, QuantileOverTime, Range, RangeAggregationExpr, RangeOp, Rate, RateCounter, Re, Regexp, Selector, Sort, Sort_Desc, Stddev, StddevOverTime, Stdvar, StdvarOverTime, String, Sub, Sum, SumOverTime, Topk, UnitFilter, Unless, Unpack, Unwrap, UnwrapExpr, Vector, VectorAggregationExpr, VectorExpr, VectorOp, Without, parser };\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \".js\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"public/plugins/grafana-lokiexplore-app/\";","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t231: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkgrafana_lokiexplore_app\"] = self[\"webpackChunkgrafana_lokiexplore_app\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(9077);\n"],"names":["leafPrototypes","getProto","inProgress","dataWebpackPrefix","OpenInLogsDrilldownButton","lazy","exposedComponents","id","title","description","component","props","Suspense","fallback","LinkButton","variant","disabled","App","wasmSupported","default","initRuntimeDs","initChangepoint","initOutlier","Promise","all","AppConfig","plugin","AppPlugin","setRootPage","addConfigPage","icon","body","linkConfig","linkConfigs","addLink","exposedComponentConfig","exposeComponent","PRODUCT_NAME","ExtensionPoints","MetricInvestigation","targets","PluginExtensionPoints","DashboardPanelMenu","path","createAppUrl","configure","contextToLink","ExploreToolbarAction","stringifyValues","value","EMPTY_VARIABLE_VALUE","replaceEscapeChars","replace","stringifyAdHocValues","addAdHocFilterUserInputPrefix","context","lokiQuery","find","target","datasource","type","uid","expr","labelFilters","lineFilters","fields","patternFilters","getMatcherFromQuery","labelSelector","selector","isOperatorInclusive","operator","labelValue","replaceSlash","split","labelName","key","SERVICE_NAME","sort","a","params","setUrlParameter","UrlParameters","DatasourceId","URLSearchParams","TimeRangeFrom","timeRange","from","valueOf","toString","TimeRangeTo","to","labelFilter","LabelType","Indexed","labelsAdHocFilterURLString","escapeURLDelimiters","appendUrlParameter","Labels","lineFilter","LineFilters","length","field","StructuredMetadata","LEVEL_VARIABLE_VALUE","Levels","Metadata","fieldValue","parser","adHocFilterURLString","JSON","stringify","Fields","patterns","push","PatternFilterOp","match","pattern","patternsString","renderPatternFilters","Patterns","PatternsVariable","urlParams","pluginJson","VAR_DATASOURCE","VAR_LABELS","VAR_FIELDS","VAR_METADATA","VAR_LEVELS","VAR_LINE_FILTERS","VAR_PATTERNS","initalParams","searchParams","location","search","set","append","parameter","stripAdHocFilterUserInputPrefix","Symbol","escapeUrlCommaDelimiters","escapeUrlPipeDelimiters","LabelFilterOp","NumericFilterOp","FilterOp","LineFilterOp","LineFilterCaseSensitive","defaultContext","app","version","logger","info","msg","ctx","console","log","attemptFaroInfo","warn","attemptFaroWarn","error","err","attemptFaroErr","logInfo","e","logWarning","context2","isRecord","Object","keys","forEach","hasData","data","populateFetchErrorContext","Error","logError","NodePosition","fromNode","node","contains","position","this","getExpression","query","substring","constructor","syntaxNode","getNodesFromQuery","nodeTypes","nodes","parse","iterate","enter","undefined","includes","getAllPositionsInNodeByType","positions","pos","child","childAfter","parseNonPatternFilters","lineFilterValue","quoteString","index","isRegexSelector","regex","negativeRegex","isCaseInsensitive","replaceDoubleEscape","RegExp","replaceDoubleQuoteEscape","caseInsensitive","caseSensitive","parsePatternFilters","getNumericFieldOperator","matcher","Lte","FilterOperator","lte","Lss","lt","Gte","gte","Gtr","gt","getStringFieldOperator","Eq","Equal","Neq","NotEqual","Re","RegexEqual","Nre","RegexNotEqual","filter","Selector","allMatcher","Matcher","identifierPosition","valuePosition","Identifier","String","map","parseLabelFilters","allLineFilters","LineFilter","entries","equal","PipeExact","pipeRegExp","PipeMatch","notEqual","notEqualRegExp","patternInclude","PipePattern","patternExclude","Npa","lineFilterValueNodes","getStringsFromLineFilter","lineFilterValueNode","negativeMatch","parseLineFilters","dataFrame","series","frame","refId","allFields","LabelFilter","fieldNameNode","expression","getChild","logFmtParser","Logfmt","jsonParser","Json","fieldName","fieldStringValue","fieldNumberValue","Number","fieldBytesValue","Bytes","fieldDurationValue","Duration","labelType","getLabelTypeFromFrame","Parsed","parseFields","ErrorId","isValidQuery","nodeType","isQueryWithNode","string","OrFilter","LokiQueryDirection","labelKey","typeField","name","values","isObj","o","hasProp","prop","isString","s","obj","unknownToStrings","strings","Array","isArray","i","narrowSelectedTableRow","narrowed","row","narrowLogsVisualizationType","narrowLogsSortOrder","LogsSortOrder","Ascending","Descending","narrowFieldValue","narrowRecordStringNumber","returnRecord","narrowTimeRange","unknownRange","range","narrowFilterOperator","op","NarrowingError","isOperatorExclusive","isOperatorRegex","isOperatorNumeric","numericOperatorArray","getOperatorDescription","operators","array","label","includeOperators","numericOperators","lineFilterOperators","escapeLabelValueInExactSelector","excludePatternsLine","p","join","trim","includePatterns","includePatternsLine","VAR_LABELS_EXPR","VAR_LABELS_REPLICA","VAR_LABELS_REPLICA_EXPR","VAR_FIELDS_EXPR","PENDING_FIELDS_EXPR","PENDING_METADATA_EXPR","VAR_FIELDS_AND_METADATA","VAR_METADATA_EXPR","VAR_PATTERNS_EXPR","VAR_LEVELS_EXPR","VAR_FIELD_GROUP_BY","VAR_LABEL_GROUP_BY","VAR_LABEL_GROUP_BY_EXPR","VAR_PRIMARY_LABEL_SEARCH","VAR_PRIMARY_LABEL","VAR_PRIMARY_LABEL_EXPR","VAR_DATASOURCE_EXPR","MIXED_FORMAT_EXPR","JSON_FORMAT_EXPR","LOGS_FORMAT_EXPR","VAR_LOGS_FORMAT","VAR_LOGS_FORMAT_EXPR","VAR_LINE_FILTER","VAR_LINE_FILTERS_EXPR","LOG_STREAM_SELECTOR_EXPR","DETECTED_FIELD_AND_METADATA_VALUES_EXPR","DETECTED_LEVELS_VALUES_EXPR","PATTERNS_SAMPLE_SELECTOR_EXPR","PRETTY_LOG_STREAM_SELECTOR_EXPR","EXPLORATION_DS","ALL_VARIABLE_VALUE","SERVICE_UI_LABEL","VAR_AGGREGATED_METRICS","USER_INPUT_ADHOC_VALUE_PREFIX","startsWith","isAdHocFilterValueUserInput","module","exports","__WEBPACK_EXTERNAL_MODULE__6089__","__WEBPACK_EXTERNAL_MODULE__7781__","__WEBPACK_EXTERNAL_MODULE__8531__","__WEBPACK_EXTERNAL_MODULE__2007__","__WEBPACK_EXTERNAL_MODULE__3241__","__WEBPACK_EXTERNAL_MODULE__5959__","__WEBPACK_EXTERNAL_MODULE__8398__","__WEBPACK_EXTERNAL_MODULE__200__","__WEBPACK_EXTERNAL_MODULE__3806__","__WEBPACK_EXTERNAL_MODULE__7694__","__WEBPACK_EXTERNAL_MODULE__1269__","DefaultBufferLength","nextPropID","Range","NodeProp","config","perNode","deserialize","add","RangeError","NodeType","result","closedBy","str","openedBy","group","isolate","contextHash","lookAhead","mounted","MountedTree","tree","overlay","get","noProps","create","flags","define","spec","top","skipped","src","isTop","isSkipped","isError","isAnonymous","is","indexOf","direct","groups","found","none","NodeSet","types","extend","newTypes","newProps","source","assign","CachedNode","WeakMap","CachedInnerNode","IterMode","Tree","children","ch","test","cursor","mode","TreeCursor","topNode","cursorAt","side","scope","moveTo","_tree","TreeNode","resolve","resolveNode","resolveInner","resolveStack","inner","layers","scan","parent","mount","root","iterStack","stackIterator","leave","anon","IncludeAnonymous","c","entered","firstChild","nextSibling","propValues","balance","balanceRange","makeTree","build","_a","buffer","nodeSet","maxBufferLength","reused","minRepeatType","FlatBufferCursor","takeNode","parentStart","minPos","inRepeat","depth","start","end","size","lookAheadAtStart","contextAtStart","next","startPos","maxSize","fork","skip","minStart","nodeSize","localSkipped","nodeStart","findBufferSize","Uint16Array","endPos","copyToBuffer","TreeBuffer","localChildren","localPositions","localInRepeat","lastGroup","lastEnd","makeRepeatLeaf","takeFlatNode","reverse","make","last","lookAheadProp","lastI","makeBalanced","nodeCount","stopAt","j","base","pop","pair","concat","bufferStart","startIndex","topID","buildTree","empty","childString","endIndex","findChild","dir","pick","checkSide","slice","startI","endI","b","copy","len","Math","max","overlays","IgnoreOverlays","BaseNode","before","after","r","getChildren","matchContext","matchNodeContext","enterUnfinishedNodesBefore","childBefore","lastChild","prevSibling","_parent","super","nextChild","ExcludeBuffers","BufferNode","BufferContext","hasChild","IgnoreMounts","rPos","nextSignificantParent","val","toTree","cur","externalSibling","heads","picked","newHeads","splice","StackIterator","stack","bufferNode","yieldNode","n","unshift","yieldBuf","yield","enterChild","sibling","d","atLastNode","move","prev","cache","mustLeave","some","nodeSizeCache","balanceType","mkTop","mkTree","total","maxChild","ceil","divide","offset","groupFrom","groupStart","groupSize","nextSize","only","Parser","startParse","input","fragments","ranges","StringInput","createParse","done","advance","chunk","lineChunks","read","Stack","state","reducePos","score","bufferBase","curContext","_","cx","StackContext","pushState","reduce","action","lookaheadRecord","setLookAhead","dPrec","dynamicPrecedence","getGoto","minRepeatTerm","storeNode","reduceContext","lastBigReductionStart","bigReductionCount","lastBigReductionSize","count","stateFlag","baseStateID","term","mustSink","mustMove","shift","shiftContext","maxNode","nextState","apply","nextStart","nextEnd","useNode","updateContext","tracker","reuse","stream","reset","off","recoverByDelete","isNode","canShift","sim","SimulatedStack","stateSlot","hasAction","recoverByInsert","nextStates","best","v","forceReduce","validAction","backup","findForcedReduction","seen","explore","allActions","rDepth","forceAll","deadEnd","restart","sameState","other","dialectEnabled","dialectID","dialect","emitContext","hash","emitLookAhead","newCx","close","strict","goto","StackBufferCursor","maybeNext","decodeArray","Type","out","charCodeAt","stop","digit","CachedToken","extended","mask","nullToken","InputStream","chunkOff","chunk2","chunk2Pos","token","rangeIndex","chunkPos","readNext","resolveOffset","assoc","clipPos","peek","idx","resolved","acceptToken","endOffset","acceptTokenTo","getChunk","nextChunk","setDone","min","TokenGroup","precTable","precOffset","groupMask","accEnd","allows","overrides","low","high","mid","readToken","tokenPrecTable","findOffset","tableData","tableOffset","iPrev","prototype","contextual","verbose","process","env","LOG","stackIDs","cutAt","fragment","safeFrom","safeTo","trees","nextFragment","fr","openStart","openEnd","nodeAt","TokenCache","tokens","mainToken","actions","tokenizers","getActions","actionIndex","main","tokenizer","updateCachedToken","addActions","eofTerm","getMainToken","specialized","specializers","putAction","Parse","recovering","nextStackID","minStackPos","stoppedAt","topTerm","stacks","bufferLength","parsedPos","stopped","stoppedTokens","newStacks","advanceStack","tok","finished","findFinished","stackID","stackToTree","getName","SyntaxError","runRecovery","maxRemaining","outer","strictCx","cxHash","cached","defaultReduce","localStack","advanceFully","pushStackDedup","restarted","tokenEnd","force","forceBase","insert","fromCodePoint","Dialect","LRParser","wrappers","nodeNames","repeatNodeCount","topTerms","topRules","nodeProps","setProp","nodeID","propSpec","skippedNodes","propSources","tokenArray","tokenData","specializerSpecs","getSpecializer","states","Uint32Array","stateData","maxTerm","dialects","dynamicPrecedences","tokenPrec","termNames","parseDialect","w","loose","table","groupTag","terminal","slot","flag","deflt","t","external","contextTracker","wrap","hasWrappers","prec","part","Uint8Array","keywordTokens","json","logfmt","unpack","regexp","label_format","line_format","label_replace","vector","bool","on","ignoring","group_left","group_right","unwrap","decolorize","drop","keep","contextualKeywordTokens","by","without","and","or","unless","sum","avg","stddev","stdvar","bottomk","topk","sort_desc","spec_Identifier","__proto__","ip","count_over_time","rate","rate_counter","bytes_over_time","bytes_rate","avg_over_time","sum_over_time","min_over_time","max_over_time","stddev_over_time","stdvar_over_time","quantile_over_time","first_over_time","last_over_time","absent_over_time","bytes","duration","duration_seconds","toLowerCase","specializeIdentifier","extendIdentifier","MetricExpr","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","call","m","getter","__esModule","getPrototypeOf","then","ns","def","current","getOwnPropertyNames","definition","defineProperty","enumerable","f","chunkId","promises","u","g","globalThis","Function","window","hasOwnProperty","l","url","script","needAttach","scripts","document","getElementsByTagName","getAttribute","createElement","charset","timeout","nc","setAttribute","onScriptComplete","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","fn","setTimeout","bind","head","appendChild","toStringTag","baseURI","self","href","installedChunks","installedChunkData","promise","reject","errorType","realSrc","message","request","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","chunkLoadingGlobal"],"sourceRoot":""} \ No newline at end of file diff --git a/grafana/plugins/grafana-lokiexplore-app/plugin.json b/grafana/plugins/grafana-lokiexplore-app/plugin.json index c0bf6696..d4037dde 100644 --- a/grafana/plugins/grafana-lokiexplore-app/plugin.json +++ b/grafana/plugins/grafana-lokiexplore-app/plugin.json @@ -54,11 +54,11 @@ "name": "Grafana" }, "build": { - "time": 1742399020282, + "time": 1743678867477, "repo": "https://github.com/grafana/logs-drilldown", "branch": "main", - "hash": "7e460b5135a94ff8da2e783c1dbe08d5944de772", - "build": 2015 + "hash": "0c279fb9cfb3a309c2d55ae176ebbfc2e0a1d7c2", + "build": 2115 }, "description": "Visualize log volumes to easily detect anomalies or significant changes over time, without needing to compose LogQL queries.", "keywords": [ @@ -99,8 +99,8 @@ "path": "img/table.png" } ], - "updated": "2025-03-19", - "version": "1.0.9" + "updated": "2025-04-03", + "version": "1.0.10" }, "name": "Grafana Logs Drilldown", "preload": true, diff --git a/grafana/plugins/grafana-pyroscope-app/CHANGELOG.md b/grafana/plugins/grafana-pyroscope-app/CHANGELOG.md index eb9600af..3f3ae345 100644 --- a/grafana/plugins/grafana-pyroscope-app/CHANGELOG.md +++ b/grafana/plugins/grafana-pyroscope-app/CHANGELOG.md @@ -1,3 +1,36 @@ +## [1.2.3](https://github.com/grafana/explore-profiles/compare/v1.2.2...v1.2.3) (2025-04-03) + + +### Bug Fixes + +* Get suggestions for optimize code ([#480](https://github.com/grafana/explore-profiles/issues/480)) ([23674c3](https://github.com/grafana/explore-profiles/commit/23674c3eaf8adf5572a725bade08f0a53038e77b)) + + + +## [1.2.2](https://github.com/grafana/explore-profiles/compare/v1.2.1...v1.2.2) (2025-04-03) + + +### Bug Fixes + +* revert "profiling insights" extension ([#447](https://github.com/grafana/explore-profiles/issues/447)) ([43b35dc](https://github.com/grafana/explore-profiles/commit/43b35dc8f929e922bb8d554b92c6a763581d3443)) + + + +## [1.2.1](https://github.com/grafana/explore-profiles/compare/v1.2.0...v1.2.1) (2025-04-02) + + +### Bug Fixes + +* **FlameGraph:** Use entire file as context in "Optimize Code" prompt ([#459](https://github.com/grafana/explore-profiles/issues/459)) ([569c17c](https://github.com/grafana/explore-profiles/commit/569c17c41511167add7a7a4db3f90cbc88897d68)) +* **llm:** Add extra context in AI prompt about other lines in a file ([#460](https://github.com/grafana/explore-profiles/issues/460)) ([004b7aa](https://github.com/grafana/explore-profiles/commit/004b7aa04a136b02f036c0e33a27d1b333cbbf93)) + + +### Features + +* "profiling insights" extension ([#447](https://github.com/grafana/explore-profiles/issues/447)) ([13ff552](https://github.com/grafana/explore-profiles/commit/13ff552083cc4555aa21e8401be1516a364b8271)) + + + # [1.2.0](https://github.com/grafana/explore-profiles/compare/v1.1.0...v1.2.0) (2025-03-10) diff --git a/grafana/plugins/grafana-pyroscope-app/MANIFEST.txt b/grafana/plugins/grafana-pyroscope-app/MANIFEST.txt index 7fa700b8..87410395 100644 --- a/grafana/plugins/grafana-pyroscope-app/MANIFEST.txt +++ b/grafana/plugins/grafana-pyroscope-app/MANIFEST.txt @@ -8,13 +8,13 @@ Hash: SHA512 "signedByOrg": "grafana", "signedByOrgName": "Grafana Labs", "plugin": "grafana-pyroscope-app", - "version": "1.2.0", - "time": 1741608488645, + "version": "1.2.3", + "time": 1743715995969, "keyId": "7e4d0c6a708866e7", "files": { "module.js.LICENSE.txt": "84798babe5a84ee41efdf41174af68e377c212b027183ecdd830747793156ded", "LICENSE": "8486a10c4393cee1c25392769ddd3b2d6c242d6ec7928e1414efff7dfb2f07ef", - "CHANGELOG.md": "e47c37065788fde18c5fd946f6e3390bf8e774a6dab0da96777f6e00d30db569", + "CHANGELOG.md": "f9447ad55912a8192ba0ab54e2e2a167057ff9724edbc15ef316ffdc62e34ed4", "img/bafee50693eb02088442.png": "66d5311c4ca898cdae2d0a23a414f04a7c49052f0035c1a2906b9e9bb15d628d", "img/9c9cdd5175734d579007.png": "ab65c374d22c5faad274f6b8b2ab00bf404bb988803f09d375326cd692fce821", "img/58f0b0e1cfa063e4b662.png": "87598baf93192a8dc7ee923e0af6a0c5e4b3359b00b7391fc9530108feb7aac0", @@ -27,25 +27,25 @@ Hash: SHA512 "img/hero-image.png": "87598baf93192a8dc7ee923e0af6a0c5e4b3359b00b7391fc9530108feb7aac0", "img/8cdf4d2e2df8326311ab.gif": "72afdd2fcad33e13db33af765a3fae9528315d78391684190dd23e40bd688852", "README.md": "da879e54a2da3e7134c14016f0e5b59c9255da5b81d03a02e3e8d47356e15638", - "module.js.map": "9250610e159f0ff9c969115bf5397bb2facf30df644740f77b03e46758191a95", + "module.js.map": "9404b5b8c0c79c5582b356309ffa9b6548f1801195bd2ecb3600d5144d5260d5", "e6c722427cfa8715e19d.svg": "559341996765c2d5639a2818d76bcd88ffe252212193a573f2f9f77dae5064dd", "shared/infrastructure/profile-metrics/profile-metrics.json": "0a3a345a365e72f4278d3a76d5739600483bed8f374ddc1c2af85029057b8d07", "pages/ProfilesExplorerView/components/SceneByVariableRepeaterGrid/components/SceneEmptyState/ui/img/grot-404-light.svg": "89ea40b6dcf2dc8dfe146f8acac42b604e4d3c3dad03e539551d58a21f80654d", "pages/ProfilesExplorerView/components/SceneByVariableRepeaterGrid/components/SceneEmptyState/ui/img/grot-404-dark.svg": "a0c8acbcf5685a8950ce1c67722579dc745585fb0d668ce965327955e5e829ff", "e79edcfbe2068fae2364.svg": "89ea40b6dcf2dc8dfe146f8acac42b604e4d3c3dad03e539551d58a21f80654d", - "plugin.json": "9d683fbd399d13b3bcfac34180a30811f886467867c5623774b8e8a044b543f6", + "plugin.json": "ace999534674d0864a104665afc9143c039e6c86b90aaa6e4a205be765f2cfa0", "944c737f589d02ecf603.svg": "a0c8acbcf5685a8950ce1c67722579dc745585fb0d668ce965327955e5e829ff", - "module.js": "82d44ac2beb28d6cfc231b95a1e3bb827595fce4b9132dea50864dbcc8bba84d" + "module.js": "a7cc2a0b7e676fddfa69f94b46f67c73b5abb81133620b70e731736fbd6f7f95" } } -----BEGIN PGP SIGNATURE----- Version: OpenPGP.js v4.10.11 Comment: https://openpgpjs.org -wrkEARMKAAYFAmfO1igAIQkQfk0ManCIZucWIQTzOyW2kQdOhGNlcPN+TQxq -cIhm5zX0AgkAcX5xYTb23qnCS4L2Q8q34fhVnXdn2UKn4N/oUWoVQRPwbDGZ -1flIEbe6FcWV6xC9W5rQJDrQwA6KF/mj0zTSCqkCCQEwEGnM3u0nyOYIqhP/ -cSjUK+DTheWaybLqHhydG/65nDOCselqAB+zIEfk8TNnO6w0zE0AevGNxqVo -IRzQwzYP6A== -=XcY0 +wrkEARMKAAYFAmfu/pwAIQkQfk0ManCIZucWIQTzOyW2kQdOhGNlcPN+TQxq +cIhm50GOAgkAMYEWBTEBliMidQSc9CsoD+h1V3hM4mdQSDrYjPXVO/aPvZ8z +zm8s9ZVIuSggnEYranWKRSAOtOp00864RRe8HqwCCQEYMOfD9Icg03GlEWcv +XvRG/A1/WJXQSVOQaGbc8pgb2FG7OIF/yWreBzsfObtEaMbfv2wx+8IE7QyZ +eMk0sVCg8w== +=eeMe -----END PGP SIGNATURE----- diff --git a/grafana/plugins/grafana-pyroscope-app/module.js b/grafana/plugins/grafana-pyroscope-app/module.js index 5e7018b9..f01fee46 100644 --- a/grafana/plugins/grafana-pyroscope-app/module.js +++ b/grafana/plugins/grafana-pyroscope-app/module.js @@ -1,6 +1,6 @@ /*! For license information please see module.js.LICENSE.txt */ /* [create-plugin] version: 5.11.1 */ -define(["@emotion/css","@grafana/data","@grafana/runtime","@grafana/ui","d3","lodash","module","react","react-dom","react-router","rxjs"],((__WEBPACK_EXTERNAL_MODULE__6089__,__WEBPACK_EXTERNAL_MODULE__7781__,__WEBPACK_EXTERNAL_MODULE__8531__,__WEBPACK_EXTERNAL_MODULE__2007__,__WEBPACK_EXTERNAL_MODULE__4201__,__WEBPACK_EXTERNAL_MODULE__3241__,__WEBPACK_EXTERNAL_MODULE__1308__,__WEBPACK_EXTERNAL_MODULE__5959__,__WEBPACK_EXTERNAL_MODULE__8398__,__WEBPACK_EXTERNAL_MODULE__1159__,__WEBPACK_EXTERNAL_MODULE__1269__)=>(()=>{var __webpack_modules__={6233:e=>{"use strict";e.exports=function(e,t){var n=new Array(arguments.length-1),r=0,i=2,a=!0;for(;i{"use strict";var n=t;n.length=function(e){var t=e.length;if(!t)return 0;for(var n=0;--t%4>1&&"="===e.charAt(t);)++n;return Math.ceil(3*e.length)/4-n};for(var r=new Array(64),i=new Array(123),a=0;a<64;)i[r[a]=a<26?a+65:a<52?a+71:a<62?a-4:a-59|43]=a++;n.encode=function(e,t,n){for(var i,a=null,o=[],s=0,l=0;t>2],i=(3&c)<<4,l=1;break;case 1:o[s++]=r[i|c>>4],i=(15&c)<<2,l=2;break;case 2:o[s++]=r[i|c>>6],o[s++]=r[63&c],l=0}s>8191&&((a||(a=[])).push(String.fromCharCode.apply(String,o)),s=0)}return l&&(o[s++]=r[i],o[s++]=61,1===l&&(o[s++]=61)),a?(s&&a.push(String.fromCharCode.apply(String,o.slice(0,s))),a.join("")):String.fromCharCode.apply(String,o.slice(0,s))};var o="invalid encoding";n.decode=function(e,t,n){for(var r,a=n,s=0,l=0;l1)break;if(void 0===(c=i[c]))throw Error(o);switch(s){case 0:r=c,s=1;break;case 1:t[n++]=r<<2|(48&c)>>4,r=c,s=2;break;case 2:t[n++]=(15&r)<<4|(60&c)>>2,r=c,s=3;break;case 3:t[n++]=(3&r)<<6|c,s=0}}if(1===s)throw Error(o);return n-a},n.test=function(e){return/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(e)}},7669:e=>{"use strict";function t(e,n){"string"==typeof e&&(n=e,e=void 0);var r=[];function i(e){if("string"!=typeof e){var n=a();if(t.verbose,n="return "+n,e){for(var o=Object.keys(e),s=new Array(o.length+1),l=new Array(o.length),c=0;c{"use strict";function t(){this._listeners={}}e.exports=t,t.prototype.on=function(e,t,n){return(this._listeners[e]||(this._listeners[e]=[])).push({fn:t,ctx:n||this}),this},t.prototype.off=function(e,t){if(void 0===e)this._listeners={};else if(void 0===t)this._listeners[e]=[];else for(var n=this._listeners[e],r=0;r{"use strict";e.exports=a;var r=n(6233),i=n(1925)("fs");function a(e,t,n){return"function"==typeof t?(n=t,t={}):t||(t={}),n?!t.xhr&&i&&i.readFile?i.readFile(e,(function(r,i){return r&&"undefined"!=typeof XMLHttpRequest?a.xhr(e,t,n):r?n(r):n(null,t.binary?i:i.toString("utf8"))})):a.xhr(e,t,n):r(a,this,e,t)}a.xhr=function(e,t,n){var r=new XMLHttpRequest;r.onreadystatechange=function(){if(4===r.readyState){if(0!==r.status&&200!==r.status)return n(Error("status "+r.status));if(t.binary){var e=r.response;if(!e){e=[];for(var i=0;i{"use strict";function t(e){return"undefined"!=typeof Float32Array?function(){var t=new Float32Array([-0]),n=new Uint8Array(t.buffer),r=128===n[3];function i(e,r,i){t[0]=e,r[i]=n[0],r[i+1]=n[1],r[i+2]=n[2],r[i+3]=n[3]}function a(e,r,i){t[0]=e,r[i]=n[3],r[i+1]=n[2],r[i+2]=n[1],r[i+3]=n[0]}function o(e,r){return n[0]=e[r],n[1]=e[r+1],n[2]=e[r+2],n[3]=e[r+3],t[0]}function s(e,r){return n[3]=e[r],n[2]=e[r+1],n[1]=e[r+2],n[0]=e[r+3],t[0]}e.writeFloatLE=r?i:a,e.writeFloatBE=r?a:i,e.readFloatLE=r?o:s,e.readFloatBE=r?s:o}():function(){function t(e,t,n,r){var i=t<0?1:0;if(i&&(t=-t),0===t)e(1/t>0?0:2147483648,n,r);else if(isNaN(t))e(2143289344,n,r);else if(t>34028234663852886e22)e((i<<31|2139095040)>>>0,n,r);else if(t<11754943508222875e-54)e((i<<31|Math.round(t/1401298464324817e-60))>>>0,n,r);else{var a=Math.floor(Math.log(t)/Math.LN2);e((i<<31|a+127<<23|8388607&Math.round(t*Math.pow(2,-a)*8388608))>>>0,n,r)}}function o(e,t,n){var r=e(t,n),i=2*(r>>31)+1,a=r>>>23&255,o=8388607&r;return 255===a?o?NaN:i*(1/0):0===a?1401298464324817e-60*i*o:i*Math.pow(2,a-150)*(o+8388608)}e.writeFloatLE=t.bind(null,n),e.writeFloatBE=t.bind(null,r),e.readFloatLE=o.bind(null,i),e.readFloatBE=o.bind(null,a)}(),"undefined"!=typeof Float64Array?function(){var t=new Float64Array([-0]),n=new Uint8Array(t.buffer),r=128===n[7];function i(e,r,i){t[0]=e,r[i]=n[0],r[i+1]=n[1],r[i+2]=n[2],r[i+3]=n[3],r[i+4]=n[4],r[i+5]=n[5],r[i+6]=n[6],r[i+7]=n[7]}function a(e,r,i){t[0]=e,r[i]=n[7],r[i+1]=n[6],r[i+2]=n[5],r[i+3]=n[4],r[i+4]=n[3],r[i+5]=n[2],r[i+6]=n[1],r[i+7]=n[0]}function o(e,r){return n[0]=e[r],n[1]=e[r+1],n[2]=e[r+2],n[3]=e[r+3],n[4]=e[r+4],n[5]=e[r+5],n[6]=e[r+6],n[7]=e[r+7],t[0]}function s(e,r){return n[7]=e[r],n[6]=e[r+1],n[5]=e[r+2],n[4]=e[r+3],n[3]=e[r+4],n[2]=e[r+5],n[1]=e[r+6],n[0]=e[r+7],t[0]}e.writeDoubleLE=r?i:a,e.writeDoubleBE=r?a:i,e.readDoubleLE=r?o:s,e.readDoubleBE=r?s:o}():function(){function t(e,t,n,r,i,a){var o=r<0?1:0;if(o&&(r=-r),0===r)e(0,i,a+t),e(1/r>0?0:2147483648,i,a+n);else if(isNaN(r))e(0,i,a+t),e(2146959360,i,a+n);else if(r>17976931348623157e292)e(0,i,a+t),e((o<<31|2146435072)>>>0,i,a+n);else{var s;if(r<22250738585072014e-324)e((s=r/5e-324)>>>0,i,a+t),e((o<<31|s/4294967296)>>>0,i,a+n);else{var l=Math.floor(Math.log(r)/Math.LN2);1024===l&&(l=1023),e(4503599627370496*(s=r*Math.pow(2,-l))>>>0,i,a+t),e((o<<31|l+1023<<20|1048576*s&1048575)>>>0,i,a+n)}}}function o(e,t,n,r,i){var a=e(r,i+t),o=e(r,i+n),s=2*(o>>31)+1,l=o>>>20&2047,c=4294967296*(1048575&o)+a;return 2047===l?c?NaN:s*(1/0):0===l?5e-324*s*c:s*Math.pow(2,l-1075)*(c+4503599627370496)}e.writeDoubleLE=t.bind(null,n,0,4),e.writeDoubleBE=t.bind(null,r,4,0),e.readDoubleLE=o.bind(null,i,0,4),e.readDoubleBE=o.bind(null,a,4,0)}(),e}function n(e,t,n){t[n]=255&e,t[n+1]=e>>>8&255,t[n+2]=e>>>16&255,t[n+3]=e>>>24}function r(e,t,n){t[n]=e>>>24,t[n+1]=e>>>16&255,t[n+2]=e>>>8&255,t[n+3]=255&e}function i(e,t){return(e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24)>>>0}function a(e,t){return(e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3])>>>0}e.exports=t(t)},1925:module=>{"use strict";function inquire(moduleName){try{var mod=eval("quire".replace(/^/,"re"))(moduleName);if(mod&&(mod.length||Object.keys(mod).length))return mod}catch(e){}return null}module.exports=inquire},2459:(e,t)=>{"use strict";var n=t,r=n.isAbsolute=function(e){return/^(?:\/|\w+:)/.test(e)},i=n.normalize=function(e){var t=(e=e.replace(/\\/g,"/").replace(/\/{2,}/g,"/")).split("/"),n=r(e),i="";n&&(i=t.shift()+"/");for(var a=0;a0&&".."!==t[a-1]?t.splice(--a,2):n?t.splice(a,1):++a:"."===t[a]?t.splice(a,1):++a;return i+t.join("/")};n.resolve=function(e,t,n){return n||(t=i(t)),r(t)?t:(n||(e=i(e)),(e=e.replace(/(?:\/|^)[^/]+$/,"")).length?i(e+"/"+t):t)}},4226:e=>{"use strict";e.exports=function(e,t,n){var r=n||8192,i=r>>>1,a=null,o=r;return function(n){if(n<1||n>i)return e(n);o+n>r&&(a=e(r),o=0);var s=t.call(a,o,o+=n);return 7&o&&(o=1+(7|o)),s}}},2971:(e,t)=>{"use strict";var n=t;n.length=function(e){for(var t=0,n=0,r=0;r191&&r<224?a[o++]=(31&r)<<6|63&e[t++]:r>239&&r<365?(r=((7&r)<<18|(63&e[t++])<<12|(63&e[t++])<<6|63&e[t++])-65536,a[o++]=55296+(r>>10),a[o++]=56320+(1023&r)):a[o++]=(15&r)<<12|(63&e[t++])<<6|63&e[t++],o>8191&&((i||(i=[])).push(String.fromCharCode.apply(String,a)),o=0);return i?(o&&i.push(String.fromCharCode.apply(String,a.slice(0,o))),i.join("")):String.fromCharCode.apply(String,a.slice(0,o))},n.write=function(e,t,n){for(var r,i,a=n,o=0;o>6|192,t[n++]=63&r|128):55296==(64512&r)&&56320==(64512&(i=e.charCodeAt(o+1)))?(r=65536+((1023&r)<<10)+(1023&i),++o,t[n++]=r>>18|240,t[n++]=r>>12&63|128,t[n++]=r>>6&63|128,t[n++]=63&r|128):(t[n++]=r>>12|224,t[n++]=r>>6&63|128,t[n++]=63&r|128);return n-a}},7951:(e,t,n)=>{const r=n(2880),i={};for(const e of Object.keys(r))i[r[e]]=e;const a={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};e.exports=a;for(const e of Object.keys(a)){if(!("channels"in a[e]))throw new Error("missing channels property: "+e);if(!("labels"in a[e]))throw new Error("missing channel labels property: "+e);if(a[e].labels.length!==a[e].channels)throw new Error("channel and label counts mismatch: "+e);const{channels:t,labels:n}=a[e];delete a[e].channels,delete a[e].labels,Object.defineProperty(a[e],"channels",{value:t}),Object.defineProperty(a[e],"labels",{value:n})}a.rgb.hsl=function(e){const t=e[0]/255,n=e[1]/255,r=e[2]/255,i=Math.min(t,n,r),a=Math.max(t,n,r),o=a-i;let s,l;a===i?s=0:t===a?s=(n-r)/o:n===a?s=2+(r-t)/o:r===a&&(s=4+(t-n)/o),s=Math.min(60*s,360),s<0&&(s+=360);const c=(i+a)/2;return l=a===i?0:c<=.5?o/(a+i):o/(2-a-i),[s,100*l,100*c]},a.rgb.hsv=function(e){let t,n,r,i,a;const o=e[0]/255,s=e[1]/255,l=e[2]/255,c=Math.max(o,s,l),u=c-Math.min(o,s,l),d=function(e){return(c-e)/6/u+.5};return 0===u?(i=0,a=0):(a=u/c,t=d(o),n=d(s),r=d(l),o===c?i=r-n:s===c?i=1/3+t-r:l===c&&(i=2/3+n-t),i<0?i+=1:i>1&&(i-=1)),[360*i,100*a,100*c]},a.rgb.hwb=function(e){const t=e[0],n=e[1];let r=e[2];const i=a.rgb.hsl(e)[0],o=1/255*Math.min(t,Math.min(n,r));return r=1-1/255*Math.max(t,Math.max(n,r)),[i,100*o,100*r]},a.rgb.cmyk=function(e){const t=e[0]/255,n=e[1]/255,r=e[2]/255,i=Math.min(1-t,1-n,1-r);return[100*((1-t-i)/(1-i)||0),100*((1-n-i)/(1-i)||0),100*((1-r-i)/(1-i)||0),100*i]},a.rgb.keyword=function(e){const t=i[e];if(t)return t;let n,a=1/0;for(const t of Object.keys(r)){const i=r[t],l=(s=i,((o=e)[0]-s[0])**2+(o[1]-s[1])**2+(o[2]-s[2])**2);l.04045?((t+.055)/1.055)**2.4:t/12.92,n=n>.04045?((n+.055)/1.055)**2.4:n/12.92,r=r>.04045?((r+.055)/1.055)**2.4:r/12.92;return[100*(.4124*t+.3576*n+.1805*r),100*(.2126*t+.7152*n+.0722*r),100*(.0193*t+.1192*n+.9505*r)]},a.rgb.lab=function(e){const t=a.rgb.xyz(e);let n=t[0],r=t[1],i=t[2];n/=95.047,r/=100,i/=108.883,n=n>.008856?n**(1/3):7.787*n+16/116,r=r>.008856?r**(1/3):7.787*r+16/116,i=i>.008856?i**(1/3):7.787*i+16/116;return[116*r-16,500*(n-r),200*(r-i)]},a.hsl.rgb=function(e){const t=e[0]/360,n=e[1]/100,r=e[2]/100;let i,a,o;if(0===n)return o=255*r,[o,o,o];i=r<.5?r*(1+n):r+n-r*n;const s=2*r-i,l=[0,0,0];for(let e=0;e<3;e++)a=t+1/3*-(e-1),a<0&&a++,a>1&&a--,o=6*a<1?s+6*(i-s)*a:2*a<1?i:3*a<2?s+(i-s)*(2/3-a)*6:s,l[e]=255*o;return l},a.hsl.hsv=function(e){const t=e[0];let n=e[1]/100,r=e[2]/100,i=n;const a=Math.max(r,.01);r*=2,n*=r<=1?r:2-r,i*=a<=1?a:2-a;return[t,100*(0===r?2*i/(a+i):2*n/(r+n)),100*((r+n)/2)]},a.hsv.rgb=function(e){const t=e[0]/60,n=e[1]/100;let r=e[2]/100;const i=Math.floor(t)%6,a=t-Math.floor(t),o=255*r*(1-n),s=255*r*(1-n*a),l=255*r*(1-n*(1-a));switch(r*=255,i){case 0:return[r,l,o];case 1:return[s,r,o];case 2:return[o,r,l];case 3:return[o,s,r];case 4:return[l,o,r];case 5:return[r,o,s]}},a.hsv.hsl=function(e){const t=e[0],n=e[1]/100,r=e[2]/100,i=Math.max(r,.01);let a,o;o=(2-n)*r;const s=(2-n)*i;return a=n*i,a/=s<=1?s:2-s,a=a||0,o/=2,[t,100*a,100*o]},a.hwb.rgb=function(e){const t=e[0]/360;let n=e[1]/100,r=e[2]/100;const i=n+r;let a;i>1&&(n/=i,r/=i);const o=Math.floor(6*t),s=1-r;a=6*t-o,1&o&&(a=1-a);const l=n+a*(s-n);let c,u,d;switch(o){default:case 6:case 0:c=s,u=l,d=n;break;case 1:c=l,u=s,d=n;break;case 2:c=n,u=s,d=l;break;case 3:c=n,u=l,d=s;break;case 4:c=l,u=n,d=s;break;case 5:c=s,u=n,d=l}return[255*c,255*u,255*d]},a.cmyk.rgb=function(e){const t=e[0]/100,n=e[1]/100,r=e[2]/100,i=e[3]/100;return[255*(1-Math.min(1,t*(1-i)+i)),255*(1-Math.min(1,n*(1-i)+i)),255*(1-Math.min(1,r*(1-i)+i))]},a.xyz.rgb=function(e){const t=e[0]/100,n=e[1]/100,r=e[2]/100;let i,a,o;return i=3.2406*t+-1.5372*n+-.4986*r,a=-.9689*t+1.8758*n+.0415*r,o=.0557*t+-.204*n+1.057*r,i=i>.0031308?1.055*i**(1/2.4)-.055:12.92*i,a=a>.0031308?1.055*a**(1/2.4)-.055:12.92*a,o=o>.0031308?1.055*o**(1/2.4)-.055:12.92*o,i=Math.min(Math.max(0,i),1),a=Math.min(Math.max(0,a),1),o=Math.min(Math.max(0,o),1),[255*i,255*a,255*o]},a.xyz.lab=function(e){let t=e[0],n=e[1],r=e[2];t/=95.047,n/=100,r/=108.883,t=t>.008856?t**(1/3):7.787*t+16/116,n=n>.008856?n**(1/3):7.787*n+16/116,r=r>.008856?r**(1/3):7.787*r+16/116;return[116*n-16,500*(t-n),200*(n-r)]},a.lab.xyz=function(e){let t,n,r;n=(e[0]+16)/116,t=e[1]/500+n,r=n-e[2]/200;const i=n**3,a=t**3,o=r**3;return n=i>.008856?i:(n-16/116)/7.787,t=a>.008856?a:(t-16/116)/7.787,r=o>.008856?o:(r-16/116)/7.787,t*=95.047,n*=100,r*=108.883,[t,n,r]},a.lab.lch=function(e){const t=e[0],n=e[1],r=e[2];let i;i=360*Math.atan2(r,n)/2/Math.PI,i<0&&(i+=360);return[t,Math.sqrt(n*n+r*r),i]},a.lch.lab=function(e){const t=e[0],n=e[1],r=e[2]/360*2*Math.PI;return[t,n*Math.cos(r),n*Math.sin(r)]},a.rgb.ansi16=function(e,t=null){const[n,r,i]=e;let o=null===t?a.rgb.hsv(e)[2]:t;if(o=Math.round(o/50),0===o)return 30;let s=30+(Math.round(i/255)<<2|Math.round(r/255)<<1|Math.round(n/255));return 2===o&&(s+=60),s},a.hsv.ansi16=function(e){return a.rgb.ansi16(a.hsv.rgb(e),e[2])},a.rgb.ansi256=function(e){const t=e[0],n=e[1],r=e[2];if(t===n&&n===r)return t<8?16:t>248?231:Math.round((t-8)/247*24)+232;return 16+36*Math.round(t/255*5)+6*Math.round(n/255*5)+Math.round(r/255*5)},a.ansi16.rgb=function(e){let t=e%10;if(0===t||7===t)return e>50&&(t+=3.5),t=t/10.5*255,[t,t,t];const n=.5*(1+~~(e>50));return[(1&t)*n*255,(t>>1&1)*n*255,(t>>2&1)*n*255]},a.ansi256.rgb=function(e){if(e>=232){const t=10*(e-232)+8;return[t,t,t]}let t;e-=16;return[Math.floor(e/36)/5*255,Math.floor((t=e%36)/6)/5*255,t%6/5*255]},a.rgb.hex=function(e){const t=(((255&Math.round(e[0]))<<16)+((255&Math.round(e[1]))<<8)+(255&Math.round(e[2]))).toString(16).toUpperCase();return"000000".substring(t.length)+t},a.hex.rgb=function(e){const t=e.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!t)return[0,0,0];let n=t[0];3===t[0].length&&(n=n.split("").map((e=>e+e)).join(""));const r=parseInt(n,16);return[r>>16&255,r>>8&255,255&r]},a.rgb.hcg=function(e){const t=e[0]/255,n=e[1]/255,r=e[2]/255,i=Math.max(Math.max(t,n),r),a=Math.min(Math.min(t,n),r),o=i-a;let s,l;return s=o<1?a/(1-o):0,l=o<=0?0:i===t?(n-r)/o%6:i===n?2+(r-t)/o:4+(t-n)/o,l/=6,l%=1,[360*l,100*o,100*s]},a.hsl.hcg=function(e){const t=e[1]/100,n=e[2]/100,r=n<.5?2*t*n:2*t*(1-n);let i=0;return r<1&&(i=(n-.5*r)/(1-r)),[e[0],100*r,100*i]},a.hsv.hcg=function(e){const t=e[1]/100,n=e[2]/100,r=t*n;let i=0;return r<1&&(i=(n-r)/(1-r)),[e[0],100*r,100*i]},a.hcg.rgb=function(e){const t=e[0]/360,n=e[1]/100,r=e[2]/100;if(0===n)return[255*r,255*r,255*r];const i=[0,0,0],a=t%1*6,o=a%1,s=1-o;let l=0;switch(Math.floor(a)){case 0:i[0]=1,i[1]=o,i[2]=0;break;case 1:i[0]=s,i[1]=1,i[2]=0;break;case 2:i[0]=0,i[1]=1,i[2]=o;break;case 3:i[0]=0,i[1]=s,i[2]=1;break;case 4:i[0]=o,i[1]=0,i[2]=1;break;default:i[0]=1,i[1]=0,i[2]=s}return l=(1-n)*r,[255*(n*i[0]+l),255*(n*i[1]+l),255*(n*i[2]+l)]},a.hcg.hsv=function(e){const t=e[1]/100,n=t+e[2]/100*(1-t);let r=0;return n>0&&(r=t/n),[e[0],100*r,100*n]},a.hcg.hsl=function(e){const t=e[1]/100,n=e[2]/100*(1-t)+.5*t;let r=0;return n>0&&n<.5?r=t/(2*n):n>=.5&&n<1&&(r=t/(2*(1-n))),[e[0],100*r,100*n]},a.hcg.hwb=function(e){const t=e[1]/100,n=t+e[2]/100*(1-t);return[e[0],100*(n-t),100*(1-n)]},a.hwb.hcg=function(e){const t=e[1]/100,n=1-e[2]/100,r=n-t;let i=0;return r<1&&(i=(n-r)/(1-r)),[e[0],100*r,100*i]},a.apple.rgb=function(e){return[e[0]/65535*255,e[1]/65535*255,e[2]/65535*255]},a.rgb.apple=function(e){return[e[0]/255*65535,e[1]/255*65535,e[2]/255*65535]},a.gray.rgb=function(e){return[e[0]/100*255,e[0]/100*255,e[0]/100*255]},a.gray.hsl=function(e){return[0,0,e[0]]},a.gray.hsv=a.gray.hsl,a.gray.hwb=function(e){return[0,100,e[0]]},a.gray.cmyk=function(e){return[0,0,0,e[0]]},a.gray.lab=function(e){return[e[0],0,0]},a.gray.hex=function(e){const t=255&Math.round(e[0]/100*255),n=((t<<16)+(t<<8)+t).toString(16).toUpperCase();return"000000".substring(n.length)+n},a.rgb.gray=function(e){return[(e[0]+e[1]+e[2])/3/255*100]}},8666:(e,t,n)=>{const r=n(7951),i=n(1247),a={};Object.keys(r).forEach((e=>{a[e]={},Object.defineProperty(a[e],"channels",{value:r[e].channels}),Object.defineProperty(a[e],"labels",{value:r[e].labels});const t=i(e);Object.keys(t).forEach((n=>{const r=t[n];a[e][n]=function(e){const t=function(...t){const n=t[0];if(null==n)return n;n.length>1&&(t=n);const r=e(t);if("object"==typeof r)for(let e=r.length,t=0;t1&&(t=n),e(t))};return"conversion"in e&&(t.conversion=e.conversion),t}(r)}))})),e.exports=a},1247:(e,t,n)=>{const r=n(7951);function i(e){const t=function(){const e={},t=Object.keys(r);for(let n=t.length,r=0;r{"use strict";e.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},6250:(e,t,n)=>{var r=n(2880),i=n(6852),a=Object.hasOwnProperty,o=Object.create(null);for(var s in r)a.call(r,s)&&(o[r[s]]=s);var l=e.exports={to:{},get:{}};function c(e,t,n){return Math.min(Math.max(t,e),n)}function u(e){var t=Math.round(e).toString(16).toUpperCase();return t.length<2?"0"+t:t}l.get=function(e){var t,n;switch(e.substring(0,3).toLowerCase()){case"hsl":t=l.get.hsl(e),n="hsl";break;case"hwb":t=l.get.hwb(e),n="hwb";break;default:t=l.get.rgb(e),n="rgb"}return t?{model:n,value:t}:null},l.get.rgb=function(e){if(!e)return null;var t,n,i,o=[0,0,0,1];if(t=e.match(/^#([a-f0-9]{6})([a-f0-9]{2})?$/i)){for(i=t[2],t=t[1],n=0;n<3;n++){var s=2*n;o[n]=parseInt(t.slice(s,s+2),16)}i&&(o[3]=parseInt(i,16)/255)}else if(t=e.match(/^#([a-f0-9]{3,4})$/i)){for(i=(t=t[1])[3],n=0;n<3;n++)o[n]=parseInt(t[n]+t[n],16);i&&(o[3]=parseInt(i+i,16)/255)}else if(t=e.match(/^rgba?\(\s*([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/)){for(n=0;n<3;n++)o[n]=parseInt(t[n+1],0);t[4]&&(t[5]?o[3]=.01*parseFloat(t[4]):o[3]=parseFloat(t[4]))}else{if(!(t=e.match(/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/)))return(t=e.match(/^(\w+)$/))?"transparent"===t[1]?[0,0,0,0]:a.call(r,t[1])?((o=r[t[1]])[3]=1,o):null:null;for(n=0;n<3;n++)o[n]=Math.round(2.55*parseFloat(t[n+1]));t[4]&&(t[5]?o[3]=.01*parseFloat(t[4]):o[3]=parseFloat(t[4]))}for(n=0;n<3;n++)o[n]=c(o[n],0,255);return o[3]=c(o[3],0,1),o},l.get.hsl=function(e){if(!e)return null;var t=e.match(/^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d\.]+)%\s*,?\s*([+-]?[\d\.]+)%\s*(?:[,|\/]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/);if(t){var n=parseFloat(t[4]);return[(parseFloat(t[1])%360+360)%360,c(parseFloat(t[2]),0,100),c(parseFloat(t[3]),0,100),c(isNaN(n)?1:n,0,1)]}return null},l.get.hwb=function(e){if(!e)return null;var t=e.match(/^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/);if(t){var n=parseFloat(t[4]);return[(parseFloat(t[1])%360+360)%360,c(parseFloat(t[2]),0,100),c(parseFloat(t[3]),0,100),c(isNaN(n)?1:n,0,1)]}return null},l.to.hex=function(){var e=i(arguments);return"#"+u(e[0])+u(e[1])+u(e[2])+(e[3]<1?u(Math.round(255*e[3])):"")},l.to.rgb=function(){var e=i(arguments);return e.length<4||1===e[3]?"rgb("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+")":"rgba("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+", "+e[3]+")"},l.to.rgb.percent=function(){var e=i(arguments),t=Math.round(e[0]/255*100),n=Math.round(e[1]/255*100),r=Math.round(e[2]/255*100);return e.length<4||1===e[3]?"rgb("+t+"%, "+n+"%, "+r+"%)":"rgba("+t+"%, "+n+"%, "+r+"%, "+e[3]+")"},l.to.hsl=function(){var e=i(arguments);return e.length<4||1===e[3]?"hsl("+e[0]+", "+e[1]+"%, "+e[2]+"%)":"hsla("+e[0]+", "+e[1]+"%, "+e[2]+"%, "+e[3]+")"},l.to.hwb=function(){var e=i(arguments),t="";return e.length>=4&&1!==e[3]&&(t=", "+e[3]),"hwb("+e[0]+", "+e[1]+"%, "+e[2]+"%"+t+")"},l.to.keyword=function(e){return o[e.slice(0,3)]}},4308:(e,t,n)=>{const r=n(6250),i=n(8666),a=["keyword","gray","hex"],o={};for(const e of Object.keys(i))o[[...i[e].labels].sort().join("")]=e;const s={};function l(e,t){if(!(this instanceof l))return new l(e,t);if(t&&t in a&&(t=null),t&&!(t in i))throw new Error("Unknown model: "+t);let n,c;if(null==e)this.model="rgb",this.color=[0,0,0],this.valpha=1;else if(e instanceof l)this.model=e.model,this.color=[...e.color],this.valpha=e.valpha;else if("string"==typeof e){const t=r.get(e);if(null===t)throw new Error("Unable to parse color from string: "+e);this.model=t.model,c=i[this.model].channels,this.color=t.value.slice(0,c),this.valpha="number"==typeof t.value[c]?t.value[c]:1}else if(e.length>0){this.model=t||"rgb",c=i[this.model].channels;const n=Array.prototype.slice.call(e,0,c);this.color=p(n,c),this.valpha="number"==typeof e[c]?e[c]:1}else if("number"==typeof e)this.model="rgb",this.color=[e>>16&255,e>>8&255,255&e],this.valpha=1;else{this.valpha=1;const t=Object.keys(e);"alpha"in e&&(t.splice(t.indexOf("alpha"),1),this.valpha="number"==typeof e.alpha?e.alpha:0);const r=t.sort().join("");if(!(r in o))throw new Error("Unable to parse color from object: "+JSON.stringify(e));this.model=o[r];const{labels:a}=i[this.model],s=[];for(n=0;n(e%360+360)%360)),saturationl:u("hsl",1,d(100)),lightness:u("hsl",2,d(100)),saturationv:u("hsv",1,d(100)),value:u("hsv",2,d(100)),chroma:u("hcg",1,d(100)),gray:u("hcg",2,d(100)),white:u("hwb",1,d(100)),wblack:u("hwb",2,d(100)),cyan:u("cmyk",0,d(100)),magenta:u("cmyk",1,d(100)),yellow:u("cmyk",2,d(100)),black:u("cmyk",3,d(100)),x:u("xyz",0,d(95.047)),y:u("xyz",1,d(100)),z:u("xyz",2,d(108.833)),l:u("lab",0,d(100)),a:u("lab",1),b:u("lab",2),keyword(e){return void 0!==e?new l(e):i[this.model].keyword(this.color)},hex(e){return void 0!==e?new l(e):r.to.hex(this.rgb().round().color)},hexa(e){if(void 0!==e)return new l(e);const t=this.rgb().round().color;let n=Math.round(255*this.valpha).toString(16).toUpperCase();return 1===n.length&&(n="0"+n),r.to.hex(t)+n},rgbNumber(){const e=this.rgb().color;return(255&e[0])<<16|(255&e[1])<<8|255&e[2]},luminosity(){const e=this.rgb().color,t=[];for(const[n,r]of e.entries()){const e=r/255;t[n]=e<=.04045?e/12.92:((e+.055)/1.055)**2.4}return.2126*t[0]+.7152*t[1]+.0722*t[2]},contrast(e){const t=this.luminosity(),n=e.luminosity();return t>n?(t+.05)/(n+.05):(n+.05)/(t+.05)},level(e){const t=this.contrast(e);return t>=7?"AAA":t>=4.5?"AA":""},isDark(){const e=this.rgb().color;return(2126*e[0]+7152*e[1]+722*e[2])/1e4<128},isLight(){return!this.isDark()},negate(){const e=this.rgb();for(let t=0;t<3;t++)e.color[t]=255-e.color[t];return e},lighten(e){const t=this.hsl();return t.color[2]+=t.color[2]*e,t},darken(e){const t=this.hsl();return t.color[2]-=t.color[2]*e,t},saturate(e){const t=this.hsl();return t.color[1]+=t.color[1]*e,t},desaturate(e){const t=this.hsl();return t.color[1]-=t.color[1]*e,t},whiten(e){const t=this.hwb();return t.color[1]+=t.color[1]*e,t},blacken(e){const t=this.hwb();return t.color[2]+=t.color[2]*e,t},grayscale(){const e=this.rgb().color,t=.3*e[0]+.59*e[1]+.11*e[2];return l.rgb(t,t,t)},fade(e){return this.alpha(this.valpha-this.valpha*e)},opaquer(e){return this.alpha(this.valpha+this.valpha*e)},rotate(e){const t=this.hsl();let n=t.color[0];return n=(n+e)%360,n=n<0?360+n:n,t.color[0]=n,t},mix(e,t){if(!e||!e.rgb)throw new Error('Argument to "mix" was not a Color instance, but rather an instance of '+typeof e);const n=e.rgb(),r=this.rgb(),i=void 0===t?.5:t,a=2*i-1,o=n.alpha()-r.alpha(),s=((a*o==-1?a:(a+o)/(1+a*o))+1)/2,c=1-s;return l.rgb(s*n.red()+c*r.red(),s*n.green()+c*r.green(),s*n.blue()+c*r.blue(),n.alpha()*i+r.alpha()*(1-i))}};for(const e of Object.keys(i)){if(a.includes(e))continue;const{channels:t}=i[e];l.prototype[e]=function(...t){return this.model===e?new l(this):t.length>0?new l(t,e):new l([...(n=i[this.model][e].raw(this.color),Array.isArray(n)?n:[n]),this.valpha],e);var n},l[e]=function(...n){let r=n[0];return"number"==typeof r&&(r=p(n,t)),new l(r,e)}}function c(e){return function(t){return function(e,t){return Number(e.toFixed(t))}(t,e)}}function u(e,t,n){e=Array.isArray(e)?e:[e];for(const r of e)(s[r]||(s[r]=[]))[t]=n;return e=e[0],function(r){let i;return void 0!==r?(n&&(r=n(r)),i=this[e](),i.color[t]=r,i):(i=this[e]().color[t],n&&(i=n(i)),i)}}function d(e){return function(t){return Math.max(0,Math.min(e,t))}}function p(e,t){for(let n=0;n=t.status}function a(e){try{e.dispatchEvent(new MouseEvent("click"))}catch(n){var t=document.createEvent("MouseEvents");t.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),e.dispatchEvent(t)}}var o="object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof n.g&&n.g.global===n.g?n.g:void 0,s=o.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),l=o.saveAs||("object"!=typeof window||window!==o?function(){}:"download"in HTMLAnchorElement.prototype&&!s?function(e,t,n){var s=o.URL||o.webkitURL,l=document.createElement("a");t=t||e.name||"download",l.download=t,l.rel="noopener","string"==typeof e?(l.href=e,l.origin===location.origin?a(l):i(l.href)?r(e,t,n):a(l,l.target="_blank")):(l.href=s.createObjectURL(e),setTimeout((function(){s.revokeObjectURL(l.href)}),4e4),setTimeout((function(){a(l)}),0))}:"msSaveOrOpenBlob"in navigator?function(e,n,o){if(n=n||e.name||"download","string"!=typeof e)navigator.msSaveOrOpenBlob(t(e,o),n);else if(i(e))r(e,n,o);else{var s=document.createElement("a");s.href=e,s.target="_blank",setTimeout((function(){a(s)}))}}:function(e,t,n,i){if((i=i||open("","_blank"))&&(i.document.title=i.document.body.innerText="downloading..."),"string"==typeof e)return r(e,t,n);var a="application/octet-stream"===e.type,l=/constructor/i.test(o.HTMLElement)||o.safari,c=/CriOS\/[\d]+/.test(navigator.userAgent);if((c||a&&l||s)&&"undefined"!=typeof FileReader){var u=new FileReader;u.onloadend=function(){var e=u.result;e=c?e:e.replace(/^data:[^;]*;/,"data:attachment/file;"),i?i.location.href=e:location=e,i=null},u.readAsDataURL(e)}else{var d=o.URL||o.webkitURL,p=d.createObjectURL(e);i?i.location=p:location.href=p,i=null,setTimeout((function(){d.revokeObjectURL(p)}),4e4)}});o.saveAs=l.saveAs=l,e.exports=l})?r.apply(t,i):r)||(e.exports=a)},7842:(e,t,n)=>{e=n.nmd(e);var r="__lodash_hash_undefined__",i=1,a=2,o=9007199254740991,s="[object Arguments]",l="[object Array]",c="[object AsyncFunction]",u="[object Boolean]",d="[object Date]",p="[object Error]",h="[object Function]",f="[object GeneratorFunction]",m="[object Map]",g="[object Number]",y="[object Null]",b="[object Object]",v="[object Promise]",w="[object Proxy]",S="[object RegExp]",E="[object Set]",x="[object String]",O="[object Symbol]",_="[object Undefined]",T="[object WeakMap]",C="[object ArrayBuffer]",k="[object DataView]",P=/^\[object .+?Constructor\]$/,R=/^(?:0|[1-9]\d*)$/,A={};A["[object Float32Array]"]=A["[object Float64Array]"]=A["[object Int8Array]"]=A["[object Int16Array]"]=A["[object Int32Array]"]=A["[object Uint8Array]"]=A["[object Uint8ClampedArray]"]=A["[object Uint16Array]"]=A["[object Uint32Array]"]=!0,A[s]=A[l]=A[C]=A[u]=A[k]=A[d]=A[p]=A[h]=A[m]=A[g]=A[b]=A[S]=A[E]=A[x]=A[T]=!1;var D="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g,j="object"==typeof self&&self&&self.Object===Object&&self,I=D||j||Function("return this")(),N=t&&!t.nodeType&&t,L=N&&e&&!e.nodeType&&e,M=L&&L.exports===N,F=M&&D.process,$=function(){try{return F&&F.binding&&F.binding("util")}catch(e){}}(),B=$&&$.isTypedArray;function V(e,t){for(var n=-1,r=null==e?0:e.length;++nc))return!1;var d=s.get(e);if(d&&s.get(t))return d==t;var p=-1,h=!0,f=n&a?new Ce:void 0;for(s.set(e,t),s.set(t,e);++p-1},_e.prototype.set=function(e,t){var n=this.__data__,r=Re(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this},Te.prototype.clear=function(){this.size=0,this.__data__={hash:new Oe,map:new(pe||_e),string:new Oe}},Te.prototype.delete=function(e){var t=Fe(this,e).delete(e);return this.size-=t?1:0,t},Te.prototype.get=function(e){return Fe(this,e).get(e)},Te.prototype.has=function(e){return Fe(this,e).has(e)},Te.prototype.set=function(e,t){var n=Fe(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this},Ce.prototype.add=Ce.prototype.push=function(e){return this.__data__.set(e,r),this},Ce.prototype.has=function(e){return this.__data__.has(e)},ke.prototype.clear=function(){this.__data__=new _e,this.size=0},ke.prototype.delete=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n},ke.prototype.get=function(e){return this.__data__.get(e)},ke.prototype.has=function(e){return this.__data__.has(e)},ke.prototype.set=function(e,t){var n=this.__data__;if(n instanceof _e){var r=n.__data__;if(!pe||r.length<199)return r.push([e,t]),this.size=++n.size,this;n=this.__data__=new Te(r)}return n.set(e,t),this.size=n.size,this};var Be=le?function(e){return null==e?[]:(e=Object(e),function(e,t){for(var n=-1,r=null==e?0:e.length,i=0,a=[];++n-1&&e%1==0&&e-1&&e%1==0&&e<=o}function Ye(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function Xe(e){return null!=e&&"object"==typeof e}var Je=B?function(e){return function(t){return e(t)}}(B):function(e){return Xe(e)&&Ke(e.length)&&!!A[Ae(e)]};function Ze(e){return null!=(t=e)&&Ke(t.length)&&!Qe(t)?Pe(e):Ne(e);var t}e.exports=function(e,t){return je(e,t)}},1664:e=>{"use strict";var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,i){for(var a,o,s=function(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),l=1;l{"use strict";var r=n(6441);function i(){}function a(){}a.resetWarningCache=i,e.exports=function(){function e(e,t,n,i,a,o){if(o!==r){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:a,resetWarningCache:i};return n.PropTypes=n,n}},2688:(e,t,n)=>{e.exports=n(362)()},6441:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},585:(e,t,n)=>{"use strict";e.exports=n(5481)},3804:(e,t,n)=>{"use strict";var r=t,i=n(2775),a=n(6866);function o(e,t,n,r){var a=!1;if(t.resolvedType)if(t.resolvedType instanceof i){e("switch(d%s){",r);for(var o=t.resolvedType.values,s=Object.keys(o),l=0;l>>0",r,r);break;case"int32":case"sint32":case"sfixed32":e("m%s=d%s|0",r,r);break;case"uint64":c=!0;case"int64":case"sint64":case"fixed64":case"sfixed64":e("if(util.Long)")("(m%s=util.Long.fromValue(d%s)).unsigned=%j",r,r,c)('else if(typeof d%s==="string")',r)("m%s=parseInt(d%s,10)",r,r)('else if(typeof d%s==="number")',r)("m%s=d%s",r,r)('else if(typeof d%s==="object")',r)("m%s=new util.LongBits(d%s.low>>>0,d%s.high>>>0).toNumber(%s)",r,r,r,c?"true":"");break;case"bytes":e('if(typeof d%s==="string")',r)("util.base64.decode(d%s,m%s=util.newBuffer(util.base64.length(d%s)),0)",r,r,r)("else if(d%s.length >= 0)",r)("m%s=d%s",r,r);break;case"string":e("m%s=String(d%s)",r,r);break;case"bool":e("m%s=Boolean(d%s)",r,r)}}return e}function s(e,t,n,r){if(t.resolvedType)t.resolvedType instanceof i?e("d%s=o.enums===String?(types[%i].values[m%s]===undefined?m%s:types[%i].values[m%s]):m%s",r,n,r,r,n,r,r):e("d%s=types[%i].toObject(m%s,o)",r,n,r);else{var a=!1;switch(t.type){case"double":case"float":e("d%s=o.json&&!isFinite(m%s)?String(m%s):m%s",r,r,r,r);break;case"uint64":a=!0;case"int64":case"sint64":case"fixed64":case"sfixed64":e('if(typeof m%s==="number")',r)("d%s=o.longs===String?String(m%s):m%s",r,r,r)("else")("d%s=o.longs===String?util.Long.prototype.toString.call(m%s):o.longs===Number?new util.LongBits(m%s.low>>>0,m%s.high>>>0).toNumber(%s):m%s",r,r,r,r,a?"true":"",r);break;case"bytes":e("d%s=o.bytes===String?util.base64.encode(m%s,0,m%s.length):o.bytes===Array?Array.prototype.slice.call(m%s):m%s",r,r,r,r,r);break;default:e("d%s=m%s",r,r)}}return e}r.fromObject=function(e){var t=e.fieldsArray,n=a.codegen(["d"],e.name+"$fromObject")("if(d instanceof this.ctor)")("return d");if(!t.length)return n("return new this.ctor");n("var m=new this.ctor");for(var r=0;r{"use strict";e.exports=function(e){var t=a.codegen(["r","l"],e.name+"$decode")("if(!(r instanceof Reader))")("r=Reader.create(r)")("var c=l===undefined?r.len:r.pos+l,m=new this.ctor"+(e.fieldsArray.filter((function(e){return e.map})).length?",k,value":""))("while(r.pos>>3){");for(var n=0;n>>3){")("case 1: k=r.%s(); break",s.keyType)("case 2:"),void 0===i.basic[l]?t("value=types[%i].decode(r,r.uint32())",n):t("value=r.%s()",l),t("break")("default:")("r.skipType(tag2&7)")("break")("}")("}"),void 0!==i.long[s.keyType]?t('%s[typeof k==="object"?util.longToHash(k):k]=value',c):t("%s[k]=value",c)):s.repeated?(t("if(!(%s&&%s.length))",c,c)("%s=[]",c),void 0!==i.packed[l]&&t("if((t&7)===2){")("var c2=r.uint32()+r.pos")("while(r.pos{"use strict";e.exports=function(e){for(var t,n=a.codegen(["m","w"],e.name+"$encode")("if(!w)")("w=Writer.create()"),s=e.fieldsArray.slice().sort(a.compareFieldsById),l=0;l>>0,8|i.mapKey[c.keyType],c.keyType),void 0===p?n("types[%i].encode(%s[ks[i]],w.uint32(18).fork()).ldelim().ldelim()",u,t):n(".uint32(%i).%s(%s[ks[i]]).ldelim()",16|p,d,t),n("}")("}")):c.repeated?(n("if(%s!=null&&%s.length){",t,t),c.packed&&void 0!==i.packed[d]?n("w.uint32(%i).fork()",(c.id<<3|2)>>>0)("for(var i=0;i<%s.length;++i)",t)("w.%s(%s[i])",d,t)("w.ldelim()"):(n("for(var i=0;i<%s.length;++i)",t),void 0===p?o(n,c,u,t+"[i]"):n("w.uint32(%i).%s(%s[i])",(c.id<<3|p)>>>0,d,t)),n("}")):(c.optional&&n("if(%s!=null&&Object.hasOwnProperty.call(m,%j))",t,c.name),void 0===p?o(n,c,u,t):n("w.uint32(%i).%s(%s)",(c.id<<3|p)>>>0,d,t))}return n("return w")};var r=n(2775),i=n(1517),a=n(6866);function o(e,t,n,r){return t.resolvedType.group?e("types[%i].encode(%s,w.uint32(%i)).uint32(%i)",n,r,(t.id<<3|3)>>>0,(t.id<<3|4)>>>0):e("types[%i].encode(%s,w.uint32(%i).fork()).ldelim()",n,r,(t.id<<3|2)>>>0)}},2775:(e,t,n)=>{"use strict";e.exports=o;var r=n(4349);((o.prototype=Object.create(r.prototype)).constructor=o).className="Enum";var i=n(2815),a=n(6866);function o(e,t,n,i,a,o){if(r.call(this,e,n),t&&"object"!=typeof t)throw TypeError("values must be an object");if(this.valuesById={},this.values=Object.create(this.valuesById),this.comment=i,this.comments=a||{},this.valuesOptions=o,this.reserved=void 0,t)for(var s=Object.keys(t),l=0;l{"use strict";e.exports=c;var r=n(4349);((c.prototype=Object.create(r.prototype)).constructor=c).className="Field";var i,a=n(2775),o=n(1517),s=n(6866),l=/^required|optional|repeated$/;function c(e,t,n,i,a,c,u){if(s.isObject(i)?(u=a,c=i,i=a=void 0):s.isObject(a)&&(u=c,c=a,a=void 0),r.call(this,e,c),!s.isInteger(t)||t<0)throw TypeError("id must be a non-negative integer");if(!s.isString(n))throw TypeError("type must be a string");if(void 0!==i&&!l.test(i=i.toString().toLowerCase()))throw TypeError("rule must be a string rule");if(void 0!==a&&!s.isString(a))throw TypeError("extend must be a string");"proto3_optional"===i&&(i="optional"),this.rule=i&&"optional"!==i?i:void 0,this.type=n,this.id=t,this.extend=a||void 0,this.required="required"===i,this.optional=!this.required,this.repeated="repeated"===i,this.map=!1,this.message=null,this.partOf=null,this.typeDefault=null,this.defaultValue=null,this.long=!!s.Long&&void 0!==o.long[n],this.bytes="bytes"===n,this.resolvedType=null,this.extensionField=null,this.declaringField=null,this._packed=null,this.comment=u}c.fromJSON=function(e,t){return new c(e,t.id,t.type,t.rule,t.extend,t.options,t.comment)},Object.defineProperty(c.prototype,"packed",{get:function(){return null===this._packed&&(this._packed=!1!==this.getOption("packed")),this._packed}}),c.prototype.setOption=function(e,t,n){return"packed"===e&&(this._packed=null),r.prototype.setOption.call(this,e,t,n)},c.prototype.toJSON=function(e){var t=!!e&&Boolean(e.keepComments);return s.toObject(["rule","optional"!==this.rule&&this.rule||void 0,"type",this.type,"id",this.id,"extend",this.extend,"options",this.options,"comment",t?this.comment:void 0])},c.prototype.resolve=function(){if(this.resolved)return this;if(void 0===(this.typeDefault=o.defaults[this.type])?(this.resolvedType=(this.declaringField?this.declaringField.parent:this.parent).lookupTypeOrEnum(this.type),this.resolvedType instanceof i?this.typeDefault=null:this.typeDefault=this.resolvedType.values[Object.keys(this.resolvedType.values)[0]]):this.options&&this.options.proto3_optional&&(this.typeDefault=null),this.options&&null!=this.options.default&&(this.typeDefault=this.options.default,this.resolvedType instanceof a&&"string"==typeof this.typeDefault&&(this.typeDefault=this.resolvedType.values[this.typeDefault])),this.options&&(!0!==this.options.packed&&(void 0===this.options.packed||!this.resolvedType||this.resolvedType instanceof a)||delete this.options.packed,Object.keys(this.options).length||(this.options=void 0)),this.long)this.typeDefault=s.Long.fromNumber(this.typeDefault,"u"===this.type.charAt(0)),Object.freeze&&Object.freeze(this.typeDefault);else if(this.bytes&&"string"==typeof this.typeDefault){var e;s.base64.test(this.typeDefault)?s.base64.decode(this.typeDefault,e=s.newBuffer(s.base64.length(this.typeDefault)),0):s.utf8.write(this.typeDefault,e=s.newBuffer(s.utf8.length(this.typeDefault)),0),this.typeDefault=e}return this.map?this.defaultValue=s.emptyObject:this.repeated?this.defaultValue=s.emptyArray:this.defaultValue=this.typeDefault,this.parent instanceof i&&(this.parent.ctor.prototype[this.name]=this.defaultValue),r.prototype.resolve.call(this)},c.d=function(e,t,n,r){return"function"==typeof t?t=s.decorateType(t).name:t&&"object"==typeof t&&(t=s.decorateEnum(t).name),function(i,a){s.decorateType(i.constructor).add(new c(a,e,t,n,{default:r}))}},c._configure=function(e){i=e}},5481:(e,t,n)=>{"use strict";var r=e.exports=n(7134);r.build="light",r.load=function(e,t,n){return"function"==typeof t?(n=t,t=new r.Root):t||(t=new r.Root),t.load(e,n)},r.loadSync=function(e,t){return t||(t=new r.Root),t.loadSync(e)},r.encoder=n(8852),r.decoder=n(9980),r.verifier=n(3040),r.converter=n(3804),r.ReflectionObject=n(4349),r.Namespace=n(2815),r.Root=n(8038),r.Enum=n(2775),r.Type=n(6),r.Field=n(3796),r.OneOf=n(8957),r.MapField=n(9504),r.Service=n(6467),r.Method=n(3055),r.Message=n(6619),r.wrappers=n(6942),r.types=n(1517),r.util=n(6866),r.ReflectionObject._configure(r.Root),r.Namespace._configure(r.Type,r.Service,r.Enum),r.Root._configure(r.Type),r.Field._configure(r.Type)},7134:(e,t,n)=>{"use strict";var r=t;function i(){r.util._configure(),r.Writer._configure(r.BufferWriter),r.Reader._configure(r.BufferReader)}r.build="minimal",r.Writer=n(4301),r.BufferWriter=n(8422),r.Reader=n(1137),r.BufferReader=n(4010),r.util=n(5382),r.rpc=n(9691),r.roots=n(381),r.configure=i,i()},9504:(e,t,n)=>{"use strict";e.exports=o;var r=n(3796);((o.prototype=Object.create(r.prototype)).constructor=o).className="MapField";var i=n(1517),a=n(6866);function o(e,t,n,i,o,s){if(r.call(this,e,t,i,void 0,void 0,o,s),!a.isString(n))throw TypeError("keyType must be a string");this.keyType=n,this.resolvedKeyType=null,this.map=!0}o.fromJSON=function(e,t){return new o(e,t.id,t.keyType,t.type,t.options,t.comment)},o.prototype.toJSON=function(e){var t=!!e&&Boolean(e.keepComments);return a.toObject(["keyType",this.keyType,"type",this.type,"id",this.id,"extend",this.extend,"options",this.options,"comment",t?this.comment:void 0])},o.prototype.resolve=function(){if(this.resolved)return this;if(void 0===i.mapKey[this.keyType])throw Error("invalid key type: "+this.keyType);return r.prototype.resolve.call(this)},o.d=function(e,t,n){return"function"==typeof n?n=a.decorateType(n).name:n&&"object"==typeof n&&(n=a.decorateEnum(n).name),function(r,i){a.decorateType(r.constructor).add(new o(i,e,t,n))}}},6619:(e,t,n)=>{"use strict";e.exports=i;var r=n(5382);function i(e){if(e)for(var t=Object.keys(e),n=0;n{"use strict";e.exports=a;var r=n(4349);((a.prototype=Object.create(r.prototype)).constructor=a).className="Method";var i=n(6866);function a(e,t,n,a,o,s,l,c,u){if(i.isObject(o)?(l=o,o=s=void 0):i.isObject(s)&&(l=s,s=void 0),void 0!==t&&!i.isString(t))throw TypeError("type must be a string");if(!i.isString(n))throw TypeError("requestType must be a string");if(!i.isString(a))throw TypeError("responseType must be a string");r.call(this,e,l),this.type=t||"rpc",this.requestType=n,this.requestStream=!!o||void 0,this.responseType=a,this.responseStream=!!s||void 0,this.resolvedRequestType=null,this.resolvedResponseType=null,this.comment=c,this.parsedOptions=u}a.fromJSON=function(e,t){return new a(e,t.type,t.requestType,t.responseType,t.requestStream,t.responseStream,t.options,t.comment,t.parsedOptions)},a.prototype.toJSON=function(e){var t=!!e&&Boolean(e.keepComments);return i.toObject(["type","rpc"!==this.type&&this.type||void 0,"requestType",this.requestType,"requestStream",this.requestStream,"responseType",this.responseType,"responseStream",this.responseStream,"options",this.options,"comment",t?this.comment:void 0,"parsedOptions",this.parsedOptions])},a.prototype.resolve=function(){return this.resolved?this:(this.resolvedRequestType=this.parent.lookupType(this.requestType),this.resolvedResponseType=this.parent.lookupType(this.responseType),r.prototype.resolve.call(this))}},2815:(e,t,n)=>{"use strict";e.exports=d;var r=n(4349);((d.prototype=Object.create(r.prototype)).constructor=d).className="Namespace";var i,a,o,s=n(3796),l=n(6866),c=n(8957);function u(e,t){if(e&&e.length){for(var n={},r=0;rt)return!0;return!1},d.isReservedName=function(e,t){if(e)for(var n=0;n0;){var r=e.shift();if(n.nested&&n.nested[r]){if(!((n=n.nested[r])instanceof d))throw Error("path conflicts with non-namespace objects")}else n.add(n=new d(r))}return t&&n.addJSON(t),n},d.prototype.resolveAll=function(){for(var e=this.nestedArray,t=0;t-1)return r}else if(r instanceof d&&(r=r.lookup(e.slice(1),t,!0)))return r}else for(var i=0;i{"use strict";e.exports=a,a.className="ReflectionObject";var r,i=n(6866);function a(e,t){if(!i.isString(e))throw TypeError("name must be a string");if(t&&!i.isObject(t))throw TypeError("options must be an object");this.options=t,this.parsedOptions=null,this.name=e,this.parent=null,this.resolved=!1,this.comment=null,this.filename=null}Object.defineProperties(a.prototype,{root:{get:function(){for(var e=this;null!==e.parent;)e=e.parent;return e}},fullName:{get:function(){for(var e=[this.name],t=this.parent;t;)e.unshift(t.name),t=t.parent;return e.join(".")}}}),a.prototype.toJSON=function(){throw Error()},a.prototype.onAdd=function(e){this.parent&&this.parent!==e&&this.parent.remove(this),this.parent=e,this.resolved=!1;var t=e.root;t instanceof r&&t._handleAdd(this)},a.prototype.onRemove=function(e){var t=e.root;t instanceof r&&t._handleRemove(this),this.parent=null,this.resolved=!1},a.prototype.resolve=function(){return this.resolved||this.root instanceof r&&(this.resolved=!0),this},a.prototype.getOption=function(e){if(this.options)return this.options[e]},a.prototype.setOption=function(e,t,n){return n&&this.options&&void 0!==this.options[e]||((this.options||(this.options={}))[e]=t),this},a.prototype.setParsedOption=function(e,t,n){this.parsedOptions||(this.parsedOptions=[]);var r=this.parsedOptions;if(n){var a=r.find((function(t){return Object.prototype.hasOwnProperty.call(t,e)}));if(a){var o=a[e];i.setProperty(o,n,t)}else(a={})[e]=i.setProperty({},n,t),r.push(a)}else{var s={};s[e]=t,r.push(s)}return this},a.prototype.setOptions=function(e,t){if(e)for(var n=Object.keys(e),r=0;r{"use strict";e.exports=o;var r=n(4349);((o.prototype=Object.create(r.prototype)).constructor=o).className="OneOf";var i=n(3796),a=n(6866);function o(e,t,n,i){if(Array.isArray(t)||(n=t,t=void 0),r.call(this,e,n),void 0!==t&&!Array.isArray(t))throw TypeError("fieldNames must be an Array");this.oneof=t||[],this.fieldsArray=[],this.comment=i}function s(e){if(e.parent)for(var t=0;t-1&&this.oneof.splice(t,1),e.partOf=null,this},o.prototype.onAdd=function(e){r.prototype.onAdd.call(this,e);for(var t=0;t{"use strict";e.exports=l;var r,i=n(5382),a=i.LongBits,o=i.utf8;function s(e,t){return RangeError("index out of range: "+e.pos+" + "+(t||1)+" > "+e.len)}function l(e){this.buf=e,this.pos=0,this.len=e.length}var c,u="undefined"!=typeof Uint8Array?function(e){if(e instanceof Uint8Array||Array.isArray(e))return new l(e);throw Error("illegal buffer")}:function(e){if(Array.isArray(e))return new l(e);throw Error("illegal buffer")},d=function(){return i.Buffer?function(e){return(l.create=function(e){return i.Buffer.isBuffer(e)?new r(e):u(e)})(e)}:u};function p(){var e=new a(0,0),t=0;if(!(this.len-this.pos>4)){for(;t<3;++t){if(this.pos>=this.len)throw s(this);if(e.lo=(e.lo|(127&this.buf[this.pos])<<7*t)>>>0,this.buf[this.pos++]<128)return e}return e.lo=(e.lo|(127&this.buf[this.pos++])<<7*t)>>>0,e}for(;t<4;++t)if(e.lo=(e.lo|(127&this.buf[this.pos])<<7*t)>>>0,this.buf[this.pos++]<128)return e;if(e.lo=(e.lo|(127&this.buf[this.pos])<<28)>>>0,e.hi=(e.hi|(127&this.buf[this.pos])>>4)>>>0,this.buf[this.pos++]<128)return e;if(t=0,this.len-this.pos>4){for(;t<5;++t)if(e.hi=(e.hi|(127&this.buf[this.pos])<<7*t+3)>>>0,this.buf[this.pos++]<128)return e}else for(;t<5;++t){if(this.pos>=this.len)throw s(this);if(e.hi=(e.hi|(127&this.buf[this.pos])<<7*t+3)>>>0,this.buf[this.pos++]<128)return e}throw Error("invalid varint encoding")}function h(e,t){return(e[t-4]|e[t-3]<<8|e[t-2]<<16|e[t-1]<<24)>>>0}function f(){if(this.pos+8>this.len)throw s(this,8);return new a(h(this.buf,this.pos+=4),h(this.buf,this.pos+=4))}l.create=d(),l.prototype._slice=i.Array.prototype.subarray||i.Array.prototype.slice,l.prototype.uint32=(c=4294967295,function(){if(c=(127&this.buf[this.pos])>>>0,this.buf[this.pos++]<128)return c;if(c=(c|(127&this.buf[this.pos])<<7)>>>0,this.buf[this.pos++]<128)return c;if(c=(c|(127&this.buf[this.pos])<<14)>>>0,this.buf[this.pos++]<128)return c;if(c=(c|(127&this.buf[this.pos])<<21)>>>0,this.buf[this.pos++]<128)return c;if(c=(c|(15&this.buf[this.pos])<<28)>>>0,this.buf[this.pos++]<128)return c;if((this.pos+=5)>this.len)throw this.pos=this.len,s(this,10);return c}),l.prototype.int32=function(){return 0|this.uint32()},l.prototype.sint32=function(){var e=this.uint32();return e>>>1^-(1&e)},l.prototype.bool=function(){return 0!==this.uint32()},l.prototype.fixed32=function(){if(this.pos+4>this.len)throw s(this,4);return h(this.buf,this.pos+=4)},l.prototype.sfixed32=function(){if(this.pos+4>this.len)throw s(this,4);return 0|h(this.buf,this.pos+=4)},l.prototype.float=function(){if(this.pos+4>this.len)throw s(this,4);var e=i.float.readFloatLE(this.buf,this.pos);return this.pos+=4,e},l.prototype.double=function(){if(this.pos+8>this.len)throw s(this,4);var e=i.float.readDoubleLE(this.buf,this.pos);return this.pos+=8,e},l.prototype.bytes=function(){var e=this.uint32(),t=this.pos,n=this.pos+e;if(n>this.len)throw s(this,e);if(this.pos+=e,Array.isArray(this.buf))return this.buf.slice(t,n);if(t===n){var r=i.Buffer;return r?r.alloc(0):new this.buf.constructor(0)}return this._slice.call(this.buf,t,n)},l.prototype.string=function(){var e=this.bytes();return o.read(e,0,e.length)},l.prototype.skip=function(e){if("number"==typeof e){if(this.pos+e>this.len)throw s(this,e);this.pos+=e}else do{if(this.pos>=this.len)throw s(this)}while(128&this.buf[this.pos++]);return this},l.prototype.skipType=function(e){switch(e){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;4!=(e=7&this.uint32());)this.skipType(e);break;case 5:this.skip(4);break;default:throw Error("invalid wire type "+e+" at offset "+this.pos)}return this},l._configure=function(e){r=e,l.create=d(),r._configure();var t=i.Long?"toLong":"toNumber";i.merge(l.prototype,{int64:function(){return p.call(this)[t](!1)},uint64:function(){return p.call(this)[t](!0)},sint64:function(){return p.call(this).zzDecode()[t](!1)},fixed64:function(){return f.call(this)[t](!0)},sfixed64:function(){return f.call(this)[t](!1)}})}},4010:(e,t,n)=>{"use strict";e.exports=a;var r=n(1137);(a.prototype=Object.create(r.prototype)).constructor=a;var i=n(5382);function a(e){r.call(this,e)}a._configure=function(){i.Buffer&&(a.prototype._slice=i.Buffer.prototype.slice)},a.prototype.string=function(){var e=this.uint32();return this.buf.utf8Slice?this.buf.utf8Slice(this.pos,this.pos=Math.min(this.pos+e,this.len)):this.buf.toString("utf-8",this.pos,this.pos=Math.min(this.pos+e,this.len))},a._configure()},8038:(e,t,n)=>{"use strict";e.exports=d;var r=n(2815);((d.prototype=Object.create(r.prototype)).constructor=d).className="Root";var i,a,o,s=n(3796),l=n(2775),c=n(8957),u=n(6866);function d(e){r.call(this,"",e),this.deferred=[],this.files=[]}function p(){}d.fromJSON=function(e,t){return t||(t=new d),e.options&&t.setOptions(e.options),t.addJSON(e.nested)},d.prototype.resolvePath=u.path.resolve,d.prototype.fetch=u.fetch,d.prototype.load=function e(t,n,r){"function"==typeof n&&(r=n,n=void 0);var i=this;if(!r)return u.asPromise(e,i,t,n);var s=r===p;function l(e,t){if(r){if(s)throw e;var n=r;r=null,n(e,t)}}function c(e){var t=e.lastIndexOf("google/protobuf/");if(t>-1){var n=e.substring(t);if(n in o)return n}return null}function d(e,t){try{if(u.isString(t)&&"{"===t.charAt(0)&&(t=JSON.parse(t)),u.isString(t)){a.filename=e;var r,o=a(t,i,n),d=0;if(o.imports)for(;d-1))if(i.files.push(e),e in o)s?d(e,o[e]):(++f,setTimeout((function(){--f,d(e,o[e])})));else if(s){var n;try{n=u.fs.readFileSync(e).toString("utf8")}catch(e){return void(t||l(e))}d(e,n)}else++f,i.fetch(e,(function(n,a){--f,r&&(n?t?f||l(null,i):l(n):d(e,a))}))}var f=0;u.isString(t)&&(t=[t]);for(var m,g=0;g-1&&this.deferred.splice(t,1)}}else if(e instanceof l)h.test(e.name)&&delete e.parent[e.name];else if(e instanceof r){for(var n=0;n{"use strict";e.exports={}},9691:(e,t,n)=>{"use strict";t.Service=n(4447)},4447:(e,t,n)=>{"use strict";e.exports=i;var r=n(5382);function i(e,t,n){if("function"!=typeof e)throw TypeError("rpcImpl must be a function");r.EventEmitter.call(this),this.rpcImpl=e,this.requestDelimited=Boolean(t),this.responseDelimited=Boolean(n)}(i.prototype=Object.create(r.EventEmitter.prototype)).constructor=i,i.prototype.rpcCall=function e(t,n,i,a,o){if(!a)throw TypeError("request must be specified");var s=this;if(!o)return r.asPromise(e,s,t,n,i,a);if(s.rpcImpl)try{return s.rpcImpl(t,n[s.requestDelimited?"encodeDelimited":"encode"](a).finish(),(function(e,n){if(e)return s.emit("error",e,t),o(e);if(null!==n){if(!(n instanceof i))try{n=i[s.responseDelimited?"decodeDelimited":"decode"](n)}catch(e){return s.emit("error",e,t),o(e)}return s.emit("data",n,t),o(null,n)}s.end(!0)}))}catch(e){return s.emit("error",e,t),void setTimeout((function(){o(e)}),0)}else setTimeout((function(){o(Error("already ended"))}),0)},i.prototype.end=function(e){return this.rpcImpl&&(e||this.rpcImpl(null,null,null),this.rpcImpl=null,this.emit("end").off()),this}},6467:(e,t,n)=>{"use strict";e.exports=s;var r=n(2815);((s.prototype=Object.create(r.prototype)).constructor=s).className="Service";var i=n(3055),a=n(6866),o=n(9691);function s(e,t){r.call(this,e,t),this.methods={},this._methodsArray=null}function l(e){return e._methodsArray=null,e}s.fromJSON=function(e,t){var n=new s(e,t.options);if(t.methods)for(var r=Object.keys(t.methods),a=0;a{"use strict";e.exports=b;var r=n(2815);((b.prototype=Object.create(r.prototype)).constructor=b).className="Type";var i=n(2775),a=n(8957),o=n(3796),s=n(9504),l=n(6467),c=n(6619),u=n(1137),d=n(4301),p=n(6866),h=n(8852),f=n(9980),m=n(3040),g=n(3804),y=n(6942);function b(e,t){r.call(this,e,t),this.fields={},this.oneofs=void 0,this.extensions=void 0,this.reserved=void 0,this.group=void 0,this._fieldsById=null,this._fieldsArray=null,this._oneofsArray=null,this._ctor=null}function v(e){return e._fieldsById=e._fieldsArray=e._oneofsArray=null,delete e.encode,delete e.decode,delete e.verify,e}Object.defineProperties(b.prototype,{fieldsById:{get:function(){if(this._fieldsById)return this._fieldsById;this._fieldsById={};for(var e=Object.keys(this.fields),t=0;t{"use strict";var r=t,i=n(6866),a=["double","float","int32","uint32","sint32","fixed32","sfixed32","int64","uint64","sint64","fixed64","sfixed64","bool","string","bytes"];function o(e,t){var n=0,r={};for(t|=0;n{"use strict";var r,i,a=e.exports=n(5382),o=n(381);a.codegen=n(7669),a.fetch=n(9240),a.path=n(2459),a.fs=a.inquire("fs"),a.toArray=function(e){if(e){for(var t=Object.keys(e),n=new Array(t.length),r=0;r0)t[i]=e(t[i]||{},n,r);else{var a=t[i];a&&(r=[].concat(a).concat(r)),t[i]=r}return t}(e,t=t.split("."),n)},Object.defineProperty(a,"decorateRoot",{get:function(){return o.decorated||(o.decorated=new(n(8038)))}})},5003:(e,t,n)=>{"use strict";e.exports=i;var r=n(5382);function i(e,t){this.lo=e>>>0,this.hi=t>>>0}var a=i.zero=new i(0,0);a.toNumber=function(){return 0},a.zzEncode=a.zzDecode=function(){return this},a.length=function(){return 1};var o=i.zeroHash="\0\0\0\0\0\0\0\0";i.fromNumber=function(e){if(0===e)return a;var t=e<0;t&&(e=-e);var n=e>>>0,r=(e-n)/4294967296>>>0;return t&&(r=~r>>>0,n=~n>>>0,++n>4294967295&&(n=0,++r>4294967295&&(r=0))),new i(n,r)},i.from=function(e){if("number"==typeof e)return i.fromNumber(e);if(r.isString(e)){if(!r.Long)return i.fromNumber(parseInt(e,10));e=r.Long.fromString(e)}return e.low||e.high?new i(e.low>>>0,e.high>>>0):a},i.prototype.toNumber=function(e){if(!e&&this.hi>>>31){var t=1+~this.lo>>>0,n=~this.hi>>>0;return t||(n=n+1>>>0),-(t+4294967296*n)}return this.lo+4294967296*this.hi},i.prototype.toLong=function(e){return r.Long?new r.Long(0|this.lo,0|this.hi,Boolean(e)):{low:0|this.lo,high:0|this.hi,unsigned:Boolean(e)}};var s=String.prototype.charCodeAt;i.fromHash=function(e){return e===o?a:new i((s.call(e,0)|s.call(e,1)<<8|s.call(e,2)<<16|s.call(e,3)<<24)>>>0,(s.call(e,4)|s.call(e,5)<<8|s.call(e,6)<<16|s.call(e,7)<<24)>>>0)},i.prototype.toHash=function(){return String.fromCharCode(255&this.lo,this.lo>>>8&255,this.lo>>>16&255,this.lo>>>24,255&this.hi,this.hi>>>8&255,this.hi>>>16&255,this.hi>>>24)},i.prototype.zzEncode=function(){var e=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^e)>>>0,this.lo=(this.lo<<1^e)>>>0,this},i.prototype.zzDecode=function(){var e=-(1&this.lo);return this.lo=((this.lo>>>1|this.hi<<31)^e)>>>0,this.hi=(this.hi>>>1^e)>>>0,this},i.prototype.length=function(){var e=this.lo,t=(this.lo>>>28|this.hi<<4)>>>0,n=this.hi>>>24;return 0===n?0===t?e<16384?e<128?1:2:e<2097152?3:4:t<16384?t<128?5:6:t<2097152?7:8:n<128?9:10}},5382:function(e,t,n){"use strict";var r=t;function i(e,t,n){for(var r=Object.keys(t),i=0;i0)},r.Buffer=function(){try{var e=r.inquire("buffer").Buffer;return e.prototype.utf8Write?e:null}catch(e){return null}}(),r._Buffer_from=null,r._Buffer_allocUnsafe=null,r.newBuffer=function(e){return"number"==typeof e?r.Buffer?r._Buffer_allocUnsafe(e):new r.Array(e):r.Buffer?r._Buffer_from(e):"undefined"==typeof Uint8Array?e:new Uint8Array(e)},r.Array="undefined"!=typeof Uint8Array?Uint8Array:Array,r.Long=r.global.dcodeIO&&r.global.dcodeIO.Long||r.global.Long||r.inquire("long"),r.key2Re=/^true|false|0|1$/,r.key32Re=/^-?(?:0|[1-9][0-9]*)$/,r.key64Re=/^(?:[\\x00-\\xff]{8}|-?(?:0|[1-9][0-9]*))$/,r.longToHash=function(e){return e?r.LongBits.from(e).toHash():r.LongBits.zeroHash},r.longFromHash=function(e,t){var n=r.LongBits.fromHash(e);return r.Long?r.Long.fromBits(n.lo,n.hi,t):n.toNumber(Boolean(t))},r.merge=i,r.lcFirst=function(e){return e.charAt(0).toLowerCase()+e.substring(1)},r.newError=a,r.ProtocolError=a("ProtocolError"),r.oneOfGetter=function(e){for(var t={},n=0;n-1;--n)if(1===t[e[n]]&&void 0!==this[e[n]]&&null!==this[e[n]])return e[n]}},r.oneOfSetter=function(e){return function(t){for(var n=0;n{"use strict";e.exports=function(e){var t=i.codegen(["m"],e.name+"$verify")('if(typeof m!=="object"||m===null)')("return%j","object expected"),n=e.oneofsArray,r={};n.length&&t("var p={}");for(var l=0;l{"use strict";var r=t,i=n(6619);r[".google.protobuf.Any"]={fromObject:function(e){if(e&&e["@type"]){var t=e["@type"].substring(e["@type"].lastIndexOf("/")+1),n=this.lookup(t);if(n){var r="."===e["@type"].charAt(0)?e["@type"].slice(1):e["@type"];return-1===r.indexOf("/")&&(r="/"+r),this.create({type_url:r,value:n.encode(n.fromObject(e)).finish()})}}return this.fromObject(e)},toObject:function(e,t){var n="",r="";if(t&&t.json&&e.type_url&&e.value){r=e.type_url.substring(e.type_url.lastIndexOf("/")+1),n=e.type_url.substring(0,e.type_url.lastIndexOf("/")+1);var a=this.lookup(r);a&&(e=a.decode(e.value))}if(!(e instanceof this.ctor)&&e instanceof i){var o=e.$type.toObject(e,t);return""===n&&(n="type.googleapis.com/"),r=n+("."===e.$type.fullName[0]?e.$type.fullName.slice(1):e.$type.fullName),o["@type"]=r,o}return this.toObject(e,t)}}},4301:(e,t,n)=>{"use strict";e.exports=d;var r,i=n(5382),a=i.LongBits,o=i.base64,s=i.utf8;function l(e,t,n){this.fn=e,this.len=t,this.next=void 0,this.val=n}function c(){}function u(e){this.head=e.head,this.tail=e.tail,this.len=e.len,this.next=e.states}function d(){this.len=0,this.head=new l(c,0,0),this.tail=this.head,this.states=null}var p=function(){return i.Buffer?function(){return(d.create=function(){return new r})()}:function(){return new d}};function h(e,t,n){t[n]=255&e}function f(e,t){this.len=e,this.next=void 0,this.val=t}function m(e,t,n){for(;e.hi;)t[n++]=127&e.lo|128,e.lo=(e.lo>>>7|e.hi<<25)>>>0,e.hi>>>=7;for(;e.lo>127;)t[n++]=127&e.lo|128,e.lo=e.lo>>>7;t[n++]=e.lo}function g(e,t,n){t[n]=255&e,t[n+1]=e>>>8&255,t[n+2]=e>>>16&255,t[n+3]=e>>>24}d.create=p(),d.alloc=function(e){return new i.Array(e)},i.Array!==Array&&(d.alloc=i.pool(d.alloc,i.Array.prototype.subarray)),d.prototype._push=function(e,t,n){return this.tail=this.tail.next=new l(e,t,n),this.len+=t,this},f.prototype=Object.create(l.prototype),f.prototype.fn=function(e,t,n){for(;e>127;)t[n++]=127&e|128,e>>>=7;t[n]=e},d.prototype.uint32=function(e){return this.len+=(this.tail=this.tail.next=new f((e>>>=0)<128?1:e<16384?2:e<2097152?3:e<268435456?4:5,e)).len,this},d.prototype.int32=function(e){return e<0?this._push(m,10,a.fromNumber(e)):this.uint32(e)},d.prototype.sint32=function(e){return this.uint32((e<<1^e>>31)>>>0)},d.prototype.uint64=function(e){var t=a.from(e);return this._push(m,t.length(),t)},d.prototype.int64=d.prototype.uint64,d.prototype.sint64=function(e){var t=a.from(e).zzEncode();return this._push(m,t.length(),t)},d.prototype.bool=function(e){return this._push(h,1,e?1:0)},d.prototype.fixed32=function(e){return this._push(g,4,e>>>0)},d.prototype.sfixed32=d.prototype.fixed32,d.prototype.fixed64=function(e){var t=a.from(e);return this._push(g,4,t.lo)._push(g,4,t.hi)},d.prototype.sfixed64=d.prototype.fixed64,d.prototype.float=function(e){return this._push(i.float.writeFloatLE,4,e)},d.prototype.double=function(e){return this._push(i.float.writeDoubleLE,8,e)};var y=i.Array.prototype.set?function(e,t,n){t.set(e,n)}:function(e,t,n){for(var r=0;r>>0;if(!t)return this._push(h,1,0);if(i.isString(e)){var n=d.alloc(t=o.length(e));o.decode(e,n,0),e=n}return this.uint32(t)._push(y,t,e)},d.prototype.string=function(e){var t=s.length(e);return t?this.uint32(t)._push(s.write,t,e):this._push(h,1,0)},d.prototype.fork=function(){return this.states=new u(this),this.head=this.tail=new l(c,0,0),this.len=0,this},d.prototype.reset=function(){return this.states?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new l(c,0,0),this.len=0),this},d.prototype.ldelim=function(){var e=this.head,t=this.tail,n=this.len;return this.reset().uint32(n),n&&(this.tail.next=e.next,this.tail=t,this.len+=n),this},d.prototype.finish=function(){for(var e=this.head.next,t=this.constructor.alloc(this.len),n=0;e;)e.fn(e.val,t,n),n+=e.len,e=e.next;return t},d._configure=function(e){r=e,d.create=p(),r._configure()}},8422:(e,t,n)=>{"use strict";e.exports=a;var r=n(4301);(a.prototype=Object.create(r.prototype)).constructor=a;var i=n(5382);function a(){r.call(this)}function o(e,t,n){e.length<40?i.utf8.write(e,t,n):t.utf8Write?t.utf8Write(e,n):t.write(e,n)}a._configure=function(){a.alloc=i._Buffer_allocUnsafe,a.writeBytesBuffer=i.Buffer&&i.Buffer.prototype instanceof Uint8Array&&"set"===i.Buffer.prototype.set.name?function(e,t,n){t.set(e,n)}:function(e,t,n){if(e.copy)e.copy(t,n,0,e.length);else for(var r=0;r>>0;return this.uint32(t),t&&this._push(a.writeBytesBuffer,t,e),this},a.prototype.string=function(e){var t=i.Buffer.byteLength(e);return this.uint32(t),t&&this._push(o,t,e),this},a._configure()},9111:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"DraggableCore",{enumerable:!0,get:function(){return u.default}}),t.default=void 0;var r=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=h(t);if(n&&n.has(e))return n.get(e);var r={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var o=i?Object.getOwnPropertyDescriptor(e,a):null;o&&(o.get||o.set)?Object.defineProperty(r,a,o):r[a]=e[a]}r.default=e,n&&n.set(e,r);return r}(n(5959)),i=p(n(2688)),a=p(n(8398)),o=p(n(8262)),s=n(2837),l=n(402),c=n(6732),u=p(n(1060)),d=p(n(7988));function p(e){return e&&e.__esModule?e:{default:e}}function h(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(h=function(e){return e?n:t})(e)}function f(){return f=Object.assign?Object.assign.bind():function(e){for(var t=1;t{(0,d.default)("Draggable: onDragStart: %j",t);if(!1===this.props.onStart(e,(0,l.createDraggableData)(this,t)))return!1;this.setState({dragging:!0,dragged:!0})})),m(this,"onDrag",((e,t)=>{if(!this.state.dragging)return!1;(0,d.default)("Draggable: onDrag: %j",t);const n=(0,l.createDraggableData)(this,t),r={x:n.x,y:n.y,slackX:0,slackY:0};if(this.props.bounds){const{x:e,y:t}=r;r.x+=this.state.slackX,r.y+=this.state.slackY;const[i,a]=(0,l.getBoundPosition)(this,r.x,r.y);r.x=i,r.y=a,r.slackX=this.state.slackX+(e-r.x),r.slackY=this.state.slackY+(t-r.y),n.x=r.x,n.y=r.y,n.deltaX=r.x-this.state.x,n.deltaY=r.y-this.state.y}if(!1===this.props.onDrag(e,n))return!1;this.setState(r)})),m(this,"onDragStop",((e,t)=>{if(!this.state.dragging)return!1;if(!1===this.props.onStop(e,(0,l.createDraggableData)(this,t)))return!1;(0,d.default)("Draggable: onDragStop: %j",t);const n={dragging:!1,slackX:0,slackY:0};if(Boolean(this.props.position)){const{x:e,y:t}=this.props.position;n.x=e,n.y=t}this.setState(n)})),this.state={dragging:!1,dragged:!1,x:e.position?e.position.x:e.defaultPosition.x,y:e.position?e.position.y:e.defaultPosition.y,prevPropsPosition:{...e.position},slackX:0,slackY:0,isElementSVG:!1},!e.position||e.onDrag||e.onStop||console.warn("A `position` was applied to this , without drag handlers. This will make this component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the `position` of this element.")}componentDidMount(){void 0!==window.SVGElement&&this.findDOMNode()instanceof window.SVGElement&&this.setState({isElementSVG:!0})}componentWillUnmount(){this.setState({dragging:!1})}findDOMNode(){var e,t;return null!==(e=null===(t=this.props)||void 0===t||null===(t=t.nodeRef)||void 0===t?void 0:t.current)&&void 0!==e?e:a.default.findDOMNode(this)}render(){const{axis:e,bounds:t,children:n,defaultPosition:i,defaultClassName:a,defaultClassNameDragging:c,defaultClassNameDragged:d,position:p,positionOffset:h,scale:m,...g}=this.props;let y={},b=null;const v=!Boolean(p)||this.state.dragging,w=p||i,S={x:(0,l.canDragX)(this)&&v?this.state.x:w.x,y:(0,l.canDragY)(this)&&v?this.state.y:w.y};this.state.isElementSVG?b=(0,s.createSVGTransform)(S,h):y=(0,s.createCSSTransform)(S,h);const E=(0,o.default)(n.props.className||"",a,{[c]:this.state.dragging,[d]:this.state.dragged});return r.createElement(u.default,f({},g,{onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop}),r.cloneElement(r.Children.only(n),{className:E,style:{...n.props.style,...y},transform:b}))}}t.default=g,m(g,"displayName","Draggable"),m(g,"propTypes",{...u.default.propTypes,axis:i.default.oneOf(["both","x","y","none"]),bounds:i.default.oneOfType([i.default.shape({left:i.default.number,right:i.default.number,top:i.default.number,bottom:i.default.number}),i.default.string,i.default.oneOf([!1])]),defaultClassName:i.default.string,defaultClassNameDragging:i.default.string,defaultClassNameDragged:i.default.string,defaultPosition:i.default.shape({x:i.default.number,y:i.default.number}),positionOffset:i.default.shape({x:i.default.oneOfType([i.default.number,i.default.string]),y:i.default.oneOfType([i.default.number,i.default.string])}),position:i.default.shape({x:i.default.number,y:i.default.number}),className:c.dontSetMe,style:c.dontSetMe,transform:c.dontSetMe}),m(g,"defaultProps",{...u.default.defaultProps,axis:"both",bounds:!1,defaultClassName:"react-draggable",defaultClassNameDragging:"react-draggable-dragging",defaultClassNameDragged:"react-draggable-dragged",defaultPosition:{x:0,y:0},scale:1})},1060:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=d(t);if(n&&n.has(e))return n.get(e);var r={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var o=i?Object.getOwnPropertyDescriptor(e,a):null;o&&(o.get||o.set)?Object.defineProperty(r,a,o):r[a]=e[a]}r.default=e,n&&n.set(e,r);return r}(n(5959)),i=u(n(2688)),a=u(n(8398)),o=n(2837),s=n(402),l=n(6732),c=u(n(7988));function u(e){return e&&e.__esModule?e:{default:e}}function d(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(d=function(e){return e?n:t})(e)}function p(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const h={start:"touchstart",move:"touchmove",stop:"touchend"},f={start:"mousedown",move:"mousemove",stop:"mouseup"};let m=f;class g extends r.Component{constructor(){super(...arguments),p(this,"dragging",!1),p(this,"lastX",NaN),p(this,"lastY",NaN),p(this,"touchIdentifier",null),p(this,"mounted",!1),p(this,"handleDragStart",(e=>{if(this.props.onMouseDown(e),!this.props.allowAnyClick&&"number"==typeof e.button&&0!==e.button)return!1;const t=this.findDOMNode();if(!t||!t.ownerDocument||!t.ownerDocument.body)throw new Error(" not mounted on DragStart!");const{ownerDocument:n}=t;if(this.props.disabled||!(e.target instanceof n.defaultView.Node)||this.props.handle&&!(0,o.matchesSelectorAndParentsTo)(e.target,this.props.handle,t)||this.props.cancel&&(0,o.matchesSelectorAndParentsTo)(e.target,this.props.cancel,t))return;"touchstart"===e.type&&e.preventDefault();const r=(0,o.getTouchIdentifier)(e);this.touchIdentifier=r;const i=(0,s.getControlPosition)(e,r,this);if(null==i)return;const{x:a,y:l}=i,u=(0,s.createCoreData)(this,a,l);(0,c.default)("DraggableCore: handleDragStart: %j",u),(0,c.default)("calling",this.props.onStart);!1!==this.props.onStart(e,u)&&!1!==this.mounted&&(this.props.enableUserSelectHack&&(0,o.addUserSelectStyles)(n),this.dragging=!0,this.lastX=a,this.lastY=l,(0,o.addEvent)(n,m.move,this.handleDrag),(0,o.addEvent)(n,m.stop,this.handleDragStop))})),p(this,"handleDrag",(e=>{const t=(0,s.getControlPosition)(e,this.touchIdentifier,this);if(null==t)return;let{x:n,y:r}=t;if(Array.isArray(this.props.grid)){let e=n-this.lastX,t=r-this.lastY;if([e,t]=(0,s.snapToGrid)(this.props.grid,e,t),!e&&!t)return;n=this.lastX+e,r=this.lastY+t}const i=(0,s.createCoreData)(this,n,r);(0,c.default)("DraggableCore: handleDrag: %j",i);if(!1!==this.props.onDrag(e,i)&&!1!==this.mounted)this.lastX=n,this.lastY=r;else try{this.handleDragStop(new MouseEvent("mouseup"))}catch(e){const t=document.createEvent("MouseEvents");t.initMouseEvent("mouseup",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),this.handleDragStop(t)}})),p(this,"handleDragStop",(e=>{if(!this.dragging)return;const t=(0,s.getControlPosition)(e,this.touchIdentifier,this);if(null==t)return;let{x:n,y:r}=t;if(Array.isArray(this.props.grid)){let e=n-this.lastX||0,t=r-this.lastY||0;[e,t]=(0,s.snapToGrid)(this.props.grid,e,t),n=this.lastX+e,r=this.lastY+t}const i=(0,s.createCoreData)(this,n,r);if(!1===this.props.onStop(e,i)||!1===this.mounted)return!1;const a=this.findDOMNode();a&&this.props.enableUserSelectHack&&(0,o.removeUserSelectStyles)(a.ownerDocument),(0,c.default)("DraggableCore: handleDragStop: %j",i),this.dragging=!1,this.lastX=NaN,this.lastY=NaN,a&&((0,c.default)("DraggableCore: Removing handlers"),(0,o.removeEvent)(a.ownerDocument,m.move,this.handleDrag),(0,o.removeEvent)(a.ownerDocument,m.stop,this.handleDragStop))})),p(this,"onMouseDown",(e=>(m=f,this.handleDragStart(e)))),p(this,"onMouseUp",(e=>(m=f,this.handleDragStop(e)))),p(this,"onTouchStart",(e=>(m=h,this.handleDragStart(e)))),p(this,"onTouchEnd",(e=>(m=h,this.handleDragStop(e))))}componentDidMount(){this.mounted=!0;const e=this.findDOMNode();e&&(0,o.addEvent)(e,h.start,this.onTouchStart,{passive:!1})}componentWillUnmount(){this.mounted=!1;const e=this.findDOMNode();if(e){const{ownerDocument:t}=e;(0,o.removeEvent)(t,f.move,this.handleDrag),(0,o.removeEvent)(t,h.move,this.handleDrag),(0,o.removeEvent)(t,f.stop,this.handleDragStop),(0,o.removeEvent)(t,h.stop,this.handleDragStop),(0,o.removeEvent)(e,h.start,this.onTouchStart,{passive:!1}),this.props.enableUserSelectHack&&(0,o.removeUserSelectStyles)(t)}}findDOMNode(){var e,t;return null!==(e=this.props)&&void 0!==e&&e.nodeRef?null===(t=this.props)||void 0===t||null===(t=t.nodeRef)||void 0===t?void 0:t.current:a.default.findDOMNode(this)}render(){return r.cloneElement(r.Children.only(this.props.children),{onMouseDown:this.onMouseDown,onMouseUp:this.onMouseUp,onTouchEnd:this.onTouchEnd})}}t.default=g,p(g,"displayName","DraggableCore"),p(g,"propTypes",{allowAnyClick:i.default.bool,children:i.default.node.isRequired,disabled:i.default.bool,enableUserSelectHack:i.default.bool,offsetParent:function(e,t){if(e[t]&&1!==e[t].nodeType)throw new Error("Draggable's offsetParent must be a DOM Node.")},grid:i.default.arrayOf(i.default.number),handle:i.default.string,cancel:i.default.string,nodeRef:i.default.object,onStart:i.default.func,onDrag:i.default.func,onStop:i.default.func,onMouseDown:i.default.func,scale:i.default.number,className:l.dontSetMe,style:l.dontSetMe,transform:l.dontSetMe}),p(g,"defaultProps",{allowAnyClick:!1,disabled:!1,enableUserSelectHack:!0,onStart:function(){},onDrag:function(){},onStop:function(){},onMouseDown:function(){},scale:1})},8230:(e,t,n)=>{"use strict";const{default:r,DraggableCore:i}=n(9111);e.exports=r,e.exports.default=r,e.exports.DraggableCore=i},2837:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.addClassName=c,t.addEvent=function(e,t,n,r){if(!e)return;const i={capture:!0,...r};e.addEventListener?e.addEventListener(t,n,i):e.attachEvent?e.attachEvent("on"+t,n):e["on"+t]=n},t.addUserSelectStyles=function(e){if(!e)return;let t=e.getElementById("react-draggable-style-el");t||(t=e.createElement("style"),t.type="text/css",t.id="react-draggable-style-el",t.innerHTML=".react-draggable-transparent-selection *::-moz-selection {all: inherit;}\n",t.innerHTML+=".react-draggable-transparent-selection *::selection {all: inherit;}\n",e.getElementsByTagName("head")[0].appendChild(t));e.body&&c(e.body,"react-draggable-transparent-selection")},t.createCSSTransform=function(e,t){const n=l(e,t,"px");return{[(0,i.browserPrefixToKey)("transform",i.default)]:n}},t.createSVGTransform=function(e,t){return l(e,t,"")},t.getTouch=function(e,t){return e.targetTouches&&(0,r.findInArray)(e.targetTouches,(e=>t===e.identifier))||e.changedTouches&&(0,r.findInArray)(e.changedTouches,(e=>t===e.identifier))},t.getTouchIdentifier=function(e){if(e.targetTouches&&e.targetTouches[0])return e.targetTouches[0].identifier;if(e.changedTouches&&e.changedTouches[0])return e.changedTouches[0].identifier},t.getTranslation=l,t.innerHeight=function(e){let t=e.clientHeight;const n=e.ownerDocument.defaultView.getComputedStyle(e);return t-=(0,r.int)(n.paddingTop),t-=(0,r.int)(n.paddingBottom),t},t.innerWidth=function(e){let t=e.clientWidth;const n=e.ownerDocument.defaultView.getComputedStyle(e);return t-=(0,r.int)(n.paddingLeft),t-=(0,r.int)(n.paddingRight),t},t.matchesSelector=s,t.matchesSelectorAndParentsTo=function(e,t,n){let r=e;do{if(s(r,t))return!0;if(r===n)return!1;r=r.parentNode}while(r);return!1},t.offsetXYFromParent=function(e,t,n){const r=t===t.ownerDocument.body?{left:0,top:0}:t.getBoundingClientRect(),i=(e.clientX+t.scrollLeft-r.left)/n,a=(e.clientY+t.scrollTop-r.top)/n;return{x:i,y:a}},t.outerHeight=function(e){let t=e.clientHeight;const n=e.ownerDocument.defaultView.getComputedStyle(e);return t+=(0,r.int)(n.borderTopWidth),t+=(0,r.int)(n.borderBottomWidth),t},t.outerWidth=function(e){let t=e.clientWidth;const n=e.ownerDocument.defaultView.getComputedStyle(e);return t+=(0,r.int)(n.borderLeftWidth),t+=(0,r.int)(n.borderRightWidth),t},t.removeClassName=u,t.removeEvent=function(e,t,n,r){if(!e)return;const i={capture:!0,...r};e.removeEventListener?e.removeEventListener(t,n,i):e.detachEvent?e.detachEvent("on"+t,n):e["on"+t]=null},t.removeUserSelectStyles=function(e){if(!e)return;try{if(e.body&&u(e.body,"react-draggable-transparent-selection"),e.selection)e.selection.empty();else{const t=(e.defaultView||window).getSelection();t&&"Caret"!==t.type&&t.removeAllRanges()}}catch(e){}};var r=n(6732),i=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=a(t);if(n&&n.has(e))return n.get(e);var r={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&Object.prototype.hasOwnProperty.call(e,o)){var s=i?Object.getOwnPropertyDescriptor(e,o):null;s&&(s.get||s.set)?Object.defineProperty(r,o,s):r[o]=e[o]}r.default=e,n&&n.set(e,r);return r}(n(7350));function a(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(a=function(e){return e?n:t})(e)}let o="";function s(e,t){return o||(o=(0,r.findInArray)(["matches","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector"],(function(t){return(0,r.isFunction)(e[t])}))),!!(0,r.isFunction)(e[o])&&e[o](t)}function l(e,t,n){let{x:r,y:i}=e,a="translate(".concat(r).concat(n,",").concat(i).concat(n,")");if(t){const e="".concat("string"==typeof t.x?t.x:t.x+n),r="".concat("string"==typeof t.y?t.y:t.y+n);a="translate(".concat(e,", ").concat(r,")")+a}return a}function c(e,t){e.classList?e.classList.add(t):e.className.match(new RegExp("(?:^|\\s)".concat(t,"(?!\\S)")))||(e.className+=" ".concat(t))}function u(e,t){e.classList?e.classList.remove(t):e.className=e.className.replace(new RegExp("(?:^|\\s)".concat(t,"(?!\\S)"),"g"),"")}},7350:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.browserPrefixToKey=i,t.browserPrefixToStyle=function(e,t){return t?"-".concat(t.toLowerCase(),"-").concat(e):e},t.default=void 0,t.getPrefix=r;const n=["Moz","Webkit","O","ms"];function r(){var e;let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"transform";if("undefined"==typeof window)return"";const r=null===(e=window.document)||void 0===e||null===(e=e.documentElement)||void 0===e?void 0:e.style;if(!r)return"";if(t in r)return"";for(let e=0;e{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){0}},402:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.canDragX=function(e){return"both"===e.props.axis||"x"===e.props.axis},t.canDragY=function(e){return"both"===e.props.axis||"y"===e.props.axis},t.createCoreData=function(e,t,n){const i=!(0,r.isNum)(e.lastX),o=a(e);return i?{node:o,deltaX:0,deltaY:0,lastX:t,lastY:n,x:t,y:n}:{node:o,deltaX:t-e.lastX,deltaY:n-e.lastY,lastX:e.lastX,lastY:e.lastY,x:t,y:n}},t.createDraggableData=function(e,t){const n=e.props.scale;return{node:t.node,x:e.state.x+t.deltaX/n,y:e.state.y+t.deltaY/n,deltaX:t.deltaX/n,deltaY:t.deltaY/n,lastX:e.state.x,lastY:e.state.y}},t.getBoundPosition=function(e,t,n){if(!e.props.bounds)return[t,n];let{bounds:o}=e.props;o="string"==typeof o?o:function(e){return{left:e.left,top:e.top,right:e.right,bottom:e.bottom}}(o);const s=a(e);if("string"==typeof o){const{ownerDocument:e}=s,t=e.defaultView;let n;if(n="parent"===o?s.parentNode:e.querySelector(o),!(n instanceof t.HTMLElement))throw new Error('Bounds selector "'+o+'" could not find an element.');const a=n,l=t.getComputedStyle(s),c=t.getComputedStyle(a);o={left:-s.offsetLeft+(0,r.int)(c.paddingLeft)+(0,r.int)(l.marginLeft),top:-s.offsetTop+(0,r.int)(c.paddingTop)+(0,r.int)(l.marginTop),right:(0,i.innerWidth)(a)-(0,i.outerWidth)(s)-s.offsetLeft+(0,r.int)(c.paddingRight)-(0,r.int)(l.marginRight),bottom:(0,i.innerHeight)(a)-(0,i.outerHeight)(s)-s.offsetTop+(0,r.int)(c.paddingBottom)-(0,r.int)(l.marginBottom)}}(0,r.isNum)(o.right)&&(t=Math.min(t,o.right));(0,r.isNum)(o.bottom)&&(n=Math.min(n,o.bottom));(0,r.isNum)(o.left)&&(t=Math.max(t,o.left));(0,r.isNum)(o.top)&&(n=Math.max(n,o.top));return[t,n]},t.getControlPosition=function(e,t,n){const r="number"==typeof t?(0,i.getTouch)(e,t):null;if("number"==typeof t&&!r)return null;const o=a(n),s=n.props.offsetParent||o.offsetParent||o.ownerDocument.body;return(0,i.offsetXYFromParent)(r||e,s,n.props.scale)},t.snapToGrid=function(e,t,n){const r=Math.round(t/e[0])*e[0],i=Math.round(n/e[1])*e[1];return[r,i]};var r=n(6732),i=n(2837);function a(e){const t=e.findDOMNode();if(!t)throw new Error(": Unmounted during event!");return t}},6732:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.dontSetMe=function(e,t,n){if(e[t])return new Error("Invalid prop ".concat(t," passed to ").concat(n," - do not set this, set it on the child."))},t.findInArray=function(e,t){for(let n=0,r=e.length;n{"use strict";function r(e){var t,n,i="";if("string"==typeof e||"number"==typeof e)i+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;ti,default:()=>a});const a=i},7383:e=>{var t="undefined"!=typeof Element,n="function"==typeof Map,r="function"==typeof Set,i="function"==typeof ArrayBuffer&&!!ArrayBuffer.isView;function a(e,o){if(e===o)return!0;if(e&&o&&"object"==typeof e&&"object"==typeof o){if(e.constructor!==o.constructor)return!1;var s,l,c,u;if(Array.isArray(e)){if((s=e.length)!=o.length)return!1;for(l=s;0!=l--;)if(!a(e[l],o[l]))return!1;return!0}if(n&&e instanceof Map&&o instanceof Map){if(e.size!==o.size)return!1;for(u=e.entries();!(l=u.next()).done;)if(!o.has(l.value[0]))return!1;for(u=e.entries();!(l=u.next()).done;)if(!a(l.value[1],o.get(l.value[0])))return!1;return!0}if(r&&e instanceof Set&&o instanceof Set){if(e.size!==o.size)return!1;for(u=e.entries();!(l=u.next()).done;)if(!o.has(l.value[0]))return!1;return!0}if(i&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(o)){if((s=e.length)!=o.length)return!1;for(l=s;0!=l--;)if(e[l]!==o[l])return!1;return!0}if(e.constructor===RegExp)return e.source===o.source&&e.flags===o.flags;if(e.valueOf!==Object.prototype.valueOf&&"function"==typeof e.valueOf&&"function"==typeof o.valueOf)return e.valueOf()===o.valueOf();if(e.toString!==Object.prototype.toString&&"function"==typeof e.toString&&"function"==typeof o.toString)return e.toString()===o.toString();if((s=(c=Object.keys(e)).length)!==Object.keys(o).length)return!1;for(l=s;0!=l--;)if(!Object.prototype.hasOwnProperty.call(o,c[l]))return!1;if(t&&e instanceof Element)return!1;for(l=s;0!=l--;)if(("_owner"!==c[l]&&"__v"!==c[l]&&"__o"!==c[l]||!e.$$typeof)&&!a(e[c[l]],o[c[l]]))return!1;return!0}return e!=e&&o!=o}e.exports=function(e,t){try{return a(e,t)}catch(e){if((e.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw e}}},8100:(e,t,n)=>{"use strict";function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=p(n(5959)),a=p(n(2688)),o=n(8230),s=n(936),l=n(414),c=n(906),u=n(7222),d=p(n(7256));function p(e){return e&&e.__esModule?e:{default:e}}function h(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function f(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:this.props;return{cols:e.cols,containerPadding:e.containerPadding,containerWidth:e.containerWidth,margin:e.margin,maxRows:e.maxRows,rowHeight:e.rowHeight}}},{key:"createStyle",value:function(e){var t,n=this.props,r=n.usePercentages,i=n.containerWidth;return n.useCSSTransforms?t=(0,l.setTransform)(e):(t=(0,l.setTopLeft)(e),r&&(t.left=(0,l.perc)(e.left/i),t.width=(0,l.perc)(e.width/i))),t}},{key:"mixinDraggable",value:function(e,t){return i.default.createElement(o.DraggableCore,{disabled:!t,onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop,handle:this.props.handle,cancel:".react-resizable-handle"+(this.props.cancel?","+this.props.cancel:""),scale:this.props.transformScale,nodeRef:this.elementRef},e)}},{key:"mixinResizable",value:function(e,t,n){var r=this.props,a=r.cols,o=r.x,l=r.minW,u=r.minH,d=r.maxW,p=r.maxH,h=r.transformScale,f=r.resizeHandles,m=r.resizeHandle,g=this.getPositionParams(),y=(0,c.calcGridItemPosition)(g,0,0,a-o,0).width,b=(0,c.calcGridItemPosition)(g,0,0,l,u),v=(0,c.calcGridItemPosition)(g,0,0,d,p),w=[b.width,b.height],S=[Math.min(v.width,y),Math.min(v.height,1/0)];return i.default.createElement(s.Resizable,{draggableOpts:{disabled:!n},className:n?void 0:"react-resizable-hide",width:t.width,height:t.height,minConstraints:w,maxConstraints:S,onResizeStop:this.onResizeStop,onResizeStart:this.onResizeStart,onResize:this.onResize,transformScale:h,resizeHandles:f,handle:m},e)}},{key:"onResizeHandler",value:function(e,t,n){var r=t.node,i=t.size,a=this.props[n];if(a){var o=this.props,s=o.cols,l=o.x,u=o.y,d=o.i,p=o.maxH,h=o.minH,f=this.props,m=f.minW,g=f.maxW,y=(0,c.calcWH)(this.getPositionParams(),i.width,i.height,l,u),b=y.w,v=y.h;m=Math.max(m,1),g=Math.min(g,s-l),b=(0,c.clamp)(b,m,g),v=(0,c.clamp)(v,h,p),this.setState({resizing:"onResizeStop"===n?null:i}),a.call(this,d,b,v,{e,node:r,size:i})}}},{key:"render",value:function(){var e=this.props,t=e.x,n=e.y,r=e.w,a=e.h,o=e.isDraggable,s=e.isResizable,l=e.droppingPosition,u=e.useCSSTransforms,p=(0,c.calcGridItemPosition)(this.getPositionParams(),t,n,r,a,this.state),h=i.default.Children.only(this.props.children),m=i.default.cloneElement(h,{ref:this.elementRef,className:(0,d.default)("react-grid-item",h.props.className,this.props.className,{static:this.props.static,resizing:Boolean(this.state.resizing),"react-draggable":o,"react-draggable-dragging":Boolean(this.state.dragging),dropping:Boolean(l),cssTransforms:u}),style:f(f(f({},this.props.style),h.props.style),this.createStyle(p))});return m=this.mixinResizable(m,p,s),m=this.mixinDraggable(m,o)}}],n&&m(t.prototype,n),r&&m(t,r),Object.defineProperty(t,"prototype",{writable:!1}),u}(i.default.Component);t.default=S,w(S,"propTypes",{children:a.default.element,cols:a.default.number.isRequired,containerWidth:a.default.number.isRequired,rowHeight:a.default.number.isRequired,margin:a.default.array.isRequired,maxRows:a.default.number.isRequired,containerPadding:a.default.array.isRequired,x:a.default.number.isRequired,y:a.default.number.isRequired,w:a.default.number.isRequired,h:a.default.number.isRequired,minW:function(e,t){var n=e[t];return"number"!=typeof n?new Error("minWidth not Number"):n>e.w||n>e.maxW?new Error("minWidth larger than item width/maxWidth"):void 0},maxW:function(e,t){var n=e[t];return"number"!=typeof n?new Error("maxWidth not Number"):ne.h||n>e.maxH?new Error("minHeight larger than item height/maxHeight"):void 0},maxH:function(e,t){var n=e[t];return"number"!=typeof n?new Error("maxHeight not Number"):n{"use strict";function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==r(e)&&"function"!=typeof e)return{default:e};var n=p(t);if(n&&n.has(e))return n.get(e);var i={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&Object.prototype.hasOwnProperty.call(e,o)){var s=a?Object.getOwnPropertyDescriptor(e,o):null;s&&(s.get||s.set)?Object.defineProperty(i,o,s):i[o]=e[o]}i.default=e,n&&n.set(e,i);return i}(n(5959)),a=d(n(7842)),o=d(n(7256)),s=n(414),l=n(906),c=d(n(8100)),u=d(n(7222));function d(e){return e&&e.__esModule?e:{default:e}}function p(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(p=function(e){return e?n:t})(e)}function h(e){return function(e){if(Array.isArray(e))return b(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||y(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function f(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function m(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n0){var a=1/0,o=1/0;i.forEach((function(t){t.x>e.x&&(a=Math.min(a,t.x)),t.y>e.y&&(o=Math.min(o,t.y))})),Number.isFinite(a)&&(e.w=a-e.x),Number.isFinite(o)&&(e.h=o-e.y)}}return t||(e.w=n,e.h=r),e})),b=g(y,2),v=b[0],w=b[1];if(w){var S={w:w.w,h:w.h,x:w.x,y:w.y,static:!0,i:t};e.props.onResize(v,u,w,S,a,o),e.setState({layout:f?v:(0,s.compact)(v,(0,s.compactType)(e.props),p),activeDrag:S})}})),O(E(e),"onResizeStop",(function(t,n,r,i){var a=i.e,o=i.node,l=e.state,c=l.layout,u=l.oldResizeItem,d=e.props,p=d.cols,h=d.allowOverlap,f=(0,s.getLayoutItem)(c,t);e.props.onResizeStop(c,u,f,null,a,o);var m=h?c:(0,s.compact)(c,(0,s.compactType)(e.props),p),g=e.state.oldLayout;e.setState({activeDrag:null,layout:m,oldResizeItem:null,oldLayout:null}),e.onLayoutMaybeChanged(m,g)})),O(E(e),"onDragOver",(function(t){var n;if(t.preventDefault(),t.stopPropagation(),T&&(null===(n=t.nativeEvent.target)||void 0===n||!n.classList.contains(_)))return!1;var r=e.props,a=r.droppingItem,o=r.onDropDragOver,s=r.margin,c=r.cols,u=r.rowHeight,d=r.maxRows,p=r.width,f=r.containerPadding,g=r.transformScale,y=null==o?void 0:o(t);if(!1===y)return e.state.droppingDOMNode&&e.removeDroppingPlaceholder(),!1;var b=m(m({},a),y),v=e.state.layout,w=t.nativeEvent,S=w.layerX,E=w.layerY,x={left:S/g,top:E/g,e:t};if(e.state.droppingDOMNode){if(e.state.droppingPosition){var O=e.state.droppingPosition,C=O.left,k=O.top;(C!=S||k!=E)&&e.setState({droppingPosition:x})}}else{var P={cols:c,margin:s,maxRows:d,rowHeight:u,containerWidth:p,containerPadding:f||s},R=(0,l.calcXY)(P,E,S,b.w,b.h);e.setState({droppingDOMNode:i.createElement("div",{key:b.i}),droppingPosition:x,layout:[].concat(h(v),[m(m({},b),{},{x:R.x,y:R.y,static:!1,isDraggable:!0})])})}})),O(E(e),"removeDroppingPlaceholder",(function(){var t=e.props,n=t.droppingItem,r=t.cols,i=e.state.layout,a=(0,s.compact)(i.filter((function(e){return e.i!==n.i})),(0,s.compactType)(e.props),r);e.setState({layout:a,droppingDOMNode:null,activeDrag:null,droppingPosition:void 0})})),O(E(e),"onDragLeave",(function(t){t.preventDefault(),t.stopPropagation(),e.dragEnterCounter--,0===e.dragEnterCounter&&e.removeDroppingPlaceholder()})),O(E(e),"onDragEnter",(function(t){t.preventDefault(),t.stopPropagation(),e.dragEnterCounter++})),O(E(e),"onDrop",(function(t){t.preventDefault(),t.stopPropagation();var n=e.props.droppingItem,r=e.state.layout,i=r.find((function(e){return e.i===n.i}));e.dragEnterCounter=0,e.removeDroppingPlaceholder(),e.props.onDrop(r,i,t)})),e}return t=d,r=[{key:"getDerivedStateFromProps",value:function(e,t){var n;return t.activeDrag?null:((0,a.default)(e.layout,t.propsLayout)&&e.compactType===t.compactType?(0,s.childrenEqual)(e.children,t.children)||(n=t.layout):n=e.layout,n?{layout:(0,s.synchronizeLayoutWithChildren)(n,e.children,e.cols,(0,s.compactType)(e),e.allowOverlap),compactType:e.compactType,children:e.children,propsLayout:e.layout}:null)}}],(n=[{key:"componentDidMount",value:function(){this.setState({mounted:!0}),this.onLayoutMaybeChanged(this.state.layout,this.props.layout)}},{key:"shouldComponentUpdate",value:function(e,t){return this.props.children!==e.children||!(0,s.fastRGLPropsEqual)(this.props,e,a.default)||this.state.activeDrag!==t.activeDrag||this.state.mounted!==t.mounted||this.state.droppingPosition!==t.droppingPosition}},{key:"componentDidUpdate",value:function(e,t){if(!this.state.activeDrag){var n=this.state.layout,r=t.layout;this.onLayoutMaybeChanged(n,r)}}},{key:"containerHeight",value:function(){if(this.props.autoSize){var e=(0,s.bottom)(this.state.layout),t=this.props.containerPadding?this.props.containerPadding[1]:this.props.margin[1];return e*this.props.rowHeight+(e-1)*this.props.margin[1]+2*t+"px"}}},{key:"onLayoutMaybeChanged",value:function(e,t){t||(t=this.state.layout),(0,a.default)(t,e)||this.props.onLayoutChange(e)}},{key:"placeholder",value:function(){var e=this.state.activeDrag;if(!e)return null;var t=this.props,n=t.width,r=t.cols,a=t.margin,o=t.containerPadding,s=t.rowHeight,l=t.maxRows,u=t.useCSSTransforms,d=t.transformScale;return i.createElement(c.default,{w:e.w,h:e.h,x:e.x,y:e.y,i:e.i,className:"react-grid-placeholder",containerWidth:n,cols:r,margin:a,containerPadding:o||a,maxRows:l,rowHeight:s,isDraggable:!1,isResizable:!1,isBounded:!1,useCSSTransforms:u,transformScale:d},i.createElement("div",null))}},{key:"processGridItem",value:function(e,t){if(e&&e.key){var n=(0,s.getLayoutItem)(this.state.layout,String(e.key));if(!n)return null;var r=this.props,a=r.width,o=r.cols,l=r.margin,u=r.containerPadding,d=r.rowHeight,p=r.maxRows,h=r.isDraggable,f=r.isResizable,m=r.isBounded,g=r.useCSSTransforms,y=r.transformScale,b=r.draggableCancel,v=r.draggableHandle,w=r.resizeHandles,S=r.resizeHandle,E=this.state,x=E.mounted,O=E.droppingPosition,_="boolean"==typeof n.isDraggable?n.isDraggable:!n.static&&h,T="boolean"==typeof n.isResizable?n.isResizable:!n.static&&f,C=n.resizeHandles||w,k=_&&m&&!1!==n.isBounded;return i.createElement(c.default,{containerWidth:a,cols:o,margin:l,containerPadding:u||l,maxRows:p,rowHeight:d,cancel:b,handle:v,onDragStop:this.onDragStop,onDragStart:this.onDragStart,onDrag:this.onDrag,onResizeStart:this.onResizeStart,onResize:this.onResize,onResizeStop:this.onResizeStop,isDraggable:_,isResizable:T,isBounded:k,useCSSTransforms:g&&x,usePercentages:!x,transformScale:y,w:n.w,h:n.h,x:n.x,y:n.y,i:n.i,minH:n.minH,minW:n.minW,maxH:n.maxH,maxW:n.maxW,static:n.static,droppingPosition:t?O:void 0,resizeHandles:C,resizeHandle:S},e)}}},{key:"render",value:function(){var e=this,t=this.props,n=t.className,r=t.style,a=t.isDroppable,l=t.innerRef,c=(0,o.default)(_,n),u=m({height:this.containerHeight()},r);return i.createElement("div",{ref:l,className:c,style:u,onDrop:a?this.onDrop:s.noop,onDragLeave:a?this.onDragLeave:s.noop,onDragEnter:a?this.onDragEnter:s.noop,onDragOver:a?this.onDragOver:s.noop},i.Children.map(this.props.children,(function(t){return e.processGridItem(t)})),a&&this.state.droppingDOMNode&&this.processGridItem(this.state.droppingDOMNode,!0),this.placeholder())}}])&&v(t.prototype,n),r&&v(t,r),Object.defineProperty(t,"prototype",{writable:!1}),d}(i.Component);t.default=C,O(C,"displayName","ReactGridLayout"),O(C,"propTypes",u.default),O(C,"defaultProps",{autoSize:!0,cols:12,className:"",style:{},draggableHandle:"",draggableCancel:"",containerPadding:null,rowHeight:150,maxRows:1/0,layout:[],margin:[10,10],isBounded:!1,isDraggable:!0,isResizable:!0,allowOverlap:!1,isDroppable:!1,useCSSTransforms:!0,transformScale:1,verticalCompact:!0,compactType:"vertical",preventCollision:!1,droppingItem:{i:"__dropping-elem__",h:1,w:1},resizeHandles:["se"],onLayoutChange:s.noop,onDragStart:s.noop,onDrag:s.noop,onDragStop:s.noop,onResizeStart:s.noop,onResize:s.noop,onResizeStop:s.noop,onDrop:s.noop,onDropDragOver:s.noop})},7222:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.resizeHandleType=t.resizeHandleAxesType=t.default=void 0;var r=a(n(2688)),i=a(n(5959));function a(e){return e&&e.__esModule?e:{default:e}}var o=r.default.arrayOf(r.default.oneOf(["s","w","e","n","sw","nw","se","ne"]));t.resizeHandleAxesType=o;var s=r.default.oneOfType([r.default.node,r.default.func]);t.resizeHandleType=s;var l={className:r.default.string,style:r.default.object,width:r.default.number,autoSize:r.default.bool,cols:r.default.number,draggableCancel:r.default.string,draggableHandle:r.default.string,verticalCompact:function(e){e.verticalCompact,0},compactType:r.default.oneOf(["vertical","horizontal"]),layout:function(e){var t=e.layout;void 0!==t&&n(414).validateLayout(t,"layout")},margin:r.default.arrayOf(r.default.number),containerPadding:r.default.arrayOf(r.default.number),rowHeight:r.default.number,maxRows:r.default.number,isBounded:r.default.bool,isDraggable:r.default.bool,isResizable:r.default.bool,allowOverlap:r.default.bool,preventCollision:r.default.bool,useCSSTransforms:r.default.bool,transformScale:r.default.number,isDroppable:r.default.bool,resizeHandles:o,resizeHandle:s,onLayoutChange:r.default.func,onDragStart:r.default.func,onDrag:r.default.func,onDragStop:r.default.func,onResizeStart:r.default.func,onResize:r.default.func,onResizeStop:r.default.func,onDrop:r.default.func,droppingItem:r.default.shape({i:r.default.string.isRequired,w:r.default.number.isRequired,h:r.default.number.isRequired}),children:function(e,t){var n=e[t],r={};i.default.Children.forEach(n,(function(e){if(null!=(null==e?void 0:e.key)){if(r[e.key])throw new Error('Duplicate child key "'+e.key+'" found! This will cause problems in ReactGridLayout.');r[e.key]=!0}}))},innerRef:r.default.any};t.default=l},4636:(e,t,n)=>{"use strict";function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}t.default=void 0;var i=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==r(e)&&"function"!=typeof e)return{default:e};var n=p(t);if(n&&n.has(e))return n.get(e);var i={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&Object.prototype.hasOwnProperty.call(e,o)){var s=a?Object.getOwnPropertyDescriptor(e,o):null;s&&(s.get||s.set)?Object.defineProperty(i,o,s):i[o]=e[o]}i.default=e,n&&n.set(e,i);return i}(n(5959)),a=d(n(2688)),o=d(n(7842)),s=n(414),l=n(544),c=d(n(9482)),u=["breakpoint","breakpoints","cols","layouts","margin","containerPadding","onBreakpointChange","onLayoutChange","onWidthChange"];function d(e){return e&&e.__esModule?e:{default:e}}function p(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(p=function(e){return e?n:t})(e)}function h(){return h=Object.assign||function(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function m(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function g(e){for(var t=1;t{"use strict";function n(e){var t=e.margin,n=e.containerPadding,r=e.containerWidth,i=e.cols;return(r-t[0]*(i-1)-2*n[0])/i}function r(e,t,n){return Number.isFinite(e)?Math.round(t*e+Math.max(0,e-1)*n):e}function i(e,t,n){return Math.max(Math.min(e,n),t)}Object.defineProperty(t,"__esModule",{value:!0}),t.calcGridColWidth=n,t.calcGridItemPosition=function(e,t,i,a,o,s){var l=e.margin,c=e.containerPadding,u=e.rowHeight,d=n(e),p={};s&&s.resizing?(p.width=Math.round(s.resizing.width),p.height=Math.round(s.resizing.height)):(p.width=r(a,d,l[0]),p.height=r(o,u,l[1]));s&&s.dragging?(p.top=Math.round(s.dragging.top),p.left=Math.round(s.dragging.left)):(p.top=Math.round((u+l[1])*i+c[1]),p.left=Math.round((d+l[0])*t+c[0]));return p},t.calcGridItemWHPx=r,t.calcWH=function(e,t,r,a,o){var s=e.margin,l=e.maxRows,c=e.cols,u=e.rowHeight,d=n(e),p=Math.round((t+s[0])/(d+s[0])),h=Math.round((r+s[1])/(u+s[1]));return p=i(p,0,c-a),h=i(h,0,l-o),{w:p,h}},t.calcXY=function(e,t,r,a,o){var s=e.margin,l=e.cols,c=e.rowHeight,u=e.maxRows,d=n(e),p=Math.round((r-s[0])/(d+s[0])),h=Math.round((t-s[1])/(c+s[1]));return p=i(p,0,l-a),h=i(h,0,u-o),{x:p,y:h}},t.clamp=i},6805:(e,t,n)=>{"use strict";function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}t.default=function(e){var t;return t=function(t){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&p(e,t)}(c,t);var n,a,l=(n=c,a=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,t=f(n);if(a){var i=f(this).constructor;e=Reflect.construct(t,arguments,i)}else e=t.apply(this,arguments);return function(e,t){if(t&&("object"===r(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return h(e)}(this,e)});function c(){var e;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,c);for(var t=arguments.length,n=new Array(t),r=0;r=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}(t,s);return n&&!this.mounted?i.createElement("div",{className:(0,o.default)(this.props.className,g),style:this.props.style,ref:this.elementRef}):i.createElement(e,u({innerRef:this.elementRef},r,this.state))}}]),c}(i.Component),m(t,"defaultProps",{measureBeforeMount:!1}),m(t,"propTypes",{measureBeforeMount:a.default.bool}),t};var i=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==r(e)&&"function"!=typeof e)return{default:e};var n=c(t);if(n&&n.has(e))return n.get(e);var i={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&Object.prototype.hasOwnProperty.call(e,o)){var s=a?Object.getOwnPropertyDescriptor(e,o):null;s&&(s.get||s.set)?Object.defineProperty(i,o,s):i[o]=e[o]}i.default=e,n&&n.set(e,i);return i}(n(5959)),a=l(n(2688)),o=l(n(7256)),s=["measureBeforeMount"];function l(e){return e&&e.__esModule?e:{default:e}}function c(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(c=function(e){return e?n:t})(e)}function u(){return u=Object.assign||function(e){for(var t=1;t{e.exports=function(e,t,n){return e===t||e.className===t.className&&n(e.style,t.style)&&e.width===t.width&&e.autoSize===t.autoSize&&e.cols===t.cols&&e.draggableCancel===t.draggableCancel&&e.draggableHandle===t.draggableHandle&&n(e.verticalCompact,t.verticalCompact)&&n(e.compactType,t.compactType)&&n(e.layout,t.layout)&&n(e.margin,t.margin)&&n(e.containerPadding,t.containerPadding)&&e.rowHeight===t.rowHeight&&e.maxRows===t.maxRows&&e.isBounded===t.isBounded&&e.isDraggable===t.isDraggable&&e.isResizable===t.isResizable&&e.allowOverlap===t.allowOverlap&&e.preventCollision===t.preventCollision&&e.useCSSTransforms===t.useCSSTransforms&&e.transformScale===t.transformScale&&e.isDroppable===t.isDroppable&&n(e.resizeHandles,t.resizeHandles)&&n(e.resizeHandle,t.resizeHandle)&&e.onLayoutChange===t.onLayoutChange&&e.onDragStart===t.onDragStart&&e.onDrag===t.onDrag&&e.onDragStop===t.onDragStop&&e.onResizeStart===t.onResizeStart&&e.onResize===t.onResize&&e.onResizeStop===t.onResizeStop&&e.onDrop===t.onDrop&&n(e.droppingItem,t.droppingItem)&&n(e.innerRef,t.innerRef)}},544:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.findOrGenerateResponsiveLayout=function(e,t,n,a,o,s){if(e[n])return(0,r.cloneLayout)(e[n]);for(var l=e[a],c=i(t),u=c.slice(c.indexOf(n)),d=0,p=u.length;de[s]&&(r=s)}return r},t.getColsFromBreakpoint=function(e,t){if(!t[e])throw new Error("ResponsiveReactGridLayout: `cols` entry for breakpoint "+e+" is missing!");return t[e]},t.sortBreakpoints=i;var r=n(414);function i(e){return Object.keys(e).sort((function(t,n){return e[t]-e[n]}))}},414:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.bottom=d,t.childrenEqual=function(e,t){return(0,r.default)(i.default.Children.map(e,(function(e){return null==e?void 0:e.key})),i.default.Children.map(t,(function(e){return null==e?void 0:e.key})))},t.cloneLayout=p,t.cloneLayoutItem=f,t.collides=g,t.compact=y,t.compactItem=w,t.compactType=function(e){var t=e||{},n=t.verticalCompact,r=t.compactType;return!1===n?null:r},t.correctBounds=S,t.fastPositionEqual=function(e,t){return e.left===t.left&&e.top===t.top&&e.width===t.width&&e.height===t.height},t.fastRGLPropsEqual=void 0,t.getAllCollisions=O,t.getFirstCollision=x,t.getLayoutItem=E,t.getStatics=_,t.modifyLayout=h,t.moveElement=T,t.moveElementAwayFromCollision=C,t.noop=void 0,t.perc=function(e){return 100*e+"%"},t.setTopLeft=function(e){var t=e.top,n=e.left,r=e.width,i=e.height;return{top:"".concat(t,"px"),left:"".concat(n,"px"),width:"".concat(r,"px"),height:"".concat(i,"px"),position:"absolute"}},t.setTransform=function(e){var t=e.top,n=e.left,r=e.width,i=e.height,a="translate(".concat(n,"px,").concat(t,"px)");return{transform:a,WebkitTransform:a,MozTransform:a,msTransform:a,OTransform:a,width:"".concat(r,"px"),height:"".concat(i,"px"),position:"absolute"}},t.sortLayoutItems=k,t.sortLayoutItemsByColRow=R,t.sortLayoutItemsByRowCol=P,t.synchronizeLayoutWithChildren=function(e,t,n,r,a){e=e||[];var o=[];i.default.Children.forEach(t,(function(t){if(null!=(null==t?void 0:t.key)){var n=E(e,String(t.key));if(n)o.push(f(n));else{!c&&t.props._grid&&console.warn("`_grid` properties on children have been deprecated as of React 15.2. Please use `data-grid` or add your properties directly to the `layout`.");var r=t.props["data-grid"]||t.props._grid;r?(c||A([r],"ReactGridLayout.children"),o.push(f(s(s({},r),{},{i:t.key})))):o.push(f({w:1,h:1,x:0,y:d(o),i:String(t.key)}))}}}));var l=S(o,{cols:n});return a?l:y(l,r,n)},t.validateLayout=A,t.withLayoutItem=function(e,t,n){var r=E(e,t);return r?(r=n(f(r)),[e=h(e,r),r]):[e,null]};var r=a(n(7842)),i=a(n(5959));function a(e){return e&&e.__esModule?e:{default:e}}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;tn&&(n=t);return n}function p(e){for(var t=Array(e.length),n=0,r=e.length;n=t.x+t.w)&&(!(e.y+e.h<=t.y)&&!(e.y>=t.y+t.h))))}function y(e,t,n){for(var r=_(e),i=k(e,t),a=Array(e.length),o=0,s=i.length;ot.y+t.h)break;g(t,o)&&v(e,o,n+t[i],r)}}t[r]=n}function w(e,t,n,r,i){var a,o="horizontal"===n;if("vertical"===n)for(t.y=Math.min(d(e),t.y);t.y>0&&!x(e,t);)t.y--;else if(o)for(;t.x>0&&!x(e,t);)t.x--;for(;a=x(e,t);)o?v(i,t,a.x+a.w,"x"):v(i,t,a.y+a.h,"y"),o&&t.x+t.w>r&&(t.x=r-t.w,t.y++);return t.y=Math.max(t.y,0),t.x=Math.max(t.x,0),t}function S(e,t){for(var n=_(e),r=0,i=e.length;rt.cols&&(a.x=t.cols-a.w),a.x<0&&(a.x=0,a.w=t.cols),a.static)for(;x(n,a);)a.y++;else n.push(a)}return e}function E(e,t){for(var n=0,r=e.length;n=r:"horizontal"===o&&"number"==typeof n&&c>=n)&&(d=d.reverse());var h=O(d,t),f=h.length>0;if(f&&l)return p(e);if(f&&a)return D("Collision prevented on ".concat(t.i,", reverting.")),t.x=c,t.y=u,t.moved=!1,e;for(var m=0,g=h.length;mt.y||e.y===t.y&&e.x>t.x?1:e.y===t.y&&e.x===t.x?0:-1}))}function R(e){return e.slice(0).sort((function(e,t){return e.x>t.x||e.x===t.x&&e.y>t.y?1:-1}))}function A(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"Layout",n=["x","y","w","h"];if(!Array.isArray(e))throw new Error(t+" must be an array!");for(var r=0,i=e.length;r{e.exports=n(9482).default,e.exports.utils=n(414),e.exports.Responsive=n(4636).default,e.exports.Responsive.utils=n(544),e.exports.WidthProvider=n(6805).default},7256:(e,t,n)=>{"use strict";function r(e){var t,n,i="";if("string"==typeof e||"number"==typeof e)i+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;ti,default:()=>a});const a=i},1794:(e,t,n)=>{"use strict";t.__esModule=!0,t.default=void 0;var r=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=l(t);if(n&&n.has(e))return n.get(e);var r={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var o=i?Object.getOwnPropertyDescriptor(e,a):null;o&&(o.get||o.set)?Object.defineProperty(r,a,o):r[a]=e[a]}r.default=e,n&&n.set(e,r);return r}(n(5959)),i=n(8230),a=n(9954),o=n(6333),s=["children","className","draggableOpts","width","height","handle","handleSize","lockAspectRatio","axis","minConstraints","maxConstraints","onResize","onResizeStop","onResizeStart","resizeHandles","transformScale"];function l(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(l=function(e){return e?n:t})(e)}function c(){return c=Object.assign?Object.assign.bind():function(e){for(var t=1;tMath.abs(l*o)?t=e/o:e=t*o}var c=e,u=t,d=this.slack||[0,0],p=d[0],h=d[1];return e+=p,t+=h,r&&(e=Math.max(r[0],e),t=Math.max(r[1],t)),i&&(e=Math.min(i[0],e),t=Math.min(i[1],t)),this.slack=[p+(c-e),h+(u-t)],[e,t]},l.resizeHandler=function(e,t){var n=this;return function(r,i){var a=i.node,o=i.deltaX,s=i.deltaY;"onResizeStart"===e&&n.resetData();var l=("both"===n.props.axis||"x"===n.props.axis)&&"n"!==t&&"s"!==t,c=("both"===n.props.axis||"y"===n.props.axis)&&"e"!==t&&"w"!==t;if(l||c){var u=t[0],d=t[t.length-1],p=a.getBoundingClientRect();if(null!=n.lastHandleRect){if("w"===d)o+=p.left-n.lastHandleRect.left;if("n"===u)s+=p.top-n.lastHandleRect.top}n.lastHandleRect=p,"w"===d&&(o=-o),"n"===u&&(s=-s);var h=n.props.width+(l?o/n.props.transformScale:0),f=n.props.height+(c?s/n.props.transformScale:0),m=n.runConstraints(h,f);h=m[0],f=m[1];var g=h!==n.props.width||f!==n.props.height,y="function"==typeof n.props[e]?n.props[e]:null;y&&!("onResize"===e&&!g)&&(null==r.persist||r.persist(),y(r,{node:a,size:{width:h,height:f},handle:t})),"onResizeStop"===e&&n.resetData()}}},l.renderResizeHandle=function(e,t){var n=this.props.handle;if(!n)return r.createElement("span",{className:"react-resizable-handle react-resizable-handle-"+e,ref:t});if("function"==typeof n)return n(e,t);var i=d({ref:t},"string"==typeof n.type?{}:{handleAxis:e});return r.cloneElement(n,i)},l.render=function(){var e=this,t=this.props,n=t.children,o=t.className,l=t.draggableOpts,u=(t.width,t.height,t.handle,t.handleSize,t.lockAspectRatio,t.axis,t.minConstraints,t.maxConstraints,t.onResize,t.onResizeStop,t.onResizeStart,t.resizeHandles),p=(t.transformScale,function(e,t){if(null==e)return{};var n,r,i={},a=Object.keys(e);for(r=0;r=0||(i[n]=e[n]);return i}(t,s));return(0,a.cloneElement)(n,d(d({},p),{},{className:(o?o+" ":"")+"react-resizable",children:[].concat(n.props.children,u.map((function(t){var n,a=null!=(n=e.handleRefs[t])?n:e.handleRefs[t]=r.createRef();return r.createElement(i.DraggableCore,c({},l,{nodeRef:a,key:"resizableHandle-"+t,onStop:e.resizeHandler("onResizeStop",t),onStart:e.resizeHandler("onResizeStart",t),onDrag:e.resizeHandler("onResize",t)}),e.renderResizeHandle(t,a))})))}))},o}(r.Component);t.default=f,f.propTypes=o.resizableProps,f.defaultProps={axis:"both",handleSize:[20,20],lockAspectRatio:!1,minConstraints:[20,20],maxConstraints:[1/0,1/0],resizeHandles:["se"],transformScale:1}},6609:(e,t,n)=>{"use strict";t.default=void 0;var r=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=c(t);if(n&&n.has(e))return n.get(e);var r={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var o=i?Object.getOwnPropertyDescriptor(e,a):null;o&&(o.get||o.set)?Object.defineProperty(r,a,o):r[a]=e[a]}r.default=e,n&&n.set(e,r);return r}(n(5959)),i=l(n(2688)),a=l(n(1794)),o=n(6333),s=["handle","handleSize","onResize","onResizeStart","onResizeStop","draggableOpts","minConstraints","maxConstraints","lockAspectRatio","axis","width","height","resizeHandles","style","transformScale"];function l(e){return e&&e.__esModule?e:{default:e}}function c(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(c=function(e){return e?n:t})(e)}function u(){return u=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,s);return r.createElement(a.default,{axis:f,draggableOpts:l,handle:t,handleSize:n,height:this.state.height,lockAspectRatio:h,maxConstraints:d,minConstraints:c,onResizeStart:i,onResize:this.onResize,onResizeStop:o,resizeHandles:m,transformScale:y,width:this.state.width},r.createElement("div",u({},b,{style:p(p({},g),{},{width:this.state.width+"px",height:this.state.height+"px"})})))},i}(r.Component);t.default=m,m.propTypes=p(p({},o.resizableProps),{},{children:i.default.element})},6333:(e,t,n)=>{"use strict";t.__esModule=!0,t.resizableProps=void 0;var r,i=(r=n(2688))&&r.__esModule?r:{default:r};n(8230);var a={axis:i.default.oneOf(["both","x","y","none"]),className:i.default.string,children:i.default.element.isRequired,draggableOpts:i.default.shape({allowAnyClick:i.default.bool,cancel:i.default.string,children:i.default.node,disabled:i.default.bool,enableUserSelectHack:i.default.bool,offsetParent:i.default.node,grid:i.default.arrayOf(i.default.number),handle:i.default.string,nodeRef:i.default.object,onStart:i.default.func,onDrag:i.default.func,onStop:i.default.func,onMouseDown:i.default.func,scale:i.default.number}),height:function(){for(var e=arguments.length,t=new Array(e),n=0;n{"use strict";t.__esModule=!0,t.cloneElement=function(e,t){t.style&&e.props.style&&(t.style=o(o({},e.props.style),t.style));t.className&&e.props.className&&(t.className=e.props.className+" "+t.className);return i.default.cloneElement(e,t)};var r,i=(r=n(5959))&&r.__esModule?r:{default:r};function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t{"use strict";e.exports=function(){throw new Error("Don't instantiate Resizable directly! Use require('react-resizable').Resizable")},e.exports.Resizable=n(1794).default,e.exports.ResizableBox=n(6609).default},9406:(e,t,n)=>{"use strict";var r,i=n(5959),a=(r=i)&&"object"==typeof r&&"default"in r?r.default:r;function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var s=!("undefined"==typeof window||!window.document||!window.document.createElement);e.exports=function(e,t,n){if("function"!=typeof e)throw new Error("Expected reducePropsToState to be a function.");if("function"!=typeof t)throw new Error("Expected handleStateChangeOnClient to be a function.");if(void 0!==n&&"function"!=typeof n)throw new Error("Expected mapStateOnServer to either be undefined or a function.");return function(r){if("function"!=typeof r)throw new Error("Expected WrappedComponent to be a React component.");var l,c=[];function u(){l=e(c.map((function(e){return e.props}))),d.canUseDOM?t(l):n&&(l=n(l))}var d=function(e){var t,n;function i(){return e.apply(this,arguments)||this}n=e,(t=i).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n,i.peek=function(){return l},i.rewind=function(){if(i.canUseDOM)throw new Error("You may only call rewind() on the server. Call peek() to read the current state.");var e=l;return l=void 0,c=[],e};var o=i.prototype;return o.UNSAFE_componentWillMount=function(){c.push(this),u()},o.componentDidUpdate=function(){u()},o.componentWillUnmount=function(){var e=c.indexOf(this);c.splice(e,1),u()},o.render=function(){return a.createElement(r,this.props)},i}(i.PureComponent);return o(d,"displayName","SideEffect("+function(e){return e.displayName||e.name||"Component"}(r)+")"),o(d,"canUseDOM",s),d}}},4386:(e,t,n)=>{"use strict";var r=n(6212),i=n(5959),a=r.__importDefault(n(5690));t.A=function(e,t,n){void 0===t&&(t=0),void 0===n&&(n=[]);var r=a.default(e,t),o=r[0],s=r[1],l=r[2];return i.useEffect(l,n),[o,s]}},1336:(e,t,n)=>{"use strict";var r=n(5959);t.A=function(e){var t=r.useRef();return r.useEffect((function(){t.current=e})),t.current}},5690:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(5959);t.default=function(e,t){void 0===t&&(t=0);var n=r.useRef(!1),i=r.useRef(),a=r.useRef(e),o=r.useCallback((function(){return n.current}),[]),s=r.useCallback((function(){n.current=!1,i.current&&clearTimeout(i.current),i.current=setTimeout((function(){n.current=!0,a.current()}),t)}),[t]),l=r.useCallback((function(){n.current=null,i.current&&clearTimeout(i.current)}),[]);return r.useEffect((function(){a.current=e}),[e]),r.useEffect((function(){return s(),l}),[t]),[o,l,s]}},2192:(e,t,n)=>{"use strict";var r=n(5959),i=Symbol.for("react.element"),a=Symbol.for("react.fragment"),o=Object.prototype.hasOwnProperty,s=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,l={key:!0,ref:!0,__self:!0,__source:!0};function c(e,t,n){var r,a={},c=null,u=null;for(r in void 0!==n&&(c=""+n),void 0!==t.key&&(c=""+t.key),void 0!==t.ref&&(u=t.ref),t)o.call(t,r)&&!l.hasOwnProperty(r)&&(a[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps)void 0===a[r]&&(a[r]=t[r]);return{$$typeof:i,type:e,key:c,ref:u,props:a,_owner:s.current}}t.Fragment=a,t.jsx=c,t.jsxs=c},2540:(e,t,n)=>{"use strict";e.exports=n(2192)},9524:(e,t,n)=>{const r=Symbol("SemVer ANY");class i{static get ANY(){return r}constructor(e,t){if(t=a(t),e instanceof i){if(e.loose===!!t.loose)return e;e=e.value}e=e.trim().split(/\s+/).join(" "),c("comparator",e,t),this.options=t,this.loose=!!t.loose,this.parse(e),this.semver===r?this.value="":this.value=this.operator+this.semver.version,c("comp",this)}parse(e){const t=this.options.loose?o[s.COMPARATORLOOSE]:o[s.COMPARATOR],n=e.match(t);if(!n)throw new TypeError(`Invalid comparator: ${e}`);this.operator=void 0!==n[1]?n[1]:"","="===this.operator&&(this.operator=""),n[2]?this.semver=new u(n[2],this.options.loose):this.semver=r}toString(){return this.value}test(e){if(c("Comparator.test",e,this.options.loose),this.semver===r||e===r)return!0;if("string"==typeof e)try{e=new u(e,this.options)}catch(e){return!1}return l(e,this.operator,this.semver,this.options)}intersects(e,t){if(!(e instanceof i))throw new TypeError("a Comparator is required");return""===this.operator?""===this.value||new d(e.value,t).test(this.value):""===e.operator?""===e.value||new d(this.value,t).test(e.semver):(!(t=a(t)).includePrerelease||"<0.0.0-0"!==this.value&&"<0.0.0-0"!==e.value)&&(!(!t.includePrerelease&&(this.value.startsWith("<0.0.0")||e.value.startsWith("<0.0.0")))&&(!(!this.operator.startsWith(">")||!e.operator.startsWith(">"))||(!(!this.operator.startsWith("<")||!e.operator.startsWith("<"))||(!(this.semver.version!==e.semver.version||!this.operator.includes("=")||!e.operator.includes("="))||(!!(l(this.semver,"<",e.semver,t)&&this.operator.startsWith(">")&&e.operator.startsWith("<"))||!!(l(this.semver,">",e.semver,t)&&this.operator.startsWith("<")&&e.operator.startsWith(">")))))))}}e.exports=i;const a=n(7095),{safeRe:o,t:s}=n(6850),l=n(3811),c=n(9796),u=n(7944),d=n(8395)},8395:(e,t,n)=>{class r{constructor(e,t){if(t=a(t),e instanceof r)return e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease?e:new r(e.raw,t);if(e instanceof o)return this.raw=e.value,this.set=[[e]],this.format(),this;if(this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease,this.raw=e.trim().split(/\s+/).join(" "),this.set=this.raw.split("||").map((e=>this.parseRange(e.trim()))).filter((e=>e.length)),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){const e=this.set[0];if(this.set=this.set.filter((e=>!g(e[0]))),0===this.set.length)this.set=[e];else if(this.set.length>1)for(const e of this.set)if(1===e.length&&y(e[0])){this.set=[e];break}}this.format()}format(){return this.range=this.set.map((e=>e.join(" ").trim())).join("||").trim(),this.range}toString(){return this.range}parseRange(e){const t=((this.options.includePrerelease&&f)|(this.options.loose&&m))+":"+e,n=i.get(t);if(n)return n;const r=this.options.loose,a=r?c[u.HYPHENRANGELOOSE]:c[u.HYPHENRANGE];e=e.replace(a,P(this.options.includePrerelease)),s("hyphen replace",e),e=e.replace(c[u.COMPARATORTRIM],d),s("comparator trim",e),e=e.replace(c[u.TILDETRIM],p),s("tilde trim",e),e=e.replace(c[u.CARETTRIM],h),s("caret trim",e);let l=e.split(" ").map((e=>v(e,this.options))).join(" ").split(/\s+/).map((e=>k(e,this.options)));r&&(l=l.filter((e=>(s("loose invalid filter",e,this.options),!!e.match(c[u.COMPARATORLOOSE]))))),s("range list",l);const y=new Map,b=l.map((e=>new o(e,this.options)));for(const e of b){if(g(e))return[e];y.set(e.value,e)}y.size>1&&y.has("")&&y.delete("");const w=[...y.values()];return i.set(t,w),w}intersects(e,t){if(!(e instanceof r))throw new TypeError("a Range is required");return this.set.some((n=>b(n,t)&&e.set.some((e=>b(e,t)&&n.every((n=>e.every((e=>n.intersects(e,t)))))))))}test(e){if(!e)return!1;if("string"==typeof e)try{e=new l(e,this.options)}catch(e){return!1}for(let t=0;t"<0.0.0-0"===e.value,y=e=>""===e.value,b=(e,t)=>{let n=!0;const r=e.slice();let i=r.pop();for(;n&&r.length;)n=r.every((e=>i.intersects(e,t))),i=r.pop();return n},v=(e,t)=>(s("comp",e,t),e=x(e,t),s("caret",e),e=S(e,t),s("tildes",e),e=_(e,t),s("xrange",e),e=C(e,t),s("stars",e),e),w=e=>!e||"x"===e.toLowerCase()||"*"===e,S=(e,t)=>e.trim().split(/\s+/).map((e=>E(e,t))).join(" "),E=(e,t)=>{const n=t.loose?c[u.TILDELOOSE]:c[u.TILDE];return e.replace(n,((t,n,r,i,a)=>{let o;return s("tilde",e,t,n,r,i,a),w(n)?o="":w(r)?o=`>=${n}.0.0 <${+n+1}.0.0-0`:w(i)?o=`>=${n}.${r}.0 <${n}.${+r+1}.0-0`:a?(s("replaceTilde pr",a),o=`>=${n}.${r}.${i}-${a} <${n}.${+r+1}.0-0`):o=`>=${n}.${r}.${i} <${n}.${+r+1}.0-0`,s("tilde return",o),o}))},x=(e,t)=>e.trim().split(/\s+/).map((e=>O(e,t))).join(" "),O=(e,t)=>{s("caret",e,t);const n=t.loose?c[u.CARETLOOSE]:c[u.CARET],r=t.includePrerelease?"-0":"";return e.replace(n,((t,n,i,a,o)=>{let l;return s("caret",e,t,n,i,a,o),w(n)?l="":w(i)?l=`>=${n}.0.0${r} <${+n+1}.0.0-0`:w(a)?l="0"===n?`>=${n}.${i}.0${r} <${n}.${+i+1}.0-0`:`>=${n}.${i}.0${r} <${+n+1}.0.0-0`:o?(s("replaceCaret pr",o),l="0"===n?"0"===i?`>=${n}.${i}.${a}-${o} <${n}.${i}.${+a+1}-0`:`>=${n}.${i}.${a}-${o} <${n}.${+i+1}.0-0`:`>=${n}.${i}.${a}-${o} <${+n+1}.0.0-0`):(s("no pr"),l="0"===n?"0"===i?`>=${n}.${i}.${a}${r} <${n}.${i}.${+a+1}-0`:`>=${n}.${i}.${a}${r} <${n}.${+i+1}.0-0`:`>=${n}.${i}.${a} <${+n+1}.0.0-0`),s("caret return",l),l}))},_=(e,t)=>(s("replaceXRanges",e,t),e.split(/\s+/).map((e=>T(e,t))).join(" ")),T=(e,t)=>{e=e.trim();const n=t.loose?c[u.XRANGELOOSE]:c[u.XRANGE];return e.replace(n,((n,r,i,a,o,l)=>{s("xRange",e,n,r,i,a,o,l);const c=w(i),u=c||w(a),d=u||w(o),p=d;return"="===r&&p&&(r=""),l=t.includePrerelease?"-0":"",c?n=">"===r||"<"===r?"<0.0.0-0":"*":r&&p?(u&&(a=0),o=0,">"===r?(r=">=",u?(i=+i+1,a=0,o=0):(a=+a+1,o=0)):"<="===r&&(r="<",u?i=+i+1:a=+a+1),"<"===r&&(l="-0"),n=`${r+i}.${a}.${o}${l}`):u?n=`>=${i}.0.0${l} <${+i+1}.0.0-0`:d&&(n=`>=${i}.${a}.0${l} <${i}.${+a+1}.0-0`),s("xRange return",n),n}))},C=(e,t)=>(s("replaceStars",e,t),e.trim().replace(c[u.STAR],"")),k=(e,t)=>(s("replaceGTE0",e,t),e.trim().replace(c[t.includePrerelease?u.GTE0PRE:u.GTE0],"")),P=e=>(t,n,r,i,a,o,s,l,c,u,d,p)=>`${n=w(r)?"":w(i)?`>=${r}.0.0${e?"-0":""}`:w(a)?`>=${r}.${i}.0${e?"-0":""}`:o?`>=${n}`:`>=${n}${e?"-0":""}`} ${l=w(c)?"":w(u)?`<${+c+1}.0.0-0`:w(d)?`<${c}.${+u+1}.0-0`:p?`<=${c}.${u}.${d}-${p}`:e?`<${c}.${u}.${+d+1}-0`:`<=${l}`}`.trim(),R=(e,t,n)=>{for(let n=0;n0){const r=e[n].semver;if(r.major===t.major&&r.minor===t.minor&&r.patch===t.patch)return!0}return!1}return!0}},7944:(e,t,n)=>{const r=n(9796),{MAX_LENGTH:i,MAX_SAFE_INTEGER:a}=n(9630),{safeRe:o,t:s}=n(6850),l=n(7095),{compareIdentifiers:c}=n(4031);class u{constructor(e,t){if(t=l(t),e instanceof u){if(e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease)return e;e=e.version}else if("string"!=typeof e)throw new TypeError(`Invalid version. Must be a string. Got type "${typeof e}".`);if(e.length>i)throw new TypeError(`version is longer than ${i} characters`);r("SemVer",e,t),this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease;const n=e.trim().match(t.loose?o[s.LOOSE]:o[s.FULL]);if(!n)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+n[1],this.minor=+n[2],this.patch=+n[3],this.major>a||this.major<0)throw new TypeError("Invalid major version");if(this.minor>a||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>a||this.patch<0)throw new TypeError("Invalid patch version");n[4]?this.prerelease=n[4].split(".").map((e=>{if(/^[0-9]+$/.test(e)){const t=+e;if(t>=0&&t=0;)"number"==typeof this.prerelease[r]&&(this.prerelease[r]++,r=-2);if(-1===r){if(t===this.prerelease.join(".")&&!1===n)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(e)}}if(t){let r=[t,e];!1===n&&(r=[t]),0===c(this.prerelease[0],t)?isNaN(this.prerelease[1])&&(this.prerelease=r):this.prerelease=r}break}default:throw new Error(`invalid increment argument: ${e}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}}e.exports=u},7994:(e,t,n)=>{const r=n(5860);e.exports=(e,t)=>{const n=r(e.trim().replace(/^[=v]+/,""),t);return n?n.version:null}},3811:(e,t,n)=>{const r=n(6909),i=n(7659),a=n(144),o=n(2077),s=n(599),l=n(7092);e.exports=(e,t,n,c)=>{switch(t){case"===":return"object"==typeof e&&(e=e.version),"object"==typeof n&&(n=n.version),e===n;case"!==":return"object"==typeof e&&(e=e.version),"object"==typeof n&&(n=n.version),e!==n;case"":case"=":case"==":return r(e,n,c);case"!=":return i(e,n,c);case">":return a(e,n,c);case">=":return o(e,n,c);case"<":return s(e,n,c);case"<=":return l(e,n,c);default:throw new TypeError(`Invalid operator: ${t}`)}}},5334:(e,t,n)=>{const r=n(7944),i=n(5860),{safeRe:a,t:o}=n(6850);e.exports=(e,t)=>{if(e instanceof r)return e;if("number"==typeof e&&(e=String(e)),"string"!=typeof e)return null;let n=null;if((t=t||{}).rtl){const r=t.includePrerelease?a[o.COERCERTLFULL]:a[o.COERCERTL];let i;for(;(i=r.exec(e))&&(!n||n.index+n[0].length!==e.length);)n&&i.index+i[0].length===n.index+n[0].length||(n=i),r.lastIndex=i.index+i[1].length+i[2].length;r.lastIndex=-1}else n=e.match(t.includePrerelease?a[o.COERCEFULL]:a[o.COERCE]);if(null===n)return null;const s=n[2],l=n[3]||"0",c=n[4]||"0",u=t.includePrerelease&&n[5]?`-${n[5]}`:"",d=t.includePrerelease&&n[6]?`+${n[6]}`:"";return i(`${s}.${l}.${c}${u}${d}`,t)}},2801:(e,t,n)=>{const r=n(7944);e.exports=(e,t,n)=>{const i=new r(e,n),a=new r(t,n);return i.compare(a)||i.compareBuild(a)}},7023:(e,t,n)=>{const r=n(5380);e.exports=(e,t)=>r(e,t,!0)},5380:(e,t,n)=>{const r=n(7944);e.exports=(e,t,n)=>new r(e,n).compare(new r(t,n))},660:(e,t,n)=>{const r=n(5860);e.exports=(e,t)=>{const n=r(e,null,!0),i=r(t,null,!0),a=n.compare(i);if(0===a)return null;const o=a>0,s=o?n:i,l=o?i:n,c=!!s.prerelease.length;if(!!l.prerelease.length&&!c)return l.patch||l.minor?s.patch?"patch":s.minor?"minor":"major":"major";const u=c?"pre":"";return n.major!==i.major?u+"major":n.minor!==i.minor?u+"minor":n.patch!==i.patch?u+"patch":"prerelease"}},6909:(e,t,n)=>{const r=n(5380);e.exports=(e,t,n)=>0===r(e,t,n)},144:(e,t,n)=>{const r=n(5380);e.exports=(e,t,n)=>r(e,t,n)>0},2077:(e,t,n)=>{const r=n(5380);e.exports=(e,t,n)=>r(e,t,n)>=0},5955:(e,t,n)=>{const r=n(7944);e.exports=(e,t,n,i,a)=>{"string"==typeof n&&(a=i,i=n,n=void 0);try{return new r(e instanceof r?e.version:e,n).inc(t,i,a).version}catch(e){return null}}},599:(e,t,n)=>{const r=n(5380);e.exports=(e,t,n)=>r(e,t,n)<0},7092:(e,t,n)=>{const r=n(5380);e.exports=(e,t,n)=>r(e,t,n)<=0},2966:(e,t,n)=>{const r=n(7944);e.exports=(e,t)=>new r(e,t).major},5986:(e,t,n)=>{const r=n(7944);e.exports=(e,t)=>new r(e,t).minor},7659:(e,t,n)=>{const r=n(5380);e.exports=(e,t,n)=>0!==r(e,t,n)},5860:(e,t,n)=>{const r=n(7944);e.exports=(e,t,n=!1)=>{if(e instanceof r)return e;try{return new r(e,t)}catch(e){if(!n)return null;throw e}}},1617:(e,t,n)=>{const r=n(7944);e.exports=(e,t)=>new r(e,t).patch},9613:(e,t,n)=>{const r=n(5860);e.exports=(e,t)=>{const n=r(e,t);return n&&n.prerelease.length?n.prerelease:null}},2862:(e,t,n)=>{const r=n(5380);e.exports=(e,t,n)=>r(t,e,n)},6033:(e,t,n)=>{const r=n(2801);e.exports=(e,t)=>e.sort(((e,n)=>r(n,e,t)))},1722:(e,t,n)=>{const r=n(8395);e.exports=(e,t,n)=>{try{t=new r(t,n)}catch(e){return!1}return t.test(e)}},603:(e,t,n)=>{const r=n(2801);e.exports=(e,t)=>e.sort(((e,n)=>r(e,n,t)))},7645:(e,t,n)=>{const r=n(5860);e.exports=(e,t)=>{const n=r(e,t);return n?n.version:null}},8449:(e,t,n)=>{const r=n(6850),i=n(9630),a=n(7944),o=n(4031),s=n(5860),l=n(7645),c=n(7994),u=n(5955),d=n(660),p=n(2966),h=n(5986),f=n(1617),m=n(9613),g=n(5380),y=n(2862),b=n(7023),v=n(2801),w=n(603),S=n(6033),E=n(144),x=n(599),O=n(6909),_=n(7659),T=n(2077),C=n(7092),k=n(3811),P=n(5334),R=n(9524),A=n(8395),D=n(1722),j=n(651),I=n(7840),N=n(7930),L=n(3489),M=n(7494),F=n(5463),$=n(7871),B=n(4266),V=n(1112),z=n(1465),U=n(9252);e.exports={parse:s,valid:l,clean:c,inc:u,diff:d,major:p,minor:h,patch:f,prerelease:m,compare:g,rcompare:y,compareLoose:b,compareBuild:v,sort:w,rsort:S,gt:E,lt:x,eq:O,neq:_,gte:T,lte:C,cmp:k,coerce:P,Comparator:R,Range:A,satisfies:D,toComparators:j,maxSatisfying:I,minSatisfying:N,minVersion:L,validRange:M,outside:F,gtr:$,ltr:B,intersects:V,simplifyRange:z,subset:U,SemVer:a,re:r.re,src:r.src,tokens:r.t,SEMVER_SPEC_VERSION:i.SEMVER_SPEC_VERSION,RELEASE_TYPES:i.RELEASE_TYPES,compareIdentifiers:o.compareIdentifiers,rcompareIdentifiers:o.rcompareIdentifiers}},9630:e=>{const t=Number.MAX_SAFE_INTEGER||9007199254740991;e.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:16,MAX_SAFE_BUILD_LENGTH:250,MAX_SAFE_INTEGER:t,RELEASE_TYPES:["major","premajor","minor","preminor","patch","prepatch","prerelease"],SEMVER_SPEC_VERSION:"2.0.0",FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}},9796:e=>{const t="object"==typeof process&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...e)=>console.error("SEMVER",...e):()=>{};e.exports=t},4031:e=>{const t=/^[0-9]+$/,n=(e,n)=>{const r=t.test(e),i=t.test(n);return r&&i&&(e=+e,n=+n),e===n?0:r&&!i?-1:i&&!r?1:en(t,e)}},1158:e=>{e.exports=class{constructor(){this.max=1e3,this.map=new Map}get(e){const t=this.map.get(e);return void 0===t?void 0:(this.map.delete(e),this.map.set(e,t),t)}delete(e){return this.map.delete(e)}set(e,t){if(!this.delete(e)&&void 0!==t){if(this.map.size>=this.max){const e=this.map.keys().next().value;this.delete(e)}this.map.set(e,t)}return this}}},7095:e=>{const t=Object.freeze({loose:!0}),n=Object.freeze({});e.exports=e=>e?"object"!=typeof e?t:e:n},6850:(e,t,n)=>{const{MAX_SAFE_COMPONENT_LENGTH:r,MAX_SAFE_BUILD_LENGTH:i,MAX_LENGTH:a}=n(9630),o=n(9796),s=(t=e.exports={}).re=[],l=t.safeRe=[],c=t.src=[],u=t.t={};let d=0;const p="[a-zA-Z0-9-]",h=[["\\s",1],["\\d",a],[p,i]],f=(e,t,n)=>{const r=(e=>{for(const[t,n]of h)e=e.split(`${t}*`).join(`${t}{0,${n}}`).split(`${t}+`).join(`${t}{1,${n}}`);return e})(t),i=d++;o(e,i,t),u[e]=i,c[i]=t,s[i]=new RegExp(t,n?"g":void 0),l[i]=new RegExp(r,n?"g":void 0)};f("NUMERICIDENTIFIER","0|[1-9]\\d*"),f("NUMERICIDENTIFIERLOOSE","\\d+"),f("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${p}*`),f("MAINVERSION",`(${c[u.NUMERICIDENTIFIER]})\\.(${c[u.NUMERICIDENTIFIER]})\\.(${c[u.NUMERICIDENTIFIER]})`),f("MAINVERSIONLOOSE",`(${c[u.NUMERICIDENTIFIERLOOSE]})\\.(${c[u.NUMERICIDENTIFIERLOOSE]})\\.(${c[u.NUMERICIDENTIFIERLOOSE]})`),f("PRERELEASEIDENTIFIER",`(?:${c[u.NUMERICIDENTIFIER]}|${c[u.NONNUMERICIDENTIFIER]})`),f("PRERELEASEIDENTIFIERLOOSE",`(?:${c[u.NUMERICIDENTIFIERLOOSE]}|${c[u.NONNUMERICIDENTIFIER]})`),f("PRERELEASE",`(?:-(${c[u.PRERELEASEIDENTIFIER]}(?:\\.${c[u.PRERELEASEIDENTIFIER]})*))`),f("PRERELEASELOOSE",`(?:-?(${c[u.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${c[u.PRERELEASEIDENTIFIERLOOSE]})*))`),f("BUILDIDENTIFIER",`${p}+`),f("BUILD",`(?:\\+(${c[u.BUILDIDENTIFIER]}(?:\\.${c[u.BUILDIDENTIFIER]})*))`),f("FULLPLAIN",`v?${c[u.MAINVERSION]}${c[u.PRERELEASE]}?${c[u.BUILD]}?`),f("FULL",`^${c[u.FULLPLAIN]}$`),f("LOOSEPLAIN",`[v=\\s]*${c[u.MAINVERSIONLOOSE]}${c[u.PRERELEASELOOSE]}?${c[u.BUILD]}?`),f("LOOSE",`^${c[u.LOOSEPLAIN]}$`),f("GTLT","((?:<|>)?=?)"),f("XRANGEIDENTIFIERLOOSE",`${c[u.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),f("XRANGEIDENTIFIER",`${c[u.NUMERICIDENTIFIER]}|x|X|\\*`),f("XRANGEPLAIN",`[v=\\s]*(${c[u.XRANGEIDENTIFIER]})(?:\\.(${c[u.XRANGEIDENTIFIER]})(?:\\.(${c[u.XRANGEIDENTIFIER]})(?:${c[u.PRERELEASE]})?${c[u.BUILD]}?)?)?`),f("XRANGEPLAINLOOSE",`[v=\\s]*(${c[u.XRANGEIDENTIFIERLOOSE]})(?:\\.(${c[u.XRANGEIDENTIFIERLOOSE]})(?:\\.(${c[u.XRANGEIDENTIFIERLOOSE]})(?:${c[u.PRERELEASELOOSE]})?${c[u.BUILD]}?)?)?`),f("XRANGE",`^${c[u.GTLT]}\\s*${c[u.XRANGEPLAIN]}$`),f("XRANGELOOSE",`^${c[u.GTLT]}\\s*${c[u.XRANGEPLAINLOOSE]}$`),f("COERCEPLAIN",`(^|[^\\d])(\\d{1,${r}})(?:\\.(\\d{1,${r}}))?(?:\\.(\\d{1,${r}}))?`),f("COERCE",`${c[u.COERCEPLAIN]}(?:$|[^\\d])`),f("COERCEFULL",c[u.COERCEPLAIN]+`(?:${c[u.PRERELEASE]})?`+`(?:${c[u.BUILD]})?(?:$|[^\\d])`),f("COERCERTL",c[u.COERCE],!0),f("COERCERTLFULL",c[u.COERCEFULL],!0),f("LONETILDE","(?:~>?)"),f("TILDETRIM",`(\\s*)${c[u.LONETILDE]}\\s+`,!0),t.tildeTrimReplace="$1~",f("TILDE",`^${c[u.LONETILDE]}${c[u.XRANGEPLAIN]}$`),f("TILDELOOSE",`^${c[u.LONETILDE]}${c[u.XRANGEPLAINLOOSE]}$`),f("LONECARET","(?:\\^)"),f("CARETTRIM",`(\\s*)${c[u.LONECARET]}\\s+`,!0),t.caretTrimReplace="$1^",f("CARET",`^${c[u.LONECARET]}${c[u.XRANGEPLAIN]}$`),f("CARETLOOSE",`^${c[u.LONECARET]}${c[u.XRANGEPLAINLOOSE]}$`),f("COMPARATORLOOSE",`^${c[u.GTLT]}\\s*(${c[u.LOOSEPLAIN]})$|^$`),f("COMPARATOR",`^${c[u.GTLT]}\\s*(${c[u.FULLPLAIN]})$|^$`),f("COMPARATORTRIM",`(\\s*)${c[u.GTLT]}\\s*(${c[u.LOOSEPLAIN]}|${c[u.XRANGEPLAIN]})`,!0),t.comparatorTrimReplace="$1$2$3",f("HYPHENRANGE",`^\\s*(${c[u.XRANGEPLAIN]})\\s+-\\s+(${c[u.XRANGEPLAIN]})\\s*$`),f("HYPHENRANGELOOSE",`^\\s*(${c[u.XRANGEPLAINLOOSE]})\\s+-\\s+(${c[u.XRANGEPLAINLOOSE]})\\s*$`),f("STAR","(<|>)?=?\\s*\\*"),f("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),f("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")},7871:(e,t,n)=>{const r=n(5463);e.exports=(e,t,n)=>r(e,t,">",n)},1112:(e,t,n)=>{const r=n(8395);e.exports=(e,t,n)=>(e=new r(e,n),t=new r(t,n),e.intersects(t,n))},4266:(e,t,n)=>{const r=n(5463);e.exports=(e,t,n)=>r(e,t,"<",n)},7840:(e,t,n)=>{const r=n(7944),i=n(8395);e.exports=(e,t,n)=>{let a=null,o=null,s=null;try{s=new i(t,n)}catch(e){return null}return e.forEach((e=>{s.test(e)&&(a&&-1!==o.compare(e)||(a=e,o=new r(a,n)))})),a}},7930:(e,t,n)=>{const r=n(7944),i=n(8395);e.exports=(e,t,n)=>{let a=null,o=null,s=null;try{s=new i(t,n)}catch(e){return null}return e.forEach((e=>{s.test(e)&&(a&&1!==o.compare(e)||(a=e,o=new r(a,n)))})),a}},3489:(e,t,n)=>{const r=n(7944),i=n(8395),a=n(144);e.exports=(e,t)=>{e=new i(e,t);let n=new r("0.0.0");if(e.test(n))return n;if(n=new r("0.0.0-0"),e.test(n))return n;n=null;for(let t=0;t{const t=new r(e.semver.version);switch(e.operator){case">":0===t.prerelease.length?t.patch++:t.prerelease.push(0),t.raw=t.format();case"":case">=":o&&!a(t,o)||(o=t);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${e.operator}`)}})),!o||n&&!a(n,o)||(n=o)}return n&&e.test(n)?n:null}},5463:(e,t,n)=>{const r=n(7944),i=n(9524),{ANY:a}=i,o=n(8395),s=n(1722),l=n(144),c=n(599),u=n(7092),d=n(2077);e.exports=(e,t,n,p)=>{let h,f,m,g,y;switch(e=new r(e,p),t=new o(t,p),n){case">":h=l,f=u,m=c,g=">",y=">=";break;case"<":h=c,f=d,m=l,g="<",y="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(s(e,t,p))return!1;for(let n=0;n{e.semver===a&&(e=new i(">=0.0.0")),o=o||e,s=s||e,h(e.semver,o.semver,p)?o=e:m(e.semver,s.semver,p)&&(s=e)})),o.operator===g||o.operator===y)return!1;if((!s.operator||s.operator===g)&&f(e,s.semver))return!1;if(s.operator===y&&m(e,s.semver))return!1}return!0}},1465:(e,t,n)=>{const r=n(1722),i=n(5380);e.exports=(e,t,n)=>{const a=[];let o=null,s=null;const l=e.sort(((e,t)=>i(e,t,n)));for(const e of l){r(e,t,n)?(s=e,o||(o=e)):(s&&a.push([o,s]),s=null,o=null)}o&&a.push([o,null]);const c=[];for(const[e,t]of a)e===t?c.push(e):t||e!==l[0]?t?e===l[0]?c.push(`<=${t}`):c.push(`${e} - ${t}`):c.push(`>=${e}`):c.push("*");const u=c.join(" || "),d="string"==typeof t.raw?t.raw:String(t);return u.length{const r=n(8395),i=n(9524),{ANY:a}=i,o=n(1722),s=n(5380),l=[new i(">=0.0.0-0")],c=[new i(">=0.0.0")],u=(e,t,n)=>{if(e===t)return!0;if(1===e.length&&e[0].semver===a){if(1===t.length&&t[0].semver===a)return!0;e=n.includePrerelease?l:c}if(1===t.length&&t[0].semver===a){if(n.includePrerelease)return!0;t=c}const r=new Set;let i,u,h,f,m,g,y;for(const t of e)">"===t.operator||">="===t.operator?i=d(i,t,n):"<"===t.operator||"<="===t.operator?u=p(u,t,n):r.add(t.semver);if(r.size>1)return null;if(i&&u){if(h=s(i.semver,u.semver,n),h>0)return null;if(0===h&&(">="!==i.operator||"<="!==u.operator))return null}for(const e of r){if(i&&!o(e,String(i),n))return null;if(u&&!o(e,String(u),n))return null;for(const r of t)if(!o(e,String(r),n))return!1;return!0}let b=!(!u||n.includePrerelease||!u.semver.prerelease.length)&&u.semver,v=!(!i||n.includePrerelease||!i.semver.prerelease.length)&&i.semver;b&&1===b.prerelease.length&&"<"===u.operator&&0===b.prerelease[0]&&(b=!1);for(const e of t){if(y=y||">"===e.operator||">="===e.operator,g=g||"<"===e.operator||"<="===e.operator,i)if(v&&e.semver.prerelease&&e.semver.prerelease.length&&e.semver.major===v.major&&e.semver.minor===v.minor&&e.semver.patch===v.patch&&(v=!1),">"===e.operator||">="===e.operator){if(f=d(i,e,n),f===e&&f!==i)return!1}else if(">="===i.operator&&!o(i.semver,String(e),n))return!1;if(u)if(b&&e.semver.prerelease&&e.semver.prerelease.length&&e.semver.major===b.major&&e.semver.minor===b.minor&&e.semver.patch===b.patch&&(b=!1),"<"===e.operator||"<="===e.operator){if(m=p(u,e,n),m===e&&m!==u)return!1}else if("<="===u.operator&&!o(u.semver,String(e),n))return!1;if(!e.operator&&(u||i)&&0!==h)return!1}return!(i&&g&&!u&&0!==h)&&(!(u&&y&&!i&&0!==h)&&(!v&&!b))},d=(e,t,n)=>{if(!e)return t;const r=s(e.semver,t.semver,n);return r>0?e:r<0||">"===t.operator&&">="===e.operator?t:e},p=(e,t,n)=>{if(!e)return t;const r=s(e.semver,t.semver,n);return r<0?e:r>0||"<"===t.operator&&"<="===e.operator?t:e};e.exports=(e,t,n={})=>{if(e===t)return!0;e=new r(e,n),t=new r(t,n);let i=!1;e:for(const r of e.set){for(const e of t.set){const t=u(r,e,n);if(i=i||null!==t,t)continue e}if(i)return!1}return!0}},651:(e,t,n)=>{const r=n(8395);e.exports=(e,t)=>new r(e,t).set.map((e=>e.map((e=>e.value)).join(" ").trim().split(" ")))},7494:(e,t,n)=>{const r=n(8395);e.exports=(e,t)=>{try{return new r(e,t).range||"*"}catch(e){return null}}},6852:(e,t,n)=>{"use strict";var r=n(8036),i=Array.prototype.concat,a=Array.prototype.slice,o=e.exports=function(e){for(var t=[],n=0,o=e.length;n{e.exports=function(e){return!(!e||"string"==typeof e)&&(e instanceof Array||Array.isArray(e)||e.length>=0&&(e.splice instanceof Function||Object.getOwnPropertyDescriptor(e,e.length-1)&&"String"!==e.constructor.name))}},6660:function(e,t,n){var r;!function(i,a){"use strict";var o="function",s="undefined",l="object",c="string",u="major",d="model",p="name",h="type",f="vendor",m="version",g="architecture",y="console",b="mobile",v="tablet",w="smarttv",S="wearable",E="embedded",x="Amazon",O="Apple",_="ASUS",T="BlackBerry",C="Browser",k="Chrome",P="Firefox",R="Google",A="Huawei",D="LG",j="Microsoft",I="Motorola",N="Opera",L="Samsung",M="Sharp",F="Sony",$="Xiaomi",B="Zebra",V="Facebook",z="Chromium OS",U="Mac OS",q=function(e){for(var t={},n=0;n0?2===s.length?typeof s[1]==o?this[s[0]]=s[1].call(this,u):this[s[0]]=s[1]:3===s.length?typeof s[1]!==o||s[1].exec&&s[1].test?this[s[0]]=u?u.replace(s[1],s[2]):a:this[s[0]]=u?s[1].call(this,u,s[2]):a:4===s.length&&(this[s[0]]=u?s[3].call(this,u.replace(s[1],s[2])):a):this[s]=u||a;d+=2}},K=function(e,t){for(var n in t)if(typeof t[n]===l&&t[n].length>0){for(var r=0;r2&&(e[d]="iPad",e[h]=v),e},this.getEngine=function(){var e={};return e[p]=a,e[m]=a,Q.call(e,r,w.engine),e},this.getOS=function(){var e={};return e[p]=a,e[m]=a,Q.call(e,r,w.os),S&&!e[p]&&y&&y.platform&&"Unknown"!=y.platform&&(e[p]=y.platform.replace(/chrome os/i,z).replace(/macos/i,U)),e},this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}},this.getUA=function(){return r},this.setUA=function(e){return r=typeof e===c&&e.length>500?W(e,500):e,this},this.setUA(r),this};J.VERSION="1.0.38",J.BROWSER=q([p,m,u]),J.CPU=q([g]),J.DEVICE=q([d,f,h,y,b,w,v,S,E]),J.ENGINE=J.OS=q([p,m]),typeof t!==s?(e.exports&&(t=e.exports=J),t.UAParser=J):n.amdO?(r=function(){return J}.call(t,n,t,e))===a||(e.exports=r):typeof i!==s&&(i.UAParser=J);var Z=typeof i!==s&&(i.jQuery||i.Zepto);if(Z&&!Z.ua){var ee=new J;Z.ua=ee.getResult(),Z.ua.get=function(){return ee.getUA()},Z.ua.set=function(e){ee.setUA(e);var t=ee.getResult();for(var n in t)Z.ua[n]=t[n]}}}("object"==typeof window?window:this)},6089:e=>{"use strict";e.exports=__WEBPACK_EXTERNAL_MODULE__6089__},7781:e=>{"use strict";e.exports=__WEBPACK_EXTERNAL_MODULE__7781__},8531:e=>{"use strict";e.exports=__WEBPACK_EXTERNAL_MODULE__8531__},2007:e=>{"use strict";e.exports=__WEBPACK_EXTERNAL_MODULE__2007__},4201:e=>{"use strict";e.exports=__WEBPACK_EXTERNAL_MODULE__4201__},3241:e=>{"use strict";e.exports=__WEBPACK_EXTERNAL_MODULE__3241__},1308:e=>{"use strict";e.exports=__WEBPACK_EXTERNAL_MODULE__1308__},5959:e=>{"use strict";e.exports=__WEBPACK_EXTERNAL_MODULE__5959__},8398:e=>{"use strict";e.exports=__WEBPACK_EXTERNAL_MODULE__8398__},1159:e=>{"use strict";e.exports=__WEBPACK_EXTERNAL_MODULE__1159__},1269:e=>{"use strict";e.exports=__WEBPACK_EXTERNAL_MODULE__1269__},6212:(e,t,n)=>{"use strict";n.r(t),n.d(t,{__addDisposableResource:()=>I,__assign:()=>a,__asyncDelegator:()=>_,__asyncGenerator:()=>O,__asyncValues:()=>T,__await:()=>x,__awaiter:()=>f,__classPrivateFieldGet:()=>A,__classPrivateFieldIn:()=>j,__classPrivateFieldSet:()=>D,__createBinding:()=>g,__decorate:()=>s,__disposeResources:()=>L,__esDecorate:()=>c,__exportStar:()=>y,__extends:()=>i,__generator:()=>m,__importDefault:()=>R,__importStar:()=>P,__makeTemplateObject:()=>C,__metadata:()=>h,__param:()=>l,__propKey:()=>d,__read:()=>v,__rest:()=>o,__runInitializers:()=>u,__setFunctionName:()=>p,__spread:()=>w,__spreadArray:()=>E,__spreadArrays:()=>S,__values:()=>b,default:()=>M});var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},r(e,t)};function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var a=function(){return a=Object.assign||function(e){for(var t,n=1,r=arguments.length;n=0;s--)(i=e[s])&&(o=(a<3?i(o):a>3?i(t,n,o):i(t,n))||o);return a>3&&o&&Object.defineProperty(t,n,o),o}function l(e,t){return function(n,r){t(n,r,e)}}function c(e,t,n,r,i,a){function o(e){if(void 0!==e&&"function"!=typeof e)throw new TypeError("Function expected");return e}for(var s,l=r.kind,c="getter"===l?"get":"setter"===l?"set":"value",u=!t&&e?r.static?e:e.prototype:null,d=t||(u?Object.getOwnPropertyDescriptor(u,r.name):{}),p=!1,h=n.length-1;h>=0;h--){var f={};for(var m in r)f[m]="access"===m?{}:r[m];for(var m in r.access)f.access[m]=r.access[m];f.addInitializer=function(e){if(p)throw new TypeError("Cannot add initializers after decoration has completed");a.push(o(e||null))};var g=(0,n[h])("accessor"===l?{get:d.get,set:d.set}:d[c],f);if("accessor"===l){if(void 0===g)continue;if(null===g||"object"!=typeof g)throw new TypeError("Object expected");(s=o(g.get))&&(d.get=s),(s=o(g.set))&&(d.set=s),(s=o(g.init))&&i.unshift(s)}else(s=o(g))&&("field"===l?i.unshift(s):d[c]=s)}u&&Object.defineProperty(u,r.name,d),p=!0}function u(e,t,n){for(var r=arguments.length>2,i=0;i0&&i[i.length-1])||6!==s[0]&&2!==s[0])){o=0;continue}if(3===s[0]&&(!i||s[1]>i[0]&&s[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function v(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,a=n.call(e),o=[];try{for(;(void 0===t||t-- >0)&&!(r=a.next()).done;)o.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=a.return)&&n.call(a)}finally{if(i)throw i.error}}return o}function w(){for(var e=[],t=0;t1||s(e,t)}))},t&&(r[e]=t(r[e])))}function s(e,t){try{(n=i[e](t)).value instanceof x?Promise.resolve(n.value.v).then(l,c):u(a[0][2],n)}catch(e){u(a[0][3],e)}var n}function l(e){s("next",e)}function c(e){s("throw",e)}function u(e,t){e(t),a.shift(),a.length&&s(a[0][0],a[0][1])}}function _(e){var t,n;return t={},r("next"),r("throw",(function(e){throw e})),r("return"),t[Symbol.iterator]=function(){return this},t;function r(r,i){t[r]=e[r]?function(t){return(n=!n)?{value:x(e[r](t)),done:!1}:i?i(t):t}:i}}function T(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,n=e[Symbol.asyncIterator];return n?n.call(e):(e=b(e),t={},r("next"),r("throw"),r("return"),t[Symbol.asyncIterator]=function(){return this},t);function r(n){t[n]=e[n]&&function(t){return new Promise((function(r,i){(function(e,t,n,r){Promise.resolve(r).then((function(t){e({value:t,done:n})}),t)})(r,i,(t=e[n](t)).done,t.value)}))}}}function C(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}var k=Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t};function P(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&g(t,e,n);return k(t,e),t}function R(e){return e&&e.__esModule?e:{default:e}}function A(e,t,n,r){if("a"===n&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?r:"a"===n?r.call(e):r?r.value:t.get(e)}function D(e,t,n,r,i){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!i)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?i.call(e,n):i?i.value=n:t.set(e,n),n}function j(e,t){if(null===t||"object"!=typeof t&&"function"!=typeof t)throw new TypeError("Cannot use 'in' operator on non-object");return"function"==typeof e?t===e:e.has(t)}function I(e,t,n){if(null!=t){if("object"!=typeof t&&"function"!=typeof t)throw new TypeError("Object expected.");var r,i;if(n){if(!Symbol.asyncDispose)throw new TypeError("Symbol.asyncDispose is not defined.");r=t[Symbol.asyncDispose]}if(void 0===r){if(!Symbol.dispose)throw new TypeError("Symbol.dispose is not defined.");r=t[Symbol.dispose],n&&(i=r)}if("function"!=typeof r)throw new TypeError("Object not disposable.");i&&(r=function(){try{i.call(this)}catch(e){return Promise.reject(e)}}),e.stack.push({value:t,dispose:r,async:n})}else n&&e.stack.push({async:!0});return t}var N="function"==typeof SuppressedError?SuppressedError:function(e,t,n){var r=new Error(n);return r.name="SuppressedError",r.error=e,r.suppressed=t,r};function L(e){function t(t){e.error=e.hasError?new N(t,e.error,"An error was suppressed during disposal."):t,e.hasError=!0}return function n(){for(;e.stack.length;){var r=e.stack.pop();try{var i=r.dispose&&r.dispose.call(r.value);if(r.async)return Promise.resolve(i).then(n,(function(e){return t(e),n()}))}catch(e){t(e)}}if(e.hasError)throw e.error}()}const M={__extends:i,__assign:a,__rest:o,__decorate:s,__param:l,__metadata:h,__awaiter:f,__generator:m,__createBinding:g,__exportStar:y,__values:b,__read:v,__spread:w,__spreadArrays:S,__spreadArray:E,__await:x,__asyncGenerator:O,__asyncDelegator:_,__asyncValues:T,__makeTemplateObject:C,__importStar:P,__importDefault:R,__classPrivateFieldGet:A,__classPrivateFieldSet:D,__classPrivateFieldIn:j,__addDisposableResource:I,__disposeResources:L}}},__webpack_module_cache__={};function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var n=__webpack_module_cache__[e]={id:e,loaded:!1,exports:{}};return __webpack_modules__[e].call(n.exports,n,n.exports,__webpack_require__),n.loaded=!0,n.exports}__webpack_require__.amdO={},__webpack_require__.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(t,{a:t}),t},__webpack_require__.d=(e,t)=>{for(var n in t)__webpack_require__.o(t,n)&&!__webpack_require__.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},__webpack_require__.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},__webpack_require__.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),__webpack_require__.p="public/plugins/grafana-pyroscope-app/";var __webpack_exports__={};return(()=>{"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{plugin:()=>lB});var e={};__webpack_require__.r(e);var t=__webpack_require__(1308),n=__webpack_require__.n(t);__webpack_require__.p=n()&&n().uri?n().uri.slice(0,n().uri.lastIndexOf("/")+1):"public/plugins/grafana-pyroscope-app/";var r=__webpack_require__(7781),i=__webpack_require__(6089),a=__webpack_require__(8531),o=__webpack_require__(2007),s="undefined"==typeof window||"Deno"in globalThis;function l(){}function c(e){return"number"==typeof e&&e>=0&&e!==1/0}function u(e,t){return Math.max(e+(t||0)-Date.now(),0)}function d(e,t){return"function"==typeof e?e(t):e}function p(e,t){return"function"==typeof e?e(t):e}function h(e,t){const{type:n="all",exact:r,fetchStatus:i,predicate:a,queryKey:o,stale:s}=e;if(o)if(r){if(t.queryHash!==m(o,t.options))return!1}else if(!y(t.queryKey,o))return!1;if("all"!==n){const e=t.isActive();if("active"===n&&!e)return!1;if("inactive"===n&&e)return!1}return("boolean"!=typeof s||t.isStale()===s)&&((!i||i===t.state.fetchStatus)&&!(a&&!a(t)))}function f(e,t){const{exact:n,status:r,predicate:i,mutationKey:a}=e;if(a){if(!t.options.mutationKey)return!1;if(n){if(g(t.options.mutationKey)!==g(a))return!1}else if(!y(t.options.mutationKey,a))return!1}return(!r||t.state.status===r)&&!(i&&!i(t))}function m(e,t){return(t?.queryKeyHashFn||g)(e)}function g(e){return JSON.stringify(e,((e,t)=>S(t)?Object.keys(t).sort().reduce(((e,n)=>(e[n]=t[n],e)),{}):t))}function y(e,t){return e===t||typeof e==typeof t&&(!(!e||!t||"object"!=typeof e||"object"!=typeof t)&&!Object.keys(t).some((n=>!y(e[n],t[n]))))}function b(e,t){if(e===t)return e;const n=w(e)&&w(t);if(n||S(e)&&S(t)){const r=n?e:Object.keys(e),i=r.length,a=n?t:Object.keys(t),o=a.length,s=n?[]:{};let l=0;for(let i=0;in?r.slice(1):r}function _(e,t,n=0){const r=[t,...e];return n&&r.length>n?r.slice(0,-1):r}var T=Symbol(),C=(e,t)=>!e.queryFn&&t?.initialPromise?()=>t.initialPromise:e.queryFn&&e.queryFn!==T?e.queryFn:()=>Promise.reject(new Error(`Missing queryFn: '${e.queryHash}'`));var k=function(){let e=[],t=0,n=e=>{e()},r=e=>{e()},i=e=>setTimeout(e,0);const a=r=>{t?e.push(r):i((()=>{n(r)}))},o=()=>{const t=e;e=[],t.length&&i((()=>{r((()=>{t.forEach((e=>{n(e)}))}))}))};return{batch:e=>{let n;t++;try{n=e()}finally{t--,t||o()}return n},batchCalls:e=>(...t)=>{a((()=>{e(...t)}))},schedule:a,setNotifyFunction:e=>{n=e},setBatchNotifyFunction:e=>{r=e},setScheduler:e=>{i=e}}}(),P=class{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(e){return this.listeners.add(e),this.onSubscribe(),()=>{this.listeners.delete(e),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}},R=new class extends P{#e;#t;#n;constructor(){super(),this.#n=e=>{if(!s&&window.addEventListener){const t=()=>e();return window.addEventListener("visibilitychange",t,!1),()=>{window.removeEventListener("visibilitychange",t)}}}}onSubscribe(){this.#t||this.setEventListener(this.#n)}onUnsubscribe(){this.hasListeners()||(this.#t?.(),this.#t=void 0)}setEventListener(e){this.#n=e,this.#t?.(),this.#t=e((e=>{"boolean"==typeof e?this.setFocused(e):this.onFocus()}))}setFocused(e){this.#e!==e&&(this.#e=e,this.onFocus())}onFocus(){const e=this.isFocused();this.listeners.forEach((t=>{t(e)}))}isFocused(){return"boolean"==typeof this.#e?this.#e:"hidden"!==globalThis.document?.visibilityState}},A=new class extends P{#r=!0;#t;#n;constructor(){super(),this.#n=e=>{if(!s&&window.addEventListener){const t=()=>e(!0),n=()=>e(!1);return window.addEventListener("online",t,!1),window.addEventListener("offline",n,!1),()=>{window.removeEventListener("online",t),window.removeEventListener("offline",n)}}}}onSubscribe(){this.#t||this.setEventListener(this.#n)}onUnsubscribe(){this.hasListeners()||(this.#t?.(),this.#t=void 0)}setEventListener(e){this.#n=e,this.#t?.(),this.#t=e(this.setOnline.bind(this))}setOnline(e){this.#r!==e&&(this.#r=e,this.listeners.forEach((t=>{t(e)})))}isOnline(){return this.#r}};function D(e){return Math.min(1e3*2**e,3e4)}function j(e){return"online"!==(e??"online")||A.isOnline()}var I=class{constructor(e){this.revert=e?.revert,this.silent=e?.silent}};function N(e){return e instanceof I}function L(e){let t,n,r,i=!1,a=0,o=!1;const l=new Promise(((e,t)=>{n=e,r=t})),c=()=>R.isFocused()&&("always"===e.networkMode||A.isOnline())&&e.canRun(),u=()=>j(e.networkMode)&&e.canRun(),d=r=>{o||(o=!0,e.onSuccess?.(r),t?.(),n(r))},p=n=>{o||(o=!0,e.onError?.(n),t?.(),r(n))},h=()=>new Promise((n=>{t=e=>{(o||c())&&n(e)},e.onPause?.()})).then((()=>{t=void 0,o||e.onContinue?.()})),f=()=>{if(o)return;let t;const n=0===a?e.initialPromise:void 0;try{t=n??e.fn()}catch(e){t=Promise.reject(e)}Promise.resolve(t).then(d).catch((t=>{if(o)return;const n=e.retry??(s?0:3),r=e.retryDelay??D,l="function"==typeof r?r(a,t):r,u=!0===n||"number"==typeof n&&a{setTimeout(e,d)}))).then((()=>c()?void 0:h())).then((()=>{i?p(t):f()}))):p(t)}))};return{promise:l,cancel:t=>{o||(p(new I(t)),e.abort?.())},continue:()=>(t?.(),l),cancelRetry:()=>{i=!0},continueRetry:()=>{i=!1},canStart:u,start:()=>(u()?f():h().then(f),l)}}var M=class{#i;destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),c(this.gcTime)&&(this.#i=setTimeout((()=>{this.optionalRemove()}),this.gcTime))}updateGcTime(e){this.gcTime=Math.max(this.gcTime||0,e??(s?1/0:3e5))}clearGcTimeout(){this.#i&&(clearTimeout(this.#i),this.#i=void 0)}},F=class extends M{#a;#o;#s;#l;#c;#u;constructor(e){super(),this.#u=!1,this.#c=e.defaultOptions,this.setOptions(e.options),this.observers=[],this.#s=e.cache,this.queryKey=e.queryKey,this.queryHash=e.queryHash,this.#a=e.state||function(e){const t="function"==typeof e.initialData?e.initialData():e.initialData,n=void 0!==t,r=n?"function"==typeof e.initialDataUpdatedAt?e.initialDataUpdatedAt():e.initialDataUpdatedAt:0;return{data:t,dataUpdateCount:0,dataUpdatedAt:n?r??Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:n?"success":"pending",fetchStatus:"idle"}}(this.options),this.state=this.#a,this.scheduleGc()}get meta(){return this.options.meta}get promise(){return this.#l?.promise}setOptions(e){this.options={...this.#c,...e},this.updateGcTime(this.options.gcTime)}optionalRemove(){this.observers.length||"idle"!==this.state.fetchStatus||this.#s.remove(this)}setData(e,t){const n=x(this.state.data,e,this.options);return this.#d({data:n,type:"success",dataUpdatedAt:t?.updatedAt,manual:t?.manual}),n}setState(e,t){this.#d({type:"setState",state:e,setStateOptions:t})}cancel(e){const t=this.#l?.promise;return this.#l?.cancel(e),t?t.then(l).catch(l):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}reset(){this.destroy(),this.setState(this.#a)}isActive(){return this.observers.some((e=>!1!==p(e.options.enabled,this)))}isDisabled(){return this.getObserversCount()>0&&!this.isActive()}isStale(){return!!this.state.isInvalidated||(this.getObserversCount()>0?this.observers.some((e=>e.getCurrentResult().isStale)):void 0===this.state.data)}isStaleByTime(e=0){return this.state.isInvalidated||void 0===this.state.data||!u(this.state.dataUpdatedAt,e)}onFocus(){const e=this.observers.find((e=>e.shouldFetchOnWindowFocus()));e?.refetch({cancelRefetch:!1}),this.#l?.continue()}onOnline(){const e=this.observers.find((e=>e.shouldFetchOnReconnect()));e?.refetch({cancelRefetch:!1}),this.#l?.continue()}addObserver(e){this.observers.includes(e)||(this.observers.push(e),this.clearGcTimeout(),this.#s.notify({type:"observerAdded",query:this,observer:e}))}removeObserver(e){this.observers.includes(e)&&(this.observers=this.observers.filter((t=>t!==e)),this.observers.length||(this.#l&&(this.#u?this.#l.cancel({revert:!0}):this.#l.cancelRetry()),this.scheduleGc()),this.#s.notify({type:"observerRemoved",query:this,observer:e}))}getObserversCount(){return this.observers.length}invalidate(){this.state.isInvalidated||this.#d({type:"invalidate"})}fetch(e,t){if("idle"!==this.state.fetchStatus)if(void 0!==this.state.data&&t?.cancelRefetch)this.cancel({silent:!0});else if(this.#l)return this.#l.continueRetry(),this.#l.promise;if(e&&this.setOptions(e),!this.options.queryFn){const e=this.observers.find((e=>e.options.queryFn));e&&this.setOptions(e.options)}const n=new AbortController,r=e=>{Object.defineProperty(e,"signal",{enumerable:!0,get:()=>(this.#u=!0,n.signal)})},i={fetchOptions:t,options:this.options,queryKey:this.queryKey,state:this.state,fetchFn:()=>{const e=C(this.options,t),n={queryKey:this.queryKey,meta:this.meta};return r(n),this.#u=!1,this.options.persister?this.options.persister(e,n,this):e(n)}};r(i),this.options.behavior?.onFetch(i,this),this.#o=this.state,"idle"!==this.state.fetchStatus&&this.state.fetchMeta===i.fetchOptions?.meta||this.#d({type:"fetch",meta:i.fetchOptions?.meta});const a=e=>{N(e)&&e.silent||this.#d({type:"error",error:e}),N(e)||(this.#s.config.onError?.(e,this),this.#s.config.onSettled?.(this.state.data,e,this)),this.isFetchingOptimistic||this.scheduleGc(),this.isFetchingOptimistic=!1};return this.#l=L({initialPromise:t?.initialPromise,fn:i.fetchFn,abort:n.abort.bind(n),onSuccess:e=>{void 0!==e?(this.setData(e),this.#s.config.onSuccess?.(e,this),this.#s.config.onSettled?.(e,this.state.error,this),this.isFetchingOptimistic||this.scheduleGc(),this.isFetchingOptimistic=!1):a(new Error(`${this.queryHash} data is undefined`))},onError:a,onFail:(e,t)=>{this.#d({type:"failed",failureCount:e,error:t})},onPause:()=>{this.#d({type:"pause"})},onContinue:()=>{this.#d({type:"continue"})},retry:i.options.retry,retryDelay:i.options.retryDelay,networkMode:i.options.networkMode,canRun:()=>!0}),this.#l.start()}#d(e){this.state=(t=>{switch(e.type){case"failed":return{...t,fetchFailureCount:e.failureCount,fetchFailureReason:e.error};case"pause":return{...t,fetchStatus:"paused"};case"continue":return{...t,fetchStatus:"fetching"};case"fetch":return{...t,...$(t.data,this.options),fetchMeta:e.meta??null};case"success":return{...t,data:e.data,dataUpdateCount:t.dataUpdateCount+1,dataUpdatedAt:e.dataUpdatedAt??Date.now(),error:null,isInvalidated:!1,status:"success",...!e.manual&&{fetchStatus:"idle",fetchFailureCount:0,fetchFailureReason:null}};case"error":const n=e.error;return N(n)&&n.revert&&this.#o?{...this.#o,fetchStatus:"idle"}:{...t,error:n,errorUpdateCount:t.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:t.fetchFailureCount+1,fetchFailureReason:n,fetchStatus:"idle",status:"error"};case"invalidate":return{...t,isInvalidated:!0};case"setState":return{...t,...e.state}}})(this.state),k.batch((()=>{this.observers.forEach((e=>{e.onQueryUpdate()})),this.#s.notify({query:this,type:"updated",action:e})}))}};function $(e,t){return{fetchFailureCount:0,fetchFailureReason:null,fetchStatus:j(t.networkMode)?"fetching":"paused",...void 0===e&&{error:null,status:"pending"}}}var B=class extends P{constructor(e={}){super(),this.config=e,this.#p=new Map}#p;build(e,t,n){const r=t.queryKey,i=t.queryHash??m(r,t);let a=this.get(i);return a||(a=new F({cache:this,queryKey:r,queryHash:i,options:e.defaultQueryOptions(t),state:n,defaultOptions:e.getQueryDefaults(r)}),this.add(a)),a}add(e){this.#p.has(e.queryHash)||(this.#p.set(e.queryHash,e),this.notify({type:"added",query:e}))}remove(e){const t=this.#p.get(e.queryHash);t&&(e.destroy(),t===e&&this.#p.delete(e.queryHash),this.notify({type:"removed",query:e}))}clear(){k.batch((()=>{this.getAll().forEach((e=>{this.remove(e)}))}))}get(e){return this.#p.get(e)}getAll(){return[...this.#p.values()]}find(e){const t={exact:!0,...e};return this.getAll().find((e=>h(t,e)))}findAll(e={}){const t=this.getAll();return Object.keys(e).length>0?t.filter((t=>h(e,t))):t}notify(e){k.batch((()=>{this.listeners.forEach((t=>{t(e)}))}))}onFocus(){k.batch((()=>{this.getAll().forEach((e=>{e.onFocus()}))}))}onOnline(){k.batch((()=>{this.getAll().forEach((e=>{e.onOnline()}))}))}},V=class extends M{#h;#f;#l;constructor(e){super(),this.mutationId=e.mutationId,this.#f=e.mutationCache,this.#h=[],this.state=e.state||{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:"idle",variables:void 0,submittedAt:0},this.setOptions(e.options),this.scheduleGc()}setOptions(e){this.options=e,this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(e){this.#h.includes(e)||(this.#h.push(e),this.clearGcTimeout(),this.#f.notify({type:"observerAdded",mutation:this,observer:e}))}removeObserver(e){this.#h=this.#h.filter((t=>t!==e)),this.scheduleGc(),this.#f.notify({type:"observerRemoved",mutation:this,observer:e})}optionalRemove(){this.#h.length||("pending"===this.state.status?this.scheduleGc():this.#f.remove(this))}continue(){return this.#l?.continue()??this.execute(this.state.variables)}async execute(e){this.#l=L({fn:()=>this.options.mutationFn?this.options.mutationFn(e):Promise.reject(new Error("No mutationFn found")),onFail:(e,t)=>{this.#d({type:"failed",failureCount:e,error:t})},onPause:()=>{this.#d({type:"pause"})},onContinue:()=>{this.#d({type:"continue"})},retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode,canRun:()=>this.#f.canRun(this)});const t="pending"===this.state.status,n=!this.#l.canStart();try{if(!t){this.#d({type:"pending",variables:e,isPaused:n}),await(this.#f.config.onMutate?.(e,this));const t=await(this.options.onMutate?.(e));t!==this.state.context&&this.#d({type:"pending",context:t,variables:e,isPaused:n})}const r=await this.#l.start();return await(this.#f.config.onSuccess?.(r,e,this.state.context,this)),await(this.options.onSuccess?.(r,e,this.state.context)),await(this.#f.config.onSettled?.(r,null,this.state.variables,this.state.context,this)),await(this.options.onSettled?.(r,null,e,this.state.context)),this.#d({type:"success",data:r}),r}catch(t){try{throw await(this.#f.config.onError?.(t,e,this.state.context,this)),await(this.options.onError?.(t,e,this.state.context)),await(this.#f.config.onSettled?.(void 0,t,this.state.variables,this.state.context,this)),await(this.options.onSettled?.(void 0,t,e,this.state.context)),t}finally{this.#d({type:"error",error:t})}}finally{this.#f.runNext(this)}}#d(e){this.state=(t=>{switch(e.type){case"failed":return{...t,failureCount:e.failureCount,failureReason:e.error};case"pause":return{...t,isPaused:!0};case"continue":return{...t,isPaused:!1};case"pending":return{...t,context:e.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:e.isPaused,status:"pending",variables:e.variables,submittedAt:Date.now()};case"success":return{...t,data:e.data,failureCount:0,failureReason:null,error:null,status:"success",isPaused:!1};case"error":return{...t,data:void 0,error:e.error,failureCount:t.failureCount+1,failureReason:e.error,isPaused:!1,status:"error"}}})(this.state),k.batch((()=>{this.#h.forEach((t=>{t.onMutationUpdate(e)})),this.#f.notify({mutation:this,type:"updated",action:e})}))}};var z=class extends P{constructor(e={}){super(),this.config=e,this.#m=new Map,this.#g=Date.now()}#m;#g;build(e,t,n){const r=new V({mutationCache:this,mutationId:++this.#g,options:e.defaultMutationOptions(t),state:n});return this.add(r),r}add(e){const t=U(e),n=this.#m.get(t)??[];n.push(e),this.#m.set(t,n),this.notify({type:"added",mutation:e})}remove(e){const t=U(e);if(this.#m.has(t)){const n=this.#m.get(t)?.filter((t=>t!==e));n&&(0===n.length?this.#m.delete(t):this.#m.set(t,n))}this.notify({type:"removed",mutation:e})}canRun(e){const t=this.#m.get(U(e))?.find((e=>"pending"===e.state.status));return!t||t===e}runNext(e){const t=this.#m.get(U(e))?.find((t=>t!==e&&t.state.isPaused));return t?.continue()??Promise.resolve()}clear(){k.batch((()=>{this.getAll().forEach((e=>{this.remove(e)}))}))}getAll(){return[...this.#m.values()].flat()}find(e){const t={exact:!0,...e};return this.getAll().find((e=>f(t,e)))}findAll(e={}){return this.getAll().filter((t=>f(e,t)))}notify(e){k.batch((()=>{this.listeners.forEach((t=>{t(e)}))}))}resumePausedMutations(){const e=this.getAll().filter((e=>e.state.isPaused));return k.batch((()=>Promise.all(e.map((e=>e.continue().catch(l))))))}};function U(e){return e.options.scope?.id??String(e.mutationId)}function q(e){return{onFetch:(t,n)=>{const r=async()=>{const n=t.options,r=t.fetchOptions?.meta?.fetchMore?.direction,i=t.state.data?.pages||[],a=t.state.data?.pageParams||[],o={pages:[],pageParams:[]};let s=!1;const l=C(t.options,t.fetchOptions),c=async(e,n,r)=>{if(s)return Promise.reject();if(null==n&&e.pages.length)return Promise.resolve(e);const i={queryKey:t.queryKey,pageParam:n,direction:r?"backward":"forward",meta:t.options.meta};var a;a=i,Object.defineProperty(a,"signal",{enumerable:!0,get:()=>(t.signal.aborted?s=!0:t.signal.addEventListener("abort",(()=>{s=!0})),t.signal)});const o=await l(i),{maxPages:c}=t.options,u=r?_:O;return{pages:u(e.pages,o,c),pageParams:u(e.pageParams,n,c)}};let u;if(r&&i.length){const e="backward"===r,t={pages:i,pageParams:a},o=(e?G:H)(n,t);u=await c(t,o,e)}else{u=await c(o,a[0]??n.initialPageParam);const t=e??i.length;for(let e=1;et.options.persister?.(r,{queryKey:t.queryKey,meta:t.options.meta,signal:t.signal},n):t.fetchFn=r}}}function H(e,{pages:t,pageParams:n}){const r=t.length-1;return e.getNextPageParam(t[r],t,n[r],n)}function G(e,{pages:t,pageParams:n}){return e.getPreviousPageParam?.(t[0],t,n[0],n)}const W=new class{#y;#f;#c;#b;#v;#w;#S;#E;constructor(e={}){this.#y=e.queryCache||new B,this.#f=e.mutationCache||new z,this.#c=e.defaultOptions||{},this.#b=new Map,this.#v=new Map,this.#w=0}mount(){this.#w++,1===this.#w&&(this.#S=R.subscribe((async e=>{e&&(await this.resumePausedMutations(),this.#y.onFocus())})),this.#E=A.subscribe((async e=>{e&&(await this.resumePausedMutations(),this.#y.onOnline())})))}unmount(){this.#w--,0===this.#w&&(this.#S?.(),this.#S=void 0,this.#E?.(),this.#E=void 0)}isFetching(e){return this.#y.findAll({...e,fetchStatus:"fetching"}).length}isMutating(e){return this.#f.findAll({...e,status:"pending"}).length}getQueryData(e){const t=this.defaultQueryOptions({queryKey:e});return this.#y.get(t.queryHash)?.state.data}ensureQueryData(e){const t=this.getQueryData(e.queryKey);if(void 0===t)return this.fetchQuery(e);{const n=this.defaultQueryOptions(e),r=this.#y.build(this,n);return e.revalidateIfStale&&r.isStaleByTime(d(n.staleTime,r))&&this.prefetchQuery(n),Promise.resolve(t)}}getQueriesData(e){return this.#y.findAll(e).map((({queryKey:e,state:t})=>[e,t.data]))}setQueryData(e,t,n){const r=this.defaultQueryOptions({queryKey:e}),i=this.#y.get(r.queryHash),a=i?.state.data,o=function(e,t){return"function"==typeof e?e(t):e}(t,a);if(void 0!==o)return this.#y.build(this,r).setData(o,{...n,manual:!0})}setQueriesData(e,t,n){return k.batch((()=>this.#y.findAll(e).map((({queryKey:e})=>[e,this.setQueryData(e,t,n)]))))}getQueryState(e){const t=this.defaultQueryOptions({queryKey:e});return this.#y.get(t.queryHash)?.state}removeQueries(e){const t=this.#y;k.batch((()=>{t.findAll(e).forEach((e=>{t.remove(e)}))}))}resetQueries(e,t){const n=this.#y,r={type:"active",...e};return k.batch((()=>(n.findAll(e).forEach((e=>{e.reset()})),this.refetchQueries(r,t))))}cancelQueries(e={},t={}){const n={revert:!0,...t},r=k.batch((()=>this.#y.findAll(e).map((e=>e.cancel(n)))));return Promise.all(r).then(l).catch(l)}invalidateQueries(e={},t={}){return k.batch((()=>{if(this.#y.findAll(e).forEach((e=>{e.invalidate()})),"none"===e.refetchType)return Promise.resolve();const n={...e,type:e.refetchType??e.type??"active"};return this.refetchQueries(n,t)}))}refetchQueries(e={},t){const n={...t,cancelRefetch:t?.cancelRefetch??!0},r=k.batch((()=>this.#y.findAll(e).filter((e=>!e.isDisabled())).map((e=>{let t=e.fetch(void 0,n);return n.throwOnError||(t=t.catch(l)),"paused"===e.state.fetchStatus?Promise.resolve():t}))));return Promise.all(r).then(l)}fetchQuery(e){const t=this.defaultQueryOptions(e);void 0===t.retry&&(t.retry=!1);const n=this.#y.build(this,t);return n.isStaleByTime(d(t.staleTime,n))?n.fetch(t):Promise.resolve(n.state.data)}prefetchQuery(e){return this.fetchQuery(e).then(l).catch(l)}fetchInfiniteQuery(e){return e.behavior=q(e.pages),this.fetchQuery(e)}prefetchInfiniteQuery(e){return this.fetchInfiniteQuery(e).then(l).catch(l)}resumePausedMutations(){return A.isOnline()?this.#f.resumePausedMutations():Promise.resolve()}getQueryCache(){return this.#y}getMutationCache(){return this.#f}getDefaultOptions(){return this.#c}setDefaultOptions(e){this.#c=e}setQueryDefaults(e,t){this.#b.set(g(e),{queryKey:e,defaultOptions:t})}getQueryDefaults(e){const t=[...this.#b.values()];let n={};return t.forEach((t=>{y(e,t.queryKey)&&(n={...n,...t.defaultOptions})})),n}setMutationDefaults(e,t){this.#v.set(g(e),{mutationKey:e,defaultOptions:t})}getMutationDefaults(e){const t=[...this.#v.values()];let n={};return t.forEach((t=>{y(e,t.mutationKey)&&(n={...n,...t.defaultOptions})})),n}defaultQueryOptions(e){if(e._defaulted)return e;const t={...this.#c.queries,...this.getQueryDefaults(e.queryKey),...e,_defaulted:!0};return t.queryHash||(t.queryHash=m(t.queryKey,t)),void 0===t.refetchOnReconnect&&(t.refetchOnReconnect="always"!==t.networkMode),void 0===t.throwOnError&&(t.throwOnError=!!t.suspense),!t.networkMode&&t.persister&&(t.networkMode="offlineFirst"),!0!==t.enabled&&t.queryFn===T&&(t.enabled=!1),t}defaultMutationOptions(e){return e?._defaulted?e:{...this.#c.mutations,...e?.mutationKey&&this.getMutationDefaults(e.mutationKey),...e,_defaulted:!0}}clear(){this.#y.clear(),this.#f.clear()}}({defaultOptions:{queries:{networkMode:"always",retry:!1,refetchOnWindowFocus:!1}}});var Q;!function(e){e.EXCEPTION="exception",e.LOG="log",e.MEASUREMENT="measurement",e.TRACE="trace",e.EVENT="event"}(Q||(Q={}));const K={[Q.EXCEPTION]:"exceptions",[Q.LOG]:"logs",[Q.MEASUREMENT]:"measurements",[Q.TRACE]:"traces",[Q.EVENT]:"events"};function Y(){return Date.now()}function X(){return(new Date).toISOString()}function J(e){return new Date(e).toISOString()}function Z(e,t){return typeof e===t}function ee(e,t){return Object.prototype.toString.call(e)===`[object ${t}]`}function te(e,t){try{return e instanceof t}catch(e){return!1}}const ne=e=>Z(e,"null"),re=e=>Z(e,"string"),ie=e=>Z(e,"number")&&!isNaN(e)||Z(e,"bigint"),ae=e=>!ne(e)&&Z(e,"object"),oe=e=>Z(e,"function"),se=e=>ee(e,"Array"),le="undefined"!=typeof Event,ce=e=>le&&te(e,Event),ue="undefined"!=typeof Error,de=e=>ue&&te(e,Error),pe=e=>ee(e,"ErrorEvent"),he=e=>ee(e,"DOMError"),fe=e=>ee(e,"DOMException");function me(e,t){if(e===t)return!0;if(Z(e,"number")&&isNaN(e))return Z(t,"number")&&isNaN(t);const n=se(e),r=se(t);if(n!==r)return!1;if(n&&r){const n=e.length;if(n!==t.length)return!1;for(let r=n;0!=r--;)if(!me(e[r],t[r]))return!1;return!0}const i=ae(e),a=ae(t);if(i!==a)return!1;if(e&&t&&i&&a){const n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let e of n)if(!r.includes(e))return!1;for(let r of n)if(!me(e[r],t[r]))return!1;return!0}return!1}const ge="Error";let ye;var be;!function(e){e.TRACE="trace",e.DEBUG="debug",e.INFO="info",e.LOG="log",e.WARN="warn",e.ERROR="error"}(be||(be={}));const ve=be.LOG,we=[be.TRACE,be.DEBUG,be.INFO,be.LOG,be.WARN,be.ERROR],Se=e=>e.map((e=>{try{return String(e)}catch(e){return""}})).join(" ");function Ee(e,t,n,r,i){t.debug("Initializing API");const a=function(e,t,n,r,i){let a;return t.debug("Initializing traces API"),{getOTEL:()=>a,getTraceContext:()=>{const e=null==a?void 0:a.trace.getSpanContext(a.context.active());return e?{trace_id:e.traceId,span_id:e.spanId}:void 0},initOTEL:(e,n)=>{t.debug("Initializing OpenTelemetry"),a={trace:e,context:n}},isOTELInitialized:()=>!!a,pushTraces:e=>{try{const n={type:Q.TRACE,payload:e,meta:r.value};t.debug("Pushing trace\n",n),i.execute(n)}catch(e){t.error("Error pushing trace\n",e)}}}}(0,t,0,r,i);return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},a),function(e,t,n,r,i,a){var o;t.debug("Initializing exceptions API");let s=null;ye=null!==(o=n.parseStacktrace)&&void 0!==o?o:ye;const l=e=>{t.debug("Changing stacktrace parser"),ye=null!=e?e:ye};return l(n.parseStacktrace),{changeStacktraceParser:l,getStacktraceParser:()=>ye,pushError:(e,{skipDedupe:o,stackFrames:l,type:c,context:u,spanContext:d,timestampOverwriteMs:p}={})=>{c=c||e.name||ge;const h={meta:r.value,payload:{type:c,value:e.message,timestamp:p?J(p):X(),trace:d?{trace_id:d.traceId,span_id:d.spanId}:a.getTraceContext(),context:null!=u?u:{}},type:Q.EXCEPTION};(null==(l=null!=l?l:e.stack?null==ye?void 0:ye(e).frames:void 0)?void 0:l.length)&&(h.payload.stacktrace={frames:l});const f={type:h.payload.type,value:h.payload.value,stackTrace:h.payload.stacktrace,context:h.payload.context};o||!n.dedupe||ne(s)||!me(f,s)?(s=f,t.debug("Pushing exception\n",h),i.execute(h)):t.debug("Skipping error push because it is the same as the last one\n",h.payload)}}}(0,t,n,r,i,a)),function(e,t,n,r,i){let a,o,s;t.debug("Initializing meta API");const l=e=>{o&&r.remove(o),o={user:e},r.add(o)},c=e=>{a&&r.remove(a),a={session:e},r.add(a)};return{setUser:l,resetUser:l,setSession:c,resetSession:c,getSession:()=>r.value.session,setView:e=>{var t;if((null===(t=null==s?void 0:s.view)||void 0===t?void 0:t.name)===(null==e?void 0:e.name))return;const n=s;s={view:e},r.add(s),n&&r.remove(n)},getView:()=>r.value.view}}(0,t,0,r)),function(e,t,n,r,i,a){var o;t.debug("Initializing logs API");let s=null;const l=null!==(o=n.logArgsSerializer)&&void 0!==o?o:Se;return{pushLog:(e,{context:o,level:c,skipDedupe:u,spanContext:d,timestampOverwriteMs:p}={})=>{try{const h={type:Q.LOG,payload:{message:l(e),level:null!=c?c:ve,context:null!=o?o:{},timestamp:p?J(p):X(),trace:d?{trace_id:d.traceId,span_id:d.spanId}:a.getTraceContext()},meta:r.value},f={message:h.payload.message,level:h.payload.level,context:h.payload.context};if(!u&&n.dedupe&&!ne(s)&&me(f,s))return void t.debug("Skipping log push because it is the same as the last one\n",h.payload);s=f,t.debug("Pushing log\n",h),i.execute(h)}catch(e){t.error("Error pushing log\n",e)}}}}(0,t,n,r,i,a)),function(e,t,n,r,i,a){t.debug("Initializing measurements API");let o=null;return{pushMeasurement:(e,{skipDedupe:s,context:l,spanContext:c,timestampOverwriteMs:u}={})=>{try{const d={type:Q.MEASUREMENT,payload:Object.assign(Object.assign({},e),{trace:c?{trace_id:c.traceId,span_id:c.spanId}:a.getTraceContext(),timestamp:u?J(u):X(),context:null!=l?l:{}}),meta:r.value},p={type:d.payload.type,values:d.payload.values,context:d.payload.context};if(!s&&n.dedupe&&!ne(o)&&me(p,o))return void t.debug("Skipping measurement push because it is the same as the last one\n",d.payload);o=p,t.debug("Pushing measurement\n",d),i.execute(d)}catch(e){t.error("Error pushing measurement\n",e)}}}}(0,t,n,r,i,a)),function(e,t,n,r,i,a){let o=null;return{pushEvent:(e,s,l,{skipDedupe:c,spanContext:u,timestampOverwriteMs:d}={})=>{try{const p={meta:r.value,payload:{name:e,domain:null!=l?l:n.eventDomain,attributes:s,timestamp:d?J(d):X(),trace:u?{trace_id:u.traceId,span_id:u.spanId}:a.getTraceContext()},type:Q.EVENT},h={name:p.payload.name,attributes:p.payload.attributes,domain:p.payload.domain};if(!c&&n.dedupe&&!ne(o)&&me(h,o))return void t.debug("Skipping event push because it is the same as the last one\n",p.payload);o=h,t.debug("Pushing event\n",p),i.execute(p)}catch(e){t.error("Error pushing event",e)}}}}(0,t,n,r,i,a))}function xe(){}var Oe;!function(e){e[e.OFF=0]="OFF",e[e.ERROR=1]="ERROR",e[e.WARN=2]="WARN",e[e.INFO=3]="INFO",e[e.VERBOSE=4]="VERBOSE"}(Oe||(Oe={}));const _e={debug:xe,error:xe,info:xe,prefix:"Faro",warn:xe},Te=Oe.ERROR,Ce=Object.assign({},console);function ke(e=Ce,t=Te){const n=_e;return t>Oe.OFF&&(n.error=t>=Oe.ERROR?function(...t){e.error(`${n.prefix}\n`,...t)}:xe,n.warn=t>=Oe.WARN?function(...t){e.warn(`${n.prefix}\n`,...t)}:xe,n.info=t>=Oe.INFO?function(...t){e.info(`${n.prefix}\n`,...t)}:xe,n.debug=t>=Oe.VERBOSE?function(...t){e.debug(`${n.prefix}\n`,...t)}:xe),n}let Pe=_e;function Re(e,t){return Pe=ke(e,t.internalLoggerLevel),Pe}const Ae="undefined"!=typeof globalThis?globalThis:void 0!==__webpack_require__.g?__webpack_require__.g:"undefined"!=typeof self?self:void 0;const De="1.10.0";const je="_faroInternal";let Ie={};function Ne(e,t,n,r,i,a,o){return t.debug("Initializing Faro"),Ie={api:a,config:n,instrumentations:o,internalLogger:t,metas:r,pause:i.pause,transports:i,unpatchedConsole:e,unpause:i.unpause},function(e){e.config.isolate?e.internalLogger.debug("Skipping registering internal Faro instance on global object"):(e.internalLogger.debug("Registering internal Faro instance on global object"),Object.defineProperty(Ae,je,{configurable:!1,enumerable:!1,writable:!1,value:e}))}(Ie),function(e){if(e.config.preventGlobalExposure)e.internalLogger.debug("Skipping registering public Faro instance in the global scope");else{if(e.internalLogger.debug(`Registering public faro reference in the global scope using "${e.config.globalObjectKey}" key`),e.config.globalObjectKey in Ae)return void e.internalLogger.warn(`Skipping global registration due to key "${e.config.globalObjectKey}" being used already. Please set "globalObjectKey" to something else or set "preventGlobalExposure" to "true"`);Object.defineProperty(Ae,e.config.globalObjectKey,{configurable:!1,writable:!1,value:e})}}(Ie),Ie}class Le{constructor(e,t){var n,r;this.signalBuffer=[],this.itemLimit=null!==(n=null==t?void 0:t.itemLimit)&&void 0!==n?n:50,this.sendTimeout=null!==(r=null==t?void 0:t.sendTimeout)&&void 0!==r?r:250,this.paused=(null==t?void 0:t.paused)||!1,this.sendFn=e,this.flushInterval=-1,this.paused||this.start(),document.addEventListener("visibilitychange",(()=>{"hidden"===document.visibilityState&&this.flush()}))}addItem(e){this.paused||(this.signalBuffer.push(e),this.signalBuffer.length>=this.itemLimit&&this.flush())}start(){this.paused=!1,this.sendTimeout>0&&(this.flushInterval=window.setInterval((()=>this.flush()),this.sendTimeout))}pause(){this.paused=!0,clearInterval(this.flushInterval)}groupItems(e){const t=new Map;return e.forEach((e=>{const n=JSON.stringify(e.meta);let r=t.get(n);r=void 0===r?[e]:[...r,e],t.set(n,r)})),Array.from(t.values())}flush(){if(this.paused||0===this.signalBuffer.length)return;this.groupItems(this.signalBuffer).forEach(this.sendFn),this.signalBuffer=[]}}function Me(e){return t=>{if(t.type===Q.EXCEPTION&&t.payload){const n=t.payload,r=`${n.type}: ${n.value}`;if(function(e,t){return e.some((e=>re(e)?t.includes(e):!!t.match(e)))}(e,r))return null}return t}}function Fe(e,t,n,r){var i;t.debug("Initializing transports");const a=[];let o=n.paused,s=[];const l=e=>{let t=e;for(const e of s){const n=t.map(e).filter(Boolean);if(0===n.length)return[];t=n}return t},c=e=>{const n=l(e);if(0!==n.length)for(const e of a)t.debug(`Transporting item using ${e.name}\n`,n),e.isBatched()&&e.send(n)};let u;(null===(i=n.batching)||void 0===i?void 0:i.enabled)&&(u=new Le(c,{sendTimeout:n.batching.sendTimeout,itemLimit:n.batching.itemLimit,paused:o}));return{add:(...i)=>{t.debug("Adding transports"),i.forEach((i=>{t.debug(`Adding "${i.name}" transport`);a.some((e=>e===i))?t.warn(`Transport ${i.name} is already added`):(i.unpatchedConsole=e,i.internalLogger=t,i.config=n,i.metas=r,a.push(i))}))},addBeforeSendHooks:(...e)=>{t.debug("Adding beforeSendHooks\n",s),e.forEach((e=>{e&&s.push(e)}))},addIgnoreErrorsPatterns:(...e)=>{t.debug("Adding ignoreErrorsPatterns\n",e),e.forEach((e=>{e&&s.push(Me(e))}))},getBeforeSendHooks:()=>[...s],execute:e=>{var r;o||((null===(r=n.batching)||void 0===r?void 0:r.enabled)&&(null==u||u.addItem(e)),(e=>{var r,i;if((null===(r=n.batching)||void 0===r?void 0:r.enabled)&&a.every((e=>e.isBatched())))return;const[o]=l([e]);if(void 0!==o)for(const e of a)t.debug(`Transporting item using ${e.name}\n`,o),e.isBatched()?(null===(i=n.batching)||void 0===i?void 0:i.enabled)||e.send([o]):e.send(o)})(e))},isPaused:()=>o,pause:()=>{t.debug("Pausing transports"),null==u||u.pause(),o=!0},remove:(...e)=>{t.debug("Removing transports"),e.forEach((e=>{t.debug(`Removing "${e.name}" transport`);const n=a.indexOf(e);-1!==n?a.splice(n,1):t.warn(`Transport "${e.name}" is not added`)}))},removeBeforeSendHooks:(...e)=>{s.filter((t=>!e.includes(t)))},get transports(){return[...a]},unpause:()=>{t.debug("Unpausing transports"),null==u||u.start(),o=!1}}}let $e=Ce;function Be(e){var t;return $e=null!==(t=e.unpatchedConsole)&&void 0!==t?t:$e,$e}function Ve(e){const t=Be(e),n=Re(t,e);if(je in Ae&&!e.isolate)return void n.error('Faro is already registered. Either add instrumentations, transports etc. to the global faro instance or use the "isolate" property');n.debug("Initializing");const r=function(e,t,n){let r=[],i=[];const a=()=>r.reduce(((e,t)=>Object.assign(e,oe(t)?t():t)),{}),o=()=>{if(i.length){const e=a();i.forEach((t=>t(e)))}};return{add:(...e)=>{t.debug("Adding metas\n",e),r.push(...e),o()},remove:(...e)=>{t.debug("Removing metas\n",e),r=r.filter((t=>!e.includes(t))),o()},addListener:e=>{t.debug("Adding metas listener\n",e),i.push(e)},removeListener:e=>{t.debug("Removing metas listener\n",e),i=i.filter((t=>t!==e))},get value(){return a()}}}(0,n),i=Fe(t,n,e,r),a=Ee(0,n,e,r,i),o=function(e,t,n,r,i,a){t.debug("Initializing instrumentations");const o=[];return{add:(...s)=>{t.debug("Adding instrumentations"),s.forEach((s=>{t.debug(`Adding "${s.name}" instrumentation`),o.some((e=>e.name===s.name))?t.warn(`Instrumentation ${s.name} is already added`):(s.unpatchedConsole=e,s.internalLogger=t,s.config=n,s.metas=r,s.transports=i,s.api=a,o.push(s),s.initialize())}))},get instrumentations(){return[...o]},remove:(...e)=>{t.debug("Removing instrumentations"),e.forEach((e=>{var n,r;t.debug(`Removing "${e.name}" instrumentation`);const i=o.reduce(((t,n,r)=>null===t&&n.name===e.name?r:null),null);i?(null===(r=(n=o[i]).destroy)||void 0===r||r.call(n),o.splice(i,1)):t.warn(`Instrumentation "${e.name}" is not added`)}))}}}(t,n,e,r,i,a),s=Ne(t,n,e,r,i,a,o);return function(e){var t,n;const r={sdk:{version:De},app:{bundleId:e.config.app.name&&(i=e.config.app.name,null==Ae?void 0:Ae[`__faroBundleId_${i}`])}};var i;const a=null===(t=e.config.sessionTracking)||void 0===t?void 0:t.session;a&&e.api.setSession(a),e.config.app&&(r.app=Object.assign(Object.assign({},e.config.app),r.app)),e.config.user&&(r.user=e.config.user),e.config.view&&(r.view=e.config.view),e.metas.add(r,...null!==(n=e.config.metas)&&void 0!==n?n:[])}(s),function(e){e.transports.add(...e.config.transports),e.transports.addBeforeSendHooks(e.config.beforeSend),e.transports.addIgnoreErrorsPatterns(e.config.ignoreErrors)}(s),function(e){e.instrumentations.add(...e.config.instrumentations)}(s),s}const ze="faro",Ue={enabled:!0,sendTimeout:250,itemLimit:50},qe="browser",He="\n",Ge="eval",We="?",Qe="@",Ke=/^\s*at (?:(.*\).*?|.*?) ?\((?:address at )?)?((?:file|https?|blob|chrome-extension|address|native|eval|webpack||[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,Ye=/\((\S*)(?::(\d+))(?::(\d+))\)/,Xe="eval",Je="address at ",Ze=Je.length,et=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:file|https?|blob|chrome|webpack|resource|moz-extension|safari-extension|safari-web-extension|capacitor)?:\/.*?|\[native code]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i,tt=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,nt=" > eval",rt="safari-extension",it="safari-web-extension",at=/Minified React error #\d+;/i;function ot(e,t,n,r){const i={filename:e||document.location.href,function:t||We};return void 0!==n&&(i.lineno=n),void 0!==r&&(i.colno=r),i}function st(e,t){const n=null==e?void 0:e.includes(rt),r=!n&&(null==e?void 0:e.includes(it));return n||r?[(null==e?void 0:e.includes(Qe))?e.split(Qe)[0]:e,n?`${rt}:${t}`:`${it}:${t}`]:[e,t]}function lt(e){let t=[];e.stacktrace?t=e.stacktrace.split(He).filter(((e,t)=>t%2==0)):e.stack&&(t=e.stack.split(He));const n=t.reduce(((t,n,r)=>{let i,a,o,s,l;if(i=Ke.exec(n)){if(a=i[1],o=i[2],s=i[3],l=i[4],null==o?void 0:o.startsWith(Xe)){const e=Ye.exec(o);e&&(o=e[1],s=e[2],l=e[3])}o=(null==o?void 0:o.startsWith(Je))?o.substring(Ze):o,[a,o]=st(a,o)}else if(i=et.exec(n)){if(a=i[1],o=i[3],s=i[4],l=i[5],o&&o.includes(nt)){const e=tt.exec(o);e&&(a=a||Ge,o=e[1],s=e[2])}else 0===r&&!l&&ie(e.columnNumber)&&(l=String(e.columnNumber+1));[a,o]=st(a,o)}return(o||a)&&t.push(ot(o,a,s?Number(s):void 0,l?Number(l):void 0)),t}),[]);return at.test(e.message)?n.slice(1):n}function ct(e){return{frames:lt(e)}}const ut="com.grafana.faro.session",dt=144e5,pt=9e5,ht={enabled:!0,persistent:!1,maxSessionPersistenceTime:pt};var ft=__webpack_require__(6660);const mt="unknown",gt=[()=>{const e=new ft.UAParser,{name:t,version:n}=e.getBrowser(),{name:r,version:i}=e.getOS(),a=e.getUA(),o=navigator.language,s=navigator.userAgent.includes("Mobi"),l=function(){if(!t||!n)return;if("userAgentData"in navigator&&navigator.userAgentData)return navigator.userAgentData.brands;return}();return{browser:{name:null!=t?t:mt,version:null!=n?n:mt,os:`${null!=r?r:mt} ${null!=i?i:mt}`,userAgent:null!=a?a:mt,language:null!=o?o:mt,mobile:s,brands:null!=l?l:mt,viewportWidth:`${window.innerWidth}`,viewportHeight:`${window.innerHeight}`}}},()=>({page:{url:location.href}})],yt=()=>{const e=window.k6;return{k6:Object.assign({isK6Browser:!0},(null==e?void 0:e.testRunId)&&{testRunId:null==e?void 0:e.testRunId})}};class bt{constructor(){this.unpatchedConsole=Ce,this.internalLogger=_e,this.config={},this.metas={}}logDebug(...e){this.internalLogger.debug(`${this.name}\n`,...e)}logInfo(...e){this.internalLogger.info(`${this.name}\n`,...e)}logWarn(...e){this.internalLogger.warn(`${this.name}\n`,...e)}logError(...e){this.internalLogger.error(`${this.name}\n`,...e)}}class vt extends bt{isBatched(){return!1}getIgnoreUrls(){return[]}}function wt(e,t){var n,r;if(void 0===t)return e;if(void 0===e)return{resourceSpans:t};const i=null===(n=e.resourceSpans)||void 0===n?void 0:n[0];if(void 0===i)return e;const a=(null==i?void 0:i.scopeSpans)||[],o=(null===(r=null==t?void 0:t[0])||void 0===r?void 0:r.scopeSpans)||[];return Object.assign(Object.assign({},e),{resourceSpans:[Object.assign(Object.assign({},i),{scopeSpans:[...a,...o]})]})}function St(e,t){let n,r=!1;const i=()=>{null!=n?(e(...n),n=null,setTimeout(i,t)):r=!1};return(...a)=>{r?n=a:(e(...a),r=!0,setTimeout(i,t))}}const Et={session:"sessionStorage",local:"localStorage"};function xt(e){var t;try{let t;t=window[e];const n="__faro_storage_test__";return t.setItem(n,n),t.removeItem(n),!0}catch(n){return null===(t=Ie.internalLogger)||void 0===t||t.info(`Web storage of type ${e} is not available. Reason: ${n}`),!1}}function Ot(e,t){return Pt(t)?window[t].getItem(e):null}function _t(e,t,n){if(Pt(n))try{window[n].setItem(e,t)}catch(e){}}function Tt(e,t){Pt(t)&&window[t].removeItem(e)}const Ct=xt(Et.local),kt=xt(Et.session);function Pt(e){return e===Et.local?Ct:e===Et.session&&kt}function Rt(){var e,t,n;const r=Ie.config.sessionTracking;let i=null!==(n=null!==(t=null===(e=null==r?void 0:r.sampler)||void 0===e?void 0:e.call(r,{metas:Ie.metas.value}))&&void 0!==t?t:null==r?void 0:r.samplingRate)&&void 0!==n?n:1;if("number"!=typeof i){i=0}return Math.random()At[Math.floor(Math.random()*At.length)])).join("")}function jt({sessionId:e,started:t,lastActivity:n,isSampled:r=!0}={}){var i,a;const o=Y(),s=null===(a=null===(i=Ie.config)||void 0===i?void 0:i.sessionTracking)||void 0===a?void 0:a.generateSessionId;return null==e&&(e="function"==typeof s?s():Dt()),{sessionId:e,lastActivity:null!=n?n:o,started:null!=t?t:o,isSampled:r}}function It(e){if(null==e)return!1;const t=Y();if(!(t-e.startedthis.updateUserSession()),1e3),this.updateUserSession=Nt({fetchUserSession:Mt.fetchUserSession,storeUserSession:Mt.storeUserSession}),this.init()}static removeUserSession(){Tt(ut,Mt.storageTypeLocal)}static storeUserSession(e){_t(ut,JSON.stringify(e),Mt.storageTypeLocal)}static fetchUserSession(){const e=Ot(ut,Mt.storageTypeLocal);return e?JSON.parse(e):null}init(){document.addEventListener("visibilitychange",(()=>{"visible"===document.visibilityState&&this.updateSession()})),Ie.metas.addListener((function(e){const t=e.session,n=Mt.fetchUserSession();if(t&&t.id!==(null==n?void 0:n.sessionId)){const e=Lt(jt({sessionId:t.id,isSampled:Rt()}),n);Mt.storeUserSession(e),Ie.api.setSession(e.sessionMeta)}}))}}Mt.storageTypeLocal=Et.local;class Ft{constructor(){this.updateSession=St((()=>this.updateUserSession()),1e3),this.updateUserSession=Nt({fetchUserSession:Ft.fetchUserSession,storeUserSession:Ft.storeUserSession}),this.init()}static removeUserSession(){Tt(ut,Ft.storageTypeSession)}static storeUserSession(e){_t(ut,JSON.stringify(e),Ft.storageTypeSession)}static fetchUserSession(){const e=Ot(ut,Ft.storageTypeSession);return e?JSON.parse(e):null}init(){document.addEventListener("visibilitychange",(()=>{"visible"===document.visibilityState&&this.updateSession()})),Ie.metas.addListener((function(e){const t=e.session,n=Ft.fetchUserSession();if(t&&t.id!==(null==n?void 0:n.sessionId)){const e=Lt(jt({sessionId:t.id,isSampled:Rt()}),n);Ft.storeUserSession(e),Ie.api.setSession(e.sessionMeta)}}))}}function $t(e){return(null==e?void 0:e.persistent)?Mt:Ft}Ft.storageTypeSession=Et.session;var Bt=function(e,t,n,r){return new(n||(n=Promise))((function(i,a){function o(e){try{l(r.next(e))}catch(e){a(e)}}function s(e){try{l(r.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((r=r.apply(e,t||[])).next())}))},Vt=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(e);iDate.now(),this.promiseBuffer=function(e){const{size:t,concurrency:n}=e,r=[];let i=0;const a=()=>{if(i{i--,a(),t(e)}),(e=>{i--,a(),n(e)}))}};return{add:e=>{if(r.length+i>=t)throw new Error("Task buffer full");return new Promise(((t,n)=>{r.push({producer:e,resolve:t,reject:n}),a()}))}}}({size:null!==(r=e.bufferSize)&&void 0!==r?r:30,concurrency:null!==(i=e.concurrency)&&void 0!==i?i:5})}send(e){return Bt(this,void 0,void 0,(function*(){try{if(this.disabledUntil>new Date(this.getNow()))return this.logWarn(`Dropping transport item due to too many requests. Backoff until ${this.disabledUntil}`),Promise.resolve();yield this.promiseBuffer.add((()=>{const t=JSON.stringify(function(e){let t={meta:{}};return void 0!==e[0]&&(t.meta=e[0].meta),e.forEach((e=>{switch(e.type){case Q.LOG:case Q.EVENT:case Q.EXCEPTION:case Q.MEASUREMENT:const n=K[e.type],r=t[n];t=Object.assign(Object.assign({},t),{[n]:void 0===r?[e.payload]:[...r,e.payload]});break;case Q.TRACE:t=Object.assign(Object.assign({},t),{traces:wt(t.traces,e.payload.resourceSpans)})}})),t}(e)),{url:n,requestOptions:r,apiKey:i}=this.options,a=null!=r?r:{},{headers:o}=a,s=Vt(a,["headers"]);let l;const c=this.metas.value.session;return null!=c&&(l=c.id),fetch(n,Object.assign({method:"POST",headers:Object.assign(Object.assign(Object.assign({"Content-Type":"application/json"},null!=o?o:{}),i?{"x-api-key":i}:{}),l?{"x-faro-session-id":l}:{}),body:t,keepalive:t.length<=6e4},null!=s?s:{})).then((e=>Bt(this,void 0,void 0,(function*(){if(202===e.status){"invalid"===e.headers.get("X-Faro-Session-Status")&&this.extendFaroSession(this.config,this.logDebug)}return 429===e.status&&(this.disabledUntil=this.getRetryAfterDate(e),this.logWarn(`Too many requests, backing off until ${this.disabledUntil}`)),e.text().catch(xe),e})))).catch((e=>{this.logError("Failed sending payload to the receiver\n",JSON.parse(t),e)}))}))}catch(e){this.logError(e)}}))}getIgnoreUrls(){var e;return[this.options.url].concat(null!==(e=this.config.ignoreUrls)&&void 0!==e?e:[])}isBatched(){return!0}getRetryAfterDate(e){const t=this.getNow(),n=e.headers.get("Retry-After");if(n){const e=Number(n);if(!isNaN(e))return new Date(1e3*e+t);const r=Date.parse(n);if(!isNaN(r))return new Date(r)}return new Date(t+this.rateLimitBackoffMs)}extendFaroSession(e,t){const n="Session expired",r=e.sessionTracking;if(null==r?void 0:r.enabled){const{fetchUserSession:e,storeUserSession:i}=$t(r);Nt({fetchUserSession:e,storeUserSession:i})({forceSessionExtend:!0}),t(`${n} created new session.`)}else t(`${n}.`)}}class Ut extends bt{constructor(){super(...arguments),this.api={},this.transports={}}}const qt="DOMError",Ht="DOMException",Gt="Non-Error exception captured with keys:",Wt=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;function Qt(e){let t,n,r,i,a=[];if(pe(e)&&e.error)t=e.error.message,n=e.error.name,a=lt(e.error);else if((r=he(e))||fe(e)){const{name:i,message:a}=e;n=null!=i?i:r?qt:Ht,t=a?`${n}: ${a}`:n}else de(e)?(t=e.message,a=lt(e)):(ae(e)||(i=ce(e)))&&(n=i?e.constructor.name:void 0,t=`${Gt} ${Object.keys(e)}`);return[t,n,a]}function Kt(e){const t=window.onerror;window.onerror=(...n)=>{try{const[t,r,i,a,o]=n;let s,l,c=[];const u=re(t),d=ot(r,"?",i,a);o||!u?([s,l,c]=Qt(null!=o?o:t),0===c.length&&(c=[d])):u&&([s,l]=function(e){var t,n;const r=e.match(Wt),i=null!==(t=null==r?void 0:r[1])&&void 0!==t?t:ge;return[null!==(n=null==r?void 0:r[2])&&void 0!==n?n:e,i]}(t),c=[d]),s&&e.pushError(new Error(s),{type:l,stackFrames:c})}finally{null==t||t.apply(window,n)}}}function Yt(e){window.addEventListener("unhandledrejection",(t=>{var n,r;let i,a,o=t;o.reason?o=t.reason:(null===(n=t.detail)||void 0===n?void 0:n.reason)&&(o=null===(r=t.detail)||void 0===r?void 0:r.reason);let s=[];(e=>!ae(e)&&!oe(e))(o)?(i=`Non-Error promise rejection captured with value: ${String(o)}`,a="UnhandledRejection"):[i,a,s]=Qt(o),i&&e.pushError(new Error(i),{type:a,stackFrames:s})}))}class Xt extends Ut{constructor(){super(...arguments),this.name="@grafana/faro-web-sdk:instrumentation-errors",this.version=De}initialize(){this.logDebug("Initializing"),Kt(this.api),Yt(this.api)}}var Jt,Zt,en,tn,nn,rn=-1,an=function(e){addEventListener("pageshow",(function(t){t.persisted&&(rn=t.timeStamp,e(t))}),!0)},on=function(){var e=self.performance&&performance.getEntriesByType&&performance.getEntriesByType("navigation")[0];if(e&&e.responseStart>0&&e.responseStart=0?r="back-forward-cache":n&&(document.prerendering||sn()>0?r="prerender":document.wasDiscarded?r="restore":n.type&&(r=n.type.replace(/_/g,"-"))),{name:e,value:void 0===t?-1:t,rating:"good",delta:0,entries:[],id:"v4-".concat(Date.now(),"-").concat(Math.floor(8999999999999*Math.random())+1e12),navigationType:r}},cn=function(e,t,n){try{if(PerformanceObserver.supportedEntryTypes.includes(e)){var r=new PerformanceObserver((function(e){Promise.resolve().then((function(){t(e.getEntries())}))}));return r.observe(Object.assign({type:e,buffered:!0},n||{})),r}}catch(e){}},un=function(e,t,n,r){var i,a;return function(o){t.value>=0&&(o||r)&&((a=t.value-(i||0))||void 0===i)&&(i=t.value,t.delta=a,t.rating=function(e,t){return e>t[1]?"poor":e>t[0]?"needs-improvement":"good"}(t.value,n),e(t))}},dn=function(e){requestAnimationFrame((function(){return requestAnimationFrame((function(){return e()}))}))},pn=function(e){document.addEventListener("visibilitychange",(function(){"hidden"===document.visibilityState&&e()}))},hn=function(e){var t=!1;return function(){t||(e(),t=!0)}},fn=-1,mn=function(){return"hidden"!==document.visibilityState||document.prerendering?1/0:0},gn=function(e){"hidden"===document.visibilityState&&fn>-1&&(fn="visibilitychange"===e.type?e.timeStamp:0,bn())},yn=function(){addEventListener("visibilitychange",gn,!0),addEventListener("prerenderingchange",gn,!0)},bn=function(){removeEventListener("visibilitychange",gn,!0),removeEventListener("prerenderingchange",gn,!0)},vn=function(){return fn<0&&(fn=mn(),yn(),an((function(){setTimeout((function(){fn=mn(),yn()}),0)}))),{get firstHiddenTime(){return fn}}},wn=function(e){document.prerendering?addEventListener("prerenderingchange",(function(){return e()}),!0):e()},Sn=[1800,3e3],En=function(e,t){t=t||{},wn((function(){var n,r=vn(),i=ln("FCP"),a=cn("paint",(function(e){e.forEach((function(e){"first-contentful-paint"===e.name&&(a.disconnect(),e.startTimet.latency){if(n)e.duration>n.latency?(n.entries=[e],n.latency=e.duration):e.duration===n.latency&&e.startTime===n.entries[0].startTime&&n.entries.push(e);else{var r={id:e.interactionId,latency:e.duration,entries:[e]};Rn.set(r.id,r),Pn.push(r)}Pn.sort((function(e,t){return t.latency-e.latency})),Pn.length>10&&Pn.splice(10).forEach((function(e){return Rn.delete(e.id)}))}}},Nn=function(e){var t=self.requestIdleCallback||self.setTimeout,n=-1;return e=hn(e),"hidden"===document.visibilityState?e():(n=t(e),pn(e)),n},Ln=[200,500],Mn=[2500,4e3],Fn={},$n=[800,1800],Bn=function e(t){document.prerendering?wn((function(){return e(t)})):"complete"!==document.readyState?addEventListener("load",(function(){return e(t)}),!0):setTimeout(t,0)},Vn={passive:!0,capture:!0},zn=new Date,Un=function(e,t){Zt||(Zt=t,en=e,tn=new Date,Gn(removeEventListener),qn())},qn=function(){if(en>=0&&en1e12?new Date:performance.now())-e.timeStamp;"pointerdown"==e.type?function(e,t){var n=function(){Un(e,t),i()},r=function(){i()},i=function(){removeEventListener("pointerup",n,Vn),removeEventListener("pointercancel",r,Vn)};addEventListener("pointerup",n,Vn),addEventListener("pointercancel",r,Vn)}(t,e):Un(t,e)}},Gn=function(e){["mousedown","keydown","touchstart","pointerdown"].forEach((function(t){return e(t,Hn,Vn)}))},Wn=[100,300];class Qn{constructor(e){this.pushMeasurement=e}initialize(){Object.entries(Qn.mapping).forEach((([e,t])=>{t((t=>{this.pushMeasurement({type:"web-vitals",values:{[e]:t.value}})}))}))}}Qn.mapping={cls:function(e,t){t=t||{},En(hn((function(){var n,r=ln("CLS",0),i=0,a=[],o=function(e){e.forEach((function(e){if(!e.hadRecentInput){var t=a[0],n=a[a.length-1];i&&e.startTime-n.startTime<1e3&&e.startTime-t.startTime<5e3?(i+=e.value,a.push(e)):(i=e.value,a=[e])}})),i>r.value&&(r.value=i,r.entries=a,n())},s=cn("layout-shift",o);s&&(n=un(e,r,xn,t.reportAllChanges),pn((function(){o(s.takeRecords()),n(!0)})),an((function(){i=0,r=ln("CLS",0),n=un(e,r,xn,t.reportAllChanges),dn((function(){return n()}))})),setTimeout(n,0))})))},fcp:En,fid:function(e,t){t=t||{},wn((function(){var n,r=vn(),i=ln("FID"),a=function(e){e.startTime0&&e.responseStart(t||100)-1)return n||i;if(n=n?i+">"+n:i,r.id)break;e=r.parentNode}}catch(e){}return n},nr=-1,rr=function(){return nr},ir=function(e){addEventListener("pageshow",(function(t){t.persisted&&(nr=t.timeStamp,e(t))}),!0)},ar=function(){var e=Jn();return e&&e.activationStart||0},or=function(e,t){var n=Jn(),r="navigate";return rr()>=0?r="back-forward-cache":n&&(document.prerendering||ar()>0?r="prerender":document.wasDiscarded?r="restore":n.type&&(r=n.type.replace(/_/g,"-"))),{name:e,value:void 0===t?-1:t,rating:"good",delta:0,entries:[],id:"v4-".concat(Date.now(),"-").concat(Math.floor(8999999999999*Math.random())+1e12),navigationType:r}},sr=function(e,t,n){try{if(PerformanceObserver.supportedEntryTypes.includes(e)){var r=new PerformanceObserver((function(e){Promise.resolve().then((function(){t(e.getEntries())}))}));return r.observe(Object.assign({type:e,buffered:!0},n||{})),r}}catch(e){}},lr=function(e,t,n,r){var i,a;return function(o){t.value>=0&&(o||r)&&((a=t.value-(i||0))||void 0===i)&&(i=t.value,t.delta=a,t.rating=function(e,t){return e>t[1]?"poor":e>t[0]?"needs-improvement":"good"}(t.value,n),e(t))}},cr=function(e){requestAnimationFrame((function(){return requestAnimationFrame((function(){return e()}))}))},ur=function(e){document.addEventListener("visibilitychange",(function(){"hidden"===document.visibilityState&&e()}))},dr=function(e){var t=!1;return function(){t||(e(),t=!0)}},pr=-1,hr=function(){return"hidden"!==document.visibilityState||document.prerendering?1/0:0},fr=function(e){"hidden"===document.visibilityState&&pr>-1&&(pr="visibilitychange"===e.type?e.timeStamp:0,gr())},mr=function(){addEventListener("visibilitychange",fr,!0),addEventListener("prerenderingchange",fr,!0)},gr=function(){removeEventListener("visibilitychange",fr,!0),removeEventListener("prerenderingchange",fr,!0)},yr=function(){return pr<0&&(pr=hr(),mr(),ir((function(){setTimeout((function(){pr=hr(),mr()}),0)}))),{get firstHiddenTime(){return pr}}},br=function(e){document.prerendering?addEventListener("prerenderingchange",(function(){return e()}),!0):e()},vr=[1800,3e3],wr=function(e,t){t=t||{},br((function(){var n,r=yr(),i=or("FCP"),a=sr("paint",(function(e){e.forEach((function(e){"first-contentful-paint"===e.name&&(a.disconnect(),e.startTimet.latency){if(n)e.duration>n.latency?(n.entries=[e],n.latency=e.duration):e.duration===n.latency&&e.startTime===n.entries[0].startTime&&n.entries.push(e);else{var r={id:e.interactionId,latency:e.duration,entries:[e]};Cr.set(r.id,r),Tr.push(r)}Tr.sort((function(e,t){return t.latency-e.latency})),Tr.length>10&&Tr.splice(10).forEach((function(e){return Cr.delete(e.id)}))}}},Ar=function(e){var t=self.requestIdleCallback||self.setTimeout,n=-1;return e=dr(e),"hidden"===document.visibilityState?e():(n=t(e),ur(e)),n},Dr=[200,500],jr=function(e,t){"PerformanceEventTiming"in self&&"interactionId"in PerformanceEventTiming.prototype&&(t=t||{},br((function(){var n;"interactionCount"in performance||Kn||(Kn=sr("event",_r,{type:"event",buffered:!0,durationThreshold:0}));var r,i=or("INP"),a=function(e){Ar((function(){e.forEach(Rr);var t,n=(t=Math.min(Tr.length-1,Math.floor(((Kn?Er:performance.interactionCount||0)-kr)/50)),Tr[t]);n&&n.latency!==i.value&&(i.value=n.latency,i.entries=n.entries,r())}))},o=sr("event",a,{durationThreshold:null!==(n=t.durationThreshold)&&void 0!==n?n:40});r=lr(e,i,Dr,t.reportAllChanges),o&&(o.observe({type:"first-input",buffered:!0}),ur((function(){a(o.takeRecords()),r(!0)})),ir((function(){kr=0,Tr.length=0,Cr.clear(),i=or("INP"),r=lr(e,i,Dr,t.reportAllChanges)})))})))},Ir=[],Nr=[],Lr=new WeakMap,Mr=new Map,Fr=-1,$r=function(e){Ir=Ir.concat(e),Br()},Br=function(){Fr<0&&(Fr=Ar(Vr))},Vr=function(){Mr.size>10&&Mr.forEach((function(e,t){Cr.has(t)||Mr.delete(t)}));var e=Tr.map((function(e){return Lr.get(e.entries[0])})),t=Nr.length-50;Nr=Nr.filter((function(n,r){return r>=t||e.includes(n)}));for(var n=new Set,r=0;r=0;r--){var i=Nr[r];if(Math.abs(n-i.renderTime)<=8){(t=i).startTime=Math.min(e.startTime,t.startTime),t.processingStart=Math.min(e.processingStart,t.processingStart),t.processingEnd=Math.max(e.processingEnd,t.processingEnd),t.entries.push(e);break}}t||(t={startTime:e.startTime,processingStart:e.processingStart,processingEnd:e.processingEnd,renderTime:n,entries:[e]},Nr.push(t)),(e.interactionId||"first-input"===e.entryType)&&Lr.set(e,t),Br()}));var zr,Ur,qr,Hr,Gr=function(e,t){for(var n,r=[],i=0;n=Ir[i];i++)if(!(n.startTime+n.durationt)break;r.push(n)}return r},Wr=[2500,4e3],Qr={},Kr=[800,1800],Yr=function e(t){document.prerendering?br((function(){return e(t)})):"complete"!==document.readyState?addEventListener("load",(function(){return e(t)}),!0):setTimeout(t,0)},Xr=function(e,t){t=t||{};var n=or("TTFB"),r=lr(e,n,Kr,t.reportAllChanges);Yr((function(){var i=Jn();i&&(n.value=Math.max(i.responseStart-ar(),0),n.entries=[i],r(!0),ir((function(){n=or("TTFB",0),(r=lr(e,n,Kr,t.reportAllChanges))(!0)})))}))},Jr={passive:!0,capture:!0},Zr=new Date,ei=function(e,t){zr||(zr=t,Ur=e,qr=new Date,ri(removeEventListener),ti())},ti=function(){if(Ur>=0&&Ur1e12?new Date:performance.now())-e.timeStamp;"pointerdown"==e.type?function(e,t){var n=function(){ei(e,t),i()},r=function(){i()},i=function(){removeEventListener("pointerup",n,Jr),removeEventListener("pointercancel",r,Jr)};addEventListener("pointerup",n,Jr),addEventListener("pointercancel",r,Jr)}(t,e):ei(t,e)}},ri=function(e){["mousedown","keydown","touchstart","pointerdown"].forEach((function(t){return e(t,ni,Jr)}))},ii=[100,300],ai=function(e,t){!function(e,t){t=t||{},br((function(){var n,r=yr(),i=or("FID"),a=function(e){e.startTimer.value&&(r.value=i,r.entries=a,n())},s=sr("layout-shift",o);s&&(n=lr(e,r,Sr,t.reportAllChanges),ur((function(){o(s.takeRecords()),n(!0)})),ir((function(){i=0,r=or("CLS",0),n=lr(e,r,Sr,t.reportAllChanges),cr((function(){return n()}))})),setTimeout(n,0))})))}((function(t){var n=function(e){var t,n={};if(e.entries.length){var r=e.entries.reduce((function(e,t){return e&&e.value>t.value?e:t}));if(r&&r.sources&&r.sources.length){var i=(t=r.sources).find((function(e){return e.node&&1===e.node.nodeType}))||t[0];i&&(n={largestShiftTarget:tr(i.node),largestShiftTime:r.startTime,largestShiftValue:r.value,largestShiftSource:i,largestShiftEntry:r,loadState:Zn(r.startTime)})}}return Object.assign(e,{attribution:n})}(t);e(n)}),t)}((e=>{const{loadState:t,largestShiftValue:n,largestShiftTime:r,largestShiftTarget:i}=e.attribution,a=this.buildInitialValues(e);this.addIfPresent(a,"largest_shift_value",n),this.addIfPresent(a,"largest_shift_time",r);const o=this.buildInitialContext(e);this.addIfPresent(o,si,t),this.addIfPresent(o,"largest_shift_target",i),this.pushMeasurement(a,o)}))}measureFCP(){!function(e,t){wr((function(t){var n=function(e){var t={timeToFirstByte:0,firstByteToFCP:e.value,loadState:Zn(rr())};if(e.entries.length){var n=Jn(),r=e.entries[e.entries.length-1];if(n){var i=n.activationStart||0,a=Math.max(0,n.responseStart-i);t={timeToFirstByte:a,firstByteToFCP:e.value-a,loadState:Zn(e.entries[0].startTime),navigationEntry:n,fcpEntry:r}}}return Object.assign(e,{attribution:t})}(t);e(n)}),t)}((e=>{const{firstByteToFCP:t,timeToFirstByte:n,loadState:r}=e.attribution,i=this.buildInitialValues(e);this.addIfPresent(i,"first_byte_to_fcp",t),this.addIfPresent(i,li,n);const a=this.buildInitialContext(e);this.addIfPresent(a,si,r),this.pushMeasurement(i,a)}))}measureFID(){ai((e=>{const{eventTime:t,eventTarget:n,eventType:r,loadState:i}=e.attribution,a=this.buildInitialValues(e);this.addIfPresent(a,"event_time",t);const o=this.buildInitialContext(e);this.addIfPresent(o,"event_target",n),this.addIfPresent(o,"event_type",r),this.addIfPresent(o,si,i),this.pushMeasurement(a,o)}))}measureINP(){!function(e,t){Yn||(Yn=sr("long-animation-frame",$r)),jr((function(t){var n=function(e){var t=e.entries[0],n=Lr.get(t),r=t.processingStart,i=n.processingEnd,a=n.entries.sort((function(e,t){return e.processingStart-t.processingStart})),o=Gr(t.startTime,i),s=e.entries.find((function(e){return e.target})),l=s&&s.target||Mr.get(t.interactionId),c=[t.startTime+t.duration,i].concat(o.map((function(e){return e.startTime+e.duration}))),u=Math.max.apply(Math,c),d={interactionTarget:tr(l),interactionTargetElement:l,interactionType:t.name.startsWith("key")?"keyboard":"pointer",interactionTime:t.startTime,nextPaintTime:u,processedEventEntries:a,longAnimationFrameEntries:o,inputDelay:r-t.startTime,processingDuration:i-r,presentationDelay:Math.max(u-i,0),loadState:Zn(t.startTime)};return Object.assign(e,{attribution:d})}(t);e(n)}),t)}((e=>{const{interactionTime:t,presentationDelay:n,inputDelay:r,processingDuration:i,nextPaintTime:a,loadState:o,interactionTarget:s,interactionType:l}=e.attribution,c=this.buildInitialValues(e);this.addIfPresent(c,"interaction_time",t),this.addIfPresent(c,"presentation_delay",n),this.addIfPresent(c,"input_delay",r),this.addIfPresent(c,"processing_duration",i),this.addIfPresent(c,"next_paint_time",a);const u=this.buildInitialContext(e);this.addIfPresent(u,si,o),this.addIfPresent(u,"interaction_target",s),this.addIfPresent(u,"interaction_type",l),this.pushMeasurement(c,u)}))}measureLCP(){!function(e,t){!function(e,t){t=t||{},br((function(){var n,r=yr(),i=or("LCP"),a=function(e){t.reportAllChanges||(e=e.slice(-1)),e.forEach((function(e){e.startTime{const{elementRenderDelay:t,resourceLoadDelay:n,resourceLoadDuration:r,timeToFirstByte:i,element:a}=e.attribution,o=this.buildInitialValues(e);this.addIfPresent(o,"element_render_delay",t),this.addIfPresent(o,"resource_load_delay",n),this.addIfPresent(o,"resource_load_duration",r),this.addIfPresent(o,li,i);const s=this.buildInitialContext(e);this.addIfPresent(s,"element",a),this.pushMeasurement(o,s)}))}measureTTFB(){!function(e,t){Xr((function(t){var n=function(e){var t={waitingDuration:0,cacheDuration:0,dnsDuration:0,connectionDuration:0,requestDuration:0};if(e.entries.length){var n=e.entries[0],r=n.activationStart||0,i=Math.max((n.workerStart||n.fetchStart)-r,0),a=Math.max(n.domainLookupStart-r,0),o=Math.max(n.connectStart-r,0),s=Math.max(n.connectEnd-r,0);t={waitingDuration:i,cacheDuration:a-i,dnsDuration:o-a,connectionDuration:s-o,requestDuration:e.value-s,navigationEntry:n}}return Object.assign(e,{attribution:t})}(t);e(n)}),t)}((e=>{const{dnsDuration:t,connectionDuration:n,requestDuration:r,waitingDuration:i,cacheDuration:a}=e.attribution,o=this.buildInitialValues(e);this.addIfPresent(o,"dns_duration",t),this.addIfPresent(o,"connection_duration",n),this.addIfPresent(o,"request_duration",r),this.addIfPresent(o,"waiting_duration",i),this.addIfPresent(o,"cache_duration",a);const s=this.buildInitialContext(e);this.pushMeasurement(o,s)}))}buildInitialValues(e){const t=e.name.toLowerCase();return{[t]:e.value,delta:e.delta}}buildInitialContext(e){var t;const n=null!==(t=Ot(oi,Et.session))&&void 0!==t?t:mt;return{id:e.id,rating:e.rating,navigation_type:e.navigationType,navigation_entry_id:n}}pushMeasurement(e,t){this.corePushMeasurement({type:"web-vitals",values:e},{context:t})}addIfPresent(e,t,n){n&&(e[t]=n)}}class ui extends Ut{constructor(){super(...arguments),this.name="@grafana/faro-web-sdk:instrumentation-web-vitals",this.version=De}initialize(){this.logDebug("Initializing");this.intializeWebVitalsInstrumentation().initialize()}intializeWebVitalsInstrumentation(){return this.config.trackWebVitalsAttribution?new ci(this.api.pushMeasurement):new Qn(this.api.pushMeasurement)}}const di="session_start",pi="session_resume";class hi extends Ut{constructor(){super(...arguments),this.name="@grafana/faro-web-sdk:instrumentation-session",this.version=De}sendSessionStartEvent(e){var t,n;const r=e.session;if(r&&r.id!==(null===(t=this.notifiedSession)||void 0===t?void 0:t.id)){if(this.notifiedSession&&this.notifiedSession.id===(null===(n=r.attributes)||void 0===n?void 0:n.previousSession))return this.api.pushEvent("session_extend",{},void 0,{skipDedupe:!0}),void(this.notifiedSession=r);this.notifiedSession=r,this.api.pushEvent(di,{},void 0,{skipDedupe:!0})}}createInitialSession(e,t){var n,r,i,a,o;let s,l,c=e.fetchUserSession();if(t.persistent&&t.maxSessionPersistenceTime&&c){const e=Y();c.lastActivity{var t,r,i;n();const a=null===(t=e.meta.session)||void 0===t?void 0:t.attributes;if(a&&"true"===(null==a?void 0:a.isSampled)){let t=JSON.parse(JSON.stringify(e));const n=null===(r=t.meta.session)||void 0===r?void 0:r.attributes;return null==n||delete n.isSampled,0===Object.keys(null!=n?n:{}).length&&(null===(i=t.meta.session)||void 0===i||delete i.attributes),t}return null}))}initialize(){this.logDebug("init session instrumentation");const e=this.config.sessionTracking;if(null==e?void 0:e.enabled){const t=$t(e);this.registerBeforeSendHook(t);const{initialSession:n,lifecycleType:r}=this.createInitialSession(t,e);t.storeUserSession(n);const i=n.sessionMeta;this.notifiedSession=i,this.api.setSession(i),r===di&&this.api.pushEvent(di,{},void 0,{skipDedupe:!0}),r===pi&&this.api.pushEvent(pi,{},void 0,{skipDedupe:!0})}this.metas.addListener(this.sendSessionStartEvent.bind(this))}}class fi extends Ut{constructor(){super(...arguments),this.name="@grafana/faro-web-sdk:instrumentation-view",this.version=De}sendViewChangedEvent(e){var t,n,r,i;const a=e.view;a&&a.name!==(null===(t=this.notifiedView)||void 0===t?void 0:t.name)&&(this.api.pushEvent("view_changed",{fromView:null!==(r=null===(n=this.notifiedView)||void 0===n?void 0:n.name)&&void 0!==r?r:mt,toView:null!==(i=a.name)&&void 0!==i?i:mt},void 0,{skipDedupe:!0}),this.notifiedView=a)}initialize(){this.metas.addListener(this.sendViewChangedEvent.bind(this))}}const mi=/^00-[a-f0-9]{32}-[a-f0-9]{16}-[0-9]{1,2}$/;function gi(e=[]){for(const t of e)if("traceparent"===t.name){if(!mi.test(t.description))continue;const[,e,n]=t.description.split("-");if(null!=e&&null!=n)return{traceId:e,spanId:n};break}}function yi(e=[],t){return e.some((e=>e&&null!=t.match(e)))}function bi(e,t={}){for(const[n,r]of Object.entries(t)){const t=e[n];return null!=t&&(se(r)?r.includes(t):t===r)}return!0}function vi(e){const{connectEnd:t,connectStart:n,decodedBodySize:r,domainLookupEnd:i,domainLookupStart:a,duration:o,encodedBodySize:s,fetchStart:l,initiatorType:c,name:u,nextHopProtocol:d,redirectEnd:p,redirectStart:h,renderBlockingStatus:f,requestStart:m,responseEnd:g,responseStart:y,responseStatus:b,secureConnectionStart:v,transferSize:w,workerStart:S}=e;return{name:u,duration:Si(o),tcpHandshakeTime:Si(t-n),dnsLookupTime:Si(i-a),tlsNegotiationTime:Si(m-v),responseStatus:Si(b),redirectTime:Si(p-h),requestTime:Si(y-m),responseTime:Si(g-y),fetchTime:Si(g-l),serviceWorkerTime:Si(l-S),decodedBodySize:Si(r),encodedBodySize:Si(s),cacheHitStatus:function(){let e="fullLoad";0===w?r>0&&(e="cache"):null!=b?304===b&&(e="conditionalFetch"):s>0&&w{"complete"===document.readyState&&(e(),document.removeEventListener("readystatechange",t))};document.addEventListener("readystatechange",t)}}((()=>xi(this,void 0,void 0,(function*(){const e=this.api.pushEvent,t=this.getIgnoreUrls(),{faroNavigationId:n}=yield function(e,t){let n;const r=new Promise((e=>{n=e})),i=new PerformanceObserver((r=>{var i;const[a]=r.getEntries();if(null==a||yi(t,a.name))return;const o=a.toJSON();let s=gi(null==o?void 0:o.serverTiming);const l=null!==(i=Ot(oi,Et.session))&&void 0!==i?i:mt,c=Object.assign(Object.assign({},wi(o)),{faroNavigationId:Dt(),faroPreviousNavigationId:l});_t(oi,c.faroNavigationId,Et.session),e("faro.performance.navigation",c,void 0,{spanContext:s,timestampOverwriteMs:performance.timeOrigin+o.startTime}),n(c)}));return i.observe({type:"navigation",buffered:!0}),r}(e,t);null!=n&&function(e,t,n){const r=Ie.config.trackResources;new PerformanceObserver((i=>{const a=i.getEntries();for(const i of a){if(yi(n,i.name))return;const a=i.toJSON();let o=gi(null==a?void 0:a.serverTiming);if(null==r&&bi(a,Ei)||r){const n=Object.assign(Object.assign({},vi(a)),{faroNavigationId:e,faroResourceId:Dt()});t("faro.performance.resource",n,void 0,{spanContext:o,timestampOverwriteMs:performance.timeOrigin+a.startTime})}}})).observe({type:"resource",buffered:!0})}(n,e,t)})))):this.logDebug("performance observer not supported. Disable performance instrumentation.")}getIgnoreUrls(){var e;return null===(e=this.transports.transports)||void 0===e?void 0:e.flatMap((e=>e.getIgnoreUrls()))}}class _i extends Ut{constructor(e={}){super(),this.options=e,this.name="@grafana/faro-web-sdk:instrumentation-console",this.version=De}initialize(){this.logDebug("Initializing\n",this.options),we.filter((e=>{var t;return!(null!==(t=this.options.disabledLevels)&&void 0!==t?t:_i.defaultDisabledLevels).includes(e)})).forEach((e=>{console[e]=(...t)=>{try{this.api.pushLog(t,{level:e})}catch(e){this.logError(e)}finally{this.unpatchedConsole[e](...t)}}}))}}function Ti(e={}){const t=[new Xt,new ui,new hi,new fi];return!1!==e.enablePerformanceInstrumentation&&t.unshift(new Oi),!1!==e.captureConsole&&t.push(new _i({disabledLevels:e.captureConsoleDisabledLevels})),t}function Ci(e){const t=function(e){var t,n,r,i,a,o,s,l,c;const u=[],d=ke(e.unpatchedConsole,e.internalLoggerLevel);return e.transports?((e.url||e.apiKey)&&d.error('if "transports" is defined, "url" and "apiKey" should not be defined'),u.push(...e.transports)):e.url?u.push(new zt({url:e.url,apiKey:e.apiKey})):d.error('either "url" or "transports" must be defined'),{app:e.app,batching:Object.assign(Object.assign({},Ue),e.batching),dedupe:null===(t=e.dedupe)||void 0===t||t,globalObjectKey:e.globalObjectKey||ze,instrumentations:null!==(n=e.instrumentations)&&void 0!==n?n:Ti(),internalLoggerLevel:null!==(r=e.internalLoggerLevel)&&void 0!==r?r:Te,isolate:null!==(i=e.isolate)&&void 0!==i&&i,logArgsSerializer:null!==(a=e.logArgsSerializer)&&void 0!==a?a:Se,metas:function(){const t=gt;return e.metas&&t.push(...e.metas),ae(window.k6)?[...t,yt]:t}(),parseStacktrace:ct,paused:null!==(o=e.paused)&&void 0!==o&&o,preventGlobalExposure:null!==(s=e.preventGlobalExposure)&&void 0!==s&&s,transports:u,unpatchedConsole:null!==(l=e.unpatchedConsole)&&void 0!==l?l:Ce,beforeSend:e.beforeSend,eventDomain:null!==(c=e.eventDomain)&&void 0!==c?c:qe,ignoreErrors:e.ignoreErrors,ignoreUrls:e.ignoreUrls,sessionTracking:Object.assign(Object.assign({},ht),e.sessionTracking),user:e.user,view:e.view,trackResources:e.trackResources,trackWebVitalsAttribution:e.trackWebVitalsAttribution}}(e);if(t)return Ve(t)}_i.defaultDisabledLevels=[be.DEBUG,be.TRACE,be.LOG];const ki=JSON.parse('{"id":"grafana-pyroscope-app"}'),Pi=ki.id,Ri=`/a/${Pi}`;var Ai=function(e){return e.EXPLORE="/explore",e.ADHOC="/ad-hoc",e.SETTINGS="/settings",e}({});const Di="b4013f7656edf48bc0145426a1d05fecd1bb7806",ji=[{regExp:/localhost/,environment:"local"},{regExp:/grafana-dev\.net/,environment:"dev"},{regExp:/grafana-ops\.net/,environment:"ops"},{regExp:/grafana\.net/,environment:"prod"}];function Ii(){var e,t;if(!(null===(t=window)||void 0===t||null===(e=t.location)||void 0===e?void 0:e.host))return null;const n=ji.find((({regExp:e})=>e.test(window.location.host)));return n?n.environment:null}const Ni=new Map([["dev",{environment:"dev",appName:"grafana-pyroscope-dev",faroUrl:"https://faro-collector-ops-eu-south-0.grafana-ops.net/collect/48e03a2647389f2f6494af7f975b4084"}],["ops",{environment:"ops",appName:"grafana-pyroscope-ops",faroUrl:"https://faro-collector-ops-eu-south-0.grafana-ops.net/collect/b5cfd5eeb412cf5e74bd828b4ddd17ff"}],["prod",{environment:"prod",appName:"grafana-pyroscope-prod",faroUrl:"https://faro-collector-ops-eu-south-0.grafana-ops.net/collect/6cbe17b3af4b72ce5936bf4d15a5c393"}]]);let Li=null;const Mi=()=>Li;var Fi=__webpack_require__(5959),$i=__webpack_require__.n(Fi),Bi=__webpack_require__(2540),Vi=Fi.createContext(void 0),zi=e=>{const t=Fi.useContext(Vi);if(e)return e;if(!t)throw new Error("No QueryClient set, use QueryClientProvider to set one");return t},Ui=({client:e,children:t})=>(Fi.useEffect((()=>(e.mount(),()=>{e.unmount()})),[e]),(0,Bi.jsx)(Vi.Provider,{value:e,children:t}));function qi(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function Hi(e,t,n){if(!t.has(e))throw new TypeError("attempted to "+n+" private field on non-instance");return t.get(e)}function Gi(e,t,n){return function(e,t,n){if(t.set)t.set.call(e,n);else{if(!t.writable)throw new TypeError("attempted to set read only private field");t.value=n}}(e,Hi(e,t,"set"),n),n}function Wi(e,t,n){if(!t.has(e))throw new TypeError("attempted to get private field on non-instance");return n}var Qi=new WeakMap,Ki=new WeakSet;function Yi(e,t){var n;"prod"!==function(e,t){return t.get?t.get.call(e):t.value}(n=this,Hi(n,Qi,"get"))&&console[e](...t)}const Xi=new class{trace(){var e;Wi(this,Ki,Yi).call(this,"trace",[]),null===(e=Mi())||void 0===e||e.api.pushLog([],{level:be.TRACE})}debug(...e){var t;Wi(this,Ki,Yi).call(this,"debug",e),null===(t=Mi())||void 0===t||t.api.pushLog(e,{level:be.DEBUG})}info(...e){var t;Wi(this,Ki,Yi).call(this,"info",e),null===(t=Mi())||void 0===t||t.api.pushLog(e,{level:be.INFO})}log(...e){var t;Wi(this,Ki,Yi).call(this,"log",e),null===(t=Mi())||void 0===t||t.api.pushLog(e,{level:be.LOG})}warn(...e){var t;Wi(this,Ki,Yi).call(this,"warn",e),null===(t=Mi())||void 0===t||t.api.pushLog(e,{level:be.WARN})}error(e,t){var n;Wi(this,Ki,Yi).call(this,"error",[e]),t&&Wi(this,Ki,Yi).call(this,"error",["Error context",t]),null===(n=Mi())||void 0===n||n.api.pushError(e,{context:t})}constructor(){var e,t;qi(e=this,t=Ki),t.add(e),function(e,t,n){qi(e,t),t.set(e,n)}(this,Qi,{writable:!0,value:void 0}),Gi(this,Qi,Ii())}};function Ji(e,t){var n=function(e,t,n){if(!t.has(e))throw new TypeError("attempted to "+n+" private field on non-instance");return t.get(e)}(e,t,"get");return function(e,t){return t.get?t.get.call(e):t.value}(e,n)}function Zi(e,t,n){!function(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}(e,t),t.set(e,n)}var ea=new WeakMap;const ta=new class{has(e){return Ji(this,ea).hasOwnProperty(e)}get(e){if(!this.has(e))return null;try{return JSON.parse(Ji(this,ea).getItem(e))}catch(t){return Xi.error(t,{info:`Error parsing JSON for storage item "${e}"!`}),null}}set(e,t){try{Ji(this,ea).setItem(e,JSON.stringify(t))}catch(t){Xi.error(t,{info:`Error setting storage item "${e}"!`})}}constructor(){var e,t,n;Zi(this,ea,{writable:!0,value:window.localStorage}),e=this,t="KEYS",n={SETTINGS:`${ki.id}.userSettings`,GITHUB_INTEGRATION:`${ki.id}.gitHubIntegration`,PROFILES_EXPLORER:`${ki.id}.profilesExplorer`},t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n}},na=()=>{};function ra(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class ia extends Error{constructor(e,t){let n=`HTTP ${e.status} (${e.statusText||"?"})`;(null==t?void 0:t.message)&&(n=`${n} → ${t.message}`),super(n),ra(this,"response",void 0),ra(this,"reason",void 0),this.response=e}}function aa(e,t,n,r,i,a,o){try{var s=e[a](o),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,i)}function oa(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function sa(e){for(var t=1;t"grafana-pyroscope-datasource"===e.type))}static selectDefaultDataSource(){var e;const t=ua.getPyroscopeDataSources(),n=new URL(window.location.href).searchParams.get("var-dataSource"),r=null===(e=ta.get(ta.KEYS.PROFILES_EXPLORER))||void 0===e?void 0:e.dataSource,i=t.find((e=>e.uid===n))||t.find((e=>e.uid===r))||t.find((e=>e.jsonData.overridesDefault))||t.find((e=>e.isDefault))||t[0];return i||(Xi.warn("Cannot find any Pyroscope data source! Please add and configure a Pyroscope data source to your Grafana instance."),{uid:"no-data-source-configured"})}static getBaseUrl(){const e=ua.selectDefaultDataSource();let t=a.config.appSubUrl||"";return"/"!==t.at(-1)&&(t+="/"),`${t}api/datasources/proxy/uid/${e.uid}`}constructor(){var e,t;super(ua.getBaseUrl().toString(),{"content-type":"application/json","X-Grafana-Org-Id":String((null===(t=a.config.bootData)||void 0===t||null===(e=t.user)||void 0===e?void 0:e.orgId)||"")})}}var da=class extends P{constructor(e,t){super(),this.options=t,this.#x=e,this.#O=null,this.bindMethods(),this.setOptions(t)}#x;#_=void 0;#T=void 0;#C=void 0;#k;#P;#O;#R;#A;#D;#j;#I;#N;#L=new Set;bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){1===this.listeners.size&&(this.#_.addObserver(this),pa(this.#_,this.options)?this.#M():this.updateResult(),this.#F())}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return ha(this.#_,this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return ha(this.#_,this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,this.#$(),this.#B(),this.#_.removeObserver(this)}setOptions(e,t){const n=this.options,r=this.#_;if(this.options=this.#x.defaultQueryOptions(e),void 0!==this.options.enabled&&"boolean"!=typeof this.options.enabled&&"function"!=typeof this.options.enabled&&"boolean"!=typeof p(this.options.enabled,this.#_))throw new Error("Expected enabled to be a boolean or a callback that returns a boolean");this.#V(),this.#_.setOptions(this.options),n._defaulted&&!v(this.options,n)&&this.#x.getQueryCache().notify({type:"observerOptionsUpdated",query:this.#_,observer:this});const i=this.hasListeners();i&&fa(this.#_,r,this.options,n)&&this.#M(),this.updateResult(t),!i||this.#_===r&&p(this.options.enabled,this.#_)===p(n.enabled,this.#_)&&d(this.options.staleTime,this.#_)===d(n.staleTime,this.#_)||this.#z();const a=this.#U();!i||this.#_===r&&p(this.options.enabled,this.#_)===p(n.enabled,this.#_)&&a===this.#N||this.#q(a)}getOptimisticResult(e){const t=this.#x.getQueryCache().build(this.#x,e),n=this.createResult(t,e);return function(e,t){if(!v(e.getCurrentResult(),t))return!0;return!1}(this,n)&&(this.#C=n,this.#P=this.options,this.#k=this.#_.state),n}getCurrentResult(){return this.#C}trackResult(e,t){const n={};return Object.keys(e).forEach((r=>{Object.defineProperty(n,r,{configurable:!1,enumerable:!0,get:()=>(this.trackProp(r),t?.(r),e[r])})})),n}trackProp(e){this.#L.add(e)}getCurrentQuery(){return this.#_}refetch({...e}={}){return this.fetch({...e})}fetchOptimistic(e){const t=this.#x.defaultQueryOptions(e),n=this.#x.getQueryCache().build(this.#x,t);return n.isFetchingOptimistic=!0,n.fetch().then((()=>this.createResult(n,t)))}fetch(e){return this.#M({...e,cancelRefetch:e.cancelRefetch??!0}).then((()=>(this.updateResult(),this.#C)))}#M(e){this.#V();let t=this.#_.fetch(this.options,e);return e?.throwOnError||(t=t.catch(l)),t}#z(){this.#$();const e=d(this.options.staleTime,this.#_);if(s||this.#C.isStale||!c(e))return;const t=u(this.#C.dataUpdatedAt,e)+1;this.#j=setTimeout((()=>{this.#C.isStale||this.updateResult()}),t)}#U(){return("function"==typeof this.options.refetchInterval?this.options.refetchInterval(this.#_):this.options.refetchInterval)??!1}#q(e){this.#B(),this.#N=e,!s&&!1!==p(this.options.enabled,this.#_)&&c(this.#N)&&0!==this.#N&&(this.#I=setInterval((()=>{(this.options.refetchIntervalInBackground||R.isFocused())&&this.#M()}),this.#N))}#F(){this.#z(),this.#q(this.#U())}#$(){this.#j&&(clearTimeout(this.#j),this.#j=void 0)}#B(){this.#I&&(clearInterval(this.#I),this.#I=void 0)}createResult(e,t){const n=this.#_,r=this.options,i=this.#C,a=this.#k,o=this.#P,s=e!==n?e.state:this.#T,{state:l}=e;let c,u={...l},d=!1;if(t._optimisticResults){const i=this.hasListeners(),a=!i&&pa(e,t),o=i&&fa(e,n,t,r);(a||o)&&(u={...u,...$(l.data,e.options)}),"isRestoring"===t._optimisticResults&&(u.fetchStatus="idle")}let{error:p,errorUpdatedAt:h,status:f}=u;if(t.select&&void 0!==u.data)if(i&&u.data===a?.data&&t.select===this.#R)c=this.#A;else try{this.#R=t.select,c=t.select(u.data),c=x(i?.data,c,t),this.#A=c,this.#O=null}catch(e){this.#O=e}else c=u.data;if(void 0!==t.placeholderData&&void 0===c&&"pending"===f){let e;if(i?.isPlaceholderData&&t.placeholderData===o?.placeholderData)e=i.data;else if(e="function"==typeof t.placeholderData?t.placeholderData(this.#D?.state.data,this.#D):t.placeholderData,t.select&&void 0!==e)try{e=t.select(e),this.#O=null}catch(e){this.#O=e}void 0!==e&&(f="success",c=x(i?.data,e,t),d=!0)}this.#O&&(p=this.#O,c=this.#A,h=Date.now(),f="error");const m="fetching"===u.fetchStatus,g="pending"===f,y="error"===f,b=g&&m,v=void 0!==c;return{status:f,fetchStatus:u.fetchStatus,isPending:g,isSuccess:"success"===f,isError:y,isInitialLoading:b,isLoading:b,data:c,dataUpdatedAt:u.dataUpdatedAt,error:p,errorUpdatedAt:h,failureCount:u.fetchFailureCount,failureReason:u.fetchFailureReason,errorUpdateCount:u.errorUpdateCount,isFetched:u.dataUpdateCount>0||u.errorUpdateCount>0,isFetchedAfterMount:u.dataUpdateCount>s.dataUpdateCount||u.errorUpdateCount>s.errorUpdateCount,isFetching:m,isRefetching:m&&!g,isLoadingError:y&&!v,isPaused:"paused"===u.fetchStatus,isPlaceholderData:d,isRefetchError:y&&v,isStale:ma(e,t),refetch:this.refetch}}updateResult(e){const t=this.#C,n=this.createResult(this.#_,this.options);if(this.#k=this.#_.state,this.#P=this.options,void 0!==this.#k.data&&(this.#D=this.#_),v(n,t))return;this.#C=n;const r={};!1!==e?.listeners&&(()=>{if(!t)return!0;const{notifyOnChangeProps:e}=this.options,n="function"==typeof e?e():e;if("all"===n||!n&&!this.#L.size)return!0;const r=new Set(n??this.#L);return this.options.throwOnError&&r.add("error"),Object.keys(this.#C).some((e=>{const n=e;return this.#C[n]!==t[n]&&r.has(n)}))})()&&(r.listeners=!0),this.#H({...r,...e})}#V(){const e=this.#x.getQueryCache().build(this.#x,this.options);if(e===this.#_)return;const t=this.#_;this.#_=e,this.#T=e.state,this.hasListeners()&&(t?.removeObserver(this),e.addObserver(this))}onQueryUpdate(){this.updateResult(),this.hasListeners()&&this.#F()}#H(e){k.batch((()=>{e.listeners&&this.listeners.forEach((e=>{e(this.#C)})),this.#x.getQueryCache().notify({query:this.#_,type:"observerResultsUpdated"})}))}};function pa(e,t){return function(e,t){return!1!==p(t.enabled,e)&&void 0===e.state.data&&!("error"===e.state.status&&!1===t.retryOnMount)}(e,t)||void 0!==e.state.data&&ha(e,t,t.refetchOnMount)}function ha(e,t,n){if(!1!==p(t.enabled,e)){const r="function"==typeof n?n(e):n;return"always"===r||!1!==r&&ma(e,t)}return!1}function fa(e,t,n,r){return(e!==t||!1===p(r.enabled,e))&&(!n.suspense||"error"!==e.state.status)&&ma(e,n)}function ma(e,t){return!1!==p(t.enabled,e)&&e.isStaleByTime(d(t.staleTime,e))}function ga(){let e=!1;return{clearReset:()=>{e=!1},reset:()=>{e=!0},isReset:()=>e}}var ya=Fi.createContext(ga()),ba=()=>Fi.useContext(ya),va=Fi.createContext(!1),wa=()=>Fi.useContext(va);va.Provider;function Sa(e,t){return"function"==typeof e?e(...t):!!e}function Ea(){}var xa=(e,t)=>{(e.suspense||e.throwOnError)&&(t.isReset()||(e.retryOnMount=!1))},Oa=e=>{Fi.useEffect((()=>{e.clearReset()}),[e])},_a=({result:e,errorResetBoundary:t,throwOnError:n,query:r})=>e.isError&&!t.isReset()&&!e.isFetching&&r&&Sa(n,[e.error,r]),Ta=e=>{e.suspense&&"number"!=typeof e.staleTime&&(e.staleTime=1e3)},Ca=(e,t)=>e?.suspense&&t.isPending,ka=(e,t,n)=>t.fetchOptimistic(e).catch((()=>{n.clearReset()}));function Pa(e,t){return function(e,t,n){const r=zi(n),i=wa(),a=ba(),o=r.defaultQueryOptions(e);r.getDefaultOptions().queries?._experimental_beforeQuery?.(o),o._optimisticResults=i?"isRestoring":"optimistic",Ta(o),xa(o,a),Oa(a);const[s]=Fi.useState((()=>new t(r,o))),l=s.getOptimisticResult(o);if(Fi.useSyncExternalStore(Fi.useCallback((e=>{const t=i?()=>{}:s.subscribe(k.batchCalls(e));return s.updateResult(),t}),[s,i]),(()=>s.getCurrentResult()),(()=>s.getCurrentResult())),Fi.useEffect((()=>{s.setOptions(o,{listeners:!1})}),[o,s]),Ca(o,l))throw ka(o,s,a);if(_a({result:l,errorResetBoundary:a,throwOnError:o.throwOnError,query:r.getQueryCache().get(o.queryHash)}))throw l.error;return r.getDefaultOptions().queries?._experimental_afterQuery?.(o,l),o.notifyOnChangeProps?l:s.trackResult(l)}(e,da,t)}function Ra(e,t,n,r,i,a,o){try{var s=e[a](o),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,i)}const Aa=new class extends ua{get(){var e,t=this;return(e=function*(){const e=yield t.fetch("/querier.v1.QuerierService/GetProfileStats",{method:"POST",body:JSON.stringify({})}),n=yield e.json();return{hasIngestedData:n.dataIngested,oldestProfileTime:Number(n.oldestProfileTime),newestProfileTime:Number(n.newestProfileTime)}},function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function o(e){Ra(a,r,i,o,s,"next",e)}function s(e){Ra(a,r,i,o,s,"throw",e)}o(void 0)}))})()}};function Da(){const[e,t]=(0,Fi.useState)(!1),n=ua.getPyroscopeDataSources().length,{isFetching:r,error:i,stats:a}=function({enabled:e}){const{isFetching:t,error:n,data:r,refetch:i}=Pa({enabled:e,placeholderData:()=>({hasIngestedData:!0,oldestProfileTime:0,newestProfileTime:0}),queryKey:["tenant-stats"],queryFn:()=>(Aa.abort(),Aa.get())});return{isFetching:t,error:Aa.isAbortError(n)?null:n,stats:r,refetch:i}}({enabled:n>0}),o=!r&&!(null==a?void 0:a.hasIngestedData);return{data:{shouldShowLoadingPage:!i&&r,shouldShowOnboardingPage:(i||!n||o)&&!e,shouldShowNoDataSourceBanner:!n},actions:{closeModal(){t(!0)}}}}const ja=e=>({row:(0,i.css)({display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"flex-start"}),headerColumn:(0,i.css)({display:"flex",flexDirection:"column",minWidth:"120px",alignItems:"start"}),column:(0,i.css)({display:"flex",flexDirection:"column",minWidth:"120px",alignItems:"end"}),tooltip:(0,i.css)({display:"flex",color:e.colors.text.secondary,fontSize:e.typography.bodySmall.fontSize}),contentWithIcon:(0,i.css)({display:"none",[`@media ${o.styleMixins.mediaUp(e.v1.breakpoints.sm)}`]:{display:"block"}})}),Ia=e=>(0,r.formattedValueToString)((0,r.getValueFormat)("decbytes")(e)),Na=e=>(0,r.formattedValueToString)((0,r.getValueFormat)("short")(e));function La(e){const t=(0,o.useStyles2)(ja),{data:n}=e,r=Ia(n.queryImpact.totalBytesInTimeRange),i=(0,Fi.useMemo)((()=>$i().createElement("div",{"data-testid":"queryAnalysis-popup"},$i().createElement("div",{className:t.row},$i().createElement("div",{className:t.headerColumn},"Data in time range"),$i().createElement("div",{className:t.column},r),$i().createElement("div",{className:t.column}," ")),void 0!==n.queryImpact.totalQueriedSeries&&$i().createElement("div",{className:t.row},$i().createElement("div",{className:t.headerColumn},"Series in query"),$i().createElement("div",{className:t.column},Na(n.queryImpact.totalQueriedSeries)),$i().createElement("div",{className:t.column}," ")),$i().createElement("div",{className:t.row},$i().createElement("div",{className:t.headerColumn},"Deduplication"),$i().createElement("div",{className:t.column},n.queryImpact.deduplicationNeeded?"yes":"no"),$i().createElement("div",{className:t.column}," ")),$i().createElement(o.Divider,null),$i().createElement("div",{className:t.row},$i().createElement("div",{className:t.headerColumn}," "),n.queryScopes.map(((e,n)=>$i().createElement("div",{key:n,className:t.column},$i().createElement("strong",null,e.componentType))))),$i().createElement("div",{className:t.row},$i().createElement("div",{className:t.headerColumn},"Replicas"),n.queryScopes.map(((e,n)=>$i().createElement("div",{key:n,className:t.column},e.componentCount||"/")))),$i().createElement("div",{className:t.row},$i().createElement("div",{className:t.headerColumn},"Blocks"),n.queryScopes.map(((e,n)=>$i().createElement("div",{key:n,className:t.column},Na(e.blockCount)||"/")))),$i().createElement("div",{className:t.row},$i().createElement("div",{className:t.headerColumn},"Series"),n.queryScopes.map(((e,n)=>$i().createElement("div",{key:n,className:t.column},Na(e.seriesCount)||"/")))),$i().createElement("div",{className:t.row},$i().createElement("div",{className:t.headerColumn},"Profiles"),n.queryScopes.map(((e,n)=>$i().createElement("div",{key:n,className:t.column},Na(e.profileCount)||"/")))),$i().createElement("div",{className:t.row},$i().createElement("div",{className:t.headerColumn},"Samples"),n.queryScopes.map(((e,n)=>$i().createElement("div",{key:n,className:t.column},Na(e.sampleCount)||"/")))),$i().createElement("div",{className:t.row},$i().createElement("div",{className:t.headerColumn}," "),$i().createElement("div",{className:t.column}," "),$i().createElement("div",{className:t.column}," ")),$i().createElement("div",{className:t.row},$i().createElement("div",{className:t.headerColumn},"Index Store"),n.queryScopes.map(((e,n)=>$i().createElement("div",{key:n,className:t.column},Ia(e.indexBytes)||"/")))),$i().createElement("div",{className:t.row},$i().createElement("div",{className:t.headerColumn},"Profiles Store"),n.queryScopes.map(((e,n)=>$i().createElement("div",{key:n,className:t.column},Ia(e.profileBytes)||"/")))),$i().createElement("div",{className:t.row},$i().createElement("div",{className:t.headerColumn},"Symbols Store"),n.queryScopes.map(((e,n)=>$i().createElement("div",{key:n,className:t.column},Ia(e.symbolBytes)||"/")))))),[n,t,r]);return $i().createElement($i().Fragment,null,void 0!==n.queryImpact.totalBytesInTimeRange?$i().createElement(o.Toggletip,{content:i,fitContent:!0},$i().createElement("div",{className:t.tooltip,"data-testid":"queryAnalysis-tooltip"},$i().createElement("span",{className:t.contentWithIcon},"Stored data in time range: ",r)," ",$i().createElement(o.IconButton,{name:"database","aria-label":"Query info"}))):null)}var Ma,Fa,$a,Ba,Va=__webpack_require__(2688),za=__webpack_require__.n(Va),Ua=__webpack_require__(9406),qa=__webpack_require__.n(Ua),Ha=__webpack_require__(7383),Ga=__webpack_require__.n(Ha),Wa=__webpack_require__(1664),Qa=__webpack_require__.n(Wa),Ka="bodyAttributes",Ya="htmlAttributes",Xa="titleAttributes",Ja={BASE:"base",BODY:"body",HEAD:"head",HTML:"html",LINK:"link",META:"meta",NOSCRIPT:"noscript",SCRIPT:"script",STYLE:"style",TITLE:"title"},Za=(Object.keys(Ja).map((function(e){return Ja[e]})),"charset"),eo="cssText",to="href",no="http-equiv",ro="innerHTML",io="itemprop",ao="name",oo="property",so="rel",lo="src",co="target",uo={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},po="defaultTitle",ho="defer",fo="encodeSpecialCharacters",mo="onChangeClientState",go="titleTemplate",yo=Object.keys(uo).reduce((function(e,t){return e[uo[t]]=t,e}),{}),bo=[Ja.NOSCRIPT,Ja.SCRIPT,Ja.STYLE],vo="data-react-helmet",wo="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},So=function(){function e(e,t){for(var n=0;n=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n},Oo=function(e){return!1===(!(arguments.length>1&&void 0!==arguments[1])||arguments[1])?String(e):String(e).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")},_o=function(e){var t=Ro(e,Ja.TITLE),n=Ro(e,go);if(n&&t)return n.replace(/%s/g,(function(){return Array.isArray(t)?t.join(""):t}));var r=Ro(e,po);return t||r||void 0},To=function(e){return Ro(e,mo)||function(){}},Co=function(e,t){return t.filter((function(t){return void 0!==t[e]})).map((function(t){return t[e]})).reduce((function(e,t){return Eo({},e,t)}),{})},ko=function(e,t){return t.filter((function(e){return void 0!==e[Ja.BASE]})).map((function(e){return e[Ja.BASE]})).reverse().reduce((function(t,n){if(!t.length)for(var r=Object.keys(n),i=0;i=0;n--){var r=e[n];if(r.hasOwnProperty(t))return r[t]}return null},Ao=(Ma=Date.now(),function(e){var t=Date.now();t-Ma>16?(Ma=t,e(t)):setTimeout((function(){Ao(e)}),0)}),Do=function(e){return clearTimeout(e)},jo="undefined"!=typeof window?window.requestAnimationFrame&&window.requestAnimationFrame.bind(window)||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||Ao:__webpack_require__.g.requestAnimationFrame||Ao,Io="undefined"!=typeof window?window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||Do:__webpack_require__.g.cancelAnimationFrame||Do,No=function(e){return console&&"function"==typeof console.warn&&console.warn(e)},Lo=null,Mo=function(e,t){var n=e.baseTag,r=e.bodyAttributes,i=e.htmlAttributes,a=e.linkTags,o=e.metaTags,s=e.noscriptTags,l=e.onChangeClientState,c=e.scriptTags,u=e.styleTags,d=e.title,p=e.titleAttributes;Bo(Ja.BODY,r),Bo(Ja.HTML,i),$o(d,p);var h={baseTag:Vo(Ja.BASE,n),linkTags:Vo(Ja.LINK,a),metaTags:Vo(Ja.META,o),noscriptTags:Vo(Ja.NOSCRIPT,s),scriptTags:Vo(Ja.SCRIPT,c),styleTags:Vo(Ja.STYLE,u)},f={},m={};Object.keys(h).forEach((function(e){var t=h[e],n=t.newTags,r=t.oldTags;n.length&&(f[e]=n),r.length&&(m[e]=h[e].oldTags)})),t&&t(),l(e,f,m)},Fo=function(e){return Array.isArray(e)?e.join(""):e},$o=function(e,t){void 0!==e&&document.title!==e&&(document.title=Fo(e)),Bo(Ja.TITLE,t)},Bo=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var r=n.getAttribute(vo),i=r?r.split(","):[],a=[].concat(i),o=Object.keys(t),s=0;s=0;d--)n.removeAttribute(a[d]);i.length===a.length?n.removeAttribute(vo):n.getAttribute(vo)!==o.join(",")&&n.setAttribute(vo,o.join(","))}},Vo=function(e,t){var n=document.head||document.querySelector(Ja.HEAD),r=n.querySelectorAll(e+"["+vo+"]"),i=Array.prototype.slice.call(r),a=[],o=void 0;return t&&t.length&&t.forEach((function(t){var n=document.createElement(e);for(var r in t)if(t.hasOwnProperty(r))if(r===ro)n.innerHTML=t.innerHTML;else if(r===eo)n.styleSheet?n.styleSheet.cssText=t.cssText:n.appendChild(document.createTextNode(t.cssText));else{var s=void 0===t[r]?"":t[r];n.setAttribute(r,s)}n.setAttribute(vo,"true"),i.some((function(e,t){return o=t,n.isEqualNode(e)}))?i.splice(o,1):a.push(n)})),i.forEach((function(e){return e.parentNode.removeChild(e)})),a.forEach((function(e){return n.appendChild(e)})),{oldTags:i,newTags:a}},zo=function(e){return Object.keys(e).reduce((function(t,n){var r=void 0!==e[n]?n+'="'+e[n]+'"':""+n;return t?t+" "+r:r}),"")},Uo=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.keys(e).reduce((function(t,n){return t[uo[n]||n]=e[n],t}),t)},qo=function(e,t,n){switch(e){case Ja.TITLE:return{toComponent:function(){return e=t.title,n=t.titleAttributes,(r={key:e})[vo]=!0,i=Uo(n,r),[$i().createElement(Ja.TITLE,i,e)];var e,n,r,i},toString:function(){return function(e,t,n,r){var i=zo(n),a=Fo(t);return i?"<"+e+" "+vo+'="true" '+i+">"+Oo(a,r)+"":"<"+e+" "+vo+'="true">'+Oo(a,r)+""}(e,t.title,t.titleAttributes,n)}};case Ka:case Ya:return{toComponent:function(){return Uo(t)},toString:function(){return zo(t)}};default:return{toComponent:function(){return function(e,t){return t.map((function(t,n){var r,i=((r={key:n})[vo]=!0,r);return Object.keys(t).forEach((function(e){var n=uo[e]||e;if(n===ro||n===eo){var r=t.innerHTML||t.cssText;i.dangerouslySetInnerHTML={__html:r}}else i[n]=t[e]})),$i().createElement(e,i)}))}(e,t)},toString:function(){return function(e,t,n){return t.reduce((function(t,r){var i=Object.keys(r).filter((function(e){return!(e===ro||e===eo)})).reduce((function(e,t){var i=void 0===r[t]?t:t+'="'+Oo(r[t],n)+'"';return e?e+" "+i:i}),""),a=r.innerHTML||r.cssText||"",o=-1===bo.indexOf(e);return t+"<"+e+" "+vo+'="true" '+i+(o?"/>":">"+a+"")}),"")}(e,t,n)}}}},Ho=function(e){var t=e.baseTag,n=e.bodyAttributes,r=e.encode,i=e.htmlAttributes,a=e.linkTags,o=e.metaTags,s=e.noscriptTags,l=e.scriptTags,c=e.styleTags,u=e.title,d=void 0===u?"":u,p=e.titleAttributes;return{base:qo(Ja.BASE,t,r),bodyAttributes:qo(Ka,n,r),htmlAttributes:qo(Ya,i,r),link:qo(Ja.LINK,a,r),meta:qo(Ja.META,o,r),noscript:qo(Ja.NOSCRIPT,s,r),script:qo(Ja.SCRIPT,l,r),style:qo(Ja.STYLE,c,r),title:qo(Ja.TITLE,{title:d,titleAttributes:p},r)}},Go=qa()((function(e){return{baseTag:ko([to,co],e),bodyAttributes:Co(Ka,e),defer:Ro(e,ho),encode:Ro(e,fo),htmlAttributes:Co(Ya,e),linkTags:Po(Ja.LINK,[so,to],e),metaTags:Po(Ja.META,[ao,Za,no,oo,io],e),noscriptTags:Po(Ja.NOSCRIPT,[ro],e),onChangeClientState:To(e),scriptTags:Po(Ja.SCRIPT,[lo,ro],e),styleTags:Po(Ja.STYLE,[eo],e),title:_o(e),titleAttributes:Co(Xa,e)}}),(function(e){Lo&&Io(Lo),e.defer?Lo=jo((function(){Mo(e,(function(){Lo=null}))})):(Mo(e),Lo=null)}),Ho)((function(){return null})),Wo=(Fa=Go,Ba=$a=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.shouldComponentUpdate=function(e){return!Ga()(this.props,e)},t.prototype.mapNestedChildrenToProps=function(e,t){if(!t)return null;switch(e.type){case Ja.SCRIPT:case Ja.NOSCRIPT:return{innerHTML:t};case Ja.STYLE:return{cssText:t}}throw new Error("<"+e.type+" /> elements are self-closing and can not contain children. Refer to our API for more information.")},t.prototype.flattenArrayTypeChildren=function(e){var t,n=e.child,r=e.arrayTypeChildren,i=e.newChildProps,a=e.nestedChildren;return Eo({},r,((t={})[n.type]=[].concat(r[n.type]||[],[Eo({},i,this.mapNestedChildrenToProps(n,a))]),t))},t.prototype.mapObjectTypeChildren=function(e){var t,n,r=e.child,i=e.newProps,a=e.newChildProps,o=e.nestedChildren;switch(r.type){case Ja.TITLE:return Eo({},i,((t={})[r.type]=o,t.titleAttributes=Eo({},a),t));case Ja.BODY:return Eo({},i,{bodyAttributes:Eo({},a)});case Ja.HTML:return Eo({},i,{htmlAttributes:Eo({},a)})}return Eo({},i,((n={})[r.type]=Eo({},a),n))},t.prototype.mapArrayTypeChildrenToProps=function(e,t){var n=Eo({},t);return Object.keys(e).forEach((function(t){var r;n=Eo({},n,((r={})[t]=e[t],r))})),n},t.prototype.warnOnInvalidChildren=function(e,t){return!0},t.prototype.mapChildrenToProps=function(e,t){var n=this,r={};return $i().Children.forEach(e,(function(e){if(e&&e.props){var i=e.props,a=i.children,o=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.keys(e).reduce((function(t,n){return t[yo[n]||n]=e[n],t}),t)}(xo(i,["children"]));switch(n.warnOnInvalidChildren(e,a),e.type){case Ja.LINK:case Ja.META:case Ja.NOSCRIPT:case Ja.SCRIPT:case Ja.STYLE:r=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:r,newChildProps:o,nestedChildren:a});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:o,nestedChildren:a})}}})),t=this.mapArrayTypeChildrenToProps(r,t)},t.prototype.render=function(){var e=this.props,t=e.children,n=xo(e,["children"]),r=Eo({},n);return t&&(r=this.mapChildrenToProps(t,r)),$i().createElement(Fa,r)},So(t,null,[{key:"canUseDOM",set:function(e){Fa.canUseDOM=e}}]),t}($i().Component),$a.propTypes={base:za().object,bodyAttributes:za().object,children:za().oneOfType([za().arrayOf(za().node),za().node]),defaultTitle:za().string,defer:za().bool,encodeSpecialCharacters:za().bool,htmlAttributes:za().object,link:za().arrayOf(za().object),meta:za().arrayOf(za().object),noscript:za().arrayOf(za().object),onChangeClientState:za().func,script:za().arrayOf(za().object),style:za().arrayOf(za().object),title:za().string,titleAttributes:za().object,titleTemplate:za().string},$a.defaultProps={defer:!0,encodeSpecialCharacters:!0},$a.peek=Fa.peek,$a.rewind=function(){var e=Fa.rewind();return e||(e=Ho({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}})),e},Ba);Wo.renderStatic=Wo.rewind;function Qo({size:e}){const t=(0,o.useStyles2)(Yo);return $i().createElement("img",{className:(0,i.cx)(t.logo,e),src:"public/plugins/grafana-pyroscope-app/img/logo.svg"})}const Ko=$i().memo(Qo),Yo=()=>({logo:i.css` +define(["@emotion/css","@grafana/data","@grafana/runtime","@grafana/ui","d3","lodash","module","react","react-dom","react-router","rxjs"],((__WEBPACK_EXTERNAL_MODULE__6089__,__WEBPACK_EXTERNAL_MODULE__7781__,__WEBPACK_EXTERNAL_MODULE__8531__,__WEBPACK_EXTERNAL_MODULE__2007__,__WEBPACK_EXTERNAL_MODULE__4201__,__WEBPACK_EXTERNAL_MODULE__3241__,__WEBPACK_EXTERNAL_MODULE__1308__,__WEBPACK_EXTERNAL_MODULE__5959__,__WEBPACK_EXTERNAL_MODULE__8398__,__WEBPACK_EXTERNAL_MODULE__1159__,__WEBPACK_EXTERNAL_MODULE__1269__)=>(()=>{var __webpack_modules__={404:(e,t,n)=>{const r=Symbol("SemVer ANY");class i{static get ANY(){return r}constructor(e,t){if(t=a(t),e instanceof i){if(e.loose===!!t.loose)return e;e=e.value}e=e.trim().split(/\s+/).join(" "),c("comparator",e,t),this.options=t,this.loose=!!t.loose,this.parse(e),this.semver===r?this.value="":this.value=this.operator+this.semver.version,c("comp",this)}parse(e){const t=this.options.loose?o[s.COMPARATORLOOSE]:o[s.COMPARATOR],n=e.match(t);if(!n)throw new TypeError(`Invalid comparator: ${e}`);this.operator=void 0!==n[1]?n[1]:"","="===this.operator&&(this.operator=""),n[2]?this.semver=new u(n[2],this.options.loose):this.semver=r}toString(){return this.value}test(e){if(c("Comparator.test",e,this.options.loose),this.semver===r||e===r)return!0;if("string"==typeof e)try{e=new u(e,this.options)}catch(e){return!1}return l(e,this.operator,this.semver,this.options)}intersects(e,t){if(!(e instanceof i))throw new TypeError("a Comparator is required");return""===this.operator?""===this.value||new d(e.value,t).test(this.value):""===e.operator?""===e.value||new d(this.value,t).test(e.semver):(!(t=a(t)).includePrerelease||"<0.0.0-0"!==this.value&&"<0.0.0-0"!==e.value)&&(!(!t.includePrerelease&&(this.value.startsWith("<0.0.0")||e.value.startsWith("<0.0.0")))&&(!(!this.operator.startsWith(">")||!e.operator.startsWith(">"))||(!(!this.operator.startsWith("<")||!e.operator.startsWith("<"))||(!(this.semver.version!==e.semver.version||!this.operator.includes("=")||!e.operator.includes("="))||(!!(l(this.semver,"<",e.semver,t)&&this.operator.startsWith(">")&&e.operator.startsWith("<"))||!!(l(this.semver,">",e.semver,t)&&this.operator.startsWith("<")&&e.operator.startsWith(">")))))))}}e.exports=i;const a=n(9287),{safeRe:o,t:s}=n(978),l=n(6323),c=n(116),u=n(8152),d=n(1451)},1451:(e,t,n)=>{const r=/\s+/g;class i{constructor(e,t){if(t=o(t),e instanceof i)return e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease?e:new i(e.raw,t);if(e instanceof s)return this.raw=e.value,this.set=[[e]],this.formatted=void 0,this;if(this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease,this.raw=e.trim().replace(r," "),this.set=this.raw.split("||").map((e=>this.parseRange(e.trim()))).filter((e=>e.length)),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){const e=this.set[0];if(this.set=this.set.filter((e=>!y(e[0]))),0===this.set.length)this.set=[e];else if(this.set.length>1)for(const e of this.set)if(1===e.length&&b(e[0])){this.set=[e];break}}this.formatted=void 0}get range(){if(void 0===this.formatted){this.formatted="";for(let e=0;e0&&(this.formatted+="||");const t=this.set[e];for(let e=0;e0&&(this.formatted+=" "),this.formatted+=t[e].toString().trim()}}return this.formatted}format(){return this.range}toString(){return this.range}parseRange(e){const t=((this.options.includePrerelease&&m)|(this.options.loose&&g))+":"+e,n=a.get(t);if(n)return n;const r=this.options.loose,i=r?u[d.HYPHENRANGELOOSE]:u[d.HYPHENRANGE];e=e.replace(i,R(this.options.includePrerelease)),l("hyphen replace",e),e=e.replace(u[d.COMPARATORTRIM],p),l("comparator trim",e),e=e.replace(u[d.TILDETRIM],h),l("tilde trim",e),e=e.replace(u[d.CARETTRIM],f),l("caret trim",e);let o=e.split(" ").map((e=>w(e,this.options))).join(" ").split(/\s+/).map((e=>P(e,this.options)));r&&(o=o.filter((e=>(l("loose invalid filter",e,this.options),!!e.match(u[d.COMPARATORLOOSE]))))),l("range list",o);const c=new Map,b=o.map((e=>new s(e,this.options)));for(const e of b){if(y(e))return[e];c.set(e.value,e)}c.size>1&&c.has("")&&c.delete("");const v=[...c.values()];return a.set(t,v),v}intersects(e,t){if(!(e instanceof i))throw new TypeError("a Range is required");return this.set.some((n=>v(n,t)&&e.set.some((e=>v(e,t)&&n.every((n=>e.every((e=>n.intersects(e,t)))))))))}test(e){if(!e)return!1;if("string"==typeof e)try{e=new c(e,this.options)}catch(e){return!1}for(let t=0;t"<0.0.0-0"===e.value,b=e=>""===e.value,v=(e,t)=>{let n=!0;const r=e.slice();let i=r.pop();for(;n&&r.length;)n=r.every((e=>i.intersects(e,t))),i=r.pop();return n},w=(e,t)=>(l("comp",e,t),e=O(e,t),l("caret",e),e=E(e,t),l("tildes",e),e=T(e,t),l("xrange",e),e=k(e,t),l("stars",e),e),S=e=>!e||"x"===e.toLowerCase()||"*"===e,E=(e,t)=>e.trim().split(/\s+/).map((e=>x(e,t))).join(" "),x=(e,t)=>{const n=t.loose?u[d.TILDELOOSE]:u[d.TILDE];return e.replace(n,((t,n,r,i,a)=>{let o;return l("tilde",e,t,n,r,i,a),S(n)?o="":S(r)?o=`>=${n}.0.0 <${+n+1}.0.0-0`:S(i)?o=`>=${n}.${r}.0 <${n}.${+r+1}.0-0`:a?(l("replaceTilde pr",a),o=`>=${n}.${r}.${i}-${a} <${n}.${+r+1}.0-0`):o=`>=${n}.${r}.${i} <${n}.${+r+1}.0-0`,l("tilde return",o),o}))},O=(e,t)=>e.trim().split(/\s+/).map((e=>_(e,t))).join(" "),_=(e,t)=>{l("caret",e,t);const n=t.loose?u[d.CARETLOOSE]:u[d.CARET],r=t.includePrerelease?"-0":"";return e.replace(n,((t,n,i,a,o)=>{let s;return l("caret",e,t,n,i,a,o),S(n)?s="":S(i)?s=`>=${n}.0.0${r} <${+n+1}.0.0-0`:S(a)?s="0"===n?`>=${n}.${i}.0${r} <${n}.${+i+1}.0-0`:`>=${n}.${i}.0${r} <${+n+1}.0.0-0`:o?(l("replaceCaret pr",o),s="0"===n?"0"===i?`>=${n}.${i}.${a}-${o} <${n}.${i}.${+a+1}-0`:`>=${n}.${i}.${a}-${o} <${n}.${+i+1}.0-0`:`>=${n}.${i}.${a}-${o} <${+n+1}.0.0-0`):(l("no pr"),s="0"===n?"0"===i?`>=${n}.${i}.${a}${r} <${n}.${i}.${+a+1}-0`:`>=${n}.${i}.${a}${r} <${n}.${+i+1}.0-0`:`>=${n}.${i}.${a} <${+n+1}.0.0-0`),l("caret return",s),s}))},T=(e,t)=>(l("replaceXRanges",e,t),e.split(/\s+/).map((e=>C(e,t))).join(" ")),C=(e,t)=>{e=e.trim();const n=t.loose?u[d.XRANGELOOSE]:u[d.XRANGE];return e.replace(n,((n,r,i,a,o,s)=>{l("xRange",e,n,r,i,a,o,s);const c=S(i),u=c||S(a),d=u||S(o),p=d;return"="===r&&p&&(r=""),s=t.includePrerelease?"-0":"",c?n=">"===r||"<"===r?"<0.0.0-0":"*":r&&p?(u&&(a=0),o=0,">"===r?(r=">=",u?(i=+i+1,a=0,o=0):(a=+a+1,o=0)):"<="===r&&(r="<",u?i=+i+1:a=+a+1),"<"===r&&(s="-0"),n=`${r+i}.${a}.${o}${s}`):u?n=`>=${i}.0.0${s} <${+i+1}.0.0-0`:d&&(n=`>=${i}.${a}.0${s} <${i}.${+a+1}.0-0`),l("xRange return",n),n}))},k=(e,t)=>(l("replaceStars",e,t),e.trim().replace(u[d.STAR],"")),P=(e,t)=>(l("replaceGTE0",e,t),e.trim().replace(u[t.includePrerelease?d.GTE0PRE:d.GTE0],"")),R=e=>(t,n,r,i,a,o,s,l,c,u,d,p)=>`${n=S(r)?"":S(i)?`>=${r}.0.0${e?"-0":""}`:S(a)?`>=${r}.${i}.0${e?"-0":""}`:o?`>=${n}`:`>=${n}${e?"-0":""}`} ${l=S(c)?"":S(u)?`<${+c+1}.0.0-0`:S(d)?`<${c}.${+u+1}.0-0`:p?`<=${c}.${u}.${d}-${p}`:e?`<${c}.${u}.${+d+1}-0`:`<=${l}`}`.trim(),A=(e,t,n)=>{for(let n=0;n0){const r=e[n].semver;if(r.major===t.major&&r.minor===t.minor&&r.patch===t.patch)return!0}return!1}return!0}},8152:(e,t,n)=>{const r=n(116),{MAX_LENGTH:i,MAX_SAFE_INTEGER:a}=n(3486),{safeRe:o,safeSrc:s,t:l}=n(978),c=n(9287),{compareIdentifiers:u}=n(175);class d{constructor(e,t){if(t=c(t),e instanceof d){if(e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease)return e;e=e.version}else if("string"!=typeof e)throw new TypeError(`Invalid version. Must be a string. Got type "${typeof e}".`);if(e.length>i)throw new TypeError(`version is longer than ${i} characters`);r("SemVer",e,t),this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease;const n=e.trim().match(t.loose?o[l.LOOSE]:o[l.FULL]);if(!n)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+n[1],this.minor=+n[2],this.patch=+n[3],this.major>a||this.major<0)throw new TypeError("Invalid major version");if(this.minor>a||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>a||this.patch<0)throw new TypeError("Invalid patch version");n[4]?this.prerelease=n[4].split(".").map((e=>{if(/^[0-9]+$/.test(e)){const t=+e;if(t>=0&&t=0;)"number"==typeof this.prerelease[r]&&(this.prerelease[r]++,r=-2);if(-1===r){if(t===this.prerelease.join(".")&&!1===n)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(e)}}if(t){let r=[t,e];!1===n&&(r=[t]),0===u(this.prerelease[0],t)?isNaN(this.prerelease[1])&&(this.prerelease=r):this.prerelease=r}break}default:throw new Error(`invalid increment argument: ${e}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}}e.exports=d},5466:(e,t,n)=>{const r=n(8948);e.exports=(e,t)=>{const n=r(e.trim().replace(/^[=v]+/,""),t);return n?n.version:null}},6323:(e,t,n)=>{const r=n(957),i=n(6619),a=n(1888),o=n(4333),s=n(4647),l=n(5428);e.exports=(e,t,n,c)=>{switch(t){case"===":return"object"==typeof e&&(e=e.version),"object"==typeof n&&(n=n.version),e===n;case"!==":return"object"==typeof e&&(e=e.version),"object"==typeof n&&(n=n.version),e!==n;case"":case"=":case"==":return r(e,n,c);case"!=":return i(e,n,c);case">":return a(e,n,c);case">=":return o(e,n,c);case"<":return s(e,n,c);case"<=":return l(e,n,c);default:throw new TypeError(`Invalid operator: ${t}`)}}},3494:(e,t,n)=>{const r=n(8152),i=n(8948),{safeRe:a,t:o}=n(978);e.exports=(e,t)=>{if(e instanceof r)return e;if("number"==typeof e&&(e=String(e)),"string"!=typeof e)return null;let n=null;if((t=t||{}).rtl){const r=t.includePrerelease?a[o.COERCERTLFULL]:a[o.COERCERTL];let i;for(;(i=r.exec(e))&&(!n||n.index+n[0].length!==e.length);)n&&i.index+i[0].length===n.index+n[0].length||(n=i),r.lastIndex=i.index+i[1].length+i[2].length;r.lastIndex=-1}else n=e.match(t.includePrerelease?a[o.COERCEFULL]:a[o.COERCE]);if(null===n)return null;const s=n[2],l=n[3]||"0",c=n[4]||"0",u=t.includePrerelease&&n[5]?`-${n[5]}`:"",d=t.includePrerelease&&n[6]?`+${n[6]}`:"";return i(`${s}.${l}.${c}${u}${d}`,t)}},9329:(e,t,n)=>{const r=n(8152);e.exports=(e,t,n)=>{const i=new r(e,n),a=new r(t,n);return i.compare(a)||i.compareBuild(a)}},6175:(e,t,n)=>{const r=n(7956);e.exports=(e,t)=>r(e,t,!0)},7956:(e,t,n)=>{const r=n(8152);e.exports=(e,t,n)=>new r(e,n).compare(new r(t,n))},5316:(e,t,n)=>{const r=n(8948);e.exports=(e,t)=>{const n=r(e,null,!0),i=r(t,null,!0),a=n.compare(i);if(0===a)return null;const o=a>0,s=o?n:i,l=o?i:n,c=!!s.prerelease.length;if(!!l.prerelease.length&&!c){if(!l.patch&&!l.minor)return"major";if(0===l.compareMain(s))return l.minor&&!l.patch?"minor":"patch"}const u=c?"pre":"";return n.major!==i.major?u+"major":n.minor!==i.minor?u+"minor":n.patch!==i.patch?u+"patch":"prerelease"}},957:(e,t,n)=>{const r=n(7956);e.exports=(e,t,n)=>0===r(e,t,n)},1888:(e,t,n)=>{const r=n(7956);e.exports=(e,t,n)=>r(e,t,n)>0},4333:(e,t,n)=>{const r=n(7956);e.exports=(e,t,n)=>r(e,t,n)>=0},643:(e,t,n)=>{const r=n(8152);e.exports=(e,t,n,i,a)=>{"string"==typeof n&&(a=i,i=n,n=void 0);try{return new r(e instanceof r?e.version:e,n).inc(t,i,a).version}catch(e){return null}}},4647:(e,t,n)=>{const r=n(7956);e.exports=(e,t,n)=>r(e,t,n)<0},5428:(e,t,n)=>{const r=n(7956);e.exports=(e,t,n)=>r(e,t,n)<=0},6038:(e,t,n)=>{const r=n(8152);e.exports=(e,t)=>new r(e,t).major},9922:(e,t,n)=>{const r=n(8152);e.exports=(e,t)=>new r(e,t).minor},6619:(e,t,n)=>{const r=n(7956);e.exports=(e,t,n)=>0!==r(e,t,n)},8948:(e,t,n)=>{const r=n(8152);e.exports=(e,t,n=!1)=>{if(e instanceof r)return e;try{return new r(e,t)}catch(e){if(!n)return null;throw e}}},2481:(e,t,n)=>{const r=n(8152);e.exports=(e,t)=>new r(e,t).patch},6877:(e,t,n)=>{const r=n(8948);e.exports=(e,t)=>{const n=r(e,t);return n&&n.prerelease.length?n.prerelease:null}},2862:(e,t,n)=>{const r=n(7956);e.exports=(e,t,n)=>r(t,e,n)},5601:(e,t,n)=>{const r=n(9329);e.exports=(e,t)=>e.sort(((e,n)=>r(n,e,t)))},5034:(e,t,n)=>{const r=n(1451);e.exports=(e,t,n)=>{try{t=new r(t,n)}catch(e){return!1}return t.test(e)}},987:(e,t,n)=>{const r=n(9329);e.exports=(e,t)=>e.sort(((e,n)=>r(e,n,t)))},4109:(e,t,n)=>{const r=n(8948);e.exports=(e,t)=>{const n=r(e,t);return n?n.version:null}},6977:(e,t,n)=>{const r=n(978),i=n(3486),a=n(8152),o=n(175),s=n(8948),l=n(4109),c=n(5466),u=n(643),d=n(5316),p=n(6038),h=n(9922),f=n(2481),m=n(6877),g=n(7956),y=n(2862),b=n(6175),v=n(9329),w=n(987),S=n(5601),E=n(1888),x=n(4647),O=n(957),_=n(6619),T=n(4333),C=n(5428),k=n(6323),P=n(3494),R=n(404),A=n(1451),D=n(5034),j=n(8427),I=n(2432),N=n(5210),L=n(1505),M=n(6950),F=n(6055),$=n(3519),B=n(9914),V=n(344),z=n(8921),U=n(1428);e.exports={parse:s,valid:l,clean:c,inc:u,diff:d,major:p,minor:h,patch:f,prerelease:m,compare:g,rcompare:y,compareLoose:b,compareBuild:v,sort:w,rsort:S,gt:E,lt:x,eq:O,neq:_,gte:T,lte:C,cmp:k,coerce:P,Comparator:R,Range:A,satisfies:D,toComparators:j,maxSatisfying:I,minSatisfying:N,minVersion:L,validRange:M,outside:F,gtr:$,ltr:B,intersects:V,simplifyRange:z,subset:U,SemVer:a,re:r.re,src:r.src,tokens:r.t,SEMVER_SPEC_VERSION:i.SEMVER_SPEC_VERSION,RELEASE_TYPES:i.RELEASE_TYPES,compareIdentifiers:o.compareIdentifiers,rcompareIdentifiers:o.rcompareIdentifiers}},3486:e=>{const t=Number.MAX_SAFE_INTEGER||9007199254740991;e.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:16,MAX_SAFE_BUILD_LENGTH:250,MAX_SAFE_INTEGER:t,RELEASE_TYPES:["major","premajor","minor","preminor","patch","prepatch","prerelease"],SEMVER_SPEC_VERSION:"2.0.0",FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}},116:e=>{const t="object"==typeof process&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...e)=>console.error("SEMVER",...e):()=>{};e.exports=t},175:e=>{const t=/^[0-9]+$/,n=(e,n)=>{const r=t.test(e),i=t.test(n);return r&&i&&(e=+e,n=+n),e===n?0:r&&!i?-1:i&&!r?1:en(t,e)}},3974:e=>{e.exports=class{constructor(){this.max=1e3,this.map=new Map}get(e){const t=this.map.get(e);return void 0===t?void 0:(this.map.delete(e),this.map.set(e,t),t)}delete(e){return this.map.delete(e)}set(e,t){if(!this.delete(e)&&void 0!==t){if(this.map.size>=this.max){const e=this.map.keys().next().value;this.delete(e)}this.map.set(e,t)}return this}}},9287:e=>{const t=Object.freeze({loose:!0}),n=Object.freeze({});e.exports=e=>e?"object"!=typeof e?t:e:n},978:(e,t,n)=>{const{MAX_SAFE_COMPONENT_LENGTH:r,MAX_SAFE_BUILD_LENGTH:i,MAX_LENGTH:a}=n(3486),o=n(116),s=(t=e.exports={}).re=[],l=t.safeRe=[],c=t.src=[],u=t.safeSrc=[],d=t.t={};let p=0;const h="[a-zA-Z0-9-]",f=[["\\s",1],["\\d",a],[h,i]],m=(e,t,n)=>{const r=(e=>{for(const[t,n]of f)e=e.split(`${t}*`).join(`${t}{0,${n}}`).split(`${t}+`).join(`${t}{1,${n}}`);return e})(t),i=p++;o(e,i,t),d[e]=i,c[i]=t,u[i]=r,s[i]=new RegExp(t,n?"g":void 0),l[i]=new RegExp(r,n?"g":void 0)};m("NUMERICIDENTIFIER","0|[1-9]\\d*"),m("NUMERICIDENTIFIERLOOSE","\\d+"),m("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${h}*`),m("MAINVERSION",`(${c[d.NUMERICIDENTIFIER]})\\.(${c[d.NUMERICIDENTIFIER]})\\.(${c[d.NUMERICIDENTIFIER]})`),m("MAINVERSIONLOOSE",`(${c[d.NUMERICIDENTIFIERLOOSE]})\\.(${c[d.NUMERICIDENTIFIERLOOSE]})\\.(${c[d.NUMERICIDENTIFIERLOOSE]})`),m("PRERELEASEIDENTIFIER",`(?:${c[d.NUMERICIDENTIFIER]}|${c[d.NONNUMERICIDENTIFIER]})`),m("PRERELEASEIDENTIFIERLOOSE",`(?:${c[d.NUMERICIDENTIFIERLOOSE]}|${c[d.NONNUMERICIDENTIFIER]})`),m("PRERELEASE",`(?:-(${c[d.PRERELEASEIDENTIFIER]}(?:\\.${c[d.PRERELEASEIDENTIFIER]})*))`),m("PRERELEASELOOSE",`(?:-?(${c[d.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${c[d.PRERELEASEIDENTIFIERLOOSE]})*))`),m("BUILDIDENTIFIER",`${h}+`),m("BUILD",`(?:\\+(${c[d.BUILDIDENTIFIER]}(?:\\.${c[d.BUILDIDENTIFIER]})*))`),m("FULLPLAIN",`v?${c[d.MAINVERSION]}${c[d.PRERELEASE]}?${c[d.BUILD]}?`),m("FULL",`^${c[d.FULLPLAIN]}$`),m("LOOSEPLAIN",`[v=\\s]*${c[d.MAINVERSIONLOOSE]}${c[d.PRERELEASELOOSE]}?${c[d.BUILD]}?`),m("LOOSE",`^${c[d.LOOSEPLAIN]}$`),m("GTLT","((?:<|>)?=?)"),m("XRANGEIDENTIFIERLOOSE",`${c[d.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),m("XRANGEIDENTIFIER",`${c[d.NUMERICIDENTIFIER]}|x|X|\\*`),m("XRANGEPLAIN",`[v=\\s]*(${c[d.XRANGEIDENTIFIER]})(?:\\.(${c[d.XRANGEIDENTIFIER]})(?:\\.(${c[d.XRANGEIDENTIFIER]})(?:${c[d.PRERELEASE]})?${c[d.BUILD]}?)?)?`),m("XRANGEPLAINLOOSE",`[v=\\s]*(${c[d.XRANGEIDENTIFIERLOOSE]})(?:\\.(${c[d.XRANGEIDENTIFIERLOOSE]})(?:\\.(${c[d.XRANGEIDENTIFIERLOOSE]})(?:${c[d.PRERELEASELOOSE]})?${c[d.BUILD]}?)?)?`),m("XRANGE",`^${c[d.GTLT]}\\s*${c[d.XRANGEPLAIN]}$`),m("XRANGELOOSE",`^${c[d.GTLT]}\\s*${c[d.XRANGEPLAINLOOSE]}$`),m("COERCEPLAIN",`(^|[^\\d])(\\d{1,${r}})(?:\\.(\\d{1,${r}}))?(?:\\.(\\d{1,${r}}))?`),m("COERCE",`${c[d.COERCEPLAIN]}(?:$|[^\\d])`),m("COERCEFULL",c[d.COERCEPLAIN]+`(?:${c[d.PRERELEASE]})?`+`(?:${c[d.BUILD]})?(?:$|[^\\d])`),m("COERCERTL",c[d.COERCE],!0),m("COERCERTLFULL",c[d.COERCEFULL],!0),m("LONETILDE","(?:~>?)"),m("TILDETRIM",`(\\s*)${c[d.LONETILDE]}\\s+`,!0),t.tildeTrimReplace="$1~",m("TILDE",`^${c[d.LONETILDE]}${c[d.XRANGEPLAIN]}$`),m("TILDELOOSE",`^${c[d.LONETILDE]}${c[d.XRANGEPLAINLOOSE]}$`),m("LONECARET","(?:\\^)"),m("CARETTRIM",`(\\s*)${c[d.LONECARET]}\\s+`,!0),t.caretTrimReplace="$1^",m("CARET",`^${c[d.LONECARET]}${c[d.XRANGEPLAIN]}$`),m("CARETLOOSE",`^${c[d.LONECARET]}${c[d.XRANGEPLAINLOOSE]}$`),m("COMPARATORLOOSE",`^${c[d.GTLT]}\\s*(${c[d.LOOSEPLAIN]})$|^$`),m("COMPARATOR",`^${c[d.GTLT]}\\s*(${c[d.FULLPLAIN]})$|^$`),m("COMPARATORTRIM",`(\\s*)${c[d.GTLT]}\\s*(${c[d.LOOSEPLAIN]}|${c[d.XRANGEPLAIN]})`,!0),t.comparatorTrimReplace="$1$2$3",m("HYPHENRANGE",`^\\s*(${c[d.XRANGEPLAIN]})\\s+-\\s+(${c[d.XRANGEPLAIN]})\\s*$`),m("HYPHENRANGELOOSE",`^\\s*(${c[d.XRANGEPLAINLOOSE]})\\s+-\\s+(${c[d.XRANGEPLAINLOOSE]})\\s*$`),m("STAR","(<|>)?=?\\s*\\*"),m("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),m("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")},3519:(e,t,n)=>{const r=n(6055);e.exports=(e,t,n)=>r(e,t,">",n)},344:(e,t,n)=>{const r=n(1451);e.exports=(e,t,n)=>(e=new r(e,n),t=new r(t,n),e.intersects(t,n))},9914:(e,t,n)=>{const r=n(6055);e.exports=(e,t,n)=>r(e,t,"<",n)},2432:(e,t,n)=>{const r=n(8152),i=n(1451);e.exports=(e,t,n)=>{let a=null,o=null,s=null;try{s=new i(t,n)}catch(e){return null}return e.forEach((e=>{s.test(e)&&(a&&-1!==o.compare(e)||(a=e,o=new r(a,n)))})),a}},5210:(e,t,n)=>{const r=n(8152),i=n(1451);e.exports=(e,t,n)=>{let a=null,o=null,s=null;try{s=new i(t,n)}catch(e){return null}return e.forEach((e=>{s.test(e)&&(a&&1!==o.compare(e)||(a=e,o=new r(a,n)))})),a}},1505:(e,t,n)=>{const r=n(8152),i=n(1451),a=n(1888);e.exports=(e,t)=>{e=new i(e,t);let n=new r("0.0.0");if(e.test(n))return n;if(n=new r("0.0.0-0"),e.test(n))return n;n=null;for(let t=0;t{const t=new r(e.semver.version);switch(e.operator){case">":0===t.prerelease.length?t.patch++:t.prerelease.push(0),t.raw=t.format();case"":case">=":o&&!a(t,o)||(o=t);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${e.operator}`)}})),!o||n&&!a(n,o)||(n=o)}return n&&e.test(n)?n:null}},6055:(e,t,n)=>{const r=n(8152),i=n(404),{ANY:a}=i,o=n(1451),s=n(5034),l=n(1888),c=n(4647),u=n(5428),d=n(4333);e.exports=(e,t,n,p)=>{let h,f,m,g,y;switch(e=new r(e,p),t=new o(t,p),n){case">":h=l,f=u,m=c,g=">",y=">=";break;case"<":h=c,f=d,m=l,g="<",y="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(s(e,t,p))return!1;for(let n=0;n{e.semver===a&&(e=new i(">=0.0.0")),o=o||e,s=s||e,h(e.semver,o.semver,p)?o=e:m(e.semver,s.semver,p)&&(s=e)})),o.operator===g||o.operator===y)return!1;if((!s.operator||s.operator===g)&&f(e,s.semver))return!1;if(s.operator===y&&m(e,s.semver))return!1}return!0}},8921:(e,t,n)=>{const r=n(5034),i=n(7956);e.exports=(e,t,n)=>{const a=[];let o=null,s=null;const l=e.sort(((e,t)=>i(e,t,n)));for(const e of l){r(e,t,n)?(s=e,o||(o=e)):(s&&a.push([o,s]),s=null,o=null)}o&&a.push([o,null]);const c=[];for(const[e,t]of a)e===t?c.push(e):t||e!==l[0]?t?e===l[0]?c.push(`<=${t}`):c.push(`${e} - ${t}`):c.push(`>=${e}`):c.push("*");const u=c.join(" || "),d="string"==typeof t.raw?t.raw:String(t);return u.length{const r=n(1451),i=n(404),{ANY:a}=i,o=n(5034),s=n(7956),l=[new i(">=0.0.0-0")],c=[new i(">=0.0.0")],u=(e,t,n)=>{if(e===t)return!0;if(1===e.length&&e[0].semver===a){if(1===t.length&&t[0].semver===a)return!0;e=n.includePrerelease?l:c}if(1===t.length&&t[0].semver===a){if(n.includePrerelease)return!0;t=c}const r=new Set;let i,u,h,f,m,g,y;for(const t of e)">"===t.operator||">="===t.operator?i=d(i,t,n):"<"===t.operator||"<="===t.operator?u=p(u,t,n):r.add(t.semver);if(r.size>1)return null;if(i&&u){if(h=s(i.semver,u.semver,n),h>0)return null;if(0===h&&(">="!==i.operator||"<="!==u.operator))return null}for(const e of r){if(i&&!o(e,String(i),n))return null;if(u&&!o(e,String(u),n))return null;for(const r of t)if(!o(e,String(r),n))return!1;return!0}let b=!(!u||n.includePrerelease||!u.semver.prerelease.length)&&u.semver,v=!(!i||n.includePrerelease||!i.semver.prerelease.length)&&i.semver;b&&1===b.prerelease.length&&"<"===u.operator&&0===b.prerelease[0]&&(b=!1);for(const e of t){if(y=y||">"===e.operator||">="===e.operator,g=g||"<"===e.operator||"<="===e.operator,i)if(v&&e.semver.prerelease&&e.semver.prerelease.length&&e.semver.major===v.major&&e.semver.minor===v.minor&&e.semver.patch===v.patch&&(v=!1),">"===e.operator||">="===e.operator){if(f=d(i,e,n),f===e&&f!==i)return!1}else if(">="===i.operator&&!o(i.semver,String(e),n))return!1;if(u)if(b&&e.semver.prerelease&&e.semver.prerelease.length&&e.semver.major===b.major&&e.semver.minor===b.minor&&e.semver.patch===b.patch&&(b=!1),"<"===e.operator||"<="===e.operator){if(m=p(u,e,n),m===e&&m!==u)return!1}else if("<="===u.operator&&!o(u.semver,String(e),n))return!1;if(!e.operator&&(u||i)&&0!==h)return!1}return!(i&&g&&!u&&0!==h)&&(!(u&&y&&!i&&0!==h)&&(!v&&!b))},d=(e,t,n)=>{if(!e)return t;const r=s(e.semver,t.semver,n);return r>0?e:r<0||">"===t.operator&&">="===e.operator?t:e},p=(e,t,n)=>{if(!e)return t;const r=s(e.semver,t.semver,n);return r<0?e:r>0||"<"===t.operator&&"<="===e.operator?t:e};e.exports=(e,t,n={})=>{if(e===t)return!0;e=new r(e,n),t=new r(t,n);let i=!1;e:for(const r of e.set){for(const e of t.set){const t=u(r,e,n);if(i=i||null!==t,t)continue e}if(i)return!1}return!0}},8427:(e,t,n)=>{const r=n(1451);e.exports=(e,t)=>new r(e,t).set.map((e=>e.map((e=>e.value)).join(" ").trim().split(" ")))},6950:(e,t,n)=>{const r=n(1451);e.exports=(e,t)=>{try{return new r(e,t).range||"*"}catch(e){return null}}},6233:e=>{"use strict";e.exports=function(e,t){var n=new Array(arguments.length-1),r=0,i=2,a=!0;for(;i{"use strict";var n=t;n.length=function(e){var t=e.length;if(!t)return 0;for(var n=0;--t%4>1&&"="===e.charAt(t);)++n;return Math.ceil(3*e.length)/4-n};for(var r=new Array(64),i=new Array(123),a=0;a<64;)i[r[a]=a<26?a+65:a<52?a+71:a<62?a-4:a-59|43]=a++;n.encode=function(e,t,n){for(var i,a=null,o=[],s=0,l=0;t>2],i=(3&c)<<4,l=1;break;case 1:o[s++]=r[i|c>>4],i=(15&c)<<2,l=2;break;case 2:o[s++]=r[i|c>>6],o[s++]=r[63&c],l=0}s>8191&&((a||(a=[])).push(String.fromCharCode.apply(String,o)),s=0)}return l&&(o[s++]=r[i],o[s++]=61,1===l&&(o[s++]=61)),a?(s&&a.push(String.fromCharCode.apply(String,o.slice(0,s))),a.join("")):String.fromCharCode.apply(String,o.slice(0,s))};var o="invalid encoding";n.decode=function(e,t,n){for(var r,a=n,s=0,l=0;l1)break;if(void 0===(c=i[c]))throw Error(o);switch(s){case 0:r=c,s=1;break;case 1:t[n++]=r<<2|(48&c)>>4,r=c,s=2;break;case 2:t[n++]=(15&r)<<4|(60&c)>>2,r=c,s=3;break;case 3:t[n++]=(3&r)<<6|c,s=0}}if(1===s)throw Error(o);return n-a},n.test=function(e){return/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(e)}},7669:e=>{"use strict";function t(e,n){"string"==typeof e&&(n=e,e=void 0);var r=[];function i(e){if("string"!=typeof e){var n=a();if(t.verbose,n="return "+n,e){for(var o=Object.keys(e),s=new Array(o.length+1),l=new Array(o.length),c=0;c{"use strict";function t(){this._listeners={}}e.exports=t,t.prototype.on=function(e,t,n){return(this._listeners[e]||(this._listeners[e]=[])).push({fn:t,ctx:n||this}),this},t.prototype.off=function(e,t){if(void 0===e)this._listeners={};else if(void 0===t)this._listeners[e]=[];else for(var n=this._listeners[e],r=0;r{"use strict";e.exports=a;var r=n(6233),i=n(1925)("fs");function a(e,t,n){return"function"==typeof t?(n=t,t={}):t||(t={}),n?!t.xhr&&i&&i.readFile?i.readFile(e,(function(r,i){return r&&"undefined"!=typeof XMLHttpRequest?a.xhr(e,t,n):r?n(r):n(null,t.binary?i:i.toString("utf8"))})):a.xhr(e,t,n):r(a,this,e,t)}a.xhr=function(e,t,n){var r=new XMLHttpRequest;r.onreadystatechange=function(){if(4===r.readyState){if(0!==r.status&&200!==r.status)return n(Error("status "+r.status));if(t.binary){var e=r.response;if(!e){e=[];for(var i=0;i{"use strict";function t(e){return"undefined"!=typeof Float32Array?function(){var t=new Float32Array([-0]),n=new Uint8Array(t.buffer),r=128===n[3];function i(e,r,i){t[0]=e,r[i]=n[0],r[i+1]=n[1],r[i+2]=n[2],r[i+3]=n[3]}function a(e,r,i){t[0]=e,r[i]=n[3],r[i+1]=n[2],r[i+2]=n[1],r[i+3]=n[0]}function o(e,r){return n[0]=e[r],n[1]=e[r+1],n[2]=e[r+2],n[3]=e[r+3],t[0]}function s(e,r){return n[3]=e[r],n[2]=e[r+1],n[1]=e[r+2],n[0]=e[r+3],t[0]}e.writeFloatLE=r?i:a,e.writeFloatBE=r?a:i,e.readFloatLE=r?o:s,e.readFloatBE=r?s:o}():function(){function t(e,t,n,r){var i=t<0?1:0;if(i&&(t=-t),0===t)e(1/t>0?0:2147483648,n,r);else if(isNaN(t))e(2143289344,n,r);else if(t>34028234663852886e22)e((i<<31|2139095040)>>>0,n,r);else if(t<11754943508222875e-54)e((i<<31|Math.round(t/1401298464324817e-60))>>>0,n,r);else{var a=Math.floor(Math.log(t)/Math.LN2);e((i<<31|a+127<<23|8388607&Math.round(t*Math.pow(2,-a)*8388608))>>>0,n,r)}}function o(e,t,n){var r=e(t,n),i=2*(r>>31)+1,a=r>>>23&255,o=8388607&r;return 255===a?o?NaN:i*(1/0):0===a?1401298464324817e-60*i*o:i*Math.pow(2,a-150)*(o+8388608)}e.writeFloatLE=t.bind(null,n),e.writeFloatBE=t.bind(null,r),e.readFloatLE=o.bind(null,i),e.readFloatBE=o.bind(null,a)}(),"undefined"!=typeof Float64Array?function(){var t=new Float64Array([-0]),n=new Uint8Array(t.buffer),r=128===n[7];function i(e,r,i){t[0]=e,r[i]=n[0],r[i+1]=n[1],r[i+2]=n[2],r[i+3]=n[3],r[i+4]=n[4],r[i+5]=n[5],r[i+6]=n[6],r[i+7]=n[7]}function a(e,r,i){t[0]=e,r[i]=n[7],r[i+1]=n[6],r[i+2]=n[5],r[i+3]=n[4],r[i+4]=n[3],r[i+5]=n[2],r[i+6]=n[1],r[i+7]=n[0]}function o(e,r){return n[0]=e[r],n[1]=e[r+1],n[2]=e[r+2],n[3]=e[r+3],n[4]=e[r+4],n[5]=e[r+5],n[6]=e[r+6],n[7]=e[r+7],t[0]}function s(e,r){return n[7]=e[r],n[6]=e[r+1],n[5]=e[r+2],n[4]=e[r+3],n[3]=e[r+4],n[2]=e[r+5],n[1]=e[r+6],n[0]=e[r+7],t[0]}e.writeDoubleLE=r?i:a,e.writeDoubleBE=r?a:i,e.readDoubleLE=r?o:s,e.readDoubleBE=r?s:o}():function(){function t(e,t,n,r,i,a){var o=r<0?1:0;if(o&&(r=-r),0===r)e(0,i,a+t),e(1/r>0?0:2147483648,i,a+n);else if(isNaN(r))e(0,i,a+t),e(2146959360,i,a+n);else if(r>17976931348623157e292)e(0,i,a+t),e((o<<31|2146435072)>>>0,i,a+n);else{var s;if(r<22250738585072014e-324)e((s=r/5e-324)>>>0,i,a+t),e((o<<31|s/4294967296)>>>0,i,a+n);else{var l=Math.floor(Math.log(r)/Math.LN2);1024===l&&(l=1023),e(4503599627370496*(s=r*Math.pow(2,-l))>>>0,i,a+t),e((o<<31|l+1023<<20|1048576*s&1048575)>>>0,i,a+n)}}}function o(e,t,n,r,i){var a=e(r,i+t),o=e(r,i+n),s=2*(o>>31)+1,l=o>>>20&2047,c=4294967296*(1048575&o)+a;return 2047===l?c?NaN:s*(1/0):0===l?5e-324*s*c:s*Math.pow(2,l-1075)*(c+4503599627370496)}e.writeDoubleLE=t.bind(null,n,0,4),e.writeDoubleBE=t.bind(null,r,4,0),e.readDoubleLE=o.bind(null,i,0,4),e.readDoubleBE=o.bind(null,a,4,0)}(),e}function n(e,t,n){t[n]=255&e,t[n+1]=e>>>8&255,t[n+2]=e>>>16&255,t[n+3]=e>>>24}function r(e,t,n){t[n]=e>>>24,t[n+1]=e>>>16&255,t[n+2]=e>>>8&255,t[n+3]=255&e}function i(e,t){return(e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24)>>>0}function a(e,t){return(e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3])>>>0}e.exports=t(t)},1925:module=>{"use strict";function inquire(moduleName){try{var mod=eval("quire".replace(/^/,"re"))(moduleName);if(mod&&(mod.length||Object.keys(mod).length))return mod}catch(e){}return null}module.exports=inquire},2459:(e,t)=>{"use strict";var n=t,r=n.isAbsolute=function(e){return/^(?:\/|\w+:)/.test(e)},i=n.normalize=function(e){var t=(e=e.replace(/\\/g,"/").replace(/\/{2,}/g,"/")).split("/"),n=r(e),i="";n&&(i=t.shift()+"/");for(var a=0;a0&&".."!==t[a-1]?t.splice(--a,2):n?t.splice(a,1):++a:"."===t[a]?t.splice(a,1):++a;return i+t.join("/")};n.resolve=function(e,t,n){return n||(t=i(t)),r(t)?t:(n||(e=i(e)),(e=e.replace(/(?:\/|^)[^/]+$/,"")).length?i(e+"/"+t):t)}},4226:e=>{"use strict";e.exports=function(e,t,n){var r=n||8192,i=r>>>1,a=null,o=r;return function(n){if(n<1||n>i)return e(n);o+n>r&&(a=e(r),o=0);var s=t.call(a,o,o+=n);return 7&o&&(o=1+(7|o)),s}}},2971:(e,t)=>{"use strict";var n=t;n.length=function(e){for(var t=0,n=0,r=0;r191&&r<224?a[o++]=(31&r)<<6|63&e[t++]:r>239&&r<365?(r=((7&r)<<18|(63&e[t++])<<12|(63&e[t++])<<6|63&e[t++])-65536,a[o++]=55296+(r>>10),a[o++]=56320+(1023&r)):a[o++]=(15&r)<<12|(63&e[t++])<<6|63&e[t++],o>8191&&((i||(i=[])).push(String.fromCharCode.apply(String,a)),o=0);return i?(o&&i.push(String.fromCharCode.apply(String,a.slice(0,o))),i.join("")):String.fromCharCode.apply(String,a.slice(0,o))},n.write=function(e,t,n){for(var r,i,a=n,o=0;o>6|192,t[n++]=63&r|128):55296==(64512&r)&&56320==(64512&(i=e.charCodeAt(o+1)))?(r=65536+((1023&r)<<10)+(1023&i),++o,t[n++]=r>>18|240,t[n++]=r>>12&63|128,t[n++]=r>>6&63|128,t[n++]=63&r|128):(t[n++]=r>>12|224,t[n++]=r>>6&63|128,t[n++]=63&r|128);return n-a}},7951:(e,t,n)=>{const r=n(2880),i={};for(const e of Object.keys(r))i[r[e]]=e;const a={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};e.exports=a;for(const e of Object.keys(a)){if(!("channels"in a[e]))throw new Error("missing channels property: "+e);if(!("labels"in a[e]))throw new Error("missing channel labels property: "+e);if(a[e].labels.length!==a[e].channels)throw new Error("channel and label counts mismatch: "+e);const{channels:t,labels:n}=a[e];delete a[e].channels,delete a[e].labels,Object.defineProperty(a[e],"channels",{value:t}),Object.defineProperty(a[e],"labels",{value:n})}a.rgb.hsl=function(e){const t=e[0]/255,n=e[1]/255,r=e[2]/255,i=Math.min(t,n,r),a=Math.max(t,n,r),o=a-i;let s,l;a===i?s=0:t===a?s=(n-r)/o:n===a?s=2+(r-t)/o:r===a&&(s=4+(t-n)/o),s=Math.min(60*s,360),s<0&&(s+=360);const c=(i+a)/2;return l=a===i?0:c<=.5?o/(a+i):o/(2-a-i),[s,100*l,100*c]},a.rgb.hsv=function(e){let t,n,r,i,a;const o=e[0]/255,s=e[1]/255,l=e[2]/255,c=Math.max(o,s,l),u=c-Math.min(o,s,l),d=function(e){return(c-e)/6/u+.5};return 0===u?(i=0,a=0):(a=u/c,t=d(o),n=d(s),r=d(l),o===c?i=r-n:s===c?i=1/3+t-r:l===c&&(i=2/3+n-t),i<0?i+=1:i>1&&(i-=1)),[360*i,100*a,100*c]},a.rgb.hwb=function(e){const t=e[0],n=e[1];let r=e[2];const i=a.rgb.hsl(e)[0],o=1/255*Math.min(t,Math.min(n,r));return r=1-1/255*Math.max(t,Math.max(n,r)),[i,100*o,100*r]},a.rgb.cmyk=function(e){const t=e[0]/255,n=e[1]/255,r=e[2]/255,i=Math.min(1-t,1-n,1-r);return[100*((1-t-i)/(1-i)||0),100*((1-n-i)/(1-i)||0),100*((1-r-i)/(1-i)||0),100*i]},a.rgb.keyword=function(e){const t=i[e];if(t)return t;let n,a=1/0;for(const t of Object.keys(r)){const i=r[t],l=(s=i,((o=e)[0]-s[0])**2+(o[1]-s[1])**2+(o[2]-s[2])**2);l.04045?((t+.055)/1.055)**2.4:t/12.92,n=n>.04045?((n+.055)/1.055)**2.4:n/12.92,r=r>.04045?((r+.055)/1.055)**2.4:r/12.92;return[100*(.4124*t+.3576*n+.1805*r),100*(.2126*t+.7152*n+.0722*r),100*(.0193*t+.1192*n+.9505*r)]},a.rgb.lab=function(e){const t=a.rgb.xyz(e);let n=t[0],r=t[1],i=t[2];n/=95.047,r/=100,i/=108.883,n=n>.008856?n**(1/3):7.787*n+16/116,r=r>.008856?r**(1/3):7.787*r+16/116,i=i>.008856?i**(1/3):7.787*i+16/116;return[116*r-16,500*(n-r),200*(r-i)]},a.hsl.rgb=function(e){const t=e[0]/360,n=e[1]/100,r=e[2]/100;let i,a,o;if(0===n)return o=255*r,[o,o,o];i=r<.5?r*(1+n):r+n-r*n;const s=2*r-i,l=[0,0,0];for(let e=0;e<3;e++)a=t+1/3*-(e-1),a<0&&a++,a>1&&a--,o=6*a<1?s+6*(i-s)*a:2*a<1?i:3*a<2?s+(i-s)*(2/3-a)*6:s,l[e]=255*o;return l},a.hsl.hsv=function(e){const t=e[0];let n=e[1]/100,r=e[2]/100,i=n;const a=Math.max(r,.01);r*=2,n*=r<=1?r:2-r,i*=a<=1?a:2-a;return[t,100*(0===r?2*i/(a+i):2*n/(r+n)),100*((r+n)/2)]},a.hsv.rgb=function(e){const t=e[0]/60,n=e[1]/100;let r=e[2]/100;const i=Math.floor(t)%6,a=t-Math.floor(t),o=255*r*(1-n),s=255*r*(1-n*a),l=255*r*(1-n*(1-a));switch(r*=255,i){case 0:return[r,l,o];case 1:return[s,r,o];case 2:return[o,r,l];case 3:return[o,s,r];case 4:return[l,o,r];case 5:return[r,o,s]}},a.hsv.hsl=function(e){const t=e[0],n=e[1]/100,r=e[2]/100,i=Math.max(r,.01);let a,o;o=(2-n)*r;const s=(2-n)*i;return a=n*i,a/=s<=1?s:2-s,a=a||0,o/=2,[t,100*a,100*o]},a.hwb.rgb=function(e){const t=e[0]/360;let n=e[1]/100,r=e[2]/100;const i=n+r;let a;i>1&&(n/=i,r/=i);const o=Math.floor(6*t),s=1-r;a=6*t-o,1&o&&(a=1-a);const l=n+a*(s-n);let c,u,d;switch(o){default:case 6:case 0:c=s,u=l,d=n;break;case 1:c=l,u=s,d=n;break;case 2:c=n,u=s,d=l;break;case 3:c=n,u=l,d=s;break;case 4:c=l,u=n,d=s;break;case 5:c=s,u=n,d=l}return[255*c,255*u,255*d]},a.cmyk.rgb=function(e){const t=e[0]/100,n=e[1]/100,r=e[2]/100,i=e[3]/100;return[255*(1-Math.min(1,t*(1-i)+i)),255*(1-Math.min(1,n*(1-i)+i)),255*(1-Math.min(1,r*(1-i)+i))]},a.xyz.rgb=function(e){const t=e[0]/100,n=e[1]/100,r=e[2]/100;let i,a,o;return i=3.2406*t+-1.5372*n+-.4986*r,a=-.9689*t+1.8758*n+.0415*r,o=.0557*t+-.204*n+1.057*r,i=i>.0031308?1.055*i**(1/2.4)-.055:12.92*i,a=a>.0031308?1.055*a**(1/2.4)-.055:12.92*a,o=o>.0031308?1.055*o**(1/2.4)-.055:12.92*o,i=Math.min(Math.max(0,i),1),a=Math.min(Math.max(0,a),1),o=Math.min(Math.max(0,o),1),[255*i,255*a,255*o]},a.xyz.lab=function(e){let t=e[0],n=e[1],r=e[2];t/=95.047,n/=100,r/=108.883,t=t>.008856?t**(1/3):7.787*t+16/116,n=n>.008856?n**(1/3):7.787*n+16/116,r=r>.008856?r**(1/3):7.787*r+16/116;return[116*n-16,500*(t-n),200*(n-r)]},a.lab.xyz=function(e){let t,n,r;n=(e[0]+16)/116,t=e[1]/500+n,r=n-e[2]/200;const i=n**3,a=t**3,o=r**3;return n=i>.008856?i:(n-16/116)/7.787,t=a>.008856?a:(t-16/116)/7.787,r=o>.008856?o:(r-16/116)/7.787,t*=95.047,n*=100,r*=108.883,[t,n,r]},a.lab.lch=function(e){const t=e[0],n=e[1],r=e[2];let i;i=360*Math.atan2(r,n)/2/Math.PI,i<0&&(i+=360);return[t,Math.sqrt(n*n+r*r),i]},a.lch.lab=function(e){const t=e[0],n=e[1],r=e[2]/360*2*Math.PI;return[t,n*Math.cos(r),n*Math.sin(r)]},a.rgb.ansi16=function(e,t=null){const[n,r,i]=e;let o=null===t?a.rgb.hsv(e)[2]:t;if(o=Math.round(o/50),0===o)return 30;let s=30+(Math.round(i/255)<<2|Math.round(r/255)<<1|Math.round(n/255));return 2===o&&(s+=60),s},a.hsv.ansi16=function(e){return a.rgb.ansi16(a.hsv.rgb(e),e[2])},a.rgb.ansi256=function(e){const t=e[0],n=e[1],r=e[2];if(t===n&&n===r)return t<8?16:t>248?231:Math.round((t-8)/247*24)+232;return 16+36*Math.round(t/255*5)+6*Math.round(n/255*5)+Math.round(r/255*5)},a.ansi16.rgb=function(e){let t=e%10;if(0===t||7===t)return e>50&&(t+=3.5),t=t/10.5*255,[t,t,t];const n=.5*(1+~~(e>50));return[(1&t)*n*255,(t>>1&1)*n*255,(t>>2&1)*n*255]},a.ansi256.rgb=function(e){if(e>=232){const t=10*(e-232)+8;return[t,t,t]}let t;e-=16;return[Math.floor(e/36)/5*255,Math.floor((t=e%36)/6)/5*255,t%6/5*255]},a.rgb.hex=function(e){const t=(((255&Math.round(e[0]))<<16)+((255&Math.round(e[1]))<<8)+(255&Math.round(e[2]))).toString(16).toUpperCase();return"000000".substring(t.length)+t},a.hex.rgb=function(e){const t=e.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!t)return[0,0,0];let n=t[0];3===t[0].length&&(n=n.split("").map((e=>e+e)).join(""));const r=parseInt(n,16);return[r>>16&255,r>>8&255,255&r]},a.rgb.hcg=function(e){const t=e[0]/255,n=e[1]/255,r=e[2]/255,i=Math.max(Math.max(t,n),r),a=Math.min(Math.min(t,n),r),o=i-a;let s,l;return s=o<1?a/(1-o):0,l=o<=0?0:i===t?(n-r)/o%6:i===n?2+(r-t)/o:4+(t-n)/o,l/=6,l%=1,[360*l,100*o,100*s]},a.hsl.hcg=function(e){const t=e[1]/100,n=e[2]/100,r=n<.5?2*t*n:2*t*(1-n);let i=0;return r<1&&(i=(n-.5*r)/(1-r)),[e[0],100*r,100*i]},a.hsv.hcg=function(e){const t=e[1]/100,n=e[2]/100,r=t*n;let i=0;return r<1&&(i=(n-r)/(1-r)),[e[0],100*r,100*i]},a.hcg.rgb=function(e){const t=e[0]/360,n=e[1]/100,r=e[2]/100;if(0===n)return[255*r,255*r,255*r];const i=[0,0,0],a=t%1*6,o=a%1,s=1-o;let l=0;switch(Math.floor(a)){case 0:i[0]=1,i[1]=o,i[2]=0;break;case 1:i[0]=s,i[1]=1,i[2]=0;break;case 2:i[0]=0,i[1]=1,i[2]=o;break;case 3:i[0]=0,i[1]=s,i[2]=1;break;case 4:i[0]=o,i[1]=0,i[2]=1;break;default:i[0]=1,i[1]=0,i[2]=s}return l=(1-n)*r,[255*(n*i[0]+l),255*(n*i[1]+l),255*(n*i[2]+l)]},a.hcg.hsv=function(e){const t=e[1]/100,n=t+e[2]/100*(1-t);let r=0;return n>0&&(r=t/n),[e[0],100*r,100*n]},a.hcg.hsl=function(e){const t=e[1]/100,n=e[2]/100*(1-t)+.5*t;let r=0;return n>0&&n<.5?r=t/(2*n):n>=.5&&n<1&&(r=t/(2*(1-n))),[e[0],100*r,100*n]},a.hcg.hwb=function(e){const t=e[1]/100,n=t+e[2]/100*(1-t);return[e[0],100*(n-t),100*(1-n)]},a.hwb.hcg=function(e){const t=e[1]/100,n=1-e[2]/100,r=n-t;let i=0;return r<1&&(i=(n-r)/(1-r)),[e[0],100*r,100*i]},a.apple.rgb=function(e){return[e[0]/65535*255,e[1]/65535*255,e[2]/65535*255]},a.rgb.apple=function(e){return[e[0]/255*65535,e[1]/255*65535,e[2]/255*65535]},a.gray.rgb=function(e){return[e[0]/100*255,e[0]/100*255,e[0]/100*255]},a.gray.hsl=function(e){return[0,0,e[0]]},a.gray.hsv=a.gray.hsl,a.gray.hwb=function(e){return[0,100,e[0]]},a.gray.cmyk=function(e){return[0,0,0,e[0]]},a.gray.lab=function(e){return[e[0],0,0]},a.gray.hex=function(e){const t=255&Math.round(e[0]/100*255),n=((t<<16)+(t<<8)+t).toString(16).toUpperCase();return"000000".substring(n.length)+n},a.rgb.gray=function(e){return[(e[0]+e[1]+e[2])/3/255*100]}},8666:(e,t,n)=>{const r=n(7951),i=n(1247),a={};Object.keys(r).forEach((e=>{a[e]={},Object.defineProperty(a[e],"channels",{value:r[e].channels}),Object.defineProperty(a[e],"labels",{value:r[e].labels});const t=i(e);Object.keys(t).forEach((n=>{const r=t[n];a[e][n]=function(e){const t=function(...t){const n=t[0];if(null==n)return n;n.length>1&&(t=n);const r=e(t);if("object"==typeof r)for(let e=r.length,t=0;t1&&(t=n),e(t))};return"conversion"in e&&(t.conversion=e.conversion),t}(r)}))})),e.exports=a},1247:(e,t,n)=>{const r=n(7951);function i(e){const t=function(){const e={},t=Object.keys(r);for(let n=t.length,r=0;r{"use strict";e.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},6250:(e,t,n)=>{var r=n(2880),i=n(6852),a=Object.hasOwnProperty,o=Object.create(null);for(var s in r)a.call(r,s)&&(o[r[s]]=s);var l=e.exports={to:{},get:{}};function c(e,t,n){return Math.min(Math.max(t,e),n)}function u(e){var t=Math.round(e).toString(16).toUpperCase();return t.length<2?"0"+t:t}l.get=function(e){var t,n;switch(e.substring(0,3).toLowerCase()){case"hsl":t=l.get.hsl(e),n="hsl";break;case"hwb":t=l.get.hwb(e),n="hwb";break;default:t=l.get.rgb(e),n="rgb"}return t?{model:n,value:t}:null},l.get.rgb=function(e){if(!e)return null;var t,n,i,o=[0,0,0,1];if(t=e.match(/^#([a-f0-9]{6})([a-f0-9]{2})?$/i)){for(i=t[2],t=t[1],n=0;n<3;n++){var s=2*n;o[n]=parseInt(t.slice(s,s+2),16)}i&&(o[3]=parseInt(i,16)/255)}else if(t=e.match(/^#([a-f0-9]{3,4})$/i)){for(i=(t=t[1])[3],n=0;n<3;n++)o[n]=parseInt(t[n]+t[n],16);i&&(o[3]=parseInt(i+i,16)/255)}else if(t=e.match(/^rgba?\(\s*([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/)){for(n=0;n<3;n++)o[n]=parseInt(t[n+1],0);t[4]&&(t[5]?o[3]=.01*parseFloat(t[4]):o[3]=parseFloat(t[4]))}else{if(!(t=e.match(/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/)))return(t=e.match(/^(\w+)$/))?"transparent"===t[1]?[0,0,0,0]:a.call(r,t[1])?((o=r[t[1]])[3]=1,o):null:null;for(n=0;n<3;n++)o[n]=Math.round(2.55*parseFloat(t[n+1]));t[4]&&(t[5]?o[3]=.01*parseFloat(t[4]):o[3]=parseFloat(t[4]))}for(n=0;n<3;n++)o[n]=c(o[n],0,255);return o[3]=c(o[3],0,1),o},l.get.hsl=function(e){if(!e)return null;var t=e.match(/^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d\.]+)%\s*,?\s*([+-]?[\d\.]+)%\s*(?:[,|\/]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/);if(t){var n=parseFloat(t[4]);return[(parseFloat(t[1])%360+360)%360,c(parseFloat(t[2]),0,100),c(parseFloat(t[3]),0,100),c(isNaN(n)?1:n,0,1)]}return null},l.get.hwb=function(e){if(!e)return null;var t=e.match(/^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/);if(t){var n=parseFloat(t[4]);return[(parseFloat(t[1])%360+360)%360,c(parseFloat(t[2]),0,100),c(parseFloat(t[3]),0,100),c(isNaN(n)?1:n,0,1)]}return null},l.to.hex=function(){var e=i(arguments);return"#"+u(e[0])+u(e[1])+u(e[2])+(e[3]<1?u(Math.round(255*e[3])):"")},l.to.rgb=function(){var e=i(arguments);return e.length<4||1===e[3]?"rgb("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+")":"rgba("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+", "+e[3]+")"},l.to.rgb.percent=function(){var e=i(arguments),t=Math.round(e[0]/255*100),n=Math.round(e[1]/255*100),r=Math.round(e[2]/255*100);return e.length<4||1===e[3]?"rgb("+t+"%, "+n+"%, "+r+"%)":"rgba("+t+"%, "+n+"%, "+r+"%, "+e[3]+")"},l.to.hsl=function(){var e=i(arguments);return e.length<4||1===e[3]?"hsl("+e[0]+", "+e[1]+"%, "+e[2]+"%)":"hsla("+e[0]+", "+e[1]+"%, "+e[2]+"%, "+e[3]+")"},l.to.hwb=function(){var e=i(arguments),t="";return e.length>=4&&1!==e[3]&&(t=", "+e[3]),"hwb("+e[0]+", "+e[1]+"%, "+e[2]+"%"+t+")"},l.to.keyword=function(e){return o[e.slice(0,3)]}},4308:(e,t,n)=>{const r=n(6250),i=n(8666),a=["keyword","gray","hex"],o={};for(const e of Object.keys(i))o[[...i[e].labels].sort().join("")]=e;const s={};function l(e,t){if(!(this instanceof l))return new l(e,t);if(t&&t in a&&(t=null),t&&!(t in i))throw new Error("Unknown model: "+t);let n,c;if(null==e)this.model="rgb",this.color=[0,0,0],this.valpha=1;else if(e instanceof l)this.model=e.model,this.color=[...e.color],this.valpha=e.valpha;else if("string"==typeof e){const t=r.get(e);if(null===t)throw new Error("Unable to parse color from string: "+e);this.model=t.model,c=i[this.model].channels,this.color=t.value.slice(0,c),this.valpha="number"==typeof t.value[c]?t.value[c]:1}else if(e.length>0){this.model=t||"rgb",c=i[this.model].channels;const n=Array.prototype.slice.call(e,0,c);this.color=p(n,c),this.valpha="number"==typeof e[c]?e[c]:1}else if("number"==typeof e)this.model="rgb",this.color=[e>>16&255,e>>8&255,255&e],this.valpha=1;else{this.valpha=1;const t=Object.keys(e);"alpha"in e&&(t.splice(t.indexOf("alpha"),1),this.valpha="number"==typeof e.alpha?e.alpha:0);const r=t.sort().join("");if(!(r in o))throw new Error("Unable to parse color from object: "+JSON.stringify(e));this.model=o[r];const{labels:a}=i[this.model],s=[];for(n=0;n(e%360+360)%360)),saturationl:u("hsl",1,d(100)),lightness:u("hsl",2,d(100)),saturationv:u("hsv",1,d(100)),value:u("hsv",2,d(100)),chroma:u("hcg",1,d(100)),gray:u("hcg",2,d(100)),white:u("hwb",1,d(100)),wblack:u("hwb",2,d(100)),cyan:u("cmyk",0,d(100)),magenta:u("cmyk",1,d(100)),yellow:u("cmyk",2,d(100)),black:u("cmyk",3,d(100)),x:u("xyz",0,d(95.047)),y:u("xyz",1,d(100)),z:u("xyz",2,d(108.833)),l:u("lab",0,d(100)),a:u("lab",1),b:u("lab",2),keyword(e){return void 0!==e?new l(e):i[this.model].keyword(this.color)},hex(e){return void 0!==e?new l(e):r.to.hex(this.rgb().round().color)},hexa(e){if(void 0!==e)return new l(e);const t=this.rgb().round().color;let n=Math.round(255*this.valpha).toString(16).toUpperCase();return 1===n.length&&(n="0"+n),r.to.hex(t)+n},rgbNumber(){const e=this.rgb().color;return(255&e[0])<<16|(255&e[1])<<8|255&e[2]},luminosity(){const e=this.rgb().color,t=[];for(const[n,r]of e.entries()){const e=r/255;t[n]=e<=.04045?e/12.92:((e+.055)/1.055)**2.4}return.2126*t[0]+.7152*t[1]+.0722*t[2]},contrast(e){const t=this.luminosity(),n=e.luminosity();return t>n?(t+.05)/(n+.05):(n+.05)/(t+.05)},level(e){const t=this.contrast(e);return t>=7?"AAA":t>=4.5?"AA":""},isDark(){const e=this.rgb().color;return(2126*e[0]+7152*e[1]+722*e[2])/1e4<128},isLight(){return!this.isDark()},negate(){const e=this.rgb();for(let t=0;t<3;t++)e.color[t]=255-e.color[t];return e},lighten(e){const t=this.hsl();return t.color[2]+=t.color[2]*e,t},darken(e){const t=this.hsl();return t.color[2]-=t.color[2]*e,t},saturate(e){const t=this.hsl();return t.color[1]+=t.color[1]*e,t},desaturate(e){const t=this.hsl();return t.color[1]-=t.color[1]*e,t},whiten(e){const t=this.hwb();return t.color[1]+=t.color[1]*e,t},blacken(e){const t=this.hwb();return t.color[2]+=t.color[2]*e,t},grayscale(){const e=this.rgb().color,t=.3*e[0]+.59*e[1]+.11*e[2];return l.rgb(t,t,t)},fade(e){return this.alpha(this.valpha-this.valpha*e)},opaquer(e){return this.alpha(this.valpha+this.valpha*e)},rotate(e){const t=this.hsl();let n=t.color[0];return n=(n+e)%360,n=n<0?360+n:n,t.color[0]=n,t},mix(e,t){if(!e||!e.rgb)throw new Error('Argument to "mix" was not a Color instance, but rather an instance of '+typeof e);const n=e.rgb(),r=this.rgb(),i=void 0===t?.5:t,a=2*i-1,o=n.alpha()-r.alpha(),s=((a*o==-1?a:(a+o)/(1+a*o))+1)/2,c=1-s;return l.rgb(s*n.red()+c*r.red(),s*n.green()+c*r.green(),s*n.blue()+c*r.blue(),n.alpha()*i+r.alpha()*(1-i))}};for(const e of Object.keys(i)){if(a.includes(e))continue;const{channels:t}=i[e];l.prototype[e]=function(...t){return this.model===e?new l(this):t.length>0?new l(t,e):new l([...(n=i[this.model][e].raw(this.color),Array.isArray(n)?n:[n]),this.valpha],e);var n},l[e]=function(...n){let r=n[0];return"number"==typeof r&&(r=p(n,t)),new l(r,e)}}function c(e){return function(t){return function(e,t){return Number(e.toFixed(t))}(t,e)}}function u(e,t,n){e=Array.isArray(e)?e:[e];for(const r of e)(s[r]||(s[r]=[]))[t]=n;return e=e[0],function(r){let i;return void 0!==r?(n&&(r=n(r)),i=this[e](),i.color[t]=r,i):(i=this[e]().color[t],n&&(i=n(i)),i)}}function d(e){return function(t){return Math.max(0,Math.min(e,t))}}function p(e,t){for(let n=0;n=t.status}function a(e){try{e.dispatchEvent(new MouseEvent("click"))}catch(n){var t=document.createEvent("MouseEvents");t.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),e.dispatchEvent(t)}}var o="object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof n.g&&n.g.global===n.g?n.g:void 0,s=o.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),l=o.saveAs||("object"!=typeof window||window!==o?function(){}:"download"in HTMLAnchorElement.prototype&&!s?function(e,t,n){var s=o.URL||o.webkitURL,l=document.createElement("a");t=t||e.name||"download",l.download=t,l.rel="noopener","string"==typeof e?(l.href=e,l.origin===location.origin?a(l):i(l.href)?r(e,t,n):a(l,l.target="_blank")):(l.href=s.createObjectURL(e),setTimeout((function(){s.revokeObjectURL(l.href)}),4e4),setTimeout((function(){a(l)}),0))}:"msSaveOrOpenBlob"in navigator?function(e,n,o){if(n=n||e.name||"download","string"!=typeof e)navigator.msSaveOrOpenBlob(t(e,o),n);else if(i(e))r(e,n,o);else{var s=document.createElement("a");s.href=e,s.target="_blank",setTimeout((function(){a(s)}))}}:function(e,t,n,i){if((i=i||open("","_blank"))&&(i.document.title=i.document.body.innerText="downloading..."),"string"==typeof e)return r(e,t,n);var a="application/octet-stream"===e.type,l=/constructor/i.test(o.HTMLElement)||o.safari,c=/CriOS\/[\d]+/.test(navigator.userAgent);if((c||a&&l||s)&&"undefined"!=typeof FileReader){var u=new FileReader;u.onloadend=function(){var e=u.result;e=c?e:e.replace(/^data:[^;]*;/,"data:attachment/file;"),i?i.location.href=e:location=e,i=null},u.readAsDataURL(e)}else{var d=o.URL||o.webkitURL,p=d.createObjectURL(e);i?i.location=p:location.href=p,i=null,setTimeout((function(){d.revokeObjectURL(p)}),4e4)}});o.saveAs=l.saveAs=l,e.exports=l})?r.apply(t,i):r)||(e.exports=a)},7842:(e,t,n)=>{e=n.nmd(e);var r="__lodash_hash_undefined__",i=1,a=2,o=9007199254740991,s="[object Arguments]",l="[object Array]",c="[object AsyncFunction]",u="[object Boolean]",d="[object Date]",p="[object Error]",h="[object Function]",f="[object GeneratorFunction]",m="[object Map]",g="[object Number]",y="[object Null]",b="[object Object]",v="[object Promise]",w="[object Proxy]",S="[object RegExp]",E="[object Set]",x="[object String]",O="[object Symbol]",_="[object Undefined]",T="[object WeakMap]",C="[object ArrayBuffer]",k="[object DataView]",P=/^\[object .+?Constructor\]$/,R=/^(?:0|[1-9]\d*)$/,A={};A["[object Float32Array]"]=A["[object Float64Array]"]=A["[object Int8Array]"]=A["[object Int16Array]"]=A["[object Int32Array]"]=A["[object Uint8Array]"]=A["[object Uint8ClampedArray]"]=A["[object Uint16Array]"]=A["[object Uint32Array]"]=!0,A[s]=A[l]=A[C]=A[u]=A[k]=A[d]=A[p]=A[h]=A[m]=A[g]=A[b]=A[S]=A[E]=A[x]=A[T]=!1;var D="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g,j="object"==typeof self&&self&&self.Object===Object&&self,I=D||j||Function("return this")(),N=t&&!t.nodeType&&t,L=N&&e&&!e.nodeType&&e,M=L&&L.exports===N,F=M&&D.process,$=function(){try{return F&&F.binding&&F.binding("util")}catch(e){}}(),B=$&&$.isTypedArray;function V(e,t){for(var n=-1,r=null==e?0:e.length;++nc))return!1;var d=s.get(e);if(d&&s.get(t))return d==t;var p=-1,h=!0,f=n&a?new Ce:void 0;for(s.set(e,t),s.set(t,e);++p-1},_e.prototype.set=function(e,t){var n=this.__data__,r=Re(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this},Te.prototype.clear=function(){this.size=0,this.__data__={hash:new Oe,map:new(pe||_e),string:new Oe}},Te.prototype.delete=function(e){var t=Fe(this,e).delete(e);return this.size-=t?1:0,t},Te.prototype.get=function(e){return Fe(this,e).get(e)},Te.prototype.has=function(e){return Fe(this,e).has(e)},Te.prototype.set=function(e,t){var n=Fe(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this},Ce.prototype.add=Ce.prototype.push=function(e){return this.__data__.set(e,r),this},Ce.prototype.has=function(e){return this.__data__.has(e)},ke.prototype.clear=function(){this.__data__=new _e,this.size=0},ke.prototype.delete=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n},ke.prototype.get=function(e){return this.__data__.get(e)},ke.prototype.has=function(e){return this.__data__.has(e)},ke.prototype.set=function(e,t){var n=this.__data__;if(n instanceof _e){var r=n.__data__;if(!pe||r.length<199)return r.push([e,t]),this.size=++n.size,this;n=this.__data__=new Te(r)}return n.set(e,t),this.size=n.size,this};var Be=le?function(e){return null==e?[]:(e=Object(e),function(e,t){for(var n=-1,r=null==e?0:e.length,i=0,a=[];++n-1&&e%1==0&&e-1&&e%1==0&&e<=o}function Ye(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function Xe(e){return null!=e&&"object"==typeof e}var Je=B?function(e){return function(t){return e(t)}}(B):function(e){return Xe(e)&&Ke(e.length)&&!!A[Ae(e)]};function Ze(e){return null!=(t=e)&&Ke(t.length)&&!Qe(t)?Pe(e):Ne(e);var t}e.exports=function(e,t){return je(e,t)}},1664:e=>{"use strict";var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,i){for(var a,o,s=function(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),l=1;l{"use strict";var r=n(6441);function i(){}function a(){}a.resetWarningCache=i,e.exports=function(){function e(e,t,n,i,a,o){if(o!==r){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:a,resetWarningCache:i};return n.PropTypes=n,n}},2688:(e,t,n)=>{e.exports=n(362)()},6441:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},585:(e,t,n)=>{"use strict";e.exports=n(5481)},3804:(e,t,n)=>{"use strict";var r=t,i=n(2775),a=n(6866);function o(e,t,n,r){var a=!1;if(t.resolvedType)if(t.resolvedType instanceof i){e("switch(d%s){",r);for(var o=t.resolvedType.values,s=Object.keys(o),l=0;l>>0",r,r);break;case"int32":case"sint32":case"sfixed32":e("m%s=d%s|0",r,r);break;case"uint64":c=!0;case"int64":case"sint64":case"fixed64":case"sfixed64":e("if(util.Long)")("(m%s=util.Long.fromValue(d%s)).unsigned=%j",r,r,c)('else if(typeof d%s==="string")',r)("m%s=parseInt(d%s,10)",r,r)('else if(typeof d%s==="number")',r)("m%s=d%s",r,r)('else if(typeof d%s==="object")',r)("m%s=new util.LongBits(d%s.low>>>0,d%s.high>>>0).toNumber(%s)",r,r,r,c?"true":"");break;case"bytes":e('if(typeof d%s==="string")',r)("util.base64.decode(d%s,m%s=util.newBuffer(util.base64.length(d%s)),0)",r,r,r)("else if(d%s.length >= 0)",r)("m%s=d%s",r,r);break;case"string":e("m%s=String(d%s)",r,r);break;case"bool":e("m%s=Boolean(d%s)",r,r)}}return e}function s(e,t,n,r){if(t.resolvedType)t.resolvedType instanceof i?e("d%s=o.enums===String?(types[%i].values[m%s]===undefined?m%s:types[%i].values[m%s]):m%s",r,n,r,r,n,r,r):e("d%s=types[%i].toObject(m%s,o)",r,n,r);else{var a=!1;switch(t.type){case"double":case"float":e("d%s=o.json&&!isFinite(m%s)?String(m%s):m%s",r,r,r,r);break;case"uint64":a=!0;case"int64":case"sint64":case"fixed64":case"sfixed64":e('if(typeof m%s==="number")',r)("d%s=o.longs===String?String(m%s):m%s",r,r,r)("else")("d%s=o.longs===String?util.Long.prototype.toString.call(m%s):o.longs===Number?new util.LongBits(m%s.low>>>0,m%s.high>>>0).toNumber(%s):m%s",r,r,r,r,a?"true":"",r);break;case"bytes":e("d%s=o.bytes===String?util.base64.encode(m%s,0,m%s.length):o.bytes===Array?Array.prototype.slice.call(m%s):m%s",r,r,r,r,r);break;default:e("d%s=m%s",r,r)}}return e}r.fromObject=function(e){var t=e.fieldsArray,n=a.codegen(["d"],e.name+"$fromObject")("if(d instanceof this.ctor)")("return d");if(!t.length)return n("return new this.ctor");n("var m=new this.ctor");for(var r=0;r{"use strict";e.exports=function(e){var t=a.codegen(["r","l"],e.name+"$decode")("if(!(r instanceof Reader))")("r=Reader.create(r)")("var c=l===undefined?r.len:r.pos+l,m=new this.ctor"+(e.fieldsArray.filter((function(e){return e.map})).length?",k,value":""))("while(r.pos>>3){");for(var n=0;n>>3){")("case 1: k=r.%s(); break",s.keyType)("case 2:"),void 0===i.basic[l]?t("value=types[%i].decode(r,r.uint32())",n):t("value=r.%s()",l),t("break")("default:")("r.skipType(tag2&7)")("break")("}")("}"),void 0!==i.long[s.keyType]?t('%s[typeof k==="object"?util.longToHash(k):k]=value',c):t("%s[k]=value",c)):s.repeated?(t("if(!(%s&&%s.length))",c,c)("%s=[]",c),void 0!==i.packed[l]&&t("if((t&7)===2){")("var c2=r.uint32()+r.pos")("while(r.pos{"use strict";e.exports=function(e){for(var t,n=a.codegen(["m","w"],e.name+"$encode")("if(!w)")("w=Writer.create()"),s=e.fieldsArray.slice().sort(a.compareFieldsById),l=0;l>>0,8|i.mapKey[c.keyType],c.keyType),void 0===p?n("types[%i].encode(%s[ks[i]],w.uint32(18).fork()).ldelim().ldelim()",u,t):n(".uint32(%i).%s(%s[ks[i]]).ldelim()",16|p,d,t),n("}")("}")):c.repeated?(n("if(%s!=null&&%s.length){",t,t),c.packed&&void 0!==i.packed[d]?n("w.uint32(%i).fork()",(c.id<<3|2)>>>0)("for(var i=0;i<%s.length;++i)",t)("w.%s(%s[i])",d,t)("w.ldelim()"):(n("for(var i=0;i<%s.length;++i)",t),void 0===p?o(n,c,u,t+"[i]"):n("w.uint32(%i).%s(%s[i])",(c.id<<3|p)>>>0,d,t)),n("}")):(c.optional&&n("if(%s!=null&&Object.hasOwnProperty.call(m,%j))",t,c.name),void 0===p?o(n,c,u,t):n("w.uint32(%i).%s(%s)",(c.id<<3|p)>>>0,d,t))}return n("return w")};var r=n(2775),i=n(1517),a=n(6866);function o(e,t,n,r){return t.resolvedType.group?e("types[%i].encode(%s,w.uint32(%i)).uint32(%i)",n,r,(t.id<<3|3)>>>0,(t.id<<3|4)>>>0):e("types[%i].encode(%s,w.uint32(%i).fork()).ldelim()",n,r,(t.id<<3|2)>>>0)}},2775:(e,t,n)=>{"use strict";e.exports=o;var r=n(4349);((o.prototype=Object.create(r.prototype)).constructor=o).className="Enum";var i=n(2815),a=n(6866);function o(e,t,n,i,a,o){if(r.call(this,e,n),t&&"object"!=typeof t)throw TypeError("values must be an object");if(this.valuesById={},this.values=Object.create(this.valuesById),this.comment=i,this.comments=a||{},this.valuesOptions=o,this.reserved=void 0,t)for(var s=Object.keys(t),l=0;l{"use strict";e.exports=c;var r=n(4349);((c.prototype=Object.create(r.prototype)).constructor=c).className="Field";var i,a=n(2775),o=n(1517),s=n(6866),l=/^required|optional|repeated$/;function c(e,t,n,i,a,c,u){if(s.isObject(i)?(u=a,c=i,i=a=void 0):s.isObject(a)&&(u=c,c=a,a=void 0),r.call(this,e,c),!s.isInteger(t)||t<0)throw TypeError("id must be a non-negative integer");if(!s.isString(n))throw TypeError("type must be a string");if(void 0!==i&&!l.test(i=i.toString().toLowerCase()))throw TypeError("rule must be a string rule");if(void 0!==a&&!s.isString(a))throw TypeError("extend must be a string");"proto3_optional"===i&&(i="optional"),this.rule=i&&"optional"!==i?i:void 0,this.type=n,this.id=t,this.extend=a||void 0,this.required="required"===i,this.optional=!this.required,this.repeated="repeated"===i,this.map=!1,this.message=null,this.partOf=null,this.typeDefault=null,this.defaultValue=null,this.long=!!s.Long&&void 0!==o.long[n],this.bytes="bytes"===n,this.resolvedType=null,this.extensionField=null,this.declaringField=null,this._packed=null,this.comment=u}c.fromJSON=function(e,t){return new c(e,t.id,t.type,t.rule,t.extend,t.options,t.comment)},Object.defineProperty(c.prototype,"packed",{get:function(){return null===this._packed&&(this._packed=!1!==this.getOption("packed")),this._packed}}),c.prototype.setOption=function(e,t,n){return"packed"===e&&(this._packed=null),r.prototype.setOption.call(this,e,t,n)},c.prototype.toJSON=function(e){var t=!!e&&Boolean(e.keepComments);return s.toObject(["rule","optional"!==this.rule&&this.rule||void 0,"type",this.type,"id",this.id,"extend",this.extend,"options",this.options,"comment",t?this.comment:void 0])},c.prototype.resolve=function(){if(this.resolved)return this;if(void 0===(this.typeDefault=o.defaults[this.type])?(this.resolvedType=(this.declaringField?this.declaringField.parent:this.parent).lookupTypeOrEnum(this.type),this.resolvedType instanceof i?this.typeDefault=null:this.typeDefault=this.resolvedType.values[Object.keys(this.resolvedType.values)[0]]):this.options&&this.options.proto3_optional&&(this.typeDefault=null),this.options&&null!=this.options.default&&(this.typeDefault=this.options.default,this.resolvedType instanceof a&&"string"==typeof this.typeDefault&&(this.typeDefault=this.resolvedType.values[this.typeDefault])),this.options&&(!0!==this.options.packed&&(void 0===this.options.packed||!this.resolvedType||this.resolvedType instanceof a)||delete this.options.packed,Object.keys(this.options).length||(this.options=void 0)),this.long)this.typeDefault=s.Long.fromNumber(this.typeDefault,"u"===this.type.charAt(0)),Object.freeze&&Object.freeze(this.typeDefault);else if(this.bytes&&"string"==typeof this.typeDefault){var e;s.base64.test(this.typeDefault)?s.base64.decode(this.typeDefault,e=s.newBuffer(s.base64.length(this.typeDefault)),0):s.utf8.write(this.typeDefault,e=s.newBuffer(s.utf8.length(this.typeDefault)),0),this.typeDefault=e}return this.map?this.defaultValue=s.emptyObject:this.repeated?this.defaultValue=s.emptyArray:this.defaultValue=this.typeDefault,this.parent instanceof i&&(this.parent.ctor.prototype[this.name]=this.defaultValue),r.prototype.resolve.call(this)},c.d=function(e,t,n,r){return"function"==typeof t?t=s.decorateType(t).name:t&&"object"==typeof t&&(t=s.decorateEnum(t).name),function(i,a){s.decorateType(i.constructor).add(new c(a,e,t,n,{default:r}))}},c._configure=function(e){i=e}},5481:(e,t,n)=>{"use strict";var r=e.exports=n(7134);r.build="light",r.load=function(e,t,n){return"function"==typeof t?(n=t,t=new r.Root):t||(t=new r.Root),t.load(e,n)},r.loadSync=function(e,t){return t||(t=new r.Root),t.loadSync(e)},r.encoder=n(8852),r.decoder=n(9980),r.verifier=n(3040),r.converter=n(3804),r.ReflectionObject=n(4349),r.Namespace=n(2815),r.Root=n(8038),r.Enum=n(2775),r.Type=n(6),r.Field=n(3796),r.OneOf=n(8957),r.MapField=n(9504),r.Service=n(6467),r.Method=n(3055),r.Message=n(9e3),r.wrappers=n(6942),r.types=n(1517),r.util=n(6866),r.ReflectionObject._configure(r.Root),r.Namespace._configure(r.Type,r.Service,r.Enum),r.Root._configure(r.Type),r.Field._configure(r.Type)},7134:(e,t,n)=>{"use strict";var r=t;function i(){r.util._configure(),r.Writer._configure(r.BufferWriter),r.Reader._configure(r.BufferReader)}r.build="minimal",r.Writer=n(4301),r.BufferWriter=n(8422),r.Reader=n(1137),r.BufferReader=n(4010),r.util=n(5382),r.rpc=n(9691),r.roots=n(381),r.configure=i,i()},9504:(e,t,n)=>{"use strict";e.exports=o;var r=n(3796);((o.prototype=Object.create(r.prototype)).constructor=o).className="MapField";var i=n(1517),a=n(6866);function o(e,t,n,i,o,s){if(r.call(this,e,t,i,void 0,void 0,o,s),!a.isString(n))throw TypeError("keyType must be a string");this.keyType=n,this.resolvedKeyType=null,this.map=!0}o.fromJSON=function(e,t){return new o(e,t.id,t.keyType,t.type,t.options,t.comment)},o.prototype.toJSON=function(e){var t=!!e&&Boolean(e.keepComments);return a.toObject(["keyType",this.keyType,"type",this.type,"id",this.id,"extend",this.extend,"options",this.options,"comment",t?this.comment:void 0])},o.prototype.resolve=function(){if(this.resolved)return this;if(void 0===i.mapKey[this.keyType])throw Error("invalid key type: "+this.keyType);return r.prototype.resolve.call(this)},o.d=function(e,t,n){return"function"==typeof n?n=a.decorateType(n).name:n&&"object"==typeof n&&(n=a.decorateEnum(n).name),function(r,i){a.decorateType(r.constructor).add(new o(i,e,t,n))}}},9e3:(e,t,n)=>{"use strict";e.exports=i;var r=n(5382);function i(e){if(e)for(var t=Object.keys(e),n=0;n{"use strict";e.exports=a;var r=n(4349);((a.prototype=Object.create(r.prototype)).constructor=a).className="Method";var i=n(6866);function a(e,t,n,a,o,s,l,c,u){if(i.isObject(o)?(l=o,o=s=void 0):i.isObject(s)&&(l=s,s=void 0),void 0!==t&&!i.isString(t))throw TypeError("type must be a string");if(!i.isString(n))throw TypeError("requestType must be a string");if(!i.isString(a))throw TypeError("responseType must be a string");r.call(this,e,l),this.type=t||"rpc",this.requestType=n,this.requestStream=!!o||void 0,this.responseType=a,this.responseStream=!!s||void 0,this.resolvedRequestType=null,this.resolvedResponseType=null,this.comment=c,this.parsedOptions=u}a.fromJSON=function(e,t){return new a(e,t.type,t.requestType,t.responseType,t.requestStream,t.responseStream,t.options,t.comment,t.parsedOptions)},a.prototype.toJSON=function(e){var t=!!e&&Boolean(e.keepComments);return i.toObject(["type","rpc"!==this.type&&this.type||void 0,"requestType",this.requestType,"requestStream",this.requestStream,"responseType",this.responseType,"responseStream",this.responseStream,"options",this.options,"comment",t?this.comment:void 0,"parsedOptions",this.parsedOptions])},a.prototype.resolve=function(){return this.resolved?this:(this.resolvedRequestType=this.parent.lookupType(this.requestType),this.resolvedResponseType=this.parent.lookupType(this.responseType),r.prototype.resolve.call(this))}},2815:(e,t,n)=>{"use strict";e.exports=d;var r=n(4349);((d.prototype=Object.create(r.prototype)).constructor=d).className="Namespace";var i,a,o,s=n(3796),l=n(6866),c=n(8957);function u(e,t){if(e&&e.length){for(var n={},r=0;rt)return!0;return!1},d.isReservedName=function(e,t){if(e)for(var n=0;n0;){var r=e.shift();if(n.nested&&n.nested[r]){if(!((n=n.nested[r])instanceof d))throw Error("path conflicts with non-namespace objects")}else n.add(n=new d(r))}return t&&n.addJSON(t),n},d.prototype.resolveAll=function(){for(var e=this.nestedArray,t=0;t-1)return r}else if(r instanceof d&&(r=r.lookup(e.slice(1),t,!0)))return r}else for(var i=0;i{"use strict";e.exports=a,a.className="ReflectionObject";var r,i=n(6866);function a(e,t){if(!i.isString(e))throw TypeError("name must be a string");if(t&&!i.isObject(t))throw TypeError("options must be an object");this.options=t,this.parsedOptions=null,this.name=e,this.parent=null,this.resolved=!1,this.comment=null,this.filename=null}Object.defineProperties(a.prototype,{root:{get:function(){for(var e=this;null!==e.parent;)e=e.parent;return e}},fullName:{get:function(){for(var e=[this.name],t=this.parent;t;)e.unshift(t.name),t=t.parent;return e.join(".")}}}),a.prototype.toJSON=function(){throw Error()},a.prototype.onAdd=function(e){this.parent&&this.parent!==e&&this.parent.remove(this),this.parent=e,this.resolved=!1;var t=e.root;t instanceof r&&t._handleAdd(this)},a.prototype.onRemove=function(e){var t=e.root;t instanceof r&&t._handleRemove(this),this.parent=null,this.resolved=!1},a.prototype.resolve=function(){return this.resolved||this.root instanceof r&&(this.resolved=!0),this},a.prototype.getOption=function(e){if(this.options)return this.options[e]},a.prototype.setOption=function(e,t,n){return n&&this.options&&void 0!==this.options[e]||((this.options||(this.options={}))[e]=t),this},a.prototype.setParsedOption=function(e,t,n){this.parsedOptions||(this.parsedOptions=[]);var r=this.parsedOptions;if(n){var a=r.find((function(t){return Object.prototype.hasOwnProperty.call(t,e)}));if(a){var o=a[e];i.setProperty(o,n,t)}else(a={})[e]=i.setProperty({},n,t),r.push(a)}else{var s={};s[e]=t,r.push(s)}return this},a.prototype.setOptions=function(e,t){if(e)for(var n=Object.keys(e),r=0;r{"use strict";e.exports=o;var r=n(4349);((o.prototype=Object.create(r.prototype)).constructor=o).className="OneOf";var i=n(3796),a=n(6866);function o(e,t,n,i){if(Array.isArray(t)||(n=t,t=void 0),r.call(this,e,n),void 0!==t&&!Array.isArray(t))throw TypeError("fieldNames must be an Array");this.oneof=t||[],this.fieldsArray=[],this.comment=i}function s(e){if(e.parent)for(var t=0;t-1&&this.oneof.splice(t,1),e.partOf=null,this},o.prototype.onAdd=function(e){r.prototype.onAdd.call(this,e);for(var t=0;t{"use strict";e.exports=l;var r,i=n(5382),a=i.LongBits,o=i.utf8;function s(e,t){return RangeError("index out of range: "+e.pos+" + "+(t||1)+" > "+e.len)}function l(e){this.buf=e,this.pos=0,this.len=e.length}var c,u="undefined"!=typeof Uint8Array?function(e){if(e instanceof Uint8Array||Array.isArray(e))return new l(e);throw Error("illegal buffer")}:function(e){if(Array.isArray(e))return new l(e);throw Error("illegal buffer")},d=function(){return i.Buffer?function(e){return(l.create=function(e){return i.Buffer.isBuffer(e)?new r(e):u(e)})(e)}:u};function p(){var e=new a(0,0),t=0;if(!(this.len-this.pos>4)){for(;t<3;++t){if(this.pos>=this.len)throw s(this);if(e.lo=(e.lo|(127&this.buf[this.pos])<<7*t)>>>0,this.buf[this.pos++]<128)return e}return e.lo=(e.lo|(127&this.buf[this.pos++])<<7*t)>>>0,e}for(;t<4;++t)if(e.lo=(e.lo|(127&this.buf[this.pos])<<7*t)>>>0,this.buf[this.pos++]<128)return e;if(e.lo=(e.lo|(127&this.buf[this.pos])<<28)>>>0,e.hi=(e.hi|(127&this.buf[this.pos])>>4)>>>0,this.buf[this.pos++]<128)return e;if(t=0,this.len-this.pos>4){for(;t<5;++t)if(e.hi=(e.hi|(127&this.buf[this.pos])<<7*t+3)>>>0,this.buf[this.pos++]<128)return e}else for(;t<5;++t){if(this.pos>=this.len)throw s(this);if(e.hi=(e.hi|(127&this.buf[this.pos])<<7*t+3)>>>0,this.buf[this.pos++]<128)return e}throw Error("invalid varint encoding")}function h(e,t){return(e[t-4]|e[t-3]<<8|e[t-2]<<16|e[t-1]<<24)>>>0}function f(){if(this.pos+8>this.len)throw s(this,8);return new a(h(this.buf,this.pos+=4),h(this.buf,this.pos+=4))}l.create=d(),l.prototype._slice=i.Array.prototype.subarray||i.Array.prototype.slice,l.prototype.uint32=(c=4294967295,function(){if(c=(127&this.buf[this.pos])>>>0,this.buf[this.pos++]<128)return c;if(c=(c|(127&this.buf[this.pos])<<7)>>>0,this.buf[this.pos++]<128)return c;if(c=(c|(127&this.buf[this.pos])<<14)>>>0,this.buf[this.pos++]<128)return c;if(c=(c|(127&this.buf[this.pos])<<21)>>>0,this.buf[this.pos++]<128)return c;if(c=(c|(15&this.buf[this.pos])<<28)>>>0,this.buf[this.pos++]<128)return c;if((this.pos+=5)>this.len)throw this.pos=this.len,s(this,10);return c}),l.prototype.int32=function(){return 0|this.uint32()},l.prototype.sint32=function(){var e=this.uint32();return e>>>1^-(1&e)},l.prototype.bool=function(){return 0!==this.uint32()},l.prototype.fixed32=function(){if(this.pos+4>this.len)throw s(this,4);return h(this.buf,this.pos+=4)},l.prototype.sfixed32=function(){if(this.pos+4>this.len)throw s(this,4);return 0|h(this.buf,this.pos+=4)},l.prototype.float=function(){if(this.pos+4>this.len)throw s(this,4);var e=i.float.readFloatLE(this.buf,this.pos);return this.pos+=4,e},l.prototype.double=function(){if(this.pos+8>this.len)throw s(this,4);var e=i.float.readDoubleLE(this.buf,this.pos);return this.pos+=8,e},l.prototype.bytes=function(){var e=this.uint32(),t=this.pos,n=this.pos+e;if(n>this.len)throw s(this,e);if(this.pos+=e,Array.isArray(this.buf))return this.buf.slice(t,n);if(t===n){var r=i.Buffer;return r?r.alloc(0):new this.buf.constructor(0)}return this._slice.call(this.buf,t,n)},l.prototype.string=function(){var e=this.bytes();return o.read(e,0,e.length)},l.prototype.skip=function(e){if("number"==typeof e){if(this.pos+e>this.len)throw s(this,e);this.pos+=e}else do{if(this.pos>=this.len)throw s(this)}while(128&this.buf[this.pos++]);return this},l.prototype.skipType=function(e){switch(e){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;4!=(e=7&this.uint32());)this.skipType(e);break;case 5:this.skip(4);break;default:throw Error("invalid wire type "+e+" at offset "+this.pos)}return this},l._configure=function(e){r=e,l.create=d(),r._configure();var t=i.Long?"toLong":"toNumber";i.merge(l.prototype,{int64:function(){return p.call(this)[t](!1)},uint64:function(){return p.call(this)[t](!0)},sint64:function(){return p.call(this).zzDecode()[t](!1)},fixed64:function(){return f.call(this)[t](!0)},sfixed64:function(){return f.call(this)[t](!1)}})}},4010:(e,t,n)=>{"use strict";e.exports=a;var r=n(1137);(a.prototype=Object.create(r.prototype)).constructor=a;var i=n(5382);function a(e){r.call(this,e)}a._configure=function(){i.Buffer&&(a.prototype._slice=i.Buffer.prototype.slice)},a.prototype.string=function(){var e=this.uint32();return this.buf.utf8Slice?this.buf.utf8Slice(this.pos,this.pos=Math.min(this.pos+e,this.len)):this.buf.toString("utf-8",this.pos,this.pos=Math.min(this.pos+e,this.len))},a._configure()},8038:(e,t,n)=>{"use strict";e.exports=d;var r=n(2815);((d.prototype=Object.create(r.prototype)).constructor=d).className="Root";var i,a,o,s=n(3796),l=n(2775),c=n(8957),u=n(6866);function d(e){r.call(this,"",e),this.deferred=[],this.files=[]}function p(){}d.fromJSON=function(e,t){return t||(t=new d),e.options&&t.setOptions(e.options),t.addJSON(e.nested)},d.prototype.resolvePath=u.path.resolve,d.prototype.fetch=u.fetch,d.prototype.load=function e(t,n,r){"function"==typeof n&&(r=n,n=void 0);var i=this;if(!r)return u.asPromise(e,i,t,n);var s=r===p;function l(e,t){if(r){if(s)throw e;var n=r;r=null,n(e,t)}}function c(e){var t=e.lastIndexOf("google/protobuf/");if(t>-1){var n=e.substring(t);if(n in o)return n}return null}function d(e,t){try{if(u.isString(t)&&"{"===t.charAt(0)&&(t=JSON.parse(t)),u.isString(t)){a.filename=e;var r,o=a(t,i,n),d=0;if(o.imports)for(;d-1))if(i.files.push(e),e in o)s?d(e,o[e]):(++f,setTimeout((function(){--f,d(e,o[e])})));else if(s){var n;try{n=u.fs.readFileSync(e).toString("utf8")}catch(e){return void(t||l(e))}d(e,n)}else++f,i.fetch(e,(function(n,a){--f,r&&(n?t?f||l(null,i):l(n):d(e,a))}))}var f=0;u.isString(t)&&(t=[t]);for(var m,g=0;g-1&&this.deferred.splice(t,1)}}else if(e instanceof l)h.test(e.name)&&delete e.parent[e.name];else if(e instanceof r){for(var n=0;n{"use strict";e.exports={}},9691:(e,t,n)=>{"use strict";t.Service=n(4447)},4447:(e,t,n)=>{"use strict";e.exports=i;var r=n(5382);function i(e,t,n){if("function"!=typeof e)throw TypeError("rpcImpl must be a function");r.EventEmitter.call(this),this.rpcImpl=e,this.requestDelimited=Boolean(t),this.responseDelimited=Boolean(n)}(i.prototype=Object.create(r.EventEmitter.prototype)).constructor=i,i.prototype.rpcCall=function e(t,n,i,a,o){if(!a)throw TypeError("request must be specified");var s=this;if(!o)return r.asPromise(e,s,t,n,i,a);if(s.rpcImpl)try{return s.rpcImpl(t,n[s.requestDelimited?"encodeDelimited":"encode"](a).finish(),(function(e,n){if(e)return s.emit("error",e,t),o(e);if(null!==n){if(!(n instanceof i))try{n=i[s.responseDelimited?"decodeDelimited":"decode"](n)}catch(e){return s.emit("error",e,t),o(e)}return s.emit("data",n,t),o(null,n)}s.end(!0)}))}catch(e){return s.emit("error",e,t),void setTimeout((function(){o(e)}),0)}else setTimeout((function(){o(Error("already ended"))}),0)},i.prototype.end=function(e){return this.rpcImpl&&(e||this.rpcImpl(null,null,null),this.rpcImpl=null,this.emit("end").off()),this}},6467:(e,t,n)=>{"use strict";e.exports=s;var r=n(2815);((s.prototype=Object.create(r.prototype)).constructor=s).className="Service";var i=n(3055),a=n(6866),o=n(9691);function s(e,t){r.call(this,e,t),this.methods={},this._methodsArray=null}function l(e){return e._methodsArray=null,e}s.fromJSON=function(e,t){var n=new s(e,t.options);if(t.methods)for(var r=Object.keys(t.methods),a=0;a{"use strict";e.exports=b;var r=n(2815);((b.prototype=Object.create(r.prototype)).constructor=b).className="Type";var i=n(2775),a=n(8957),o=n(3796),s=n(9504),l=n(6467),c=n(9e3),u=n(1137),d=n(4301),p=n(6866),h=n(8852),f=n(9980),m=n(3040),g=n(3804),y=n(6942);function b(e,t){r.call(this,e,t),this.fields={},this.oneofs=void 0,this.extensions=void 0,this.reserved=void 0,this.group=void 0,this._fieldsById=null,this._fieldsArray=null,this._oneofsArray=null,this._ctor=null}function v(e){return e._fieldsById=e._fieldsArray=e._oneofsArray=null,delete e.encode,delete e.decode,delete e.verify,e}Object.defineProperties(b.prototype,{fieldsById:{get:function(){if(this._fieldsById)return this._fieldsById;this._fieldsById={};for(var e=Object.keys(this.fields),t=0;t{"use strict";var r=t,i=n(6866),a=["double","float","int32","uint32","sint32","fixed32","sfixed32","int64","uint64","sint64","fixed64","sfixed64","bool","string","bytes"];function o(e,t){var n=0,r={};for(t|=0;n{"use strict";var r,i,a=e.exports=n(5382),o=n(381);a.codegen=n(7669),a.fetch=n(9240),a.path=n(2459),a.fs=a.inquire("fs"),a.toArray=function(e){if(e){for(var t=Object.keys(e),n=new Array(t.length),r=0;r0)t[i]=e(t[i]||{},n,r);else{var a=t[i];a&&(r=[].concat(a).concat(r)),t[i]=r}return t}(e,t=t.split("."),n)},Object.defineProperty(a,"decorateRoot",{get:function(){return o.decorated||(o.decorated=new(n(8038)))}})},5003:(e,t,n)=>{"use strict";e.exports=i;var r=n(5382);function i(e,t){this.lo=e>>>0,this.hi=t>>>0}var a=i.zero=new i(0,0);a.toNumber=function(){return 0},a.zzEncode=a.zzDecode=function(){return this},a.length=function(){return 1};var o=i.zeroHash="\0\0\0\0\0\0\0\0";i.fromNumber=function(e){if(0===e)return a;var t=e<0;t&&(e=-e);var n=e>>>0,r=(e-n)/4294967296>>>0;return t&&(r=~r>>>0,n=~n>>>0,++n>4294967295&&(n=0,++r>4294967295&&(r=0))),new i(n,r)},i.from=function(e){if("number"==typeof e)return i.fromNumber(e);if(r.isString(e)){if(!r.Long)return i.fromNumber(parseInt(e,10));e=r.Long.fromString(e)}return e.low||e.high?new i(e.low>>>0,e.high>>>0):a},i.prototype.toNumber=function(e){if(!e&&this.hi>>>31){var t=1+~this.lo>>>0,n=~this.hi>>>0;return t||(n=n+1>>>0),-(t+4294967296*n)}return this.lo+4294967296*this.hi},i.prototype.toLong=function(e){return r.Long?new r.Long(0|this.lo,0|this.hi,Boolean(e)):{low:0|this.lo,high:0|this.hi,unsigned:Boolean(e)}};var s=String.prototype.charCodeAt;i.fromHash=function(e){return e===o?a:new i((s.call(e,0)|s.call(e,1)<<8|s.call(e,2)<<16|s.call(e,3)<<24)>>>0,(s.call(e,4)|s.call(e,5)<<8|s.call(e,6)<<16|s.call(e,7)<<24)>>>0)},i.prototype.toHash=function(){return String.fromCharCode(255&this.lo,this.lo>>>8&255,this.lo>>>16&255,this.lo>>>24,255&this.hi,this.hi>>>8&255,this.hi>>>16&255,this.hi>>>24)},i.prototype.zzEncode=function(){var e=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^e)>>>0,this.lo=(this.lo<<1^e)>>>0,this},i.prototype.zzDecode=function(){var e=-(1&this.lo);return this.lo=((this.lo>>>1|this.hi<<31)^e)>>>0,this.hi=(this.hi>>>1^e)>>>0,this},i.prototype.length=function(){var e=this.lo,t=(this.lo>>>28|this.hi<<4)>>>0,n=this.hi>>>24;return 0===n?0===t?e<16384?e<128?1:2:e<2097152?3:4:t<16384?t<128?5:6:t<2097152?7:8:n<128?9:10}},5382:function(e,t,n){"use strict";var r=t;function i(e,t,n){for(var r=Object.keys(t),i=0;i0)},r.Buffer=function(){try{var e=r.inquire("buffer").Buffer;return e.prototype.utf8Write?e:null}catch(e){return null}}(),r._Buffer_from=null,r._Buffer_allocUnsafe=null,r.newBuffer=function(e){return"number"==typeof e?r.Buffer?r._Buffer_allocUnsafe(e):new r.Array(e):r.Buffer?r._Buffer_from(e):"undefined"==typeof Uint8Array?e:new Uint8Array(e)},r.Array="undefined"!=typeof Uint8Array?Uint8Array:Array,r.Long=r.global.dcodeIO&&r.global.dcodeIO.Long||r.global.Long||r.inquire("long"),r.key2Re=/^true|false|0|1$/,r.key32Re=/^-?(?:0|[1-9][0-9]*)$/,r.key64Re=/^(?:[\\x00-\\xff]{8}|-?(?:0|[1-9][0-9]*))$/,r.longToHash=function(e){return e?r.LongBits.from(e).toHash():r.LongBits.zeroHash},r.longFromHash=function(e,t){var n=r.LongBits.fromHash(e);return r.Long?r.Long.fromBits(n.lo,n.hi,t):n.toNumber(Boolean(t))},r.merge=i,r.lcFirst=function(e){return e.charAt(0).toLowerCase()+e.substring(1)},r.newError=a,r.ProtocolError=a("ProtocolError"),r.oneOfGetter=function(e){for(var t={},n=0;n-1;--n)if(1===t[e[n]]&&void 0!==this[e[n]]&&null!==this[e[n]])return e[n]}},r.oneOfSetter=function(e){return function(t){for(var n=0;n{"use strict";e.exports=function(e){var t=i.codegen(["m"],e.name+"$verify")('if(typeof m!=="object"||m===null)')("return%j","object expected"),n=e.oneofsArray,r={};n.length&&t("var p={}");for(var l=0;l{"use strict";var r=t,i=n(9e3);r[".google.protobuf.Any"]={fromObject:function(e){if(e&&e["@type"]){var t=e["@type"].substring(e["@type"].lastIndexOf("/")+1),n=this.lookup(t);if(n){var r="."===e["@type"].charAt(0)?e["@type"].slice(1):e["@type"];return-1===r.indexOf("/")&&(r="/"+r),this.create({type_url:r,value:n.encode(n.fromObject(e)).finish()})}}return this.fromObject(e)},toObject:function(e,t){var n="",r="";if(t&&t.json&&e.type_url&&e.value){r=e.type_url.substring(e.type_url.lastIndexOf("/")+1),n=e.type_url.substring(0,e.type_url.lastIndexOf("/")+1);var a=this.lookup(r);a&&(e=a.decode(e.value))}if(!(e instanceof this.ctor)&&e instanceof i){var o=e.$type.toObject(e,t);return""===n&&(n="type.googleapis.com/"),r=n+("."===e.$type.fullName[0]?e.$type.fullName.slice(1):e.$type.fullName),o["@type"]=r,o}return this.toObject(e,t)}}},4301:(e,t,n)=>{"use strict";e.exports=d;var r,i=n(5382),a=i.LongBits,o=i.base64,s=i.utf8;function l(e,t,n){this.fn=e,this.len=t,this.next=void 0,this.val=n}function c(){}function u(e){this.head=e.head,this.tail=e.tail,this.len=e.len,this.next=e.states}function d(){this.len=0,this.head=new l(c,0,0),this.tail=this.head,this.states=null}var p=function(){return i.Buffer?function(){return(d.create=function(){return new r})()}:function(){return new d}};function h(e,t,n){t[n]=255&e}function f(e,t){this.len=e,this.next=void 0,this.val=t}function m(e,t,n){for(;e.hi;)t[n++]=127&e.lo|128,e.lo=(e.lo>>>7|e.hi<<25)>>>0,e.hi>>>=7;for(;e.lo>127;)t[n++]=127&e.lo|128,e.lo=e.lo>>>7;t[n++]=e.lo}function g(e,t,n){t[n]=255&e,t[n+1]=e>>>8&255,t[n+2]=e>>>16&255,t[n+3]=e>>>24}d.create=p(),d.alloc=function(e){return new i.Array(e)},i.Array!==Array&&(d.alloc=i.pool(d.alloc,i.Array.prototype.subarray)),d.prototype._push=function(e,t,n){return this.tail=this.tail.next=new l(e,t,n),this.len+=t,this},f.prototype=Object.create(l.prototype),f.prototype.fn=function(e,t,n){for(;e>127;)t[n++]=127&e|128,e>>>=7;t[n]=e},d.prototype.uint32=function(e){return this.len+=(this.tail=this.tail.next=new f((e>>>=0)<128?1:e<16384?2:e<2097152?3:e<268435456?4:5,e)).len,this},d.prototype.int32=function(e){return e<0?this._push(m,10,a.fromNumber(e)):this.uint32(e)},d.prototype.sint32=function(e){return this.uint32((e<<1^e>>31)>>>0)},d.prototype.uint64=function(e){var t=a.from(e);return this._push(m,t.length(),t)},d.prototype.int64=d.prototype.uint64,d.prototype.sint64=function(e){var t=a.from(e).zzEncode();return this._push(m,t.length(),t)},d.prototype.bool=function(e){return this._push(h,1,e?1:0)},d.prototype.fixed32=function(e){return this._push(g,4,e>>>0)},d.prototype.sfixed32=d.prototype.fixed32,d.prototype.fixed64=function(e){var t=a.from(e);return this._push(g,4,t.lo)._push(g,4,t.hi)},d.prototype.sfixed64=d.prototype.fixed64,d.prototype.float=function(e){return this._push(i.float.writeFloatLE,4,e)},d.prototype.double=function(e){return this._push(i.float.writeDoubleLE,8,e)};var y=i.Array.prototype.set?function(e,t,n){t.set(e,n)}:function(e,t,n){for(var r=0;r>>0;if(!t)return this._push(h,1,0);if(i.isString(e)){var n=d.alloc(t=o.length(e));o.decode(e,n,0),e=n}return this.uint32(t)._push(y,t,e)},d.prototype.string=function(e){var t=s.length(e);return t?this.uint32(t)._push(s.write,t,e):this._push(h,1,0)},d.prototype.fork=function(){return this.states=new u(this),this.head=this.tail=new l(c,0,0),this.len=0,this},d.prototype.reset=function(){return this.states?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new l(c,0,0),this.len=0),this},d.prototype.ldelim=function(){var e=this.head,t=this.tail,n=this.len;return this.reset().uint32(n),n&&(this.tail.next=e.next,this.tail=t,this.len+=n),this},d.prototype.finish=function(){for(var e=this.head.next,t=this.constructor.alloc(this.len),n=0;e;)e.fn(e.val,t,n),n+=e.len,e=e.next;return t},d._configure=function(e){r=e,d.create=p(),r._configure()}},8422:(e,t,n)=>{"use strict";e.exports=a;var r=n(4301);(a.prototype=Object.create(r.prototype)).constructor=a;var i=n(5382);function a(){r.call(this)}function o(e,t,n){e.length<40?i.utf8.write(e,t,n):t.utf8Write?t.utf8Write(e,n):t.write(e,n)}a._configure=function(){a.alloc=i._Buffer_allocUnsafe,a.writeBytesBuffer=i.Buffer&&i.Buffer.prototype instanceof Uint8Array&&"set"===i.Buffer.prototype.set.name?function(e,t,n){t.set(e,n)}:function(e,t,n){if(e.copy)e.copy(t,n,0,e.length);else for(var r=0;r>>0;return this.uint32(t),t&&this._push(a.writeBytesBuffer,t,e),this},a.prototype.string=function(e){var t=i.Buffer.byteLength(e);return this.uint32(t),t&&this._push(o,t,e),this},a._configure()},9111:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"DraggableCore",{enumerable:!0,get:function(){return u.default}}),t.default=void 0;var r=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=h(t);if(n&&n.has(e))return n.get(e);var r={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var o=i?Object.getOwnPropertyDescriptor(e,a):null;o&&(o.get||o.set)?Object.defineProperty(r,a,o):r[a]=e[a]}r.default=e,n&&n.set(e,r);return r}(n(5959)),i=p(n(2688)),a=p(n(8398)),o=p(n(8262)),s=n(2837),l=n(402),c=n(6732),u=p(n(1060)),d=p(n(7988));function p(e){return e&&e.__esModule?e:{default:e}}function h(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(h=function(e){return e?n:t})(e)}function f(){return f=Object.assign?Object.assign.bind():function(e){for(var t=1;t{(0,d.default)("Draggable: onDragStart: %j",t);if(!1===this.props.onStart(e,(0,l.createDraggableData)(this,t)))return!1;this.setState({dragging:!0,dragged:!0})})),m(this,"onDrag",((e,t)=>{if(!this.state.dragging)return!1;(0,d.default)("Draggable: onDrag: %j",t);const n=(0,l.createDraggableData)(this,t),r={x:n.x,y:n.y,slackX:0,slackY:0};if(this.props.bounds){const{x:e,y:t}=r;r.x+=this.state.slackX,r.y+=this.state.slackY;const[i,a]=(0,l.getBoundPosition)(this,r.x,r.y);r.x=i,r.y=a,r.slackX=this.state.slackX+(e-r.x),r.slackY=this.state.slackY+(t-r.y),n.x=r.x,n.y=r.y,n.deltaX=r.x-this.state.x,n.deltaY=r.y-this.state.y}if(!1===this.props.onDrag(e,n))return!1;this.setState(r)})),m(this,"onDragStop",((e,t)=>{if(!this.state.dragging)return!1;if(!1===this.props.onStop(e,(0,l.createDraggableData)(this,t)))return!1;(0,d.default)("Draggable: onDragStop: %j",t);const n={dragging:!1,slackX:0,slackY:0};if(Boolean(this.props.position)){const{x:e,y:t}=this.props.position;n.x=e,n.y=t}this.setState(n)})),this.state={dragging:!1,dragged:!1,x:e.position?e.position.x:e.defaultPosition.x,y:e.position?e.position.y:e.defaultPosition.y,prevPropsPosition:{...e.position},slackX:0,slackY:0,isElementSVG:!1},!e.position||e.onDrag||e.onStop||console.warn("A `position` was applied to this , without drag handlers. This will make this component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the `position` of this element.")}componentDidMount(){void 0!==window.SVGElement&&this.findDOMNode()instanceof window.SVGElement&&this.setState({isElementSVG:!0})}componentWillUnmount(){this.setState({dragging:!1})}findDOMNode(){var e,t;return null!==(e=null===(t=this.props)||void 0===t||null===(t=t.nodeRef)||void 0===t?void 0:t.current)&&void 0!==e?e:a.default.findDOMNode(this)}render(){const{axis:e,bounds:t,children:n,defaultPosition:i,defaultClassName:a,defaultClassNameDragging:c,defaultClassNameDragged:d,position:p,positionOffset:h,scale:m,...g}=this.props;let y={},b=null;const v=!Boolean(p)||this.state.dragging,w=p||i,S={x:(0,l.canDragX)(this)&&v?this.state.x:w.x,y:(0,l.canDragY)(this)&&v?this.state.y:w.y};this.state.isElementSVG?b=(0,s.createSVGTransform)(S,h):y=(0,s.createCSSTransform)(S,h);const E=(0,o.default)(n.props.className||"",a,{[c]:this.state.dragging,[d]:this.state.dragged});return r.createElement(u.default,f({},g,{onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop}),r.cloneElement(r.Children.only(n),{className:E,style:{...n.props.style,...y},transform:b}))}}t.default=g,m(g,"displayName","Draggable"),m(g,"propTypes",{...u.default.propTypes,axis:i.default.oneOf(["both","x","y","none"]),bounds:i.default.oneOfType([i.default.shape({left:i.default.number,right:i.default.number,top:i.default.number,bottom:i.default.number}),i.default.string,i.default.oneOf([!1])]),defaultClassName:i.default.string,defaultClassNameDragging:i.default.string,defaultClassNameDragged:i.default.string,defaultPosition:i.default.shape({x:i.default.number,y:i.default.number}),positionOffset:i.default.shape({x:i.default.oneOfType([i.default.number,i.default.string]),y:i.default.oneOfType([i.default.number,i.default.string])}),position:i.default.shape({x:i.default.number,y:i.default.number}),className:c.dontSetMe,style:c.dontSetMe,transform:c.dontSetMe}),m(g,"defaultProps",{...u.default.defaultProps,axis:"both",bounds:!1,defaultClassName:"react-draggable",defaultClassNameDragging:"react-draggable-dragging",defaultClassNameDragged:"react-draggable-dragged",defaultPosition:{x:0,y:0},scale:1})},1060:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=d(t);if(n&&n.has(e))return n.get(e);var r={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var o=i?Object.getOwnPropertyDescriptor(e,a):null;o&&(o.get||o.set)?Object.defineProperty(r,a,o):r[a]=e[a]}r.default=e,n&&n.set(e,r);return r}(n(5959)),i=u(n(2688)),a=u(n(8398)),o=n(2837),s=n(402),l=n(6732),c=u(n(7988));function u(e){return e&&e.__esModule?e:{default:e}}function d(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(d=function(e){return e?n:t})(e)}function p(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const h={start:"touchstart",move:"touchmove",stop:"touchend"},f={start:"mousedown",move:"mousemove",stop:"mouseup"};let m=f;class g extends r.Component{constructor(){super(...arguments),p(this,"dragging",!1),p(this,"lastX",NaN),p(this,"lastY",NaN),p(this,"touchIdentifier",null),p(this,"mounted",!1),p(this,"handleDragStart",(e=>{if(this.props.onMouseDown(e),!this.props.allowAnyClick&&"number"==typeof e.button&&0!==e.button)return!1;const t=this.findDOMNode();if(!t||!t.ownerDocument||!t.ownerDocument.body)throw new Error(" not mounted on DragStart!");const{ownerDocument:n}=t;if(this.props.disabled||!(e.target instanceof n.defaultView.Node)||this.props.handle&&!(0,o.matchesSelectorAndParentsTo)(e.target,this.props.handle,t)||this.props.cancel&&(0,o.matchesSelectorAndParentsTo)(e.target,this.props.cancel,t))return;"touchstart"===e.type&&e.preventDefault();const r=(0,o.getTouchIdentifier)(e);this.touchIdentifier=r;const i=(0,s.getControlPosition)(e,r,this);if(null==i)return;const{x:a,y:l}=i,u=(0,s.createCoreData)(this,a,l);(0,c.default)("DraggableCore: handleDragStart: %j",u),(0,c.default)("calling",this.props.onStart);!1!==this.props.onStart(e,u)&&!1!==this.mounted&&(this.props.enableUserSelectHack&&(0,o.addUserSelectStyles)(n),this.dragging=!0,this.lastX=a,this.lastY=l,(0,o.addEvent)(n,m.move,this.handleDrag),(0,o.addEvent)(n,m.stop,this.handleDragStop))})),p(this,"handleDrag",(e=>{const t=(0,s.getControlPosition)(e,this.touchIdentifier,this);if(null==t)return;let{x:n,y:r}=t;if(Array.isArray(this.props.grid)){let e=n-this.lastX,t=r-this.lastY;if([e,t]=(0,s.snapToGrid)(this.props.grid,e,t),!e&&!t)return;n=this.lastX+e,r=this.lastY+t}const i=(0,s.createCoreData)(this,n,r);(0,c.default)("DraggableCore: handleDrag: %j",i);if(!1!==this.props.onDrag(e,i)&&!1!==this.mounted)this.lastX=n,this.lastY=r;else try{this.handleDragStop(new MouseEvent("mouseup"))}catch(e){const t=document.createEvent("MouseEvents");t.initMouseEvent("mouseup",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),this.handleDragStop(t)}})),p(this,"handleDragStop",(e=>{if(!this.dragging)return;const t=(0,s.getControlPosition)(e,this.touchIdentifier,this);if(null==t)return;let{x:n,y:r}=t;if(Array.isArray(this.props.grid)){let e=n-this.lastX||0,t=r-this.lastY||0;[e,t]=(0,s.snapToGrid)(this.props.grid,e,t),n=this.lastX+e,r=this.lastY+t}const i=(0,s.createCoreData)(this,n,r);if(!1===this.props.onStop(e,i)||!1===this.mounted)return!1;const a=this.findDOMNode();a&&this.props.enableUserSelectHack&&(0,o.removeUserSelectStyles)(a.ownerDocument),(0,c.default)("DraggableCore: handleDragStop: %j",i),this.dragging=!1,this.lastX=NaN,this.lastY=NaN,a&&((0,c.default)("DraggableCore: Removing handlers"),(0,o.removeEvent)(a.ownerDocument,m.move,this.handleDrag),(0,o.removeEvent)(a.ownerDocument,m.stop,this.handleDragStop))})),p(this,"onMouseDown",(e=>(m=f,this.handleDragStart(e)))),p(this,"onMouseUp",(e=>(m=f,this.handleDragStop(e)))),p(this,"onTouchStart",(e=>(m=h,this.handleDragStart(e)))),p(this,"onTouchEnd",(e=>(m=h,this.handleDragStop(e))))}componentDidMount(){this.mounted=!0;const e=this.findDOMNode();e&&(0,o.addEvent)(e,h.start,this.onTouchStart,{passive:!1})}componentWillUnmount(){this.mounted=!1;const e=this.findDOMNode();if(e){const{ownerDocument:t}=e;(0,o.removeEvent)(t,f.move,this.handleDrag),(0,o.removeEvent)(t,h.move,this.handleDrag),(0,o.removeEvent)(t,f.stop,this.handleDragStop),(0,o.removeEvent)(t,h.stop,this.handleDragStop),(0,o.removeEvent)(e,h.start,this.onTouchStart,{passive:!1}),this.props.enableUserSelectHack&&(0,o.removeUserSelectStyles)(t)}}findDOMNode(){var e,t;return null!==(e=this.props)&&void 0!==e&&e.nodeRef?null===(t=this.props)||void 0===t||null===(t=t.nodeRef)||void 0===t?void 0:t.current:a.default.findDOMNode(this)}render(){return r.cloneElement(r.Children.only(this.props.children),{onMouseDown:this.onMouseDown,onMouseUp:this.onMouseUp,onTouchEnd:this.onTouchEnd})}}t.default=g,p(g,"displayName","DraggableCore"),p(g,"propTypes",{allowAnyClick:i.default.bool,children:i.default.node.isRequired,disabled:i.default.bool,enableUserSelectHack:i.default.bool,offsetParent:function(e,t){if(e[t]&&1!==e[t].nodeType)throw new Error("Draggable's offsetParent must be a DOM Node.")},grid:i.default.arrayOf(i.default.number),handle:i.default.string,cancel:i.default.string,nodeRef:i.default.object,onStart:i.default.func,onDrag:i.default.func,onStop:i.default.func,onMouseDown:i.default.func,scale:i.default.number,className:l.dontSetMe,style:l.dontSetMe,transform:l.dontSetMe}),p(g,"defaultProps",{allowAnyClick:!1,disabled:!1,enableUserSelectHack:!0,onStart:function(){},onDrag:function(){},onStop:function(){},onMouseDown:function(){},scale:1})},8230:(e,t,n)=>{"use strict";const{default:r,DraggableCore:i}=n(9111);e.exports=r,e.exports.default=r,e.exports.DraggableCore=i},2837:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.addClassName=c,t.addEvent=function(e,t,n,r){if(!e)return;const i={capture:!0,...r};e.addEventListener?e.addEventListener(t,n,i):e.attachEvent?e.attachEvent("on"+t,n):e["on"+t]=n},t.addUserSelectStyles=function(e){if(!e)return;let t=e.getElementById("react-draggable-style-el");t||(t=e.createElement("style"),t.type="text/css",t.id="react-draggable-style-el",t.innerHTML=".react-draggable-transparent-selection *::-moz-selection {all: inherit;}\n",t.innerHTML+=".react-draggable-transparent-selection *::selection {all: inherit;}\n",e.getElementsByTagName("head")[0].appendChild(t));e.body&&c(e.body,"react-draggable-transparent-selection")},t.createCSSTransform=function(e,t){const n=l(e,t,"px");return{[(0,i.browserPrefixToKey)("transform",i.default)]:n}},t.createSVGTransform=function(e,t){return l(e,t,"")},t.getTouch=function(e,t){return e.targetTouches&&(0,r.findInArray)(e.targetTouches,(e=>t===e.identifier))||e.changedTouches&&(0,r.findInArray)(e.changedTouches,(e=>t===e.identifier))},t.getTouchIdentifier=function(e){if(e.targetTouches&&e.targetTouches[0])return e.targetTouches[0].identifier;if(e.changedTouches&&e.changedTouches[0])return e.changedTouches[0].identifier},t.getTranslation=l,t.innerHeight=function(e){let t=e.clientHeight;const n=e.ownerDocument.defaultView.getComputedStyle(e);return t-=(0,r.int)(n.paddingTop),t-=(0,r.int)(n.paddingBottom),t},t.innerWidth=function(e){let t=e.clientWidth;const n=e.ownerDocument.defaultView.getComputedStyle(e);return t-=(0,r.int)(n.paddingLeft),t-=(0,r.int)(n.paddingRight),t},t.matchesSelector=s,t.matchesSelectorAndParentsTo=function(e,t,n){let r=e;do{if(s(r,t))return!0;if(r===n)return!1;r=r.parentNode}while(r);return!1},t.offsetXYFromParent=function(e,t,n){const r=t===t.ownerDocument.body?{left:0,top:0}:t.getBoundingClientRect(),i=(e.clientX+t.scrollLeft-r.left)/n,a=(e.clientY+t.scrollTop-r.top)/n;return{x:i,y:a}},t.outerHeight=function(e){let t=e.clientHeight;const n=e.ownerDocument.defaultView.getComputedStyle(e);return t+=(0,r.int)(n.borderTopWidth),t+=(0,r.int)(n.borderBottomWidth),t},t.outerWidth=function(e){let t=e.clientWidth;const n=e.ownerDocument.defaultView.getComputedStyle(e);return t+=(0,r.int)(n.borderLeftWidth),t+=(0,r.int)(n.borderRightWidth),t},t.removeClassName=u,t.removeEvent=function(e,t,n,r){if(!e)return;const i={capture:!0,...r};e.removeEventListener?e.removeEventListener(t,n,i):e.detachEvent?e.detachEvent("on"+t,n):e["on"+t]=null},t.removeUserSelectStyles=function(e){if(!e)return;try{if(e.body&&u(e.body,"react-draggable-transparent-selection"),e.selection)e.selection.empty();else{const t=(e.defaultView||window).getSelection();t&&"Caret"!==t.type&&t.removeAllRanges()}}catch(e){}};var r=n(6732),i=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=a(t);if(n&&n.has(e))return n.get(e);var r={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&Object.prototype.hasOwnProperty.call(e,o)){var s=i?Object.getOwnPropertyDescriptor(e,o):null;s&&(s.get||s.set)?Object.defineProperty(r,o,s):r[o]=e[o]}r.default=e,n&&n.set(e,r);return r}(n(7350));function a(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(a=function(e){return e?n:t})(e)}let o="";function s(e,t){return o||(o=(0,r.findInArray)(["matches","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector"],(function(t){return(0,r.isFunction)(e[t])}))),!!(0,r.isFunction)(e[o])&&e[o](t)}function l(e,t,n){let{x:r,y:i}=e,a="translate(".concat(r).concat(n,",").concat(i).concat(n,")");if(t){const e="".concat("string"==typeof t.x?t.x:t.x+n),r="".concat("string"==typeof t.y?t.y:t.y+n);a="translate(".concat(e,", ").concat(r,")")+a}return a}function c(e,t){e.classList?e.classList.add(t):e.className.match(new RegExp("(?:^|\\s)".concat(t,"(?!\\S)")))||(e.className+=" ".concat(t))}function u(e,t){e.classList?e.classList.remove(t):e.className=e.className.replace(new RegExp("(?:^|\\s)".concat(t,"(?!\\S)"),"g"),"")}},7350:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.browserPrefixToKey=i,t.browserPrefixToStyle=function(e,t){return t?"-".concat(t.toLowerCase(),"-").concat(e):e},t.default=void 0,t.getPrefix=r;const n=["Moz","Webkit","O","ms"];function r(){var e;let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"transform";if("undefined"==typeof window)return"";const r=null===(e=window.document)||void 0===e||null===(e=e.documentElement)||void 0===e?void 0:e.style;if(!r)return"";if(t in r)return"";for(let e=0;e{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){0}},402:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.canDragX=function(e){return"both"===e.props.axis||"x"===e.props.axis},t.canDragY=function(e){return"both"===e.props.axis||"y"===e.props.axis},t.createCoreData=function(e,t,n){const i=!(0,r.isNum)(e.lastX),o=a(e);return i?{node:o,deltaX:0,deltaY:0,lastX:t,lastY:n,x:t,y:n}:{node:o,deltaX:t-e.lastX,deltaY:n-e.lastY,lastX:e.lastX,lastY:e.lastY,x:t,y:n}},t.createDraggableData=function(e,t){const n=e.props.scale;return{node:t.node,x:e.state.x+t.deltaX/n,y:e.state.y+t.deltaY/n,deltaX:t.deltaX/n,deltaY:t.deltaY/n,lastX:e.state.x,lastY:e.state.y}},t.getBoundPosition=function(e,t,n){if(!e.props.bounds)return[t,n];let{bounds:o}=e.props;o="string"==typeof o?o:function(e){return{left:e.left,top:e.top,right:e.right,bottom:e.bottom}}(o);const s=a(e);if("string"==typeof o){const{ownerDocument:e}=s,t=e.defaultView;let n;if(n="parent"===o?s.parentNode:e.querySelector(o),!(n instanceof t.HTMLElement))throw new Error('Bounds selector "'+o+'" could not find an element.');const a=n,l=t.getComputedStyle(s),c=t.getComputedStyle(a);o={left:-s.offsetLeft+(0,r.int)(c.paddingLeft)+(0,r.int)(l.marginLeft),top:-s.offsetTop+(0,r.int)(c.paddingTop)+(0,r.int)(l.marginTop),right:(0,i.innerWidth)(a)-(0,i.outerWidth)(s)-s.offsetLeft+(0,r.int)(c.paddingRight)-(0,r.int)(l.marginRight),bottom:(0,i.innerHeight)(a)-(0,i.outerHeight)(s)-s.offsetTop+(0,r.int)(c.paddingBottom)-(0,r.int)(l.marginBottom)}}(0,r.isNum)(o.right)&&(t=Math.min(t,o.right));(0,r.isNum)(o.bottom)&&(n=Math.min(n,o.bottom));(0,r.isNum)(o.left)&&(t=Math.max(t,o.left));(0,r.isNum)(o.top)&&(n=Math.max(n,o.top));return[t,n]},t.getControlPosition=function(e,t,n){const r="number"==typeof t?(0,i.getTouch)(e,t):null;if("number"==typeof t&&!r)return null;const o=a(n),s=n.props.offsetParent||o.offsetParent||o.ownerDocument.body;return(0,i.offsetXYFromParent)(r||e,s,n.props.scale)},t.snapToGrid=function(e,t,n){const r=Math.round(t/e[0])*e[0],i=Math.round(n/e[1])*e[1];return[r,i]};var r=n(6732),i=n(2837);function a(e){const t=e.findDOMNode();if(!t)throw new Error(": Unmounted during event!");return t}},6732:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.dontSetMe=function(e,t,n){if(e[t])return new Error("Invalid prop ".concat(t," passed to ").concat(n," - do not set this, set it on the child."))},t.findInArray=function(e,t){for(let n=0,r=e.length;n{"use strict";function r(e){var t,n,i="";if("string"==typeof e||"number"==typeof e)i+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;ti,default:()=>a});const a=i},7383:e=>{var t="undefined"!=typeof Element,n="function"==typeof Map,r="function"==typeof Set,i="function"==typeof ArrayBuffer&&!!ArrayBuffer.isView;function a(e,o){if(e===o)return!0;if(e&&o&&"object"==typeof e&&"object"==typeof o){if(e.constructor!==o.constructor)return!1;var s,l,c,u;if(Array.isArray(e)){if((s=e.length)!=o.length)return!1;for(l=s;0!=l--;)if(!a(e[l],o[l]))return!1;return!0}if(n&&e instanceof Map&&o instanceof Map){if(e.size!==o.size)return!1;for(u=e.entries();!(l=u.next()).done;)if(!o.has(l.value[0]))return!1;for(u=e.entries();!(l=u.next()).done;)if(!a(l.value[1],o.get(l.value[0])))return!1;return!0}if(r&&e instanceof Set&&o instanceof Set){if(e.size!==o.size)return!1;for(u=e.entries();!(l=u.next()).done;)if(!o.has(l.value[0]))return!1;return!0}if(i&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(o)){if((s=e.length)!=o.length)return!1;for(l=s;0!=l--;)if(e[l]!==o[l])return!1;return!0}if(e.constructor===RegExp)return e.source===o.source&&e.flags===o.flags;if(e.valueOf!==Object.prototype.valueOf&&"function"==typeof e.valueOf&&"function"==typeof o.valueOf)return e.valueOf()===o.valueOf();if(e.toString!==Object.prototype.toString&&"function"==typeof e.toString&&"function"==typeof o.toString)return e.toString()===o.toString();if((s=(c=Object.keys(e)).length)!==Object.keys(o).length)return!1;for(l=s;0!=l--;)if(!Object.prototype.hasOwnProperty.call(o,c[l]))return!1;if(t&&e instanceof Element)return!1;for(l=s;0!=l--;)if(("_owner"!==c[l]&&"__v"!==c[l]&&"__o"!==c[l]||!e.$$typeof)&&!a(e[c[l]],o[c[l]]))return!1;return!0}return e!=e&&o!=o}e.exports=function(e,t){try{return a(e,t)}catch(e){if((e.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw e}}},8100:(e,t,n)=>{"use strict";function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=p(n(5959)),a=p(n(2688)),o=n(8230),s=n(936),l=n(414),c=n(906),u=n(7222),d=p(n(7256));function p(e){return e&&e.__esModule?e:{default:e}}function h(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function f(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:this.props;return{cols:e.cols,containerPadding:e.containerPadding,containerWidth:e.containerWidth,margin:e.margin,maxRows:e.maxRows,rowHeight:e.rowHeight}}},{key:"createStyle",value:function(e){var t,n=this.props,r=n.usePercentages,i=n.containerWidth;return n.useCSSTransforms?t=(0,l.setTransform)(e):(t=(0,l.setTopLeft)(e),r&&(t.left=(0,l.perc)(e.left/i),t.width=(0,l.perc)(e.width/i))),t}},{key:"mixinDraggable",value:function(e,t){return i.default.createElement(o.DraggableCore,{disabled:!t,onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop,handle:this.props.handle,cancel:".react-resizable-handle"+(this.props.cancel?","+this.props.cancel:""),scale:this.props.transformScale,nodeRef:this.elementRef},e)}},{key:"mixinResizable",value:function(e,t,n){var r=this.props,a=r.cols,o=r.x,l=r.minW,u=r.minH,d=r.maxW,p=r.maxH,h=r.transformScale,f=r.resizeHandles,m=r.resizeHandle,g=this.getPositionParams(),y=(0,c.calcGridItemPosition)(g,0,0,a-o,0).width,b=(0,c.calcGridItemPosition)(g,0,0,l,u),v=(0,c.calcGridItemPosition)(g,0,0,d,p),w=[b.width,b.height],S=[Math.min(v.width,y),Math.min(v.height,1/0)];return i.default.createElement(s.Resizable,{draggableOpts:{disabled:!n},className:n?void 0:"react-resizable-hide",width:t.width,height:t.height,minConstraints:w,maxConstraints:S,onResizeStop:this.onResizeStop,onResizeStart:this.onResizeStart,onResize:this.onResize,transformScale:h,resizeHandles:f,handle:m},e)}},{key:"onResizeHandler",value:function(e,t,n){var r=t.node,i=t.size,a=this.props[n];if(a){var o=this.props,s=o.cols,l=o.x,u=o.y,d=o.i,p=o.maxH,h=o.minH,f=this.props,m=f.minW,g=f.maxW,y=(0,c.calcWH)(this.getPositionParams(),i.width,i.height,l,u),b=y.w,v=y.h;m=Math.max(m,1),g=Math.min(g,s-l),b=(0,c.clamp)(b,m,g),v=(0,c.clamp)(v,h,p),this.setState({resizing:"onResizeStop"===n?null:i}),a.call(this,d,b,v,{e,node:r,size:i})}}},{key:"render",value:function(){var e=this.props,t=e.x,n=e.y,r=e.w,a=e.h,o=e.isDraggable,s=e.isResizable,l=e.droppingPosition,u=e.useCSSTransforms,p=(0,c.calcGridItemPosition)(this.getPositionParams(),t,n,r,a,this.state),h=i.default.Children.only(this.props.children),m=i.default.cloneElement(h,{ref:this.elementRef,className:(0,d.default)("react-grid-item",h.props.className,this.props.className,{static:this.props.static,resizing:Boolean(this.state.resizing),"react-draggable":o,"react-draggable-dragging":Boolean(this.state.dragging),dropping:Boolean(l),cssTransforms:u}),style:f(f(f({},this.props.style),h.props.style),this.createStyle(p))});return m=this.mixinResizable(m,p,s),m=this.mixinDraggable(m,o)}}],n&&m(t.prototype,n),r&&m(t,r),Object.defineProperty(t,"prototype",{writable:!1}),u}(i.default.Component);t.default=S,w(S,"propTypes",{children:a.default.element,cols:a.default.number.isRequired,containerWidth:a.default.number.isRequired,rowHeight:a.default.number.isRequired,margin:a.default.array.isRequired,maxRows:a.default.number.isRequired,containerPadding:a.default.array.isRequired,x:a.default.number.isRequired,y:a.default.number.isRequired,w:a.default.number.isRequired,h:a.default.number.isRequired,minW:function(e,t){var n=e[t];return"number"!=typeof n?new Error("minWidth not Number"):n>e.w||n>e.maxW?new Error("minWidth larger than item width/maxWidth"):void 0},maxW:function(e,t){var n=e[t];return"number"!=typeof n?new Error("maxWidth not Number"):ne.h||n>e.maxH?new Error("minHeight larger than item height/maxHeight"):void 0},maxH:function(e,t){var n=e[t];return"number"!=typeof n?new Error("maxHeight not Number"):n{"use strict";function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==r(e)&&"function"!=typeof e)return{default:e};var n=p(t);if(n&&n.has(e))return n.get(e);var i={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&Object.prototype.hasOwnProperty.call(e,o)){var s=a?Object.getOwnPropertyDescriptor(e,o):null;s&&(s.get||s.set)?Object.defineProperty(i,o,s):i[o]=e[o]}i.default=e,n&&n.set(e,i);return i}(n(5959)),a=d(n(7842)),o=d(n(7256)),s=n(414),l=n(906),c=d(n(8100)),u=d(n(7222));function d(e){return e&&e.__esModule?e:{default:e}}function p(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(p=function(e){return e?n:t})(e)}function h(e){return function(e){if(Array.isArray(e))return b(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||y(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function f(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function m(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n0){var a=1/0,o=1/0;i.forEach((function(t){t.x>e.x&&(a=Math.min(a,t.x)),t.y>e.y&&(o=Math.min(o,t.y))})),Number.isFinite(a)&&(e.w=a-e.x),Number.isFinite(o)&&(e.h=o-e.y)}}return t||(e.w=n,e.h=r),e})),b=g(y,2),v=b[0],w=b[1];if(w){var S={w:w.w,h:w.h,x:w.x,y:w.y,static:!0,i:t};e.props.onResize(v,u,w,S,a,o),e.setState({layout:f?v:(0,s.compact)(v,(0,s.compactType)(e.props),p),activeDrag:S})}})),O(E(e),"onResizeStop",(function(t,n,r,i){var a=i.e,o=i.node,l=e.state,c=l.layout,u=l.oldResizeItem,d=e.props,p=d.cols,h=d.allowOverlap,f=(0,s.getLayoutItem)(c,t);e.props.onResizeStop(c,u,f,null,a,o);var m=h?c:(0,s.compact)(c,(0,s.compactType)(e.props),p),g=e.state.oldLayout;e.setState({activeDrag:null,layout:m,oldResizeItem:null,oldLayout:null}),e.onLayoutMaybeChanged(m,g)})),O(E(e),"onDragOver",(function(t){var n;if(t.preventDefault(),t.stopPropagation(),T&&(null===(n=t.nativeEvent.target)||void 0===n||!n.classList.contains(_)))return!1;var r=e.props,a=r.droppingItem,o=r.onDropDragOver,s=r.margin,c=r.cols,u=r.rowHeight,d=r.maxRows,p=r.width,f=r.containerPadding,g=r.transformScale,y=null==o?void 0:o(t);if(!1===y)return e.state.droppingDOMNode&&e.removeDroppingPlaceholder(),!1;var b=m(m({},a),y),v=e.state.layout,w=t.nativeEvent,S=w.layerX,E=w.layerY,x={left:S/g,top:E/g,e:t};if(e.state.droppingDOMNode){if(e.state.droppingPosition){var O=e.state.droppingPosition,C=O.left,k=O.top;(C!=S||k!=E)&&e.setState({droppingPosition:x})}}else{var P={cols:c,margin:s,maxRows:d,rowHeight:u,containerWidth:p,containerPadding:f||s},R=(0,l.calcXY)(P,E,S,b.w,b.h);e.setState({droppingDOMNode:i.createElement("div",{key:b.i}),droppingPosition:x,layout:[].concat(h(v),[m(m({},b),{},{x:R.x,y:R.y,static:!1,isDraggable:!0})])})}})),O(E(e),"removeDroppingPlaceholder",(function(){var t=e.props,n=t.droppingItem,r=t.cols,i=e.state.layout,a=(0,s.compact)(i.filter((function(e){return e.i!==n.i})),(0,s.compactType)(e.props),r);e.setState({layout:a,droppingDOMNode:null,activeDrag:null,droppingPosition:void 0})})),O(E(e),"onDragLeave",(function(t){t.preventDefault(),t.stopPropagation(),e.dragEnterCounter--,0===e.dragEnterCounter&&e.removeDroppingPlaceholder()})),O(E(e),"onDragEnter",(function(t){t.preventDefault(),t.stopPropagation(),e.dragEnterCounter++})),O(E(e),"onDrop",(function(t){t.preventDefault(),t.stopPropagation();var n=e.props.droppingItem,r=e.state.layout,i=r.find((function(e){return e.i===n.i}));e.dragEnterCounter=0,e.removeDroppingPlaceholder(),e.props.onDrop(r,i,t)})),e}return t=d,r=[{key:"getDerivedStateFromProps",value:function(e,t){var n;return t.activeDrag?null:((0,a.default)(e.layout,t.propsLayout)&&e.compactType===t.compactType?(0,s.childrenEqual)(e.children,t.children)||(n=t.layout):n=e.layout,n?{layout:(0,s.synchronizeLayoutWithChildren)(n,e.children,e.cols,(0,s.compactType)(e),e.allowOverlap),compactType:e.compactType,children:e.children,propsLayout:e.layout}:null)}}],(n=[{key:"componentDidMount",value:function(){this.setState({mounted:!0}),this.onLayoutMaybeChanged(this.state.layout,this.props.layout)}},{key:"shouldComponentUpdate",value:function(e,t){return this.props.children!==e.children||!(0,s.fastRGLPropsEqual)(this.props,e,a.default)||this.state.activeDrag!==t.activeDrag||this.state.mounted!==t.mounted||this.state.droppingPosition!==t.droppingPosition}},{key:"componentDidUpdate",value:function(e,t){if(!this.state.activeDrag){var n=this.state.layout,r=t.layout;this.onLayoutMaybeChanged(n,r)}}},{key:"containerHeight",value:function(){if(this.props.autoSize){var e=(0,s.bottom)(this.state.layout),t=this.props.containerPadding?this.props.containerPadding[1]:this.props.margin[1];return e*this.props.rowHeight+(e-1)*this.props.margin[1]+2*t+"px"}}},{key:"onLayoutMaybeChanged",value:function(e,t){t||(t=this.state.layout),(0,a.default)(t,e)||this.props.onLayoutChange(e)}},{key:"placeholder",value:function(){var e=this.state.activeDrag;if(!e)return null;var t=this.props,n=t.width,r=t.cols,a=t.margin,o=t.containerPadding,s=t.rowHeight,l=t.maxRows,u=t.useCSSTransforms,d=t.transformScale;return i.createElement(c.default,{w:e.w,h:e.h,x:e.x,y:e.y,i:e.i,className:"react-grid-placeholder",containerWidth:n,cols:r,margin:a,containerPadding:o||a,maxRows:l,rowHeight:s,isDraggable:!1,isResizable:!1,isBounded:!1,useCSSTransforms:u,transformScale:d},i.createElement("div",null))}},{key:"processGridItem",value:function(e,t){if(e&&e.key){var n=(0,s.getLayoutItem)(this.state.layout,String(e.key));if(!n)return null;var r=this.props,a=r.width,o=r.cols,l=r.margin,u=r.containerPadding,d=r.rowHeight,p=r.maxRows,h=r.isDraggable,f=r.isResizable,m=r.isBounded,g=r.useCSSTransforms,y=r.transformScale,b=r.draggableCancel,v=r.draggableHandle,w=r.resizeHandles,S=r.resizeHandle,E=this.state,x=E.mounted,O=E.droppingPosition,_="boolean"==typeof n.isDraggable?n.isDraggable:!n.static&&h,T="boolean"==typeof n.isResizable?n.isResizable:!n.static&&f,C=n.resizeHandles||w,k=_&&m&&!1!==n.isBounded;return i.createElement(c.default,{containerWidth:a,cols:o,margin:l,containerPadding:u||l,maxRows:p,rowHeight:d,cancel:b,handle:v,onDragStop:this.onDragStop,onDragStart:this.onDragStart,onDrag:this.onDrag,onResizeStart:this.onResizeStart,onResize:this.onResize,onResizeStop:this.onResizeStop,isDraggable:_,isResizable:T,isBounded:k,useCSSTransforms:g&&x,usePercentages:!x,transformScale:y,w:n.w,h:n.h,x:n.x,y:n.y,i:n.i,minH:n.minH,minW:n.minW,maxH:n.maxH,maxW:n.maxW,static:n.static,droppingPosition:t?O:void 0,resizeHandles:C,resizeHandle:S},e)}}},{key:"render",value:function(){var e=this,t=this.props,n=t.className,r=t.style,a=t.isDroppable,l=t.innerRef,c=(0,o.default)(_,n),u=m({height:this.containerHeight()},r);return i.createElement("div",{ref:l,className:c,style:u,onDrop:a?this.onDrop:s.noop,onDragLeave:a?this.onDragLeave:s.noop,onDragEnter:a?this.onDragEnter:s.noop,onDragOver:a?this.onDragOver:s.noop},i.Children.map(this.props.children,(function(t){return e.processGridItem(t)})),a&&this.state.droppingDOMNode&&this.processGridItem(this.state.droppingDOMNode,!0),this.placeholder())}}])&&v(t.prototype,n),r&&v(t,r),Object.defineProperty(t,"prototype",{writable:!1}),d}(i.Component);t.default=C,O(C,"displayName","ReactGridLayout"),O(C,"propTypes",u.default),O(C,"defaultProps",{autoSize:!0,cols:12,className:"",style:{},draggableHandle:"",draggableCancel:"",containerPadding:null,rowHeight:150,maxRows:1/0,layout:[],margin:[10,10],isBounded:!1,isDraggable:!0,isResizable:!0,allowOverlap:!1,isDroppable:!1,useCSSTransforms:!0,transformScale:1,verticalCompact:!0,compactType:"vertical",preventCollision:!1,droppingItem:{i:"__dropping-elem__",h:1,w:1},resizeHandles:["se"],onLayoutChange:s.noop,onDragStart:s.noop,onDrag:s.noop,onDragStop:s.noop,onResizeStart:s.noop,onResize:s.noop,onResizeStop:s.noop,onDrop:s.noop,onDropDragOver:s.noop})},7222:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.resizeHandleType=t.resizeHandleAxesType=t.default=void 0;var r=a(n(2688)),i=a(n(5959));function a(e){return e&&e.__esModule?e:{default:e}}var o=r.default.arrayOf(r.default.oneOf(["s","w","e","n","sw","nw","se","ne"]));t.resizeHandleAxesType=o;var s=r.default.oneOfType([r.default.node,r.default.func]);t.resizeHandleType=s;var l={className:r.default.string,style:r.default.object,width:r.default.number,autoSize:r.default.bool,cols:r.default.number,draggableCancel:r.default.string,draggableHandle:r.default.string,verticalCompact:function(e){e.verticalCompact,0},compactType:r.default.oneOf(["vertical","horizontal"]),layout:function(e){var t=e.layout;void 0!==t&&n(414).validateLayout(t,"layout")},margin:r.default.arrayOf(r.default.number),containerPadding:r.default.arrayOf(r.default.number),rowHeight:r.default.number,maxRows:r.default.number,isBounded:r.default.bool,isDraggable:r.default.bool,isResizable:r.default.bool,allowOverlap:r.default.bool,preventCollision:r.default.bool,useCSSTransforms:r.default.bool,transformScale:r.default.number,isDroppable:r.default.bool,resizeHandles:o,resizeHandle:s,onLayoutChange:r.default.func,onDragStart:r.default.func,onDrag:r.default.func,onDragStop:r.default.func,onResizeStart:r.default.func,onResize:r.default.func,onResizeStop:r.default.func,onDrop:r.default.func,droppingItem:r.default.shape({i:r.default.string.isRequired,w:r.default.number.isRequired,h:r.default.number.isRequired}),children:function(e,t){var n=e[t],r={};i.default.Children.forEach(n,(function(e){if(null!=(null==e?void 0:e.key)){if(r[e.key])throw new Error('Duplicate child key "'+e.key+'" found! This will cause problems in ReactGridLayout.');r[e.key]=!0}}))},innerRef:r.default.any};t.default=l},4636:(e,t,n)=>{"use strict";function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}t.default=void 0;var i=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==r(e)&&"function"!=typeof e)return{default:e};var n=p(t);if(n&&n.has(e))return n.get(e);var i={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&Object.prototype.hasOwnProperty.call(e,o)){var s=a?Object.getOwnPropertyDescriptor(e,o):null;s&&(s.get||s.set)?Object.defineProperty(i,o,s):i[o]=e[o]}i.default=e,n&&n.set(e,i);return i}(n(5959)),a=d(n(2688)),o=d(n(7842)),s=n(414),l=n(544),c=d(n(9482)),u=["breakpoint","breakpoints","cols","layouts","margin","containerPadding","onBreakpointChange","onLayoutChange","onWidthChange"];function d(e){return e&&e.__esModule?e:{default:e}}function p(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(p=function(e){return e?n:t})(e)}function h(){return h=Object.assign||function(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function m(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function g(e){for(var t=1;t{"use strict";function n(e){var t=e.margin,n=e.containerPadding,r=e.containerWidth,i=e.cols;return(r-t[0]*(i-1)-2*n[0])/i}function r(e,t,n){return Number.isFinite(e)?Math.round(t*e+Math.max(0,e-1)*n):e}function i(e,t,n){return Math.max(Math.min(e,n),t)}Object.defineProperty(t,"__esModule",{value:!0}),t.calcGridColWidth=n,t.calcGridItemPosition=function(e,t,i,a,o,s){var l=e.margin,c=e.containerPadding,u=e.rowHeight,d=n(e),p={};s&&s.resizing?(p.width=Math.round(s.resizing.width),p.height=Math.round(s.resizing.height)):(p.width=r(a,d,l[0]),p.height=r(o,u,l[1]));s&&s.dragging?(p.top=Math.round(s.dragging.top),p.left=Math.round(s.dragging.left)):(p.top=Math.round((u+l[1])*i+c[1]),p.left=Math.round((d+l[0])*t+c[0]));return p},t.calcGridItemWHPx=r,t.calcWH=function(e,t,r,a,o){var s=e.margin,l=e.maxRows,c=e.cols,u=e.rowHeight,d=n(e),p=Math.round((t+s[0])/(d+s[0])),h=Math.round((r+s[1])/(u+s[1]));return p=i(p,0,c-a),h=i(h,0,l-o),{w:p,h}},t.calcXY=function(e,t,r,a,o){var s=e.margin,l=e.cols,c=e.rowHeight,u=e.maxRows,d=n(e),p=Math.round((r-s[0])/(d+s[0])),h=Math.round((t-s[1])/(c+s[1]));return p=i(p,0,l-a),h=i(h,0,u-o),{x:p,y:h}},t.clamp=i},6805:(e,t,n)=>{"use strict";function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}t.default=function(e){var t;return t=function(t){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&p(e,t)}(c,t);var n,a,l=(n=c,a=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,t=f(n);if(a){var i=f(this).constructor;e=Reflect.construct(t,arguments,i)}else e=t.apply(this,arguments);return function(e,t){if(t&&("object"===r(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return h(e)}(this,e)});function c(){var e;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,c);for(var t=arguments.length,n=new Array(t),r=0;r=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}(t,s);return n&&!this.mounted?i.createElement("div",{className:(0,o.default)(this.props.className,g),style:this.props.style,ref:this.elementRef}):i.createElement(e,u({innerRef:this.elementRef},r,this.state))}}]),c}(i.Component),m(t,"defaultProps",{measureBeforeMount:!1}),m(t,"propTypes",{measureBeforeMount:a.default.bool}),t};var i=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==r(e)&&"function"!=typeof e)return{default:e};var n=c(t);if(n&&n.has(e))return n.get(e);var i={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&Object.prototype.hasOwnProperty.call(e,o)){var s=a?Object.getOwnPropertyDescriptor(e,o):null;s&&(s.get||s.set)?Object.defineProperty(i,o,s):i[o]=e[o]}i.default=e,n&&n.set(e,i);return i}(n(5959)),a=l(n(2688)),o=l(n(7256)),s=["measureBeforeMount"];function l(e){return e&&e.__esModule?e:{default:e}}function c(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(c=function(e){return e?n:t})(e)}function u(){return u=Object.assign||function(e){for(var t=1;t{e.exports=function(e,t,n){return e===t||e.className===t.className&&n(e.style,t.style)&&e.width===t.width&&e.autoSize===t.autoSize&&e.cols===t.cols&&e.draggableCancel===t.draggableCancel&&e.draggableHandle===t.draggableHandle&&n(e.verticalCompact,t.verticalCompact)&&n(e.compactType,t.compactType)&&n(e.layout,t.layout)&&n(e.margin,t.margin)&&n(e.containerPadding,t.containerPadding)&&e.rowHeight===t.rowHeight&&e.maxRows===t.maxRows&&e.isBounded===t.isBounded&&e.isDraggable===t.isDraggable&&e.isResizable===t.isResizable&&e.allowOverlap===t.allowOverlap&&e.preventCollision===t.preventCollision&&e.useCSSTransforms===t.useCSSTransforms&&e.transformScale===t.transformScale&&e.isDroppable===t.isDroppable&&n(e.resizeHandles,t.resizeHandles)&&n(e.resizeHandle,t.resizeHandle)&&e.onLayoutChange===t.onLayoutChange&&e.onDragStart===t.onDragStart&&e.onDrag===t.onDrag&&e.onDragStop===t.onDragStop&&e.onResizeStart===t.onResizeStart&&e.onResize===t.onResize&&e.onResizeStop===t.onResizeStop&&e.onDrop===t.onDrop&&n(e.droppingItem,t.droppingItem)&&n(e.innerRef,t.innerRef)}},544:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.findOrGenerateResponsiveLayout=function(e,t,n,a,o,s){if(e[n])return(0,r.cloneLayout)(e[n]);for(var l=e[a],c=i(t),u=c.slice(c.indexOf(n)),d=0,p=u.length;de[s]&&(r=s)}return r},t.getColsFromBreakpoint=function(e,t){if(!t[e])throw new Error("ResponsiveReactGridLayout: `cols` entry for breakpoint "+e+" is missing!");return t[e]},t.sortBreakpoints=i;var r=n(414);function i(e){return Object.keys(e).sort((function(t,n){return e[t]-e[n]}))}},414:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.bottom=d,t.childrenEqual=function(e,t){return(0,r.default)(i.default.Children.map(e,(function(e){return null==e?void 0:e.key})),i.default.Children.map(t,(function(e){return null==e?void 0:e.key})))},t.cloneLayout=p,t.cloneLayoutItem=f,t.collides=g,t.compact=y,t.compactItem=w,t.compactType=function(e){var t=e||{},n=t.verticalCompact,r=t.compactType;return!1===n?null:r},t.correctBounds=S,t.fastPositionEqual=function(e,t){return e.left===t.left&&e.top===t.top&&e.width===t.width&&e.height===t.height},t.fastRGLPropsEqual=void 0,t.getAllCollisions=O,t.getFirstCollision=x,t.getLayoutItem=E,t.getStatics=_,t.modifyLayout=h,t.moveElement=T,t.moveElementAwayFromCollision=C,t.noop=void 0,t.perc=function(e){return 100*e+"%"},t.setTopLeft=function(e){var t=e.top,n=e.left,r=e.width,i=e.height;return{top:"".concat(t,"px"),left:"".concat(n,"px"),width:"".concat(r,"px"),height:"".concat(i,"px"),position:"absolute"}},t.setTransform=function(e){var t=e.top,n=e.left,r=e.width,i=e.height,a="translate(".concat(n,"px,").concat(t,"px)");return{transform:a,WebkitTransform:a,MozTransform:a,msTransform:a,OTransform:a,width:"".concat(r,"px"),height:"".concat(i,"px"),position:"absolute"}},t.sortLayoutItems=k,t.sortLayoutItemsByColRow=R,t.sortLayoutItemsByRowCol=P,t.synchronizeLayoutWithChildren=function(e,t,n,r,a){e=e||[];var o=[];i.default.Children.forEach(t,(function(t){if(null!=(null==t?void 0:t.key)){var n=E(e,String(t.key));if(n)o.push(f(n));else{!c&&t.props._grid&&console.warn("`_grid` properties on children have been deprecated as of React 15.2. Please use `data-grid` or add your properties directly to the `layout`.");var r=t.props["data-grid"]||t.props._grid;r?(c||A([r],"ReactGridLayout.children"),o.push(f(s(s({},r),{},{i:t.key})))):o.push(f({w:1,h:1,x:0,y:d(o),i:String(t.key)}))}}}));var l=S(o,{cols:n});return a?l:y(l,r,n)},t.validateLayout=A,t.withLayoutItem=function(e,t,n){var r=E(e,t);return r?(r=n(f(r)),[e=h(e,r),r]):[e,null]};var r=a(n(7842)),i=a(n(5959));function a(e){return e&&e.__esModule?e:{default:e}}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;tn&&(n=t);return n}function p(e){for(var t=Array(e.length),n=0,r=e.length;n=t.x+t.w)&&(!(e.y+e.h<=t.y)&&!(e.y>=t.y+t.h))))}function y(e,t,n){for(var r=_(e),i=k(e,t),a=Array(e.length),o=0,s=i.length;ot.y+t.h)break;g(t,o)&&v(e,o,n+t[i],r)}}t[r]=n}function w(e,t,n,r,i){var a,o="horizontal"===n;if("vertical"===n)for(t.y=Math.min(d(e),t.y);t.y>0&&!x(e,t);)t.y--;else if(o)for(;t.x>0&&!x(e,t);)t.x--;for(;a=x(e,t);)o?v(i,t,a.x+a.w,"x"):v(i,t,a.y+a.h,"y"),o&&t.x+t.w>r&&(t.x=r-t.w,t.y++);return t.y=Math.max(t.y,0),t.x=Math.max(t.x,0),t}function S(e,t){for(var n=_(e),r=0,i=e.length;rt.cols&&(a.x=t.cols-a.w),a.x<0&&(a.x=0,a.w=t.cols),a.static)for(;x(n,a);)a.y++;else n.push(a)}return e}function E(e,t){for(var n=0,r=e.length;n=r:"horizontal"===o&&"number"==typeof n&&c>=n)&&(d=d.reverse());var h=O(d,t),f=h.length>0;if(f&&l)return p(e);if(f&&a)return D("Collision prevented on ".concat(t.i,", reverting.")),t.x=c,t.y=u,t.moved=!1,e;for(var m=0,g=h.length;mt.y||e.y===t.y&&e.x>t.x?1:e.y===t.y&&e.x===t.x?0:-1}))}function R(e){return e.slice(0).sort((function(e,t){return e.x>t.x||e.x===t.x&&e.y>t.y?1:-1}))}function A(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"Layout",n=["x","y","w","h"];if(!Array.isArray(e))throw new Error(t+" must be an array!");for(var r=0,i=e.length;r{e.exports=n(9482).default,e.exports.utils=n(414),e.exports.Responsive=n(4636).default,e.exports.Responsive.utils=n(544),e.exports.WidthProvider=n(6805).default},7256:(e,t,n)=>{"use strict";function r(e){var t,n,i="";if("string"==typeof e||"number"==typeof e)i+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;ti,default:()=>a});const a=i},1794:(e,t,n)=>{"use strict";t.__esModule=!0,t.default=void 0;var r=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=l(t);if(n&&n.has(e))return n.get(e);var r={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var o=i?Object.getOwnPropertyDescriptor(e,a):null;o&&(o.get||o.set)?Object.defineProperty(r,a,o):r[a]=e[a]}r.default=e,n&&n.set(e,r);return r}(n(5959)),i=n(8230),a=n(9954),o=n(6333),s=["children","className","draggableOpts","width","height","handle","handleSize","lockAspectRatio","axis","minConstraints","maxConstraints","onResize","onResizeStop","onResizeStart","resizeHandles","transformScale"];function l(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(l=function(e){return e?n:t})(e)}function c(){return c=Object.assign?Object.assign.bind():function(e){for(var t=1;tMath.abs(l*o)?t=e/o:e=t*o}var c=e,u=t,d=this.slack||[0,0],p=d[0],h=d[1];return e+=p,t+=h,r&&(e=Math.max(r[0],e),t=Math.max(r[1],t)),i&&(e=Math.min(i[0],e),t=Math.min(i[1],t)),this.slack=[p+(c-e),h+(u-t)],[e,t]},l.resizeHandler=function(e,t){var n=this;return function(r,i){var a=i.node,o=i.deltaX,s=i.deltaY;"onResizeStart"===e&&n.resetData();var l=("both"===n.props.axis||"x"===n.props.axis)&&"n"!==t&&"s"!==t,c=("both"===n.props.axis||"y"===n.props.axis)&&"e"!==t&&"w"!==t;if(l||c){var u=t[0],d=t[t.length-1],p=a.getBoundingClientRect();if(null!=n.lastHandleRect){if("w"===d)o+=p.left-n.lastHandleRect.left;if("n"===u)s+=p.top-n.lastHandleRect.top}n.lastHandleRect=p,"w"===d&&(o=-o),"n"===u&&(s=-s);var h=n.props.width+(l?o/n.props.transformScale:0),f=n.props.height+(c?s/n.props.transformScale:0),m=n.runConstraints(h,f);h=m[0],f=m[1];var g=h!==n.props.width||f!==n.props.height,y="function"==typeof n.props[e]?n.props[e]:null;y&&!("onResize"===e&&!g)&&(null==r.persist||r.persist(),y(r,{node:a,size:{width:h,height:f},handle:t})),"onResizeStop"===e&&n.resetData()}}},l.renderResizeHandle=function(e,t){var n=this.props.handle;if(!n)return r.createElement("span",{className:"react-resizable-handle react-resizable-handle-"+e,ref:t});if("function"==typeof n)return n(e,t);var i=d({ref:t},"string"==typeof n.type?{}:{handleAxis:e});return r.cloneElement(n,i)},l.render=function(){var e=this,t=this.props,n=t.children,o=t.className,l=t.draggableOpts,u=(t.width,t.height,t.handle,t.handleSize,t.lockAspectRatio,t.axis,t.minConstraints,t.maxConstraints,t.onResize,t.onResizeStop,t.onResizeStart,t.resizeHandles),p=(t.transformScale,function(e,t){if(null==e)return{};var n,r,i={},a=Object.keys(e);for(r=0;r=0||(i[n]=e[n]);return i}(t,s));return(0,a.cloneElement)(n,d(d({},p),{},{className:(o?o+" ":"")+"react-resizable",children:[].concat(n.props.children,u.map((function(t){var n,a=null!=(n=e.handleRefs[t])?n:e.handleRefs[t]=r.createRef();return r.createElement(i.DraggableCore,c({},l,{nodeRef:a,key:"resizableHandle-"+t,onStop:e.resizeHandler("onResizeStop",t),onStart:e.resizeHandler("onResizeStart",t),onDrag:e.resizeHandler("onResize",t)}),e.renderResizeHandle(t,a))})))}))},o}(r.Component);t.default=f,f.propTypes=o.resizableProps,f.defaultProps={axis:"both",handleSize:[20,20],lockAspectRatio:!1,minConstraints:[20,20],maxConstraints:[1/0,1/0],resizeHandles:["se"],transformScale:1}},6609:(e,t,n)=>{"use strict";t.default=void 0;var r=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=c(t);if(n&&n.has(e))return n.get(e);var r={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var o=i?Object.getOwnPropertyDescriptor(e,a):null;o&&(o.get||o.set)?Object.defineProperty(r,a,o):r[a]=e[a]}r.default=e,n&&n.set(e,r);return r}(n(5959)),i=l(n(2688)),a=l(n(1794)),o=n(6333),s=["handle","handleSize","onResize","onResizeStart","onResizeStop","draggableOpts","minConstraints","maxConstraints","lockAspectRatio","axis","width","height","resizeHandles","style","transformScale"];function l(e){return e&&e.__esModule?e:{default:e}}function c(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(c=function(e){return e?n:t})(e)}function u(){return u=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,s);return r.createElement(a.default,{axis:f,draggableOpts:l,handle:t,handleSize:n,height:this.state.height,lockAspectRatio:h,maxConstraints:d,minConstraints:c,onResizeStart:i,onResize:this.onResize,onResizeStop:o,resizeHandles:m,transformScale:y,width:this.state.width},r.createElement("div",u({},b,{style:p(p({},g),{},{width:this.state.width+"px",height:this.state.height+"px"})})))},i}(r.Component);t.default=m,m.propTypes=p(p({},o.resizableProps),{},{children:i.default.element})},6333:(e,t,n)=>{"use strict";t.__esModule=!0,t.resizableProps=void 0;var r,i=(r=n(2688))&&r.__esModule?r:{default:r};n(8230);var a={axis:i.default.oneOf(["both","x","y","none"]),className:i.default.string,children:i.default.element.isRequired,draggableOpts:i.default.shape({allowAnyClick:i.default.bool,cancel:i.default.string,children:i.default.node,disabled:i.default.bool,enableUserSelectHack:i.default.bool,offsetParent:i.default.node,grid:i.default.arrayOf(i.default.number),handle:i.default.string,nodeRef:i.default.object,onStart:i.default.func,onDrag:i.default.func,onStop:i.default.func,onMouseDown:i.default.func,scale:i.default.number}),height:function(){for(var e=arguments.length,t=new Array(e),n=0;n{"use strict";t.__esModule=!0,t.cloneElement=function(e,t){t.style&&e.props.style&&(t.style=o(o({},e.props.style),t.style));t.className&&e.props.className&&(t.className=e.props.className+" "+t.className);return i.default.cloneElement(e,t)};var r,i=(r=n(5959))&&r.__esModule?r:{default:r};function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t{"use strict";e.exports=function(){throw new Error("Don't instantiate Resizable directly! Use require('react-resizable').Resizable")},e.exports.Resizable=n(1794).default,e.exports.ResizableBox=n(6609).default},9406:(e,t,n)=>{"use strict";var r,i=n(5959),a=(r=i)&&"object"==typeof r&&"default"in r?r.default:r;function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var s=!("undefined"==typeof window||!window.document||!window.document.createElement);e.exports=function(e,t,n){if("function"!=typeof e)throw new Error("Expected reducePropsToState to be a function.");if("function"!=typeof t)throw new Error("Expected handleStateChangeOnClient to be a function.");if(void 0!==n&&"function"!=typeof n)throw new Error("Expected mapStateOnServer to either be undefined or a function.");return function(r){if("function"!=typeof r)throw new Error("Expected WrappedComponent to be a React component.");var l,c=[];function u(){l=e(c.map((function(e){return e.props}))),d.canUseDOM?t(l):n&&(l=n(l))}var d=function(e){var t,n;function i(){return e.apply(this,arguments)||this}n=e,(t=i).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n,i.peek=function(){return l},i.rewind=function(){if(i.canUseDOM)throw new Error("You may only call rewind() on the server. Call peek() to read the current state.");var e=l;return l=void 0,c=[],e};var o=i.prototype;return o.UNSAFE_componentWillMount=function(){c.push(this),u()},o.componentDidUpdate=function(){u()},o.componentWillUnmount=function(){var e=c.indexOf(this);c.splice(e,1),u()},o.render=function(){return a.createElement(r,this.props)},i}(i.PureComponent);return o(d,"displayName","SideEffect("+function(e){return e.displayName||e.name||"Component"}(r)+")"),o(d,"canUseDOM",s),d}}},4386:(e,t,n)=>{"use strict";var r=n(6212),i=n(5959),a=r.__importDefault(n(5690));t.A=function(e,t,n){void 0===t&&(t=0),void 0===n&&(n=[]);var r=a.default(e,t),o=r[0],s=r[1],l=r[2];return i.useEffect(l,n),[o,s]}},1336:(e,t,n)=>{"use strict";var r=n(5959);t.A=function(e){var t=r.useRef();return r.useEffect((function(){t.current=e})),t.current}},5690:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(5959);t.default=function(e,t){void 0===t&&(t=0);var n=r.useRef(!1),i=r.useRef(),a=r.useRef(e),o=r.useCallback((function(){return n.current}),[]),s=r.useCallback((function(){n.current=!1,i.current&&clearTimeout(i.current),i.current=setTimeout((function(){n.current=!0,a.current()}),t)}),[t]),l=r.useCallback((function(){n.current=null,i.current&&clearTimeout(i.current)}),[]);return r.useEffect((function(){a.current=e}),[e]),r.useEffect((function(){return s(),l}),[t]),[o,l,s]}},2192:(e,t,n)=>{"use strict";var r=n(5959),i=Symbol.for("react.element"),a=Symbol.for("react.fragment"),o=Object.prototype.hasOwnProperty,s=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,l={key:!0,ref:!0,__self:!0,__source:!0};function c(e,t,n){var r,a={},c=null,u=null;for(r in void 0!==n&&(c=""+n),void 0!==t.key&&(c=""+t.key),void 0!==t.ref&&(u=t.ref),t)o.call(t,r)&&!l.hasOwnProperty(r)&&(a[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps)void 0===a[r]&&(a[r]=t[r]);return{$$typeof:i,type:e,key:c,ref:u,props:a,_owner:s.current}}t.Fragment=a,t.jsx=c,t.jsxs=c},2540:(e,t,n)=>{"use strict";e.exports=n(2192)},6852:(e,t,n)=>{"use strict";var r=n(8036),i=Array.prototype.concat,a=Array.prototype.slice,o=e.exports=function(e){for(var t=[],n=0,o=e.length;n{e.exports=function(e){return!(!e||"string"==typeof e)&&(e instanceof Array||Array.isArray(e)||e.length>=0&&(e.splice instanceof Function||Object.getOwnPropertyDescriptor(e,e.length-1)&&"String"!==e.constructor.name))}},6660:function(e,t,n){var r;!function(i,a){"use strict";var o="function",s="undefined",l="object",c="string",u="major",d="model",p="name",h="type",f="vendor",m="version",g="architecture",y="console",b="mobile",v="tablet",w="smarttv",S="wearable",E="embedded",x="Amazon",O="Apple",_="ASUS",T="BlackBerry",C="Browser",k="Chrome",P="Firefox",R="Google",A="Huawei",D="LG",j="Microsoft",I="Motorola",N="Opera",L="Samsung",M="Sharp",F="Sony",$="Xiaomi",B="Zebra",V="Facebook",z="Chromium OS",U="Mac OS",q=function(e){for(var t={},n=0;n0?2===s.length?typeof s[1]==o?this[s[0]]=s[1].call(this,u):this[s[0]]=s[1]:3===s.length?typeof s[1]!==o||s[1].exec&&s[1].test?this[s[0]]=u?u.replace(s[1],s[2]):a:this[s[0]]=u?s[1].call(this,u,s[2]):a:4===s.length&&(this[s[0]]=u?s[3].call(this,u.replace(s[1],s[2])):a):this[s]=u||a;d+=2}},K=function(e,t){for(var n in t)if(typeof t[n]===l&&t[n].length>0){for(var r=0;r2&&(e[d]="iPad",e[h]=v),e},this.getEngine=function(){var e={};return e[p]=a,e[m]=a,Q.call(e,r,w.engine),e},this.getOS=function(){var e={};return e[p]=a,e[m]=a,Q.call(e,r,w.os),S&&!e[p]&&y&&y.platform&&"Unknown"!=y.platform&&(e[p]=y.platform.replace(/chrome os/i,z).replace(/macos/i,U)),e},this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}},this.getUA=function(){return r},this.setUA=function(e){return r=typeof e===c&&e.length>500?W(e,500):e,this},this.setUA(r),this};J.VERSION="1.0.38",J.BROWSER=q([p,m,u]),J.CPU=q([g]),J.DEVICE=q([d,f,h,y,b,w,v,S,E]),J.ENGINE=J.OS=q([p,m]),typeof t!==s?(e.exports&&(t=e.exports=J),t.UAParser=J):n.amdO?(r=function(){return J}.call(t,n,t,e))===a||(e.exports=r):typeof i!==s&&(i.UAParser=J);var Z=typeof i!==s&&(i.jQuery||i.Zepto);if(Z&&!Z.ua){var ee=new J;Z.ua=ee.getResult(),Z.ua.get=function(){return ee.getUA()},Z.ua.set=function(e){ee.setUA(e);var t=ee.getResult();for(var n in t)Z.ua[n]=t[n]}}}("object"==typeof window?window:this)},6089:e=>{"use strict";e.exports=__WEBPACK_EXTERNAL_MODULE__6089__},7781:e=>{"use strict";e.exports=__WEBPACK_EXTERNAL_MODULE__7781__},8531:e=>{"use strict";e.exports=__WEBPACK_EXTERNAL_MODULE__8531__},2007:e=>{"use strict";e.exports=__WEBPACK_EXTERNAL_MODULE__2007__},4201:e=>{"use strict";e.exports=__WEBPACK_EXTERNAL_MODULE__4201__},3241:e=>{"use strict";e.exports=__WEBPACK_EXTERNAL_MODULE__3241__},1308:e=>{"use strict";e.exports=__WEBPACK_EXTERNAL_MODULE__1308__},5959:e=>{"use strict";e.exports=__WEBPACK_EXTERNAL_MODULE__5959__},8398:e=>{"use strict";e.exports=__WEBPACK_EXTERNAL_MODULE__8398__},1159:e=>{"use strict";e.exports=__WEBPACK_EXTERNAL_MODULE__1159__},1269:e=>{"use strict";e.exports=__WEBPACK_EXTERNAL_MODULE__1269__},6212:(e,t,n)=>{"use strict";n.r(t),n.d(t,{__addDisposableResource:()=>I,__assign:()=>a,__asyncDelegator:()=>_,__asyncGenerator:()=>O,__asyncValues:()=>T,__await:()=>x,__awaiter:()=>f,__classPrivateFieldGet:()=>A,__classPrivateFieldIn:()=>j,__classPrivateFieldSet:()=>D,__createBinding:()=>g,__decorate:()=>s,__disposeResources:()=>L,__esDecorate:()=>c,__exportStar:()=>y,__extends:()=>i,__generator:()=>m,__importDefault:()=>R,__importStar:()=>P,__makeTemplateObject:()=>C,__metadata:()=>h,__param:()=>l,__propKey:()=>d,__read:()=>v,__rest:()=>o,__runInitializers:()=>u,__setFunctionName:()=>p,__spread:()=>w,__spreadArray:()=>E,__spreadArrays:()=>S,__values:()=>b,default:()=>M});var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},r(e,t)};function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var a=function(){return a=Object.assign||function(e){for(var t,n=1,r=arguments.length;n=0;s--)(i=e[s])&&(o=(a<3?i(o):a>3?i(t,n,o):i(t,n))||o);return a>3&&o&&Object.defineProperty(t,n,o),o}function l(e,t){return function(n,r){t(n,r,e)}}function c(e,t,n,r,i,a){function o(e){if(void 0!==e&&"function"!=typeof e)throw new TypeError("Function expected");return e}for(var s,l=r.kind,c="getter"===l?"get":"setter"===l?"set":"value",u=!t&&e?r.static?e:e.prototype:null,d=t||(u?Object.getOwnPropertyDescriptor(u,r.name):{}),p=!1,h=n.length-1;h>=0;h--){var f={};for(var m in r)f[m]="access"===m?{}:r[m];for(var m in r.access)f.access[m]=r.access[m];f.addInitializer=function(e){if(p)throw new TypeError("Cannot add initializers after decoration has completed");a.push(o(e||null))};var g=(0,n[h])("accessor"===l?{get:d.get,set:d.set}:d[c],f);if("accessor"===l){if(void 0===g)continue;if(null===g||"object"!=typeof g)throw new TypeError("Object expected");(s=o(g.get))&&(d.get=s),(s=o(g.set))&&(d.set=s),(s=o(g.init))&&i.unshift(s)}else(s=o(g))&&("field"===l?i.unshift(s):d[c]=s)}u&&Object.defineProperty(u,r.name,d),p=!0}function u(e,t,n){for(var r=arguments.length>2,i=0;i0&&i[i.length-1])||6!==s[0]&&2!==s[0])){o=0;continue}if(3===s[0]&&(!i||s[1]>i[0]&&s[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function v(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,a=n.call(e),o=[];try{for(;(void 0===t||t-- >0)&&!(r=a.next()).done;)o.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=a.return)&&n.call(a)}finally{if(i)throw i.error}}return o}function w(){for(var e=[],t=0;t1||s(e,t)}))},t&&(r[e]=t(r[e])))}function s(e,t){try{(n=i[e](t)).value instanceof x?Promise.resolve(n.value.v).then(l,c):u(a[0][2],n)}catch(e){u(a[0][3],e)}var n}function l(e){s("next",e)}function c(e){s("throw",e)}function u(e,t){e(t),a.shift(),a.length&&s(a[0][0],a[0][1])}}function _(e){var t,n;return t={},r("next"),r("throw",(function(e){throw e})),r("return"),t[Symbol.iterator]=function(){return this},t;function r(r,i){t[r]=e[r]?function(t){return(n=!n)?{value:x(e[r](t)),done:!1}:i?i(t):t}:i}}function T(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,n=e[Symbol.asyncIterator];return n?n.call(e):(e=b(e),t={},r("next"),r("throw"),r("return"),t[Symbol.asyncIterator]=function(){return this},t);function r(n){t[n]=e[n]&&function(t){return new Promise((function(r,i){(function(e,t,n,r){Promise.resolve(r).then((function(t){e({value:t,done:n})}),t)})(r,i,(t=e[n](t)).done,t.value)}))}}}function C(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}var k=Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t};function P(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&g(t,e,n);return k(t,e),t}function R(e){return e&&e.__esModule?e:{default:e}}function A(e,t,n,r){if("a"===n&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?r:"a"===n?r.call(e):r?r.value:t.get(e)}function D(e,t,n,r,i){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!i)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?i.call(e,n):i?i.value=n:t.set(e,n),n}function j(e,t){if(null===t||"object"!=typeof t&&"function"!=typeof t)throw new TypeError("Cannot use 'in' operator on non-object");return"function"==typeof e?t===e:e.has(t)}function I(e,t,n){if(null!=t){if("object"!=typeof t&&"function"!=typeof t)throw new TypeError("Object expected.");var r,i;if(n){if(!Symbol.asyncDispose)throw new TypeError("Symbol.asyncDispose is not defined.");r=t[Symbol.asyncDispose]}if(void 0===r){if(!Symbol.dispose)throw new TypeError("Symbol.dispose is not defined.");r=t[Symbol.dispose],n&&(i=r)}if("function"!=typeof r)throw new TypeError("Object not disposable.");i&&(r=function(){try{i.call(this)}catch(e){return Promise.reject(e)}}),e.stack.push({value:t,dispose:r,async:n})}else n&&e.stack.push({async:!0});return t}var N="function"==typeof SuppressedError?SuppressedError:function(e,t,n){var r=new Error(n);return r.name="SuppressedError",r.error=e,r.suppressed=t,r};function L(e){function t(t){e.error=e.hasError?new N(t,e.error,"An error was suppressed during disposal."):t,e.hasError=!0}return function n(){for(;e.stack.length;){var r=e.stack.pop();try{var i=r.dispose&&r.dispose.call(r.value);if(r.async)return Promise.resolve(i).then(n,(function(e){return t(e),n()}))}catch(e){t(e)}}if(e.hasError)throw e.error}()}const M={__extends:i,__assign:a,__rest:o,__decorate:s,__param:l,__metadata:h,__awaiter:f,__generator:m,__createBinding:g,__exportStar:y,__values:b,__read:v,__spread:w,__spreadArrays:S,__spreadArray:E,__await:x,__asyncGenerator:O,__asyncDelegator:_,__asyncValues:T,__makeTemplateObject:C,__importStar:P,__importDefault:R,__classPrivateFieldGet:A,__classPrivateFieldSet:D,__classPrivateFieldIn:j,__addDisposableResource:I,__disposeResources:L}}},__webpack_module_cache__={};function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var n=__webpack_module_cache__[e]={id:e,loaded:!1,exports:{}};return __webpack_modules__[e].call(n.exports,n,n.exports,__webpack_require__),n.loaded=!0,n.exports}__webpack_require__.amdO={},__webpack_require__.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(t,{a:t}),t},__webpack_require__.d=(e,t)=>{for(var n in t)__webpack_require__.o(t,n)&&!__webpack_require__.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},__webpack_require__.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},__webpack_require__.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),__webpack_require__.p="public/plugins/grafana-pyroscope-app/";var __webpack_exports__={};return(()=>{"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{plugin:()=>iB});var e={};__webpack_require__.r(e);var t=__webpack_require__(1308),n=__webpack_require__.n(t);__webpack_require__.p=n()&&n().uri?n().uri.slice(0,n().uri.lastIndexOf("/")+1):"public/plugins/grafana-pyroscope-app/";var r=__webpack_require__(7781),i=__webpack_require__(6089),a=__webpack_require__(8531),o=__webpack_require__(2007),s="undefined"==typeof window||"Deno"in globalThis;function l(){}function c(e){return"number"==typeof e&&e>=0&&e!==1/0}function u(e,t){return Math.max(e+(t||0)-Date.now(),0)}function d(e,t){return"function"==typeof e?e(t):e}function p(e,t){return"function"==typeof e?e(t):e}function h(e,t){const{type:n="all",exact:r,fetchStatus:i,predicate:a,queryKey:o,stale:s}=e;if(o)if(r){if(t.queryHash!==m(o,t.options))return!1}else if(!y(t.queryKey,o))return!1;if("all"!==n){const e=t.isActive();if("active"===n&&!e)return!1;if("inactive"===n&&e)return!1}return("boolean"!=typeof s||t.isStale()===s)&&((!i||i===t.state.fetchStatus)&&!(a&&!a(t)))}function f(e,t){const{exact:n,status:r,predicate:i,mutationKey:a}=e;if(a){if(!t.options.mutationKey)return!1;if(n){if(g(t.options.mutationKey)!==g(a))return!1}else if(!y(t.options.mutationKey,a))return!1}return(!r||t.state.status===r)&&!(i&&!i(t))}function m(e,t){return(t?.queryKeyHashFn||g)(e)}function g(e){return JSON.stringify(e,((e,t)=>S(t)?Object.keys(t).sort().reduce(((e,n)=>(e[n]=t[n],e)),{}):t))}function y(e,t){return e===t||typeof e==typeof t&&(!(!e||!t||"object"!=typeof e||"object"!=typeof t)&&!Object.keys(t).some((n=>!y(e[n],t[n]))))}function b(e,t){if(e===t)return e;const n=w(e)&&w(t);if(n||S(e)&&S(t)){const r=n?e:Object.keys(e),i=r.length,a=n?t:Object.keys(t),o=a.length,s=n?[]:{};let l=0;for(let i=0;in?r.slice(1):r}function _(e,t,n=0){const r=[t,...e];return n&&r.length>n?r.slice(0,-1):r}var T=Symbol(),C=(e,t)=>!e.queryFn&&t?.initialPromise?()=>t.initialPromise:e.queryFn&&e.queryFn!==T?e.queryFn:()=>Promise.reject(new Error(`Missing queryFn: '${e.queryHash}'`));var k=function(){let e=[],t=0,n=e=>{e()},r=e=>{e()},i=e=>setTimeout(e,0);const a=r=>{t?e.push(r):i((()=>{n(r)}))},o=()=>{const t=e;e=[],t.length&&i((()=>{r((()=>{t.forEach((e=>{n(e)}))}))}))};return{batch:e=>{let n;t++;try{n=e()}finally{t--,t||o()}return n},batchCalls:e=>(...t)=>{a((()=>{e(...t)}))},schedule:a,setNotifyFunction:e=>{n=e},setBatchNotifyFunction:e=>{r=e},setScheduler:e=>{i=e}}}(),P=class{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(e){return this.listeners.add(e),this.onSubscribe(),()=>{this.listeners.delete(e),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}},R=new class extends P{#e;#t;#n;constructor(){super(),this.#n=e=>{if(!s&&window.addEventListener){const t=()=>e();return window.addEventListener("visibilitychange",t,!1),()=>{window.removeEventListener("visibilitychange",t)}}}}onSubscribe(){this.#t||this.setEventListener(this.#n)}onUnsubscribe(){this.hasListeners()||(this.#t?.(),this.#t=void 0)}setEventListener(e){this.#n=e,this.#t?.(),this.#t=e((e=>{"boolean"==typeof e?this.setFocused(e):this.onFocus()}))}setFocused(e){this.#e!==e&&(this.#e=e,this.onFocus())}onFocus(){const e=this.isFocused();this.listeners.forEach((t=>{t(e)}))}isFocused(){return"boolean"==typeof this.#e?this.#e:"hidden"!==globalThis.document?.visibilityState}},A=new class extends P{#r=!0;#t;#n;constructor(){super(),this.#n=e=>{if(!s&&window.addEventListener){const t=()=>e(!0),n=()=>e(!1);return window.addEventListener("online",t,!1),window.addEventListener("offline",n,!1),()=>{window.removeEventListener("online",t),window.removeEventListener("offline",n)}}}}onSubscribe(){this.#t||this.setEventListener(this.#n)}onUnsubscribe(){this.hasListeners()||(this.#t?.(),this.#t=void 0)}setEventListener(e){this.#n=e,this.#t?.(),this.#t=e(this.setOnline.bind(this))}setOnline(e){this.#r!==e&&(this.#r=e,this.listeners.forEach((t=>{t(e)})))}isOnline(){return this.#r}};function D(e){return Math.min(1e3*2**e,3e4)}function j(e){return"online"!==(e??"online")||A.isOnline()}var I=class{constructor(e){this.revert=e?.revert,this.silent=e?.silent}};function N(e){return e instanceof I}function L(e){let t,n,r,i=!1,a=0,o=!1;const l=new Promise(((e,t)=>{n=e,r=t})),c=()=>R.isFocused()&&("always"===e.networkMode||A.isOnline())&&e.canRun(),u=()=>j(e.networkMode)&&e.canRun(),d=r=>{o||(o=!0,e.onSuccess?.(r),t?.(),n(r))},p=n=>{o||(o=!0,e.onError?.(n),t?.(),r(n))},h=()=>new Promise((n=>{t=e=>{(o||c())&&n(e)},e.onPause?.()})).then((()=>{t=void 0,o||e.onContinue?.()})),f=()=>{if(o)return;let t;const n=0===a?e.initialPromise:void 0;try{t=n??e.fn()}catch(e){t=Promise.reject(e)}Promise.resolve(t).then(d).catch((t=>{if(o)return;const n=e.retry??(s?0:3),r=e.retryDelay??D,l="function"==typeof r?r(a,t):r,u=!0===n||"number"==typeof n&&a{setTimeout(e,d)}))).then((()=>c()?void 0:h())).then((()=>{i?p(t):f()}))):p(t)}))};return{promise:l,cancel:t=>{o||(p(new I(t)),e.abort?.())},continue:()=>(t?.(),l),cancelRetry:()=>{i=!0},continueRetry:()=>{i=!1},canStart:u,start:()=>(u()?f():h().then(f),l)}}var M=class{#i;destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),c(this.gcTime)&&(this.#i=setTimeout((()=>{this.optionalRemove()}),this.gcTime))}updateGcTime(e){this.gcTime=Math.max(this.gcTime||0,e??(s?1/0:3e5))}clearGcTimeout(){this.#i&&(clearTimeout(this.#i),this.#i=void 0)}},F=class extends M{#a;#o;#s;#l;#c;#u;constructor(e){super(),this.#u=!1,this.#c=e.defaultOptions,this.setOptions(e.options),this.observers=[],this.#s=e.cache,this.queryKey=e.queryKey,this.queryHash=e.queryHash,this.#a=e.state||function(e){const t="function"==typeof e.initialData?e.initialData():e.initialData,n=void 0!==t,r=n?"function"==typeof e.initialDataUpdatedAt?e.initialDataUpdatedAt():e.initialDataUpdatedAt:0;return{data:t,dataUpdateCount:0,dataUpdatedAt:n?r??Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:n?"success":"pending",fetchStatus:"idle"}}(this.options),this.state=this.#a,this.scheduleGc()}get meta(){return this.options.meta}get promise(){return this.#l?.promise}setOptions(e){this.options={...this.#c,...e},this.updateGcTime(this.options.gcTime)}optionalRemove(){this.observers.length||"idle"!==this.state.fetchStatus||this.#s.remove(this)}setData(e,t){const n=x(this.state.data,e,this.options);return this.#d({data:n,type:"success",dataUpdatedAt:t?.updatedAt,manual:t?.manual}),n}setState(e,t){this.#d({type:"setState",state:e,setStateOptions:t})}cancel(e){const t=this.#l?.promise;return this.#l?.cancel(e),t?t.then(l).catch(l):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}reset(){this.destroy(),this.setState(this.#a)}isActive(){return this.observers.some((e=>!1!==p(e.options.enabled,this)))}isDisabled(){return this.getObserversCount()>0&&!this.isActive()}isStale(){return!!this.state.isInvalidated||(this.getObserversCount()>0?this.observers.some((e=>e.getCurrentResult().isStale)):void 0===this.state.data)}isStaleByTime(e=0){return this.state.isInvalidated||void 0===this.state.data||!u(this.state.dataUpdatedAt,e)}onFocus(){const e=this.observers.find((e=>e.shouldFetchOnWindowFocus()));e?.refetch({cancelRefetch:!1}),this.#l?.continue()}onOnline(){const e=this.observers.find((e=>e.shouldFetchOnReconnect()));e?.refetch({cancelRefetch:!1}),this.#l?.continue()}addObserver(e){this.observers.includes(e)||(this.observers.push(e),this.clearGcTimeout(),this.#s.notify({type:"observerAdded",query:this,observer:e}))}removeObserver(e){this.observers.includes(e)&&(this.observers=this.observers.filter((t=>t!==e)),this.observers.length||(this.#l&&(this.#u?this.#l.cancel({revert:!0}):this.#l.cancelRetry()),this.scheduleGc()),this.#s.notify({type:"observerRemoved",query:this,observer:e}))}getObserversCount(){return this.observers.length}invalidate(){this.state.isInvalidated||this.#d({type:"invalidate"})}fetch(e,t){if("idle"!==this.state.fetchStatus)if(void 0!==this.state.data&&t?.cancelRefetch)this.cancel({silent:!0});else if(this.#l)return this.#l.continueRetry(),this.#l.promise;if(e&&this.setOptions(e),!this.options.queryFn){const e=this.observers.find((e=>e.options.queryFn));e&&this.setOptions(e.options)}const n=new AbortController,r=e=>{Object.defineProperty(e,"signal",{enumerable:!0,get:()=>(this.#u=!0,n.signal)})},i={fetchOptions:t,options:this.options,queryKey:this.queryKey,state:this.state,fetchFn:()=>{const e=C(this.options,t),n={queryKey:this.queryKey,meta:this.meta};return r(n),this.#u=!1,this.options.persister?this.options.persister(e,n,this):e(n)}};r(i),this.options.behavior?.onFetch(i,this),this.#o=this.state,"idle"!==this.state.fetchStatus&&this.state.fetchMeta===i.fetchOptions?.meta||this.#d({type:"fetch",meta:i.fetchOptions?.meta});const a=e=>{N(e)&&e.silent||this.#d({type:"error",error:e}),N(e)||(this.#s.config.onError?.(e,this),this.#s.config.onSettled?.(this.state.data,e,this)),this.isFetchingOptimistic||this.scheduleGc(),this.isFetchingOptimistic=!1};return this.#l=L({initialPromise:t?.initialPromise,fn:i.fetchFn,abort:n.abort.bind(n),onSuccess:e=>{void 0!==e?(this.setData(e),this.#s.config.onSuccess?.(e,this),this.#s.config.onSettled?.(e,this.state.error,this),this.isFetchingOptimistic||this.scheduleGc(),this.isFetchingOptimistic=!1):a(new Error(`${this.queryHash} data is undefined`))},onError:a,onFail:(e,t)=>{this.#d({type:"failed",failureCount:e,error:t})},onPause:()=>{this.#d({type:"pause"})},onContinue:()=>{this.#d({type:"continue"})},retry:i.options.retry,retryDelay:i.options.retryDelay,networkMode:i.options.networkMode,canRun:()=>!0}),this.#l.start()}#d(e){this.state=(t=>{switch(e.type){case"failed":return{...t,fetchFailureCount:e.failureCount,fetchFailureReason:e.error};case"pause":return{...t,fetchStatus:"paused"};case"continue":return{...t,fetchStatus:"fetching"};case"fetch":return{...t,...$(t.data,this.options),fetchMeta:e.meta??null};case"success":return{...t,data:e.data,dataUpdateCount:t.dataUpdateCount+1,dataUpdatedAt:e.dataUpdatedAt??Date.now(),error:null,isInvalidated:!1,status:"success",...!e.manual&&{fetchStatus:"idle",fetchFailureCount:0,fetchFailureReason:null}};case"error":const n=e.error;return N(n)&&n.revert&&this.#o?{...this.#o,fetchStatus:"idle"}:{...t,error:n,errorUpdateCount:t.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:t.fetchFailureCount+1,fetchFailureReason:n,fetchStatus:"idle",status:"error"};case"invalidate":return{...t,isInvalidated:!0};case"setState":return{...t,...e.state}}})(this.state),k.batch((()=>{this.observers.forEach((e=>{e.onQueryUpdate()})),this.#s.notify({query:this,type:"updated",action:e})}))}};function $(e,t){return{fetchFailureCount:0,fetchFailureReason:null,fetchStatus:j(t.networkMode)?"fetching":"paused",...void 0===e&&{error:null,status:"pending"}}}var B=class extends P{constructor(e={}){super(),this.config=e,this.#p=new Map}#p;build(e,t,n){const r=t.queryKey,i=t.queryHash??m(r,t);let a=this.get(i);return a||(a=new F({cache:this,queryKey:r,queryHash:i,options:e.defaultQueryOptions(t),state:n,defaultOptions:e.getQueryDefaults(r)}),this.add(a)),a}add(e){this.#p.has(e.queryHash)||(this.#p.set(e.queryHash,e),this.notify({type:"added",query:e}))}remove(e){const t=this.#p.get(e.queryHash);t&&(e.destroy(),t===e&&this.#p.delete(e.queryHash),this.notify({type:"removed",query:e}))}clear(){k.batch((()=>{this.getAll().forEach((e=>{this.remove(e)}))}))}get(e){return this.#p.get(e)}getAll(){return[...this.#p.values()]}find(e){const t={exact:!0,...e};return this.getAll().find((e=>h(t,e)))}findAll(e={}){const t=this.getAll();return Object.keys(e).length>0?t.filter((t=>h(e,t))):t}notify(e){k.batch((()=>{this.listeners.forEach((t=>{t(e)}))}))}onFocus(){k.batch((()=>{this.getAll().forEach((e=>{e.onFocus()}))}))}onOnline(){k.batch((()=>{this.getAll().forEach((e=>{e.onOnline()}))}))}},V=class extends M{#h;#f;#l;constructor(e){super(),this.mutationId=e.mutationId,this.#f=e.mutationCache,this.#h=[],this.state=e.state||{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:"idle",variables:void 0,submittedAt:0},this.setOptions(e.options),this.scheduleGc()}setOptions(e){this.options=e,this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(e){this.#h.includes(e)||(this.#h.push(e),this.clearGcTimeout(),this.#f.notify({type:"observerAdded",mutation:this,observer:e}))}removeObserver(e){this.#h=this.#h.filter((t=>t!==e)),this.scheduleGc(),this.#f.notify({type:"observerRemoved",mutation:this,observer:e})}optionalRemove(){this.#h.length||("pending"===this.state.status?this.scheduleGc():this.#f.remove(this))}continue(){return this.#l?.continue()??this.execute(this.state.variables)}async execute(e){this.#l=L({fn:()=>this.options.mutationFn?this.options.mutationFn(e):Promise.reject(new Error("No mutationFn found")),onFail:(e,t)=>{this.#d({type:"failed",failureCount:e,error:t})},onPause:()=>{this.#d({type:"pause"})},onContinue:()=>{this.#d({type:"continue"})},retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode,canRun:()=>this.#f.canRun(this)});const t="pending"===this.state.status,n=!this.#l.canStart();try{if(!t){this.#d({type:"pending",variables:e,isPaused:n}),await(this.#f.config.onMutate?.(e,this));const t=await(this.options.onMutate?.(e));t!==this.state.context&&this.#d({type:"pending",context:t,variables:e,isPaused:n})}const r=await this.#l.start();return await(this.#f.config.onSuccess?.(r,e,this.state.context,this)),await(this.options.onSuccess?.(r,e,this.state.context)),await(this.#f.config.onSettled?.(r,null,this.state.variables,this.state.context,this)),await(this.options.onSettled?.(r,null,e,this.state.context)),this.#d({type:"success",data:r}),r}catch(t){try{throw await(this.#f.config.onError?.(t,e,this.state.context,this)),await(this.options.onError?.(t,e,this.state.context)),await(this.#f.config.onSettled?.(void 0,t,this.state.variables,this.state.context,this)),await(this.options.onSettled?.(void 0,t,e,this.state.context)),t}finally{this.#d({type:"error",error:t})}}finally{this.#f.runNext(this)}}#d(e){this.state=(t=>{switch(e.type){case"failed":return{...t,failureCount:e.failureCount,failureReason:e.error};case"pause":return{...t,isPaused:!0};case"continue":return{...t,isPaused:!1};case"pending":return{...t,context:e.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:e.isPaused,status:"pending",variables:e.variables,submittedAt:Date.now()};case"success":return{...t,data:e.data,failureCount:0,failureReason:null,error:null,status:"success",isPaused:!1};case"error":return{...t,data:void 0,error:e.error,failureCount:t.failureCount+1,failureReason:e.error,isPaused:!1,status:"error"}}})(this.state),k.batch((()=>{this.#h.forEach((t=>{t.onMutationUpdate(e)})),this.#f.notify({mutation:this,type:"updated",action:e})}))}};var z=class extends P{constructor(e={}){super(),this.config=e,this.#m=new Map,this.#g=Date.now()}#m;#g;build(e,t,n){const r=new V({mutationCache:this,mutationId:++this.#g,options:e.defaultMutationOptions(t),state:n});return this.add(r),r}add(e){const t=U(e),n=this.#m.get(t)??[];n.push(e),this.#m.set(t,n),this.notify({type:"added",mutation:e})}remove(e){const t=U(e);if(this.#m.has(t)){const n=this.#m.get(t)?.filter((t=>t!==e));n&&(0===n.length?this.#m.delete(t):this.#m.set(t,n))}this.notify({type:"removed",mutation:e})}canRun(e){const t=this.#m.get(U(e))?.find((e=>"pending"===e.state.status));return!t||t===e}runNext(e){const t=this.#m.get(U(e))?.find((t=>t!==e&&t.state.isPaused));return t?.continue()??Promise.resolve()}clear(){k.batch((()=>{this.getAll().forEach((e=>{this.remove(e)}))}))}getAll(){return[...this.#m.values()].flat()}find(e){const t={exact:!0,...e};return this.getAll().find((e=>f(t,e)))}findAll(e={}){return this.getAll().filter((t=>f(e,t)))}notify(e){k.batch((()=>{this.listeners.forEach((t=>{t(e)}))}))}resumePausedMutations(){const e=this.getAll().filter((e=>e.state.isPaused));return k.batch((()=>Promise.all(e.map((e=>e.continue().catch(l))))))}};function U(e){return e.options.scope?.id??String(e.mutationId)}function q(e){return{onFetch:(t,n)=>{const r=async()=>{const n=t.options,r=t.fetchOptions?.meta?.fetchMore?.direction,i=t.state.data?.pages||[],a=t.state.data?.pageParams||[],o={pages:[],pageParams:[]};let s=!1;const l=C(t.options,t.fetchOptions),c=async(e,n,r)=>{if(s)return Promise.reject();if(null==n&&e.pages.length)return Promise.resolve(e);const i={queryKey:t.queryKey,pageParam:n,direction:r?"backward":"forward",meta:t.options.meta};var a;a=i,Object.defineProperty(a,"signal",{enumerable:!0,get:()=>(t.signal.aborted?s=!0:t.signal.addEventListener("abort",(()=>{s=!0})),t.signal)});const o=await l(i),{maxPages:c}=t.options,u=r?_:O;return{pages:u(e.pages,o,c),pageParams:u(e.pageParams,n,c)}};let u;if(r&&i.length){const e="backward"===r,t={pages:i,pageParams:a},o=(e?G:H)(n,t);u=await c(t,o,e)}else{u=await c(o,a[0]??n.initialPageParam);const t=e??i.length;for(let e=1;et.options.persister?.(r,{queryKey:t.queryKey,meta:t.options.meta,signal:t.signal},n):t.fetchFn=r}}}function H(e,{pages:t,pageParams:n}){const r=t.length-1;return e.getNextPageParam(t[r],t,n[r],n)}function G(e,{pages:t,pageParams:n}){return e.getPreviousPageParam?.(t[0],t,n[0],n)}const W=new class{#y;#f;#c;#b;#v;#w;#S;#E;constructor(e={}){this.#y=e.queryCache||new B,this.#f=e.mutationCache||new z,this.#c=e.defaultOptions||{},this.#b=new Map,this.#v=new Map,this.#w=0}mount(){this.#w++,1===this.#w&&(this.#S=R.subscribe((async e=>{e&&(await this.resumePausedMutations(),this.#y.onFocus())})),this.#E=A.subscribe((async e=>{e&&(await this.resumePausedMutations(),this.#y.onOnline())})))}unmount(){this.#w--,0===this.#w&&(this.#S?.(),this.#S=void 0,this.#E?.(),this.#E=void 0)}isFetching(e){return this.#y.findAll({...e,fetchStatus:"fetching"}).length}isMutating(e){return this.#f.findAll({...e,status:"pending"}).length}getQueryData(e){const t=this.defaultQueryOptions({queryKey:e});return this.#y.get(t.queryHash)?.state.data}ensureQueryData(e){const t=this.getQueryData(e.queryKey);if(void 0===t)return this.fetchQuery(e);{const n=this.defaultQueryOptions(e),r=this.#y.build(this,n);return e.revalidateIfStale&&r.isStaleByTime(d(n.staleTime,r))&&this.prefetchQuery(n),Promise.resolve(t)}}getQueriesData(e){return this.#y.findAll(e).map((({queryKey:e,state:t})=>[e,t.data]))}setQueryData(e,t,n){const r=this.defaultQueryOptions({queryKey:e}),i=this.#y.get(r.queryHash),a=i?.state.data,o=function(e,t){return"function"==typeof e?e(t):e}(t,a);if(void 0!==o)return this.#y.build(this,r).setData(o,{...n,manual:!0})}setQueriesData(e,t,n){return k.batch((()=>this.#y.findAll(e).map((({queryKey:e})=>[e,this.setQueryData(e,t,n)]))))}getQueryState(e){const t=this.defaultQueryOptions({queryKey:e});return this.#y.get(t.queryHash)?.state}removeQueries(e){const t=this.#y;k.batch((()=>{t.findAll(e).forEach((e=>{t.remove(e)}))}))}resetQueries(e,t){const n=this.#y,r={type:"active",...e};return k.batch((()=>(n.findAll(e).forEach((e=>{e.reset()})),this.refetchQueries(r,t))))}cancelQueries(e={},t={}){const n={revert:!0,...t},r=k.batch((()=>this.#y.findAll(e).map((e=>e.cancel(n)))));return Promise.all(r).then(l).catch(l)}invalidateQueries(e={},t={}){return k.batch((()=>{if(this.#y.findAll(e).forEach((e=>{e.invalidate()})),"none"===e.refetchType)return Promise.resolve();const n={...e,type:e.refetchType??e.type??"active"};return this.refetchQueries(n,t)}))}refetchQueries(e={},t){const n={...t,cancelRefetch:t?.cancelRefetch??!0},r=k.batch((()=>this.#y.findAll(e).filter((e=>!e.isDisabled())).map((e=>{let t=e.fetch(void 0,n);return n.throwOnError||(t=t.catch(l)),"paused"===e.state.fetchStatus?Promise.resolve():t}))));return Promise.all(r).then(l)}fetchQuery(e){const t=this.defaultQueryOptions(e);void 0===t.retry&&(t.retry=!1);const n=this.#y.build(this,t);return n.isStaleByTime(d(t.staleTime,n))?n.fetch(t):Promise.resolve(n.state.data)}prefetchQuery(e){return this.fetchQuery(e).then(l).catch(l)}fetchInfiniteQuery(e){return e.behavior=q(e.pages),this.fetchQuery(e)}prefetchInfiniteQuery(e){return this.fetchInfiniteQuery(e).then(l).catch(l)}resumePausedMutations(){return A.isOnline()?this.#f.resumePausedMutations():Promise.resolve()}getQueryCache(){return this.#y}getMutationCache(){return this.#f}getDefaultOptions(){return this.#c}setDefaultOptions(e){this.#c=e}setQueryDefaults(e,t){this.#b.set(g(e),{queryKey:e,defaultOptions:t})}getQueryDefaults(e){const t=[...this.#b.values()];let n={};return t.forEach((t=>{y(e,t.queryKey)&&(n={...n,...t.defaultOptions})})),n}setMutationDefaults(e,t){this.#v.set(g(e),{mutationKey:e,defaultOptions:t})}getMutationDefaults(e){const t=[...this.#v.values()];let n={};return t.forEach((t=>{y(e,t.mutationKey)&&(n={...n,...t.defaultOptions})})),n}defaultQueryOptions(e){if(e._defaulted)return e;const t={...this.#c.queries,...this.getQueryDefaults(e.queryKey),...e,_defaulted:!0};return t.queryHash||(t.queryHash=m(t.queryKey,t)),void 0===t.refetchOnReconnect&&(t.refetchOnReconnect="always"!==t.networkMode),void 0===t.throwOnError&&(t.throwOnError=!!t.suspense),!t.networkMode&&t.persister&&(t.networkMode="offlineFirst"),!0!==t.enabled&&t.queryFn===T&&(t.enabled=!1),t}defaultMutationOptions(e){return e?._defaulted?e:{...this.#c.mutations,...e?.mutationKey&&this.getMutationDefaults(e.mutationKey),...e,_defaulted:!0}}clear(){this.#y.clear(),this.#f.clear()}}({defaultOptions:{queries:{networkMode:"always",retry:!1,refetchOnWindowFocus:!1}}});var Q;!function(e){e.EXCEPTION="exception",e.LOG="log",e.MEASUREMENT="measurement",e.TRACE="trace",e.EVENT="event"}(Q||(Q={}));const K={[Q.EXCEPTION]:"exceptions",[Q.LOG]:"logs",[Q.MEASUREMENT]:"measurements",[Q.TRACE]:"traces",[Q.EVENT]:"events"};function Y(){return Date.now()}function X(){return(new Date).toISOString()}function J(e){return new Date(e).toISOString()}function Z(e,t){return typeof e===t}function ee(e,t){return Object.prototype.toString.call(e)===`[object ${t}]`}function te(e,t){try{return e instanceof t}catch(e){return!1}}const ne=e=>Z(e,"null"),re=e=>Z(e,"string"),ie=e=>Z(e,"number")&&!isNaN(e)||Z(e,"bigint"),ae=e=>!ne(e)&&Z(e,"object"),oe=e=>Z(e,"function"),se=e=>ee(e,"Array"),le="undefined"!=typeof Event,ce=e=>le&&te(e,Event),ue="undefined"!=typeof Error,de=e=>ue&&te(e,Error),pe=e=>ee(e,"ErrorEvent"),he=e=>ee(e,"DOMError"),fe=e=>ee(e,"DOMException");function me(e,t){if(e===t)return!0;if(Z(e,"number")&&isNaN(e))return Z(t,"number")&&isNaN(t);const n=se(e),r=se(t);if(n!==r)return!1;if(n&&r){const n=e.length;if(n!==t.length)return!1;for(let r=n;0!=r--;)if(!me(e[r],t[r]))return!1;return!0}const i=ae(e),a=ae(t);if(i!==a)return!1;if(e&&t&&i&&a){const n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let e of n)if(!r.includes(e))return!1;for(let r of n)if(!me(e[r],t[r]))return!1;return!0}return!1}const ge="Error";let ye;var be;!function(e){e.TRACE="trace",e.DEBUG="debug",e.INFO="info",e.LOG="log",e.WARN="warn",e.ERROR="error"}(be||(be={}));const ve=be.LOG,we=[be.TRACE,be.DEBUG,be.INFO,be.LOG,be.WARN,be.ERROR],Se=e=>e.map((e=>{try{return String(e)}catch(e){return""}})).join(" ");function Ee(e,t,n,r,i){t.debug("Initializing API");const a=function(e,t,n,r,i){let a;return t.debug("Initializing traces API"),{getOTEL:()=>a,getTraceContext:()=>{const e=null==a?void 0:a.trace.getSpanContext(a.context.active());return e?{trace_id:e.traceId,span_id:e.spanId}:void 0},initOTEL:(e,n)=>{t.debug("Initializing OpenTelemetry"),a={trace:e,context:n}},isOTELInitialized:()=>!!a,pushTraces:e=>{try{const n={type:Q.TRACE,payload:e,meta:r.value};t.debug("Pushing trace\n",n),i.execute(n)}catch(e){t.error("Error pushing trace\n",e)}}}}(0,t,0,r,i);return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},a),function(e,t,n,r,i,a){var o;t.debug("Initializing exceptions API");let s=null;ye=null!==(o=n.parseStacktrace)&&void 0!==o?o:ye;const l=e=>{t.debug("Changing stacktrace parser"),ye=null!=e?e:ye};return l(n.parseStacktrace),{changeStacktraceParser:l,getStacktraceParser:()=>ye,pushError:(e,{skipDedupe:o,stackFrames:l,type:c,context:u,spanContext:d,timestampOverwriteMs:p}={})=>{c=c||e.name||ge;const h={meta:r.value,payload:{type:c,value:e.message,timestamp:p?J(p):X(),trace:d?{trace_id:d.traceId,span_id:d.spanId}:a.getTraceContext(),context:null!=u?u:{}},type:Q.EXCEPTION};(null==(l=null!=l?l:e.stack?null==ye?void 0:ye(e).frames:void 0)?void 0:l.length)&&(h.payload.stacktrace={frames:l});const f={type:h.payload.type,value:h.payload.value,stackTrace:h.payload.stacktrace,context:h.payload.context};o||!n.dedupe||ne(s)||!me(f,s)?(s=f,t.debug("Pushing exception\n",h),i.execute(h)):t.debug("Skipping error push because it is the same as the last one\n",h.payload)}}}(0,t,n,r,i,a)),function(e,t,n,r,i){let a,o,s;t.debug("Initializing meta API");const l=e=>{o&&r.remove(o),o={user:e},r.add(o)},c=e=>{a&&r.remove(a),a={session:e},r.add(a)};return{setUser:l,resetUser:l,setSession:c,resetSession:c,getSession:()=>r.value.session,setView:e=>{var t;if((null===(t=null==s?void 0:s.view)||void 0===t?void 0:t.name)===(null==e?void 0:e.name))return;const n=s;s={view:e},r.add(s),n&&r.remove(n)},getView:()=>r.value.view}}(0,t,0,r)),function(e,t,n,r,i,a){var o;t.debug("Initializing logs API");let s=null;const l=null!==(o=n.logArgsSerializer)&&void 0!==o?o:Se;return{pushLog:(e,{context:o,level:c,skipDedupe:u,spanContext:d,timestampOverwriteMs:p}={})=>{try{const h={type:Q.LOG,payload:{message:l(e),level:null!=c?c:ve,context:null!=o?o:{},timestamp:p?J(p):X(),trace:d?{trace_id:d.traceId,span_id:d.spanId}:a.getTraceContext()},meta:r.value},f={message:h.payload.message,level:h.payload.level,context:h.payload.context};if(!u&&n.dedupe&&!ne(s)&&me(f,s))return void t.debug("Skipping log push because it is the same as the last one\n",h.payload);s=f,t.debug("Pushing log\n",h),i.execute(h)}catch(e){t.error("Error pushing log\n",e)}}}}(0,t,n,r,i,a)),function(e,t,n,r,i,a){t.debug("Initializing measurements API");let o=null;return{pushMeasurement:(e,{skipDedupe:s,context:l,spanContext:c,timestampOverwriteMs:u}={})=>{try{const d={type:Q.MEASUREMENT,payload:Object.assign(Object.assign({},e),{trace:c?{trace_id:c.traceId,span_id:c.spanId}:a.getTraceContext(),timestamp:u?J(u):X(),context:null!=l?l:{}}),meta:r.value},p={type:d.payload.type,values:d.payload.values,context:d.payload.context};if(!s&&n.dedupe&&!ne(o)&&me(p,o))return void t.debug("Skipping measurement push because it is the same as the last one\n",d.payload);o=p,t.debug("Pushing measurement\n",d),i.execute(d)}catch(e){t.error("Error pushing measurement\n",e)}}}}(0,t,n,r,i,a)),function(e,t,n,r,i,a){let o=null;return{pushEvent:(e,s,l,{skipDedupe:c,spanContext:u,timestampOverwriteMs:d}={})=>{try{const p={meta:r.value,payload:{name:e,domain:null!=l?l:n.eventDomain,attributes:s,timestamp:d?J(d):X(),trace:u?{trace_id:u.traceId,span_id:u.spanId}:a.getTraceContext()},type:Q.EVENT},h={name:p.payload.name,attributes:p.payload.attributes,domain:p.payload.domain};if(!c&&n.dedupe&&!ne(o)&&me(h,o))return void t.debug("Skipping event push because it is the same as the last one\n",p.payload);o=h,t.debug("Pushing event\n",p),i.execute(p)}catch(e){t.error("Error pushing event",e)}}}}(0,t,n,r,i,a))}function xe(){}var Oe;!function(e){e[e.OFF=0]="OFF",e[e.ERROR=1]="ERROR",e[e.WARN=2]="WARN",e[e.INFO=3]="INFO",e[e.VERBOSE=4]="VERBOSE"}(Oe||(Oe={}));const _e={debug:xe,error:xe,info:xe,prefix:"Faro",warn:xe},Te=Oe.ERROR,Ce=Object.assign({},console);function ke(e=Ce,t=Te){const n=_e;return t>Oe.OFF&&(n.error=t>=Oe.ERROR?function(...t){e.error(`${n.prefix}\n`,...t)}:xe,n.warn=t>=Oe.WARN?function(...t){e.warn(`${n.prefix}\n`,...t)}:xe,n.info=t>=Oe.INFO?function(...t){e.info(`${n.prefix}\n`,...t)}:xe,n.debug=t>=Oe.VERBOSE?function(...t){e.debug(`${n.prefix}\n`,...t)}:xe),n}let Pe=_e;function Re(e,t){return Pe=ke(e,t.internalLoggerLevel),Pe}const Ae="undefined"!=typeof globalThis?globalThis:void 0!==__webpack_require__.g?__webpack_require__.g:"undefined"!=typeof self?self:void 0;const De="1.10.0";const je="_faroInternal";let Ie={};function Ne(e,t,n,r,i,a,o){return t.debug("Initializing Faro"),Ie={api:a,config:n,instrumentations:o,internalLogger:t,metas:r,pause:i.pause,transports:i,unpatchedConsole:e,unpause:i.unpause},function(e){e.config.isolate?e.internalLogger.debug("Skipping registering internal Faro instance on global object"):(e.internalLogger.debug("Registering internal Faro instance on global object"),Object.defineProperty(Ae,je,{configurable:!1,enumerable:!1,writable:!1,value:e}))}(Ie),function(e){if(e.config.preventGlobalExposure)e.internalLogger.debug("Skipping registering public Faro instance in the global scope");else{if(e.internalLogger.debug(`Registering public faro reference in the global scope using "${e.config.globalObjectKey}" key`),e.config.globalObjectKey in Ae)return void e.internalLogger.warn(`Skipping global registration due to key "${e.config.globalObjectKey}" being used already. Please set "globalObjectKey" to something else or set "preventGlobalExposure" to "true"`);Object.defineProperty(Ae,e.config.globalObjectKey,{configurable:!1,writable:!1,value:e})}}(Ie),Ie}class Le{constructor(e,t){var n,r;this.signalBuffer=[],this.itemLimit=null!==(n=null==t?void 0:t.itemLimit)&&void 0!==n?n:50,this.sendTimeout=null!==(r=null==t?void 0:t.sendTimeout)&&void 0!==r?r:250,this.paused=(null==t?void 0:t.paused)||!1,this.sendFn=e,this.flushInterval=-1,this.paused||this.start(),document.addEventListener("visibilitychange",(()=>{"hidden"===document.visibilityState&&this.flush()}))}addItem(e){this.paused||(this.signalBuffer.push(e),this.signalBuffer.length>=this.itemLimit&&this.flush())}start(){this.paused=!1,this.sendTimeout>0&&(this.flushInterval=window.setInterval((()=>this.flush()),this.sendTimeout))}pause(){this.paused=!0,clearInterval(this.flushInterval)}groupItems(e){const t=new Map;return e.forEach((e=>{const n=JSON.stringify(e.meta);let r=t.get(n);r=void 0===r?[e]:[...r,e],t.set(n,r)})),Array.from(t.values())}flush(){if(this.paused||0===this.signalBuffer.length)return;this.groupItems(this.signalBuffer).forEach(this.sendFn),this.signalBuffer=[]}}function Me(e){return t=>{if(t.type===Q.EXCEPTION&&t.payload){const n=t.payload,r=`${n.type}: ${n.value}`;if(function(e,t){return e.some((e=>re(e)?t.includes(e):!!t.match(e)))}(e,r))return null}return t}}function Fe(e,t,n,r){var i;t.debug("Initializing transports");const a=[];let o=n.paused,s=[];const l=e=>{let t=e;for(const e of s){const n=t.map(e).filter(Boolean);if(0===n.length)return[];t=n}return t},c=e=>{const n=l(e);if(0!==n.length)for(const e of a)t.debug(`Transporting item using ${e.name}\n`,n),e.isBatched()&&e.send(n)};let u;(null===(i=n.batching)||void 0===i?void 0:i.enabled)&&(u=new Le(c,{sendTimeout:n.batching.sendTimeout,itemLimit:n.batching.itemLimit,paused:o}));return{add:(...i)=>{t.debug("Adding transports"),i.forEach((i=>{t.debug(`Adding "${i.name}" transport`);a.some((e=>e===i))?t.warn(`Transport ${i.name} is already added`):(i.unpatchedConsole=e,i.internalLogger=t,i.config=n,i.metas=r,a.push(i))}))},addBeforeSendHooks:(...e)=>{t.debug("Adding beforeSendHooks\n",s),e.forEach((e=>{e&&s.push(e)}))},addIgnoreErrorsPatterns:(...e)=>{t.debug("Adding ignoreErrorsPatterns\n",e),e.forEach((e=>{e&&s.push(Me(e))}))},getBeforeSendHooks:()=>[...s],execute:e=>{var r;o||((null===(r=n.batching)||void 0===r?void 0:r.enabled)&&(null==u||u.addItem(e)),(e=>{var r,i;if((null===(r=n.batching)||void 0===r?void 0:r.enabled)&&a.every((e=>e.isBatched())))return;const[o]=l([e]);if(void 0!==o)for(const e of a)t.debug(`Transporting item using ${e.name}\n`,o),e.isBatched()?(null===(i=n.batching)||void 0===i?void 0:i.enabled)||e.send([o]):e.send(o)})(e))},isPaused:()=>o,pause:()=>{t.debug("Pausing transports"),null==u||u.pause(),o=!0},remove:(...e)=>{t.debug("Removing transports"),e.forEach((e=>{t.debug(`Removing "${e.name}" transport`);const n=a.indexOf(e);-1!==n?a.splice(n,1):t.warn(`Transport "${e.name}" is not added`)}))},removeBeforeSendHooks:(...e)=>{s.filter((t=>!e.includes(t)))},get transports(){return[...a]},unpause:()=>{t.debug("Unpausing transports"),null==u||u.start(),o=!1}}}let $e=Ce;function Be(e){var t;return $e=null!==(t=e.unpatchedConsole)&&void 0!==t?t:$e,$e}function Ve(e){const t=Be(e),n=Re(t,e);if(je in Ae&&!e.isolate)return void n.error('Faro is already registered. Either add instrumentations, transports etc. to the global faro instance or use the "isolate" property');n.debug("Initializing");const r=function(e,t,n){let r=[],i=[];const a=()=>r.reduce(((e,t)=>Object.assign(e,oe(t)?t():t)),{}),o=()=>{if(i.length){const e=a();i.forEach((t=>t(e)))}};return{add:(...e)=>{t.debug("Adding metas\n",e),r.push(...e),o()},remove:(...e)=>{t.debug("Removing metas\n",e),r=r.filter((t=>!e.includes(t))),o()},addListener:e=>{t.debug("Adding metas listener\n",e),i.push(e)},removeListener:e=>{t.debug("Removing metas listener\n",e),i=i.filter((t=>t!==e))},get value(){return a()}}}(0,n),i=Fe(t,n,e,r),a=Ee(0,n,e,r,i),o=function(e,t,n,r,i,a){t.debug("Initializing instrumentations");const o=[];return{add:(...s)=>{t.debug("Adding instrumentations"),s.forEach((s=>{t.debug(`Adding "${s.name}" instrumentation`),o.some((e=>e.name===s.name))?t.warn(`Instrumentation ${s.name} is already added`):(s.unpatchedConsole=e,s.internalLogger=t,s.config=n,s.metas=r,s.transports=i,s.api=a,o.push(s),s.initialize())}))},get instrumentations(){return[...o]},remove:(...e)=>{t.debug("Removing instrumentations"),e.forEach((e=>{var n,r;t.debug(`Removing "${e.name}" instrumentation`);const i=o.reduce(((t,n,r)=>null===t&&n.name===e.name?r:null),null);i?(null===(r=(n=o[i]).destroy)||void 0===r||r.call(n),o.splice(i,1)):t.warn(`Instrumentation "${e.name}" is not added`)}))}}}(t,n,e,r,i,a),s=Ne(t,n,e,r,i,a,o);return function(e){var t,n;const r={sdk:{version:De},app:{bundleId:e.config.app.name&&(i=e.config.app.name,null==Ae?void 0:Ae[`__faroBundleId_${i}`])}};var i;const a=null===(t=e.config.sessionTracking)||void 0===t?void 0:t.session;a&&e.api.setSession(a),e.config.app&&(r.app=Object.assign(Object.assign({},e.config.app),r.app)),e.config.user&&(r.user=e.config.user),e.config.view&&(r.view=e.config.view),e.metas.add(r,...null!==(n=e.config.metas)&&void 0!==n?n:[])}(s),function(e){e.transports.add(...e.config.transports),e.transports.addBeforeSendHooks(e.config.beforeSend),e.transports.addIgnoreErrorsPatterns(e.config.ignoreErrors)}(s),function(e){e.instrumentations.add(...e.config.instrumentations)}(s),s}const ze="faro",Ue={enabled:!0,sendTimeout:250,itemLimit:50},qe="browser",He="\n",Ge="eval",We="?",Qe="@",Ke=/^\s*at (?:(.*\).*?|.*?) ?\((?:address at )?)?((?:file|https?|blob|chrome-extension|address|native|eval|webpack||[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,Ye=/\((\S*)(?::(\d+))(?::(\d+))\)/,Xe="eval",Je="address at ",Ze=Je.length,et=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:file|https?|blob|chrome|webpack|resource|moz-extension|safari-extension|safari-web-extension|capacitor)?:\/.*?|\[native code]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i,tt=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,nt=" > eval",rt="safari-extension",it="safari-web-extension",at=/Minified React error #\d+;/i;function ot(e,t,n,r){const i={filename:e||document.location.href,function:t||We};return void 0!==n&&(i.lineno=n),void 0!==r&&(i.colno=r),i}function st(e,t){const n=null==e?void 0:e.includes(rt),r=!n&&(null==e?void 0:e.includes(it));return n||r?[(null==e?void 0:e.includes(Qe))?e.split(Qe)[0]:e,n?`${rt}:${t}`:`${it}:${t}`]:[e,t]}function lt(e){let t=[];e.stacktrace?t=e.stacktrace.split(He).filter(((e,t)=>t%2==0)):e.stack&&(t=e.stack.split(He));const n=t.reduce(((t,n,r)=>{let i,a,o,s,l;if(i=Ke.exec(n)){if(a=i[1],o=i[2],s=i[3],l=i[4],null==o?void 0:o.startsWith(Xe)){const e=Ye.exec(o);e&&(o=e[1],s=e[2],l=e[3])}o=(null==o?void 0:o.startsWith(Je))?o.substring(Ze):o,[a,o]=st(a,o)}else if(i=et.exec(n)){if(a=i[1],o=i[3],s=i[4],l=i[5],o&&o.includes(nt)){const e=tt.exec(o);e&&(a=a||Ge,o=e[1],s=e[2])}else 0===r&&!l&&ie(e.columnNumber)&&(l=String(e.columnNumber+1));[a,o]=st(a,o)}return(o||a)&&t.push(ot(o,a,s?Number(s):void 0,l?Number(l):void 0)),t}),[]);return at.test(e.message)?n.slice(1):n}function ct(e){return{frames:lt(e)}}const ut="com.grafana.faro.session",dt=144e5,pt=9e5,ht={enabled:!0,persistent:!1,maxSessionPersistenceTime:pt};var ft=__webpack_require__(6660);const mt="unknown",gt=[()=>{const e=new ft.UAParser,{name:t,version:n}=e.getBrowser(),{name:r,version:i}=e.getOS(),a=e.getUA(),o=navigator.language,s=navigator.userAgent.includes("Mobi"),l=function(){if(!t||!n)return;if("userAgentData"in navigator&&navigator.userAgentData)return navigator.userAgentData.brands;return}();return{browser:{name:null!=t?t:mt,version:null!=n?n:mt,os:`${null!=r?r:mt} ${null!=i?i:mt}`,userAgent:null!=a?a:mt,language:null!=o?o:mt,mobile:s,brands:null!=l?l:mt,viewportWidth:`${window.innerWidth}`,viewportHeight:`${window.innerHeight}`}}},()=>({page:{url:location.href}})],yt=()=>{const e=window.k6;return{k6:Object.assign({isK6Browser:!0},(null==e?void 0:e.testRunId)&&{testRunId:null==e?void 0:e.testRunId})}};class bt{constructor(){this.unpatchedConsole=Ce,this.internalLogger=_e,this.config={},this.metas={}}logDebug(...e){this.internalLogger.debug(`${this.name}\n`,...e)}logInfo(...e){this.internalLogger.info(`${this.name}\n`,...e)}logWarn(...e){this.internalLogger.warn(`${this.name}\n`,...e)}logError(...e){this.internalLogger.error(`${this.name}\n`,...e)}}class vt extends bt{isBatched(){return!1}getIgnoreUrls(){return[]}}function wt(e,t){var n,r;if(void 0===t)return e;if(void 0===e)return{resourceSpans:t};const i=null===(n=e.resourceSpans)||void 0===n?void 0:n[0];if(void 0===i)return e;const a=(null==i?void 0:i.scopeSpans)||[],o=(null===(r=null==t?void 0:t[0])||void 0===r?void 0:r.scopeSpans)||[];return Object.assign(Object.assign({},e),{resourceSpans:[Object.assign(Object.assign({},i),{scopeSpans:[...a,...o]})]})}function St(e,t){let n,r=!1;const i=()=>{null!=n?(e(...n),n=null,setTimeout(i,t)):r=!1};return(...a)=>{r?n=a:(e(...a),r=!0,setTimeout(i,t))}}const Et={session:"sessionStorage",local:"localStorage"};function xt(e){var t;try{let t;t=window[e];const n="__faro_storage_test__";return t.setItem(n,n),t.removeItem(n),!0}catch(n){return null===(t=Ie.internalLogger)||void 0===t||t.info(`Web storage of type ${e} is not available. Reason: ${n}`),!1}}function Ot(e,t){return Pt(t)?window[t].getItem(e):null}function _t(e,t,n){if(Pt(n))try{window[n].setItem(e,t)}catch(e){}}function Tt(e,t){Pt(t)&&window[t].removeItem(e)}const Ct=xt(Et.local),kt=xt(Et.session);function Pt(e){return e===Et.local?Ct:e===Et.session&&kt}function Rt(){var e,t,n;const r=Ie.config.sessionTracking;let i=null!==(n=null!==(t=null===(e=null==r?void 0:r.sampler)||void 0===e?void 0:e.call(r,{metas:Ie.metas.value}))&&void 0!==t?t:null==r?void 0:r.samplingRate)&&void 0!==n?n:1;if("number"!=typeof i){i=0}return Math.random()At[Math.floor(Math.random()*At.length)])).join("")}function jt({sessionId:e,started:t,lastActivity:n,isSampled:r=!0}={}){var i,a;const o=Y(),s=null===(a=null===(i=Ie.config)||void 0===i?void 0:i.sessionTracking)||void 0===a?void 0:a.generateSessionId;return null==e&&(e="function"==typeof s?s():Dt()),{sessionId:e,lastActivity:null!=n?n:o,started:null!=t?t:o,isSampled:r}}function It(e){if(null==e)return!1;const t=Y();if(!(t-e.startedthis.updateUserSession()),1e3),this.updateUserSession=Nt({fetchUserSession:Mt.fetchUserSession,storeUserSession:Mt.storeUserSession}),this.init()}static removeUserSession(){Tt(ut,Mt.storageTypeLocal)}static storeUserSession(e){_t(ut,JSON.stringify(e),Mt.storageTypeLocal)}static fetchUserSession(){const e=Ot(ut,Mt.storageTypeLocal);return e?JSON.parse(e):null}init(){document.addEventListener("visibilitychange",(()=>{"visible"===document.visibilityState&&this.updateSession()})),Ie.metas.addListener((function(e){const t=e.session,n=Mt.fetchUserSession();if(t&&t.id!==(null==n?void 0:n.sessionId)){const e=Lt(jt({sessionId:t.id,isSampled:Rt()}),n);Mt.storeUserSession(e),Ie.api.setSession(e.sessionMeta)}}))}}Mt.storageTypeLocal=Et.local;class Ft{constructor(){this.updateSession=St((()=>this.updateUserSession()),1e3),this.updateUserSession=Nt({fetchUserSession:Ft.fetchUserSession,storeUserSession:Ft.storeUserSession}),this.init()}static removeUserSession(){Tt(ut,Ft.storageTypeSession)}static storeUserSession(e){_t(ut,JSON.stringify(e),Ft.storageTypeSession)}static fetchUserSession(){const e=Ot(ut,Ft.storageTypeSession);return e?JSON.parse(e):null}init(){document.addEventListener("visibilitychange",(()=>{"visible"===document.visibilityState&&this.updateSession()})),Ie.metas.addListener((function(e){const t=e.session,n=Ft.fetchUserSession();if(t&&t.id!==(null==n?void 0:n.sessionId)){const e=Lt(jt({sessionId:t.id,isSampled:Rt()}),n);Ft.storeUserSession(e),Ie.api.setSession(e.sessionMeta)}}))}}function $t(e){return(null==e?void 0:e.persistent)?Mt:Ft}Ft.storageTypeSession=Et.session;var Bt=function(e,t,n,r){return new(n||(n=Promise))((function(i,a){function o(e){try{l(r.next(e))}catch(e){a(e)}}function s(e){try{l(r.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((r=r.apply(e,t||[])).next())}))},Vt=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(e);iDate.now(),this.promiseBuffer=function(e){const{size:t,concurrency:n}=e,r=[];let i=0;const a=()=>{if(i{i--,a(),t(e)}),(e=>{i--,a(),n(e)}))}};return{add:e=>{if(r.length+i>=t)throw new Error("Task buffer full");return new Promise(((t,n)=>{r.push({producer:e,resolve:t,reject:n}),a()}))}}}({size:null!==(r=e.bufferSize)&&void 0!==r?r:30,concurrency:null!==(i=e.concurrency)&&void 0!==i?i:5})}send(e){return Bt(this,void 0,void 0,(function*(){try{if(this.disabledUntil>new Date(this.getNow()))return this.logWarn(`Dropping transport item due to too many requests. Backoff until ${this.disabledUntil}`),Promise.resolve();yield this.promiseBuffer.add((()=>{const t=JSON.stringify(function(e){let t={meta:{}};return void 0!==e[0]&&(t.meta=e[0].meta),e.forEach((e=>{switch(e.type){case Q.LOG:case Q.EVENT:case Q.EXCEPTION:case Q.MEASUREMENT:const n=K[e.type],r=t[n];t=Object.assign(Object.assign({},t),{[n]:void 0===r?[e.payload]:[...r,e.payload]});break;case Q.TRACE:t=Object.assign(Object.assign({},t),{traces:wt(t.traces,e.payload.resourceSpans)})}})),t}(e)),{url:n,requestOptions:r,apiKey:i}=this.options,a=null!=r?r:{},{headers:o}=a,s=Vt(a,["headers"]);let l;const c=this.metas.value.session;return null!=c&&(l=c.id),fetch(n,Object.assign({method:"POST",headers:Object.assign(Object.assign(Object.assign({"Content-Type":"application/json"},null!=o?o:{}),i?{"x-api-key":i}:{}),l?{"x-faro-session-id":l}:{}),body:t,keepalive:t.length<=6e4},null!=s?s:{})).then((e=>Bt(this,void 0,void 0,(function*(){if(202===e.status){"invalid"===e.headers.get("X-Faro-Session-Status")&&this.extendFaroSession(this.config,this.logDebug)}return 429===e.status&&(this.disabledUntil=this.getRetryAfterDate(e),this.logWarn(`Too many requests, backing off until ${this.disabledUntil}`)),e.text().catch(xe),e})))).catch((e=>{this.logError("Failed sending payload to the receiver\n",JSON.parse(t),e)}))}))}catch(e){this.logError(e)}}))}getIgnoreUrls(){var e;return[this.options.url].concat(null!==(e=this.config.ignoreUrls)&&void 0!==e?e:[])}isBatched(){return!0}getRetryAfterDate(e){const t=this.getNow(),n=e.headers.get("Retry-After");if(n){const e=Number(n);if(!isNaN(e))return new Date(1e3*e+t);const r=Date.parse(n);if(!isNaN(r))return new Date(r)}return new Date(t+this.rateLimitBackoffMs)}extendFaroSession(e,t){const n="Session expired",r=e.sessionTracking;if(null==r?void 0:r.enabled){const{fetchUserSession:e,storeUserSession:i}=$t(r);Nt({fetchUserSession:e,storeUserSession:i})({forceSessionExtend:!0}),t(`${n} created new session.`)}else t(`${n}.`)}}class Ut extends bt{constructor(){super(...arguments),this.api={},this.transports={}}}const qt="DOMError",Ht="DOMException",Gt="Non-Error exception captured with keys:",Wt=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;function Qt(e){let t,n,r,i,a=[];if(pe(e)&&e.error)t=e.error.message,n=e.error.name,a=lt(e.error);else if((r=he(e))||fe(e)){const{name:i,message:a}=e;n=null!=i?i:r?qt:Ht,t=a?`${n}: ${a}`:n}else de(e)?(t=e.message,a=lt(e)):(ae(e)||(i=ce(e)))&&(n=i?e.constructor.name:void 0,t=`${Gt} ${Object.keys(e)}`);return[t,n,a]}function Kt(e){const t=window.onerror;window.onerror=(...n)=>{try{const[t,r,i,a,o]=n;let s,l,c=[];const u=re(t),d=ot(r,"?",i,a);o||!u?([s,l,c]=Qt(null!=o?o:t),0===c.length&&(c=[d])):u&&([s,l]=function(e){var t,n;const r=e.match(Wt),i=null!==(t=null==r?void 0:r[1])&&void 0!==t?t:ge;return[null!==(n=null==r?void 0:r[2])&&void 0!==n?n:e,i]}(t),c=[d]),s&&e.pushError(new Error(s),{type:l,stackFrames:c})}finally{null==t||t.apply(window,n)}}}function Yt(e){window.addEventListener("unhandledrejection",(t=>{var n,r;let i,a,o=t;o.reason?o=t.reason:(null===(n=t.detail)||void 0===n?void 0:n.reason)&&(o=null===(r=t.detail)||void 0===r?void 0:r.reason);let s=[];(e=>!ae(e)&&!oe(e))(o)?(i=`Non-Error promise rejection captured with value: ${String(o)}`,a="UnhandledRejection"):[i,a,s]=Qt(o),i&&e.pushError(new Error(i),{type:a,stackFrames:s})}))}class Xt extends Ut{constructor(){super(...arguments),this.name="@grafana/faro-web-sdk:instrumentation-errors",this.version=De}initialize(){this.logDebug("Initializing"),Kt(this.api),Yt(this.api)}}var Jt,Zt,en,tn,nn,rn=-1,an=function(e){addEventListener("pageshow",(function(t){t.persisted&&(rn=t.timeStamp,e(t))}),!0)},on=function(){var e=self.performance&&performance.getEntriesByType&&performance.getEntriesByType("navigation")[0];if(e&&e.responseStart>0&&e.responseStart=0?r="back-forward-cache":n&&(document.prerendering||sn()>0?r="prerender":document.wasDiscarded?r="restore":n.type&&(r=n.type.replace(/_/g,"-"))),{name:e,value:void 0===t?-1:t,rating:"good",delta:0,entries:[],id:"v4-".concat(Date.now(),"-").concat(Math.floor(8999999999999*Math.random())+1e12),navigationType:r}},cn=function(e,t,n){try{if(PerformanceObserver.supportedEntryTypes.includes(e)){var r=new PerformanceObserver((function(e){Promise.resolve().then((function(){t(e.getEntries())}))}));return r.observe(Object.assign({type:e,buffered:!0},n||{})),r}}catch(e){}},un=function(e,t,n,r){var i,a;return function(o){t.value>=0&&(o||r)&&((a=t.value-(i||0))||void 0===i)&&(i=t.value,t.delta=a,t.rating=function(e,t){return e>t[1]?"poor":e>t[0]?"needs-improvement":"good"}(t.value,n),e(t))}},dn=function(e){requestAnimationFrame((function(){return requestAnimationFrame((function(){return e()}))}))},pn=function(e){document.addEventListener("visibilitychange",(function(){"hidden"===document.visibilityState&&e()}))},hn=function(e){var t=!1;return function(){t||(e(),t=!0)}},fn=-1,mn=function(){return"hidden"!==document.visibilityState||document.prerendering?1/0:0},gn=function(e){"hidden"===document.visibilityState&&fn>-1&&(fn="visibilitychange"===e.type?e.timeStamp:0,bn())},yn=function(){addEventListener("visibilitychange",gn,!0),addEventListener("prerenderingchange",gn,!0)},bn=function(){removeEventListener("visibilitychange",gn,!0),removeEventListener("prerenderingchange",gn,!0)},vn=function(){return fn<0&&(fn=mn(),yn(),an((function(){setTimeout((function(){fn=mn(),yn()}),0)}))),{get firstHiddenTime(){return fn}}},wn=function(e){document.prerendering?addEventListener("prerenderingchange",(function(){return e()}),!0):e()},Sn=[1800,3e3],En=function(e,t){t=t||{},wn((function(){var n,r=vn(),i=ln("FCP"),a=cn("paint",(function(e){e.forEach((function(e){"first-contentful-paint"===e.name&&(a.disconnect(),e.startTimet.latency){if(n)e.duration>n.latency?(n.entries=[e],n.latency=e.duration):e.duration===n.latency&&e.startTime===n.entries[0].startTime&&n.entries.push(e);else{var r={id:e.interactionId,latency:e.duration,entries:[e]};Rn.set(r.id,r),Pn.push(r)}Pn.sort((function(e,t){return t.latency-e.latency})),Pn.length>10&&Pn.splice(10).forEach((function(e){return Rn.delete(e.id)}))}}},Nn=function(e){var t=self.requestIdleCallback||self.setTimeout,n=-1;return e=hn(e),"hidden"===document.visibilityState?e():(n=t(e),pn(e)),n},Ln=[200,500],Mn=[2500,4e3],Fn={},$n=[800,1800],Bn=function e(t){document.prerendering?wn((function(){return e(t)})):"complete"!==document.readyState?addEventListener("load",(function(){return e(t)}),!0):setTimeout(t,0)},Vn={passive:!0,capture:!0},zn=new Date,Un=function(e,t){Zt||(Zt=t,en=e,tn=new Date,Gn(removeEventListener),qn())},qn=function(){if(en>=0&&en1e12?new Date:performance.now())-e.timeStamp;"pointerdown"==e.type?function(e,t){var n=function(){Un(e,t),i()},r=function(){i()},i=function(){removeEventListener("pointerup",n,Vn),removeEventListener("pointercancel",r,Vn)};addEventListener("pointerup",n,Vn),addEventListener("pointercancel",r,Vn)}(t,e):Un(t,e)}},Gn=function(e){["mousedown","keydown","touchstart","pointerdown"].forEach((function(t){return e(t,Hn,Vn)}))},Wn=[100,300];class Qn{constructor(e){this.pushMeasurement=e}initialize(){Object.entries(Qn.mapping).forEach((([e,t])=>{t((t=>{this.pushMeasurement({type:"web-vitals",values:{[e]:t.value}})}))}))}}Qn.mapping={cls:function(e,t){t=t||{},En(hn((function(){var n,r=ln("CLS",0),i=0,a=[],o=function(e){e.forEach((function(e){if(!e.hadRecentInput){var t=a[0],n=a[a.length-1];i&&e.startTime-n.startTime<1e3&&e.startTime-t.startTime<5e3?(i+=e.value,a.push(e)):(i=e.value,a=[e])}})),i>r.value&&(r.value=i,r.entries=a,n())},s=cn("layout-shift",o);s&&(n=un(e,r,xn,t.reportAllChanges),pn((function(){o(s.takeRecords()),n(!0)})),an((function(){i=0,r=ln("CLS",0),n=un(e,r,xn,t.reportAllChanges),dn((function(){return n()}))})),setTimeout(n,0))})))},fcp:En,fid:function(e,t){t=t||{},wn((function(){var n,r=vn(),i=ln("FID"),a=function(e){e.startTime0&&e.responseStart(t||100)-1)return n||i;if(n=n?i+">"+n:i,r.id)break;e=r.parentNode}}catch(e){}return n},nr=-1,rr=function(){return nr},ir=function(e){addEventListener("pageshow",(function(t){t.persisted&&(nr=t.timeStamp,e(t))}),!0)},ar=function(){var e=Jn();return e&&e.activationStart||0},or=function(e,t){var n=Jn(),r="navigate";return rr()>=0?r="back-forward-cache":n&&(document.prerendering||ar()>0?r="prerender":document.wasDiscarded?r="restore":n.type&&(r=n.type.replace(/_/g,"-"))),{name:e,value:void 0===t?-1:t,rating:"good",delta:0,entries:[],id:"v4-".concat(Date.now(),"-").concat(Math.floor(8999999999999*Math.random())+1e12),navigationType:r}},sr=function(e,t,n){try{if(PerformanceObserver.supportedEntryTypes.includes(e)){var r=new PerformanceObserver((function(e){Promise.resolve().then((function(){t(e.getEntries())}))}));return r.observe(Object.assign({type:e,buffered:!0},n||{})),r}}catch(e){}},lr=function(e,t,n,r){var i,a;return function(o){t.value>=0&&(o||r)&&((a=t.value-(i||0))||void 0===i)&&(i=t.value,t.delta=a,t.rating=function(e,t){return e>t[1]?"poor":e>t[0]?"needs-improvement":"good"}(t.value,n),e(t))}},cr=function(e){requestAnimationFrame((function(){return requestAnimationFrame((function(){return e()}))}))},ur=function(e){document.addEventListener("visibilitychange",(function(){"hidden"===document.visibilityState&&e()}))},dr=function(e){var t=!1;return function(){t||(e(),t=!0)}},pr=-1,hr=function(){return"hidden"!==document.visibilityState||document.prerendering?1/0:0},fr=function(e){"hidden"===document.visibilityState&&pr>-1&&(pr="visibilitychange"===e.type?e.timeStamp:0,gr())},mr=function(){addEventListener("visibilitychange",fr,!0),addEventListener("prerenderingchange",fr,!0)},gr=function(){removeEventListener("visibilitychange",fr,!0),removeEventListener("prerenderingchange",fr,!0)},yr=function(){return pr<0&&(pr=hr(),mr(),ir((function(){setTimeout((function(){pr=hr(),mr()}),0)}))),{get firstHiddenTime(){return pr}}},br=function(e){document.prerendering?addEventListener("prerenderingchange",(function(){return e()}),!0):e()},vr=[1800,3e3],wr=function(e,t){t=t||{},br((function(){var n,r=yr(),i=or("FCP"),a=sr("paint",(function(e){e.forEach((function(e){"first-contentful-paint"===e.name&&(a.disconnect(),e.startTimet.latency){if(n)e.duration>n.latency?(n.entries=[e],n.latency=e.duration):e.duration===n.latency&&e.startTime===n.entries[0].startTime&&n.entries.push(e);else{var r={id:e.interactionId,latency:e.duration,entries:[e]};Cr.set(r.id,r),Tr.push(r)}Tr.sort((function(e,t){return t.latency-e.latency})),Tr.length>10&&Tr.splice(10).forEach((function(e){return Cr.delete(e.id)}))}}},Ar=function(e){var t=self.requestIdleCallback||self.setTimeout,n=-1;return e=dr(e),"hidden"===document.visibilityState?e():(n=t(e),ur(e)),n},Dr=[200,500],jr=function(e,t){"PerformanceEventTiming"in self&&"interactionId"in PerformanceEventTiming.prototype&&(t=t||{},br((function(){var n;"interactionCount"in performance||Kn||(Kn=sr("event",_r,{type:"event",buffered:!0,durationThreshold:0}));var r,i=or("INP"),a=function(e){Ar((function(){e.forEach(Rr);var t,n=(t=Math.min(Tr.length-1,Math.floor(((Kn?Er:performance.interactionCount||0)-kr)/50)),Tr[t]);n&&n.latency!==i.value&&(i.value=n.latency,i.entries=n.entries,r())}))},o=sr("event",a,{durationThreshold:null!==(n=t.durationThreshold)&&void 0!==n?n:40});r=lr(e,i,Dr,t.reportAllChanges),o&&(o.observe({type:"first-input",buffered:!0}),ur((function(){a(o.takeRecords()),r(!0)})),ir((function(){kr=0,Tr.length=0,Cr.clear(),i=or("INP"),r=lr(e,i,Dr,t.reportAllChanges)})))})))},Ir=[],Nr=[],Lr=new WeakMap,Mr=new Map,Fr=-1,$r=function(e){Ir=Ir.concat(e),Br()},Br=function(){Fr<0&&(Fr=Ar(Vr))},Vr=function(){Mr.size>10&&Mr.forEach((function(e,t){Cr.has(t)||Mr.delete(t)}));var e=Tr.map((function(e){return Lr.get(e.entries[0])})),t=Nr.length-50;Nr=Nr.filter((function(n,r){return r>=t||e.includes(n)}));for(var n=new Set,r=0;r=0;r--){var i=Nr[r];if(Math.abs(n-i.renderTime)<=8){(t=i).startTime=Math.min(e.startTime,t.startTime),t.processingStart=Math.min(e.processingStart,t.processingStart),t.processingEnd=Math.max(e.processingEnd,t.processingEnd),t.entries.push(e);break}}t||(t={startTime:e.startTime,processingStart:e.processingStart,processingEnd:e.processingEnd,renderTime:n,entries:[e]},Nr.push(t)),(e.interactionId||"first-input"===e.entryType)&&Lr.set(e,t),Br()}));var zr,Ur,qr,Hr,Gr=function(e,t){for(var n,r=[],i=0;n=Ir[i];i++)if(!(n.startTime+n.durationt)break;r.push(n)}return r},Wr=[2500,4e3],Qr={},Kr=[800,1800],Yr=function e(t){document.prerendering?br((function(){return e(t)})):"complete"!==document.readyState?addEventListener("load",(function(){return e(t)}),!0):setTimeout(t,0)},Xr=function(e,t){t=t||{};var n=or("TTFB"),r=lr(e,n,Kr,t.reportAllChanges);Yr((function(){var i=Jn();i&&(n.value=Math.max(i.responseStart-ar(),0),n.entries=[i],r(!0),ir((function(){n=or("TTFB",0),(r=lr(e,n,Kr,t.reportAllChanges))(!0)})))}))},Jr={passive:!0,capture:!0},Zr=new Date,ei=function(e,t){zr||(zr=t,Ur=e,qr=new Date,ri(removeEventListener),ti())},ti=function(){if(Ur>=0&&Ur1e12?new Date:performance.now())-e.timeStamp;"pointerdown"==e.type?function(e,t){var n=function(){ei(e,t),i()},r=function(){i()},i=function(){removeEventListener("pointerup",n,Jr),removeEventListener("pointercancel",r,Jr)};addEventListener("pointerup",n,Jr),addEventListener("pointercancel",r,Jr)}(t,e):ei(t,e)}},ri=function(e){["mousedown","keydown","touchstart","pointerdown"].forEach((function(t){return e(t,ni,Jr)}))},ii=[100,300],ai=function(e,t){!function(e,t){t=t||{},br((function(){var n,r=yr(),i=or("FID"),a=function(e){e.startTimer.value&&(r.value=i,r.entries=a,n())},s=sr("layout-shift",o);s&&(n=lr(e,r,Sr,t.reportAllChanges),ur((function(){o(s.takeRecords()),n(!0)})),ir((function(){i=0,r=or("CLS",0),n=lr(e,r,Sr,t.reportAllChanges),cr((function(){return n()}))})),setTimeout(n,0))})))}((function(t){var n=function(e){var t,n={};if(e.entries.length){var r=e.entries.reduce((function(e,t){return e&&e.value>t.value?e:t}));if(r&&r.sources&&r.sources.length){var i=(t=r.sources).find((function(e){return e.node&&1===e.node.nodeType}))||t[0];i&&(n={largestShiftTarget:tr(i.node),largestShiftTime:r.startTime,largestShiftValue:r.value,largestShiftSource:i,largestShiftEntry:r,loadState:Zn(r.startTime)})}}return Object.assign(e,{attribution:n})}(t);e(n)}),t)}((e=>{const{loadState:t,largestShiftValue:n,largestShiftTime:r,largestShiftTarget:i}=e.attribution,a=this.buildInitialValues(e);this.addIfPresent(a,"largest_shift_value",n),this.addIfPresent(a,"largest_shift_time",r);const o=this.buildInitialContext(e);this.addIfPresent(o,si,t),this.addIfPresent(o,"largest_shift_target",i),this.pushMeasurement(a,o)}))}measureFCP(){!function(e,t){wr((function(t){var n=function(e){var t={timeToFirstByte:0,firstByteToFCP:e.value,loadState:Zn(rr())};if(e.entries.length){var n=Jn(),r=e.entries[e.entries.length-1];if(n){var i=n.activationStart||0,a=Math.max(0,n.responseStart-i);t={timeToFirstByte:a,firstByteToFCP:e.value-a,loadState:Zn(e.entries[0].startTime),navigationEntry:n,fcpEntry:r}}}return Object.assign(e,{attribution:t})}(t);e(n)}),t)}((e=>{const{firstByteToFCP:t,timeToFirstByte:n,loadState:r}=e.attribution,i=this.buildInitialValues(e);this.addIfPresent(i,"first_byte_to_fcp",t),this.addIfPresent(i,li,n);const a=this.buildInitialContext(e);this.addIfPresent(a,si,r),this.pushMeasurement(i,a)}))}measureFID(){ai((e=>{const{eventTime:t,eventTarget:n,eventType:r,loadState:i}=e.attribution,a=this.buildInitialValues(e);this.addIfPresent(a,"event_time",t);const o=this.buildInitialContext(e);this.addIfPresent(o,"event_target",n),this.addIfPresent(o,"event_type",r),this.addIfPresent(o,si,i),this.pushMeasurement(a,o)}))}measureINP(){!function(e,t){Yn||(Yn=sr("long-animation-frame",$r)),jr((function(t){var n=function(e){var t=e.entries[0],n=Lr.get(t),r=t.processingStart,i=n.processingEnd,a=n.entries.sort((function(e,t){return e.processingStart-t.processingStart})),o=Gr(t.startTime,i),s=e.entries.find((function(e){return e.target})),l=s&&s.target||Mr.get(t.interactionId),c=[t.startTime+t.duration,i].concat(o.map((function(e){return e.startTime+e.duration}))),u=Math.max.apply(Math,c),d={interactionTarget:tr(l),interactionTargetElement:l,interactionType:t.name.startsWith("key")?"keyboard":"pointer",interactionTime:t.startTime,nextPaintTime:u,processedEventEntries:a,longAnimationFrameEntries:o,inputDelay:r-t.startTime,processingDuration:i-r,presentationDelay:Math.max(u-i,0),loadState:Zn(t.startTime)};return Object.assign(e,{attribution:d})}(t);e(n)}),t)}((e=>{const{interactionTime:t,presentationDelay:n,inputDelay:r,processingDuration:i,nextPaintTime:a,loadState:o,interactionTarget:s,interactionType:l}=e.attribution,c=this.buildInitialValues(e);this.addIfPresent(c,"interaction_time",t),this.addIfPresent(c,"presentation_delay",n),this.addIfPresent(c,"input_delay",r),this.addIfPresent(c,"processing_duration",i),this.addIfPresent(c,"next_paint_time",a);const u=this.buildInitialContext(e);this.addIfPresent(u,si,o),this.addIfPresent(u,"interaction_target",s),this.addIfPresent(u,"interaction_type",l),this.pushMeasurement(c,u)}))}measureLCP(){!function(e,t){!function(e,t){t=t||{},br((function(){var n,r=yr(),i=or("LCP"),a=function(e){t.reportAllChanges||(e=e.slice(-1)),e.forEach((function(e){e.startTime{const{elementRenderDelay:t,resourceLoadDelay:n,resourceLoadDuration:r,timeToFirstByte:i,element:a}=e.attribution,o=this.buildInitialValues(e);this.addIfPresent(o,"element_render_delay",t),this.addIfPresent(o,"resource_load_delay",n),this.addIfPresent(o,"resource_load_duration",r),this.addIfPresent(o,li,i);const s=this.buildInitialContext(e);this.addIfPresent(s,"element",a),this.pushMeasurement(o,s)}))}measureTTFB(){!function(e,t){Xr((function(t){var n=function(e){var t={waitingDuration:0,cacheDuration:0,dnsDuration:0,connectionDuration:0,requestDuration:0};if(e.entries.length){var n=e.entries[0],r=n.activationStart||0,i=Math.max((n.workerStart||n.fetchStart)-r,0),a=Math.max(n.domainLookupStart-r,0),o=Math.max(n.connectStart-r,0),s=Math.max(n.connectEnd-r,0);t={waitingDuration:i,cacheDuration:a-i,dnsDuration:o-a,connectionDuration:s-o,requestDuration:e.value-s,navigationEntry:n}}return Object.assign(e,{attribution:t})}(t);e(n)}),t)}((e=>{const{dnsDuration:t,connectionDuration:n,requestDuration:r,waitingDuration:i,cacheDuration:a}=e.attribution,o=this.buildInitialValues(e);this.addIfPresent(o,"dns_duration",t),this.addIfPresent(o,"connection_duration",n),this.addIfPresent(o,"request_duration",r),this.addIfPresent(o,"waiting_duration",i),this.addIfPresent(o,"cache_duration",a);const s=this.buildInitialContext(e);this.pushMeasurement(o,s)}))}buildInitialValues(e){const t=e.name.toLowerCase();return{[t]:e.value,delta:e.delta}}buildInitialContext(e){var t;const n=null!==(t=Ot(oi,Et.session))&&void 0!==t?t:mt;return{id:e.id,rating:e.rating,navigation_type:e.navigationType,navigation_entry_id:n}}pushMeasurement(e,t){this.corePushMeasurement({type:"web-vitals",values:e},{context:t})}addIfPresent(e,t,n){n&&(e[t]=n)}}class ui extends Ut{constructor(){super(...arguments),this.name="@grafana/faro-web-sdk:instrumentation-web-vitals",this.version=De}initialize(){this.logDebug("Initializing");this.intializeWebVitalsInstrumentation().initialize()}intializeWebVitalsInstrumentation(){return this.config.trackWebVitalsAttribution?new ci(this.api.pushMeasurement):new Qn(this.api.pushMeasurement)}}const di="session_start",pi="session_resume";class hi extends Ut{constructor(){super(...arguments),this.name="@grafana/faro-web-sdk:instrumentation-session",this.version=De}sendSessionStartEvent(e){var t,n;const r=e.session;if(r&&r.id!==(null===(t=this.notifiedSession)||void 0===t?void 0:t.id)){if(this.notifiedSession&&this.notifiedSession.id===(null===(n=r.attributes)||void 0===n?void 0:n.previousSession))return this.api.pushEvent("session_extend",{},void 0,{skipDedupe:!0}),void(this.notifiedSession=r);this.notifiedSession=r,this.api.pushEvent(di,{},void 0,{skipDedupe:!0})}}createInitialSession(e,t){var n,r,i,a,o;let s,l,c=e.fetchUserSession();if(t.persistent&&t.maxSessionPersistenceTime&&c){const e=Y();c.lastActivity{var t,r,i;n();const a=null===(t=e.meta.session)||void 0===t?void 0:t.attributes;if(a&&"true"===(null==a?void 0:a.isSampled)){let t=JSON.parse(JSON.stringify(e));const n=null===(r=t.meta.session)||void 0===r?void 0:r.attributes;return null==n||delete n.isSampled,0===Object.keys(null!=n?n:{}).length&&(null===(i=t.meta.session)||void 0===i||delete i.attributes),t}return null}))}initialize(){this.logDebug("init session instrumentation");const e=this.config.sessionTracking;if(null==e?void 0:e.enabled){const t=$t(e);this.registerBeforeSendHook(t);const{initialSession:n,lifecycleType:r}=this.createInitialSession(t,e);t.storeUserSession(n);const i=n.sessionMeta;this.notifiedSession=i,this.api.setSession(i),r===di&&this.api.pushEvent(di,{},void 0,{skipDedupe:!0}),r===pi&&this.api.pushEvent(pi,{},void 0,{skipDedupe:!0})}this.metas.addListener(this.sendSessionStartEvent.bind(this))}}class fi extends Ut{constructor(){super(...arguments),this.name="@grafana/faro-web-sdk:instrumentation-view",this.version=De}sendViewChangedEvent(e){var t,n,r,i;const a=e.view;a&&a.name!==(null===(t=this.notifiedView)||void 0===t?void 0:t.name)&&(this.api.pushEvent("view_changed",{fromView:null!==(r=null===(n=this.notifiedView)||void 0===n?void 0:n.name)&&void 0!==r?r:mt,toView:null!==(i=a.name)&&void 0!==i?i:mt},void 0,{skipDedupe:!0}),this.notifiedView=a)}initialize(){this.metas.addListener(this.sendViewChangedEvent.bind(this))}}const mi=/^00-[a-f0-9]{32}-[a-f0-9]{16}-[0-9]{1,2}$/;function gi(e=[]){for(const t of e)if("traceparent"===t.name){if(!mi.test(t.description))continue;const[,e,n]=t.description.split("-");if(null!=e&&null!=n)return{traceId:e,spanId:n};break}}function yi(e=[],t){return e.some((e=>e&&null!=t.match(e)))}function bi(e,t={}){for(const[n,r]of Object.entries(t)){const t=e[n];return null!=t&&(se(r)?r.includes(t):t===r)}return!0}function vi(e){const{connectEnd:t,connectStart:n,decodedBodySize:r,domainLookupEnd:i,domainLookupStart:a,duration:o,encodedBodySize:s,fetchStart:l,initiatorType:c,name:u,nextHopProtocol:d,redirectEnd:p,redirectStart:h,renderBlockingStatus:f,requestStart:m,responseEnd:g,responseStart:y,responseStatus:b,secureConnectionStart:v,transferSize:w,workerStart:S}=e;return{name:u,duration:Si(o),tcpHandshakeTime:Si(t-n),dnsLookupTime:Si(i-a),tlsNegotiationTime:Si(m-v),responseStatus:Si(b),redirectTime:Si(p-h),requestTime:Si(y-m),responseTime:Si(g-y),fetchTime:Si(g-l),serviceWorkerTime:Si(l-S),decodedBodySize:Si(r),encodedBodySize:Si(s),cacheHitStatus:function(){let e="fullLoad";0===w?r>0&&(e="cache"):null!=b?304===b&&(e="conditionalFetch"):s>0&&w{"complete"===document.readyState&&(e(),document.removeEventListener("readystatechange",t))};document.addEventListener("readystatechange",t)}}((()=>xi(this,void 0,void 0,(function*(){const e=this.api.pushEvent,t=this.getIgnoreUrls(),{faroNavigationId:n}=yield function(e,t){let n;const r=new Promise((e=>{n=e})),i=new PerformanceObserver((r=>{var i;const[a]=r.getEntries();if(null==a||yi(t,a.name))return;const o=a.toJSON();let s=gi(null==o?void 0:o.serverTiming);const l=null!==(i=Ot(oi,Et.session))&&void 0!==i?i:mt,c=Object.assign(Object.assign({},wi(o)),{faroNavigationId:Dt(),faroPreviousNavigationId:l});_t(oi,c.faroNavigationId,Et.session),e("faro.performance.navigation",c,void 0,{spanContext:s,timestampOverwriteMs:performance.timeOrigin+o.startTime}),n(c)}));return i.observe({type:"navigation",buffered:!0}),r}(e,t);null!=n&&function(e,t,n){const r=Ie.config.trackResources;new PerformanceObserver((i=>{const a=i.getEntries();for(const i of a){if(yi(n,i.name))return;const a=i.toJSON();let o=gi(null==a?void 0:a.serverTiming);if(null==r&&bi(a,Ei)||r){const n=Object.assign(Object.assign({},vi(a)),{faroNavigationId:e,faroResourceId:Dt()});t("faro.performance.resource",n,void 0,{spanContext:o,timestampOverwriteMs:performance.timeOrigin+a.startTime})}}})).observe({type:"resource",buffered:!0})}(n,e,t)})))):this.logDebug("performance observer not supported. Disable performance instrumentation.")}getIgnoreUrls(){var e;return null===(e=this.transports.transports)||void 0===e?void 0:e.flatMap((e=>e.getIgnoreUrls()))}}class _i extends Ut{constructor(e={}){super(),this.options=e,this.name="@grafana/faro-web-sdk:instrumentation-console",this.version=De}initialize(){this.logDebug("Initializing\n",this.options),we.filter((e=>{var t;return!(null!==(t=this.options.disabledLevels)&&void 0!==t?t:_i.defaultDisabledLevels).includes(e)})).forEach((e=>{console[e]=(...t)=>{try{this.api.pushLog(t,{level:e})}catch(e){this.logError(e)}finally{this.unpatchedConsole[e](...t)}}}))}}function Ti(e={}){const t=[new Xt,new ui,new hi,new fi];return!1!==e.enablePerformanceInstrumentation&&t.unshift(new Oi),!1!==e.captureConsole&&t.push(new _i({disabledLevels:e.captureConsoleDisabledLevels})),t}function Ci(e){const t=function(e){var t,n,r,i,a,o,s,l,c;const u=[],d=ke(e.unpatchedConsole,e.internalLoggerLevel);return e.transports?((e.url||e.apiKey)&&d.error('if "transports" is defined, "url" and "apiKey" should not be defined'),u.push(...e.transports)):e.url?u.push(new zt({url:e.url,apiKey:e.apiKey})):d.error('either "url" or "transports" must be defined'),{app:e.app,batching:Object.assign(Object.assign({},Ue),e.batching),dedupe:null===(t=e.dedupe)||void 0===t||t,globalObjectKey:e.globalObjectKey||ze,instrumentations:null!==(n=e.instrumentations)&&void 0!==n?n:Ti(),internalLoggerLevel:null!==(r=e.internalLoggerLevel)&&void 0!==r?r:Te,isolate:null!==(i=e.isolate)&&void 0!==i&&i,logArgsSerializer:null!==(a=e.logArgsSerializer)&&void 0!==a?a:Se,metas:function(){const t=gt;return e.metas&&t.push(...e.metas),ae(window.k6)?[...t,yt]:t}(),parseStacktrace:ct,paused:null!==(o=e.paused)&&void 0!==o&&o,preventGlobalExposure:null!==(s=e.preventGlobalExposure)&&void 0!==s&&s,transports:u,unpatchedConsole:null!==(l=e.unpatchedConsole)&&void 0!==l?l:Ce,beforeSend:e.beforeSend,eventDomain:null!==(c=e.eventDomain)&&void 0!==c?c:qe,ignoreErrors:e.ignoreErrors,ignoreUrls:e.ignoreUrls,sessionTracking:Object.assign(Object.assign({},ht),e.sessionTracking),user:e.user,view:e.view,trackResources:e.trackResources,trackWebVitalsAttribution:e.trackWebVitalsAttribution}}(e);if(t)return Ve(t)}_i.defaultDisabledLevels=[be.DEBUG,be.TRACE,be.LOG];const ki=JSON.parse('{"id":"grafana-pyroscope-app"}'),Pi=ki.id,Ri=`/a/${Pi}`;var Ai=function(e){return e.EXPLORE="/explore",e.ADHOC="/ad-hoc",e.SETTINGS="/settings",e}({});const Di="aea79b279e6459d5bd1f0da75e0eba1925375f87",ji=[{regExp:/localhost/,environment:"local"},{regExp:/grafana-dev\.net/,environment:"dev"},{regExp:/grafana-ops\.net/,environment:"ops"},{regExp:/grafana\.net/,environment:"prod"}];function Ii(){var e,t;if(!(null===(t=window)||void 0===t||null===(e=t.location)||void 0===e?void 0:e.host))return null;const n=ji.find((({regExp:e})=>e.test(window.location.host)));return n?n.environment:null}const Ni=new Map([["dev",{environment:"dev",appName:"grafana-pyroscope-dev",faroUrl:"https://faro-collector-ops-eu-south-0.grafana-ops.net/collect/48e03a2647389f2f6494af7f975b4084"}],["ops",{environment:"ops",appName:"grafana-pyroscope-ops",faroUrl:"https://faro-collector-ops-eu-south-0.grafana-ops.net/collect/b5cfd5eeb412cf5e74bd828b4ddd17ff"}],["prod",{environment:"prod",appName:"grafana-pyroscope-prod",faroUrl:"https://faro-collector-ops-eu-south-0.grafana-ops.net/collect/6cbe17b3af4b72ce5936bf4d15a5c393"}]]);let Li=null;const Mi=()=>Li;var Fi=__webpack_require__(5959),$i=__webpack_require__.n(Fi),Bi=__webpack_require__(2540),Vi=Fi.createContext(void 0),zi=e=>{const t=Fi.useContext(Vi);if(e)return e;if(!t)throw new Error("No QueryClient set, use QueryClientProvider to set one");return t},Ui=({client:e,children:t})=>(Fi.useEffect((()=>(e.mount(),()=>{e.unmount()})),[e]),(0,Bi.jsx)(Vi.Provider,{value:e,children:t}));function qi(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function Hi(e,t,n){if(!t.has(e))throw new TypeError("attempted to "+n+" private field on non-instance");return t.get(e)}function Gi(e,t,n){return function(e,t,n){if(t.set)t.set.call(e,n);else{if(!t.writable)throw new TypeError("attempted to set read only private field");t.value=n}}(e,Hi(e,t,"set"),n),n}function Wi(e,t,n){if(!t.has(e))throw new TypeError("attempted to get private field on non-instance");return n}var Qi=new WeakMap,Ki=new WeakSet;function Yi(e,t){var n;"prod"!==function(e,t){return t.get?t.get.call(e):t.value}(n=this,Hi(n,Qi,"get"))&&console[e](...t)}const Xi=new class{trace(){var e;Wi(this,Ki,Yi).call(this,"trace",[]),null===(e=Mi())||void 0===e||e.api.pushLog([],{level:be.TRACE})}debug(...e){var t;Wi(this,Ki,Yi).call(this,"debug",e),null===(t=Mi())||void 0===t||t.api.pushLog(e,{level:be.DEBUG})}info(...e){var t;Wi(this,Ki,Yi).call(this,"info",e),null===(t=Mi())||void 0===t||t.api.pushLog(e,{level:be.INFO})}log(...e){var t;Wi(this,Ki,Yi).call(this,"log",e),null===(t=Mi())||void 0===t||t.api.pushLog(e,{level:be.LOG})}warn(...e){var t;Wi(this,Ki,Yi).call(this,"warn",e),null===(t=Mi())||void 0===t||t.api.pushLog(e,{level:be.WARN})}error(e,t){var n;Wi(this,Ki,Yi).call(this,"error",[e]),t&&Wi(this,Ki,Yi).call(this,"error",["Error context",t]),null===(n=Mi())||void 0===n||n.api.pushError(e,{context:t})}constructor(){var e,t;qi(e=this,t=Ki),t.add(e),function(e,t,n){qi(e,t),t.set(e,n)}(this,Qi,{writable:!0,value:void 0}),Gi(this,Qi,Ii())}};function Ji(e,t){var n=function(e,t,n){if(!t.has(e))throw new TypeError("attempted to "+n+" private field on non-instance");return t.get(e)}(e,t,"get");return function(e,t){return t.get?t.get.call(e):t.value}(e,n)}function Zi(e,t,n){!function(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}(e,t),t.set(e,n)}var ea=new WeakMap;const ta=new class{has(e){return Ji(this,ea).hasOwnProperty(e)}get(e){if(!this.has(e))return null;try{return JSON.parse(Ji(this,ea).getItem(e))}catch(t){return Xi.error(t,{info:`Error parsing JSON for storage item "${e}"!`}),null}}set(e,t){try{Ji(this,ea).setItem(e,JSON.stringify(t))}catch(t){Xi.error(t,{info:`Error setting storage item "${e}"!`})}}constructor(){var e,t,n;Zi(this,ea,{writable:!0,value:window.localStorage}),e=this,t="KEYS",n={SETTINGS:`${ki.id}.userSettings`,GITHUB_INTEGRATION:`${ki.id}.gitHubIntegration`,PROFILES_EXPLORER:`${ki.id}.profilesExplorer`},t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n}},na=()=>{};function ra(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class ia extends Error{constructor(e,t){let n=`HTTP ${e.status} (${e.statusText||"?"})`;(null==t?void 0:t.message)&&(n=`${n} → ${t.message}`),super(n),ra(this,"response",void 0),ra(this,"reason",void 0),this.response=e}}function aa(e,t,n,r,i,a,o){try{var s=e[a](o),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,i)}function oa(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function sa(e){for(var t=1;t"grafana-pyroscope-datasource"===e.type))}static selectDefaultDataSource(){var e;const t=ua.getPyroscopeDataSources(),n=new URL(window.location.href).searchParams.get("var-dataSource"),r=null===(e=ta.get(ta.KEYS.PROFILES_EXPLORER))||void 0===e?void 0:e.dataSource,i=t.find((e=>e.uid===n))||t.find((e=>e.uid===r))||t.find((e=>e.jsonData.overridesDefault))||t.find((e=>e.isDefault))||t[0];return i||(Xi.warn("Cannot find any Pyroscope data source! Please add and configure a Pyroscope data source to your Grafana instance."),{uid:"no-data-source-configured"})}static getBaseUrl(){const e=ua.selectDefaultDataSource();let t=a.config.appSubUrl||"";return"/"!==t.at(-1)&&(t+="/"),`${t}api/datasources/proxy/uid/${e.uid}`}constructor(){var e,t;super(ua.getBaseUrl().toString(),{"content-type":"application/json","X-Grafana-Org-Id":String((null===(t=a.config.bootData)||void 0===t||null===(e=t.user)||void 0===e?void 0:e.orgId)||"")})}}var da=class extends P{constructor(e,t){super(),this.options=t,this.#x=e,this.#O=null,this.bindMethods(),this.setOptions(t)}#x;#_=void 0;#T=void 0;#C=void 0;#k;#P;#O;#R;#A;#D;#j;#I;#N;#L=new Set;bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){1===this.listeners.size&&(this.#_.addObserver(this),pa(this.#_,this.options)?this.#M():this.updateResult(),this.#F())}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return ha(this.#_,this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return ha(this.#_,this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,this.#$(),this.#B(),this.#_.removeObserver(this)}setOptions(e,t){const n=this.options,r=this.#_;if(this.options=this.#x.defaultQueryOptions(e),void 0!==this.options.enabled&&"boolean"!=typeof this.options.enabled&&"function"!=typeof this.options.enabled&&"boolean"!=typeof p(this.options.enabled,this.#_))throw new Error("Expected enabled to be a boolean or a callback that returns a boolean");this.#V(),this.#_.setOptions(this.options),n._defaulted&&!v(this.options,n)&&this.#x.getQueryCache().notify({type:"observerOptionsUpdated",query:this.#_,observer:this});const i=this.hasListeners();i&&fa(this.#_,r,this.options,n)&&this.#M(),this.updateResult(t),!i||this.#_===r&&p(this.options.enabled,this.#_)===p(n.enabled,this.#_)&&d(this.options.staleTime,this.#_)===d(n.staleTime,this.#_)||this.#z();const a=this.#U();!i||this.#_===r&&p(this.options.enabled,this.#_)===p(n.enabled,this.#_)&&a===this.#N||this.#q(a)}getOptimisticResult(e){const t=this.#x.getQueryCache().build(this.#x,e),n=this.createResult(t,e);return function(e,t){if(!v(e.getCurrentResult(),t))return!0;return!1}(this,n)&&(this.#C=n,this.#P=this.options,this.#k=this.#_.state),n}getCurrentResult(){return this.#C}trackResult(e,t){const n={};return Object.keys(e).forEach((r=>{Object.defineProperty(n,r,{configurable:!1,enumerable:!0,get:()=>(this.trackProp(r),t?.(r),e[r])})})),n}trackProp(e){this.#L.add(e)}getCurrentQuery(){return this.#_}refetch({...e}={}){return this.fetch({...e})}fetchOptimistic(e){const t=this.#x.defaultQueryOptions(e),n=this.#x.getQueryCache().build(this.#x,t);return n.isFetchingOptimistic=!0,n.fetch().then((()=>this.createResult(n,t)))}fetch(e){return this.#M({...e,cancelRefetch:e.cancelRefetch??!0}).then((()=>(this.updateResult(),this.#C)))}#M(e){this.#V();let t=this.#_.fetch(this.options,e);return e?.throwOnError||(t=t.catch(l)),t}#z(){this.#$();const e=d(this.options.staleTime,this.#_);if(s||this.#C.isStale||!c(e))return;const t=u(this.#C.dataUpdatedAt,e)+1;this.#j=setTimeout((()=>{this.#C.isStale||this.updateResult()}),t)}#U(){return("function"==typeof this.options.refetchInterval?this.options.refetchInterval(this.#_):this.options.refetchInterval)??!1}#q(e){this.#B(),this.#N=e,!s&&!1!==p(this.options.enabled,this.#_)&&c(this.#N)&&0!==this.#N&&(this.#I=setInterval((()=>{(this.options.refetchIntervalInBackground||R.isFocused())&&this.#M()}),this.#N))}#F(){this.#z(),this.#q(this.#U())}#$(){this.#j&&(clearTimeout(this.#j),this.#j=void 0)}#B(){this.#I&&(clearInterval(this.#I),this.#I=void 0)}createResult(e,t){const n=this.#_,r=this.options,i=this.#C,a=this.#k,o=this.#P,s=e!==n?e.state:this.#T,{state:l}=e;let c,u={...l},d=!1;if(t._optimisticResults){const i=this.hasListeners(),a=!i&&pa(e,t),o=i&&fa(e,n,t,r);(a||o)&&(u={...u,...$(l.data,e.options)}),"isRestoring"===t._optimisticResults&&(u.fetchStatus="idle")}let{error:p,errorUpdatedAt:h,status:f}=u;if(t.select&&void 0!==u.data)if(i&&u.data===a?.data&&t.select===this.#R)c=this.#A;else try{this.#R=t.select,c=t.select(u.data),c=x(i?.data,c,t),this.#A=c,this.#O=null}catch(e){this.#O=e}else c=u.data;if(void 0!==t.placeholderData&&void 0===c&&"pending"===f){let e;if(i?.isPlaceholderData&&t.placeholderData===o?.placeholderData)e=i.data;else if(e="function"==typeof t.placeholderData?t.placeholderData(this.#D?.state.data,this.#D):t.placeholderData,t.select&&void 0!==e)try{e=t.select(e),this.#O=null}catch(e){this.#O=e}void 0!==e&&(f="success",c=x(i?.data,e,t),d=!0)}this.#O&&(p=this.#O,c=this.#A,h=Date.now(),f="error");const m="fetching"===u.fetchStatus,g="pending"===f,y="error"===f,b=g&&m,v=void 0!==c;return{status:f,fetchStatus:u.fetchStatus,isPending:g,isSuccess:"success"===f,isError:y,isInitialLoading:b,isLoading:b,data:c,dataUpdatedAt:u.dataUpdatedAt,error:p,errorUpdatedAt:h,failureCount:u.fetchFailureCount,failureReason:u.fetchFailureReason,errorUpdateCount:u.errorUpdateCount,isFetched:u.dataUpdateCount>0||u.errorUpdateCount>0,isFetchedAfterMount:u.dataUpdateCount>s.dataUpdateCount||u.errorUpdateCount>s.errorUpdateCount,isFetching:m,isRefetching:m&&!g,isLoadingError:y&&!v,isPaused:"paused"===u.fetchStatus,isPlaceholderData:d,isRefetchError:y&&v,isStale:ma(e,t),refetch:this.refetch}}updateResult(e){const t=this.#C,n=this.createResult(this.#_,this.options);if(this.#k=this.#_.state,this.#P=this.options,void 0!==this.#k.data&&(this.#D=this.#_),v(n,t))return;this.#C=n;const r={};!1!==e?.listeners&&(()=>{if(!t)return!0;const{notifyOnChangeProps:e}=this.options,n="function"==typeof e?e():e;if("all"===n||!n&&!this.#L.size)return!0;const r=new Set(n??this.#L);return this.options.throwOnError&&r.add("error"),Object.keys(this.#C).some((e=>{const n=e;return this.#C[n]!==t[n]&&r.has(n)}))})()&&(r.listeners=!0),this.#H({...r,...e})}#V(){const e=this.#x.getQueryCache().build(this.#x,this.options);if(e===this.#_)return;const t=this.#_;this.#_=e,this.#T=e.state,this.hasListeners()&&(t?.removeObserver(this),e.addObserver(this))}onQueryUpdate(){this.updateResult(),this.hasListeners()&&this.#F()}#H(e){k.batch((()=>{e.listeners&&this.listeners.forEach((e=>{e(this.#C)})),this.#x.getQueryCache().notify({query:this.#_,type:"observerResultsUpdated"})}))}};function pa(e,t){return function(e,t){return!1!==p(t.enabled,e)&&void 0===e.state.data&&!("error"===e.state.status&&!1===t.retryOnMount)}(e,t)||void 0!==e.state.data&&ha(e,t,t.refetchOnMount)}function ha(e,t,n){if(!1!==p(t.enabled,e)){const r="function"==typeof n?n(e):n;return"always"===r||!1!==r&&ma(e,t)}return!1}function fa(e,t,n,r){return(e!==t||!1===p(r.enabled,e))&&(!n.suspense||"error"!==e.state.status)&&ma(e,n)}function ma(e,t){return!1!==p(t.enabled,e)&&e.isStaleByTime(d(t.staleTime,e))}function ga(){let e=!1;return{clearReset:()=>{e=!1},reset:()=>{e=!0},isReset:()=>e}}var ya=Fi.createContext(ga()),ba=()=>Fi.useContext(ya),va=Fi.createContext(!1),wa=()=>Fi.useContext(va);va.Provider;function Sa(e,t){return"function"==typeof e?e(...t):!!e}function Ea(){}var xa=(e,t)=>{(e.suspense||e.throwOnError)&&(t.isReset()||(e.retryOnMount=!1))},Oa=e=>{Fi.useEffect((()=>{e.clearReset()}),[e])},_a=({result:e,errorResetBoundary:t,throwOnError:n,query:r})=>e.isError&&!t.isReset()&&!e.isFetching&&r&&Sa(n,[e.error,r]),Ta=e=>{e.suspense&&"number"!=typeof e.staleTime&&(e.staleTime=1e3)},Ca=(e,t)=>e?.suspense&&t.isPending,ka=(e,t,n)=>t.fetchOptimistic(e).catch((()=>{n.clearReset()}));function Pa(e,t){return function(e,t,n){const r=zi(n),i=wa(),a=ba(),o=r.defaultQueryOptions(e);r.getDefaultOptions().queries?._experimental_beforeQuery?.(o),o._optimisticResults=i?"isRestoring":"optimistic",Ta(o),xa(o,a),Oa(a);const[s]=Fi.useState((()=>new t(r,o))),l=s.getOptimisticResult(o);if(Fi.useSyncExternalStore(Fi.useCallback((e=>{const t=i?()=>{}:s.subscribe(k.batchCalls(e));return s.updateResult(),t}),[s,i]),(()=>s.getCurrentResult()),(()=>s.getCurrentResult())),Fi.useEffect((()=>{s.setOptions(o,{listeners:!1})}),[o,s]),Ca(o,l))throw ka(o,s,a);if(_a({result:l,errorResetBoundary:a,throwOnError:o.throwOnError,query:r.getQueryCache().get(o.queryHash)}))throw l.error;return r.getDefaultOptions().queries?._experimental_afterQuery?.(o,l),o.notifyOnChangeProps?l:s.trackResult(l)}(e,da,t)}function Ra(e,t,n,r,i,a,o){try{var s=e[a](o),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,i)}const Aa=new class extends ua{get(){var e,t=this;return(e=function*(){const e=yield t.fetch("/querier.v1.QuerierService/GetProfileStats",{method:"POST",body:JSON.stringify({})}),n=yield e.json();return{hasIngestedData:n.dataIngested,oldestProfileTime:Number(n.oldestProfileTime),newestProfileTime:Number(n.newestProfileTime)}},function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function o(e){Ra(a,r,i,o,s,"next",e)}function s(e){Ra(a,r,i,o,s,"throw",e)}o(void 0)}))})()}};function Da(){const[e,t]=(0,Fi.useState)(!1),n=ua.getPyroscopeDataSources().length,{isFetching:r,error:i,stats:a}=function({enabled:e}){const{isFetching:t,error:n,data:r,refetch:i}=Pa({enabled:e,placeholderData:()=>({hasIngestedData:!0,oldestProfileTime:0,newestProfileTime:0}),queryKey:["tenant-stats"],queryFn:()=>(Aa.abort(),Aa.get())});return{isFetching:t,error:Aa.isAbortError(n)?null:n,stats:r,refetch:i}}({enabled:n>0}),o=!r&&!(null==a?void 0:a.hasIngestedData);return{data:{shouldShowLoadingPage:!i&&r,shouldShowOnboardingPage:(i||!n||o)&&!e,shouldShowNoDataSourceBanner:!n},actions:{closeModal(){t(!0)}}}}const ja=e=>({row:(0,i.css)({display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"flex-start"}),headerColumn:(0,i.css)({display:"flex",flexDirection:"column",minWidth:"120px",alignItems:"start"}),column:(0,i.css)({display:"flex",flexDirection:"column",minWidth:"120px",alignItems:"end"}),tooltip:(0,i.css)({display:"flex",color:e.colors.text.secondary,fontSize:e.typography.bodySmall.fontSize}),contentWithIcon:(0,i.css)({display:"none",[`@media ${o.styleMixins.mediaUp(e.v1.breakpoints.sm)}`]:{display:"block"}})}),Ia=e=>(0,r.formattedValueToString)((0,r.getValueFormat)("decbytes")(e)),Na=e=>(0,r.formattedValueToString)((0,r.getValueFormat)("short")(e));function La(e){const t=(0,o.useStyles2)(ja),{data:n}=e,r=Ia(n.queryImpact.totalBytesInTimeRange),i=(0,Fi.useMemo)((()=>$i().createElement("div",{"data-testid":"queryAnalysis-popup"},$i().createElement("div",{className:t.row},$i().createElement("div",{className:t.headerColumn},"Data in time range"),$i().createElement("div",{className:t.column},r),$i().createElement("div",{className:t.column}," ")),void 0!==n.queryImpact.totalQueriedSeries&&$i().createElement("div",{className:t.row},$i().createElement("div",{className:t.headerColumn},"Series in query"),$i().createElement("div",{className:t.column},Na(n.queryImpact.totalQueriedSeries)),$i().createElement("div",{className:t.column}," ")),$i().createElement("div",{className:t.row},$i().createElement("div",{className:t.headerColumn},"Deduplication"),$i().createElement("div",{className:t.column},n.queryImpact.deduplicationNeeded?"yes":"no"),$i().createElement("div",{className:t.column}," ")),$i().createElement(o.Divider,null),$i().createElement("div",{className:t.row},$i().createElement("div",{className:t.headerColumn}," "),n.queryScopes.map(((e,n)=>$i().createElement("div",{key:n,className:t.column},$i().createElement("strong",null,e.componentType))))),$i().createElement("div",{className:t.row},$i().createElement("div",{className:t.headerColumn},"Replicas"),n.queryScopes.map(((e,n)=>$i().createElement("div",{key:n,className:t.column},e.componentCount||"/")))),$i().createElement("div",{className:t.row},$i().createElement("div",{className:t.headerColumn},"Blocks"),n.queryScopes.map(((e,n)=>$i().createElement("div",{key:n,className:t.column},Na(e.blockCount)||"/")))),$i().createElement("div",{className:t.row},$i().createElement("div",{className:t.headerColumn},"Series"),n.queryScopes.map(((e,n)=>$i().createElement("div",{key:n,className:t.column},Na(e.seriesCount)||"/")))),$i().createElement("div",{className:t.row},$i().createElement("div",{className:t.headerColumn},"Profiles"),n.queryScopes.map(((e,n)=>$i().createElement("div",{key:n,className:t.column},Na(e.profileCount)||"/")))),$i().createElement("div",{className:t.row},$i().createElement("div",{className:t.headerColumn},"Samples"),n.queryScopes.map(((e,n)=>$i().createElement("div",{key:n,className:t.column},Na(e.sampleCount)||"/")))),$i().createElement("div",{className:t.row},$i().createElement("div",{className:t.headerColumn}," "),$i().createElement("div",{className:t.column}," "),$i().createElement("div",{className:t.column}," ")),$i().createElement("div",{className:t.row},$i().createElement("div",{className:t.headerColumn},"Index Store"),n.queryScopes.map(((e,n)=>$i().createElement("div",{key:n,className:t.column},Ia(e.indexBytes)||"/")))),$i().createElement("div",{className:t.row},$i().createElement("div",{className:t.headerColumn},"Profiles Store"),n.queryScopes.map(((e,n)=>$i().createElement("div",{key:n,className:t.column},Ia(e.profileBytes)||"/")))),$i().createElement("div",{className:t.row},$i().createElement("div",{className:t.headerColumn},"Symbols Store"),n.queryScopes.map(((e,n)=>$i().createElement("div",{key:n,className:t.column},Ia(e.symbolBytes)||"/")))))),[n,t,r]);return $i().createElement($i().Fragment,null,void 0!==n.queryImpact.totalBytesInTimeRange?$i().createElement(o.Toggletip,{content:i,fitContent:!0},$i().createElement("div",{className:t.tooltip,"data-testid":"queryAnalysis-tooltip"},$i().createElement("span",{className:t.contentWithIcon},"Stored data in time range: ",r)," ",$i().createElement(o.IconButton,{name:"database","aria-label":"Query info"}))):null)}var Ma,Fa,$a,Ba,Va=__webpack_require__(2688),za=__webpack_require__.n(Va),Ua=__webpack_require__(9406),qa=__webpack_require__.n(Ua),Ha=__webpack_require__(7383),Ga=__webpack_require__.n(Ha),Wa=__webpack_require__(1664),Qa=__webpack_require__.n(Wa),Ka="bodyAttributes",Ya="htmlAttributes",Xa="titleAttributes",Ja={BASE:"base",BODY:"body",HEAD:"head",HTML:"html",LINK:"link",META:"meta",NOSCRIPT:"noscript",SCRIPT:"script",STYLE:"style",TITLE:"title"},Za=(Object.keys(Ja).map((function(e){return Ja[e]})),"charset"),eo="cssText",to="href",no="http-equiv",ro="innerHTML",io="itemprop",ao="name",oo="property",so="rel",lo="src",co="target",uo={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},po="defaultTitle",ho="defer",fo="encodeSpecialCharacters",mo="onChangeClientState",go="titleTemplate",yo=Object.keys(uo).reduce((function(e,t){return e[uo[t]]=t,e}),{}),bo=[Ja.NOSCRIPT,Ja.SCRIPT,Ja.STYLE],vo="data-react-helmet",wo="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},So=function(){function e(e,t){for(var n=0;n=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n},Oo=function(e){return!1===(!(arguments.length>1&&void 0!==arguments[1])||arguments[1])?String(e):String(e).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")},_o=function(e){var t=Ro(e,Ja.TITLE),n=Ro(e,go);if(n&&t)return n.replace(/%s/g,(function(){return Array.isArray(t)?t.join(""):t}));var r=Ro(e,po);return t||r||void 0},To=function(e){return Ro(e,mo)||function(){}},Co=function(e,t){return t.filter((function(t){return void 0!==t[e]})).map((function(t){return t[e]})).reduce((function(e,t){return Eo({},e,t)}),{})},ko=function(e,t){return t.filter((function(e){return void 0!==e[Ja.BASE]})).map((function(e){return e[Ja.BASE]})).reverse().reduce((function(t,n){if(!t.length)for(var r=Object.keys(n),i=0;i=0;n--){var r=e[n];if(r.hasOwnProperty(t))return r[t]}return null},Ao=(Ma=Date.now(),function(e){var t=Date.now();t-Ma>16?(Ma=t,e(t)):setTimeout((function(){Ao(e)}),0)}),Do=function(e){return clearTimeout(e)},jo="undefined"!=typeof window?window.requestAnimationFrame&&window.requestAnimationFrame.bind(window)||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||Ao:__webpack_require__.g.requestAnimationFrame||Ao,Io="undefined"!=typeof window?window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||Do:__webpack_require__.g.cancelAnimationFrame||Do,No=function(e){return console&&"function"==typeof console.warn&&console.warn(e)},Lo=null,Mo=function(e,t){var n=e.baseTag,r=e.bodyAttributes,i=e.htmlAttributes,a=e.linkTags,o=e.metaTags,s=e.noscriptTags,l=e.onChangeClientState,c=e.scriptTags,u=e.styleTags,d=e.title,p=e.titleAttributes;Bo(Ja.BODY,r),Bo(Ja.HTML,i),$o(d,p);var h={baseTag:Vo(Ja.BASE,n),linkTags:Vo(Ja.LINK,a),metaTags:Vo(Ja.META,o),noscriptTags:Vo(Ja.NOSCRIPT,s),scriptTags:Vo(Ja.SCRIPT,c),styleTags:Vo(Ja.STYLE,u)},f={},m={};Object.keys(h).forEach((function(e){var t=h[e],n=t.newTags,r=t.oldTags;n.length&&(f[e]=n),r.length&&(m[e]=h[e].oldTags)})),t&&t(),l(e,f,m)},Fo=function(e){return Array.isArray(e)?e.join(""):e},$o=function(e,t){void 0!==e&&document.title!==e&&(document.title=Fo(e)),Bo(Ja.TITLE,t)},Bo=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var r=n.getAttribute(vo),i=r?r.split(","):[],a=[].concat(i),o=Object.keys(t),s=0;s=0;d--)n.removeAttribute(a[d]);i.length===a.length?n.removeAttribute(vo):n.getAttribute(vo)!==o.join(",")&&n.setAttribute(vo,o.join(","))}},Vo=function(e,t){var n=document.head||document.querySelector(Ja.HEAD),r=n.querySelectorAll(e+"["+vo+"]"),i=Array.prototype.slice.call(r),a=[],o=void 0;return t&&t.length&&t.forEach((function(t){var n=document.createElement(e);for(var r in t)if(t.hasOwnProperty(r))if(r===ro)n.innerHTML=t.innerHTML;else if(r===eo)n.styleSheet?n.styleSheet.cssText=t.cssText:n.appendChild(document.createTextNode(t.cssText));else{var s=void 0===t[r]?"":t[r];n.setAttribute(r,s)}n.setAttribute(vo,"true"),i.some((function(e,t){return o=t,n.isEqualNode(e)}))?i.splice(o,1):a.push(n)})),i.forEach((function(e){return e.parentNode.removeChild(e)})),a.forEach((function(e){return n.appendChild(e)})),{oldTags:i,newTags:a}},zo=function(e){return Object.keys(e).reduce((function(t,n){var r=void 0!==e[n]?n+'="'+e[n]+'"':""+n;return t?t+" "+r:r}),"")},Uo=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.keys(e).reduce((function(t,n){return t[uo[n]||n]=e[n],t}),t)},qo=function(e,t,n){switch(e){case Ja.TITLE:return{toComponent:function(){return e=t.title,n=t.titleAttributes,(r={key:e})[vo]=!0,i=Uo(n,r),[$i().createElement(Ja.TITLE,i,e)];var e,n,r,i},toString:function(){return function(e,t,n,r){var i=zo(n),a=Fo(t);return i?"<"+e+" "+vo+'="true" '+i+">"+Oo(a,r)+"":"<"+e+" "+vo+'="true">'+Oo(a,r)+""}(e,t.title,t.titleAttributes,n)}};case Ka:case Ya:return{toComponent:function(){return Uo(t)},toString:function(){return zo(t)}};default:return{toComponent:function(){return function(e,t){return t.map((function(t,n){var r,i=((r={key:n})[vo]=!0,r);return Object.keys(t).forEach((function(e){var n=uo[e]||e;if(n===ro||n===eo){var r=t.innerHTML||t.cssText;i.dangerouslySetInnerHTML={__html:r}}else i[n]=t[e]})),$i().createElement(e,i)}))}(e,t)},toString:function(){return function(e,t,n){return t.reduce((function(t,r){var i=Object.keys(r).filter((function(e){return!(e===ro||e===eo)})).reduce((function(e,t){var i=void 0===r[t]?t:t+'="'+Oo(r[t],n)+'"';return e?e+" "+i:i}),""),a=r.innerHTML||r.cssText||"",o=-1===bo.indexOf(e);return t+"<"+e+" "+vo+'="true" '+i+(o?"/>":">"+a+"")}),"")}(e,t,n)}}}},Ho=function(e){var t=e.baseTag,n=e.bodyAttributes,r=e.encode,i=e.htmlAttributes,a=e.linkTags,o=e.metaTags,s=e.noscriptTags,l=e.scriptTags,c=e.styleTags,u=e.title,d=void 0===u?"":u,p=e.titleAttributes;return{base:qo(Ja.BASE,t,r),bodyAttributes:qo(Ka,n,r),htmlAttributes:qo(Ya,i,r),link:qo(Ja.LINK,a,r),meta:qo(Ja.META,o,r),noscript:qo(Ja.NOSCRIPT,s,r),script:qo(Ja.SCRIPT,l,r),style:qo(Ja.STYLE,c,r),title:qo(Ja.TITLE,{title:d,titleAttributes:p},r)}},Go=qa()((function(e){return{baseTag:ko([to,co],e),bodyAttributes:Co(Ka,e),defer:Ro(e,ho),encode:Ro(e,fo),htmlAttributes:Co(Ya,e),linkTags:Po(Ja.LINK,[so,to],e),metaTags:Po(Ja.META,[ao,Za,no,oo,io],e),noscriptTags:Po(Ja.NOSCRIPT,[ro],e),onChangeClientState:To(e),scriptTags:Po(Ja.SCRIPT,[lo,ro],e),styleTags:Po(Ja.STYLE,[eo],e),title:_o(e),titleAttributes:Co(Xa,e)}}),(function(e){Lo&&Io(Lo),e.defer?Lo=jo((function(){Mo(e,(function(){Lo=null}))})):(Mo(e),Lo=null)}),Ho)((function(){return null})),Wo=(Fa=Go,Ba=$a=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.shouldComponentUpdate=function(e){return!Ga()(this.props,e)},t.prototype.mapNestedChildrenToProps=function(e,t){if(!t)return null;switch(e.type){case Ja.SCRIPT:case Ja.NOSCRIPT:return{innerHTML:t};case Ja.STYLE:return{cssText:t}}throw new Error("<"+e.type+" /> elements are self-closing and can not contain children. Refer to our API for more information.")},t.prototype.flattenArrayTypeChildren=function(e){var t,n=e.child,r=e.arrayTypeChildren,i=e.newChildProps,a=e.nestedChildren;return Eo({},r,((t={})[n.type]=[].concat(r[n.type]||[],[Eo({},i,this.mapNestedChildrenToProps(n,a))]),t))},t.prototype.mapObjectTypeChildren=function(e){var t,n,r=e.child,i=e.newProps,a=e.newChildProps,o=e.nestedChildren;switch(r.type){case Ja.TITLE:return Eo({},i,((t={})[r.type]=o,t.titleAttributes=Eo({},a),t));case Ja.BODY:return Eo({},i,{bodyAttributes:Eo({},a)});case Ja.HTML:return Eo({},i,{htmlAttributes:Eo({},a)})}return Eo({},i,((n={})[r.type]=Eo({},a),n))},t.prototype.mapArrayTypeChildrenToProps=function(e,t){var n=Eo({},t);return Object.keys(e).forEach((function(t){var r;n=Eo({},n,((r={})[t]=e[t],r))})),n},t.prototype.warnOnInvalidChildren=function(e,t){return!0},t.prototype.mapChildrenToProps=function(e,t){var n=this,r={};return $i().Children.forEach(e,(function(e){if(e&&e.props){var i=e.props,a=i.children,o=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.keys(e).reduce((function(t,n){return t[yo[n]||n]=e[n],t}),t)}(xo(i,["children"]));switch(n.warnOnInvalidChildren(e,a),e.type){case Ja.LINK:case Ja.META:case Ja.NOSCRIPT:case Ja.SCRIPT:case Ja.STYLE:r=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:r,newChildProps:o,nestedChildren:a});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:o,nestedChildren:a})}}})),t=this.mapArrayTypeChildrenToProps(r,t)},t.prototype.render=function(){var e=this.props,t=e.children,n=xo(e,["children"]),r=Eo({},n);return t&&(r=this.mapChildrenToProps(t,r)),$i().createElement(Fa,r)},So(t,null,[{key:"canUseDOM",set:function(e){Fa.canUseDOM=e}}]),t}($i().Component),$a.propTypes={base:za().object,bodyAttributes:za().object,children:za().oneOfType([za().arrayOf(za().node),za().node]),defaultTitle:za().string,defer:za().bool,encodeSpecialCharacters:za().bool,htmlAttributes:za().object,link:za().arrayOf(za().object),meta:za().arrayOf(za().object),noscript:za().arrayOf(za().object),onChangeClientState:za().func,script:za().arrayOf(za().object),style:za().arrayOf(za().object),title:za().string,titleAttributes:za().object,titleTemplate:za().string},$a.defaultProps={defer:!0,encodeSpecialCharacters:!0},$a.peek=Fa.peek,$a.rewind=function(){var e=Fa.rewind();return e||(e=Ho({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}})),e},Ba);Wo.renderStatic=Wo.rewind;function Qo({size:e}){const t=(0,o.useStyles2)(Yo);return $i().createElement("img",{className:(0,i.cx)(t.logo,e),src:"public/plugins/grafana-pyroscope-app/img/logo.svg"})}const Ko=$i().memo(Qo),Yo=()=>({logo:i.css` &.small { width: 16px; height: 16px; @@ -453,7 +453,7 @@ define(["@emotion/css","@grafana/data","@grafana/runtime","@grafana/ui","d3","lo &:hover { border-color: ${e.colors.border.medium}; } - `});function ij(e,t,n,r,i,a,o){try{var s=e[a](o),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,i)}function aj(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class oj extends bh{onActivate(e){var t,n=this;return(t=function*(){const t=tm.findByKeyAndType(n,"groupBy",AD);yield t.update(),e&&n.initVariablesAndControls(e),n.renderBody(t);const r=n.subscribeToGroupByChange(),i=n.subscribeToPanelEvents();return()=>{var e;i.unsubscribe(),r.unsubscribe(),null===(e=n.state.panelTypeChangeSub)||void 0===e||e.unsubscribe()}},function(){var e=this,n=arguments;return new Promise((function(r,i){var a=t.apply(e,n);function o(e){ij(a,r,i,o,s,"next",e)}function s(e){ij(a,r,i,o,s,"throw",e)}o(void 0)}))})()}initVariablesAndControls(e){const{queryRunnerParams:t,panelType:n}=e,{groupBy:r}=t;if(null==r?void 0:r.label){tm.findByKeyAndType(this,"groupBy",AD).changeValueTo(r.label)}if(n){tm.findByKeyAndType(this,"panel-type-switcher",xR).setState({panelType:n})}}subscribeToGroupByChange(){const e=tm.findByKeyAndType(this,"groupBy",AD),t=tm.findByKeyAndType(this,"quick-filter",HA);return e.subscribeToState(((n,r)=>{n.value!==(null==r?void 0:r.value)&&(t.clearSearchText(),this.renderBody(e))}))}subscribeToPanelEvents(){const e=this.subscribeToEvent(oD,(e=>{this.selectLabel(e.payload.item)})),t=this.subscribeToEvent(LD,(e=>{const{compareTarget:t,item:n}=e.payload;this.selectForCompare(t,n)})),n=this.subscribeToEvent(YD,(e=>{this.includeLabelValueInFilters(e.payload.item)})),r=this.subscribeToEvent(KD,(e=>{this.excludeLabelValueFromFilters(e.payload.item)})),i=this.subscribeToEvent(QD,(e=>{this.clearLabelValueFromFilters(e.payload.item)}));return{unsubscribe(){i.unsubscribe(),r.unsubscribe(),n.unsubscribe(),t.unsubscribe(),e.unsubscribe()}}}subscribeToPanelTypeChange(){return tm.findByKeyAndType(this,"panel-type-switcher",xR).subscribeToState(((e,t)=>{var n;e.panelType!==(null==t?void 0:t.panelType)&&(null===(n=this.state.body)||void 0===n||n.renderGridItems())}))}renderBody(e){var t;null===(t=this.state.panelTypeChangeSub)||void 0===t||t.unsubscribe(),"all"===e.state.value?(this.setState({panelTypeChangeSub:this.subscribeToPanelTypeChange()}),this.switchToLabelNamesGrid()):this.switchToLabelValuesGrid(e)}switchToLabelNamesGrid(){tm.findByKeyAndType(this,"quick-filter",HA).setPlaceholder("Search labels (comma-separated regexes are supported)"),this.setState({body:this.buildSceneLabelNamesGrid()})}buildSceneLabelNamesGrid(){return new iD({key:"service-labels-grid",variableName:"groupBy",mapOptionToItem:(e,t,{serviceName:n,profileMetricId:r,panelType:i})=>{if("all"===e.value)return null;const{value:a,groupBy:o}=JSON.parse(e.value);return{index:t-1,value:a,label:a,queryRunnerParams:{serviceName:n,profileMetricId:r,groupBy:o,filters:[]},panelType:i}},headerActions:e=>[new fD({type:"select-label",item:e}),new fD({type:"expand-panel",item:e}),new eD({item:e})]})}switchToLabelValuesGrid(e){tm.findByKeyAndType(this,"quick-filter",HA).setPlaceholder("Search label values (comma-separated regexes are supported)"),this.clearCompare();const{index:t,value:n}=e.findCurrentOption();this.setState({body:this.buildSceneLabelValuesGrid(n,t)})}buildSceneLabelValuesGrid(e,t){return new WD({key:"service-label-values-grid",startColorIndex:t,label:e,headerActions:e=>[new fD({type:"view-flame-graph",item:e,tooltip:(e,t)=>{const{queryRunnerParams:n,label:r}=e,i=n.profileMetricId||wR(t,"profileMetricId"),a=wR(t,"groupBy");return`View the "${WP(i).type}" flame graph for "${a}=${r}"`}}),new tj({item:e}),new eD({item:e})]})}selectLabel({queryRunnerParams:e}){const t=e.groupBy.label,n=tm.findByKeyAndType(this,"groupBy",AD);M_(),n.changeValueTo(t)}includeLabelValueInFilters(e){const[t]=e.queryRunnerParams.filters,n=tm.findByKeyAndType(this,"filters",vR);n.setState({filters:fR(n.state.filters,t)})}excludeLabelValueFromFilters(e){const t=tm.findByKeyAndType(this,"filters",vR),[n]=e.queryRunnerParams.filters;t.setState({filters:mR(t.state.filters,n)})}clearLabelValueFromFilters(e){const t=tm.findByKeyAndType(this,"filters",vR),[n]=e.queryRunnerParams.filters;t.setState({filters:gR(t.state.filters,n)})}selectForCompare(e,t){var n;const r=new Map(this.state.compare);(null===(n=r.get(e))||void 0===n?void 0:n.value)===t.value?r.delete(e):r.set(e,t),this.setState({compare:r}),this.updateStatsPanels()}updateStatsPanels(){const{compare:e}=this.state,t=e.get(np.BASELINE),n=e.get(np.COMPARISON),r=tm.findAllObjects(this,(e=>e instanceof zD));for(const e of r)e.updateCompareActions(t,n)}getCompare(){return this.state.compare}clearCompare(){this.setState({compare:new Map})}constructor({item:e}){super({key:"group-by-labels",body:void 0,compare:new Map,panelTypeChangeSub:void 0}),aj(this,"onClickCompareButton",(()=>{Ts("g_pyroscope_app_compare_link_clicked");const{compare:e}=this.state,{filters:t}=JA(this,e.get(np.BASELINE)),{filters:n}=JA(this,e.get(np.COMPARISON));this.publishEvent(new ND({useAncestorTimeRange:!0,clearDiffRange:!0,baselineFilters:t,comparisonFilters:n}),!0)})),aj(this,"onClickClearCompareButton",(()=>{this.clearCompare(),this.updateStatsPanels()})),this.addActivationHandler((()=>{this.onActivate(e)}))}}aj(oj,"Component",(({model:e})=>{const t=(0,o.useStyles2)(sj),{body:n,compare:r}=e.useState(),i=tm.findByKeyAndType(e,"groupBy",AD),{value:a}=i.useState(),s=(0,Fi.useMemo)((()=>"all"===a?tm.findByKeyAndType(e,"profiles-explorer",G$).state.gridControls:[tm.findByKeyAndType(e,"quick-filter",HA),tm.findByKeyAndType(e,"layout-switcher",VA),tm.findByKeyAndType(e,"no-data-switcher",UA)]),[a,e]);return $i().createElement("div",{className:t.container,"data-testid":"groupByLabelsContainer"},$i().createElement(i.Component,{model:i}),$i().createElement("div",{className:t.sceneControls},$i().createElement(o.Stack,{wrap:"wrap"},"all"!==a&&$i().createElement(nj,{compare:r,onClickCompare:e.onClickCompareButton,onClickClear:e.onClickClearCompareButton}),s.map((e=>$i().createElement(e.Component,{key:e.state.key,model:e}))))),n&&$i().createElement(n.Component,{model:n}))}));const sj=e=>({container:i.css` + `});function ij(e,t,n,r,i,a,o){try{var s=e[a](o),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,i)}function aj(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class oj extends bh{onActivate(e){var t,n=this;return(t=function*(){const t=tm.findByKeyAndType(n,"groupBy",AD);yield t.update(),e&&n.initVariablesAndControls(e),n.renderBody(t);const r=n.subscribeToGroupByChange(),i=n.subscribeToPanelEvents();return()=>{var e;i.unsubscribe(),r.unsubscribe(),null===(e=n.state.panelTypeChangeSub)||void 0===e||e.unsubscribe()}},function(){var e=this,n=arguments;return new Promise((function(r,i){var a=t.apply(e,n);function o(e){ij(a,r,i,o,s,"next",e)}function s(e){ij(a,r,i,o,s,"throw",e)}o(void 0)}))})()}initVariablesAndControls(e){const{queryRunnerParams:t,panelType:n}=e,{groupBy:r}=t;if(null==r?void 0:r.label){tm.findByKeyAndType(this,"groupBy",AD).changeValueTo(r.label)}if(n){tm.findByKeyAndType(this,"panel-type-switcher",xR).setState({panelType:n})}}subscribeToGroupByChange(){const e=tm.findByKeyAndType(this,"groupBy",AD),t=tm.findByKeyAndType(this,"quick-filter",HA);return e.subscribeToState(((n,r)=>{n.value!==(null==r?void 0:r.value)&&(t.clearSearchText(),this.renderBody(e))}))}subscribeToPanelEvents(){const e=this.subscribeToEvent(oD,(e=>{this.selectLabel(e.payload.item)})),t=this.subscribeToEvent(LD,(e=>{const{compareTarget:t,item:n}=e.payload;this.selectForCompare(t,n)})),n=this.subscribeToEvent(YD,(e=>{this.includeLabelValueInFilters(e.payload.item)})),r=this.subscribeToEvent(KD,(e=>{this.excludeLabelValueFromFilters(e.payload.item)})),i=this.subscribeToEvent(QD,(e=>{this.clearLabelValueFromFilters(e.payload.item)}));return{unsubscribe(){i.unsubscribe(),r.unsubscribe(),n.unsubscribe(),t.unsubscribe(),e.unsubscribe()}}}subscribeToPanelTypeChange(){return tm.findByKeyAndType(this,"panel-type-switcher",xR).subscribeToState(((e,t)=>{var n;e.panelType!==(null==t?void 0:t.panelType)&&(null===(n=this.state.body)||void 0===n||n.renderGridItems())}))}renderBody(e){var t;null===(t=this.state.panelTypeChangeSub)||void 0===t||t.unsubscribe(),"all"===e.state.value?(this.setState({panelTypeChangeSub:this.subscribeToPanelTypeChange()}),this.switchToLabelNamesGrid()):this.switchToLabelValuesGrid(e)}switchToLabelNamesGrid(){tm.findByKeyAndType(this,"quick-filter",HA).setPlaceholder("Search labels (comma-separated regexes are supported)"),this.setState({body:this.buildSceneLabelNamesGrid()})}buildSceneLabelNamesGrid(){return new iD({key:"service-labels-grid",variableName:"groupBy",mapOptionToItem:(e,t,{serviceName:n,profileMetricId:r,panelType:i})=>{if("all"===e.value)return null;const{value:a,groupBy:o}=JSON.parse(e.value);return{index:t-1,value:a,label:a,queryRunnerParams:{serviceName:n,profileMetricId:r,groupBy:o,filters:[]},panelType:i}},headerActions:e=>[new fD({type:"select-label",item:e}),new fD({type:"expand-panel",item:e}),new eD({item:e})]})}switchToLabelValuesGrid(e){tm.findByKeyAndType(this,"quick-filter",HA).setPlaceholder("Search label values (comma-separated regexes are supported)"),this.clearCompare();const{index:t,value:n}=e.findCurrentOption();this.setState({body:this.buildSceneLabelValuesGrid(n,t)})}buildSceneLabelValuesGrid(e,t){return new WD({key:"service-label-values-grid",startColorIndex:t,label:e,headerActions:e=>[new fD({type:"view-flame-graph",item:e,tooltip:(e,t)=>{const{queryRunnerParams:n,label:r}=e,i=n.profileMetricId||wR(t,"profileMetricId"),a=wR(t,"groupBy");return`View the "${WP(i).type}" flame graph for "${a}=${r}"`}}),new tj({item:e}),new eD({item:e})]})}selectLabel({queryRunnerParams:e}){const t=e.groupBy.label,n=tm.findByKeyAndType(this,"groupBy",AD);M_(),n.changeValueTo(t)}includeLabelValueInFilters(e){const[t]=e.queryRunnerParams.filters,n=tm.findByKeyAndType(this,"filters",vR);n.setState({filters:fR(n.state.filters,t)})}excludeLabelValueFromFilters(e){const t=tm.findByKeyAndType(this,"filters",vR),[n]=e.queryRunnerParams.filters;t.setState({filters:mR(t.state.filters,n)})}clearLabelValueFromFilters(e){const t=tm.findByKeyAndType(this,"filters",vR),[n]=e.queryRunnerParams.filters;t.setState({filters:gR(t.state.filters,n)})}selectForCompare(e,t){var n;const r=new Map(this.state.compare);(null===(n=r.get(e))||void 0===n?void 0:n.value)===t.value?r.delete(e):r.set(e,t),this.setState({compare:r}),this.updateStatsPanels()}updateStatsPanels(){const{compare:e}=this.state,t=e.get(np.BASELINE),n=e.get(np.COMPARISON),r=tm.findAllObjects(this,(e=>e instanceof zD));for(const e of r)e.updateCompareActions(t,n)}getCompare(){return this.state.compare}clearCompare(){this.setState({compare:new Map})}constructor({item:e}){super({key:"group-by-labels",body:void 0,compare:new Map,panelTypeChangeSub:void 0}),aj(this,"onClickCompareButton",(()=>{Ts("g_pyroscope_app_compare_link_clicked");const{compare:e}=this.state,{filters:t}=JA(this,e.get(np.BASELINE)),{filters:n}=JA(this,e.get(np.COMPARISON));this.publishEvent(new ND({useAncestorTimeRange:!0,clearDiffRange:!0,baselineFilters:t,comparisonFilters:n}),!0)})),aj(this,"onClickClearCompareButton",(()=>{this.clearCompare(),this.updateStatsPanels()})),this.addActivationHandler((()=>{this.onActivate(e)}))}}aj(oj,"Component",(({model:e})=>{const t=(0,o.useStyles2)(sj),{body:n,compare:r}=e.useState(),i=tm.findByKeyAndType(e,"groupBy",AD),{value:a}=i.useState(),s=(0,Fi.useMemo)((()=>"all"===a?tm.findByKeyAndType(e,"profiles-explorer",z$).state.gridControls:[tm.findByKeyAndType(e,"quick-filter",HA),tm.findByKeyAndType(e,"layout-switcher",VA),tm.findByKeyAndType(e,"no-data-switcher",UA)]),[a,e]);return $i().createElement("div",{className:t.container,"data-testid":"groupByLabelsContainer"},$i().createElement(i.Component,{model:i}),$i().createElement("div",{className:t.sceneControls},$i().createElement(o.Stack,{wrap:"wrap"},"all"!==a&&$i().createElement(nj,{compare:r,onClickCompare:e.onClickCompareButton,onClickClear:e.onClickClearCompareButton}),s.map((e=>$i().createElement(e.Component,{key:e.state.key,model:e}))))),n&&$i().createElement(n.Component,{model:n}))}));const sj=e=>({container:i.css` margin-top: ${e.spacing(1)}; `,sceneControls:i.css` margin-bottom: ${e.spacing(1)}; @@ -545,9 +545,9 @@ define(["@emotion/css","@grafana/data","@grafana/runtime","@grafana/ui","d3","lo } `});function iI(){const[e,t]=(0,Fi.useState)(null),[n,r]=(0,Fi.useState)();return{onOpen(e){r((()=>e))},isOpen:t=>t===e,open(e){t(e),null==n||n()},close(){t(null)}}}var aI=class extends P{#x;#C=void 0;#K;#Y;constructor(e,t){super(),this.#x=e,this.setOptions(t),this.bindMethods(),this.#X()}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(e){const t=this.options;this.options=this.#x.defaultMutationOptions(e),v(this.options,t)||this.#x.getMutationCache().notify({type:"observerOptionsUpdated",mutation:this.#K,observer:this}),t?.mutationKey&&this.options.mutationKey&&g(t.mutationKey)!==g(this.options.mutationKey)?this.reset():"pending"===this.#K?.state.status&&this.#K.setOptions(this.options)}onUnsubscribe(){this.hasListeners()||this.#K?.removeObserver(this)}onMutationUpdate(e){this.#X(),this.#H(e)}getCurrentResult(){return this.#C}reset(){this.#K?.removeObserver(this),this.#K=void 0,this.#X(),this.#H()}mutate(e,t){return this.#Y=t,this.#K?.removeObserver(this),this.#K=this.#x.getMutationCache().build(this.#x,this.options),this.#K.addObserver(this),this.#K.execute(e)}#X(){const e=this.#K?.state??{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:"idle",variables:void 0,submittedAt:0};this.#C={...e,isPending:"pending"===e.status,isSuccess:"success"===e.status,isError:"error"===e.status,isIdle:"idle"===e.status,mutate:this.mutate,reset:this.reset}}#H(e){k.batch((()=>{if(this.#Y&&this.hasListeners()){const t=this.#C.variables,n=this.#C.context;"success"===e?.type?(this.#Y.onSuccess?.(e.data,t,n),this.#Y.onSettled?.(e.data,null,t,n)):"error"===e?.type&&(this.#Y.onError?.(e.error,t,n),this.#Y.onSettled?.(void 0,e.error,t,n))}this.listeners.forEach((e=>{e(this.#C)}))}))}};const oI=Object.freeze({collapsedFlamegraphs:!1,maxNodes:16384,enableFlameGraphDotComExport:!0,enableFunctionDetails:!0});function sI(e,t,n,r,i,a,o){try{var s=e[a](o),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,i)}function lI(e){return function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function o(e){sI(a,r,i,o,s,"next",e)}function s(e){sI(a,r,i,o,s,"throw",e)}o(void 0)}))}}class cI extends ua{get(){var e=this,t=()=>super.fetch;return lI((function*(){return t().call(e,"/settings.v1.SettingsService/Get",{method:"POST",body:JSON.stringify({})}).then((e=>e.json())).then((e=>{var t;const n=null===(t=e.settings)||void 0===t?void 0:t.find((({name:e})=>e===cI.PLUGIN_SETTING_NAME));return n?JSON.parse(n.value):{}}))}))()}set(e){var t=this,n=()=>super.fetch;return lI((function*(){return n().call(t,"/settings.v1.SettingsService/Set",{method:"POST",body:JSON.stringify({setting:{name:cI.PLUGIN_SETTING_NAME,value:JSON.stringify(e)}})}).then((e=>e.json()))}))()}}!function(e,t,n){t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n}(cI,"PLUGIN_SETTING_NAME","pluginSettings");const uI=new cI;function dI({enabled:e}={}){const{isFetching:t,error:n,data:r}=Pa({enabled:e,queryKey:["settings"],queryFn:()=>uI.get().then((e=>Object.keys(oI).reduce(((e,t)=>{var n,r,i;return null!==(i=(n=e)[r=t])&&void 0!==i||(n[r]=oI[t]),e}),e)))}),{mutateAsync:i}=function(e,t){const n=zi(t),[r]=Fi.useState((()=>new aI(n,e)));Fi.useEffect((()=>{r.setOptions(e)}),[r,e]);const i=Fi.useSyncExternalStore(Fi.useCallback((e=>r.subscribe(k.batchCalls(e))),[r]),(()=>r.getCurrentResult()),(()=>r.getCurrentResult())),a=Fi.useCallback(((e,t)=>{r.mutate(e,t).catch(Ea)}),[r]);if(i.error&&Sa(r.options.throwOnError,[i.error]))throw i.error;return{...i,mutate:a,mutateAsync:i.mutate}}({mutationFn:e=>uI.set(e),networkMode:"always"});return{isFetching:t,error:uI.isAbortError(n)?null:n,settings:r,mutate:i}}function pI({severity:e,title:t,message:n,error:r,errorContext:i}){return r&&Xi.error(r,i),$i().createElement(o.Alert,{title:t,severity:e},r&&$i().createElement($i().Fragment,null,r.message,$i().createElement("br",null)),n)}const hI={RadioButton:{container:"data-testid radio-button"},Breadcrumbs:{breadcrumb:e=>`data-testid ${e} breadcrumb`},TimePicker:{openButton:"data-testid TimePicker Open Button",overlayContent:"data-testid TimePicker Overlay Content",fromField:"data-testid Time Range from field",toField:"data-testid Time Range to field",applyTimeRange:"data-testid TimePicker submit button",copyTimeRange:"data-testid TimePicker copy button",pasteTimeRange:"data-testid TimePicker paste button",calendar:{label:"data-testid Time Range calendar",openButton:"data-testid Open time range calendar",closeButton:"data-testid Close time range Calendar"},absoluteTimeRangeTitle:"data-testid-absolute-time-range-narrow"},DataSourcePermissions:{form:()=>'form[name="addPermission"]',roleType:"Role to add new permission to",rolePicker:"Built-in role picker",permissionLevel:"Permission Level"},DateTimePicker:{input:"data-testid date-time-input"},DataSource:{TestData:{QueryTab:{scenarioSelectContainer:"Test Data Query scenario select container",scenarioSelect:"Test Data Query scenario select",max:"TestData max",min:"TestData min",noise:"TestData noise",seriesCount:"TestData series count",spread:"TestData spread",startValue:"TestData start value",drop:"TestData drop values"}},DataSourceHttpSettings:{urlInput:"data-testid Datasource HTTP settings url"},Jaeger:{traceIDInput:"Trace ID"},Prometheus:{configPage:{connectionSettings:"Data source connection URL",manageAlerts:"prometheus-alerts-manager",scrapeInterval:"data-testid scrape interval",queryTimeout:"data-testid query timeout",defaultEditor:"data-testid default editor",disableMetricLookup:"disable-metric-lookup",prometheusType:"data-testid prometheus type",prometheusVersion:"data-testid prometheus version",cacheLevel:"data-testid cache level",incrementalQuerying:"prometheus-incremental-querying",queryOverlapWindow:"data-testid query overlap window",disableRecordingRules:"disable-recording-rules",customQueryParameters:"data-testid custom query parameters",httpMethod:"data-testid http method",exemplarsAddButton:"data-testid Add exemplar config button",internalLinkSwitch:"data-testid Internal link switch"},queryEditor:{explain:"data-testid prometheus explain switch wrapper",editorToggle:"data-testid QueryEditorModeToggle",options:"data-testid prometheus options",legend:"data-testid prometheus legend wrapper",format:"data-testid prometheus format",step:"prometheus-step",type:"data-testid prometheus type",exemplars:"prometheus-exemplars",builder:{metricSelect:"data-testid metric select",hints:"data-testid prometheus hints",metricsExplorer:"data-testid metrics explorer",queryAdvisor:"data-testid query advisor"},code:{queryField:"data-testid prometheus query field",metricsBrowser:{openButton:"data-testid open metrics browser",selectMetric:"data-testid select a metric",metricList:"data-testid metric list",labelNamesFilter:"data-testid label names filter",labelValuesFilter:"data-testid label values filter",useQuery:"data-testid use query",useAsRateQuery:"data-testid use as rate query",validateSelector:"data-testid validate selector",clear:"data-testid clear"}}},exemplarMarker:"data-testid Exemplar marker",variableQueryEditor:{queryType:"data-testid query type",labelnames:{metricRegex:"data-testid label names metric regex"},labelValues:{labelSelect:"data-testid label values label select"},metricNames:{metricRegex:"data-testid metric names metric regex"},varQueryResult:"data-testid variable query result",seriesQuery:"data-testid prometheus series query",classicQuery:"data-testid prometheus classic query"},annotations:{minStep:"prometheus-annotation-min-step",title:"data-testid prometheus annotation title",tags:"data-testid prometheus annotation tags",text:"data-testid prometheus annotation text",seriesValueAsTimestamp:"data-testid prometheus annotation series value as timestamp"}}},Menu:{MenuComponent:e=>`${e} menu`,MenuGroup:e=>`${e} menu group`,MenuItem:e=>`${e} menu item`,SubMenu:{container:"data-testid SubMenu container",icon:"data-testid SubMenu icon"}},Panels:{Panel:{title:e=>`data-testid Panel header ${e}`,headerItems:e=>`data-testid Panel header item ${e}`,menuItems:e=>`data-testid Panel menu item ${e}`,menu:e=>`data-testid Panel menu ${e}`,containerByTitle:e=>`${e} panel`,headerCornerInfo:e=>`Panel header ${e}`,status:e=>`data-testid Panel status ${e}`,loadingBar:()=>"Panel loading bar",HoverWidget:{container:"data-testid hover-header-container",dragIcon:"data-testid drag-icon"},PanelDataErrorMessage:"data-testid Panel data error message"},Visualization:{Graph:{container:"Graph container",VisualizationTab:{legendSection:"Legend section"},Legend:{legendItemAlias:e=>`gpl alias ${e}`,showLegendSwitch:"gpl show legend"},xAxis:{labels:()=>"div.flot-x-axis > div.flot-tick-label"}},BarGauge:{value:"Bar gauge value",valueV2:"data-testid Bar gauge value"},PieChart:{svgSlice:"data testid Pie Chart Slice"},Text:{container:()=>".markdown-html"},Table:{header:"table header",footer:"table-footer",body:"data-testid table body"}}},VizLegend:{seriesName:e=>`data-testid VizLegend series ${e}`},Drawer:{General:{title:e=>`Drawer title ${e}`,expand:"Drawer expand",contract:"Drawer contract",close:"data-testid Drawer close",rcContentWrapper:()=>".rc-drawer-content-wrapper",subtitle:"data-testid drawer subtitle"}},PanelEditor:{General:{content:"Panel editor content"},OptionsPane:{content:"Panel editor option pane content",select:"Panel editor option pane select",fieldLabel:e=>`${e} field property editor`},DataPane:{content:"Panel editor data pane content"},applyButton:"data-testid Apply changes and go back to dashboard",toggleVizPicker:"data-testid toggle-viz-picker",toggleVizOptions:"data-testid toggle-viz-options",toggleTableView:"toggle-table-view",showZoomField:"Map controls Show zoom control field property editor",showAttributionField:"Map controls Show attribution field property editor",showScaleField:"Map controls Show scale field property editor",showMeasureField:"Map controls Show measure tools field property editor",showDebugField:"Map controls Show debug field property editor",measureButton:"show measure tools"},PanelInspector:{Data:{content:"Panel inspector Data content"},Stats:{content:"Panel inspector Stats content"},Json:{content:"Panel inspector Json content"},Query:{content:"Panel inspector Query content",refreshButton:"Panel inspector Query refresh button",jsonObjectKeys:()=>".json-formatter-key"}},Tab:{title:e=>`Tab ${e}`,active:()=>'[class*="-activeTabStyle"]'},RefreshPicker:{runButton:"RefreshPicker run button",intervalButton:"RefreshPicker interval button",runButtonV2:"data-testid RefreshPicker run button",intervalButtonV2:"data-testid RefreshPicker interval button"},QueryTab:{content:"Query editor tab content",queryInspectorButton:"Query inspector button",queryHistoryButton:"data-testid query-history-button",addQuery:"data-testid query-tab-add-query"},QueryHistory:{queryText:"Query text"},QueryEditorRows:{rows:"Query editor row"},QueryEditorRow:{actionButton:e=>`data-testid ${e}`,title:e=>`Query editor row title ${e}`,container:e=>`Query editor row ${e}`},AlertTab:{content:"data-testid Alert editor tab content"},Alert:{alert:e=>`Alert ${e}`,alertV2:e=>`data-testid Alert ${e}`},TransformTab:{content:"data-testid Transform editor tab content",newTransform:e=>`data-testid New transform ${e}`,transformationEditor:e=>`data-testid Transformation editor ${e}`,transformationEditorDebugger:e=>`data-testid Transformation editor debugger ${e}`},Transforms:{card:e=>`data-testid New transform ${e}`,disableTransformationButton:"data-testid Disable transformation button",Reduce:{modeLabel:"data-testid Transform mode label",calculationsLabel:"data-testid Transform calculations label"},SpatialOperations:{actionLabel:"root Action field property editor",locationLabel:"root Location Mode field property editor",location:{autoOption:"Auto location option",coords:{option:"Coords location option",latitudeFieldLabel:"root Latitude field field property editor",longitudeFieldLabel:"root Longitude field field property editor"},geohash:{option:"Geohash location option",geohashFieldLabel:"root Geohash field field property editor"},lookup:{option:"Lookup location option",lookupFieldLabel:"root Lookup field field property editor",gazetteerFieldLabel:"root Gazetteer field property editor"}}},searchInput:"data-testid search transformations",noTransformationsMessage:"data-testid no transformations message",addTransformationButton:"data-testid add transformation button",removeAllTransformationsButton:"data-testid remove all transformations button"},NavBar:{Configuration:{button:"Configuration"},Toggle:{button:"data-testid Toggle menu"},Reporting:{button:"Reporting"}},NavMenu:{Menu:"data-testid navigation mega-menu",item:"data-testid Nav menu item"},NavToolbar:{container:"data-testid Nav toolbar"},PageToolbar:{container:()=>".page-toolbar",item:e=>`${e}`,itemButton:e=>`data-testid ${e}`},QueryEditorToolbarItem:{button:e=>`QueryEditor toolbar item button ${e}`},BackButton:{backArrow:"data-testid Go Back"},OptionsGroup:{group:e=>e?`Options group ${e}`:"Options group",toggle:e=>e?`Options group ${e} toggle`:"Options group toggle"},PluginVisualization:{item:e=>`Plugin visualization item ${e}`,current:()=>'[class*="-currentVisualizationItem"]'},Select:{option:"Select option",input:()=>'input[id*="time-options-input"]',singleValue:()=>'div[class*="-singleValue"]'},FieldConfigEditor:{content:"Field config editor content"},OverridesConfigEditor:{content:"Field overrides editor content"},FolderPicker:{container:"Folder picker select container",containerV2:"data-testid Folder picker select container",input:"data-testid folder-picker-input"},ReadonlyFolderPicker:{container:"data-testid Readonly folder picker select container"},DataSourcePicker:{container:"data-testid Data source picker select container",input:()=>'input[id="data-source-picker"]',inputV2:"data-testid Select a data source",dataSourceList:"data-testid Data source list dropdown",advancedModal:{dataSourceList:"data-testid Data source list",builtInDataSourceList:"data-testid Built in data source list"}},TimeZonePicker:{container:"Time zone picker select container",containerV2:"data-testid Time zone picker select container"},WeekStartPicker:{container:"Choose starting day of the week",containerV2:"data-testid Choose starting day of the week",placeholder:"Choose starting day of the week"},TraceViewer:{spanBar:"data-testid SpanBar--wrapper"},QueryField:{container:"data-testid Query field"},QueryBuilder:{queryPatterns:"data-testid Query patterns",labelSelect:"data-testid Select label",valueSelect:"data-testid Select value",matchOperatorSelect:"data-testid Select match operator"},ValuePicker:{button:e=>`data-testid Value picker button ${e}`,select:e=>`data-testid Value picker select ${e}`},Search:{section:"Search section",sectionV2:"data-testid Search section",items:"Search items",itemsV2:"data-testid Search items",cards:"data-testid Search cards",collapseFolder:e=>`data-testid Collapse folder ${e}`,expandFolder:e=>`data-testid Expand folder ${e}`,dashboardItem:e=>`${hI.Search.dashboardItems} ${e}`,dashboardCard:e=>`data-testid Search card ${e}`,folderHeader:e=>`data-testid Folder header ${e}`,folderContent:e=>`data-testid Folder content ${e}`,dashboardItems:"data-testid Dashboard search item"},DashboardLinks:{container:"data-testid Dashboard link container",dropDown:"data-testid Dashboard link dropdown",link:"data-testid Dashboard link"},LoadingIndicator:{icon:"data-testid Loading indicator"},CallToActionCard:{button:e=>`Call to action button ${e}`,buttonV2:e=>`data-testid Call to action button ${e}`},DataLinksContextMenu:{singleLink:"data-testid Data link"},CodeEditor:{container:"data-testid Code editor container"},DashboardImportPage:{textarea:"data-testid-import-dashboard-textarea",submit:"data-testid-load-dashboard"},ImportDashboardForm:{name:"data-testid-import-dashboard-title",submit:"data-testid-import-dashboard-submit"},PanelAlertTabContent:{content:"data-testid Unified alert editor tab content"},VisualizationPreview:{card:e=>`data-testid suggestion-${e}`},ColorSwatch:{name:"data-testid-colorswatch"},DashboardRow:{title:e=>`data-testid dashboard-row-title-${e}`},UserProfile:{profileSaveButton:"data-testid-user-profile-save",preferencesSaveButton:"data-testid-shared-prefs-save",orgsTable:"data-testid-user-orgs-table",sessionsTable:"data-testid-user-sessions-table",extensionPointTabs:"data-testid-extension-point-tabs",extensionPointTab:e=>`data-testid-extension-point-tab-${e}`},FileUpload:{inputField:"data-testid-file-upload-input-field",fileNameSpan:"data-testid-file-upload-file-name"},DebugOverlay:{wrapper:"debug-overlay"},OrgRolePicker:{input:"Role"},AnalyticsToolbarButton:{button:"Dashboard insights"},Variables:{variableOption:"data-testid variable-option"},Annotations:{annotationsTypeInput:"annotations-type-input",annotationsChoosePanelInput:"choose-panels-input"},Tooltip:{container:"data-testid tooltip"}},fI={pages:{Login:{url:"/login",username:"data-testid Username input field",password:"data-testid Password input field",submit:"data-testid Login button",skip:"data-testid Skip change password button"},Home:{url:"/"},DataSource:{name:"data-testid Data source settings page name input field",delete:"Data source settings page Delete button",readOnly:"data-testid Data source settings page read only message",saveAndTest:"data-testid Data source settings page Save and Test button",alert:"data-testid Data source settings page Alert"},DataSources:{url:"/datasources",dataSources:e=>`Data source list item ${e}`},EditDataSource:{url:e=>`/datasources/edit/${e}`,settings:"Datasource settings page basic settings"},AddDataSource:{url:"/datasources/new",dataSourcePlugins:e=>`Data source plugin item ${e}`,dataSourcePluginsV2:e=>`Add new data source ${e}`},ConfirmModal:{delete:"data-testid Confirm Modal Danger Button"},AddDashboard:{url:"/dashboard/new",itemButton:e=>`data-testid ${e}`,addNewPanel:"Add new panel",addNewRow:"Add new row",addNewPanelLibrary:"Add new panel from panel library"},Dashboard:{url:e=>`/d/${e}`,DashNav:{nav:"Dashboard navigation",navV2:"data-testid Dashboard navigation",publicDashboardTag:"data-testid public dashboard tag",shareButton:"data-testid share-button"},SubMenu:{submenu:"Dashboard submenu",submenuItem:"data-testid template variable",submenuItemLabels:e=>`data-testid Dashboard template variables submenu Label ${e}`,submenuItemValueDropDownValueLinkTexts:e=>`data-testid Dashboard template variables Variable Value DropDown value link text ${e}`,submenuItemValueDropDownDropDown:"Variable options",submenuItemValueDropDownOptionTexts:e=>`data-testid Dashboard template variables Variable Value DropDown option text ${e}`,Annotations:{annotationsWrapper:"data-testid annotation-wrapper",annotationLabel:e=>`data-testid Dashboard annotations submenu Label ${e}`,annotationToggle:e=>`data-testid Dashboard annotations submenu Toggle ${e}`}},Settings:{Actions:{close:"data-testid dashboard-settings-close"},General:{deleteDashBoard:"Dashboard settings page delete dashboard button",sectionItems:e=>`Dashboard settings section item ${e}`,saveDashBoard:"Dashboard settings aside actions Save button",saveAsDashBoard:"Dashboard settings aside actions Save As button",timezone:"Time zone picker select container",title:"Tab General"},Annotations:{List:{addAnnotationCTA:hI.CallToActionCard.button("Add annotation query"),addAnnotationCTAV2:hI.CallToActionCard.buttonV2("Add annotation query"),annotations:"data-testid list-annotations"},Settings:{name:"Annotations settings name input"},NewAnnotation:{panelFilterSelect:"data-testid annotations-panel-filter",showInLabel:"show-in-label",previewInDashboard:"data-testid annotations-preview",delete:"data-testid annotations-delete",apply:"data-testid annotations-apply",enable:"data-testid annotation-enable",hide:"data-testid annotation-hide"}},Variables:{List:{addVariableCTA:hI.CallToActionCard.button("Add variable"),addVariableCTAV2:hI.CallToActionCard.buttonV2("Add variable"),newButton:"Variable editor New variable button",table:"Variable editor Table",tableRowNameFields:e=>`Variable editor Table Name field ${e}`,tableRowDefinitionFields:e=>`Variable editor Table Definition field ${e}`,tableRowArrowUpButtons:e=>`Variable editor Table ArrowUp button ${e}`,tableRowArrowDownButtons:e=>`Variable editor Table ArrowDown button ${e}`,tableRowDuplicateButtons:e=>`Variable editor Table Duplicate button ${e}`,tableRowRemoveButtons:e=>`Variable editor Table Remove button ${e}`},Edit:{General:{headerLink:"Variable editor Header link",modeLabelNew:"Variable editor Header mode New",modeLabelEdit:"Variable editor Header mode Edit",generalNameInput:"Variable editor Form Name field",generalNameInputV2:"data-testid Variable editor Form Name field",generalTypeSelect:"Variable editor Form Type select",generalTypeSelectV2:"data-testid Variable editor Form Type select",generalLabelInput:"Variable editor Form Label field",generalLabelInputV2:"data-testid Variable editor Form Label field",generalHideSelect:"Variable editor Form Hide select",generalHideSelectV2:"data-testid Variable editor Form Hide select",selectionOptionsMultiSwitch:"data-testid Variable editor Form Multi switch",selectionOptionsIncludeAllSwitch:"data-testid Variable editor Form IncludeAll switch",selectionOptionsCustomAllInput:"data-testid Variable editor Form IncludeAll field",previewOfValuesOption:"data-testid Variable editor Preview of Values option",submitButton:"data-testid Variable editor Run Query button",applyButton:"data-testid Variable editor Apply button"},QueryVariable:{queryOptionsDataSourceSelect:hI.DataSourcePicker.inputV2,queryOptionsRefreshSelect:"Variable editor Form Query Refresh select",queryOptionsRefreshSelectV2:"data-testid Variable editor Form Query Refresh select",queryOptionsRegExInput:"Variable editor Form Query RegEx field",queryOptionsRegExInputV2:"data-testid Variable editor Form Query RegEx field",queryOptionsSortSelect:"Variable editor Form Query Sort select",queryOptionsSortSelectV2:"data-testid Variable editor Form Query Sort select",queryOptionsQueryInput:"data-testid Variable editor Form Default Variable Query Editor textarea",valueGroupsTagsEnabledSwitch:"Variable editor Form Query UseTags switch",valueGroupsTagsTagsQueryInput:"Variable editor Form Query TagsQuery field",valueGroupsTagsTagsValuesQueryInput:"Variable editor Form Query TagsValuesQuery field"},ConstantVariable:{constantOptionsQueryInput:"Variable editor Form Constant Query field",constantOptionsQueryInputV2:"data-testid Variable editor Form Constant Query field"},DatasourceVariable:{datasourceSelect:"data-testid datasource variable datasource type"},TextBoxVariable:{textBoxOptionsQueryInput:"Variable editor Form TextBox Query field",textBoxOptionsQueryInputV2:"data-testid Variable editor Form TextBox Query field"},CustomVariable:{customValueInput:"data-testid custom-variable-input"},IntervalVariable:{intervalsValueInput:"data-testid interval variable intervals input",autoEnabledCheckbox:"data-testid interval variable auto value checkbox",stepCountIntervalSelect:"data-testid interval variable step count input",minIntervalInput:"data-testid interval variable mininum interval input"},GroupByVariable:{dataSourceSelect:hI.DataSourcePicker.inputV2,infoText:"data-testid group by variable info text",modeToggle:"data-testid group by variable mode toggle"},AdHocFiltersVariable:{datasourceSelect:hI.DataSourcePicker.inputV2,infoText:"data-testid ad-hoc filters variable info text"}}}},Annotations:{marker:"data-testid annotation-marker"},Rows:{Repeated:{ConfigSection:{warningMessage:"data-testid Repeated rows warning message"}}}},Dashboards:{url:"/dashboards",dashboards:e=>`Dashboard search item ${e}`},SaveDashboardAsModal:{newName:"Save dashboard title field",save:"Save dashboard button"},SaveDashboardModal:{save:"Dashboard settings Save Dashboard Modal Save button",saveVariables:"Dashboard settings Save Dashboard Modal Save variables checkbox",saveTimerange:"Dashboard settings Save Dashboard Modal Save timerange checkbox"},SharePanelModal:{linkToRenderedImage:"Link to rendered image"},ShareDashboardModal:{PublicDashboard:{Tab:"Tab Public dashboard",WillBePublicCheckbox:"data-testid public dashboard will be public checkbox",LimitedDSCheckbox:"data-testid public dashboard limited datasources checkbox",CostIncreaseCheckbox:"data-testid public dashboard cost may increase checkbox",PauseSwitch:"data-testid public dashboard pause switch",EnableAnnotationsSwitch:"data-testid public dashboard on off switch for annotations",CreateButton:"data-testid public dashboard create button",DeleteButton:"data-testid public dashboard delete button",CopyUrlInput:"data-testid public dashboard copy url input",CopyUrlButton:"data-testid public dashboard copy url button",SettingsDropdown:"data-testid public dashboard settings dropdown",TemplateVariablesWarningAlert:"data-testid public dashboard disabled template variables alert",UnsupportedDataSourcesWarningAlert:"data-testid public dashboard unsupported data sources alert",NoUpsertPermissionsWarningAlert:"data-testid public dashboard no upsert permissions alert",EnableTimeRangeSwitch:"data-testid public dashboard on off switch for time range",EmailSharingConfiguration:{Container:"data-testid email sharing config container",ShareType:"data-testid public dashboard share type",EmailSharingInput:"data-testid public dashboard email sharing input",EmailSharingInviteButton:"data-testid public dashboard email sharing invite button",EmailSharingList:"data-testid public dashboard email sharing list",DeleteEmail:"data-testid public dashboard delete email button",ReshareLink:"data-testid public dashboard reshare link button"}}},PublicDashboard:{page:"public-dashboard-page",NotAvailable:{container:"public-dashboard-not-available",title:"public-dashboard-title",pausedDescription:"public-dashboard-paused-description"}},RequestViewAccess:{form:"request-view-access-form",recipientInput:"request-view-access-recipient-input",submitButton:"request-view-access-submit-button"},PublicDashboardConfirmAccess:{submitButton:"data-testid confirm-access-submit-button"},Explore:{url:"/explore",General:{container:"data-testid Explore",graph:"Explore Graph",table:"Explore Table",scrollView:"data-testid explorer scroll view"}},SoloPanel:{url:e=>`/d-solo/${e}`},PluginsList:{page:"Plugins list page",list:"Plugins list",listItem:"Plugins list item",signatureErrorNotice:"data-testid Unsigned plugins notice"},PluginPage:{page:"Plugin page",signatureInfo:"data-testid Plugin signature info",disabledInfo:"data-testid Plugin disabled info"},PlaylistForm:{name:"Playlist name",interval:"Playlist interval",itemDelete:"data-testid playlist-form-delete-item"},BrowseDashboards:{table:{body:"data-testid browse-dashboards-table",row:e=>`data-testid browse dashboards row ${e}`,checkbox:e=>`data-testid ${e} checkbox`},NewFolderForm:{form:"data-testid new folder form",nameInput:"data-testid new-folder-name-input",createButton:"data-testid new-folder-create-button"}},Search:{url:"/?search=openn",FolderView:{url:"/?search=open&layout=folders"}},PublicDashboards:{ListItem:{linkButton:"public-dashboard-link-button",configButton:"public-dashboard-configuration-button",trashcanButton:"public-dashboard-remove-button",pauseSwitch:"data-testid public dashboard pause switch"}},UserListPage:{tabs:{allUsers:"data-testid all-users-tab",orgUsers:"data-testid org-users-tab",anonUserDevices:"data-testid anon-user-devices-tab",publicDashboardsUsers:"data-testid public-dashboards-users-tab",users:"data-testid users-tab"},org:{url:"/org/users"},admin:{url:"/admin/users"},publicDashboards:{container:"data-testid public-dashboards-users-list"},UserListAdminPage:{container:"data-testid user-list-admin-page"},UsersListPage:{container:"data-testid users-list-page"},UserAnonListPage:{container:"data-testid user-anon-list-page"},UsersListPublicDashboardsPage:{container:"data-testid users-list-public-dashboards-page",DashboardsListModal:{listItem:e=>`data-testid dashboards-list-item-${e}`}}},ProfilePage:{url:"/profile"}},components:hI};function mI({children:e,delay:t}){const[n,r]=(0,Fi.useState)(!1);return(0,Fi.useEffect)((()=>{window.setTimeout((()=>{r(!0)}),t)}),[e,t]),$i().createElement($i().Fragment,null,n?e:null)}function gI({menu:e,title:t,placement:n="bottom",offset:r,dragClassCancel:a,menuButtonClass:s,onVisibleChange:l,onOpenMenu:c}){const u=t?fI.components.Panels.Panel.menu(t):"panel-menu-button",d=(0,Fi.useCallback)((e=>(e&&c&&c(),l)),[c,l]),p=t?`Menu for panel with title ${t}`:"Menu for panel with no title";return $i().createElement(o.Dropdown,{overlay:e,placement:n,offset:r,onVisibleChange:d},$i().createElement(o.ToolbarButton,{"aria-label":p,title:"Menu",icon:"ellipsis-v",iconSize:"md",narrow:!0,"data-testid":u,className:(0,i.cx)(s,a)}))}function yI({menu:e,title:t,dragClass:n,children:r,offset:a=-32,onOpenMenu:s}){const l=(0,o.useStyles2)(bI),c=(0,Fi.useRef)(null),u=fI.components.Panels.Panel.HoverWidget,d=(0,Fi.useCallback)((e=>{var t;null===(t=c.current)||void 0===t||t.setPointerCapture(e.pointerId)}),[]),p=(0,Fi.useCallback)((e=>{var t;null===(t=c.current)||void 0===t||t.releasePointerCapture(e.pointerId)}),[]),[h,f]=(0,Fi.useState)(!1);return void 0===r||0===$i().Children.count(r)?null:$i().createElement("div",{className:(0,i.cx)(l.container,{"show-on-hover":!h}),style:{top:`${a}px`},"data-testid":u.container},n&&$i().createElement("div",{className:(0,i.cx)(l.square,l.draggable,n),onPointerDown:d,onPointerUp:p,ref:c,"data-testid":u.dragIcon},$i().createElement(o.Icon,{name:"expand-arrows",className:l.draggableIcon})),!t&&$i().createElement("h6",{className:(0,i.cx)(l.untitled,{[l.draggable]:!!n},n)},"Untitled"),r,e&&$i().createElement(gI,{menu:e,title:t,placement:"bottom",menuButtonClass:l.menuButton,onVisibleChange:f,onOpenMenu:s}))}function bI(e){return{hidden:(0,i.css)({visibility:"hidden",opacity:"0"}),container:(0,i.css)({label:"hover-container-widget",transition:"all .1s linear",display:"flex",position:"absolute",zIndex:1,right:0,boxSizing:"content-box",alignItems:"center",background:e.colors.background.secondary,color:e.colors.text.primary,border:`1px solid ${e.colors.border.weak}`,borderRadius:e.shape.radius.default,height:e.spacing(4),boxShadow:e.shadows.z1}),square:(0,i.css)({display:"flex",justifyContent:"center",alignItems:"center",width:e.spacing(4),height:"100%"}),draggable:(0,i.css)({cursor:"move",[e.breakpoints.down("md")]:{display:"none"}}),menuButton:(0,i.css)({background:"inherit",border:"none","&:hover":{background:e.colors.secondary.main}}),untitled:(0,i.css)({color:e.colors.text.disabled,fontStyle:"italic",padding:e.spacing(0,1),marginBottom:0}),draggableIcon:(0,i.css)({transform:"rotate(45deg)",color:e.colors.text.secondary,"&:hover":{color:e.colors.text.primary}})}}function vI(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function wI(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}const xI=(0,Fi.forwardRef)(((e,t)=>{var{className:n,children:r,href:a,onClick:s,target:l,title:c}=e,u=EI(e,["className","children","href","onClick","target","title"]);const d=(0,o.useStyles2)(OI);return a?$i().createElement("a",wI({ref:t,href:a,onClick:s,target:l,title:c,className:(0,i.cx)(d.linkItem,n)},u),r):s?$i().createElement(o.Button,{ref:t,className:(0,i.cx)(d.item,n),variant:"secondary",fill:"text",onClick:s},r):$i().createElement("span",wI({ref:t,className:(0,i.cx)(d.item,n)},u),r)}));xI.displayName="TitleItem";const OI=e=>{const t=(0,i.css)({color:`${e.colors.text.secondary}`,label:"panel-header-item",cursor:"auto",border:"none",borderRadius:`${e.shape.radius.default}`,padding:`${e.spacing(0,1)}`,height:`${e.spacing(e.components.panel.headerHeight)}`,display:"flex",alignItems:"center",justifyContent:"center","&:focus, &:focus-visible":SI(wI({},_I(e)),{zIndex:1}),"&: focus:not(:focus-visible)":{outline:"none",boxShadow:"none"},"&:hover ":{boxShadow:`${e.shadows.z1}`,background:`${e.colors.background.secondary}`,color:`${e.colors.text.primary}`}});return{item:t,linkItem:(0,i.cx)(t,(0,i.css)({cursor:"pointer"}))}};function _I(e){return{outline:"2px dotted transparent",outlineOffset:"2px",boxShadow:`0 0 0 2px ${e.colors.background.canvas}, 0 0 0px 4px ${e.colors.primary.main}`,transitionTimingFunction:"cubic-bezier(0.19, 1, 0.22, 1)",transitionDuration:"0.2s",transitionProperty:"outline, outline-offset, box-shadow"}}function TI({description:e,className:t}){const n=(0,o.useStyles2)(CI);return""!==e?$i().createElement(o.Tooltip,{interactive:!0,content:()=>{const t="function"==typeof e?e():e;return $i().createElement("div",{className:"panel-info-content markdown-html"},$i().createElement("div",{dangerouslySetInnerHTML:{__html:t}}))}},$i().createElement(xI,{className:(0,i.cx)(t,n.description)},$i().createElement(o.Icon,{name:"info-circle",size:"md"}))):null}const CI=()=>({description:(0,i.css)({code:{whiteSpace:"normal",wordWrap:"break-word"},"pre > code":{display:"block"}})});function kI({message:e,onClick:t,ariaLabel:n="status"}){const r=(0,o.useStyles2)(PI);return $i().createElement(o.ToolbarButton,{className:r.buttonStyles,onClick:t,variant:"destructive",icon:"exclamation-triangle",iconSize:"md",tooltip:e||"","aria-label":n})}const PI=e=>{const{headerHeight:t,padding:n}=e.components.panel;return{buttonStyles:(0,i.css)({label:"panel-header-state-button",display:"flex",alignItems:"center",justifyContent:"center",padding:e.spacing(n),width:e.spacing(t),height:e.spacing(t),borderRadius:e.shape.radius.default})}};function RI({children:e,padding:t="md",title:n="",description:a="",displayMode:s="default",titleItems:l,menu:c,dragClass:u,dragClassCancel:d,hoverHeader:p=!1,hoverHeaderOffset:h,loadingState:f,statusMessage:m,statusMessageOnClick:g,actions:y,onCancelQuery:b,onOpenMenu:v}){const w=(0,o.useTheme2)(),S=(0,o.useStyles2)(II),[E,x]=(0,Fi.useState)(0),O=(0,Fi.useRef)(null);(0,Fi.useEffect)((()=>{O.current&&x(O.current.offsetWidth)}),[O]);const _=!p,T=DI(w,_),{contentStyle:C}=jI(t,w),k={height:T,cursor:u?"move":"auto"},P={};"transparent"===s&&(P.backgroundColor="transparent",P.border="none");const R=n?fI.components.Panels.Panel.title(n):"Panel",A=$i().createElement($i().Fragment,null,n&&$i().createElement("h6",{title:n,className:S.title},n),$i().createElement("div",{className:(0,i.cx)(S.titleItems,d),"data-testid":"title-items-container"},$i().createElement(TI,{description:a,className:d}),l),f===r.LoadingState.Streaming&&$i().createElement(o.Tooltip,{content:b?"Stop streaming":"Streaming"},$i().createElement(xI,{className:d,"data-testid":"panel-streaming",onClick:b},$i().createElement(o.Icon,{name:"circle-mono",size:"md",className:S.streaming}))),f===r.LoadingState.Loading&&b&&$i().createElement(mI,{delay:2e3},$i().createElement(o.Tooltip,{content:"Cancel query"},$i().createElement(xI,{className:(0,i.cx)(d,S.pointer),"data-testid":"panel-cancel-query",onClick:b},$i().createElement(o.Icon,{name:"sync-slash",size:"md"})))),$i().createElement("div",{className:S.rightAligned},y&&$i().createElement("div",{className:S.rightActions},AI(y,(e=>e)))));return $i().createElement("div",{className:S.container,style:P,"data-testid":R},$i().createElement("div",{className:S.loadingBarContainer},f===r.LoadingState.Loading?$i().createElement(o.LoadingBar,{width:E,ariaLabel:"Panel loading bar"}):null),p&&$i().createElement($i().Fragment,null,$i().createElement(yI,{menu:c,title:n,offset:h,dragClass:u,onOpenMenu:v},A),m&&$i().createElement("div",{className:S.errorContainerFloating},$i().createElement(kI,{message:m,onClick:g,ariaLabel:"Panel status"}))),_&&$i().createElement("div",{className:(0,i.cx)(S.headerContainer,u),style:k,"data-testid":"header-container"},m&&$i().createElement("div",{className:d},$i().createElement(kI,{message:m,onClick:g,ariaLabel:"Panel status"})),A,c&&$i().createElement(gI,{menu:c,title:n,placement:"bottom-end",menuButtonClass:(0,i.cx)(S.menuItem,d,"show-on-hover"),onOpenMenu:v})),$i().createElement("div",{className:S.content,style:C,ref:O},e))}const AI=(e,t)=>{const n=$i().Children.toArray(e).filter(Boolean);return n.length>0?t(n):null},DI=(e,t)=>t?e.spacing.gridSize*e.components.panel.headerHeight:0,jI=(e,t)=>({contentStyle:{padding:("md"===e?t.components.panel.padding:0)*t.spacing.gridSize}}),II=e=>{const{background:t,borderColor:n,padding:r}=e.components.panel;return{container:(0,i.css)({label:"panel-container",backgroundColor:t,border:`1px solid ${n}`,position:"relative",borderRadius:e.shape.radius.default,height:"100%",display:"flex",flexDirection:"column",".show-on-hover":{visibility:"hidden",opacity:"0"},"&:focus-visible, &:hover":{".show-on-hover":{visibility:"visible",opacity:"1"}},"&:focus-visible":{outline:`1px solid ${e.colors.action.focus}`},"&:focus-within":{".show-on-hover":{visibility:"visible",opacity:"1"}}}),loadingBarContainer:(0,i.css)({label:"panel-loading-bar-container",position:"absolute",top:0,width:"100%",overflow:"hidden"}),content:(0,i.css)({label:"panel-content",flexGrow:1}),headerContainer:(0,i.css)({label:"panel-header",display:"flex",alignItems:"center"}),pointer:(0,i.css)({cursor:"pointer"}),streaming:(0,i.css)({label:"panel-streaming",marginRight:0,color:e.colors.success.text,"&:hover":{color:e.colors.success.text}}),title:(0,i.css)({label:"panel-title",marginBottom:0,padding:e.spacing(0,r),textOverflow:"ellipsis",overflow:"hidden",whiteSpace:"nowrap",fontSize:e.typography.h6.fontSize,fontWeight:e.typography.h6.fontWeight}),items:(0,i.css)({display:"flex"}),item:(0,i.css)({display:"flex",justifyContent:"center",alignItems:"center"}),hiddenMenu:(0,i.css)({visibility:"hidden"}),menuItem:(0,i.css)({label:"panel-menu",border:"none",background:e.colors.secondary.main,"&:hover":{background:e.colors.secondary.shade}}),errorContainerFloating:(0,i.css)({label:"error-container",position:"absolute",left:0,top:0,zIndex:e.zIndex.tooltip}),rightActions:(0,i.css)({display:"flex",padding:e.spacing(0,r),gap:e.spacing(1)}),rightAligned:(0,i.css)({label:"right-aligned-container",marginLeft:"auto",display:"flex",alignItems:"center"}),titleItems:(0,i.css)({display:"flex",height:"100%"})}},NI=e=>({panelWrap:i.css` margin-bottom: ${e.spacing(1)}; - `});function LI({isLoading:e,title:t,description:n,children:i,className:a="",headerActions:s,dataTestId:l}){const c=(0,o.useStyles2)(NI),u=e?r.LoadingState.Loading:r.LoadingState.Done;return $i().createElement("div",{className:`${a} ${c.panelWrap}`,"data-testid":l||"panel"},$i().createElement(RI,{loadingState:u,title:t,description:n,actions:s},i))}function MI(e,t){return Fb((function(n,r){var i=0;n.subscribe(yv(r,(function(n){return e.call(t,n,i++)&&r.next(n)})))}))}function FI(e,t){return Fb(function(e,t,n,r,i){return function(a,o){var s=n,l=t,c=0;a.subscribe(yv(o,(function(t){var n=c++;l=s?e(l,t,n):(s=!0,t),r&&o.next(l)}),i&&function(){s&&o.next(l),o.complete()}))}}(e,t,arguments.length>=2,!0))}const $I={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};var BI,VI=new Uint8Array(16);function zI(){if(!BI&&!(BI="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return BI(VI)}for(var UI=[],qI=0;qI<256;++qI)UI.push((qI+256).toString(16).slice(1));function HI(e,t=0){return(UI[e[t+0]]+UI[e[t+1]]+UI[e[t+2]]+UI[e[t+3]]+"-"+UI[e[t+4]]+UI[e[t+5]]+"-"+UI[e[t+6]]+UI[e[t+7]]+"-"+UI[e[t+8]]+UI[e[t+9]]+"-"+UI[e[t+10]]+UI[e[t+11]]+UI[e[t+12]]+UI[e[t+13]]+UI[e[t+14]]+UI[e[t+15]]).toLowerCase()}const GI=function(e,t,n){if($I.randomUUID&&!t&&!e)return $I.randomUUID();var r=(e=e||{}).random||(e.rng||zI)();if(r[6]=15&r[6]|64,r[8]=63&r[8]|128,t){n=n||0;for(var i=0;i<16;++i)t[n+i]=r[i];return t}return HI(r)};var WI=__webpack_require__(8449);const QI="grafana-llm-app",KI=`/api/plugins/${QI}`;let YI=new WI.SemVer("0.2.0");const XI="openai/v1/chat/completions";function JI(e){return"error"in e}function ZI(){return(0,qp.pipe)((0,qp.pipe)(MI((e=>"content"in e.choices[0].delta)),vv((e=>e.choices[0].delta.content))),FI(((e,t)=>e+t),""))}function eN(e){const t={scope:r.LiveChannelScope.Plugin,namespace:QI,path:XI+"/"+GI(),data:e};return(0,a.getGrafanaLiveSrv)().getStream(t).pipe(MI((e=>(0,r.isLiveChannelMessageEvent)(e)))).pipe(function(e,t,n){var r=Mb(e)||t||n?{next:e,error:t,complete:n}:e;return r?Fb((function(e,t){var n;null===(n=r.subscribe)||void 0===n||n.call(r);var i=!0;e.subscribe(yv(t,(function(e){var n;null===(n=r.next)||void 0===n||n.call(r,e),t.next(e)}),(function(){var e;i=!1,null===(e=r.complete)||void 0===e||e.call(r),t.complete()}),(function(e){var n;i=!1,null===(n=r.error)||void 0===n||n.call(r,e),t.error(e)}),(function(){var e,t;i&&(null===(e=r.unsubscribe)||void 0===e||e.call(r)),null===(t=r.finalize)||void 0===t||t.call(r)})))})):Ev}((e=>{if(JI(e.message))throw new Error(e.message.error)})),(n=e=>{return JI(e.message)||!("done"in(t=e.message.choices[0].delta)&&null!=t.done);var t},void 0===i&&(i=!1),Fb((function(e,t){var r=0;e.subscribe(yv(t,(function(e){var a=n(e,r++);(a||i)&&t.next(e),!a&&t.complete()})))}))),vv((e=>e.message)));var n,i}let tN=!1;const nN=async()=>{try{if(!(await(0,a.getBackendSrv)().get(`${KI}/settings`,void 0,void 0,{showSuccessAlert:!1,showErrorAlert:!1})).enabled)return{configured:!1,ok:!1,error:"The Grafana LLM plugin is not enabled."}}catch(e){return(0,a.logDebug)(String(e)),(0,a.logDebug)("Failed to check if OpenAI is enabled. This is expected if the Grafana LLM plugin is not installed, and the above error can be ignored."),tN=!0,{configured:!1,ok:!1,error:"The Grafana LLM plugin is not installed."}}let e;try{e=await(0,a.getBackendSrv)().get(`${KI}/health`,void 0,void 0,{showSuccessAlert:!1,showErrorAlert:!1})}catch(e){return tN||((0,a.logDebug)(String(e)),(0,a.logDebug)("Failed to check if OpenAI is enabled. This is expected if the Grafana LLM plugin is not installed, and the above error can be ignored."),tN=!0),{configured:!1,ok:!1,error:"The Grafana LLM plugin is not installed."}}const{details:t}=e;return void 0!==t?.version&&function(e){try{YI=new WI.SemVer(e)}catch(e){(0,a.logWarning)("Failed to parse version of grafana-llm-app; assuming old version is present.")}}(t.version),void 0===t?.openAI?{configured:!1,ok:!1,error:"The Grafana LLM plugin is outdated; please update it."}:"boolean"==typeof t.openAI?{configured:t.openAI,ok:t.openAI}:t.openAI},rN=async()=>{const e=await nN();return e.configured&&e.ok};function iN({children:e,onClick:t,disabled:n,interactionName:r}){const i=(0,o.useStyles2)(aN),{isEnabled:a,error:s,isFetching:l}=function(){const{data:e,isFetching:t,error:n}=Pa({queryKey:["llm"],queryFn:()=>rN()});return n&&Xi.error(n,{info:"Error while checking the status of the Grafana LLM plugin!"}),{isEnabled:Boolean(e),isFetching:t,error:n}}();let c="ai",u="";return l?(c="fa fa-spinner",u="Checking the status of the Grafana LLM plugin..."):s?(c="exclamation-triangle",u="Error while checking the status of the Grafana LLM plugin!"):a||(c="shield-exclamation",u="Grafana LLM plugin missing or not configured! Please check the plugins administration page."),$i().createElement(o.Button,{className:i.aiButton,size:"md",fill:"text",icon:c,disabled:!a||n,tooltip:u,tooltipPlacement:"top",onClick:e=>{Ts(r),t(e)}},e)}const aN=()=>({aiButton:i.css` + `});function LI({isLoading:e,title:t,description:n,children:i,className:a="",headerActions:s,dataTestId:l}){const c=(0,o.useStyles2)(NI),u=e?r.LoadingState.Loading:r.LoadingState.Done;return $i().createElement("div",{className:`${a} ${c.panelWrap}`,"data-testid":l||"panel"},$i().createElement(RI,{loadingState:u,title:t,description:n,actions:s},i))}var MI=__webpack_require__(6977);const FI="grafana-llm-app",$I=`/api/plugins/${FI}`;new MI.SemVer("0.2.0");const BI=async()=>{try{if(!(await(0,a.getBackendSrv)().get(`${$I}/settings`)).enabled)return!1;const e=(await(0,a.getBackendSrv)().get(`${$I}/health`)).details;return e.llmProvider?e.llmProvider.configured&&e.llmProvider.ok:!!e.openAI&&(e.openAI.configured&&e.openAI.ok)}catch(e){return!1}};function VI({children:e,onClick:t,disabled:n,interactionName:r}){const i=(0,o.useStyles2)(zI),{isEnabled:a,error:s,isFetching:l}=function(){const{data:e,isFetching:t,error:n}=Pa({queryKey:["llm"],queryFn:()=>BI()});return n&&Xi.error(n,{info:"Error while checking the status of the Grafana LLM plugin!"}),{isEnabled:Boolean(e),isFetching:t,error:n}}();let c="ai",u="";return l?(c="fa fa-spinner",u="Checking the status of the Grafana LLM plugin..."):s?(c="exclamation-triangle",u="Error while checking the status of the Grafana LLM plugin!"):a||(c="shield-exclamation",u="Grafana LLM plugin missing or not configured! Please check the plugins administration page."),$i().createElement(o.Button,{className:i.aiButton,size:"md",fill:"text",icon:c,disabled:!a||n,tooltip:u,tooltipPlacement:"top",onClick:e=>{Ts(r),t(e)}},e)}const zI=()=>({aiButton:i.css` padding: 0 4px; - `});function oN(){return oN=Object.assign?Object.assign.bind():function(e){for(var t=1;t(e[t.toLowerCase()]=t,e)),{for:"htmlFor"}),dN={amp:"&",apos:"'",gt:">",lt:"<",nbsp:" ",quot:"“"},pN=["style","script"],hN=/([-A-Z0-9_:]+)(?:\s*=\s*(?:(?:"((?:\\.|[^"])*)")|(?:'((?:\\.|[^'])*)')|(?:\{((?:\\.|{[^}]*?}|[^}])*)\})))?/gi,fN=/mailto:/i,mN=/\n{2,}$/,gN=/^(\s*>[\s\S]*?)(?=\n{2,})/,yN=/^ *> ?/gm,bN=/^ {2,}\n/,vN=/^(?:( *[-*_])){3,} *(?:\n *)+\n/,wN=/^\s*(`{3,}|~{3,}) *(\S+)?([^\n]*?)?\n([\s\S]+?)\s*\1 *(?:\n *)*\n?/,SN=/^(?: {4}[^\n]+\n*)+(?:\n *)+\n?/,EN=/^(`+)\s*([\s\S]*?[^`])\s*\1(?!`)/,xN=/^(?:\n *)*\n/,ON=/\r\n?/g,_N=/^\[\^([^\]]+)](:(.*)((\n+ {4,}.*)|(\n(?!\[\^).+))*)/,TN=/^\[\^([^\]]+)]/,CN=/\f/g,kN=/^---[ \t]*\n(.|\n)*\n---[ \t]*\n/,PN=/^\s*?\[(x|\s)\]/,RN=/^ *(#{1,6}) *([^\n]+?)(?: +#*)?(?:\n *)*(?:\n|$)/,AN=/^ *(#{1,6}) +([^\n]+?)(?: +#*)?(?:\n *)*(?:\n|$)/,DN=/^([^\n]+)\n *(=|-){3,} *(?:\n *)+\n/,jN=/^ *(?!<[a-z][^ >/]* ?\/>)<([a-z][^ >/]*) ?((?:[^>]*[^/])?)>\n?(\s*(?:<\1[^>]*?>[\s\S]*?<\/\1>|(?!<\1\b)[\s\S])*?)<\/\1>(?!<\/\1>)\n*/i,IN=/&([a-z0-9]+|#[0-9]{1,6}|#x[0-9a-fA-F]{1,6});/gi,NN=/^)/,LN=/^(data|aria|x)-[a-z_][a-z\d_.-]*$/,MN=/^ *<([a-z][a-z0-9:]*)(?:\s+((?:<.*?>|[^>])*))?\/?>(?!<\/\1>)(\s*\n)?/i,FN=/^\{.*\}$/,$N=/^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/,BN=/^<([^ >]+@[^ >]+)>/,VN=/^<([^ >]+:\/[^ >]+)>/,zN=/-([a-z])?/gi,UN=/^(.*\|.*)\n(?: *(\|? *[-:]+ *\|[-| :]*)\n((?:.*\|.*\n)*))?\n?/,qN=/^\[([^\]]*)\]:\s+]+)>?\s*("([^"]*)")?/,HN=/^!\[([^\]]*)\] ?\[([^\]]*)\]/,GN=/^\[([^\]]*)\] ?\[([^\]]*)\]/,WN=/(\[|\])/g,QN=/(\n|^[-*]\s|^#|^ {2,}|^-{2,}|^>\s)/,KN=/\t/g,YN=/(^ *\||\| *$)/g,XN=/^ *:-+: *$/,JN=/^ *:-+ *$/,ZN=/^ *-+: *$/,eL="((?:\\[.*?\\][([].*?[)\\]]|<.*?>(?:.*?<.*?>)?|`.*?`|~~.*?~~|==.*?==|.|\\n)*?)",tL=new RegExp(`^([*_])\\1${eL}\\1\\1(?!\\1)`),nL=new RegExp(`^([*_])${eL}\\1(?!\\1|\\w)`),rL=new RegExp(`^==${eL}==`),iL=new RegExp(`^~~${eL}~~`),aL=/^\\([^0-9A-Za-z\s])/,oL=/^[\s\S]+?(?=[^0-9A-Z\s\u00c0-\uffff&#;.()'"]|\d+\.|\n\n| {2,}\n|\w+:\S|$)/i,sL=/^\n+/,lL=/^([ \t]*)/,cL=/\\([^\\])/g,uL=/ *\n+$/,dL=/(?:^|\n)( *)$/,pL="(?:\\d+\\.)",hL="(?:[*+-])";function fL(e){return"( *)("+(1===e?pL:hL)+") +"}const mL=fL(1),gL=fL(2);function yL(e){return new RegExp("^"+(1===e?mL:gL))}const bL=yL(1),vL=yL(2);function wL(e){return new RegExp("^"+(1===e?mL:gL)+"[^\\n]*(?:\\n(?!\\1"+(1===e?pL:hL)+" )[^\\n]*)*(\\n|$)","gm")}const SL=wL(1),EL=wL(2);function xL(e){const t=1===e?pL:hL;return new RegExp("^( *)("+t+") [\\s\\S]+?(?:\\n{2,}(?! )(?!\\1"+t+" (?!"+t+" ))\\n*|\\s*\\n*$)")}const OL=xL(1),_L=xL(2);function TL(e,t){const n=1===t,r=n?OL:_L,i=n?SL:EL,a=n?bL:vL;return{match(e,t,n){const i=dL.exec(n);return i&&(t.list||!t.inline&&!t.simple)?r.exec(e=i[1]+e):null},order:1,parse(e,t,r){const o=n?+e[2]:void 0,s=e[0].replace(mN,"\n").match(i);let l=!1;return{items:s.map((function(e,n){const i=a.exec(e)[0].length,o=new RegExp("^ {1,"+i+"}","gm"),c=e.replace(o,"").replace(a,""),u=n===s.length-1,d=-1!==c.indexOf("\n\n")||u&&l;l=d;const p=r.inline,h=r.list;let f;r.list=!0,d?(r.inline=!1,f=c.replace(uL,"\n\n")):(r.inline=!0,f=c.replace(uL,""));const m=t(f,r);return r.inline=p,r.list=h,m})),ordered:n,start:o}},render:(t,n,r)=>e(t.ordered?"ol":"ul",{key:r.key,start:"20"===t.type?t.start:void 0},t.items.map((function(t,i){return e("li",{key:i},n(t,r))})))}}const CL=new RegExp("^\\[((?:\\[[^\\]]*\\]|[^\\[\\]]|\\](?=[^\\[]*\\]))*)\\]\\(\\s*?(?:\\s+['\"]([\\s\\S]*?)['\"])?\\s*\\)"),kL=/^!\[(.*?)\]\( *((?:\([^)]*\)|[^() ])*) *"?([^)"]*)?"?\)/,PL=[gN,wN,SN,RN,DN,AN,NN,UN,SL,OL,EL,_L],RL=[...PL,/^[^\n]+(?: \n|\n{2,})/,jN,MN];function AL(e){return e.replace(/[ÀÁÂÃÄÅàáâãä忯]/g,"a").replace(/[çÇ]/g,"c").replace(/[ðÐ]/g,"d").replace(/[ÈÉÊËéèêë]/g,"e").replace(/[ÏïÎîÍíÌì]/g,"i").replace(/[Ññ]/g,"n").replace(/[øØœŒÕõÔôÓóÒò]/g,"o").replace(/[ÜüÛûÚúÙù]/g,"u").replace(/[ŸÿÝý]/g,"y").replace(/[^a-z0-9- ]/gi,"").replace(/ /gi,"-").toLowerCase()}function DL(e){return ZN.test(e)?"right":XN.test(e)?"center":JN.test(e)?"left":null}function jL(e,t,n,r){const i=n.inTable;n.inTable=!0;let a=e.trim().split(/( *(?:`[^`]*`|<.*?>.*?<\/.*?>(?!<\/.*?>)|\\\||\|) *)/).reduce(((e,i)=>("|"===i.trim()?e.push(r?{type:"26"}:{type:"27",text:i}):""!==i&&e.push.apply(e,t(i,n)),e)),[]);n.inTable=i;let o=[[]];return a.forEach((function(e,t){"26"===e.type?0!==t&&t!==a.length-1&&o.push([]):("27"!==e.type||null!=a[t+1]&&"26"!==a[t+1].type||(e.text=e.text.trimEnd()),o[o.length-1].push(e))})),o}function IL(e,t,n){n.inline=!0;const r=e[2]?e[2].replace(YN,"").split("|").map(DL):[],i=e[3]?function(e,t,n){return e.trim().split("\n").map((function(e){return jL(e,t,n,!0)}))}(e[3],t,n):[],a=jL(e[1],t,n,!!i.length);return n.inline=!1,i.length?{align:r,cells:i,header:a,type:"25"}:{children:a,type:"21"}}function NL(e,t){return null==e.align[t]?{}:{textAlign:e.align[t]}}function LL(e){return function(t,n){return n.inline?e.exec(t):null}}function ML(e){return function(t,n){return n.inline||n.simple?e.exec(t):null}}function FL(e){return function(t,n){return n.inline||n.simple?null:e.exec(t)}}function $L(e){return function(t){return e.exec(t)}}function BL(e,t,n){if(t.inline||t.simple)return null;if(n&&!n.endsWith("\n"))return null;let r="";e.split("\n").every((e=>!PL.some((t=>t.test(e)))&&(r+=e+"\n",e.trim())));const i=r.trimEnd();return""==i?null:[r,i]}function VL(e){try{if(decodeURIComponent(e).replace(/[^A-Za-z0-9/:]/g,"").match(/^\s*(javascript|vbscript|data(?!:image)):/i))return}catch(e){return null}return e}function zL(e){return e.replace(cL,"$1")}function UL(e,t,n){const r=n.inline||!1,i=n.simple||!1;n.inline=!0,n.simple=!0;const a=e(t,n);return n.inline=r,n.simple=i,a}function qL(e,t,n){const r=n.inline||!1,i=n.simple||!1;n.inline=!1,n.simple=!0;const a=e(t,n);return n.inline=r,n.simple=i,a}function HL(e,t,n){const r=n.inline||!1;n.inline=!1;const i=e(t,n);return n.inline=r,i}const GL=(e,t,n)=>({children:UL(t,e[1],n)});function WL(){return{}}function QL(){return null}function KL(...e){return e.filter(Boolean).join(" ")}function YL(e,t,n){let r=e;const i=t.split(".");for(;i.length&&(r=r[i[0]],void 0!==r);)i.shift();return r||n}const XL=e=>{let{children:t="",options:n}=e,r=function(e,t){if(null==e)return{};var n,r,i={},a=Object.keys(e);for(r=0;r=0||(i[n]=e[n]);return i}(e,sN);return Fi.cloneElement(function(e="",t={}){t.overrides=t.overrides||{},t.slugify=t.slugify||AL,t.namedCodesToUnicode=t.namedCodesToUnicode?oN({},dN,t.namedCodesToUnicode):dN;const n=t.createElement||Fi.createElement;function r(e,r,...i){const a=YL(t.overrides,`${e}.props`,{});return n(function(e,t){const n=YL(t,e);return n?"function"==typeof n||"object"==typeof n&&"render"in n?n:YL(t,`${e}.component`,e):e}(e,t.overrides),oN({},r,a,{className:KL(null==r?void 0:r.className,a.className)||void 0}),...i)}function i(e){e=e.replace(kN,"");let n=!1;t.forceInline?n=!0:t.forceBlock||(n=!1===QN.test(e));const i=u(c(n?e:`${e.trimEnd().replace(sL,"")}\n\n`,{inline:n}));for(;"string"==typeof i[i.length-1]&&!i[i.length-1].trim();)i.pop();if(null===t.wrapper)return i;const a=t.wrapper||(n?"span":"div");let o;if(i.length>1||t.forceWrapper)o=i;else{if(1===i.length)return o=i[0],"string"==typeof o?r("span",{key:"outer"},o):o;o=null}return Fi.createElement(a,{key:"outer"},o)}function a(e){const t=e.match(hN);return t?t.reduce((function(e,t,n){const r=t.indexOf("=");if(-1!==r){const a=function(e){return-1!==e.indexOf("-")&&null===e.match(LN)&&(e=e.replace(zN,(function(e,t){return t.toUpperCase()}))),e}(t.slice(0,r)).trim(),o=function(e){const t=e[0];return('"'===t||"'"===t)&&e.length>=2&&e[e.length-1]===t?e.slice(1,-1):e}(t.slice(r+1).trim()),s=uN[a]||a,l=e[s]=function(e,t){return"style"===e?t.split(/;\s?/).reduce((function(e,t){const n=t.slice(0,t.indexOf(":"));return e[n.trim().replace(/(-[a-z])/g,(e=>e[1].toUpperCase()))]=t.slice(n.length+1).trim(),e}),{}):"href"===e||"src"===e?VL(t):(t.match(FN)&&(t=t.slice(1,t.length-1)),"true"===t||"false"!==t&&t)}(a,o);"string"==typeof l&&(jN.test(l)||MN.test(l))&&(e[s]=Fi.cloneElement(i(l.trim()),{key:n}))}else"style"!==t&&(e[uN[t]||t]=!0);return e}),{}):null}const o=[],s={},l={0:{match:FL(gN),order:1,parse:(e,t,n)=>({children:t(e[0].replace(yN,""),n)}),render:(e,t,n)=>r("blockquote",{key:n.key},t(e.children,n))},1:{match:$L(bN),order:1,parse:WL,render:(e,t,n)=>r("br",{key:n.key})},2:{match:FL(vN),order:1,parse:WL,render:(e,t,n)=>r("hr",{key:n.key})},3:{match:FL(SN),order:0,parse:e=>({lang:void 0,text:e[0].replace(/^ {4}/gm,"").replace(/\n+$/,"")}),render:(e,t,n)=>r("pre",{key:n.key},r("code",oN({},e.attrs,{className:e.lang?`lang-${e.lang}`:""}),e.text))},4:{match:FL(wN),order:0,parse:e=>({attrs:a(e[3]||""),lang:e[2]||void 0,text:e[4],type:"3"})},5:{match:ML(EN),order:3,parse:e=>({text:e[2]}),render:(e,t,n)=>r("code",{key:n.key},e.text)},6:{match:FL(_N),order:0,parse:e=>(o.push({footnote:e[2],identifier:e[1]}),{}),render:QL},7:{match:LL(TN),order:1,parse:e=>({target:`#${t.slugify(e[1])}`,text:e[1]}),render:(e,t,n)=>r("a",{key:n.key,href:VL(e.target)},r("sup",{key:n.key},e.text))},8:{match:LL(PN),order:1,parse:e=>({completed:"x"===e[1].toLowerCase()}),render:(e,t,n)=>r("input",{checked:e.completed,key:n.key,readOnly:!0,type:"checkbox"})},9:{match:FL(t.enforceAtxHeadings?AN:RN),order:1,parse:(e,n,r)=>({children:UL(n,e[2],r),id:t.slugify(e[2]),level:e[1].length}),render:(e,t,n)=>r(`h${e.level}`,{id:e.id,key:n.key},t(e.children,n))},10:{match:FL(DN),order:0,parse:(e,t,n)=>({children:UL(t,e[1],n),level:"="===e[2]?1:2,type:"9"})},11:{match:$L(jN),order:1,parse(e,t,n){const[,r]=e[3].match(lL),i=new RegExp(`^${r}`,"gm"),o=e[3].replace(i,""),s=(l=o,RL.some((e=>e.test(l)))?HL:UL);var l;const c=e[1].toLowerCase(),u=-1!==pN.indexOf(c),d={attrs:a(e[2]),noInnerParse:u,tag:(u?c:e[1]).trim()};return n.inAnchor=n.inAnchor||"a"===c,u?d.text=e[3]:d.children=s(t,o,n),n.inAnchor=!1,d},render:(e,t,n)=>r(e.tag,oN({key:n.key},e.attrs),e.text||t(e.children,n))},13:{match:$L(MN),order:1,parse:e=>({attrs:a(e[2]||""),tag:e[1].trim()}),render:(e,t,n)=>r(e.tag,oN({},e.attrs,{key:n.key}))},12:{match:$L(NN),order:1,parse:()=>({}),render:QL},14:{match:ML(kL),order:1,parse:e=>({alt:e[1],target:zL(e[2]),title:e[3]}),render:(e,t,n)=>r("img",{key:n.key,alt:e.alt||void 0,title:e.title||void 0,src:VL(e.target)})},15:{match:LL(CL),order:3,parse:(e,t,n)=>({children:qL(t,e[1],n),target:zL(e[2]),title:e[3]}),render:(e,t,n)=>r("a",{key:n.key,href:VL(e.target),title:e.title},t(e.children,n))},16:{match:LL(VN),order:0,parse:e=>({children:[{text:e[1],type:"27"}],target:e[1],type:"15"})},17:{match:(e,t)=>t.inAnchor?null:LL($N)(e,t),order:0,parse:e=>({children:[{text:e[1],type:"27"}],target:e[1],title:void 0,type:"15"})},18:{match:LL(BN),order:0,parse(e){let t=e[1],n=e[1];return fN.test(n)||(n="mailto:"+n),{children:[{text:t.replace("mailto:",""),type:"27"}],target:n,type:"15"}}},20:TL(r,1),33:TL(r,2),19:{match:FL(xN),order:3,parse:WL,render:()=>"\n"},21:{match:BL,order:3,parse:GL,render:(e,t,n)=>r("p",{key:n.key},t(e.children,n))},22:{match:LL(qN),order:0,parse:e=>(s[e[1]]={target:e[2],title:e[4]},{}),render:QL},23:{match:ML(HN),order:0,parse:e=>({alt:e[1]||void 0,ref:e[2]}),render:(e,t,n)=>s[e.ref]?r("img",{key:n.key,alt:e.alt,src:VL(s[e.ref].target),title:s[e.ref].title}):null},24:{match:LL(GN),order:0,parse:(e,t,n)=>({children:t(e[1],n),fallbackChildren:t(e[0].replace(WN,"\\$1"),n),ref:e[2]}),render:(e,t,n)=>s[e.ref]?r("a",{key:n.key,href:VL(s[e.ref].target),title:s[e.ref].title},t(e.children,n)):r("span",{key:n.key},t(e.fallbackChildren,n))},25:{match:FL(UN),order:1,parse:IL,render(e,t,n){const i=e;return r("table",{key:n.key},r("thead",null,r("tr",null,i.header.map((function(e,a){return r("th",{key:a,style:NL(i,a)},t(e,n))})))),r("tbody",null,i.cells.map((function(e,a){return r("tr",{key:a},e.map((function(e,a){return r("td",{key:a,style:NL(i,a)},t(e,n))})))}))))}},27:{match:$L(oL),order:4,parse:e=>({text:e[0].replace(IN,((e,n)=>t.namedCodesToUnicode[n]?t.namedCodesToUnicode[n]:e))}),render:e=>e.text},28:{match:ML(tL),order:2,parse:(e,t,n)=>({children:t(e[2],n)}),render:(e,t,n)=>r("strong",{key:n.key},t(e.children,n))},29:{match:ML(nL),order:3,parse:(e,t,n)=>({children:t(e[2],n)}),render:(e,t,n)=>r("em",{key:n.key},t(e.children,n))},30:{match:ML(aL),order:1,parse:e=>({text:e[1],type:"27"})},31:{match:ML(rL),order:3,parse:GL,render:(e,t,n)=>r("mark",{key:n.key},t(e.children,n))},32:{match:ML(iL),order:3,parse:GL,render:(e,t,n)=>r("del",{key:n.key},t(e.children,n))}};!0===t.disableParsingRawHTML&&(delete l[11],delete l[13]);const c=function(e){let t=Object.keys(e);function n(r,i){let a=[],o="";for(;r;){let s=0;for(;sa(n,r,i)),n,r,i):a(n,r,i)}}(l,t.renderRule),function e(t,n={}){if(Array.isArray(t)){const r=n.key,i=[];let a=!1;for(let r=0;r{const t=document.querySelector('[placeholder^="Search"]');if(null===t)return void Xi.error(new Error("Cannot find search input element!"));((e,t)=>{const n=Object.getOwnPropertyDescriptor(e,"value").set,r=Object.getOwnPropertyDescriptor(Object.getPrototypeOf(e),"value").set;n&&n!==r?r.call(e,t):n.call(e,t)})(t,e.target.textContent.trim()),t.dispatchEvent(new Event("input",{bubbles:!0}))},ZL={overrides:{code:{component:({children:e})=>{const t=(0,o.useStyles2)(tM);return"string"==typeof e&&e.includes("\n")?$i().createElement("code",null,e):$i().createElement("code",{className:t.searchLink,title:"Search for this node",onClick:JL},e)}}}};function eM({reply:e}){var t;const n=(0,o.useStyles2)(tM);return $i().createElement("div",{className:n.container},null==e||null===(t=e.messages)||void 0===t?void 0:t.filter((e=>"system"!==e.role)).map((e=>$i().createElement($i().Fragment,null,$i().createElement("div",{className:n.reply},$i().createElement(XL,{options:ZL},e.content)),$i().createElement("hr",null)))),$i().createElement("div",{className:n.reply},$i().createElement(XL,{options:ZL},e.text)))}const tM=()=>({container:i.css` + `});function UI(){return UI=Object.assign?Object.assign.bind():function(e){for(var t=1;t(e[t.toLowerCase()]=t,e)),{for:"htmlFor"}),QI={amp:"&",apos:"'",gt:">",lt:"<",nbsp:" ",quot:"“"},KI=["style","script"],YI=/([-A-Z0-9_:]+)(?:\s*=\s*(?:(?:"((?:\\.|[^"])*)")|(?:'((?:\\.|[^'])*)')|(?:\{((?:\\.|{[^}]*?}|[^}])*)\})))?/gi,XI=/mailto:/i,JI=/\n{2,}$/,ZI=/^(\s*>[\s\S]*?)(?=\n{2,})/,eN=/^ *> ?/gm,tN=/^ {2,}\n/,nN=/^(?:( *[-*_])){3,} *(?:\n *)+\n/,rN=/^\s*(`{3,}|~{3,}) *(\S+)?([^\n]*?)?\n([\s\S]+?)\s*\1 *(?:\n *)*\n?/,iN=/^(?: {4}[^\n]+\n*)+(?:\n *)+\n?/,aN=/^(`+)\s*([\s\S]*?[^`])\s*\1(?!`)/,oN=/^(?:\n *)*\n/,sN=/\r\n?/g,lN=/^\[\^([^\]]+)](:(.*)((\n+ {4,}.*)|(\n(?!\[\^).+))*)/,cN=/^\[\^([^\]]+)]/,uN=/\f/g,dN=/^---[ \t]*\n(.|\n)*\n---[ \t]*\n/,pN=/^\s*?\[(x|\s)\]/,hN=/^ *(#{1,6}) *([^\n]+?)(?: +#*)?(?:\n *)*(?:\n|$)/,fN=/^ *(#{1,6}) +([^\n]+?)(?: +#*)?(?:\n *)*(?:\n|$)/,mN=/^([^\n]+)\n *(=|-){3,} *(?:\n *)+\n/,gN=/^ *(?!<[a-z][^ >/]* ?\/>)<([a-z][^ >/]*) ?((?:[^>]*[^/])?)>\n?(\s*(?:<\1[^>]*?>[\s\S]*?<\/\1>|(?!<\1\b)[\s\S])*?)<\/\1>(?!<\/\1>)\n*/i,yN=/&([a-z0-9]+|#[0-9]{1,6}|#x[0-9a-fA-F]{1,6});/gi,bN=/^)/,vN=/^(data|aria|x)-[a-z_][a-z\d_.-]*$/,wN=/^ *<([a-z][a-z0-9:]*)(?:\s+((?:<.*?>|[^>])*))?\/?>(?!<\/\1>)(\s*\n)?/i,SN=/^\{.*\}$/,EN=/^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/,xN=/^<([^ >]+@[^ >]+)>/,ON=/^<([^ >]+:\/[^ >]+)>/,_N=/-([a-z])?/gi,TN=/^(.*\|.*)\n(?: *(\|? *[-:]+ *\|[-| :]*)\n((?:.*\|.*\n)*))?\n?/,CN=/^\[([^\]]*)\]:\s+]+)>?\s*("([^"]*)")?/,kN=/^!\[([^\]]*)\] ?\[([^\]]*)\]/,PN=/^\[([^\]]*)\] ?\[([^\]]*)\]/,RN=/(\[|\])/g,AN=/(\n|^[-*]\s|^#|^ {2,}|^-{2,}|^>\s)/,DN=/\t/g,jN=/(^ *\||\| *$)/g,IN=/^ *:-+: *$/,NN=/^ *:-+ *$/,LN=/^ *-+: *$/,MN="((?:\\[.*?\\][([].*?[)\\]]|<.*?>(?:.*?<.*?>)?|`.*?`|~~.*?~~|==.*?==|.|\\n)*?)",FN=new RegExp(`^([*_])\\1${MN}\\1\\1(?!\\1)`),$N=new RegExp(`^([*_])${MN}\\1(?!\\1|\\w)`),BN=new RegExp(`^==${MN}==`),VN=new RegExp(`^~~${MN}~~`),zN=/^\\([^0-9A-Za-z\s])/,UN=/^[\s\S]+?(?=[^0-9A-Z\s\u00c0-\uffff&#;.()'"]|\d+\.|\n\n| {2,}\n|\w+:\S|$)/i,qN=/^\n+/,HN=/^([ \t]*)/,GN=/\\([^\\])/g,WN=/ *\n+$/,QN=/(?:^|\n)( *)$/,KN="(?:\\d+\\.)",YN="(?:[*+-])";function XN(e){return"( *)("+(1===e?KN:YN)+") +"}const JN=XN(1),ZN=XN(2);function eL(e){return new RegExp("^"+(1===e?JN:ZN))}const tL=eL(1),nL=eL(2);function rL(e){return new RegExp("^"+(1===e?JN:ZN)+"[^\\n]*(?:\\n(?!\\1"+(1===e?KN:YN)+" )[^\\n]*)*(\\n|$)","gm")}const iL=rL(1),aL=rL(2);function oL(e){const t=1===e?KN:YN;return new RegExp("^( *)("+t+") [\\s\\S]+?(?:\\n{2,}(?! )(?!\\1"+t+" (?!"+t+" ))\\n*|\\s*\\n*$)")}const sL=oL(1),lL=oL(2);function cL(e,t){const n=1===t,r=n?sL:lL,i=n?iL:aL,a=n?tL:nL;return{match(e,t,n){const i=QN.exec(n);return i&&(t.list||!t.inline&&!t.simple)?r.exec(e=i[1]+e):null},order:1,parse(e,t,r){const o=n?+e[2]:void 0,s=e[0].replace(JI,"\n").match(i);let l=!1;return{items:s.map((function(e,n){const i=a.exec(e)[0].length,o=new RegExp("^ {1,"+i+"}","gm"),c=e.replace(o,"").replace(a,""),u=n===s.length-1,d=-1!==c.indexOf("\n\n")||u&&l;l=d;const p=r.inline,h=r.list;let f;r.list=!0,d?(r.inline=!1,f=c.replace(WN,"\n\n")):(r.inline=!0,f=c.replace(WN,""));const m=t(f,r);return r.inline=p,r.list=h,m})),ordered:n,start:o}},render:(t,n,r)=>e(t.ordered?"ol":"ul",{key:r.key,start:"20"===t.type?t.start:void 0},t.items.map((function(t,i){return e("li",{key:i},n(t,r))})))}}const uL=new RegExp("^\\[((?:\\[[^\\]]*\\]|[^\\[\\]]|\\](?=[^\\[]*\\]))*)\\]\\(\\s*?(?:\\s+['\"]([\\s\\S]*?)['\"])?\\s*\\)"),dL=/^!\[(.*?)\]\( *((?:\([^)]*\)|[^() ])*) *"?([^)"]*)?"?\)/,pL=[ZI,rN,iN,hN,mN,fN,bN,TN,iL,sL,aL,lL],hL=[...pL,/^[^\n]+(?: \n|\n{2,})/,gN,wN];function fL(e){return e.replace(/[ÀÁÂÃÄÅàáâãä忯]/g,"a").replace(/[çÇ]/g,"c").replace(/[ðÐ]/g,"d").replace(/[ÈÉÊËéèêë]/g,"e").replace(/[ÏïÎîÍíÌì]/g,"i").replace(/[Ññ]/g,"n").replace(/[øØœŒÕõÔôÓóÒò]/g,"o").replace(/[ÜüÛûÚúÙù]/g,"u").replace(/[ŸÿÝý]/g,"y").replace(/[^a-z0-9- ]/gi,"").replace(/ /gi,"-").toLowerCase()}function mL(e){return LN.test(e)?"right":IN.test(e)?"center":NN.test(e)?"left":null}function gL(e,t,n,r){const i=n.inTable;n.inTable=!0;let a=e.trim().split(/( *(?:`[^`]*`|<.*?>.*?<\/.*?>(?!<\/.*?>)|\\\||\|) *)/).reduce(((e,i)=>("|"===i.trim()?e.push(r?{type:"26"}:{type:"27",text:i}):""!==i&&e.push.apply(e,t(i,n)),e)),[]);n.inTable=i;let o=[[]];return a.forEach((function(e,t){"26"===e.type?0!==t&&t!==a.length-1&&o.push([]):("27"!==e.type||null!=a[t+1]&&"26"!==a[t+1].type||(e.text=e.text.trimEnd()),o[o.length-1].push(e))})),o}function yL(e,t,n){n.inline=!0;const r=e[2]?e[2].replace(jN,"").split("|").map(mL):[],i=e[3]?function(e,t,n){return e.trim().split("\n").map((function(e){return gL(e,t,n,!0)}))}(e[3],t,n):[],a=gL(e[1],t,n,!!i.length);return n.inline=!1,i.length?{align:r,cells:i,header:a,type:"25"}:{children:a,type:"21"}}function bL(e,t){return null==e.align[t]?{}:{textAlign:e.align[t]}}function vL(e){return function(t,n){return n.inline?e.exec(t):null}}function wL(e){return function(t,n){return n.inline||n.simple?e.exec(t):null}}function SL(e){return function(t,n){return n.inline||n.simple?null:e.exec(t)}}function EL(e){return function(t){return e.exec(t)}}function xL(e,t,n){if(t.inline||t.simple)return null;if(n&&!n.endsWith("\n"))return null;let r="";e.split("\n").every((e=>!pL.some((t=>t.test(e)))&&(r+=e+"\n",e.trim())));const i=r.trimEnd();return""==i?null:[r,i]}function OL(e){try{if(decodeURIComponent(e).replace(/[^A-Za-z0-9/:]/g,"").match(/^\s*(javascript|vbscript|data(?!:image)):/i))return}catch(e){return null}return e}function _L(e){return e.replace(GN,"$1")}function TL(e,t,n){const r=n.inline||!1,i=n.simple||!1;n.inline=!0,n.simple=!0;const a=e(t,n);return n.inline=r,n.simple=i,a}function CL(e,t,n){const r=n.inline||!1,i=n.simple||!1;n.inline=!1,n.simple=!0;const a=e(t,n);return n.inline=r,n.simple=i,a}function kL(e,t,n){const r=n.inline||!1;n.inline=!1;const i=e(t,n);return n.inline=r,i}const PL=(e,t,n)=>({children:TL(t,e[1],n)});function RL(){return{}}function AL(){return null}function DL(...e){return e.filter(Boolean).join(" ")}function jL(e,t,n){let r=e;const i=t.split(".");for(;i.length&&(r=r[i[0]],void 0!==r);)i.shift();return r||n}const IL=e=>{let{children:t="",options:n}=e,r=function(e,t){if(null==e)return{};var n,r,i={},a=Object.keys(e);for(r=0;r=0||(i[n]=e[n]);return i}(e,qI);return Fi.cloneElement(function(e="",t={}){t.overrides=t.overrides||{},t.slugify=t.slugify||fL,t.namedCodesToUnicode=t.namedCodesToUnicode?UI({},QI,t.namedCodesToUnicode):QI;const n=t.createElement||Fi.createElement;function r(e,r,...i){const a=jL(t.overrides,`${e}.props`,{});return n(function(e,t){const n=jL(t,e);return n?"function"==typeof n||"object"==typeof n&&"render"in n?n:jL(t,`${e}.component`,e):e}(e,t.overrides),UI({},r,a,{className:DL(null==r?void 0:r.className,a.className)||void 0}),...i)}function i(e){e=e.replace(dN,"");let n=!1;t.forceInline?n=!0:t.forceBlock||(n=!1===AN.test(e));const i=u(c(n?e:`${e.trimEnd().replace(qN,"")}\n\n`,{inline:n}));for(;"string"==typeof i[i.length-1]&&!i[i.length-1].trim();)i.pop();if(null===t.wrapper)return i;const a=t.wrapper||(n?"span":"div");let o;if(i.length>1||t.forceWrapper)o=i;else{if(1===i.length)return o=i[0],"string"==typeof o?r("span",{key:"outer"},o):o;o=null}return Fi.createElement(a,{key:"outer"},o)}function a(e){const t=e.match(YI);return t?t.reduce((function(e,t,n){const r=t.indexOf("=");if(-1!==r){const a=function(e){return-1!==e.indexOf("-")&&null===e.match(vN)&&(e=e.replace(_N,(function(e,t){return t.toUpperCase()}))),e}(t.slice(0,r)).trim(),o=function(e){const t=e[0];return('"'===t||"'"===t)&&e.length>=2&&e[e.length-1]===t?e.slice(1,-1):e}(t.slice(r+1).trim()),s=WI[a]||a,l=e[s]=function(e,t){return"style"===e?t.split(/;\s?/).reduce((function(e,t){const n=t.slice(0,t.indexOf(":"));return e[n.trim().replace(/(-[a-z])/g,(e=>e[1].toUpperCase()))]=t.slice(n.length+1).trim(),e}),{}):"href"===e||"src"===e?OL(t):(t.match(SN)&&(t=t.slice(1,t.length-1)),"true"===t||"false"!==t&&t)}(a,o);"string"==typeof l&&(gN.test(l)||wN.test(l))&&(e[s]=Fi.cloneElement(i(l.trim()),{key:n}))}else"style"!==t&&(e[WI[t]||t]=!0);return e}),{}):null}const o=[],s={},l={0:{match:SL(ZI),order:1,parse:(e,t,n)=>({children:t(e[0].replace(eN,""),n)}),render:(e,t,n)=>r("blockquote",{key:n.key},t(e.children,n))},1:{match:EL(tN),order:1,parse:RL,render:(e,t,n)=>r("br",{key:n.key})},2:{match:SL(nN),order:1,parse:RL,render:(e,t,n)=>r("hr",{key:n.key})},3:{match:SL(iN),order:0,parse:e=>({lang:void 0,text:e[0].replace(/^ {4}/gm,"").replace(/\n+$/,"")}),render:(e,t,n)=>r("pre",{key:n.key},r("code",UI({},e.attrs,{className:e.lang?`lang-${e.lang}`:""}),e.text))},4:{match:SL(rN),order:0,parse:e=>({attrs:a(e[3]||""),lang:e[2]||void 0,text:e[4],type:"3"})},5:{match:wL(aN),order:3,parse:e=>({text:e[2]}),render:(e,t,n)=>r("code",{key:n.key},e.text)},6:{match:SL(lN),order:0,parse:e=>(o.push({footnote:e[2],identifier:e[1]}),{}),render:AL},7:{match:vL(cN),order:1,parse:e=>({target:`#${t.slugify(e[1])}`,text:e[1]}),render:(e,t,n)=>r("a",{key:n.key,href:OL(e.target)},r("sup",{key:n.key},e.text))},8:{match:vL(pN),order:1,parse:e=>({completed:"x"===e[1].toLowerCase()}),render:(e,t,n)=>r("input",{checked:e.completed,key:n.key,readOnly:!0,type:"checkbox"})},9:{match:SL(t.enforceAtxHeadings?fN:hN),order:1,parse:(e,n,r)=>({children:TL(n,e[2],r),id:t.slugify(e[2]),level:e[1].length}),render:(e,t,n)=>r(`h${e.level}`,{id:e.id,key:n.key},t(e.children,n))},10:{match:SL(mN),order:0,parse:(e,t,n)=>({children:TL(t,e[1],n),level:"="===e[2]?1:2,type:"9"})},11:{match:EL(gN),order:1,parse(e,t,n){const[,r]=e[3].match(HN),i=new RegExp(`^${r}`,"gm"),o=e[3].replace(i,""),s=(l=o,hL.some((e=>e.test(l)))?kL:TL);var l;const c=e[1].toLowerCase(),u=-1!==KI.indexOf(c),d={attrs:a(e[2]),noInnerParse:u,tag:(u?c:e[1]).trim()};return n.inAnchor=n.inAnchor||"a"===c,u?d.text=e[3]:d.children=s(t,o,n),n.inAnchor=!1,d},render:(e,t,n)=>r(e.tag,UI({key:n.key},e.attrs),e.text||t(e.children,n))},13:{match:EL(wN),order:1,parse:e=>({attrs:a(e[2]||""),tag:e[1].trim()}),render:(e,t,n)=>r(e.tag,UI({},e.attrs,{key:n.key}))},12:{match:EL(bN),order:1,parse:()=>({}),render:AL},14:{match:wL(dL),order:1,parse:e=>({alt:e[1],target:_L(e[2]),title:e[3]}),render:(e,t,n)=>r("img",{key:n.key,alt:e.alt||void 0,title:e.title||void 0,src:OL(e.target)})},15:{match:vL(uL),order:3,parse:(e,t,n)=>({children:CL(t,e[1],n),target:_L(e[2]),title:e[3]}),render:(e,t,n)=>r("a",{key:n.key,href:OL(e.target),title:e.title},t(e.children,n))},16:{match:vL(ON),order:0,parse:e=>({children:[{text:e[1],type:"27"}],target:e[1],type:"15"})},17:{match:(e,t)=>t.inAnchor?null:vL(EN)(e,t),order:0,parse:e=>({children:[{text:e[1],type:"27"}],target:e[1],title:void 0,type:"15"})},18:{match:vL(xN),order:0,parse(e){let t=e[1],n=e[1];return XI.test(n)||(n="mailto:"+n),{children:[{text:t.replace("mailto:",""),type:"27"}],target:n,type:"15"}}},20:cL(r,1),33:cL(r,2),19:{match:SL(oN),order:3,parse:RL,render:()=>"\n"},21:{match:xL,order:3,parse:PL,render:(e,t,n)=>r("p",{key:n.key},t(e.children,n))},22:{match:vL(CN),order:0,parse:e=>(s[e[1]]={target:e[2],title:e[4]},{}),render:AL},23:{match:wL(kN),order:0,parse:e=>({alt:e[1]||void 0,ref:e[2]}),render:(e,t,n)=>s[e.ref]?r("img",{key:n.key,alt:e.alt,src:OL(s[e.ref].target),title:s[e.ref].title}):null},24:{match:vL(PN),order:0,parse:(e,t,n)=>({children:t(e[1],n),fallbackChildren:t(e[0].replace(RN,"\\$1"),n),ref:e[2]}),render:(e,t,n)=>s[e.ref]?r("a",{key:n.key,href:OL(s[e.ref].target),title:s[e.ref].title},t(e.children,n)):r("span",{key:n.key},t(e.fallbackChildren,n))},25:{match:SL(TN),order:1,parse:yL,render(e,t,n){const i=e;return r("table",{key:n.key},r("thead",null,r("tr",null,i.header.map((function(e,a){return r("th",{key:a,style:bL(i,a)},t(e,n))})))),r("tbody",null,i.cells.map((function(e,a){return r("tr",{key:a},e.map((function(e,a){return r("td",{key:a,style:bL(i,a)},t(e,n))})))}))))}},27:{match:EL(UN),order:4,parse:e=>({text:e[0].replace(yN,((e,n)=>t.namedCodesToUnicode[n]?t.namedCodesToUnicode[n]:e))}),render:e=>e.text},28:{match:wL(FN),order:2,parse:(e,t,n)=>({children:t(e[2],n)}),render:(e,t,n)=>r("strong",{key:n.key},t(e.children,n))},29:{match:wL($N),order:3,parse:(e,t,n)=>({children:t(e[2],n)}),render:(e,t,n)=>r("em",{key:n.key},t(e.children,n))},30:{match:wL(zN),order:1,parse:e=>({text:e[1],type:"27"})},31:{match:wL(BN),order:3,parse:PL,render:(e,t,n)=>r("mark",{key:n.key},t(e.children,n))},32:{match:wL(VN),order:3,parse:PL,render:(e,t,n)=>r("del",{key:n.key},t(e.children,n))}};!0===t.disableParsingRawHTML&&(delete l[11],delete l[13]);const c=function(e){let t=Object.keys(e);function n(r,i){let a=[],o="";for(;r;){let s=0;for(;sa(n,r,i)),n,r,i):a(n,r,i)}}(l,t.renderRule),function e(t,n={}){if(Array.isArray(t)){const r=n.key,i=[];let a=!1;for(let r=0;r{const t=document.querySelector('[placeholder^="Search"]');if(null===t)return void Xi.error(new Error("Cannot find search input element!"));((e,t)=>{const n=Object.getOwnPropertyDescriptor(e,"value").set,r=Object.getOwnPropertyDescriptor(Object.getPrototypeOf(e),"value").set;n&&n!==r?r.call(e,t):n.call(e,t)})(t,e.target.textContent.trim()),t.dispatchEvent(new Event("input",{bubbles:!0}))},LL={overrides:{code:{component:({children:e})=>{const t=(0,o.useStyles2)(FL);return"string"==typeof e&&e.includes("\n")?$i().createElement("code",null,e):$i().createElement("code",{className:t.searchLink,title:"Search for this node",onClick:NL},e)}}}};function ML({reply:e}){var t;const n=(0,o.useStyles2)(FL);return $i().createElement("div",{className:n.container},null==e||null===(t=e.messages)||void 0===t?void 0:t.filter((e=>"system"!==e.role)).map((e=>$i().createElement($i().Fragment,null,$i().createElement("div",{className:n.reply},$i().createElement(IL,{options:LL},e.content||"")),$i().createElement("hr",null)))),$i().createElement("div",{className:n.reply},$i().createElement(IL,{options:LL},e.text)))}const FL=()=>({container:i.css` width: 100%; height: 100%; `,reply:i.css` @@ -571,13 +571,13 @@ define(["@emotion/css","@grafana/data","@grafana/runtime","@grafana/ui","d3","lo border: 1px solid rgb(255, 136, 51, 0.8); border-radius: 4px; } - `}),nM=()=>({textarea:i.css` + `}),$L=()=>({textarea:i.css` margin-bottom: 8px; `,sendButton:i.css` float: right; border-top-left-radius: 0; border-bottom-left-radius: 0; - `});function rM({onSubmit:e}){const t=(0,o.useStyles2)(nM),{question:n,onChangeInput:r,onClickSend:i}=function(e){const[t,n]=(0,Fi.useState)(""),r=(0,Fi.useCallback)((e=>{n(e.target.value)}),[]),i=(0,Fi.useCallback)((()=>{const r=t.trim();r&&(e(r),n(""))}),[t,e]);return{question:t,onChangeInput:r,onClickSend:i}}(e);return $i().createElement("div",null,$i().createElement(o.TextArea,{className:t.textarea,placeholder:"Ask a follow-up question...",value:n,onChange:r,onKeyDown:e=>{"Enter"!==e.code||e.shiftKey||i()}}),$i().createElement(o.Button,{className:t.sendButton,onClick:i},"Send"))}const iM={system:{empty:()=>"\n You are a performance profiling expert and excel at analyzing profiles in the DOT format.\n In the DOT format, a row like N47 -> N61 means the function from N47 called the function from N61.\n"},user:{single:(e,t)=>`\n Analyze this flamegraph in DOT format and address these key aspects:\n - **Performance Bottleneck**: Identify the primary factors slowing down the process, consuming excessive memory, or causing a bottleneck in the system.\n - **Root Cause**: Explain clearly why these bottlenecks are occurring.\n - **Recommended Fix**: Suggest practical solutions for these issues.\n\n Guidelines:\n - Always use full function names without splitting them from package names.\n - Exclude numeric values, percentages, and node names (e.g., N1, N3, Node 1, Node 2).\n - Focus on user code over low-level runtime optimizations.\n - For standard library or runtime functions, explain their presence/function and link them to user code functions calling them. Avoid repetitive mentions from the same call chain.\n - Do not mention that the flamegraph profile is in DOT format.\n - Only use h5 and h6 markdown headers (e.g., ##### Performance Bottleneck, ###### Recommended Fix)\n - Do not use h1,h2,h3,h4 headers (e.g., ## Bottleneck, ### Root Cause, #### Recommended Fix)\n\n Format the response using markdown headers for each section corresponding to the key aspects.\n\n The profile type is: ${e}\n Profile in DOT format:\n ${t[0]}\n`,anton:(e,t)=>`\nGive me actionable feedback and suggestions on how I improve the application performance.\n\nDo not break function names.\nDo not show any numeric values, absolute or percents.\nDo not show node names like N1, N3, or Node 1, Node 2.\nDo not suggest low-level runtime optimisations, focus on the user code.\n\nAlways use full function names.\nNever split function and package name.\n\nRemove any numeric values, absolute or percents, from the output.\nRemove node names like N1, N3, or Node 1, Node 2 from the output.\n\nIf the function is widely known (e.g., a runtime or stdlib function), provide me concise explanation why the function is present in the profile and what could be the cause.\nIf a function is defined in the runtime or in the standard library, tell me which function in the user code calls it.\nAvoid mentioning functions from the same call-chain.\n\n5 suggestions is enough.\nThe profile type is ${e}\nBelow is the performance profile in DOT format:\n${t[0]}\n`,diff:(e,t)=>`\nAnalyze the differences between these two performance profiles presented in DOT format. Provide a detailed comparison focusing on the following aspects:\n\n- Performance Change: Determine how the performance has changed from the first profile to the second. Identify if there are new bottlenecks, improved or worsened performance areas, or significant changes in resource consumption.\n- Function Impact: Highlight no more than 3 specific functions that have undergone notable changes in their performance impact. Discuss any new functions that have appeared in the second profile or any existing functions that have significantly increased or decreased in resource usage.\n- Potential Causes: Discuss the possible reasons for these changes in performance, linking them to the differences in function execution or resource usage between the two profiles.\n\nGuidelines for Analysis:\n- Use full function names without separating them from their package names\n- Focus on user code rather than low-level runtime optimizations or standard library functions unless they are directly relevant to the user code's performance changes\n- Exclude numeric values, percentages, and node names (e.g., N1, N3, Node 1, Node 2) from the analysis\n- Format the response using markdown headers for each section to structure the analysis clearly\n\nThe profile type is: ${e}\n\nFirst performance profile in DOT format:\n${t[0]}\n\nSecond performance profile in DOT format:\n${t[1]}\n`}},aM=({system:e,user:t,profileType:n,profiles:r})=>{const i=iM.system[e];if("function"!=typeof i)throw new Error(`Cannot find system prompt "${e}"!`);const a=iM.user[t];if("function"!=typeof a)throw new Error(`Cannot find user prompt "${t}"!`);return{system:i(n,r),user:a(n,r)}};function oM(e,t,n,r,i,a,o){try{var s=e[a](o),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,i)}class sM extends QC{get(e){var t,n=this;return(t=function*(){const t=new URLSearchParams({query:e.query,from:String(1e3*e.timeRange.from.unix()),until:String(1e3*e.timeRange.to.unix()),format:e.format});e.maxNodes&&t.set("max-nodes",String(e.maxNodes));const r=yield n.fetch(`/pyroscope/render?${t.toString()}`);switch(e.format){case"dot":return r.text();case"json":return r.json();default:throw new TypeError(`Unknown format "${e.format}"!`)}},function(){var e=this,n=arguments;return new Promise((function(r,i){var a=t.apply(e,n);function o(e){oM(a,r,i,o,s,"next",e)}function s(e){oM(a,r,i,o,s,"throw",e)}o(void 0)}))})()}constructor(e){super(e)}}function lM(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class cM extends bh{validateFetchParams(e,t){let n,r=t;return e&&2!==t.length?(n=new Error(`Invalid number of fetch parameters for analyzing the diff flame graph (${t.length})!`),r=[]):e||1===t.length||(n=new Error(`Invalid number of fetch parameters for analyzing the flame graph (${t.length})!`),r=[]),{params:r,error:n}}constructor(){super({key:"ai-panel"}),lM(this,"useSceneAiPanel",((e,t)=>{const n=tm.findByKeyAndType(this,"dataSource",sR).useState().value,{params:r,error:i}=this.validateFetchParams(e,t),{error:a,isFetching:o,profiles:s}=function(e,t){const n=vj.build(e,sM),{isFetching:r,error:i,data:a}=Pa({queryKey:["dot-profiles",e,...t.flatMap((({query:e,timeRange:t})=>[e,t.from.unix(),t.to.unix()])),100],queryFn:()=>Promise.all(t.map((({query:e,timeRange:t})=>n.get({query:e,timeRange:t,format:"dot",maxNodes:100}).then((e=>e.replace(/fontsize=\d+ /g,"").replace(/id="node\d+" /g,"").replace(/labeltooltip=".*\)" /g,"").replace(/tooltip=".*\)" /g,"").replace(/(N\d+ -> N\d+).*/g,"$1").replace(/N\d+ \[label="other.*\n/,"").replace(/shape=box /g,"").replace(/fillcolor="#\w{6}"/g,"").replace(/color="#\w{6}" /g,""))))))});return{isFetching:r,error:i,profiles:a||[]}}(n,r),l=WP(wR(this,"profileMetricId")).type,{reply:c,error:u,retry:d}=function(e,t){const[n,r]=(0,Fi.useState)(""),[i,a]=(0,Fi.useState)(!1),[o,s]=(0,Fi.useState)(!1),[l,c]=(0,Fi.useState)([]),[u,d]=(0,Fi.useState)(null),[p,h]=(0,Fi.useState)(),f=(0,Fi.useCallback)((e=>{c(e),d(null),r(""),a(!0),s(!1);const t=eN({model:"gpt-4-1106-preview",messages:e}).pipe(ZI()).subscribe({next:r,error(e){d(e),a(!1),s(!0),h(void 0)},complete(){a(!1),s(!0),h(void 0)}});h(t)}),[]),m=(0,Fi.useCallback)((e=>{const t=[{role:"assistant",content:n},{role:"user",content:e}];try{f([...l,...t])}catch(e){d(e)}}),[l,n,f]);return(0,Fi.useEffect)((()=>{if(!t.length||l.length>0)return;const n=aM({system:"empty",user:2===t.length?"diff":"single",profileType:e,profiles:t});try{f([{role:"system",content:n.system},{role:"system",content:n.user}])}catch(e){d(e)}}),[l.length,e,t,t.length,f]),(0,Fi.useEffect)((()=>()=>{p&&(p.unsubscribe(),h(void 0))}),[p]),{reply:{text:n,hasStarted:i,hasFinished:o,messages:l,askFollowupQuestion:m},retry(){if(l.length>0)try{f(l)}catch(e){d(e)}},error:u}}(l,s);return{data:{validationError:i,isLoading:o||!o&&!a&&!u&&!c.text.trim(),fetchError:a,llmError:u,reply:c,shouldDisplayReply:Boolean((null==c?void 0:c.hasStarted)||(null==c?void 0:c.hasFinished)),shouldDisplayFollowUpForm:!a&&!u&&Boolean(null==c?void 0:c.hasFinished)},actions:{retry:d,submitFollowupQuestion(e){c.askFollowupQuestion(e)}}}}))}}lM(cM,"Component",(({model:e,isDiff:t,fetchParams:n,onClose:r})=>{const i=(0,o.useStyles2)(uM),{data:a,actions:s}=e.useSceneAiPanel(t,n);return $i().createElement(LI,{className:i.sidePanel,title:"Flame graph analysis",isLoading:a.isLoading,headerActions:$i().createElement(o.IconButton,{title:"Close panel",name:"times-circle",variant:"secondary","aria-label":"close",onClick:r}),dataTestId:"ai-panel"},$i().createElement("div",{className:i.content},a.validationError&&$i().createElement(pI,{severity:"error",title:"Validation error!",error:a.validationError}),a.fetchError&&$i().createElement(pI,{severity:"error",title:"Error while loading profile data!",message:"Sorry for any inconvenience, please try again later.",error:a.fetchError}),a.shouldDisplayReply&&$i().createElement(eM,{reply:a.reply}),a.isLoading&&$i().createElement($i().Fragment,null,$i().createElement(o.Spinner,{inline:!0})," Analyzing..."),a.llmError&&$i().createElement(o.Alert,{title:"An error occured while generating content using OpenAI!",severity:"warning"},$i().createElement("div",null,$i().createElement("div",null,$i().createElement("p",null,a.llmError.message),$i().createElement("p",null,"Sorry for any inconvenience, please retry or if the problem persists, contact your organization admin."))),$i().createElement(o.Button,{className:i.retryButton,variant:"secondary",fill:"outline",onClick:()=>s.retry()},"Retry")),a.shouldDisplayFollowUpForm&&$i().createElement(rM,{onSubmit:s.submitFollowupQuestion})))}));const uM=e=>({sidePanel:i.css` + `});function BL({onSubmit:e}){const t=(0,o.useStyles2)($L),{question:n,onChangeInput:r,onClickSend:i}=function(e){const[t,n]=(0,Fi.useState)(""),r=(0,Fi.useCallback)((e=>{n(e.target.value)}),[]),i=(0,Fi.useCallback)((()=>{const r=t.trim();r&&(e(r),n(""))}),[t,e]);return{question:t,onChangeInput:r,onClickSend:i}}(e);return $i().createElement("div",null,$i().createElement(o.TextArea,{className:t.textarea,placeholder:"Ask a follow-up question...",value:n,onChange:r,onKeyDown:e=>{"Enter"!==e.code||e.shiftKey||i()}}),$i().createElement(o.Button,{className:t.sendButton,onClick:i},"Send"))}function VL(e,t){return Fb((function(n,r){var i=0;n.subscribe(yv(r,(function(n){return e.call(t,n,i++)&&r.next(n)})))}))}function zL(e,t){return Fb(function(e,t,n,r,i){return function(a,o){var s=n,l=t,c=0;a.subscribe(yv(o,(function(t){var n=c++;l=s?e(l,t,n):(s=!0,t),r&&o.next(l)}),i&&function(){s&&o.next(l),o.complete()}))}}(e,t,arguments.length>=2,!0))}const UL={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};let qL;const HL=new Uint8Array(16);const GL=[];for(let e=0;e<256;++e)GL.push((e+256).toString(16).slice(1));function WL(e,t=0){return(GL[e[t+0]]+GL[e[t+1]]+GL[e[t+2]]+GL[e[t+3]]+"-"+GL[e[t+4]]+GL[e[t+5]]+"-"+GL[e[t+6]]+GL[e[t+7]]+"-"+GL[e[t+8]]+GL[e[t+9]]+"-"+GL[e[t+10]]+GL[e[t+11]]+GL[e[t+12]]+GL[e[t+13]]+GL[e[t+14]]+GL[e[t+15]]).toLowerCase()}const QL=function(e,t,n){if(UL.randomUUID&&!t&&!e)return UL.randomUUID();const r=(e=e||{}).random??e.rng?.()??function(){if(!qL){if("undefined"==typeof crypto||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");qL=crypto.getRandomValues.bind(crypto)}return qL(HL)}();if(r.length<16)throw new Error("Random bytes length must be >= 16");if(r[6]=15&r[6]|64,r[8]=63&r[8]|128,t){if((n=n||0)<0||n+16>t.length)throw new RangeError(`UUID byte range ${n}:${n+15} is out of buffer bounds`);for(let e=0;e<16;++e)t[n+e]=r[e];return t}return WL(r)},KL="llm/v1/chat/completions";function YL(e){return"error"in e}function XL(){return(0,qp.pipe)((0,qp.pipe)(VL((e=>"content"in e.choices[0].delta)),vv((e=>e.choices[0].delta.content))),zL(((e,t)=>e+t),""))}function JL(e){const t={scope:r.LiveChannelScope.Plugin,namespace:FI,path:KL+"/"+QL(),data:e};return(0,a.getGrafanaLiveSrv)().getStream(t).pipe(VL((e=>(0,r.isLiveChannelMessageEvent)(e)))).pipe(VL((e=>!!e.message.choices)),function(e,t,n){var r=Mb(e)||t||n?{next:e,error:t,complete:n}:e;return r?Fb((function(e,t){var n;null===(n=r.subscribe)||void 0===n||n.call(r);var i=!0;e.subscribe(yv(t,(function(e){var n;null===(n=r.next)||void 0===n||n.call(r,e),t.next(e)}),(function(){var e;i=!1,null===(e=r.complete)||void 0===e||e.call(r),t.complete()}),(function(e){var n;i=!1,null===(n=r.error)||void 0===n||n.call(r,e),t.error(e)}),(function(){var e,t;i&&(null===(e=r.unsubscribe)||void 0===e||e.call(r)),null===(t=r.finalize)||void 0===t||t.call(r)})))})):Ev}((e=>{if(YL(e.message))throw new Error(e.message.error)})),(n=e=>!(!YL(e.message)&&(e.message.choices&&e.message.choices[0].delta&&"done"in e.message.choices[0].delta&&!0===e.message.choices[0].delta.done||e.message.choices&&"finish_reason"in e.message.choices[0]&&"stop"===e.message.choices[0].finish_reason)),void 0===i&&(i=!1),Fb((function(e,t){var r=0;e.subscribe(yv(t,(function(e){var a=n(e,r++);(a||i)&&t.next(e),!a&&t.complete()})))}))),vv((e=>e.message)));var n,i}const ZL={system:{empty:()=>"\n You are a performance profiling expert and excel at analyzing profiles in the DOT format.\n In the DOT format, a row like N47 -> N61 means the function from N47 called the function from N61.\n"},user:{single:(e,t)=>`\n Analyze this flamegraph in DOT format and address these key aspects:\n - **Performance Bottleneck**: Identify the primary factors slowing down the process, consuming excessive memory, or causing a bottleneck in the system.\n - **Root Cause**: Explain clearly why these bottlenecks are occurring.\n - **Recommended Fix**: Suggest practical solutions for these issues.\n\n Guidelines:\n - Always use full function names without splitting them from package names.\n - Exclude numeric values, percentages, and node names (e.g., N1, N3, Node 1, Node 2).\n - Focus on user code over low-level runtime optimizations.\n - For standard library or runtime functions, explain their presence/function and link them to user code functions calling them. Avoid repetitive mentions from the same call chain.\n - Do not mention that the flamegraph profile is in DOT format.\n - Only use h5 and h6 markdown headers (e.g., ##### Performance Bottleneck, ###### Recommended Fix)\n - Do not use h1,h2,h3,h4 headers (e.g., ## Bottleneck, ### Root Cause, #### Recommended Fix)\n\n Format the response using markdown headers for each section corresponding to the key aspects.\n\n The profile type is: ${e}\n Profile in DOT format:\n ${t[0]}\n`,anton:(e,t)=>`\nGive me actionable feedback and suggestions on how I improve the application performance.\n\nDo not break function names.\nDo not show any numeric values, absolute or percents.\nDo not show node names like N1, N3, or Node 1, Node 2.\nDo not suggest low-level runtime optimisations, focus on the user code.\n\nAlways use full function names.\nNever split function and package name.\n\nRemove any numeric values, absolute or percents, from the output.\nRemove node names like N1, N3, or Node 1, Node 2 from the output.\n\nIf the function is widely known (e.g., a runtime or stdlib function), provide me concise explanation why the function is present in the profile and what could be the cause.\nIf a function is defined in the runtime or in the standard library, tell me which function in the user code calls it.\nAvoid mentioning functions from the same call-chain.\n\n5 suggestions is enough.\nThe profile type is ${e}\nBelow is the performance profile in DOT format:\n${t[0]}\n`,diff:(e,t)=>`\nAnalyze the differences between these two performance profiles presented in DOT format. Provide a detailed comparison focusing on the following aspects:\n\n- Performance Change: Determine how the performance has changed from the first profile to the second. Identify if there are new bottlenecks, improved or worsened performance areas, or significant changes in resource consumption.\n- Function Impact: Highlight no more than 3 specific functions that have undergone notable changes in their performance impact. Discuss any new functions that have appeared in the second profile or any existing functions that have significantly increased or decreased in resource usage.\n- Potential Causes: Discuss the possible reasons for these changes in performance, linking them to the differences in function execution or resource usage between the two profiles.\n\nGuidelines for Analysis:\n- Use full function names without separating them from their package names\n- Focus on user code rather than low-level runtime optimizations or standard library functions unless they are directly relevant to the user code's performance changes\n- Exclude numeric values, percentages, and node names (e.g., N1, N3, Node 1, Node 2) from the analysis\n- Format the response using markdown headers for each section to structure the analysis clearly\n\nThe profile type is: ${e}\n\nFirst performance profile in DOT format:\n${t[0]}\n\nSecond performance profile in DOT format:\n${t[1]}\n`}},eM=({system:e,user:t,profileType:n,profiles:r})=>{const i=ZL.system[e];if("function"!=typeof i)throw new Error(`Cannot find system prompt "${e}"!`);const a=ZL.user[t];if("function"!=typeof a)throw new Error(`Cannot find user prompt "${t}"!`);return{system:i(n,r),user:a(n,r)}};function tM(e,t,n,r,i,a,o){try{var s=e[a](o),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,i)}class nM extends QC{get(e){var t,n=this;return(t=function*(){const t=new URLSearchParams({query:e.query,from:String(1e3*e.timeRange.from.unix()),until:String(1e3*e.timeRange.to.unix()),format:e.format});e.maxNodes&&t.set("max-nodes",String(e.maxNodes));const r=yield n.fetch(`/pyroscope/render?${t.toString()}`);switch(e.format){case"dot":return r.text();case"json":return r.json();default:throw new TypeError(`Unknown format "${e.format}"!`)}},function(){var e=this,n=arguments;return new Promise((function(r,i){var a=t.apply(e,n);function o(e){tM(a,r,i,o,s,"next",e)}function s(e){tM(a,r,i,o,s,"throw",e)}o(void 0)}))})()}constructor(e){super(e)}}function rM(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class iM extends bh{validateFetchParams(e,t){let n,r=t;return e&&2!==t.length?(n=new Error(`Invalid number of fetch parameters for analyzing the diff flame graph (${t.length})!`),r=[]):e||1===t.length||(n=new Error(`Invalid number of fetch parameters for analyzing the flame graph (${t.length})!`),r=[]),{params:r,error:n}}constructor(){super({key:"ai-panel"}),rM(this,"useSceneAiPanel",((e,t)=>{const n=tm.findByKeyAndType(this,"dataSource",sR).useState().value,{params:r,error:i}=this.validateFetchParams(e,t),{error:a,isFetching:o,profiles:s}=function(e,t){const n=vj.build(e,nM),{isFetching:r,error:i,data:a}=Pa({queryKey:["dot-profiles",e,...t.flatMap((({query:e,timeRange:t})=>[e,t.from.unix(),t.to.unix()])),100],queryFn:()=>Promise.all(t.map((({query:e,timeRange:t})=>n.get({query:e,timeRange:t,format:"dot",maxNodes:100}).then((e=>e.replace(/fontsize=\d+ /g,"").replace(/id="node\d+" /g,"").replace(/labeltooltip=".*\)" /g,"").replace(/tooltip=".*\)" /g,"").replace(/(N\d+ -> N\d+).*/g,"$1").replace(/N\d+ \[label="other.*\n/,"").replace(/shape=box /g,"").replace(/fillcolor="#\w{6}"/g,"").replace(/color="#\w{6}" /g,""))))))});return{isFetching:r,error:i,profiles:a||[]}}(n,r),l=WP(wR(this,"profileMetricId")).type,{reply:c,error:u,retry:d}=function(e,t){const[n,r]=(0,Fi.useState)(""),[i,a]=(0,Fi.useState)(!1),[o,s]=(0,Fi.useState)(!1),[l,c]=(0,Fi.useState)([]),[u,d]=(0,Fi.useState)(null),[p,h]=(0,Fi.useState)(),f=(0,Fi.useCallback)((e=>{c(e),d(null),r(""),a(!0),s(!1);const t=JL({model:"gpt-4-1106-preview",messages:e}).pipe(XL()).subscribe({next:r,error(e){d(e),a(!1),s(!0),h(void 0)},complete(){a(!1),s(!0),h(void 0)}});h(t)}),[]),m=(0,Fi.useCallback)((e=>{const t=[{role:"assistant",content:n},{role:"user",content:e}];try{f([...l,...t])}catch(e){d(e)}}),[l,n,f]);return(0,Fi.useEffect)((()=>{if(!t.length||l.length>0)return;const n=eM({system:"empty",user:2===t.length?"diff":"single",profileType:e,profiles:t});try{f([{role:"system",content:n.system},{role:"system",content:n.user}])}catch(e){d(e)}}),[l.length,e,t,t.length,f]),(0,Fi.useEffect)((()=>()=>{p&&(p.unsubscribe(),h(void 0))}),[p]),{reply:{text:n,hasStarted:i,hasFinished:o,messages:l,askFollowupQuestion:m},retry(){if(l.length>0)try{f(l)}catch(e){d(e)}},error:u}}(l,s);return{data:{validationError:i,isLoading:o||!o&&!a&&!u&&!c.text.trim(),fetchError:a,llmError:u,reply:c,shouldDisplayReply:Boolean((null==c?void 0:c.hasStarted)||(null==c?void 0:c.hasFinished)),shouldDisplayFollowUpForm:!a&&!u&&Boolean(null==c?void 0:c.hasFinished)},actions:{retry:d,submitFollowupQuestion(e){c.askFollowupQuestion(e)}}}}))}}rM(iM,"Component",(({model:e,isDiff:t,fetchParams:n,onClose:r})=>{const i=(0,o.useStyles2)(aM),{data:a,actions:s}=e.useSceneAiPanel(t,n);return $i().createElement(LI,{className:i.sidePanel,title:"Flame graph analysis",isLoading:a.isLoading,headerActions:$i().createElement(o.IconButton,{title:"Close panel",name:"times-circle",variant:"secondary","aria-label":"close",onClick:r}),dataTestId:"ai-panel"},$i().createElement("div",{className:i.content},a.validationError&&$i().createElement(pI,{severity:"error",title:"Validation error!",error:a.validationError}),a.fetchError&&$i().createElement(pI,{severity:"error",title:"Error while loading profile data!",message:"Sorry for any inconvenience, please try again later.",error:a.fetchError}),a.shouldDisplayReply&&$i().createElement(ML,{reply:a.reply}),a.isLoading&&$i().createElement($i().Fragment,null,$i().createElement(o.Spinner,{inline:!0})," Analyzing..."),a.llmError&&$i().createElement(o.Alert,{title:"An error occured while generating content using OpenAI!",severity:"warning"},$i().createElement("div",null,$i().createElement("div",null,$i().createElement("p",null,a.llmError.message),$i().createElement("p",null,"Sorry for any inconvenience, please retry or if the problem persists, contact your organization admin."))),$i().createElement(o.Button,{className:i.retryButton,variant:"secondary",fill:"outline",onClick:()=>s.retry()},"Retry")),a.shouldDisplayFollowUpForm&&$i().createElement(BL,{onSubmit:s.submitFollowupQuestion})))}));const aM=e=>({sidePanel:i.css` flex: 1 0 50%; margin-left: 8px; max-width: calc(50% - 4px); @@ -587,7 +587,7 @@ define(["@emotion/css","@grafana/data","@grafana/runtime","@grafana/ui","d3","lo padding: ${e.spacing(1)}; `,retryButton:i.css` float: right; - `});class dM extends r.BusEventWithPayload{}!function(e,t,n){t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n}(dM,"type","diff-auto-select");class pM extends r.BusEventWithPayload{}function hM(){const{searchParams:e,pushNewUrl:t}=function(){const e=(0,Es.useNavigate)(),t=(0,Es.useLocation)();return{searchParams:new URLSearchParams(t.search),pushNewUrl:t=>{const n=new URLSearchParams(window.location.search);for(const[e,r]of Object.entries(t))n.set(e,r);e({search:n.toString()},{replace:!0})}}}();var n;const r=Number(null!==(n=e.get("maxNodes"))&&void 0!==n?n:""),i=e=>{t({maxNodes:String(e)})};return function(e,t){const{isFetching:n,error:r,settings:i}=dI({enabled:!e});if(!e&&!n)r?(js(["Error while retrieving the plugin settings!","Some features might not work as expected (e.g. flame graph max nodes). Please try to reload the page, sorry for the inconvenience."]),Xi.error(r),t(oI.maxNodes)):t(i.maxNodes)}(r>0,i),[r,i]}function fM(e,t,n,r,i,a,o){try{var s=e[a](o),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,i)}!function(e,t,n){t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n}(pM,"type","diff-choose-preset");class mM extends QC{get(e){var t,n=this;return(t=function*(){const t=new URLSearchParams({leftQuery:e.leftQuery,leftFrom:String(1e3*e.leftTimeRange.from.unix()),leftUntil:String(1e3*e.leftTimeRange.to.unix()),rightQuery:e.rightQuery,rightFrom:String(1e3*e.rightTimeRange.from.unix()),rightUntil:String(1e3*e.rightTimeRange.to.unix())});e.maxNodes&&t.set("max-nodes",String(e.maxNodes));const r=yield n.fetch(`/pyroscope/render-diff?${t.toString()}`);return yield r.json()},function(){var e=this,n=arguments;return new Promise((function(r,i){var a=t.apply(e,n);function o(e){fM(a,r,i,o,s,"next",e)}function s(e){fM(a,r,i,o,s,"throw",e)}o(void 0)}))})()}constructor(e){super(e)}}function gM(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function yM(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})),e}function bM({enabled:e,dataSourceUid:t,baselineTimeRange:n,baselineQuery:r,comparisonTimeRange:i,comparisonQuery:a}){const[o]=hM(),s=vj.build(t,mM),{isFetching:l,error:c,data:u,refetch:d}=Pa({placeholderData:e=>e,enabled:Boolean(e&&o),queryKey:["diff-profile",t,r,n.from.unix(),n.to.unix(),a,i.from.unix(),i.to.unix(),o],queryFn:()=>{s.abort();const e={leftQuery:r,leftTimeRange:n,rightQuery:a,rightTimeRange:i,maxNodes:o};return s.get(e).then((e=>({profile:{version:e.version,flamebearer:e.flamebearer,metadata:e.metadata}})))}});return yM(function(e){for(var t=1;t{i||n(),a(!i)}},$i().createElement("div",{className:r.collapseContent},$i().createElement("ol",null,$i().createElement("li",null,"Ensure that the “Flame graph” range selection mode is selected"),$i().createElement("li",null,"Use your mouse to select the desired time ranges on both the baseline and the comparison time series")),$i().createElement("img",{src:"public/plugins/grafana-pyroscope-app/img/8cdf4d2e2df8326311ab.gif",alt:"How to view the diff flame graph"}))))})}const wM=e=>({infoMsg:i.css` + `});class oM extends r.BusEventWithPayload{}!function(e,t,n){t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n}(oM,"type","diff-auto-select");class sM extends r.BusEventWithPayload{}function lM(){const{searchParams:e,pushNewUrl:t}=function(){const e=(0,Es.useNavigate)(),t=(0,Es.useLocation)();return{searchParams:new URLSearchParams(t.search),pushNewUrl:t=>{const n=new URLSearchParams(window.location.search);for(const[e,r]of Object.entries(t))n.set(e,r);e({search:n.toString()},{replace:!0})}}}();var n;const r=Number(null!==(n=e.get("maxNodes"))&&void 0!==n?n:""),i=e=>{t({maxNodes:String(e)})};return function(e,t){const{isFetching:n,error:r,settings:i}=dI({enabled:!e});if(!e&&!n)r?(js(["Error while retrieving the plugin settings!","Some features might not work as expected (e.g. flame graph max nodes). Please try to reload the page, sorry for the inconvenience."]),Xi.error(r),t(oI.maxNodes)):t(i.maxNodes)}(r>0,i),[r,i]}function cM(e,t,n,r,i,a,o){try{var s=e[a](o),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,i)}!function(e,t,n){t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n}(sM,"type","diff-choose-preset");class uM extends QC{get(e){var t,n=this;return(t=function*(){const t=new URLSearchParams({leftQuery:e.leftQuery,leftFrom:String(1e3*e.leftTimeRange.from.unix()),leftUntil:String(1e3*e.leftTimeRange.to.unix()),rightQuery:e.rightQuery,rightFrom:String(1e3*e.rightTimeRange.from.unix()),rightUntil:String(1e3*e.rightTimeRange.to.unix())});e.maxNodes&&t.set("max-nodes",String(e.maxNodes));const r=yield n.fetch(`/pyroscope/render-diff?${t.toString()}`);return yield r.json()},function(){var e=this,n=arguments;return new Promise((function(r,i){var a=t.apply(e,n);function o(e){cM(a,r,i,o,s,"next",e)}function s(e){cM(a,r,i,o,s,"throw",e)}o(void 0)}))})()}constructor(e){super(e)}}function dM(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function pM(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})),e}function hM({enabled:e,dataSourceUid:t,baselineTimeRange:n,baselineQuery:r,comparisonTimeRange:i,comparisonQuery:a}){const[o]=lM(),s=vj.build(t,uM),{isFetching:l,error:c,data:u,refetch:d}=Pa({placeholderData:e=>e,enabled:Boolean(e&&o),queryKey:["diff-profile",t,r,n.from.unix(),n.to.unix(),a,i.from.unix(),i.to.unix(),o],queryFn:()=>{s.abort();const e={leftQuery:r,leftTimeRange:n,rightQuery:a,rightTimeRange:i,maxNodes:o};return s.get(e).then((e=>({profile:{version:e.version,flamebearer:e.flamebearer,metadata:e.metadata}})))}});return pM(function(e){for(var t=1;t{i||n(),a(!i)}},$i().createElement("div",{className:r.collapseContent},$i().createElement("ol",null,$i().createElement("li",null,"Ensure that the “Flame graph” range selection mode is selected"),$i().createElement("li",null,"Use your mouse to select the desired time ranges on both the baseline and the comparison time series")),$i().createElement("img",{src:"public/plugins/grafana-pyroscope-app/img/8cdf4d2e2df8326311ab.gif",alt:"How to view the diff flame graph"}))))})}const mM=e=>({infoMsg:i.css` padding: ${e.spacing(2)} 0 0 0; `,textButton:i.css` padding: 0; @@ -602,7 +602,7 @@ define(["@emotion/css","@grafana/data","@grafana/runtime","@grafana/ui","d3","lo width: auto; margin-top: ${e.spacing(2)}; } - `});function SM(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class EM extends bh{buildTitle(){const e=wR(this,"serviceName"),t=WP(wR(this,"profileMetricId")).type;return $i().createElement($i().Fragment,null,$i().createElement(Ko,{size:"small"}),"Diff flame graph for ",e," (",t,")")}constructor(){super({key:"diff-flame-graph",aiPanel:new cM}),SM(this,"useSceneDiffFlameGraph",(()=>{const{aiPanel:e}=this.useState(),{baselineTimeRange:t,comparisonTimeRange:n}=this.parent.useDiffTimeRanges(),r=oR(this,"filtersBaseline"),i=oR(this,"filtersComparison"),{settings:a,error:o}=dI(),s=tm.findByKeyAndType(this,"dataSource",sR).useState().value,l=Boolean(r&&i&&t.from.unix()&&t.to.unix()&&n.from.unix()&&n.to.unix()),{isFetching:c,error:u,profile:d}=bM({enabled:l,dataSourceUid:s,baselineTimeRange:t,baselineQuery:r,comparisonTimeRange:n,comparisonQuery:i}),p=l&&!c&&!u&&0===(null==d?void 0:d.flamebearer.numTicks),h=Boolean(l&&!u&&!p&&d),f=!l;return{data:{title:this.buildTitle(),isLoading:c,fetchProfileError:u,noProfileDataAvailable:p,shouldDisplayFlamegraph:h,hasMissingSelections:f,profile:d,settings:a,fetchSettingsError:o,ai:{panel:e,fetchParams:[{query:r,timeRange:t},{query:i,timeRange:n}]}},actions:{}}})),SM(this,"onClickAutoSelect",(()=>{Ts("g_pyroscope_app_diff_auto_select_clicked"),this.publishEvent(new dM({wholeRange:!1}),!0)})),SM(this,"onClickChoosePreset",(()=>{Ts("g_pyroscope_app_diff_choose_preset_clicked"),this.publishEvent(new pM({}),!0)})),SM(this,"onOpenLearnHow",(()=>{Ts("g_pyroscope_app_diff_learn_how_clicked")}))}}SM(EM,"Component",(({model:e})=>{var t,n;const r=(0,o.useStyles2)(xM),{data:i}=e.useSceneDiffFlameGraph(),a=iI(),s=i.isLoading||i.hasMissingSelections||i.noProfileDataAvailable;(0,Fi.useEffect)((()=>{s&&a.close()}),[s,a]),i.fetchSettingsError&&js(["Error while retrieving the plugin settings!","Some features might not work as expected (e.g. flamegraph export options). Please try to reload the page, sorry for the inconvenience."]);const l=(0,Fi.useMemo)((()=>$i().createElement($i().Fragment,null,i.title,i.isLoading&&$i().createElement(o.Spinner,{inline:!0,className:r.spinner}))),[i.isLoading,i.title,r.spinner]);return $i().createElement("div",{className:r.flex},$i().createElement(LI,{dataTestId:"diff-flame-graph-panel",className:r.flamegraphPanel,title:l,isLoading:i.isLoading,headerActions:$i().createElement(iN,{disabled:s||a.isOpen("ai"),onClick:()=>a.open("ai"),interactionName:"g_pyroscope_app_explain_flamegraph_clicked"},"Explain Flame Graph")},i.hasMissingSelections&&$i().createElement(vM,{onClickAutoSelect:e.onClickAutoSelect,onClickChoosePreset:e.onClickChoosePreset,onOpenLearnHow:e.onOpenLearnHow}),i.fetchProfileError&&$i().createElement(pI,{severity:"error",title:"Error while loading profile data!",error:i.fetchProfileError}),i.noProfileDataAvailable&&$i().createElement(pI,{severity:"warning",title:"No profile data available",message:"Please verify that you've selected adequate filters and time ranges."}),i.shouldDisplayFlamegraph&&$i().createElement(mp,{diff:!0,profile:i.profile,enableFlameGraphDotComExport:null===(t=i.settings)||void 0===t?void 0:t.enableFlameGraphDotComExport,collapsedFlamegraphs:null===(n=i.settings)||void 0===n?void 0:n.collapsedFlamegraphs})),a.isOpen("ai")&&$i().createElement(i.ai.panel.Component,{model:i.ai.panel,isDiff:!0,fetchParams:i.ai.fetchParams,onClose:a.close}))}));const xM=e=>({flex:i.css` + `});function gM(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class yM extends bh{buildTitle(){const e=wR(this,"serviceName"),t=WP(wR(this,"profileMetricId")).type;return $i().createElement($i().Fragment,null,$i().createElement(Ko,{size:"small"}),"Diff flame graph for ",e," (",t,")")}constructor(){super({key:"diff-flame-graph",aiPanel:new iM}),gM(this,"useSceneDiffFlameGraph",(()=>{const{aiPanel:e}=this.useState(),{baselineTimeRange:t,comparisonTimeRange:n}=this.parent.useDiffTimeRanges(),r=oR(this,"filtersBaseline"),i=oR(this,"filtersComparison"),{settings:a,error:o}=dI(),s=tm.findByKeyAndType(this,"dataSource",sR).useState().value,l=Boolean(r&&i&&t.from.unix()&&t.to.unix()&&n.from.unix()&&n.to.unix()),{isFetching:c,error:u,profile:d}=hM({enabled:l,dataSourceUid:s,baselineTimeRange:t,baselineQuery:r,comparisonTimeRange:n,comparisonQuery:i}),p=l&&!c&&!u&&0===(null==d?void 0:d.flamebearer.numTicks),h=Boolean(l&&!u&&!p&&d),f=!l;return{data:{title:this.buildTitle(),isLoading:c,fetchProfileError:u,noProfileDataAvailable:p,shouldDisplayFlamegraph:h,hasMissingSelections:f,profile:d,settings:a,fetchSettingsError:o,ai:{panel:e,fetchParams:[{query:r,timeRange:t},{query:i,timeRange:n}]}},actions:{}}})),gM(this,"onClickAutoSelect",(()=>{Ts("g_pyroscope_app_diff_auto_select_clicked"),this.publishEvent(new oM({wholeRange:!1}),!0)})),gM(this,"onClickChoosePreset",(()=>{Ts("g_pyroscope_app_diff_choose_preset_clicked"),this.publishEvent(new sM({}),!0)})),gM(this,"onOpenLearnHow",(()=>{Ts("g_pyroscope_app_diff_learn_how_clicked")}))}}gM(yM,"Component",(({model:e})=>{var t,n;const r=(0,o.useStyles2)(bM),{data:i}=e.useSceneDiffFlameGraph(),a=iI(),s=i.isLoading||i.hasMissingSelections||i.noProfileDataAvailable;(0,Fi.useEffect)((()=>{s&&a.close()}),[s,a]),i.fetchSettingsError&&js(["Error while retrieving the plugin settings!","Some features might not work as expected (e.g. flamegraph export options). Please try to reload the page, sorry for the inconvenience."]);const l=(0,Fi.useMemo)((()=>$i().createElement($i().Fragment,null,i.title,i.isLoading&&$i().createElement(o.Spinner,{inline:!0,className:r.spinner}))),[i.isLoading,i.title,r.spinner]);return $i().createElement("div",{className:r.flex},$i().createElement(LI,{dataTestId:"diff-flame-graph-panel",className:r.flamegraphPanel,title:l,isLoading:i.isLoading,headerActions:$i().createElement(VI,{disabled:s||a.isOpen("ai"),onClick:()=>a.open("ai"),interactionName:"g_pyroscope_app_explain_flamegraph_clicked"},"Explain Flame Graph")},i.hasMissingSelections&&$i().createElement(fM,{onClickAutoSelect:e.onClickAutoSelect,onClickChoosePreset:e.onClickChoosePreset,onOpenLearnHow:e.onOpenLearnHow}),i.fetchProfileError&&$i().createElement(pI,{severity:"error",title:"Error while loading profile data!",error:i.fetchProfileError}),i.noProfileDataAvailable&&$i().createElement(pI,{severity:"warning",title:"No profile data available",message:"Please verify that you've selected adequate filters and time ranges."}),i.shouldDisplayFlamegraph&&$i().createElement(mp,{diff:!0,profile:i.profile,enableFlameGraphDotComExport:null===(t=i.settings)||void 0===t?void 0:t.enableFlameGraphDotComExport,collapsedFlamegraphs:null===(n=i.settings)||void 0===n?void 0:n.collapsedFlamegraphs})),a.isOpen("ai")&&$i().createElement(i.ai.panel.Component,{model:i.ai.panel,isDiff:!0,fetchParams:i.ai.fetchParams,onClose:a.close}))}));const bM=e=>({flex:i.css` display: flex; `,flamegraphPanel:i.css` min-width: 0; @@ -615,14 +615,14 @@ define(["@emotion/css","@grafana/data","@grafana/runtime","@grafana/ui","d3","lo margin-left: ${e.spacing(1)}; `,aiButton:i.css` margin-top: ${e.spacing(1)}; - `}),OM="https://grafana.qualtrics.com/jfe/form/SV_6Gav4IUU6jcYfd4",_M=()=>{const e=(0,o.useStyles2)(TM);return $i().createElement("div",{className:e.wrapper},$i().createElement("a",{href:OM,className:e.feedback,title:"Share your thoughts about Profiles in Grafana.",target:"_blank",rel:"noreferrer noopener"},$i().createElement(o.Icon,{name:"comment-alt-message"})," Give feedback"))},TM=e=>({wrapper:(0,i.css)({display:"flex",gap:e.spacing(1),justifyContent:"flex-end",paddingTop:"4px"}),feedback:(0,i.css)({alignSelf:"center",color:e.colors.text.secondary,fontSize:e.typography.bodySmall.fontSize,"&:hover":{color:e.colors.text.link}})});function CM(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class kM extends bh{onActivate(){[np.BASELINE,np.COMPARISON].forEach((e=>{this._subs.add(tm.findByKeyAndType(this,`${e}-panel`,nI).state.$timeRange.subscribeToState(((e,t)=>{e.from===t.from&&e.to===t.to||this.setState({value:null})})))}))}openSelect(){this.setState({isSelectOpen:!0})}closeSelect(){this.setState({isSelectOpen:!1})}reset(){this.setState({value:null,isSelectOpen:!1,isModalOpen:!1})}static Component({model:e}){const t=(0,o.useStyles2)(PM),{value:n,isSelectOpen:r,isModalOpen:i}=e.useState();return $i().createElement($i().Fragment,null,$i().createElement("div",{className:t.presetsContainer},$i().createElement(o.Select,{className:t.select,placeholder:"Choose a preset",value:n,options:kM.PRESETS,onChange:e.onChangePreset,isOpen:r,onOpenMenu:e.onOpenSelect,onCloseMenu:e.onCloseSelect}),$i().createElement(o.Button,{icon:"save",variant:"secondary",tooltip:"Save the current time ranges and filters as a custom preset",onClick:e.onClickSave})),$i().createElement(o.Modal,{title:"Custom user presets",isOpen:i,closeOnEscape:!0,closeOnBackdropClick:!0,onDismiss:e.closeModal},$i().createElement("p",null,"This feature, which would allow you to save the current time ranges and filters, is currently not implemented."),$i().createElement("p",null,"Please let us know if you would be interested to use it by"," ",$i().createElement("a",{href:OM,target:"_blank",rel:"noreferrer noopener",className:t.link},"leaving us your feedback.")),$i().createElement("p",null,"Thank you!"),$i().createElement(o.Modal.ButtonRow,null,$i().createElement(o.Button,{variant:"secondary",fill:"outline",onClick:e.closeModal},"Cancel"),$i().createElement(o.Button,{onClick:e.closeModal,disabled:!0},"Save"))))}constructor(){super({name:"compare-presets",label:"Comparison presets",value:null,isModalOpen:!1,isSelectOpen:!1}),CM(this,"_variableDependency",new im(this,{variableNames:["dataSource","serviceName"],onReferencedVariableValueChanged:()=>{this.reset()}})),CM(this,"onChangePreset",(e=>{var t;if(Ts("g_pyroscope_app_diff_preset_selected",{value:e.value}),this.closeSelect(),"dummy"!==e.value){if(null===(t=e.value)||void 0===t?void 0:t.startsWith("auto-select-"))return this.setState({value:null}),void this.publishEvent(new dM({wholeRange:"auto-select-whole"===e.value}),!0);[np.BASELINE,np.COMPARISON].forEach((t=>{const n=tm.findByKeyAndType(this,`${t}-panel`,nI);n.toggleTimeRangeSync(!1),n.applyPreset(e[t])})),this.setState({value:e.value})}else this.setState({value:null,isModalOpen:!0})})),CM(this,"onClickSave",(()=>{Ts("g_pyroscope_app_diff_preset_save_clicked"),this.setState({isModalOpen:!0})})),CM(this,"closeModal",(()=>{this.setState({isModalOpen:!1})})),CM(this,"onOpenSelect",(()=>{setTimeout((()=>this.openSelect()),0)})),CM(this,"onCloseSelect",(()=>{this.closeSelect()})),this.addActivationHandler(this.onActivate.bind(this))}}CM(kM,"PRESETS",[{label:"Built-in presets",value:"built-in",options:[{value:"last hour (30m-window)",label:"Last hour (30m-window)",baseline:{from:"now-1h",to:"now",diffFrom:"now-1h",diffTo:"now-30m",label:"last hour"},comparison:{from:"now-1h",to:"now",diffFrom:"now-30m",diffTo:"now",label:"last hour"}},{value:"last hour (1h-window)",label:"Last hour (1h-window)",baseline:{from:"now-1h",to:"now",diffFrom:"now-1h",diffTo:"now",label:"last hour"},comparison:{from:"now-1h",to:"now",diffFrom:"now-1h",diffTo:"now",label:"last hour"}},{value:"6h ago vs now",label:"6h ago vs now (30m-window)",baseline:{from:"now-375m",to:"now-315m",diffFrom:"now-375m",diffTo:"now-345m",label:"6h ago"},comparison:{from:"now-1h",to:"now",diffFrom:"now-30m",diffTo:"now",label:"last hour"}},{value:"24h ago vs now",label:"24h ago vs now (30m-window)",baseline:{from:"now-1455m",to:"now-1395m",diffFrom:"now-1455m",diffTo:"now-1425m",label:"24h ago"},comparison:{from:"now-1h",to:"now",diffFrom:"now-30m",diffTo:"now",label:"last hour"}},{value:"auto-select-25",label:"Auto-select (25% range)"},{value:"auto-select-whole",label:"Auto-select (whole range)"}]},{label:"My presets",value:"custom",options:[{label:"Dummy preset saved earlier",value:"dummy"}]}]);const PM=e=>({presetsContainer:i.css` + `}),vM="https://grafana.qualtrics.com/jfe/form/SV_6Gav4IUU6jcYfd4",wM=()=>{const e=(0,o.useStyles2)(SM);return $i().createElement("div",{className:e.wrapper},$i().createElement("a",{href:vM,className:e.feedback,title:"Share your thoughts about Profiles in Grafana.",target:"_blank",rel:"noreferrer noopener"},$i().createElement(o.Icon,{name:"comment-alt-message"})," Give feedback"))},SM=e=>({wrapper:(0,i.css)({display:"flex",gap:e.spacing(1),justifyContent:"flex-end",paddingTop:"4px"}),feedback:(0,i.css)({alignSelf:"center",color:e.colors.text.secondary,fontSize:e.typography.bodySmall.fontSize,"&:hover":{color:e.colors.text.link}})});function EM(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class xM extends bh{onActivate(){[np.BASELINE,np.COMPARISON].forEach((e=>{this._subs.add(tm.findByKeyAndType(this,`${e}-panel`,nI).state.$timeRange.subscribeToState(((e,t)=>{e.from===t.from&&e.to===t.to||this.setState({value:null})})))}))}openSelect(){this.setState({isSelectOpen:!0})}closeSelect(){this.setState({isSelectOpen:!1})}reset(){this.setState({value:null,isSelectOpen:!1,isModalOpen:!1})}static Component({model:e}){const t=(0,o.useStyles2)(OM),{value:n,isSelectOpen:r,isModalOpen:i}=e.useState();return $i().createElement($i().Fragment,null,$i().createElement("div",{className:t.presetsContainer},$i().createElement(o.Select,{className:t.select,placeholder:"Choose a preset",value:n,options:xM.PRESETS,onChange:e.onChangePreset,isOpen:r,onOpenMenu:e.onOpenSelect,onCloseMenu:e.onCloseSelect}),$i().createElement(o.Button,{icon:"save",variant:"secondary",tooltip:"Save the current time ranges and filters as a custom preset",onClick:e.onClickSave})),$i().createElement(o.Modal,{title:"Custom user presets",isOpen:i,closeOnEscape:!0,closeOnBackdropClick:!0,onDismiss:e.closeModal},$i().createElement("p",null,"This feature, which would allow you to save the current time ranges and filters, is currently not implemented."),$i().createElement("p",null,"Please let us know if you would be interested to use it by"," ",$i().createElement("a",{href:vM,target:"_blank",rel:"noreferrer noopener",className:t.link},"leaving us your feedback.")),$i().createElement("p",null,"Thank you!"),$i().createElement(o.Modal.ButtonRow,null,$i().createElement(o.Button,{variant:"secondary",fill:"outline",onClick:e.closeModal},"Cancel"),$i().createElement(o.Button,{onClick:e.closeModal,disabled:!0},"Save"))))}constructor(){super({name:"compare-presets",label:"Comparison presets",value:null,isModalOpen:!1,isSelectOpen:!1}),EM(this,"_variableDependency",new im(this,{variableNames:["dataSource","serviceName"],onReferencedVariableValueChanged:()=>{this.reset()}})),EM(this,"onChangePreset",(e=>{var t;if(Ts("g_pyroscope_app_diff_preset_selected",{value:e.value}),this.closeSelect(),"dummy"!==e.value){if(null===(t=e.value)||void 0===t?void 0:t.startsWith("auto-select-"))return this.setState({value:null}),void this.publishEvent(new oM({wholeRange:"auto-select-whole"===e.value}),!0);[np.BASELINE,np.COMPARISON].forEach((t=>{const n=tm.findByKeyAndType(this,`${t}-panel`,nI);n.toggleTimeRangeSync(!1),n.applyPreset(e[t])})),this.setState({value:e.value})}else this.setState({value:null,isModalOpen:!0})})),EM(this,"onClickSave",(()=>{Ts("g_pyroscope_app_diff_preset_save_clicked"),this.setState({isModalOpen:!0})})),EM(this,"closeModal",(()=>{this.setState({isModalOpen:!1})})),EM(this,"onOpenSelect",(()=>{setTimeout((()=>this.openSelect()),0)})),EM(this,"onCloseSelect",(()=>{this.closeSelect()})),this.addActivationHandler(this.onActivate.bind(this))}}EM(xM,"PRESETS",[{label:"Built-in presets",value:"built-in",options:[{value:"last hour (30m-window)",label:"Last hour (30m-window)",baseline:{from:"now-1h",to:"now",diffFrom:"now-1h",diffTo:"now-30m",label:"last hour"},comparison:{from:"now-1h",to:"now",diffFrom:"now-30m",diffTo:"now",label:"last hour"}},{value:"last hour (1h-window)",label:"Last hour (1h-window)",baseline:{from:"now-1h",to:"now",diffFrom:"now-1h",diffTo:"now",label:"last hour"},comparison:{from:"now-1h",to:"now",diffFrom:"now-1h",diffTo:"now",label:"last hour"}},{value:"6h ago vs now",label:"6h ago vs now (30m-window)",baseline:{from:"now-375m",to:"now-315m",diffFrom:"now-375m",diffTo:"now-345m",label:"6h ago"},comparison:{from:"now-1h",to:"now",diffFrom:"now-30m",diffTo:"now",label:"last hour"}},{value:"24h ago vs now",label:"24h ago vs now (30m-window)",baseline:{from:"now-1455m",to:"now-1395m",diffFrom:"now-1455m",diffTo:"now-1425m",label:"24h ago"},comparison:{from:"now-1h",to:"now",diffFrom:"now-30m",diffTo:"now",label:"last hour"}},{value:"auto-select-25",label:"Auto-select (25% range)"},{value:"auto-select-whole",label:"Auto-select (whole range)"}]},{label:"My presets",value:"custom",options:[{label:"Dummy preset saved earlier",value:"dummy"}]}]);const OM=e=>({presetsContainer:i.css` display: flex; `,select:i.css` min-width: ${e.spacing(24)}; text-align: left; `,link:i.css` color: ${e.colors.text.link}; - `});function RM(){return e=>{const t=new Map,n=e.subscribeToEvent(F_,(n=>{var r;const i=null===(r=n.payload.series)||void 0===r?void 0:r[0];(null==i?void 0:i.refId)?(t.set(i.refId,Math.max(...i.fields[1].values)),function(e,t){const n=tm.findAllObjects(e,(e=>e instanceof _b&&"timeseries"===e.state.pluginId));for(const e of n)e.clearFieldConfigCache(),e.setState({fieldConfig:(0,$c.merge)((0,$c.cloneDeep)(e.state.fieldConfig),{defaults:{max:t}})})}(e,Math.max(...t.values()))):Xi.warn("Missing refId! Cannot sync y-axis on the timeseries.",n.payload.series)}));return()=>{n.unsubscribe()}}}class AM extends bh{onActivate(){a.locationService.partial({},!0);const e=tm.findByKeyAndType(this,"profileMetricId",eR);return e.setState({query:eR.QUERY_SERVICE_NAME_DEPENDENT}),e.update(!0),this.subscribeToEvents(),()=>{e.setState({query:eR.QUERY_DEFAULT}),e.update(!0)}}subscribeToEvents(){this._subs.add(this.subscribeToEvent(dM,(e=>{const t=e.payload.wholeRange,{baselinePanel:n,comparisonPanel:r}=this.state;n.toggleTimeRangeSync(!1),r.toggleTimeRangeSync(!1),n.autoSelectDiffRange(t),r.autoSelectDiffRange(t)}))),this._subs.add(this.subscribeToEvent(pM,(()=>{this.state.presetsPicker.openSelect()}))),this._subs.add(this.subscribeToEvent(Pj,(e=>{const{source:t,enable:n,timeRange:r,annotationTimeRange:i}=e.payload,{baselinePanel:a,comparisonPanel:o}=this.state,s=t===np.BASELINE?o:a;n&&this.syncTimeRanges(s,r,i),o.toggleTimeRangeSync(n),a.toggleTimeRangeSync(n)}))),this._subs.add(this.subscribeToEvent(Aj,(e=>{const{source:t,timeRange:n,annotationTimeRange:r}=e.payload,{baselinePanel:i,comparisonPanel:a}=this.state,o=t===np.BASELINE?a:i;this.syncTimeRanges(o,n,r)}))),this._subs.add(this.subscribeToEvent(Rj,(e=>{const{source:t}=e.payload,{baselinePanel:n,comparisonPanel:r}=this.state;(t===np.BASELINE?r:n).refreshTimeseries()})))}syncTimeRanges(e,t,n){t&&e.setTimeRange(t),n&&e.setDiffRange({from:n.from.toISOString(),to:n.to.toISOString()})}getVariablesAndGridControls(){return{variables:[tm.findByKeyAndType(this,"serviceName",iR),tm.findByKeyAndType(this,"profileMetricId",eR),this.state.presetsPicker],gridControls:[]}}static Component({model:e}){const t=(0,o.useStyles2)(DM),{baselinePanel:n,comparisonPanel:r,body:i}=e.useState();return $i().createElement("div",{className:t.container},$i().createElement("div",{className:t.columns},$i().createElement(n.Component,{model:n}),$i().createElement(r.Component,{model:r})),$i().createElement(i.Component,{model:i}))}constructor({useAncestorTimeRange:e,clearDiffRange:t,baselineFilters:n,comparisonFilters:i}){super({key:"explore-diff-flame-graph",baselinePanel:new nI({target:np.BASELINE,useAncestorTimeRange:Boolean(e),clearDiffRange:Boolean(t),filters:n||[]}),comparisonPanel:new nI({target:np.COMPARISON,useAncestorTimeRange:Boolean(e),clearDiffRange:Boolean(t),filters:i||[]}),$behaviors:[new Ay({key:"metricCrosshairSync",sync:r.DashboardCursorSync.Crosshair}),RM()],body:new EM,presetsPicker:new kM}),function(e,t,n){t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n}(this,"useDiffTimeRanges",(()=>{const{baselinePanel:e,comparisonPanel:t}=this.state,{annotationTimeRange:n}=e.useDiffTimeRange(),{annotationTimeRange:r}=t.useDiffTimeRange();return{baselineTimeRange:n,comparisonTimeRange:r}})),this.addActivationHandler(this.onActivate.bind(this))}}const DM=e=>({container:i.css` + `});function _M(){return e=>{const t=new Map,n=e.subscribeToEvent(F_,(n=>{var r;const i=null===(r=n.payload.series)||void 0===r?void 0:r[0];(null==i?void 0:i.refId)?(t.set(i.refId,Math.max(...i.fields[1].values)),function(e,t){const n=tm.findAllObjects(e,(e=>e instanceof _b&&"timeseries"===e.state.pluginId));for(const e of n)e.clearFieldConfigCache(),e.setState({fieldConfig:(0,$c.merge)((0,$c.cloneDeep)(e.state.fieldConfig),{defaults:{max:t}})})}(e,Math.max(...t.values()))):Xi.warn("Missing refId! Cannot sync y-axis on the timeseries.",n.payload.series)}));return()=>{n.unsubscribe()}}}class TM extends bh{onActivate(){a.locationService.partial({},!0);const e=tm.findByKeyAndType(this,"profileMetricId",eR);return e.setState({query:eR.QUERY_SERVICE_NAME_DEPENDENT}),e.update(!0),this.subscribeToEvents(),()=>{e.setState({query:eR.QUERY_DEFAULT}),e.update(!0)}}subscribeToEvents(){this._subs.add(this.subscribeToEvent(oM,(e=>{const t=e.payload.wholeRange,{baselinePanel:n,comparisonPanel:r}=this.state;n.toggleTimeRangeSync(!1),r.toggleTimeRangeSync(!1),n.autoSelectDiffRange(t),r.autoSelectDiffRange(t)}))),this._subs.add(this.subscribeToEvent(sM,(()=>{this.state.presetsPicker.openSelect()}))),this._subs.add(this.subscribeToEvent(Pj,(e=>{const{source:t,enable:n,timeRange:r,annotationTimeRange:i}=e.payload,{baselinePanel:a,comparisonPanel:o}=this.state,s=t===np.BASELINE?o:a;n&&this.syncTimeRanges(s,r,i),o.toggleTimeRangeSync(n),a.toggleTimeRangeSync(n)}))),this._subs.add(this.subscribeToEvent(Aj,(e=>{const{source:t,timeRange:n,annotationTimeRange:r}=e.payload,{baselinePanel:i,comparisonPanel:a}=this.state,o=t===np.BASELINE?a:i;this.syncTimeRanges(o,n,r)}))),this._subs.add(this.subscribeToEvent(Rj,(e=>{const{source:t}=e.payload,{baselinePanel:n,comparisonPanel:r}=this.state;(t===np.BASELINE?r:n).refreshTimeseries()})))}syncTimeRanges(e,t,n){t&&e.setTimeRange(t),n&&e.setDiffRange({from:n.from.toISOString(),to:n.to.toISOString()})}getVariablesAndGridControls(){return{variables:[tm.findByKeyAndType(this,"serviceName",iR),tm.findByKeyAndType(this,"profileMetricId",eR),this.state.presetsPicker],gridControls:[]}}static Component({model:e}){const t=(0,o.useStyles2)(CM),{baselinePanel:n,comparisonPanel:r,body:i}=e.useState();return $i().createElement("div",{className:t.container},$i().createElement("div",{className:t.columns},$i().createElement(n.Component,{model:n}),$i().createElement(r.Component,{model:r})),$i().createElement(i.Component,{model:i}))}constructor({useAncestorTimeRange:e,clearDiffRange:t,baselineFilters:n,comparisonFilters:i}){super({key:"explore-diff-flame-graph",baselinePanel:new nI({target:np.BASELINE,useAncestorTimeRange:Boolean(e),clearDiffRange:Boolean(t),filters:n||[]}),comparisonPanel:new nI({target:np.COMPARISON,useAncestorTimeRange:Boolean(e),clearDiffRange:Boolean(t),filters:i||[]}),$behaviors:[new Ay({key:"metricCrosshairSync",sync:r.DashboardCursorSync.Crosshair}),_M()],body:new yM,presetsPicker:new xM}),function(e,t,n){t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n}(this,"useDiffTimeRanges",(()=>{const{baselinePanel:e,comparisonPanel:t}=this.state,{annotationTimeRange:n}=e.useDiffTimeRange(),{annotationTimeRange:r}=t.useDiffTimeRange();return{baselineTimeRange:n,comparisonTimeRange:r}})),this.addActivationHandler(this.onActivate.bind(this))}}const CM=e=>({container:i.css` width: 100%; display: flex; flex-direction: column; @@ -635,9 +635,9 @@ define(["@emotion/css","@grafana/data","@grafana/runtime","@grafana/ui","d3","lo & > div { flex: 1 1 0; } - `});function jM(e,t,n,r,i,a,o){try{var s=e[a](o),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,i)}function IM(e){return function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function o(e){jM(a,r,i,o,s,"next",e)}function s(e){jM(a,r,i,o,s,"throw",e)}o(void 0)}))}}class NM extends QC{githubLogin(e){var t=this;return IM((function*(){const n=yield t.fetch("/vcs.v1.VCSService/GithubLogin",{method:"POST",body:JSON.stringify({authorizationCode:e})});return yield n.json()}))()}githubApp(){var e=this;return IM((function*(){const t=yield e.fetch("/vcs.v1.VCSService/GithubApp",{method:"POST",body:JSON.stringify({})});return(yield t.json()).clientID}))()}}function LM(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class MM{isUserTokenExpired(e=0){return Date.now()>=this.expiry.getTime()-e}static decode(e){if(void 0===e||""===e)return;let t;try{t=atob(e)}catch(e){return void Xi.error(e,{info:"Failed to base64 decode GitSession value"})}const{payload:n,isLegacy:r}=MM.tryDecode(t);return r?new MM(e,864e13):new MM(n.metadata,Number(n.expiry))}static tryDecode(e){try{return{payload:JSON.parse(e),isLegacy:!1}}catch(e){return{payload:void 0,isLegacy:!0}}}constructor(e,t){LM(this,"oauthTokenMetadata",void 0),LM(this,"expiry",void 0),this.oauthTokenMetadata=e,this.expiry=new Date(t)}}function FM(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const $M="pyroscope_git_session";class BM{getCookie(){return this.syncCookieWithBrowser(),this.sessionCookie}setCookie(e){e.startsWith(`${$M}=`)||(e=`${$M}=${e}`);const t=BM.getCookieFromJar(e,$M);void 0!==t&&(this.deleteLegacyCookie(),this.rawCookie=t,this.sessionCookie=MM.decode(t.value),document.cookie=`${e}; path=/`)}deleteCookie(){document.cookie=`${$M}=; Path=/; expires=Thu, 01 Jan 1970 00:00:00 UTC;`,this.deleteLegacyCookie(),this.rawCookie=void 0,this.sessionCookie=void 0}deleteLegacyCookie(){document.cookie="GitSession=; Path=/; expires=Thu, 01 Jan 1970 00:00:00 UTC;"}syncCookieWithBrowser(){var e,t;const n=BM.getCookieFromJar(document.cookie,$M);(null==n?void 0:n.key)===(null===(e=this.rawCookie)||void 0===e?void 0:e.key)&&(null==n?void 0:n.value)===(null===(t=this.rawCookie)||void 0===t?void 0:t.value)||(void 0!==n?this.setCookie(`${n.key}=${n.value}`):this.deleteCookie())}static getCookieFromJar(e,t){return e.split(";").map((e=>{const[t,...n]=e.trim().split("="),r=n.join("=");return{key:t.trim(),value:null==r?void 0:r.trim()}})).find((({key:e})=>e===t))}constructor(){FM(this,"rawCookie",void 0),FM(this,"sessionCookie",void 0)}}const VM=new BM;const zM=800,UM=950;function qM(e,t){const n=function(e,t){const n=new URL("/login/oauth/authorize","https://github.com");return n.searchParams.set("client_id",e),n.searchParams.set("scope","repo"),n.searchParams.set("state",btoa(JSON.stringify({redirect_uri:window.location.origin,nonce:t}))),n.toString()}(e,t),{top:r}=window;var i,a;const o=(null!==(i=null==r?void 0:r.outerWidth)&&void 0!==i?i:0)/2+(null!==(a=null==r?void 0:r.screenX)&&void 0!==a?a:0)-zM/2;var s,l;const c=(null!==(s=null==r?void 0:r.outerHeight)&&void 0!==s?s:0)/2+(null!==(l=null==r?void 0:r.screenY)&&void 0!==l?l:0)-UM/2;return window.open(n,"GitHub Login",`toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width=${zM}, height=${UM}, top=${c}, left=${o}`)}function HM(e,t,n,r,i,a,o){try{var s=e[a](o),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,i)}function GM(){var e;return e=function*(e,t,n,r,i){if(r&&r.close(),null==n?void 0:n.isUserTokenExpired())try{return void(yield t.refresh())}catch(e){Xi.error(e,{info:"Failed to refresh GitHub user token"}),VM.deleteCookie()}try{i(qM(yield e.githubApp(),lF))}catch(e){Ds(e,["Failed to start login flow.",e.message])}},GM=function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function o(e){HM(a,r,i,o,s,"next",e)}function s(e){HM(a,r,i,o,s,"throw",e)}o(void 0)}))},GM.apply(this,arguments)}function WM(e,t,n,r,i,a,o){try{var s=e[a](o),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,i)}function QM(){var e;return e=function*(e,t,n){const r=t.get("code");if(!r)return"";const i=t.get("state");if(!i)throw new Error("Invalid state parameter!");let a;try{a=JSON.parse(atob(i))}catch(e){throw new Error("Invalid state parameter!")}if(a.nonce!==n)throw new Error("Invalid nonce parameter!");return(yield e.githubLogin(r)).cookie},QM=function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function o(e){WM(a,r,i,o,s,"next",e)}function s(e){WM(a,r,i,o,s,"throw",e)}o(void 0)}))},QM.apply(this,arguments)}function KM(e,t,n,r,i,a,o){try{var s=e[a](o),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,i)}function YM({vcsClient:e,externalWindow:t,setExternalWindow:n,setSessionCookie:r,nonce:i}){(0,Fi.useEffect)((()=>{const a=function(){var o,s=(o=function*(){if(t&&!t.closed){try{const a=function(e){try{return new URL(e.location.href).searchParams}catch(e){return null}}(t);if(null!==a){const o=yield function(e,t,n){return QM.apply(this,arguments)}(e,a,i);if(o)return r(o),t.close(),void n(null)}}catch(e){return Ds(e,["Error while login in with GitHub!",e.message]),t.close(),void n(null)}window.setTimeout(a,700)}else n(null)},function(){var e=this,t=arguments;return new Promise((function(n,r){var i=o.apply(e,t);function a(e){KM(i,n,r,a,s,"next",e)}function s(e){KM(i,n,r,a,s,"throw",e)}a(void 0)}))});return function(){return s.apply(this,arguments)}}();return t&&a(),()=>{t&&(t.close(),n(null))}}),[t,n,r,i,e])}function XM(e,t,n,r,i,a,o){try{var s=e[a](o),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,i)}function JM(e){return function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function o(e){XM(a,r,i,o,s,"next",e)}function s(e){XM(a,r,i,o,s,"throw",e)}o(void 0)}))}}const ZM={isLoginInProgress:!1,isLoggedIn:!1,isSessionExpired:!1,login:JM((function*(){}))},eF=(0,Fi.createContext)(ZM);function tF(e,t,n,r,i,a,o){try{var s=e[a](o),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,i)}function nF(e){return function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function o(e){tF(a,r,i,o,s,"next",e)}function s(e){tF(a,r,i,o,s,"throw",e)}o(void 0)}))}}function rF(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const iF=Object.freeze({sha:"",date:void 0,author:{login:"unknown author",avatarURL:""},message:"",URL:""});class aF extends QC{getFile(e,t,n,r){var i=this;return nF((function*(){return(yield i.postWithRefresh("/vcs.v1.VCSService/GetFile",JSON.stringify({repositoryURL:e,ref:t,localPath:n,rootPath:r}))).json()}))()}getCommits(e){var t=this;return nF((function*(){return yield Promise.all(e.map((({repositoryUrl:e,gitRef:n})=>e&&n?t.getCommit(e,n).catch((t=>(Xi.error(t,{info:`Error while fetching commit from repo "${e}" (${n})!'`}),iF))):iF)))}))()}refresh(){var e=this;return nF((function*(){return e.refreshSession()}))()}getCommit(e,t){var n=this;return nF((function*(){var r;const i=yield n.postWithRefresh("/vcs.v1.VCSService/GetCommit",JSON.stringify({repositoryURL:e,ref:t})),a=yield i.json();return(r=a).date&&(r.date=new Date(a.date)),a}))()}postWithRefresh(e,t){var n=this;return nF((function*(){var r;if(n.isRefreshing)return n.queueRequest(e,t);if(null===(r=n.sessionManager.getCookie())||void 0===r?void 0:r.isUserTokenExpired(aF.BIAS_MS)){n.isRefreshing=!0;try{yield n.refreshSession()}catch(e){n.sessionManager.deleteCookie(),n.flushQueue(e)}n.flushQueue(),n.isRefreshing=!1}return n.post(e,t)}))()}post(e,t){var n=this;return nF((function*(){return n.fetch(e,{method:"POST",body:t})}))()}refreshSession(){var e=this;return nF((function*(){const t=yield e.fetch("/vcs.v1.VCSService/GithubRefresh",{method:"POST",body:JSON.stringify({})}),n=yield t.json();e.sessionManager.setCookie(n.cookie)}))()}queueRequest(e,t){var n=this;return nF((function*(){return new Promise(((r,i)=>{n.pendingQueue.push((a=>{a?i(a):r(n.post(e,t))}))}))}))()}flushQueue(e=void 0){this.pendingQueue.forEach((t=>t(e))),this.pendingQueue=[]}constructor(e){super(e),rF(this,"sessionManager",void 0),rF(this,"pendingQueue",void 0),rF(this,"isRefreshing",void 0),this.sessionManager=VM,this.isRefreshing=!1,this.pendingQueue=[]}}function oF(e,t,n,r,i,a,o){try{var s=e[a](o),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,i)}function sF(e){return function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function o(e){oF(a,r,i,o,s,"next",e)}function s(e){oF(a,r,i,o,s,"throw",e)}o(void 0)}))}}rF(aF,"BIAS_MS",3e5);const lF=btoa(String.fromCharCode(...crypto.getRandomValues(new Uint8Array(32))));function cF({dataSourceUid:e,children:t}){const n=vj.build(e,NM),r=vj.build(e,aF),[i,a]=(0,Fi.useState)(ZM.isLoginInProgress),[o,s]=function(){const[e,t]=(0,Fi.useState)(VM.getCookie());return[e,e=>{e?(VM.setCookie(e),t(VM.getCookie())):(VM.deleteCookie(),t(void 0))}]}(),[l,c]=(0,Fi.useState)();(0,Fi.useEffect)((()=>{s("")}),[e]),YM({vcsClient:n,externalWindow:l,setExternalWindow:c,setSessionCookie:s,nonce:lF});const u=!!l&&!l.closed;u!==i&&a(u);const d=(0,Fi.useCallback)(sF((function*(){try{yield function(e,t,n,r,i){return GM.apply(this,arguments)}(n,r,o,l,c)}catch(e){Ds(e,["Failed to login to GitHub",e.message])}})),[n,r,o,l]);return $i().createElement(eF.Provider,{value:{isLoginInProgress:i,isLoggedIn:Boolean(o&&!o.isUserTokenExpired()),isSessionExpired:Boolean(null==o?void 0:o.isUserTokenExpired()),login:d}},t)}class uF extends r.BusEventWithPayload{}function dF(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function pF(e){for(var t=1;t`${e}${t}"${n}"`)).join(",");return kR(new cy({datasource:QP,queries:[pF({refId:"profile",queryType:"profile",profileTypeId:"$profileMetricId",labelSelector:`{${i},$filters}`,maxNodes:t},n&&{spanSelector:[n]})]}))}!function(e,t,n){t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n}(uF,"type","remove-span-selector");var fF=__webpack_require__(585);function mF(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function gF(e,t,n,r){var i,a=arguments.length,o=a<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(o=(a<3?i(o):a>3?i(t,n,o):i(t,n))||o);return a>3&&o&&Object.defineProperty(t,n,o),o}class yF extends fF.Message{constructor(e,t,n,r,i){super(),mF(this,"profile_typeID",void 0),mF(this,"label_selector",void 0),mF(this,"start",void 0),mF(this,"end",void 0),mF(this,"max_nodes",void 0),this.profile_typeID=e,this.label_selector=t,this.start=n,this.end=r,this.max_nodes=i}}function bF(e,t,n,r,i,a,o){try{var s=e[a](o),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,i)}function vF(e){return function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function o(e){bF(a,r,i,o,s,"next",e)}function s(e){bF(a,r,i,o,s,"throw",e)}o(void 0)}))}}gF([fF.Field.d(1,"string")],yF.prototype,"profile_typeID",void 0),gF([fF.Field.d(2,"string")],yF.prototype,"label_selector",void 0),gF([fF.Field.d(3,"int64")],yF.prototype,"start",void 0),gF([fF.Field.d(4,"int64")],yF.prototype,"end",void 0),gF([fF.Field.d(5,"int64")],yF.prototype,"max_nodes",void 0);class wF extends QC{static buildPprofRequest(e,t,n){const{profileMetricId:r,labelsSelector:i}=CR(e),a=1e3*t.from.unix(),o=1e3*t.to.unix(),s=new yF(r,i,a,o,n);return yF.encode(s).finish()}selectMergeProfile({query:e,timeRange:t,maxNodes:n}){var r=this;return vF((function*(){return(yield r.fetch("/querier.v1.QuerierService/SelectMergeProfile",{method:"POST",headers:{"content-type":"application/proto"},body:new Blob([wF.buildPprofRequest(e,t,n)])})).blob()}))()}selectMergeProfileJson({profileMetricId:e,labelsSelector:t,start:n,end:r,stackTrace:i,maxNodes:a}){var o=this;return vF((function*(){return(yield o.fetch("/querier.v1.QuerierService/SelectMergeProfile",{method:"POST",body:JSON.stringify({profile_typeID:e,label_selector:t,start:1e3*n,end:1e3*r,stackTraceSelector:{call_site:i.map((e=>({name:e})))},maxNodes:a})})).json()}))()}}function SF(e,t){const{serviceId:n,profileMetricId:r}=CR(e),i=`${t.from.format("YYYY-MM-DD_HHmm")}-to-${t.to.format("YYYY-MM-DD_HHmm")}`;return`${n.replace(/\//g,"-")}_${r}_${i}`}function EF(e,t,n,r,i,a,o){try{var s=e[a](o),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,i)}const xF=new class extends ca{upload(e,t){var n,r=this;return(n=function*(){const n=yield r.fetch("/upload/v1",{method:"POST",body:JSON.stringify({name:e,profile:btoa(JSON.stringify(t)),fileTypeData:{units:t.metadata.units,spyName:t.metadata.spyName},type:"json"})});return yield n.json()},function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function o(e){EF(a,r,i,o,s,"next",e)}function s(e){EF(a,r,i,o,s,"throw",e)}o(void 0)}))})()}constructor(){super("https://flamegraph.com/api",{"content-type":"application/json"})}};function OF(e,t,n,r,i,a,o){try{var s=e[a](o),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,i)}function _F(e){return function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function o(e){OF(a,r,i,o,s,"next",e)}function s(e){OF(a,r,i,o,s,"throw",e)}o(void 0)}))}}function TF(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class CF extends bh{fetchFlamebearerProfile({dataSourceUid:e,query:t,timeRange:n,maxNodes:r}){return _F((function*(){const i=vj.build(e,sM);let a;try{a=yield i.get({query:t,timeRange:n,format:"json",maxNodes:r||oI.maxNodes})}catch(e){return Ds(e,["Error while loading flamebearer profile data!",e.message]),null}return a}))()}fetchPprofProfile({dataSourceUid:e,query:t,timeRange:n,maxNodes:r}){return _F((function*(){const i=vj.build(e,wF);let a;try{const e=yield i.selectMergeProfile({query:t,timeRange:n,maxNodes:r||oI.maxNodes});a=yield new Response(e.stream().pipeThrough(new CompressionStream("gzip"))).blob()}catch(e){return Ds(e,["Failed to export to pprof!",e.message]),null}return a}))()}constructor(){super({key:"export-flame-graph-menu"}),TF(this,"useSceneExportMenu",(({query:e,timeRange:t})=>{const n=tm.findByKeyAndType(this,"dataSource",sR).useState().value,[r]=hM(),{settings:i}=dI();var a=this;const o=function(){var i=_F((function*(){Ts("g_pyroscope_app_export_profile",{format:"json"});const i=yield a.fetchFlamebearerProfile({dataSourceUid:n,query:e,timeRange:t,maxNodes:r});if(!i)return;const o=`${SF(e,t)}.json`,s=`data:text/json;charset=utf-8,${encodeURIComponent(JSON.stringify(i))}`;Zd()(s,o)}));return function(){return i.apply(this,arguments)}}();var s=this;const l=function(){var i=_F((function*(){Ts("g_pyroscope_app_export_profile",{format:"pprof"});const i=yield s.fetchPprofProfile({dataSourceUid:n,query:e,timeRange:t,maxNodes:r});if(!i)return;const a=`${SF(e,t)}.pb.gz`;Zd()(i,a)}));return function(){return i.apply(this,arguments)}}();var c=this;const u=function(){var i=_F((function*(){Ts("g_pyroscope_app_export_profile",{format:"flamegraph.com"});const i=yield c.fetchFlamebearerProfile({dataSourceUid:n,query:e,timeRange:t,maxNodes:r});if(i)try{const n=yield xF.upload(SF(e,t),i);if(!n.url)throw new Error("Empty URL received.");const r=document.createElement("a");r.target="_blank",r.href=n.url,document.body.appendChild(r),r.click(),document.body.removeChild(r)}catch(e){return void Ds(e,["Failed to export to flamegraph.com!",e.message])}}));return function(){return i.apply(this,arguments)}}();return{data:{shouldDisplayFlamegraphDotCom:Boolean(null==i?void 0:i.enableFlameGraphDotComExport)},actions:{downloadPng:()=>{Ts("g_pyroscope_app_export_profile",{format:"png"});const n=`${SF(e,t)}.png`;document.querySelector('canvas[data-testid="flameGraph"]').toBlob((e=>{if(e)Zd()(e,n);else{const e=new Error("Error while creating the image, no blob.");Ds(e,["Failed to export to png!",e.message])}}),"image/png")},downloadJson:o,downloadPprof:l,uploadToFlamegraphDotCom:u}}}))}}function kF(){return(0,Fi.useContext)(eF)}function PF(e){const{login:t,isSessionExpired:n}=kF(),{settings:i}=dI(),a=null==i?void 0:i.enableFunctionDetails,[o,s]=(0,Fi.useState)([]),l=(0,Fi.useCallback)((({item:i},o)=>a&&0!==i.level?[{label:"Function details",icon:"info-circle",onClick:()=>{Ts("g_pyroscope_app_function_details_clicked"),s(function(e,t){let n=[];const i=t.fields.find((({name:e})=>"label"===e));if(!i)return n;const a=(0,r.getDisplayProcessor)({field:i,theme:(0,r.createTheme)()});let o=e;for(;o&&o.level>0;){var s;for(const e of o.itemIndexes)n.unshift(a(i.values[e]).text);o=null===(s=o.parents)||void 0===s?void 0:s[0]}return n}(i,o)),e.open("function-details"),n&&t()}}]:[]),[a,n,t,e]);return{data:{stacktrace:o},actions:{getExtraFlameGraphMenuItems:l}}}TF(CF,"Component",(({model:e,query:t,timeRange:n})=>{const{actions:r}=e.useSceneExportMenu({query:t,timeRange:n});return $i().createElement(o.Dropdown,{overlay:$i().createElement(o.Menu,null,$i().createElement(o.Menu.Item,{label:"png",onClick:r.downloadPng}),$i().createElement(o.Menu.Item,{label:"json",onClick:r.downloadJson}),$i().createElement(o.Menu.Item,{label:"pprof",onClick:r.downloadPprof}))},$i().createElement(o.Button,{icon:"download-alt",size:"sm",variant:"secondary",fill:"outline","aria-label":"Export profile data",tooltip:"Export profile data"}))}));const RF="gpt-4-1106-preview",AF=({functionDetails:e,lines:t})=>{const n=`\nYou are a code optimization expert. I will give you code, each line annotated with amount of time spent on a particular line (it's in the beginning of each line), and a function name.\n\nI want you to write back a new improved code for this function and explain why you made changes.\n\nMake sure to take annotations into strong consideration. If a suggested performance improvement isn't backed up by information from the annotations, do not include it.\n\nDo not mention the actual numbers from the annotations, users can already see how much time was spent on each line. Do not list various lines and their time spent. When you mention functions or lines, do not mention the time spent on them.\n\nIf you can't find any meaningful performance optimizations, say so. Ask for context if you think other context might help make decisions. If you think the problem is with user input and not the actual code itself, say so.\n\nWhen you output code in markdown, please don't specify language after 3 backticks (e.g instead of saying "\`\`\`go" say "\`\`\`"), and always add a new line after 3 backticks.\n\nFunction name is \`${e.name}\`. Do not mention the function name, users can already see it.\n\nWhen posting a response, follow the outline below:\n* give a brief explanation of things that could be improve\n* print new code if it's possible\n* explain each change in more details\n\n\nAnnotated code is below:\n\`\`\`\n${function(e,t){let n=t.map((t=>`(${t.cum} ${e.unit}) ${t.line}`)).join("\n");return n}(e,t)}\n\`\`\`\n`;return{system:"",user:n}};function DF(e){const{reply:t,error:n}=function(e){const[t,n]=(0,Fi.useState)(""),[r,i]=(0,Fi.useState)(!1),[a,o]=(0,Fi.useState)(!1),[s,l]=(0,Fi.useState)([]),[c,u]=(0,Fi.useState)(null),d=(0,Fi.useCallback)((e=>{l(e),u(null),n(""),i(!0),o(!1),eN({model:RF,messages:e}).pipe(ZI()).subscribe({next:n,error(e){u(e),i(!1),o(!0)},complete(){i(!1),o(!0)}})}),[]),p=(0,Fi.useCallback)((e=>{const n=[{role:"assistant",content:t},{role:"user",content:e}];try{d([...s,...n])}catch(e){u(e)}}),[s,t,d]);return(0,Fi.useEffect)((()=>{if(s.length>0)return;const t=AF(e);try{d([{role:"system",content:t.system},{role:"system",content:t.user}])}catch(e){u(e)}}),[s.length,e,d]),{reply:{text:t,hasStarted:r,hasFinished:a,messages:s,askFollowupQuestion:p},error:c}}(e);return{data:{isLoading:!n&&!t.text.trim(),llmError:n,reply:t,shouldDisplayReply:Boolean((null==t?void 0:t.hasStarted)||(null==t?void 0:t.hasFinished)),shouldDisplayFollowUpForm:!n&&Boolean(null==t?void 0:t.hasFinished)},actions:{submitFollowupQuestion(e){t.askFollowupQuestion(e)}}}}const jF=()=>({title:i.css` + `});function kM(e,t,n,r,i,a,o){try{var s=e[a](o),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,i)}function PM(e){return function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function o(e){kM(a,r,i,o,s,"next",e)}function s(e){kM(a,r,i,o,s,"throw",e)}o(void 0)}))}}class RM extends QC{githubLogin(e){var t=this;return PM((function*(){const n=yield t.fetch("/vcs.v1.VCSService/GithubLogin",{method:"POST",body:JSON.stringify({authorizationCode:e})});return yield n.json()}))()}githubApp(){var e=this;return PM((function*(){const t=yield e.fetch("/vcs.v1.VCSService/GithubApp",{method:"POST",body:JSON.stringify({})});return(yield t.json()).clientID}))()}}function AM(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class DM{isUserTokenExpired(e=0){return Date.now()>=this.expiry.getTime()-e}static decode(e){if(void 0===e||""===e)return;let t;try{t=atob(e)}catch(e){return void Xi.error(e,{info:"Failed to base64 decode GitSession value"})}const{payload:n,isLegacy:r}=DM.tryDecode(t);return r?new DM(e,864e13):new DM(n.metadata,Number(n.expiry))}static tryDecode(e){try{return{payload:JSON.parse(e),isLegacy:!1}}catch(e){return{payload:void 0,isLegacy:!0}}}constructor(e,t){AM(this,"oauthTokenMetadata",void 0),AM(this,"expiry",void 0),this.oauthTokenMetadata=e,this.expiry=new Date(t)}}function jM(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const IM="pyroscope_git_session";class NM{getCookie(){return this.syncCookieWithBrowser(),this.sessionCookie}setCookie(e){e.startsWith(`${IM}=`)||(e=`${IM}=${e}`);const t=NM.getCookieFromJar(e,IM);void 0!==t&&(this.deleteLegacyCookie(),this.rawCookie=t,this.sessionCookie=DM.decode(t.value),document.cookie=`${e}; path=/`)}deleteCookie(){document.cookie=`${IM}=; Path=/; expires=Thu, 01 Jan 1970 00:00:00 UTC;`,this.deleteLegacyCookie(),this.rawCookie=void 0,this.sessionCookie=void 0}deleteLegacyCookie(){document.cookie="GitSession=; Path=/; expires=Thu, 01 Jan 1970 00:00:00 UTC;"}syncCookieWithBrowser(){var e,t;const n=NM.getCookieFromJar(document.cookie,IM);(null==n?void 0:n.key)===(null===(e=this.rawCookie)||void 0===e?void 0:e.key)&&(null==n?void 0:n.value)===(null===(t=this.rawCookie)||void 0===t?void 0:t.value)||(void 0!==n?this.setCookie(`${n.key}=${n.value}`):this.deleteCookie())}static getCookieFromJar(e,t){return e.split(";").map((e=>{const[t,...n]=e.trim().split("="),r=n.join("=");return{key:t.trim(),value:null==r?void 0:r.trim()}})).find((({key:e})=>e===t))}constructor(){jM(this,"rawCookie",void 0),jM(this,"sessionCookie",void 0)}}const LM=new NM;const MM=800,FM=950;function $M(e,t){const n=function(e,t){const n=new URL("/login/oauth/authorize","https://github.com");return n.searchParams.set("client_id",e),n.searchParams.set("scope","repo"),n.searchParams.set("state",btoa(JSON.stringify({redirect_uri:window.location.origin,nonce:t}))),n.toString()}(e,t),{top:r}=window;var i,a;const o=(null!==(i=null==r?void 0:r.outerWidth)&&void 0!==i?i:0)/2+(null!==(a=null==r?void 0:r.screenX)&&void 0!==a?a:0)-MM/2;var s,l;const c=(null!==(s=null==r?void 0:r.outerHeight)&&void 0!==s?s:0)/2+(null!==(l=null==r?void 0:r.screenY)&&void 0!==l?l:0)-FM/2;return window.open(n,"GitHub Login",`toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width=${MM}, height=${FM}, top=${c}, left=${o}`)}function BM(e,t,n,r,i,a,o){try{var s=e[a](o),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,i)}function VM(){var e;return e=function*(e,t,n,r,i){if(r&&r.close(),null==n?void 0:n.isUserTokenExpired())try{return void(yield t.refresh())}catch(e){Xi.error(e,{info:"Failed to refresh GitHub user token"}),LM.deleteCookie()}try{i($M(yield e.githubApp(),rF))}catch(e){Ds(e,["Failed to start login flow.",e.message])}},VM=function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function o(e){BM(a,r,i,o,s,"next",e)}function s(e){BM(a,r,i,o,s,"throw",e)}o(void 0)}))},VM.apply(this,arguments)}function zM(e,t,n,r,i,a,o){try{var s=e[a](o),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,i)}function UM(){var e;return e=function*(e,t,n){const r=t.get("code");if(!r)return"";const i=t.get("state");if(!i)throw new Error("Invalid state parameter!");let a;try{a=JSON.parse(atob(i))}catch(e){throw new Error("Invalid state parameter!")}if(a.nonce!==n)throw new Error("Invalid nonce parameter!");return(yield e.githubLogin(r)).cookie},UM=function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function o(e){zM(a,r,i,o,s,"next",e)}function s(e){zM(a,r,i,o,s,"throw",e)}o(void 0)}))},UM.apply(this,arguments)}function qM(e,t,n,r,i,a,o){try{var s=e[a](o),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,i)}function HM({vcsClient:e,externalWindow:t,setExternalWindow:n,setSessionCookie:r,nonce:i}){(0,Fi.useEffect)((()=>{const a=function(){var o,s=(o=function*(){if(t&&!t.closed){try{const a=function(e){try{return new URL(e.location.href).searchParams}catch(e){return null}}(t);if(null!==a){const o=yield function(e,t,n){return UM.apply(this,arguments)}(e,a,i);if(o)return r(o),t.close(),void n(null)}}catch(e){return Ds(e,["Error while login in with GitHub!",e.message]),t.close(),void n(null)}window.setTimeout(a,700)}else n(null)},function(){var e=this,t=arguments;return new Promise((function(n,r){var i=o.apply(e,t);function a(e){qM(i,n,r,a,s,"next",e)}function s(e){qM(i,n,r,a,s,"throw",e)}a(void 0)}))});return function(){return s.apply(this,arguments)}}();return t&&a(),()=>{t&&(t.close(),n(null))}}),[t,n,r,i,e])}function GM(e,t,n,r,i,a,o){try{var s=e[a](o),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,i)}function WM(e){return function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function o(e){GM(a,r,i,o,s,"next",e)}function s(e){GM(a,r,i,o,s,"throw",e)}o(void 0)}))}}const QM={isLoginInProgress:!1,isLoggedIn:!1,isSessionExpired:!1,login:WM((function*(){}))},KM=(0,Fi.createContext)(QM);function YM(e,t,n,r,i,a,o){try{var s=e[a](o),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,i)}function XM(e){return function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function o(e){YM(a,r,i,o,s,"next",e)}function s(e){YM(a,r,i,o,s,"throw",e)}o(void 0)}))}}function JM(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const ZM=Object.freeze({sha:"",date:void 0,author:{login:"unknown author",avatarURL:""},message:"",URL:""});class eF extends QC{getFile(e,t,n,r){var i=this;return XM((function*(){return(yield i.postWithRefresh("/vcs.v1.VCSService/GetFile",JSON.stringify({repositoryURL:e,ref:t,localPath:n,rootPath:r}))).json()}))()}getCommits(e){var t=this;return XM((function*(){return yield Promise.all(e.map((({repositoryUrl:e,gitRef:n})=>e&&n?t.getCommit(e,n).catch((t=>(Xi.error(t,{info:`Error while fetching commit from repo "${e}" (${n})!'`}),ZM))):ZM)))}))()}refresh(){var e=this;return XM((function*(){return e.refreshSession()}))()}getCommit(e,t){var n=this;return XM((function*(){var r;const i=yield n.postWithRefresh("/vcs.v1.VCSService/GetCommit",JSON.stringify({repositoryURL:e,ref:t})),a=yield i.json();return(r=a).date&&(r.date=new Date(a.date)),a}))()}postWithRefresh(e,t){var n=this;return XM((function*(){var r;if(n.isRefreshing)return n.queueRequest(e,t);if(null===(r=n.sessionManager.getCookie())||void 0===r?void 0:r.isUserTokenExpired(eF.BIAS_MS)){n.isRefreshing=!0;try{yield n.refreshSession()}catch(e){n.sessionManager.deleteCookie(),n.flushQueue(e)}n.flushQueue(),n.isRefreshing=!1}return n.post(e,t)}))()}post(e,t){var n=this;return XM((function*(){return n.fetch(e,{method:"POST",body:t})}))()}refreshSession(){var e=this;return XM((function*(){const t=yield e.fetch("/vcs.v1.VCSService/GithubRefresh",{method:"POST",body:JSON.stringify({})}),n=yield t.json();e.sessionManager.setCookie(n.cookie)}))()}queueRequest(e,t){var n=this;return XM((function*(){return new Promise(((r,i)=>{n.pendingQueue.push((a=>{a?i(a):r(n.post(e,t))}))}))}))()}flushQueue(e=void 0){this.pendingQueue.forEach((t=>t(e))),this.pendingQueue=[]}constructor(e){super(e),JM(this,"sessionManager",void 0),JM(this,"pendingQueue",void 0),JM(this,"isRefreshing",void 0),this.sessionManager=LM,this.isRefreshing=!1,this.pendingQueue=[]}}function tF(e,t,n,r,i,a,o){try{var s=e[a](o),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,i)}function nF(e){return function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function o(e){tF(a,r,i,o,s,"next",e)}function s(e){tF(a,r,i,o,s,"throw",e)}o(void 0)}))}}JM(eF,"BIAS_MS",3e5);const rF=btoa(String.fromCharCode(...crypto.getRandomValues(new Uint8Array(32))));function iF({dataSourceUid:e,children:t}){const n=vj.build(e,RM),r=vj.build(e,eF),[i,a]=(0,Fi.useState)(QM.isLoginInProgress),[o,s]=function(){const[e,t]=(0,Fi.useState)(LM.getCookie());return[e,e=>{e?(LM.setCookie(e),t(LM.getCookie())):(LM.deleteCookie(),t(void 0))}]}(),[l,c]=(0,Fi.useState)();(0,Fi.useEffect)((()=>{s("")}),[e]),HM({vcsClient:n,externalWindow:l,setExternalWindow:c,setSessionCookie:s,nonce:rF});const u=!!l&&!l.closed;u!==i&&a(u);const d=(0,Fi.useCallback)(nF((function*(){try{yield function(e,t,n,r,i){return VM.apply(this,arguments)}(n,r,o,l,c)}catch(e){Ds(e,["Failed to login to GitHub",e.message])}})),[n,r,o,l]);return $i().createElement(KM.Provider,{value:{isLoginInProgress:i,isLoggedIn:Boolean(o&&!o.isUserTokenExpired()),isSessionExpired:Boolean(null==o?void 0:o.isUserTokenExpired()),login:d}},t)}class aF extends r.BusEventWithPayload{}function oF(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function sF(e){for(var t=1;t`${e}${t}"${n}"`)).join(",");return kR(new cy({datasource:QP,queries:[sF({refId:"profile",queryType:"profile",profileTypeId:"$profileMetricId",labelSelector:`{${i},$filters}`,maxNodes:t},n&&{spanSelector:[n]})]}))}!function(e,t,n){t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n}(aF,"type","remove-span-selector");var cF=__webpack_require__(585);function uF(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function dF(e,t,n,r){var i,a=arguments.length,o=a<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(o=(a<3?i(o):a>3?i(t,n,o):i(t,n))||o);return a>3&&o&&Object.defineProperty(t,n,o),o}class pF extends cF.Message{constructor(e,t,n,r,i){super(),uF(this,"profile_typeID",void 0),uF(this,"label_selector",void 0),uF(this,"start",void 0),uF(this,"end",void 0),uF(this,"max_nodes",void 0),this.profile_typeID=e,this.label_selector=t,this.start=n,this.end=r,this.max_nodes=i}}function hF(e,t,n,r,i,a,o){try{var s=e[a](o),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,i)}function fF(e){return function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function o(e){hF(a,r,i,o,s,"next",e)}function s(e){hF(a,r,i,o,s,"throw",e)}o(void 0)}))}}dF([cF.Field.d(1,"string")],pF.prototype,"profile_typeID",void 0),dF([cF.Field.d(2,"string")],pF.prototype,"label_selector",void 0),dF([cF.Field.d(3,"int64")],pF.prototype,"start",void 0),dF([cF.Field.d(4,"int64")],pF.prototype,"end",void 0),dF([cF.Field.d(5,"int64")],pF.prototype,"max_nodes",void 0);class mF extends QC{static buildPprofRequest(e,t,n){const{profileMetricId:r,labelsSelector:i}=CR(e),a=1e3*t.from.unix(),o=1e3*t.to.unix(),s=new pF(r,i,a,o,n);return pF.encode(s).finish()}selectMergeProfile({query:e,timeRange:t,maxNodes:n}){var r=this;return fF((function*(){return(yield r.fetch("/querier.v1.QuerierService/SelectMergeProfile",{method:"POST",headers:{"content-type":"application/proto"},body:new Blob([mF.buildPprofRequest(e,t,n)])})).blob()}))()}selectMergeProfileJson({profileMetricId:e,labelsSelector:t,start:n,end:r,stackTrace:i,maxNodes:a}){var o=this;return fF((function*(){return(yield o.fetch("/querier.v1.QuerierService/SelectMergeProfile",{method:"POST",body:JSON.stringify({profile_typeID:e,label_selector:t,start:1e3*n,end:1e3*r,stackTraceSelector:{call_site:i.map((e=>({name:e})))},maxNodes:a})})).json()}))()}}function gF(e,t){const{serviceId:n,profileMetricId:r}=CR(e),i=`${t.from.format("YYYY-MM-DD_HHmm")}-to-${t.to.format("YYYY-MM-DD_HHmm")}`;return`${n.replace(/\//g,"-")}_${r}_${i}`}function yF(e,t,n,r,i,a,o){try{var s=e[a](o),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,i)}const bF=new class extends ca{upload(e,t){var n,r=this;return(n=function*(){const n=yield r.fetch("/upload/v1",{method:"POST",body:JSON.stringify({name:e,profile:btoa(JSON.stringify(t)),fileTypeData:{units:t.metadata.units,spyName:t.metadata.spyName},type:"json"})});return yield n.json()},function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function o(e){yF(a,r,i,o,s,"next",e)}function s(e){yF(a,r,i,o,s,"throw",e)}o(void 0)}))})()}constructor(){super("https://flamegraph.com/api",{"content-type":"application/json"})}};function vF(e,t,n,r,i,a,o){try{var s=e[a](o),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,i)}function wF(e){return function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function o(e){vF(a,r,i,o,s,"next",e)}function s(e){vF(a,r,i,o,s,"throw",e)}o(void 0)}))}}function SF(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class EF extends bh{fetchFlamebearerProfile({dataSourceUid:e,query:t,timeRange:n,maxNodes:r}){return wF((function*(){const i=vj.build(e,nM);let a;try{a=yield i.get({query:t,timeRange:n,format:"json",maxNodes:r||oI.maxNodes})}catch(e){return Ds(e,["Error while loading flamebearer profile data!",e.message]),null}return a}))()}fetchPprofProfile({dataSourceUid:e,query:t,timeRange:n,maxNodes:r}){return wF((function*(){const i=vj.build(e,mF);let a;try{const e=yield i.selectMergeProfile({query:t,timeRange:n,maxNodes:r||oI.maxNodes});a=yield new Response(e.stream().pipeThrough(new CompressionStream("gzip"))).blob()}catch(e){return Ds(e,["Failed to export to pprof!",e.message]),null}return a}))()}constructor(){super({key:"export-flame-graph-menu"}),SF(this,"useSceneExportMenu",(({query:e,timeRange:t})=>{const n=tm.findByKeyAndType(this,"dataSource",sR).useState().value,[r]=lM(),{settings:i}=dI();var a=this;const o=function(){var i=wF((function*(){Ts("g_pyroscope_app_export_profile",{format:"json"});const i=yield a.fetchFlamebearerProfile({dataSourceUid:n,query:e,timeRange:t,maxNodes:r});if(!i)return;const o=`${gF(e,t)}.json`,s=`data:text/json;charset=utf-8,${encodeURIComponent(JSON.stringify(i))}`;Zd()(s,o)}));return function(){return i.apply(this,arguments)}}();var s=this;const l=function(){var i=wF((function*(){Ts("g_pyroscope_app_export_profile",{format:"pprof"});const i=yield s.fetchPprofProfile({dataSourceUid:n,query:e,timeRange:t,maxNodes:r});if(!i)return;const a=`${gF(e,t)}.pb.gz`;Zd()(i,a)}));return function(){return i.apply(this,arguments)}}();var c=this;const u=function(){var i=wF((function*(){Ts("g_pyroscope_app_export_profile",{format:"flamegraph.com"});const i=yield c.fetchFlamebearerProfile({dataSourceUid:n,query:e,timeRange:t,maxNodes:r});if(i)try{const n=yield bF.upload(gF(e,t),i);if(!n.url)throw new Error("Empty URL received.");const r=document.createElement("a");r.target="_blank",r.href=n.url,document.body.appendChild(r),r.click(),document.body.removeChild(r)}catch(e){return void Ds(e,["Failed to export to flamegraph.com!",e.message])}}));return function(){return i.apply(this,arguments)}}();return{data:{shouldDisplayFlamegraphDotCom:Boolean(null==i?void 0:i.enableFlameGraphDotComExport)},actions:{downloadPng:()=>{Ts("g_pyroscope_app_export_profile",{format:"png"});const n=`${gF(e,t)}.png`;document.querySelector('canvas[data-testid="flameGraph"]').toBlob((e=>{if(e)Zd()(e,n);else{const e=new Error("Error while creating the image, no blob.");Ds(e,["Failed to export to png!",e.message])}}),"image/png")},downloadJson:o,downloadPprof:l,uploadToFlamegraphDotCom:u}}}))}}function xF(){return(0,Fi.useContext)(KM)}function OF(e){const{login:t,isSessionExpired:n}=xF(),{settings:i}=dI(),a=null==i?void 0:i.enableFunctionDetails,[o,s]=(0,Fi.useState)([]),l=(0,Fi.useCallback)((({item:i},o)=>a&&0!==i.level?[{label:"Function details",icon:"info-circle",onClick:()=>{Ts("g_pyroscope_app_function_details_clicked"),s(function(e,t){let n=[];const i=t.fields.find((({name:e})=>"label"===e));if(!i)return n;const a=(0,r.getDisplayProcessor)({field:i,theme:(0,r.createTheme)()});let o=e;for(;o&&o.level>0;){var s;for(const e of o.itemIndexes)n.unshift(a(i.values[e]).text);o=null===(s=o.parents)||void 0===s?void 0:s[0]}return n}(i,o)),e.open("function-details"),n&&t()}}]:[]),[a,n,t,e]);return{data:{stacktrace:o},actions:{getExtraFlameGraphMenuItems:l}}}SF(EF,"Component",(({model:e,query:t,timeRange:n})=>{const{actions:r}=e.useSceneExportMenu({query:t,timeRange:n});return $i().createElement(o.Dropdown,{overlay:$i().createElement(o.Menu,null,$i().createElement(o.Menu.Item,{label:"png",onClick:r.downloadPng}),$i().createElement(o.Menu.Item,{label:"json",onClick:r.downloadJson}),$i().createElement(o.Menu.Item,{label:"pprof",onClick:r.downloadPprof}))},$i().createElement(o.Button,{icon:"download-alt",size:"sm",variant:"secondary",fill:"outline","aria-label":"Export profile data",tooltip:"Export profile data"}))}));const _F="gpt-4-1106-preview",TF=({functionDetails:e,lines:t})=>{const n=`\nYou are a code optimization expert. I will give you source code file where each line is annotated with profiling information. The annotation has the following format:\n\n\`\`\`\n() \n\`\`\`\n\nThe \`\`\`\`\`\` is the exact line of source code.\n\nThe \`\`\`\`\`\` field will contain the resource cost of the given resource cost. This field will also contain the unit of the cost (e.g. seconds, bytes, etc). If \`\`\`\`\`\` is \`-\` that means there is no profiling data available.\n\nI want you to write back a new improved code for this function and explain why you made changes.\n\nMake sure to take annotations into strong consideration. If a suggested performance improvement isn't backed up by information from the annotations, do not include it. Prioritize lines annotated with a higher cost.\n\nDo not mention the actual numbers from the annotations, users can already see how much time was spent on each line. Do not list various lines and their time spent. When you mention functions or lines, do not mention the time spent on them.\n\nIf you can't find any meaningful performance optimizations, say so. Ask for context if you think other context might help make decisions. If you think the problem is with user input and not the actual code itself, say so.\n\nWhen you output code in markdown, please don't specify language after 3 backticks (e.g instead of saying "\`\`\`go" say "\`\`\`"), and always add a new line after 3 backticks.\n\nFunction name is \`${e.name}\`. Do not mention the function name, users can already see it.\n\nWhen posting a response, follow the outline below:\n* give a brief explanation of things that could be improve\n* print new code if it's possible\n* explain each change in more details\n\n\nAnnotated code is below:\n\`\`\`\n${function(e,t){return t.map((t=>0===t.cum?`(-) ${t.line}`:`(${t.cum} ${e.unit}) ${t.line}`)).join("\n")}(e,t)}\n\`\`\`\n`;return{user:n}};function CF(e){const{reply:t,error:n}=function(e){const[t,n]=(0,Fi.useState)(""),[r,i]=(0,Fi.useState)(!1),[a,o]=(0,Fi.useState)(!1),[s,l]=(0,Fi.useState)([]),[c,u]=(0,Fi.useState)(null),d=(0,Fi.useCallback)((e=>{l(e),u(null),n(""),i(!0),o(!1),JL({model:_F,messages:e}).pipe(XL()).subscribe({next:n,error(e){u(e),i(!1),o(!0)},complete(){i(!1),o(!0)}})}),[]),p=(0,Fi.useCallback)((e=>{const n=[{role:"assistant",content:t},{role:"user",content:e}];try{d([...s,...n])}catch(e){u(e)}}),[s,t,d]);return(0,Fi.useEffect)((()=>{if(s.length>0)return;const t=TF(e);try{d([{role:"system",content:t.user}])}catch(e){u(e)}}),[s.length,e,d]),{reply:{text:t,hasStarted:r,hasFinished:a,messages:s,askFollowupQuestion:p},error:c}}(e);return{data:{isLoading:!n&&!t.text.trim(),llmError:n,reply:t,shouldDisplayReply:Boolean((null==t?void 0:t.hasStarted)||(null==t?void 0:t.hasFinished)),shouldDisplayFollowUpForm:!n&&Boolean(null==t?void 0:t.hasFinished)},actions:{submitFollowupQuestion(e){t.askFollowupQuestion(e)}}}}const kF=()=>({title:i.css` margin: -4px 0 4px 0; - `,content:i.css``});function IF({suggestionPromptInputs:e}){const t=(0,o.useStyles2)(jF),{data:n,actions:r}=DF(e);return $i().createElement($i().Fragment,null,$i().createElement("h6",{className:t.title},"Code Optimization Suggestions"),$i().createElement("div",{className:t.content},n.isLoading&&$i().createElement($i().Fragment,null,$i().createElement(o.Spinner,{inline:!0})," Analyzing..."),n.fetchError&&$i().createElement(pI,{severity:"error",title:"Error while fetching profiles!",message:"Sorry for any inconvenience, please try again later."}),n.llmError&&$i().createElement(pI,{severity:"error",title:"Failed to generate content using OpenAI!",error:n.llmError,message:"Sorry for any inconvenience, please try again later or if the problem persists, contact your organization admin."}),n.shouldDisplayReply&&$i().createElement(eM,{reply:n.reply}),n.shouldDisplayFollowUpForm&&$i().createElement(rM,{onSubmit:r.submitFollowupQuestion})))}function NF(e,t){let n=e;const r=e.match(/raw\.githubusercontent\.com\/([^/]+)\/([^/]+)\/(.+)/);if(r){const[,e,t,i]=r;n=`https://github.com/${e}/${t}/blob/${i}`}return void 0===t||e.includes("#")||(n+=`#L${t}`),n}const LF=5;function MF(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function FF(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})),e}function $F(e,t){const{isLoggedIn:n}=kF(),{version:r}=t,[i,a]=(0,Fi.useState)(!1);var o,s,l;const{fileInfo:c,error:u,isFetching:d}=function({enabled:e,dataSourceUid:t,repository:n,gitRef:r,localPath:i,rootPath:a}){const o=vj.build(t,aF),{isFetching:s,error:l,data:c}=Pa({enabled:Boolean(e&&i),queryKey:["vcs-file",n,r,i,a],queryFn:()=>o.getFile(n,r,i,a).then((e=>({content:e.content,URL:e.URL}))).then((e=>({URL:e.URL,content:atob(e.content)})))});return{isFetching:s,error:o.isAbortError(l)?null:l,fileInfo:c}}({enabled:n,dataSourceUid:e,localPath:t.fileName,repository:null!==(o=null==r?void 0:r.repository)&&void 0!==o?o:"",gitRef:null!==(s=null==r?void 0:r.git_ref)&&void 0!==s?s:"",rootPath:null!==(l=null==r?void 0:r.root_path)&&void 0!==l?l:""}),p=(0,Fi.useMemo)((()=>(null==c?void 0:c.content)?function(e,t){if(!t.size)return[];const n=Array.from(t.values()).sort(((e,t)=>e.line-t.line)),r=e.split("\n"),i=Math.max(0,n[0].line-LF-1),a=Math.min(r.length,n[n.length-1].line+LF);return r.slice(i,a).map(((e,n)=>{const r=n+i+1,a=t.get(r);var o,s;return{line:e,number:r,cum:null!==(o=null==a?void 0:a.cum)&&void 0!==o?o:0,flat:null!==(s=null==a?void 0:a.flat)&&void 0!==s?s:0}}))}(c.content,t.callSites):function(e){if(!e.size)return[];const t=Array.from(e.values()).sort(((e,t)=>e.line-t.line)),n=Math.max(0,t[0].line-LF-1),r=t[t.length-1].line+LF+1,i=[];for(let t=n+1;t{var t;return FF(function(e){for(var t=1;te.line))},actions:{setOpenAiSuggestions:a}}}function BF(e){switch(e){case"nanoseconds":return(0,r.getValueFormat)("ns");case"microseconds":return(0,r.getValueFormat)("µs");case"milliseconds":return(0,r.getValueFormat)("ms");case"seconds":return(0,r.getValueFormat)("s");case"count":return(0,r.getValueFormat)("short");default:return(0,r.getValueFormat)(e)}}const VF=({lines:e,unit:t,githubUrl:n,isLoadingCode:r,noCodeAvailable:a,onOptimizeCodeClick:s})=>{const l=(0,o.useStyles2)(GF),c=BF(t),u=e=>{if(e<=0)return".";const t=c(e);return t.suffix?t.text+t.suffix:t.text};UF(e);const[d,p]=e.reduce((([e,t],{flat:n,cum:r})=>[e+n,t+r]),[0,0]);return $i().createElement("div",{"data-testid":"function-details-code-container"},$i().createElement("div",{className:l.container},$i().createElement("div",{className:l.header},$i().createElement("div",{className:l.breakdownLabel},$i().createElement("h6",null,"Breakdown per line"),$i().createElement("span",null,r&&$i().createElement(o.Spinner,{inline:!0}),!r&&a&&"(file information unavailable)")),$i().createElement("div",{className:l.buttons},$i().createElement(o.LinkButton,{disabled:Boolean(r||!n),href:n,target:"_blank",icon:"github",fill:"text"},"View on GitHub"),$i().createElement(iN,{onClick:s,disabled:r||a,interactionName:"g_pyroscope_app_optimize_code_clicked"},"Optimize Code")))),$i().createElement("pre",{className:l.codeBlock,"data-testid":"function-details-code"},$i().createElement("div",{className:(0,i.cx)(l.highlighted,l.codeBlockHeader)},zF("Total:",u(d),u(p)," (self, total)")),e.map((({line:e,number:t,cum:n,flat:r})=>$i().createElement("div",{key:e+t+n+r,className:r+n>0?l.highlighted:""},zF(`${t} `,u(r),u(n),e))))))},zF=(e,t,n,r)=>{const i=e.padStart(7," ")+t.padStart(12," ")+n.padStart(12," ");return r?`${i} ${r}`:i},UF=e=>{if(0===e.length)return;let t=qF(e[0].line);for(let n=1;n{const t=e.match(/^[ \t]*/);var n;return null!==(n=null==t?void 0:t[0])&&void 0!==n?n:""},HF=(e,t)=>{let n=0;for(let r=0;r({container:i.css` + `,content:i.css``});function PF({suggestionPromptInputs:e}){const t=(0,o.useStyles2)(kF),{data:n,actions:r}=CF(e);return $i().createElement($i().Fragment,null,$i().createElement("h6",{className:t.title},"Code Optimization Suggestions"),$i().createElement("div",{className:t.content},n.isLoading&&$i().createElement($i().Fragment,null,$i().createElement(o.Spinner,{inline:!0})," Analyzing..."),n.fetchError&&$i().createElement(pI,{severity:"error",title:"Error while fetching profiles!",message:"Sorry for any inconvenience, please try again later."}),n.llmError&&$i().createElement(pI,{severity:"error",title:"Failed to generate content using OpenAI!",error:n.llmError,message:"Sorry for any inconvenience, please try again later or if the problem persists, contact your organization admin."}),n.shouldDisplayReply&&$i().createElement(ML,{reply:n.reply}),n.shouldDisplayFollowUpForm&&$i().createElement(BL,{onSubmit:r.submitFollowupQuestion})))}const RF=5;function AF(e,t){let n=e;const r=e.match(/raw\.githubusercontent\.com\/([^/]+)\/([^/]+)\/(.+)/);if(r){const[,e,t,i]=r;n=`https://github.com/${e}/${t}/blob/${i}`}return void 0===t||e.includes("#")||(n+=`#L${t}`),n}function DF(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function jF(e){for(var t=1;to.getFile(n,r,i,a).then((e=>({content:e.content,URL:e.URL}))).then((e=>({URL:e.URL,content:atob(e.content)})))});return{isFetching:s,error:o.isAbortError(l)?null:l,fileInfo:c}}({enabled:n,dataSourceUid:e,localPath:t.fileName,repository:null!==(o=null==r?void 0:r.repository)&&void 0!==o?o:"",gitRef:null!==(s=null==r?void 0:r.git_ref)&&void 0!==s?s:"",rootPath:null!==(l=null==r?void 0:r.root_path)&&void 0!==l?l:""}),{snippetLines:p,allLines:h}=(0,Fi.useMemo)((()=>(null==c?void 0:c.content)?function(e,t){const n=Array.from(t.values()).sort(((e,t)=>e.line-t.line)),r=e.split("\n"),i=r.map(((e,n)=>{const r=n+1,i=t.get(r);var a,o;return{line:e,number:r,cum:null!==(a=null==i?void 0:i.cum)&&void 0!==a?a:0,flat:null!==(o=null==i?void 0:i.flat)&&void 0!==o?o:0}}));if(0===t.size)return{snippetLines:[],allLines:i};const a=Math.max(0,n[0].line-RF-1),o=Math.min(r.length,n[n.length-1].line+RF);return{snippetLines:i.slice(a,o),allLines:i}}(c.content,t.callSites):function(e){if(!e.size)return{snippetLines:[],allLines:[]};const t=Array.from(e.values()).sort(((e,t)=>e.line-t.line)),n=Math.max(0,t[0].line-RF-1),r=t[t.length-1].line+RF+1,i=[];for(let t=n+1;t{var t;return IF(jF({},e),{line:null!==(t=e.line)&&void 0!==t?t:"???"})})),allLines:h.map((e=>{var t;return IF(jF({},e),{line:null!==(t=e.line)&&void 0!==t?t:"???"})})),noCodeAvailable:Boolean(u)||!h.some((e=>e.line))},actions:{setOpenAiSuggestions:a}}}function LF(e){switch(e){case"nanoseconds":return(0,r.getValueFormat)("ns");case"microseconds":return(0,r.getValueFormat)("µs");case"milliseconds":return(0,r.getValueFormat)("ms");case"seconds":return(0,r.getValueFormat)("s");case"count":return(0,r.getValueFormat)("short");default:return(0,r.getValueFormat)(e)}}const MF=({lines:e,unit:t,githubUrl:n,isLoadingCode:r,noCodeAvailable:a,onOptimizeCodeClick:s})=>{const l=(0,o.useStyles2)(zF),c=LF(t),u=e=>{if(e<=0)return".";const t=c(e);return t.suffix?t.text+t.suffix:t.text};$F(e);const[d,p]=e.reduce((([e,t],{flat:n,cum:r})=>[e+n,t+r]),[0,0]);return $i().createElement("div",{"data-testid":"function-details-code-container"},$i().createElement("div",{className:l.container},$i().createElement("div",{className:l.header},$i().createElement("div",{className:l.breakdownLabel},$i().createElement("h6",null,"Breakdown per line"),$i().createElement("span",null,r&&$i().createElement(o.Spinner,{inline:!0}),!r&&a&&"(file information unavailable)")),$i().createElement("div",{className:l.buttons},$i().createElement(o.LinkButton,{disabled:Boolean(r||!n),href:n,target:"_blank",icon:"github",fill:"text"},"View on GitHub"),$i().createElement(VI,{onClick:s,disabled:r||a,interactionName:"g_pyroscope_app_optimize_code_clicked"},"Optimize Code")))),$i().createElement("pre",{className:l.codeBlock,"data-testid":"function-details-code"},$i().createElement("div",{className:(0,i.cx)(l.highlighted,l.codeBlockHeader)},FF("Total:",u(d),u(p)," (self, total)")),e.map((({line:e,number:t,cum:n,flat:r})=>$i().createElement("div",{key:e+t+n+r,className:r+n>0?l.highlighted:""},FF(`${t} `,u(r),u(n),e))))))},FF=(e,t,n,r)=>{const i=e.padStart(7," ")+t.padStart(12," ")+n.padStart(12," ");return r?`${i} ${r}`:i},$F=e=>{if(0===e.length)return;let t=BF(e[0].line);for(let n=1;n{const t=e.match(/^[ \t]*/);var n;return null!==(n=null==t?void 0:t[0])&&void 0!==n?n:""},VF=(e,t)=>{let n=0;for(let r=0;r({container:i.css` display: flex; flex-direction: row; align-items: flex-start; @@ -675,13 +675,13 @@ define(["@emotion/css","@grafana/data","@grafana/runtime","@grafana/ui","d3","lo color: ${e.colors.text.maxContrast}; `,codeBlockHeader:i.css` margin-bottom: 8px; - `});function WF({dataSourceUid:e,functionDetails:t}){var n,r;const{data:i,actions:a}=$F(e,t);return i.fetchError&&404!==(null===(r=i.fetchError)||void 0===r||null===(n=r.response)||void 0===n?void 0:n.status)&&Ds(i.fetchError,["Failed to fetch file information!",i.fetchError.message]),$i().createElement($i().Fragment,null,$i().createElement(VF,{lines:i.lines,unit:i.unit,githubUrl:i.githubUrl,isLoadingCode:i.isLoadingCode,noCodeAvailable:i.noCodeAvailable,onOptimizeCodeClick:()=>{var e;a.setOpenAiSuggestions(!0),null===(e=document.getElementById("ai-suggestions-panel"))||void 0===e||e.scrollIntoView({behavior:"smooth"})}}),$i().createElement("h6",{id:"ai-suggestions-panel",style:{height:0,marginBottom:0}}),i.openAiSuggestions?$i().createElement(IF,{suggestionPromptInputs:{functionDetails:t,lines:i.lines}}):null)}const QF=e=>({ellipsis:i.css` + `});function UF({dataSourceUid:e,functionDetails:t}){var n,r;const{data:i,actions:a}=NF(e,t);return i.fetchError&&404!==(null===(r=i.fetchError)||void 0===r||null===(n=r.response)||void 0===n?void 0:n.status)&&Ds(i.fetchError,["Failed to fetch file information!",i.fetchError.message]),$i().createElement($i().Fragment,null,$i().createElement(MF,{lines:i.snippetLines,unit:i.unit,githubUrl:i.githubUrl,isLoadingCode:i.isLoadingCode,noCodeAvailable:i.noCodeAvailable,onOptimizeCodeClick:()=>{var e;a.setOpenAiSuggestions(!0),null===(e=document.getElementById("ai-suggestions-panel"))||void 0===e||e.scrollIntoView({behavior:"smooth"})}}),$i().createElement("h6",{id:"ai-suggestions-panel",style:{height:0,marginBottom:0}}),i.openAiSuggestions?$i().createElement(PF,{suggestionPromptInputs:{functionDetails:t,lines:i.allLines}}):null)}const qF=e=>({ellipsis:i.css` color: ${e.colors.primary.text}; text-overflow: ellipsis; overflow: hidden; direction: rtl; white-space: nowrap; - `}),KF=({enableIntegration:e,repository:t})=>{const n=(0,o.useStyles2)(QF),{isLoginInProgress:r,isLoggedIn:i,login:a}=kF();return e?r?$i().createElement($i().Fragment,null,$i().createElement(o.Spinner,null),$i().createElement("span",null,"Connecting to GitHub...")):i?$i().createElement($i().Fragment,null,$i().createElement(o.Icon,{name:"github",size:"lg"}),$i().createElement("a",{className:n.ellipsis,href:t.commitUrl,target:"_blank",rel:"noreferrer",title:"View commit"},$i().createElement(o.Icon,{name:"external-link-alt"})," ",t.commitName)):$i().createElement(o.Button,{icon:"github",variant:"primary",onClick:a,tooltip:"Once connected, the GitHub code will be accessible only from this browser session.",tooltipPlacement:"top"},"Connect to ",t.name):$i().createElement($i().Fragment,null,"-")};function YF(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function XF(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})),e}function JF(e,t){const n=e.map((e=>{var n;return XF(function(e){for(var t=1;te+t),0),total:t}})}));return n}const ZF="https://github.com/";function e$(e,t){if(!(null==t?void 0:t.repository))return null;const n=t.repository,r=n.replace(ZF,""),i=t.git_ref;return{isGitHub:e,url:n,name:r,commitUrl:i?`${n}/commit/${i}`:n,commitName:i?`${r}@${i.substring(0,7)}`:r}}const t$=(e,t,n)=>{let r;try{r=n?JSON.parse(e.stringTable[Number(n.buildId)]):void 0}catch(e){}return{name:e.stringTable[Number(t.name)],version:r,startLine:Number.isNaN(Number(t.startLine))?void 0:Number(t.startLine),fileName:e.stringTable[Number(t.filename)],callSites:new Map,unit:e.stringTable[Number(e.sampleType[0].unit)],commit:iF}};function n$(e,t,n,r,i,a,o){const s=new Set;a.locationId.forEach(((l,c)=>{const u=n.get(l);u&&u.line.forEach((n=>{const d=r.get(n.functionId);if(!d)return;if(t.stringTable[Number(d.name)]!==e)return;if(s.has(l))return;s.add(l);const p=o.get(u.mappingId)||t$(t,d,i.get(u.mappingId));o.set(u.mappingId,function(e,t,n,r){const i=Number(t.line),a=e.callSites.get(i)||{line:Number(t.line),flat:0,cum:0},o=0===r?n:0,s=n;return a.flat+=o,a.cum+=s,e.callSites.set(i,a),e}(p,n,Number(a.value[0]),c))}))}))}function r$(e,t,n,r,i,a,o){try{var s=e[a](o),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,i)}function i$(){var e;return e=function*(e,t){const n=vj.build(e,aF),r=t.map((e=>{var t,n,r;return{repositoryUrl:(null==e||null===(t=e.version)||void 0===t?void 0:t.repository)||"",gitRef:(null==e||null===(n=e.version)||void 0===n?void 0:n.git_ref)||"HEAD",rootPath:(null==e||null===(r=e.version)||void 0===r?void 0:r.root_path)||""}}));return(yield n.getCommits(r)).forEach(((e,n)=>{t[n].commit=e})),t},i$=function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function o(e){r$(a,r,i,o,s,"next",e)}function s(e){r$(a,r,i,o,s,"throw",e)}o(void 0)}))},i$.apply(this,arguments)}const a$=e=>Array.from(e.callSites.values()).reduce(((e,{cum:t})=>e+t),0),o$=(e,t)=>a$(t)-a$(e);function s$(e,t,n,r,i,a,o){try{var s=e[a](o),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,i)}function l$(e){return function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function o(e){s$(a,r,i,o,s,"next",e)}function s(e){s$(a,r,i,o,s,"throw",e)}o(void 0)}))}}function c$({dataSourceUid:e,query:t,timeRange:n,stackTrace:r}){const{profileMetricId:i,labelsSelector:a}=CR(t),[o,s]=[n.from.unix(),n.to.unix()],{isLoggedIn:l}=kF(),c=vj.build(e,wF),{isFetching:u,error:d,data:p}=Pa({enabled:Boolean(i&&a&&r.length>0&&o>0&&s>0),queryKey:["function-details",i,a,o,s,r,l],queryFn:l$((function*(){const t=yield c.selectMergeProfileJson({profileMetricId:i,labelsSelector:a,start:o,end:s,stackTrace:r,maxNodes:500}),n=function(e,t){var n,r,i,a;const o=new Map,s=new Map(null===(n=t.location)||void 0===n?void 0:n.map((e=>[e.id,e]))),l=new Map(null===(r=t.function)||void 0===r?void 0:r.map((e=>[e.id,e]))),c=new Map(null===(i=t.mapping)||void 0===i?void 0:i.map((e=>[e.id,e])));return null===(a=t.sample)||void 0===a||a.filter((e=>void 0!==e.locationId)).forEach((n=>n$(e,t,s,l,c,n,o))),Array.from(o.values())}(r[r.length-1],t).sort(o$);return l?function(e,t){return i$.apply(this,arguments)}(e,n):n}))}),h=(0,Fi.useMemo)((()=>(null==p?void 0:p.length)?p:[{name:r.at(-1),startLine:void 0,fileName:"",callSites:new Map,unit:"",commit:iF}]),[p,r]);return{isFetching:u,error:c.isAbortError(d)?null:d,functionsDetails:h}}const u$=[60,3600,86400,604800,2592e3,31536e3,1/0],d$=["second","minute","hour","day","week","month","year"],p$=new Intl.RelativeTimeFormat("en-US",{numeric:"auto"});const h$=new Intl.DateTimeFormat("en-US",{year:"numeric",month:"long",day:"2-digit"});function f$(e){return e?`${h$.format(e)} (${function(e){const t=e.getTime(),n=Math.round((t-Date.now())/1e3),r=u$.findIndex((e=>e>Math.abs(n))),i=r?u$[r-1]:1;return p$.format(Math.floor(n/i),d$[r])}(e)})`:"?"}const m$=e=>({container:i.css` + `}),HF=({enableIntegration:e,repository:t})=>{const n=(0,o.useStyles2)(qF),{isLoginInProgress:r,isLoggedIn:i,login:a}=xF();return e?r?$i().createElement($i().Fragment,null,$i().createElement(o.Spinner,null),$i().createElement("span",null,"Connecting to GitHub...")):i?$i().createElement($i().Fragment,null,$i().createElement(o.Icon,{name:"github",size:"lg"}),$i().createElement("a",{className:n.ellipsis,href:t.commitUrl,target:"_blank",rel:"noreferrer",title:"View commit"},$i().createElement(o.Icon,{name:"external-link-alt"})," ",t.commitName)):$i().createElement(o.Button,{icon:"github",variant:"primary",onClick:a,tooltip:"Once connected, the GitHub code will be accessible only from this browser session.",tooltipPlacement:"top"},"Connect to ",t.name):$i().createElement($i().Fragment,null,"-")};function GF(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function WF(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})),e}function QF(e,t){const n=e.map((e=>{var n;return WF(function(e){for(var t=1;te+t),0),total:t}})}));return n}const KF="https://github.com/";function YF(e,t){if(!(null==t?void 0:t.repository))return null;const n=t.repository,r=n.replace(KF,""),i=t.git_ref;return{isGitHub:e,url:n,name:r,commitUrl:i?`${n}/commit/${i}`:n,commitName:i?`${r}@${i.substring(0,7)}`:r}}const XF=(e,t,n)=>{let r;try{r=n?JSON.parse(e.stringTable[Number(n.buildId)]):void 0}catch(e){}return{name:e.stringTable[Number(t.name)],version:r,startLine:Number.isNaN(Number(t.startLine))?void 0:Number(t.startLine),fileName:e.stringTable[Number(t.filename)],callSites:new Map,unit:e.stringTable[Number(e.sampleType[0].unit)],commit:ZM}};function JF(e,t,n,r,i,a,o){const s=new Set;a.locationId.forEach(((l,c)=>{const u=n.get(l);u&&u.line.forEach((n=>{const d=r.get(n.functionId);if(!d)return;if(t.stringTable[Number(d.name)]!==e)return;if(s.has(l))return;s.add(l);const p=o.get(u.mappingId)||XF(t,d,i.get(u.mappingId));o.set(u.mappingId,function(e,t,n,r){const i=Number(t.line),a=e.callSites.get(i)||{line:Number(t.line),flat:0,cum:0},o=0===r?n:0,s=n;return a.flat+=o,a.cum+=s,e.callSites.set(i,a),e}(p,n,Number(a.value[0]),c))}))}))}function ZF(e,t,n,r,i,a,o){try{var s=e[a](o),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,i)}function e$(){var e;return e=function*(e,t){const n=vj.build(e,eF),r=t.map((e=>{var t,n,r;return{repositoryUrl:(null==e||null===(t=e.version)||void 0===t?void 0:t.repository)||"",gitRef:(null==e||null===(n=e.version)||void 0===n?void 0:n.git_ref)||"HEAD",rootPath:(null==e||null===(r=e.version)||void 0===r?void 0:r.root_path)||""}}));return(yield n.getCommits(r)).forEach(((e,n)=>{t[n].commit=e})),t},e$=function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function o(e){ZF(a,r,i,o,s,"next",e)}function s(e){ZF(a,r,i,o,s,"throw",e)}o(void 0)}))},e$.apply(this,arguments)}const t$=e=>Array.from(e.callSites.values()).reduce(((e,{cum:t})=>e+t),0),n$=(e,t)=>t$(t)-t$(e);function r$(e,t,n,r,i,a,o){try{var s=e[a](o),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,i)}function i$(e){return function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function o(e){r$(a,r,i,o,s,"next",e)}function s(e){r$(a,r,i,o,s,"throw",e)}o(void 0)}))}}function a$({dataSourceUid:e,query:t,timeRange:n,stackTrace:r}){const{profileMetricId:i,labelsSelector:a}=CR(t),[o,s]=[n.from.unix(),n.to.unix()],{isLoggedIn:l}=xF(),c=vj.build(e,mF),{isFetching:u,error:d,data:p}=Pa({enabled:Boolean(i&&a&&r.length>0&&o>0&&s>0),queryKey:["function-details",i,a,o,s,r,l],queryFn:i$((function*(){const t=yield c.selectMergeProfileJson({profileMetricId:i,labelsSelector:a,start:o,end:s,stackTrace:r,maxNodes:500}),n=function(e,t){var n,r,i,a;const o=new Map,s=new Map(null===(n=t.location)||void 0===n?void 0:n.map((e=>[e.id,e]))),l=new Map(null===(r=t.function)||void 0===r?void 0:r.map((e=>[e.id,e]))),c=new Map(null===(i=t.mapping)||void 0===i?void 0:i.map((e=>[e.id,e])));return null===(a=t.sample)||void 0===a||a.filter((e=>void 0!==e.locationId)).forEach((n=>JF(e,t,s,l,c,n,o))),Array.from(o.values())}(r[r.length-1],t).sort(n$);return l?function(e,t){return e$.apply(this,arguments)}(e,n):n}))}),h=(0,Fi.useMemo)((()=>(null==p?void 0:p.length)?p:[{name:r.at(-1),startLine:void 0,fileName:"",callSites:new Map,unit:"",commit:ZM}]),[p,r]);return{isFetching:u,error:c.isAbortError(d)?null:d,functionsDetails:h}}const o$=[60,3600,86400,604800,2592e3,31536e3,1/0],s$=["second","minute","hour","day","week","month","year"],l$=new Intl.RelativeTimeFormat("en-US",{numeric:"auto"});const c$=new Intl.DateTimeFormat("en-US",{year:"numeric",month:"long",day:"2-digit"});function u$(e){return e?`${c$.format(e)} (${function(e){const t=e.getTime(),n=Math.round((t-Date.now())/1e3),r=o$.findIndex((e=>e>Math.abs(n))),i=r?o$[r-1]:1;return l$.format(Math.floor(n/i),s$[r])}(e)})`:"?"}const d$=e=>({container:i.css` display: flex; flex-direction: column; justify-content: flex-start; @@ -710,7 +710,7 @@ define(["@emotion/css","@grafana/data","@grafana/runtime","@grafana/ui","d3","lo `,message:i.css` font-size: 12px; color: ${e.colors.text.secondary}; - `});function g$({commit:e}){const t=(0,o.useStyles2)(m$),{author:n,samples:r}=e,i=n.login,a=n.avatarURL,s=BF(r.unit)(r.current),l=Math.round(r.current/r.total*100);return $i().createElement("div",{className:t.container},$i().createElement("div",{className:t.firstLine},$i().createElement("span",{className:t.sha},S$(e.sha)),$i().createElement("span",{className:t.sample},s.text,s.suffix," (",l,"%)")),$i().createElement("div",{className:t.secondLine},a&&$i().createElement("img",{className:t.avatar,src:a,alt:i}),$i().createElement("span",null,i," on ",f$(e.date))),$i().createElement("span",{className:t.message},E$(e.message)))}const y$=e=>({container:i.css` + `});function p$({commit:e}){const t=(0,o.useStyles2)(d$),{author:n,samples:r}=e,i=n.login,a=n.avatarURL,s=LF(r.unit)(r.current),l=Math.round(r.current/r.total*100);return $i().createElement("div",{className:t.container},$i().createElement("div",{className:t.firstLine},$i().createElement("span",{className:t.sha},y$(e.sha)),$i().createElement("span",{className:t.sample},s.text,s.suffix," (",l,"%)")),$i().createElement("div",{className:t.secondLine},a&&$i().createElement("img",{className:t.avatar,src:a,alt:i}),$i().createElement("span",null,i," on ",u$(e.date))),$i().createElement("span",{className:t.message},b$(e.message)))}const h$=e=>({container:i.css` display: flex; flex-direction: row; justify-content: flex-start; @@ -720,7 +720,7 @@ define(["@emotion/css","@grafana/data","@grafana/runtime","@grafana/ui","d3","lo font-family: monospace; `,message:i.css` color: ${e.colors.text.secondary}; - `});function b$({commit:e}){const t=(0,o.useStyles2)(y$);return $i().createElement("div",{className:t.container},$i().createElement("span",{className:t.sha},S$(e.sha)),$i().createElement("div",{className:t.message},$i().createElement("span",null,E$(e.message))))}function v$({commits:e,selectedCommit:t,onChange:n}){return $i().createElement(o.Select,{options:e.map((e=>({label:e.sha,value:e}))),value:{label:t.sha,value:t},hideSelectedOptions:!0,isSearchable:!1,noOptionsMessage:"No commits found",formatOptionLabel:w$,onChange:e=>{e.value&&n(e.value)}})}function w$(e,t){var n;const{value:r}=e;if(!r)return null;return(null===(n=t.selectValue[0])||void 0===n?void 0:n.value)===r?$i().createElement(b$,{commit:r}):$i().createElement(g$,{commit:r})}const S$=e=>e===iF.sha?e:e.substring(0,7),E$=e=>e.split("\n")[0],x$=({onDismiss:e})=>$i().createElement(o.Alert,{severity:"info",title:"Integrate with Github",buttonContent:"Dismiss",onRemove:e},$i().createElement("p",null,"This language supports integration with ",$i().createElement(o.Icon,{name:"github"})," GitHub."),$i().createElement("p",null,"To activate this feature, you will need to add two new labels when sending profiles"," ",$i().createElement("code",null,"service_repository")," and ",$i().createElement("code",null,"service_ref"),"."," "),$i().createElement("p",null,"They should respectively be set to the full repository GitHub URL and the current"," ",$i().createElement(o.TextLink,{href:"https://docs.github.com/en/rest/git/refs?apiVersion=2022-11-28#about-git-references",external:!0},"git ref")," ","of the running service."),$i().createElement(o.Icon,{name:"document-info"})," ",$i().createElement(o.TextLink,{href:"https://grafana.com/docs/grafana-cloud/monitor-applications/profiles/pyroscope-github-integration/",external:!0},"Learn more"));function O$({isLoading:e,children:t}){return e?$i().createElement(o.Spinner,{inline:!0}):$i().createElement($i().Fragment,null,t)}const _$=(0,Fi.memo)(O$);function T$(e,t,n,r,i,a,o){try{var s=e[a](o),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,i)}function C$(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class k$ extends bh{constructor(){super({key:"function-details-panel"}),C$(this,"useSceneFunctionDetailsPanel",((e,t)=>{var n,r;const i=tm.findByKeyAndType(this,"dataSource",sR).useState().value,a=oR(this,"filters"),{functionsDetails:o,error:s,isFetching:l}=c$({dataSourceUid:i,query:a,timeRange:t,stackTrace:e}),[c,u]=(0,Fi.useState)(),[d,p]=(0,Fi.useState)(o[0]),[h,f]=(0,Fi.useState)(ta.has(ta.KEYS.GITHUB_INTEGRATION));o&&c!==o&&(u(o),d!==o[0]&&p(o[0]));const m=((null==d||null===(n=d.version)||void 0===n?void 0:n.repository)||"").startsWith(ZF);const g=null==d||null===(r=d.fileName)||void 0===r?void 0:r.endsWith(".go"),y=!h&&!m&&g,b=(0,Fi.useMemo)((()=>o.map((e=>Array.from(e.callSites.values()).reduce(((e,{cum:t})=>e+t),0))).reduce(((e,t)=>e+t),0)),[o]),v=JF(o,b),w=v.find((({sha:e})=>{var t;return e===(null==d||null===(t=d.commit)||void 0===t?void 0:t.sha)}));return{data:{isLoading:l,fetchFunctionDetailsError:s,functionDetails:d,repository:e$(m,null==d?void 0:d.version),commits:v,selectedCommit:w,isGitHubSupported:g,shouldDisplayGitHubBanner:y,dataSourceUid:i},actions:{selectCommit(e){const t=o.find((({commit:t})=>t.sha===e.sha));p(t)},copyFilePathToClipboard(){return(e=function*(){try{(null==d?void 0:d.fileName)&&(yield navigator.clipboard.writeText(d.fileName),Is(["File path copied to clipboard!"]))}catch(e){}},function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function o(e){T$(a,r,i,o,s,"next",e)}function s(e){T$(a,r,i,o,s,"throw",e)}o(void 0)}))})();var e},dismissGitHubBanner(){ta.set(ta.KEYS.GITHUB_INTEGRATION,{}),f(!0)}}}}))}}C$(k$,"LABEL_WIDTH",16),C$(k$,"Component",(({model:e,timeRange:t,stackTrace:n,onClose:r})=>{const i=(0,o.useStyles2)(P$),{data:a,actions:s}=e.useSceneFunctionDetailsPanel(n,t);return $i().createElement(LI,{className:i.sidePanel,title:"Function Details",isLoading:!1,headerActions:$i().createElement(o.IconButton,{name:"times-circle",variant:"secondary","aria-label":"close",onClick:r}),dataTestId:"function-details-panel"},$i().createElement("div",{className:i.content},a.fetchFunctionDetailsError&&$i().createElement(pI,{severity:"error",title:"Error while fetching function details!",error:a.fetchFunctionDetailsError}),$i().createElement("div",{className:i.container},$i().createElement("div",{className:i.row,"data-testid":"row-function-name"},$i().createElement(o.InlineLabel,{width:k$.LABEL_WIDTH},"Function name"),$i().createElement(o.Tooltip,{content:a.functionDetails.name,placement:"top"},$i().createElement("span",{className:i.textValue},a.functionDetails.name))),$i().createElement("div",{className:i.row,"data-testid":"row-start-line"},$i().createElement(o.InlineLabel,{tooltip:"The line where this function definition starts",width:k$.LABEL_WIDTH},"Start line"),$i().createElement("span",{className:i.textValue},$i().createElement(_$,{isLoading:a.isLoading},void 0!==a.functionDetails.startLine?a.functionDetails.startLine:"-"))),$i().createElement("div",{className:i.row,"data-testid":"row-file-path"},$i().createElement(o.InlineLabel,{tooltip:"File path where that function is defined",width:k$.LABEL_WIDTH},"File"),$i().createElement(_$,{isLoading:a.isLoading},a.functionDetails.fileName?$i().createElement($i().Fragment,null,$i().createElement(o.Tooltip,{content:a.functionDetails.fileName,placement:"top"},$i().createElement("span",{className:i.textValue},"‎","/"===(null==(l=a.functionDetails.fileName)?void 0:l[0])?l.substring(1)+"/":l)),$i().createElement(o.IconButton,{name:"clipboard-alt",tooltip:"Copy to clipboard",onClick:s.copyFilePathToClipboard})):"-")),a.shouldDisplayGitHubBanner&&$i().createElement("div",{className:i.row,"data-testid":"row-github-banner"},$i().createElement(x$,{onDismiss:s.dismissGitHubBanner})),$i().createElement("div",{className:i.row,"data-testid":"row-repository"},$i().createElement(o.InlineLabel,{tooltip:"The repository configured for the selected service",width:k$.LABEL_WIDTH},"Repository"),$i().createElement(_$,{isLoading:a.isLoading},a.repository?a.repository.isGitHub?$i().createElement(KF,{enableIntegration:a.isGitHubSupported,repository:a.repository}):$i().createElement(o.TextLink,{href:a.repository,external:!0},a.repository):"-")),$i().createElement("div",{className:i.row,"data-testid":"row-commit"},$i().createElement(o.InlineLabel,{width:k$.LABEL_WIDTH,tooltip:"The version of the application (commit) where the function is defined. Use the dropdown menu to target a specific commit."},"Commit"),$i().createElement(_$,{isLoading:a.isLoading},$i().createElement(v$,{commits:a.commits,selectedCommit:a.selectedCommit,onChange:s.selectCommit})))),$i().createElement(WF,{dataSourceUid:a.dataSourceUid,functionDetails:a.functionDetails})));var l}));const P$=e=>({sidePanel:i.css` + `});function f$({commit:e}){const t=(0,o.useStyles2)(h$);return $i().createElement("div",{className:t.container},$i().createElement("span",{className:t.sha},y$(e.sha)),$i().createElement("div",{className:t.message},$i().createElement("span",null,b$(e.message))))}function m$({commits:e,selectedCommit:t,onChange:n}){return $i().createElement(o.Select,{options:e.map((e=>({label:e.sha,value:e}))),value:{label:t.sha,value:t},hideSelectedOptions:!0,isSearchable:!1,noOptionsMessage:"No commits found",formatOptionLabel:g$,onChange:e=>{e.value&&n(e.value)}})}function g$(e,t){var n;const{value:r}=e;if(!r)return null;return(null===(n=t.selectValue[0])||void 0===n?void 0:n.value)===r?$i().createElement(f$,{commit:r}):$i().createElement(p$,{commit:r})}const y$=e=>e===ZM.sha?e:e.substring(0,7),b$=e=>e.split("\n")[0],v$=({onDismiss:e})=>$i().createElement(o.Alert,{severity:"info",title:"Integrate with Github",buttonContent:"Dismiss",onRemove:e},$i().createElement("p",null,"This language supports integration with ",$i().createElement(o.Icon,{name:"github"})," GitHub."),$i().createElement("p",null,"To activate this feature, you will need to add two new labels when sending profiles"," ",$i().createElement("code",null,"service_repository")," and ",$i().createElement("code",null,"service_git_ref"),"."," "),$i().createElement("p",null,"They should respectively be set to the full repository GitHub URL and the current"," ",$i().createElement(o.TextLink,{href:"https://docs.github.com/en/rest/git/refs?apiVersion=2022-11-28#about-git-references",external:!0},"git ref")," ","of the running service."),$i().createElement(o.Icon,{name:"document-info"})," ",$i().createElement(o.TextLink,{href:"https://grafana.com/docs/grafana-cloud/monitor-applications/profiles/pyroscope-github-integration/",external:!0},"Learn more"));function w$({isLoading:e,children:t}){return e?$i().createElement(o.Spinner,{inline:!0}):$i().createElement($i().Fragment,null,t)}const S$=(0,Fi.memo)(w$);function E$(e,t,n,r,i,a,o){try{var s=e[a](o),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,i)}function x$(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class O$ extends bh{constructor(){super({key:"function-details-panel"}),x$(this,"useSceneFunctionDetailsPanel",((e,t)=>{var n,r;const i=tm.findByKeyAndType(this,"dataSource",sR).useState().value,a=oR(this,"filters"),{functionsDetails:o,error:s,isFetching:l}=a$({dataSourceUid:i,query:a,timeRange:t,stackTrace:e}),[c,u]=(0,Fi.useState)(),[d,p]=(0,Fi.useState)(o[0]),[h,f]=(0,Fi.useState)(ta.has(ta.KEYS.GITHUB_INTEGRATION));o&&c!==o&&(u(o),d!==o[0]&&p(o[0]));const m=((null==d||null===(n=d.version)||void 0===n?void 0:n.repository)||"").startsWith(KF);const g=null==d||null===(r=d.fileName)||void 0===r?void 0:r.endsWith(".go"),y=!h&&!m&&g,b=(0,Fi.useMemo)((()=>o.map((e=>Array.from(e.callSites.values()).reduce(((e,{cum:t})=>e+t),0))).reduce(((e,t)=>e+t),0)),[o]),v=QF(o,b),w=v.find((({sha:e})=>{var t;return e===(null==d||null===(t=d.commit)||void 0===t?void 0:t.sha)}));return{data:{isLoading:l,fetchFunctionDetailsError:s,functionDetails:d,repository:YF(m,null==d?void 0:d.version),commits:v,selectedCommit:w,isGitHubSupported:g,shouldDisplayGitHubBanner:y,dataSourceUid:i},actions:{selectCommit(e){const t=o.find((({commit:t})=>t.sha===e.sha));p(t)},copyFilePathToClipboard(){return(e=function*(){try{(null==d?void 0:d.fileName)&&(yield navigator.clipboard.writeText(d.fileName),Is(["File path copied to clipboard!"]))}catch(e){}},function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function o(e){E$(a,r,i,o,s,"next",e)}function s(e){E$(a,r,i,o,s,"throw",e)}o(void 0)}))})();var e},dismissGitHubBanner(){ta.set(ta.KEYS.GITHUB_INTEGRATION,{}),f(!0)}}}}))}}x$(O$,"LABEL_WIDTH",16),x$(O$,"Component",(({model:e,timeRange:t,stackTrace:n,onClose:r})=>{const i=(0,o.useStyles2)(_$),{data:a,actions:s}=e.useSceneFunctionDetailsPanel(n,t);return $i().createElement(LI,{className:i.sidePanel,title:"Function Details",isLoading:!1,headerActions:$i().createElement(o.IconButton,{name:"times-circle",variant:"secondary","aria-label":"close",onClick:r}),dataTestId:"function-details-panel"},$i().createElement("div",{className:i.content},a.fetchFunctionDetailsError&&$i().createElement(pI,{severity:"error",title:"Error while fetching function details!",error:a.fetchFunctionDetailsError}),$i().createElement("div",{className:i.container},$i().createElement("div",{className:i.row,"data-testid":"row-function-name"},$i().createElement(o.InlineLabel,{width:O$.LABEL_WIDTH},"Function name"),$i().createElement(o.Tooltip,{content:a.functionDetails.name,placement:"top"},$i().createElement("span",{className:i.textValue},a.functionDetails.name))),$i().createElement("div",{className:i.row,"data-testid":"row-start-line"},$i().createElement(o.InlineLabel,{tooltip:"The line where this function definition starts",width:O$.LABEL_WIDTH},"Start line"),$i().createElement("span",{className:i.textValue},$i().createElement(S$,{isLoading:a.isLoading},void 0!==a.functionDetails.startLine?a.functionDetails.startLine:"-"))),$i().createElement("div",{className:i.row,"data-testid":"row-file-path"},$i().createElement(o.InlineLabel,{tooltip:"File path where that function is defined",width:O$.LABEL_WIDTH},"File"),$i().createElement(S$,{isLoading:a.isLoading},a.functionDetails.fileName?$i().createElement($i().Fragment,null,$i().createElement(o.Tooltip,{content:a.functionDetails.fileName,placement:"top"},$i().createElement("span",{className:i.textValue},"‎","/"===(null==(l=a.functionDetails.fileName)?void 0:l[0])?l.substring(1)+"/":l)),$i().createElement(o.IconButton,{name:"clipboard-alt",tooltip:"Copy to clipboard",onClick:s.copyFilePathToClipboard})):"-")),a.shouldDisplayGitHubBanner&&$i().createElement("div",{className:i.row,"data-testid":"row-github-banner"},$i().createElement(v$,{onDismiss:s.dismissGitHubBanner})),$i().createElement("div",{className:i.row,"data-testid":"row-repository"},$i().createElement(o.InlineLabel,{tooltip:"The repository configured for the selected service",width:O$.LABEL_WIDTH},"Repository"),$i().createElement(S$,{isLoading:a.isLoading},a.repository?a.repository.isGitHub?$i().createElement(HF,{enableIntegration:a.isGitHubSupported,repository:a.repository}):$i().createElement(o.TextLink,{href:a.repository,external:!0},a.repository):"-")),$i().createElement("div",{className:i.row,"data-testid":"row-commit"},$i().createElement(o.InlineLabel,{width:O$.LABEL_WIDTH,tooltip:"The version of the application (commit) where the function is defined. Use the dropdown menu to target a specific commit."},"Commit"),$i().createElement(S$,{isLoading:a.isLoading},$i().createElement(m$,{commits:a.commits,selectedCommit:a.selectedCommit,onChange:s.selectCommit})))),$i().createElement(UF,{dataSourceUid:a.dataSourceUid,functionDetails:a.functionDetails})));var l}));const _$=e=>({sidePanel:i.css` flex: 1 0 50%; margin-left: 8px; max-width: calc(50% - 4px); @@ -748,23 +748,23 @@ define(["@emotion/css","@grafana/data","@grafana/runtime","@grafana/ui","d3","lo text-overflow: ellipsis; overflow: hidden; white-space: nowrap; - `});function R$(e){const{spanSelector:t,removeSpanSelector:n}=e,r=(0,o.useStyles2)(A$);return $i().createElement("div",{className:r.container},$i().createElement(o.Tooltip,{content:`You have added a span selector to the flamegraph query (${t}).`,placement:"top"},$i().createElement("span",null,"Span selector added")),$i().createElement(o.Button,{size:"md",fill:"text",variant:"secondary",icon:"times",tooltip:"Remove span selector from query",tooltipPlacement:"top",onClick:()=>{n()}}))}const A$=()=>({container:i.css` + `});function T$(e){const{spanSelector:t,removeSpanSelector:n}=e,r=(0,o.useStyles2)(C$);return $i().createElement("div",{className:r.container},$i().createElement(o.Tooltip,{content:`You have added a span selector to the flamegraph query (${t}).`,placement:"top"},$i().createElement("span",null,"Span selector added")),$i().createElement(o.Button,{size:"md",fill:"text",variant:"secondary",icon:"times",tooltip:"Remove span selector from query",tooltipPlacement:"top",onClick:()=>{n()}}))}const C$=()=>({container:i.css` padding: 0 4px; - `});function D$(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class j$ extends bh{onActivate(){let e;const t=this.subscribeToState(((t,n)=>{var i;t.$data!==n.$data&&(e&&e.unsubscribe(),e=null===(i=t.$data)||void 0===i?void 0:i.subscribeToState((e=>{var t;(null===(t=e.data)||void 0===t?void 0:t.state)===r.LoadingState.Done&&this.setState({lastTimeRange:e.data.timeRange})})))}));return()=>{t.unsubscribe(),null==e||e.unsubscribe()}}buildTitle(){const e=wR(this,"serviceName"),t=WP(wR(this,"profileMetricId")).type;return $i().createElement($i().Fragment,null,$i().createElement(Ko,{size:"small"}),"Flame graph for ",e," (",t,")")}removeSpanSelector(){this.publishEvent(new uF({}),!0)}constructor(){super({key:"flame-graph",$data:new cy({datasource:QP,queries:[]}),lastTimeRange:void 0,exportMenu:new CF,aiPanel:new cM,functionDetailsPanel:new k$}),D$(this,"useSceneFlameGraph",(e=>{var t,n,i,a,s;const{isLight:l}=(0,o.useTheme2)(),c=(0,Fi.useMemo)((()=>()=>(0,r.createTheme)({colors:{mode:l?"light":"dark"}})),[l]),[u]=hM(),{settings:d,error:p}=dI(),{$data:h,lastTimeRange:f,exportMenu:m,aiPanel:g,functionDetailsPanel:y}=this.useState();p&&js(["Error while retrieving the plugin settings!","Some features might not work as expected (e.g. collapsed flame graphs). Please try to reload the page, sorry for the inconvenience."]),(0,Fi.useEffect)((()=>{u&&this.setState({$data:hF({maxNodes:u,spanSelector:e})})}),[u,e]);const b=h.useState(),v=null==b||null===(t=b.data)||void 0===t?void 0:t.state,w=v===r.LoadingState.Error?(null==b||null===(i=b.data)||void 0===i||null===(n=i.errors)||void 0===n?void 0:n[0])||new Error("Unknown error!"):null,S=v===r.LoadingState.Loading,E=null==b||null===(s=b.data)||void 0===s||null===(a=s.series)||void 0===a?void 0:a[0],x=Number(null==E?void 0:E.length)>1,O=oR(this,"filters");return{data:{title:this.buildTitle(),isLoading:S,isFetchingProfileData:S,hasProfileData:x,profileData:E,spanSelector:e,fetchProfileError:w,settings:d,export:{menu:m,query:O,timeRange:f},ai:{panel:g,fetchParams:[{query:O,timeRange:f}]},gitHub:{panel:y,timeRange:f}},actions:{getTheme:c}}})),this.addActivationHandler(this.onActivate.bind(this))}}D$(j$,"Component",(({model:e})=>{var t;const n=(0,o.useStyles2)(I$),r=wR(e,"spanSelector"),{data:i,actions:a}=e.useSceneFlameGraph(r),s=iI(),l=PF(s),c=i.isLoading||!i.hasProfileData;(0,Fi.useEffect)((()=>{c&&s.close()}),[c,s]);const u=(0,Fi.useMemo)((()=>$i().createElement($i().Fragment,null,i.title,i.isLoading&&$i().createElement(o.Spinner,{inline:!0,className:n.spinner}))),[i.isLoading,i.title,n.spinner]);return $i().createElement("div",{className:n.flex},$i().createElement(LI,{dataTestId:"flame-graph-panel",className:n.flamegraphPanel,title:u,isLoading:i.isLoading,headerActions:$i().createElement($i().Fragment,null,r&&$i().createElement(R$,{spanSelector:r,removeSpanSelector:()=>e.removeSpanSelector()}),$i().createElement(iN,{disabled:c||s.isOpen("ai"),onClick:()=>s.open("ai"),interactionName:"g_pyroscope_app_explain_flamegraph_clicked"},"Explain Flame Graph"))},i.fetchProfileError&&$i().createElement(pI,{severity:"error",title:"Error while loading profile data!",error:i.fetchProfileError}),!i.fetchProfileError&&$i().createElement(fu,{data:i.profileData,disableCollapsing:!(null===(t=i.settings)||void 0===t?void 0:t.collapsedFlamegraphs),getTheme:a.getTheme,getExtraContextMenuButtons:l.actions.getExtraFlameGraphMenuItems,extraHeaderElements:$i().createElement(i.export.menu.Component,{model:i.export.menu,query:i.export.query,timeRange:i.export.timeRange}),keepFocusOnDataChange:!0})),s.isOpen("ai")&&$i().createElement(i.ai.panel.Component,{model:i.ai.panel,fetchParams:i.ai.fetchParams,onClose:s.close}),s.isOpen("function-details")&&$i().createElement(i.gitHub.panel.Component,{model:i.gitHub.panel,timeRange:i.gitHub.timeRange,stackTrace:l.data.stacktrace,onClose:s.close}))}));const I$=e=>({flex:i.css` + `});function k$(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class P$ extends bh{onActivate(){let e;const t=this.subscribeToState(((t,n)=>{var i;t.$data!==n.$data&&(e&&e.unsubscribe(),e=null===(i=t.$data)||void 0===i?void 0:i.subscribeToState((e=>{var t;(null===(t=e.data)||void 0===t?void 0:t.state)===r.LoadingState.Done&&this.setState({lastTimeRange:e.data.timeRange})})))}));return()=>{t.unsubscribe(),null==e||e.unsubscribe()}}buildTitle(){const e=wR(this,"serviceName"),t=WP(wR(this,"profileMetricId")).type;return $i().createElement($i().Fragment,null,$i().createElement(Ko,{size:"small"}),"Flame graph for ",e," (",t,")")}removeSpanSelector(){this.publishEvent(new aF({}),!0)}constructor(){super({key:"flame-graph",$data:new cy({datasource:QP,queries:[]}),lastTimeRange:void 0,exportMenu:new EF,aiPanel:new iM,functionDetailsPanel:new O$}),k$(this,"useSceneFlameGraph",(e=>{var t,n,i,a,s;const{isLight:l}=(0,o.useTheme2)(),c=(0,Fi.useMemo)((()=>()=>(0,r.createTheme)({colors:{mode:l?"light":"dark"}})),[l]),[u]=lM(),{settings:d,error:p}=dI(),{$data:h,lastTimeRange:f,exportMenu:m,aiPanel:g,functionDetailsPanel:y}=this.useState();p&&js(["Error while retrieving the plugin settings!","Some features might not work as expected (e.g. collapsed flame graphs). Please try to reload the page, sorry for the inconvenience."]),(0,Fi.useEffect)((()=>{u&&this.setState({$data:lF({maxNodes:u,spanSelector:e})})}),[u,e]);const b=h.useState(),v=null==b||null===(t=b.data)||void 0===t?void 0:t.state,w=v===r.LoadingState.Error?(null==b||null===(i=b.data)||void 0===i||null===(n=i.errors)||void 0===n?void 0:n[0])||new Error("Unknown error!"):null,S=v===r.LoadingState.Loading,E=null==b||null===(s=b.data)||void 0===s||null===(a=s.series)||void 0===a?void 0:a[0],x=Number(null==E?void 0:E.length)>1,O=oR(this,"filters");return{data:{title:this.buildTitle(),isLoading:S,isFetchingProfileData:S,hasProfileData:x,profileData:E,spanSelector:e,fetchProfileError:w,settings:d,export:{menu:m,query:O,timeRange:f},ai:{panel:g,fetchParams:[{query:O,timeRange:f}]},gitHub:{panel:y,timeRange:f}},actions:{getTheme:c}}})),this.addActivationHandler(this.onActivate.bind(this))}}k$(P$,"Component",(({model:e})=>{var t;const n=(0,o.useStyles2)(R$),r=wR(e,"spanSelector"),{data:i,actions:a}=e.useSceneFlameGraph(r),s=iI(),l=OF(s),c=i.isLoading||!i.hasProfileData;(0,Fi.useEffect)((()=>{c&&s.close()}),[c,s]);const u=(0,Fi.useMemo)((()=>$i().createElement($i().Fragment,null,i.title,i.isLoading&&$i().createElement(o.Spinner,{inline:!0,className:n.spinner}))),[i.isLoading,i.title,n.spinner]);return $i().createElement("div",{className:n.flex},$i().createElement(LI,{dataTestId:"flame-graph-panel",className:n.flamegraphPanel,title:u,isLoading:i.isLoading,headerActions:$i().createElement($i().Fragment,null,r&&$i().createElement(T$,{spanSelector:r,removeSpanSelector:()=>e.removeSpanSelector()}),$i().createElement(VI,{disabled:c||s.isOpen("ai"),onClick:()=>s.open("ai"),interactionName:"g_pyroscope_app_explain_flamegraph_clicked"},"Explain Flame Graph"))},i.fetchProfileError&&$i().createElement(pI,{severity:"error",title:"Error while loading profile data!",error:i.fetchProfileError}),!i.fetchProfileError&&$i().createElement(fu,{data:i.profileData,disableCollapsing:!(null===(t=i.settings)||void 0===t?void 0:t.collapsedFlamegraphs),getTheme:a.getTheme,getExtraContextMenuButtons:l.actions.getExtraFlameGraphMenuItems,extraHeaderElements:$i().createElement(i.export.menu.Component,{model:i.export.menu,query:i.export.query,timeRange:i.export.timeRange}),keepFocusOnDataChange:!0})),s.isOpen("ai")&&$i().createElement(i.ai.panel.Component,{model:i.ai.panel,fetchParams:i.ai.fetchParams,onClose:s.close}),s.isOpen("function-details")&&$i().createElement(i.gitHub.panel.Component,{model:i.gitHub.panel,timeRange:i.gitHub.timeRange,stackTrace:l.data.stacktrace,onClose:s.close}))}));const R$=e=>({flex:i.css` display: flex; `,flamegraphPanel:i.css` min-width: 0; flex-grow: 1; `,spinner:i.css` margin-left: ${e.spacing(1)}; - `});class N$ extends bh{onActivate(e){e&&this.initVariables(e);const t=tm.findByKeyAndType(this,"profileMetricId",eR);return t.setState({query:eR.QUERY_SERVICE_NAME_DEPENDENT}),t.update(!0),()=>{t.setState({query:eR.QUERY_DEFAULT}),t.update(!0)}}initVariables(e){const{serviceName:t,profileMetricId:n,filters:r}=e.queryRunnerParams;if(t){tm.findByKeyAndType(this,"serviceName",iR).changeValueTo(t)}if(n){tm.findByKeyAndType(this,"profileMetricId",eR).changeValueTo(n)}if(r){tm.findByKeyAndType(this,"filters",vR).setState({filters:r})}}getVariablesAndGridControls(){return{variables:[tm.findByKeyAndType(this,"serviceName",iR),tm.findByKeyAndType(this,"profileMetricId",eR),tm.findByKeyAndType(this,"filters",vR)],gridControls:[]}}static Component({model:e}){const t=(0,o.useStyles2)(L$),{mainTimeseries:n,body:r}=e.useState();return $i().createElement("div",{className:t.flex},$i().createElement("div",{className:t.mainTimeseries},$i().createElement(n.Component,{model:n})),$i().createElement(r.Component,{model:r}))}constructor({item:e}){super({key:"explore-service-flame-graph",mainTimeseries:new ID({item:e,headerActions:e=>[new fD({type:"view-labels",item:e}),new eD({item:e})]}),body:new j$}),this.addActivationHandler(this.onActivate.bind(this,e))}}const L$=e=>({flex:i.css` + `});class A$ extends bh{onActivate(e){e&&this.initVariables(e);const t=tm.findByKeyAndType(this,"profileMetricId",eR);return t.setState({query:eR.QUERY_SERVICE_NAME_DEPENDENT}),t.update(!0),()=>{t.setState({query:eR.QUERY_DEFAULT}),t.update(!0)}}initVariables(e){const{serviceName:t,profileMetricId:n,filters:r}=e.queryRunnerParams;if(t){tm.findByKeyAndType(this,"serviceName",iR).changeValueTo(t)}if(n){tm.findByKeyAndType(this,"profileMetricId",eR).changeValueTo(n)}if(r){tm.findByKeyAndType(this,"filters",vR).setState({filters:r})}}getVariablesAndGridControls(){return{variables:[tm.findByKeyAndType(this,"serviceName",iR),tm.findByKeyAndType(this,"profileMetricId",eR),tm.findByKeyAndType(this,"filters",vR)],gridControls:[]}}static Component({model:e}){const t=(0,o.useStyles2)(D$),{mainTimeseries:n,body:r}=e.useState();return $i().createElement("div",{className:t.flex},$i().createElement("div",{className:t.mainTimeseries},$i().createElement(n.Component,{model:n})),$i().createElement(r.Component,{model:r}))}constructor({item:e}){super({key:"explore-service-flame-graph",mainTimeseries:new ID({item:e,headerActions:e=>[new fD({type:"view-labels",item:e}),new eD({item:e})]}),body:new P$}),this.addActivationHandler(this.onActivate.bind(this,e))}}const D$=e=>({flex:i.css` display: flex; flex-direction: column; width: 100%; gap: ${e.spacing(1)}; `,mainTimeseries:i.css` height: ${ID.MIN_HEIGHT}px; - `});function M$(e,t,n,r,i,a,o){try{var s=e[a](o),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,i)}function F$(){return $$.apply(this,arguments)}function $$(){var e;return e=function*(){Ts("g_pyroscope_app_share_link_clicked");try{yield navigator.clipboard.writeText(function(){const e=new URL(window.location.toString()),{searchParams:t}=e;return t.get("from")||t.set("from",mj().from),t.get("to")||t.set("to",mj().to),["from","to","from-2","to-2","from-3","to-3","diffFrom","diffTo","diffFrom-2","diffTo-2"].forEach((e=>{const n=t.get(e);n&&t.set(e,String(r.dateMath.parse(n).valueOf()))})),e}().toString()),Is(["Link copied to clipboard!"])}catch(e){Xi.error(e,{info:"Error while creating the shareable link!"})}},$$=function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function o(e){M$(a,r,i,o,s,"next",e)}function s(e){M$(a,r,i,o,s,"throw",e)}o(void 0)}))},$$.apply(this,arguments)}function B$({options:e,value:t,onChange:n}){const r=(0,o.useStyles2)(V$),a=e.findIndex((e=>e.value===t));return $i().createElement("div",{className:r.explorationTypeContainer,"data-testid":"exploration-types"},$i().createElement("div",{className:r.label},"Exploration"),$i().createElement("div",{className:r.breadcrumb},e.map(((s,l)=>{const c=t===s.value,u=(d=l,a===e.length-1?d===a?"primary":"secondary":d<=a?"primary":"secondary");var d;const p=[c&&"active","primary"===u&&"primary"];return $i().createElement(Fi.Fragment,{key:s.value},$i().createElement(o.Button,{className:(0,i.cx)(r.button,...p),variant:u,size:"sm","aria-label":s.label,icon:s.icon,onClick:c?na:()=>n(s.value),tooltip:s.description,tooltipPlacement:"top","data-testid":c?"is-active":void 0},s.label),l({explorationTypeContainer:i.css` + `});function j$(e,t,n,r,i,a,o){try{var s=e[a](o),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,i)}function I$(){return N$.apply(this,arguments)}function N$(){var e;return e=function*(){Ts("g_pyroscope_app_share_link_clicked");try{yield navigator.clipboard.writeText(function(){const e=new URL(window.location.toString()),{searchParams:t}=e;return t.get("from")||t.set("from",mj().from),t.get("to")||t.set("to",mj().to),["from","to","from-2","to-2","from-3","to-3","diffFrom","diffTo","diffFrom-2","diffTo-2"].forEach((e=>{const n=t.get(e);n&&t.set(e,String(r.dateMath.parse(n).valueOf()))})),e}().toString()),Is(["Link copied to clipboard!"])}catch(e){Xi.error(e,{info:"Error while creating the shareable link!"})}},N$=function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function o(e){j$(a,r,i,o,s,"next",e)}function s(e){j$(a,r,i,o,s,"throw",e)}o(void 0)}))},N$.apply(this,arguments)}function L$({options:e,value:t,onChange:n}){const r=(0,o.useStyles2)(M$),a=e.findIndex((e=>e.value===t));return $i().createElement("div",{className:r.explorationTypeContainer,"data-testid":"exploration-types"},$i().createElement("div",{className:r.label},"Exploration"),$i().createElement("div",{className:r.breadcrumb},e.map(((s,l)=>{const c=t===s.value,u=(d=l,a===e.length-1?d===a?"primary":"secondary":d<=a?"primary":"secondary");var d;const p=[c&&"active","primary"===u&&"primary"];return $i().createElement(Fi.Fragment,{key:s.value},$i().createElement(o.Button,{className:(0,i.cx)(r.button,...p),variant:u,size:"sm","aria-label":s.label,icon:s.icon,onClick:c?na:()=>n(s.value),tooltip:s.description,tooltipPlacement:"top","data-testid":c?"is-active":void 0},s.label),l({explorationTypeContainer:i.css` display: flex; align-items: center; `,label:i.css` @@ -825,7 +825,7 @@ define(["@emotion/css","@grafana/data","@grafana/runtime","@grafana/ui","d3","lo background-color: ${e.colors.text.disabled}; width: 10px; height: 2px; - `});function z$(e){const t=null===a.useChromeHeaderHeight||void 0===a.useChromeHeaderHeight?void 0:(0,a.useChromeHeaderHeight)(),n=(0,o.useStyles2)(U$,null!=t?t:0),{data:r,actions:s}=function({explorationType:e,controls:t,body:n,$variables:r,onChangeExplorationType:i}){const[a,o]=e===H$.DIFF_FLAME_GRAPH?[]:t,s=r.state.variables[0],l=null==n?void 0:n.state.primary;if("function"!=typeof l.getVariablesAndGridControls)throw new Error(`Error while rendering "${l.constructor.name}": the "getVariablesAndGridControls" method is missing! Please implement it.`);const{variables:c,gridControls:u}=l.getVariablesAndGridControls(),d=s.useState().value,p=(0,Es.useNavigate)();return{data:{explorationType:e,dataSourceVariable:s,timePickerControl:a,refreshPickerControl:o,sceneVariables:c,gridControls:u,body:n,dataSourceUid:d},actions:{onChangeExplorationType:i,onClickShareLink:F$,onClickAdHoc:(0,Fi.useCallback)((()=>{Ts("g_pyroscope_app_upload_ad_hoc_clicked"),p(`${Ri}${Ai.ADHOC}`,{state:{referrer:window.location.href}})}),[p]),onClickUserSettings:(0,Fi.useCallback)((()=>{Ts("g_pyroscope_app_user_settings_clicked"),p(`${Ri}${Ai.SETTINGS}`,{state:{referrer:window.location.href}})}),[p])}}}(e),{explorationType:l,dataSourceVariable:c,timePickerControl:u,refreshPickerControl:d,sceneVariables:p,gridControls:h}=r;return $i().createElement("div",{className:n.header,"data-testid":"allControls"},$i().createElement(_M,null),$i().createElement("div",{className:n.appControls,"data-testid":"appControls"},$i().createElement("div",{className:n.appControlsLeft},$i().createElement(B$,{options:G$.EXPLORATION_TYPE_OPTIONS,value:l,onChange:s.onChangeExplorationType})),$i().createElement("div",{className:n.appControlsRight},u&&$i().createElement(u.Component,{key:u.state.key,model:u}),d&&$i().createElement(d.Component,{key:d.state.key,model:d}),$i().createElement("div",{className:n.appMiscButtons},$i().createElement(o.IconButton,{name:"upload",tooltip:"Upload ad hoc profiles",onClick:s.onClickAdHoc}),$i().createElement(o.IconButton,{name:"cog",tooltip:"View/edit tenant settings",onClick:s.onClickUserSettings}),$i().createElement(o.IconButton,{name:"share-alt",tooltip:"Copy shareable link to the clipboard",onClick:s.onClickShareLink}),$i().createElement(ns,null)))),$i().createElement("div",{id:`scene-controls-${l}`,className:n.sceneControls,"data-testid":"sceneControls"},$i().createElement(o.Field,{label:c.state.label,className:(0,i.cx)(n.sceneVariable,c.state.name),"data-testid":c.state.name},$i().createElement(c.Component,{model:c})),p.map((e=>$i().createElement(o.Field,{key:e.state.name,label:"Filters"===e.state.label?$i().createElement("div",{className:n.sceneVariableLabel},$i().createElement(o.Icon,{name:"filter",className:n.icon}),e.state.label):e.state.label,className:(0,i.cx)(n.sceneVariable,e.state.name),"data-testid":e.state.name},$i().createElement(e.Component,{model:e})))),h.map((e=>$i().createElement(o.Field,{key:e.state.key,id:e.state.key,className:n.gridControl,label:""},$i().createElement(e.Component,{model:e}))))))}const U$=(e,t)=>({header:i.css` + `});function F$(e){const t=null===a.useChromeHeaderHeight||void 0===a.useChromeHeaderHeight?void 0:(0,a.useChromeHeaderHeight)(),n=(0,o.useStyles2)($$,null!=t?t:0),{data:r,actions:s}=function({explorationType:e,controls:t,body:n,$variables:r,onChangeExplorationType:i}){const[a,o]=e===V$.DIFF_FLAME_GRAPH?[]:t,s=r.state.variables[0],l=null==n?void 0:n.state.primary;if("function"!=typeof l.getVariablesAndGridControls)throw new Error(`Error while rendering "${l.constructor.name}": the "getVariablesAndGridControls" method is missing! Please implement it.`);const{variables:c,gridControls:u}=l.getVariablesAndGridControls(),d=s.useState().value,p=(0,Es.useNavigate)();return{data:{explorationType:e,dataSourceVariable:s,timePickerControl:a,refreshPickerControl:o,sceneVariables:c,gridControls:u,body:n,dataSourceUid:d},actions:{onChangeExplorationType:i,onClickShareLink:I$,onClickAdHoc:(0,Fi.useCallback)((()=>{Ts("g_pyroscope_app_upload_ad_hoc_clicked"),p(`${Ri}${Ai.ADHOC}`,{state:{referrer:window.location.href}})}),[p]),onClickUserSettings:(0,Fi.useCallback)((()=>{Ts("g_pyroscope_app_user_settings_clicked"),p(`${Ri}${Ai.SETTINGS}`,{state:{referrer:window.location.href}})}),[p])}}}(e),{explorationType:l,dataSourceVariable:c,timePickerControl:u,refreshPickerControl:d,sceneVariables:p,gridControls:h}=r;return $i().createElement("div",{className:n.header,"data-testid":"allControls"},$i().createElement(wM,null),$i().createElement("div",{className:n.appControls,"data-testid":"appControls"},$i().createElement("div",{className:n.appControlsLeft},$i().createElement(L$,{options:z$.EXPLORATION_TYPE_OPTIONS,value:l,onChange:s.onChangeExplorationType})),$i().createElement("div",{className:n.appControlsRight},u&&$i().createElement(u.Component,{key:u.state.key,model:u}),d&&$i().createElement(d.Component,{key:d.state.key,model:d}),$i().createElement("div",{className:n.appMiscButtons},$i().createElement(o.IconButton,{name:"upload",tooltip:"Upload ad hoc profiles",onClick:s.onClickAdHoc}),$i().createElement(o.IconButton,{name:"cog",tooltip:"View/edit tenant settings",onClick:s.onClickUserSettings}),$i().createElement(o.IconButton,{name:"share-alt",tooltip:"Copy shareable link to the clipboard",onClick:s.onClickShareLink}),$i().createElement(ns,null)))),$i().createElement("div",{id:`scene-controls-${l}`,className:n.sceneControls,"data-testid":"sceneControls"},$i().createElement(o.Field,{label:c.state.label,className:(0,i.cx)(n.sceneVariable,c.state.name),"data-testid":c.state.name},$i().createElement(c.Component,{model:c})),p.map((e=>$i().createElement(o.Field,{key:e.state.name,label:"Filters"===e.state.label?$i().createElement("div",{className:n.sceneVariableLabel},$i().createElement(o.Icon,{name:"filter",className:n.icon}),e.state.label):e.state.label,className:(0,i.cx)(n.sceneVariable,e.state.name),"data-testid":e.state.name},$i().createElement(e.Component,{model:e})))),h.map((e=>$i().createElement(o.Field,{key:e.state.key,id:e.state.key,className:n.gridControl,label:""},$i().createElement(e.Component,{model:e}))))))}const $$=(e,t)=>({header:i.css` background-color: ${e.colors.background.canvas}; position: sticky; top: ${t}px; @@ -895,11 +895,11 @@ define(["@emotion/css","@grafana/data","@grafana/runtime","@grafana/ui","d3","lo flex: 1; min-width: 112px; } - `});function q$(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var H$=function(e){return e.ALL_SERVICES="all",e.PROFILE_TYPES="profiles",e.LABELS="labels",e.FLAME_GRAPH="flame-graph",e.DIFF_FLAME_GRAPH="diff-flame-graph",e.FAVORITES="favorites",e}({});class G$ extends bh{onActivate(){const e=this.subscribeToVariableChanges(),t=this.subscribeToEvents();return this.state.explorationType||this.setExplorationType({type:G$.DEFAULT_EXPLORATION_TYPE}),()=>{t.unsubscribe(),e.unsubscribe()}}getUrlState(){return{explorationType:this.state.explorationType}}updateFromUrl(e){if("string"==typeof e.explorationType&&e.explorationType!==this.state.explorationType){const t=e.explorationType;this.setExplorationType({type:Object.values(H$).includes(t)?t:G$.DEFAULT_EXPLORATION_TYPE})}}registerRuntimeDataSources(){try{L_.registerRuntimeDataSource({dataSource:new kj}),L_.registerRuntimeDataSource({dataSource:new XA}),L_.registerRuntimeDataSource({dataSource:new QR})}catch(e){const{message:t}=e;/A runtime data source with uid (.+) has already been registered/.test(t)||Ds(e,["Fail to register all the runtime data sources!","The application cannot work as expected, please try reloading the page or if the problem persists, contact your organization admin."])}}subscribeToVariableChanges(){const e=tm.findByKeyAndType(this,"dataSource",sR).subscribeToState(((e,t)=>{e.value&&e.value!==t.value&&(vR.resetAll(this),this.resetSpanSelector())})),t=tm.findByKeyAndType(this,"serviceName",iR).subscribeToState(((e,t)=>{e.value&&e.value!==t.value&&(vR.resetAll(this),e.options.some((e=>e.value===t.value))&&this.resetSpanSelector())})),n=tm.findByKeyAndType(this,"profileMetricId",eR).subscribeToState(((e,t)=>{e.value&&e.value!==t.value&&this.resetSpanSelector()})),r=tm.findByKeyAndType(this,"filters",vR).subscribeToState(((e,t)=>{JSON.stringify(e.filters)!==JSON.stringify(t.filters)&&this.resetSpanSelector()}));return{unsubscribe(){t.unsubscribe(),e.unsubscribe(),r.unsubscribe(),n.unsubscribe()}}}subscribeToEvents(){const e=this.subscribeToEvent(cD,(e=>{this.setExplorationType({type:"profiles",comesFromUserAction:!0,item:e.payload.item})})),t=this.subscribeToEvent(lD,(e=>{this.setExplorationType({type:"labels",comesFromUserAction:!0,item:e.payload.item})})),n=this.subscribeToEvent(sD,(e=>{this.setExplorationType({type:"flame-graph",comesFromUserAction:!0,item:e.payload.item})})),r=this.subscribeToEvent(ND,(e=>{const{useAncestorTimeRange:t,clearDiffRange:n,baselineFilters:r,comparisonFilters:i}=e.payload;this.setExplorationType({type:"diff-flame-graph",comesFromUserAction:!0,bodySceneOptions:{useAncestorTimeRange:t,clearDiffRange:n,baselineFilters:r,comparisonFilters:i}})})),i=this.subscribeToEvent(uF,(()=>{this.resetSpanSelector()}));return{unsubscribe(){r.unsubscribe(),n.unsubscribe(),t.unsubscribe(),e.unsubscribe(),i.unsubscribe()}}}setExplorationType({type:e,comesFromUserAction:t,item:n,bodySceneOptions:r}){t&&(M_(),this.resetVariables(e)),this.setState({explorationType:e,body:this.buildBodyScene(e,n,r)})}resetSpanSelector(){tm.findByKeyAndType(this,"spanSelector",gj).reset()}resetVariables(e){tm.findByKeyAndType(this,"quick-filter",HA).reset(),tm.findByKeyAndType(this,"groupBy",AD).changeValueTo(AD.DEFAULT_VALUE),tm.findByKeyAndType(this,"panel-type-switcher",xR).reset(),this.resetSpanSelector(),["labels","flame-graph","diff-flame-graph"].includes(e)||tm.findByKeyAndType(this,"filters",vR).reset()}buildBodyScene(e,t,n){let r;switch(e){case"profiles":r=new hj({item:t});break;case"labels":r=new pj({item:t});break;case"flame-graph":r=new N$({item:t});break;case"diff-flame-graph":r=new AM(n||{});break;case"favorites":r=new OD;break;default:r=new gD}return new hO({direction:"column",primary:r})}static Component({model:e}){const t=(0,o.useStyles2)(W$),{data:n,actions:r}=e.useProfilesExplorer(),{explorationType:i,controls:a,body:s,$variables:l,dataSourceUid:c}=n;return $i().createElement(cF,{dataSourceUid:c},$i().createElement(z$,{explorationType:i,controls:a,body:s,$variables:l,onChangeExplorationType:r.onChangeExplorationType}),$i().createElement("div",{className:t.body,"data-testid":"sceneBody"},s&&$i().createElement(s.Component,{model:s})))}constructor(){super({key:"profiles-explorer",explorationType:void 0,body:void 0,$timeRange:new sf(mj()),$variables:new Mw({variables:[new sR,new iR,new eR,new vR({key:"filters"}),new vR({key:"filtersBaseline"}),new vR({key:"filtersComparison"}),new AD,new gj]}),controls:[new fx({isOnCanvas:!0}),new _x({isOnCanvas:!0})],gridControls:[new HA({placeholder:""}),new xR,new VA,new UA]}),q$(this,"_urlSync",new Xh(this,{keys:["explorationType"]})),q$(this,"onChangeExplorationType",(e=>{Ts("g_pyroscope_app_exploration_type_clicked",{explorationType:e}),this.setExplorationType({type:e,comesFromUserAction:!0})})),q$(this,"useProfilesExplorer",(()=>{const{explorationType:e,controls:t,body:n,$variables:r}=this.useState();return{data:{explorationType:e,controls:t,body:n,$variables:r,dataSourceUid:r.state.variables[0].useState().value},actions:{onChangeExplorationType:this.onChangeExplorationType}}})),WS().initSync(this),this.registerRuntimeDataSources(),this.addActivationHandler(this.onActivate.bind(this))}}q$(G$,"EXPLORATION_TYPE_OPTIONS",[{value:"all",label:"All services",description:"Overview of all services, for any given profile type"},{value:"profiles",label:"Profile types",description:"Overview of all the profile types for a single service"},{value:"labels",label:"Labels",description:"Single service label exploration and filtering"},{value:"flame-graph",label:"Flame graph",description:"Single service flame graph"},{value:"diff-flame-graph",label:"Diff flame graph",description:"Compare the differences between two flame graphs"},{value:"favorites",label:"Favorites",description:"Overview of favorited visualizations",icon:"favorite"}]),q$(G$,"DEFAULT_EXPLORATION_TYPE",G$.EXPLORATION_TYPE_OPTIONS[0].value);const W$=()=>({body:i.css` + `});function B$(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var V$=function(e){return e.ALL_SERVICES="all",e.PROFILE_TYPES="profiles",e.LABELS="labels",e.FLAME_GRAPH="flame-graph",e.DIFF_FLAME_GRAPH="diff-flame-graph",e.FAVORITES="favorites",e}({});class z$ extends bh{onActivate(){const e=this.subscribeToVariableChanges(),t=this.subscribeToEvents();return this.state.explorationType||this.setExplorationType({type:z$.DEFAULT_EXPLORATION_TYPE}),()=>{t.unsubscribe(),e.unsubscribe()}}getUrlState(){return{explorationType:this.state.explorationType}}updateFromUrl(e){if("string"==typeof e.explorationType&&e.explorationType!==this.state.explorationType){const t=e.explorationType;this.setExplorationType({type:Object.values(V$).includes(t)?t:z$.DEFAULT_EXPLORATION_TYPE})}}registerRuntimeDataSources(){try{L_.registerRuntimeDataSource({dataSource:new kj}),L_.registerRuntimeDataSource({dataSource:new XA}),L_.registerRuntimeDataSource({dataSource:new QR})}catch(e){const{message:t}=e;/A runtime data source with uid (.+) has already been registered/.test(t)||Ds(e,["Fail to register all the runtime data sources!","The application cannot work as expected, please try reloading the page or if the problem persists, contact your organization admin."])}}subscribeToVariableChanges(){const e=tm.findByKeyAndType(this,"dataSource",sR).subscribeToState(((e,t)=>{e.value&&e.value!==t.value&&(vR.resetAll(this),this.resetSpanSelector())})),t=tm.findByKeyAndType(this,"serviceName",iR).subscribeToState(((e,t)=>{e.value&&e.value!==t.value&&(vR.resetAll(this),e.options.some((e=>e.value===t.value))&&this.resetSpanSelector())})),n=tm.findByKeyAndType(this,"profileMetricId",eR).subscribeToState(((e,t)=>{e.value&&e.value!==t.value&&this.resetSpanSelector()})),r=tm.findByKeyAndType(this,"filters",vR).subscribeToState(((e,t)=>{JSON.stringify(e.filters)!==JSON.stringify(t.filters)&&this.resetSpanSelector()}));return{unsubscribe(){t.unsubscribe(),e.unsubscribe(),r.unsubscribe(),n.unsubscribe()}}}subscribeToEvents(){const e=this.subscribeToEvent(cD,(e=>{this.setExplorationType({type:"profiles",comesFromUserAction:!0,item:e.payload.item})})),t=this.subscribeToEvent(lD,(e=>{this.setExplorationType({type:"labels",comesFromUserAction:!0,item:e.payload.item})})),n=this.subscribeToEvent(sD,(e=>{this.setExplorationType({type:"flame-graph",comesFromUserAction:!0,item:e.payload.item})})),r=this.subscribeToEvent(ND,(e=>{const{useAncestorTimeRange:t,clearDiffRange:n,baselineFilters:r,comparisonFilters:i}=e.payload;this.setExplorationType({type:"diff-flame-graph",comesFromUserAction:!0,bodySceneOptions:{useAncestorTimeRange:t,clearDiffRange:n,baselineFilters:r,comparisonFilters:i}})})),i=this.subscribeToEvent(aF,(()=>{this.resetSpanSelector()}));return{unsubscribe(){r.unsubscribe(),n.unsubscribe(),t.unsubscribe(),e.unsubscribe(),i.unsubscribe()}}}setExplorationType({type:e,comesFromUserAction:t,item:n,bodySceneOptions:r}){t&&(M_(),this.resetVariables(e)),this.setState({explorationType:e,body:this.buildBodyScene(e,n,r)})}resetSpanSelector(){tm.findByKeyAndType(this,"spanSelector",gj).reset()}resetVariables(e){tm.findByKeyAndType(this,"quick-filter",HA).reset(),tm.findByKeyAndType(this,"groupBy",AD).changeValueTo(AD.DEFAULT_VALUE),tm.findByKeyAndType(this,"panel-type-switcher",xR).reset(),this.resetSpanSelector(),["labels","flame-graph","diff-flame-graph"].includes(e)||tm.findByKeyAndType(this,"filters",vR).reset()}buildBodyScene(e,t,n){let r;switch(e){case"profiles":r=new hj({item:t});break;case"labels":r=new pj({item:t});break;case"flame-graph":r=new A$({item:t});break;case"diff-flame-graph":r=new TM(n||{});break;case"favorites":r=new OD;break;default:r=new gD}return new hO({direction:"column",primary:r})}static Component({model:e}){const t=(0,o.useStyles2)(U$),{data:n,actions:r}=e.useProfilesExplorer(),{explorationType:i,controls:a,body:s,$variables:l,dataSourceUid:c}=n;return $i().createElement(iF,{dataSourceUid:c},$i().createElement(F$,{explorationType:i,controls:a,body:s,$variables:l,onChangeExplorationType:r.onChangeExplorationType}),$i().createElement("div",{className:t.body,"data-testid":"sceneBody"},s&&$i().createElement(s.Component,{model:s})))}constructor(){super({key:"profiles-explorer",explorationType:void 0,body:void 0,$timeRange:new sf(mj()),$variables:new Mw({variables:[new sR,new iR,new eR,new vR({key:"filters"}),new vR({key:"filtersBaseline"}),new vR({key:"filtersComparison"}),new AD,new gj]}),controls:[new fx({isOnCanvas:!0}),new _x({isOnCanvas:!0})],gridControls:[new HA({placeholder:""}),new xR,new VA,new UA]}),B$(this,"_urlSync",new Xh(this,{keys:["explorationType"]})),B$(this,"onChangeExplorationType",(e=>{Ts("g_pyroscope_app_exploration_type_clicked",{explorationType:e}),this.setExplorationType({type:e,comesFromUserAction:!0})})),B$(this,"useProfilesExplorer",(()=>{const{explorationType:e,controls:t,body:n,$variables:r}=this.useState();return{data:{explorationType:e,controls:t,body:n,$variables:r,dataSourceUid:r.state.variables[0].useState().value},actions:{onChangeExplorationType:this.onChangeExplorationType}}})),WS().initSync(this),this.registerRuntimeDataSources(),this.addActivationHandler(this.onActivate.bind(this))}}B$(z$,"EXPLORATION_TYPE_OPTIONS",[{value:"all",label:"All services",description:"Overview of all services, for any given profile type"},{value:"profiles",label:"Profile types",description:"Overview of all the profile types for a single service"},{value:"labels",label:"Labels",description:"Single service label exploration and filtering"},{value:"flame-graph",label:"Flame graph",description:"Single service flame graph"},{value:"diff-flame-graph",label:"Diff flame graph",description:"Compare the differences between two flame graphs"},{value:"favorites",label:"Favorites",description:"Overview of favorited visualizations",icon:"favorite"}]),B$(z$,"DEFAULT_EXPLORATION_TYPE",z$.EXPLORATION_TYPE_OPTIONS[0].value);const U$=()=>({body:i.css` position: relative; z-index: 0; background: transparent; - `});function Q$(){const e=(0,Fi.useMemo)((()=>new G$),[]);return Cs("explore"),$i().createElement(e.Component,{model:e})}function K$(e,t,n,r,i,a,o){try{var s=e[a](o),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,i)}function Y$(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function X$(e){for(var t=1;t{t&&s(t)}),[t]),{data:J$(X$({},o),{fetchError:n}),actions:{toggleCollapsedFlamegraphs(){s((e=>J$(X$({},e),{collapsedFlamegraphs:!e.collapsedFlamegraphs})))},updateMaxNodes(e){s((t=>J$(X$({},t),{maxNodes:Number(e.target.value)})))},toggleEnableFlameGraphDotComExport(){s((e=>J$(X$({},e),{enableFlameGraphDotComExport:!e.enableFlameGraphDotComExport})))},toggleEnableFunctionDetails(){s((e=>J$(X$({},e),{enableFunctionDetails:!e.enableFunctionDetails})))},saveSettings(){return(e=function*(){a(o.maxNodes);try{yield r(o),Is(["Plugin settings successfully saved!"])}catch(e){Ds(e,["Error while saving the plugin settings!","Please try again later, sorry for the inconvenience."])}},function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function o(e){K$(a,r,i,o,s,"next",e)}function s(e){K$(a,r,i,o,s,"throw",e)}o(void 0)}))})();var e},goBack(){if(!u.current)return void l(`${Ri}${Ai.EXPLORE}`);const e=new URL(u.current);i&&e.searchParams.set("maxNodes",String(i)),l(`${e.pathname}${e.search}`)}}}}function eB(){const e=(0,o.useStyles2)(tB),{data:t,actions:n}=Z$();return t.fetchError&&Ds(t.fetchError,["Error while retrieving the plugin settings!","Please try to reload the page, sorry for the inconvenience."]),Cs("settings"),$i().createElement($i().Fragment,null,$i().createElement(os,{title:"Profiles settings (tenant)"}),$i().createElement("form",{className:e.settingsForm,onSubmit:function(e){e.preventDefault(),n.saveSettings()}},$i().createElement($i().Fragment,null,$i().createElement(o.FieldSet,{label:"Flame graph","data-testid":"flamegraph-settings"},$i().createElement(o.InlineFieldRow,null,$i().createElement(o.InlineField,{label:"Collapsed flame graphs",labelWidth:24},$i().createElement(o.InlineSwitch,{label:"Toggle collapsed flame graphs",name:"collapsed-flamegraphs",value:t.collapsedFlamegraphs,onChange:n.toggleCollapsedFlamegraphs}))),$i().createElement(o.InlineFieldRow,null,$i().createElement(o.InlineField,{label:"Maximum number of nodes",tooltip:"",labelWidth:24},$i().createElement(o.Input,{name:"max-nodes",type:"number",min:"1",value:t.maxNodes,onChange:n.updateMaxNodes})))),$i().createElement(o.FieldSet,{label:"Function details","data-testid":"function-details-settings"},$i().createElement(o.InlineFieldRow,null,$i().createElement(o.InlineField,{label:"Enable function details",labelWidth:24,tooltip:$i().createElement("div",{className:e.tooltip},$i().createElement("p",null,"The function details feature enables mapping of resource usage to lines of source code. If the GitHub integration is configured, then the source code will be downloaded from GitHub."),$i().createElement("p",null,$i().createElement("a",{href:"https://grafana.com/docs/grafana-cloud/monitor-applications/profiles/pyroscope-github-integration/",target:"_blank",rel:"noreferrer noopener"},"Learn more"))),interactive:!0},$i().createElement(o.InlineSwitch,{label:"Toggle function details",name:"function-details-feature",value:t.enableFunctionDetails,onChange:n.toggleEnableFunctionDetails})))),$i().createElement("div",{className:e.buttons},$i().createElement(o.Button,{variant:"primary",type:"submit"},"Save settings"),$i().createElement(o.Button,{variant:"secondary",onClick:n.goBack,"aria-label":"Back to Grafana Profiles Drilldown"},"Back to Grafana Profiles Drilldown")))))}const tB=e=>({settingsForm:i.css` + `});function q$(){const e=(0,Fi.useMemo)((()=>new z$),[]);return Cs("explore"),$i().createElement(e.Component,{model:e})}function H$(e,t,n,r,i,a,o){try{var s=e[a](o),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,i)}function G$(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function W$(e){for(var t=1;t{t&&s(t)}),[t]),{data:Q$(W$({},o),{fetchError:n}),actions:{toggleCollapsedFlamegraphs(){s((e=>Q$(W$({},e),{collapsedFlamegraphs:!e.collapsedFlamegraphs})))},updateMaxNodes(e){s((t=>Q$(W$({},t),{maxNodes:Number(e.target.value)})))},toggleEnableFlameGraphDotComExport(){s((e=>Q$(W$({},e),{enableFlameGraphDotComExport:!e.enableFlameGraphDotComExport})))},toggleEnableFunctionDetails(){s((e=>Q$(W$({},e),{enableFunctionDetails:!e.enableFunctionDetails})))},saveSettings(){return(e=function*(){a(o.maxNodes);try{yield r(o),Is(["Plugin settings successfully saved!"])}catch(e){Ds(e,["Error while saving the plugin settings!","Please try again later, sorry for the inconvenience."])}},function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function o(e){H$(a,r,i,o,s,"next",e)}function s(e){H$(a,r,i,o,s,"throw",e)}o(void 0)}))})();var e},goBack(){if(!u.current)return void l(`${Ri}${Ai.EXPLORE}`);const e=new URL(u.current);i&&e.searchParams.set("maxNodes",String(i)),l(`${e.pathname}${e.search}`)}}}}function Y$(){const e=(0,o.useStyles2)(X$),{data:t,actions:n}=K$();return t.fetchError&&Ds(t.fetchError,["Error while retrieving the plugin settings!","Please try to reload the page, sorry for the inconvenience."]),Cs("settings"),$i().createElement($i().Fragment,null,$i().createElement(os,{title:"Profiles settings (tenant)"}),$i().createElement("form",{className:e.settingsForm,onSubmit:function(e){e.preventDefault(),n.saveSettings()}},$i().createElement($i().Fragment,null,$i().createElement(o.FieldSet,{label:"Flame graph","data-testid":"flamegraph-settings"},$i().createElement(o.InlineFieldRow,null,$i().createElement(o.InlineField,{label:"Collapsed flame graphs",labelWidth:24},$i().createElement(o.InlineSwitch,{label:"Toggle collapsed flame graphs",name:"collapsed-flamegraphs",value:t.collapsedFlamegraphs,onChange:n.toggleCollapsedFlamegraphs}))),$i().createElement(o.InlineFieldRow,null,$i().createElement(o.InlineField,{label:"Maximum number of nodes",tooltip:"",labelWidth:24},$i().createElement(o.Input,{name:"max-nodes",type:"number",min:"1",value:t.maxNodes,onChange:n.updateMaxNodes})))),$i().createElement(o.FieldSet,{label:"Function details","data-testid":"function-details-settings"},$i().createElement(o.InlineFieldRow,null,$i().createElement(o.InlineField,{label:"Enable function details",labelWidth:24,tooltip:$i().createElement("div",{className:e.tooltip},$i().createElement("p",null,"The function details feature enables mapping of resource usage to lines of source code. If the GitHub integration is configured, then the source code will be downloaded from GitHub."),$i().createElement("p",null,$i().createElement("a",{href:"https://grafana.com/docs/grafana-cloud/monitor-applications/profiles/pyroscope-github-integration/",target:"_blank",rel:"noreferrer noopener"},"Learn more"))),interactive:!0},$i().createElement(o.InlineSwitch,{label:"Toggle function details",name:"function-details-feature",value:t.enableFunctionDetails,onChange:n.toggleEnableFunctionDetails})))),$i().createElement("div",{className:e.buttons},$i().createElement(o.Button,{variant:"primary",type:"submit"},"Save settings"),$i().createElement(o.Button,{variant:"secondary",onClick:n.goBack,"aria-label":"Back to Grafana Profiles Drilldown"},"Back to Grafana Profiles Drilldown")))))}const X$=e=>({settingsForm:i.css` & > fieldset { border: 0 none; border-bottom: 1px solid ${e.colors.border.weak}; @@ -925,11 +925,11 @@ define(["@emotion/css","@grafana/data","@grafana/runtime","@grafana/ui","d3","lo font-style: normal; font-weight: ${e.typography.fontWeightBold}; } - `});function nB(){return $i().createElement(Es.Routes,null,$i().createElement(Es.Route,{path:Ai.EXPLORE,element:$i().createElement(Q$,null)}),$i().createElement(Es.Route,{path:Ai.ADHOC,element:$i().createElement(Cp,null)}),$i().createElement(Es.Route,{path:Ai.SETTINGS,element:$i().createElement(eB,null)}),$i().createElement(Es.Route,{path:"/*",element:$i().createElement(Es.Navigate,{to:`${Ri}${Ai.EXPLORE}`,replace:!0})}))}function rB({error:e}){return $i().createElement(a.PluginPage,{layout:r.PageLayoutType.Canvas},$i().createElement("div",{className:"pyroscope-app"},$i().createElement(os,{title:"Grafana Profiles Drilldown"}),$i().createElement(pI,{severity:"error",title:"Fatal error!",message:"Please try reloading the page or, if the problem persists, contact your organization admin. Sorry for the inconvenience.",error:e,errorContext:{handheldBy:"React error boundary"}})))}!function(){if(Mi())return;const e=function(){const e=Ii();if(e&&Ni.has(e))return Ni.get(e)}();if(!e)return;const{environment:t,faroUrl:n,appName:r}=e,{apps:i,bootData:o,buildInfo:s}=a.config,l=i[Pi].version,c=o.user.email,u=`v${s.version} (${s.edition})`;var d;d=Ci({url:n,app:{name:r,release:l,version:Di,environment:t,namespace:u},user:{email:c},instrumentations:[...Ti({captureConsole:!1})],isolate:!0,beforeSend:e=>{var t,n,r;return(null!==(n=null===(t=e.meta.page)||void 0===t?void 0:t.url)&&void 0!==n?n:"").includes(Ri)?(e.meta.view={name:new URLSearchParams(null===(r=e.meta.page)||void 0===r?void 0:r.url).get("explorationType")||""},e):null}}),Li=d}();const iB=e=>({pageContainer:i.css` + `});function J$(){return $i().createElement(Es.Routes,null,$i().createElement(Es.Route,{path:Ai.EXPLORE,element:$i().createElement(q$,null)}),$i().createElement(Es.Route,{path:Ai.ADHOC,element:$i().createElement(Cp,null)}),$i().createElement(Es.Route,{path:Ai.SETTINGS,element:$i().createElement(Y$,null)}),$i().createElement(Es.Route,{path:"/*",element:$i().createElement(Es.Navigate,{to:`${Ri}${Ai.EXPLORE}`,replace:!0})}))}function Z$({error:e}){return $i().createElement(a.PluginPage,{layout:r.PageLayoutType.Canvas},$i().createElement("div",{className:"pyroscope-app"},$i().createElement(os,{title:"Grafana Profiles Drilldown"}),$i().createElement(pI,{severity:"error",title:"Fatal error!",message:"Please try reloading the page or, if the problem persists, contact your organization admin. Sorry for the inconvenience.",error:e,errorContext:{handheldBy:"React error boundary"}})))}!function(){if(Mi())return;const e=function(){const e=Ii();if(e&&Ni.has(e))return Ni.get(e)}();if(!e)return;const{environment:t,faroUrl:n,appName:r}=e,{apps:i,bootData:o,buildInfo:s}=a.config,l=i[Pi].version,c=o.user.email,u=`v${s.version} (${s.edition})`;var d;d=Ci({url:n,app:{name:r,release:l,version:Di,environment:t,namespace:u},user:{email:c},instrumentations:[...Ti({captureConsole:!1})],isolate:!0,beforeSend:e=>{var t,n,r;return(null!==(n=null===(t=e.meta.page)||void 0===t?void 0:t.url)&&void 0!==n?n:"").includes(Ri)?(e.meta.view={name:new URLSearchParams(null===(r=e.meta.page)||void 0===r?void 0:r.url).get("explorationType")||""},e):null}}),Li=d}();const eB=e=>({pageContainer:i.css` display: flex; flex-direction: column; padding: ${e.spacing(1)} ${e.spacing(2)} ${e.spacing(2)} ${e.spacing(2)}; flex-basis: 100%; flex-grow: 1; - `});function aB(e){var t,n,r;const{timeRange:i,pyroscopeQuery:a}=e;let o="",s="",l="all",c=null===(n=e.pyroscopeQuery.labelSelector)||void 0===n||null===(t=n.match(/service_name="([^"]+)"/))||void 0===t?void 0:t[1];c&&(l="labels"),e.explorationType&&(l=e.explorationType);const u=`var-dataSource=${null===(r=a.datasource)||void 0===r?void 0:r.uid}`,d=c?`&var-serviceName=${c}`:"",p=`&var-profileMetricId=${a.profileTypeId}`,h=`&explorationType=${l}`;i&&(o=`&from=${i.from}&to=${i.to}`),a.spanSelector&&(s=`&var-spanSelector=${a.spanSelector}`);return`/a/grafana-pyroscope-app/explore?${new URLSearchParams(`${u}${d}${p}${o}${h}${s}`).toString()}`}const oB={targets:[r.PluginExtensionPoints.ExploreToolbarAction],title:"Open in Grafana Profiles Drilldown",icon:"fire",description:"Try our new queryless experience for profiles",path:"/a/grafana-pyroscope-app/explore",configure(e){if(!e||!e.targets||!e.timeRange||e.targets.length>1)return;const t=e.targets[0];return t.datasource&&"grafana-pyroscope-datasource"===t.datasource.type?{path:aB({pyroscopeQuery:t,timeRange:e.timeRange})}:void 0}},sB={targets:["grafana/traceview/details"],title:"Open in Grafana Profiles Drilldown",description:"Try our new queryless experience for profiles",path:"/a/grafana-pyroscope-app/explore",onClick:(e,{context:t})=>{if(!(t&&t.serviceName&&t.spanSelector&&t.profileTypeId&&t.timeRange))return;const n=t.serviceName,r=t.spanSelector,i=t.profileTypeId,a=t.timeRange,o={refId:"span-flamegraph-profiles-drilldown-refId",labelSelector:`service_name="${n}"`,profileTypeId:i,spanSelector:r,datasource:t.datasource,groupBy:["service_name"]};if(o.datasource){const e=aB({pyroscopeQuery:o,timeRange:a,explorationType:"flame-graph"});window.open(e,"_blank","noopener,noreferrer")}}},lB=(new r.AppPlugin).addLink(oB).addLink(sB).setRootPage((function(){const e=(0,o.useStyles2)(iB),[t,n]=(0,Fi.useState)();return t?$i().createElement(rB,{error:t}):$i().createElement(o.ErrorBoundary,{onError:n},(()=>$i().createElement(Ui,{client:W},$i().createElement(Ss,null,$i().createElement("div",{className:e.pageContainer},$i().createElement(a.PluginPage,{layout:r.PageLayoutType.Custom},$i().createElement("div",{className:"pyroscope-app"},$i().createElement(nB,null))))))))}))})(),__webpack_exports__})())); + `});function tB(e){var t,n,r;const{timeRange:i,pyroscopeQuery:a}=e;let o="",s="",l="all",c=null===(n=e.pyroscopeQuery.labelSelector)||void 0===n||null===(t=n.match(/service_name="([^"]+)"/))||void 0===t?void 0:t[1];c&&(l="labels"),e.explorationType&&(l=e.explorationType);const u=`var-dataSource=${null===(r=a.datasource)||void 0===r?void 0:r.uid}`,d=c?`&var-serviceName=${c}`:"",p=`&var-profileMetricId=${a.profileTypeId}`,h=`&explorationType=${l}`;i&&(o=`&from=${i.from}&to=${i.to}`),a.spanSelector&&(s=`&var-spanSelector=${a.spanSelector}`);return`/a/grafana-pyroscope-app/explore?${new URLSearchParams(`${u}${d}${p}${o}${h}${s}`).toString()}`}const nB={targets:[r.PluginExtensionPoints.ExploreToolbarAction],title:"Open in Grafana Profiles Drilldown",icon:"fire",description:"Try our new queryless experience for profiles",path:"/a/grafana-pyroscope-app/explore",configure(e){if(!e||!e.targets||!e.timeRange||e.targets.length>1)return;const t=e.targets[0];return t.datasource&&"grafana-pyroscope-datasource"===t.datasource.type?{path:tB({pyroscopeQuery:t,timeRange:e.timeRange})}:void 0}},rB={targets:["grafana/traceview/details"],title:"Open in Grafana Profiles Drilldown",description:"Try our new queryless experience for profiles",path:"/a/grafana-pyroscope-app/explore",onClick:(e,{context:t})=>{if(!(t&&t.serviceName&&t.spanSelector&&t.profileTypeId&&t.timeRange))return;const n=t.serviceName,r=t.spanSelector,i=t.profileTypeId,a=t.timeRange,o={refId:"span-flamegraph-profiles-drilldown-refId",labelSelector:`service_name="${n}"`,profileTypeId:i,spanSelector:r,datasource:t.datasource,groupBy:["service_name"]};if(o.datasource){const e=tB({pyroscopeQuery:o,timeRange:a,explorationType:"flame-graph"});window.open(e,"_blank","noopener,noreferrer")}}},iB=(new r.AppPlugin).addLink(nB).addLink(rB).setRootPage((function(){const e=(0,o.useStyles2)(eB),[t,n]=(0,Fi.useState)();return t?$i().createElement(Z$,{error:t}):$i().createElement(o.ErrorBoundary,{onError:n},(()=>$i().createElement(Ui,{client:W},$i().createElement(Ss,null,$i().createElement("div",{className:e.pageContainer},$i().createElement(a.PluginPage,{layout:r.PageLayoutType.Custom},$i().createElement("div",{className:"pyroscope-app"},$i().createElement(J$,null))))))))}))})(),__webpack_exports__})())); //# sourceMappingURL=module.js.map \ No newline at end of file diff --git a/grafana/plugins/grafana-pyroscope-app/module.js.map b/grafana/plugins/grafana-pyroscope-app/module.js.map index 9e6d4fd6..218018c3 100644 --- a/grafana/plugins/grafana-pyroscope-app/module.js.map +++ b/grafana/plugins/grafana-pyroscope-app/module.js.map @@ -1 +1 @@ -{"version":3,"file":"module.js","mappings":"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","sources":["webpack://grafana-pyroscope-app/../node_modules/@protobufjs/aspromise/index.js","webpack://grafana-pyroscope-app/../node_modules/@protobufjs/base64/index.js","webpack://grafana-pyroscope-app/../node_modules/@protobufjs/codegen/index.js","webpack://grafana-pyroscope-app/../node_modules/@protobufjs/eventemitter/index.js","webpack://grafana-pyroscope-app/../node_modules/@protobufjs/fetch/index.js","webpack://grafana-pyroscope-app/../node_modules/@protobufjs/float/index.js","webpack://grafana-pyroscope-app/../node_modules/@protobufjs/inquire/index.js","webpack://grafana-pyroscope-app/../node_modules/@protobufjs/path/index.js","webpack://grafana-pyroscope-app/../node_modules/@protobufjs/pool/index.js","webpack://grafana-pyroscope-app/../node_modules/@protobufjs/utf8/index.js","webpack://grafana-pyroscope-app/../node_modules/color-convert/conversions.js","webpack://grafana-pyroscope-app/../node_modules/color-convert/index.js","webpack://grafana-pyroscope-app/../node_modules/color-convert/route.js","webpack://grafana-pyroscope-app/../node_modules/color-name/index.js","webpack://grafana-pyroscope-app/../node_modules/color-string/index.js","webpack://grafana-pyroscope-app/../node_modules/color/index.js","webpack://grafana-pyroscope-app/../node_modules/file-saver/dist/FileSaver.min.js","webpack://grafana-pyroscope-app/../node_modules/lodash.isequal/index.js","webpack://grafana-pyroscope-app/../node_modules/object-assign/index.js","webpack://grafana-pyroscope-app/../node_modules/prop-types/factoryWithThrowingShims.js","webpack://grafana-pyroscope-app/../node_modules/prop-types/index.js","webpack://grafana-pyroscope-app/../node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://grafana-pyroscope-app/../node_modules/protobufjs/light.js","webpack://grafana-pyroscope-app/../node_modules/protobufjs/src/converter.js","webpack://grafana-pyroscope-app/../node_modules/protobufjs/src/decoder.js","webpack://grafana-pyroscope-app/../node_modules/protobufjs/src/encoder.js","webpack://grafana-pyroscope-app/../node_modules/protobufjs/src/enum.js","webpack://grafana-pyroscope-app/../node_modules/protobufjs/src/field.js","webpack://grafana-pyroscope-app/../node_modules/protobufjs/src/index-light.js","webpack://grafana-pyroscope-app/../node_modules/protobufjs/src/index-minimal.js","webpack://grafana-pyroscope-app/../node_modules/protobufjs/src/mapfield.js","webpack://grafana-pyroscope-app/../node_modules/protobufjs/src/message.js","webpack://grafana-pyroscope-app/../node_modules/protobufjs/src/method.js","webpack://grafana-pyroscope-app/../node_modules/protobufjs/src/namespace.js","webpack://grafana-pyroscope-app/../node_modules/protobufjs/src/object.js","webpack://grafana-pyroscope-app/../node_modules/protobufjs/src/oneof.js","webpack://grafana-pyroscope-app/../node_modules/protobufjs/src/reader.js","webpack://grafana-pyroscope-app/../node_modules/protobufjs/src/reader_buffer.js","webpack://grafana-pyroscope-app/../node_modules/protobufjs/src/root.js","webpack://grafana-pyroscope-app/../node_modules/protobufjs/src/roots.js","webpack://grafana-pyroscope-app/../node_modules/protobufjs/src/rpc.js","webpack://grafana-pyroscope-app/../node_modules/protobufjs/src/rpc/service.js","webpack://grafana-pyroscope-app/../node_modules/protobufjs/src/service.js","webpack://grafana-pyroscope-app/../node_modules/protobufjs/src/type.js","webpack://grafana-pyroscope-app/../node_modules/protobufjs/src/types.js","webpack://grafana-pyroscope-app/../node_modules/protobufjs/src/util.js","webpack://grafana-pyroscope-app/../node_modules/protobufjs/src/util/longbits.js","webpack://grafana-pyroscope-app/../node_modules/protobufjs/src/util/minimal.js","webpack://grafana-pyroscope-app/../node_modules/protobufjs/src/verifier.js","webpack://grafana-pyroscope-app/../node_modules/protobufjs/src/wrappers.js","webpack://grafana-pyroscope-app/../node_modules/protobufjs/src/writer.js","webpack://grafana-pyroscope-app/../node_modules/protobufjs/src/writer_buffer.js","webpack://grafana-pyroscope-app/../node_modules/react-draggable/build/cjs/Draggable.js","webpack://grafana-pyroscope-app/../node_modules/react-draggable/build/cjs/DraggableCore.js","webpack://grafana-pyroscope-app/../node_modules/react-draggable/build/cjs/cjs.js","webpack://grafana-pyroscope-app/../node_modules/react-draggable/build/cjs/utils/domFns.js","webpack://grafana-pyroscope-app/../node_modules/react-draggable/build/cjs/utils/getPrefix.js","webpack://grafana-pyroscope-app/../node_modules/react-draggable/build/cjs/utils/log.js","webpack://grafana-pyroscope-app/../node_modules/react-draggable/build/cjs/utils/positionFns.js","webpack://grafana-pyroscope-app/../node_modules/react-draggable/build/cjs/utils/shims.js","webpack://grafana-pyroscope-app/../node_modules/react-draggable/node_modules/clsx/dist/clsx.m.js","webpack://grafana-pyroscope-app/../node_modules/react-fast-compare/index.js","webpack://grafana-pyroscope-app/../node_modules/react-grid-layout/build/GridItem.js","webpack://grafana-pyroscope-app/../node_modules/react-grid-layout/build/ReactGridLayout.js","webpack://grafana-pyroscope-app/../node_modules/react-grid-layout/build/ReactGridLayoutPropTypes.js","webpack://grafana-pyroscope-app/../node_modules/react-grid-layout/build/ResponsiveReactGridLayout.js","webpack://grafana-pyroscope-app/../node_modules/react-grid-layout/build/calculateUtils.js","webpack://grafana-pyroscope-app/../node_modules/react-grid-layout/build/components/WidthProvider.js","webpack://grafana-pyroscope-app/../node_modules/react-grid-layout/build/fastRGLPropsEqual.js","webpack://grafana-pyroscope-app/../node_modules/react-grid-layout/build/responsiveUtils.js","webpack://grafana-pyroscope-app/../node_modules/react-grid-layout/build/utils.js","webpack://grafana-pyroscope-app/../node_modules/react-grid-layout/index.js","webpack://grafana-pyroscope-app/../node_modules/react-grid-layout/node_modules/clsx/dist/clsx.m.js","webpack://grafana-pyroscope-app/../node_modules/react-resizable/build/Resizable.js","webpack://grafana-pyroscope-app/../node_modules/react-resizable/build/ResizableBox.js","webpack://grafana-pyroscope-app/../node_modules/react-resizable/build/propTypes.js","webpack://grafana-pyroscope-app/../node_modules/react-resizable/build/utils.js","webpack://grafana-pyroscope-app/../node_modules/react-resizable/index.js","webpack://grafana-pyroscope-app/../node_modules/react-side-effect/lib/index.js","webpack://grafana-pyroscope-app/../node_modules/react-use/lib/useDebounce.js","webpack://grafana-pyroscope-app/../node_modules/react-use/lib/usePrevious.js","webpack://grafana-pyroscope-app/../node_modules/react-use/lib/useTimeoutFn.js","webpack://grafana-pyroscope-app/../node_modules/react/cjs/react-jsx-runtime.production.min.js","webpack://grafana-pyroscope-app/../node_modules/react/jsx-runtime.js","webpack://grafana-pyroscope-app/../node_modules/semver/classes/comparator.js","webpack://grafana-pyroscope-app/../node_modules/semver/classes/range.js","webpack://grafana-pyroscope-app/../node_modules/semver/classes/semver.js","webpack://grafana-pyroscope-app/../node_modules/semver/functions/clean.js","webpack://grafana-pyroscope-app/../node_modules/semver/functions/cmp.js","webpack://grafana-pyroscope-app/../node_modules/semver/functions/coerce.js","webpack://grafana-pyroscope-app/../node_modules/semver/functions/compare-build.js","webpack://grafana-pyroscope-app/../node_modules/semver/functions/compare-loose.js","webpack://grafana-pyroscope-app/../node_modules/semver/functions/compare.js","webpack://grafana-pyroscope-app/../node_modules/semver/functions/diff.js","webpack://grafana-pyroscope-app/../node_modules/semver/functions/eq.js","webpack://grafana-pyroscope-app/../node_modules/semver/functions/gt.js","webpack://grafana-pyroscope-app/../node_modules/semver/functions/gte.js","webpack://grafana-pyroscope-app/../node_modules/semver/functions/inc.js","webpack://grafana-pyroscope-app/../node_modules/semver/functions/lt.js","webpack://grafana-pyroscope-app/../node_modules/semver/functions/lte.js","webpack://grafana-pyroscope-app/../node_modules/semver/functions/major.js","webpack://grafana-pyroscope-app/../node_modules/semver/functions/minor.js","webpack://grafana-pyroscope-app/../node_modules/semver/functions/neq.js","webpack://grafana-pyroscope-app/../node_modules/semver/functions/parse.js","webpack://grafana-pyroscope-app/../node_modules/semver/functions/patch.js","webpack://grafana-pyroscope-app/../node_modules/semver/functions/prerelease.js","webpack://grafana-pyroscope-app/../node_modules/semver/functions/rcompare.js","webpack://grafana-pyroscope-app/../node_modules/semver/functions/rsort.js","webpack://grafana-pyroscope-app/../node_modules/semver/functions/satisfies.js","webpack://grafana-pyroscope-app/../node_modules/semver/functions/sort.js","webpack://grafana-pyroscope-app/../node_modules/semver/functions/valid.js","webpack://grafana-pyroscope-app/../node_modules/semver/index.js","webpack://grafana-pyroscope-app/../node_modules/semver/internal/constants.js","webpack://grafana-pyroscope-app/../node_modules/semver/internal/debug.js","webpack://grafana-pyroscope-app/../node_modules/semver/internal/identifiers.js","webpack://grafana-pyroscope-app/../node_modules/semver/internal/lrucache.js","webpack://grafana-pyroscope-app/../node_modules/semver/internal/parse-options.js","webpack://grafana-pyroscope-app/../node_modules/semver/internal/re.js","webpack://grafana-pyroscope-app/../node_modules/semver/ranges/gtr.js","webpack://grafana-pyroscope-app/../node_modules/semver/ranges/intersects.js","webpack://grafana-pyroscope-app/../node_modules/semver/ranges/ltr.js","webpack://grafana-pyroscope-app/../node_modules/semver/ranges/max-satisfying.js","webpack://grafana-pyroscope-app/../node_modules/semver/ranges/min-satisfying.js","webpack://grafana-pyroscope-app/../node_modules/semver/ranges/min-version.js","webpack://grafana-pyroscope-app/../node_modules/semver/ranges/outside.js","webpack://grafana-pyroscope-app/../node_modules/semver/ranges/simplify.js","webpack://grafana-pyroscope-app/../node_modules/semver/ranges/subset.js","webpack://grafana-pyroscope-app/../node_modules/semver/ranges/to-comparators.js","webpack://grafana-pyroscope-app/../node_modules/semver/ranges/valid.js","webpack://grafana-pyroscope-app/../node_modules/simple-swizzle/index.js","webpack://grafana-pyroscope-app/../node_modules/simple-swizzle/node_modules/is-arrayish/index.js","webpack://grafana-pyroscope-app/../node_modules/ua-parser-js/src/ua-parser.js","webpack://grafana-pyroscope-app/external amd \"@emotion/css\"","webpack://grafana-pyroscope-app/external amd \"@grafana/data\"","webpack://grafana-pyroscope-app/external amd \"@grafana/runtime\"","webpack://grafana-pyroscope-app/external amd \"@grafana/ui\"","webpack://grafana-pyroscope-app/external amd \"d3\"","webpack://grafana-pyroscope-app/external amd \"lodash\"","webpack://grafana-pyroscope-app/external amd \"module\"","webpack://grafana-pyroscope-app/external amd \"react\"","webpack://grafana-pyroscope-app/external amd \"react-dom\"","webpack://grafana-pyroscope-app/external amd \"react-router\"","webpack://grafana-pyroscope-app/external amd \"rxjs\"","webpack://grafana-pyroscope-app/../node_modules/react-use/node_modules/tslib/tslib.es6.mjs","webpack://grafana-pyroscope-app/webpack/bootstrap","webpack://grafana-pyroscope-app/webpack/runtime/amd options","webpack://grafana-pyroscope-app/webpack/runtime/compat get default export","webpack://grafana-pyroscope-app/webpack/runtime/define property getters","webpack://grafana-pyroscope-app/webpack/runtime/global","webpack://grafana-pyroscope-app/webpack/runtime/hasOwnProperty shorthand","webpack://grafana-pyroscope-app/webpack/runtime/make namespace object","webpack://grafana-pyroscope-app/webpack/runtime/node module decorator","webpack://grafana-pyroscope-app/webpack/runtime/publicPath","webpack://grafana-pyroscope-app/./node_modules/grafana-public-path.js","webpack://grafana-pyroscope-app/../node_modules/@tanstack/query-core/build/modern/utils.js","webpack://grafana-pyroscope-app/../node_modules/@tanstack/query-core/build/modern/notifyManager.js","webpack://grafana-pyroscope-app/../node_modules/@tanstack/query-core/build/modern/subscribable.js","webpack://grafana-pyroscope-app/../node_modules/@tanstack/query-core/build/modern/focusManager.js","webpack://grafana-pyroscope-app/../node_modules/@tanstack/query-core/build/modern/onlineManager.js","webpack://grafana-pyroscope-app/../node_modules/@tanstack/query-core/build/modern/retryer.js","webpack://grafana-pyroscope-app/../node_modules/@tanstack/query-core/build/modern/removable.js","webpack://grafana-pyroscope-app/../node_modules/@tanstack/query-core/build/modern/query.js","webpack://grafana-pyroscope-app/../node_modules/@tanstack/query-core/build/modern/queryCache.js","webpack://grafana-pyroscope-app/../node_modules/@tanstack/query-core/build/modern/mutation.js","webpack://grafana-pyroscope-app/../node_modules/@tanstack/query-core/build/modern/mutationCache.js","webpack://grafana-pyroscope-app/../node_modules/@tanstack/query-core/build/modern/infiniteQueryBehavior.js","webpack://grafana-pyroscope-app/./shared/infrastructure/react-query/queryClient.ts","webpack://grafana-pyroscope-app/../node_modules/@tanstack/query-core/build/modern/queryClient.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-core/dist/esm/transports/const.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-core/dist/esm/utils/date.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-core/dist/esm/utils/is.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-core/dist/esm/utils/deepEqual.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-core/dist/esm/api/exceptions/const.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-core/dist/esm/api/exceptions/initialize.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-core/dist/esm/utils/logLevels.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-core/dist/esm/api/logs/const.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-core/dist/esm/api/initialize.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-core/dist/esm/api/traces/initialize.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-core/dist/esm/api/meta/initialize.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-core/dist/esm/api/logs/initialize.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-core/dist/esm/api/measurements/initialize.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-core/dist/esm/api/events/initialize.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-core/dist/esm/utils/noop.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-core/dist/esm/internalLogger/const.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-core/dist/esm/unpatchedConsole/const.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-core/dist/esm/internalLogger/createInternalLogger.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-core/dist/esm/internalLogger/initialize.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-core/dist/esm/globalObject/globalObject.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-core/dist/esm/version.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-core/dist/esm/sdk/const.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-core/dist/esm/sdk/registerFaro.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-core/dist/esm/sdk/internalFaroGlobalObject.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-core/dist/esm/sdk/faroGlobalObject.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-core/dist/esm/transports/batchExecutor.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-core/dist/esm/transports/initialize.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-core/dist/esm/unpatchedConsole/initialize.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-core/dist/esm/initialize.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-core/dist/esm/metas/initialize.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-core/dist/esm/instrumentations/initialize.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-core/dist/esm/metas/registerInitial.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-core/dist/esm/utils/sourceMaps.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-core/dist/esm/transports/registerInitial.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-core/dist/esm/instrumentations/registerInitial.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-core/dist/esm/config/const.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-web-sdk/dist/esm/consts.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-web-sdk/dist/esm/instrumentations/errors/stackFrames/const.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-web-sdk/dist/esm/instrumentations/errors/stackFrames/buildStackFrame.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-web-sdk/dist/esm/instrumentations/errors/stackFrames/getDataFromSafariExtensions.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-web-sdk/dist/esm/instrumentations/errors/stackFrames/getStackFramesFromError.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-web-sdk/dist/esm/instrumentations/errors/stackFrames/parseStacktrace.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-web-sdk/dist/esm/instrumentations/session/sessionManager/sessionConstants.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-core/dist/esm/consts.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-web-sdk/dist/esm/metas/const.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-web-sdk/dist/esm/metas/browser/meta.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-web-sdk/dist/esm/metas/page/meta.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-web-sdk/dist/esm/metas/k6/meta.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-core/dist/esm/extensions/baseExtension.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-core/dist/esm/transports/base.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-core/dist/esm/transports/utils.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-web-sdk/dist/esm/utils/throttle.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-web-sdk/dist/esm/utils/webStorage.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-web-sdk/dist/esm/instrumentations/session/sessionManager/sampling.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-core/dist/esm/utils/shortId.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-web-sdk/dist/esm/instrumentations/session/sessionManager/sessionManagerUtils.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-web-sdk/dist/esm/instrumentations/session/sessionManager/PersistentSessionsManager.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-web-sdk/dist/esm/instrumentations/session/sessionManager/VolatileSessionManager.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-web-sdk/dist/esm/instrumentations/session/sessionManager/getSessionManagerByConfig.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-web-sdk/dist/esm/transports/fetch/transport.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-core/dist/esm/utils/promiseBuffer.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-core/dist/esm/instrumentations/base.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-web-sdk/dist/esm/instrumentations/errors/const.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-web-sdk/dist/esm/instrumentations/errors/getErrorDetails.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-web-sdk/dist/esm/instrumentations/errors/registerOnerror.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-web-sdk/dist/esm/instrumentations/errors/getValueAndTypeFromMessage.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-web-sdk/dist/esm/instrumentations/errors/registerOnunhandledrejection.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-web-sdk/dist/esm/instrumentations/errors/instrumentation.js","webpack://grafana-pyroscope-app/../node_modules/web-vitals/dist/web-vitals.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-web-sdk/dist/esm/instrumentations/webVitals/webVitalsBasic.js","webpack://grafana-pyroscope-app/../node_modules/web-vitals/dist/web-vitals.attribution.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-web-sdk/dist/esm/instrumentations/instrumentationConstants.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-web-sdk/dist/esm/instrumentations/webVitals/webVitalsWithAttribution.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-web-sdk/dist/esm/instrumentations/webVitals/instrumentation.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-core/dist/esm/semantic.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-web-sdk/dist/esm/instrumentations/session/instrumentation.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-web-sdk/dist/esm/metas/session/createSession.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-web-sdk/dist/esm/instrumentations/view/instrumentation.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-web-sdk/dist/esm/instrumentations/performance/performanceConstants.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-web-sdk/dist/esm/instrumentations/performance/performanceUtils.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-web-sdk/dist/esm/instrumentations/performance/resource.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-web-sdk/dist/esm/instrumentations/performance/instrumentation.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-web-sdk/dist/esm/instrumentations/performance/navigation.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-web-sdk/dist/esm/instrumentations/console/instrumentation.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-web-sdk/dist/esm/config/getWebInstrumentations.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-web-sdk/dist/esm/initialize.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/faro-web-sdk/dist/esm/config/makeCoreConfig.js","webpack://grafana-pyroscope-app/./constants.ts","webpack://grafana-pyroscope-app/./version.ts","webpack://grafana-pyroscope-app/./shared/infrastructure/tracking/getEnvironment.ts","webpack://grafana-pyroscope-app/./shared/infrastructure/tracking/faro/faro-environments.ts","webpack://grafana-pyroscope-app/./shared/infrastructure/tracking/faro/faro.ts","webpack://grafana-pyroscope-app/../node_modules/@tanstack/react-query/build/modern/QueryClientProvider.js","webpack://grafana-pyroscope-app/./shared/infrastructure/tracking/logger.ts","webpack://grafana-pyroscope-app/./shared/infrastructure/userStorage.ts","webpack://grafana-pyroscope-app/./shared/domain/noOp.ts","webpack://grafana-pyroscope-app/./shared/infrastructure/http/HttpClientError.ts","webpack://grafana-pyroscope-app/./shared/infrastructure/http/HttpClient.ts","webpack://grafana-pyroscope-app/./shared/infrastructure/http/ApiClient.ts","webpack://grafana-pyroscope-app/../node_modules/@tanstack/query-core/build/modern/queryObserver.js","webpack://grafana-pyroscope-app/../node_modules/@tanstack/react-query/build/modern/QueryErrorResetBoundary.js","webpack://grafana-pyroscope-app/../node_modules/@tanstack/react-query/build/modern/isRestoring.js","webpack://grafana-pyroscope-app/../node_modules/@tanstack/react-query/build/modern/utils.js","webpack://grafana-pyroscope-app/../node_modules/@tanstack/react-query/build/modern/errorBoundaryUtils.js","webpack://grafana-pyroscope-app/../node_modules/@tanstack/react-query/build/modern/suspense.js","webpack://grafana-pyroscope-app/../node_modules/@tanstack/react-query/build/modern/useQuery.js","webpack://grafana-pyroscope-app/../node_modules/@tanstack/react-query/build/modern/useBaseQuery.js","webpack://grafana-pyroscope-app/./app/components/Onboarding/infrastructure/statsApiClient.ts","webpack://grafana-pyroscope-app/./app/components/Onboarding/domain/useOnboarding.tsx","webpack://grafana-pyroscope-app/./app/components/Onboarding/infrastructure/useFetchTenantStats.ts","webpack://grafana-pyroscope-app/./shared/components/QueryAnalysisTooltip/QueryAnalysisTooltip.tsx","webpack://grafana-pyroscope-app/../node_modules/react-helmet/es/Helmet.js","webpack://grafana-pyroscope-app/./shared/ui/PyroscopeLogo.tsx","webpack://grafana-pyroscope-app/./shared/ui/PluginInfo.tsx","webpack://grafana-pyroscope-app/./shared/ui/PageTitle.tsx","webpack://grafana-pyroscope-app/./app/components/Onboarding/ui/EmptyLoadingPage.tsx","webpack://grafana-pyroscope-app/./app/components/Onboarding/ui/StyledLink.tsx","webpack://grafana-pyroscope-app/./app/components/Onboarding/ui/NoDataSourcePage.tsx","webpack://grafana-pyroscope-app/./app/components/Onboarding/domain/useOnboardingModal.tsx","webpack://grafana-pyroscope-app/./app/components/Onboarding/infrastructure/useFetchInstances.tsx","webpack://grafana-pyroscope-app/./app/components/Onboarding/ui/OnboardingModal.tsx","webpack://grafana-pyroscope-app/./app/components/Onboarding/ui/OnboardingPage.tsx","webpack://grafana-pyroscope-app/./app/components/Onboarding/Onboarding.tsx","webpack://grafana-pyroscope-app/./shared/domain/reportInteraction.ts","webpack://grafana-pyroscope-app/./shared/infrastructure/tracking/useReportPageInitialized.ts","webpack://grafana-pyroscope-app/./pages/AdHocView/ui/AdHocColums.tsx","webpack://grafana-pyroscope-app/./shared/domain/displayStatus.ts","webpack://grafana-pyroscope-app/./pages/AdHocView/infrastructure/adHocProfileClient.ts","webpack://grafana-pyroscope-app/./pages/AdHocView/infrastructure/helpers/stripBase64Prefix.ts","webpack://grafana-pyroscope-app/./pages/AdHocView/domain/useUploadFile.ts","webpack://grafana-pyroscope-app/./pages/AdHocView/ui/AdHocFileDropZone.tsx","webpack://grafana-pyroscope-app/./pages/AdHocView/domain/accepted-file-types.ts","webpack://grafana-pyroscope-app/../node_modules/@leeoniya/ufuzzy/dist/uFuzzy.mjs","webpack://grafana-pyroscope-app/../node_modules/react-use/esm/misc/util.js","webpack://grafana-pyroscope-app/../node_modules/react-use/esm/useIsomorphicLayoutEffect.js","webpack://grafana-pyroscope-app/../node_modules/react-use/esm/useMeasure.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/flamegraph/dist/esm/constants.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/flamegraph/dist/esm/FlameGraph/FlameGraphContextMenu.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/flamegraph/dist/esm/FlameGraph/FlameGraphTooltip.js","webpack://grafana-pyroscope-app/../node_modules/tinycolor2/esm/tinycolor.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/flamegraph/dist/esm/types.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/flamegraph/dist/esm/FlameGraph/colors.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/flamegraph/dist/esm/FlameGraph/murmur3.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/flamegraph/dist/esm/FlameGraph/rendering.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/flamegraph/dist/esm/FlameGraph/FlameGraphCanvas.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/flamegraph/dist/esm/FlameGraph/FlameGraphMetadata.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/flamegraph/dist/esm/FlameGraph/FlameGraph.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/flamegraph/dist/esm/FlameGraph/treeTransforms.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/flamegraph/dist/esm/FlameGraph/dataTransform.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/flamegraph/dist/esm/FlameGraphHeader.js","webpack://grafana-pyroscope-app/../node_modules/react-virtualized-auto-sizer/dist/react-virtualized-auto-sizer.esm.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/flamegraph/dist/esm/TopTable/FlameGraphTopTableContainer.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/flamegraph/dist/esm/FlameGraphContainer.js","webpack://grafana-pyroscope-app/../node_modules/fflate/esm/browser.js","webpack://grafana-pyroscope-app/../node_modules/compression-streams-polyfill/esm/ponyfill.mjs","webpack://grafana-pyroscope-app/../node_modules/compression-streams-polyfill/esm/index.mjs","webpack://grafana-pyroscope-app/./shared/components/FlameGraph/components/infrastructure/flamegraphDotComApiClient.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreDiffFlameGraph/domain/types.ts","webpack://grafana-pyroscope-app/./shared/components/FlameGraph/components/domain/getExportFilename.ts","webpack://grafana-pyroscope-app/./shared/components/FlameGraph/components/domain/useExportMenu.ts","webpack://grafana-pyroscope-app/./shared/components/FlameGraph/components/ExportMenu.tsx","webpack://grafana-pyroscope-app/./shared/components/FlameGraph/components/ExportData.tsx","webpack://grafana-pyroscope-app/./shared/components/FlameGraph/domain/flamebearerToDataFrameDTO.ts","webpack://grafana-pyroscope-app/./shared/components/FlameGraph/FlameGraph.tsx","webpack://grafana-pyroscope-app/./pages/AdHocView/ui/AdHocFlameGraph.tsx","webpack://grafana-pyroscope-app/./pages/AdHocView/ui/AdHocProfileTypeSelector.tsx","webpack://grafana-pyroscope-app/./pages/AdHocView/ui/AdHocSpinner.tsx","webpack://grafana-pyroscope-app/./pages/AdHocView/ui/tabs/AdHocSingle.tsx","webpack://grafana-pyroscope-app/./pages/AdHocView/ui/tabs/AdHocComparison.tsx","webpack://grafana-pyroscope-app/./pages/AdHocView/ui/AdHocTabs.tsx","webpack://grafana-pyroscope-app/./pages/AdHocView/AdHocView.tsx","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/components/SceneApp/utils.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/components/VizPanel/registerRuntimePanelPlugin.js","webpack://grafana-pyroscope-app/../node_modules/uuid/dist/esm-browser/native.js","webpack://grafana-pyroscope-app/../node_modules/uuid/dist/esm-browser/rng.js","webpack://grafana-pyroscope-app/../node_modules/uuid/dist/esm-browser/stringify.js","webpack://grafana-pyroscope-app/../node_modules/uuid/dist/esm-browser/v4.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/core/SceneComponentWrapper.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/core/events.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/core/SceneObjectRef.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/core/SceneObjectBase.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/core/sceneGraph/utils.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/querying/RuntimeDataSource.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/services/UniqueUrlKeyMapper.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/services/utils.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/schema/dist/esm/common/common.gen.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/schema/dist/esm/veneer/common.types.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/core/SceneDataNode.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/services/SceneObjectUrlSyncConfig.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/utils/parseUrlParam.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/utils/evaluateTimeRange.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/core/SceneTimeRange.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/variables/interpolation/defaults.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/core/sceneGraph/getTimeRange.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/variables/types.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/variables/interpolation/fieldAccessorCache.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/variables/interpolation/ScopedVarsVariable.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/variables/interpolation/formatRegistry.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/variables/constants.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/variables/lookupVariable.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/variables/interpolation/sceneInterpolator.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/core/types.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/behaviors/SceneQueryController.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/core/sceneGraph/sceneGraph.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/variables/macros/types.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/variables/macros/timeMacros.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/variables/macros/AllVariablesMacro.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/variables/macros/templateProxies.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/variables/macros/dataMacros.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/variables/macros/urlMacros.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/variables/macros/index.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/variables/macros/contextMacros.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/core/sceneGraph/index.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/utils/getDataSource.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/utils/writeSceneLog.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/variables/VariableDependencyConfig.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/variables/VariableValueRecorder.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/querying/ExtraQueryProvider.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/querying/extraQueryProcessingOperator.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/querying/layers/annotations/filterAnnotations.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/querying/getEnrichedDataRequest.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/variables/adhoc/patchGetAdhocFilters.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/querying/registerQueryWithController.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/variables/groupby/findActiveGroupByVariablesByUid.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/utils/utils.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/variables/variants/MultiValueVariable.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/node_modules/@grafana/e2e-selectors/dist/esm/selectors/components.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/node_modules/@grafana/e2e-selectors/dist/esm/selectors/pages.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/node_modules/@grafana/e2e-selectors/dist/esm/selectors/index.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/node_modules/@leeoniya/ufuzzy/dist/uFuzzy.esm.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/variables/components/getOptionSearcher.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/variables/components/VariableValueSelect.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/variables/groupby/GroupByVariableUrlSyncHandler.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/variables/getEnrichedFiltersRequest.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/variables/groupby/GroupByVariable.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/utils/LoadingIndicator.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/utils/ControlsLabel.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/variables/adhoc/AdHocFilterRenderer.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/variables/adhoc/AdHocFilterBuilder.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/variables/adhoc/AdHocFiltersVariableUrlSyncHandler.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/variables/adhoc/AdHocFiltersVariable.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/querying/DataLayersMerger.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/querying/SceneQueryRunner.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/variables/utils.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/schema/dist/esm/raw/dashboard/x/dashboard_types.gen.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/behaviors/CursorSync.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/node_modules/react-use/esm/misc/util.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/node_modules/react-use/esm/useIsomorphicLayoutEffect.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/node_modules/react-use/esm/useMeasure.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/components/VizPanel/VizPanelRenderer.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/components/VizPanel/seriesVisibilityConfigFactory.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/components/VizPanel/colorSeriesConfigFactory.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/components/VizPanel/VizPanel.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/behaviors/LiveNowTimer.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/utils/getMessageFromError.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/querying/layers/SceneDataLayerBase.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/querying/layers/SceneDataLayerControls.js","webpack://grafana-pyroscope-app/../node_modules/rxjs/dist/esm5/internal/util/isFunction.js","webpack://grafana-pyroscope-app/../node_modules/rxjs/dist/esm5/internal/util/lift.js","webpack://grafana-pyroscope-app/../node_modules/rxjs/node_modules/tslib/tslib.es6.mjs","webpack://grafana-pyroscope-app/../node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js","webpack://grafana-pyroscope-app/../node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js","webpack://grafana-pyroscope-app/../node_modules/rxjs/dist/esm5/internal/util/arrRemove.js","webpack://grafana-pyroscope-app/../node_modules/rxjs/dist/esm5/internal/Subscription.js","webpack://grafana-pyroscope-app/../node_modules/rxjs/dist/esm5/internal/config.js","webpack://grafana-pyroscope-app/../node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js","webpack://grafana-pyroscope-app/../node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js","webpack://grafana-pyroscope-app/../node_modules/rxjs/dist/esm5/internal/util/noop.js","webpack://grafana-pyroscope-app/../node_modules/rxjs/dist/esm5/internal/NotificationFactories.js","webpack://grafana-pyroscope-app/../node_modules/rxjs/dist/esm5/internal/util/errorContext.js","webpack://grafana-pyroscope-app/../node_modules/rxjs/dist/esm5/internal/Subscriber.js","webpack://grafana-pyroscope-app/../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js","webpack://grafana-pyroscope-app/../node_modules/rxjs/dist/esm5/internal/operators/map.js","webpack://grafana-pyroscope-app/../node_modules/rxjs/dist/esm5/internal/util/isArrayLike.js","webpack://grafana-pyroscope-app/../node_modules/rxjs/dist/esm5/internal/symbol/observable.js","webpack://grafana-pyroscope-app/../node_modules/rxjs/dist/esm5/internal/util/identity.js","webpack://grafana-pyroscope-app/../node_modules/rxjs/dist/esm5/internal/util/pipe.js","webpack://grafana-pyroscope-app/../node_modules/rxjs/dist/esm5/internal/Observable.js","webpack://grafana-pyroscope-app/../node_modules/rxjs/dist/esm5/internal/symbol/iterator.js","webpack://grafana-pyroscope-app/../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js","webpack://grafana-pyroscope-app/../node_modules/rxjs/dist/esm5/internal/util/isInteropObservable.js","webpack://grafana-pyroscope-app/../node_modules/rxjs/dist/esm5/internal/util/isPromise.js","webpack://grafana-pyroscope-app/../node_modules/rxjs/dist/esm5/internal/util/isAsyncIterable.js","webpack://grafana-pyroscope-app/../node_modules/rxjs/dist/esm5/internal/util/isIterable.js","webpack://grafana-pyroscope-app/../node_modules/rxjs/dist/esm5/internal/util/isReadableStreamLike.js","webpack://grafana-pyroscope-app/../node_modules/rxjs/dist/esm5/internal/util/throwUnobservableError.js","webpack://grafana-pyroscope-app/../node_modules/rxjs/dist/esm5/internal/operators/mergeMap.js","webpack://grafana-pyroscope-app/../node_modules/rxjs/dist/esm5/internal/operators/mergeInternals.js","webpack://grafana-pyroscope-app/../node_modules/rxjs/dist/esm5/internal/util/executeSchedule.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/querying/layers/annotations/standardAnnotationsSupport.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/querying/layers/annotations/standardAnnotationQuery.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/querying/layers/annotations/utils.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/querying/layers/annotations/AnnotationsDataLayer.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/core/SceneTimeZoneOverride.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/querying/SceneDataLayerSet.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/querying/SceneDataTransformer.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/variables/components/VariableValueSelectors.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/variables/components/VariableValueControl.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/variables/sets/SceneVariableSet.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/variables/variants/ConstantVariable.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/variables/variants/CustomVariable.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/variables/variants/DataSourceVariable.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/variables/variants/query/guards.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/variables/variants/query/createQueryVariableRunner.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/variables/variants/query/utils.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/variables/variants/query/toMetricFindValues.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/variables/variants/query/QueryVariable.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/utils/metricTree.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/variables/variants/TestVariable.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/variables/components/VariableValueInput.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/variables/variants/TextBoxVariable.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/variables/variants/LocalValueVariable.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/variables/variants/IntervalVariable.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/services/UrlSyncManager.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/components/EmbeddedScene.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/utils/compatibility/setWindowGrafanaSceneContext.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/components/VizPanel/VizPanelMenu.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/components/layout/grid/SceneGridItem.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/node_modules/react-virtualized-auto-sizer/dist/index.esm.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/node_modules/react-use/esm/useEffectOnce.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/components/layout/LazyLoader.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/components/layout/grid/SceneGridLayoutRenderer.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/components/layout/grid/utils.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/components/layout/grid/SceneGridLayout.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/components/layout/grid/constants.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/components/layout/grid/SceneGridRow.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/components/NestedScene.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/components/SceneCanvasText.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/components/SceneToolbarButton.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/components/SceneTimePicker.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/components/SceneRefreshPicker.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/utils/getCompareSeriesRefId.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/components/SceneTimeRangeCompare.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/components/SceneByFrameRepeater.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/components/SceneByVariableRepeater.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/components/SceneControlsSpacer.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/components/layout/SceneFlexLayout.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/components/layout/CSSGrid/SceneCSSGridLayout.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/components/layout/split/Splitter.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/components/layout/split/SplitLayout.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/components/layout/split/SplitLayoutRenderer.js","webpack://grafana-pyroscope-app/../node_modules/react-router-dom/dist/index.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/components/SceneApp/SceneApp.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/components/SceneReactObject.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/components/SceneDebugger/DebugDetails.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/components/SceneDebugger/DebugTreeNode.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/components/SceneDebugger/SceneDebugger.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/components/SceneApp/SceneAppPageView.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/components/SceneApp/SceneAppPage.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/schema/dist/esm/common.gen-CZ1M9G8L.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/schema/dist/esm/raw/composable/barchart/panelcfg/x/BarChartPanelCfg_types.gen.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/schema/dist/esm/raw/composable/bargauge/panelcfg/x/BarGaugePanelCfg_types.gen.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/schema/dist/esm/raw/composable/datagrid/panelcfg/x/DatagridPanelCfg_types.gen.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/schema/dist/esm/raw/composable/gauge/panelcfg/x/GaugePanelCfg_types.gen.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/schema/dist/esm/raw/composable/geomap/panelcfg/x/GeomapPanelCfg_types.gen.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/schema/dist/esm/raw/composable/heatmap/panelcfg/x/HeatmapPanelCfg_types.gen.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/schema/dist/esm/raw/composable/histogram/panelcfg/x/HistogramPanelCfg_types.gen.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/schema/dist/esm/raw/composable/news/panelcfg/x/NewsPanelCfg_types.gen.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/schema/dist/esm/raw/composable/piechart/panelcfg/x/PieChartPanelCfg_types.gen.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/schema/dist/esm/raw/composable/stat/panelcfg/x/StatPanelCfg_types.gen.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/schema/dist/esm/raw/composable/statetimeline/panelcfg/x/StateTimelinePanelCfg_types.gen.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/schema/dist/esm/raw/composable/statushistory/panelcfg/x/StatusHistoryPanelCfg_types.gen.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/schema/dist/esm/raw/composable/table/panelcfg/x/TablePanelCfg_types.gen.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/schema/dist/esm/raw/composable/text/panelcfg/x/TextPanelCfg_types.gen.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/schema/dist/esm/raw/composable/xychart/panelcfg/x/XYChartPanelCfg_types.gen.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/core/PanelBuilders/StandardFieldConfigBuilders.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/core/PanelBuilders/FieldConfigOverridesBuilder.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/core/PanelBuilders/FieldConfigBuilder.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/core/PanelBuilders/PanelOptionsBuilder.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/core/PanelBuilders/VizPanelBuilder.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/core/PanelBuilders/index.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/core/PanelBuilders/VizConfigBuilders.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/index.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/scenes/dist/esm/variables/variants/guards.js","webpack://grafana-pyroscope-app/./shared/domain/prepareHistoryEntry.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/domain/events/EventTimeseriesDataReceived.ts","webpack://grafana-pyroscope-app/./shared/components/QueryBuilder/domain/types.ts","webpack://grafana-pyroscope-app/../node_modules/xstate/es/_virtual/_tslib.js","webpack://grafana-pyroscope-app/../node_modules/xstate/es/types.js","webpack://grafana-pyroscope-app/../node_modules/xstate/es/actionTypes.js","webpack://grafana-pyroscope-app/../node_modules/xstate/es/utils.js","webpack://grafana-pyroscope-app/../node_modules/xstate/es/constants.js","webpack://grafana-pyroscope-app/../node_modules/xstate/es/environment.js","webpack://grafana-pyroscope-app/../node_modules/xstate/es/stateUtils.js","webpack://grafana-pyroscope-app/../node_modules/xstate/es/actions.js","webpack://grafana-pyroscope-app/../node_modules/xstate/es/State.js","webpack://grafana-pyroscope-app/../node_modules/xstate/es/serviceScope.js","webpack://grafana-pyroscope-app/../node_modules/xstate/es/Actor.js","webpack://grafana-pyroscope-app/../node_modules/xstate/es/invokeUtils.js","webpack://grafana-pyroscope-app/../node_modules/xstate/es/StateNode.js","webpack://grafana-pyroscope-app/../node_modules/xstate/es/Machine.js","webpack://grafana-pyroscope-app/../node_modules/xstate/es/scheduler.js","webpack://grafana-pyroscope-app/../node_modules/xstate/es/registry.js","webpack://grafana-pyroscope-app/../node_modules/xstate/es/devTools.js","webpack://grafana-pyroscope-app/../node_modules/xstate/es/behaviors.js","webpack://grafana-pyroscope-app/../node_modules/xstate/es/interpreter.js","webpack://grafana-pyroscope-app/../node_modules/nanoid/index.browser.js","webpack://grafana-pyroscope-app/../node_modules/nanoid/url-alphabet/index.js","webpack://grafana-pyroscope-app/../node_modules/xstate/es/index.js","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/infrastructure/series/http/DataSourceProxyClient.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/infrastructure/labels/http/LabelsApiClient.ts","webpack://grafana-pyroscope-app/./shared/infrastructure/MemoryCacheClient.ts","webpack://grafana-pyroscope-app/./shared/types/helpers/invariant.ts","webpack://grafana-pyroscope-app/./shared/infrastructure/AbstractRepository.ts","webpack://grafana-pyroscope-app/./shared/infrastructure/labels/LabelsApiClient.ts","webpack://grafana-pyroscope-app/./shared/infrastructure/labels/labelsRepository.ts","webpack://grafana-pyroscope-app/./shared/components/QueryBuilder/domain/helpers/areFiltersEqual.ts","webpack://grafana-pyroscope-app/./shared/components/QueryBuilder/domain/helpers/buildIsEmptyFilter.ts","webpack://grafana-pyroscope-app/./shared/components/QueryBuilder/domain/helpers/filtersToQuery.ts","webpack://grafana-pyroscope-app/./shared/components/QueryBuilder/domain/helpers/getLastFilter.ts","webpack://grafana-pyroscope-app/./shared/components/QueryBuilder/domain/helpers/isMultipleValuesOperator.ts","webpack://grafana-pyroscope-app/./shared/components/QueryBuilder/domain/helpers/isPartialFilter.ts","webpack://grafana-pyroscope-app/./shared/components/QueryBuilder/domain/helpers/isSwitchingOperatorMode.ts","webpack://grafana-pyroscope-app/./shared/components/QueryBuilder/domain/helpers/queryToFilters.ts","webpack://grafana-pyroscope-app/./shared/components/QueryBuilder/domain/helpers/toggleCompleteFilters.ts","webpack://grafana-pyroscope-app/./shared/components/QueryBuilder/domain/actions.ts","webpack://grafana-pyroscope-app/./shared/components/QueryBuilder/domain/helpers/getFilterUnderEdition.ts","webpack://grafana-pyroscope-app/./shared/components/QueryBuilder/domain/guards.ts","webpack://grafana-pyroscope-app/./shared/components/QueryBuilder/infrastructure/operatorsRepository.ts","webpack://grafana-pyroscope-app/./shared/components/QueryBuilder/domain/helpers/isPrivateLabel.ts","webpack://grafana-pyroscope-app/./shared/components/QueryBuilder/domain/services.ts","webpack://grafana-pyroscope-app/./shared/components/QueryBuilder/domain/states/autoSuggestProxy.ts","webpack://grafana-pyroscope-app/./shared/components/QueryBuilder/ui/constants.ts","webpack://grafana-pyroscope-app/./shared/components/QueryBuilder/domain/helpers/isRegexOperator.ts","webpack://grafana-pyroscope-app/./shared/components/QueryBuilder/domain/states/idle.ts","webpack://grafana-pyroscope-app/./shared/components/QueryBuilder/domain/states/loadLabels.ts","webpack://grafana-pyroscope-app/./shared/components/QueryBuilder/domain/states/loadLabelValues.ts","webpack://grafana-pyroscope-app/./shared/components/QueryBuilder/domain/states/loadOperators.ts","webpack://grafana-pyroscope-app/./shared/components/QueryBuilder/domain/stateMachine.ts","webpack://grafana-pyroscope-app/./shared/domain/localeCompare.ts","webpack://grafana-pyroscope-app/./shared/components/QueryBuilder/ui/selects/MultipleEditionSelect.tsx","webpack://grafana-pyroscope-app/./shared/components/QueryBuilder/ui/inputs/SingleEditionInput.tsx","webpack://grafana-pyroscope-app/./shared/components/QueryBuilder/ui/selects/SingleEditionSelect.tsx","webpack://grafana-pyroscope-app/./shared/components/QueryBuilder/ui/chiclets/ChicletAttributeOperator.tsx","webpack://grafana-pyroscope-app/./shared/components/QueryBuilder/ui/chiclets/ChicletAttributeOperatorValue.tsx","webpack://grafana-pyroscope-app/./shared/components/QueryBuilder/ui/chiclets/PartialChiclet.tsx","webpack://grafana-pyroscope-app/./shared/components/QueryBuilder/ui/chiclets/Chiclet.tsx","webpack://grafana-pyroscope-app/./shared/components/QueryBuilder/ui/chiclets/ChicletsList.tsx","webpack://grafana-pyroscope-app/./shared/components/QueryBuilder/ui/selects/SingleSelect.tsx","webpack://grafana-pyroscope-app/./shared/components/QueryBuilder/ui/selects/DisabledSelect.tsx","webpack://grafana-pyroscope-app/./shared/components/QueryBuilder/ui/selects/MultipleSelect.tsx","webpack://grafana-pyroscope-app/./shared/components/QueryBuilder/QueryBuilder.tsx","webpack://grafana-pyroscope-app/./shared/components/QueryBuilder/domain/useStateMachine.tsx","webpack://grafana-pyroscope-app/./shared/components/QueryBuilder/ui/hooks.ts","webpack://grafana-pyroscope-app/./shared/infrastructure/profile-metrics/getProfileMetric.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/infrastructure/pyroscope-data-sources.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/domain/variables/ProfileMetricVariable.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/domain/variables/ServiceNameVariable/ServiceNameVariable.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/domain/variables/ServiceNameVariable/domain/useBuildServiceNameOptions.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/domain/useBuildPyroscopeQuery.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/domain/variables/ProfilesDataSourceVariable.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/domain/variables/FiltersVariable/filters-ops.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/domain/variables/FiltersVariable/FiltersVariable.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/helpers/getSceneVariableValue.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneByVariableRepeaterGrid/components/ScenePanelTypeSwitcher.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/helpers/getColorByIndex.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/infrastructure/helpers/getSeriesLabelFieldName.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/infrastructure/helpers/getSeriesStatsValue.ts","webpack://grafana-pyroscope-app/./shared/domain/url-params/parseQuery.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/infrastructure/withPreventInvalidQuery.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/infrastructure/timeseries/buildTimeSeriesQueryRunner.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneByVariableRepeaterGrid/infrastructure/data-transformations.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneLabelValuesBarGauge.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/helpers/formatSingleSeriesDisplayName.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneLabelValuesHistogram.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneLabelValuesTable.tsx","webpack://grafana-pyroscope-app/../node_modules/p-limit/node_modules/yocto-queue/index.js","webpack://grafana-pyroscope-app/../node_modules/p-limit/index.js","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/helpers/computeRoundedTimeRange.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/infrastructure/labels/LabelsDataSource.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/infrastructure/series/helpers/getProfileMetricLabel.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneLabelValuesTimeseries/SceneTimeseriesMenu.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/helpers/getExploreUrl.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/domain/useGetPluginExtensionLink.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneLabelValuesTimeseries/SceneLabelValuesTimeseries.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/helpers/vizPanelBuilder.ts","webpack://grafana-pyroscope-app/../node_modules/react-inlinesvg/node_modules/react-from-dom/dist/index.mjs","webpack://grafana-pyroscope-app/../node_modules/react-inlinesvg/dist/index.mjs","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneByVariableRepeaterGrid/components/SceneEmptyState/ui/useMousePosition.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneByVariableRepeaterGrid/components/SceneEmptyState/ui/GrotNotFound.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneByVariableRepeaterGrid/components/SceneEmptyState/ui/EmptyState.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneByVariableRepeaterGrid/components/SceneEmptyState/SceneEmptyState.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneByVariableRepeaterGrid/components/SceneErrorState/SceneErrorState.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneByVariableRepeaterGrid/components/SceneLayoutSwitcher.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneByVariableRepeaterGrid/components/SceneNoDataSwitcher.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneByVariableRepeaterGrid/components/SceneQuickFilter.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/infrastructure/favorites/FavoritesDataSource.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/infrastructure/helpers/interpolateQueryRunnerVariables.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/domain/actions/FavAction.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneByVariableRepeaterGrid/domain/sortFavGridItems.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneByVariableRepeaterGrid/SceneByVariableRepeaterGrid.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/domain/events/EventExpandPanel.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/domain/events/EventSelectLabel.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/domain/events/EventViewServiceFlameGraph.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/domain/events/EventViewServiceLabels.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/domain/events/EventViewServiceProfiles.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/domain/actions/SelectAction.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreAllServices/SceneExploreAllServices.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneDrawer.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/domain/variables/FavoriteVariable.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreFavorites/SceneExploreFavorites.tsx","webpack://grafana-pyroscope-app/../node_modules/@react-aria/utils/dist/useResizeObserver.mjs","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/domain/variables/GroupByVariable/GroupBySelector.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/domain/variables/GroupByVariable/GroupByVariable.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneMainServiceTimeseries.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/domain/events/EventViewDiffFlameGraph.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceLabels/components/SceneGroupByLabels/domain/events/EventSelectForCompare.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceLabels/components/SceneGroupByLabels/components/SceneLabelValuesGrid/components/SceneStatsPanel/ui/CompareAction.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceLabels/components/SceneGroupByLabels/components/SceneLabelValuesGrid/components/SceneStatsPanel/ui/StatsPanel.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceLabels/components/SceneGroupByLabels/components/SceneLabelValuesGrid/components/SceneStatsPanel/SceneStatsPanel.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceLabels/components/SceneGroupByLabels/components/SceneLabelValuesGrid/components/SceneLabelValuePanel.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceLabels/components/SceneGroupByLabels/components/SceneLabelValuesGrid/infrastructure/buildLabelValuesGridQueryRunner.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceLabels/components/SceneGroupByLabels/components/SceneLabelValuesGrid/SceneLabelValuesGrid.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceLabels/components/SceneGroupByLabels/domain/events/EventClearLabelFromFilters.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceLabels/components/SceneGroupByLabels/domain/events/EventExcludeLabelFromFilters.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceLabels/components/SceneGroupByLabels/domain/events/EventIncludeLabelInFilters.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceLabels/components/SceneGroupByLabels/domain/actions/IncludeExcludeAction/ui/FilterButtons.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceLabels/components/SceneGroupByLabels/domain/actions/IncludeExcludeAction/IncludeExcludeAction.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceLabels/components/SceneGroupByLabels/ui/CompareControls.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceLabels/components/SceneGroupByLabels/SceneGroupByLabels.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceLabels/SceneExploreServiceLabels.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceProfileTypes/SceneExploreServiceProfileTypes.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/domain/buildTimeRange.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/domain/variables/SpanSelectorVariable.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/infrastructure/series/formatSeriesToProfileMetrics.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/infrastructure/series/formatSeriesToServices.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/infrastructure/series/http/DataSourceProxyClientBuilder.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/infrastructure/series/http/formatSeriesResponse.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/infrastructure/series/http/SeriesApiClient.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/infrastructure/series/http/seriesRepository.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/infrastructure/series/SeriesDataSource.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreDiffFlameGraph/components/SceneComparePanel/domain/events/EventEnableSyncTimeRanges.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreDiffFlameGraph/components/SceneComparePanel/domain/events/EventSyncRefresh.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreDiffFlameGraph/components/SceneComparePanel/domain/events/EventSyncTimeRanges.ts","webpack://grafana-pyroscope-app/./shared/components/SceneTimePickerWithoutSync/SceneTimePickerWithoutSync.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreDiffFlameGraph/components/SceneComparePanel/domain/parseUrlParam.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreDiffFlameGraph/components/SceneComparePanel/domain/RangeAnnotation.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreDiffFlameGraph/components/SceneComparePanel/components/SceneTimeRangeWithAnnotations.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreDiffFlameGraph/components/SceneComparePanel/domain/evaluateTimeRange.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreDiffFlameGraph/components/SceneComparePanel/domain/events/EventSwitchTimerangeSelectionMode.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreDiffFlameGraph/components/SceneComparePanel/domain/actions/SwitchTimeRangeSelectionModeAction.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreDiffFlameGraph/components/SceneComparePanel/infrastructure/buildCompareTimeSeriesQueryRunner.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreDiffFlameGraph/components/SceneComparePanel/ui/colors.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreDiffFlameGraph/components/SceneComparePanel/SceneComparePanel.tsx","webpack://grafana-pyroscope-app/./shared/domain/useToggleSidePanel.ts","webpack://grafana-pyroscope-app/../node_modules/@tanstack/query-core/build/modern/mutationObserver.js","webpack://grafana-pyroscope-app/./shared/infrastructure/settings/PluginSettings.ts","webpack://grafana-pyroscope-app/./shared/infrastructure/settings/settingsApiClient.ts","webpack://grafana-pyroscope-app/./shared/infrastructure/settings/useFetchPluginSettings.ts","webpack://grafana-pyroscope-app/../node_modules/@tanstack/react-query/build/modern/useMutation.js","webpack://grafana-pyroscope-app/./shared/ui/InlineBanner.tsx","webpack://grafana-pyroscope-app/../node_modules/@grafana/e2e-selectors/dist/esm/selectors/components.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/e2e-selectors/dist/esm/selectors/index.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/e2e-selectors/dist/esm/selectors/pages.js","webpack://grafana-pyroscope-app/./shared/ui/Panel/GrafanaPanelBox/DelayRender.tsx","webpack://grafana-pyroscope-app/./shared/ui/Panel/GrafanaPanelBox/PanelMenu.tsx","webpack://grafana-pyroscope-app/./shared/ui/Panel/GrafanaPanelBox/HoverWidget.tsx","webpack://grafana-pyroscope-app/./shared/ui/Panel/GrafanaPanelBox/TitleItem.tsx","webpack://grafana-pyroscope-app/./shared/ui/Panel/GrafanaPanelBox/PanelDescription.tsx","webpack://grafana-pyroscope-app/./shared/ui/Panel/GrafanaPanelBox/PanelStatus.tsx","webpack://grafana-pyroscope-app/./shared/ui/Panel/GrafanaPanelBox/GrafanaPanelBox.tsx","webpack://grafana-pyroscope-app/./shared/ui/Panel/Panel.tsx","webpack://grafana-pyroscope-app/../node_modules/rxjs/dist/esm5/internal/operators/filter.js","webpack://grafana-pyroscope-app/../node_modules/rxjs/dist/esm5/internal/operators/scan.js","webpack://grafana-pyroscope-app/../node_modules/rxjs/dist/esm5/internal/operators/scanInternals.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/llm/node_modules/uuid/dist/esm-browser/native.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/llm/node_modules/uuid/dist/esm-browser/rng.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/llm/node_modules/uuid/dist/esm-browser/stringify.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/llm/node_modules/uuid/dist/esm-browser/v4.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/llm/dist/esm/constants.js","webpack://grafana-pyroscope-app/../node_modules/@grafana/llm/dist/esm/openai.js","webpack://grafana-pyroscope-app/../node_modules/rxjs/dist/esm5/internal/operators/tap.js","webpack://grafana-pyroscope-app/../node_modules/rxjs/dist/esm5/internal/operators/takeWhile.js","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneAiPanel/components/AiButton/AIButton.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneAiPanel/components/AiButton/infrastructure/useFetchLlmPluginStatus.ts","webpack://grafana-pyroscope-app/../node_modules/markdown-to-jsx/dist/index.modern.js","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneAiPanel/components/AiReply.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneAiPanel/components/FollowUpForm.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneAiPanel/domain/buildLlmPrompts.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/infrastructure/profiles/ProfileApiClient.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneAiPanel/SceneAiPanel.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneAiPanel/infrastructure/useFetchDotProfiles.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneAiPanel/infrastructure/cleanupDotResponse.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneAiPanel/domain/useOpenAiChatCompletions.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreDiffFlameGraph/domain/events/EventDiffAutoSelect.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreDiffFlameGraph/domain/events/EventDiffChoosePreset.tsx","webpack://grafana-pyroscope-app/./shared/domain/url-params/useMaxNodesFromUrl.ts","webpack://grafana-pyroscope-app/./shared/domain/url-params/useUrlSearchParams.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreDiffFlameGraph/components/SceneDiffFlameGraph/infrastructure/DiffProfileApiClient.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreDiffFlameGraph/components/SceneDiffFlameGraph/infrastructure/useFetchDiffProfile.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreDiffFlameGraph/components/SceneDiffFlameGraph/ui/MissingSelectionsBanner.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreDiffFlameGraph/components/SceneDiffFlameGraph/SceneDiffFlameGraph.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/GiveFeedbackButton.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreDiffFlameGraph/components/ScenePresetsPicker/ScenePresetsPicker.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreDiffFlameGraph/domain/behaviours/syncYAxis.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreDiffFlameGraph/SceneExploreDiffFlameGraph.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceFlameGraph/components/SceneFunctionDetailsPanel/infrastructure/VcsClient.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceFlameGraph/components/SceneFunctionDetailsPanel/components/GitHubContextProvider/infrastructure/GitSessionCookie.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceFlameGraph/components/SceneFunctionDetailsPanel/components/GitHubContextProvider/infrastructure/GitSessionCookieManager.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceFlameGraph/components/SceneFunctionDetailsPanel/components/GitHubContextProvider/domain/openLoginPopup.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceFlameGraph/components/SceneFunctionDetailsPanel/components/GitHubContextProvider/domain/githubLogin.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceFlameGraph/components/SceneFunctionDetailsPanel/components/GitHubContextProvider/domain/authFromUrl.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceFlameGraph/components/SceneFunctionDetailsPanel/components/GitHubContextProvider/domain/usePollGitHubPopup.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceFlameGraph/components/SceneFunctionDetailsPanel/components/GitHubContextProvider/GitHubContext.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceFlameGraph/components/SceneFunctionDetailsPanel/components/GitHubContextProvider/infrastructure/PrivateVcsClient.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceFlameGraph/components/SceneFunctionDetailsPanel/components/GitHubContextProvider/GitHubContextProvider.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceFlameGraph/components/SceneFunctionDetailsPanel/components/GitHubContextProvider/domain/generateNonce.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceFlameGraph/components/SceneFunctionDetailsPanel/components/GitHubContextProvider/domain/useGithubSessionCookie.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceFlameGraph/domain/events/RemoveSpanSelector.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/infrastructure/flame-graph/buildFlameGraphQueryRunner.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceFlameGraph/infrastructure/PprofRequest.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceFlameGraph/infrastructure/PprofApiClient.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceFlameGraph/components/SceneExportMenu/domain/getExportFilename.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceFlameGraph/components/SceneExportMenu/infrastructure/flamegraphDotComApiClient.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceFlameGraph/components/SceneExportMenu/SceneExportMenu.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceFlameGraph/components/SceneFunctionDetailsPanel/components/GitHubContextProvider/useGitHubContext.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceFlameGraph/components/SceneFunctionDetailsPanel/domain/useGitHubIntegration.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceFlameGraph/components/SceneFunctionDetailsPanel/domain/buildStackTrace.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceFlameGraph/components/SceneFunctionDetailsPanel/components/AiSuggestionsPanel/domain/buildLlmSuggestionPrompts.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceFlameGraph/components/SceneFunctionDetailsPanel/components/AiSuggestionsPanel/domain/useAiSuggestionsPanel.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceFlameGraph/components/SceneFunctionDetailsPanel/components/AiSuggestionsPanel/domain/useOpenAiSuggestions.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceFlameGraph/components/SceneFunctionDetailsPanel/components/AiSuggestionsPanel/AiSuggestionsPanel.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceFlameGraph/components/SceneFunctionDetailsPanel/components/CodeContainer/domain/buildGithubUrlForFunction.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceFlameGraph/components/SceneFunctionDetailsPanel/components/CodeContainer/domain/buildLineProfiles.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceFlameGraph/components/SceneFunctionDetailsPanel/components/CodeContainer/domain/useCodeContainer.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceFlameGraph/components/SceneFunctionDetailsPanel/components/CodeContainer/infrastructure/useFetchVCSFile.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceFlameGraph/components/SceneFunctionDetailsPanel/domain/buildUnitFormatter.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceFlameGraph/components/SceneFunctionDetailsPanel/components/CodeContainer/ui/Code.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceFlameGraph/components/SceneFunctionDetailsPanel/components/CodeContainer/CodeContainer.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceFlameGraph/components/SceneFunctionDetailsPanel/components/GitHubRepository.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceFlameGraph/components/SceneFunctionDetailsPanel/domain/getCommitsWithSamples.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceFlameGraph/components/SceneFunctionDetailsPanel/domain/isGitHubRepository.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceFlameGraph/components/SceneFunctionDetailsPanel/domain/getRepositoryDetails.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceFlameGraph/components/SceneFunctionDetailsPanel/domain/convertPprofToFunctionDetails.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceFlameGraph/components/SceneFunctionDetailsPanel/infrastructure/fetchCommitsInfo.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceFlameGraph/components/SceneFunctionDetailsPanel/infrastructure/helpers/getTotalSum.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceFlameGraph/components/SceneFunctionDetailsPanel/infrastructure/helpers/sortByTotal.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceFlameGraph/components/SceneFunctionDetailsPanel/infrastructure/useFetchFunctionsDetails.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceFlameGraph/components/SceneFunctionDetailsPanel/domain/getRelativeTimeString.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceFlameGraph/components/SceneFunctionDetailsPanel/domain/formatCommitDate.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceFlameGraph/components/SceneFunctionDetailsPanel/ui/CommitOption.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceFlameGraph/components/SceneFunctionDetailsPanel/ui/CommitOptionSelected.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceFlameGraph/components/SceneFunctionDetailsPanel/ui/CommitSelect.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceFlameGraph/components/SceneFunctionDetailsPanel/ui/GitHubIntegrationBanner.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceFlameGraph/components/SceneFunctionDetailsPanel/ui/InlineSpinner.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceFlameGraph/components/SceneFunctionDetailsPanel/SceneFunctionDetailsPanel.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceFlameGraph/components/SceneFunctionDetailsPanel/domain/formatFileName.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceFlameGraph/SpanSelectorLabel.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceFlameGraph/SceneFlameGraph.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneExploreServiceFlameGraph/SceneExploreServiceFlameGraph.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneProfilesExplorer/components/domain/useHeader.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneProfilesExplorer/components/domain/builsShareableUrl.ts","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneProfilesExplorer/components/ui/ExplorationTypeSelector.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneProfilesExplorer/components/Header.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/components/SceneProfilesExplorer/SceneProfilesExplorer.tsx","webpack://grafana-pyroscope-app/./pages/ProfilesExplorerView/ProfilesExplorerView.tsx","webpack://grafana-pyroscope-app/./pages/SettingsView/domain/useSettingsView.ts","webpack://grafana-pyroscope-app/./pages/SettingsView/SettingsView.tsx","webpack://grafana-pyroscope-app/./app/Routes.tsx","webpack://grafana-pyroscope-app/./app/ui/ErrorPage.tsx","webpack://grafana-pyroscope-app/./shared/infrastructure/tracking/faro/getFaroEnvironment.ts","webpack://grafana-pyroscope-app/./app/App.tsx","webpack://grafana-pyroscope-app/./links.ts","webpack://grafana-pyroscope-app/./module.ts"],"sourcesContent":["\"use strict\";\r\nmodule.exports = asPromise;\r\n\r\n/**\r\n * Callback as used by {@link util.asPromise}.\r\n * @typedef asPromiseCallback\r\n * @type {function}\r\n * @param {Error|null} error Error, if any\r\n * @param {...*} params Additional arguments\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Returns a promise from a node-style callback function.\r\n * @memberof util\r\n * @param {asPromiseCallback} fn Function to call\r\n * @param {*} ctx Function context\r\n * @param {...*} params Function arguments\r\n * @returns {Promise<*>} Promisified function\r\n */\r\nfunction asPromise(fn, ctx/*, varargs */) {\r\n var params = new Array(arguments.length - 1),\r\n offset = 0,\r\n index = 2,\r\n pending = true;\r\n while (index < arguments.length)\r\n params[offset++] = arguments[index++];\r\n return new Promise(function executor(resolve, reject) {\r\n params[offset] = function callback(err/*, varargs */) {\r\n if (pending) {\r\n pending = false;\r\n if (err)\r\n reject(err);\r\n else {\r\n var params = new Array(arguments.length - 1),\r\n offset = 0;\r\n while (offset < params.length)\r\n params[offset++] = arguments[offset];\r\n resolve.apply(null, params);\r\n }\r\n }\r\n };\r\n try {\r\n fn.apply(ctx || null, params);\r\n } catch (err) {\r\n if (pending) {\r\n pending = false;\r\n reject(err);\r\n }\r\n }\r\n });\r\n}\r\n","\"use strict\";\r\n\r\n/**\r\n * A minimal base64 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar base64 = exports;\r\n\r\n/**\r\n * Calculates the byte length of a base64 encoded string.\r\n * @param {string} string Base64 encoded string\r\n * @returns {number} Byte length\r\n */\r\nbase64.length = function length(string) {\r\n var p = string.length;\r\n if (!p)\r\n return 0;\r\n var n = 0;\r\n while (--p % 4 > 1 && string.charAt(p) === \"=\")\r\n ++n;\r\n return Math.ceil(string.length * 3) / 4 - n;\r\n};\r\n\r\n// Base64 encoding table\r\nvar b64 = new Array(64);\r\n\r\n// Base64 decoding table\r\nvar s64 = new Array(123);\r\n\r\n// 65..90, 97..122, 48..57, 43, 47\r\nfor (var i = 0; i < 64;)\r\n s64[b64[i] = i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i - 59 | 43] = i++;\r\n\r\n/**\r\n * Encodes a buffer to a base64 encoded string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} Base64 encoded string\r\n */\r\nbase64.encode = function encode(buffer, start, end) {\r\n var parts = null,\r\n chunk = [];\r\n var i = 0, // output index\r\n j = 0, // goto index\r\n t; // temporary\r\n while (start < end) {\r\n var b = buffer[start++];\r\n switch (j) {\r\n case 0:\r\n chunk[i++] = b64[b >> 2];\r\n t = (b & 3) << 4;\r\n j = 1;\r\n break;\r\n case 1:\r\n chunk[i++] = b64[t | b >> 4];\r\n t = (b & 15) << 2;\r\n j = 2;\r\n break;\r\n case 2:\r\n chunk[i++] = b64[t | b >> 6];\r\n chunk[i++] = b64[b & 63];\r\n j = 0;\r\n break;\r\n }\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (j) {\r\n chunk[i++] = b64[t];\r\n chunk[i++] = 61;\r\n if (j === 1)\r\n chunk[i++] = 61;\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\nvar invalidEncoding = \"invalid encoding\";\r\n\r\n/**\r\n * Decodes a base64 encoded string to a buffer.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Number of bytes written\r\n * @throws {Error} If encoding is invalid\r\n */\r\nbase64.decode = function decode(string, buffer, offset) {\r\n var start = offset;\r\n var j = 0, // goto index\r\n t; // temporary\r\n for (var i = 0; i < string.length;) {\r\n var c = string.charCodeAt(i++);\r\n if (c === 61 && j > 1)\r\n break;\r\n if ((c = s64[c]) === undefined)\r\n throw Error(invalidEncoding);\r\n switch (j) {\r\n case 0:\r\n t = c;\r\n j = 1;\r\n break;\r\n case 1:\r\n buffer[offset++] = t << 2 | (c & 48) >> 4;\r\n t = c;\r\n j = 2;\r\n break;\r\n case 2:\r\n buffer[offset++] = (t & 15) << 4 | (c & 60) >> 2;\r\n t = c;\r\n j = 3;\r\n break;\r\n case 3:\r\n buffer[offset++] = (t & 3) << 6 | c;\r\n j = 0;\r\n break;\r\n }\r\n }\r\n if (j === 1)\r\n throw Error(invalidEncoding);\r\n return offset - start;\r\n};\r\n\r\n/**\r\n * Tests if the specified string appears to be base64 encoded.\r\n * @param {string} string String to test\r\n * @returns {boolean} `true` if probably base64 encoded, otherwise false\r\n */\r\nbase64.test = function test(string) {\r\n return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(string);\r\n};\r\n","\"use strict\";\r\nmodule.exports = codegen;\r\n\r\n/**\r\n * Begins generating a function.\r\n * @memberof util\r\n * @param {string[]} functionParams Function parameter names\r\n * @param {string} [functionName] Function name if not anonymous\r\n * @returns {Codegen} Appender that appends code to the function's body\r\n */\r\nfunction codegen(functionParams, functionName) {\r\n\r\n /* istanbul ignore if */\r\n if (typeof functionParams === \"string\") {\r\n functionName = functionParams;\r\n functionParams = undefined;\r\n }\r\n\r\n var body = [];\r\n\r\n /**\r\n * Appends code to the function's body or finishes generation.\r\n * @typedef Codegen\r\n * @type {function}\r\n * @param {string|Object.} [formatStringOrScope] Format string or, to finish the function, an object of additional scope variables, if any\r\n * @param {...*} [formatParams] Format parameters\r\n * @returns {Codegen|Function} Itself or the generated function if finished\r\n * @throws {Error} If format parameter counts do not match\r\n */\r\n\r\n function Codegen(formatStringOrScope) {\r\n // note that explicit array handling below makes this ~50% faster\r\n\r\n // finish the function\r\n if (typeof formatStringOrScope !== \"string\") {\r\n var source = toString();\r\n if (codegen.verbose)\r\n console.log(\"codegen: \" + source); // eslint-disable-line no-console\r\n source = \"return \" + source;\r\n if (formatStringOrScope) {\r\n var scopeKeys = Object.keys(formatStringOrScope),\r\n scopeParams = new Array(scopeKeys.length + 1),\r\n scopeValues = new Array(scopeKeys.length),\r\n scopeOffset = 0;\r\n while (scopeOffset < scopeKeys.length) {\r\n scopeParams[scopeOffset] = scopeKeys[scopeOffset];\r\n scopeValues[scopeOffset] = formatStringOrScope[scopeKeys[scopeOffset++]];\r\n }\r\n scopeParams[scopeOffset] = source;\r\n return Function.apply(null, scopeParams).apply(null, scopeValues); // eslint-disable-line no-new-func\r\n }\r\n return Function(source)(); // eslint-disable-line no-new-func\r\n }\r\n\r\n // otherwise append to body\r\n var formatParams = new Array(arguments.length - 1),\r\n formatOffset = 0;\r\n while (formatOffset < formatParams.length)\r\n formatParams[formatOffset] = arguments[++formatOffset];\r\n formatOffset = 0;\r\n formatStringOrScope = formatStringOrScope.replace(/%([%dfijs])/g, function replace($0, $1) {\r\n var value = formatParams[formatOffset++];\r\n switch ($1) {\r\n case \"d\": case \"f\": return String(Number(value));\r\n case \"i\": return String(Math.floor(value));\r\n case \"j\": return JSON.stringify(value);\r\n case \"s\": return String(value);\r\n }\r\n return \"%\";\r\n });\r\n if (formatOffset !== formatParams.length)\r\n throw Error(\"parameter count mismatch\");\r\n body.push(formatStringOrScope);\r\n return Codegen;\r\n }\r\n\r\n function toString(functionNameOverride) {\r\n return \"function \" + (functionNameOverride || functionName || \"\") + \"(\" + (functionParams && functionParams.join(\",\") || \"\") + \"){\\n \" + body.join(\"\\n \") + \"\\n}\";\r\n }\r\n\r\n Codegen.toString = toString;\r\n return Codegen;\r\n}\r\n\r\n/**\r\n * Begins generating a function.\r\n * @memberof util\r\n * @function codegen\r\n * @param {string} [functionName] Function name if not anonymous\r\n * @returns {Codegen} Appender that appends code to the function's body\r\n * @variation 2\r\n */\r\n\r\n/**\r\n * When set to `true`, codegen will log generated code to console. Useful for debugging.\r\n * @name util.codegen.verbose\r\n * @type {boolean}\r\n */\r\ncodegen.verbose = false;\r\n","\"use strict\";\r\nmodule.exports = EventEmitter;\r\n\r\n/**\r\n * Constructs a new event emitter instance.\r\n * @classdesc A minimal event emitter.\r\n * @memberof util\r\n * @constructor\r\n */\r\nfunction EventEmitter() {\r\n\r\n /**\r\n * Registered listeners.\r\n * @type {Object.}\r\n * @private\r\n */\r\n this._listeners = {};\r\n}\r\n\r\n/**\r\n * Registers an event listener.\r\n * @param {string} evt Event name\r\n * @param {function} fn Listener\r\n * @param {*} [ctx] Listener context\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.on = function on(evt, fn, ctx) {\r\n (this._listeners[evt] || (this._listeners[evt] = [])).push({\r\n fn : fn,\r\n ctx : ctx || this\r\n });\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes an event listener or any matching listeners if arguments are omitted.\r\n * @param {string} [evt] Event name. Removes all listeners if omitted.\r\n * @param {function} [fn] Listener to remove. Removes all listeners of `evt` if omitted.\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.off = function off(evt, fn) {\r\n if (evt === undefined)\r\n this._listeners = {};\r\n else {\r\n if (fn === undefined)\r\n this._listeners[evt] = [];\r\n else {\r\n var listeners = this._listeners[evt];\r\n for (var i = 0; i < listeners.length;)\r\n if (listeners[i].fn === fn)\r\n listeners.splice(i, 1);\r\n else\r\n ++i;\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Emits an event by calling its listeners with the specified arguments.\r\n * @param {string} evt Event name\r\n * @param {...*} args Arguments\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.emit = function emit(evt) {\r\n var listeners = this._listeners[evt];\r\n if (listeners) {\r\n var args = [],\r\n i = 1;\r\n for (; i < arguments.length;)\r\n args.push(arguments[i++]);\r\n for (i = 0; i < listeners.length;)\r\n listeners[i].fn.apply(listeners[i++].ctx, args);\r\n }\r\n return this;\r\n};\r\n","\"use strict\";\r\nmodule.exports = fetch;\r\n\r\nvar asPromise = require(\"@protobufjs/aspromise\"),\r\n inquire = require(\"@protobufjs/inquire\");\r\n\r\nvar fs = inquire(\"fs\");\r\n\r\n/**\r\n * Node-style callback as used by {@link util.fetch}.\r\n * @typedef FetchCallback\r\n * @type {function}\r\n * @param {?Error} error Error, if any, otherwise `null`\r\n * @param {string} [contents] File contents, if there hasn't been an error\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Options as used by {@link util.fetch}.\r\n * @typedef FetchOptions\r\n * @type {Object}\r\n * @property {boolean} [binary=false] Whether expecting a binary response\r\n * @property {boolean} [xhr=false] If `true`, forces the use of XMLHttpRequest\r\n */\r\n\r\n/**\r\n * Fetches the contents of a file.\r\n * @memberof util\r\n * @param {string} filename File path or url\r\n * @param {FetchOptions} options Fetch options\r\n * @param {FetchCallback} callback Callback function\r\n * @returns {undefined}\r\n */\r\nfunction fetch(filename, options, callback) {\r\n if (typeof options === \"function\") {\r\n callback = options;\r\n options = {};\r\n } else if (!options)\r\n options = {};\r\n\r\n if (!callback)\r\n return asPromise(fetch, this, filename, options); // eslint-disable-line no-invalid-this\r\n\r\n // if a node-like filesystem is present, try it first but fall back to XHR if nothing is found.\r\n if (!options.xhr && fs && fs.readFile)\r\n return fs.readFile(filename, function fetchReadFileCallback(err, contents) {\r\n return err && typeof XMLHttpRequest !== \"undefined\"\r\n ? fetch.xhr(filename, options, callback)\r\n : err\r\n ? callback(err)\r\n : callback(null, options.binary ? contents : contents.toString(\"utf8\"));\r\n });\r\n\r\n // use the XHR version otherwise.\r\n return fetch.xhr(filename, options, callback);\r\n}\r\n\r\n/**\r\n * Fetches the contents of a file.\r\n * @name util.fetch\r\n * @function\r\n * @param {string} path File path or url\r\n * @param {FetchCallback} callback Callback function\r\n * @returns {undefined}\r\n * @variation 2\r\n */\r\n\r\n/**\r\n * Fetches the contents of a file.\r\n * @name util.fetch\r\n * @function\r\n * @param {string} path File path or url\r\n * @param {FetchOptions} [options] Fetch options\r\n * @returns {Promise} Promise\r\n * @variation 3\r\n */\r\n\r\n/**/\r\nfetch.xhr = function fetch_xhr(filename, options, callback) {\r\n var xhr = new XMLHttpRequest();\r\n xhr.onreadystatechange /* works everywhere */ = function fetchOnReadyStateChange() {\r\n\r\n if (xhr.readyState !== 4)\r\n return undefined;\r\n\r\n // local cors security errors return status 0 / empty string, too. afaik this cannot be\r\n // reliably distinguished from an actually empty file for security reasons. feel free\r\n // to send a pull request if you are aware of a solution.\r\n if (xhr.status !== 0 && xhr.status !== 200)\r\n return callback(Error(\"status \" + xhr.status));\r\n\r\n // if binary data is expected, make sure that some sort of array is returned, even if\r\n // ArrayBuffers are not supported. the binary string fallback, however, is unsafe.\r\n if (options.binary) {\r\n var buffer = xhr.response;\r\n if (!buffer) {\r\n buffer = [];\r\n for (var i = 0; i < xhr.responseText.length; ++i)\r\n buffer.push(xhr.responseText.charCodeAt(i) & 255);\r\n }\r\n return callback(null, typeof Uint8Array !== \"undefined\" ? new Uint8Array(buffer) : buffer);\r\n }\r\n return callback(null, xhr.responseText);\r\n };\r\n\r\n if (options.binary) {\r\n // ref: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Sending_and_Receiving_Binary_Data#Receiving_binary_data_in_older_browsers\r\n if (\"overrideMimeType\" in xhr)\r\n xhr.overrideMimeType(\"text/plain; charset=x-user-defined\");\r\n xhr.responseType = \"arraybuffer\";\r\n }\r\n\r\n xhr.open(\"GET\", filename);\r\n xhr.send();\r\n};\r\n","\"use strict\";\r\n\r\nmodule.exports = factory(factory);\r\n\r\n/**\r\n * Reads / writes floats / doubles from / to buffers.\r\n * @name util.float\r\n * @namespace\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using little endian byte order.\r\n * @name util.float.writeFloatLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using big endian byte order.\r\n * @name util.float.writeFloatBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using little endian byte order.\r\n * @name util.float.readFloatLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using big endian byte order.\r\n * @name util.float.readFloatBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using little endian byte order.\r\n * @name util.float.writeDoubleLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using big endian byte order.\r\n * @name util.float.writeDoubleBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using little endian byte order.\r\n * @name util.float.readDoubleLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using big endian byte order.\r\n * @name util.float.readDoubleBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n// Factory function for the purpose of node-based testing in modified global environments\r\nfunction factory(exports) {\r\n\r\n // float: typed array\r\n if (typeof Float32Array !== \"undefined\") (function() {\r\n\r\n var f32 = new Float32Array([ -0 ]),\r\n f8b = new Uint8Array(f32.buffer),\r\n le = f8b[3] === 128;\r\n\r\n function writeFloat_f32_cpy(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos ] = f8b[0];\r\n buf[pos + 1] = f8b[1];\r\n buf[pos + 2] = f8b[2];\r\n buf[pos + 3] = f8b[3];\r\n }\r\n\r\n function writeFloat_f32_rev(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos ] = f8b[3];\r\n buf[pos + 1] = f8b[2];\r\n buf[pos + 2] = f8b[1];\r\n buf[pos + 3] = f8b[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.writeFloatLE = le ? writeFloat_f32_cpy : writeFloat_f32_rev;\r\n /* istanbul ignore next */\r\n exports.writeFloatBE = le ? writeFloat_f32_rev : writeFloat_f32_cpy;\r\n\r\n function readFloat_f32_cpy(buf, pos) {\r\n f8b[0] = buf[pos ];\r\n f8b[1] = buf[pos + 1];\r\n f8b[2] = buf[pos + 2];\r\n f8b[3] = buf[pos + 3];\r\n return f32[0];\r\n }\r\n\r\n function readFloat_f32_rev(buf, pos) {\r\n f8b[3] = buf[pos ];\r\n f8b[2] = buf[pos + 1];\r\n f8b[1] = buf[pos + 2];\r\n f8b[0] = buf[pos + 3];\r\n return f32[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.readFloatLE = le ? readFloat_f32_cpy : readFloat_f32_rev;\r\n /* istanbul ignore next */\r\n exports.readFloatBE = le ? readFloat_f32_rev : readFloat_f32_cpy;\r\n\r\n // float: ieee754\r\n })(); else (function() {\r\n\r\n function writeFloat_ieee754(writeUint, val, buf, pos) {\r\n var sign = val < 0 ? 1 : 0;\r\n if (sign)\r\n val = -val;\r\n if (val === 0)\r\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos);\r\n else if (isNaN(val))\r\n writeUint(2143289344, buf, pos);\r\n else if (val > 3.4028234663852886e+38) // +-Infinity\r\n writeUint((sign << 31 | 2139095040) >>> 0, buf, pos);\r\n else if (val < 1.1754943508222875e-38) // denormal\r\n writeUint((sign << 31 | Math.round(val / 1.401298464324817e-45)) >>> 0, buf, pos);\r\n else {\r\n var exponent = Math.floor(Math.log(val) / Math.LN2),\r\n mantissa = Math.round(val * Math.pow(2, -exponent) * 8388608) & 8388607;\r\n writeUint((sign << 31 | exponent + 127 << 23 | mantissa) >>> 0, buf, pos);\r\n }\r\n }\r\n\r\n exports.writeFloatLE = writeFloat_ieee754.bind(null, writeUintLE);\r\n exports.writeFloatBE = writeFloat_ieee754.bind(null, writeUintBE);\r\n\r\n function readFloat_ieee754(readUint, buf, pos) {\r\n var uint = readUint(buf, pos),\r\n sign = (uint >> 31) * 2 + 1,\r\n exponent = uint >>> 23 & 255,\r\n mantissa = uint & 8388607;\r\n return exponent === 255\r\n ? mantissa\r\n ? NaN\r\n : sign * Infinity\r\n : exponent === 0 // denormal\r\n ? sign * 1.401298464324817e-45 * mantissa\r\n : sign * Math.pow(2, exponent - 150) * (mantissa + 8388608);\r\n }\r\n\r\n exports.readFloatLE = readFloat_ieee754.bind(null, readUintLE);\r\n exports.readFloatBE = readFloat_ieee754.bind(null, readUintBE);\r\n\r\n })();\r\n\r\n // double: typed array\r\n if (typeof Float64Array !== \"undefined\") (function() {\r\n\r\n var f64 = new Float64Array([-0]),\r\n f8b = new Uint8Array(f64.buffer),\r\n le = f8b[7] === 128;\r\n\r\n function writeDouble_f64_cpy(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos ] = f8b[0];\r\n buf[pos + 1] = f8b[1];\r\n buf[pos + 2] = f8b[2];\r\n buf[pos + 3] = f8b[3];\r\n buf[pos + 4] = f8b[4];\r\n buf[pos + 5] = f8b[5];\r\n buf[pos + 6] = f8b[6];\r\n buf[pos + 7] = f8b[7];\r\n }\r\n\r\n function writeDouble_f64_rev(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos ] = f8b[7];\r\n buf[pos + 1] = f8b[6];\r\n buf[pos + 2] = f8b[5];\r\n buf[pos + 3] = f8b[4];\r\n buf[pos + 4] = f8b[3];\r\n buf[pos + 5] = f8b[2];\r\n buf[pos + 6] = f8b[1];\r\n buf[pos + 7] = f8b[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.writeDoubleLE = le ? writeDouble_f64_cpy : writeDouble_f64_rev;\r\n /* istanbul ignore next */\r\n exports.writeDoubleBE = le ? writeDouble_f64_rev : writeDouble_f64_cpy;\r\n\r\n function readDouble_f64_cpy(buf, pos) {\r\n f8b[0] = buf[pos ];\r\n f8b[1] = buf[pos + 1];\r\n f8b[2] = buf[pos + 2];\r\n f8b[3] = buf[pos + 3];\r\n f8b[4] = buf[pos + 4];\r\n f8b[5] = buf[pos + 5];\r\n f8b[6] = buf[pos + 6];\r\n f8b[7] = buf[pos + 7];\r\n return f64[0];\r\n }\r\n\r\n function readDouble_f64_rev(buf, pos) {\r\n f8b[7] = buf[pos ];\r\n f8b[6] = buf[pos + 1];\r\n f8b[5] = buf[pos + 2];\r\n f8b[4] = buf[pos + 3];\r\n f8b[3] = buf[pos + 4];\r\n f8b[2] = buf[pos + 5];\r\n f8b[1] = buf[pos + 6];\r\n f8b[0] = buf[pos + 7];\r\n return f64[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.readDoubleLE = le ? readDouble_f64_cpy : readDouble_f64_rev;\r\n /* istanbul ignore next */\r\n exports.readDoubleBE = le ? readDouble_f64_rev : readDouble_f64_cpy;\r\n\r\n // double: ieee754\r\n })(); else (function() {\r\n\r\n function writeDouble_ieee754(writeUint, off0, off1, val, buf, pos) {\r\n var sign = val < 0 ? 1 : 0;\r\n if (sign)\r\n val = -val;\r\n if (val === 0) {\r\n writeUint(0, buf, pos + off0);\r\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos + off1);\r\n } else if (isNaN(val)) {\r\n writeUint(0, buf, pos + off0);\r\n writeUint(2146959360, buf, pos + off1);\r\n } else if (val > 1.7976931348623157e+308) { // +-Infinity\r\n writeUint(0, buf, pos + off0);\r\n writeUint((sign << 31 | 2146435072) >>> 0, buf, pos + off1);\r\n } else {\r\n var mantissa;\r\n if (val < 2.2250738585072014e-308) { // denormal\r\n mantissa = val / 5e-324;\r\n writeUint(mantissa >>> 0, buf, pos + off0);\r\n writeUint((sign << 31 | mantissa / 4294967296) >>> 0, buf, pos + off1);\r\n } else {\r\n var exponent = Math.floor(Math.log(val) / Math.LN2);\r\n if (exponent === 1024)\r\n exponent = 1023;\r\n mantissa = val * Math.pow(2, -exponent);\r\n writeUint(mantissa * 4503599627370496 >>> 0, buf, pos + off0);\r\n writeUint((sign << 31 | exponent + 1023 << 20 | mantissa * 1048576 & 1048575) >>> 0, buf, pos + off1);\r\n }\r\n }\r\n }\r\n\r\n exports.writeDoubleLE = writeDouble_ieee754.bind(null, writeUintLE, 0, 4);\r\n exports.writeDoubleBE = writeDouble_ieee754.bind(null, writeUintBE, 4, 0);\r\n\r\n function readDouble_ieee754(readUint, off0, off1, buf, pos) {\r\n var lo = readUint(buf, pos + off0),\r\n hi = readUint(buf, pos + off1);\r\n var sign = (hi >> 31) * 2 + 1,\r\n exponent = hi >>> 20 & 2047,\r\n mantissa = 4294967296 * (hi & 1048575) + lo;\r\n return exponent === 2047\r\n ? mantissa\r\n ? NaN\r\n : sign * Infinity\r\n : exponent === 0 // denormal\r\n ? sign * 5e-324 * mantissa\r\n : sign * Math.pow(2, exponent - 1075) * (mantissa + 4503599627370496);\r\n }\r\n\r\n exports.readDoubleLE = readDouble_ieee754.bind(null, readUintLE, 0, 4);\r\n exports.readDoubleBE = readDouble_ieee754.bind(null, readUintBE, 4, 0);\r\n\r\n })();\r\n\r\n return exports;\r\n}\r\n\r\n// uint helpers\r\n\r\nfunction writeUintLE(val, buf, pos) {\r\n buf[pos ] = val & 255;\r\n buf[pos + 1] = val >>> 8 & 255;\r\n buf[pos + 2] = val >>> 16 & 255;\r\n buf[pos + 3] = val >>> 24;\r\n}\r\n\r\nfunction writeUintBE(val, buf, pos) {\r\n buf[pos ] = val >>> 24;\r\n buf[pos + 1] = val >>> 16 & 255;\r\n buf[pos + 2] = val >>> 8 & 255;\r\n buf[pos + 3] = val & 255;\r\n}\r\n\r\nfunction readUintLE(buf, pos) {\r\n return (buf[pos ]\r\n | buf[pos + 1] << 8\r\n | buf[pos + 2] << 16\r\n | buf[pos + 3] << 24) >>> 0;\r\n}\r\n\r\nfunction readUintBE(buf, pos) {\r\n return (buf[pos ] << 24\r\n | buf[pos + 1] << 16\r\n | buf[pos + 2] << 8\r\n | buf[pos + 3]) >>> 0;\r\n}\r\n","\"use strict\";\r\nmodule.exports = inquire;\r\n\r\n/**\r\n * Requires a module only if available.\r\n * @memberof util\r\n * @param {string} moduleName Module to require\r\n * @returns {?Object} Required module if available and not empty, otherwise `null`\r\n */\r\nfunction inquire(moduleName) {\r\n try {\r\n var mod = eval(\"quire\".replace(/^/,\"re\"))(moduleName); // eslint-disable-line no-eval\r\n if (mod && (mod.length || Object.keys(mod).length))\r\n return mod;\r\n } catch (e) {} // eslint-disable-line no-empty\r\n return null;\r\n}\r\n","\"use strict\";\r\n\r\n/**\r\n * A minimal path module to resolve Unix, Windows and URL paths alike.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar path = exports;\r\n\r\nvar isAbsolute =\r\n/**\r\n * Tests if the specified path is absolute.\r\n * @param {string} path Path to test\r\n * @returns {boolean} `true` if path is absolute\r\n */\r\npath.isAbsolute = function isAbsolute(path) {\r\n return /^(?:\\/|\\w+:)/.test(path);\r\n};\r\n\r\nvar normalize =\r\n/**\r\n * Normalizes the specified path.\r\n * @param {string} path Path to normalize\r\n * @returns {string} Normalized path\r\n */\r\npath.normalize = function normalize(path) {\r\n path = path.replace(/\\\\/g, \"/\")\r\n .replace(/\\/{2,}/g, \"/\");\r\n var parts = path.split(\"/\"),\r\n absolute = isAbsolute(path),\r\n prefix = \"\";\r\n if (absolute)\r\n prefix = parts.shift() + \"/\";\r\n for (var i = 0; i < parts.length;) {\r\n if (parts[i] === \"..\") {\r\n if (i > 0 && parts[i - 1] !== \"..\")\r\n parts.splice(--i, 2);\r\n else if (absolute)\r\n parts.splice(i, 1);\r\n else\r\n ++i;\r\n } else if (parts[i] === \".\")\r\n parts.splice(i, 1);\r\n else\r\n ++i;\r\n }\r\n return prefix + parts.join(\"/\");\r\n};\r\n\r\n/**\r\n * Resolves the specified include path against the specified origin path.\r\n * @param {string} originPath Path to the origin file\r\n * @param {string} includePath Include path relative to origin path\r\n * @param {boolean} [alreadyNormalized=false] `true` if both paths are already known to be normalized\r\n * @returns {string} Path to the include file\r\n */\r\npath.resolve = function resolve(originPath, includePath, alreadyNormalized) {\r\n if (!alreadyNormalized)\r\n includePath = normalize(includePath);\r\n if (isAbsolute(includePath))\r\n return includePath;\r\n if (!alreadyNormalized)\r\n originPath = normalize(originPath);\r\n return (originPath = originPath.replace(/(?:\\/|^)[^/]+$/, \"\")).length ? normalize(originPath + \"/\" + includePath) : includePath;\r\n};\r\n","\"use strict\";\r\nmodule.exports = pool;\r\n\r\n/**\r\n * An allocator as used by {@link util.pool}.\r\n * @typedef PoolAllocator\r\n * @type {function}\r\n * @param {number} size Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\n\r\n/**\r\n * A slicer as used by {@link util.pool}.\r\n * @typedef PoolSlicer\r\n * @type {function}\r\n * @param {number} start Start offset\r\n * @param {number} end End offset\r\n * @returns {Uint8Array} Buffer slice\r\n * @this {Uint8Array}\r\n */\r\n\r\n/**\r\n * A general purpose buffer pool.\r\n * @memberof util\r\n * @function\r\n * @param {PoolAllocator} alloc Allocator\r\n * @param {PoolSlicer} slice Slicer\r\n * @param {number} [size=8192] Slab size\r\n * @returns {PoolAllocator} Pooled allocator\r\n */\r\nfunction pool(alloc, slice, size) {\r\n var SIZE = size || 8192;\r\n var MAX = SIZE >>> 1;\r\n var slab = null;\r\n var offset = SIZE;\r\n return function pool_alloc(size) {\r\n if (size < 1 || size > MAX)\r\n return alloc(size);\r\n if (offset + size > SIZE) {\r\n slab = alloc(SIZE);\r\n offset = 0;\r\n }\r\n var buf = slice.call(slab, offset, offset += size);\r\n if (offset & 7) // align to 32 bit\r\n offset = (offset | 7) + 1;\r\n return buf;\r\n };\r\n}\r\n","\"use strict\";\r\n\r\n/**\r\n * A minimal UTF8 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar utf8 = exports;\r\n\r\n/**\r\n * Calculates the UTF8 byte length of a string.\r\n * @param {string} string String\r\n * @returns {number} Byte length\r\n */\r\nutf8.length = function utf8_length(string) {\r\n var len = 0,\r\n c = 0;\r\n for (var i = 0; i < string.length; ++i) {\r\n c = string.charCodeAt(i);\r\n if (c < 128)\r\n len += 1;\r\n else if (c < 2048)\r\n len += 2;\r\n else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n ++i;\r\n len += 4;\r\n } else\r\n len += 3;\r\n }\r\n return len;\r\n};\r\n\r\n/**\r\n * Reads UTF8 bytes as a string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} String read\r\n */\r\nutf8.read = function utf8_read(buffer, start, end) {\r\n var len = end - start;\r\n if (len < 1)\r\n return \"\";\r\n var parts = null,\r\n chunk = [],\r\n i = 0, // char offset\r\n t; // temporary\r\n while (start < end) {\r\n t = buffer[start++];\r\n if (t < 128)\r\n chunk[i++] = t;\r\n else if (t > 191 && t < 224)\r\n chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\r\n else if (t > 239 && t < 365) {\r\n t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\r\n chunk[i++] = 0xD800 + (t >> 10);\r\n chunk[i++] = 0xDC00 + (t & 1023);\r\n } else\r\n chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\n/**\r\n * Writes a string as UTF8 bytes.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Bytes written\r\n */\r\nutf8.write = function utf8_write(string, buffer, offset) {\r\n var start = offset,\r\n c1, // character 1\r\n c2; // character 2\r\n for (var i = 0; i < string.length; ++i) {\r\n c1 = string.charCodeAt(i);\r\n if (c1 < 128) {\r\n buffer[offset++] = c1;\r\n } else if (c1 < 2048) {\r\n buffer[offset++] = c1 >> 6 | 192;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n ++i;\r\n buffer[offset++] = c1 >> 18 | 240;\r\n buffer[offset++] = c1 >> 12 & 63 | 128;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else {\r\n buffer[offset++] = c1 >> 12 | 224;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n }\r\n }\r\n return offset - start;\r\n};\r\n","/* MIT license */\n/* eslint-disable no-mixed-operators */\nconst cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nconst reverseKeywords = {};\nfor (const key of Object.keys(cssKeywords)) {\n\treverseKeywords[cssKeywords[key]] = key;\n}\n\nconst convert = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\nmodule.exports = convert;\n\n// Hide .channels and .labels properties\nfor (const model of Object.keys(convert)) {\n\tif (!('channels' in convert[model])) {\n\t\tthrow new Error('missing channels property: ' + model);\n\t}\n\n\tif (!('labels' in convert[model])) {\n\t\tthrow new Error('missing channel labels property: ' + model);\n\t}\n\n\tif (convert[model].labels.length !== convert[model].channels) {\n\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t}\n\n\tconst {channels, labels} = convert[model];\n\tdelete convert[model].channels;\n\tdelete convert[model].labels;\n\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\tObject.defineProperty(convert[model], 'labels', {value: labels});\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst min = Math.min(r, g, b);\n\tconst max = Math.max(r, g, b);\n\tconst delta = max - min;\n\tlet h;\n\tlet s;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst l = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tlet rdif;\n\tlet gdif;\n\tlet bdif;\n\tlet h;\n\tlet s;\n\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst v = Math.max(r, g, b);\n\tconst diff = v - Math.min(r, g, b);\n\tconst diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = 0;\n\t\ts = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tconst r = rgb[0];\n\tconst g = rgb[1];\n\tlet b = rgb[2];\n\tconst h = convert.rgb.hsl(rgb)[0];\n\tconst w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\n\tconst k = Math.min(1 - r, 1 - g, 1 - b);\n\tconst c = (1 - r - k) / (1 - k) || 0;\n\tconst m = (1 - g - k) / (1 - k) || 0;\n\tconst y = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\nfunction comparativeDistance(x, y) {\n\t/*\n\t\tSee https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n\t*/\n\treturn (\n\t\t((x[0] - y[0]) ** 2) +\n\t\t((x[1] - y[1]) ** 2) +\n\t\t((x[2] - y[2]) ** 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tconst reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tlet currentClosestDistance = Infinity;\n\tlet currentClosestKeyword;\n\n\tfor (const keyword of Object.keys(cssKeywords)) {\n\t\tconst value = cssKeywords[keyword];\n\n\t\t// Compute comparative distance\n\t\tconst distance = comparativeDistance(rgb, value);\n\n\t\t// Check if its less, if so set as closest\n\t\tif (distance < currentClosestDistance) {\n\t\t\tcurrentClosestDistance = distance;\n\t\t\tcurrentClosestKeyword = keyword;\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tlet r = rgb[0] / 255;\n\tlet g = rgb[1] / 255;\n\tlet b = rgb[2] / 255;\n\n\t// Assume sRGB\n\tr = r > 0.04045 ? (((r + 0.055) / 1.055) ** 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? (((g + 0.055) / 1.055) ** 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? (((b + 0.055) / 1.055) ** 2.4) : (b / 12.92);\n\n\tconst x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tconst y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tconst z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tconst xyz = convert.rgb.xyz(rgb);\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tconst h = hsl[0] / 360;\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\tlet t2;\n\tlet t3;\n\tlet val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tconst t1 = 2 * l - t2;\n\n\tconst rgb = [0, 0, 0];\n\tfor (let i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tconst h = hsl[0];\n\tlet s = hsl[1] / 100;\n\tlet l = hsl[2] / 100;\n\tlet smin = s;\n\tconst lmin = Math.max(l, 0.01);\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tconst v = (l + s) / 2;\n\tconst sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tconst h = hsv[0] / 60;\n\tconst s = hsv[1] / 100;\n\tlet v = hsv[2] / 100;\n\tconst hi = Math.floor(h) % 6;\n\n\tconst f = h - Math.floor(h);\n\tconst p = 255 * v * (1 - s);\n\tconst q = 255 * v * (1 - (s * f));\n\tconst t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tconst h = hsv[0];\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\tconst vmin = Math.max(v, 0.01);\n\tlet sl;\n\tlet l;\n\n\tl = (2 - s) * v;\n\tconst lmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tconst h = hwb[0] / 360;\n\tlet wh = hwb[1] / 100;\n\tlet bl = hwb[2] / 100;\n\tconst ratio = wh + bl;\n\tlet f;\n\n\t// Wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\tconst i = Math.floor(6 * h);\n\tconst v = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tconst n = wh + f * (v - wh); // Linear interpolation\n\n\tlet r;\n\tlet g;\n\tlet b;\n\t/* eslint-disable max-statements-per-line,no-multi-spaces */\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\t/* eslint-enable max-statements-per-line,no-multi-spaces */\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tconst c = cmyk[0] / 100;\n\tconst m = cmyk[1] / 100;\n\tconst y = cmyk[2] / 100;\n\tconst k = cmyk[3] / 100;\n\n\tconst r = 1 - Math.min(1, c * (1 - k) + k);\n\tconst g = 1 - Math.min(1, m * (1 - k) + k);\n\tconst b = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tconst x = xyz[0] / 100;\n\tconst y = xyz[1] / 100;\n\tconst z = xyz[2] / 100;\n\tlet r;\n\tlet g;\n\tlet b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// Assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * (r ** (1.0 / 2.4))) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * (g ** (1.0 / 2.4))) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * (b ** (1.0 / 2.4))) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet x;\n\tlet y;\n\tlet z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tconst y2 = y ** 3;\n\tconst x2 = x ** 3;\n\tconst z2 = z ** 3;\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet h;\n\n\tconst hr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst c = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tconst l = lch[0];\n\tconst c = lch[1];\n\tconst h = lch[2];\n\n\tconst hr = h / 360 * 2 * Math.PI;\n\tconst a = c * Math.cos(hr);\n\tconst b = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args, saturation = null) {\n\tconst [r, g, b] = args;\n\tlet value = saturation === null ? convert.rgb.hsv(args)[2] : saturation; // Hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tlet ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// Optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tconst r = args[0];\n\tconst g = args[1];\n\tconst b = args[2];\n\n\t// We use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tconst ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tlet color = args % 10;\n\n\t// Handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tconst mult = (~~(args > 50) + 1) * 0.5;\n\tconst r = ((color & 1) * mult) * 255;\n\tconst g = (((color >> 1) & 1) * mult) * 255;\n\tconst b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// Handle greyscale\n\tif (args >= 232) {\n\t\tconst c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tlet rem;\n\tconst r = Math.floor(args / 36) / 5 * 255;\n\tconst g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tconst b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tconst integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tconst match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tlet colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(char => {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tconst integer = parseInt(colorString, 16);\n\tconst r = (integer >> 16) & 0xFF;\n\tconst g = (integer >> 8) & 0xFF;\n\tconst b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst max = Math.max(Math.max(r, g), b);\n\tconst min = Math.min(Math.min(r, g), b);\n\tconst chroma = (max - min);\n\tlet grayscale;\n\tlet hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\n\tconst c = l < 0.5 ? (2.0 * s * l) : (2.0 * s * (1.0 - l));\n\n\tlet f = 0;\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\n\tconst c = s * v;\n\tlet f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tconst h = hcg[0] / 360;\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tconst pure = [0, 0, 0];\n\tconst hi = (h % 1) * 6;\n\tconst v = hi % 1;\n\tconst w = 1 - v;\n\tlet mg = 0;\n\n\t/* eslint-disable max-statements-per-line */\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\t/* eslint-enable max-statements-per-line */\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst v = c + g * (1.0 - c);\n\tlet f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst l = g * (1.0 - c) + 0.5 * c;\n\tlet s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\tconst v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tconst w = hwb[1] / 100;\n\tconst b = hwb[2] / 100;\n\tconst v = 1 - b;\n\tconst c = v - w;\n\tlet g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hsv = convert.gray.hsl;\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tconst val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tconst integer = (val << 16) + (val << 8) + val;\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tconst val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n","const conversions = require('./conversions');\nconst route = require('./route');\n\nconst convert = {};\n\nconst models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\tconst result = fn(args);\n\n\t\t// We're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (let len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(fromModel => {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tconst routes = route(fromModel);\n\tconst routeModels = Object.keys(routes);\n\n\trouteModels.forEach(toModel => {\n\t\tconst fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n","const conversions = require('./conversions');\n\n/*\n\tThis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tconst graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tconst models = Object.keys(conversions);\n\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tconst graph = buildGraph();\n\tconst queue = [fromModel]; // Unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tconst current = queue.pop();\n\t\tconst adjacents = Object.keys(conversions[current]);\n\n\t\tfor (let len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tconst adjacent = adjacents[i];\n\t\t\tconst node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tconst path = [graph[toModel].parent, toModel];\n\tlet fn = conversions[graph[toModel].parent][toModel];\n\n\tlet cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tconst graph = deriveBFS(fromModel);\n\tconst conversion = {};\n\n\tconst models = Object.keys(graph);\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tconst toModel = models[i];\n\t\tconst node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// No possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","/* MIT license */\nvar colorNames = require('color-name');\nvar swizzle = require('simple-swizzle');\nvar hasOwnProperty = Object.hasOwnProperty;\n\nvar reverseNames = Object.create(null);\n\n// create a list of reverse color names\nfor (var name in colorNames) {\n\tif (hasOwnProperty.call(colorNames, name)) {\n\t\treverseNames[colorNames[name]] = name;\n\t}\n}\n\nvar cs = module.exports = {\n\tto: {},\n\tget: {}\n};\n\ncs.get = function (string) {\n\tvar prefix = string.substring(0, 3).toLowerCase();\n\tvar val;\n\tvar model;\n\tswitch (prefix) {\n\t\tcase 'hsl':\n\t\t\tval = cs.get.hsl(string);\n\t\t\tmodel = 'hsl';\n\t\t\tbreak;\n\t\tcase 'hwb':\n\t\t\tval = cs.get.hwb(string);\n\t\t\tmodel = 'hwb';\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tval = cs.get.rgb(string);\n\t\t\tmodel = 'rgb';\n\t\t\tbreak;\n\t}\n\n\tif (!val) {\n\t\treturn null;\n\t}\n\n\treturn {model: model, value: val};\n};\n\ncs.get.rgb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar abbr = /^#([a-f0-9]{3,4})$/i;\n\tvar hex = /^#([a-f0-9]{6})([a-f0-9]{2})?$/i;\n\tvar rgba = /^rgba?\\(\\s*([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)(%?)\\s*)?\\)$/;\n\tvar per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,?\\s*([+-]?[\\d\\.]+)\\%\\s*,?\\s*([+-]?[\\d\\.]+)\\%\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)(%?)\\s*)?\\)$/;\n\tvar keyword = /^(\\w+)$/;\n\n\tvar rgb = [0, 0, 0, 1];\n\tvar match;\n\tvar i;\n\tvar hexAlpha;\n\n\tif (match = string.match(hex)) {\n\t\thexAlpha = match[2];\n\t\tmatch = match[1];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\t// https://jsperf.com/slice-vs-substr-vs-substring-methods-long-string/19\n\t\t\tvar i2 = i * 2;\n\t\t\trgb[i] = parseInt(match.slice(i2, i2 + 2), 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = parseInt(hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(abbr)) {\n\t\tmatch = match[1];\n\t\thexAlpha = match[3];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i] + match[i], 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = parseInt(hexAlpha + hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(rgba)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i + 1], 0);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\tif (match[5]) {\n\t\t\t\trgb[3] = parseFloat(match[4]) * 0.01;\n\t\t\t} else {\n\t\t\t\trgb[3] = parseFloat(match[4]);\n\t\t\t}\n\t\t}\n\t} else if (match = string.match(per)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\tif (match[5]) {\n\t\t\t\trgb[3] = parseFloat(match[4]) * 0.01;\n\t\t\t} else {\n\t\t\t\trgb[3] = parseFloat(match[4]);\n\t\t\t}\n\t\t}\n\t} else if (match = string.match(keyword)) {\n\t\tif (match[1] === 'transparent') {\n\t\t\treturn [0, 0, 0, 0];\n\t\t}\n\n\t\tif (!hasOwnProperty.call(colorNames, match[1])) {\n\t\t\treturn null;\n\t\t}\n\n\t\trgb = colorNames[match[1]];\n\t\trgb[3] = 1;\n\n\t\treturn rgb;\n\t} else {\n\t\treturn null;\n\t}\n\n\tfor (i = 0; i < 3; i++) {\n\t\trgb[i] = clamp(rgb[i], 0, 255);\n\t}\n\trgb[3] = clamp(rgb[3], 0, 1);\n\n\treturn rgb;\n};\n\ncs.get.hsl = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hsl = /^hsla?\\(\\s*([+-]?(?:\\d{0,3}\\.)?\\d+)(?:deg)?\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*(?:[,|\\/]\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/;\n\tvar match = string.match(hsl);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar s = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar l = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\n\t\treturn [h, s, l, a];\n\t}\n\n\treturn null;\n};\n\ncs.get.hwb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hwb = /^hwb\\(\\s*([+-]?\\d{0,3}(?:\\.\\d+)?)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/;\n\tvar match = string.match(hwb);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar w = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar b = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\t\treturn [h, w, b, a];\n\t}\n\n\treturn null;\n};\n\ncs.to.hex = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn (\n\t\t'#' +\n\t\thexDouble(rgba[0]) +\n\t\thexDouble(rgba[1]) +\n\t\thexDouble(rgba[2]) +\n\t\t(rgba[3] < 1\n\t\t\t? (hexDouble(Math.round(rgba[3] * 255)))\n\t\t\t: '')\n\t);\n};\n\ncs.to.rgb = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ')'\n\t\t: 'rgba(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ', ' + rgba[3] + ')';\n};\n\ncs.to.rgb.percent = function () {\n\tvar rgba = swizzle(arguments);\n\n\tvar r = Math.round(rgba[0] / 255 * 100);\n\tvar g = Math.round(rgba[1] / 255 * 100);\n\tvar b = Math.round(rgba[2] / 255 * 100);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + r + '%, ' + g + '%, ' + b + '%)'\n\t\t: 'rgba(' + r + '%, ' + g + '%, ' + b + '%, ' + rgba[3] + ')';\n};\n\ncs.to.hsl = function () {\n\tvar hsla = swizzle(arguments);\n\treturn hsla.length < 4 || hsla[3] === 1\n\t\t? 'hsl(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%)'\n\t\t: 'hsla(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%, ' + hsla[3] + ')';\n};\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\ncs.to.hwb = function () {\n\tvar hwba = swizzle(arguments);\n\n\tvar a = '';\n\tif (hwba.length >= 4 && hwba[3] !== 1) {\n\t\ta = ', ' + hwba[3];\n\t}\n\n\treturn 'hwb(' + hwba[0] + ', ' + hwba[1] + '%, ' + hwba[2] + '%' + a + ')';\n};\n\ncs.to.keyword = function (rgb) {\n\treturn reverseNames[rgb.slice(0, 3)];\n};\n\n// helpers\nfunction clamp(num, min, max) {\n\treturn Math.min(Math.max(min, num), max);\n}\n\nfunction hexDouble(num) {\n\tvar str = Math.round(num).toString(16).toUpperCase();\n\treturn (str.length < 2) ? '0' + str : str;\n}\n","const colorString = require('color-string');\nconst convert = require('color-convert');\n\nconst skippedModels = [\n\t// To be honest, I don't really feel like keyword belongs in color convert, but eh.\n\t'keyword',\n\n\t// Gray conflicts with some method names, and has its own method defined.\n\t'gray',\n\n\t// Shouldn't really be in color-convert either...\n\t'hex',\n];\n\nconst hashedModelKeys = {};\nfor (const model of Object.keys(convert)) {\n\thashedModelKeys[[...convert[model].labels].sort().join('')] = model;\n}\n\nconst limiters = {};\n\nfunction Color(object, model) {\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(object, model);\n\t}\n\n\tif (model && model in skippedModels) {\n\t\tmodel = null;\n\t}\n\n\tif (model && !(model in convert)) {\n\t\tthrow new Error('Unknown model: ' + model);\n\t}\n\n\tlet i;\n\tlet channels;\n\n\tif (object == null) { // eslint-disable-line no-eq-null,eqeqeq\n\t\tthis.model = 'rgb';\n\t\tthis.color = [0, 0, 0];\n\t\tthis.valpha = 1;\n\t} else if (object instanceof Color) {\n\t\tthis.model = object.model;\n\t\tthis.color = [...object.color];\n\t\tthis.valpha = object.valpha;\n\t} else if (typeof object === 'string') {\n\t\tconst result = colorString.get(object);\n\t\tif (result === null) {\n\t\t\tthrow new Error('Unable to parse color from string: ' + object);\n\t\t}\n\n\t\tthis.model = result.model;\n\t\tchannels = convert[this.model].channels;\n\t\tthis.color = result.value.slice(0, channels);\n\t\tthis.valpha = typeof result.value[channels] === 'number' ? result.value[channels] : 1;\n\t} else if (object.length > 0) {\n\t\tthis.model = model || 'rgb';\n\t\tchannels = convert[this.model].channels;\n\t\tconst newArray = Array.prototype.slice.call(object, 0, channels);\n\t\tthis.color = zeroArray(newArray, channels);\n\t\tthis.valpha = typeof object[channels] === 'number' ? object[channels] : 1;\n\t} else if (typeof object === 'number') {\n\t\t// This is always RGB - can be converted later on.\n\t\tthis.model = 'rgb';\n\t\tthis.color = [\n\t\t\t(object >> 16) & 0xFF,\n\t\t\t(object >> 8) & 0xFF,\n\t\t\tobject & 0xFF,\n\t\t];\n\t\tthis.valpha = 1;\n\t} else {\n\t\tthis.valpha = 1;\n\n\t\tconst keys = Object.keys(object);\n\t\tif ('alpha' in object) {\n\t\t\tkeys.splice(keys.indexOf('alpha'), 1);\n\t\t\tthis.valpha = typeof object.alpha === 'number' ? object.alpha : 0;\n\t\t}\n\n\t\tconst hashedKeys = keys.sort().join('');\n\t\tif (!(hashedKeys in hashedModelKeys)) {\n\t\t\tthrow new Error('Unable to parse color from object: ' + JSON.stringify(object));\n\t\t}\n\n\t\tthis.model = hashedModelKeys[hashedKeys];\n\n\t\tconst {labels} = convert[this.model];\n\t\tconst color = [];\n\t\tfor (i = 0; i < labels.length; i++) {\n\t\t\tcolor.push(object[labels[i]]);\n\t\t}\n\n\t\tthis.color = zeroArray(color);\n\t}\n\n\t// Perform limitations (clamping, etc.)\n\tif (limiters[this.model]) {\n\t\tchannels = convert[this.model].channels;\n\t\tfor (i = 0; i < channels; i++) {\n\t\t\tconst limit = limiters[this.model][i];\n\t\t\tif (limit) {\n\t\t\t\tthis.color[i] = limit(this.color[i]);\n\t\t\t}\n\t\t}\n\t}\n\n\tthis.valpha = Math.max(0, Math.min(1, this.valpha));\n\n\tif (Object.freeze) {\n\t\tObject.freeze(this);\n\t}\n}\n\nColor.prototype = {\n\ttoString() {\n\t\treturn this.string();\n\t},\n\n\ttoJSON() {\n\t\treturn this[this.model]();\n\t},\n\n\tstring(places) {\n\t\tlet self = this.model in colorString.to ? this : this.rgb();\n\t\tself = self.round(typeof places === 'number' ? places : 1);\n\t\tconst args = self.valpha === 1 ? self.color : [...self.color, this.valpha];\n\t\treturn colorString.to[self.model](args);\n\t},\n\n\tpercentString(places) {\n\t\tconst self = this.rgb().round(typeof places === 'number' ? places : 1);\n\t\tconst args = self.valpha === 1 ? self.color : [...self.color, this.valpha];\n\t\treturn colorString.to.rgb.percent(args);\n\t},\n\n\tarray() {\n\t\treturn this.valpha === 1 ? [...this.color] : [...this.color, this.valpha];\n\t},\n\n\tobject() {\n\t\tconst result = {};\n\t\tconst {channels} = convert[this.model];\n\t\tconst {labels} = convert[this.model];\n\n\t\tfor (let i = 0; i < channels; i++) {\n\t\t\tresult[labels[i]] = this.color[i];\n\t\t}\n\n\t\tif (this.valpha !== 1) {\n\t\t\tresult.alpha = this.valpha;\n\t\t}\n\n\t\treturn result;\n\t},\n\n\tunitArray() {\n\t\tconst rgb = this.rgb().color;\n\t\trgb[0] /= 255;\n\t\trgb[1] /= 255;\n\t\trgb[2] /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.push(this.valpha);\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tunitObject() {\n\t\tconst rgb = this.rgb().object();\n\t\trgb.r /= 255;\n\t\trgb.g /= 255;\n\t\trgb.b /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.alpha = this.valpha;\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tround(places) {\n\t\tplaces = Math.max(places || 0, 0);\n\t\treturn new Color([...this.color.map(roundToPlace(places)), this.valpha], this.model);\n\t},\n\n\talpha(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color([...this.color, Math.max(0, Math.min(1, value))], this.model);\n\t\t}\n\n\t\treturn this.valpha;\n\t},\n\n\t// Rgb\n\tred: getset('rgb', 0, maxfn(255)),\n\tgreen: getset('rgb', 1, maxfn(255)),\n\tblue: getset('rgb', 2, maxfn(255)),\n\n\thue: getset(['hsl', 'hsv', 'hsl', 'hwb', 'hcg'], 0, value => ((value % 360) + 360) % 360),\n\n\tsaturationl: getset('hsl', 1, maxfn(100)),\n\tlightness: getset('hsl', 2, maxfn(100)),\n\n\tsaturationv: getset('hsv', 1, maxfn(100)),\n\tvalue: getset('hsv', 2, maxfn(100)),\n\n\tchroma: getset('hcg', 1, maxfn(100)),\n\tgray: getset('hcg', 2, maxfn(100)),\n\n\twhite: getset('hwb', 1, maxfn(100)),\n\twblack: getset('hwb', 2, maxfn(100)),\n\n\tcyan: getset('cmyk', 0, maxfn(100)),\n\tmagenta: getset('cmyk', 1, maxfn(100)),\n\tyellow: getset('cmyk', 2, maxfn(100)),\n\tblack: getset('cmyk', 3, maxfn(100)),\n\n\tx: getset('xyz', 0, maxfn(95.047)),\n\ty: getset('xyz', 1, maxfn(100)),\n\tz: getset('xyz', 2, maxfn(108.833)),\n\n\tl: getset('lab', 0, maxfn(100)),\n\ta: getset('lab', 1),\n\tb: getset('lab', 2),\n\n\tkeyword(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color(value);\n\t\t}\n\n\t\treturn convert[this.model].keyword(this.color);\n\t},\n\n\thex(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color(value);\n\t\t}\n\n\t\treturn colorString.to.hex(this.rgb().round().color);\n\t},\n\n\thexa(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color(value);\n\t\t}\n\n\t\tconst rgbArray = this.rgb().round().color;\n\n\t\tlet alphaHex = Math.round(this.valpha * 255).toString(16).toUpperCase();\n\t\tif (alphaHex.length === 1) {\n\t\t\talphaHex = '0' + alphaHex;\n\t\t}\n\n\t\treturn colorString.to.hex(rgbArray) + alphaHex;\n\t},\n\n\trgbNumber() {\n\t\tconst rgb = this.rgb().color;\n\t\treturn ((rgb[0] & 0xFF) << 16) | ((rgb[1] & 0xFF) << 8) | (rgb[2] & 0xFF);\n\t},\n\n\tluminosity() {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tconst rgb = this.rgb().color;\n\n\t\tconst lum = [];\n\t\tfor (const [i, element] of rgb.entries()) {\n\t\t\tconst chan = element / 255;\n\t\t\tlum[i] = (chan <= 0.04045) ? chan / 12.92 : ((chan + 0.055) / 1.055) ** 2.4;\n\t\t}\n\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast(color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tconst lum1 = this.luminosity();\n\t\tconst lum2 = color2.luminosity();\n\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel(color2) {\n\t\t// https://www.w3.org/TR/WCAG/#contrast-enhanced\n\t\tconst contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tisDark() {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tconst rgb = this.rgb().color;\n\t\tconst yiq = (rgb[0] * 2126 + rgb[1] * 7152 + rgb[2] * 722) / 10000;\n\t\treturn yiq < 128;\n\t},\n\n\tisLight() {\n\t\treturn !this.isDark();\n\t},\n\n\tnegate() {\n\t\tconst rgb = this.rgb();\n\t\tfor (let i = 0; i < 3; i++) {\n\t\t\trgb.color[i] = 255 - rgb.color[i];\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tlighten(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[2] += hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdarken(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[2] -= hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tsaturate(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[1] += hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdesaturate(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[1] -= hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\twhiten(ratio) {\n\t\tconst hwb = this.hwb();\n\t\thwb.color[1] += hwb.color[1] * ratio;\n\t\treturn hwb;\n\t},\n\n\tblacken(ratio) {\n\t\tconst hwb = this.hwb();\n\t\thwb.color[2] += hwb.color[2] * ratio;\n\t\treturn hwb;\n\t},\n\n\tgrayscale() {\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n\t\tconst rgb = this.rgb().color;\n\t\tconst value = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\treturn Color.rgb(value, value, value);\n\t},\n\n\tfade(ratio) {\n\t\treturn this.alpha(this.valpha - (this.valpha * ratio));\n\t},\n\n\topaquer(ratio) {\n\t\treturn this.alpha(this.valpha + (this.valpha * ratio));\n\t},\n\n\trotate(degrees) {\n\t\tconst hsl = this.hsl();\n\t\tlet hue = hsl.color[0];\n\t\thue = (hue + degrees) % 360;\n\t\thue = hue < 0 ? 360 + hue : hue;\n\t\thsl.color[0] = hue;\n\t\treturn hsl;\n\t},\n\n\tmix(mixinColor, weight) {\n\t\t// Ported from sass implementation in C\n\t\t// https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t\tif (!mixinColor || !mixinColor.rgb) {\n\t\t\tthrow new Error('Argument to \"mix\" was not a Color instance, but rather an instance of ' + typeof mixinColor);\n\t\t}\n\n\t\tconst color1 = mixinColor.rgb();\n\t\tconst color2 = this.rgb();\n\t\tconst p = weight === undefined ? 0.5 : weight;\n\n\t\tconst w = 2 * p - 1;\n\t\tconst a = color1.alpha() - color2.alpha();\n\n\t\tconst w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2;\n\t\tconst w2 = 1 - w1;\n\n\t\treturn Color.rgb(\n\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\tw1 * color1.blue() + w2 * color2.blue(),\n\t\t\tcolor1.alpha() * p + color2.alpha() * (1 - p));\n\t},\n};\n\n// Model conversion methods and static constructors\nfor (const model of Object.keys(convert)) {\n\tif (skippedModels.includes(model)) {\n\t\tcontinue;\n\t}\n\n\tconst {channels} = convert[model];\n\n\t// Conversion methods\n\tColor.prototype[model] = function (...args) {\n\t\tif (this.model === model) {\n\t\t\treturn new Color(this);\n\t\t}\n\n\t\tif (args.length > 0) {\n\t\t\treturn new Color(args, model);\n\t\t}\n\n\t\treturn new Color([...assertArray(convert[this.model][model].raw(this.color)), this.valpha], model);\n\t};\n\n\t// 'static' construction methods\n\tColor[model] = function (...args) {\n\t\tlet color = args[0];\n\t\tif (typeof color === 'number') {\n\t\t\tcolor = zeroArray(args, channels);\n\t\t}\n\n\t\treturn new Color(color, model);\n\t};\n}\n\nfunction roundTo(number, places) {\n\treturn Number(number.toFixed(places));\n}\n\nfunction roundToPlace(places) {\n\treturn function (number) {\n\t\treturn roundTo(number, places);\n\t};\n}\n\nfunction getset(model, channel, modifier) {\n\tmodel = Array.isArray(model) ? model : [model];\n\n\tfor (const m of model) {\n\t\t(limiters[m] || (limiters[m] = []))[channel] = modifier;\n\t}\n\n\tmodel = model[0];\n\n\treturn function (value) {\n\t\tlet result;\n\n\t\tif (value !== undefined) {\n\t\t\tif (modifier) {\n\t\t\t\tvalue = modifier(value);\n\t\t\t}\n\n\t\t\tresult = this[model]();\n\t\t\tresult.color[channel] = value;\n\t\t\treturn result;\n\t\t}\n\n\t\tresult = this[model]().color[channel];\n\t\tif (modifier) {\n\t\t\tresult = modifier(result);\n\t\t}\n\n\t\treturn result;\n\t};\n}\n\nfunction maxfn(max) {\n\treturn function (v) {\n\t\treturn Math.max(0, Math.min(max, v));\n\t};\n}\n\nfunction assertArray(value) {\n\treturn Array.isArray(value) ? value : [value];\n}\n\nfunction zeroArray(array, length) {\n\tfor (let i = 0; i < length; i++) {\n\t\tif (typeof array[i] !== 'number') {\n\t\t\tarray[i] = 0;\n\t\t}\n\t}\n\n\treturn array;\n}\n\nmodule.exports = Color;\n","(function(a,b){if(\"function\"==typeof define&&define.amd)define([],b);else if(\"undefined\"!=typeof exports)b();else{b(),a.FileSaver={exports:{}}.exports}})(this,function(){\"use strict\";function b(a,b){return\"undefined\"==typeof b?b={autoBom:!1}:\"object\"!=typeof b&&(console.warn(\"Deprecated: Expected third argument to be a object\"),b={autoBom:!b}),b.autoBom&&/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(a.type)?new Blob([\"\\uFEFF\",a],{type:a.type}):a}function c(a,b,c){var d=new XMLHttpRequest;d.open(\"GET\",a),d.responseType=\"blob\",d.onload=function(){g(d.response,b,c)},d.onerror=function(){console.error(\"could not download file\")},d.send()}function d(a){var b=new XMLHttpRequest;b.open(\"HEAD\",a,!1);try{b.send()}catch(a){}return 200<=b.status&&299>=b.status}function e(a){try{a.dispatchEvent(new MouseEvent(\"click\"))}catch(c){var b=document.createEvent(\"MouseEvents\");b.initMouseEvent(\"click\",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),a.dispatchEvent(b)}}var f=\"object\"==typeof window&&window.window===window?window:\"object\"==typeof self&&self.self===self?self:\"object\"==typeof global&&global.global===global?global:void 0,a=f.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),g=f.saveAs||(\"object\"!=typeof window||window!==f?function(){}:\"download\"in HTMLAnchorElement.prototype&&!a?function(b,g,h){var i=f.URL||f.webkitURL,j=document.createElement(\"a\");g=g||b.name||\"download\",j.download=g,j.rel=\"noopener\",\"string\"==typeof b?(j.href=b,j.origin===location.origin?e(j):d(j.href)?c(b,g,h):e(j,j.target=\"_blank\")):(j.href=i.createObjectURL(b),setTimeout(function(){i.revokeObjectURL(j.href)},4E4),setTimeout(function(){e(j)},0))}:\"msSaveOrOpenBlob\"in navigator?function(f,g,h){if(g=g||f.name||\"download\",\"string\"!=typeof f)navigator.msSaveOrOpenBlob(b(f,h),g);else if(d(f))c(f,g,h);else{var i=document.createElement(\"a\");i.href=f,i.target=\"_blank\",setTimeout(function(){e(i)})}}:function(b,d,e,g){if(g=g||open(\"\",\"_blank\"),g&&(g.document.title=g.document.body.innerText=\"downloading...\"),\"string\"==typeof b)return c(b,d,e);var h=\"application/octet-stream\"===b.type,i=/constructor/i.test(f.HTMLElement)||f.safari,j=/CriOS\\/[\\d]+/.test(navigator.userAgent);if((j||h&&i||a)&&\"undefined\"!=typeof FileReader){var k=new FileReader;k.onloadend=function(){var a=k.result;a=j?a:a.replace(/^data:[^;]*;/,\"data:attachment/file;\"),g?g.location.href=a:location=a,g=null},k.readAsDataURL(b)}else{var l=f.URL||f.webkitURL,m=l.createObjectURL(b);g?g.location=m:location.href=m,g=null,setTimeout(function(){l.revokeObjectURL(m)},4E4)}});f.saveAs=g.saveAs=g,\"undefined\"!=typeof module&&(module.exports=g)});\n\n//# sourceMappingURL=FileSaver.min.js.map","/**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = isEqual;\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","// light library entry point.\r\n\r\n\"use strict\";\r\nmodule.exports = require(\"./src/index-light\");","\"use strict\";\r\n/**\r\n * Runtime message from/to plain object converters.\r\n * @namespace\r\n */\r\nvar converter = exports;\r\n\r\nvar Enum = require(\"./enum\"),\r\n util = require(\"./util\");\r\n\r\n/**\r\n * Generates a partial value fromObject conveter.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {number} fieldIndex Field index\r\n * @param {string} prop Property reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genValuePartial_fromObject(gen, field, fieldIndex, prop) {\r\n var defaultAlreadyEmitted = false;\r\n /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n if (field.resolvedType) {\r\n if (field.resolvedType instanceof Enum) { gen\r\n (\"switch(d%s){\", prop);\r\n for (var values = field.resolvedType.values, keys = Object.keys(values), i = 0; i < keys.length; ++i) {\r\n // enum unknown values passthrough\r\n if (values[keys[i]] === field.typeDefault && !defaultAlreadyEmitted) { gen\r\n (\"default:\")\r\n (\"if(typeof(d%s)===\\\"number\\\"){m%s=d%s;break}\", prop, prop, prop);\r\n if (!field.repeated) gen // fallback to default value only for\r\n // arrays, to avoid leaving holes.\r\n (\"break\"); // for non-repeated fields, just ignore\r\n defaultAlreadyEmitted = true;\r\n }\r\n gen\r\n (\"case%j:\", keys[i])\r\n (\"case %i:\", values[keys[i]])\r\n (\"m%s=%j\", prop, values[keys[i]])\r\n (\"break\");\r\n } gen\r\n (\"}\");\r\n } else gen\r\n (\"if(typeof d%s!==\\\"object\\\")\", prop)\r\n (\"throw TypeError(%j)\", field.fullName + \": object expected\")\r\n (\"m%s=types[%i].fromObject(d%s)\", prop, fieldIndex, prop);\r\n } else {\r\n var isUnsigned = false;\r\n switch (field.type) {\r\n case \"double\":\r\n case \"float\": gen\r\n (\"m%s=Number(d%s)\", prop, prop); // also catches \"NaN\", \"Infinity\"\r\n break;\r\n case \"uint32\":\r\n case \"fixed32\": gen\r\n (\"m%s=d%s>>>0\", prop, prop);\r\n break;\r\n case \"int32\":\r\n case \"sint32\":\r\n case \"sfixed32\": gen\r\n (\"m%s=d%s|0\", prop, prop);\r\n break;\r\n case \"uint64\":\r\n isUnsigned = true;\r\n // eslint-disable-next-line no-fallthrough\r\n case \"int64\":\r\n case \"sint64\":\r\n case \"fixed64\":\r\n case \"sfixed64\": gen\r\n (\"if(util.Long)\")\r\n (\"(m%s=util.Long.fromValue(d%s)).unsigned=%j\", prop, prop, isUnsigned)\r\n (\"else if(typeof d%s===\\\"string\\\")\", prop)\r\n (\"m%s=parseInt(d%s,10)\", prop, prop)\r\n (\"else if(typeof d%s===\\\"number\\\")\", prop)\r\n (\"m%s=d%s\", prop, prop)\r\n (\"else if(typeof d%s===\\\"object\\\")\", prop)\r\n (\"m%s=new util.LongBits(d%s.low>>>0,d%s.high>>>0).toNumber(%s)\", prop, prop, prop, isUnsigned ? \"true\" : \"\");\r\n break;\r\n case \"bytes\": gen\r\n (\"if(typeof d%s===\\\"string\\\")\", prop)\r\n (\"util.base64.decode(d%s,m%s=util.newBuffer(util.base64.length(d%s)),0)\", prop, prop, prop)\r\n (\"else if(d%s.length >= 0)\", prop)\r\n (\"m%s=d%s\", prop, prop);\r\n break;\r\n case \"string\": gen\r\n (\"m%s=String(d%s)\", prop, prop);\r\n break;\r\n case \"bool\": gen\r\n (\"m%s=Boolean(d%s)\", prop, prop);\r\n break;\r\n /* default: gen\r\n (\"m%s=d%s\", prop, prop);\r\n break; */\r\n }\r\n }\r\n return gen;\r\n /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n}\r\n\r\n/**\r\n * Generates a plain object to runtime message converter specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nconverter.fromObject = function fromObject(mtype) {\r\n /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n var fields = mtype.fieldsArray;\r\n var gen = util.codegen([\"d\"], mtype.name + \"$fromObject\")\r\n (\"if(d instanceof this.ctor)\")\r\n (\"return d\");\r\n if (!fields.length) return gen\r\n (\"return new this.ctor\");\r\n gen\r\n (\"var m=new this.ctor\");\r\n for (var i = 0; i < fields.length; ++i) {\r\n var field = fields[i].resolve(),\r\n prop = util.safeProp(field.name);\r\n\r\n // Map fields\r\n if (field.map) { gen\r\n (\"if(d%s){\", prop)\r\n (\"if(typeof d%s!==\\\"object\\\")\", prop)\r\n (\"throw TypeError(%j)\", field.fullName + \": object expected\")\r\n (\"m%s={}\", prop)\r\n (\"for(var ks=Object.keys(d%s),i=0;i>>0,m%s.high>>>0).toNumber(%s):m%s\", prop, prop, prop, prop, isUnsigned ? \"true\": \"\", prop);\r\n break;\r\n case \"bytes\": gen\r\n (\"d%s=o.bytes===String?util.base64.encode(m%s,0,m%s.length):o.bytes===Array?Array.prototype.slice.call(m%s):m%s\", prop, prop, prop, prop, prop);\r\n break;\r\n default: gen\r\n (\"d%s=m%s\", prop, prop);\r\n break;\r\n }\r\n }\r\n return gen;\r\n /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n}\r\n\r\n/**\r\n * Generates a runtime message to plain object converter specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nconverter.toObject = function toObject(mtype) {\r\n /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n var fields = mtype.fieldsArray.slice().sort(util.compareFieldsById);\r\n if (!fields.length)\r\n return util.codegen()(\"return {}\");\r\n var gen = util.codegen([\"m\", \"o\"], mtype.name + \"$toObject\")\r\n (\"if(!o)\")\r\n (\"o={}\")\r\n (\"var d={}\");\r\n\r\n var repeatedFields = [],\r\n mapFields = [],\r\n normalFields = [],\r\n i = 0;\r\n for (; i < fields.length; ++i)\r\n if (!fields[i].partOf)\r\n ( fields[i].resolve().repeated ? repeatedFields\r\n : fields[i].map ? mapFields\r\n : normalFields).push(fields[i]);\r\n\r\n if (repeatedFields.length) { gen\r\n (\"if(o.arrays||o.defaults){\");\r\n for (i = 0; i < repeatedFields.length; ++i) gen\r\n (\"d%s=[]\", util.safeProp(repeatedFields[i].name));\r\n gen\r\n (\"}\");\r\n }\r\n\r\n if (mapFields.length) { gen\r\n (\"if(o.objects||o.defaults){\");\r\n for (i = 0; i < mapFields.length; ++i) gen\r\n (\"d%s={}\", util.safeProp(mapFields[i].name));\r\n gen\r\n (\"}\");\r\n }\r\n\r\n if (normalFields.length) { gen\r\n (\"if(o.defaults){\");\r\n for (i = 0; i < normalFields.length; ++i) {\r\n var field = normalFields[i],\r\n prop = util.safeProp(field.name);\r\n if (field.resolvedType instanceof Enum) gen\r\n (\"d%s=o.enums===String?%j:%j\", prop, field.resolvedType.valuesById[field.typeDefault], field.typeDefault);\r\n else if (field.long) gen\r\n (\"if(util.Long){\")\r\n (\"var n=new util.Long(%i,%i,%j)\", field.typeDefault.low, field.typeDefault.high, field.typeDefault.unsigned)\r\n (\"d%s=o.longs===String?n.toString():o.longs===Number?n.toNumber():n\", prop)\r\n (\"}else\")\r\n (\"d%s=o.longs===String?%j:%i\", prop, field.typeDefault.toString(), field.typeDefault.toNumber());\r\n else if (field.bytes) {\r\n var arrayDefault = \"[\" + Array.prototype.slice.call(field.typeDefault).join(\",\") + \"]\";\r\n gen\r\n (\"if(o.bytes===String)d%s=%j\", prop, String.fromCharCode.apply(String, field.typeDefault))\r\n (\"else{\")\r\n (\"d%s=%s\", prop, arrayDefault)\r\n (\"if(o.bytes!==Array)d%s=util.newBuffer(d%s)\", prop, prop)\r\n (\"}\");\r\n } else gen\r\n (\"d%s=%j\", prop, field.typeDefault); // also messages (=null)\r\n } gen\r\n (\"}\");\r\n }\r\n var hasKs2 = false;\r\n for (i = 0; i < fields.length; ++i) {\r\n var field = fields[i],\r\n index = mtype._fieldsArray.indexOf(field),\r\n prop = util.safeProp(field.name);\r\n if (field.map) {\r\n if (!hasKs2) { hasKs2 = true; gen\r\n (\"var ks2\");\r\n } gen\r\n (\"if(m%s&&(ks2=Object.keys(m%s)).length){\", prop, prop)\r\n (\"d%s={}\", prop)\r\n (\"for(var j=0;j>>3){\");\r\n\r\n var i = 0;\r\n for (; i < /* initializes */ mtype.fieldsArray.length; ++i) {\r\n var field = mtype._fieldsArray[i].resolve(),\r\n type = field.resolvedType instanceof Enum ? \"int32\" : field.type,\r\n ref = \"m\" + util.safeProp(field.name); gen\r\n (\"case %i: {\", field.id);\r\n\r\n // Map fields\r\n if (field.map) { gen\r\n (\"if(%s===util.emptyObject)\", ref)\r\n (\"%s={}\", ref)\r\n (\"var c2 = r.uint32()+r.pos\");\r\n\r\n if (types.defaults[field.keyType] !== undefined) gen\r\n (\"k=%j\", types.defaults[field.keyType]);\r\n else gen\r\n (\"k=null\");\r\n\r\n if (types.defaults[type] !== undefined) gen\r\n (\"value=%j\", types.defaults[type]);\r\n else gen\r\n (\"value=null\");\r\n\r\n gen\r\n (\"while(r.pos>>3){\")\r\n (\"case 1: k=r.%s(); break\", field.keyType)\r\n (\"case 2:\");\r\n\r\n if (types.basic[type] === undefined) gen\r\n (\"value=types[%i].decode(r,r.uint32())\", i); // can't be groups\r\n else gen\r\n (\"value=r.%s()\", type);\r\n\r\n gen\r\n (\"break\")\r\n (\"default:\")\r\n (\"r.skipType(tag2&7)\")\r\n (\"break\")\r\n (\"}\")\r\n (\"}\");\r\n\r\n if (types.long[field.keyType] !== undefined) gen\r\n (\"%s[typeof k===\\\"object\\\"?util.longToHash(k):k]=value\", ref);\r\n else gen\r\n (\"%s[k]=value\", ref);\r\n\r\n // Repeated fields\r\n } else if (field.repeated) { gen\r\n\r\n (\"if(!(%s&&%s.length))\", ref, ref)\r\n (\"%s=[]\", ref);\r\n\r\n // Packable (always check for forward and backward compatiblity)\r\n if (types.packed[type] !== undefined) gen\r\n (\"if((t&7)===2){\")\r\n (\"var c2=r.uint32()+r.pos\")\r\n (\"while(r.pos>> 0, (field.id << 3 | 4) >>> 0)\r\n : gen(\"types[%i].encode(%s,w.uint32(%i).fork()).ldelim()\", fieldIndex, ref, (field.id << 3 | 2) >>> 0);\r\n}\r\n\r\n/**\r\n * Generates an encoder specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nfunction encoder(mtype) {\r\n /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n var gen = util.codegen([\"m\", \"w\"], mtype.name + \"$encode\")\r\n (\"if(!w)\")\r\n (\"w=Writer.create()\");\r\n\r\n var i, ref;\r\n\r\n // \"when a message is serialized its known fields should be written sequentially by field number\"\r\n var fields = /* initializes */ mtype.fieldsArray.slice().sort(util.compareFieldsById);\r\n\r\n for (var i = 0; i < fields.length; ++i) {\r\n var field = fields[i].resolve(),\r\n index = mtype._fieldsArray.indexOf(field),\r\n type = field.resolvedType instanceof Enum ? \"int32\" : field.type,\r\n wireType = types.basic[type];\r\n ref = \"m\" + util.safeProp(field.name);\r\n\r\n // Map fields\r\n if (field.map) {\r\n gen\r\n (\"if(%s!=null&&Object.hasOwnProperty.call(m,%j)){\", ref, field.name) // !== undefined && !== null\r\n (\"for(var ks=Object.keys(%s),i=0;i>> 0, 8 | types.mapKey[field.keyType], field.keyType);\r\n if (wireType === undefined) gen\r\n (\"types[%i].encode(%s[ks[i]],w.uint32(18).fork()).ldelim().ldelim()\", index, ref); // can't be groups\r\n else gen\r\n (\".uint32(%i).%s(%s[ks[i]]).ldelim()\", 16 | wireType, type, ref);\r\n gen\r\n (\"}\")\r\n (\"}\");\r\n\r\n // Repeated fields\r\n } else if (field.repeated) { gen\r\n (\"if(%s!=null&&%s.length){\", ref, ref); // !== undefined && !== null\r\n\r\n // Packed repeated\r\n if (field.packed && types.packed[type] !== undefined) { gen\r\n\r\n (\"w.uint32(%i).fork()\", (field.id << 3 | 2) >>> 0)\r\n (\"for(var i=0;i<%s.length;++i)\", ref)\r\n (\"w.%s(%s[i])\", type, ref)\r\n (\"w.ldelim()\");\r\n\r\n // Non-packed\r\n } else { gen\r\n\r\n (\"for(var i=0;i<%s.length;++i)\", ref);\r\n if (wireType === undefined)\r\n genTypePartial(gen, field, index, ref + \"[i]\");\r\n else gen\r\n (\"w.uint32(%i).%s(%s[i])\", (field.id << 3 | wireType) >>> 0, type, ref);\r\n\r\n } gen\r\n (\"}\");\r\n\r\n // Non-repeated\r\n } else {\r\n if (field.optional) gen\r\n (\"if(%s!=null&&Object.hasOwnProperty.call(m,%j))\", ref, field.name); // !== undefined && !== null\r\n\r\n if (wireType === undefined)\r\n genTypePartial(gen, field, index, ref);\r\n else gen\r\n (\"w.uint32(%i).%s(%s)\", (field.id << 3 | wireType) >>> 0, type, ref);\r\n\r\n }\r\n }\r\n\r\n return gen\r\n (\"return w\");\r\n /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n}\r\n","\"use strict\";\r\nmodule.exports = Enum;\r\n\r\n// extends ReflectionObject\r\nvar ReflectionObject = require(\"./object\");\r\n((Enum.prototype = Object.create(ReflectionObject.prototype)).constructor = Enum).className = \"Enum\";\r\n\r\nvar Namespace = require(\"./namespace\"),\r\n util = require(\"./util\");\r\n\r\n/**\r\n * Constructs a new enum instance.\r\n * @classdesc Reflected enum.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {Object.} [values] Enum values as an object, by name\r\n * @param {Object.} [options] Declared options\r\n * @param {string} [comment] The comment for this enum\r\n * @param {Object.} [comments] The value comments for this enum\r\n * @param {Object.>|undefined} [valuesOptions] The value options for this enum\r\n */\r\nfunction Enum(name, values, options, comment, comments, valuesOptions) {\r\n ReflectionObject.call(this, name, options);\r\n\r\n if (values && typeof values !== \"object\")\r\n throw TypeError(\"values must be an object\");\r\n\r\n /**\r\n * Enum values by id.\r\n * @type {Object.}\r\n */\r\n this.valuesById = {};\r\n\r\n /**\r\n * Enum values by name.\r\n * @type {Object.}\r\n */\r\n this.values = Object.create(this.valuesById); // toJSON, marker\r\n\r\n /**\r\n * Enum comment text.\r\n * @type {string|null}\r\n */\r\n this.comment = comment;\r\n\r\n /**\r\n * Value comment texts, if any.\r\n * @type {Object.}\r\n */\r\n this.comments = comments || {};\r\n\r\n /**\r\n * Values options, if any\r\n * @type {Object>|undefined}\r\n */\r\n this.valuesOptions = valuesOptions;\r\n\r\n /**\r\n * Reserved ranges, if any.\r\n * @type {Array.}\r\n */\r\n this.reserved = undefined; // toJSON\r\n\r\n // Note that values inherit valuesById on their prototype which makes them a TypeScript-\r\n // compatible enum. This is used by pbts to write actual enum definitions that work for\r\n // static and reflection code alike instead of emitting generic object definitions.\r\n\r\n if (values)\r\n for (var keys = Object.keys(values), i = 0; i < keys.length; ++i)\r\n if (typeof values[keys[i]] === \"number\") // use forward entries only\r\n this.valuesById[ this.values[keys[i]] = values[keys[i]] ] = keys[i];\r\n}\r\n\r\n/**\r\n * Enum descriptor.\r\n * @interface IEnum\r\n * @property {Object.} values Enum values\r\n * @property {Object.} [options] Enum options\r\n */\r\n\r\n/**\r\n * Constructs an enum from an enum descriptor.\r\n * @param {string} name Enum name\r\n * @param {IEnum} json Enum descriptor\r\n * @returns {Enum} Created enum\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nEnum.fromJSON = function fromJSON(name, json) {\r\n var enm = new Enum(name, json.values, json.options, json.comment, json.comments);\r\n enm.reserved = json.reserved;\r\n return enm;\r\n};\r\n\r\n/**\r\n * Converts this enum to an enum descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IEnum} Enum descriptor\r\n */\r\nEnum.prototype.toJSON = function toJSON(toJSONOptions) {\r\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n return util.toObject([\r\n \"options\" , this.options,\r\n \"valuesOptions\" , this.valuesOptions,\r\n \"values\" , this.values,\r\n \"reserved\" , this.reserved && this.reserved.length ? this.reserved : undefined,\r\n \"comment\" , keepComments ? this.comment : undefined,\r\n \"comments\" , keepComments ? this.comments : undefined\r\n ]);\r\n};\r\n\r\n/**\r\n * Adds a value to this enum.\r\n * @param {string} name Value name\r\n * @param {number} id Value id\r\n * @param {string} [comment] Comment, if any\r\n * @param {Object.|undefined} [options] Options, if any\r\n * @returns {Enum} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a value with this name or id\r\n */\r\nEnum.prototype.add = function add(name, id, comment, options) {\r\n // utilized by the parser but not by .fromJSON\r\n\r\n if (!util.isString(name))\r\n throw TypeError(\"name must be a string\");\r\n\r\n if (!util.isInteger(id))\r\n throw TypeError(\"id must be an integer\");\r\n\r\n if (this.values[name] !== undefined)\r\n throw Error(\"duplicate name '\" + name + \"' in \" + this);\r\n\r\n if (this.isReservedId(id))\r\n throw Error(\"id \" + id + \" is reserved in \" + this);\r\n\r\n if (this.isReservedName(name))\r\n throw Error(\"name '\" + name + \"' is reserved in \" + this);\r\n\r\n if (this.valuesById[id] !== undefined) {\r\n if (!(this.options && this.options.allow_alias))\r\n throw Error(\"duplicate id \" + id + \" in \" + this);\r\n this.values[name] = id;\r\n } else\r\n this.valuesById[this.values[name] = id] = name;\r\n\r\n if (options) {\r\n if (this.valuesOptions === undefined)\r\n this.valuesOptions = {};\r\n this.valuesOptions[name] = options || null;\r\n }\r\n\r\n this.comments[name] = comment || null;\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes a value from this enum\r\n * @param {string} name Value name\r\n * @returns {Enum} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `name` is not a name of this enum\r\n */\r\nEnum.prototype.remove = function remove(name) {\r\n\r\n if (!util.isString(name))\r\n throw TypeError(\"name must be a string\");\r\n\r\n var val = this.values[name];\r\n if (val == null)\r\n throw Error(\"name '\" + name + \"' does not exist in \" + this);\r\n\r\n delete this.valuesById[val];\r\n delete this.values[name];\r\n delete this.comments[name];\r\n if (this.valuesOptions)\r\n delete this.valuesOptions[name];\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Tests if the specified id is reserved.\r\n * @param {number} id Id to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nEnum.prototype.isReservedId = function isReservedId(id) {\r\n return Namespace.isReservedId(this.reserved, id);\r\n};\r\n\r\n/**\r\n * Tests if the specified name is reserved.\r\n * @param {string} name Name to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nEnum.prototype.isReservedName = function isReservedName(name) {\r\n return Namespace.isReservedName(this.reserved, name);\r\n};\r\n","\"use strict\";\r\nmodule.exports = Field;\r\n\r\n// extends ReflectionObject\r\nvar ReflectionObject = require(\"./object\");\r\n((Field.prototype = Object.create(ReflectionObject.prototype)).constructor = Field).className = \"Field\";\r\n\r\nvar Enum = require(\"./enum\"),\r\n types = require(\"./types\"),\r\n util = require(\"./util\");\r\n\r\nvar Type; // cyclic\r\n\r\nvar ruleRe = /^required|optional|repeated$/;\r\n\r\n/**\r\n * Constructs a new message field instance. Note that {@link MapField|map fields} have their own class.\r\n * @name Field\r\n * @classdesc Reflected message field.\r\n * @extends FieldBase\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {number} id Unique id within its namespace\r\n * @param {string} type Value type\r\n * @param {string|Object.} [rule=\"optional\"] Field rule\r\n * @param {string|Object.} [extend] Extended type if different from parent\r\n * @param {Object.} [options] Declared options\r\n */\r\n\r\n/**\r\n * Constructs a field from a field descriptor.\r\n * @param {string} name Field name\r\n * @param {IField} json Field descriptor\r\n * @returns {Field} Created field\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nField.fromJSON = function fromJSON(name, json) {\r\n return new Field(name, json.id, json.type, json.rule, json.extend, json.options, json.comment);\r\n};\r\n\r\n/**\r\n * Not an actual constructor. Use {@link Field} instead.\r\n * @classdesc Base class of all reflected message fields. This is not an actual class but here for the sake of having consistent type definitions.\r\n * @exports FieldBase\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {number} id Unique id within its namespace\r\n * @param {string} type Value type\r\n * @param {string|Object.} [rule=\"optional\"] Field rule\r\n * @param {string|Object.} [extend] Extended type if different from parent\r\n * @param {Object.} [options] Declared options\r\n * @param {string} [comment] Comment associated with this field\r\n */\r\nfunction Field(name, id, type, rule, extend, options, comment) {\r\n\r\n if (util.isObject(rule)) {\r\n comment = extend;\r\n options = rule;\r\n rule = extend = undefined;\r\n } else if (util.isObject(extend)) {\r\n comment = options;\r\n options = extend;\r\n extend = undefined;\r\n }\r\n\r\n ReflectionObject.call(this, name, options);\r\n\r\n if (!util.isInteger(id) || id < 0)\r\n throw TypeError(\"id must be a non-negative integer\");\r\n\r\n if (!util.isString(type))\r\n throw TypeError(\"type must be a string\");\r\n\r\n if (rule !== undefined && !ruleRe.test(rule = rule.toString().toLowerCase()))\r\n throw TypeError(\"rule must be a string rule\");\r\n\r\n if (extend !== undefined && !util.isString(extend))\r\n throw TypeError(\"extend must be a string\");\r\n\r\n /**\r\n * Field rule, if any.\r\n * @type {string|undefined}\r\n */\r\n if (rule === \"proto3_optional\") {\r\n rule = \"optional\";\r\n }\r\n this.rule = rule && rule !== \"optional\" ? rule : undefined; // toJSON\r\n\r\n /**\r\n * Field type.\r\n * @type {string}\r\n */\r\n this.type = type; // toJSON\r\n\r\n /**\r\n * Unique field id.\r\n * @type {number}\r\n */\r\n this.id = id; // toJSON, marker\r\n\r\n /**\r\n * Extended type if different from parent.\r\n * @type {string|undefined}\r\n */\r\n this.extend = extend || undefined; // toJSON\r\n\r\n /**\r\n * Whether this field is required.\r\n * @type {boolean}\r\n */\r\n this.required = rule === \"required\";\r\n\r\n /**\r\n * Whether this field is optional.\r\n * @type {boolean}\r\n */\r\n this.optional = !this.required;\r\n\r\n /**\r\n * Whether this field is repeated.\r\n * @type {boolean}\r\n */\r\n this.repeated = rule === \"repeated\";\r\n\r\n /**\r\n * Whether this field is a map or not.\r\n * @type {boolean}\r\n */\r\n this.map = false;\r\n\r\n /**\r\n * Message this field belongs to.\r\n * @type {Type|null}\r\n */\r\n this.message = null;\r\n\r\n /**\r\n * OneOf this field belongs to, if any,\r\n * @type {OneOf|null}\r\n */\r\n this.partOf = null;\r\n\r\n /**\r\n * The field type's default value.\r\n * @type {*}\r\n */\r\n this.typeDefault = null;\r\n\r\n /**\r\n * The field's default value on prototypes.\r\n * @type {*}\r\n */\r\n this.defaultValue = null;\r\n\r\n /**\r\n * Whether this field's value should be treated as a long.\r\n * @type {boolean}\r\n */\r\n this.long = util.Long ? types.long[type] !== undefined : /* istanbul ignore next */ false;\r\n\r\n /**\r\n * Whether this field's value is a buffer.\r\n * @type {boolean}\r\n */\r\n this.bytes = type === \"bytes\";\r\n\r\n /**\r\n * Resolved type if not a basic type.\r\n * @type {Type|Enum|null}\r\n */\r\n this.resolvedType = null;\r\n\r\n /**\r\n * Sister-field within the extended type if a declaring extension field.\r\n * @type {Field|null}\r\n */\r\n this.extensionField = null;\r\n\r\n /**\r\n * Sister-field within the declaring namespace if an extended field.\r\n * @type {Field|null}\r\n */\r\n this.declaringField = null;\r\n\r\n /**\r\n * Internally remembers whether this field is packed.\r\n * @type {boolean|null}\r\n * @private\r\n */\r\n this._packed = null;\r\n\r\n /**\r\n * Comment for this field.\r\n * @type {string|null}\r\n */\r\n this.comment = comment;\r\n}\r\n\r\n/**\r\n * Determines whether this field is packed. Only relevant when repeated and working with proto2.\r\n * @name Field#packed\r\n * @type {boolean}\r\n * @readonly\r\n */\r\nObject.defineProperty(Field.prototype, \"packed\", {\r\n get: function() {\r\n // defaults to packed=true if not explicity set to false\r\n if (this._packed === null)\r\n this._packed = this.getOption(\"packed\") !== false;\r\n return this._packed;\r\n }\r\n});\r\n\r\n/**\r\n * @override\r\n */\r\nField.prototype.setOption = function setOption(name, value, ifNotSet) {\r\n if (name === \"packed\") // clear cached before setting\r\n this._packed = null;\r\n return ReflectionObject.prototype.setOption.call(this, name, value, ifNotSet);\r\n};\r\n\r\n/**\r\n * Field descriptor.\r\n * @interface IField\r\n * @property {string} [rule=\"optional\"] Field rule\r\n * @property {string} type Field type\r\n * @property {number} id Field id\r\n * @property {Object.} [options] Field options\r\n */\r\n\r\n/**\r\n * Extension field descriptor.\r\n * @interface IExtensionField\r\n * @extends IField\r\n * @property {string} extend Extended type\r\n */\r\n\r\n/**\r\n * Converts this field to a field descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IField} Field descriptor\r\n */\r\nField.prototype.toJSON = function toJSON(toJSONOptions) {\r\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n return util.toObject([\r\n \"rule\" , this.rule !== \"optional\" && this.rule || undefined,\r\n \"type\" , this.type,\r\n \"id\" , this.id,\r\n \"extend\" , this.extend,\r\n \"options\" , this.options,\r\n \"comment\" , keepComments ? this.comment : undefined\r\n ]);\r\n};\r\n\r\n/**\r\n * Resolves this field's type references.\r\n * @returns {Field} `this`\r\n * @throws {Error} If any reference cannot be resolved\r\n */\r\nField.prototype.resolve = function resolve() {\r\n\r\n if (this.resolved)\r\n return this;\r\n\r\n if ((this.typeDefault = types.defaults[this.type]) === undefined) { // if not a basic type, resolve it\r\n this.resolvedType = (this.declaringField ? this.declaringField.parent : this.parent).lookupTypeOrEnum(this.type);\r\n if (this.resolvedType instanceof Type)\r\n this.typeDefault = null;\r\n else // instanceof Enum\r\n this.typeDefault = this.resolvedType.values[Object.keys(this.resolvedType.values)[0]]; // first defined\r\n } else if (this.options && this.options.proto3_optional) {\r\n // proto3 scalar value marked optional; should default to null\r\n this.typeDefault = null;\r\n }\r\n\r\n // use explicitly set default value if present\r\n if (this.options && this.options[\"default\"] != null) {\r\n this.typeDefault = this.options[\"default\"];\r\n if (this.resolvedType instanceof Enum && typeof this.typeDefault === \"string\")\r\n this.typeDefault = this.resolvedType.values[this.typeDefault];\r\n }\r\n\r\n // remove unnecessary options\r\n if (this.options) {\r\n if (this.options.packed === true || this.options.packed !== undefined && this.resolvedType && !(this.resolvedType instanceof Enum))\r\n delete this.options.packed;\r\n if (!Object.keys(this.options).length)\r\n this.options = undefined;\r\n }\r\n\r\n // convert to internal data type if necesssary\r\n if (this.long) {\r\n this.typeDefault = util.Long.fromNumber(this.typeDefault, this.type.charAt(0) === \"u\");\r\n\r\n /* istanbul ignore else */\r\n if (Object.freeze)\r\n Object.freeze(this.typeDefault); // long instances are meant to be immutable anyway (i.e. use small int cache that even requires it)\r\n\r\n } else if (this.bytes && typeof this.typeDefault === \"string\") {\r\n var buf;\r\n if (util.base64.test(this.typeDefault))\r\n util.base64.decode(this.typeDefault, buf = util.newBuffer(util.base64.length(this.typeDefault)), 0);\r\n else\r\n util.utf8.write(this.typeDefault, buf = util.newBuffer(util.utf8.length(this.typeDefault)), 0);\r\n this.typeDefault = buf;\r\n }\r\n\r\n // take special care of maps and repeated fields\r\n if (this.map)\r\n this.defaultValue = util.emptyObject;\r\n else if (this.repeated)\r\n this.defaultValue = util.emptyArray;\r\n else\r\n this.defaultValue = this.typeDefault;\r\n\r\n // ensure proper value on prototype\r\n if (this.parent instanceof Type)\r\n this.parent.ctor.prototype[this.name] = this.defaultValue;\r\n\r\n return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * Decorator function as returned by {@link Field.d} and {@link MapField.d} (TypeScript).\r\n * @typedef FieldDecorator\r\n * @type {function}\r\n * @param {Object} prototype Target prototype\r\n * @param {string} fieldName Field name\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Field decorator (TypeScript).\r\n * @name Field.d\r\n * @function\r\n * @param {number} fieldId Field id\r\n * @param {\"double\"|\"float\"|\"int32\"|\"uint32\"|\"sint32\"|\"fixed32\"|\"sfixed32\"|\"int64\"|\"uint64\"|\"sint64\"|\"fixed64\"|\"sfixed64\"|\"string\"|\"bool\"|\"bytes\"|Object} fieldType Field type\r\n * @param {\"optional\"|\"required\"|\"repeated\"} [fieldRule=\"optional\"] Field rule\r\n * @param {T} [defaultValue] Default value\r\n * @returns {FieldDecorator} Decorator function\r\n * @template T extends number | number[] | Long | Long[] | string | string[] | boolean | boolean[] | Uint8Array | Uint8Array[] | Buffer | Buffer[]\r\n */\r\nField.d = function decorateField(fieldId, fieldType, fieldRule, defaultValue) {\r\n\r\n // submessage: decorate the submessage and use its name as the type\r\n if (typeof fieldType === \"function\")\r\n fieldType = util.decorateType(fieldType).name;\r\n\r\n // enum reference: create a reflected copy of the enum and keep reuseing it\r\n else if (fieldType && typeof fieldType === \"object\")\r\n fieldType = util.decorateEnum(fieldType).name;\r\n\r\n return function fieldDecorator(prototype, fieldName) {\r\n util.decorateType(prototype.constructor)\r\n .add(new Field(fieldName, fieldId, fieldType, fieldRule, { \"default\": defaultValue }));\r\n };\r\n};\r\n\r\n/**\r\n * Field decorator (TypeScript).\r\n * @name Field.d\r\n * @function\r\n * @param {number} fieldId Field id\r\n * @param {Constructor|string} fieldType Field type\r\n * @param {\"optional\"|\"required\"|\"repeated\"} [fieldRule=\"optional\"] Field rule\r\n * @returns {FieldDecorator} Decorator function\r\n * @template T extends Message\r\n * @variation 2\r\n */\r\n// like Field.d but without a default value\r\n\r\n// Sets up cyclic dependencies (called in index-light)\r\nField._configure = function configure(Type_) {\r\n Type = Type_;\r\n};\r\n","\"use strict\";\r\nvar protobuf = module.exports = require(\"./index-minimal\");\r\n\r\nprotobuf.build = \"light\";\r\n\r\n/**\r\n * A node-style callback as used by {@link load} and {@link Root#load}.\r\n * @typedef LoadCallback\r\n * @type {function}\r\n * @param {Error|null} error Error, if any, otherwise `null`\r\n * @param {Root} [root] Root, if there hasn't been an error\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and calls the callback.\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {Root} root Root namespace, defaults to create a new one if omitted.\r\n * @param {LoadCallback} callback Callback function\r\n * @returns {undefined}\r\n * @see {@link Root#load}\r\n */\r\nfunction load(filename, root, callback) {\r\n if (typeof root === \"function\") {\r\n callback = root;\r\n root = new protobuf.Root();\r\n } else if (!root)\r\n root = new protobuf.Root();\r\n return root.load(filename, callback);\r\n}\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and calls the callback.\r\n * @name load\r\n * @function\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {LoadCallback} callback Callback function\r\n * @returns {undefined}\r\n * @see {@link Root#load}\r\n * @variation 2\r\n */\r\n// function load(filename:string, callback:LoadCallback):undefined\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and returns a promise.\r\n * @name load\r\n * @function\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted.\r\n * @returns {Promise} Promise\r\n * @see {@link Root#load}\r\n * @variation 3\r\n */\r\n// function load(filename:string, [root:Root]):Promise\r\n\r\nprotobuf.load = load;\r\n\r\n/**\r\n * Synchronously loads one or multiple .proto or preprocessed .json files into a common root namespace (node only).\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted.\r\n * @returns {Root} Root namespace\r\n * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid\r\n * @see {@link Root#loadSync}\r\n */\r\nfunction loadSync(filename, root) {\r\n if (!root)\r\n root = new protobuf.Root();\r\n return root.loadSync(filename);\r\n}\r\n\r\nprotobuf.loadSync = loadSync;\r\n\r\n// Serialization\r\nprotobuf.encoder = require(\"./encoder\");\r\nprotobuf.decoder = require(\"./decoder\");\r\nprotobuf.verifier = require(\"./verifier\");\r\nprotobuf.converter = require(\"./converter\");\r\n\r\n// Reflection\r\nprotobuf.ReflectionObject = require(\"./object\");\r\nprotobuf.Namespace = require(\"./namespace\");\r\nprotobuf.Root = require(\"./root\");\r\nprotobuf.Enum = require(\"./enum\");\r\nprotobuf.Type = require(\"./type\");\r\nprotobuf.Field = require(\"./field\");\r\nprotobuf.OneOf = require(\"./oneof\");\r\nprotobuf.MapField = require(\"./mapfield\");\r\nprotobuf.Service = require(\"./service\");\r\nprotobuf.Method = require(\"./method\");\r\n\r\n// Runtime\r\nprotobuf.Message = require(\"./message\");\r\nprotobuf.wrappers = require(\"./wrappers\");\r\n\r\n// Utility\r\nprotobuf.types = require(\"./types\");\r\nprotobuf.util = require(\"./util\");\r\n\r\n// Set up possibly cyclic reflection dependencies\r\nprotobuf.ReflectionObject._configure(protobuf.Root);\r\nprotobuf.Namespace._configure(protobuf.Type, protobuf.Service, protobuf.Enum);\r\nprotobuf.Root._configure(protobuf.Type);\r\nprotobuf.Field._configure(protobuf.Type);\r\n","\"use strict\";\r\nvar protobuf = exports;\r\n\r\n/**\r\n * Build type, one of `\"full\"`, `\"light\"` or `\"minimal\"`.\r\n * @name build\r\n * @type {string}\r\n * @const\r\n */\r\nprotobuf.build = \"minimal\";\r\n\r\n// Serialization\r\nprotobuf.Writer = require(\"./writer\");\r\nprotobuf.BufferWriter = require(\"./writer_buffer\");\r\nprotobuf.Reader = require(\"./reader\");\r\nprotobuf.BufferReader = require(\"./reader_buffer\");\r\n\r\n// Utility\r\nprotobuf.util = require(\"./util/minimal\");\r\nprotobuf.rpc = require(\"./rpc\");\r\nprotobuf.roots = require(\"./roots\");\r\nprotobuf.configure = configure;\r\n\r\n/* istanbul ignore next */\r\n/**\r\n * Reconfigures the library according to the environment.\r\n * @returns {undefined}\r\n */\r\nfunction configure() {\r\n protobuf.util._configure();\r\n protobuf.Writer._configure(protobuf.BufferWriter);\r\n protobuf.Reader._configure(protobuf.BufferReader);\r\n}\r\n\r\n// Set up buffer utility according to the environment\r\nconfigure();\r\n","\"use strict\";\r\nmodule.exports = MapField;\r\n\r\n// extends Field\r\nvar Field = require(\"./field\");\r\n((MapField.prototype = Object.create(Field.prototype)).constructor = MapField).className = \"MapField\";\r\n\r\nvar types = require(\"./types\"),\r\n util = require(\"./util\");\r\n\r\n/**\r\n * Constructs a new map field instance.\r\n * @classdesc Reflected map field.\r\n * @extends FieldBase\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {number} id Unique id within its namespace\r\n * @param {string} keyType Key type\r\n * @param {string} type Value type\r\n * @param {Object.} [options] Declared options\r\n * @param {string} [comment] Comment associated with this field\r\n */\r\nfunction MapField(name, id, keyType, type, options, comment) {\r\n Field.call(this, name, id, type, undefined, undefined, options, comment);\r\n\r\n /* istanbul ignore if */\r\n if (!util.isString(keyType))\r\n throw TypeError(\"keyType must be a string\");\r\n\r\n /**\r\n * Key type.\r\n * @type {string}\r\n */\r\n this.keyType = keyType; // toJSON, marker\r\n\r\n /**\r\n * Resolved key type if not a basic type.\r\n * @type {ReflectionObject|null}\r\n */\r\n this.resolvedKeyType = null;\r\n\r\n // Overrides Field#map\r\n this.map = true;\r\n}\r\n\r\n/**\r\n * Map field descriptor.\r\n * @interface IMapField\r\n * @extends {IField}\r\n * @property {string} keyType Key type\r\n */\r\n\r\n/**\r\n * Extension map field descriptor.\r\n * @interface IExtensionMapField\r\n * @extends IMapField\r\n * @property {string} extend Extended type\r\n */\r\n\r\n/**\r\n * Constructs a map field from a map field descriptor.\r\n * @param {string} name Field name\r\n * @param {IMapField} json Map field descriptor\r\n * @returns {MapField} Created map field\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nMapField.fromJSON = function fromJSON(name, json) {\r\n return new MapField(name, json.id, json.keyType, json.type, json.options, json.comment);\r\n};\r\n\r\n/**\r\n * Converts this map field to a map field descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IMapField} Map field descriptor\r\n */\r\nMapField.prototype.toJSON = function toJSON(toJSONOptions) {\r\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n return util.toObject([\r\n \"keyType\" , this.keyType,\r\n \"type\" , this.type,\r\n \"id\" , this.id,\r\n \"extend\" , this.extend,\r\n \"options\" , this.options,\r\n \"comment\" , keepComments ? this.comment : undefined\r\n ]);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMapField.prototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n\r\n // Besides a value type, map fields have a key type that may be \"any scalar type except for floating point types and bytes\"\r\n if (types.mapKey[this.keyType] === undefined)\r\n throw Error(\"invalid key type: \" + this.keyType);\r\n\r\n return Field.prototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * Map field decorator (TypeScript).\r\n * @name MapField.d\r\n * @function\r\n * @param {number} fieldId Field id\r\n * @param {\"int32\"|\"uint32\"|\"sint32\"|\"fixed32\"|\"sfixed32\"|\"int64\"|\"uint64\"|\"sint64\"|\"fixed64\"|\"sfixed64\"|\"bool\"|\"string\"} fieldKeyType Field key type\r\n * @param {\"double\"|\"float\"|\"int32\"|\"uint32\"|\"sint32\"|\"fixed32\"|\"sfixed32\"|\"int64\"|\"uint64\"|\"sint64\"|\"fixed64\"|\"sfixed64\"|\"bool\"|\"string\"|\"bytes\"|Object|Constructor<{}>} fieldValueType Field value type\r\n * @returns {FieldDecorator} Decorator function\r\n * @template T extends { [key: string]: number | Long | string | boolean | Uint8Array | Buffer | number[] | Message<{}> }\r\n */\r\nMapField.d = function decorateMapField(fieldId, fieldKeyType, fieldValueType) {\r\n\r\n // submessage value: decorate the submessage and use its name as the type\r\n if (typeof fieldValueType === \"function\")\r\n fieldValueType = util.decorateType(fieldValueType).name;\r\n\r\n // enum reference value: create a reflected copy of the enum and keep reuseing it\r\n else if (fieldValueType && typeof fieldValueType === \"object\")\r\n fieldValueType = util.decorateEnum(fieldValueType).name;\r\n\r\n return function mapFieldDecorator(prototype, fieldName) {\r\n util.decorateType(prototype.constructor)\r\n .add(new MapField(fieldName, fieldId, fieldKeyType, fieldValueType));\r\n };\r\n};\r\n","\"use strict\";\r\nmodule.exports = Message;\r\n\r\nvar util = require(\"./util/minimal\");\r\n\r\n/**\r\n * Constructs a new message instance.\r\n * @classdesc Abstract runtime message.\r\n * @constructor\r\n * @param {Properties} [properties] Properties to set\r\n * @template T extends object = object\r\n */\r\nfunction Message(properties) {\r\n // not used internally\r\n if (properties)\r\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\r\n this[keys[i]] = properties[keys[i]];\r\n}\r\n\r\n/**\r\n * Reference to the reflected type.\r\n * @name Message.$type\r\n * @type {Type}\r\n * @readonly\r\n */\r\n\r\n/**\r\n * Reference to the reflected type.\r\n * @name Message#$type\r\n * @type {Type}\r\n * @readonly\r\n */\r\n\r\n/*eslint-disable valid-jsdoc*/\r\n\r\n/**\r\n * Creates a new message of this type using the specified properties.\r\n * @param {Object.} [properties] Properties to set\r\n * @returns {Message} Message instance\r\n * @template T extends Message\r\n * @this Constructor\r\n */\r\nMessage.create = function create(properties) {\r\n return this.$type.create(properties);\r\n};\r\n\r\n/**\r\n * Encodes a message of this type.\r\n * @param {T|Object.} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\r\n * @template T extends Message\r\n * @this Constructor\r\n */\r\nMessage.encode = function encode(message, writer) {\r\n return this.$type.encode(message, writer);\r\n};\r\n\r\n/**\r\n * Encodes a message of this type preceeded by its length as a varint.\r\n * @param {T|Object.} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\r\n * @template T extends Message\r\n * @this Constructor\r\n */\r\nMessage.encodeDelimited = function encodeDelimited(message, writer) {\r\n return this.$type.encodeDelimited(message, writer);\r\n};\r\n\r\n/**\r\n * Decodes a message of this type.\r\n * @name Message.decode\r\n * @function\r\n * @param {Reader|Uint8Array} reader Reader or buffer to decode\r\n * @returns {T} Decoded message\r\n * @template T extends Message\r\n * @this Constructor\r\n */\r\nMessage.decode = function decode(reader) {\r\n return this.$type.decode(reader);\r\n};\r\n\r\n/**\r\n * Decodes a message of this type preceeded by its length as a varint.\r\n * @name Message.decodeDelimited\r\n * @function\r\n * @param {Reader|Uint8Array} reader Reader or buffer to decode\r\n * @returns {T} Decoded message\r\n * @template T extends Message\r\n * @this Constructor\r\n */\r\nMessage.decodeDelimited = function decodeDelimited(reader) {\r\n return this.$type.decodeDelimited(reader);\r\n};\r\n\r\n/**\r\n * Verifies a message of this type.\r\n * @name Message.verify\r\n * @function\r\n * @param {Object.} message Plain object to verify\r\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\r\n */\r\nMessage.verify = function verify(message) {\r\n return this.$type.verify(message);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * @param {Object.} object Plain object\r\n * @returns {T} Message instance\r\n * @template T extends Message\r\n * @this Constructor\r\n */\r\nMessage.fromObject = function fromObject(object) {\r\n return this.$type.fromObject(object);\r\n};\r\n\r\n/**\r\n * Creates a plain object from a message of this type. Also converts values to other types if specified.\r\n * @param {T} message Message instance\r\n * @param {IConversionOptions} [options] Conversion options\r\n * @returns {Object.} Plain object\r\n * @template T extends Message\r\n * @this Constructor\r\n */\r\nMessage.toObject = function toObject(message, options) {\r\n return this.$type.toObject(message, options);\r\n};\r\n\r\n/**\r\n * Converts this message to JSON.\r\n * @returns {Object.} JSON object\r\n */\r\nMessage.prototype.toJSON = function toJSON() {\r\n return this.$type.toObject(this, util.toJSONOptions);\r\n};\r\n\r\n/*eslint-enable valid-jsdoc*/","\"use strict\";\r\nmodule.exports = Method;\r\n\r\n// extends ReflectionObject\r\nvar ReflectionObject = require(\"./object\");\r\n((Method.prototype = Object.create(ReflectionObject.prototype)).constructor = Method).className = \"Method\";\r\n\r\nvar util = require(\"./util\");\r\n\r\n/**\r\n * Constructs a new service method instance.\r\n * @classdesc Reflected service method.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Method name\r\n * @param {string|undefined} type Method type, usually `\"rpc\"`\r\n * @param {string} requestType Request message type\r\n * @param {string} responseType Response message type\r\n * @param {boolean|Object.} [requestStream] Whether the request is streamed\r\n * @param {boolean|Object.} [responseStream] Whether the response is streamed\r\n * @param {Object.} [options] Declared options\r\n * @param {string} [comment] The comment for this method\r\n * @param {Object.} [parsedOptions] Declared options, properly parsed into an object\r\n */\r\nfunction Method(name, type, requestType, responseType, requestStream, responseStream, options, comment, parsedOptions) {\r\n\r\n /* istanbul ignore next */\r\n if (util.isObject(requestStream)) {\r\n options = requestStream;\r\n requestStream = responseStream = undefined;\r\n } else if (util.isObject(responseStream)) {\r\n options = responseStream;\r\n responseStream = undefined;\r\n }\r\n\r\n /* istanbul ignore if */\r\n if (!(type === undefined || util.isString(type)))\r\n throw TypeError(\"type must be a string\");\r\n\r\n /* istanbul ignore if */\r\n if (!util.isString(requestType))\r\n throw TypeError(\"requestType must be a string\");\r\n\r\n /* istanbul ignore if */\r\n if (!util.isString(responseType))\r\n throw TypeError(\"responseType must be a string\");\r\n\r\n ReflectionObject.call(this, name, options);\r\n\r\n /**\r\n * Method type.\r\n * @type {string}\r\n */\r\n this.type = type || \"rpc\"; // toJSON\r\n\r\n /**\r\n * Request type.\r\n * @type {string}\r\n */\r\n this.requestType = requestType; // toJSON, marker\r\n\r\n /**\r\n * Whether requests are streamed or not.\r\n * @type {boolean|undefined}\r\n */\r\n this.requestStream = requestStream ? true : undefined; // toJSON\r\n\r\n /**\r\n * Response type.\r\n * @type {string}\r\n */\r\n this.responseType = responseType; // toJSON\r\n\r\n /**\r\n * Whether responses are streamed or not.\r\n * @type {boolean|undefined}\r\n */\r\n this.responseStream = responseStream ? true : undefined; // toJSON\r\n\r\n /**\r\n * Resolved request type.\r\n * @type {Type|null}\r\n */\r\n this.resolvedRequestType = null;\r\n\r\n /**\r\n * Resolved response type.\r\n * @type {Type|null}\r\n */\r\n this.resolvedResponseType = null;\r\n\r\n /**\r\n * Comment for this method\r\n * @type {string|null}\r\n */\r\n this.comment = comment;\r\n\r\n /**\r\n * Options properly parsed into an object\r\n */\r\n this.parsedOptions = parsedOptions;\r\n}\r\n\r\n/**\r\n * Method descriptor.\r\n * @interface IMethod\r\n * @property {string} [type=\"rpc\"] Method type\r\n * @property {string} requestType Request type\r\n * @property {string} responseType Response type\r\n * @property {boolean} [requestStream=false] Whether requests are streamed\r\n * @property {boolean} [responseStream=false] Whether responses are streamed\r\n * @property {Object.} [options] Method options\r\n * @property {string} comment Method comments\r\n * @property {Object.} [parsedOptions] Method options properly parsed into an object\r\n */\r\n\r\n/**\r\n * Constructs a method from a method descriptor.\r\n * @param {string} name Method name\r\n * @param {IMethod} json Method descriptor\r\n * @returns {Method} Created method\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nMethod.fromJSON = function fromJSON(name, json) {\r\n return new Method(name, json.type, json.requestType, json.responseType, json.requestStream, json.responseStream, json.options, json.comment, json.parsedOptions);\r\n};\r\n\r\n/**\r\n * Converts this method to a method descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IMethod} Method descriptor\r\n */\r\nMethod.prototype.toJSON = function toJSON(toJSONOptions) {\r\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n return util.toObject([\r\n \"type\" , this.type !== \"rpc\" && /* istanbul ignore next */ this.type || undefined,\r\n \"requestType\" , this.requestType,\r\n \"requestStream\" , this.requestStream,\r\n \"responseType\" , this.responseType,\r\n \"responseStream\" , this.responseStream,\r\n \"options\" , this.options,\r\n \"comment\" , keepComments ? this.comment : undefined,\r\n \"parsedOptions\" , this.parsedOptions,\r\n ]);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMethod.prototype.resolve = function resolve() {\r\n\r\n /* istanbul ignore if */\r\n if (this.resolved)\r\n return this;\r\n\r\n this.resolvedRequestType = this.parent.lookupType(this.requestType);\r\n this.resolvedResponseType = this.parent.lookupType(this.responseType);\r\n\r\n return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = Namespace;\r\n\r\n// extends ReflectionObject\r\nvar ReflectionObject = require(\"./object\");\r\n((Namespace.prototype = Object.create(ReflectionObject.prototype)).constructor = Namespace).className = \"Namespace\";\r\n\r\nvar Field = require(\"./field\"),\r\n util = require(\"./util\"),\r\n OneOf = require(\"./oneof\");\r\n\r\nvar Type, // cyclic\r\n Service,\r\n Enum;\r\n\r\n/**\r\n * Constructs a new namespace instance.\r\n * @name Namespace\r\n * @classdesc Reflected namespace.\r\n * @extends NamespaceBase\r\n * @constructor\r\n * @param {string} name Namespace name\r\n * @param {Object.} [options] Declared options\r\n */\r\n\r\n/**\r\n * Constructs a namespace from JSON.\r\n * @memberof Namespace\r\n * @function\r\n * @param {string} name Namespace name\r\n * @param {Object.} json JSON object\r\n * @returns {Namespace} Created namespace\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nNamespace.fromJSON = function fromJSON(name, json) {\r\n return new Namespace(name, json.options).addJSON(json.nested);\r\n};\r\n\r\n/**\r\n * Converts an array of reflection objects to JSON.\r\n * @memberof Namespace\r\n * @param {ReflectionObject[]} array Object array\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {Object.|undefined} JSON object or `undefined` when array is empty\r\n */\r\nfunction arrayToJSON(array, toJSONOptions) {\r\n if (!(array && array.length))\r\n return undefined;\r\n var obj = {};\r\n for (var i = 0; i < array.length; ++i)\r\n obj[array[i].name] = array[i].toJSON(toJSONOptions);\r\n return obj;\r\n}\r\n\r\nNamespace.arrayToJSON = arrayToJSON;\r\n\r\n/**\r\n * Tests if the specified id is reserved.\r\n * @param {Array.|undefined} reserved Array of reserved ranges and names\r\n * @param {number} id Id to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nNamespace.isReservedId = function isReservedId(reserved, id) {\r\n if (reserved)\r\n for (var i = 0; i < reserved.length; ++i)\r\n if (typeof reserved[i] !== \"string\" && reserved[i][0] <= id && reserved[i][1] > id)\r\n return true;\r\n return false;\r\n};\r\n\r\n/**\r\n * Tests if the specified name is reserved.\r\n * @param {Array.|undefined} reserved Array of reserved ranges and names\r\n * @param {string} name Name to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nNamespace.isReservedName = function isReservedName(reserved, name) {\r\n if (reserved)\r\n for (var i = 0; i < reserved.length; ++i)\r\n if (reserved[i] === name)\r\n return true;\r\n return false;\r\n};\r\n\r\n/**\r\n * Not an actual constructor. Use {@link Namespace} instead.\r\n * @classdesc Base class of all reflection objects containing nested objects. This is not an actual class but here for the sake of having consistent type definitions.\r\n * @exports NamespaceBase\r\n * @extends ReflectionObject\r\n * @abstract\r\n * @constructor\r\n * @param {string} name Namespace name\r\n * @param {Object.} [options] Declared options\r\n * @see {@link Namespace}\r\n */\r\nfunction Namespace(name, options) {\r\n ReflectionObject.call(this, name, options);\r\n\r\n /**\r\n * Nested objects by name.\r\n * @type {Object.|undefined}\r\n */\r\n this.nested = undefined; // toJSON\r\n\r\n /**\r\n * Cached nested objects as an array.\r\n * @type {ReflectionObject[]|null}\r\n * @private\r\n */\r\n this._nestedArray = null;\r\n}\r\n\r\nfunction clearCache(namespace) {\r\n namespace._nestedArray = null;\r\n return namespace;\r\n}\r\n\r\n/**\r\n * Nested objects of this namespace as an array for iteration.\r\n * @name NamespaceBase#nestedArray\r\n * @type {ReflectionObject[]}\r\n * @readonly\r\n */\r\nObject.defineProperty(Namespace.prototype, \"nestedArray\", {\r\n get: function() {\r\n return this._nestedArray || (this._nestedArray = util.toArray(this.nested));\r\n }\r\n});\r\n\r\n/**\r\n * Namespace descriptor.\r\n * @interface INamespace\r\n * @property {Object.} [options] Namespace options\r\n * @property {Object.} [nested] Nested object descriptors\r\n */\r\n\r\n/**\r\n * Any extension field descriptor.\r\n * @typedef AnyExtensionField\r\n * @type {IExtensionField|IExtensionMapField}\r\n */\r\n\r\n/**\r\n * Any nested object descriptor.\r\n * @typedef AnyNestedObject\r\n * @type {IEnum|IType|IService|AnyExtensionField|INamespace|IOneOf}\r\n */\r\n\r\n/**\r\n * Converts this namespace to a namespace descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {INamespace} Namespace descriptor\r\n */\r\nNamespace.prototype.toJSON = function toJSON(toJSONOptions) {\r\n return util.toObject([\r\n \"options\" , this.options,\r\n \"nested\" , arrayToJSON(this.nestedArray, toJSONOptions)\r\n ]);\r\n};\r\n\r\n/**\r\n * Adds nested objects to this namespace from nested object descriptors.\r\n * @param {Object.} nestedJson Any nested object descriptors\r\n * @returns {Namespace} `this`\r\n */\r\nNamespace.prototype.addJSON = function addJSON(nestedJson) {\r\n var ns = this;\r\n /* istanbul ignore else */\r\n if (nestedJson) {\r\n for (var names = Object.keys(nestedJson), i = 0, nested; i < names.length; ++i) {\r\n nested = nestedJson[names[i]];\r\n ns.add( // most to least likely\r\n ( nested.fields !== undefined\r\n ? Type.fromJSON\r\n : nested.values !== undefined\r\n ? Enum.fromJSON\r\n : nested.methods !== undefined\r\n ? Service.fromJSON\r\n : nested.id !== undefined\r\n ? Field.fromJSON\r\n : Namespace.fromJSON )(names[i], nested)\r\n );\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Gets the nested object of the specified name.\r\n * @param {string} name Nested object name\r\n * @returns {ReflectionObject|null} The reflection object or `null` if it doesn't exist\r\n */\r\nNamespace.prototype.get = function get(name) {\r\n return this.nested && this.nested[name]\r\n || null;\r\n};\r\n\r\n/**\r\n * Gets the values of the nested {@link Enum|enum} of the specified name.\r\n * This methods differs from {@link Namespace#get|get} in that it returns an enum's values directly and throws instead of returning `null`.\r\n * @param {string} name Nested enum name\r\n * @returns {Object.} Enum values\r\n * @throws {Error} If there is no such enum\r\n */\r\nNamespace.prototype.getEnum = function getEnum(name) {\r\n if (this.nested && this.nested[name] instanceof Enum)\r\n return this.nested[name].values;\r\n throw Error(\"no such enum: \" + name);\r\n};\r\n\r\n/**\r\n * Adds a nested object to this namespace.\r\n * @param {ReflectionObject} object Nested object to add\r\n * @returns {Namespace} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a nested object with this name\r\n */\r\nNamespace.prototype.add = function add(object) {\r\n\r\n if (!(object instanceof Field && object.extend !== undefined || object instanceof Type || object instanceof OneOf || object instanceof Enum || object instanceof Service || object instanceof Namespace))\r\n throw TypeError(\"object must be a valid nested object\");\r\n\r\n if (!this.nested)\r\n this.nested = {};\r\n else {\r\n var prev = this.get(object.name);\r\n if (prev) {\r\n if (prev instanceof Namespace && object instanceof Namespace && !(prev instanceof Type || prev instanceof Service)) {\r\n // replace plain namespace but keep existing nested elements and options\r\n var nested = prev.nestedArray;\r\n for (var i = 0; i < nested.length; ++i)\r\n object.add(nested[i]);\r\n this.remove(prev);\r\n if (!this.nested)\r\n this.nested = {};\r\n object.setOptions(prev.options, true);\r\n\r\n } else\r\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\r\n }\r\n }\r\n this.nested[object.name] = object;\r\n object.onAdd(this);\r\n return clearCache(this);\r\n};\r\n\r\n/**\r\n * Removes a nested object from this namespace.\r\n * @param {ReflectionObject} object Nested object to remove\r\n * @returns {Namespace} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `object` is not a member of this namespace\r\n */\r\nNamespace.prototype.remove = function remove(object) {\r\n\r\n if (!(object instanceof ReflectionObject))\r\n throw TypeError(\"object must be a ReflectionObject\");\r\n if (object.parent !== this)\r\n throw Error(object + \" is not a member of \" + this);\r\n\r\n delete this.nested[object.name];\r\n if (!Object.keys(this.nested).length)\r\n this.nested = undefined;\r\n\r\n object.onRemove(this);\r\n return clearCache(this);\r\n};\r\n\r\n/**\r\n * Defines additial namespaces within this one if not yet existing.\r\n * @param {string|string[]} path Path to create\r\n * @param {*} [json] Nested types to create from JSON\r\n * @returns {Namespace} Pointer to the last namespace created or `this` if path is empty\r\n */\r\nNamespace.prototype.define = function define(path, json) {\r\n\r\n if (util.isString(path))\r\n path = path.split(\".\");\r\n else if (!Array.isArray(path))\r\n throw TypeError(\"illegal path\");\r\n if (path && path.length && path[0] === \"\")\r\n throw Error(\"path must be relative\");\r\n\r\n var ptr = this;\r\n while (path.length > 0) {\r\n var part = path.shift();\r\n if (ptr.nested && ptr.nested[part]) {\r\n ptr = ptr.nested[part];\r\n if (!(ptr instanceof Namespace))\r\n throw Error(\"path conflicts with non-namespace objects\");\r\n } else\r\n ptr.add(ptr = new Namespace(part));\r\n }\r\n if (json)\r\n ptr.addJSON(json);\r\n return ptr;\r\n};\r\n\r\n/**\r\n * Resolves this namespace's and all its nested objects' type references. Useful to validate a reflection tree, but comes at a cost.\r\n * @returns {Namespace} `this`\r\n */\r\nNamespace.prototype.resolveAll = function resolveAll() {\r\n var nested = this.nestedArray, i = 0;\r\n while (i < nested.length)\r\n if (nested[i] instanceof Namespace)\r\n nested[i++].resolveAll();\r\n else\r\n nested[i++].resolve();\r\n return this.resolve();\r\n};\r\n\r\n/**\r\n * Recursively looks up the reflection object matching the specified path in the scope of this namespace.\r\n * @param {string|string[]} path Path to look up\r\n * @param {*|Array.<*>} filterTypes Filter types, any combination of the constructors of `protobuf.Type`, `protobuf.Enum`, `protobuf.Service` etc.\r\n * @param {boolean} [parentAlreadyChecked=false] If known, whether the parent has already been checked\r\n * @returns {ReflectionObject|null} Looked up object or `null` if none could be found\r\n */\r\nNamespace.prototype.lookup = function lookup(path, filterTypes, parentAlreadyChecked) {\r\n\r\n /* istanbul ignore next */\r\n if (typeof filterTypes === \"boolean\") {\r\n parentAlreadyChecked = filterTypes;\r\n filterTypes = undefined;\r\n } else if (filterTypes && !Array.isArray(filterTypes))\r\n filterTypes = [ filterTypes ];\r\n\r\n if (util.isString(path) && path.length) {\r\n if (path === \".\")\r\n return this.root;\r\n path = path.split(\".\");\r\n } else if (!path.length)\r\n return this;\r\n\r\n // Start at root if path is absolute\r\n if (path[0] === \"\")\r\n return this.root.lookup(path.slice(1), filterTypes);\r\n\r\n // Test if the first part matches any nested object, and if so, traverse if path contains more\r\n var found = this.get(path[0]);\r\n if (found) {\r\n if (path.length === 1) {\r\n if (!filterTypes || filterTypes.indexOf(found.constructor) > -1)\r\n return found;\r\n } else if (found instanceof Namespace && (found = found.lookup(path.slice(1), filterTypes, true)))\r\n return found;\r\n\r\n // Otherwise try each nested namespace\r\n } else\r\n for (var i = 0; i < this.nestedArray.length; ++i)\r\n if (this._nestedArray[i] instanceof Namespace && (found = this._nestedArray[i].lookup(path, filterTypes, true)))\r\n return found;\r\n\r\n // If there hasn't been a match, try again at the parent\r\n if (this.parent === null || parentAlreadyChecked)\r\n return null;\r\n return this.parent.lookup(path, filterTypes);\r\n};\r\n\r\n/**\r\n * Looks up the reflection object at the specified path, relative to this namespace.\r\n * @name NamespaceBase#lookup\r\n * @function\r\n * @param {string|string[]} path Path to look up\r\n * @param {boolean} [parentAlreadyChecked=false] Whether the parent has already been checked\r\n * @returns {ReflectionObject|null} Looked up object or `null` if none could be found\r\n * @variation 2\r\n */\r\n// lookup(path: string, [parentAlreadyChecked: boolean])\r\n\r\n/**\r\n * Looks up the {@link Type|type} at the specified path, relative to this namespace.\r\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\r\n * @param {string|string[]} path Path to look up\r\n * @returns {Type} Looked up type\r\n * @throws {Error} If `path` does not point to a type\r\n */\r\nNamespace.prototype.lookupType = function lookupType(path) {\r\n var found = this.lookup(path, [ Type ]);\r\n if (!found)\r\n throw Error(\"no such type: \" + path);\r\n return found;\r\n};\r\n\r\n/**\r\n * Looks up the values of the {@link Enum|enum} at the specified path, relative to this namespace.\r\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\r\n * @param {string|string[]} path Path to look up\r\n * @returns {Enum} Looked up enum\r\n * @throws {Error} If `path` does not point to an enum\r\n */\r\nNamespace.prototype.lookupEnum = function lookupEnum(path) {\r\n var found = this.lookup(path, [ Enum ]);\r\n if (!found)\r\n throw Error(\"no such Enum '\" + path + \"' in \" + this);\r\n return found;\r\n};\r\n\r\n/**\r\n * Looks up the {@link Type|type} or {@link Enum|enum} at the specified path, relative to this namespace.\r\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\r\n * @param {string|string[]} path Path to look up\r\n * @returns {Type} Looked up type or enum\r\n * @throws {Error} If `path` does not point to a type or enum\r\n */\r\nNamespace.prototype.lookupTypeOrEnum = function lookupTypeOrEnum(path) {\r\n var found = this.lookup(path, [ Type, Enum ]);\r\n if (!found)\r\n throw Error(\"no such Type or Enum '\" + path + \"' in \" + this);\r\n return found;\r\n};\r\n\r\n/**\r\n * Looks up the {@link Service|service} at the specified path, relative to this namespace.\r\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\r\n * @param {string|string[]} path Path to look up\r\n * @returns {Service} Looked up service\r\n * @throws {Error} If `path` does not point to a service\r\n */\r\nNamespace.prototype.lookupService = function lookupService(path) {\r\n var found = this.lookup(path, [ Service ]);\r\n if (!found)\r\n throw Error(\"no such Service '\" + path + \"' in \" + this);\r\n return found;\r\n};\r\n\r\n// Sets up cyclic dependencies (called in index-light)\r\nNamespace._configure = function(Type_, Service_, Enum_) {\r\n Type = Type_;\r\n Service = Service_;\r\n Enum = Enum_;\r\n};\r\n","\"use strict\";\r\nmodule.exports = ReflectionObject;\r\n\r\nReflectionObject.className = \"ReflectionObject\";\r\n\r\nvar util = require(\"./util\");\r\n\r\nvar Root; // cyclic\r\n\r\n/**\r\n * Constructs a new reflection object instance.\r\n * @classdesc Base class of all reflection objects.\r\n * @constructor\r\n * @param {string} name Object name\r\n * @param {Object.} [options] Declared options\r\n * @abstract\r\n */\r\nfunction ReflectionObject(name, options) {\r\n\r\n if (!util.isString(name))\r\n throw TypeError(\"name must be a string\");\r\n\r\n if (options && !util.isObject(options))\r\n throw TypeError(\"options must be an object\");\r\n\r\n /**\r\n * Options.\r\n * @type {Object.|undefined}\r\n */\r\n this.options = options; // toJSON\r\n\r\n /**\r\n * Parsed Options.\r\n * @type {Array.>|undefined}\r\n */\r\n this.parsedOptions = null;\r\n\r\n /**\r\n * Unique name within its namespace.\r\n * @type {string}\r\n */\r\n this.name = name;\r\n\r\n /**\r\n * Parent namespace.\r\n * @type {Namespace|null}\r\n */\r\n this.parent = null;\r\n\r\n /**\r\n * Whether already resolved or not.\r\n * @type {boolean}\r\n */\r\n this.resolved = false;\r\n\r\n /**\r\n * Comment text, if any.\r\n * @type {string|null}\r\n */\r\n this.comment = null;\r\n\r\n /**\r\n * Defining file name.\r\n * @type {string|null}\r\n */\r\n this.filename = null;\r\n}\r\n\r\nObject.defineProperties(ReflectionObject.prototype, {\r\n\r\n /**\r\n * Reference to the root namespace.\r\n * @name ReflectionObject#root\r\n * @type {Root}\r\n * @readonly\r\n */\r\n root: {\r\n get: function() {\r\n var ptr = this;\r\n while (ptr.parent !== null)\r\n ptr = ptr.parent;\r\n return ptr;\r\n }\r\n },\r\n\r\n /**\r\n * Full name including leading dot.\r\n * @name ReflectionObject#fullName\r\n * @type {string}\r\n * @readonly\r\n */\r\n fullName: {\r\n get: function() {\r\n var path = [ this.name ],\r\n ptr = this.parent;\r\n while (ptr) {\r\n path.unshift(ptr.name);\r\n ptr = ptr.parent;\r\n }\r\n return path.join(\".\");\r\n }\r\n }\r\n});\r\n\r\n/**\r\n * Converts this reflection object to its descriptor representation.\r\n * @returns {Object.} Descriptor\r\n * @abstract\r\n */\r\nReflectionObject.prototype.toJSON = /* istanbul ignore next */ function toJSON() {\r\n throw Error(); // not implemented, shouldn't happen\r\n};\r\n\r\n/**\r\n * Called when this object is added to a parent.\r\n * @param {ReflectionObject} parent Parent added to\r\n * @returns {undefined}\r\n */\r\nReflectionObject.prototype.onAdd = function onAdd(parent) {\r\n if (this.parent && this.parent !== parent)\r\n this.parent.remove(this);\r\n this.parent = parent;\r\n this.resolved = false;\r\n var root = parent.root;\r\n if (root instanceof Root)\r\n root._handleAdd(this);\r\n};\r\n\r\n/**\r\n * Called when this object is removed from a parent.\r\n * @param {ReflectionObject} parent Parent removed from\r\n * @returns {undefined}\r\n */\r\nReflectionObject.prototype.onRemove = function onRemove(parent) {\r\n var root = parent.root;\r\n if (root instanceof Root)\r\n root._handleRemove(this);\r\n this.parent = null;\r\n this.resolved = false;\r\n};\r\n\r\n/**\r\n * Resolves this objects type references.\r\n * @returns {ReflectionObject} `this`\r\n */\r\nReflectionObject.prototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n if (this.root instanceof Root)\r\n this.resolved = true; // only if part of a root\r\n return this;\r\n};\r\n\r\n/**\r\n * Gets an option value.\r\n * @param {string} name Option name\r\n * @returns {*} Option value or `undefined` if not set\r\n */\r\nReflectionObject.prototype.getOption = function getOption(name) {\r\n if (this.options)\r\n return this.options[name];\r\n return undefined;\r\n};\r\n\r\n/**\r\n * Sets an option.\r\n * @param {string} name Option name\r\n * @param {*} value Option value\r\n * @param {boolean} [ifNotSet] Sets the option only if it isn't currently set\r\n * @returns {ReflectionObject} `this`\r\n */\r\nReflectionObject.prototype.setOption = function setOption(name, value, ifNotSet) {\r\n if (!ifNotSet || !this.options || this.options[name] === undefined)\r\n (this.options || (this.options = {}))[name] = value;\r\n return this;\r\n};\r\n\r\n/**\r\n * Sets a parsed option.\r\n * @param {string} name parsed Option name\r\n * @param {*} value Option value\r\n * @param {string} propName dot '.' delimited full path of property within the option to set. if undefined\\empty, will add a new option with that value\r\n * @returns {ReflectionObject} `this`\r\n */\r\nReflectionObject.prototype.setParsedOption = function setParsedOption(name, value, propName) {\r\n if (!this.parsedOptions) {\r\n this.parsedOptions = [];\r\n }\r\n var parsedOptions = this.parsedOptions;\r\n if (propName) {\r\n // If setting a sub property of an option then try to merge it\r\n // with an existing option\r\n var opt = parsedOptions.find(function (opt) {\r\n return Object.prototype.hasOwnProperty.call(opt, name);\r\n });\r\n if (opt) {\r\n // If we found an existing option - just merge the property value\r\n var newValue = opt[name];\r\n util.setProperty(newValue, propName, value);\r\n } else {\r\n // otherwise, create a new option, set it's property and add it to the list\r\n opt = {};\r\n opt[name] = util.setProperty({}, propName, value);\r\n parsedOptions.push(opt);\r\n }\r\n } else {\r\n // Always create a new option when setting the value of the option itself\r\n var newOpt = {};\r\n newOpt[name] = value;\r\n parsedOptions.push(newOpt);\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Sets multiple options.\r\n * @param {Object.} options Options to set\r\n * @param {boolean} [ifNotSet] Sets an option only if it isn't currently set\r\n * @returns {ReflectionObject} `this`\r\n */\r\nReflectionObject.prototype.setOptions = function setOptions(options, ifNotSet) {\r\n if (options)\r\n for (var keys = Object.keys(options), i = 0; i < keys.length; ++i)\r\n this.setOption(keys[i], options[keys[i]], ifNotSet);\r\n return this;\r\n};\r\n\r\n/**\r\n * Converts this instance to its string representation.\r\n * @returns {string} Class name[, space, full name]\r\n */\r\nReflectionObject.prototype.toString = function toString() {\r\n var className = this.constructor.className,\r\n fullName = this.fullName;\r\n if (fullName.length)\r\n return className + \" \" + fullName;\r\n return className;\r\n};\r\n\r\n// Sets up cyclic dependencies (called in index-light)\r\nReflectionObject._configure = function(Root_) {\r\n Root = Root_;\r\n};\r\n","\"use strict\";\r\nmodule.exports = OneOf;\r\n\r\n// extends ReflectionObject\r\nvar ReflectionObject = require(\"./object\");\r\n((OneOf.prototype = Object.create(ReflectionObject.prototype)).constructor = OneOf).className = \"OneOf\";\r\n\r\nvar Field = require(\"./field\"),\r\n util = require(\"./util\");\r\n\r\n/**\r\n * Constructs a new oneof instance.\r\n * @classdesc Reflected oneof.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Oneof name\r\n * @param {string[]|Object.} [fieldNames] Field names\r\n * @param {Object.} [options] Declared options\r\n * @param {string} [comment] Comment associated with this field\r\n */\r\nfunction OneOf(name, fieldNames, options, comment) {\r\n if (!Array.isArray(fieldNames)) {\r\n options = fieldNames;\r\n fieldNames = undefined;\r\n }\r\n ReflectionObject.call(this, name, options);\r\n\r\n /* istanbul ignore if */\r\n if (!(fieldNames === undefined || Array.isArray(fieldNames)))\r\n throw TypeError(\"fieldNames must be an Array\");\r\n\r\n /**\r\n * Field names that belong to this oneof.\r\n * @type {string[]}\r\n */\r\n this.oneof = fieldNames || []; // toJSON, marker\r\n\r\n /**\r\n * Fields that belong to this oneof as an array for iteration.\r\n * @type {Field[]}\r\n * @readonly\r\n */\r\n this.fieldsArray = []; // declared readonly for conformance, possibly not yet added to parent\r\n\r\n /**\r\n * Comment for this field.\r\n * @type {string|null}\r\n */\r\n this.comment = comment;\r\n}\r\n\r\n/**\r\n * Oneof descriptor.\r\n * @interface IOneOf\r\n * @property {Array.} oneof Oneof field names\r\n * @property {Object.} [options] Oneof options\r\n */\r\n\r\n/**\r\n * Constructs a oneof from a oneof descriptor.\r\n * @param {string} name Oneof name\r\n * @param {IOneOf} json Oneof descriptor\r\n * @returns {OneOf} Created oneof\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nOneOf.fromJSON = function fromJSON(name, json) {\r\n return new OneOf(name, json.oneof, json.options, json.comment);\r\n};\r\n\r\n/**\r\n * Converts this oneof to a oneof descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IOneOf} Oneof descriptor\r\n */\r\nOneOf.prototype.toJSON = function toJSON(toJSONOptions) {\r\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n return util.toObject([\r\n \"options\" , this.options,\r\n \"oneof\" , this.oneof,\r\n \"comment\" , keepComments ? this.comment : undefined\r\n ]);\r\n};\r\n\r\n/**\r\n * Adds the fields of the specified oneof to the parent if not already done so.\r\n * @param {OneOf} oneof The oneof\r\n * @returns {undefined}\r\n * @inner\r\n * @ignore\r\n */\r\nfunction addFieldsToParent(oneof) {\r\n if (oneof.parent)\r\n for (var i = 0; i < oneof.fieldsArray.length; ++i)\r\n if (!oneof.fieldsArray[i].parent)\r\n oneof.parent.add(oneof.fieldsArray[i]);\r\n}\r\n\r\n/**\r\n * Adds a field to this oneof and removes it from its current parent, if any.\r\n * @param {Field} field Field to add\r\n * @returns {OneOf} `this`\r\n */\r\nOneOf.prototype.add = function add(field) {\r\n\r\n /* istanbul ignore if */\r\n if (!(field instanceof Field))\r\n throw TypeError(\"field must be a Field\");\r\n\r\n if (field.parent && field.parent !== this.parent)\r\n field.parent.remove(field);\r\n this.oneof.push(field.name);\r\n this.fieldsArray.push(field);\r\n field.partOf = this; // field.parent remains null\r\n addFieldsToParent(this);\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes a field from this oneof and puts it back to the oneof's parent.\r\n * @param {Field} field Field to remove\r\n * @returns {OneOf} `this`\r\n */\r\nOneOf.prototype.remove = function remove(field) {\r\n\r\n /* istanbul ignore if */\r\n if (!(field instanceof Field))\r\n throw TypeError(\"field must be a Field\");\r\n\r\n var index = this.fieldsArray.indexOf(field);\r\n\r\n /* istanbul ignore if */\r\n if (index < 0)\r\n throw Error(field + \" is not a member of \" + this);\r\n\r\n this.fieldsArray.splice(index, 1);\r\n index = this.oneof.indexOf(field.name);\r\n\r\n /* istanbul ignore else */\r\n if (index > -1) // theoretical\r\n this.oneof.splice(index, 1);\r\n\r\n field.partOf = null;\r\n return this;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOf.prototype.onAdd = function onAdd(parent) {\r\n ReflectionObject.prototype.onAdd.call(this, parent);\r\n var self = this;\r\n // Collect present fields\r\n for (var i = 0; i < this.oneof.length; ++i) {\r\n var field = parent.get(this.oneof[i]);\r\n if (field && !field.partOf) {\r\n field.partOf = self;\r\n self.fieldsArray.push(field);\r\n }\r\n }\r\n // Add not yet present fields\r\n addFieldsToParent(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOf.prototype.onRemove = function onRemove(parent) {\r\n for (var i = 0, field; i < this.fieldsArray.length; ++i)\r\n if ((field = this.fieldsArray[i]).parent)\r\n field.parent.remove(field);\r\n ReflectionObject.prototype.onRemove.call(this, parent);\r\n};\r\n\r\n/**\r\n * Decorator function as returned by {@link OneOf.d} (TypeScript).\r\n * @typedef OneOfDecorator\r\n * @type {function}\r\n * @param {Object} prototype Target prototype\r\n * @param {string} oneofName OneOf name\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * OneOf decorator (TypeScript).\r\n * @function\r\n * @param {...string} fieldNames Field names\r\n * @returns {OneOfDecorator} Decorator function\r\n * @template T extends string\r\n */\r\nOneOf.d = function decorateOneOf() {\r\n var fieldNames = new Array(arguments.length),\r\n index = 0;\r\n while (index < arguments.length)\r\n fieldNames[index] = arguments[index++];\r\n return function oneOfDecorator(prototype, oneofName) {\r\n util.decorateType(prototype.constructor)\r\n .add(new OneOf(oneofName, fieldNames));\r\n Object.defineProperty(prototype, oneofName, {\r\n get: util.oneOfGetter(fieldNames),\r\n set: util.oneOfSetter(fieldNames)\r\n });\r\n };\r\n};\r\n","\"use strict\";\r\nmodule.exports = Reader;\r\n\r\nvar util = require(\"./util/minimal\");\r\n\r\nvar BufferReader; // cyclic\r\n\r\nvar LongBits = util.LongBits,\r\n utf8 = util.utf8;\r\n\r\n/* istanbul ignore next */\r\nfunction indexOutOfRange(reader, writeLength) {\r\n return RangeError(\"index out of range: \" + reader.pos + \" + \" + (writeLength || 1) + \" > \" + reader.len);\r\n}\r\n\r\n/**\r\n * Constructs a new reader instance using the specified buffer.\r\n * @classdesc Wire format reader using `Uint8Array` if available, otherwise `Array`.\r\n * @constructor\r\n * @param {Uint8Array} buffer Buffer to read from\r\n */\r\nfunction Reader(buffer) {\r\n\r\n /**\r\n * Read buffer.\r\n * @type {Uint8Array}\r\n */\r\n this.buf = buffer;\r\n\r\n /**\r\n * Read buffer position.\r\n * @type {number}\r\n */\r\n this.pos = 0;\r\n\r\n /**\r\n * Read buffer length.\r\n * @type {number}\r\n */\r\n this.len = buffer.length;\r\n}\r\n\r\nvar create_array = typeof Uint8Array !== \"undefined\"\r\n ? function create_typed_array(buffer) {\r\n if (buffer instanceof Uint8Array || Array.isArray(buffer))\r\n return new Reader(buffer);\r\n throw Error(\"illegal buffer\");\r\n }\r\n /* istanbul ignore next */\r\n : function create_array(buffer) {\r\n if (Array.isArray(buffer))\r\n return new Reader(buffer);\r\n throw Error(\"illegal buffer\");\r\n };\r\n\r\nvar create = function create() {\r\n return util.Buffer\r\n ? function create_buffer_setup(buffer) {\r\n return (Reader.create = function create_buffer(buffer) {\r\n return util.Buffer.isBuffer(buffer)\r\n ? new BufferReader(buffer)\r\n /* istanbul ignore next */\r\n : create_array(buffer);\r\n })(buffer);\r\n }\r\n /* istanbul ignore next */\r\n : create_array;\r\n};\r\n\r\n/**\r\n * Creates a new reader using the specified buffer.\r\n * @function\r\n * @param {Uint8Array|Buffer} buffer Buffer to read from\r\n * @returns {Reader|BufferReader} A {@link BufferReader} if `buffer` is a Buffer, otherwise a {@link Reader}\r\n * @throws {Error} If `buffer` is not a valid buffer\r\n */\r\nReader.create = create();\r\n\r\nReader.prototype._slice = util.Array.prototype.subarray || /* istanbul ignore next */ util.Array.prototype.slice;\r\n\r\n/**\r\n * Reads a varint as an unsigned 32 bit value.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.uint32 = (function read_uint32_setup() {\r\n var value = 4294967295; // optimizer type-hint, tends to deopt otherwise (?!)\r\n return function read_uint32() {\r\n value = ( this.buf[this.pos] & 127 ) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n value = (value | (this.buf[this.pos] & 127) << 7) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n value = (value | (this.buf[this.pos] & 127) << 14) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n value = (value | (this.buf[this.pos] & 127) << 21) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n value = (value | (this.buf[this.pos] & 15) << 28) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n\r\n /* istanbul ignore if */\r\n if ((this.pos += 5) > this.len) {\r\n this.pos = this.len;\r\n throw indexOutOfRange(this, 10);\r\n }\r\n return value;\r\n };\r\n})();\r\n\r\n/**\r\n * Reads a varint as a signed 32 bit value.\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.int32 = function read_int32() {\r\n return this.uint32() | 0;\r\n};\r\n\r\n/**\r\n * Reads a zig-zag encoded varint as a signed 32 bit value.\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.sint32 = function read_sint32() {\r\n var value = this.uint32();\r\n return value >>> 1 ^ -(value & 1) | 0;\r\n};\r\n\r\n/* eslint-disable no-invalid-this */\r\n\r\nfunction readLongVarint() {\r\n // tends to deopt with local vars for octet etc.\r\n var bits = new LongBits(0, 0);\r\n var i = 0;\r\n if (this.len - this.pos > 4) { // fast route (lo)\r\n for (; i < 4; ++i) {\r\n // 1st..4th\r\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\r\n if (this.buf[this.pos++] < 128)\r\n return bits;\r\n }\r\n // 5th\r\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << 28) >>> 0;\r\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) >> 4) >>> 0;\r\n if (this.buf[this.pos++] < 128)\r\n return bits;\r\n i = 0;\r\n } else {\r\n for (; i < 3; ++i) {\r\n /* istanbul ignore if */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n // 1st..3th\r\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\r\n if (this.buf[this.pos++] < 128)\r\n return bits;\r\n }\r\n // 4th\r\n bits.lo = (bits.lo | (this.buf[this.pos++] & 127) << i * 7) >>> 0;\r\n return bits;\r\n }\r\n if (this.len - this.pos > 4) { // fast route (hi)\r\n for (; i < 5; ++i) {\r\n // 6th..10th\r\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\r\n if (this.buf[this.pos++] < 128)\r\n return bits;\r\n }\r\n } else {\r\n for (; i < 5; ++i) {\r\n /* istanbul ignore if */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n // 6th..10th\r\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\r\n if (this.buf[this.pos++] < 128)\r\n return bits;\r\n }\r\n }\r\n /* istanbul ignore next */\r\n throw Error(\"invalid varint encoding\");\r\n}\r\n\r\n/* eslint-enable no-invalid-this */\r\n\r\n/**\r\n * Reads a varint as a signed 64 bit value.\r\n * @name Reader#int64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads a varint as an unsigned 64 bit value.\r\n * @name Reader#uint64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads a zig-zag encoded varint as a signed 64 bit value.\r\n * @name Reader#sint64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads a varint as a boolean.\r\n * @returns {boolean} Value read\r\n */\r\nReader.prototype.bool = function read_bool() {\r\n return this.uint32() !== 0;\r\n};\r\n\r\nfunction readFixed32_end(buf, end) { // note that this uses `end`, not `pos`\r\n return (buf[end - 4]\r\n | buf[end - 3] << 8\r\n | buf[end - 2] << 16\r\n | buf[end - 1] << 24) >>> 0;\r\n}\r\n\r\n/**\r\n * Reads fixed 32 bits as an unsigned 32 bit integer.\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.fixed32 = function read_fixed32() {\r\n\r\n /* istanbul ignore if */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n return readFixed32_end(this.buf, this.pos += 4);\r\n};\r\n\r\n/**\r\n * Reads fixed 32 bits as a signed 32 bit integer.\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.sfixed32 = function read_sfixed32() {\r\n\r\n /* istanbul ignore if */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n return readFixed32_end(this.buf, this.pos += 4) | 0;\r\n};\r\n\r\n/* eslint-disable no-invalid-this */\r\n\r\nfunction readFixed64(/* this: Reader */) {\r\n\r\n /* istanbul ignore if */\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 8);\r\n\r\n return new LongBits(readFixed32_end(this.buf, this.pos += 4), readFixed32_end(this.buf, this.pos += 4));\r\n}\r\n\r\n/* eslint-enable no-invalid-this */\r\n\r\n/**\r\n * Reads fixed 64 bits.\r\n * @name Reader#fixed64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads zig-zag encoded fixed 64 bits.\r\n * @name Reader#sfixed64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads a float (32 bit) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.float = function read_float() {\r\n\r\n /* istanbul ignore if */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n var value = util.float.readFloatLE(this.buf, this.pos);\r\n this.pos += 4;\r\n return value;\r\n};\r\n\r\n/**\r\n * Reads a double (64 bit float) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.double = function read_double() {\r\n\r\n /* istanbul ignore if */\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n var value = util.float.readDoubleLE(this.buf, this.pos);\r\n this.pos += 8;\r\n return value;\r\n};\r\n\r\n/**\r\n * Reads a sequence of bytes preceeded by its length as a varint.\r\n * @returns {Uint8Array} Value read\r\n */\r\nReader.prototype.bytes = function read_bytes() {\r\n var length = this.uint32(),\r\n start = this.pos,\r\n end = this.pos + length;\r\n\r\n /* istanbul ignore if */\r\n if (end > this.len)\r\n throw indexOutOfRange(this, length);\r\n\r\n this.pos += length;\r\n if (Array.isArray(this.buf)) // plain array\r\n return this.buf.slice(start, end);\r\n\r\n if (start === end) { // fix for IE 10/Win8 and others' subarray returning array of size 1\r\n var nativeBuffer = util.Buffer;\r\n return nativeBuffer\r\n ? nativeBuffer.alloc(0)\r\n : new this.buf.constructor(0);\r\n }\r\n return this._slice.call(this.buf, start, end);\r\n};\r\n\r\n/**\r\n * Reads a string preceeded by its byte length as a varint.\r\n * @returns {string} Value read\r\n */\r\nReader.prototype.string = function read_string() {\r\n var bytes = this.bytes();\r\n return utf8.read(bytes, 0, bytes.length);\r\n};\r\n\r\n/**\r\n * Skips the specified number of bytes if specified, otherwise skips a varint.\r\n * @param {number} [length] Length if known, otherwise a varint is assumed\r\n * @returns {Reader} `this`\r\n */\r\nReader.prototype.skip = function skip(length) {\r\n if (typeof length === \"number\") {\r\n /* istanbul ignore if */\r\n if (this.pos + length > this.len)\r\n throw indexOutOfRange(this, length);\r\n this.pos += length;\r\n } else {\r\n do {\r\n /* istanbul ignore if */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n } while (this.buf[this.pos++] & 128);\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Skips the next element of the specified wire type.\r\n * @param {number} wireType Wire type received\r\n * @returns {Reader} `this`\r\n */\r\nReader.prototype.skipType = function(wireType) {\r\n switch (wireType) {\r\n case 0:\r\n this.skip();\r\n break;\r\n case 1:\r\n this.skip(8);\r\n break;\r\n case 2:\r\n this.skip(this.uint32());\r\n break;\r\n case 3:\r\n while ((wireType = this.uint32() & 7) !== 4) {\r\n this.skipType(wireType);\r\n }\r\n break;\r\n case 5:\r\n this.skip(4);\r\n break;\r\n\r\n /* istanbul ignore next */\r\n default:\r\n throw Error(\"invalid wire type \" + wireType + \" at offset \" + this.pos);\r\n }\r\n return this;\r\n};\r\n\r\nReader._configure = function(BufferReader_) {\r\n BufferReader = BufferReader_;\r\n Reader.create = create();\r\n BufferReader._configure();\r\n\r\n var fn = util.Long ? \"toLong\" : /* istanbul ignore next */ \"toNumber\";\r\n util.merge(Reader.prototype, {\r\n\r\n int64: function read_int64() {\r\n return readLongVarint.call(this)[fn](false);\r\n },\r\n\r\n uint64: function read_uint64() {\r\n return readLongVarint.call(this)[fn](true);\r\n },\r\n\r\n sint64: function read_sint64() {\r\n return readLongVarint.call(this).zzDecode()[fn](false);\r\n },\r\n\r\n fixed64: function read_fixed64() {\r\n return readFixed64.call(this)[fn](true);\r\n },\r\n\r\n sfixed64: function read_sfixed64() {\r\n return readFixed64.call(this)[fn](false);\r\n }\r\n\r\n });\r\n};\r\n","\"use strict\";\r\nmodule.exports = BufferReader;\r\n\r\n// extends Reader\r\nvar Reader = require(\"./reader\");\r\n(BufferReader.prototype = Object.create(Reader.prototype)).constructor = BufferReader;\r\n\r\nvar util = require(\"./util/minimal\");\r\n\r\n/**\r\n * Constructs a new buffer reader instance.\r\n * @classdesc Wire format reader using node buffers.\r\n * @extends Reader\r\n * @constructor\r\n * @param {Buffer} buffer Buffer to read from\r\n */\r\nfunction BufferReader(buffer) {\r\n Reader.call(this, buffer);\r\n\r\n /**\r\n * Read buffer.\r\n * @name BufferReader#buf\r\n * @type {Buffer}\r\n */\r\n}\r\n\r\nBufferReader._configure = function () {\r\n /* istanbul ignore else */\r\n if (util.Buffer)\r\n BufferReader.prototype._slice = util.Buffer.prototype.slice;\r\n};\r\n\r\n\r\n/**\r\n * @override\r\n */\r\nBufferReader.prototype.string = function read_string_buffer() {\r\n var len = this.uint32(); // modifies pos\r\n return this.buf.utf8Slice\r\n ? this.buf.utf8Slice(this.pos, this.pos = Math.min(this.pos + len, this.len))\r\n : this.buf.toString(\"utf-8\", this.pos, this.pos = Math.min(this.pos + len, this.len));\r\n};\r\n\r\n/**\r\n * Reads a sequence of bytes preceeded by its length as a varint.\r\n * @name BufferReader#bytes\r\n * @function\r\n * @returns {Buffer} Value read\r\n */\r\n\r\nBufferReader._configure();\r\n","\"use strict\";\r\nmodule.exports = Root;\r\n\r\n// extends Namespace\r\nvar Namespace = require(\"./namespace\");\r\n((Root.prototype = Object.create(Namespace.prototype)).constructor = Root).className = \"Root\";\r\n\r\nvar Field = require(\"./field\"),\r\n Enum = require(\"./enum\"),\r\n OneOf = require(\"./oneof\"),\r\n util = require(\"./util\");\r\n\r\nvar Type, // cyclic\r\n parse, // might be excluded\r\n common; // \"\r\n\r\n/**\r\n * Constructs a new root namespace instance.\r\n * @classdesc Root namespace wrapping all types, enums, services, sub-namespaces etc. that belong together.\r\n * @extends NamespaceBase\r\n * @constructor\r\n * @param {Object.} [options] Top level options\r\n */\r\nfunction Root(options) {\r\n Namespace.call(this, \"\", options);\r\n\r\n /**\r\n * Deferred extension fields.\r\n * @type {Field[]}\r\n */\r\n this.deferred = [];\r\n\r\n /**\r\n * Resolved file names of loaded files.\r\n * @type {string[]}\r\n */\r\n this.files = [];\r\n}\r\n\r\n/**\r\n * Loads a namespace descriptor into a root namespace.\r\n * @param {INamespace} json Nameespace descriptor\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted\r\n * @returns {Root} Root namespace\r\n */\r\nRoot.fromJSON = function fromJSON(json, root) {\r\n if (!root)\r\n root = new Root();\r\n if (json.options)\r\n root.setOptions(json.options);\r\n return root.addJSON(json.nested);\r\n};\r\n\r\n/**\r\n * Resolves the path of an imported file, relative to the importing origin.\r\n * This method exists so you can override it with your own logic in case your imports are scattered over multiple directories.\r\n * @function\r\n * @param {string} origin The file name of the importing file\r\n * @param {string} target The file name being imported\r\n * @returns {string|null} Resolved path to `target` or `null` to skip the file\r\n */\r\nRoot.prototype.resolvePath = util.path.resolve;\r\n\r\n/**\r\n * Fetch content from file path or url\r\n * This method exists so you can override it with your own logic.\r\n * @function\r\n * @param {string} path File path or url\r\n * @param {FetchCallback} callback Callback function\r\n * @returns {undefined}\r\n */\r\nRoot.prototype.fetch = util.fetch;\r\n\r\n// A symbol-like function to safely signal synchronous loading\r\n/* istanbul ignore next */\r\nfunction SYNC() {} // eslint-disable-line no-empty-function\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into this root namespace and calls the callback.\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {IParseOptions} options Parse options\r\n * @param {LoadCallback} callback Callback function\r\n * @returns {undefined}\r\n */\r\nRoot.prototype.load = function load(filename, options, callback) {\r\n if (typeof options === \"function\") {\r\n callback = options;\r\n options = undefined;\r\n }\r\n var self = this;\r\n if (!callback)\r\n return util.asPromise(load, self, filename, options);\r\n\r\n var sync = callback === SYNC; // undocumented\r\n\r\n // Finishes loading by calling the callback (exactly once)\r\n function finish(err, root) {\r\n /* istanbul ignore if */\r\n if (!callback)\r\n return;\r\n if (sync)\r\n throw err;\r\n var cb = callback;\r\n callback = null;\r\n cb(err, root);\r\n }\r\n\r\n // Bundled definition existence checking\r\n function getBundledFileName(filename) {\r\n var idx = filename.lastIndexOf(\"google/protobuf/\");\r\n if (idx > -1) {\r\n var altname = filename.substring(idx);\r\n if (altname in common) return altname;\r\n }\r\n return null;\r\n }\r\n\r\n // Processes a single file\r\n function process(filename, source) {\r\n try {\r\n if (util.isString(source) && source.charAt(0) === \"{\")\r\n source = JSON.parse(source);\r\n if (!util.isString(source))\r\n self.setOptions(source.options).addJSON(source.nested);\r\n else {\r\n parse.filename = filename;\r\n var parsed = parse(source, self, options),\r\n resolved,\r\n i = 0;\r\n if (parsed.imports)\r\n for (; i < parsed.imports.length; ++i)\r\n if (resolved = getBundledFileName(parsed.imports[i]) || self.resolvePath(filename, parsed.imports[i]))\r\n fetch(resolved);\r\n if (parsed.weakImports)\r\n for (i = 0; i < parsed.weakImports.length; ++i)\r\n if (resolved = getBundledFileName(parsed.weakImports[i]) || self.resolvePath(filename, parsed.weakImports[i]))\r\n fetch(resolved, true);\r\n }\r\n } catch (err) {\r\n finish(err);\r\n }\r\n if (!sync && !queued)\r\n finish(null, self); // only once anyway\r\n }\r\n\r\n // Fetches a single file\r\n function fetch(filename, weak) {\r\n filename = getBundledFileName(filename) || filename;\r\n\r\n // Skip if already loaded / attempted\r\n if (self.files.indexOf(filename) > -1)\r\n return;\r\n self.files.push(filename);\r\n\r\n // Shortcut bundled definitions\r\n if (filename in common) {\r\n if (sync)\r\n process(filename, common[filename]);\r\n else {\r\n ++queued;\r\n setTimeout(function() {\r\n --queued;\r\n process(filename, common[filename]);\r\n });\r\n }\r\n return;\r\n }\r\n\r\n // Otherwise fetch from disk or network\r\n if (sync) {\r\n var source;\r\n try {\r\n source = util.fs.readFileSync(filename).toString(\"utf8\");\r\n } catch (err) {\r\n if (!weak)\r\n finish(err);\r\n return;\r\n }\r\n process(filename, source);\r\n } else {\r\n ++queued;\r\n self.fetch(filename, function(err, source) {\r\n --queued;\r\n /* istanbul ignore if */\r\n if (!callback)\r\n return; // terminated meanwhile\r\n if (err) {\r\n /* istanbul ignore else */\r\n if (!weak)\r\n finish(err);\r\n else if (!queued) // can't be covered reliably\r\n finish(null, self);\r\n return;\r\n }\r\n process(filename, source);\r\n });\r\n }\r\n }\r\n var queued = 0;\r\n\r\n // Assembling the root namespace doesn't require working type\r\n // references anymore, so we can load everything in parallel\r\n if (util.isString(filename))\r\n filename = [ filename ];\r\n for (var i = 0, resolved; i < filename.length; ++i)\r\n if (resolved = self.resolvePath(\"\", filename[i]))\r\n fetch(resolved);\r\n\r\n if (sync)\r\n return self;\r\n if (!queued)\r\n finish(null, self);\r\n return undefined;\r\n};\r\n// function load(filename:string, options:IParseOptions, callback:LoadCallback):undefined\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into this root namespace and calls the callback.\r\n * @function Root#load\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {LoadCallback} callback Callback function\r\n * @returns {undefined}\r\n * @variation 2\r\n */\r\n// function load(filename:string, callback:LoadCallback):undefined\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into this root namespace and returns a promise.\r\n * @function Root#load\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {IParseOptions} [options] Parse options. Defaults to {@link parse.defaults} when omitted.\r\n * @returns {Promise} Promise\r\n * @variation 3\r\n */\r\n// function load(filename:string, [options:IParseOptions]):Promise\r\n\r\n/**\r\n * Synchronously loads one or multiple .proto or preprocessed .json files into this root namespace (node only).\r\n * @function Root#loadSync\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {IParseOptions} [options] Parse options. Defaults to {@link parse.defaults} when omitted.\r\n * @returns {Root} Root namespace\r\n * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid\r\n */\r\nRoot.prototype.loadSync = function loadSync(filename, options) {\r\n if (!util.isNode)\r\n throw Error(\"not supported\");\r\n return this.load(filename, options, SYNC);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nRoot.prototype.resolveAll = function resolveAll() {\r\n if (this.deferred.length)\r\n throw Error(\"unresolvable extensions: \" + this.deferred.map(function(field) {\r\n return \"'extend \" + field.extend + \"' in \" + field.parent.fullName;\r\n }).join(\", \"));\r\n return Namespace.prototype.resolveAll.call(this);\r\n};\r\n\r\n// only uppercased (and thus conflict-free) children are exposed, see below\r\nvar exposeRe = /^[A-Z]/;\r\n\r\n/**\r\n * Handles a deferred declaring extension field by creating a sister field to represent it within its extended type.\r\n * @param {Root} root Root instance\r\n * @param {Field} field Declaring extension field witin the declaring type\r\n * @returns {boolean} `true` if successfully added to the extended type, `false` otherwise\r\n * @inner\r\n * @ignore\r\n */\r\nfunction tryHandleExtension(root, field) {\r\n var extendedType = field.parent.lookup(field.extend);\r\n if (extendedType) {\r\n var sisterField = new Field(field.fullName, field.id, field.type, field.rule, undefined, field.options);\r\n //do not allow to extend same field twice to prevent the error\r\n if (extendedType.get(sisterField.name)) {\r\n return true;\r\n }\r\n sisterField.declaringField = field;\r\n field.extensionField = sisterField;\r\n extendedType.add(sisterField);\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * Called when any object is added to this root or its sub-namespaces.\r\n * @param {ReflectionObject} object Object added\r\n * @returns {undefined}\r\n * @private\r\n */\r\nRoot.prototype._handleAdd = function _handleAdd(object) {\r\n if (object instanceof Field) {\r\n\r\n if (/* an extension field (implies not part of a oneof) */ object.extend !== undefined && /* not already handled */ !object.extensionField)\r\n if (!tryHandleExtension(this, object))\r\n this.deferred.push(object);\r\n\r\n } else if (object instanceof Enum) {\r\n\r\n if (exposeRe.test(object.name))\r\n object.parent[object.name] = object.values; // expose enum values as property of its parent\r\n\r\n } else if (!(object instanceof OneOf)) /* everything else is a namespace */ {\r\n\r\n if (object instanceof Type) // Try to handle any deferred extensions\r\n for (var i = 0; i < this.deferred.length;)\r\n if (tryHandleExtension(this, this.deferred[i]))\r\n this.deferred.splice(i, 1);\r\n else\r\n ++i;\r\n for (var j = 0; j < /* initializes */ object.nestedArray.length; ++j) // recurse into the namespace\r\n this._handleAdd(object._nestedArray[j]);\r\n if (exposeRe.test(object.name))\r\n object.parent[object.name] = object; // expose namespace as property of its parent\r\n }\r\n\r\n // The above also adds uppercased (and thus conflict-free) nested types, services and enums as\r\n // properties of namespaces just like static code does. This allows using a .d.ts generated for\r\n // a static module with reflection-based solutions where the condition is met.\r\n};\r\n\r\n/**\r\n * Called when any object is removed from this root or its sub-namespaces.\r\n * @param {ReflectionObject} object Object removed\r\n * @returns {undefined}\r\n * @private\r\n */\r\nRoot.prototype._handleRemove = function _handleRemove(object) {\r\n if (object instanceof Field) {\r\n\r\n if (/* an extension field */ object.extend !== undefined) {\r\n if (/* already handled */ object.extensionField) { // remove its sister field\r\n object.extensionField.parent.remove(object.extensionField);\r\n object.extensionField = null;\r\n } else { // cancel the extension\r\n var index = this.deferred.indexOf(object);\r\n /* istanbul ignore else */\r\n if (index > -1)\r\n this.deferred.splice(index, 1);\r\n }\r\n }\r\n\r\n } else if (object instanceof Enum) {\r\n\r\n if (exposeRe.test(object.name))\r\n delete object.parent[object.name]; // unexpose enum values\r\n\r\n } else if (object instanceof Namespace) {\r\n\r\n for (var i = 0; i < /* initializes */ object.nestedArray.length; ++i) // recurse into the namespace\r\n this._handleRemove(object._nestedArray[i]);\r\n\r\n if (exposeRe.test(object.name))\r\n delete object.parent[object.name]; // unexpose namespaces\r\n\r\n }\r\n};\r\n\r\n// Sets up cyclic dependencies (called in index-light)\r\nRoot._configure = function(Type_, parse_, common_) {\r\n Type = Type_;\r\n parse = parse_;\r\n common = common_;\r\n};\r\n","\"use strict\";\r\nmodule.exports = {};\r\n\r\n/**\r\n * Named roots.\r\n * This is where pbjs stores generated structures (the option `-r, --root` specifies a name).\r\n * Can also be used manually to make roots available across modules.\r\n * @name roots\r\n * @type {Object.}\r\n * @example\r\n * // pbjs -r myroot -o compiled.js ...\r\n *\r\n * // in another module:\r\n * require(\"./compiled.js\");\r\n *\r\n * // in any subsequent module:\r\n * var root = protobuf.roots[\"myroot\"];\r\n */\r\n","\"use strict\";\r\n\r\n/**\r\n * Streaming RPC helpers.\r\n * @namespace\r\n */\r\nvar rpc = exports;\r\n\r\n/**\r\n * RPC implementation passed to {@link Service#create} performing a service request on network level, i.e. by utilizing http requests or websockets.\r\n * @typedef RPCImpl\r\n * @type {function}\r\n * @param {Method|rpc.ServiceMethod,Message<{}>>} method Reflected or static method being called\r\n * @param {Uint8Array} requestData Request data\r\n * @param {RPCImplCallback} callback Callback function\r\n * @returns {undefined}\r\n * @example\r\n * function rpcImpl(method, requestData, callback) {\r\n * if (protobuf.util.lcFirst(method.name) !== \"myMethod\") // compatible with static code\r\n * throw Error(\"no such method\");\r\n * asynchronouslyObtainAResponse(requestData, function(err, responseData) {\r\n * callback(err, responseData);\r\n * });\r\n * }\r\n */\r\n\r\n/**\r\n * Node-style callback as used by {@link RPCImpl}.\r\n * @typedef RPCImplCallback\r\n * @type {function}\r\n * @param {Error|null} error Error, if any, otherwise `null`\r\n * @param {Uint8Array|null} [response] Response data or `null` to signal end of stream, if there hasn't been an error\r\n * @returns {undefined}\r\n */\r\n\r\nrpc.Service = require(\"./rpc/service\");\r\n","\"use strict\";\r\nmodule.exports = Service;\r\n\r\nvar util = require(\"../util/minimal\");\r\n\r\n// Extends EventEmitter\r\n(Service.prototype = Object.create(util.EventEmitter.prototype)).constructor = Service;\r\n\r\n/**\r\n * A service method callback as used by {@link rpc.ServiceMethod|ServiceMethod}.\r\n *\r\n * Differs from {@link RPCImplCallback} in that it is an actual callback of a service method which may not return `response = null`.\r\n * @typedef rpc.ServiceMethodCallback\r\n * @template TRes extends Message\r\n * @type {function}\r\n * @param {Error|null} error Error, if any\r\n * @param {TRes} [response] Response message\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * A service method part of a {@link rpc.Service} as created by {@link Service.create}.\r\n * @typedef rpc.ServiceMethod\r\n * @template TReq extends Message\r\n * @template TRes extends Message\r\n * @type {function}\r\n * @param {TReq|Properties} request Request message or plain object\r\n * @param {rpc.ServiceMethodCallback} [callback] Node-style callback called with the error, if any, and the response message\r\n * @returns {Promise>} Promise if `callback` has been omitted, otherwise `undefined`\r\n */\r\n\r\n/**\r\n * Constructs a new RPC service instance.\r\n * @classdesc An RPC service as returned by {@link Service#create}.\r\n * @exports rpc.Service\r\n * @extends util.EventEmitter\r\n * @constructor\r\n * @param {RPCImpl} rpcImpl RPC implementation\r\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\r\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\r\n */\r\nfunction Service(rpcImpl, requestDelimited, responseDelimited) {\r\n\r\n if (typeof rpcImpl !== \"function\")\r\n throw TypeError(\"rpcImpl must be a function\");\r\n\r\n util.EventEmitter.call(this);\r\n\r\n /**\r\n * RPC implementation. Becomes `null` once the service is ended.\r\n * @type {RPCImpl|null}\r\n */\r\n this.rpcImpl = rpcImpl;\r\n\r\n /**\r\n * Whether requests are length-delimited.\r\n * @type {boolean}\r\n */\r\n this.requestDelimited = Boolean(requestDelimited);\r\n\r\n /**\r\n * Whether responses are length-delimited.\r\n * @type {boolean}\r\n */\r\n this.responseDelimited = Boolean(responseDelimited);\r\n}\r\n\r\n/**\r\n * Calls a service method through {@link rpc.Service#rpcImpl|rpcImpl}.\r\n * @param {Method|rpc.ServiceMethod} method Reflected or static method\r\n * @param {Constructor} requestCtor Request constructor\r\n * @param {Constructor} responseCtor Response constructor\r\n * @param {TReq|Properties} request Request message or plain object\r\n * @param {rpc.ServiceMethodCallback} callback Service callback\r\n * @returns {undefined}\r\n * @template TReq extends Message\r\n * @template TRes extends Message\r\n */\r\nService.prototype.rpcCall = function rpcCall(method, requestCtor, responseCtor, request, callback) {\r\n\r\n if (!request)\r\n throw TypeError(\"request must be specified\");\r\n\r\n var self = this;\r\n if (!callback)\r\n return util.asPromise(rpcCall, self, method, requestCtor, responseCtor, request);\r\n\r\n if (!self.rpcImpl) {\r\n setTimeout(function() { callback(Error(\"already ended\")); }, 0);\r\n return undefined;\r\n }\r\n\r\n try {\r\n return self.rpcImpl(\r\n method,\r\n requestCtor[self.requestDelimited ? \"encodeDelimited\" : \"encode\"](request).finish(),\r\n function rpcCallback(err, response) {\r\n\r\n if (err) {\r\n self.emit(\"error\", err, method);\r\n return callback(err);\r\n }\r\n\r\n if (response === null) {\r\n self.end(/* endedByRPC */ true);\r\n return undefined;\r\n }\r\n\r\n if (!(response instanceof responseCtor)) {\r\n try {\r\n response = responseCtor[self.responseDelimited ? \"decodeDelimited\" : \"decode\"](response);\r\n } catch (err) {\r\n self.emit(\"error\", err, method);\r\n return callback(err);\r\n }\r\n }\r\n\r\n self.emit(\"data\", response, method);\r\n return callback(null, response);\r\n }\r\n );\r\n } catch (err) {\r\n self.emit(\"error\", err, method);\r\n setTimeout(function() { callback(err); }, 0);\r\n return undefined;\r\n }\r\n};\r\n\r\n/**\r\n * Ends this service and emits the `end` event.\r\n * @param {boolean} [endedByRPC=false] Whether the service has been ended by the RPC implementation.\r\n * @returns {rpc.Service} `this`\r\n */\r\nService.prototype.end = function end(endedByRPC) {\r\n if (this.rpcImpl) {\r\n if (!endedByRPC) // signal end to rpcImpl\r\n this.rpcImpl(null, null, null);\r\n this.rpcImpl = null;\r\n this.emit(\"end\").off();\r\n }\r\n return this;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Service;\r\n\r\n// extends Namespace\r\nvar Namespace = require(\"./namespace\");\r\n((Service.prototype = Object.create(Namespace.prototype)).constructor = Service).className = \"Service\";\r\n\r\nvar Method = require(\"./method\"),\r\n util = require(\"./util\"),\r\n rpc = require(\"./rpc\");\r\n\r\n/**\r\n * Constructs a new service instance.\r\n * @classdesc Reflected service.\r\n * @extends NamespaceBase\r\n * @constructor\r\n * @param {string} name Service name\r\n * @param {Object.} [options] Service options\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nfunction Service(name, options) {\r\n Namespace.call(this, name, options);\r\n\r\n /**\r\n * Service methods.\r\n * @type {Object.}\r\n */\r\n this.methods = {}; // toJSON, marker\r\n\r\n /**\r\n * Cached methods as an array.\r\n * @type {Method[]|null}\r\n * @private\r\n */\r\n this._methodsArray = null;\r\n}\r\n\r\n/**\r\n * Service descriptor.\r\n * @interface IService\r\n * @extends INamespace\r\n * @property {Object.} methods Method descriptors\r\n */\r\n\r\n/**\r\n * Constructs a service from a service descriptor.\r\n * @param {string} name Service name\r\n * @param {IService} json Service descriptor\r\n * @returns {Service} Created service\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nService.fromJSON = function fromJSON(name, json) {\r\n var service = new Service(name, json.options);\r\n /* istanbul ignore else */\r\n if (json.methods)\r\n for (var names = Object.keys(json.methods), i = 0; i < names.length; ++i)\r\n service.add(Method.fromJSON(names[i], json.methods[names[i]]));\r\n if (json.nested)\r\n service.addJSON(json.nested);\r\n service.comment = json.comment;\r\n return service;\r\n};\r\n\r\n/**\r\n * Converts this service to a service descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IService} Service descriptor\r\n */\r\nService.prototype.toJSON = function toJSON(toJSONOptions) {\r\n var inherited = Namespace.prototype.toJSON.call(this, toJSONOptions);\r\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n return util.toObject([\r\n \"options\" , inherited && inherited.options || undefined,\r\n \"methods\" , Namespace.arrayToJSON(this.methodsArray, toJSONOptions) || /* istanbul ignore next */ {},\r\n \"nested\" , inherited && inherited.nested || undefined,\r\n \"comment\" , keepComments ? this.comment : undefined\r\n ]);\r\n};\r\n\r\n/**\r\n * Methods of this service as an array for iteration.\r\n * @name Service#methodsArray\r\n * @type {Method[]}\r\n * @readonly\r\n */\r\nObject.defineProperty(Service.prototype, \"methodsArray\", {\r\n get: function() {\r\n return this._methodsArray || (this._methodsArray = util.toArray(this.methods));\r\n }\r\n});\r\n\r\nfunction clearCache(service) {\r\n service._methodsArray = null;\r\n return service;\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\nService.prototype.get = function get(name) {\r\n return this.methods[name]\r\n || Namespace.prototype.get.call(this, name);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nService.prototype.resolveAll = function resolveAll() {\r\n var methods = this.methodsArray;\r\n for (var i = 0; i < methods.length; ++i)\r\n methods[i].resolve();\r\n return Namespace.prototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nService.prototype.add = function add(object) {\r\n\r\n /* istanbul ignore if */\r\n if (this.get(object.name))\r\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\r\n\r\n if (object instanceof Method) {\r\n this.methods[object.name] = object;\r\n object.parent = this;\r\n return clearCache(this);\r\n }\r\n return Namespace.prototype.add.call(this, object);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nService.prototype.remove = function remove(object) {\r\n if (object instanceof Method) {\r\n\r\n /* istanbul ignore if */\r\n if (this.methods[object.name] !== object)\r\n throw Error(object + \" is not a member of \" + this);\r\n\r\n delete this.methods[object.name];\r\n object.parent = null;\r\n return clearCache(this);\r\n }\r\n return Namespace.prototype.remove.call(this, object);\r\n};\r\n\r\n/**\r\n * Creates a runtime service using the specified rpc implementation.\r\n * @param {RPCImpl} rpcImpl RPC implementation\r\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\r\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\r\n * @returns {rpc.Service} RPC service. Useful where requests and/or responses are streamed.\r\n */\r\nService.prototype.create = function create(rpcImpl, requestDelimited, responseDelimited) {\r\n var rpcService = new rpc.Service(rpcImpl, requestDelimited, responseDelimited);\r\n for (var i = 0, method; i < /* initializes */ this.methodsArray.length; ++i) {\r\n var methodName = util.lcFirst((method = this._methodsArray[i]).resolve().name).replace(/[^$\\w_]/g, \"\");\r\n rpcService[methodName] = util.codegen([\"r\",\"c\"], util.isReserved(methodName) ? methodName + \"_\" : methodName)(\"return this.rpcCall(m,q,s,r,c)\")({\r\n m: method,\r\n q: method.resolvedRequestType.ctor,\r\n s: method.resolvedResponseType.ctor\r\n });\r\n }\r\n return rpcService;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Type;\r\n\r\n// extends Namespace\r\nvar Namespace = require(\"./namespace\");\r\n((Type.prototype = Object.create(Namespace.prototype)).constructor = Type).className = \"Type\";\r\n\r\nvar Enum = require(\"./enum\"),\r\n OneOf = require(\"./oneof\"),\r\n Field = require(\"./field\"),\r\n MapField = require(\"./mapfield\"),\r\n Service = require(\"./service\"),\r\n Message = require(\"./message\"),\r\n Reader = require(\"./reader\"),\r\n Writer = require(\"./writer\"),\r\n util = require(\"./util\"),\r\n encoder = require(\"./encoder\"),\r\n decoder = require(\"./decoder\"),\r\n verifier = require(\"./verifier\"),\r\n converter = require(\"./converter\"),\r\n wrappers = require(\"./wrappers\");\r\n\r\n/**\r\n * Constructs a new reflected message type instance.\r\n * @classdesc Reflected message type.\r\n * @extends NamespaceBase\r\n * @constructor\r\n * @param {string} name Message name\r\n * @param {Object.} [options] Declared options\r\n */\r\nfunction Type(name, options) {\r\n Namespace.call(this, name, options);\r\n\r\n /**\r\n * Message fields.\r\n * @type {Object.}\r\n */\r\n this.fields = {}; // toJSON, marker\r\n\r\n /**\r\n * Oneofs declared within this namespace, if any.\r\n * @type {Object.}\r\n */\r\n this.oneofs = undefined; // toJSON\r\n\r\n /**\r\n * Extension ranges, if any.\r\n * @type {number[][]}\r\n */\r\n this.extensions = undefined; // toJSON\r\n\r\n /**\r\n * Reserved ranges, if any.\r\n * @type {Array.}\r\n */\r\n this.reserved = undefined; // toJSON\r\n\r\n /*?\r\n * Whether this type is a legacy group.\r\n * @type {boolean|undefined}\r\n */\r\n this.group = undefined; // toJSON\r\n\r\n /**\r\n * Cached fields by id.\r\n * @type {Object.|null}\r\n * @private\r\n */\r\n this._fieldsById = null;\r\n\r\n /**\r\n * Cached fields as an array.\r\n * @type {Field[]|null}\r\n * @private\r\n */\r\n this._fieldsArray = null;\r\n\r\n /**\r\n * Cached oneofs as an array.\r\n * @type {OneOf[]|null}\r\n * @private\r\n */\r\n this._oneofsArray = null;\r\n\r\n /**\r\n * Cached constructor.\r\n * @type {Constructor<{}>}\r\n * @private\r\n */\r\n this._ctor = null;\r\n}\r\n\r\nObject.defineProperties(Type.prototype, {\r\n\r\n /**\r\n * Message fields by id.\r\n * @name Type#fieldsById\r\n * @type {Object.}\r\n * @readonly\r\n */\r\n fieldsById: {\r\n get: function() {\r\n\r\n /* istanbul ignore if */\r\n if (this._fieldsById)\r\n return this._fieldsById;\r\n\r\n this._fieldsById = {};\r\n for (var names = Object.keys(this.fields), i = 0; i < names.length; ++i) {\r\n var field = this.fields[names[i]],\r\n id = field.id;\r\n\r\n /* istanbul ignore if */\r\n if (this._fieldsById[id])\r\n throw Error(\"duplicate id \" + id + \" in \" + this);\r\n\r\n this._fieldsById[id] = field;\r\n }\r\n return this._fieldsById;\r\n }\r\n },\r\n\r\n /**\r\n * Fields of this message as an array for iteration.\r\n * @name Type#fieldsArray\r\n * @type {Field[]}\r\n * @readonly\r\n */\r\n fieldsArray: {\r\n get: function() {\r\n return this._fieldsArray || (this._fieldsArray = util.toArray(this.fields));\r\n }\r\n },\r\n\r\n /**\r\n * Oneofs of this message as an array for iteration.\r\n * @name Type#oneofsArray\r\n * @type {OneOf[]}\r\n * @readonly\r\n */\r\n oneofsArray: {\r\n get: function() {\r\n return this._oneofsArray || (this._oneofsArray = util.toArray(this.oneofs));\r\n }\r\n },\r\n\r\n /**\r\n * The registered constructor, if any registered, otherwise a generic constructor.\r\n * Assigning a function replaces the internal constructor. If the function does not extend {@link Message} yet, its prototype will be setup accordingly and static methods will be populated. If it already extends {@link Message}, it will just replace the internal constructor.\r\n * @name Type#ctor\r\n * @type {Constructor<{}>}\r\n */\r\n ctor: {\r\n get: function() {\r\n return this._ctor || (this.ctor = Type.generateConstructor(this)());\r\n },\r\n set: function(ctor) {\r\n\r\n // Ensure proper prototype\r\n var prototype = ctor.prototype;\r\n if (!(prototype instanceof Message)) {\r\n (ctor.prototype = new Message()).constructor = ctor;\r\n util.merge(ctor.prototype, prototype);\r\n }\r\n\r\n // Classes and messages reference their reflected type\r\n ctor.$type = ctor.prototype.$type = this;\r\n\r\n // Mix in static methods\r\n util.merge(ctor, Message, true);\r\n\r\n this._ctor = ctor;\r\n\r\n // Messages have non-enumerable default values on their prototype\r\n var i = 0;\r\n for (; i < /* initializes */ this.fieldsArray.length; ++i)\r\n this._fieldsArray[i].resolve(); // ensures a proper value\r\n\r\n // Messages have non-enumerable getters and setters for each virtual oneof field\r\n var ctorProperties = {};\r\n for (i = 0; i < /* initializes */ this.oneofsArray.length; ++i)\r\n ctorProperties[this._oneofsArray[i].resolve().name] = {\r\n get: util.oneOfGetter(this._oneofsArray[i].oneof),\r\n set: util.oneOfSetter(this._oneofsArray[i].oneof)\r\n };\r\n if (i)\r\n Object.defineProperties(ctor.prototype, ctorProperties);\r\n }\r\n }\r\n});\r\n\r\n/**\r\n * Generates a constructor function for the specified type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nType.generateConstructor = function generateConstructor(mtype) {\r\n /* eslint-disable no-unexpected-multiline */\r\n var gen = util.codegen([\"p\"], mtype.name);\r\n // explicitly initialize mutable object/array fields so that these aren't just inherited from the prototype\r\n for (var i = 0, field; i < mtype.fieldsArray.length; ++i)\r\n if ((field = mtype._fieldsArray[i]).map) gen\r\n (\"this%s={}\", util.safeProp(field.name));\r\n else if (field.repeated) gen\r\n (\"this%s=[]\", util.safeProp(field.name));\r\n return gen\r\n (\"if(p)for(var ks=Object.keys(p),i=0;i} [oneofs] Oneof descriptors\r\n * @property {Object.} fields Field descriptors\r\n * @property {number[][]} [extensions] Extension ranges\r\n * @property {Array.} [reserved] Reserved ranges\r\n * @property {boolean} [group=false] Whether a legacy group or not\r\n */\r\n\r\n/**\r\n * Creates a message type from a message type descriptor.\r\n * @param {string} name Message name\r\n * @param {IType} json Message type descriptor\r\n * @returns {Type} Created message type\r\n */\r\nType.fromJSON = function fromJSON(name, json) {\r\n var type = new Type(name, json.options);\r\n type.extensions = json.extensions;\r\n type.reserved = json.reserved;\r\n var names = Object.keys(json.fields),\r\n i = 0;\r\n for (; i < names.length; ++i)\r\n type.add(\r\n ( typeof json.fields[names[i]].keyType !== \"undefined\"\r\n ? MapField.fromJSON\r\n : Field.fromJSON )(names[i], json.fields[names[i]])\r\n );\r\n if (json.oneofs)\r\n for (names = Object.keys(json.oneofs), i = 0; i < names.length; ++i)\r\n type.add(OneOf.fromJSON(names[i], json.oneofs[names[i]]));\r\n if (json.nested)\r\n for (names = Object.keys(json.nested), i = 0; i < names.length; ++i) {\r\n var nested = json.nested[names[i]];\r\n type.add( // most to least likely\r\n ( nested.id !== undefined\r\n ? Field.fromJSON\r\n : nested.fields !== undefined\r\n ? Type.fromJSON\r\n : nested.values !== undefined\r\n ? Enum.fromJSON\r\n : nested.methods !== undefined\r\n ? Service.fromJSON\r\n : Namespace.fromJSON )(names[i], nested)\r\n );\r\n }\r\n if (json.extensions && json.extensions.length)\r\n type.extensions = json.extensions;\r\n if (json.reserved && json.reserved.length)\r\n type.reserved = json.reserved;\r\n if (json.group)\r\n type.group = true;\r\n if (json.comment)\r\n type.comment = json.comment;\r\n return type;\r\n};\r\n\r\n/**\r\n * Converts this message type to a message type descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IType} Message type descriptor\r\n */\r\nType.prototype.toJSON = function toJSON(toJSONOptions) {\r\n var inherited = Namespace.prototype.toJSON.call(this, toJSONOptions);\r\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n return util.toObject([\r\n \"options\" , inherited && inherited.options || undefined,\r\n \"oneofs\" , Namespace.arrayToJSON(this.oneofsArray, toJSONOptions),\r\n \"fields\" , Namespace.arrayToJSON(this.fieldsArray.filter(function(obj) { return !obj.declaringField; }), toJSONOptions) || {},\r\n \"extensions\" , this.extensions && this.extensions.length ? this.extensions : undefined,\r\n \"reserved\" , this.reserved && this.reserved.length ? this.reserved : undefined,\r\n \"group\" , this.group || undefined,\r\n \"nested\" , inherited && inherited.nested || undefined,\r\n \"comment\" , keepComments ? this.comment : undefined\r\n ]);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nType.prototype.resolveAll = function resolveAll() {\r\n var fields = this.fieldsArray, i = 0;\r\n while (i < fields.length)\r\n fields[i++].resolve();\r\n var oneofs = this.oneofsArray; i = 0;\r\n while (i < oneofs.length)\r\n oneofs[i++].resolve();\r\n return Namespace.prototype.resolveAll.call(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nType.prototype.get = function get(name) {\r\n return this.fields[name]\r\n || this.oneofs && this.oneofs[name]\r\n || this.nested && this.nested[name]\r\n || null;\r\n};\r\n\r\n/**\r\n * Adds a nested object to this type.\r\n * @param {ReflectionObject} object Nested object to add\r\n * @returns {Type} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a nested object with this name or, if a field, when there is already a field with this id\r\n */\r\nType.prototype.add = function add(object) {\r\n\r\n if (this.get(object.name))\r\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\r\n\r\n if (object instanceof Field && object.extend === undefined) {\r\n // NOTE: Extension fields aren't actual fields on the declaring type, but nested objects.\r\n // The root object takes care of adding distinct sister-fields to the respective extended\r\n // type instead.\r\n\r\n // avoids calling the getter if not absolutely necessary because it's called quite frequently\r\n if (this._fieldsById ? /* istanbul ignore next */ this._fieldsById[object.id] : this.fieldsById[object.id])\r\n throw Error(\"duplicate id \" + object.id + \" in \" + this);\r\n if (this.isReservedId(object.id))\r\n throw Error(\"id \" + object.id + \" is reserved in \" + this);\r\n if (this.isReservedName(object.name))\r\n throw Error(\"name '\" + object.name + \"' is reserved in \" + this);\r\n\r\n if (object.parent)\r\n object.parent.remove(object);\r\n this.fields[object.name] = object;\r\n object.message = this;\r\n object.onAdd(this);\r\n return clearCache(this);\r\n }\r\n if (object instanceof OneOf) {\r\n if (!this.oneofs)\r\n this.oneofs = {};\r\n this.oneofs[object.name] = object;\r\n object.onAdd(this);\r\n return clearCache(this);\r\n }\r\n return Namespace.prototype.add.call(this, object);\r\n};\r\n\r\n/**\r\n * Removes a nested object from this type.\r\n * @param {ReflectionObject} object Nested object to remove\r\n * @returns {Type} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `object` is not a member of this type\r\n */\r\nType.prototype.remove = function remove(object) {\r\n if (object instanceof Field && object.extend === undefined) {\r\n // See Type#add for the reason why extension fields are excluded here.\r\n\r\n /* istanbul ignore if */\r\n if (!this.fields || this.fields[object.name] !== object)\r\n throw Error(object + \" is not a member of \" + this);\r\n\r\n delete this.fields[object.name];\r\n object.parent = null;\r\n object.onRemove(this);\r\n return clearCache(this);\r\n }\r\n if (object instanceof OneOf) {\r\n\r\n /* istanbul ignore if */\r\n if (!this.oneofs || this.oneofs[object.name] !== object)\r\n throw Error(object + \" is not a member of \" + this);\r\n\r\n delete this.oneofs[object.name];\r\n object.parent = null;\r\n object.onRemove(this);\r\n return clearCache(this);\r\n }\r\n return Namespace.prototype.remove.call(this, object);\r\n};\r\n\r\n/**\r\n * Tests if the specified id is reserved.\r\n * @param {number} id Id to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nType.prototype.isReservedId = function isReservedId(id) {\r\n return Namespace.isReservedId(this.reserved, id);\r\n};\r\n\r\n/**\r\n * Tests if the specified name is reserved.\r\n * @param {string} name Name to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nType.prototype.isReservedName = function isReservedName(name) {\r\n return Namespace.isReservedName(this.reserved, name);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type using the specified properties.\r\n * @param {Object.} [properties] Properties to set\r\n * @returns {Message<{}>} Message instance\r\n */\r\nType.prototype.create = function create(properties) {\r\n return new this.ctor(properties);\r\n};\r\n\r\n/**\r\n * Sets up {@link Type#encode|encode}, {@link Type#decode|decode} and {@link Type#verify|verify}.\r\n * @returns {Type} `this`\r\n */\r\nType.prototype.setup = function setup() {\r\n // Sets up everything at once so that the prototype chain does not have to be re-evaluated\r\n // multiple times (V8, soft-deopt prototype-check).\r\n\r\n var fullName = this.fullName,\r\n types = [];\r\n for (var i = 0; i < /* initializes */ this.fieldsArray.length; ++i)\r\n types.push(this._fieldsArray[i].resolve().resolvedType);\r\n\r\n // Replace setup methods with type-specific generated functions\r\n this.encode = encoder(this)({\r\n Writer : Writer,\r\n types : types,\r\n util : util\r\n });\r\n this.decode = decoder(this)({\r\n Reader : Reader,\r\n types : types,\r\n util : util\r\n });\r\n this.verify = verifier(this)({\r\n types : types,\r\n util : util\r\n });\r\n this.fromObject = converter.fromObject(this)({\r\n types : types,\r\n util : util\r\n });\r\n this.toObject = converter.toObject(this)({\r\n types : types,\r\n util : util\r\n });\r\n\r\n // Inject custom wrappers for common types\r\n var wrapper = wrappers[fullName];\r\n if (wrapper) {\r\n var originalThis = Object.create(this);\r\n // if (wrapper.fromObject) {\r\n originalThis.fromObject = this.fromObject;\r\n this.fromObject = wrapper.fromObject.bind(originalThis);\r\n // }\r\n // if (wrapper.toObject) {\r\n originalThis.toObject = this.toObject;\r\n this.toObject = wrapper.toObject.bind(originalThis);\r\n // }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Encodes a message of this type. Does not implicitly {@link Type#verify|verify} messages.\r\n * @param {Message<{}>|Object.} message Message instance or plain object\r\n * @param {Writer} [writer] Writer to encode to\r\n * @returns {Writer} writer\r\n */\r\nType.prototype.encode = function encode_setup(message, writer) {\r\n return this.setup().encode(message, writer); // overrides this method\r\n};\r\n\r\n/**\r\n * Encodes a message of this type preceeded by its byte length as a varint. Does not implicitly {@link Type#verify|verify} messages.\r\n * @param {Message<{}>|Object.} message Message instance or plain object\r\n * @param {Writer} [writer] Writer to encode to\r\n * @returns {Writer} writer\r\n */\r\nType.prototype.encodeDelimited = function encodeDelimited(message, writer) {\r\n return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim();\r\n};\r\n\r\n/**\r\n * Decodes a message of this type.\r\n * @param {Reader|Uint8Array} reader Reader or buffer to decode from\r\n * @param {number} [length] Length of the message, if known beforehand\r\n * @returns {Message<{}>} Decoded message\r\n * @throws {Error} If the payload is not a reader or valid buffer\r\n * @throws {util.ProtocolError<{}>} If required fields are missing\r\n */\r\nType.prototype.decode = function decode_setup(reader, length) {\r\n return this.setup().decode(reader, length); // overrides this method\r\n};\r\n\r\n/**\r\n * Decodes a message of this type preceeded by its byte length as a varint.\r\n * @param {Reader|Uint8Array} reader Reader or buffer to decode from\r\n * @returns {Message<{}>} Decoded message\r\n * @throws {Error} If the payload is not a reader or valid buffer\r\n * @throws {util.ProtocolError} If required fields are missing\r\n */\r\nType.prototype.decodeDelimited = function decodeDelimited(reader) {\r\n if (!(reader instanceof Reader))\r\n reader = Reader.create(reader);\r\n return this.decode(reader, reader.uint32());\r\n};\r\n\r\n/**\r\n * Verifies that field values are valid and that required fields are present.\r\n * @param {Object.} message Plain object to verify\r\n * @returns {null|string} `null` if valid, otherwise the reason why it is not\r\n */\r\nType.prototype.verify = function verify_setup(message) {\r\n return this.setup().verify(message); // overrides this method\r\n};\r\n\r\n/**\r\n * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * @param {Object.} object Plain object to convert\r\n * @returns {Message<{}>} Message instance\r\n */\r\nType.prototype.fromObject = function fromObject(object) {\r\n return this.setup().fromObject(object);\r\n};\r\n\r\n/**\r\n * Conversion options as used by {@link Type#toObject} and {@link Message.toObject}.\r\n * @interface IConversionOptions\r\n * @property {Function} [longs] Long conversion type.\r\n * Valid values are `String` and `Number` (the global types).\r\n * Defaults to copy the present value, which is a possibly unsafe number without and a {@link Long} with a long library.\r\n * @property {Function} [enums] Enum value conversion type.\r\n * Only valid value is `String` (the global type).\r\n * Defaults to copy the present value, which is the numeric id.\r\n * @property {Function} [bytes] Bytes value conversion type.\r\n * Valid values are `Array` and (a base64 encoded) `String` (the global types).\r\n * Defaults to copy the present value, which usually is a Buffer under node and an Uint8Array in the browser.\r\n * @property {boolean} [defaults=false] Also sets default values on the resulting object\r\n * @property {boolean} [arrays=false] Sets empty arrays for missing repeated fields even if `defaults=false`\r\n * @property {boolean} [objects=false] Sets empty objects for missing map fields even if `defaults=false`\r\n * @property {boolean} [oneofs=false] Includes virtual oneof properties set to the present field's name, if any\r\n * @property {boolean} [json=false] Performs additional JSON compatibility conversions, i.e. NaN and Infinity to strings\r\n */\r\n\r\n/**\r\n * Creates a plain object from a message of this type. Also converts values to other types if specified.\r\n * @param {Message<{}>} message Message instance\r\n * @param {IConversionOptions} [options] Conversion options\r\n * @returns {Object.} Plain object\r\n */\r\nType.prototype.toObject = function toObject(message, options) {\r\n return this.setup().toObject(message, options);\r\n};\r\n\r\n/**\r\n * Decorator function as returned by {@link Type.d} (TypeScript).\r\n * @typedef TypeDecorator\r\n * @type {function}\r\n * @param {Constructor} target Target constructor\r\n * @returns {undefined}\r\n * @template T extends Message\r\n */\r\n\r\n/**\r\n * Type decorator (TypeScript).\r\n * @param {string} [typeName] Type name, defaults to the constructor's name\r\n * @returns {TypeDecorator} Decorator function\r\n * @template T extends Message\r\n */\r\nType.d = function decorateType(typeName) {\r\n return function typeDecorator(target) {\r\n util.decorateType(target, typeName);\r\n };\r\n};\r\n","\"use strict\";\r\n\r\n/**\r\n * Common type constants.\r\n * @namespace\r\n */\r\nvar types = exports;\r\n\r\nvar util = require(\"./util\");\r\n\r\nvar s = [\r\n \"double\", // 0\r\n \"float\", // 1\r\n \"int32\", // 2\r\n \"uint32\", // 3\r\n \"sint32\", // 4\r\n \"fixed32\", // 5\r\n \"sfixed32\", // 6\r\n \"int64\", // 7\r\n \"uint64\", // 8\r\n \"sint64\", // 9\r\n \"fixed64\", // 10\r\n \"sfixed64\", // 11\r\n \"bool\", // 12\r\n \"string\", // 13\r\n \"bytes\" // 14\r\n];\r\n\r\nfunction bake(values, offset) {\r\n var i = 0, o = {};\r\n offset |= 0;\r\n while (i < values.length) o[s[i + offset]] = values[i++];\r\n return o;\r\n}\r\n\r\n/**\r\n * Basic type wire types.\r\n * @type {Object.}\r\n * @const\r\n * @property {number} double=1 Fixed64 wire type\r\n * @property {number} float=5 Fixed32 wire type\r\n * @property {number} int32=0 Varint wire type\r\n * @property {number} uint32=0 Varint wire type\r\n * @property {number} sint32=0 Varint wire type\r\n * @property {number} fixed32=5 Fixed32 wire type\r\n * @property {number} sfixed32=5 Fixed32 wire type\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n * @property {number} bool=0 Varint wire type\r\n * @property {number} string=2 Ldelim wire type\r\n * @property {number} bytes=2 Ldelim wire type\r\n */\r\ntypes.basic = bake([\r\n /* double */ 1,\r\n /* float */ 5,\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 5,\r\n /* sfixed32 */ 5,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1,\r\n /* bool */ 0,\r\n /* string */ 2,\r\n /* bytes */ 2\r\n]);\r\n\r\n/**\r\n * Basic type defaults.\r\n * @type {Object.}\r\n * @const\r\n * @property {number} double=0 Double default\r\n * @property {number} float=0 Float default\r\n * @property {number} int32=0 Int32 default\r\n * @property {number} uint32=0 Uint32 default\r\n * @property {number} sint32=0 Sint32 default\r\n * @property {number} fixed32=0 Fixed32 default\r\n * @property {number} sfixed32=0 Sfixed32 default\r\n * @property {number} int64=0 Int64 default\r\n * @property {number} uint64=0 Uint64 default\r\n * @property {number} sint64=0 Sint32 default\r\n * @property {number} fixed64=0 Fixed64 default\r\n * @property {number} sfixed64=0 Sfixed64 default\r\n * @property {boolean} bool=false Bool default\r\n * @property {string} string=\"\" String default\r\n * @property {Array.} bytes=Array(0) Bytes default\r\n * @property {null} message=null Message default\r\n */\r\ntypes.defaults = bake([\r\n /* double */ 0,\r\n /* float */ 0,\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 0,\r\n /* sfixed32 */ 0,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 0,\r\n /* sfixed64 */ 0,\r\n /* bool */ false,\r\n /* string */ \"\",\r\n /* bytes */ util.emptyArray,\r\n /* message */ null\r\n]);\r\n\r\n/**\r\n * Basic long type wire types.\r\n * @type {Object.}\r\n * @const\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n */\r\ntypes.long = bake([\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1\r\n], 7);\r\n\r\n/**\r\n * Allowed types for map keys with their associated wire type.\r\n * @type {Object.}\r\n * @const\r\n * @property {number} int32=0 Varint wire type\r\n * @property {number} uint32=0 Varint wire type\r\n * @property {number} sint32=0 Varint wire type\r\n * @property {number} fixed32=5 Fixed32 wire type\r\n * @property {number} sfixed32=5 Fixed32 wire type\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n * @property {number} bool=0 Varint wire type\r\n * @property {number} string=2 Ldelim wire type\r\n */\r\ntypes.mapKey = bake([\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 5,\r\n /* sfixed32 */ 5,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1,\r\n /* bool */ 0,\r\n /* string */ 2\r\n], 2);\r\n\r\n/**\r\n * Allowed types for packed repeated fields with their associated wire type.\r\n * @type {Object.}\r\n * @const\r\n * @property {number} double=1 Fixed64 wire type\r\n * @property {number} float=5 Fixed32 wire type\r\n * @property {number} int32=0 Varint wire type\r\n * @property {number} uint32=0 Varint wire type\r\n * @property {number} sint32=0 Varint wire type\r\n * @property {number} fixed32=5 Fixed32 wire type\r\n * @property {number} sfixed32=5 Fixed32 wire type\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n * @property {number} bool=0 Varint wire type\r\n */\r\ntypes.packed = bake([\r\n /* double */ 1,\r\n /* float */ 5,\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 5,\r\n /* sfixed32 */ 5,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1,\r\n /* bool */ 0\r\n]);\r\n","\"use strict\";\r\n\r\n/**\r\n * Various utility functions.\r\n * @namespace\r\n */\r\nvar util = module.exports = require(\"./util/minimal\");\r\n\r\nvar roots = require(\"./roots\");\r\n\r\nvar Type, // cyclic\r\n Enum;\r\n\r\nutil.codegen = require(\"@protobufjs/codegen\");\r\nutil.fetch = require(\"@protobufjs/fetch\");\r\nutil.path = require(\"@protobufjs/path\");\r\n\r\n/**\r\n * Node's fs module if available.\r\n * @type {Object.}\r\n */\r\nutil.fs = util.inquire(\"fs\");\r\n\r\n/**\r\n * Converts an object's values to an array.\r\n * @param {Object.} object Object to convert\r\n * @returns {Array.<*>} Converted array\r\n */\r\nutil.toArray = function toArray(object) {\r\n if (object) {\r\n var keys = Object.keys(object),\r\n array = new Array(keys.length),\r\n index = 0;\r\n while (index < keys.length)\r\n array[index] = object[keys[index++]];\r\n return array;\r\n }\r\n return [];\r\n};\r\n\r\n/**\r\n * Converts an array of keys immediately followed by their respective value to an object, omitting undefined values.\r\n * @param {Array.<*>} array Array to convert\r\n * @returns {Object.} Converted object\r\n */\r\nutil.toObject = function toObject(array) {\r\n var object = {},\r\n index = 0;\r\n while (index < array.length) {\r\n var key = array[index++],\r\n val = array[index++];\r\n if (val !== undefined)\r\n object[key] = val;\r\n }\r\n return object;\r\n};\r\n\r\nvar safePropBackslashRe = /\\\\/g,\r\n safePropQuoteRe = /\"/g;\r\n\r\n/**\r\n * Tests whether the specified name is a reserved word in JS.\r\n * @param {string} name Name to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nutil.isReserved = function isReserved(name) {\r\n return /^(?:do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)$/.test(name);\r\n};\r\n\r\n/**\r\n * Returns a safe property accessor for the specified property name.\r\n * @param {string} prop Property name\r\n * @returns {string} Safe accessor\r\n */\r\nutil.safeProp = function safeProp(prop) {\r\n if (!/^[$\\w_]+$/.test(prop) || util.isReserved(prop))\r\n return \"[\\\"\" + prop.replace(safePropBackslashRe, \"\\\\\\\\\").replace(safePropQuoteRe, \"\\\\\\\"\") + \"\\\"]\";\r\n return \".\" + prop;\r\n};\r\n\r\n/**\r\n * Converts the first character of a string to upper case.\r\n * @param {string} str String to convert\r\n * @returns {string} Converted string\r\n */\r\nutil.ucFirst = function ucFirst(str) {\r\n return str.charAt(0).toUpperCase() + str.substring(1);\r\n};\r\n\r\nvar camelCaseRe = /_([a-z])/g;\r\n\r\n/**\r\n * Converts a string to camel case.\r\n * @param {string} str String to convert\r\n * @returns {string} Converted string\r\n */\r\nutil.camelCase = function camelCase(str) {\r\n return str.substring(0, 1)\r\n + str.substring(1)\r\n .replace(camelCaseRe, function($0, $1) { return $1.toUpperCase(); });\r\n};\r\n\r\n/**\r\n * Compares reflected fields by id.\r\n * @param {Field} a First field\r\n * @param {Field} b Second field\r\n * @returns {number} Comparison value\r\n */\r\nutil.compareFieldsById = function compareFieldsById(a, b) {\r\n return a.id - b.id;\r\n};\r\n\r\n/**\r\n * Decorator helper for types (TypeScript).\r\n * @param {Constructor} ctor Constructor function\r\n * @param {string} [typeName] Type name, defaults to the constructor's name\r\n * @returns {Type} Reflected type\r\n * @template T extends Message\r\n * @property {Root} root Decorators root\r\n */\r\nutil.decorateType = function decorateType(ctor, typeName) {\r\n\r\n /* istanbul ignore if */\r\n if (ctor.$type) {\r\n if (typeName && ctor.$type.name !== typeName) {\r\n util.decorateRoot.remove(ctor.$type);\r\n ctor.$type.name = typeName;\r\n util.decorateRoot.add(ctor.$type);\r\n }\r\n return ctor.$type;\r\n }\r\n\r\n /* istanbul ignore next */\r\n if (!Type)\r\n Type = require(\"./type\");\r\n\r\n var type = new Type(typeName || ctor.name);\r\n util.decorateRoot.add(type);\r\n type.ctor = ctor; // sets up .encode, .decode etc.\r\n Object.defineProperty(ctor, \"$type\", { value: type, enumerable: false });\r\n Object.defineProperty(ctor.prototype, \"$type\", { value: type, enumerable: false });\r\n return type;\r\n};\r\n\r\nvar decorateEnumIndex = 0;\r\n\r\n/**\r\n * Decorator helper for enums (TypeScript).\r\n * @param {Object} object Enum object\r\n * @returns {Enum} Reflected enum\r\n */\r\nutil.decorateEnum = function decorateEnum(object) {\r\n\r\n /* istanbul ignore if */\r\n if (object.$type)\r\n return object.$type;\r\n\r\n /* istanbul ignore next */\r\n if (!Enum)\r\n Enum = require(\"./enum\");\r\n\r\n var enm = new Enum(\"Enum\" + decorateEnumIndex++, object);\r\n util.decorateRoot.add(enm);\r\n Object.defineProperty(object, \"$type\", { value: enm, enumerable: false });\r\n return enm;\r\n};\r\n\r\n\r\n/**\r\n * Sets the value of a property by property path. If a value already exists, it is turned to an array\r\n * @param {Object.} dst Destination object\r\n * @param {string} path dot '.' delimited path of the property to set\r\n * @param {Object} value the value to set\r\n * @returns {Object.} Destination object\r\n */\r\nutil.setProperty = function setProperty(dst, path, value) {\r\n function setProp(dst, path, value) {\r\n var part = path.shift();\r\n if (part === \"__proto__\" || part === \"prototype\") {\r\n return dst;\r\n }\r\n if (path.length > 0) {\r\n dst[part] = setProp(dst[part] || {}, path, value);\r\n } else {\r\n var prevValue = dst[part];\r\n if (prevValue)\r\n value = [].concat(prevValue).concat(value);\r\n dst[part] = value;\r\n }\r\n return dst;\r\n }\r\n\r\n if (typeof dst !== \"object\")\r\n throw TypeError(\"dst must be an object\");\r\n if (!path)\r\n throw TypeError(\"path must be specified\");\r\n\r\n path = path.split(\".\");\r\n return setProp(dst, path, value);\r\n};\r\n\r\n/**\r\n * Decorator root (TypeScript).\r\n * @name util.decorateRoot\r\n * @type {Root}\r\n * @readonly\r\n */\r\nObject.defineProperty(util, \"decorateRoot\", {\r\n get: function() {\r\n return roots[\"decorated\"] || (roots[\"decorated\"] = new (require(\"./root\"))());\r\n }\r\n});\r\n","\"use strict\";\r\nmodule.exports = LongBits;\r\n\r\nvar util = require(\"../util/minimal\");\r\n\r\n/**\r\n * Constructs new long bits.\r\n * @classdesc Helper class for working with the low and high bits of a 64 bit value.\r\n * @memberof util\r\n * @constructor\r\n * @param {number} lo Low 32 bits, unsigned\r\n * @param {number} hi High 32 bits, unsigned\r\n */\r\nfunction LongBits(lo, hi) {\r\n\r\n // note that the casts below are theoretically unnecessary as of today, but older statically\r\n // generated converter code might still call the ctor with signed 32bits. kept for compat.\r\n\r\n /**\r\n * Low bits.\r\n * @type {number}\r\n */\r\n this.lo = lo >>> 0;\r\n\r\n /**\r\n * High bits.\r\n * @type {number}\r\n */\r\n this.hi = hi >>> 0;\r\n}\r\n\r\n/**\r\n * Zero bits.\r\n * @memberof util.LongBits\r\n * @type {util.LongBits}\r\n */\r\nvar zero = LongBits.zero = new LongBits(0, 0);\r\n\r\nzero.toNumber = function() { return 0; };\r\nzero.zzEncode = zero.zzDecode = function() { return this; };\r\nzero.length = function() { return 1; };\r\n\r\n/**\r\n * Zero hash.\r\n * @memberof util.LongBits\r\n * @type {string}\r\n */\r\nvar zeroHash = LongBits.zeroHash = \"\\0\\0\\0\\0\\0\\0\\0\\0\";\r\n\r\n/**\r\n * Constructs new long bits from the specified number.\r\n * @param {number} value Value\r\n * @returns {util.LongBits} Instance\r\n */\r\nLongBits.fromNumber = function fromNumber(value) {\r\n if (value === 0)\r\n return zero;\r\n var sign = value < 0;\r\n if (sign)\r\n value = -value;\r\n var lo = value >>> 0,\r\n hi = (value - lo) / 4294967296 >>> 0;\r\n if (sign) {\r\n hi = ~hi >>> 0;\r\n lo = ~lo >>> 0;\r\n if (++lo > 4294967295) {\r\n lo = 0;\r\n if (++hi > 4294967295)\r\n hi = 0;\r\n }\r\n }\r\n return new LongBits(lo, hi);\r\n};\r\n\r\n/**\r\n * Constructs new long bits from a number, long or string.\r\n * @param {Long|number|string} value Value\r\n * @returns {util.LongBits} Instance\r\n */\r\nLongBits.from = function from(value) {\r\n if (typeof value === \"number\")\r\n return LongBits.fromNumber(value);\r\n if (util.isString(value)) {\r\n /* istanbul ignore else */\r\n if (util.Long)\r\n value = util.Long.fromString(value);\r\n else\r\n return LongBits.fromNumber(parseInt(value, 10));\r\n }\r\n return value.low || value.high ? new LongBits(value.low >>> 0, value.high >>> 0) : zero;\r\n};\r\n\r\n/**\r\n * Converts this long bits to a possibly unsafe JavaScript number.\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {number} Possibly unsafe number\r\n */\r\nLongBits.prototype.toNumber = function toNumber(unsigned) {\r\n if (!unsigned && this.hi >>> 31) {\r\n var lo = ~this.lo + 1 >>> 0,\r\n hi = ~this.hi >>> 0;\r\n if (!lo)\r\n hi = hi + 1 >>> 0;\r\n return -(lo + hi * 4294967296);\r\n }\r\n return this.lo + this.hi * 4294967296;\r\n};\r\n\r\n/**\r\n * Converts this long bits to a long.\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {Long} Long\r\n */\r\nLongBits.prototype.toLong = function toLong(unsigned) {\r\n return util.Long\r\n ? new util.Long(this.lo | 0, this.hi | 0, Boolean(unsigned))\r\n /* istanbul ignore next */\r\n : { low: this.lo | 0, high: this.hi | 0, unsigned: Boolean(unsigned) };\r\n};\r\n\r\nvar charCodeAt = String.prototype.charCodeAt;\r\n\r\n/**\r\n * Constructs new long bits from the specified 8 characters long hash.\r\n * @param {string} hash Hash\r\n * @returns {util.LongBits} Bits\r\n */\r\nLongBits.fromHash = function fromHash(hash) {\r\n if (hash === zeroHash)\r\n return zero;\r\n return new LongBits(\r\n ( charCodeAt.call(hash, 0)\r\n | charCodeAt.call(hash, 1) << 8\r\n | charCodeAt.call(hash, 2) << 16\r\n | charCodeAt.call(hash, 3) << 24) >>> 0\r\n ,\r\n ( charCodeAt.call(hash, 4)\r\n | charCodeAt.call(hash, 5) << 8\r\n | charCodeAt.call(hash, 6) << 16\r\n | charCodeAt.call(hash, 7) << 24) >>> 0\r\n );\r\n};\r\n\r\n/**\r\n * Converts this long bits to a 8 characters long hash.\r\n * @returns {string} Hash\r\n */\r\nLongBits.prototype.toHash = function toHash() {\r\n return String.fromCharCode(\r\n this.lo & 255,\r\n this.lo >>> 8 & 255,\r\n this.lo >>> 16 & 255,\r\n this.lo >>> 24 ,\r\n this.hi & 255,\r\n this.hi >>> 8 & 255,\r\n this.hi >>> 16 & 255,\r\n this.hi >>> 24\r\n );\r\n};\r\n\r\n/**\r\n * Zig-zag encodes this long bits.\r\n * @returns {util.LongBits} `this`\r\n */\r\nLongBits.prototype.zzEncode = function zzEncode() {\r\n var mask = this.hi >> 31;\r\n this.hi = ((this.hi << 1 | this.lo >>> 31) ^ mask) >>> 0;\r\n this.lo = ( this.lo << 1 ^ mask) >>> 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Zig-zag decodes this long bits.\r\n * @returns {util.LongBits} `this`\r\n */\r\nLongBits.prototype.zzDecode = function zzDecode() {\r\n var mask = -(this.lo & 1);\r\n this.lo = ((this.lo >>> 1 | this.hi << 31) ^ mask) >>> 0;\r\n this.hi = ( this.hi >>> 1 ^ mask) >>> 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Calculates the length of this longbits when encoded as a varint.\r\n * @returns {number} Length\r\n */\r\nLongBits.prototype.length = function length() {\r\n var part0 = this.lo,\r\n part1 = (this.lo >>> 28 | this.hi << 4) >>> 0,\r\n part2 = this.hi >>> 24;\r\n return part2 === 0\r\n ? part1 === 0\r\n ? part0 < 16384\r\n ? part0 < 128 ? 1 : 2\r\n : part0 < 2097152 ? 3 : 4\r\n : part1 < 16384\r\n ? part1 < 128 ? 5 : 6\r\n : part1 < 2097152 ? 7 : 8\r\n : part2 < 128 ? 9 : 10;\r\n};\r\n","\"use strict\";\r\nvar util = exports;\r\n\r\n// used to return a Promise where callback is omitted\r\nutil.asPromise = require(\"@protobufjs/aspromise\");\r\n\r\n// converts to / from base64 encoded strings\r\nutil.base64 = require(\"@protobufjs/base64\");\r\n\r\n// base class of rpc.Service\r\nutil.EventEmitter = require(\"@protobufjs/eventemitter\");\r\n\r\n// float handling accross browsers\r\nutil.float = require(\"@protobufjs/float\");\r\n\r\n// requires modules optionally and hides the call from bundlers\r\nutil.inquire = require(\"@protobufjs/inquire\");\r\n\r\n// converts to / from utf8 encoded strings\r\nutil.utf8 = require(\"@protobufjs/utf8\");\r\n\r\n// provides a node-like buffer pool in the browser\r\nutil.pool = require(\"@protobufjs/pool\");\r\n\r\n// utility to work with the low and high bits of a 64 bit value\r\nutil.LongBits = require(\"./longbits\");\r\n\r\n/**\r\n * Whether running within node or not.\r\n * @memberof util\r\n * @type {boolean}\r\n */\r\nutil.isNode = Boolean(typeof global !== \"undefined\"\r\n && global\r\n && global.process\r\n && global.process.versions\r\n && global.process.versions.node);\r\n\r\n/**\r\n * Global object reference.\r\n * @memberof util\r\n * @type {Object}\r\n */\r\nutil.global = util.isNode && global\r\n || typeof window !== \"undefined\" && window\r\n || typeof self !== \"undefined\" && self\r\n || this; // eslint-disable-line no-invalid-this\r\n\r\n/**\r\n * An immuable empty array.\r\n * @memberof util\r\n * @type {Array.<*>}\r\n * @const\r\n */\r\nutil.emptyArray = Object.freeze ? Object.freeze([]) : /* istanbul ignore next */ []; // used on prototypes\r\n\r\n/**\r\n * An immutable empty object.\r\n * @type {Object}\r\n * @const\r\n */\r\nutil.emptyObject = Object.freeze ? Object.freeze({}) : /* istanbul ignore next */ {}; // used on prototypes\r\n\r\n/**\r\n * Tests if the specified value is an integer.\r\n * @function\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is an integer\r\n */\r\nutil.isInteger = Number.isInteger || /* istanbul ignore next */ function isInteger(value) {\r\n return typeof value === \"number\" && isFinite(value) && Math.floor(value) === value;\r\n};\r\n\r\n/**\r\n * Tests if the specified value is a string.\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is a string\r\n */\r\nutil.isString = function isString(value) {\r\n return typeof value === \"string\" || value instanceof String;\r\n};\r\n\r\n/**\r\n * Tests if the specified value is a non-null object.\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is a non-null object\r\n */\r\nutil.isObject = function isObject(value) {\r\n return value && typeof value === \"object\";\r\n};\r\n\r\n/**\r\n * Checks if a property on a message is considered to be present.\r\n * This is an alias of {@link util.isSet}.\r\n * @function\r\n * @param {Object} obj Plain object or message instance\r\n * @param {string} prop Property name\r\n * @returns {boolean} `true` if considered to be present, otherwise `false`\r\n */\r\nutil.isset =\r\n\r\n/**\r\n * Checks if a property on a message is considered to be present.\r\n * @param {Object} obj Plain object or message instance\r\n * @param {string} prop Property name\r\n * @returns {boolean} `true` if considered to be present, otherwise `false`\r\n */\r\nutil.isSet = function isSet(obj, prop) {\r\n var value = obj[prop];\r\n if (value != null && obj.hasOwnProperty(prop)) // eslint-disable-line eqeqeq, no-prototype-builtins\r\n return typeof value !== \"object\" || (Array.isArray(value) ? value.length : Object.keys(value).length) > 0;\r\n return false;\r\n};\r\n\r\n/**\r\n * Any compatible Buffer instance.\r\n * This is a minimal stand-alone definition of a Buffer instance. The actual type is that exported by node's typings.\r\n * @interface Buffer\r\n * @extends Uint8Array\r\n */\r\n\r\n/**\r\n * Node's Buffer class if available.\r\n * @type {Constructor}\r\n */\r\nutil.Buffer = (function() {\r\n try {\r\n var Buffer = util.inquire(\"buffer\").Buffer;\r\n // refuse to use non-node buffers if not explicitly assigned (perf reasons):\r\n return Buffer.prototype.utf8Write ? Buffer : /* istanbul ignore next */ null;\r\n } catch (e) {\r\n /* istanbul ignore next */\r\n return null;\r\n }\r\n})();\r\n\r\n// Internal alias of or polyfull for Buffer.from.\r\nutil._Buffer_from = null;\r\n\r\n// Internal alias of or polyfill for Buffer.allocUnsafe.\r\nutil._Buffer_allocUnsafe = null;\r\n\r\n/**\r\n * Creates a new buffer of whatever type supported by the environment.\r\n * @param {number|number[]} [sizeOrArray=0] Buffer size or number array\r\n * @returns {Uint8Array|Buffer} Buffer\r\n */\r\nutil.newBuffer = function newBuffer(sizeOrArray) {\r\n /* istanbul ignore next */\r\n return typeof sizeOrArray === \"number\"\r\n ? util.Buffer\r\n ? util._Buffer_allocUnsafe(sizeOrArray)\r\n : new util.Array(sizeOrArray)\r\n : util.Buffer\r\n ? util._Buffer_from(sizeOrArray)\r\n : typeof Uint8Array === \"undefined\"\r\n ? sizeOrArray\r\n : new Uint8Array(sizeOrArray);\r\n};\r\n\r\n/**\r\n * Array implementation used in the browser. `Uint8Array` if supported, otherwise `Array`.\r\n * @type {Constructor}\r\n */\r\nutil.Array = typeof Uint8Array !== \"undefined\" ? Uint8Array /* istanbul ignore next */ : Array;\r\n\r\n/**\r\n * Any compatible Long instance.\r\n * This is a minimal stand-alone definition of a Long instance. The actual type is that exported by long.js.\r\n * @interface Long\r\n * @property {number} low Low bits\r\n * @property {number} high High bits\r\n * @property {boolean} unsigned Whether unsigned or not\r\n */\r\n\r\n/**\r\n * Long.js's Long class if available.\r\n * @type {Constructor}\r\n */\r\nutil.Long = /* istanbul ignore next */ util.global.dcodeIO && /* istanbul ignore next */ util.global.dcodeIO.Long\r\n || /* istanbul ignore next */ util.global.Long\r\n || util.inquire(\"long\");\r\n\r\n/**\r\n * Regular expression used to verify 2 bit (`bool`) map keys.\r\n * @type {RegExp}\r\n * @const\r\n */\r\nutil.key2Re = /^true|false|0|1$/;\r\n\r\n/**\r\n * Regular expression used to verify 32 bit (`int32` etc.) map keys.\r\n * @type {RegExp}\r\n * @const\r\n */\r\nutil.key32Re = /^-?(?:0|[1-9][0-9]*)$/;\r\n\r\n/**\r\n * Regular expression used to verify 64 bit (`int64` etc.) map keys.\r\n * @type {RegExp}\r\n * @const\r\n */\r\nutil.key64Re = /^(?:[\\\\x00-\\\\xff]{8}|-?(?:0|[1-9][0-9]*))$/;\r\n\r\n/**\r\n * Converts a number or long to an 8 characters long hash string.\r\n * @param {Long|number} value Value to convert\r\n * @returns {string} Hash\r\n */\r\nutil.longToHash = function longToHash(value) {\r\n return value\r\n ? util.LongBits.from(value).toHash()\r\n : util.LongBits.zeroHash;\r\n};\r\n\r\n/**\r\n * Converts an 8 characters long hash string to a long or number.\r\n * @param {string} hash Hash\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {Long|number} Original value\r\n */\r\nutil.longFromHash = function longFromHash(hash, unsigned) {\r\n var bits = util.LongBits.fromHash(hash);\r\n if (util.Long)\r\n return util.Long.fromBits(bits.lo, bits.hi, unsigned);\r\n return bits.toNumber(Boolean(unsigned));\r\n};\r\n\r\n/**\r\n * Merges the properties of the source object into the destination object.\r\n * @memberof util\r\n * @param {Object.} dst Destination object\r\n * @param {Object.} src Source object\r\n * @param {boolean} [ifNotSet=false] Merges only if the key is not already set\r\n * @returns {Object.} Destination object\r\n */\r\nfunction merge(dst, src, ifNotSet) { // used by converters\r\n for (var keys = Object.keys(src), i = 0; i < keys.length; ++i)\r\n if (dst[keys[i]] === undefined || !ifNotSet)\r\n dst[keys[i]] = src[keys[i]];\r\n return dst;\r\n}\r\n\r\nutil.merge = merge;\r\n\r\n/**\r\n * Converts the first character of a string to lower case.\r\n * @param {string} str String to convert\r\n * @returns {string} Converted string\r\n */\r\nutil.lcFirst = function lcFirst(str) {\r\n return str.charAt(0).toLowerCase() + str.substring(1);\r\n};\r\n\r\n/**\r\n * Creates a custom error constructor.\r\n * @memberof util\r\n * @param {string} name Error name\r\n * @returns {Constructor} Custom error constructor\r\n */\r\nfunction newError(name) {\r\n\r\n function CustomError(message, properties) {\r\n\r\n if (!(this instanceof CustomError))\r\n return new CustomError(message, properties);\r\n\r\n // Error.call(this, message);\r\n // ^ just returns a new error instance because the ctor can be called as a function\r\n\r\n Object.defineProperty(this, \"message\", { get: function() { return message; } });\r\n\r\n /* istanbul ignore next */\r\n if (Error.captureStackTrace) // node\r\n Error.captureStackTrace(this, CustomError);\r\n else\r\n Object.defineProperty(this, \"stack\", { value: new Error().stack || \"\" });\r\n\r\n if (properties)\r\n merge(this, properties);\r\n }\r\n\r\n CustomError.prototype = Object.create(Error.prototype, {\r\n constructor: {\r\n value: CustomError,\r\n writable: true,\r\n enumerable: false,\r\n configurable: true,\r\n },\r\n name: {\r\n get: function get() { return name; },\r\n set: undefined,\r\n enumerable: false,\r\n // configurable: false would accurately preserve the behavior of\r\n // the original, but I'm guessing that was not intentional.\r\n // For an actual error subclass, this property would\r\n // be configurable.\r\n configurable: true,\r\n },\r\n toString: {\r\n value: function value() { return this.name + \": \" + this.message; },\r\n writable: true,\r\n enumerable: false,\r\n configurable: true,\r\n },\r\n });\r\n\r\n return CustomError;\r\n}\r\n\r\nutil.newError = newError;\r\n\r\n/**\r\n * Constructs a new protocol error.\r\n * @classdesc Error subclass indicating a protocol specifc error.\r\n * @memberof util\r\n * @extends Error\r\n * @template T extends Message\r\n * @constructor\r\n * @param {string} message Error message\r\n * @param {Object.} [properties] Additional properties\r\n * @example\r\n * try {\r\n * MyMessage.decode(someBuffer); // throws if required fields are missing\r\n * } catch (e) {\r\n * if (e instanceof ProtocolError && e.instance)\r\n * console.log(\"decoded so far: \" + JSON.stringify(e.instance));\r\n * }\r\n */\r\nutil.ProtocolError = newError(\"ProtocolError\");\r\n\r\n/**\r\n * So far decoded message instance.\r\n * @name util.ProtocolError#instance\r\n * @type {Message}\r\n */\r\n\r\n/**\r\n * A OneOf getter as returned by {@link util.oneOfGetter}.\r\n * @typedef OneOfGetter\r\n * @type {function}\r\n * @returns {string|undefined} Set field name, if any\r\n */\r\n\r\n/**\r\n * Builds a getter for a oneof's present field name.\r\n * @param {string[]} fieldNames Field names\r\n * @returns {OneOfGetter} Unbound getter\r\n */\r\nutil.oneOfGetter = function getOneOf(fieldNames) {\r\n var fieldMap = {};\r\n for (var i = 0; i < fieldNames.length; ++i)\r\n fieldMap[fieldNames[i]] = 1;\r\n\r\n /**\r\n * @returns {string|undefined} Set field name, if any\r\n * @this Object\r\n * @ignore\r\n */\r\n return function() { // eslint-disable-line consistent-return\r\n for (var keys = Object.keys(this), i = keys.length - 1; i > -1; --i)\r\n if (fieldMap[keys[i]] === 1 && this[keys[i]] !== undefined && this[keys[i]] !== null)\r\n return keys[i];\r\n };\r\n};\r\n\r\n/**\r\n * A OneOf setter as returned by {@link util.oneOfSetter}.\r\n * @typedef OneOfSetter\r\n * @type {function}\r\n * @param {string|undefined} value Field name\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Builds a setter for a oneof's present field name.\r\n * @param {string[]} fieldNames Field names\r\n * @returns {OneOfSetter} Unbound setter\r\n */\r\nutil.oneOfSetter = function setOneOf(fieldNames) {\r\n\r\n /**\r\n * @param {string} name Field name\r\n * @returns {undefined}\r\n * @this Object\r\n * @ignore\r\n */\r\n return function(name) {\r\n for (var i = 0; i < fieldNames.length; ++i)\r\n if (fieldNames[i] !== name)\r\n delete this[fieldNames[i]];\r\n };\r\n};\r\n\r\n/**\r\n * Default conversion options used for {@link Message#toJSON} implementations.\r\n *\r\n * These options are close to proto3's JSON mapping with the exception that internal types like Any are handled just like messages. More precisely:\r\n *\r\n * - Longs become strings\r\n * - Enums become string keys\r\n * - Bytes become base64 encoded strings\r\n * - (Sub-)Messages become plain objects\r\n * - Maps become plain objects with all string keys\r\n * - Repeated fields become arrays\r\n * - NaN and Infinity for float and double fields become strings\r\n *\r\n * @type {IConversionOptions}\r\n * @see https://developers.google.com/protocol-buffers/docs/proto3?hl=en#json\r\n */\r\nutil.toJSONOptions = {\r\n longs: String,\r\n enums: String,\r\n bytes: String,\r\n json: true\r\n};\r\n\r\n// Sets up buffer utility according to the environment (called in index-minimal)\r\nutil._configure = function() {\r\n var Buffer = util.Buffer;\r\n /* istanbul ignore if */\r\n if (!Buffer) {\r\n util._Buffer_from = util._Buffer_allocUnsafe = null;\r\n return;\r\n }\r\n // because node 4.x buffers are incompatible & immutable\r\n // see: https://github.com/dcodeIO/protobuf.js/pull/665\r\n util._Buffer_from = Buffer.from !== Uint8Array.from && Buffer.from ||\r\n /* istanbul ignore next */\r\n function Buffer_from(value, encoding) {\r\n return new Buffer(value, encoding);\r\n };\r\n util._Buffer_allocUnsafe = Buffer.allocUnsafe ||\r\n /* istanbul ignore next */\r\n function Buffer_allocUnsafe(size) {\r\n return new Buffer(size);\r\n };\r\n};\r\n","\"use strict\";\r\nmodule.exports = verifier;\r\n\r\nvar Enum = require(\"./enum\"),\r\n util = require(\"./util\");\r\n\r\nfunction invalid(field, expected) {\r\n return field.name + \": \" + expected + (field.repeated && expected !== \"array\" ? \"[]\" : field.map && expected !== \"object\" ? \"{k:\"+field.keyType+\"}\" : \"\") + \" expected\";\r\n}\r\n\r\n/**\r\n * Generates a partial value verifier.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {number} fieldIndex Field index\r\n * @param {string} ref Variable reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genVerifyValue(gen, field, fieldIndex, ref) {\r\n /* eslint-disable no-unexpected-multiline */\r\n if (field.resolvedType) {\r\n if (field.resolvedType instanceof Enum) { gen\r\n (\"switch(%s){\", ref)\r\n (\"default:\")\r\n (\"return%j\", invalid(field, \"enum value\"));\r\n for (var keys = Object.keys(field.resolvedType.values), j = 0; j < keys.length; ++j) gen\r\n (\"case %i:\", field.resolvedType.values[keys[j]]);\r\n gen\r\n (\"break\")\r\n (\"}\");\r\n } else {\r\n gen\r\n (\"{\")\r\n (\"var e=types[%i].verify(%s);\", fieldIndex, ref)\r\n (\"if(e)\")\r\n (\"return%j+e\", field.name + \".\")\r\n (\"}\");\r\n }\r\n } else {\r\n switch (field.type) {\r\n case \"int32\":\r\n case \"uint32\":\r\n case \"sint32\":\r\n case \"fixed32\":\r\n case \"sfixed32\": gen\r\n (\"if(!util.isInteger(%s))\", ref)\r\n (\"return%j\", invalid(field, \"integer\"));\r\n break;\r\n case \"int64\":\r\n case \"uint64\":\r\n case \"sint64\":\r\n case \"fixed64\":\r\n case \"sfixed64\": gen\r\n (\"if(!util.isInteger(%s)&&!(%s&&util.isInteger(%s.low)&&util.isInteger(%s.high)))\", ref, ref, ref, ref)\r\n (\"return%j\", invalid(field, \"integer|Long\"));\r\n break;\r\n case \"float\":\r\n case \"double\": gen\r\n (\"if(typeof %s!==\\\"number\\\")\", ref)\r\n (\"return%j\", invalid(field, \"number\"));\r\n break;\r\n case \"bool\": gen\r\n (\"if(typeof %s!==\\\"boolean\\\")\", ref)\r\n (\"return%j\", invalid(field, \"boolean\"));\r\n break;\r\n case \"string\": gen\r\n (\"if(!util.isString(%s))\", ref)\r\n (\"return%j\", invalid(field, \"string\"));\r\n break;\r\n case \"bytes\": gen\r\n (\"if(!(%s&&typeof %s.length===\\\"number\\\"||util.isString(%s)))\", ref, ref, ref)\r\n (\"return%j\", invalid(field, \"buffer\"));\r\n break;\r\n }\r\n }\r\n return gen;\r\n /* eslint-enable no-unexpected-multiline */\r\n}\r\n\r\n/**\r\n * Generates a partial key verifier.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {string} ref Variable reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genVerifyKey(gen, field, ref) {\r\n /* eslint-disable no-unexpected-multiline */\r\n switch (field.keyType) {\r\n case \"int32\":\r\n case \"uint32\":\r\n case \"sint32\":\r\n case \"fixed32\":\r\n case \"sfixed32\": gen\r\n (\"if(!util.key32Re.test(%s))\", ref)\r\n (\"return%j\", invalid(field, \"integer key\"));\r\n break;\r\n case \"int64\":\r\n case \"uint64\":\r\n case \"sint64\":\r\n case \"fixed64\":\r\n case \"sfixed64\": gen\r\n (\"if(!util.key64Re.test(%s))\", ref) // see comment above: x is ok, d is not\r\n (\"return%j\", invalid(field, \"integer|Long key\"));\r\n break;\r\n case \"bool\": gen\r\n (\"if(!util.key2Re.test(%s))\", ref)\r\n (\"return%j\", invalid(field, \"boolean key\"));\r\n break;\r\n }\r\n return gen;\r\n /* eslint-enable no-unexpected-multiline */\r\n}\r\n\r\n/**\r\n * Generates a verifier specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nfunction verifier(mtype) {\r\n /* eslint-disable no-unexpected-multiline */\r\n\r\n var gen = util.codegen([\"m\"], mtype.name + \"$verify\")\r\n (\"if(typeof m!==\\\"object\\\"||m===null)\")\r\n (\"return%j\", \"object expected\");\r\n var oneofs = mtype.oneofsArray,\r\n seenFirstField = {};\r\n if (oneofs.length) gen\r\n (\"var p={}\");\r\n\r\n for (var i = 0; i < /* initializes */ mtype.fieldsArray.length; ++i) {\r\n var field = mtype._fieldsArray[i].resolve(),\r\n ref = \"m\" + util.safeProp(field.name);\r\n\r\n if (field.optional) gen\r\n (\"if(%s!=null&&m.hasOwnProperty(%j)){\", ref, field.name); // !== undefined && !== null\r\n\r\n // map fields\r\n if (field.map) { gen\r\n (\"if(!util.isObject(%s))\", ref)\r\n (\"return%j\", invalid(field, \"object\"))\r\n (\"var k=Object.keys(%s)\", ref)\r\n (\"for(var i=0;i}\r\n * @const\r\n */\r\nvar wrappers = exports;\r\n\r\nvar Message = require(\"./message\");\r\n\r\n/**\r\n * From object converter part of an {@link IWrapper}.\r\n * @typedef WrapperFromObjectConverter\r\n * @type {function}\r\n * @param {Object.} object Plain object\r\n * @returns {Message<{}>} Message instance\r\n * @this Type\r\n */\r\n\r\n/**\r\n * To object converter part of an {@link IWrapper}.\r\n * @typedef WrapperToObjectConverter\r\n * @type {function}\r\n * @param {Message<{}>} message Message instance\r\n * @param {IConversionOptions} [options] Conversion options\r\n * @returns {Object.} Plain object\r\n * @this Type\r\n */\r\n\r\n/**\r\n * Common type wrapper part of {@link wrappers}.\r\n * @interface IWrapper\r\n * @property {WrapperFromObjectConverter} [fromObject] From object converter\r\n * @property {WrapperToObjectConverter} [toObject] To object converter\r\n */\r\n\r\n// Custom wrapper for Any\r\nwrappers[\".google.protobuf.Any\"] = {\r\n\r\n fromObject: function(object) {\r\n\r\n // unwrap value type if mapped\r\n if (object && object[\"@type\"]) {\r\n // Only use fully qualified type name after the last '/'\r\n var name = object[\"@type\"].substring(object[\"@type\"].lastIndexOf(\"/\") + 1);\r\n var type = this.lookup(name);\r\n /* istanbul ignore else */\r\n if (type) {\r\n // type_url does not accept leading \".\"\r\n var type_url = object[\"@type\"].charAt(0) === \".\" ?\r\n object[\"@type\"].slice(1) : object[\"@type\"];\r\n // type_url prefix is optional, but path seperator is required\r\n if (type_url.indexOf(\"/\") === -1) {\r\n type_url = \"/\" + type_url;\r\n }\r\n return this.create({\r\n type_url: type_url,\r\n value: type.encode(type.fromObject(object)).finish()\r\n });\r\n }\r\n }\r\n\r\n return this.fromObject(object);\r\n },\r\n\r\n toObject: function(message, options) {\r\n\r\n // Default prefix\r\n var googleApi = \"type.googleapis.com/\";\r\n var prefix = \"\";\r\n var name = \"\";\r\n\r\n // decode value if requested and unmapped\r\n if (options && options.json && message.type_url && message.value) {\r\n // Only use fully qualified type name after the last '/'\r\n name = message.type_url.substring(message.type_url.lastIndexOf(\"/\") + 1);\r\n // Separate the prefix used\r\n prefix = message.type_url.substring(0, message.type_url.lastIndexOf(\"/\") + 1);\r\n var type = this.lookup(name);\r\n /* istanbul ignore else */\r\n if (type)\r\n message = type.decode(message.value);\r\n }\r\n\r\n // wrap value if unmapped\r\n if (!(message instanceof this.ctor) && message instanceof Message) {\r\n var object = message.$type.toObject(message, options);\r\n var messageName = message.$type.fullName[0] === \".\" ?\r\n message.$type.fullName.slice(1) : message.$type.fullName;\r\n // Default to type.googleapis.com prefix if no prefix is used\r\n if (prefix === \"\") {\r\n prefix = googleApi;\r\n }\r\n name = prefix + messageName;\r\n object[\"@type\"] = name;\r\n return object;\r\n }\r\n\r\n return this.toObject(message, options);\r\n }\r\n};\r\n","\"use strict\";\r\nmodule.exports = Writer;\r\n\r\nvar util = require(\"./util/minimal\");\r\n\r\nvar BufferWriter; // cyclic\r\n\r\nvar LongBits = util.LongBits,\r\n base64 = util.base64,\r\n utf8 = util.utf8;\r\n\r\n/**\r\n * Constructs a new writer operation instance.\r\n * @classdesc Scheduled writer operation.\r\n * @constructor\r\n * @param {function(*, Uint8Array, number)} fn Function to call\r\n * @param {number} len Value byte length\r\n * @param {*} val Value to write\r\n * @ignore\r\n */\r\nfunction Op(fn, len, val) {\r\n\r\n /**\r\n * Function to call.\r\n * @type {function(Uint8Array, number, *)}\r\n */\r\n this.fn = fn;\r\n\r\n /**\r\n * Value byte length.\r\n * @type {number}\r\n */\r\n this.len = len;\r\n\r\n /**\r\n * Next operation.\r\n * @type {Writer.Op|undefined}\r\n */\r\n this.next = undefined;\r\n\r\n /**\r\n * Value to write.\r\n * @type {*}\r\n */\r\n this.val = val; // type varies\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction noop() {} // eslint-disable-line no-empty-function\r\n\r\n/**\r\n * Constructs a new writer state instance.\r\n * @classdesc Copied writer state.\r\n * @memberof Writer\r\n * @constructor\r\n * @param {Writer} writer Writer to copy state from\r\n * @ignore\r\n */\r\nfunction State(writer) {\r\n\r\n /**\r\n * Current head.\r\n * @type {Writer.Op}\r\n */\r\n this.head = writer.head;\r\n\r\n /**\r\n * Current tail.\r\n * @type {Writer.Op}\r\n */\r\n this.tail = writer.tail;\r\n\r\n /**\r\n * Current buffer length.\r\n * @type {number}\r\n */\r\n this.len = writer.len;\r\n\r\n /**\r\n * Next state.\r\n * @type {State|null}\r\n */\r\n this.next = writer.states;\r\n}\r\n\r\n/**\r\n * Constructs a new writer instance.\r\n * @classdesc Wire format writer using `Uint8Array` if available, otherwise `Array`.\r\n * @constructor\r\n */\r\nfunction Writer() {\r\n\r\n /**\r\n * Current length.\r\n * @type {number}\r\n */\r\n this.len = 0;\r\n\r\n /**\r\n * Operations head.\r\n * @type {Object}\r\n */\r\n this.head = new Op(noop, 0, 0);\r\n\r\n /**\r\n * Operations tail\r\n * @type {Object}\r\n */\r\n this.tail = this.head;\r\n\r\n /**\r\n * Linked forked states.\r\n * @type {Object|null}\r\n */\r\n this.states = null;\r\n\r\n // When a value is written, the writer calculates its byte length and puts it into a linked\r\n // list of operations to perform when finish() is called. This both allows us to allocate\r\n // buffers of the exact required size and reduces the amount of work we have to do compared\r\n // to first calculating over objects and then encoding over objects. In our case, the encoding\r\n // part is just a linked list walk calling operations with already prepared values.\r\n}\r\n\r\nvar create = function create() {\r\n return util.Buffer\r\n ? function create_buffer_setup() {\r\n return (Writer.create = function create_buffer() {\r\n return new BufferWriter();\r\n })();\r\n }\r\n /* istanbul ignore next */\r\n : function create_array() {\r\n return new Writer();\r\n };\r\n};\r\n\r\n/**\r\n * Creates a new writer.\r\n * @function\r\n * @returns {BufferWriter|Writer} A {@link BufferWriter} when Buffers are supported, otherwise a {@link Writer}\r\n */\r\nWriter.create = create();\r\n\r\n/**\r\n * Allocates a buffer of the specified size.\r\n * @param {number} size Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\nWriter.alloc = function alloc(size) {\r\n return new util.Array(size);\r\n};\r\n\r\n// Use Uint8Array buffer pool in the browser, just like node does with buffers\r\n/* istanbul ignore else */\r\nif (util.Array !== Array)\r\n Writer.alloc = util.pool(Writer.alloc, util.Array.prototype.subarray);\r\n\r\n/**\r\n * Pushes a new operation to the queue.\r\n * @param {function(Uint8Array, number, *)} fn Function to call\r\n * @param {number} len Value byte length\r\n * @param {number} val Value to write\r\n * @returns {Writer} `this`\r\n * @private\r\n */\r\nWriter.prototype._push = function push(fn, len, val) {\r\n this.tail = this.tail.next = new Op(fn, len, val);\r\n this.len += len;\r\n return this;\r\n};\r\n\r\nfunction writeByte(val, buf, pos) {\r\n buf[pos] = val & 255;\r\n}\r\n\r\nfunction writeVarint32(val, buf, pos) {\r\n while (val > 127) {\r\n buf[pos++] = val & 127 | 128;\r\n val >>>= 7;\r\n }\r\n buf[pos] = val;\r\n}\r\n\r\n/**\r\n * Constructs a new varint writer operation instance.\r\n * @classdesc Scheduled varint writer operation.\r\n * @extends Op\r\n * @constructor\r\n * @param {number} len Value byte length\r\n * @param {number} val Value to write\r\n * @ignore\r\n */\r\nfunction VarintOp(len, val) {\r\n this.len = len;\r\n this.next = undefined;\r\n this.val = val;\r\n}\r\n\r\nVarintOp.prototype = Object.create(Op.prototype);\r\nVarintOp.prototype.fn = writeVarint32;\r\n\r\n/**\r\n * Writes an unsigned 32 bit value as a varint.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.uint32 = function write_uint32(value) {\r\n // here, the call to this.push has been inlined and a varint specific Op subclass is used.\r\n // uint32 is by far the most frequently used operation and benefits significantly from this.\r\n this.len += (this.tail = this.tail.next = new VarintOp(\r\n (value = value >>> 0)\r\n < 128 ? 1\r\n : value < 16384 ? 2\r\n : value < 2097152 ? 3\r\n : value < 268435456 ? 4\r\n : 5,\r\n value)).len;\r\n return this;\r\n};\r\n\r\n/**\r\n * Writes a signed 32 bit value as a varint.\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.int32 = function write_int32(value) {\r\n return value < 0\r\n ? this._push(writeVarint64, 10, LongBits.fromNumber(value)) // 10 bytes per spec\r\n : this.uint32(value);\r\n};\r\n\r\n/**\r\n * Writes a 32 bit value as a varint, zig-zag encoded.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.sint32 = function write_sint32(value) {\r\n return this.uint32((value << 1 ^ value >> 31) >>> 0);\r\n};\r\n\r\nfunction writeVarint64(val, buf, pos) {\r\n while (val.hi) {\r\n buf[pos++] = val.lo & 127 | 128;\r\n val.lo = (val.lo >>> 7 | val.hi << 25) >>> 0;\r\n val.hi >>>= 7;\r\n }\r\n while (val.lo > 127) {\r\n buf[pos++] = val.lo & 127 | 128;\r\n val.lo = val.lo >>> 7;\r\n }\r\n buf[pos++] = val.lo;\r\n}\r\n\r\n/**\r\n * Writes an unsigned 64 bit value as a varint.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.uint64 = function write_uint64(value) {\r\n var bits = LongBits.from(value);\r\n return this._push(writeVarint64, bits.length(), bits);\r\n};\r\n\r\n/**\r\n * Writes a signed 64 bit value as a varint.\r\n * @function\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.int64 = Writer.prototype.uint64;\r\n\r\n/**\r\n * Writes a signed 64 bit value as a varint, zig-zag encoded.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.sint64 = function write_sint64(value) {\r\n var bits = LongBits.from(value).zzEncode();\r\n return this._push(writeVarint64, bits.length(), bits);\r\n};\r\n\r\n/**\r\n * Writes a boolish value as a varint.\r\n * @param {boolean} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.bool = function write_bool(value) {\r\n return this._push(writeByte, 1, value ? 1 : 0);\r\n};\r\n\r\nfunction writeFixed32(val, buf, pos) {\r\n buf[pos ] = val & 255;\r\n buf[pos + 1] = val >>> 8 & 255;\r\n buf[pos + 2] = val >>> 16 & 255;\r\n buf[pos + 3] = val >>> 24;\r\n}\r\n\r\n/**\r\n * Writes an unsigned 32 bit value as fixed 32 bits.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.fixed32 = function write_fixed32(value) {\r\n return this._push(writeFixed32, 4, value >>> 0);\r\n};\r\n\r\n/**\r\n * Writes a signed 32 bit value as fixed 32 bits.\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.sfixed32 = Writer.prototype.fixed32;\r\n\r\n/**\r\n * Writes an unsigned 64 bit value as fixed 64 bits.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.fixed64 = function write_fixed64(value) {\r\n var bits = LongBits.from(value);\r\n return this._push(writeFixed32, 4, bits.lo)._push(writeFixed32, 4, bits.hi);\r\n};\r\n\r\n/**\r\n * Writes a signed 64 bit value as fixed 64 bits.\r\n * @function\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.sfixed64 = Writer.prototype.fixed64;\r\n\r\n/**\r\n * Writes a float (32 bit).\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.float = function write_float(value) {\r\n return this._push(util.float.writeFloatLE, 4, value);\r\n};\r\n\r\n/**\r\n * Writes a double (64 bit float).\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.double = function write_double(value) {\r\n return this._push(util.float.writeDoubleLE, 8, value);\r\n};\r\n\r\nvar writeBytes = util.Array.prototype.set\r\n ? function writeBytes_set(val, buf, pos) {\r\n buf.set(val, pos); // also works for plain array values\r\n }\r\n /* istanbul ignore next */\r\n : function writeBytes_for(val, buf, pos) {\r\n for (var i = 0; i < val.length; ++i)\r\n buf[pos + i] = val[i];\r\n };\r\n\r\n/**\r\n * Writes a sequence of bytes.\r\n * @param {Uint8Array|string} value Buffer or base64 encoded string to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.bytes = function write_bytes(value) {\r\n var len = value.length >>> 0;\r\n if (!len)\r\n return this._push(writeByte, 1, 0);\r\n if (util.isString(value)) {\r\n var buf = Writer.alloc(len = base64.length(value));\r\n base64.decode(value, buf, 0);\r\n value = buf;\r\n }\r\n return this.uint32(len)._push(writeBytes, len, value);\r\n};\r\n\r\n/**\r\n * Writes a string.\r\n * @param {string} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.string = function write_string(value) {\r\n var len = utf8.length(value);\r\n return len\r\n ? this.uint32(len)._push(utf8.write, len, value)\r\n : this._push(writeByte, 1, 0);\r\n};\r\n\r\n/**\r\n * Forks this writer's state by pushing it to a stack.\r\n * Calling {@link Writer#reset|reset} or {@link Writer#ldelim|ldelim} resets the writer to the previous state.\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.fork = function fork() {\r\n this.states = new State(this);\r\n this.head = this.tail = new Op(noop, 0, 0);\r\n this.len = 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Resets this instance to the last state.\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.reset = function reset() {\r\n if (this.states) {\r\n this.head = this.states.head;\r\n this.tail = this.states.tail;\r\n this.len = this.states.len;\r\n this.states = this.states.next;\r\n } else {\r\n this.head = this.tail = new Op(noop, 0, 0);\r\n this.len = 0;\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Resets to the last state and appends the fork state's current write length as a varint followed by its operations.\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.ldelim = function ldelim() {\r\n var head = this.head,\r\n tail = this.tail,\r\n len = this.len;\r\n this.reset().uint32(len);\r\n if (len) {\r\n this.tail.next = head.next; // skip noop\r\n this.tail = tail;\r\n this.len += len;\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Finishes the write operation.\r\n * @returns {Uint8Array} Finished buffer\r\n */\r\nWriter.prototype.finish = function finish() {\r\n var head = this.head.next, // skip noop\r\n buf = this.constructor.alloc(this.len),\r\n pos = 0;\r\n while (head) {\r\n head.fn(head.val, buf, pos);\r\n pos += head.len;\r\n head = head.next;\r\n }\r\n // this.head = this.tail = null;\r\n return buf;\r\n};\r\n\r\nWriter._configure = function(BufferWriter_) {\r\n BufferWriter = BufferWriter_;\r\n Writer.create = create();\r\n BufferWriter._configure();\r\n};\r\n","\"use strict\";\r\nmodule.exports = BufferWriter;\r\n\r\n// extends Writer\r\nvar Writer = require(\"./writer\");\r\n(BufferWriter.prototype = Object.create(Writer.prototype)).constructor = BufferWriter;\r\n\r\nvar util = require(\"./util/minimal\");\r\n\r\n/**\r\n * Constructs a new buffer writer instance.\r\n * @classdesc Wire format writer using node buffers.\r\n * @extends Writer\r\n * @constructor\r\n */\r\nfunction BufferWriter() {\r\n Writer.call(this);\r\n}\r\n\r\nBufferWriter._configure = function () {\r\n /**\r\n * Allocates a buffer of the specified size.\r\n * @function\r\n * @param {number} size Buffer size\r\n * @returns {Buffer} Buffer\r\n */\r\n BufferWriter.alloc = util._Buffer_allocUnsafe;\r\n\r\n BufferWriter.writeBytesBuffer = util.Buffer && util.Buffer.prototype instanceof Uint8Array && util.Buffer.prototype.set.name === \"set\"\r\n ? function writeBytesBuffer_set(val, buf, pos) {\r\n buf.set(val, pos); // faster than copy (requires node >= 4 where Buffers extend Uint8Array and set is properly inherited)\r\n // also works for plain array values\r\n }\r\n /* istanbul ignore next */\r\n : function writeBytesBuffer_copy(val, buf, pos) {\r\n if (val.copy) // Buffer values\r\n val.copy(buf, pos, 0, val.length);\r\n else for (var i = 0; i < val.length;) // plain array values\r\n buf[pos++] = val[i++];\r\n };\r\n};\r\n\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriter.prototype.bytes = function write_bytes_buffer(value) {\r\n if (util.isString(value))\r\n value = util._Buffer_from(value, \"base64\");\r\n var len = value.length >>> 0;\r\n this.uint32(len);\r\n if (len)\r\n this._push(BufferWriter.writeBytesBuffer, len, value);\r\n return this;\r\n};\r\n\r\nfunction writeStringBuffer(val, buf, pos) {\r\n if (val.length < 40) // plain js is faster for short strings (probably due to redundant assertions)\r\n util.utf8.write(val, buf, pos);\r\n else if (buf.utf8Write)\r\n buf.utf8Write(val, pos);\r\n else\r\n buf.write(val, pos);\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriter.prototype.string = function write_string_buffer(value) {\r\n var len = util.Buffer.byteLength(value);\r\n this.uint32(len);\r\n if (len)\r\n this._push(writeStringBuffer, len, value);\r\n return this;\r\n};\r\n\r\n\r\n/**\r\n * Finishes the write operation.\r\n * @name BufferWriter#finish\r\n * @function\r\n * @returns {Buffer} Finished buffer\r\n */\r\n\r\nBufferWriter._configure();\r\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"DraggableCore\", {\n enumerable: true,\n get: function () {\n return _DraggableCore.default;\n }\n});\nexports.default = void 0;\nvar React = _interopRequireWildcard(require(\"react\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\nvar _clsx = _interopRequireDefault(require(\"clsx\"));\nvar _domFns = require(\"./utils/domFns\");\nvar _positionFns = require(\"./utils/positionFns\");\nvar _shims = require(\"./utils/shims\");\nvar _DraggableCore = _interopRequireDefault(require(\"./DraggableCore\"));\nvar _log = _interopRequireDefault(require(\"./utils/log\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); } /*:: import type {ControlPosition, PositionOffsetControlPosition, DraggableCoreProps, DraggableCoreDefaultProps} from './DraggableCore';*/\n/*:: import type {Bounds, DraggableEventHandler} from './utils/types';*/\n/*:: import type {Element as ReactElement} from 'react';*/\n/*:: type DraggableState = {\n dragging: boolean,\n dragged: boolean,\n x: number, y: number,\n slackX: number, slackY: number,\n isElementSVG: boolean,\n prevPropsPosition: ?ControlPosition,\n};*/\n/*:: export type DraggableDefaultProps = {\n ...DraggableCoreDefaultProps,\n axis: 'both' | 'x' | 'y' | 'none',\n bounds: Bounds | string | false,\n defaultClassName: string,\n defaultClassNameDragging: string,\n defaultClassNameDragged: string,\n defaultPosition: ControlPosition,\n scale: number,\n};*/\n/*:: export type DraggableProps = {\n ...DraggableCoreProps,\n ...DraggableDefaultProps,\n positionOffset: PositionOffsetControlPosition,\n position: ControlPosition,\n};*/\n//\n// Define \n//\nclass Draggable extends React.Component /*:: */{\n // React 16.3+\n // Arity (props, state)\n static getDerivedStateFromProps(_ref /*:: */, _ref2 /*:: */) /*: ?Partial*/{\n let {\n position\n } /*: DraggableProps*/ = _ref /*: DraggableProps*/;\n let {\n prevPropsPosition\n } /*: DraggableState*/ = _ref2 /*: DraggableState*/;\n // Set x/y if a new position is provided in props that is different than the previous.\n if (position && (!prevPropsPosition || position.x !== prevPropsPosition.x || position.y !== prevPropsPosition.y)) {\n (0, _log.default)('Draggable: getDerivedStateFromProps %j', {\n position,\n prevPropsPosition\n });\n return {\n x: position.x,\n y: position.y,\n prevPropsPosition: {\n ...position\n }\n };\n }\n return null;\n }\n constructor(props /*: DraggableProps*/) {\n super(props);\n _defineProperty(this, \"onDragStart\", (e, coreData) => {\n (0, _log.default)('Draggable: onDragStart: %j', coreData);\n\n // Short-circuit if user's callback killed it.\n const shouldStart = this.props.onStart(e, (0, _positionFns.createDraggableData)(this, coreData));\n // Kills start event on core as well, so move handlers are never bound.\n if (shouldStart === false) return false;\n this.setState({\n dragging: true,\n dragged: true\n });\n });\n _defineProperty(this, \"onDrag\", (e, coreData) => {\n if (!this.state.dragging) return false;\n (0, _log.default)('Draggable: onDrag: %j', coreData);\n const uiData = (0, _positionFns.createDraggableData)(this, coreData);\n const newState = {\n x: uiData.x,\n y: uiData.y,\n slackX: 0,\n slackY: 0\n };\n\n // Keep within bounds.\n if (this.props.bounds) {\n // Save original x and y.\n const {\n x,\n y\n } = newState;\n\n // Add slack to the values used to calculate bound position. This will ensure that if\n // we start removing slack, the element won't react to it right away until it's been\n // completely removed.\n newState.x += this.state.slackX;\n newState.y += this.state.slackY;\n\n // Get bound position. This will ceil/floor the x and y within the boundaries.\n const [newStateX, newStateY] = (0, _positionFns.getBoundPosition)(this, newState.x, newState.y);\n newState.x = newStateX;\n newState.y = newStateY;\n\n // Recalculate slack by noting how much was shaved by the boundPosition handler.\n newState.slackX = this.state.slackX + (x - newState.x);\n newState.slackY = this.state.slackY + (y - newState.y);\n\n // Update the event we fire to reflect what really happened after bounds took effect.\n uiData.x = newState.x;\n uiData.y = newState.y;\n uiData.deltaX = newState.x - this.state.x;\n uiData.deltaY = newState.y - this.state.y;\n }\n\n // Short-circuit if user's callback killed it.\n const shouldUpdate = this.props.onDrag(e, uiData);\n if (shouldUpdate === false) return false;\n this.setState(newState);\n });\n _defineProperty(this, \"onDragStop\", (e, coreData) => {\n if (!this.state.dragging) return false;\n\n // Short-circuit if user's callback killed it.\n const shouldContinue = this.props.onStop(e, (0, _positionFns.createDraggableData)(this, coreData));\n if (shouldContinue === false) return false;\n (0, _log.default)('Draggable: onDragStop: %j', coreData);\n const newState /*: Partial*/ = {\n dragging: false,\n slackX: 0,\n slackY: 0\n };\n\n // If this is a controlled component, the result of this operation will be to\n // revert back to the old position. We expect a handler on `onDragStop`, at the least.\n const controlled = Boolean(this.props.position);\n if (controlled) {\n const {\n x,\n y\n } = this.props.position;\n newState.x = x;\n newState.y = y;\n }\n this.setState(newState);\n });\n this.state = {\n // Whether or not we are currently dragging.\n dragging: false,\n // Whether or not we have been dragged before.\n dragged: false,\n // Current transform x and y.\n x: props.position ? props.position.x : props.defaultPosition.x,\n y: props.position ? props.position.y : props.defaultPosition.y,\n prevPropsPosition: {\n ...props.position\n },\n // Used for compensating for out-of-bounds drags\n slackX: 0,\n slackY: 0,\n // Can only determine if SVG after mounting\n isElementSVG: false\n };\n if (props.position && !(props.onDrag || props.onStop)) {\n // eslint-disable-next-line no-console\n console.warn('A `position` was applied to this , without drag handlers. This will make this ' + 'component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the ' + '`position` of this element.');\n }\n }\n componentDidMount() {\n // Check to see if the element passed is an instanceof SVGElement\n if (typeof window.SVGElement !== 'undefined' && this.findDOMNode() instanceof window.SVGElement) {\n this.setState({\n isElementSVG: true\n });\n }\n }\n componentWillUnmount() {\n this.setState({\n dragging: false\n }); // prevents invariant if unmounted while dragging\n }\n\n // React Strict Mode compatibility: if `nodeRef` is passed, we will use it instead of trying to find\n // the underlying DOM node ourselves. See the README for more information.\n findDOMNode() /*: ?HTMLElement*/{\n var _this$props$nodeRef$c, _this$props;\n return (_this$props$nodeRef$c = (_this$props = this.props) === null || _this$props === void 0 || (_this$props = _this$props.nodeRef) === null || _this$props === void 0 ? void 0 : _this$props.current) !== null && _this$props$nodeRef$c !== void 0 ? _this$props$nodeRef$c : _reactDom.default.findDOMNode(this);\n }\n render() /*: ReactElement*/{\n const {\n axis,\n bounds,\n children,\n defaultPosition,\n defaultClassName,\n defaultClassNameDragging,\n defaultClassNameDragged,\n position,\n positionOffset,\n scale,\n ...draggableCoreProps\n } = this.props;\n let style = {};\n let svgTransform = null;\n\n // If this is controlled, we don't want to move it - unless it's dragging.\n const controlled = Boolean(position);\n const draggable = !controlled || this.state.dragging;\n const validPosition = position || defaultPosition;\n const transformOpts = {\n // Set left if horizontal drag is enabled\n x: (0, _positionFns.canDragX)(this) && draggable ? this.state.x : validPosition.x,\n // Set top if vertical drag is enabled\n y: (0, _positionFns.canDragY)(this) && draggable ? this.state.y : validPosition.y\n };\n\n // If this element was SVG, we use the `transform` attribute.\n if (this.state.isElementSVG) {\n svgTransform = (0, _domFns.createSVGTransform)(transformOpts, positionOffset);\n } else {\n // Add a CSS transform to move the element around. This allows us to move the element around\n // without worrying about whether or not it is relatively or absolutely positioned.\n // If the item you are dragging already has a transform set, wrap it in a so \n // has a clean slate.\n style = (0, _domFns.createCSSTransform)(transformOpts, positionOffset);\n }\n\n // Mark with class while dragging\n const className = (0, _clsx.default)(children.props.className || '', defaultClassName, {\n [defaultClassNameDragging]: this.state.dragging,\n [defaultClassNameDragged]: this.state.dragged\n });\n\n // Reuse the child provided\n // This makes it flexible to use whatever element is wanted (div, ul, etc)\n return /*#__PURE__*/React.createElement(_DraggableCore.default, _extends({}, draggableCoreProps, {\n onStart: this.onDragStart,\n onDrag: this.onDrag,\n onStop: this.onDragStop\n }), /*#__PURE__*/React.cloneElement(React.Children.only(children), {\n className: className,\n style: {\n ...children.props.style,\n ...style\n },\n transform: svgTransform\n }));\n }\n}\nexports.default = Draggable;\n_defineProperty(Draggable, \"displayName\", 'Draggable');\n_defineProperty(Draggable, \"propTypes\", {\n // Accepts all props accepts.\n ..._DraggableCore.default.propTypes,\n /**\n * `axis` determines which axis the draggable can move.\n *\n * Note that all callbacks will still return data as normal. This only\n * controls flushing to the DOM.\n *\n * 'both' allows movement horizontally and vertically.\n * 'x' limits movement to horizontal axis.\n * 'y' limits movement to vertical axis.\n * 'none' limits all movement.\n *\n * Defaults to 'both'.\n */\n axis: _propTypes.default.oneOf(['both', 'x', 'y', 'none']),\n /**\n * `bounds` determines the range of movement available to the element.\n * Available values are:\n *\n * 'parent' restricts movement within the Draggable's parent node.\n *\n * Alternatively, pass an object with the following properties, all of which are optional:\n *\n * {left: LEFT_BOUND, right: RIGHT_BOUND, bottom: BOTTOM_BOUND, top: TOP_BOUND}\n *\n * All values are in px.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
Content
\n *
\n * );\n * }\n * });\n * ```\n */\n bounds: _propTypes.default.oneOfType([_propTypes.default.shape({\n left: _propTypes.default.number,\n right: _propTypes.default.number,\n top: _propTypes.default.number,\n bottom: _propTypes.default.number\n }), _propTypes.default.string, _propTypes.default.oneOf([false])]),\n defaultClassName: _propTypes.default.string,\n defaultClassNameDragging: _propTypes.default.string,\n defaultClassNameDragged: _propTypes.default.string,\n /**\n * `defaultPosition` specifies the x and y that the dragged item should start at\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
I start with transformX: 25px and transformY: 25px;
\n *
\n * );\n * }\n * });\n * ```\n */\n defaultPosition: _propTypes.default.shape({\n x: _propTypes.default.number,\n y: _propTypes.default.number\n }),\n positionOffset: _propTypes.default.shape({\n x: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),\n y: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string])\n }),\n /**\n * `position`, if present, defines the current position of the element.\n *\n * This is similar to how form elements in React work - if no `position` is supplied, the component\n * is uncontrolled.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
I start with transformX: 25px and transformY: 25px;
\n *
\n * );\n * }\n * });\n * ```\n */\n position: _propTypes.default.shape({\n x: _propTypes.default.number,\n y: _propTypes.default.number\n }),\n /**\n * These properties should be defined on the child, not here.\n */\n className: _shims.dontSetMe,\n style: _shims.dontSetMe,\n transform: _shims.dontSetMe\n});\n_defineProperty(Draggable, \"defaultProps\", {\n ..._DraggableCore.default.defaultProps,\n axis: 'both',\n bounds: false,\n defaultClassName: 'react-draggable',\n defaultClassNameDragging: 'react-draggable-dragging',\n defaultClassNameDragged: 'react-draggable-dragged',\n defaultPosition: {\n x: 0,\n y: 0\n },\n scale: 1\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar React = _interopRequireWildcard(require(\"react\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\nvar _domFns = require(\"./utils/domFns\");\nvar _positionFns = require(\"./utils/positionFns\");\nvar _shims = require(\"./utils/shims\");\nvar _log = _interopRequireDefault(require(\"./utils/log\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/*:: import type {EventHandler, MouseTouchEvent} from './utils/types';*/\n/*:: import type {Element as ReactElement} from 'react';*/\n// Simple abstraction for dragging events names.\nconst eventsFor = {\n touch: {\n start: 'touchstart',\n move: 'touchmove',\n stop: 'touchend'\n },\n mouse: {\n start: 'mousedown',\n move: 'mousemove',\n stop: 'mouseup'\n }\n};\n\n// Default to mouse events.\nlet dragEventFor = eventsFor.mouse;\n/*:: export type DraggableData = {\n node: HTMLElement,\n x: number, y: number,\n deltaX: number, deltaY: number,\n lastX: number, lastY: number,\n};*/\n/*:: export type DraggableEventHandler = (e: MouseEvent, data: DraggableData) => void | false;*/\n/*:: export type ControlPosition = {x: number, y: number};*/\n/*:: export type PositionOffsetControlPosition = {x: number|string, y: number|string};*/\n/*:: export type DraggableCoreDefaultProps = {\n allowAnyClick: boolean,\n disabled: boolean,\n enableUserSelectHack: boolean,\n onStart: DraggableEventHandler,\n onDrag: DraggableEventHandler,\n onStop: DraggableEventHandler,\n onMouseDown: (e: MouseEvent) => void,\n scale: number,\n};*/\n/*:: export type DraggableCoreProps = {\n ...DraggableCoreDefaultProps,\n cancel: string,\n children: ReactElement,\n offsetParent: HTMLElement,\n grid: [number, number],\n handle: string,\n nodeRef?: ?React.ElementRef,\n};*/\n//\n// Define .\n//\n// is for advanced usage of . It maintains minimal internal state so it can\n// work well with libraries that require more control over the element.\n//\n\nclass DraggableCore extends React.Component /*:: */{\n constructor() {\n super(...arguments);\n _defineProperty(this, \"dragging\", false);\n // Used while dragging to determine deltas.\n _defineProperty(this, \"lastX\", NaN);\n _defineProperty(this, \"lastY\", NaN);\n _defineProperty(this, \"touchIdentifier\", null);\n _defineProperty(this, \"mounted\", false);\n _defineProperty(this, \"handleDragStart\", e => {\n // Make it possible to attach event handlers on top of this one.\n this.props.onMouseDown(e);\n\n // Only accept left-clicks.\n if (!this.props.allowAnyClick && typeof e.button === 'number' && e.button !== 0) return false;\n\n // Get nodes. Be sure to grab relative document (could be iframed)\n const thisNode = this.findDOMNode();\n if (!thisNode || !thisNode.ownerDocument || !thisNode.ownerDocument.body) {\n throw new Error(' not mounted on DragStart!');\n }\n const {\n ownerDocument\n } = thisNode;\n\n // Short circuit if handle or cancel prop was provided and selector doesn't match.\n if (this.props.disabled || !(e.target instanceof ownerDocument.defaultView.Node) || this.props.handle && !(0, _domFns.matchesSelectorAndParentsTo)(e.target, this.props.handle, thisNode) || this.props.cancel && (0, _domFns.matchesSelectorAndParentsTo)(e.target, this.props.cancel, thisNode)) {\n return;\n }\n\n // Prevent scrolling on mobile devices, like ipad/iphone.\n // Important that this is after handle/cancel.\n if (e.type === 'touchstart') e.preventDefault();\n\n // Set touch identifier in component state if this is a touch event. This allows us to\n // distinguish between individual touches on multitouch screens by identifying which\n // touchpoint was set to this element.\n const touchIdentifier = (0, _domFns.getTouchIdentifier)(e);\n this.touchIdentifier = touchIdentifier;\n\n // Get the current drag point from the event. This is used as the offset.\n const position = (0, _positionFns.getControlPosition)(e, touchIdentifier, this);\n if (position == null) return; // not possible but satisfies flow\n const {\n x,\n y\n } = position;\n\n // Create an event object with all the data parents need to make a decision here.\n const coreEvent = (0, _positionFns.createCoreData)(this, x, y);\n (0, _log.default)('DraggableCore: handleDragStart: %j', coreEvent);\n\n // Call event handler. If it returns explicit false, cancel.\n (0, _log.default)('calling', this.props.onStart);\n const shouldUpdate = this.props.onStart(e, coreEvent);\n if (shouldUpdate === false || this.mounted === false) return;\n\n // Add a style to the body to disable user-select. This prevents text from\n // being selected all over the page.\n if (this.props.enableUserSelectHack) (0, _domFns.addUserSelectStyles)(ownerDocument);\n\n // Initiate dragging. Set the current x and y as offsets\n // so we know how much we've moved during the drag. This allows us\n // to drag elements around even if they have been moved, without issue.\n this.dragging = true;\n this.lastX = x;\n this.lastY = y;\n\n // Add events to the document directly so we catch when the user's mouse/touch moves outside of\n // this element. We use different events depending on whether or not we have detected that this\n // is a touch-capable device.\n (0, _domFns.addEvent)(ownerDocument, dragEventFor.move, this.handleDrag);\n (0, _domFns.addEvent)(ownerDocument, dragEventFor.stop, this.handleDragStop);\n });\n _defineProperty(this, \"handleDrag\", e => {\n // Get the current drag point from the event. This is used as the offset.\n const position = (0, _positionFns.getControlPosition)(e, this.touchIdentifier, this);\n if (position == null) return;\n let {\n x,\n y\n } = position;\n\n // Snap to grid if prop has been provided\n if (Array.isArray(this.props.grid)) {\n let deltaX = x - this.lastX,\n deltaY = y - this.lastY;\n [deltaX, deltaY] = (0, _positionFns.snapToGrid)(this.props.grid, deltaX, deltaY);\n if (!deltaX && !deltaY) return; // skip useless drag\n x = this.lastX + deltaX, y = this.lastY + deltaY;\n }\n const coreEvent = (0, _positionFns.createCoreData)(this, x, y);\n (0, _log.default)('DraggableCore: handleDrag: %j', coreEvent);\n\n // Call event handler. If it returns explicit false, trigger end.\n const shouldUpdate = this.props.onDrag(e, coreEvent);\n if (shouldUpdate === false || this.mounted === false) {\n try {\n // $FlowIgnore\n this.handleDragStop(new MouseEvent('mouseup'));\n } catch (err) {\n // Old browsers\n const event = ((document.createEvent('MouseEvents') /*: any*/) /*: MouseTouchEvent*/);\n // I see why this insanity was deprecated\n // $FlowIgnore\n event.initMouseEvent('mouseup', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n this.handleDragStop(event);\n }\n return;\n }\n this.lastX = x;\n this.lastY = y;\n });\n _defineProperty(this, \"handleDragStop\", e => {\n if (!this.dragging) return;\n const position = (0, _positionFns.getControlPosition)(e, this.touchIdentifier, this);\n if (position == null) return;\n let {\n x,\n y\n } = position;\n\n // Snap to grid if prop has been provided\n if (Array.isArray(this.props.grid)) {\n let deltaX = x - this.lastX || 0;\n let deltaY = y - this.lastY || 0;\n [deltaX, deltaY] = (0, _positionFns.snapToGrid)(this.props.grid, deltaX, deltaY);\n x = this.lastX + deltaX, y = this.lastY + deltaY;\n }\n const coreEvent = (0, _positionFns.createCoreData)(this, x, y);\n\n // Call event handler\n const shouldContinue = this.props.onStop(e, coreEvent);\n if (shouldContinue === false || this.mounted === false) return false;\n const thisNode = this.findDOMNode();\n if (thisNode) {\n // Remove user-select hack\n if (this.props.enableUserSelectHack) (0, _domFns.removeUserSelectStyles)(thisNode.ownerDocument);\n }\n (0, _log.default)('DraggableCore: handleDragStop: %j', coreEvent);\n\n // Reset the el.\n this.dragging = false;\n this.lastX = NaN;\n this.lastY = NaN;\n if (thisNode) {\n // Remove event handlers\n (0, _log.default)('DraggableCore: Removing handlers');\n (0, _domFns.removeEvent)(thisNode.ownerDocument, dragEventFor.move, this.handleDrag);\n (0, _domFns.removeEvent)(thisNode.ownerDocument, dragEventFor.stop, this.handleDragStop);\n }\n });\n _defineProperty(this, \"onMouseDown\", e => {\n dragEventFor = eventsFor.mouse; // on touchscreen laptops we could switch back to mouse\n\n return this.handleDragStart(e);\n });\n _defineProperty(this, \"onMouseUp\", e => {\n dragEventFor = eventsFor.mouse;\n return this.handleDragStop(e);\n });\n // Same as onMouseDown (start drag), but now consider this a touch device.\n _defineProperty(this, \"onTouchStart\", e => {\n // We're on a touch device now, so change the event handlers\n dragEventFor = eventsFor.touch;\n return this.handleDragStart(e);\n });\n _defineProperty(this, \"onTouchEnd\", e => {\n // We're on a touch device now, so change the event handlers\n dragEventFor = eventsFor.touch;\n return this.handleDragStop(e);\n });\n }\n componentDidMount() {\n this.mounted = true;\n // Touch handlers must be added with {passive: false} to be cancelable.\n // https://developers.google.com/web/updates/2017/01/scrolling-intervention\n const thisNode = this.findDOMNode();\n if (thisNode) {\n (0, _domFns.addEvent)(thisNode, eventsFor.touch.start, this.onTouchStart, {\n passive: false\n });\n }\n }\n componentWillUnmount() {\n this.mounted = false;\n // Remove any leftover event handlers. Remove both touch and mouse handlers in case\n // some browser quirk caused a touch event to fire during a mouse move, or vice versa.\n const thisNode = this.findDOMNode();\n if (thisNode) {\n const {\n ownerDocument\n } = thisNode;\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.mouse.move, this.handleDrag);\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.touch.move, this.handleDrag);\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.mouse.stop, this.handleDragStop);\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.touch.stop, this.handleDragStop);\n (0, _domFns.removeEvent)(thisNode, eventsFor.touch.start, this.onTouchStart, {\n passive: false\n });\n if (this.props.enableUserSelectHack) (0, _domFns.removeUserSelectStyles)(ownerDocument);\n }\n }\n\n // React Strict Mode compatibility: if `nodeRef` is passed, we will use it instead of trying to find\n // the underlying DOM node ourselves. See the README for more information.\n findDOMNode() /*: ?HTMLElement*/{\n var _this$props, _this$props2;\n return (_this$props = this.props) !== null && _this$props !== void 0 && _this$props.nodeRef ? (_this$props2 = this.props) === null || _this$props2 === void 0 || (_this$props2 = _this$props2.nodeRef) === null || _this$props2 === void 0 ? void 0 : _this$props2.current : _reactDom.default.findDOMNode(this);\n }\n render() /*: React.Element*/{\n // Reuse the child provided\n // This makes it flexible to use whatever element is wanted (div, ul, etc)\n return /*#__PURE__*/React.cloneElement(React.Children.only(this.props.children), {\n // Note: mouseMove handler is attached to document so it will still function\n // when the user drags quickly and leaves the bounds of the element.\n onMouseDown: this.onMouseDown,\n onMouseUp: this.onMouseUp,\n // onTouchStart is added on `componentDidMount` so they can be added with\n // {passive: false}, which allows it to cancel. See\n // https://developers.google.com/web/updates/2017/01/scrolling-intervention\n onTouchEnd: this.onTouchEnd\n });\n }\n}\nexports.default = DraggableCore;\n_defineProperty(DraggableCore, \"displayName\", 'DraggableCore');\n_defineProperty(DraggableCore, \"propTypes\", {\n /**\n * `allowAnyClick` allows dragging using any mouse button.\n * By default, we only accept the left button.\n *\n * Defaults to `false`.\n */\n allowAnyClick: _propTypes.default.bool,\n children: _propTypes.default.node.isRequired,\n /**\n * `disabled`, if true, stops the from dragging. All handlers,\n * with the exception of `onMouseDown`, will not fire.\n */\n disabled: _propTypes.default.bool,\n /**\n * By default, we add 'user-select:none' attributes to the document body\n * to prevent ugly text selection during drag. If this is causing problems\n * for your app, set this to `false`.\n */\n enableUserSelectHack: _propTypes.default.bool,\n /**\n * `offsetParent`, if set, uses the passed DOM node to compute drag offsets\n * instead of using the parent node.\n */\n offsetParent: function (props /*: DraggableCoreProps*/, propName /*: $Keys*/) {\n if (props[propName] && props[propName].nodeType !== 1) {\n throw new Error('Draggable\\'s offsetParent must be a DOM Node.');\n }\n },\n /**\n * `grid` specifies the x and y that dragging should snap to.\n */\n grid: _propTypes.default.arrayOf(_propTypes.default.number),\n /**\n * `handle` specifies a selector to be used as the handle that initiates drag.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
\n *
Click me to drag
\n *
This is some other content
\n *
\n *
\n * );\n * }\n * });\n * ```\n */\n handle: _propTypes.default.string,\n /**\n * `cancel` specifies a selector to be used to prevent drag initialization.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return(\n * \n *
\n *
You can't drag from here
\n *
Dragging here works fine
\n *
\n *
\n * );\n * }\n * });\n * ```\n */\n cancel: _propTypes.default.string,\n /* If running in React Strict mode, ReactDOM.findDOMNode() is deprecated.\n * Unfortunately, in order for to work properly, we need raw access\n * to the underlying DOM node. If you want to avoid the warning, pass a `nodeRef`\n * as in this example:\n *\n * function MyComponent() {\n * const nodeRef = React.useRef(null);\n * return (\n * \n *
Example Target
\n *
\n * );\n * }\n *\n * This can be used for arbitrarily nested components, so long as the ref ends up\n * pointing to the actual child DOM node and not a custom component.\n */\n nodeRef: _propTypes.default.object,\n /**\n * Called when dragging starts.\n * If this function returns the boolean false, dragging will be canceled.\n */\n onStart: _propTypes.default.func,\n /**\n * Called while dragging.\n * If this function returns the boolean false, dragging will be canceled.\n */\n onDrag: _propTypes.default.func,\n /**\n * Called when dragging stops.\n * If this function returns the boolean false, the drag will remain active.\n */\n onStop: _propTypes.default.func,\n /**\n * A workaround option which can be passed if onMouseDown needs to be accessed,\n * since it'll always be blocked (as there is internal use of onMouseDown)\n */\n onMouseDown: _propTypes.default.func,\n /**\n * `scale`, if set, applies scaling while dragging an element\n */\n scale: _propTypes.default.number,\n /**\n * These properties should be defined on the child, not here.\n */\n className: _shims.dontSetMe,\n style: _shims.dontSetMe,\n transform: _shims.dontSetMe\n});\n_defineProperty(DraggableCore, \"defaultProps\", {\n allowAnyClick: false,\n // by default only accept left click\n disabled: false,\n enableUserSelectHack: true,\n onStart: function () {},\n onDrag: function () {},\n onStop: function () {},\n onMouseDown: function () {},\n scale: 1\n});","\"use strict\";\n\nconst {\n default: Draggable,\n DraggableCore\n} = require('./Draggable');\n\n// Previous versions of this lib exported as the root export. As to no-// them, or TypeScript, we export *both* as the root and as 'default'.\n// See https://github.com/mzabriskie/react-draggable/pull/254\n// and https://github.com/mzabriskie/react-draggable/issues/266\nmodule.exports = Draggable;\nmodule.exports.default = Draggable;\nmodule.exports.DraggableCore = DraggableCore;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.addClassName = addClassName;\nexports.addEvent = addEvent;\nexports.addUserSelectStyles = addUserSelectStyles;\nexports.createCSSTransform = createCSSTransform;\nexports.createSVGTransform = createSVGTransform;\nexports.getTouch = getTouch;\nexports.getTouchIdentifier = getTouchIdentifier;\nexports.getTranslation = getTranslation;\nexports.innerHeight = innerHeight;\nexports.innerWidth = innerWidth;\nexports.matchesSelector = matchesSelector;\nexports.matchesSelectorAndParentsTo = matchesSelectorAndParentsTo;\nexports.offsetXYFromParent = offsetXYFromParent;\nexports.outerHeight = outerHeight;\nexports.outerWidth = outerWidth;\nexports.removeClassName = removeClassName;\nexports.removeEvent = removeEvent;\nexports.removeUserSelectStyles = removeUserSelectStyles;\nvar _shims = require(\"./shims\");\nvar _getPrefix = _interopRequireWildcard(require(\"./getPrefix\"));\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n/*:: import type {ControlPosition, PositionOffsetControlPosition, MouseTouchEvent} from './types';*/\nlet matchesSelectorFunc = '';\nfunction matchesSelector(el /*: Node*/, selector /*: string*/) /*: boolean*/{\n if (!matchesSelectorFunc) {\n matchesSelectorFunc = (0, _shims.findInArray)(['matches', 'webkitMatchesSelector', 'mozMatchesSelector', 'msMatchesSelector', 'oMatchesSelector'], function (method) {\n // $FlowIgnore: Doesn't think elements are indexable\n return (0, _shims.isFunction)(el[method]);\n });\n }\n\n // Might not be found entirely (not an Element?) - in that case, bail\n // $FlowIgnore: Doesn't think elements are indexable\n if (!(0, _shims.isFunction)(el[matchesSelectorFunc])) return false;\n\n // $FlowIgnore: Doesn't think elements are indexable\n return el[matchesSelectorFunc](selector);\n}\n\n// Works up the tree to the draggable itself attempting to match selector.\nfunction matchesSelectorAndParentsTo(el /*: Node*/, selector /*: string*/, baseNode /*: Node*/) /*: boolean*/{\n let node = el;\n do {\n if (matchesSelector(node, selector)) return true;\n if (node === baseNode) return false;\n // $FlowIgnore[incompatible-type]\n node = node.parentNode;\n } while (node);\n return false;\n}\nfunction addEvent(el /*: ?Node*/, event /*: string*/, handler /*: Function*/, inputOptions /*: Object*/) /*: void*/{\n if (!el) return;\n const options = {\n capture: true,\n ...inputOptions\n };\n // $FlowIgnore[method-unbinding]\n if (el.addEventListener) {\n el.addEventListener(event, handler, options);\n } else if (el.attachEvent) {\n el.attachEvent('on' + event, handler);\n } else {\n // $FlowIgnore: Doesn't think elements are indexable\n el['on' + event] = handler;\n }\n}\nfunction removeEvent(el /*: ?Node*/, event /*: string*/, handler /*: Function*/, inputOptions /*: Object*/) /*: void*/{\n if (!el) return;\n const options = {\n capture: true,\n ...inputOptions\n };\n // $FlowIgnore[method-unbinding]\n if (el.removeEventListener) {\n el.removeEventListener(event, handler, options);\n } else if (el.detachEvent) {\n el.detachEvent('on' + event, handler);\n } else {\n // $FlowIgnore: Doesn't think elements are indexable\n el['on' + event] = null;\n }\n}\nfunction outerHeight(node /*: HTMLElement*/) /*: number*/{\n // This is deliberately excluding margin for our calculations, since we are using\n // offsetTop which is including margin. See getBoundPosition\n let height = node.clientHeight;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n height += (0, _shims.int)(computedStyle.borderTopWidth);\n height += (0, _shims.int)(computedStyle.borderBottomWidth);\n return height;\n}\nfunction outerWidth(node /*: HTMLElement*/) /*: number*/{\n // This is deliberately excluding margin for our calculations, since we are using\n // offsetLeft which is including margin. See getBoundPosition\n let width = node.clientWidth;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n width += (0, _shims.int)(computedStyle.borderLeftWidth);\n width += (0, _shims.int)(computedStyle.borderRightWidth);\n return width;\n}\nfunction innerHeight(node /*: HTMLElement*/) /*: number*/{\n let height = node.clientHeight;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n height -= (0, _shims.int)(computedStyle.paddingTop);\n height -= (0, _shims.int)(computedStyle.paddingBottom);\n return height;\n}\nfunction innerWidth(node /*: HTMLElement*/) /*: number*/{\n let width = node.clientWidth;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n width -= (0, _shims.int)(computedStyle.paddingLeft);\n width -= (0, _shims.int)(computedStyle.paddingRight);\n return width;\n}\n/*:: interface EventWithOffset {\n clientX: number, clientY: number\n}*/\n// Get from offsetParent\nfunction offsetXYFromParent(evt /*: EventWithOffset*/, offsetParent /*: HTMLElement*/, scale /*: number*/) /*: ControlPosition*/{\n const isBody = offsetParent === offsetParent.ownerDocument.body;\n const offsetParentRect = isBody ? {\n left: 0,\n top: 0\n } : offsetParent.getBoundingClientRect();\n const x = (evt.clientX + offsetParent.scrollLeft - offsetParentRect.left) / scale;\n const y = (evt.clientY + offsetParent.scrollTop - offsetParentRect.top) / scale;\n return {\n x,\n y\n };\n}\nfunction createCSSTransform(controlPos /*: ControlPosition*/, positionOffset /*: PositionOffsetControlPosition*/) /*: Object*/{\n const translation = getTranslation(controlPos, positionOffset, 'px');\n return {\n [(0, _getPrefix.browserPrefixToKey)('transform', _getPrefix.default)]: translation\n };\n}\nfunction createSVGTransform(controlPos /*: ControlPosition*/, positionOffset /*: PositionOffsetControlPosition*/) /*: string*/{\n const translation = getTranslation(controlPos, positionOffset, '');\n return translation;\n}\nfunction getTranslation(_ref /*:: */, positionOffset /*: PositionOffsetControlPosition*/, unitSuffix /*: string*/) /*: string*/{\n let {\n x,\n y\n } /*: ControlPosition*/ = _ref /*: ControlPosition*/;\n let translation = \"translate(\".concat(x).concat(unitSuffix, \",\").concat(y).concat(unitSuffix, \")\");\n if (positionOffset) {\n const defaultX = \"\".concat(typeof positionOffset.x === 'string' ? positionOffset.x : positionOffset.x + unitSuffix);\n const defaultY = \"\".concat(typeof positionOffset.y === 'string' ? positionOffset.y : positionOffset.y + unitSuffix);\n translation = \"translate(\".concat(defaultX, \", \").concat(defaultY, \")\") + translation;\n }\n return translation;\n}\nfunction getTouch(e /*: MouseTouchEvent*/, identifier /*: number*/) /*: ?{clientX: number, clientY: number}*/{\n return e.targetTouches && (0, _shims.findInArray)(e.targetTouches, t => identifier === t.identifier) || e.changedTouches && (0, _shims.findInArray)(e.changedTouches, t => identifier === t.identifier);\n}\nfunction getTouchIdentifier(e /*: MouseTouchEvent*/) /*: ?number*/{\n if (e.targetTouches && e.targetTouches[0]) return e.targetTouches[0].identifier;\n if (e.changedTouches && e.changedTouches[0]) return e.changedTouches[0].identifier;\n}\n\n// User-select Hacks:\n//\n// Useful for preventing blue highlights all over everything when dragging.\n\n// Note we're passing `document` b/c we could be iframed\nfunction addUserSelectStyles(doc /*: ?Document*/) {\n if (!doc) return;\n let styleEl = doc.getElementById('react-draggable-style-el');\n if (!styleEl) {\n styleEl = doc.createElement('style');\n styleEl.type = 'text/css';\n styleEl.id = 'react-draggable-style-el';\n styleEl.innerHTML = '.react-draggable-transparent-selection *::-moz-selection {all: inherit;}\\n';\n styleEl.innerHTML += '.react-draggable-transparent-selection *::selection {all: inherit;}\\n';\n doc.getElementsByTagName('head')[0].appendChild(styleEl);\n }\n if (doc.body) addClassName(doc.body, 'react-draggable-transparent-selection');\n}\nfunction removeUserSelectStyles(doc /*: ?Document*/) {\n if (!doc) return;\n try {\n if (doc.body) removeClassName(doc.body, 'react-draggable-transparent-selection');\n // $FlowIgnore: IE\n if (doc.selection) {\n // $FlowIgnore: IE\n doc.selection.empty();\n } else {\n // Remove selection caused by scroll, unless it's a focused input\n // (we use doc.defaultView in case we're in an iframe)\n const selection = (doc.defaultView || window).getSelection();\n if (selection && selection.type !== 'Caret') {\n selection.removeAllRanges();\n }\n }\n } catch (e) {\n // probably IE\n }\n}\nfunction addClassName(el /*: HTMLElement*/, className /*: string*/) {\n if (el.classList) {\n el.classList.add(className);\n } else {\n if (!el.className.match(new RegExp(\"(?:^|\\\\s)\".concat(className, \"(?!\\\\S)\")))) {\n el.className += \" \".concat(className);\n }\n }\n}\nfunction removeClassName(el /*: HTMLElement*/, className /*: string*/) {\n if (el.classList) {\n el.classList.remove(className);\n } else {\n el.className = el.className.replace(new RegExp(\"(?:^|\\\\s)\".concat(className, \"(?!\\\\S)\"), 'g'), '');\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.browserPrefixToKey = browserPrefixToKey;\nexports.browserPrefixToStyle = browserPrefixToStyle;\nexports.default = void 0;\nexports.getPrefix = getPrefix;\nconst prefixes = ['Moz', 'Webkit', 'O', 'ms'];\nfunction getPrefix() /*: string*/{\n var _window$document;\n let prop /*: string*/ = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'transform';\n // Ensure we're running in an environment where there is actually a global\n // `window` obj\n if (typeof window === 'undefined') return '';\n\n // If we're in a pseudo-browser server-side environment, this access\n // path may not exist, so bail out if it doesn't.\n const style = (_window$document = window.document) === null || _window$document === void 0 || (_window$document = _window$document.documentElement) === null || _window$document === void 0 ? void 0 : _window$document.style;\n if (!style) return '';\n if (prop in style) return '';\n for (let i = 0; i < prefixes.length; i++) {\n if (browserPrefixToKey(prop, prefixes[i]) in style) return prefixes[i];\n }\n return '';\n}\nfunction browserPrefixToKey(prop /*: string*/, prefix /*: string*/) /*: string*/{\n return prefix ? \"\".concat(prefix).concat(kebabToTitleCase(prop)) : prop;\n}\nfunction browserPrefixToStyle(prop /*: string*/, prefix /*: string*/) /*: string*/{\n return prefix ? \"-\".concat(prefix.toLowerCase(), \"-\").concat(prop) : prop;\n}\nfunction kebabToTitleCase(str /*: string*/) /*: string*/{\n let out = '';\n let shouldCapitalize = true;\n for (let i = 0; i < str.length; i++) {\n if (shouldCapitalize) {\n out += str[i].toUpperCase();\n shouldCapitalize = false;\n } else if (str[i] === '-') {\n shouldCapitalize = true;\n } else {\n out += str[i];\n }\n }\n return out;\n}\n\n// Default export is the prefix itself, like 'Moz', 'Webkit', etc\n// Note that you may have to re-test for certain things; for instance, Chrome 50\n// can handle unprefixed `transform`, but not unprefixed `user-select`\nvar _default = exports.default = (getPrefix() /*: string*/);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = log;\n/*eslint no-console:0*/\nfunction log() {\n if (undefined) console.log(...arguments);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.canDragX = canDragX;\nexports.canDragY = canDragY;\nexports.createCoreData = createCoreData;\nexports.createDraggableData = createDraggableData;\nexports.getBoundPosition = getBoundPosition;\nexports.getControlPosition = getControlPosition;\nexports.snapToGrid = snapToGrid;\nvar _shims = require(\"./shims\");\nvar _domFns = require(\"./domFns\");\n/*:: import type Draggable from '../Draggable';*/\n/*:: import type {Bounds, ControlPosition, DraggableData, MouseTouchEvent} from './types';*/\n/*:: import type DraggableCore from '../DraggableCore';*/\nfunction getBoundPosition(draggable /*: Draggable*/, x /*: number*/, y /*: number*/) /*: [number, number]*/{\n // If no bounds, short-circuit and move on\n if (!draggable.props.bounds) return [x, y];\n\n // Clone new bounds\n let {\n bounds\n } = draggable.props;\n bounds = typeof bounds === 'string' ? bounds : cloneBounds(bounds);\n const node = findDOMNode(draggable);\n if (typeof bounds === 'string') {\n const {\n ownerDocument\n } = node;\n const ownerWindow = ownerDocument.defaultView;\n let boundNode;\n if (bounds === 'parent') {\n boundNode = node.parentNode;\n } else {\n boundNode = ownerDocument.querySelector(bounds);\n }\n if (!(boundNode instanceof ownerWindow.HTMLElement)) {\n throw new Error('Bounds selector \"' + bounds + '\" could not find an element.');\n }\n const boundNodeEl /*: HTMLElement*/ = boundNode; // for Flow, can't seem to refine correctly\n const nodeStyle = ownerWindow.getComputedStyle(node);\n const boundNodeStyle = ownerWindow.getComputedStyle(boundNodeEl);\n // Compute bounds. This is a pain with padding and offsets but this gets it exactly right.\n bounds = {\n left: -node.offsetLeft + (0, _shims.int)(boundNodeStyle.paddingLeft) + (0, _shims.int)(nodeStyle.marginLeft),\n top: -node.offsetTop + (0, _shims.int)(boundNodeStyle.paddingTop) + (0, _shims.int)(nodeStyle.marginTop),\n right: (0, _domFns.innerWidth)(boundNodeEl) - (0, _domFns.outerWidth)(node) - node.offsetLeft + (0, _shims.int)(boundNodeStyle.paddingRight) - (0, _shims.int)(nodeStyle.marginRight),\n bottom: (0, _domFns.innerHeight)(boundNodeEl) - (0, _domFns.outerHeight)(node) - node.offsetTop + (0, _shims.int)(boundNodeStyle.paddingBottom) - (0, _shims.int)(nodeStyle.marginBottom)\n };\n }\n\n // Keep x and y below right and bottom limits...\n if ((0, _shims.isNum)(bounds.right)) x = Math.min(x, bounds.right);\n if ((0, _shims.isNum)(bounds.bottom)) y = Math.min(y, bounds.bottom);\n\n // But above left and top limits.\n if ((0, _shims.isNum)(bounds.left)) x = Math.max(x, bounds.left);\n if ((0, _shims.isNum)(bounds.top)) y = Math.max(y, bounds.top);\n return [x, y];\n}\nfunction snapToGrid(grid /*: [number, number]*/, pendingX /*: number*/, pendingY /*: number*/) /*: [number, number]*/{\n const x = Math.round(pendingX / grid[0]) * grid[0];\n const y = Math.round(pendingY / grid[1]) * grid[1];\n return [x, y];\n}\nfunction canDragX(draggable /*: Draggable*/) /*: boolean*/{\n return draggable.props.axis === 'both' || draggable.props.axis === 'x';\n}\nfunction canDragY(draggable /*: Draggable*/) /*: boolean*/{\n return draggable.props.axis === 'both' || draggable.props.axis === 'y';\n}\n\n// Get {x, y} positions from event.\nfunction getControlPosition(e /*: MouseTouchEvent*/, touchIdentifier /*: ?number*/, draggableCore /*: DraggableCore*/) /*: ?ControlPosition*/{\n const touchObj = typeof touchIdentifier === 'number' ? (0, _domFns.getTouch)(e, touchIdentifier) : null;\n if (typeof touchIdentifier === 'number' && !touchObj) return null; // not the right touch\n const node = findDOMNode(draggableCore);\n // User can provide an offsetParent if desired.\n const offsetParent = draggableCore.props.offsetParent || node.offsetParent || node.ownerDocument.body;\n return (0, _domFns.offsetXYFromParent)(touchObj || e, offsetParent, draggableCore.props.scale);\n}\n\n// Create an data object exposed by 's events\nfunction createCoreData(draggable /*: DraggableCore*/, x /*: number*/, y /*: number*/) /*: DraggableData*/{\n const isStart = !(0, _shims.isNum)(draggable.lastX);\n const node = findDOMNode(draggable);\n if (isStart) {\n // If this is our first move, use the x and y as last coords.\n return {\n node,\n deltaX: 0,\n deltaY: 0,\n lastX: x,\n lastY: y,\n x,\n y\n };\n } else {\n // Otherwise calculate proper values.\n return {\n node,\n deltaX: x - draggable.lastX,\n deltaY: y - draggable.lastY,\n lastX: draggable.lastX,\n lastY: draggable.lastY,\n x,\n y\n };\n }\n}\n\n// Create an data exposed by 's events\nfunction createDraggableData(draggable /*: Draggable*/, coreData /*: DraggableData*/) /*: DraggableData*/{\n const scale = draggable.props.scale;\n return {\n node: coreData.node,\n x: draggable.state.x + coreData.deltaX / scale,\n y: draggable.state.y + coreData.deltaY / scale,\n deltaX: coreData.deltaX / scale,\n deltaY: coreData.deltaY / scale,\n lastX: draggable.state.x,\n lastY: draggable.state.y\n };\n}\n\n// A lot faster than stringify/parse\nfunction cloneBounds(bounds /*: Bounds*/) /*: Bounds*/{\n return {\n left: bounds.left,\n top: bounds.top,\n right: bounds.right,\n bottom: bounds.bottom\n };\n}\nfunction findDOMNode(draggable /*: Draggable | DraggableCore*/) /*: HTMLElement*/{\n const node = draggable.findDOMNode();\n if (!node) {\n throw new Error(': Unmounted during event!');\n }\n // $FlowIgnore we can't assert on HTMLElement due to tests... FIXME\n return node;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.dontSetMe = dontSetMe;\nexports.findInArray = findInArray;\nexports.int = int;\nexports.isFunction = isFunction;\nexports.isNum = isNum;\n// @credits https://gist.github.com/rogozhnikoff/a43cfed27c41e4e68cdc\nfunction findInArray(array /*: Array | TouchList*/, callback /*: Function*/) /*: any*/{\n for (let i = 0, length = array.length; i < length; i++) {\n if (callback.apply(callback, [array[i], i, array])) return array[i];\n }\n}\nfunction isFunction(func /*: any*/) /*: boolean %checks*/{\n // $FlowIgnore[method-unbinding]\n return typeof func === 'function' || Object.prototype.toString.call(func) === '[object Function]';\n}\nfunction isNum(num /*: any*/) /*: boolean %checks*/{\n return typeof num === 'number' && !isNaN(num);\n}\nfunction int(a /*: string*/) /*: number*/{\n return parseInt(a, 10);\n}\nfunction dontSetMe(props /*: Object*/, propName /*: string*/, componentName /*: string*/) /*: ?Error*/{\n if (props[propName]) {\n return new Error(\"Invalid prop \".concat(propName, \" passed to \").concat(componentName, \" - do not set this, set it on the child.\"));\n }\n}","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n\n if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n // START: Modifications:\n // Apply guards for `Object.create(null)` handling. See:\n // - https://github.com/FormidableLabs/react-fast-compare/issues/64\n // - https://github.com/epoberezkin/fast-deep-equal/issues/49\n if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString();\n // END: Modifications\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (((error.message || '').match(/stack|recursion/i))) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _reactDraggable = require(\"react-draggable\");\n\nvar _reactResizable = require(\"react-resizable\");\n\nvar _utils = require(\"./utils\");\n\nvar _calculateUtils = require(\"./calculateUtils\");\n\nvar _ReactGridLayoutPropTypes = require(\"./ReactGridLayoutPropTypes\");\n\nvar _clsx = _interopRequireDefault(require(\"clsx\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/**\n * An individual item within a ReactGridLayout.\n */\nvar GridItem = /*#__PURE__*/function (_React$Component) {\n _inherits(GridItem, _React$Component);\n\n var _super = _createSuper(GridItem);\n\n function GridItem() {\n var _this;\n\n _classCallCheck(this, GridItem);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n resizing: null,\n dragging: null,\n className: \"\"\n });\n\n _defineProperty(_assertThisInitialized(_this), \"elementRef\", /*#__PURE__*/_react.default.createRef());\n\n _defineProperty(_assertThisInitialized(_this), \"onDragStart\", function (e, _ref) {\n var node = _ref.node;\n var _this$props = _this.props,\n onDragStart = _this$props.onDragStart,\n transformScale = _this$props.transformScale;\n if (!onDragStart) return;\n var newPosition\n /*: PartialPosition*/\n = {\n top: 0,\n left: 0\n }; // TODO: this wont work on nested parents\n\n var offsetParent = node.offsetParent;\n if (!offsetParent) return;\n var parentRect = offsetParent.getBoundingClientRect();\n var clientRect = node.getBoundingClientRect();\n var cLeft = clientRect.left / transformScale;\n var pLeft = parentRect.left / transformScale;\n var cTop = clientRect.top / transformScale;\n var pTop = parentRect.top / transformScale;\n newPosition.left = cLeft - pLeft + offsetParent.scrollLeft;\n newPosition.top = cTop - pTop + offsetParent.scrollTop;\n\n _this.setState({\n dragging: newPosition\n }); // Call callback with this data\n\n\n var _calcXY = (0, _calculateUtils.calcXY)(_this.getPositionParams(), newPosition.top, newPosition.left, _this.props.w, _this.props.h),\n x = _calcXY.x,\n y = _calcXY.y;\n\n return onDragStart.call(_assertThisInitialized(_this), _this.props.i, x, y, {\n e: e,\n node: node,\n newPosition: newPosition\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onDrag\", function (e, _ref2) {\n var node = _ref2.node,\n deltaX = _ref2.deltaX,\n deltaY = _ref2.deltaY;\n var onDrag = _this.props.onDrag;\n if (!onDrag) return;\n\n if (!_this.state.dragging) {\n throw new Error(\"onDrag called before onDragStart.\");\n }\n\n var top = _this.state.dragging.top + deltaY;\n var left = _this.state.dragging.left + deltaX;\n var _this$props2 = _this.props,\n isBounded = _this$props2.isBounded,\n i = _this$props2.i,\n w = _this$props2.w,\n h = _this$props2.h,\n containerWidth = _this$props2.containerWidth;\n\n var positionParams = _this.getPositionParams(); // Boundary calculations; keeps items within the grid\n\n\n if (isBounded) {\n var offsetParent = node.offsetParent;\n\n if (offsetParent) {\n var _this$props3 = _this.props,\n margin = _this$props3.margin,\n rowHeight = _this$props3.rowHeight;\n var bottomBoundary = offsetParent.clientHeight - (0, _calculateUtils.calcGridItemWHPx)(h, rowHeight, margin[1]);\n top = (0, _calculateUtils.clamp)(top, 0, bottomBoundary);\n var colWidth = (0, _calculateUtils.calcGridColWidth)(positionParams);\n var rightBoundary = containerWidth - (0, _calculateUtils.calcGridItemWHPx)(w, colWidth, margin[0]);\n left = (0, _calculateUtils.clamp)(left, 0, rightBoundary);\n }\n }\n\n var newPosition\n /*: PartialPosition*/\n = {\n top: top,\n left: left\n };\n\n _this.setState({\n dragging: newPosition\n }); // Call callback with this data\n\n\n var _calcXY2 = (0, _calculateUtils.calcXY)(positionParams, top, left, w, h),\n x = _calcXY2.x,\n y = _calcXY2.y;\n\n return onDrag.call(_assertThisInitialized(_this), i, x, y, {\n e: e,\n node: node,\n newPosition: newPosition\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onDragStop\", function (e, _ref3) {\n var node = _ref3.node;\n var onDragStop = _this.props.onDragStop;\n if (!onDragStop) return;\n\n if (!_this.state.dragging) {\n throw new Error(\"onDragEnd called before onDragStart.\");\n }\n\n var _this$props4 = _this.props,\n w = _this$props4.w,\n h = _this$props4.h,\n i = _this$props4.i;\n var _this$state$dragging = _this.state.dragging,\n left = _this$state$dragging.left,\n top = _this$state$dragging.top;\n var newPosition\n /*: PartialPosition*/\n = {\n top: top,\n left: left\n };\n\n _this.setState({\n dragging: null\n });\n\n var _calcXY3 = (0, _calculateUtils.calcXY)(_this.getPositionParams(), top, left, w, h),\n x = _calcXY3.x,\n y = _calcXY3.y;\n\n return onDragStop.call(_assertThisInitialized(_this), i, x, y, {\n e: e,\n node: node,\n newPosition: newPosition\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onResizeStop\", function (e, callbackData) {\n _this.onResizeHandler(e, callbackData, \"onResizeStop\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onResizeStart\", function (e, callbackData) {\n _this.onResizeHandler(e, callbackData, \"onResizeStart\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onResize\", function (e, callbackData) {\n _this.onResizeHandler(e, callbackData, \"onResize\");\n });\n\n return _this;\n }\n\n _createClass(GridItem, [{\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps\n /*: Props*/\n , nextState\n /*: State*/\n )\n /*: boolean*/\n {\n // We can't deeply compare children. If the developer memoizes them, we can\n // use this optimization.\n if (this.props.children !== nextProps.children) return true;\n if (this.props.droppingPosition !== nextProps.droppingPosition) return true; // TODO memoize these calculations so they don't take so long?\n\n var oldPosition = (0, _calculateUtils.calcGridItemPosition)(this.getPositionParams(this.props), this.props.x, this.props.y, this.props.w, this.props.h, this.state);\n var newPosition = (0, _calculateUtils.calcGridItemPosition)(this.getPositionParams(nextProps), nextProps.x, nextProps.y, nextProps.w, nextProps.h, nextState);\n return !(0, _utils.fastPositionEqual)(oldPosition, newPosition) || this.props.useCSSTransforms !== nextProps.useCSSTransforms;\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.moveDroppingItem({});\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps\n /*: Props*/\n ) {\n this.moveDroppingItem(prevProps);\n } // When a droppingPosition is present, this means we should fire a move event, as if we had moved\n // this element by `x, y` pixels.\n\n }, {\n key: \"moveDroppingItem\",\n value: function moveDroppingItem(prevProps\n /*: Props*/\n ) {\n var droppingPosition = this.props.droppingPosition;\n if (!droppingPosition) return;\n var node = this.elementRef.current; // Can't find DOM node (are we unmounted?)\n\n if (!node) return;\n var prevDroppingPosition = prevProps.droppingPosition || {\n left: 0,\n top: 0\n };\n var dragging = this.state.dragging;\n var shouldDrag = dragging && droppingPosition.left !== prevDroppingPosition.left || droppingPosition.top !== prevDroppingPosition.top;\n\n if (!dragging) {\n this.onDragStart(droppingPosition.e, {\n node: node,\n deltaX: droppingPosition.left,\n deltaY: droppingPosition.top\n });\n } else if (shouldDrag) {\n var deltaX = droppingPosition.left - dragging.left;\n var deltaY = droppingPosition.top - dragging.top;\n this.onDrag(droppingPosition.e, {\n node: node,\n deltaX: deltaX,\n deltaY: deltaY\n });\n }\n }\n }, {\n key: \"getPositionParams\",\n value: function getPositionParams()\n /*: PositionParams*/\n {\n var props\n /*: Props*/\n = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n return {\n cols: props.cols,\n containerPadding: props.containerPadding,\n containerWidth: props.containerWidth,\n margin: props.margin,\n maxRows: props.maxRows,\n rowHeight: props.rowHeight\n };\n }\n /**\n * This is where we set the grid item's absolute placement. It gets a little tricky because we want to do it\n * well when server rendering, and the only way to do that properly is to use percentage width/left because\n * we don't know exactly what the browser viewport is.\n * Unfortunately, CSS Transforms, which are great for performance, break in this instance because a percentage\n * left is relative to the item itself, not its container! So we cannot use them on the server rendering pass.\n *\n * @param {Object} pos Position object with width, height, left, top.\n * @return {Object} Style object.\n */\n\n }, {\n key: \"createStyle\",\n value: function createStyle(pos\n /*: Position*/\n )\n /*: { [key: string]: ?string }*/\n {\n var _this$props5 = this.props,\n usePercentages = _this$props5.usePercentages,\n containerWidth = _this$props5.containerWidth,\n useCSSTransforms = _this$props5.useCSSTransforms;\n var style; // CSS Transforms support (default)\n\n if (useCSSTransforms) {\n style = (0, _utils.setTransform)(pos);\n } else {\n // top,left (slow)\n style = (0, _utils.setTopLeft)(pos); // This is used for server rendering.\n\n if (usePercentages) {\n style.left = (0, _utils.perc)(pos.left / containerWidth);\n style.width = (0, _utils.perc)(pos.width / containerWidth);\n }\n }\n\n return style;\n }\n /**\n * Mix a Draggable instance into a child.\n * @param {Element} child Child element.\n * @return {Element} Child wrapped in Draggable.\n */\n\n }, {\n key: \"mixinDraggable\",\n value: function mixinDraggable(child\n /*: ReactElement*/\n , isDraggable\n /*: boolean*/\n )\n /*: ReactElement*/\n {\n return /*#__PURE__*/_react.default.createElement(_reactDraggable.DraggableCore, {\n disabled: !isDraggable,\n onStart: this.onDragStart,\n onDrag: this.onDrag,\n onStop: this.onDragStop,\n handle: this.props.handle,\n cancel: \".react-resizable-handle\" + (this.props.cancel ? \",\" + this.props.cancel : \"\"),\n scale: this.props.transformScale,\n nodeRef: this.elementRef\n }, child);\n }\n /**\n * Mix a Resizable instance into a child.\n * @param {Element} child Child element.\n * @param {Object} position Position object (pixel values)\n * @return {Element} Child wrapped in Resizable.\n */\n\n }, {\n key: \"mixinResizable\",\n value: function mixinResizable(child\n /*: ReactElement*/\n , position\n /*: Position*/\n , isResizable\n /*: boolean*/\n )\n /*: ReactElement*/\n {\n var _this$props6 = this.props,\n cols = _this$props6.cols,\n x = _this$props6.x,\n minW = _this$props6.minW,\n minH = _this$props6.minH,\n maxW = _this$props6.maxW,\n maxH = _this$props6.maxH,\n transformScale = _this$props6.transformScale,\n resizeHandles = _this$props6.resizeHandles,\n resizeHandle = _this$props6.resizeHandle;\n var positionParams = this.getPositionParams(); // This is the max possible width - doesn't go to infinity because of the width of the window\n\n var maxWidth = (0, _calculateUtils.calcGridItemPosition)(positionParams, 0, 0, cols - x, 0).width; // Calculate min/max constraints using our min & maxes\n\n var mins = (0, _calculateUtils.calcGridItemPosition)(positionParams, 0, 0, minW, minH);\n var maxes = (0, _calculateUtils.calcGridItemPosition)(positionParams, 0, 0, maxW, maxH);\n var minConstraints = [mins.width, mins.height];\n var maxConstraints = [Math.min(maxes.width, maxWidth), Math.min(maxes.height, Infinity)];\n return /*#__PURE__*/_react.default.createElement(_reactResizable.Resizable // These are opts for the resize handle itself\n , {\n draggableOpts: {\n disabled: !isResizable\n },\n className: isResizable ? undefined : \"react-resizable-hide\",\n width: position.width,\n height: position.height,\n minConstraints: minConstraints,\n maxConstraints: maxConstraints,\n onResizeStop: this.onResizeStop,\n onResizeStart: this.onResizeStart,\n onResize: this.onResize,\n transformScale: transformScale,\n resizeHandles: resizeHandles,\n handle: resizeHandle\n }, child);\n }\n /**\n * onDragStart event handler\n * @param {Event} e event data\n * @param {Object} callbackData an object with node, delta and position information\n */\n\n }, {\n key: \"onResizeHandler\",\n value:\n /**\n * Wrapper around drag events to provide more useful data.\n * All drag events call the function with the given handler name,\n * with the signature (index, x, y).\n *\n * @param {String} handlerName Handler name to wrap.\n * @return {Function} Handler function.\n */\n function onResizeHandler(e\n /*: Event*/\n , _ref4, handlerName\n /*: string*/\n )\n /*: void*/\n {\n var node = _ref4.node,\n size = _ref4.size;\n var handler = this.props[handlerName];\n if (!handler) return;\n var _this$props7 = this.props,\n cols = _this$props7.cols,\n x = _this$props7.x,\n y = _this$props7.y,\n i = _this$props7.i,\n maxH = _this$props7.maxH,\n minH = _this$props7.minH;\n var _this$props8 = this.props,\n minW = _this$props8.minW,\n maxW = _this$props8.maxW; // Get new XY\n\n var _calcWH = (0, _calculateUtils.calcWH)(this.getPositionParams(), size.width, size.height, x, y),\n w = _calcWH.w,\n h = _calcWH.h; // minW should be at least 1 (TODO propTypes validation?)\n\n\n minW = Math.max(minW, 1); // maxW should be at most (cols - x)\n\n maxW = Math.min(maxW, cols - x); // Min/max capping\n\n w = (0, _calculateUtils.clamp)(w, minW, maxW);\n h = (0, _calculateUtils.clamp)(h, minH, maxH);\n this.setState({\n resizing: handlerName === \"onResizeStop\" ? null : size\n });\n handler.call(this, i, w, h, {\n e: e,\n node: node,\n size: size\n });\n }\n }, {\n key: \"render\",\n value: function render()\n /*: ReactNode*/\n {\n var _this$props9 = this.props,\n x = _this$props9.x,\n y = _this$props9.y,\n w = _this$props9.w,\n h = _this$props9.h,\n isDraggable = _this$props9.isDraggable,\n isResizable = _this$props9.isResizable,\n droppingPosition = _this$props9.droppingPosition,\n useCSSTransforms = _this$props9.useCSSTransforms;\n var pos = (0, _calculateUtils.calcGridItemPosition)(this.getPositionParams(), x, y, w, h, this.state);\n\n var child = _react.default.Children.only(this.props.children); // Create the child element. We clone the existing element but modify its className and style.\n\n\n var newChild = /*#__PURE__*/_react.default.cloneElement(child, {\n ref: this.elementRef,\n className: (0, _clsx.default)(\"react-grid-item\", child.props.className, this.props.className, {\n static: this.props.static,\n resizing: Boolean(this.state.resizing),\n \"react-draggable\": isDraggable,\n \"react-draggable-dragging\": Boolean(this.state.dragging),\n dropping: Boolean(droppingPosition),\n cssTransforms: useCSSTransforms\n }),\n // We can set the width and height on the child, but unfortunately we can't set the position.\n style: _objectSpread(_objectSpread(_objectSpread({}, this.props.style), child.props.style), this.createStyle(pos))\n }); // Resizable support. This is usually on but the user can toggle it off.\n\n\n newChild = this.mixinResizable(newChild, pos, isResizable); // Draggable support. This is always on, except for with placeholders.\n\n newChild = this.mixinDraggable(newChild, isDraggable);\n return newChild;\n }\n }]);\n\n return GridItem;\n}(_react.default.Component);\n\nexports.default = GridItem;\n\n_defineProperty(GridItem, \"propTypes\", {\n // Children must be only a single element\n children: _propTypes.default.element,\n // General grid attributes\n cols: _propTypes.default.number.isRequired,\n containerWidth: _propTypes.default.number.isRequired,\n rowHeight: _propTypes.default.number.isRequired,\n margin: _propTypes.default.array.isRequired,\n maxRows: _propTypes.default.number.isRequired,\n containerPadding: _propTypes.default.array.isRequired,\n // These are all in grid units\n x: _propTypes.default.number.isRequired,\n y: _propTypes.default.number.isRequired,\n w: _propTypes.default.number.isRequired,\n h: _propTypes.default.number.isRequired,\n // All optional\n minW: function minW(props\n /*: Props*/\n , propName\n /*: string*/\n ) {\n var value = props[propName];\n if (typeof value !== \"number\") return new Error(\"minWidth not Number\");\n if (value > props.w || value > props.maxW) return new Error(\"minWidth larger than item width/maxWidth\");\n },\n maxW: function maxW(props\n /*: Props*/\n , propName\n /*: string*/\n ) {\n var value = props[propName];\n if (typeof value !== \"number\") return new Error(\"maxWidth not Number\");\n if (value < props.w || value < props.minW) return new Error(\"maxWidth smaller than item width/minWidth\");\n },\n minH: function minH(props\n /*: Props*/\n , propName\n /*: string*/\n ) {\n var value = props[propName];\n if (typeof value !== \"number\") return new Error(\"minHeight not Number\");\n if (value > props.h || value > props.maxH) return new Error(\"minHeight larger than item height/maxHeight\");\n },\n maxH: function maxH(props\n /*: Props*/\n , propName\n /*: string*/\n ) {\n var value = props[propName];\n if (typeof value !== \"number\") return new Error(\"maxHeight not Number\");\n if (value < props.h || value < props.minH) return new Error(\"maxHeight smaller than item height/minHeight\");\n },\n // ID is nice to have for callbacks\n i: _propTypes.default.string.isRequired,\n // Resize handle options\n resizeHandles: _ReactGridLayoutPropTypes.resizeHandleAxesType,\n resizeHandle: _ReactGridLayoutPropTypes.resizeHandleType,\n // Functions\n onDragStop: _propTypes.default.func,\n onDragStart: _propTypes.default.func,\n onDrag: _propTypes.default.func,\n onResizeStop: _propTypes.default.func,\n onResizeStart: _propTypes.default.func,\n onResize: _propTypes.default.func,\n // Flags\n isDraggable: _propTypes.default.bool.isRequired,\n isResizable: _propTypes.default.bool.isRequired,\n isBounded: _propTypes.default.bool.isRequired,\n static: _propTypes.default.bool,\n // Use CSS transforms instead of top/left\n useCSSTransforms: _propTypes.default.bool.isRequired,\n transformScale: _propTypes.default.number,\n // Others\n className: _propTypes.default.string,\n // Selector for draggable handle\n handle: _propTypes.default.string,\n // Selector for draggable cancel (see react-draggable)\n cancel: _propTypes.default.string,\n // Current position of a dropping element\n droppingPosition: _propTypes.default.shape({\n e: _propTypes.default.object.isRequired,\n left: _propTypes.default.number.isRequired,\n top: _propTypes.default.number.isRequired\n })\n});\n\n_defineProperty(GridItem, \"defaultProps\", {\n className: \"\",\n cancel: \"\",\n handle: \"\",\n minH: 1,\n minW: 1,\n maxH: Infinity,\n maxW: Infinity,\n transformScale: 1\n});","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _lodash = _interopRequireDefault(require(\"lodash.isequal\"));\n\nvar _clsx = _interopRequireDefault(require(\"clsx\"));\n\nvar _utils = require(\"./utils\");\n\nvar _calculateUtils = require(\"./calculateUtils\");\n\nvar _GridItem = _interopRequireDefault(require(\"./GridItem\"));\n\nvar _ReactGridLayoutPropTypes = _interopRequireDefault(require(\"./ReactGridLayoutPropTypes\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// End Types\nvar layoutClassName = \"react-grid-layout\";\nvar isFirefox = false; // Try...catch will protect from navigator not existing (e.g. node) or a bad implementation of navigator\n\ntry {\n isFirefox = /firefox/i.test(navigator.userAgent);\n} catch (e) {\n /* Ignore */\n}\n/**\n * A reactive, fluid grid layout with draggable, resizable components.\n */\n\n\nvar ReactGridLayout = /*#__PURE__*/function (_React$Component) {\n _inherits(ReactGridLayout, _React$Component);\n\n var _super = _createSuper(ReactGridLayout);\n\n function ReactGridLayout() {\n var _this;\n\n _classCallCheck(this, ReactGridLayout);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n activeDrag: null,\n layout: (0, _utils.synchronizeLayoutWithChildren)(_this.props.layout, _this.props.children, _this.props.cols, // Legacy support for verticalCompact: false\n (0, _utils.compactType)(_this.props), _this.props.allowOverlap),\n mounted: false,\n oldDragItem: null,\n oldLayout: null,\n oldResizeItem: null,\n droppingDOMNode: null,\n children: []\n });\n\n _defineProperty(_assertThisInitialized(_this), \"dragEnterCounter\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"onDragStart\", function (i\n /*: string*/\n , x\n /*: number*/\n , y\n /*: number*/\n , _ref) {\n var e = _ref.e,\n node = _ref.node;\n var layout = _this.state.layout;\n var l = (0, _utils.getLayoutItem)(layout, i);\n if (!l) return;\n\n _this.setState({\n oldDragItem: (0, _utils.cloneLayoutItem)(l),\n oldLayout: layout\n });\n\n return _this.props.onDragStart(layout, l, l, null, e, node);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onDrag\", function (i, x, y, _ref2) {\n var e = _ref2.e,\n node = _ref2.node;\n var oldDragItem = _this.state.oldDragItem;\n var layout = _this.state.layout;\n var _this$props = _this.props,\n cols = _this$props.cols,\n allowOverlap = _this$props.allowOverlap,\n preventCollision = _this$props.preventCollision;\n var l = (0, _utils.getLayoutItem)(layout, i);\n if (!l) return; // Create placeholder (display only)\n\n var placeholder = {\n w: l.w,\n h: l.h,\n x: l.x,\n y: l.y,\n placeholder: true,\n i: i\n }; // Move the element to the dragged location.\n\n var isUserAction = true;\n layout = (0, _utils.moveElement)(layout, l, x, y, isUserAction, preventCollision, (0, _utils.compactType)(_this.props), cols, allowOverlap);\n\n _this.props.onDrag(layout, oldDragItem, l, placeholder, e, node);\n\n _this.setState({\n layout: allowOverlap ? layout : (0, _utils.compact)(layout, (0, _utils.compactType)(_this.props), cols),\n activeDrag: placeholder\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onDragStop\", function (i, x, y, _ref3) {\n var e = _ref3.e,\n node = _ref3.node;\n if (!_this.state.activeDrag) return;\n var oldDragItem = _this.state.oldDragItem;\n var layout = _this.state.layout;\n var _this$props2 = _this.props,\n cols = _this$props2.cols,\n preventCollision = _this$props2.preventCollision,\n allowOverlap = _this$props2.allowOverlap;\n var l = (0, _utils.getLayoutItem)(layout, i);\n if (!l) return; // Move the element here\n\n var isUserAction = true;\n layout = (0, _utils.moveElement)(layout, l, x, y, isUserAction, preventCollision, (0, _utils.compactType)(_this.props), cols, allowOverlap);\n\n _this.props.onDragStop(layout, oldDragItem, l, null, e, node); // Set state\n\n\n var newLayout = allowOverlap ? layout : (0, _utils.compact)(layout, (0, _utils.compactType)(_this.props), cols);\n var oldLayout = _this.state.oldLayout;\n\n _this.setState({\n activeDrag: null,\n layout: newLayout,\n oldDragItem: null,\n oldLayout: null\n });\n\n _this.onLayoutMaybeChanged(newLayout, oldLayout);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onResizeStart\", function (i, w, h, _ref4) {\n var e = _ref4.e,\n node = _ref4.node;\n var layout = _this.state.layout;\n var l = (0, _utils.getLayoutItem)(layout, i);\n if (!l) return;\n\n _this.setState({\n oldResizeItem: (0, _utils.cloneLayoutItem)(l),\n oldLayout: _this.state.layout\n });\n\n _this.props.onResizeStart(layout, l, l, null, e, node);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onResize\", function (i, w, h, _ref5) {\n var e = _ref5.e,\n node = _ref5.node;\n var _this$state = _this.state,\n layout = _this$state.layout,\n oldResizeItem = _this$state.oldResizeItem;\n var _this$props3 = _this.props,\n cols = _this$props3.cols,\n preventCollision = _this$props3.preventCollision,\n allowOverlap = _this$props3.allowOverlap;\n\n var _withLayoutItem = (0, _utils.withLayoutItem)(layout, i, function (l) {\n // Something like quad tree should be used\n // to find collisions faster\n var hasCollisions;\n\n if (preventCollision && !allowOverlap) {\n var collisions = (0, _utils.getAllCollisions)(layout, _objectSpread(_objectSpread({}, l), {}, {\n w: w,\n h: h\n })).filter(function (layoutItem) {\n return layoutItem.i !== l.i;\n });\n hasCollisions = collisions.length > 0; // If we're colliding, we need adjust the placeholder.\n\n // If we're colliding, we need adjust the placeholder.\n if (hasCollisions) {\n // adjust w && h to maximum allowed space\n var leastX = Infinity,\n leastY = Infinity;\n collisions.forEach(function (layoutItem) {\n if (layoutItem.x > l.x) leastX = Math.min(leastX, layoutItem.x);\n if (layoutItem.y > l.y) leastY = Math.min(leastY, layoutItem.y);\n });\n if (Number.isFinite(leastX)) l.w = leastX - l.x;\n if (Number.isFinite(leastY)) l.h = leastY - l.y;\n }\n }\n\n if (!hasCollisions) {\n // Set new width and height.\n l.w = w;\n l.h = h;\n }\n\n return l;\n }),\n _withLayoutItem2 = _slicedToArray(_withLayoutItem, 2),\n newLayout = _withLayoutItem2[0],\n l = _withLayoutItem2[1]; // Shouldn't ever happen, but typechecking makes it necessary\n\n\n if (!l) return; // Create placeholder element (display only)\n\n var placeholder = {\n w: l.w,\n h: l.h,\n x: l.x,\n y: l.y,\n static: true,\n i: i\n };\n\n _this.props.onResize(newLayout, oldResizeItem, l, placeholder, e, node); // Re-compact the newLayout and set the drag placeholder.\n\n\n _this.setState({\n layout: allowOverlap ? newLayout : (0, _utils.compact)(newLayout, (0, _utils.compactType)(_this.props), cols),\n activeDrag: placeholder\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onResizeStop\", function (i, w, h, _ref6) {\n var e = _ref6.e,\n node = _ref6.node;\n var _this$state2 = _this.state,\n layout = _this$state2.layout,\n oldResizeItem = _this$state2.oldResizeItem;\n var _this$props4 = _this.props,\n cols = _this$props4.cols,\n allowOverlap = _this$props4.allowOverlap;\n var l = (0, _utils.getLayoutItem)(layout, i);\n\n _this.props.onResizeStop(layout, oldResizeItem, l, null, e, node); // Set state\n\n\n var newLayout = allowOverlap ? layout : (0, _utils.compact)(layout, (0, _utils.compactType)(_this.props), cols);\n var oldLayout = _this.state.oldLayout;\n\n _this.setState({\n activeDrag: null,\n layout: newLayout,\n oldResizeItem: null,\n oldLayout: null\n });\n\n _this.onLayoutMaybeChanged(newLayout, oldLayout);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onDragOver\", function (e) {\n var _e$nativeEvent$target;\n\n e.preventDefault(); // Prevent any browser native action\n\n e.stopPropagation(); // we should ignore events from layout's children in Firefox\n // to avoid unpredictable jumping of a dropping placeholder\n // FIXME remove this hack\n\n if (isFirefox && // $FlowIgnore can't figure this out\n !((_e$nativeEvent$target = e.nativeEvent.target) !== null && _e$nativeEvent$target !== void 0 && _e$nativeEvent$target.classList.contains(layoutClassName))) {\n return false;\n }\n\n var _this$props5 = _this.props,\n droppingItem = _this$props5.droppingItem,\n onDropDragOver = _this$props5.onDropDragOver,\n margin = _this$props5.margin,\n cols = _this$props5.cols,\n rowHeight = _this$props5.rowHeight,\n maxRows = _this$props5.maxRows,\n width = _this$props5.width,\n containerPadding = _this$props5.containerPadding,\n transformScale = _this$props5.transformScale; // Allow user to customize the dropping item or short-circuit the drop based on the results\n // of the `onDragOver(e: Event)` callback.\n\n var onDragOverResult = onDropDragOver === null || onDropDragOver === void 0 ? void 0 : onDropDragOver(e);\n\n if (onDragOverResult === false) {\n if (_this.state.droppingDOMNode) {\n _this.removeDroppingPlaceholder();\n }\n\n return false;\n }\n\n var finalDroppingItem = _objectSpread(_objectSpread({}, droppingItem), onDragOverResult);\n\n var layout = _this.state.layout; // This is relative to the DOM element that this event fired for.\n\n var _e$nativeEvent = e.nativeEvent,\n layerX = _e$nativeEvent.layerX,\n layerY = _e$nativeEvent.layerY;\n var droppingPosition = {\n left: layerX / transformScale,\n top: layerY / transformScale,\n e: e\n };\n\n if (!_this.state.droppingDOMNode) {\n var positionParams\n /*: PositionParams*/\n = {\n cols: cols,\n margin: margin,\n maxRows: maxRows,\n rowHeight: rowHeight,\n containerWidth: width,\n containerPadding: containerPadding || margin\n };\n var calculatedPosition = (0, _calculateUtils.calcXY)(positionParams, layerY, layerX, finalDroppingItem.w, finalDroppingItem.h);\n\n _this.setState({\n droppingDOMNode: /*#__PURE__*/React.createElement(\"div\", {\n key: finalDroppingItem.i\n }),\n droppingPosition: droppingPosition,\n layout: [].concat(_toConsumableArray(layout), [_objectSpread(_objectSpread({}, finalDroppingItem), {}, {\n x: calculatedPosition.x,\n y: calculatedPosition.y,\n static: false,\n isDraggable: true\n })])\n });\n } else if (_this.state.droppingPosition) {\n var _this$state$droppingP = _this.state.droppingPosition,\n left = _this$state$droppingP.left,\n top = _this$state$droppingP.top;\n var shouldUpdatePosition = left != layerX || top != layerY;\n\n if (shouldUpdatePosition) {\n _this.setState({\n droppingPosition: droppingPosition\n });\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"removeDroppingPlaceholder\", function () {\n var _this$props6 = _this.props,\n droppingItem = _this$props6.droppingItem,\n cols = _this$props6.cols;\n var layout = _this.state.layout;\n var newLayout = (0, _utils.compact)(layout.filter(function (l) {\n return l.i !== droppingItem.i;\n }), (0, _utils.compactType)(_this.props), cols);\n\n _this.setState({\n layout: newLayout,\n droppingDOMNode: null,\n activeDrag: null,\n droppingPosition: undefined\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onDragLeave\", function (e) {\n e.preventDefault(); // Prevent any browser native action\n\n e.stopPropagation();\n _this.dragEnterCounter--; // onDragLeave can be triggered on each layout's child.\n // But we know that count of dragEnter and dragLeave events\n // will be balanced after leaving the layout's container\n // so we can increase and decrease count of dragEnter and\n // when it'll be equal to 0 we'll remove the placeholder\n\n if (_this.dragEnterCounter === 0) {\n _this.removeDroppingPlaceholder();\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onDragEnter\", function (e) {\n e.preventDefault(); // Prevent any browser native action\n\n e.stopPropagation();\n _this.dragEnterCounter++;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onDrop\", function (e\n /*: Event*/\n ) {\n e.preventDefault(); // Prevent any browser native action\n\n e.stopPropagation();\n var droppingItem = _this.props.droppingItem;\n var layout = _this.state.layout;\n var item = layout.find(function (l) {\n return l.i === droppingItem.i;\n }); // reset dragEnter counter on drop\n\n _this.dragEnterCounter = 0;\n\n _this.removeDroppingPlaceholder();\n\n _this.props.onDrop(layout, item, e);\n });\n\n return _this;\n }\n\n _createClass(ReactGridLayout, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.setState({\n mounted: true\n }); // Possibly call back with layout on mount. This should be done after correcting the layout width\n // to ensure we don't rerender with the wrong width.\n\n this.onLayoutMaybeChanged(this.state.layout, this.props.layout);\n }\n }, {\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps\n /*: Props*/\n , nextState\n /*: State*/\n )\n /*: boolean*/\n {\n return (// NOTE: this is almost always unequal. Therefore the only way to get better performance\n // from SCU is if the user intentionally memoizes children. If they do, and they can\n // handle changes properly, performance will increase.\n this.props.children !== nextProps.children || !(0, _utils.fastRGLPropsEqual)(this.props, nextProps, _lodash.default) || this.state.activeDrag !== nextState.activeDrag || this.state.mounted !== nextState.mounted || this.state.droppingPosition !== nextState.droppingPosition\n );\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps\n /*: Props*/\n , prevState\n /*: State*/\n ) {\n if (!this.state.activeDrag) {\n var newLayout = this.state.layout;\n var oldLayout = prevState.layout;\n this.onLayoutMaybeChanged(newLayout, oldLayout);\n }\n }\n /**\n * Calculates a pixel value for the container.\n * @return {String} Container height in pixels.\n */\n\n }, {\n key: \"containerHeight\",\n value: function containerHeight()\n /*: ?string*/\n {\n if (!this.props.autoSize) return;\n var nbRow = (0, _utils.bottom)(this.state.layout);\n var containerPaddingY = this.props.containerPadding ? this.props.containerPadding[1] : this.props.margin[1];\n return nbRow * this.props.rowHeight + (nbRow - 1) * this.props.margin[1] + containerPaddingY * 2 + \"px\";\n }\n /**\n * When dragging starts\n * @param {String} i Id of the child\n * @param {Number} x X position of the move\n * @param {Number} y Y position of the move\n * @param {Event} e The mousedown event\n * @param {Element} node The current dragging DOM element\n */\n\n }, {\n key: \"onLayoutMaybeChanged\",\n value: function onLayoutMaybeChanged(newLayout\n /*: Layout*/\n , oldLayout\n /*: ?Layout*/\n ) {\n if (!oldLayout) oldLayout = this.state.layout;\n\n if (!(0, _lodash.default)(oldLayout, newLayout)) {\n this.props.onLayoutChange(newLayout);\n }\n }\n }, {\n key: \"placeholder\",\n value:\n /**\n * Create a placeholder object.\n * @return {Element} Placeholder div.\n */\n function placeholder()\n /*: ?ReactElement*/\n {\n var activeDrag = this.state.activeDrag;\n if (!activeDrag) return null;\n var _this$props7 = this.props,\n width = _this$props7.width,\n cols = _this$props7.cols,\n margin = _this$props7.margin,\n containerPadding = _this$props7.containerPadding,\n rowHeight = _this$props7.rowHeight,\n maxRows = _this$props7.maxRows,\n useCSSTransforms = _this$props7.useCSSTransforms,\n transformScale = _this$props7.transformScale; // {...this.state.activeDrag} is pretty slow, actually\n\n return /*#__PURE__*/React.createElement(_GridItem.default, {\n w: activeDrag.w,\n h: activeDrag.h,\n x: activeDrag.x,\n y: activeDrag.y,\n i: activeDrag.i,\n className: \"react-grid-placeholder\",\n containerWidth: width,\n cols: cols,\n margin: margin,\n containerPadding: containerPadding || margin,\n maxRows: maxRows,\n rowHeight: rowHeight,\n isDraggable: false,\n isResizable: false,\n isBounded: false,\n useCSSTransforms: useCSSTransforms,\n transformScale: transformScale\n }, /*#__PURE__*/React.createElement(\"div\", null));\n }\n /**\n * Given a grid item, set its style attributes & surround in a .\n * @param {Element} child React element.\n * @return {Element} Element wrapped in draggable and properly placed.\n */\n\n }, {\n key: \"processGridItem\",\n value: function processGridItem(child\n /*: ReactElement*/\n , isDroppingItem\n /*: boolean*/\n )\n /*: ?ReactElement*/\n {\n if (!child || !child.key) return;\n var l = (0, _utils.getLayoutItem)(this.state.layout, String(child.key));\n if (!l) return null;\n var _this$props8 = this.props,\n width = _this$props8.width,\n cols = _this$props8.cols,\n margin = _this$props8.margin,\n containerPadding = _this$props8.containerPadding,\n rowHeight = _this$props8.rowHeight,\n maxRows = _this$props8.maxRows,\n isDraggable = _this$props8.isDraggable,\n isResizable = _this$props8.isResizable,\n isBounded = _this$props8.isBounded,\n useCSSTransforms = _this$props8.useCSSTransforms,\n transformScale = _this$props8.transformScale,\n draggableCancel = _this$props8.draggableCancel,\n draggableHandle = _this$props8.draggableHandle,\n resizeHandles = _this$props8.resizeHandles,\n resizeHandle = _this$props8.resizeHandle;\n var _this$state3 = this.state,\n mounted = _this$state3.mounted,\n droppingPosition = _this$state3.droppingPosition; // Determine user manipulations possible.\n // If an item is static, it can't be manipulated by default.\n // Any properties defined directly on the grid item will take precedence.\n\n var draggable = typeof l.isDraggable === \"boolean\" ? l.isDraggable : !l.static && isDraggable;\n var resizable = typeof l.isResizable === \"boolean\" ? l.isResizable : !l.static && isResizable;\n var resizeHandlesOptions = l.resizeHandles || resizeHandles; // isBounded set on child if set on parent, and child is not explicitly false\n\n var bounded = draggable && isBounded && l.isBounded !== false;\n return /*#__PURE__*/React.createElement(_GridItem.default, {\n containerWidth: width,\n cols: cols,\n margin: margin,\n containerPadding: containerPadding || margin,\n maxRows: maxRows,\n rowHeight: rowHeight,\n cancel: draggableCancel,\n handle: draggableHandle,\n onDragStop: this.onDragStop,\n onDragStart: this.onDragStart,\n onDrag: this.onDrag,\n onResizeStart: this.onResizeStart,\n onResize: this.onResize,\n onResizeStop: this.onResizeStop,\n isDraggable: draggable,\n isResizable: resizable,\n isBounded: bounded,\n useCSSTransforms: useCSSTransforms && mounted,\n usePercentages: !mounted,\n transformScale: transformScale,\n w: l.w,\n h: l.h,\n x: l.x,\n y: l.y,\n i: l.i,\n minH: l.minH,\n minW: l.minW,\n maxH: l.maxH,\n maxW: l.maxW,\n static: l.static,\n droppingPosition: isDroppingItem ? droppingPosition : undefined,\n resizeHandles: resizeHandlesOptions,\n resizeHandle: resizeHandle\n }, child);\n } // Called while dragging an element. Part of browser native drag/drop API.\n // Native event target might be the layout itself, or an element within the layout.\n\n }, {\n key: \"render\",\n value: function render()\n /*: React.Element<\"div\">*/\n {\n var _this2 = this;\n\n var _this$props9 = this.props,\n className = _this$props9.className,\n style = _this$props9.style,\n isDroppable = _this$props9.isDroppable,\n innerRef = _this$props9.innerRef;\n var mergedClassName = (0, _clsx.default)(layoutClassName, className);\n\n var mergedStyle = _objectSpread({\n height: this.containerHeight()\n }, style);\n\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: innerRef,\n className: mergedClassName,\n style: mergedStyle,\n onDrop: isDroppable ? this.onDrop : _utils.noop,\n onDragLeave: isDroppable ? this.onDragLeave : _utils.noop,\n onDragEnter: isDroppable ? this.onDragEnter : _utils.noop,\n onDragOver: isDroppable ? this.onDragOver : _utils.noop\n }, React.Children.map(this.props.children, function (child) {\n return _this2.processGridItem(child);\n }), isDroppable && this.state.droppingDOMNode && this.processGridItem(this.state.droppingDOMNode, true), this.placeholder());\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps\n /*: Props*/\n , prevState\n /*: State*/\n )\n /*: $Shape | null*/\n {\n var newLayoutBase;\n\n if (prevState.activeDrag) {\n return null;\n } // Legacy support for compactType\n // Allow parent to set layout directly.\n\n\n if (!(0, _lodash.default)(nextProps.layout, prevState.propsLayout) || nextProps.compactType !== prevState.compactType) {\n newLayoutBase = nextProps.layout;\n } else if (!(0, _utils.childrenEqual)(nextProps.children, prevState.children)) {\n // If children change, also regenerate the layout. Use our state\n // as the base in case because it may be more up to date than\n // what is in props.\n newLayoutBase = prevState.layout;\n } // We need to regenerate the layout.\n\n\n if (newLayoutBase) {\n var newLayout = (0, _utils.synchronizeLayoutWithChildren)(newLayoutBase, nextProps.children, nextProps.cols, (0, _utils.compactType)(nextProps), nextProps.allowOverlap);\n return {\n layout: newLayout,\n // We need to save these props to state for using\n // getDerivedStateFromProps instead of componentDidMount (in which we would get extra rerender)\n compactType: nextProps.compactType,\n children: nextProps.children,\n propsLayout: nextProps.layout\n };\n }\n\n return null;\n }\n }]);\n\n return ReactGridLayout;\n}(React.Component);\n\nexports.default = ReactGridLayout;\n\n_defineProperty(ReactGridLayout, \"displayName\", \"ReactGridLayout\");\n\n_defineProperty(ReactGridLayout, \"propTypes\", _ReactGridLayoutPropTypes.default);\n\n_defineProperty(ReactGridLayout, \"defaultProps\", {\n autoSize: true,\n cols: 12,\n className: \"\",\n style: {},\n draggableHandle: \"\",\n draggableCancel: \"\",\n containerPadding: null,\n rowHeight: 150,\n maxRows: Infinity,\n // infinite vertical growth\n layout: [],\n margin: [10, 10],\n isBounded: false,\n isDraggable: true,\n isResizable: true,\n allowOverlap: false,\n isDroppable: false,\n useCSSTransforms: true,\n transformScale: 1,\n verticalCompact: true,\n compactType: \"vertical\",\n preventCollision: false,\n droppingItem: {\n i: \"__dropping-elem__\",\n h: 1,\n w: 1\n },\n resizeHandles: [\"se\"],\n onLayoutChange: _utils.noop,\n onDragStart: _utils.noop,\n onDrag: _utils.noop,\n onDragStop: _utils.noop,\n onResizeStart: _utils.noop,\n onResize: _utils.noop,\n onResizeStop: _utils.noop,\n onDrop: _utils.noop,\n onDropDragOver: _utils.noop\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.resizeHandleType = exports.resizeHandleAxesType = exports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Defines which resize handles should be rendered (default: 'se')\n// Allows for any combination of:\n// 's' - South handle (bottom-center)\n// 'w' - West handle (left-center)\n// 'e' - East handle (right-center)\n// 'n' - North handle (top-center)\n// 'sw' - Southwest handle (bottom-left)\n// 'nw' - Northwest handle (top-left)\n// 'se' - Southeast handle (bottom-right)\n// 'ne' - Northeast handle (top-right)\nvar resizeHandleAxesType\n/*: ReactPropsChainableTypeChecker*/\n= _propTypes.default.arrayOf(_propTypes.default.oneOf([\"s\", \"w\", \"e\", \"n\", \"sw\", \"nw\", \"se\", \"ne\"])); // Custom component for resize handles\n\n\nexports.resizeHandleAxesType = resizeHandleAxesType;\n\nvar resizeHandleType\n/*: ReactPropsChainableTypeChecker*/\n= _propTypes.default.oneOfType([_propTypes.default.node, _propTypes.default.func]);\n/*:: export type Props = {|\n className: string,\n style: Object,\n width: number,\n autoSize: boolean,\n cols: number,\n draggableCancel: string,\n draggableHandle: string,\n verticalCompact: boolean,\n compactType: CompactType,\n layout: Layout,\n margin: [number, number],\n containerPadding: ?[number, number],\n rowHeight: number,\n maxRows: number,\n isBounded: boolean,\n isDraggable: boolean,\n isResizable: boolean,\n isDroppable: boolean,\n preventCollision: boolean,\n useCSSTransforms: boolean,\n transformScale: number,\n droppingItem: $Shape,\n resizeHandles: ResizeHandleAxis[],\n resizeHandle?: ResizeHandle,\n allowOverlap: boolean,\n\n // Callbacks\n onLayoutChange: Layout => void,\n onDrag: EventCallback,\n onDragStart: EventCallback,\n onDragStop: EventCallback,\n onResize: EventCallback,\n onResizeStart: EventCallback,\n onResizeStop: EventCallback,\n onDropDragOver: (e: DragOverEvent) => ?({| w?: number, h?: number |} | false),\n onDrop: (layout: Layout, item: ?LayoutItem, e: Event) => void,\n children: ReactChildrenArray>,\n innerRef?: Ref<\"div\">\n|};*/\n\n/*:: export type DefaultProps = $Diff<\n Props,\n {\n children: ReactChildrenArray>,\n width: number\n }\n>;*/\n\n\nexports.resizeHandleType = resizeHandleType;\nvar _default = {\n //\n // Basic props\n //\n className: _propTypes.default.string,\n style: _propTypes.default.object,\n // This can be set explicitly. If it is not set, it will automatically\n // be set to the container width. Note that resizes will *not* cause this to adjust.\n // If you need that behavior, use WidthProvider.\n width: _propTypes.default.number,\n // If true, the container height swells and contracts to fit contents\n autoSize: _propTypes.default.bool,\n // # of cols.\n cols: _propTypes.default.number,\n // A selector that will not be draggable.\n draggableCancel: _propTypes.default.string,\n // A selector for the draggable handler\n draggableHandle: _propTypes.default.string,\n // Deprecated\n verticalCompact: function verticalCompact(props\n /*: Props*/\n ) {\n if (props.verticalCompact === false && process.env.NODE_ENV !== \"production\") {\n console.warn( // eslint-disable-line no-console\n \"`verticalCompact` on is deprecated and will be removed soon. \" + 'Use `compactType`: \"horizontal\" | \"vertical\" | null.');\n }\n },\n // Choose vertical or hotizontal compaction\n compactType: (_propTypes.default.oneOf([\"vertical\", \"horizontal\"])\n /*: ReactPropsChainableTypeChecker*/\n ),\n // layout is an array of object with the format:\n // {x: Number, y: Number, w: Number, h: Number, i: String}\n layout: function layout(props\n /*: Props*/\n ) {\n var layout = props.layout; // I hope you're setting the data-grid property on the grid items\n\n if (layout === undefined) return;\n\n require(\"./utils\").validateLayout(layout, \"layout\");\n },\n //\n // Grid Dimensions\n //\n // Margin between items [x, y] in px\n margin: (_propTypes.default.arrayOf(_propTypes.default.number)\n /*: ReactPropsChainableTypeChecker*/\n ),\n // Padding inside the container [x, y] in px\n containerPadding: (_propTypes.default.arrayOf(_propTypes.default.number)\n /*: ReactPropsChainableTypeChecker*/\n ),\n // Rows have a static height, but you can change this based on breakpoints if you like\n rowHeight: _propTypes.default.number,\n // Default Infinity, but you can specify a max here if you like.\n // Note that this isn't fully fleshed out and won't error if you specify a layout that\n // extends beyond the row capacity. It will, however, not allow users to drag/resize\n // an item past the barrier. They can push items beyond the barrier, though.\n // Intentionally not documented for this reason.\n maxRows: _propTypes.default.number,\n //\n // Flags\n //\n isBounded: _propTypes.default.bool,\n isDraggable: _propTypes.default.bool,\n isResizable: _propTypes.default.bool,\n // If true, grid can be placed one over the other.\n allowOverlap: _propTypes.default.bool,\n // If true, grid items won't change position when being dragged over.\n preventCollision: _propTypes.default.bool,\n // Use CSS transforms instead of top/left\n useCSSTransforms: _propTypes.default.bool,\n // parent layout transform scale\n transformScale: _propTypes.default.number,\n // If true, an external element can trigger onDrop callback with a specific grid position as a parameter\n isDroppable: _propTypes.default.bool,\n // Resize handle options\n resizeHandles: resizeHandleAxesType,\n resizeHandle: resizeHandleType,\n //\n // Callbacks\n //\n // Callback so you can save the layout. Calls after each drag & resize stops.\n onLayoutChange: _propTypes.default.func,\n // Calls when drag starts. Callback is of the signature (layout, oldItem, newItem, placeholder, e, ?node).\n // All callbacks below have the same signature. 'start' and 'stop' callbacks omit the 'placeholder'.\n onDragStart: _propTypes.default.func,\n // Calls on each drag movement.\n onDrag: _propTypes.default.func,\n // Calls when drag is complete.\n onDragStop: _propTypes.default.func,\n //Calls when resize starts.\n onResizeStart: _propTypes.default.func,\n // Calls when resize movement happens.\n onResize: _propTypes.default.func,\n // Calls when resize is complete.\n onResizeStop: _propTypes.default.func,\n // Calls when some element is dropped.\n onDrop: _propTypes.default.func,\n //\n // Other validations\n //\n droppingItem: (_propTypes.default.shape({\n i: _propTypes.default.string.isRequired,\n w: _propTypes.default.number.isRequired,\n h: _propTypes.default.number.isRequired\n })\n /*: ReactPropsChainableTypeChecker*/\n ),\n // Children must not have duplicate keys.\n children: function children(props\n /*: Props*/\n , propName\n /*: string*/\n ) {\n var children = props[propName]; // Check children keys for duplicates. Throw if found.\n\n var keys = {};\n\n _react.default.Children.forEach(children, function (child) {\n if ((child === null || child === void 0 ? void 0 : child.key) == null) return;\n\n if (keys[child.key]) {\n throw new Error('Duplicate child key \"' + child.key + '\" found! This will cause problems in ReactGridLayout.');\n }\n\n keys[child.key] = true;\n });\n },\n // Optional ref for getting a reference for the wrapping div.\n innerRef: _propTypes.default.any\n};\nexports.default = _default;","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _lodash = _interopRequireDefault(require(\"lodash.isequal\"));\n\nvar _utils = require(\"./utils\");\n\nvar _responsiveUtils = require(\"./responsiveUtils\");\n\nvar _ReactGridLayout = _interopRequireDefault(require(\"./ReactGridLayout\"));\n\nvar _excluded = [\"breakpoint\", \"breakpoints\", \"cols\", \"layouts\", \"margin\", \"containerPadding\", \"onBreakpointChange\", \"onLayoutChange\", \"onWidthChange\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// $FlowFixMe[method-unbinding]\nvar type = function type(obj) {\n return Object.prototype.toString.call(obj);\n};\n/**\n * Get a value of margin or containerPadding.\n *\n * @param {Array | Object} param Margin | containerPadding, e.g. [10, 10] | {lg: [10, 10], ...}.\n * @param {String} breakpoint Breakpoint: lg, md, sm, xs and etc.\n * @return {Array}\n */\n\n\nfunction getIndentationValue\n/*:: */\n(param\n/*: { [key: string]: T } | T*/\n, breakpoint\n/*: string*/\n)\n/*: T*/\n{\n // $FlowIgnore TODO fix this typedef\n if (param == null) return null; // $FlowIgnore TODO fix this typedef\n\n return Array.isArray(param) ? param : param[breakpoint];\n}\n/*:: type State = {\n layout: Layout,\n breakpoint: string,\n cols: number,\n layouts?: ResponsiveLayout\n};*/\n\n/*:: type Props = {|\n ...React.ElementConfig,\n\n // Responsive config\n breakpoint?: ?Breakpoint,\n breakpoints: Breakpoints,\n cols: { [key: Breakpoint]: number },\n layouts: ResponsiveLayout,\n width: number,\n margin: { [key: Breakpoint]: [number, number] } | [number, number],\n /* prettier-ignore *-/\n containerPadding: { [key: Breakpoint]: ?[number, number] } | ?[number, number],\n\n // Callbacks\n onBreakpointChange: (Breakpoint, cols: number) => void,\n onLayoutChange: OnLayoutChangeCallback,\n onWidthChange: (\n containerWidth: number,\n margin: [number, number],\n cols: number,\n containerPadding: ?[number, number]\n ) => void\n|};*/\n\n/*:: type DefaultProps = Pick<\n Props<>,\n {|\n allowOverlap: 0,\n breakpoints: 0,\n cols: 0,\n containerPadding: 0,\n layouts: 0,\n margin: 0,\n onBreakpointChange: 0,\n onLayoutChange: 0,\n onWidthChange: 0\n |}\n>;*/\n\n\nvar ResponsiveReactGridLayout = /*#__PURE__*/function (_React$Component) {\n _inherits(ResponsiveReactGridLayout, _React$Component);\n\n var _super = _createSuper(ResponsiveReactGridLayout);\n\n function ResponsiveReactGridLayout() {\n var _this;\n\n _classCallCheck(this, ResponsiveReactGridLayout);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", _this.generateInitialState());\n\n _defineProperty(_assertThisInitialized(_this), \"onLayoutChange\", function (layout\n /*: Layout*/\n ) {\n _this.props.onLayoutChange(layout, _objectSpread(_objectSpread({}, _this.props.layouts), {}, _defineProperty({}, _this.state.breakpoint, layout)));\n });\n\n return _this;\n }\n\n _createClass(ResponsiveReactGridLayout, [{\n key: \"generateInitialState\",\n value: function generateInitialState()\n /*: State*/\n {\n var _this$props = this.props,\n width = _this$props.width,\n breakpoints = _this$props.breakpoints,\n layouts = _this$props.layouts,\n cols = _this$props.cols;\n var breakpoint = (0, _responsiveUtils.getBreakpointFromWidth)(breakpoints, width);\n var colNo = (0, _responsiveUtils.getColsFromBreakpoint)(breakpoint, cols); // verticalCompact compatibility, now deprecated\n\n var compactType = this.props.verticalCompact === false ? null : this.props.compactType; // Get the initial layout. This can tricky; we try to generate one however possible if one doesn't exist\n // for this layout.\n\n var initialLayout = (0, _responsiveUtils.findOrGenerateResponsiveLayout)(layouts, breakpoints, breakpoint, breakpoint, colNo, compactType);\n return {\n layout: initialLayout,\n breakpoint: breakpoint,\n cols: colNo\n };\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps\n /*: Props<*>*/\n ) {\n // Allow parent to set width or breakpoint directly.\n if (this.props.width != prevProps.width || this.props.breakpoint !== prevProps.breakpoint || !(0, _lodash.default)(this.props.breakpoints, prevProps.breakpoints) || !(0, _lodash.default)(this.props.cols, prevProps.cols)) {\n this.onWidthChange(prevProps);\n }\n } // wrap layouts so we do not need to pass layouts to child\n\n }, {\n key: \"onWidthChange\",\n value:\n /**\n * When the width changes work through breakpoints and reset state with the new width & breakpoint.\n * Width changes are necessary to figure out the widget widths.\n */\n function onWidthChange(prevProps\n /*: Props<*>*/\n ) {\n var _this$props2 = this.props,\n breakpoints = _this$props2.breakpoints,\n cols = _this$props2.cols,\n layouts = _this$props2.layouts,\n compactType = _this$props2.compactType;\n var newBreakpoint = this.props.breakpoint || (0, _responsiveUtils.getBreakpointFromWidth)(this.props.breakpoints, this.props.width);\n var lastBreakpoint = this.state.breakpoint;\n var newCols\n /*: number*/\n = (0, _responsiveUtils.getColsFromBreakpoint)(newBreakpoint, cols);\n\n var newLayouts = _objectSpread({}, layouts); // Breakpoint change\n\n\n if (lastBreakpoint !== newBreakpoint || prevProps.breakpoints !== breakpoints || prevProps.cols !== cols) {\n // Preserve the current layout if the current breakpoint is not present in the next layouts.\n if (!(lastBreakpoint in newLayouts)) newLayouts[lastBreakpoint] = (0, _utils.cloneLayout)(this.state.layout); // Find or generate a new layout.\n\n var layout = (0, _responsiveUtils.findOrGenerateResponsiveLayout)(newLayouts, breakpoints, newBreakpoint, lastBreakpoint, newCols, compactType); // This adds missing items.\n\n layout = (0, _utils.synchronizeLayoutWithChildren)(layout, this.props.children, newCols, compactType, this.props.allowOverlap); // Store the new layout.\n\n newLayouts[newBreakpoint] = layout; // callbacks\n\n this.props.onLayoutChange(layout, newLayouts);\n this.props.onBreakpointChange(newBreakpoint, newCols);\n this.setState({\n breakpoint: newBreakpoint,\n layout: layout,\n cols: newCols\n });\n }\n\n var margin = getIndentationValue(this.props.margin, newBreakpoint);\n var containerPadding = getIndentationValue(this.props.containerPadding, newBreakpoint); //call onWidthChange on every change of width, not only on breakpoint changes\n\n this.props.onWidthChange(this.props.width, margin, newCols, containerPadding);\n }\n }, {\n key: \"render\",\n value: function render()\n /*: React.Element*/\n {\n /* eslint-disable no-unused-vars */\n var _this$props3 = this.props,\n breakpoint = _this$props3.breakpoint,\n breakpoints = _this$props3.breakpoints,\n cols = _this$props3.cols,\n layouts = _this$props3.layouts,\n margin = _this$props3.margin,\n containerPadding = _this$props3.containerPadding,\n onBreakpointChange = _this$props3.onBreakpointChange,\n onLayoutChange = _this$props3.onLayoutChange,\n onWidthChange = _this$props3.onWidthChange,\n other = _objectWithoutProperties(_this$props3, _excluded);\n /* eslint-enable no-unused-vars */\n\n\n return /*#__PURE__*/React.createElement(_ReactGridLayout.default, _extends({}, other, {\n // $FlowIgnore should allow nullable here due to DefaultProps\n margin: getIndentationValue(margin, this.state.breakpoint),\n containerPadding: getIndentationValue(containerPadding, this.state.breakpoint),\n onLayoutChange: this.onLayoutChange,\n layout: this.state.layout,\n cols: this.state.cols\n }));\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps\n /*: Props<*>*/\n , prevState\n /*: State*/\n )\n /*: ?$Shape*/\n {\n if (!(0, _lodash.default)(nextProps.layouts, prevState.layouts)) {\n // Allow parent to set layouts directly.\n var breakpoint = prevState.breakpoint,\n _cols = prevState.cols; // Since we're setting an entirely new layout object, we must generate a new responsive layout\n // if one does not exist.\n\n var newLayout = (0, _responsiveUtils.findOrGenerateResponsiveLayout)(nextProps.layouts, nextProps.breakpoints, breakpoint, breakpoint, _cols, nextProps.compactType);\n return {\n layout: newLayout,\n layouts: nextProps.layouts\n };\n }\n\n return null;\n }\n }]);\n\n return ResponsiveReactGridLayout;\n}(React.Component);\n\nexports.default = ResponsiveReactGridLayout;\n\n_defineProperty(ResponsiveReactGridLayout, \"propTypes\", {\n //\n // Basic props\n //\n // Optional, but if you are managing width yourself you may want to set the breakpoint\n // yourself as well.\n breakpoint: _propTypes.default.string,\n // {name: pxVal}, e.g. {lg: 1200, md: 996, sm: 768, xs: 480}\n breakpoints: _propTypes.default.object,\n allowOverlap: _propTypes.default.bool,\n // # of cols. This is a breakpoint -> cols map\n cols: _propTypes.default.object,\n // # of margin. This is a breakpoint -> margin map\n // e.g. { lg: [5, 5], md: [10, 10], sm: [15, 15] }\n // Margin between items [x, y] in px\n // e.g. [10, 10]\n margin: _propTypes.default.oneOfType([_propTypes.default.array, _propTypes.default.object]),\n // # of containerPadding. This is a breakpoint -> containerPadding map\n // e.g. { lg: [5, 5], md: [10, 10], sm: [15, 15] }\n // Padding inside the container [x, y] in px\n // e.g. [10, 10]\n containerPadding: _propTypes.default.oneOfType([_propTypes.default.array, _propTypes.default.object]),\n // layouts is an object mapping breakpoints to layouts.\n // e.g. {lg: Layout, md: Layout, ...}\n layouts: function layouts(props\n /*: Props<>*/\n , propName\n /*: string*/\n ) {\n if (type(props[propName]) !== \"[object Object]\") {\n throw new Error(\"Layout property must be an object. Received: \" + type(props[propName]));\n }\n\n Object.keys(props[propName]).forEach(function (key) {\n if (!(key in props.breakpoints)) {\n throw new Error(\"Each key in layouts must align with a key in breakpoints.\");\n }\n\n (0, _utils.validateLayout)(props.layouts[key], \"layouts.\" + key);\n });\n },\n // The width of this component.\n // Required in this propTypes stanza because generateInitialState() will fail without it.\n width: _propTypes.default.number.isRequired,\n //\n // Callbacks\n //\n // Calls back with breakpoint and new # cols\n onBreakpointChange: _propTypes.default.func,\n // Callback so you can save the layout.\n // Calls back with (currentLayout, allLayouts). allLayouts are keyed by breakpoint.\n onLayoutChange: _propTypes.default.func,\n // Calls back with (containerWidth, margin, cols, containerPadding)\n onWidthChange: _propTypes.default.func\n});\n\n_defineProperty(ResponsiveReactGridLayout, \"defaultProps\", {\n breakpoints: {\n lg: 1200,\n md: 996,\n sm: 768,\n xs: 480,\n xxs: 0\n },\n cols: {\n lg: 12,\n md: 10,\n sm: 6,\n xs: 4,\n xxs: 2\n },\n containerPadding: {\n lg: null,\n md: null,\n sm: null,\n xs: null,\n xxs: null\n },\n layouts: {},\n margin: [10, 10],\n allowOverlap: false,\n onBreakpointChange: _utils.noop,\n onLayoutChange: _utils.noop,\n onWidthChange: _utils.noop\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.calcGridColWidth = calcGridColWidth;\nexports.calcGridItemPosition = calcGridItemPosition;\nexports.calcGridItemWHPx = calcGridItemWHPx;\nexports.calcWH = calcWH;\nexports.calcXY = calcXY;\nexports.clamp = clamp;\n\n/*:: import type { Position } from \"./utils\";*/\n\n/*:: export type PositionParams = {\n margin: [number, number],\n containerPadding: [number, number],\n containerWidth: number,\n cols: number,\n rowHeight: number,\n maxRows: number\n};*/\n// Helper for generating column width\nfunction calcGridColWidth(positionParams\n/*: PositionParams*/\n)\n/*: number*/\n{\n var margin = positionParams.margin,\n containerPadding = positionParams.containerPadding,\n containerWidth = positionParams.containerWidth,\n cols = positionParams.cols;\n return (containerWidth - margin[0] * (cols - 1) - containerPadding[0] * 2) / cols;\n} // This can either be called:\n// calcGridItemWHPx(w, colWidth, margin[0])\n// or\n// calcGridItemWHPx(h, rowHeight, margin[1])\n\n\nfunction calcGridItemWHPx(gridUnits\n/*: number*/\n, colOrRowSize\n/*: number*/\n, marginPx\n/*: number*/\n)\n/*: number*/\n{\n // 0 * Infinity === NaN, which causes problems with resize contraints\n if (!Number.isFinite(gridUnits)) return gridUnits;\n return Math.round(colOrRowSize * gridUnits + Math.max(0, gridUnits - 1) * marginPx);\n}\n/**\n * Return position on the page given an x, y, w, h.\n * left, top, width, height are all in pixels.\n * @param {PositionParams} positionParams Parameters of grid needed for coordinates calculations.\n * @param {Number} x X coordinate in grid units.\n * @param {Number} y Y coordinate in grid units.\n * @param {Number} w W coordinate in grid units.\n * @param {Number} h H coordinate in grid units.\n * @return {Position} Object containing coords.\n */\n\n\nfunction calcGridItemPosition(positionParams\n/*: PositionParams*/\n, x\n/*: number*/\n, y\n/*: number*/\n, w\n/*: number*/\n, h\n/*: number*/\n, state\n/*: ?Object*/\n)\n/*: Position*/\n{\n var margin = positionParams.margin,\n containerPadding = positionParams.containerPadding,\n rowHeight = positionParams.rowHeight;\n var colWidth = calcGridColWidth(positionParams);\n var out = {}; // If resizing, use the exact width and height as returned from resizing callbacks.\n\n if (state && state.resizing) {\n out.width = Math.round(state.resizing.width);\n out.height = Math.round(state.resizing.height);\n } // Otherwise, calculate from grid units.\n else {\n out.width = calcGridItemWHPx(w, colWidth, margin[0]);\n out.height = calcGridItemWHPx(h, rowHeight, margin[1]);\n } // If dragging, use the exact width and height as returned from dragging callbacks.\n\n\n if (state && state.dragging) {\n out.top = Math.round(state.dragging.top);\n out.left = Math.round(state.dragging.left);\n } // Otherwise, calculate from grid units.\n else {\n out.top = Math.round((rowHeight + margin[1]) * y + containerPadding[1]);\n out.left = Math.round((colWidth + margin[0]) * x + containerPadding[0]);\n }\n\n return out;\n}\n/**\n * Translate x and y coordinates from pixels to grid units.\n * @param {PositionParams} positionParams Parameters of grid needed for coordinates calculations.\n * @param {Number} top Top position (relative to parent) in pixels.\n * @param {Number} left Left position (relative to parent) in pixels.\n * @param {Number} w W coordinate in grid units.\n * @param {Number} h H coordinate in grid units.\n * @return {Object} x and y in grid units.\n */\n\n\nfunction calcXY(positionParams\n/*: PositionParams*/\n, top\n/*: number*/\n, left\n/*: number*/\n, w\n/*: number*/\n, h\n/*: number*/\n)\n/*: { x: number, y: number }*/\n{\n var margin = positionParams.margin,\n cols = positionParams.cols,\n rowHeight = positionParams.rowHeight,\n maxRows = positionParams.maxRows;\n var colWidth = calcGridColWidth(positionParams); // left = colWidth * x + margin * (x + 1)\n // l = cx + m(x+1)\n // l = cx + mx + m\n // l - m = cx + mx\n // l - m = x(c + m)\n // (l - m) / (c + m) = x\n // x = (left - margin) / (coldWidth + margin)\n\n var x = Math.round((left - margin[0]) / (colWidth + margin[0]));\n var y = Math.round((top - margin[1]) / (rowHeight + margin[1])); // Capping\n\n x = clamp(x, 0, cols - w);\n y = clamp(y, 0, maxRows - h);\n return {\n x: x,\n y: y\n };\n}\n/**\n * Given a height and width in pixel values, calculate grid units.\n * @param {PositionParams} positionParams Parameters of grid needed for coordinates calcluations.\n * @param {Number} height Height in pixels.\n * @param {Number} width Width in pixels.\n * @param {Number} x X coordinate in grid units.\n * @param {Number} y Y coordinate in grid units.\n * @return {Object} w, h as grid units.\n */\n\n\nfunction calcWH(positionParams\n/*: PositionParams*/\n, width\n/*: number*/\n, height\n/*: number*/\n, x\n/*: number*/\n, y\n/*: number*/\n)\n/*: { w: number, h: number }*/\n{\n var margin = positionParams.margin,\n maxRows = positionParams.maxRows,\n cols = positionParams.cols,\n rowHeight = positionParams.rowHeight;\n var colWidth = calcGridColWidth(positionParams); // width = colWidth * w - (margin * (w - 1))\n // ...\n // w = (width + margin) / (colWidth + margin)\n\n var w = Math.round((width + margin[0]) / (colWidth + margin[0]));\n var h = Math.round((height + margin[1]) / (rowHeight + margin[1])); // Capping\n\n w = clamp(w, 0, cols - x);\n h = clamp(h, 0, maxRows - y);\n return {\n w: w,\n h: h\n };\n} // Similar to _.clamp\n\n\nfunction clamp(num\n/*: number*/\n, lowerBound\n/*: number*/\n, upperBound\n/*: number*/\n)\n/*: number*/\n{\n return Math.max(Math.min(num, upperBound), lowerBound);\n}","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = WidthProvideRGL;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _clsx = _interopRequireDefault(require(\"clsx\"));\n\nvar _excluded = [\"measureBeforeMount\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar layoutClassName = \"react-grid-layout\";\n/*\n * A simple HOC that provides facility for listening to container resizes.\n *\n * The Flow type is pretty janky here. I can't just spread `WPProps` into this returned object - I wish I could - but it triggers\n * a flow bug of some sort that causes it to stop typechecking.\n */\n\nfunction WidthProvideRGL\n/*:: */\n(ComposedComponent\n/*: React.AbstractComponent*/\n)\n/*: React.AbstractComponent>*/\n{\n var _class;\n\n return _class = /*#__PURE__*/function (_React$Component) {\n _inherits(WidthProvider, _React$Component);\n\n var _super = _createSuper(WidthProvider);\n\n function WidthProvider() {\n var _this;\n\n _classCallCheck(this, WidthProvider);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n width: 1280\n });\n\n _defineProperty(_assertThisInitialized(_this), \"elementRef\", /*#__PURE__*/React.createRef());\n\n _defineProperty(_assertThisInitialized(_this), \"mounted\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"onWindowResize\", function () {\n if (!_this.mounted) return;\n var node = _this.elementRef.current; // Flow casts this to Text | Element\n // fix: grid position error when node or parentNode display is none by window resize\n // #924 #1084\n\n if (node instanceof HTMLElement && node.offsetWidth) {\n _this.setState({\n width: node.offsetWidth\n });\n }\n });\n\n return _this;\n }\n\n _createClass(WidthProvider, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.mounted = true;\n window.addEventListener(\"resize\", this.onWindowResize); // Call to properly set the breakpoint and resize the elements.\n // Note that if you're doing a full-width element, this can get a little wonky if a scrollbar\n // appears because of the grid. In that case, fire your own resize event, or set `overflow: scroll` on your body.\n\n this.onWindowResize();\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.mounted = false;\n window.removeEventListener(\"resize\", this.onWindowResize);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n measureBeforeMount = _this$props.measureBeforeMount,\n rest = _objectWithoutProperties(_this$props, _excluded);\n\n if (measureBeforeMount && !this.mounted) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: (0, _clsx.default)(this.props.className, layoutClassName),\n style: this.props.style // $FlowIgnore ref types\n ,\n ref: this.elementRef\n });\n }\n\n return /*#__PURE__*/React.createElement(ComposedComponent, _extends({\n innerRef: this.elementRef\n }, rest, this.state));\n }\n }]);\n\n return WidthProvider;\n }(React.Component), _defineProperty(_class, \"defaultProps\", {\n measureBeforeMount: false\n }), _defineProperty(_class, \"propTypes\", {\n // If true, will not render children until mounted. Useful for getting the exact width before\n // rendering, to prevent any unsightly resizing.\n measureBeforeMount: _propTypes.default.bool\n }), _class;\n}","// this file was prevaled\nmodule.exports = function fastRGLPropsEqual(a, b, isEqualImpl) {\n if (a === b) return true;\n return a.className === b.className && isEqualImpl(a.style, b.style) && a.width === b.width && a.autoSize === b.autoSize && a.cols === b.cols && a.draggableCancel === b.draggableCancel && a.draggableHandle === b.draggableHandle && isEqualImpl(a.verticalCompact, b.verticalCompact) && isEqualImpl(a.compactType, b.compactType) && isEqualImpl(a.layout, b.layout) && isEqualImpl(a.margin, b.margin) && isEqualImpl(a.containerPadding, b.containerPadding) && a.rowHeight === b.rowHeight && a.maxRows === b.maxRows && a.isBounded === b.isBounded && a.isDraggable === b.isDraggable && a.isResizable === b.isResizable && a.allowOverlap === b.allowOverlap && a.preventCollision === b.preventCollision && a.useCSSTransforms === b.useCSSTransforms && a.transformScale === b.transformScale && a.isDroppable === b.isDroppable && isEqualImpl(a.resizeHandles, b.resizeHandles) && isEqualImpl(a.resizeHandle, b.resizeHandle) && a.onLayoutChange === b.onLayoutChange && a.onDragStart === b.onDragStart && a.onDrag === b.onDrag && a.onDragStop === b.onDragStop && a.onResizeStart === b.onResizeStart && a.onResize === b.onResize && a.onResizeStop === b.onResizeStop && a.onDrop === b.onDrop && isEqualImpl(a.droppingItem, b.droppingItem) && isEqualImpl(a.innerRef, b.innerRef);\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.findOrGenerateResponsiveLayout = findOrGenerateResponsiveLayout;\nexports.getBreakpointFromWidth = getBreakpointFromWidth;\nexports.getColsFromBreakpoint = getColsFromBreakpoint;\nexports.sortBreakpoints = sortBreakpoints;\n\nvar _utils = require(\"./utils\");\n\n/**\n * Given a width, find the highest breakpoint that matches is valid for it (width > breakpoint).\n *\n * @param {Object} breakpoints Breakpoints object (e.g. {lg: 1200, md: 960, ...})\n * @param {Number} width Screen width.\n * @return {String} Highest breakpoint that is less than width.\n */\nfunction getBreakpointFromWidth(breakpoints\n/*: Breakpoints*/\n, width\n/*: number*/\n)\n/*: Breakpoint*/\n{\n var sorted = sortBreakpoints(breakpoints);\n var matching = sorted[0];\n\n for (var i = 1, len = sorted.length; i < len; i++) {\n var breakpointName = sorted[i];\n if (width > breakpoints[breakpointName]) matching = breakpointName;\n }\n\n return matching;\n}\n/**\n * Given a breakpoint, get the # of cols set for it.\n * @param {String} breakpoint Breakpoint name.\n * @param {Object} cols Map of breakpoints to cols.\n * @return {Number} Number of cols.\n */\n\n\nfunction getColsFromBreakpoint(breakpoint\n/*: Breakpoint*/\n, cols\n/*: Breakpoints*/\n)\n/*: number*/\n{\n if (!cols[breakpoint]) {\n throw new Error(\"ResponsiveReactGridLayout: `cols` entry for breakpoint \" + breakpoint + \" is missing!\");\n }\n\n return cols[breakpoint];\n}\n/**\n * Given existing layouts and a new breakpoint, find or generate a new layout.\n *\n * This finds the layout above the new one and generates from it, if it exists.\n *\n * @param {Object} layouts Existing layouts.\n * @param {Array} breakpoints All breakpoints.\n * @param {String} breakpoint New breakpoint.\n * @param {String} breakpoint Last breakpoint (for fallback).\n * @param {Number} cols Column count at new breakpoint.\n * @param {Boolean} verticalCompact Whether or not to compact the layout\n * vertically.\n * @return {Array} New layout.\n */\n\n\nfunction findOrGenerateResponsiveLayout(layouts\n/*: ResponsiveLayout*/\n, breakpoints\n/*: Breakpoints*/\n, breakpoint\n/*: Breakpoint*/\n, lastBreakpoint\n/*: Breakpoint*/\n, cols\n/*: number*/\n, compactType\n/*: CompactType*/\n)\n/*: Layout*/\n{\n // If it already exists, just return it.\n if (layouts[breakpoint]) return (0, _utils.cloneLayout)(layouts[breakpoint]); // Find or generate the next layout\n\n var layout = layouts[lastBreakpoint];\n var breakpointsSorted = sortBreakpoints(breakpoints);\n var breakpointsAbove = breakpointsSorted.slice(breakpointsSorted.indexOf(breakpoint));\n\n for (var i = 0, len = breakpointsAbove.length; i < len; i++) {\n var b = breakpointsAbove[i];\n\n if (layouts[b]) {\n layout = layouts[b];\n break;\n }\n }\n\n layout = (0, _utils.cloneLayout)(layout || []); // clone layout so we don't modify existing items\n\n return (0, _utils.compact)((0, _utils.correctBounds)(layout, {\n cols: cols\n }), compactType, cols);\n}\n/**\n * Given breakpoints, return an array of breakpoints sorted by width. This is usually\n * e.g. ['xxs', 'xs', 'sm', ...]\n *\n * @param {Object} breakpoints Key/value pair of breakpoint names to widths.\n * @return {Array} Sorted breakpoints.\n */\n\n\nfunction sortBreakpoints(breakpoints\n/*: Breakpoints*/\n)\n/*: Array*/\n{\n var keys\n /*: Array*/\n = Object.keys(breakpoints);\n return keys.sort(function (a, b) {\n return breakpoints[a] - breakpoints[b];\n });\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.bottom = bottom;\nexports.childrenEqual = childrenEqual;\nexports.cloneLayout = cloneLayout;\nexports.cloneLayoutItem = cloneLayoutItem;\nexports.collides = collides;\nexports.compact = compact;\nexports.compactItem = compactItem;\nexports.compactType = compactType;\nexports.correctBounds = correctBounds;\nexports.fastPositionEqual = fastPositionEqual;\nexports.fastRGLPropsEqual = void 0;\nexports.getAllCollisions = getAllCollisions;\nexports.getFirstCollision = getFirstCollision;\nexports.getLayoutItem = getLayoutItem;\nexports.getStatics = getStatics;\nexports.modifyLayout = modifyLayout;\nexports.moveElement = moveElement;\nexports.moveElementAwayFromCollision = moveElementAwayFromCollision;\nexports.noop = void 0;\nexports.perc = perc;\nexports.setTopLeft = setTopLeft;\nexports.setTransform = setTransform;\nexports.sortLayoutItems = sortLayoutItems;\nexports.sortLayoutItemsByColRow = sortLayoutItemsByColRow;\nexports.sortLayoutItemsByRowCol = sortLayoutItemsByRowCol;\nexports.synchronizeLayoutWithChildren = synchronizeLayoutWithChildren;\nexports.validateLayout = validateLayout;\nexports.withLayoutItem = withLayoutItem;\n\nvar _lodash = _interopRequireDefault(require(\"lodash.isequal\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar isProduction = process.env.NODE_ENV === \"production\";\nvar DEBUG = false;\n/**\n * Return the bottom coordinate of the layout.\n *\n * @param {Array} layout Layout array.\n * @return {Number} Bottom coordinate.\n */\n\nfunction bottom(layout\n/*: Layout*/\n)\n/*: number*/\n{\n var max = 0,\n bottomY;\n\n for (var i = 0, len = layout.length; i < len; i++) {\n bottomY = layout[i].y + layout[i].h;\n if (bottomY > max) max = bottomY;\n }\n\n return max;\n}\n\nfunction cloneLayout(layout\n/*: Layout*/\n)\n/*: Layout*/\n{\n var newLayout = Array(layout.length);\n\n for (var i = 0, len = layout.length; i < len; i++) {\n newLayout[i] = cloneLayoutItem(layout[i]);\n }\n\n return newLayout;\n} // Modify a layoutItem inside a layout. Returns a new Layout,\n// does not mutate. Carries over all other LayoutItems unmodified.\n\n\nfunction modifyLayout(layout\n/*: Layout*/\n, layoutItem\n/*: LayoutItem*/\n)\n/*: Layout*/\n{\n var newLayout = Array(layout.length);\n\n for (var i = 0, len = layout.length; i < len; i++) {\n if (layoutItem.i === layout[i].i) {\n newLayout[i] = layoutItem;\n } else {\n newLayout[i] = layout[i];\n }\n }\n\n return newLayout;\n} // Function to be called to modify a layout item.\n// Does defensive clones to ensure the layout is not modified.\n\n\nfunction withLayoutItem(layout\n/*: Layout*/\n, itemKey\n/*: string*/\n, cb\n/*: LayoutItem => LayoutItem*/\n)\n/*: [Layout, ?LayoutItem]*/\n{\n var item = getLayoutItem(layout, itemKey);\n if (!item) return [layout, null];\n item = cb(cloneLayoutItem(item)); // defensive clone then modify\n // FIXME could do this faster if we already knew the index\n\n layout = modifyLayout(layout, item);\n return [layout, item];\n} // Fast path to cloning, since this is monomorphic\n\n\nfunction cloneLayoutItem(layoutItem\n/*: LayoutItem*/\n)\n/*: LayoutItem*/\n{\n return {\n w: layoutItem.w,\n h: layoutItem.h,\n x: layoutItem.x,\n y: layoutItem.y,\n i: layoutItem.i,\n minW: layoutItem.minW,\n maxW: layoutItem.maxW,\n minH: layoutItem.minH,\n maxH: layoutItem.maxH,\n moved: Boolean(layoutItem.moved),\n static: Boolean(layoutItem.static),\n // These can be null/undefined\n isDraggable: layoutItem.isDraggable,\n isResizable: layoutItem.isResizable,\n resizeHandles: layoutItem.resizeHandles,\n isBounded: layoutItem.isBounded\n };\n}\n/**\n * Comparing React `children` is a bit difficult. This is a good way to compare them.\n * This will catch differences in keys, order, and length.\n */\n\n\nfunction childrenEqual(a\n/*: ReactChildren*/\n, b\n/*: ReactChildren*/\n)\n/*: boolean*/\n{\n return (0, _lodash.default)(_react.default.Children.map(a, function (c) {\n return c === null || c === void 0 ? void 0 : c.key;\n }), _react.default.Children.map(b, function (c) {\n return c === null || c === void 0 ? void 0 : c.key;\n }));\n}\n/**\n * See `fastRGLPropsEqual.js`.\n * We want this to run as fast as possible - it is called often - and to be\n * resilient to new props that we add. So rather than call lodash.isEqual,\n * which isn't suited to comparing props very well, we use this specialized\n * function in conjunction with preval to generate the fastest possible comparison\n * function, tuned for exactly our props.\n */\n\n/*:: type FastRGLPropsEqual = (Object, Object, Function) => boolean;*/\n\n\nvar fastRGLPropsEqual\n/*: FastRGLPropsEqual*/\n= require(\"./fastRGLPropsEqual\"); // Like the above, but a lot simpler.\n\n\nexports.fastRGLPropsEqual = fastRGLPropsEqual;\n\nfunction fastPositionEqual(a\n/*: Position*/\n, b\n/*: Position*/\n)\n/*: boolean*/\n{\n return a.left === b.left && a.top === b.top && a.width === b.width && a.height === b.height;\n}\n/**\n * Given two layoutitems, check if they collide.\n */\n\n\nfunction collides(l1\n/*: LayoutItem*/\n, l2\n/*: LayoutItem*/\n)\n/*: boolean*/\n{\n if (l1.i === l2.i) return false; // same element\n\n if (l1.x + l1.w <= l2.x) return false; // l1 is left of l2\n\n if (l1.x >= l2.x + l2.w) return false; // l1 is right of l2\n\n if (l1.y + l1.h <= l2.y) return false; // l1 is above l2\n\n if (l1.y >= l2.y + l2.h) return false; // l1 is below l2\n\n return true; // boxes overlap\n}\n/**\n * Given a layout, compact it. This involves going down each y coordinate and removing gaps\n * between items.\n *\n * Does not modify layout items (clones). Creates a new layout array.\n *\n * @param {Array} layout Layout.\n * @param {Boolean} verticalCompact Whether or not to compact the layout\n * vertically.\n * @return {Array} Compacted Layout.\n */\n\n\nfunction compact(layout\n/*: Layout*/\n, compactType\n/*: CompactType*/\n, cols\n/*: number*/\n)\n/*: Layout*/\n{\n // Statics go in the compareWith array right away so items flow around them.\n var compareWith = getStatics(layout); // We go through the items by row and column.\n\n var sorted = sortLayoutItems(layout, compactType); // Holding for new items.\n\n var out = Array(layout.length);\n\n for (var i = 0, len = sorted.length; i < len; i++) {\n var l = cloneLayoutItem(sorted[i]); // Don't move static elements\n\n if (!l.static) {\n l = compactItem(compareWith, l, compactType, cols, sorted); // Add to comparison array. We only collide with items before this one.\n // Statics are already in this array.\n\n compareWith.push(l);\n } // Add to output array to make sure they still come out in the right order.\n\n\n out[layout.indexOf(sorted[i])] = l; // Clear moved flag, if it exists.\n\n l.moved = false;\n }\n\n return out;\n}\n\nvar heightWidth = {\n x: \"w\",\n y: \"h\"\n};\n/**\n * Before moving item down, it will check if the movement will cause collisions and move those items down before.\n */\n\nfunction resolveCompactionCollision(layout\n/*: Layout*/\n, item\n/*: LayoutItem*/\n, moveToCoord\n/*: number*/\n, axis\n/*: \"x\" | \"y\"*/\n) {\n var sizeProp = heightWidth[axis];\n item[axis] += 1;\n var itemIndex = layout.map(function (layoutItem) {\n return layoutItem.i;\n }).indexOf(item.i); // Go through each item we collide with.\n\n for (var i = itemIndex + 1; i < layout.length; i++) {\n var otherItem = layout[i]; // Ignore static items\n\n if (otherItem.static) continue; // Optimization: we can break early if we know we're past this el\n // We can do this b/c it's a sorted layout\n\n if (otherItem.y > item.y + item.h) break;\n\n if (collides(item, otherItem)) {\n resolveCompactionCollision(layout, otherItem, moveToCoord + item[sizeProp], axis);\n }\n }\n\n item[axis] = moveToCoord;\n}\n/**\n * Compact an item in the layout.\n *\n * Modifies item.\n *\n */\n\n\nfunction compactItem(compareWith\n/*: Layout*/\n, l\n/*: LayoutItem*/\n, compactType\n/*: CompactType*/\n, cols\n/*: number*/\n, fullLayout\n/*: Layout*/\n)\n/*: LayoutItem*/\n{\n var compactV = compactType === \"vertical\";\n var compactH = compactType === \"horizontal\";\n\n if (compactV) {\n // Bottom 'y' possible is the bottom of the layout.\n // This allows you to do nice stuff like specify {y: Infinity}\n // This is here because the layout must be sorted in order to get the correct bottom `y`.\n l.y = Math.min(bottom(compareWith), l.y); // Move the element up as far as it can go without colliding.\n\n while (l.y > 0 && !getFirstCollision(compareWith, l)) {\n l.y--;\n }\n } else if (compactH) {\n // Move the element left as far as it can go without colliding.\n while (l.x > 0 && !getFirstCollision(compareWith, l)) {\n l.x--;\n }\n } // Move it down, and keep moving it down if it's colliding.\n\n\n var collides;\n\n while (collides = getFirstCollision(compareWith, l)) {\n if (compactH) {\n resolveCompactionCollision(fullLayout, l, collides.x + collides.w, \"x\");\n } else {\n resolveCompactionCollision(fullLayout, l, collides.y + collides.h, \"y\");\n } // Since we can't grow without bounds horizontally, if we've overflown, let's move it down and try again.\n\n\n if (compactH && l.x + l.w > cols) {\n l.x = cols - l.w;\n l.y++;\n }\n } // Ensure that there are no negative positions\n\n\n l.y = Math.max(l.y, 0);\n l.x = Math.max(l.x, 0);\n return l;\n}\n/**\n * Given a layout, make sure all elements fit within its bounds.\n *\n * Modifies layout items.\n *\n * @param {Array} layout Layout array.\n * @param {Number} bounds Number of columns.\n */\n\n\nfunction correctBounds(layout\n/*: Layout*/\n, bounds\n/*: { cols: number }*/\n)\n/*: Layout*/\n{\n var collidesWith = getStatics(layout);\n\n for (var i = 0, len = layout.length; i < len; i++) {\n var l = layout[i]; // Overflows right\n\n if (l.x + l.w > bounds.cols) l.x = bounds.cols - l.w; // Overflows left\n\n if (l.x < 0) {\n l.x = 0;\n l.w = bounds.cols;\n }\n\n if (!l.static) collidesWith.push(l);else {\n // If this is static and collides with other statics, we must move it down.\n // We have to do something nicer than just letting them overlap.\n while (getFirstCollision(collidesWith, l)) {\n l.y++;\n }\n }\n }\n\n return layout;\n}\n/**\n * Get a layout item by ID. Used so we can override later on if necessary.\n *\n * @param {Array} layout Layout array.\n * @param {String} id ID\n * @return {LayoutItem} Item at ID.\n */\n\n\nfunction getLayoutItem(layout\n/*: Layout*/\n, id\n/*: string*/\n)\n/*: ?LayoutItem*/\n{\n for (var i = 0, len = layout.length; i < len; i++) {\n if (layout[i].i === id) return layout[i];\n }\n}\n/**\n * Returns the first item this layout collides with.\n * It doesn't appear to matter which order we approach this from, although\n * perhaps that is the wrong thing to do.\n *\n * @param {Object} layoutItem Layout item.\n * @return {Object|undefined} A colliding layout item, or undefined.\n */\n\n\nfunction getFirstCollision(layout\n/*: Layout*/\n, layoutItem\n/*: LayoutItem*/\n)\n/*: ?LayoutItem*/\n{\n for (var i = 0, len = layout.length; i < len; i++) {\n if (collides(layout[i], layoutItem)) return layout[i];\n }\n}\n\nfunction getAllCollisions(layout\n/*: Layout*/\n, layoutItem\n/*: LayoutItem*/\n)\n/*: Array*/\n{\n return layout.filter(function (l) {\n return collides(l, layoutItem);\n });\n}\n/**\n * Get all static elements.\n * @param {Array} layout Array of layout objects.\n * @return {Array} Array of static layout items..\n */\n\n\nfunction getStatics(layout\n/*: Layout*/\n)\n/*: Array*/\n{\n return layout.filter(function (l) {\n return l.static;\n });\n}\n/**\n * Move an element. Responsible for doing cascading movements of other elements.\n *\n * Modifies layout items.\n *\n * @param {Array} layout Full layout to modify.\n * @param {LayoutItem} l element to move.\n * @param {Number} [x] X position in grid units.\n * @param {Number} [y] Y position in grid units.\n */\n\n\nfunction moveElement(layout\n/*: Layout*/\n, l\n/*: LayoutItem*/\n, x\n/*: ?number*/\n, y\n/*: ?number*/\n, isUserAction\n/*: ?boolean*/\n, preventCollision\n/*: ?boolean*/\n, compactType\n/*: CompactType*/\n, cols\n/*: number*/\n, allowOverlap\n/*: ?boolean*/\n)\n/*: Layout*/\n{\n // If this is static and not explicitly enabled as draggable,\n // no move is possible, so we can short-circuit this immediately.\n if (l.static && l.isDraggable !== true) return layout; // Short-circuit if nothing to do.\n\n if (l.y === y && l.x === x) return layout;\n log(\"Moving element \".concat(l.i, \" to [\").concat(String(x), \",\").concat(String(y), \"] from [\").concat(l.x, \",\").concat(l.y, \"]\"));\n var oldX = l.x;\n var oldY = l.y; // This is quite a bit faster than extending the object\n\n if (typeof x === \"number\") l.x = x;\n if (typeof y === \"number\") l.y = y;\n l.moved = true; // If this collides with anything, move it.\n // When doing this comparison, we have to sort the items we compare with\n // to ensure, in the case of multiple collisions, that we're getting the\n // nearest collision.\n\n var sorted = sortLayoutItems(layout, compactType);\n var movingUp = compactType === \"vertical\" && typeof y === \"number\" ? oldY >= y : compactType === \"horizontal\" && typeof x === \"number\" ? oldX >= x : false; // $FlowIgnore acceptable modification of read-only array as it was recently cloned\n\n if (movingUp) sorted = sorted.reverse();\n var collisions = getAllCollisions(sorted, l);\n var hasCollisions = collisions.length > 0; // We may have collisions. We can short-circuit if we've turned off collisions or\n // allowed overlap.\n\n if (hasCollisions && allowOverlap) {\n // Easy, we don't need to resolve collisions. But we *did* change the layout,\n // so clone it on the way out.\n return cloneLayout(layout);\n } else if (hasCollisions && preventCollision) {\n // If we are preventing collision but not allowing overlap, we need to\n // revert the position of this element so it goes to where it came from, rather\n // than the user's desired location.\n log(\"Collision prevented on \".concat(l.i, \", reverting.\"));\n l.x = oldX;\n l.y = oldY;\n l.moved = false;\n return layout; // did not change so don't clone\n } // Move each item that collides away from this element.\n\n\n for (var i = 0, len = collisions.length; i < len; i++) {\n var collision = collisions[i];\n log(\"Resolving collision between \".concat(l.i, \" at [\").concat(l.x, \",\").concat(l.y, \"] and \").concat(collision.i, \" at [\").concat(collision.x, \",\").concat(collision.y, \"]\")); // Short circuit so we can't infinite loop\n\n if (collision.moved) continue; // Don't move static items - we have to move *this* element away\n\n if (collision.static) {\n layout = moveElementAwayFromCollision(layout, collision, l, isUserAction, compactType, cols);\n } else {\n layout = moveElementAwayFromCollision(layout, l, collision, isUserAction, compactType, cols);\n }\n }\n\n return layout;\n}\n/**\n * This is where the magic needs to happen - given a collision, move an element away from the collision.\n * We attempt to move it up if there's room, otherwise it goes below.\n *\n * @param {Array} layout Full layout to modify.\n * @param {LayoutItem} collidesWith Layout item we're colliding with.\n * @param {LayoutItem} itemToMove Layout item we're moving.\n */\n\n\nfunction moveElementAwayFromCollision(layout\n/*: Layout*/\n, collidesWith\n/*: LayoutItem*/\n, itemToMove\n/*: LayoutItem*/\n, isUserAction\n/*: ?boolean*/\n, compactType\n/*: CompactType*/\n, cols\n/*: number*/\n)\n/*: Layout*/\n{\n var compactH = compactType === \"horizontal\"; // Compact vertically if not set to horizontal\n\n var compactV = compactType !== \"horizontal\";\n var preventCollision = collidesWith.static; // we're already colliding (not for static items)\n // If there is enough space above the collision to put this element, move it there.\n // We only do this on the main collision as this can get funky in cascades and cause\n // unwanted swapping behavior.\n\n if (isUserAction) {\n // Reset isUserAction flag because we're not in the main collision anymore.\n isUserAction = false; // Make a mock item so we don't modify the item here, only modify in moveElement.\n\n var fakeItem\n /*: LayoutItem*/\n = {\n x: compactH ? Math.max(collidesWith.x - itemToMove.w, 0) : itemToMove.x,\n y: compactV ? Math.max(collidesWith.y - itemToMove.h, 0) : itemToMove.y,\n w: itemToMove.w,\n h: itemToMove.h,\n i: \"-1\"\n }; // No collision? If so, we can go up there; otherwise, we'll end up moving down as normal\n\n if (!getFirstCollision(layout, fakeItem)) {\n log(\"Doing reverse collision on \".concat(itemToMove.i, \" up to [\").concat(fakeItem.x, \",\").concat(fakeItem.y, \"].\"));\n return moveElement(layout, itemToMove, compactH ? fakeItem.x : undefined, compactV ? fakeItem.y : undefined, isUserAction, preventCollision, compactType, cols);\n }\n }\n\n return moveElement(layout, itemToMove, compactH ? itemToMove.x + 1 : undefined, compactV ? itemToMove.y + 1 : undefined, isUserAction, preventCollision, compactType, cols);\n}\n/**\n * Helper to convert a number to a percentage string.\n *\n * @param {Number} num Any number\n * @return {String} That number as a percentage.\n */\n\n\nfunction perc(num\n/*: number*/\n)\n/*: string*/\n{\n return num * 100 + \"%\";\n}\n\nfunction setTransform(_ref)\n/*: Object*/\n{\n var top = _ref.top,\n left = _ref.left,\n width = _ref.width,\n height = _ref.height;\n // Replace unitless items with px\n var translate = \"translate(\".concat(left, \"px,\").concat(top, \"px)\");\n return {\n transform: translate,\n WebkitTransform: translate,\n MozTransform: translate,\n msTransform: translate,\n OTransform: translate,\n width: \"\".concat(width, \"px\"),\n height: \"\".concat(height, \"px\"),\n position: \"absolute\"\n };\n}\n\nfunction setTopLeft(_ref2)\n/*: Object*/\n{\n var top = _ref2.top,\n left = _ref2.left,\n width = _ref2.width,\n height = _ref2.height;\n return {\n top: \"\".concat(top, \"px\"),\n left: \"\".concat(left, \"px\"),\n width: \"\".concat(width, \"px\"),\n height: \"\".concat(height, \"px\"),\n position: \"absolute\"\n };\n}\n/**\n * Get layout items sorted from top left to right and down.\n *\n * @return {Array} Array of layout objects.\n * @return {Array} Layout, sorted static items first.\n */\n\n\nfunction sortLayoutItems(layout\n/*: Layout*/\n, compactType\n/*: CompactType*/\n)\n/*: Layout*/\n{\n if (compactType === \"horizontal\") return sortLayoutItemsByColRow(layout);\n if (compactType === \"vertical\") return sortLayoutItemsByRowCol(layout);else return layout;\n}\n/**\n * Sort layout items by row ascending and column ascending.\n *\n * Does not modify Layout.\n */\n\n\nfunction sortLayoutItemsByRowCol(layout\n/*: Layout*/\n)\n/*: Layout*/\n{\n // Slice to clone array as sort modifies\n return layout.slice(0).sort(function (a, b) {\n if (a.y > b.y || a.y === b.y && a.x > b.x) {\n return 1;\n } else if (a.y === b.y && a.x === b.x) {\n // Without this, we can get different sort results in IE vs. Chrome/FF\n return 0;\n }\n\n return -1;\n });\n}\n/**\n * Sort layout items by column ascending then row ascending.\n *\n * Does not modify Layout.\n */\n\n\nfunction sortLayoutItemsByColRow(layout\n/*: Layout*/\n)\n/*: Layout*/\n{\n return layout.slice(0).sort(function (a, b) {\n if (a.x > b.x || a.x === b.x && a.y > b.y) {\n return 1;\n }\n\n return -1;\n });\n}\n/**\n * Generate a layout using the initialLayout and children as a template.\n * Missing entries will be added, extraneous ones will be truncated.\n *\n * Does not modify initialLayout.\n *\n * @param {Array} initialLayout Layout passed in through props.\n * @param {String} breakpoint Current responsive breakpoint.\n * @param {?String} compact Compaction option.\n * @return {Array} Working layout.\n */\n\n\nfunction synchronizeLayoutWithChildren(initialLayout\n/*: Layout*/\n, children\n/*: ReactChildren*/\n, cols\n/*: number*/\n, compactType\n/*: CompactType*/\n, allowOverlap\n/*: ?boolean*/\n)\n/*: Layout*/\n{\n initialLayout = initialLayout || []; // Generate one layout item per child.\n\n var layout\n /*: LayoutItem[]*/\n = [];\n\n _react.default.Children.forEach(children, function (child\n /*: ReactElement*/\n ) {\n // Child may not exist\n if ((child === null || child === void 0 ? void 0 : child.key) == null) return; // Don't overwrite if it already exists.\n\n var exists = getLayoutItem(initialLayout, String(child.key));\n\n if (exists) {\n layout.push(cloneLayoutItem(exists));\n } else {\n if (!isProduction && child.props._grid) {\n console.warn(\"`_grid` properties on children have been deprecated as of React 15.2. \" + \"Please use `data-grid` or add your properties directly to the `layout`.\");\n }\n\n var g = child.props[\"data-grid\"] || child.props._grid; // Hey, this item has a data-grid property, use it.\n\n if (g) {\n if (!isProduction) {\n validateLayout([g], \"ReactGridLayout.children\");\n } // FIXME clone not really necessary here\n\n\n layout.push(cloneLayoutItem(_objectSpread(_objectSpread({}, g), {}, {\n i: child.key\n })));\n } else {\n // Nothing provided: ensure this is added to the bottom\n // FIXME clone not really necessary here\n layout.push(cloneLayoutItem({\n w: 1,\n h: 1,\n x: 0,\n y: bottom(layout),\n i: String(child.key)\n }));\n }\n }\n }); // Correct the layout.\n\n\n var correctedLayout = correctBounds(layout, {\n cols: cols\n });\n return allowOverlap ? correctedLayout : compact(correctedLayout, compactType, cols);\n}\n/**\n * Validate a layout. Throws errors.\n *\n * @param {Array} layout Array of layout items.\n * @param {String} [contextName] Context name for errors.\n * @throw {Error} Validation error.\n */\n\n\nfunction validateLayout(layout\n/*: Layout*/\n)\n/*: void*/\n{\n var contextName\n /*: string*/\n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"Layout\";\n var subProps = [\"x\", \"y\", \"w\", \"h\"];\n if (!Array.isArray(layout)) throw new Error(contextName + \" must be an array!\");\n\n for (var i = 0, len = layout.length; i < len; i++) {\n var item = layout[i];\n\n for (var j = 0; j < subProps.length; j++) {\n if (typeof item[subProps[j]] !== \"number\") {\n throw new Error(\"ReactGridLayout: \" + contextName + \"[\" + i + \"].\" + subProps[j] + \" must be a number!\");\n }\n }\n }\n} // Legacy support for verticalCompact: false\n\n\nfunction compactType(props\n/*: ?{ verticalCompact: boolean, compactType: CompactType }*/\n)\n/*: CompactType*/\n{\n var _ref3 = props || {},\n verticalCompact = _ref3.verticalCompact,\n compactType = _ref3.compactType;\n\n return verticalCompact === false ? null : compactType;\n}\n\nfunction log() {\n var _console;\n\n if (!DEBUG) return; // eslint-disable-next-line no-console\n\n (_console = console).log.apply(_console, arguments);\n}\n\nvar noop = function noop() {};\n\nexports.noop = noop;","module.exports = require(\"./build/ReactGridLayout\").default;\nmodule.exports.utils = require(\"./build/utils\");\nmodule.exports.Responsive =\n require(\"./build/ResponsiveReactGridLayout\").default;\nmodule.exports.Responsive.utils = require(\"./build/responsiveUtils\");\nmodule.exports.WidthProvider =\n require(\"./build/components/WidthProvider\").default;\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t= 0) continue; target[key] = source[key]; } return target; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n// The base component.\n// This component does not have state and relies on the parent to set its props based on callback data.\nvar Resizable = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Resizable, _React$Component);\n function Resizable() {\n var _this;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.handleRefs = {};\n _this.lastHandleRect = null;\n _this.slack = null;\n return _this;\n }\n var _proto = Resizable.prototype;\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.resetData();\n };\n _proto.resetData = function resetData() {\n this.lastHandleRect = this.slack = null;\n }\n\n // Clamp width and height within provided constraints\n ;\n _proto.runConstraints = function runConstraints(width, height) {\n var _this$props = this.props,\n minConstraints = _this$props.minConstraints,\n maxConstraints = _this$props.maxConstraints,\n lockAspectRatio = _this$props.lockAspectRatio;\n // short circuit\n if (!minConstraints && !maxConstraints && !lockAspectRatio) return [width, height];\n\n // If constraining to min and max, we need to also fit width and height to aspect ratio.\n if (lockAspectRatio) {\n var ratio = this.props.width / this.props.height;\n var deltaW = width - this.props.width;\n var deltaH = height - this.props.height;\n\n // Find which coordinate was greater and should push the other toward it.\n // E.g.:\n // ratio = 1, deltaW = 10, deltaH = 5, deltaH should become 10.\n // ratio = 2, deltaW = 10, deltaH = 6, deltaW should become 12.\n if (Math.abs(deltaW) > Math.abs(deltaH * ratio)) {\n height = width / ratio;\n } else {\n width = height * ratio;\n }\n }\n var oldW = width,\n oldH = height;\n\n // Add slack to the values used to calculate bound position. This will ensure that if\n // we start removing slack, the element won't react to it right away until it's been\n // completely removed.\n var _ref = this.slack || [0, 0],\n slackW = _ref[0],\n slackH = _ref[1];\n width += slackW;\n height += slackH;\n if (minConstraints) {\n width = Math.max(minConstraints[0], width);\n height = Math.max(minConstraints[1], height);\n }\n if (maxConstraints) {\n width = Math.min(maxConstraints[0], width);\n height = Math.min(maxConstraints[1], height);\n }\n\n // If the width or height changed, we must have introduced some slack. Record it for the next iteration.\n this.slack = [slackW + (oldW - width), slackH + (oldH - height)];\n return [width, height];\n }\n\n /**\n * Wrapper around drag events to provide more useful data.\n *\n * @param {String} handlerName Handler name to wrap.\n * @return {Function} Handler function.\n */;\n _proto.resizeHandler = function resizeHandler(handlerName, axis) {\n var _this2 = this;\n return function (e, _ref2) {\n var node = _ref2.node,\n deltaX = _ref2.deltaX,\n deltaY = _ref2.deltaY;\n // Reset data in case it was left over somehow (should not be possible)\n if (handlerName === 'onResizeStart') _this2.resetData();\n\n // Axis restrictions\n var canDragX = (_this2.props.axis === 'both' || _this2.props.axis === 'x') && axis !== 'n' && axis !== 's';\n var canDragY = (_this2.props.axis === 'both' || _this2.props.axis === 'y') && axis !== 'e' && axis !== 'w';\n // No dragging possible.\n if (!canDragX && !canDragY) return;\n\n // Decompose axis for later use\n var axisV = axis[0];\n var axisH = axis[axis.length - 1]; // intentionally not axis[1], so that this catches axis === 'w' for example\n\n // Track the element being dragged to account for changes in position.\n // If a handle's position is changed between callbacks, we need to factor this in to the next callback.\n // Failure to do so will cause the element to \"skip\" when resized upwards or leftwards.\n var handleRect = node.getBoundingClientRect();\n if (_this2.lastHandleRect != null) {\n // If the handle has repositioned on either axis since last render,\n // we need to increase our callback values by this much.\n // Only checking 'n', 'w' since resizing by 's', 'w' won't affect the overall position on page,\n if (axisH === 'w') {\n var deltaLeftSinceLast = handleRect.left - _this2.lastHandleRect.left;\n deltaX += deltaLeftSinceLast;\n }\n if (axisV === 'n') {\n var deltaTopSinceLast = handleRect.top - _this2.lastHandleRect.top;\n deltaY += deltaTopSinceLast;\n }\n }\n // Storage of last rect so we know how much it has really moved.\n _this2.lastHandleRect = handleRect;\n\n // Reverse delta if using top or left drag handles.\n if (axisH === 'w') deltaX = -deltaX;\n if (axisV === 'n') deltaY = -deltaY;\n\n // Update w/h by the deltas. Also factor in transformScale.\n var width = _this2.props.width + (canDragX ? deltaX / _this2.props.transformScale : 0);\n var height = _this2.props.height + (canDragY ? deltaY / _this2.props.transformScale : 0);\n\n // Run user-provided constraints.\n var _this2$runConstraints = _this2.runConstraints(width, height);\n width = _this2$runConstraints[0];\n height = _this2$runConstraints[1];\n var dimensionsChanged = width !== _this2.props.width || height !== _this2.props.height;\n\n // Call user-supplied callback if present.\n var cb = typeof _this2.props[handlerName] === 'function' ? _this2.props[handlerName] : null;\n // Don't call 'onResize' if dimensions haven't changed.\n var shouldSkipCb = handlerName === 'onResize' && !dimensionsChanged;\n if (cb && !shouldSkipCb) {\n e.persist == null ? void 0 : e.persist();\n cb(e, {\n node: node,\n size: {\n width: width,\n height: height\n },\n handle: axis\n });\n }\n\n // Reset internal data\n if (handlerName === 'onResizeStop') _this2.resetData();\n };\n }\n\n // Render a resize handle given an axis & DOM ref. Ref *must* be attached for\n // the underlying draggable library to work properly.\n ;\n _proto.renderResizeHandle = function renderResizeHandle(handleAxis, ref) {\n var handle = this.props.handle;\n // No handle provided, make the default\n if (!handle) {\n return /*#__PURE__*/React.createElement(\"span\", {\n className: \"react-resizable-handle react-resizable-handle-\" + handleAxis,\n ref: ref\n });\n }\n // Handle is a function, such as:\n // `handle={(handleAxis) => }`\n if (typeof handle === 'function') {\n return handle(handleAxis, ref);\n }\n // Handle is a React component (composite or DOM).\n var isDOMElement = typeof handle.type === 'string';\n var props = _objectSpread({\n ref: ref\n }, isDOMElement ? {} : {\n handleAxis: handleAxis\n });\n return /*#__PURE__*/React.cloneElement(handle, props);\n };\n _proto.render = function render() {\n var _this3 = this;\n // Pass along only props not meant for the ``.`\n // eslint-disable-next-line no-unused-vars\n var _this$props2 = this.props,\n children = _this$props2.children,\n className = _this$props2.className,\n draggableOpts = _this$props2.draggableOpts,\n width = _this$props2.width,\n height = _this$props2.height,\n handle = _this$props2.handle,\n handleSize = _this$props2.handleSize,\n lockAspectRatio = _this$props2.lockAspectRatio,\n axis = _this$props2.axis,\n minConstraints = _this$props2.minConstraints,\n maxConstraints = _this$props2.maxConstraints,\n onResize = _this$props2.onResize,\n onResizeStop = _this$props2.onResizeStop,\n onResizeStart = _this$props2.onResizeStart,\n resizeHandles = _this$props2.resizeHandles,\n transformScale = _this$props2.transformScale,\n p = _objectWithoutPropertiesLoose(_this$props2, _excluded);\n\n // What we're doing here is getting the child of this element, and cloning it with this element's props.\n // We are then defining its children as:\n // 1. Its original children (resizable's child's children), and\n // 2. One or more draggable handles.\n return (0, _utils.cloneElement)(children, _objectSpread(_objectSpread({}, p), {}, {\n className: (className ? className + \" \" : '') + \"react-resizable\",\n children: [].concat(children.props.children, resizeHandles.map(function (handleAxis) {\n var _this3$handleRefs$han;\n // Create a ref to the handle so that `` doesn't have to use ReactDOM.findDOMNode().\n var ref = (_this3$handleRefs$han = _this3.handleRefs[handleAxis]) != null ? _this3$handleRefs$han : _this3.handleRefs[handleAxis] = /*#__PURE__*/React.createRef();\n return /*#__PURE__*/React.createElement(_reactDraggable.DraggableCore, _extends({}, draggableOpts, {\n nodeRef: ref,\n key: \"resizableHandle-\" + handleAxis,\n onStop: _this3.resizeHandler('onResizeStop', handleAxis),\n onStart: _this3.resizeHandler('onResizeStart', handleAxis),\n onDrag: _this3.resizeHandler('onResize', handleAxis)\n }), _this3.renderResizeHandle(handleAxis, ref));\n }))\n }));\n };\n return Resizable;\n}(React.Component);\nexports.default = Resizable;\nResizable.propTypes = _propTypes.resizableProps;\nResizable.defaultProps = {\n axis: 'both',\n handleSize: [20, 20],\n lockAspectRatio: false,\n minConstraints: [20, 20],\n maxConstraints: [Infinity, Infinity],\n resizeHandles: ['se'],\n transformScale: 1\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar React = _interopRequireWildcard(require(\"react\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _Resizable = _interopRequireDefault(require(\"./Resizable\"));\nvar _propTypes2 = require(\"./propTypes\");\nvar _excluded = [\"handle\", \"handleSize\", \"onResize\", \"onResizeStart\", \"onResizeStop\", \"draggableOpts\", \"minConstraints\", \"maxConstraints\", \"lockAspectRatio\", \"axis\", \"width\", \"height\", \"resizeHandles\", \"style\", \"transformScale\"];\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nvar ResizableBox = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(ResizableBox, _React$Component);\n function ResizableBox() {\n var _this;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.state = {\n width: _this.props.width,\n height: _this.props.height,\n propsWidth: _this.props.width,\n propsHeight: _this.props.height\n };\n _this.onResize = function (e, data) {\n var size = data.size;\n if (_this.props.onResize) {\n e.persist == null ? void 0 : e.persist();\n _this.setState(size, function () {\n return _this.props.onResize && _this.props.onResize(e, data);\n });\n } else {\n _this.setState(size);\n }\n };\n return _this;\n }\n ResizableBox.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {\n // If parent changes height/width, set that in our state.\n if (state.propsWidth !== props.width || state.propsHeight !== props.height) {\n return {\n width: props.width,\n height: props.height,\n propsWidth: props.width,\n propsHeight: props.height\n };\n }\n return null;\n };\n var _proto = ResizableBox.prototype;\n _proto.render = function render() {\n // Basic wrapper around a Resizable instance.\n // If you use Resizable directly, you are responsible for updating the child component\n // with a new width and height.\n var _this$props = this.props,\n handle = _this$props.handle,\n handleSize = _this$props.handleSize,\n onResize = _this$props.onResize,\n onResizeStart = _this$props.onResizeStart,\n onResizeStop = _this$props.onResizeStop,\n draggableOpts = _this$props.draggableOpts,\n minConstraints = _this$props.minConstraints,\n maxConstraints = _this$props.maxConstraints,\n lockAspectRatio = _this$props.lockAspectRatio,\n axis = _this$props.axis,\n width = _this$props.width,\n height = _this$props.height,\n resizeHandles = _this$props.resizeHandles,\n style = _this$props.style,\n transformScale = _this$props.transformScale,\n props = _objectWithoutPropertiesLoose(_this$props, _excluded);\n return /*#__PURE__*/React.createElement(_Resizable.default, {\n axis: axis,\n draggableOpts: draggableOpts,\n handle: handle,\n handleSize: handleSize,\n height: this.state.height,\n lockAspectRatio: lockAspectRatio,\n maxConstraints: maxConstraints,\n minConstraints: minConstraints,\n onResizeStart: onResizeStart,\n onResize: this.onResize,\n onResizeStop: onResizeStop,\n resizeHandles: resizeHandles,\n transformScale: transformScale,\n width: this.state.width\n }, /*#__PURE__*/React.createElement(\"div\", _extends({}, props, {\n style: _objectSpread(_objectSpread({}, style), {}, {\n width: this.state.width + 'px',\n height: this.state.height + 'px'\n })\n })));\n };\n return ResizableBox;\n}(React.Component);\nexports.default = ResizableBox;\n// PropTypes are identical to , except that children are not strictly required to be present.\nResizableBox.propTypes = _objectSpread(_objectSpread({}, _propTypes2.resizableProps), {}, {\n children: _propTypes.default.element\n});","\"use strict\";\n\nexports.__esModule = true;\nexports.resizableProps = void 0;\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _reactDraggable = require(\"react-draggable\");\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nvar resizableProps = {\n /*\n * Restricts resizing to a particular axis (default: 'both')\n * 'both' - allows resizing by width or height\n * 'x' - only allows the width to be changed\n * 'y' - only allows the height to be changed\n * 'none' - disables resizing altogether\n * */\n axis: _propTypes.default.oneOf(['both', 'x', 'y', 'none']),\n className: _propTypes.default.string,\n /*\n * Require that one and only one child be present.\n * */\n children: _propTypes.default.element.isRequired,\n /*\n * These will be passed wholesale to react-draggable's DraggableCore\n * */\n draggableOpts: _propTypes.default.shape({\n allowAnyClick: _propTypes.default.bool,\n cancel: _propTypes.default.string,\n children: _propTypes.default.node,\n disabled: _propTypes.default.bool,\n enableUserSelectHack: _propTypes.default.bool,\n offsetParent: _propTypes.default.node,\n grid: _propTypes.default.arrayOf(_propTypes.default.number),\n handle: _propTypes.default.string,\n nodeRef: _propTypes.default.object,\n onStart: _propTypes.default.func,\n onDrag: _propTypes.default.func,\n onStop: _propTypes.default.func,\n onMouseDown: _propTypes.default.func,\n scale: _propTypes.default.number\n }),\n /*\n * Initial height\n * */\n height: function height() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var props = args[0];\n // Required if resizing height or both\n if (props.axis === 'both' || props.axis === 'y') {\n var _PropTypes$number;\n return (_PropTypes$number = _propTypes.default.number).isRequired.apply(_PropTypes$number, args);\n }\n return _propTypes.default.number.apply(_propTypes.default, args);\n },\n /*\n * Customize cursor resize handle\n * */\n handle: _propTypes.default.oneOfType([_propTypes.default.node, _propTypes.default.func]),\n /*\n * If you change this, be sure to update your css\n * */\n handleSize: _propTypes.default.arrayOf(_propTypes.default.number),\n lockAspectRatio: _propTypes.default.bool,\n /*\n * Max X & Y measure\n * */\n maxConstraints: _propTypes.default.arrayOf(_propTypes.default.number),\n /*\n * Min X & Y measure\n * */\n minConstraints: _propTypes.default.arrayOf(_propTypes.default.number),\n /*\n * Called on stop resize event\n * */\n onResizeStop: _propTypes.default.func,\n /*\n * Called on start resize event\n * */\n onResizeStart: _propTypes.default.func,\n /*\n * Called on resize event\n * */\n onResize: _propTypes.default.func,\n /*\n * Defines which resize handles should be rendered (default: 'se')\n * 's' - South handle (bottom-center)\n * 'w' - West handle (left-center)\n * 'e' - East handle (right-center)\n * 'n' - North handle (top-center)\n * 'sw' - Southwest handle (bottom-left)\n * 'nw' - Northwest handle (top-left)\n * 'se' - Southeast handle (bottom-right)\n * 'ne' - Northeast handle (top-center)\n * */\n resizeHandles: _propTypes.default.arrayOf(_propTypes.default.oneOf(['s', 'w', 'e', 'n', 'sw', 'nw', 'se', 'ne'])),\n /*\n * If `transform: scale(n)` is set on the parent, this should be set to `n`.\n * */\n transformScale: _propTypes.default.number,\n /*\n * Initial width\n */\n width: function width() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n var props = args[0];\n // Required if resizing width or both\n if (props.axis === 'both' || props.axis === 'x') {\n var _PropTypes$number2;\n return (_PropTypes$number2 = _propTypes.default.number).isRequired.apply(_PropTypes$number2, args);\n }\n return _propTypes.default.number.apply(_propTypes.default, args);\n }\n};\nexports.resizableProps = resizableProps;","\"use strict\";\n\nexports.__esModule = true;\nexports.cloneElement = cloneElement;\nvar _react = _interopRequireDefault(require(\"react\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n// React.addons.cloneWithProps look-alike that merges style & className.\nfunction cloneElement(element, props) {\n if (props.style && element.props.style) {\n props.style = _objectSpread(_objectSpread({}, element.props.style), props.style);\n }\n if (props.className && element.props.className) {\n props.className = element.props.className + \" \" + props.className;\n }\n return /*#__PURE__*/_react.default.cloneElement(element, props);\n}","'use strict';\nmodule.exports = function() {\n throw new Error(\"Don't instantiate Resizable directly! Use require('react-resizable').Resizable\");\n};\n\nmodule.exports.Resizable = require('./build/Resizable').default;\nmodule.exports.ResizableBox = require('./build/ResizableBox').default;\n","'use strict';\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar React = require('react');\nvar React__default = _interopDefault(React);\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction withSideEffect(reducePropsToState, handleStateChangeOnClient, mapStateOnServer) {\n if (typeof reducePropsToState !== 'function') {\n throw new Error('Expected reducePropsToState to be a function.');\n }\n\n if (typeof handleStateChangeOnClient !== 'function') {\n throw new Error('Expected handleStateChangeOnClient to be a function.');\n }\n\n if (typeof mapStateOnServer !== 'undefined' && typeof mapStateOnServer !== 'function') {\n throw new Error('Expected mapStateOnServer to either be undefined or a function.');\n }\n\n function getDisplayName(WrappedComponent) {\n return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n }\n\n return function wrap(WrappedComponent) {\n if (typeof WrappedComponent !== 'function') {\n throw new Error('Expected WrappedComponent to be a React component.');\n }\n\n var mountedInstances = [];\n var state;\n\n function emitChange() {\n state = reducePropsToState(mountedInstances.map(function (instance) {\n return instance.props;\n }));\n\n if (SideEffect.canUseDOM) {\n handleStateChangeOnClient(state);\n } else if (mapStateOnServer) {\n state = mapStateOnServer(state);\n }\n }\n\n var SideEffect =\n /*#__PURE__*/\n function (_PureComponent) {\n _inheritsLoose(SideEffect, _PureComponent);\n\n function SideEffect() {\n return _PureComponent.apply(this, arguments) || this;\n }\n\n // Try to use displayName of wrapped component\n // Expose canUseDOM so tests can monkeypatch it\n SideEffect.peek = function peek() {\n return state;\n };\n\n SideEffect.rewind = function rewind() {\n if (SideEffect.canUseDOM) {\n throw new Error('You may only call rewind() on the server. Call peek() to read the current state.');\n }\n\n var recordedState = state;\n state = undefined;\n mountedInstances = [];\n return recordedState;\n };\n\n var _proto = SideEffect.prototype;\n\n _proto.UNSAFE_componentWillMount = function UNSAFE_componentWillMount() {\n mountedInstances.push(this);\n emitChange();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n emitChange();\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n var index = mountedInstances.indexOf(this);\n mountedInstances.splice(index, 1);\n emitChange();\n };\n\n _proto.render = function render() {\n return React__default.createElement(WrappedComponent, this.props);\n };\n\n return SideEffect;\n }(React.PureComponent);\n\n _defineProperty(SideEffect, \"displayName\", \"SideEffect(\" + getDisplayName(WrappedComponent) + \")\");\n\n _defineProperty(SideEffect, \"canUseDOM\", canUseDOM);\n\n return SideEffect;\n };\n}\n\nmodule.exports = withSideEffect;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar react_1 = require(\"react\");\nvar useTimeoutFn_1 = tslib_1.__importDefault(require(\"./useTimeoutFn\"));\nfunction useDebounce(fn, ms, deps) {\n if (ms === void 0) { ms = 0; }\n if (deps === void 0) { deps = []; }\n var _a = useTimeoutFn_1.default(fn, ms), isReady = _a[0], cancel = _a[1], reset = _a[2];\n react_1.useEffect(reset, deps);\n return [isReady, cancel];\n}\nexports.default = useDebounce;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = require(\"react\");\nfunction usePrevious(state) {\n var ref = react_1.useRef();\n react_1.useEffect(function () {\n ref.current = state;\n });\n return ref.current;\n}\nexports.default = usePrevious;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = require(\"react\");\nfunction useTimeoutFn(fn, ms) {\n if (ms === void 0) { ms = 0; }\n var ready = react_1.useRef(false);\n var timeout = react_1.useRef();\n var callback = react_1.useRef(fn);\n var isReady = react_1.useCallback(function () { return ready.current; }, []);\n var set = react_1.useCallback(function () {\n ready.current = false;\n timeout.current && clearTimeout(timeout.current);\n timeout.current = setTimeout(function () {\n ready.current = true;\n callback.current();\n }, ms);\n }, [ms]);\n var clear = react_1.useCallback(function () {\n ready.current = null;\n timeout.current && clearTimeout(timeout.current);\n }, []);\n // update ref when function changes\n react_1.useEffect(function () {\n callback.current = fn;\n }, [fn]);\n // set on mount, clear on unmount\n react_1.useEffect(function () {\n set();\n return clear;\n }, [ms]);\n return [isReady, clear, set];\n}\nexports.default = useTimeoutFn;\n","/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","const ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n static get ANY () {\n return ANY\n }\n\n constructor (comp, options) {\n options = parseOptions(options)\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n comp = comp.trim().split(/\\s+/).join(' ')\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n }\n\n parse (comp) {\n const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const m = comp.match(r)\n\n if (!m) {\n throw new TypeError(`Invalid comparator: ${comp}`)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n }\n\n toString () {\n return this.value\n }\n\n test (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n }\n\n intersects (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n return new Range(comp.value, options).test(this.value)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n return new Range(this.value, options).test(comp.semver)\n }\n\n options = parseOptions(options)\n\n // Special cases where nothing can possibly be lower\n if (options.includePrerelease &&\n (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {\n return false\n }\n if (!options.includePrerelease &&\n (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {\n return false\n }\n\n // Same direction increasing (> or >=)\n if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {\n return true\n }\n // Same direction decreasing (< or <=)\n if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {\n return true\n }\n // same SemVer and both sides are inclusive (<= or >=)\n if (\n (this.semver.version === comp.semver.version) &&\n this.operator.includes('=') && comp.operator.includes('=')) {\n return true\n }\n // opposite directions less than\n if (cmp(this.semver, '<', comp.semver, options) &&\n this.operator.startsWith('>') && comp.operator.startsWith('<')) {\n return true\n }\n // opposite directions greater than\n if (cmp(this.semver, '>', comp.semver, options) &&\n this.operator.startsWith('<') && comp.operator.startsWith('>')) {\n return true\n }\n return false\n }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst { safeRe: re, t } = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n","// hoisted class for cyclic dependency\nclass Range {\n constructor (range, options) {\n options = parseOptions(options)\n\n if (range instanceof Range) {\n if (\n range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease\n ) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n // just put it in the set and return\n this.raw = range.value\n this.set = [[range]]\n this.format()\n return this\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First reduce all whitespace as much as possible so we do not have to rely\n // on potentially slow regexes like \\s*. This is then stored and used for\n // future error messages as well.\n this.raw = range\n .trim()\n .split(/\\s+/)\n .join(' ')\n\n // First, split on ||\n this.set = this.raw\n .split('||')\n // map the range to a 2d array of comparators\n .map(r => this.parseRange(r.trim()))\n // throw out any comparator lists that are empty\n // this generally means that it was not a valid range, which is allowed\n // in loose mode, but will still throw if the WHOLE range is invalid.\n .filter(c => c.length)\n\n if (!this.set.length) {\n throw new TypeError(`Invalid SemVer Range: ${this.raw}`)\n }\n\n // if we have any that are not the null set, throw out null sets.\n if (this.set.length > 1) {\n // keep the first one, in case they're all null sets\n const first = this.set[0]\n this.set = this.set.filter(c => !isNullSet(c[0]))\n if (this.set.length === 0) {\n this.set = [first]\n } else if (this.set.length > 1) {\n // if we have any that are *, then the range is just *\n for (const c of this.set) {\n if (c.length === 1 && isAny(c[0])) {\n this.set = [c]\n break\n }\n }\n }\n }\n\n this.format()\n }\n\n format () {\n this.range = this.set\n .map((comps) => comps.join(' ').trim())\n .join('||')\n .trim()\n return this.range\n }\n\n toString () {\n return this.range\n }\n\n parseRange (range) {\n // memoize range parsing for performance.\n // this is a very hot path, and fully deterministic.\n const memoOpts =\n (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) |\n (this.options.loose && FLAG_LOOSE)\n const memoKey = memoOpts + ':' + range\n const cached = cache.get(memoKey)\n if (cached) {\n return cached\n }\n\n const loose = this.options.loose\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n debug('hyphen replace', range)\n\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range)\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n debug('tilde trim', range)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n debug('caret trim', range)\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n let rangeList = range\n .split(' ')\n .map(comp => parseComparator(comp, this.options))\n .join(' ')\n .split(/\\s+/)\n // >=0.0.0 is equivalent to *\n .map(comp => replaceGTE0(comp, this.options))\n\n if (loose) {\n // in loose mode, throw out any that are not valid comparators\n rangeList = rangeList.filter(comp => {\n debug('loose invalid filter', comp, this.options)\n return !!comp.match(re[t.COMPARATORLOOSE])\n })\n }\n debug('range list', rangeList)\n\n // if any comparators are the null set, then replace with JUST null set\n // if more than one comparator, remove any * comparators\n // also, don't include the same comparator more than once\n const rangeMap = new Map()\n const comparators = rangeList.map(comp => new Comparator(comp, this.options))\n for (const comp of comparators) {\n if (isNullSet(comp)) {\n return [comp]\n }\n rangeMap.set(comp.value, comp)\n }\n if (rangeMap.size > 1 && rangeMap.has('')) {\n rangeMap.delete('')\n }\n\n const result = [...rangeMap.values()]\n cache.set(memoKey, result)\n return result\n }\n\n intersects (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some((thisComparators) => {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some((rangeComparators) => {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every((thisComparator) => {\n return rangeComparators.every((rangeComparator) => {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n }\n\n // if ANY of the sets match ALL of its comparators, then pass\n test (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (let i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n }\n}\n\nmodule.exports = Range\n\nconst LRU = require('../internal/lrucache')\nconst cache = new LRU()\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n safeRe: re,\n t,\n comparatorTrimReplace,\n tildeTrimReplace,\n caretTrimReplace,\n} = require('../internal/re')\nconst { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n let result = true\n const remainingComparators = comparators.slice()\n let testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every((otherComparator) => {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nconst replaceTildes = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceTilde(c, options))\n .join(' ')\n}\n\nconst replaceTilde = (comp, options) => {\n const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('tilde', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nconst replaceCarets = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceCaret(c, options))\n .join(' ')\n}\n\nconst replaceCaret = (comp, options) => {\n debug('caret', comp, options)\n const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n const z = options.includePrerelease ? '-0' : ''\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('caret', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${+M + 1}.0.0-0`\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p\n } <${+M + 1}.0.0-0`\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nconst replaceXRanges = (comp, options) => {\n debug('replaceXRanges', comp, options)\n return comp\n .split(/\\s+/)\n .map((c) => replaceXRange(c, options))\n .join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n comp = comp.trim()\n const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n const xM = isX(M)\n const xm = xM || isX(m)\n const xp = xm || isX(p)\n const anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n if (gtlt === '<') {\n pr = '-0'\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp\n .trim()\n .replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n debug('replaceGTE0', comp, options)\n return comp\n .trim()\n .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\n// TODO build?\nconst hyphenReplace = incPr => ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr) => {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n } else if (fpr) {\n from = `>=${from}`\n } else {\n from = `>=${from}${incPr ? '-0' : ''}`\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`\n } else if (incPr) {\n to = `<${tM}.${tm}.${+tp + 1}-0`\n } else {\n to = `<=${to}`\n }\n\n return `${from} ${to}`.trim()\n}\n\nconst testSet = (set, version, options) => {\n for (let i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (let i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === Comparator.ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n const allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n","const debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n constructor (version, options) {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose &&\n version.includePrerelease === !!options.includePrerelease) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n )\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n // this isn't actually relevant for versions, but keep it so that we\n // don't run into trouble passing this.options around.\n this.includePrerelease = !!options.includePrerelease\n\n const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n }\n\n format () {\n this.version = `${this.major}.${this.minor}.${this.patch}`\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join('.')}`\n }\n return this.version\n }\n\n toString () {\n return this.version\n }\n\n compare (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n if (typeof other === 'string' && other === this.version) {\n return 0\n }\n other = new SemVer(other, this.options)\n }\n\n if (other.version === this.version) {\n return 0\n }\n\n return this.compareMain(other) || this.comparePre(other)\n }\n\n compareMain (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return (\n compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch)\n )\n }\n\n comparePre (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n let i = 0\n do {\n const a = this.prerelease[i]\n const b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n compareBuild (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n let i = 0\n do {\n const a = this.build[i]\n const b = other.build[i]\n debug('build compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc (release, identifier, identifierBase) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier, identifierBase)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier, identifierBase)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier, identifierBase)\n this.inc('pre', identifier, identifierBase)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier, identifierBase)\n }\n this.inc('pre', identifier, identifierBase)\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (\n this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0\n ) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case 'pre': {\n const base = Number(identifierBase) ? 1 : 0\n\n if (!identifier && identifierBase === false) {\n throw new Error('invalid increment argument: identifier is empty')\n }\n\n if (this.prerelease.length === 0) {\n this.prerelease = [base]\n } else {\n let i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n if (identifier === this.prerelease.join('.') && identifierBase === false) {\n throw new Error('invalid increment argument: identifier already exists')\n }\n this.prerelease.push(base)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n let prerelease = [identifier, base]\n if (identifierBase === false) {\n prerelease = [identifier]\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease\n }\n } else {\n this.prerelease = prerelease\n }\n }\n break\n }\n default:\n throw new Error(`invalid increment argument: ${release}`)\n }\n this.raw = this.format()\n if (this.build.length) {\n this.raw += `+${this.build.join('.')}`\n }\n return this\n }\n}\n\nmodule.exports = SemVer\n","const parse = require('./parse')\nconst clean = (version, options) => {\n const s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\nmodule.exports = clean\n","const eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n switch (op) {\n case '===':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a === b\n\n case '!==':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError(`Invalid operator: ${op}`)\n }\n}\nmodule.exports = cmp\n","const SemVer = require('../classes/semver')\nconst parse = require('./parse')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst coerce = (version, options) => {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version === 'number') {\n version = String(version)\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n options = options || {}\n\n let match = null\n if (!options.rtl) {\n match = version.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE])\n } else {\n // Find the right-most coercible string that does not share\n // a terminus with a more left-ward coercible string.\n // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n // With includePrerelease option set, '1.2.3.4-rc' wants to coerce '2.3.4-rc', not '2.3.4'\n //\n // Walk through the string checking with a /g regexp\n // Manually set the index so as to pick up overlapping matches.\n // Stop when we get a match that ends at the string end, since no\n // coercible string can be more right-ward without the same terminus.\n const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL]\n let next\n while ((next = coerceRtlRegex.exec(version)) &&\n (!match || match.index + match[0].length !== version.length)\n ) {\n if (!match ||\n next.index + next[0].length !== match.index + match[0].length) {\n match = next\n }\n coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length\n }\n // leave it in a clean state\n coerceRtlRegex.lastIndex = -1\n }\n\n if (match === null) {\n return null\n }\n\n const major = match[2]\n const minor = match[3] || '0'\n const patch = match[4] || '0'\n const prerelease = options.includePrerelease && match[5] ? `-${match[5]}` : ''\n const build = options.includePrerelease && match[6] ? `+${match[6]}` : ''\n\n return parse(`${major}.${minor}.${patch}${prerelease}${build}`, options)\n}\nmodule.exports = coerce\n","const SemVer = require('../classes/semver')\nconst compareBuild = (a, b, loose) => {\n const versionA = new SemVer(a, loose)\n const versionB = new SemVer(b, loose)\n return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\nmodule.exports = compareBuild\n","const compare = require('./compare')\nconst compareLoose = (a, b) => compare(a, b, true)\nmodule.exports = compareLoose\n","const SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n","const parse = require('./parse.js')\n\nconst diff = (version1, version2) => {\n const v1 = parse(version1, null, true)\n const v2 = parse(version2, null, true)\n const comparison = v1.compare(v2)\n\n if (comparison === 0) {\n return null\n }\n\n const v1Higher = comparison > 0\n const highVersion = v1Higher ? v1 : v2\n const lowVersion = v1Higher ? v2 : v1\n const highHasPre = !!highVersion.prerelease.length\n const lowHasPre = !!lowVersion.prerelease.length\n\n if (lowHasPre && !highHasPre) {\n // Going from prerelease -> no prerelease requires some special casing\n\n // If the low version has only a major, then it will always be a major\n // Some examples:\n // 1.0.0-1 -> 1.0.0\n // 1.0.0-1 -> 1.1.1\n // 1.0.0-1 -> 2.0.0\n if (!lowVersion.patch && !lowVersion.minor) {\n return 'major'\n }\n\n // Otherwise it can be determined by checking the high version\n\n if (highVersion.patch) {\n // anything higher than a patch bump would result in the wrong version\n return 'patch'\n }\n\n if (highVersion.minor) {\n // anything higher than a minor bump would result in the wrong version\n return 'minor'\n }\n\n // bumping major/minor/patch all have same result\n return 'major'\n }\n\n // add the `pre` prefix if we are going to a prerelease version\n const prefix = highHasPre ? 'pre' : ''\n\n if (v1.major !== v2.major) {\n return prefix + 'major'\n }\n\n if (v1.minor !== v2.minor) {\n return prefix + 'minor'\n }\n\n if (v1.patch !== v2.patch) {\n return prefix + 'patch'\n }\n\n // high and low are preleases\n return 'prerelease'\n}\n\nmodule.exports = diff\n","const compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n","const compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n","const compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n","const SemVer = require('../classes/semver')\n\nconst inc = (version, release, options, identifier, identifierBase) => {\n if (typeof (options) === 'string') {\n identifierBase = identifier\n identifier = options\n options = undefined\n }\n\n try {\n return new SemVer(\n version instanceof SemVer ? version.version : version,\n options\n ).inc(release, identifier, identifierBase).version\n } catch (er) {\n return null\n }\n}\nmodule.exports = inc\n","const compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n","const compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n","const SemVer = require('../classes/semver')\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n","const SemVer = require('../classes/semver')\nconst minor = (a, loose) => new SemVer(a, loose).minor\nmodule.exports = minor\n","const compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n","const SemVer = require('../classes/semver')\nconst parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version\n }\n try {\n return new SemVer(version, options)\n } catch (er) {\n if (!throwErrors) {\n return null\n }\n throw er\n }\n}\n\nmodule.exports = parse\n","const SemVer = require('../classes/semver')\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n","const parse = require('./parse')\nconst prerelease = (version, options) => {\n const parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\nmodule.exports = prerelease\n","const compare = require('./compare')\nconst rcompare = (a, b, loose) => compare(b, a, loose)\nmodule.exports = rcompare\n","const compareBuild = require('./compare-build')\nconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))\nmodule.exports = rsort\n","const Range = require('../classes/range')\nconst satisfies = (version, range, options) => {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\nmodule.exports = satisfies\n","const compareBuild = require('./compare-build')\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n","const parse = require('./parse')\nconst valid = (version, options) => {\n const v = parse(version, options)\n return v ? v.version : null\n}\nmodule.exports = valid\n","// just pre-load all the stuff that index.js lazily exports\nconst internalRe = require('./internal/re')\nconst constants = require('./internal/constants')\nconst SemVer = require('./classes/semver')\nconst identifiers = require('./internal/identifiers')\nconst parse = require('./functions/parse')\nconst valid = require('./functions/valid')\nconst clean = require('./functions/clean')\nconst inc = require('./functions/inc')\nconst diff = require('./functions/diff')\nconst major = require('./functions/major')\nconst minor = require('./functions/minor')\nconst patch = require('./functions/patch')\nconst prerelease = require('./functions/prerelease')\nconst compare = require('./functions/compare')\nconst rcompare = require('./functions/rcompare')\nconst compareLoose = require('./functions/compare-loose')\nconst compareBuild = require('./functions/compare-build')\nconst sort = require('./functions/sort')\nconst rsort = require('./functions/rsort')\nconst gt = require('./functions/gt')\nconst lt = require('./functions/lt')\nconst eq = require('./functions/eq')\nconst neq = require('./functions/neq')\nconst gte = require('./functions/gte')\nconst lte = require('./functions/lte')\nconst cmp = require('./functions/cmp')\nconst coerce = require('./functions/coerce')\nconst Comparator = require('./classes/comparator')\nconst Range = require('./classes/range')\nconst satisfies = require('./functions/satisfies')\nconst toComparators = require('./ranges/to-comparators')\nconst maxSatisfying = require('./ranges/max-satisfying')\nconst minSatisfying = require('./ranges/min-satisfying')\nconst minVersion = require('./ranges/min-version')\nconst validRange = require('./ranges/valid')\nconst outside = require('./ranges/outside')\nconst gtr = require('./ranges/gtr')\nconst ltr = require('./ranges/ltr')\nconst intersects = require('./ranges/intersects')\nconst simplifyRange = require('./ranges/simplify')\nconst subset = require('./ranges/subset')\nmodule.exports = {\n parse,\n valid,\n clean,\n inc,\n diff,\n major,\n minor,\n patch,\n prerelease,\n compare,\n rcompare,\n compareLoose,\n compareBuild,\n sort,\n rsort,\n gt,\n lt,\n eq,\n neq,\n gte,\n lte,\n cmp,\n coerce,\n Comparator,\n Range,\n satisfies,\n toComparators,\n maxSatisfying,\n minSatisfying,\n minVersion,\n validRange,\n outside,\n gtr,\n ltr,\n intersects,\n simplifyRange,\n subset,\n SemVer,\n re: internalRe.re,\n src: internalRe.src,\n tokens: internalRe.t,\n SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,\n RELEASE_TYPES: constants.RELEASE_TYPES,\n compareIdentifiers: identifiers.compareIdentifiers,\n rcompareIdentifiers: identifiers.rcompareIdentifiers,\n}\n","// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\n// Max safe length for a build identifier. The max length minus 6 characters for\n// the shortest version with a build 0.0.0+BUILD.\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6\n\nconst RELEASE_TYPES = [\n 'major',\n 'premajor',\n 'minor',\n 'preminor',\n 'patch',\n 'prepatch',\n 'prerelease',\n]\n\nmodule.exports = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 0b001,\n FLAG_LOOSE: 0b010,\n}\n","const debug = (\n typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n : () => {}\n\nmodule.exports = debug\n","const numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n const anum = numeric.test(a)\n const bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n compareIdentifiers,\n rcompareIdentifiers,\n}\n","class LRUCache {\n constructor () {\n this.max = 1000\n this.map = new Map()\n }\n\n get (key) {\n const value = this.map.get(key)\n if (value === undefined) {\n return undefined\n } else {\n // Remove the key from the map and add it to the end\n this.map.delete(key)\n this.map.set(key, value)\n return value\n }\n }\n\n delete (key) {\n return this.map.delete(key)\n }\n\n set (key, value) {\n const deleted = this.delete(key)\n\n if (!deleted && value !== undefined) {\n // If cache is full, delete the least recently used item\n if (this.map.size >= this.max) {\n const firstKey = this.map.keys().next().value\n this.delete(firstKey)\n }\n\n this.map.set(key, value)\n }\n\n return this\n }\n}\n\nmodule.exports = LRUCache\n","// parse out just the options we care about\nconst looseOption = Object.freeze({ loose: true })\nconst emptyOpts = Object.freeze({ })\nconst parseOptions = options => {\n if (!options) {\n return emptyOpts\n }\n\n if (typeof options !== 'object') {\n return looseOption\n }\n\n return options\n}\nmodule.exports = parseOptions\n","const {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH,\n} = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst safeRe = exports.safeRe = []\nconst src = exports.src = []\nconst t = exports.t = {}\nlet R = 0\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]'\n\n// Replace some greedy regex tokens to prevent regex dos issues. These regex are\n// used internally via the safeRe object since all inputs in this library get\n// normalized first to trim and collapse all extra whitespace. The original\n// regexes are exported for userland consumption and lower level usage. A\n// future breaking change could export the safer regex only with a note that\n// all input should have extra whitespace removed.\nconst safeRegexReplacements = [\n ['\\\\s', 1],\n ['\\\\d', MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],\n]\n\nconst makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value\n .split(`${token}*`).join(`${token}{0,${max}}`)\n .split(`${token}+`).join(`${token}{1,${max}}`)\n }\n return value\n}\n\nconst createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value)\n const index = R++\n debug(name, index, value)\n t[name] = index\n src[index] = value\n re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '\\\\d+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:${src[t.PRERELEASE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:${src[t.PRERELEASELOOSE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCEPLAIN', `${'(^|[^\\\\d])' +\n '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`)\ncreateToken('COERCE', `${src[t.COERCEPLAIN]}(?:$|[^\\\\d])`)\ncreateToken('COERCEFULL', src[t.COERCEPLAIN] +\n `(?:${src[t.PRERELEASE]})?` +\n `(?:${src[t.BUILD]})?` +\n `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\ncreateToken('COERCERTLFULL', src[t.COERCEFULL], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAIN]})` +\n `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$')\n","// Determine if version is greater than all the versions possible in the range.\nconst outside = require('./outside')\nconst gtr = (version, range, options) => outside(version, range, '>', options)\nmodule.exports = gtr\n","const Range = require('../classes/range')\nconst intersects = (r1, r2, options) => {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2, options)\n}\nmodule.exports = intersects\n","const outside = require('./outside')\n// Determine if version is less than all the versions possible in the range\nconst ltr = (version, range, options) => outside(version, range, '<', options)\nmodule.exports = ltr\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\n\nconst maxSatisfying = (versions, range, options) => {\n let max = null\n let maxSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\nmodule.exports = maxSatisfying\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst minSatisfying = (versions, range, options) => {\n let min = null\n let minSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\nmodule.exports = minSatisfying\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst gt = require('../functions/gt')\n\nconst minVersion = (range, loose) => {\n range = new Range(range, loose)\n\n let minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let setMin = null\n comparators.forEach((comparator) => {\n // Clone to avoid manipulating the comparator's semver object.\n const compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!setMin || gt(compver, setMin)) {\n setMin = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error(`Unexpected operation: ${comparator.operator}`)\n }\n })\n if (setMin && (!minver || gt(minver, setMin))) {\n minver = setMin\n }\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\nmodule.exports = minVersion\n","const SemVer = require('../classes/semver')\nconst Comparator = require('../classes/comparator')\nconst { ANY } = Comparator\nconst Range = require('../classes/range')\nconst satisfies = require('../functions/satisfies')\nconst gt = require('../functions/gt')\nconst lt = require('../functions/lt')\nconst lte = require('../functions/lte')\nconst gte = require('../functions/gte')\n\nconst outside = (version, range, hilo, options) => {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n let gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisfies the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let high = null\n let low = null\n\n comparators.forEach((comparator) => {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nmodule.exports = outside\n","// given a set of versions and a range, create a \"simplified\" range\n// that includes the same versions that the original range does\n// If the original range is shorter than the simplified one, return that.\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\nmodule.exports = (versions, range, options) => {\n const set = []\n let first = null\n let prev = null\n const v = versions.sort((a, b) => compare(a, b, options))\n for (const version of v) {\n const included = satisfies(version, range, options)\n if (included) {\n prev = version\n if (!first) {\n first = version\n }\n } else {\n if (prev) {\n set.push([first, prev])\n }\n prev = null\n first = null\n }\n }\n if (first) {\n set.push([first, null])\n }\n\n const ranges = []\n for (const [min, max] of set) {\n if (min === max) {\n ranges.push(min)\n } else if (!max && min === v[0]) {\n ranges.push('*')\n } else if (!max) {\n ranges.push(`>=${min}`)\n } else if (min === v[0]) {\n ranges.push(`<=${max}`)\n } else {\n ranges.push(`${min} - ${max}`)\n }\n }\n const simplified = ranges.join(' || ')\n const original = typeof range.raw === 'string' ? range.raw : String(range)\n return simplified.length < original.length ? simplified : range\n}\n","const Range = require('../classes/range.js')\nconst Comparator = require('../classes/comparator.js')\nconst { ANY } = Comparator\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\n\n// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:\n// - Every simple range `r1, r2, ...` is a null set, OR\n// - Every simple range `r1, r2, ...` which is not a null set is a subset of\n// some `R1, R2, ...`\n//\n// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:\n// - If c is only the ANY comparator\n// - If C is only the ANY comparator, return true\n// - Else if in prerelease mode, return false\n// - else replace c with `[>=0.0.0]`\n// - If C is only the ANY comparator\n// - if in prerelease mode, return true\n// - else replace C with `[>=0.0.0]`\n// - Let EQ be the set of = comparators in c\n// - If EQ is more than one, return true (null set)\n// - Let GT be the highest > or >= comparator in c\n// - Let LT be the lowest < or <= comparator in c\n// - If GT and LT, and GT.semver > LT.semver, return true (null set)\n// - If any C is a = range, and GT or LT are set, return false\n// - If EQ\n// - If GT, and EQ does not satisfy GT, return true (null set)\n// - If LT, and EQ does not satisfy LT, return true (null set)\n// - If EQ satisfies every C, return true\n// - Else return false\n// - If GT\n// - If GT.semver is lower than any > or >= comp in C, return false\n// - If GT is >=, and GT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the GT.semver tuple, return false\n// - If LT\n// - If LT.semver is greater than any < or <= comp in C, return false\n// - If LT is <=, and LT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the LT.semver tuple, return false\n// - Else return true\n\nconst subset = (sub, dom, options = {}) => {\n if (sub === dom) {\n return true\n }\n\n sub = new Range(sub, options)\n dom = new Range(dom, options)\n let sawNonNull = false\n\n OUTER: for (const simpleSub of sub.set) {\n for (const simpleDom of dom.set) {\n const isSub = simpleSubset(simpleSub, simpleDom, options)\n sawNonNull = sawNonNull || isSub !== null\n if (isSub) {\n continue OUTER\n }\n }\n // the null set is a subset of everything, but null simple ranges in\n // a complex range should be ignored. so if we saw a non-null range,\n // then we know this isn't a subset, but if EVERY simple range was null,\n // then it is a subset.\n if (sawNonNull) {\n return false\n }\n }\n return true\n}\n\nconst minimumVersionWithPreRelease = [new Comparator('>=0.0.0-0')]\nconst minimumVersion = [new Comparator('>=0.0.0')]\n\nconst simpleSubset = (sub, dom, options) => {\n if (sub === dom) {\n return true\n }\n\n if (sub.length === 1 && sub[0].semver === ANY) {\n if (dom.length === 1 && dom[0].semver === ANY) {\n return true\n } else if (options.includePrerelease) {\n sub = minimumVersionWithPreRelease\n } else {\n sub = minimumVersion\n }\n }\n\n if (dom.length === 1 && dom[0].semver === ANY) {\n if (options.includePrerelease) {\n return true\n } else {\n dom = minimumVersion\n }\n }\n\n const eqSet = new Set()\n let gt, lt\n for (const c of sub) {\n if (c.operator === '>' || c.operator === '>=') {\n gt = higherGT(gt, c, options)\n } else if (c.operator === '<' || c.operator === '<=') {\n lt = lowerLT(lt, c, options)\n } else {\n eqSet.add(c.semver)\n }\n }\n\n if (eqSet.size > 1) {\n return null\n }\n\n let gtltComp\n if (gt && lt) {\n gtltComp = compare(gt.semver, lt.semver, options)\n if (gtltComp > 0) {\n return null\n } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) {\n return null\n }\n }\n\n // will iterate one or zero times\n for (const eq of eqSet) {\n if (gt && !satisfies(eq, String(gt), options)) {\n return null\n }\n\n if (lt && !satisfies(eq, String(lt), options)) {\n return null\n }\n\n for (const c of dom) {\n if (!satisfies(eq, String(c), options)) {\n return false\n }\n }\n\n return true\n }\n\n let higher, lower\n let hasDomLT, hasDomGT\n // if the subset has a prerelease, we need a comparator in the superset\n // with the same tuple and a prerelease, or it's not a subset\n let needDomLTPre = lt &&\n !options.includePrerelease &&\n lt.semver.prerelease.length ? lt.semver : false\n let needDomGTPre = gt &&\n !options.includePrerelease &&\n gt.semver.prerelease.length ? gt.semver : false\n // exception: <1.2.3-0 is the same as <1.2.3\n if (needDomLTPre && needDomLTPre.prerelease.length === 1 &&\n lt.operator === '<' && needDomLTPre.prerelease[0] === 0) {\n needDomLTPre = false\n }\n\n for (const c of dom) {\n hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='\n hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='\n if (gt) {\n if (needDomGTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomGTPre.major &&\n c.semver.minor === needDomGTPre.minor &&\n c.semver.patch === needDomGTPre.patch) {\n needDomGTPre = false\n }\n }\n if (c.operator === '>' || c.operator === '>=') {\n higher = higherGT(gt, c, options)\n if (higher === c && higher !== gt) {\n return false\n }\n } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) {\n return false\n }\n }\n if (lt) {\n if (needDomLTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomLTPre.major &&\n c.semver.minor === needDomLTPre.minor &&\n c.semver.patch === needDomLTPre.patch) {\n needDomLTPre = false\n }\n }\n if (c.operator === '<' || c.operator === '<=') {\n lower = lowerLT(lt, c, options)\n if (lower === c && lower !== lt) {\n return false\n }\n } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) {\n return false\n }\n }\n if (!c.operator && (lt || gt) && gtltComp !== 0) {\n return false\n }\n }\n\n // if there was a < or >, and nothing in the dom, then must be false\n // UNLESS it was limited by another range in the other direction.\n // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0\n if (gt && hasDomLT && !lt && gtltComp !== 0) {\n return false\n }\n\n if (lt && hasDomGT && !gt && gtltComp !== 0) {\n return false\n }\n\n // we needed a prerelease range in a specific tuple, but didn't get one\n // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0,\n // because it includes prereleases in the 1.2.3 tuple\n if (needDomGTPre || needDomLTPre) {\n return false\n }\n\n return true\n}\n\n// >=1.2.3 is lower than >1.2.3\nconst higherGT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp > 0 ? a\n : comp < 0 ? b\n : b.operator === '>' && a.operator === '>=' ? b\n : a\n}\n\n// <=1.2.3 is higher than <1.2.3\nconst lowerLT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp < 0 ? a\n : comp > 0 ? b\n : b.operator === '<' && a.operator === '<=' ? b\n : a\n}\n\nmodule.exports = subset\n","const Range = require('../classes/range')\n\n// Mostly just for testing and legacy API reasons\nconst toComparators = (range, options) =>\n new Range(range, options).set\n .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))\n\nmodule.exports = toComparators\n","const Range = require('../classes/range')\nconst validRange = (range, options) => {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\nmodule.exports = validRange\n","'use strict';\n\nvar isArrayish = require('is-arrayish');\n\nvar concat = Array.prototype.concat;\nvar slice = Array.prototype.slice;\n\nvar swizzle = module.exports = function swizzle(args) {\n\tvar results = [];\n\n\tfor (var i = 0, len = args.length; i < len; i++) {\n\t\tvar arg = args[i];\n\n\t\tif (isArrayish(arg)) {\n\t\t\t// http://jsperf.com/javascript-array-concat-vs-push/98\n\t\t\tresults = concat.call(results, slice.call(arg));\n\t\t} else {\n\t\t\tresults.push(arg);\n\t\t}\n\t}\n\n\treturn results;\n};\n\nswizzle.wrap = function (fn) {\n\treturn function () {\n\t\treturn fn(swizzle(arguments));\n\t};\n};\n","module.exports = function isArrayish(obj) {\n\tif (!obj || typeof obj === 'string') {\n\t\treturn false;\n\t}\n\n\treturn obj instanceof Array || Array.isArray(obj) ||\n\t\t(obj.length >= 0 && (obj.splice instanceof Function ||\n\t\t\t(Object.getOwnPropertyDescriptor(obj, (obj.length - 1)) && obj.constructor.name !== 'String')));\n};\n","/////////////////////////////////////////////////////////////////////////////////\n/* UAParser.js v1.0.38\n Copyright © 2012-2021 Faisal Salman \n MIT License *//*\n Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.\n Supports browser & node.js environment. \n Demo : https://faisalman.github.io/ua-parser-js\n Source : https://github.com/faisalman/ua-parser-js */\n/////////////////////////////////////////////////////////////////////////////////\n\n(function (window, undefined) {\n\n 'use strict';\n\n //////////////\n // Constants\n /////////////\n\n\n var LIBVERSION = '1.0.38',\n EMPTY = '',\n UNKNOWN = '?',\n FUNC_TYPE = 'function',\n UNDEF_TYPE = 'undefined',\n OBJ_TYPE = 'object',\n STR_TYPE = 'string',\n MAJOR = 'major',\n MODEL = 'model',\n NAME = 'name',\n TYPE = 'type',\n VENDOR = 'vendor',\n VERSION = 'version',\n ARCHITECTURE= 'architecture',\n CONSOLE = 'console',\n MOBILE = 'mobile',\n TABLET = 'tablet',\n SMARTTV = 'smarttv',\n WEARABLE = 'wearable',\n EMBEDDED = 'embedded',\n UA_MAX_LENGTH = 500;\n\n var AMAZON = 'Amazon',\n APPLE = 'Apple',\n ASUS = 'ASUS',\n BLACKBERRY = 'BlackBerry',\n BROWSER = 'Browser',\n CHROME = 'Chrome',\n EDGE = 'Edge',\n FIREFOX = 'Firefox',\n GOOGLE = 'Google',\n HUAWEI = 'Huawei',\n LG = 'LG',\n MICROSOFT = 'Microsoft',\n MOTOROLA = 'Motorola',\n OPERA = 'Opera',\n SAMSUNG = 'Samsung',\n SHARP = 'Sharp',\n SONY = 'Sony',\n XIAOMI = 'Xiaomi',\n ZEBRA = 'Zebra',\n FACEBOOK = 'Facebook',\n CHROMIUM_OS = 'Chromium OS',\n MAC_OS = 'Mac OS';\n\n ///////////\n // Helper\n //////////\n\n var extend = function (regexes, extensions) {\n var mergedRegexes = {};\n for (var i in regexes) {\n if (extensions[i] && extensions[i].length % 2 === 0) {\n mergedRegexes[i] = extensions[i].concat(regexes[i]);\n } else {\n mergedRegexes[i] = regexes[i];\n }\n }\n return mergedRegexes;\n },\n enumerize = function (arr) {\n var enums = {};\n for (var i=0; i 0) {\n if (q.length === 2) {\n if (typeof q[1] == FUNC_TYPE) {\n // assign modified match\n this[q[0]] = q[1].call(this, match);\n } else {\n // assign given value, ignore regex match\n this[q[0]] = q[1];\n }\n } else if (q.length === 3) {\n // check whether function or regex\n if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {\n // call function (usually string mapper)\n this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\n } else {\n // sanitize match using given regex\n this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\n }\n } else if (q.length === 4) {\n this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\n }\n } else {\n this[q] = match ? match : undefined;\n }\n }\n }\n }\n i += 2;\n }\n },\n\n strMapper = function (str, map) {\n\n for (var i in map) {\n // check if current value is array\n if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {\n for (var j = 0; j < map[i].length; j++) {\n if (has(map[i][j], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n } else if (has(map[i], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n return str;\n };\n\n ///////////////\n // String map\n //////////////\n\n // Safari < 3.0\n var oldSafariMap = {\n '1.0' : '/8',\n '1.2' : '/1',\n '1.3' : '/3',\n '2.0' : '/412',\n '2.0.2' : '/416',\n '2.0.3' : '/417',\n '2.0.4' : '/419',\n '?' : '/'\n },\n windowsVersionMap = {\n 'ME' : '4.90',\n 'NT 3.11' : 'NT3.51',\n 'NT 4.0' : 'NT4.0',\n '2000' : 'NT 5.0',\n 'XP' : ['NT 5.1', 'NT 5.2'],\n 'Vista' : 'NT 6.0',\n '7' : 'NT 6.1',\n '8' : 'NT 6.2',\n '8.1' : 'NT 6.3',\n '10' : ['NT 6.4', 'NT 10.0'],\n 'RT' : 'ARM'\n };\n\n //////////////\n // Regex map\n /////////////\n\n var regexes = {\n\n browser : [[\n\n /\\b(?:crmo|crios)\\/([\\w\\.]+)/i // Chrome for Android/iOS\n ], [VERSION, [NAME, 'Chrome']], [\n /edg(?:e|ios|a)?\\/([\\w\\.]+)/i // Microsoft Edge\n ], [VERSION, [NAME, 'Edge']], [\n\n // Presto based\n /(opera mini)\\/([-\\w\\.]+)/i, // Opera Mini\n /(opera [mobiletab]{3,6})\\b.+version\\/([-\\w\\.]+)/i, // Opera Mobi/Tablet\n /(opera)(?:.+version\\/|[\\/ ]+)([\\w\\.]+)/i // Opera\n ], [NAME, VERSION], [\n /opios[\\/ ]+([\\w\\.]+)/i // Opera mini on iphone >= 8.0\n ], [VERSION, [NAME, OPERA+' Mini']], [\n /\\bop(?:rg)?x\\/([\\w\\.]+)/i // Opera GX\n ], [VERSION, [NAME, OPERA+' GX']], [\n /\\bopr\\/([\\w\\.]+)/i // Opera Webkit\n ], [VERSION, [NAME, OPERA]], [\n\n // Mixed\n /\\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\\/ ]?([\\w\\.]+)/i // Baidu\n ], [VERSION, [NAME, 'Baidu']], [\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(lunascape|maxthon|netfront|jasmine|blazer)[\\/ ]?([\\w\\.]*)/i, // Lunascape/Maxthon/Netfront/Jasmine/Blazer\n // Trident based\n /(avant|iemobile|slim)\\s?(?:browser)?[\\/ ]?([\\w\\.]*)/i, // Avant/IEMobile/SlimBrowser\n /(?:ms|\\()(ie) ([\\w\\.]+)/i, // Internet Explorer\n\n // Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon\n /(flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\\/([-\\w\\.]+)/i,\n // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ, aka ShouQ\n /(heytap|ovi)browser\\/([\\d\\.]+)/i, // Heytap/Ovi\n /(weibo)__([\\d\\.]+)/i // Weibo\n ], [NAME, VERSION], [\n /\\bddg\\/([\\w\\.]+)/i // DuckDuckGo\n ], [VERSION, [NAME, 'DuckDuckGo']], [\n /(?:\\buc? ?browser|(?:juc.+)ucweb)[\\/ ]?([\\w\\.]+)/i // UCBrowser\n ], [VERSION, [NAME, 'UC'+BROWSER]], [\n /microm.+\\bqbcore\\/([\\w\\.]+)/i, // WeChat Desktop for Windows Built-in Browser\n /\\bqbcore\\/([\\w\\.]+).+microm/i,\n /micromessenger\\/([\\w\\.]+)/i // WeChat\n ], [VERSION, [NAME, 'WeChat']], [\n /konqueror\\/([\\w\\.]+)/i // Konqueror\n ], [VERSION, [NAME, 'Konqueror']], [\n /trident.+rv[: ]([\\w\\.]{1,9})\\b.+like gecko/i // IE11\n ], [VERSION, [NAME, 'IE']], [\n /ya(?:search)?browser\\/([\\w\\.]+)/i // Yandex\n ], [VERSION, [NAME, 'Yandex']], [\n /slbrowser\\/([\\w\\.]+)/i // Smart Lenovo Browser\n ], [VERSION, [NAME, 'Smart Lenovo '+BROWSER]], [\n /(avast|avg)\\/([\\w\\.]+)/i // Avast/AVG Secure Browser\n ], [[NAME, /(.+)/, '$1 Secure '+BROWSER], VERSION], [\n /\\bfocus\\/([\\w\\.]+)/i // Firefox Focus\n ], [VERSION, [NAME, FIREFOX+' Focus']], [\n /\\bopt\\/([\\w\\.]+)/i // Opera Touch\n ], [VERSION, [NAME, OPERA+' Touch']], [\n /coc_coc\\w+\\/([\\w\\.]+)/i // Coc Coc Browser\n ], [VERSION, [NAME, 'Coc Coc']], [\n /dolfin\\/([\\w\\.]+)/i // Dolphin\n ], [VERSION, [NAME, 'Dolphin']], [\n /coast\\/([\\w\\.]+)/i // Opera Coast\n ], [VERSION, [NAME, OPERA+' Coast']], [\n /miuibrowser\\/([\\w\\.]+)/i // MIUI Browser\n ], [VERSION, [NAME, 'MIUI '+BROWSER]], [\n /fxios\\/([-\\w\\.]+)/i // Firefox for iOS\n ], [VERSION, [NAME, FIREFOX]], [\n /\\bqihu|(qi?ho?o?|360)browser/i // 360\n ], [[NAME, '360 ' + BROWSER]], [\n /(oculus|sailfish|huawei|vivo)browser\\/([\\w\\.]+)/i\n ], [[NAME, /(.+)/, '$1 ' + BROWSER], VERSION], [ // Oculus/Sailfish/HuaweiBrowser/VivoBrowser\n /samsungbrowser\\/([\\w\\.]+)/i // Samsung Internet\n ], [VERSION, [NAME, SAMSUNG + ' Internet']], [\n /(comodo_dragon)\\/([\\w\\.]+)/i // Comodo Dragon\n ], [[NAME, /_/g, ' '], VERSION], [\n /metasr[\\/ ]?([\\d\\.]+)/i // Sogou Explorer\n ], [VERSION, [NAME, 'Sogou Explorer']], [\n /(sogou)mo\\w+\\/([\\d\\.]+)/i // Sogou Mobile\n ], [[NAME, 'Sogou Mobile'], VERSION], [\n /(electron)\\/([\\w\\.]+) safari/i, // Electron-based App\n /(tesla)(?: qtcarbrowser|\\/(20\\d\\d\\.[-\\w\\.]+))/i, // Tesla\n /m?(qqbrowser|2345Explorer)[\\/ ]?([\\w\\.]+)/i // QQBrowser/2345 Browser\n ], [NAME, VERSION], [\n /(lbbrowser)/i, // LieBao Browser\n /\\[(linkedin)app\\]/i // LinkedIn App for iOS & Android\n ], [NAME], [\n\n // WebView\n /((?:fban\\/fbios|fb_iab\\/fb4a)(?!.+fbav)|;fbav\\/([\\w\\.]+);)/i // Facebook App for iOS & Android\n ], [[NAME, FACEBOOK], VERSION], [\n /(Klarna)\\/([\\w\\.]+)/i, // Klarna Shopping Browser for iOS & Android\n /(kakao(?:talk|story))[\\/ ]([\\w\\.]+)/i, // Kakao App\n /(naver)\\(.*?(\\d+\\.[\\w\\.]+).*\\)/i, // Naver InApp\n /safari (line)\\/([\\w\\.]+)/i, // Line App for iOS\n /\\b(line)\\/([\\w\\.]+)\\/iab/i, // Line App for Android\n /(alipay)client\\/([\\w\\.]+)/i, // Alipay\n /(twitter)(?:and| f.+e\\/([\\w\\.]+))/i, // Twitter\n /(chromium|instagram|snapchat)[\\/ ]([-\\w\\.]+)/i // Chromium/Instagram/Snapchat\n ], [NAME, VERSION], [\n /\\bgsa\\/([\\w\\.]+) .*safari\\//i // Google Search Appliance on iOS\n ], [VERSION, [NAME, 'GSA']], [\n /musical_ly(?:.+app_?version\\/|_)([\\w\\.]+)/i // TikTok\n ], [VERSION, [NAME, 'TikTok']], [\n\n /headlesschrome(?:\\/([\\w\\.]+)| )/i // Chrome Headless\n ], [VERSION, [NAME, CHROME+' Headless']], [\n\n / wv\\).+(chrome)\\/([\\w\\.]+)/i // Chrome WebView\n ], [[NAME, CHROME+' WebView'], VERSION], [\n\n /droid.+ version\\/([\\w\\.]+)\\b.+(?:mobile safari|safari)/i // Android Browser\n ], [VERSION, [NAME, 'Android '+BROWSER]], [\n\n /(chrome|omniweb|arora|[tizenoka]{5} ?browser)\\/v?([\\w\\.]+)/i // Chrome/OmniWeb/Arora/Tizen/Nokia\n ], [NAME, VERSION], [\n\n /version\\/([\\w\\.\\,]+) .*mobile\\/\\w+ (safari)/i // Mobile Safari\n ], [VERSION, [NAME, 'Mobile Safari']], [\n /version\\/([\\w(\\.|\\,)]+) .*(mobile ?safari|safari)/i // Safari & Safari Mobile\n ], [VERSION, NAME], [\n /webkit.+?(mobile ?safari|safari)(\\/[\\w\\.]+)/i // Safari < 3.0\n ], [NAME, [VERSION, strMapper, oldSafariMap]], [\n\n /(webkit|khtml)\\/([\\w\\.]+)/i\n ], [NAME, VERSION], [\n\n // Gecko based\n /(navigator|netscape\\d?)\\/([-\\w\\.]+)/i // Netscape\n ], [[NAME, 'Netscape'], VERSION], [\n /mobile vr; rv:([\\w\\.]+)\\).+firefox/i // Firefox Reality\n ], [VERSION, [NAME, FIREFOX+' Reality']], [\n /ekiohf.+(flow)\\/([\\w\\.]+)/i, // Flow\n /(swiftfox)/i, // Swiftfox\n /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\\/ ]?([\\w\\.\\+]+)/i,\n // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror/Klar\n /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([-\\w\\.]+)$/i,\n // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix\n /(firefox)\\/([\\w\\.]+)/i, // Other Firefox-based\n /(mozilla)\\/([\\w\\.]+) .+rv\\:.+gecko\\/\\d+/i, // Mozilla\n\n // Other\n /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\\. ]?browser)[-\\/ ]?v?([\\w\\.]+)/i,\n // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir/Obigo/Mosaic/Go/ICE/UP.Browser\n /(links) \\(([\\w\\.]+)/i, // Links\n /panasonic;(viera)/i // Panasonic Viera\n ], [NAME, VERSION], [\n \n /(cobalt)\\/([\\w\\.]+)/i // Cobalt\n ], [NAME, [VERSION, /master.|lts./, \"\"]]\n ],\n\n cpu : [[\n\n /(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\\)]/i // AMD64 (x64)\n ], [[ARCHITECTURE, 'amd64']], [\n\n /(ia32(?=;))/i // IA32 (quicktime)\n ], [[ARCHITECTURE, lowerize]], [\n\n /((?:i[346]|x)86)[;\\)]/i // IA32 (x86)\n ], [[ARCHITECTURE, 'ia32']], [\n\n /\\b(aarch64|arm(v?8e?l?|_?64))\\b/i // ARM64\n ], [[ARCHITECTURE, 'arm64']], [\n\n /\\b(arm(?:v[67])?ht?n?[fl]p?)\\b/i // ARMHF\n ], [[ARCHITECTURE, 'armhf']], [\n\n // PocketPC mistakenly identified as PowerPC\n /windows (ce|mobile); ppc;/i\n ], [[ARCHITECTURE, 'arm']], [\n\n /((?:ppc|powerpc)(?:64)?)(?: mac|;|\\))/i // PowerPC\n ], [[ARCHITECTURE, /ower/, EMPTY, lowerize]], [\n\n /(sun4\\w)[;\\)]/i // SPARC\n ], [[ARCHITECTURE, 'sparc']], [\n\n /((?:avr32|ia64(?=;))|68k(?=\\))|\\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\\b|pa-risc)/i\n // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC\n ], [[ARCHITECTURE, lowerize]]\n ],\n\n device : [[\n\n //////////////////////////\n // MOBILES & TABLETS\n /////////////////////////\n\n // Samsung\n /\\b(sch-i[89]0\\d|shw-m380s|sm-[ptx]\\w{2,4}|gt-[pn]\\d{2,4}|sgh-t8[56]9|nexus 10)/i\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, TABLET]], [\n /\\b((?:s[cgp]h|gt|sm)-\\w+|sc[g-]?[\\d]+a?|galaxy nexus)/i,\n /samsung[- ]([-\\w]+)/i,\n /sec-(sgh\\w+)/i\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]], [\n\n // Apple\n /(?:\\/|\\()(ip(?:hone|od)[\\w, ]*)(?:\\/|;)/i // iPod/iPhone\n ], [MODEL, [VENDOR, APPLE], [TYPE, MOBILE]], [\n /\\((ipad);[-\\w\\),; ]+apple/i, // iPad\n /applecoremedia\\/[\\w\\.]+ \\((ipad)/i,\n /\\b(ipad)\\d\\d?,\\d\\d?[;\\]].+ios/i\n ], [MODEL, [VENDOR, APPLE], [TYPE, TABLET]], [\n /(macintosh);/i\n ], [MODEL, [VENDOR, APPLE]], [\n\n // Sharp\n /\\b(sh-?[altvz]?\\d\\d[a-ekm]?)/i\n ], [MODEL, [VENDOR, SHARP], [TYPE, MOBILE]], [\n\n // Huawei\n /\\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\\d{2})\\b(?!.+d\\/s)/i\n ], [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]], [\n /(?:huawei|honor)([-\\w ]+)[;\\)]/i,\n /\\b(nexus 6p|\\w{2,4}e?-[atu]?[ln][\\dx][012359c][adn]?)\\b(?!.+d\\/s)/i\n ], [MODEL, [VENDOR, HUAWEI], [TYPE, MOBILE]], [\n\n // Xiaomi\n /\\b(poco[\\w ]+|m2\\d{3}j\\d\\d[a-z]{2})(?: bui|\\))/i, // Xiaomi POCO\n /\\b; (\\w+) build\\/hm\\1/i, // Xiaomi Hongmi 'numeric' models\n /\\b(hm[-_ ]?note?[_ ]?(?:\\d\\w)?) bui/i, // Xiaomi Hongmi\n /\\b(redmi[\\-_ ]?(?:note|k)?[\\w_ ]+)(?: bui|\\))/i, // Xiaomi Redmi\n /oid[^\\)]+; (m?[12][0-389][01]\\w{3,6}[c-y])( bui|; wv|\\))/i, // Xiaomi Redmi 'numeric' models\n /\\b(mi[-_ ]?(?:a\\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\\d?\\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\\))/i // Xiaomi Mi\n ], [[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, MOBILE]], [\n /oid[^\\)]+; (2\\d{4}(283|rpbf)[cgl])( bui|\\))/i, // Redmi Pad\n /\\b(mi[-_ ]?(?:pad)(?:[\\w_ ]+))(?: bui|\\))/i // Mi Pad tablets\n ],[[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, TABLET]], [\n\n // OPPO\n /; (\\w+) bui.+ oppo/i,\n /\\b(cph[12]\\d{3}|p(?:af|c[al]|d\\w|e[ar])[mt]\\d0|x9007|a101op)\\b/i\n ], [MODEL, [VENDOR, 'OPPO'], [TYPE, MOBILE]], [\n /\\b(opd2\\d{3}a?) bui/i\n ], [MODEL, [VENDOR, 'OPPO'], [TYPE, TABLET]], [\n\n // Vivo\n /vivo (\\w+)(?: bui|\\))/i,\n /\\b(v[12]\\d{3}\\w?[at])(?: bui|;)/i\n ], [MODEL, [VENDOR, 'Vivo'], [TYPE, MOBILE]], [\n\n // Realme\n /\\b(rmx[1-3]\\d{3})(?: bui|;|\\))/i\n ], [MODEL, [VENDOR, 'Realme'], [TYPE, MOBILE]], [\n\n // Motorola\n /\\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\\b[\\w ]+build\\//i,\n /\\bmot(?:orola)?[- ](\\w*)/i,\n /((?:moto[\\w\\(\\) ]+|xt\\d{3,4}|nexus 6)(?= bui|\\)))/i\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, MOBILE]], [\n /\\b(mz60\\d|xoom[2 ]{0,2}) build\\//i\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, TABLET]], [\n\n // LG\n /((?=lg)?[vl]k\\-?\\d{3}) bui| 3\\.[-\\w; ]{10}lg?-([06cv9]{3,4})/i\n ], [MODEL, [VENDOR, LG], [TYPE, TABLET]], [\n /(lm(?:-?f100[nv]?|-[\\w\\.]+)(?= bui|\\))|nexus [45])/i,\n /\\blg[-e;\\/ ]+((?!browser|netcast|android tv)\\w+)/i,\n /\\blg-?([\\d\\w]+) bui/i\n ], [MODEL, [VENDOR, LG], [TYPE, MOBILE]], [\n\n // Lenovo\n /(ideatab[-\\w ]+)/i,\n /lenovo ?(s[56]000[-\\w]+|tab(?:[\\w ]+)|yt[-\\d\\w]{6}|tb[-\\d\\w]{6})/i\n ], [MODEL, [VENDOR, 'Lenovo'], [TYPE, TABLET]], [\n\n // Nokia\n /(?:maemo|nokia).*(n900|lumia \\d+)/i,\n /nokia[-_ ]?([-\\w\\.]*)/i\n ], [[MODEL, /_/g, ' '], [VENDOR, 'Nokia'], [TYPE, MOBILE]], [\n\n // Google\n /(pixel c)\\b/i // Google Pixel C\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, TABLET]], [\n /droid.+; (pixel[\\daxl ]{0,6})(?: bui|\\))/i // Google Pixel\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, MOBILE]], [\n\n // Sony\n /droid.+ (a?\\d[0-2]{2}so|[c-g]\\d{4}|so[-gl]\\w+|xq-a\\w[4-7][12])(?= bui|\\).+chrome\\/(?![1-6]{0,1}\\d\\.))/i\n ], [MODEL, [VENDOR, SONY], [TYPE, MOBILE]], [\n /sony tablet [ps]/i,\n /\\b(?:sony)?sgp\\w+(?: bui|\\))/i\n ], [[MODEL, 'Xperia Tablet'], [VENDOR, SONY], [TYPE, TABLET]], [\n\n // OnePlus\n / (kb2005|in20[12]5|be20[12][59])\\b/i,\n /(?:one)?(?:plus)? (a\\d0\\d\\d)(?: b|\\))/i\n ], [MODEL, [VENDOR, 'OnePlus'], [TYPE, MOBILE]], [\n\n // Amazon\n /(alexa)webm/i,\n /(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\\))/i, // Kindle Fire without Silk / Echo Show\n /(kf[a-z]+)( bui|\\)).+silk\\//i // Kindle Fire HD\n ], [MODEL, [VENDOR, AMAZON], [TYPE, TABLET]], [\n /((?:sd|kf)[0349hijorstuw]+)( bui|\\)).+silk\\//i // Fire Phone\n ], [[MODEL, /(.+)/g, 'Fire Phone $1'], [VENDOR, AMAZON], [TYPE, MOBILE]], [\n\n // BlackBerry\n /(playbook);[-\\w\\),; ]+(rim)/i // BlackBerry PlayBook\n ], [MODEL, VENDOR, [TYPE, TABLET]], [\n /\\b((?:bb[a-f]|st[hv])100-\\d)/i,\n /\\(bb10; (\\w+)/i // BlackBerry 10\n ], [MODEL, [VENDOR, BLACKBERRY], [TYPE, MOBILE]], [\n\n // Asus\n /(?:\\b|asus_)(transfo[prime ]{4,10} \\w+|eeepc|slider \\w+|nexus 7|padfone|p00[cj])/i\n ], [MODEL, [VENDOR, ASUS], [TYPE, TABLET]], [\n / (z[bes]6[027][012][km][ls]|zenfone \\d\\w?)\\b/i\n ], [MODEL, [VENDOR, ASUS], [TYPE, MOBILE]], [\n\n // HTC\n /(nexus 9)/i // HTC Nexus 9\n ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [\n /(htc)[-;_ ]{1,2}([\\w ]+(?=\\)| bui)|\\w+)/i, // HTC\n\n // ZTE\n /(zte)[- ]([\\w ]+?)(?: bui|\\/|\\))/i,\n /(alcatel|geeksphone|nexian|panasonic(?!(?:;|\\.))|sony(?!-bra))[-_ ]?([-\\w]*)/i // Alcatel/GeeksPhone/Nexian/Panasonic/Sony\n ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [\n\n // Acer\n /droid.+; ([ab][1-7]-?[0178a]\\d\\d?)/i\n ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [\n\n // Meizu\n /droid.+; (m[1-5] note) bui/i,\n /\\bmz-([-\\w]{2,})/i\n ], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [\n \n // Ulefone\n /; ((?:power )?armor(?:[\\w ]{0,8}))(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Ulefone'], [TYPE, MOBILE]], [\n\n // MIXED\n /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno)[-_ ]?([-\\w]*)/i,\n // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron\n /(hp) ([\\w ]+\\w)/i, // HP iPAQ\n /(asus)-?(\\w+)/i, // Asus\n /(microsoft); (lumia[\\w ]+)/i, // Microsoft Lumia\n /(lenovo)[-_ ]?([-\\w]+)/i, // Lenovo\n /(jolla)/i, // Jolla\n /(oppo) ?([\\w ]+) bui/i // OPPO\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /(kobo)\\s(ereader|touch)/i, // Kobo\n /(archos) (gamepad2?)/i, // Archos\n /(hp).+(touchpad(?!.+tablet)|tablet)/i, // HP TouchPad\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(nook)[\\w ]+build\\/(\\w+)/i, // Nook\n /(dell) (strea[kpr\\d ]*[\\dko])/i, // Dell Streak\n /(le[- ]+pan)[- ]+(\\w{1,9}) bui/i, // Le Pan Tablets\n /(trinity)[- ]*(t\\d{3}) bui/i, // Trinity Tablets\n /(gigaset)[- ]+(q\\w{1,9}) bui/i, // Gigaset Tablets\n /(vodafone) ([\\w ]+)(?:\\)| bui)/i // Vodafone\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /(surface duo)/i // Surface Duo\n ], [MODEL, [VENDOR, MICROSOFT], [TYPE, TABLET]], [\n /droid [\\d\\.]+; (fp\\du?)(?: b|\\))/i // Fairphone\n ], [MODEL, [VENDOR, 'Fairphone'], [TYPE, MOBILE]], [\n /(u304aa)/i // AT&T\n ], [MODEL, [VENDOR, 'AT&T'], [TYPE, MOBILE]], [\n /\\bsie-(\\w*)/i // Siemens\n ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [\n /\\b(rct\\w+) b/i // RCA Tablets\n ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [\n /\\b(venue[\\d ]{2,7}) b/i // Dell Venue Tablets\n ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [\n /\\b(q(?:mv|ta)\\w+) b/i // Verizon Tablet\n ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [\n /\\b(?:barnes[& ]+noble |bn[rt])([\\w\\+ ]*) b/i // Barnes & Noble Tablet\n ], [MODEL, [VENDOR, 'Barnes & Noble'], [TYPE, TABLET]], [\n /\\b(tm\\d{3}\\w+) b/i\n ], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [\n /\\b(k88) b/i // ZTE K Series Tablet\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, TABLET]], [\n /\\b(nx\\d{3}j) b/i // ZTE Nubia\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, MOBILE]], [\n /\\b(gen\\d{3}) b.+49h/i // Swiss GEN Mobile\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [\n /\\b(zur\\d{3}) b/i // Swiss ZUR Tablet\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [\n /\\b((zeki)?tb.*\\b) b/i // Zeki Tablets\n ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [\n /\\b([yr]\\d{2}) b/i,\n /\\b(dragon[- ]+touch |dt)(\\w{5}) b/i // Dragon Touch Tablet\n ], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [\n /\\b(ns-?\\w{0,9}) b/i // Insignia Tablets\n ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [\n /\\b((nxa|next)-?\\w{0,9}) b/i // NextBook Tablets\n ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [\n /\\b(xtreme\\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i // Voice Xtreme Phones\n ], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [\n /\\b(lvtel\\-)?(v1[12]) b/i // LvTel Phones\n ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [\n /\\b(ph-1) /i // Essential PH-1\n ], [MODEL, [VENDOR, 'Essential'], [TYPE, MOBILE]], [\n /\\b(v(100md|700na|7011|917g).*\\b) b/i // Envizen Tablets\n ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [\n /\\b(trio[-\\w\\. ]+) b/i // MachSpeed Tablets\n ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [\n /\\btu_(1491) b/i // Rotor Tablets\n ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [\n /(shield[\\w ]+) b/i // Nvidia Shield Tablets\n ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, TABLET]], [\n /(sprint) (\\w+)/i // Sprint Phones\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n /(kin\\.[onetw]{3})/i // Microsoft Kin\n ], [[MODEL, /\\./g, ' '], [VENDOR, MICROSOFT], [TYPE, MOBILE]], [\n /droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\\)/i // Zebra\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, TABLET]], [\n /droid.+; (ec30|ps20|tc[2-8]\\d[kx])\\)/i\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, MOBILE]], [\n\n ///////////////////\n // SMARTTVS\n ///////////////////\n\n /smart-tv.+(samsung)/i // Samsung\n ], [VENDOR, [TYPE, SMARTTV]], [\n /hbbtv.+maple;(\\d+)/i\n ], [[MODEL, /^/, 'SmartTV'], [VENDOR, SAMSUNG], [TYPE, SMARTTV]], [\n /(nux; netcast.+smarttv|lg (netcast\\.tv-201\\d|android tv))/i // LG SmartTV\n ], [[VENDOR, LG], [TYPE, SMARTTV]], [\n /(apple) ?tv/i // Apple TV\n ], [VENDOR, [MODEL, APPLE+' TV'], [TYPE, SMARTTV]], [\n /crkey/i // Google Chromecast\n ], [[MODEL, CHROME+'cast'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n /droid.+aft(\\w+)( bui|\\))/i // Fire TV\n ], [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], [\n /\\(dtv[\\);].+(aquos)/i,\n /(aquos-tv[\\w ]+)\\)/i // Sharp\n ], [MODEL, [VENDOR, SHARP], [TYPE, SMARTTV]],[\n /(bravia[\\w ]+)( bui|\\))/i // Sony\n ], [MODEL, [VENDOR, SONY], [TYPE, SMARTTV]], [\n /(mitv-\\w{5}) bui/i // Xiaomi\n ], [MODEL, [VENDOR, XIAOMI], [TYPE, SMARTTV]], [\n /Hbbtv.*(technisat) (.*);/i // TechniSAT\n ], [VENDOR, MODEL, [TYPE, SMARTTV]], [\n /\\b(roku)[\\dx]*[\\)\\/]((?:dvp-)?[\\d\\.]*)/i, // Roku\n /hbbtv\\/\\d+\\.\\d+\\.\\d+ +\\([\\w\\+ ]*; *([\\w\\d][^;]*);([^;]*)/i // HbbTV devices\n ], [[VENDOR, trim], [MODEL, trim], [TYPE, SMARTTV]], [\n /\\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\\b/i // SmartTV from Unidentified Vendors\n ], [[TYPE, SMARTTV]], [\n\n ///////////////////\n // CONSOLES\n ///////////////////\n\n /(ouya)/i, // Ouya\n /(nintendo) ([wids3utch]+)/i // Nintendo\n ], [VENDOR, MODEL, [TYPE, CONSOLE]], [\n /droid.+; (shield) bui/i // Nvidia\n ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, CONSOLE]], [\n /(playstation [345portablevi]+)/i // Playstation\n ], [MODEL, [VENDOR, SONY], [TYPE, CONSOLE]], [\n /\\b(xbox(?: one)?(?!; xbox))[\\); ]/i // Microsoft Xbox\n ], [MODEL, [VENDOR, MICROSOFT], [TYPE, CONSOLE]], [\n\n ///////////////////\n // WEARABLES\n ///////////////////\n\n /((pebble))app/i // Pebble\n ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\n /(watch)(?: ?os[,\\/]|\\d,\\d\\/)[\\d\\.]+/i // Apple Watch\n ], [MODEL, [VENDOR, APPLE], [TYPE, WEARABLE]], [\n /droid.+; (glass) \\d/i // Google Glass\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, WEARABLE]], [\n /droid.+; (wt63?0{2,3})\\)/i\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]], [\n /(quest( \\d| pro)?)/i // Oculus Quest\n ], [MODEL, [VENDOR, FACEBOOK], [TYPE, WEARABLE]], [\n\n ///////////////////\n // EMBEDDED\n ///////////////////\n\n /(tesla)(?: qtcarbrowser|\\/[-\\w\\.]+)/i // Tesla\n ], [VENDOR, [TYPE, EMBEDDED]], [\n /(aeobc)\\b/i // Echo Dot\n ], [MODEL, [VENDOR, AMAZON], [TYPE, EMBEDDED]], [\n\n ////////////////////\n // MIXED (GENERIC)\n ///////////////////\n\n /droid .+?; ([^;]+?)(?: bui|; wv\\)|\\) applew).+? mobile safari/i // Android Phones from Unidentified Vendors\n ], [MODEL, [TYPE, MOBILE]], [\n /droid .+?; ([^;]+?)(?: bui|\\) applew).+?(?! mobile) safari/i // Android Tablets from Unidentified Vendors\n ], [MODEL, [TYPE, TABLET]], [\n /\\b((tablet|tab)[;\\/]|focus\\/\\d(?!.+mobile))/i // Unidentifiable Tablet\n ], [[TYPE, TABLET]], [\n /(phone|mobile(?:[;\\/]| [ \\w\\/\\.]*safari)|pda(?=.+windows ce))/i // Unidentifiable Mobile\n ], [[TYPE, MOBILE]], [\n /(android[-\\w\\. ]{0,9});.+buil/i // Generic Android Device\n ], [MODEL, [VENDOR, 'Generic']]\n ],\n\n engine : [[\n\n /windows.+ edge\\/([\\w\\.]+)/i // EdgeHTML\n ], [VERSION, [NAME, EDGE+'HTML']], [\n\n /webkit\\/537\\.36.+chrome\\/(?!27)([\\w\\.]+)/i // Blink\n ], [VERSION, [NAME, 'Blink']], [\n\n /(presto)\\/([\\w\\.]+)/i, // Presto\n /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\\/([\\w\\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna\n /ekioh(flow)\\/([\\w\\.]+)/i, // Flow\n /(khtml|tasman|links)[\\/ ]\\(?([\\w\\.]+)/i, // KHTML/Tasman/Links\n /(icab)[\\/ ]([23]\\.[\\d\\.]+)/i, // iCab\n /\\b(libweb)/i\n ], [NAME, VERSION], [\n\n /rv\\:([\\w\\.]{1,9})\\b.+(gecko)/i // Gecko\n ], [VERSION, NAME]\n ],\n\n os : [[\n\n // Windows\n /microsoft (windows) (vista|xp)/i // Windows (iTunes)\n ], [NAME, VERSION], [\n /(windows (?:phone(?: os)?|mobile))[\\/ ]?([\\d\\.\\w ]*)/i // Windows Phone\n ], [NAME, [VERSION, strMapper, windowsVersionMap]], [\n /windows nt 6\\.2; (arm)/i, // Windows RT\n /windows[\\/ ]?([ntce\\d\\. ]+\\w)(?!.+xbox)/i,\n /(?:win(?=3|9|n)|win 9x )([nt\\d\\.]+)/i\n ], [[VERSION, strMapper, windowsVersionMap], [NAME, 'Windows']], [\n\n // iOS/macOS\n /ip[honead]{2,4}\\b(?:.*os ([\\w]+) like mac|; opera)/i, // iOS\n /(?:ios;fbsv\\/|iphone.+ios[\\/ ])([\\d\\.]+)/i,\n /cfnetwork\\/.+darwin/i\n ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [\n /(mac os x) ?([\\w\\. ]*)/i,\n /(macintosh|mac_powerpc\\b)(?!.+haiku)/i // Mac OS\n ], [[NAME, MAC_OS], [VERSION, /_/g, '.']], [\n\n // Mobile OSes\n /droid ([\\w\\.]+)\\b.+(android[- ]x86|harmonyos)/i // Android-x86/HarmonyOS\n ], [VERSION, NAME], [ // Android/WebOS/QNX/Bada/RIM/Maemo/MeeGo/Sailfish OS\n /(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\\/ ]?([\\w\\.]*)/i,\n /(blackberry)\\w*\\/([\\w\\.]*)/i, // Blackberry\n /(tizen|kaios)[\\/ ]([\\w\\.]+)/i, // Tizen/KaiOS\n /\\((series40);/i // Series 40\n ], [NAME, VERSION], [\n /\\(bb(10);/i // BlackBerry 10\n ], [VERSION, [NAME, BLACKBERRY]], [\n /(?:symbian ?os|symbos|s60(?=;)|series60)[-\\/ ]?([\\w\\.]*)/i // Symbian\n ], [VERSION, [NAME, 'Symbian']], [\n /mozilla\\/[\\d\\.]+ \\((?:mobile|tablet|tv|mobile; [\\w ]+); rv:.+ gecko\\/([\\w\\.]+)/i // Firefox OS\n ], [VERSION, [NAME, FIREFOX+' OS']], [\n /web0s;.+rt(tv)/i,\n /\\b(?:hp)?wos(?:browser)?\\/([\\w\\.]+)/i // WebOS\n ], [VERSION, [NAME, 'webOS']], [\n /watch(?: ?os[,\\/]|\\d,\\d\\/)([\\d\\.]+)/i // watchOS\n ], [VERSION, [NAME, 'watchOS']], [\n\n // Google Chromecast\n /crkey\\/([\\d\\.]+)/i // Google Chromecast\n ], [VERSION, [NAME, CHROME+'cast']], [\n /(cros) [\\w]+(?:\\)| ([\\w\\.]+)\\b)/i // Chromium OS\n ], [[NAME, CHROMIUM_OS], VERSION],[\n\n // Smart TVs\n /panasonic;(viera)/i, // Panasonic Viera\n /(netrange)mmh/i, // Netrange\n /(nettv)\\/(\\d+\\.[\\w\\.]+)/i, // NetTV\n\n // Console\n /(nintendo|playstation) ([wids345portablevuch]+)/i, // Nintendo/Playstation\n /(xbox); +xbox ([^\\);]+)/i, // Microsoft Xbox (360, One, X, S, Series X, Series S)\n\n // Other\n /\\b(joli|palm)\\b ?(?:os)?\\/?([\\w\\.]*)/i, // Joli/Palm\n /(mint)[\\/\\(\\) ]?(\\w*)/i, // Mint\n /(mageia|vectorlinux)[; ]/i, // Mageia/VectorLinux\n /([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\\/ ]?(?!chrom|package)([-\\w\\.]*)/i,\n // Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire\n /(hurd|linux) ?([\\w\\.]*)/i, // Hurd/Linux\n /(gnu) ?([\\w\\.]*)/i, // GNU\n /\\b([-frentopcghs]{0,5}bsd|dragonfly)[\\/ ]?(?!amd|[ix346]{1,2}86)([\\w\\.]*)/i, // FreeBSD/NetBSD/OpenBSD/PC-BSD/GhostBSD/DragonFly\n /(haiku) (\\w+)/i // Haiku\n ], [NAME, VERSION], [\n /(sunos) ?([\\w\\.\\d]*)/i // Solaris\n ], [[NAME, 'Solaris'], VERSION], [\n /((?:open)?solaris)[-\\/ ]?([\\w\\.]*)/i, // Solaris\n /(aix) ((\\d)(?=\\.|\\)| )[\\w\\.])*/i, // AIX\n /\\b(beos|os\\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i, // BeOS/OS2/AmigaOS/MorphOS/OpenVMS/Fuchsia/HP-UX/SerenityOS\n /(unix) ?([\\w\\.]*)/i // UNIX\n ], [NAME, VERSION]\n ]\n };\n\n /////////////////\n // Constructor\n ////////////////\n\n var UAParser = function (ua, extensions) {\n\n if (typeof ua === OBJ_TYPE) {\n extensions = ua;\n ua = undefined;\n }\n\n if (!(this instanceof UAParser)) {\n return new UAParser(ua, extensions).getResult();\n }\n\n var _navigator = (typeof window !== UNDEF_TYPE && window.navigator) ? window.navigator : undefined;\n var _ua = ua || ((_navigator && _navigator.userAgent) ? _navigator.userAgent : EMPTY);\n var _uach = (_navigator && _navigator.userAgentData) ? _navigator.userAgentData : undefined;\n var _rgxmap = extensions ? extend(regexes, extensions) : regexes;\n var _isSelfNav = _navigator && _navigator.userAgent == _ua;\n\n this.getBrowser = function () {\n var _browser = {};\n _browser[NAME] = undefined;\n _browser[VERSION] = undefined;\n rgxMapper.call(_browser, _ua, _rgxmap.browser);\n _browser[MAJOR] = majorize(_browser[VERSION]);\n // Brave-specific detection\n if (_isSelfNav && _navigator && _navigator.brave && typeof _navigator.brave.isBrave == FUNC_TYPE) {\n _browser[NAME] = 'Brave';\n }\n return _browser;\n };\n this.getCPU = function () {\n var _cpu = {};\n _cpu[ARCHITECTURE] = undefined;\n rgxMapper.call(_cpu, _ua, _rgxmap.cpu);\n return _cpu;\n };\n this.getDevice = function () {\n var _device = {};\n _device[VENDOR] = undefined;\n _device[MODEL] = undefined;\n _device[TYPE] = undefined;\n rgxMapper.call(_device, _ua, _rgxmap.device);\n if (_isSelfNav && !_device[TYPE] && _uach && _uach.mobile) {\n _device[TYPE] = MOBILE;\n }\n // iPadOS-specific detection: identified as Mac, but has some iOS-only properties\n if (_isSelfNav && _device[MODEL] == 'Macintosh' && _navigator && typeof _navigator.standalone !== UNDEF_TYPE && _navigator.maxTouchPoints && _navigator.maxTouchPoints > 2) {\n _device[MODEL] = 'iPad';\n _device[TYPE] = TABLET;\n }\n return _device;\n };\n this.getEngine = function () {\n var _engine = {};\n _engine[NAME] = undefined;\n _engine[VERSION] = undefined;\n rgxMapper.call(_engine, _ua, _rgxmap.engine);\n return _engine;\n };\n this.getOS = function () {\n var _os = {};\n _os[NAME] = undefined;\n _os[VERSION] = undefined;\n rgxMapper.call(_os, _ua, _rgxmap.os);\n if (_isSelfNav && !_os[NAME] && _uach && _uach.platform && _uach.platform != 'Unknown') {\n _os[NAME] = _uach.platform \n .replace(/chrome os/i, CHROMIUM_OS)\n .replace(/macos/i, MAC_OS); // backward compatibility\n }\n return _os;\n };\n this.getResult = function () {\n return {\n ua : this.getUA(),\n browser : this.getBrowser(),\n engine : this.getEngine(),\n os : this.getOS(),\n device : this.getDevice(),\n cpu : this.getCPU()\n };\n };\n this.getUA = function () {\n return _ua;\n };\n this.setUA = function (ua) {\n _ua = (typeof ua === STR_TYPE && ua.length > UA_MAX_LENGTH) ? trim(ua, UA_MAX_LENGTH) : ua;\n return this;\n };\n this.setUA(_ua);\n return this;\n };\n\n UAParser.VERSION = LIBVERSION;\n UAParser.BROWSER = enumerize([NAME, VERSION, MAJOR]);\n UAParser.CPU = enumerize([ARCHITECTURE]);\n UAParser.DEVICE = enumerize([MODEL, VENDOR, TYPE, CONSOLE, MOBILE, SMARTTV, TABLET, WEARABLE, EMBEDDED]);\n UAParser.ENGINE = UAParser.OS = enumerize([NAME, VERSION]);\n\n ///////////\n // Export\n //////////\n\n // check js environment\n if (typeof(exports) !== UNDEF_TYPE) {\n // nodejs env\n if (typeof module !== UNDEF_TYPE && module.exports) {\n exports = module.exports = UAParser;\n }\n exports.UAParser = UAParser;\n } else {\n // requirejs env (optional)\n if (typeof(define) === FUNC_TYPE && define.amd) {\n define(function () {\n return UAParser;\n });\n } else if (typeof window !== UNDEF_TYPE) {\n // browser env\n window.UAParser = UAParser;\n }\n }\n\n // jQuery/Zepto specific (optional)\n // Note:\n // In AMD env the global scope should be kept clean, but jQuery is an exception.\n // jQuery always exports to global scope, unless jQuery.noConflict(true) is used,\n // and we should catch that.\n var $ = typeof window !== UNDEF_TYPE && (window.jQuery || window.Zepto);\n if ($ && !$.ua) {\n var parser = new UAParser();\n $.ua = parser.getResult();\n $.ua.get = function () {\n return parser.getUA();\n };\n $.ua.set = function (ua) {\n parser.setUA(ua);\n var result = parser.getResult();\n for (var prop in result) {\n $.ua[prop] = result[prop];\n }\n };\n }\n\n})(typeof window === 'object' ? window : this);\n","module.exports = __WEBPACK_EXTERNAL_MODULE__6089__;","module.exports = __WEBPACK_EXTERNAL_MODULE__7781__;","module.exports = __WEBPACK_EXTERNAL_MODULE__8531__;","module.exports = __WEBPACK_EXTERNAL_MODULE__2007__;","module.exports = __WEBPACK_EXTERNAL_MODULE__4201__;","module.exports = __WEBPACK_EXTERNAL_MODULE__3241__;","module.exports = __WEBPACK_EXTERNAL_MODULE__1308__;","module.exports = __WEBPACK_EXTERNAL_MODULE__5959__;","module.exports = __WEBPACK_EXTERNAL_MODULE__8398__;","module.exports = __WEBPACK_EXTERNAL_MODULE__1159__;","module.exports = __WEBPACK_EXTERNAL_MODULE__1269__;","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"public/plugins/grafana-pyroscope-app/\";","\nimport amdMetaModule from 'amd-module';\n\n__webpack_public_path__ =\n amdMetaModule && amdMetaModule.uri\n ? amdMetaModule.uri.slice(0, amdMetaModule.uri.lastIndexOf('/') + 1)\n : 'public/plugins/grafana-pyroscope-app/';\n","// src/utils.ts\nvar isServer = typeof window === \"undefined\" || \"Deno\" in globalThis;\nfunction noop() {\n return void 0;\n}\nfunction functionalUpdate(updater, input) {\n return typeof updater === \"function\" ? updater(input) : updater;\n}\nfunction isValidTimeout(value) {\n return typeof value === \"number\" && value >= 0 && value !== Infinity;\n}\nfunction timeUntilStale(updatedAt, staleTime) {\n return Math.max(updatedAt + (staleTime || 0) - Date.now(), 0);\n}\nfunction resolveStaleTime(staleTime, query) {\n return typeof staleTime === \"function\" ? staleTime(query) : staleTime;\n}\nfunction resolveEnabled(enabled, query) {\n return typeof enabled === \"function\" ? enabled(query) : enabled;\n}\nfunction matchQuery(filters, query) {\n const {\n type = \"all\",\n exact,\n fetchStatus,\n predicate,\n queryKey,\n stale\n } = filters;\n if (queryKey) {\n if (exact) {\n if (query.queryHash !== hashQueryKeyByOptions(queryKey, query.options)) {\n return false;\n }\n } else if (!partialMatchKey(query.queryKey, queryKey)) {\n return false;\n }\n }\n if (type !== \"all\") {\n const isActive = query.isActive();\n if (type === \"active\" && !isActive) {\n return false;\n }\n if (type === \"inactive\" && isActive) {\n return false;\n }\n }\n if (typeof stale === \"boolean\" && query.isStale() !== stale) {\n return false;\n }\n if (fetchStatus && fetchStatus !== query.state.fetchStatus) {\n return false;\n }\n if (predicate && !predicate(query)) {\n return false;\n }\n return true;\n}\nfunction matchMutation(filters, mutation) {\n const { exact, status, predicate, mutationKey } = filters;\n if (mutationKey) {\n if (!mutation.options.mutationKey) {\n return false;\n }\n if (exact) {\n if (hashKey(mutation.options.mutationKey) !== hashKey(mutationKey)) {\n return false;\n }\n } else if (!partialMatchKey(mutation.options.mutationKey, mutationKey)) {\n return false;\n }\n }\n if (status && mutation.state.status !== status) {\n return false;\n }\n if (predicate && !predicate(mutation)) {\n return false;\n }\n return true;\n}\nfunction hashQueryKeyByOptions(queryKey, options) {\n const hashFn = options?.queryKeyHashFn || hashKey;\n return hashFn(queryKey);\n}\nfunction hashKey(queryKey) {\n return JSON.stringify(\n queryKey,\n (_, val) => isPlainObject(val) ? Object.keys(val).sort().reduce((result, key) => {\n result[key] = val[key];\n return result;\n }, {}) : val\n );\n}\nfunction partialMatchKey(a, b) {\n if (a === b) {\n return true;\n }\n if (typeof a !== typeof b) {\n return false;\n }\n if (a && b && typeof a === \"object\" && typeof b === \"object\") {\n return !Object.keys(b).some((key) => !partialMatchKey(a[key], b[key]));\n }\n return false;\n}\nfunction replaceEqualDeep(a, b) {\n if (a === b) {\n return a;\n }\n const array = isPlainArray(a) && isPlainArray(b);\n if (array || isPlainObject(a) && isPlainObject(b)) {\n const aItems = array ? a : Object.keys(a);\n const aSize = aItems.length;\n const bItems = array ? b : Object.keys(b);\n const bSize = bItems.length;\n const copy = array ? [] : {};\n let equalItems = 0;\n for (let i = 0; i < bSize; i++) {\n const key = array ? i : bItems[i];\n if ((!array && aItems.includes(key) || array) && a[key] === void 0 && b[key] === void 0) {\n copy[key] = void 0;\n equalItems++;\n } else {\n copy[key] = replaceEqualDeep(a[key], b[key]);\n if (copy[key] === a[key] && a[key] !== void 0) {\n equalItems++;\n }\n }\n }\n return aSize === bSize && equalItems === aSize ? a : copy;\n }\n return b;\n}\nfunction shallowEqualObjects(a, b) {\n if (!b || Object.keys(a).length !== Object.keys(b).length) {\n return false;\n }\n for (const key in a) {\n if (a[key] !== b[key]) {\n return false;\n }\n }\n return true;\n}\nfunction isPlainArray(value) {\n return Array.isArray(value) && value.length === Object.keys(value).length;\n}\nfunction isPlainObject(o) {\n if (!hasObjectPrototype(o)) {\n return false;\n }\n const ctor = o.constructor;\n if (ctor === void 0) {\n return true;\n }\n const prot = ctor.prototype;\n if (!hasObjectPrototype(prot)) {\n return false;\n }\n if (!prot.hasOwnProperty(\"isPrototypeOf\")) {\n return false;\n }\n if (Object.getPrototypeOf(o) !== Object.prototype) {\n return false;\n }\n return true;\n}\nfunction hasObjectPrototype(o) {\n return Object.prototype.toString.call(o) === \"[object Object]\";\n}\nfunction sleep(ms) {\n return new Promise((resolve) => {\n setTimeout(resolve, ms);\n });\n}\nfunction replaceData(prevData, data, options) {\n if (typeof options.structuralSharing === \"function\") {\n return options.structuralSharing(prevData, data);\n } else if (options.structuralSharing !== false) {\n return replaceEqualDeep(prevData, data);\n }\n return data;\n}\nfunction keepPreviousData(previousData) {\n return previousData;\n}\nfunction addToEnd(items, item, max = 0) {\n const newItems = [...items, item];\n return max && newItems.length > max ? newItems.slice(1) : newItems;\n}\nfunction addToStart(items, item, max = 0) {\n const newItems = [item, ...items];\n return max && newItems.length > max ? newItems.slice(0, -1) : newItems;\n}\nvar skipToken = Symbol();\nvar ensureQueryFn = (options, fetchOptions) => {\n if (process.env.NODE_ENV !== \"production\") {\n if (options.queryFn === skipToken) {\n console.error(\n `Attempted to invoke queryFn when set to skipToken. This is likely a configuration error. Query hash: '${options.queryHash}'`\n );\n }\n }\n if (!options.queryFn && fetchOptions?.initialPromise) {\n return () => fetchOptions.initialPromise;\n }\n if (!options.queryFn || options.queryFn === skipToken) {\n return () => Promise.reject(new Error(`Missing queryFn: '${options.queryHash}'`));\n }\n return options.queryFn;\n};\nexport {\n addToEnd,\n addToStart,\n ensureQueryFn,\n functionalUpdate,\n hashKey,\n hashQueryKeyByOptions,\n isPlainArray,\n isPlainObject,\n isServer,\n isValidTimeout,\n keepPreviousData,\n matchMutation,\n matchQuery,\n noop,\n partialMatchKey,\n replaceData,\n replaceEqualDeep,\n resolveEnabled,\n resolveStaleTime,\n shallowEqualObjects,\n skipToken,\n sleep,\n timeUntilStale\n};\n//# sourceMappingURL=utils.js.map","// src/notifyManager.ts\nfunction createNotifyManager() {\n let queue = [];\n let transactions = 0;\n let notifyFn = (callback) => {\n callback();\n };\n let batchNotifyFn = (callback) => {\n callback();\n };\n let scheduleFn = (cb) => setTimeout(cb, 0);\n const setScheduler = (fn) => {\n scheduleFn = fn;\n };\n const batch = (callback) => {\n let result;\n transactions++;\n try {\n result = callback();\n } finally {\n transactions--;\n if (!transactions) {\n flush();\n }\n }\n return result;\n };\n const schedule = (callback) => {\n if (transactions) {\n queue.push(callback);\n } else {\n scheduleFn(() => {\n notifyFn(callback);\n });\n }\n };\n const batchCalls = (callback) => {\n return (...args) => {\n schedule(() => {\n callback(...args);\n });\n };\n };\n const flush = () => {\n const originalQueue = queue;\n queue = [];\n if (originalQueue.length) {\n scheduleFn(() => {\n batchNotifyFn(() => {\n originalQueue.forEach((callback) => {\n notifyFn(callback);\n });\n });\n });\n }\n };\n const setNotifyFunction = (fn) => {\n notifyFn = fn;\n };\n const setBatchNotifyFunction = (fn) => {\n batchNotifyFn = fn;\n };\n return {\n batch,\n batchCalls,\n schedule,\n setNotifyFunction,\n setBatchNotifyFunction,\n setScheduler\n };\n}\nvar notifyManager = createNotifyManager();\nexport {\n createNotifyManager,\n notifyManager\n};\n//# sourceMappingURL=notifyManager.js.map","// src/subscribable.ts\nvar Subscribable = class {\n constructor() {\n this.listeners = /* @__PURE__ */ new Set();\n this.subscribe = this.subscribe.bind(this);\n }\n subscribe(listener) {\n this.listeners.add(listener);\n this.onSubscribe();\n return () => {\n this.listeners.delete(listener);\n this.onUnsubscribe();\n };\n }\n hasListeners() {\n return this.listeners.size > 0;\n }\n onSubscribe() {\n }\n onUnsubscribe() {\n }\n};\nexport {\n Subscribable\n};\n//# sourceMappingURL=subscribable.js.map","// src/focusManager.ts\nimport { Subscribable } from \"./subscribable.js\";\nimport { isServer } from \"./utils.js\";\nvar FocusManager = class extends Subscribable {\n #focused;\n #cleanup;\n #setup;\n constructor() {\n super();\n this.#setup = (onFocus) => {\n if (!isServer && window.addEventListener) {\n const listener = () => onFocus();\n window.addEventListener(\"visibilitychange\", listener, false);\n return () => {\n window.removeEventListener(\"visibilitychange\", listener);\n };\n }\n return;\n };\n }\n onSubscribe() {\n if (!this.#cleanup) {\n this.setEventListener(this.#setup);\n }\n }\n onUnsubscribe() {\n if (!this.hasListeners()) {\n this.#cleanup?.();\n this.#cleanup = void 0;\n }\n }\n setEventListener(setup) {\n this.#setup = setup;\n this.#cleanup?.();\n this.#cleanup = setup((focused) => {\n if (typeof focused === \"boolean\") {\n this.setFocused(focused);\n } else {\n this.onFocus();\n }\n });\n }\n setFocused(focused) {\n const changed = this.#focused !== focused;\n if (changed) {\n this.#focused = focused;\n this.onFocus();\n }\n }\n onFocus() {\n const isFocused = this.isFocused();\n this.listeners.forEach((listener) => {\n listener(isFocused);\n });\n }\n isFocused() {\n if (typeof this.#focused === \"boolean\") {\n return this.#focused;\n }\n return globalThis.document?.visibilityState !== \"hidden\";\n }\n};\nvar focusManager = new FocusManager();\nexport {\n FocusManager,\n focusManager\n};\n//# sourceMappingURL=focusManager.js.map","// src/onlineManager.ts\nimport { Subscribable } from \"./subscribable.js\";\nimport { isServer } from \"./utils.js\";\nvar OnlineManager = class extends Subscribable {\n #online = true;\n #cleanup;\n #setup;\n constructor() {\n super();\n this.#setup = (onOnline) => {\n if (!isServer && window.addEventListener) {\n const onlineListener = () => onOnline(true);\n const offlineListener = () => onOnline(false);\n window.addEventListener(\"online\", onlineListener, false);\n window.addEventListener(\"offline\", offlineListener, false);\n return () => {\n window.removeEventListener(\"online\", onlineListener);\n window.removeEventListener(\"offline\", offlineListener);\n };\n }\n return;\n };\n }\n onSubscribe() {\n if (!this.#cleanup) {\n this.setEventListener(this.#setup);\n }\n }\n onUnsubscribe() {\n if (!this.hasListeners()) {\n this.#cleanup?.();\n this.#cleanup = void 0;\n }\n }\n setEventListener(setup) {\n this.#setup = setup;\n this.#cleanup?.();\n this.#cleanup = setup(this.setOnline.bind(this));\n }\n setOnline(online) {\n const changed = this.#online !== online;\n if (changed) {\n this.#online = online;\n this.listeners.forEach((listener) => {\n listener(online);\n });\n }\n }\n isOnline() {\n return this.#online;\n }\n};\nvar onlineManager = new OnlineManager();\nexport {\n OnlineManager,\n onlineManager\n};\n//# sourceMappingURL=onlineManager.js.map","// src/retryer.ts\nimport { focusManager } from \"./focusManager.js\";\nimport { onlineManager } from \"./onlineManager.js\";\nimport { isServer, sleep } from \"./utils.js\";\nfunction defaultRetryDelay(failureCount) {\n return Math.min(1e3 * 2 ** failureCount, 3e4);\n}\nfunction canFetch(networkMode) {\n return (networkMode ?? \"online\") === \"online\" ? onlineManager.isOnline() : true;\n}\nvar CancelledError = class {\n constructor(options) {\n this.revert = options?.revert;\n this.silent = options?.silent;\n }\n};\nfunction isCancelledError(value) {\n return value instanceof CancelledError;\n}\nfunction createRetryer(config) {\n let isRetryCancelled = false;\n let failureCount = 0;\n let isResolved = false;\n let continueFn;\n let promiseResolve;\n let promiseReject;\n const promise = new Promise((outerResolve, outerReject) => {\n promiseResolve = outerResolve;\n promiseReject = outerReject;\n });\n const cancel = (cancelOptions) => {\n if (!isResolved) {\n reject(new CancelledError(cancelOptions));\n config.abort?.();\n }\n };\n const cancelRetry = () => {\n isRetryCancelled = true;\n };\n const continueRetry = () => {\n isRetryCancelled = false;\n };\n const canContinue = () => focusManager.isFocused() && (config.networkMode === \"always\" || onlineManager.isOnline()) && config.canRun();\n const canStart = () => canFetch(config.networkMode) && config.canRun();\n const resolve = (value) => {\n if (!isResolved) {\n isResolved = true;\n config.onSuccess?.(value);\n continueFn?.();\n promiseResolve(value);\n }\n };\n const reject = (value) => {\n if (!isResolved) {\n isResolved = true;\n config.onError?.(value);\n continueFn?.();\n promiseReject(value);\n }\n };\n const pause = () => {\n return new Promise((continueResolve) => {\n continueFn = (value) => {\n if (isResolved || canContinue()) {\n continueResolve(value);\n }\n };\n config.onPause?.();\n }).then(() => {\n continueFn = void 0;\n if (!isResolved) {\n config.onContinue?.();\n }\n });\n };\n const run = () => {\n if (isResolved) {\n return;\n }\n let promiseOrValue;\n const initialPromise = failureCount === 0 ? config.initialPromise : void 0;\n try {\n promiseOrValue = initialPromise ?? config.fn();\n } catch (error) {\n promiseOrValue = Promise.reject(error);\n }\n Promise.resolve(promiseOrValue).then(resolve).catch((error) => {\n if (isResolved) {\n return;\n }\n const retry = config.retry ?? (isServer ? 0 : 3);\n const retryDelay = config.retryDelay ?? defaultRetryDelay;\n const delay = typeof retryDelay === \"function\" ? retryDelay(failureCount, error) : retryDelay;\n const shouldRetry = retry === true || typeof retry === \"number\" && failureCount < retry || typeof retry === \"function\" && retry(failureCount, error);\n if (isRetryCancelled || !shouldRetry) {\n reject(error);\n return;\n }\n failureCount++;\n config.onFail?.(failureCount, error);\n sleep(delay).then(() => {\n return canContinue() ? void 0 : pause();\n }).then(() => {\n if (isRetryCancelled) {\n reject(error);\n } else {\n run();\n }\n });\n });\n };\n return {\n promise,\n cancel,\n continue: () => {\n continueFn?.();\n return promise;\n },\n cancelRetry,\n continueRetry,\n canStart,\n start: () => {\n if (canStart()) {\n run();\n } else {\n pause().then(run);\n }\n return promise;\n }\n };\n}\nexport {\n CancelledError,\n canFetch,\n createRetryer,\n isCancelledError\n};\n//# sourceMappingURL=retryer.js.map","// src/removable.ts\nimport { isServer, isValidTimeout } from \"./utils.js\";\nvar Removable = class {\n #gcTimeout;\n destroy() {\n this.clearGcTimeout();\n }\n scheduleGc() {\n this.clearGcTimeout();\n if (isValidTimeout(this.gcTime)) {\n this.#gcTimeout = setTimeout(() => {\n this.optionalRemove();\n }, this.gcTime);\n }\n }\n updateGcTime(newGcTime) {\n this.gcTime = Math.max(\n this.gcTime || 0,\n newGcTime ?? (isServer ? Infinity : 5 * 60 * 1e3)\n );\n }\n clearGcTimeout() {\n if (this.#gcTimeout) {\n clearTimeout(this.#gcTimeout);\n this.#gcTimeout = void 0;\n }\n }\n};\nexport {\n Removable\n};\n//# sourceMappingURL=removable.js.map","// src/query.ts\nimport {\n ensureQueryFn,\n noop,\n replaceData,\n resolveEnabled,\n timeUntilStale\n} from \"./utils.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { canFetch, createRetryer, isCancelledError } from \"./retryer.js\";\nimport { Removable } from \"./removable.js\";\nvar Query = class extends Removable {\n #initialState;\n #revertState;\n #cache;\n #retryer;\n #defaultOptions;\n #abortSignalConsumed;\n constructor(config) {\n super();\n this.#abortSignalConsumed = false;\n this.#defaultOptions = config.defaultOptions;\n this.setOptions(config.options);\n this.observers = [];\n this.#cache = config.cache;\n this.queryKey = config.queryKey;\n this.queryHash = config.queryHash;\n this.#initialState = config.state || getDefaultState(this.options);\n this.state = this.#initialState;\n this.scheduleGc();\n }\n get meta() {\n return this.options.meta;\n }\n get promise() {\n return this.#retryer?.promise;\n }\n setOptions(options) {\n this.options = { ...this.#defaultOptions, ...options };\n this.updateGcTime(this.options.gcTime);\n }\n optionalRemove() {\n if (!this.observers.length && this.state.fetchStatus === \"idle\") {\n this.#cache.remove(this);\n }\n }\n setData(newData, options) {\n const data = replaceData(this.state.data, newData, this.options);\n this.#dispatch({\n data,\n type: \"success\",\n dataUpdatedAt: options?.updatedAt,\n manual: options?.manual\n });\n return data;\n }\n setState(state, setStateOptions) {\n this.#dispatch({ type: \"setState\", state, setStateOptions });\n }\n cancel(options) {\n const promise = this.#retryer?.promise;\n this.#retryer?.cancel(options);\n return promise ? promise.then(noop).catch(noop) : Promise.resolve();\n }\n destroy() {\n super.destroy();\n this.cancel({ silent: true });\n }\n reset() {\n this.destroy();\n this.setState(this.#initialState);\n }\n isActive() {\n return this.observers.some(\n (observer) => resolveEnabled(observer.options.enabled, this) !== false\n );\n }\n isDisabled() {\n return this.getObserversCount() > 0 && !this.isActive();\n }\n isStale() {\n if (this.state.isInvalidated) {\n return true;\n }\n if (this.getObserversCount() > 0) {\n return this.observers.some(\n (observer) => observer.getCurrentResult().isStale\n );\n }\n return this.state.data === void 0;\n }\n isStaleByTime(staleTime = 0) {\n return this.state.isInvalidated || this.state.data === void 0 || !timeUntilStale(this.state.dataUpdatedAt, staleTime);\n }\n onFocus() {\n const observer = this.observers.find((x) => x.shouldFetchOnWindowFocus());\n observer?.refetch({ cancelRefetch: false });\n this.#retryer?.continue();\n }\n onOnline() {\n const observer = this.observers.find((x) => x.shouldFetchOnReconnect());\n observer?.refetch({ cancelRefetch: false });\n this.#retryer?.continue();\n }\n addObserver(observer) {\n if (!this.observers.includes(observer)) {\n this.observers.push(observer);\n this.clearGcTimeout();\n this.#cache.notify({ type: \"observerAdded\", query: this, observer });\n }\n }\n removeObserver(observer) {\n if (this.observers.includes(observer)) {\n this.observers = this.observers.filter((x) => x !== observer);\n if (!this.observers.length) {\n if (this.#retryer) {\n if (this.#abortSignalConsumed) {\n this.#retryer.cancel({ revert: true });\n } else {\n this.#retryer.cancelRetry();\n }\n }\n this.scheduleGc();\n }\n this.#cache.notify({ type: \"observerRemoved\", query: this, observer });\n }\n }\n getObserversCount() {\n return this.observers.length;\n }\n invalidate() {\n if (!this.state.isInvalidated) {\n this.#dispatch({ type: \"invalidate\" });\n }\n }\n fetch(options, fetchOptions) {\n if (this.state.fetchStatus !== \"idle\") {\n if (this.state.data !== void 0 && fetchOptions?.cancelRefetch) {\n this.cancel({ silent: true });\n } else if (this.#retryer) {\n this.#retryer.continueRetry();\n return this.#retryer.promise;\n }\n }\n if (options) {\n this.setOptions(options);\n }\n if (!this.options.queryFn) {\n const observer = this.observers.find((x) => x.options.queryFn);\n if (observer) {\n this.setOptions(observer.options);\n }\n }\n if (process.env.NODE_ENV !== \"production\") {\n if (!Array.isArray(this.options.queryKey)) {\n console.error(\n `As of v4, queryKey needs to be an Array. If you are using a string like 'repoData', please change it to an Array, e.g. ['repoData']`\n );\n }\n }\n const abortController = new AbortController();\n const addSignalProperty = (object) => {\n Object.defineProperty(object, \"signal\", {\n enumerable: true,\n get: () => {\n this.#abortSignalConsumed = true;\n return abortController.signal;\n }\n });\n };\n const fetchFn = () => {\n const queryFn = ensureQueryFn(this.options, fetchOptions);\n const queryFnContext = {\n queryKey: this.queryKey,\n meta: this.meta\n };\n addSignalProperty(queryFnContext);\n this.#abortSignalConsumed = false;\n if (this.options.persister) {\n return this.options.persister(\n queryFn,\n queryFnContext,\n this\n );\n }\n return queryFn(queryFnContext);\n };\n const context = {\n fetchOptions,\n options: this.options,\n queryKey: this.queryKey,\n state: this.state,\n fetchFn\n };\n addSignalProperty(context);\n this.options.behavior?.onFetch(\n context,\n this\n );\n this.#revertState = this.state;\n if (this.state.fetchStatus === \"idle\" || this.state.fetchMeta !== context.fetchOptions?.meta) {\n this.#dispatch({ type: \"fetch\", meta: context.fetchOptions?.meta });\n }\n const onError = (error) => {\n if (!(isCancelledError(error) && error.silent)) {\n this.#dispatch({\n type: \"error\",\n error\n });\n }\n if (!isCancelledError(error)) {\n this.#cache.config.onError?.(\n error,\n this\n );\n this.#cache.config.onSettled?.(\n this.state.data,\n error,\n this\n );\n }\n if (!this.isFetchingOptimistic) {\n this.scheduleGc();\n }\n this.isFetchingOptimistic = false;\n };\n this.#retryer = createRetryer({\n initialPromise: fetchOptions?.initialPromise,\n fn: context.fetchFn,\n abort: abortController.abort.bind(abortController),\n onSuccess: (data) => {\n if (data === void 0) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(\n `Query data cannot be undefined. Please make sure to return a value other than undefined from your query function. Affected query key: ${this.queryHash}`\n );\n }\n onError(new Error(`${this.queryHash} data is undefined`));\n return;\n }\n this.setData(data);\n this.#cache.config.onSuccess?.(data, this);\n this.#cache.config.onSettled?.(\n data,\n this.state.error,\n this\n );\n if (!this.isFetchingOptimistic) {\n this.scheduleGc();\n }\n this.isFetchingOptimistic = false;\n },\n onError,\n onFail: (failureCount, error) => {\n this.#dispatch({ type: \"failed\", failureCount, error });\n },\n onPause: () => {\n this.#dispatch({ type: \"pause\" });\n },\n onContinue: () => {\n this.#dispatch({ type: \"continue\" });\n },\n retry: context.options.retry,\n retryDelay: context.options.retryDelay,\n networkMode: context.options.networkMode,\n canRun: () => true\n });\n return this.#retryer.start();\n }\n #dispatch(action) {\n const reducer = (state) => {\n switch (action.type) {\n case \"failed\":\n return {\n ...state,\n fetchFailureCount: action.failureCount,\n fetchFailureReason: action.error\n };\n case \"pause\":\n return {\n ...state,\n fetchStatus: \"paused\"\n };\n case \"continue\":\n return {\n ...state,\n fetchStatus: \"fetching\"\n };\n case \"fetch\":\n return {\n ...state,\n ...fetchState(state.data, this.options),\n fetchMeta: action.meta ?? null\n };\n case \"success\":\n return {\n ...state,\n data: action.data,\n dataUpdateCount: state.dataUpdateCount + 1,\n dataUpdatedAt: action.dataUpdatedAt ?? Date.now(),\n error: null,\n isInvalidated: false,\n status: \"success\",\n ...!action.manual && {\n fetchStatus: \"idle\",\n fetchFailureCount: 0,\n fetchFailureReason: null\n }\n };\n case \"error\":\n const error = action.error;\n if (isCancelledError(error) && error.revert && this.#revertState) {\n return { ...this.#revertState, fetchStatus: \"idle\" };\n }\n return {\n ...state,\n error,\n errorUpdateCount: state.errorUpdateCount + 1,\n errorUpdatedAt: Date.now(),\n fetchFailureCount: state.fetchFailureCount + 1,\n fetchFailureReason: error,\n fetchStatus: \"idle\",\n status: \"error\"\n };\n case \"invalidate\":\n return {\n ...state,\n isInvalidated: true\n };\n case \"setState\":\n return {\n ...state,\n ...action.state\n };\n }\n };\n this.state = reducer(this.state);\n notifyManager.batch(() => {\n this.observers.forEach((observer) => {\n observer.onQueryUpdate();\n });\n this.#cache.notify({ query: this, type: \"updated\", action });\n });\n }\n};\nfunction fetchState(data, options) {\n return {\n fetchFailureCount: 0,\n fetchFailureReason: null,\n fetchStatus: canFetch(options.networkMode) ? \"fetching\" : \"paused\",\n ...data === void 0 && {\n error: null,\n status: \"pending\"\n }\n };\n}\nfunction getDefaultState(options) {\n const data = typeof options.initialData === \"function\" ? options.initialData() : options.initialData;\n const hasData = data !== void 0;\n const initialDataUpdatedAt = hasData ? typeof options.initialDataUpdatedAt === \"function\" ? options.initialDataUpdatedAt() : options.initialDataUpdatedAt : 0;\n return {\n data,\n dataUpdateCount: 0,\n dataUpdatedAt: hasData ? initialDataUpdatedAt ?? Date.now() : 0,\n error: null,\n errorUpdateCount: 0,\n errorUpdatedAt: 0,\n fetchFailureCount: 0,\n fetchFailureReason: null,\n fetchMeta: null,\n isInvalidated: false,\n status: hasData ? \"success\" : \"pending\",\n fetchStatus: \"idle\"\n };\n}\nexport {\n Query,\n fetchState\n};\n//# sourceMappingURL=query.js.map","// src/queryCache.ts\nimport { hashQueryKeyByOptions, matchQuery } from \"./utils.js\";\nimport { Query } from \"./query.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Subscribable } from \"./subscribable.js\";\nvar QueryCache = class extends Subscribable {\n constructor(config = {}) {\n super();\n this.config = config;\n this.#queries = /* @__PURE__ */ new Map();\n }\n #queries;\n build(client, options, state) {\n const queryKey = options.queryKey;\n const queryHash = options.queryHash ?? hashQueryKeyByOptions(queryKey, options);\n let query = this.get(queryHash);\n if (!query) {\n query = new Query({\n cache: this,\n queryKey,\n queryHash,\n options: client.defaultQueryOptions(options),\n state,\n defaultOptions: client.getQueryDefaults(queryKey)\n });\n this.add(query);\n }\n return query;\n }\n add(query) {\n if (!this.#queries.has(query.queryHash)) {\n this.#queries.set(query.queryHash, query);\n this.notify({\n type: \"added\",\n query\n });\n }\n }\n remove(query) {\n const queryInMap = this.#queries.get(query.queryHash);\n if (queryInMap) {\n query.destroy();\n if (queryInMap === query) {\n this.#queries.delete(query.queryHash);\n }\n this.notify({ type: \"removed\", query });\n }\n }\n clear() {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n this.remove(query);\n });\n });\n }\n get(queryHash) {\n return this.#queries.get(queryHash);\n }\n getAll() {\n return [...this.#queries.values()];\n }\n find(filters) {\n const defaultedFilters = { exact: true, ...filters };\n return this.getAll().find(\n (query) => matchQuery(defaultedFilters, query)\n );\n }\n findAll(filters = {}) {\n const queries = this.getAll();\n return Object.keys(filters).length > 0 ? queries.filter((query) => matchQuery(filters, query)) : queries;\n }\n notify(event) {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(event);\n });\n });\n }\n onFocus() {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n query.onFocus();\n });\n });\n }\n onOnline() {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n query.onOnline();\n });\n });\n }\n};\nexport {\n QueryCache\n};\n//# sourceMappingURL=queryCache.js.map","// src/mutation.ts\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Removable } from \"./removable.js\";\nimport { createRetryer } from \"./retryer.js\";\nvar Mutation = class extends Removable {\n #observers;\n #mutationCache;\n #retryer;\n constructor(config) {\n super();\n this.mutationId = config.mutationId;\n this.#mutationCache = config.mutationCache;\n this.#observers = [];\n this.state = config.state || getDefaultState();\n this.setOptions(config.options);\n this.scheduleGc();\n }\n setOptions(options) {\n this.options = options;\n this.updateGcTime(this.options.gcTime);\n }\n get meta() {\n return this.options.meta;\n }\n addObserver(observer) {\n if (!this.#observers.includes(observer)) {\n this.#observers.push(observer);\n this.clearGcTimeout();\n this.#mutationCache.notify({\n type: \"observerAdded\",\n mutation: this,\n observer\n });\n }\n }\n removeObserver(observer) {\n this.#observers = this.#observers.filter((x) => x !== observer);\n this.scheduleGc();\n this.#mutationCache.notify({\n type: \"observerRemoved\",\n mutation: this,\n observer\n });\n }\n optionalRemove() {\n if (!this.#observers.length) {\n if (this.state.status === \"pending\") {\n this.scheduleGc();\n } else {\n this.#mutationCache.remove(this);\n }\n }\n }\n continue() {\n return this.#retryer?.continue() ?? // continuing a mutation assumes that variables are set, mutation must have been dehydrated before\n this.execute(this.state.variables);\n }\n async execute(variables) {\n this.#retryer = createRetryer({\n fn: () => {\n if (!this.options.mutationFn) {\n return Promise.reject(new Error(\"No mutationFn found\"));\n }\n return this.options.mutationFn(variables);\n },\n onFail: (failureCount, error) => {\n this.#dispatch({ type: \"failed\", failureCount, error });\n },\n onPause: () => {\n this.#dispatch({ type: \"pause\" });\n },\n onContinue: () => {\n this.#dispatch({ type: \"continue\" });\n },\n retry: this.options.retry ?? 0,\n retryDelay: this.options.retryDelay,\n networkMode: this.options.networkMode,\n canRun: () => this.#mutationCache.canRun(this)\n });\n const restored = this.state.status === \"pending\";\n const isPaused = !this.#retryer.canStart();\n try {\n if (!restored) {\n this.#dispatch({ type: \"pending\", variables, isPaused });\n await this.#mutationCache.config.onMutate?.(\n variables,\n this\n );\n const context = await this.options.onMutate?.(variables);\n if (context !== this.state.context) {\n this.#dispatch({\n type: \"pending\",\n context,\n variables,\n isPaused\n });\n }\n }\n const data = await this.#retryer.start();\n await this.#mutationCache.config.onSuccess?.(\n data,\n variables,\n this.state.context,\n this\n );\n await this.options.onSuccess?.(data, variables, this.state.context);\n await this.#mutationCache.config.onSettled?.(\n data,\n null,\n this.state.variables,\n this.state.context,\n this\n );\n await this.options.onSettled?.(data, null, variables, this.state.context);\n this.#dispatch({ type: \"success\", data });\n return data;\n } catch (error) {\n try {\n await this.#mutationCache.config.onError?.(\n error,\n variables,\n this.state.context,\n this\n );\n await this.options.onError?.(\n error,\n variables,\n this.state.context\n );\n await this.#mutationCache.config.onSettled?.(\n void 0,\n error,\n this.state.variables,\n this.state.context,\n this\n );\n await this.options.onSettled?.(\n void 0,\n error,\n variables,\n this.state.context\n );\n throw error;\n } finally {\n this.#dispatch({ type: \"error\", error });\n }\n } finally {\n this.#mutationCache.runNext(this);\n }\n }\n #dispatch(action) {\n const reducer = (state) => {\n switch (action.type) {\n case \"failed\":\n return {\n ...state,\n failureCount: action.failureCount,\n failureReason: action.error\n };\n case \"pause\":\n return {\n ...state,\n isPaused: true\n };\n case \"continue\":\n return {\n ...state,\n isPaused: false\n };\n case \"pending\":\n return {\n ...state,\n context: action.context,\n data: void 0,\n failureCount: 0,\n failureReason: null,\n error: null,\n isPaused: action.isPaused,\n status: \"pending\",\n variables: action.variables,\n submittedAt: Date.now()\n };\n case \"success\":\n return {\n ...state,\n data: action.data,\n failureCount: 0,\n failureReason: null,\n error: null,\n status: \"success\",\n isPaused: false\n };\n case \"error\":\n return {\n ...state,\n data: void 0,\n error: action.error,\n failureCount: state.failureCount + 1,\n failureReason: action.error,\n isPaused: false,\n status: \"error\"\n };\n }\n };\n this.state = reducer(this.state);\n notifyManager.batch(() => {\n this.#observers.forEach((observer) => {\n observer.onMutationUpdate(action);\n });\n this.#mutationCache.notify({\n mutation: this,\n type: \"updated\",\n action\n });\n });\n }\n};\nfunction getDefaultState() {\n return {\n context: void 0,\n data: void 0,\n error: null,\n failureCount: 0,\n failureReason: null,\n isPaused: false,\n status: \"idle\",\n variables: void 0,\n submittedAt: 0\n };\n}\nexport {\n Mutation,\n getDefaultState\n};\n//# sourceMappingURL=mutation.js.map","// src/mutationCache.ts\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Mutation } from \"./mutation.js\";\nimport { matchMutation, noop } from \"./utils.js\";\nimport { Subscribable } from \"./subscribable.js\";\nvar MutationCache = class extends Subscribable {\n constructor(config = {}) {\n super();\n this.config = config;\n this.#mutations = /* @__PURE__ */ new Map();\n this.#mutationId = Date.now();\n }\n #mutations;\n #mutationId;\n build(client, options, state) {\n const mutation = new Mutation({\n mutationCache: this,\n mutationId: ++this.#mutationId,\n options: client.defaultMutationOptions(options),\n state\n });\n this.add(mutation);\n return mutation;\n }\n add(mutation) {\n const scope = scopeFor(mutation);\n const mutations = this.#mutations.get(scope) ?? [];\n mutations.push(mutation);\n this.#mutations.set(scope, mutations);\n this.notify({ type: \"added\", mutation });\n }\n remove(mutation) {\n const scope = scopeFor(mutation);\n if (this.#mutations.has(scope)) {\n const mutations = this.#mutations.get(scope)?.filter((x) => x !== mutation);\n if (mutations) {\n if (mutations.length === 0) {\n this.#mutations.delete(scope);\n } else {\n this.#mutations.set(scope, mutations);\n }\n }\n }\n this.notify({ type: \"removed\", mutation });\n }\n canRun(mutation) {\n const firstPendingMutation = this.#mutations.get(scopeFor(mutation))?.find((m) => m.state.status === \"pending\");\n return !firstPendingMutation || firstPendingMutation === mutation;\n }\n runNext(mutation) {\n const foundMutation = this.#mutations.get(scopeFor(mutation))?.find((m) => m !== mutation && m.state.isPaused);\n return foundMutation?.continue() ?? Promise.resolve();\n }\n clear() {\n notifyManager.batch(() => {\n this.getAll().forEach((mutation) => {\n this.remove(mutation);\n });\n });\n }\n getAll() {\n return [...this.#mutations.values()].flat();\n }\n find(filters) {\n const defaultedFilters = { exact: true, ...filters };\n return this.getAll().find(\n (mutation) => matchMutation(defaultedFilters, mutation)\n );\n }\n findAll(filters = {}) {\n return this.getAll().filter((mutation) => matchMutation(filters, mutation));\n }\n notify(event) {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(event);\n });\n });\n }\n resumePausedMutations() {\n const pausedMutations = this.getAll().filter((x) => x.state.isPaused);\n return notifyManager.batch(\n () => Promise.all(\n pausedMutations.map((mutation) => mutation.continue().catch(noop))\n )\n );\n }\n};\nfunction scopeFor(mutation) {\n return mutation.options.scope?.id ?? String(mutation.mutationId);\n}\nexport {\n MutationCache\n};\n//# sourceMappingURL=mutationCache.js.map","// src/infiniteQueryBehavior.ts\nimport { addToEnd, addToStart, ensureQueryFn } from \"./utils.js\";\nfunction infiniteQueryBehavior(pages) {\n return {\n onFetch: (context, query) => {\n const fetchFn = async () => {\n const options = context.options;\n const direction = context.fetchOptions?.meta?.fetchMore?.direction;\n const oldPages = context.state.data?.pages || [];\n const oldPageParams = context.state.data?.pageParams || [];\n const empty = { pages: [], pageParams: [] };\n let cancelled = false;\n const addSignalProperty = (object) => {\n Object.defineProperty(object, \"signal\", {\n enumerable: true,\n get: () => {\n if (context.signal.aborted) {\n cancelled = true;\n } else {\n context.signal.addEventListener(\"abort\", () => {\n cancelled = true;\n });\n }\n return context.signal;\n }\n });\n };\n const queryFn = ensureQueryFn(context.options, context.fetchOptions);\n const fetchPage = async (data, param, previous) => {\n if (cancelled) {\n return Promise.reject();\n }\n if (param == null && data.pages.length) {\n return Promise.resolve(data);\n }\n const queryFnContext = {\n queryKey: context.queryKey,\n pageParam: param,\n direction: previous ? \"backward\" : \"forward\",\n meta: context.options.meta\n };\n addSignalProperty(queryFnContext);\n const page = await queryFn(\n queryFnContext\n );\n const { maxPages } = context.options;\n const addTo = previous ? addToStart : addToEnd;\n return {\n pages: addTo(data.pages, page, maxPages),\n pageParams: addTo(data.pageParams, param, maxPages)\n };\n };\n let result;\n if (direction && oldPages.length) {\n const previous = direction === \"backward\";\n const pageParamFn = previous ? getPreviousPageParam : getNextPageParam;\n const oldData = {\n pages: oldPages,\n pageParams: oldPageParams\n };\n const param = pageParamFn(options, oldData);\n result = await fetchPage(oldData, param, previous);\n } else {\n result = await fetchPage(\n empty,\n oldPageParams[0] ?? options.initialPageParam\n );\n const remainingPages = pages ?? oldPages.length;\n for (let i = 1; i < remainingPages; i++) {\n const param = getNextPageParam(options, result);\n result = await fetchPage(result, param);\n }\n }\n return result;\n };\n if (context.options.persister) {\n context.fetchFn = () => {\n return context.options.persister?.(\n fetchFn,\n {\n queryKey: context.queryKey,\n meta: context.options.meta,\n signal: context.signal\n },\n query\n );\n };\n } else {\n context.fetchFn = fetchFn;\n }\n }\n };\n}\nfunction getNextPageParam(options, { pages, pageParams }) {\n const lastIndex = pages.length - 1;\n return options.getNextPageParam(\n pages[lastIndex],\n pages,\n pageParams[lastIndex],\n pageParams\n );\n}\nfunction getPreviousPageParam(options, { pages, pageParams }) {\n return options.getPreviousPageParam?.(\n pages[0],\n pages,\n pageParams[0],\n pageParams\n );\n}\nfunction hasNextPage(options, data) {\n if (!data)\n return false;\n return getNextPageParam(options, data) != null;\n}\nfunction hasPreviousPage(options, data) {\n if (!data || !options.getPreviousPageParam)\n return false;\n return getPreviousPageParam(options, data) != null;\n}\nexport {\n hasNextPage,\n hasPreviousPage,\n infiniteQueryBehavior\n};\n//# sourceMappingURL=infiniteQueryBehavior.js.map","import { QueryClient } from '@tanstack/react-query';\n\nexport const queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n networkMode: 'always',\n retry: false,\n refetchOnWindowFocus: false,\n },\n },\n});\n","// src/queryClient.ts\nimport {\n functionalUpdate,\n hashKey,\n hashQueryKeyByOptions,\n noop,\n partialMatchKey,\n resolveStaleTime,\n skipToken\n} from \"./utils.js\";\nimport { QueryCache } from \"./queryCache.js\";\nimport { MutationCache } from \"./mutationCache.js\";\nimport { focusManager } from \"./focusManager.js\";\nimport { onlineManager } from \"./onlineManager.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { infiniteQueryBehavior } from \"./infiniteQueryBehavior.js\";\nvar QueryClient = class {\n #queryCache;\n #mutationCache;\n #defaultOptions;\n #queryDefaults;\n #mutationDefaults;\n #mountCount;\n #unsubscribeFocus;\n #unsubscribeOnline;\n constructor(config = {}) {\n this.#queryCache = config.queryCache || new QueryCache();\n this.#mutationCache = config.mutationCache || new MutationCache();\n this.#defaultOptions = config.defaultOptions || {};\n this.#queryDefaults = /* @__PURE__ */ new Map();\n this.#mutationDefaults = /* @__PURE__ */ new Map();\n this.#mountCount = 0;\n }\n mount() {\n this.#mountCount++;\n if (this.#mountCount !== 1)\n return;\n this.#unsubscribeFocus = focusManager.subscribe(async (focused) => {\n if (focused) {\n await this.resumePausedMutations();\n this.#queryCache.onFocus();\n }\n });\n this.#unsubscribeOnline = onlineManager.subscribe(async (online) => {\n if (online) {\n await this.resumePausedMutations();\n this.#queryCache.onOnline();\n }\n });\n }\n unmount() {\n this.#mountCount--;\n if (this.#mountCount !== 0)\n return;\n this.#unsubscribeFocus?.();\n this.#unsubscribeFocus = void 0;\n this.#unsubscribeOnline?.();\n this.#unsubscribeOnline = void 0;\n }\n isFetching(filters) {\n return this.#queryCache.findAll({ ...filters, fetchStatus: \"fetching\" }).length;\n }\n isMutating(filters) {\n return this.#mutationCache.findAll({ ...filters, status: \"pending\" }).length;\n }\n getQueryData(queryKey) {\n const options = this.defaultQueryOptions({ queryKey });\n return this.#queryCache.get(options.queryHash)?.state.data;\n }\n ensureQueryData(options) {\n const cachedData = this.getQueryData(options.queryKey);\n if (cachedData === void 0)\n return this.fetchQuery(options);\n else {\n const defaultedOptions = this.defaultQueryOptions(options);\n const query = this.#queryCache.build(this, defaultedOptions);\n if (options.revalidateIfStale && query.isStaleByTime(resolveStaleTime(defaultedOptions.staleTime, query))) {\n void this.prefetchQuery(defaultedOptions);\n }\n return Promise.resolve(cachedData);\n }\n }\n getQueriesData(filters) {\n return this.#queryCache.findAll(filters).map(({ queryKey, state }) => {\n const data = state.data;\n return [queryKey, data];\n });\n }\n setQueryData(queryKey, updater, options) {\n const defaultedOptions = this.defaultQueryOptions({ queryKey });\n const query = this.#queryCache.get(\n defaultedOptions.queryHash\n );\n const prevData = query?.state.data;\n const data = functionalUpdate(updater, prevData);\n if (data === void 0) {\n return void 0;\n }\n return this.#queryCache.build(this, defaultedOptions).setData(data, { ...options, manual: true });\n }\n setQueriesData(filters, updater, options) {\n return notifyManager.batch(\n () => this.#queryCache.findAll(filters).map(({ queryKey }) => [\n queryKey,\n this.setQueryData(queryKey, updater, options)\n ])\n );\n }\n getQueryState(queryKey) {\n const options = this.defaultQueryOptions({ queryKey });\n return this.#queryCache.get(options.queryHash)?.state;\n }\n removeQueries(filters) {\n const queryCache = this.#queryCache;\n notifyManager.batch(() => {\n queryCache.findAll(filters).forEach((query) => {\n queryCache.remove(query);\n });\n });\n }\n resetQueries(filters, options) {\n const queryCache = this.#queryCache;\n const refetchFilters = {\n type: \"active\",\n ...filters\n };\n return notifyManager.batch(() => {\n queryCache.findAll(filters).forEach((query) => {\n query.reset();\n });\n return this.refetchQueries(refetchFilters, options);\n });\n }\n cancelQueries(filters = {}, cancelOptions = {}) {\n const defaultedCancelOptions = { revert: true, ...cancelOptions };\n const promises = notifyManager.batch(\n () => this.#queryCache.findAll(filters).map((query) => query.cancel(defaultedCancelOptions))\n );\n return Promise.all(promises).then(noop).catch(noop);\n }\n invalidateQueries(filters = {}, options = {}) {\n return notifyManager.batch(() => {\n this.#queryCache.findAll(filters).forEach((query) => {\n query.invalidate();\n });\n if (filters.refetchType === \"none\") {\n return Promise.resolve();\n }\n const refetchFilters = {\n ...filters,\n type: filters.refetchType ?? filters.type ?? \"active\"\n };\n return this.refetchQueries(refetchFilters, options);\n });\n }\n refetchQueries(filters = {}, options) {\n const fetchOptions = {\n ...options,\n cancelRefetch: options?.cancelRefetch ?? true\n };\n const promises = notifyManager.batch(\n () => this.#queryCache.findAll(filters).filter((query) => !query.isDisabled()).map((query) => {\n let promise = query.fetch(void 0, fetchOptions);\n if (!fetchOptions.throwOnError) {\n promise = promise.catch(noop);\n }\n return query.state.fetchStatus === \"paused\" ? Promise.resolve() : promise;\n })\n );\n return Promise.all(promises).then(noop);\n }\n fetchQuery(options) {\n const defaultedOptions = this.defaultQueryOptions(options);\n if (defaultedOptions.retry === void 0) {\n defaultedOptions.retry = false;\n }\n const query = this.#queryCache.build(this, defaultedOptions);\n return query.isStaleByTime(\n resolveStaleTime(defaultedOptions.staleTime, query)\n ) ? query.fetch(defaultedOptions) : Promise.resolve(query.state.data);\n }\n prefetchQuery(options) {\n return this.fetchQuery(options).then(noop).catch(noop);\n }\n fetchInfiniteQuery(options) {\n options.behavior = infiniteQueryBehavior(options.pages);\n return this.fetchQuery(options);\n }\n prefetchInfiniteQuery(options) {\n return this.fetchInfiniteQuery(options).then(noop).catch(noop);\n }\n resumePausedMutations() {\n if (onlineManager.isOnline()) {\n return this.#mutationCache.resumePausedMutations();\n }\n return Promise.resolve();\n }\n getQueryCache() {\n return this.#queryCache;\n }\n getMutationCache() {\n return this.#mutationCache;\n }\n getDefaultOptions() {\n return this.#defaultOptions;\n }\n setDefaultOptions(options) {\n this.#defaultOptions = options;\n }\n setQueryDefaults(queryKey, options) {\n this.#queryDefaults.set(hashKey(queryKey), {\n queryKey,\n defaultOptions: options\n });\n }\n getQueryDefaults(queryKey) {\n const defaults = [...this.#queryDefaults.values()];\n let result = {};\n defaults.forEach((queryDefault) => {\n if (partialMatchKey(queryKey, queryDefault.queryKey)) {\n result = { ...result, ...queryDefault.defaultOptions };\n }\n });\n return result;\n }\n setMutationDefaults(mutationKey, options) {\n this.#mutationDefaults.set(hashKey(mutationKey), {\n mutationKey,\n defaultOptions: options\n });\n }\n getMutationDefaults(mutationKey) {\n const defaults = [...this.#mutationDefaults.values()];\n let result = {};\n defaults.forEach((queryDefault) => {\n if (partialMatchKey(mutationKey, queryDefault.mutationKey)) {\n result = { ...result, ...queryDefault.defaultOptions };\n }\n });\n return result;\n }\n defaultQueryOptions(options) {\n if (options._defaulted) {\n return options;\n }\n const defaultedOptions = {\n ...this.#defaultOptions.queries,\n ...this.getQueryDefaults(options.queryKey),\n ...options,\n _defaulted: true\n };\n if (!defaultedOptions.queryHash) {\n defaultedOptions.queryHash = hashQueryKeyByOptions(\n defaultedOptions.queryKey,\n defaultedOptions\n );\n }\n if (defaultedOptions.refetchOnReconnect === void 0) {\n defaultedOptions.refetchOnReconnect = defaultedOptions.networkMode !== \"always\";\n }\n if (defaultedOptions.throwOnError === void 0) {\n defaultedOptions.throwOnError = !!defaultedOptions.suspense;\n }\n if (!defaultedOptions.networkMode && defaultedOptions.persister) {\n defaultedOptions.networkMode = \"offlineFirst\";\n }\n if (defaultedOptions.enabled !== true && defaultedOptions.queryFn === skipToken) {\n defaultedOptions.enabled = false;\n }\n return defaultedOptions;\n }\n defaultMutationOptions(options) {\n if (options?._defaulted) {\n return options;\n }\n return {\n ...this.#defaultOptions.mutations,\n ...options?.mutationKey && this.getMutationDefaults(options.mutationKey),\n ...options,\n _defaulted: true\n };\n }\n clear() {\n this.#queryCache.clear();\n this.#mutationCache.clear();\n }\n};\nexport {\n QueryClient\n};\n//# sourceMappingURL=queryClient.js.map","export var TransportItemType;\n(function (TransportItemType) {\n TransportItemType[\"EXCEPTION\"] = \"exception\";\n TransportItemType[\"LOG\"] = \"log\";\n TransportItemType[\"MEASUREMENT\"] = \"measurement\";\n TransportItemType[\"TRACE\"] = \"trace\";\n TransportItemType[\"EVENT\"] = \"event\";\n})(TransportItemType || (TransportItemType = {}));\nexport const transportItemTypeToBodyKey = {\n [TransportItemType.EXCEPTION]: 'exceptions',\n [TransportItemType.LOG]: 'logs',\n [TransportItemType.MEASUREMENT]: 'measurements',\n [TransportItemType.TRACE]: 'traces',\n [TransportItemType.EVENT]: 'events',\n};\n//# sourceMappingURL=const.js.map","export function dateNow() {\n return Date.now();\n}\nexport function getCurrentTimestamp() {\n return new Date().toISOString();\n}\nexport function timestampToIsoString(value) {\n return new Date(value).toISOString();\n}\n//# sourceMappingURL=date.js.map","export function isTypeof(value, type) {\n return typeof value === type;\n}\nexport function isToString(value, type) {\n return Object.prototype.toString.call(value) === `[object ${type}]`;\n}\nexport function isInstanceOf(value, reference) {\n try {\n return value instanceof reference;\n }\n catch (err) {\n return false;\n }\n}\nexport const isUndefined = ((value) => isTypeof(value, 'undefined'));\nexport const isNull = ((value) => isTypeof(value, 'null'));\nexport const isString = ((value) => isTypeof(value, 'string'));\nexport const isNumber = ((value) => (isTypeof(value, 'number') && !isNaN(value)) || isTypeof(value, 'bigint'));\nexport const isInt = ((value) => isNumber(value) && Number.isInteger(value));\nexport const isBoolean = ((value) => isTypeof(value, 'boolean'));\nexport const isSymbol = ((value) => isTypeof(value, 'symbol'));\nexport const isObject = ((value) => !isNull(value) && isTypeof(value, 'object'));\nexport const isFunction = ((value) => isTypeof(value, 'function'));\nexport const isArray = ((value) => isToString(value, 'Array'));\nexport const isRegExp = ((value) => isToString(value, 'RegExp'));\nexport const isThenable = ((value) => isFunction(value === null || value === void 0 ? void 0 : value.then));\nexport const isPrimitive = ((value) => !isObject(value) && !isFunction(value));\nexport const isEventDefined = typeof Event !== 'undefined';\nexport const isEvent = ((value) => isEventDefined && isInstanceOf(value, Event));\nexport const isErrorDefined = typeof Error !== 'undefined';\nexport const isError = ((value) => isErrorDefined && isInstanceOf(value, Error));\nexport const isErrorEvent = ((value) => isToString(value, 'ErrorEvent'));\nexport const isDomError = ((value) => isToString(value, 'DOMError'));\nexport const isDomException = ((value) => isToString(value, 'DOMException'));\nexport const isElementDefined = typeof Element !== 'undefined';\nexport const isElement = ((value) => isElementDefined && isInstanceOf(value, Element));\nexport const isMapDefined = typeof Map !== 'undefined';\nexport const isMap = ((value) => isMapDefined && isInstanceOf(value, Map));\nexport const isSyntheticEvent = ((value) => isObject(value) &&\n 'nativeEvent' in value &&\n 'preventDefault' in value &&\n 'stopPropagation' in value);\n//# sourceMappingURL=is.js.map","import { isArray, isObject, isTypeof } from './is';\n// This function was inspired by fast-deep-equal\n// fast-deep-equal has issues with Rollup and also it checks for some edge cases that we don't need\nexport function deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n // Using isTypeOf instead of isNumber as isNumber also checks against NaN\n if (isTypeof(a, 'number') && isNaN(a)) {\n return isTypeof(b, 'number') && isNaN(b);\n }\n const aIsArray = isArray(a);\n const bIsArray = isArray(b);\n if (aIsArray !== bIsArray) {\n return false;\n }\n if (aIsArray && bIsArray) {\n const length = a.length;\n if (length !== b.length) {\n return false;\n }\n for (let idx = length; idx-- !== 0;) {\n if (!deepEqual(a[idx], b[idx])) {\n return false;\n }\n }\n return true;\n }\n const aIsObject = isObject(a);\n const bIsObject = isObject(b);\n if (aIsObject !== bIsObject) {\n return false;\n }\n if (a && b && aIsObject && bIsObject) {\n const aKeys = Object.keys(a);\n const bKeys = Object.keys(b);\n const aLength = aKeys.length;\n const bLength = bKeys.length;\n if (aLength !== bLength) {\n return false;\n }\n for (let aKey of aKeys) {\n if (!bKeys.includes(aKey)) {\n return false;\n }\n }\n for (let aKey of aKeys) {\n if (!deepEqual(a[aKey], b[aKey])) {\n return false;\n }\n }\n return true;\n }\n return false;\n}\n//# sourceMappingURL=deepEqual.js.map","export const defaultExceptionType = 'Error';\n//# sourceMappingURL=const.js.map","import { TransportItemType } from '../../transports';\nimport { deepEqual, getCurrentTimestamp, isNull } from '../../utils';\nimport { timestampToIsoString } from '../../utils/date';\nimport { defaultExceptionType } from './const';\nlet stacktraceParser;\nexport function initializeExceptionsAPI(_unpatchedConsole, internalLogger, config, metas, transports, tracesApi) {\n var _a;\n internalLogger.debug('Initializing exceptions API');\n let lastPayload = null;\n stacktraceParser = (_a = config.parseStacktrace) !== null && _a !== void 0 ? _a : stacktraceParser;\n const changeStacktraceParser = (newStacktraceParser) => {\n internalLogger.debug('Changing stacktrace parser');\n stacktraceParser = newStacktraceParser !== null && newStacktraceParser !== void 0 ? newStacktraceParser : stacktraceParser;\n };\n const getStacktraceParser = () => stacktraceParser;\n const pushError = (error, { skipDedupe, stackFrames, type, context, spanContext, timestampOverwriteMs } = {}) => {\n type = type || error.name || defaultExceptionType;\n const item = {\n meta: metas.value,\n payload: {\n type,\n value: error.message,\n timestamp: timestampOverwriteMs ? timestampToIsoString(timestampOverwriteMs) : getCurrentTimestamp(),\n trace: spanContext\n ? {\n trace_id: spanContext.traceId,\n span_id: spanContext.spanId,\n }\n : tracesApi.getTraceContext(),\n context: context !== null && context !== void 0 ? context : {},\n },\n type: TransportItemType.EXCEPTION,\n };\n stackFrames = stackFrames !== null && stackFrames !== void 0 ? stackFrames : (error.stack ? stacktraceParser === null || stacktraceParser === void 0 ? void 0 : stacktraceParser(error).frames : undefined);\n if (stackFrames === null || stackFrames === void 0 ? void 0 : stackFrames.length) {\n item.payload.stacktrace = {\n frames: stackFrames,\n };\n }\n const testingPayload = {\n type: item.payload.type,\n value: item.payload.value,\n stackTrace: item.payload.stacktrace,\n context: item.payload.context,\n };\n if (!skipDedupe && config.dedupe && !isNull(lastPayload) && deepEqual(testingPayload, lastPayload)) {\n internalLogger.debug('Skipping error push because it is the same as the last one\\n', item.payload);\n return;\n }\n lastPayload = testingPayload;\n internalLogger.debug('Pushing exception\\n', item);\n transports.execute(item);\n };\n changeStacktraceParser(config.parseStacktrace);\n return {\n changeStacktraceParser,\n getStacktraceParser,\n pushError,\n };\n}\n//# sourceMappingURL=initialize.js.map","export var LogLevel;\n(function (LogLevel) {\n LogLevel[\"TRACE\"] = \"trace\";\n LogLevel[\"DEBUG\"] = \"debug\";\n LogLevel[\"INFO\"] = \"info\";\n LogLevel[\"LOG\"] = \"log\";\n LogLevel[\"WARN\"] = \"warn\";\n LogLevel[\"ERROR\"] = \"error\";\n})(LogLevel || (LogLevel = {}));\nexport const defaultLogLevel = LogLevel.LOG;\nexport const allLogLevels = [\n LogLevel.TRACE,\n LogLevel.DEBUG,\n LogLevel.INFO,\n LogLevel.LOG,\n LogLevel.WARN,\n LogLevel.ERROR,\n];\n//# sourceMappingURL=logLevels.js.map","export const defaultLogArgsSerializer = (args) => args\n .map((arg) => {\n try {\n return String(arg);\n }\n catch (err) {\n return '';\n }\n})\n .join(' ');\n//# sourceMappingURL=const.js.map","import { initializeEventsAPI } from './events';\nimport { initializeExceptionsAPI } from './exceptions';\nimport { initializeLogsAPI } from './logs';\nimport { initializeMeasurementsAPI } from './measurements';\nimport { initializeMetaAPI } from './meta';\nimport { initializeTracesAPI } from './traces';\nexport function initializeAPI(unpatchedConsole, internalLogger, config, metas, transports) {\n internalLogger.debug('Initializing API');\n const tracesApi = initializeTracesAPI(unpatchedConsole, internalLogger, config, metas, transports);\n return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, tracesApi), initializeExceptionsAPI(unpatchedConsole, internalLogger, config, metas, transports, tracesApi)), initializeMetaAPI(unpatchedConsole, internalLogger, config, metas, transports)), initializeLogsAPI(unpatchedConsole, internalLogger, config, metas, transports, tracesApi)), initializeMeasurementsAPI(unpatchedConsole, internalLogger, config, metas, transports, tracesApi)), initializeEventsAPI(unpatchedConsole, internalLogger, config, metas, transports, tracesApi));\n}\n//# sourceMappingURL=initialize.js.map","import { TransportItemType } from '../../transports';\nexport function initializeTracesAPI(_unpatchedConsole, internalLogger, _config, metas, transports) {\n internalLogger.debug('Initializing traces API');\n let otel = undefined;\n const initOTEL = (trace, context) => {\n internalLogger.debug('Initializing OpenTelemetry');\n otel = {\n trace,\n context,\n };\n };\n const getTraceContext = () => {\n const ctx = otel === null || otel === void 0 ? void 0 : otel.trace.getSpanContext(otel.context.active());\n return !ctx\n ? undefined\n : {\n trace_id: ctx.traceId,\n span_id: ctx.spanId,\n };\n };\n const pushTraces = (payload) => {\n try {\n const item = {\n type: TransportItemType.TRACE,\n payload,\n meta: metas.value,\n };\n internalLogger.debug('Pushing trace\\n', item);\n transports.execute(item);\n }\n catch (err) {\n internalLogger.error('Error pushing trace\\n', err);\n }\n };\n const getOTEL = () => otel;\n const isOTELInitialized = () => !!otel;\n return {\n getOTEL,\n getTraceContext,\n initOTEL,\n isOTELInitialized,\n pushTraces,\n };\n}\n//# sourceMappingURL=initialize.js.map","export function initializeMetaAPI(_unpatchedConsole, internalLogger, _config, metas, _transports) {\n internalLogger.debug('Initializing meta API');\n let metaSession = undefined;\n let metaUser = undefined;\n let metaView = undefined;\n const setUser = (user) => {\n if (metaUser) {\n metas.remove(metaUser);\n }\n metaUser = {\n user,\n };\n metas.add(metaUser);\n };\n const setSession = (session) => {\n if (metaSession) {\n metas.remove(metaSession);\n }\n metaSession = {\n session,\n };\n metas.add(metaSession);\n };\n const getSession = () => metas.value.session;\n const setView = (view) => {\n var _a;\n if (((_a = metaView === null || metaView === void 0 ? void 0 : metaView.view) === null || _a === void 0 ? void 0 : _a.name) === (view === null || view === void 0 ? void 0 : view.name)) {\n return;\n }\n const previousView = metaView;\n metaView = {\n view,\n };\n metas.add(metaView);\n if (previousView) {\n metas.remove(previousView);\n }\n };\n const getView = () => metas.value.view;\n return {\n setUser,\n resetUser: setUser,\n setSession,\n resetSession: setSession,\n getSession,\n setView,\n getView,\n };\n}\n//# sourceMappingURL=initialize.js.map","import { TransportItemType } from '../../transports';\nimport { deepEqual, defaultLogLevel, getCurrentTimestamp, isNull } from '../../utils';\nimport { timestampToIsoString } from '../../utils/date';\nimport { defaultLogArgsSerializer } from './const';\nexport function initializeLogsAPI(_unpatchedConsole, internalLogger, config, metas, transports, tracesApi) {\n var _a;\n internalLogger.debug('Initializing logs API');\n let lastPayload = null;\n const logArgsSerializer = (_a = config.logArgsSerializer) !== null && _a !== void 0 ? _a : defaultLogArgsSerializer;\n const pushLog = (args, { context, level, skipDedupe, spanContext, timestampOverwriteMs } = {}) => {\n try {\n const item = {\n type: TransportItemType.LOG,\n payload: {\n message: logArgsSerializer(args),\n level: level !== null && level !== void 0 ? level : defaultLogLevel,\n context: context !== null && context !== void 0 ? context : {},\n timestamp: timestampOverwriteMs ? timestampToIsoString(timestampOverwriteMs) : getCurrentTimestamp(),\n trace: spanContext\n ? {\n trace_id: spanContext.traceId,\n span_id: spanContext.spanId,\n }\n : tracesApi.getTraceContext(),\n },\n meta: metas.value,\n };\n const testingPayload = {\n message: item.payload.message,\n level: item.payload.level,\n context: item.payload.context,\n };\n if (!skipDedupe && config.dedupe && !isNull(lastPayload) && deepEqual(testingPayload, lastPayload)) {\n internalLogger.debug('Skipping log push because it is the same as the last one\\n', item.payload);\n return;\n }\n lastPayload = testingPayload;\n internalLogger.debug('Pushing log\\n', item);\n transports.execute(item);\n }\n catch (err) {\n internalLogger.error('Error pushing log\\n', err);\n }\n };\n return {\n pushLog,\n };\n}\n//# sourceMappingURL=initialize.js.map","import { TransportItemType } from '../../transports';\nimport { deepEqual, getCurrentTimestamp, isNull } from '../../utils';\nimport { timestampToIsoString } from '../../utils/date';\nexport function initializeMeasurementsAPI(_unpatchedConsole, internalLogger, config, metas, transports, tracesApi) {\n internalLogger.debug('Initializing measurements API');\n let lastPayload = null;\n const pushMeasurement = (payload, { skipDedupe, context, spanContext, timestampOverwriteMs } = {}) => {\n try {\n const item = {\n type: TransportItemType.MEASUREMENT,\n payload: Object.assign(Object.assign({}, payload), { trace: spanContext\n ? {\n trace_id: spanContext.traceId,\n span_id: spanContext.spanId,\n }\n : tracesApi.getTraceContext(), timestamp: timestampOverwriteMs ? timestampToIsoString(timestampOverwriteMs) : getCurrentTimestamp(), context: context !== null && context !== void 0 ? context : {} }),\n meta: metas.value,\n };\n const testingPayload = {\n type: item.payload.type,\n values: item.payload.values,\n context: item.payload.context,\n };\n if (!skipDedupe && config.dedupe && !isNull(lastPayload) && deepEqual(testingPayload, lastPayload)) {\n internalLogger.debug('Skipping measurement push because it is the same as the last one\\n', item.payload);\n return;\n }\n lastPayload = testingPayload;\n internalLogger.debug('Pushing measurement\\n', item);\n transports.execute(item);\n }\n catch (err) {\n internalLogger.error('Error pushing measurement\\n', err);\n }\n };\n return {\n pushMeasurement,\n };\n}\n//# sourceMappingURL=initialize.js.map","import { TransportItemType } from '../../transports';\nimport { deepEqual, getCurrentTimestamp, isNull } from '../../utils';\nimport { timestampToIsoString } from '../../utils/date';\nexport function initializeEventsAPI(_unpatchedConsole, internalLogger, config, metas, transports, tracesApi) {\n let lastPayload = null;\n const pushEvent = (name, attributes, domain, { skipDedupe, spanContext, timestampOverwriteMs } = {}) => {\n try {\n const item = {\n meta: metas.value,\n payload: {\n name,\n domain: domain !== null && domain !== void 0 ? domain : config.eventDomain,\n attributes,\n timestamp: timestampOverwriteMs ? timestampToIsoString(timestampOverwriteMs) : getCurrentTimestamp(),\n trace: spanContext\n ? {\n trace_id: spanContext.traceId,\n span_id: spanContext.spanId,\n }\n : tracesApi.getTraceContext(),\n },\n type: TransportItemType.EVENT,\n };\n const testingPayload = {\n name: item.payload.name,\n attributes: item.payload.attributes,\n domain: item.payload.domain,\n };\n if (!skipDedupe && config.dedupe && !isNull(lastPayload) && deepEqual(testingPayload, lastPayload)) {\n internalLogger.debug('Skipping event push because it is the same as the last one\\n', item.payload);\n return;\n }\n lastPayload = testingPayload;\n internalLogger.debug('Pushing event\\n', item);\n transports.execute(item);\n }\n catch (err) {\n internalLogger.error('Error pushing event', err);\n }\n };\n return {\n pushEvent,\n };\n}\n//# sourceMappingURL=initialize.js.map","export function noop() { }\n//# sourceMappingURL=noop.js.map","import { noop } from '../utils';\nexport var InternalLoggerLevel;\n(function (InternalLoggerLevel) {\n InternalLoggerLevel[InternalLoggerLevel[\"OFF\"] = 0] = \"OFF\";\n InternalLoggerLevel[InternalLoggerLevel[\"ERROR\"] = 1] = \"ERROR\";\n InternalLoggerLevel[InternalLoggerLevel[\"WARN\"] = 2] = \"WARN\";\n InternalLoggerLevel[InternalLoggerLevel[\"INFO\"] = 3] = \"INFO\";\n InternalLoggerLevel[InternalLoggerLevel[\"VERBOSE\"] = 4] = \"VERBOSE\";\n})(InternalLoggerLevel || (InternalLoggerLevel = {}));\nexport const defaultInternalLoggerPrefix = 'Faro';\nexport const defaultInternalLogger = {\n debug: noop,\n error: noop,\n info: noop,\n prefix: defaultInternalLoggerPrefix,\n warn: noop,\n};\nexport const defaultInternalLoggerLevel = InternalLoggerLevel.ERROR;\n//# sourceMappingURL=const.js.map","export const defaultUnpatchedConsole = Object.assign({}, console);\n//# sourceMappingURL=const.js.map","import { defaultUnpatchedConsole } from '../unpatchedConsole';\nimport { noop } from '../utils';\nimport { defaultInternalLogger, defaultInternalLoggerLevel, InternalLoggerLevel } from './const';\nexport function createInternalLogger(unpatchedConsole = defaultUnpatchedConsole, internalLoggerLevel = defaultInternalLoggerLevel) {\n const internalLogger = defaultInternalLogger;\n if (internalLoggerLevel > InternalLoggerLevel.OFF) {\n internalLogger.error =\n internalLoggerLevel >= InternalLoggerLevel.ERROR\n ? function (...args) {\n unpatchedConsole.error(`${internalLogger.prefix}\\n`, ...args);\n }\n : noop;\n internalLogger.warn =\n internalLoggerLevel >= InternalLoggerLevel.WARN\n ? function (...args) {\n unpatchedConsole.warn(`${internalLogger.prefix}\\n`, ...args);\n }\n : noop;\n internalLogger.info =\n internalLoggerLevel >= InternalLoggerLevel.INFO\n ? function (...args) {\n unpatchedConsole.info(`${internalLogger.prefix}\\n`, ...args);\n }\n : noop;\n internalLogger.debug =\n internalLoggerLevel >= InternalLoggerLevel.VERBOSE\n ? function (...args) {\n unpatchedConsole.debug(`${internalLogger.prefix}\\n`, ...args);\n }\n : noop;\n }\n return internalLogger;\n}\n//# sourceMappingURL=createInternalLogger.js.map","import { defaultInternalLogger } from './const';\nimport { createInternalLogger } from './createInternalLogger';\nexport let internalLogger = defaultInternalLogger;\nexport function initializeInternalLogger(unpatchedConsole, config) {\n internalLogger = createInternalLogger(unpatchedConsole, config.internalLoggerLevel);\n return internalLogger;\n}\n//# sourceMappingURL=initialize.js.map","// This does not uses isUndefined method because it will throw an error in non-browser environments\nexport const globalObject = (typeof globalThis !== 'undefined'\n ? globalThis\n : typeof global !== 'undefined'\n ? global\n : typeof self !== 'undefined'\n ? self\n : undefined);\n//# sourceMappingURL=globalObject.js.map","// auto-generated by bin/genVersion.ts\nexport const VERSION = '1.10.0';\n//# sourceMappingURL=version.js.map","export const internalGlobalObjectKey = '_faroInternal';\n//# sourceMappingURL=const.js.map","import { setFaroOnGlobalObject } from './faroGlobalObject';\nimport { setInternalFaroOnGlobalObject } from './internalFaroGlobalObject';\nexport let faro = {};\nexport function registerFaro(unpatchedConsole, internalLogger, config, metas, transports, api, instrumentations) {\n internalLogger.debug('Initializing Faro');\n faro = {\n api,\n config,\n instrumentations,\n internalLogger,\n metas,\n pause: transports.pause,\n transports,\n unpatchedConsole,\n unpause: transports.unpause,\n };\n setInternalFaroOnGlobalObject(faro);\n setFaroOnGlobalObject(faro);\n return faro;\n}\n//# sourceMappingURL=registerFaro.js.map","import { globalObject } from '../globalObject';\nimport { internalGlobalObjectKey } from './const';\nexport function getInternalFromGlobalObject() {\n return globalObject[internalGlobalObjectKey];\n}\nexport function setInternalFaroOnGlobalObject(faro) {\n if (!faro.config.isolate) {\n faro.internalLogger.debug('Registering internal Faro instance on global object');\n Object.defineProperty(globalObject, internalGlobalObjectKey, {\n configurable: false,\n enumerable: false,\n writable: false,\n value: faro,\n });\n }\n else {\n faro.internalLogger.debug('Skipping registering internal Faro instance on global object');\n }\n}\nexport function isInternalFaroOnGlobalObject() {\n return internalGlobalObjectKey in globalObject;\n}\n//# sourceMappingURL=internalFaroGlobalObject.js.map","import { globalObject } from '../globalObject';\nexport function setFaroOnGlobalObject(faro) {\n if (!faro.config.preventGlobalExposure) {\n faro.internalLogger.debug(`Registering public faro reference in the global scope using \"${faro.config.globalObjectKey}\" key`);\n if (faro.config.globalObjectKey in globalObject) {\n faro.internalLogger.warn(`Skipping global registration due to key \"${faro.config.globalObjectKey}\" being used already. Please set \"globalObjectKey\" to something else or set \"preventGlobalExposure\" to \"true\"`);\n return;\n }\n Object.defineProperty(globalObject, faro.config.globalObjectKey, {\n configurable: false,\n writable: false,\n value: faro,\n });\n }\n else {\n faro.internalLogger.debug('Skipping registering public Faro instance in the global scope');\n }\n}\n//# sourceMappingURL=faroGlobalObject.js.map","const DEFAULT_SEND_TIMEOUT_MS = 250;\nconst DEFAULT_BATCH_ITEM_LIMIT = 50;\nexport class BatchExecutor {\n constructor(sendFn, options) {\n var _a, _b;\n this.signalBuffer = [];\n this.itemLimit = (_a = options === null || options === void 0 ? void 0 : options.itemLimit) !== null && _a !== void 0 ? _a : DEFAULT_BATCH_ITEM_LIMIT;\n this.sendTimeout = (_b = options === null || options === void 0 ? void 0 : options.sendTimeout) !== null && _b !== void 0 ? _b : DEFAULT_SEND_TIMEOUT_MS;\n this.paused = (options === null || options === void 0 ? void 0 : options.paused) || false;\n this.sendFn = sendFn;\n this.flushInterval = -1;\n if (!this.paused) {\n this.start();\n }\n // Send batched/buffered data when user navigates to new page, switches or closes the tab, minimizes or closes the browser.\n // If on mobile, it also sends data if user switches from the browser to a different app.\n document.addEventListener('visibilitychange', () => {\n if (document.visibilityState === 'hidden') {\n this.flush();\n }\n });\n }\n addItem(item) {\n if (this.paused) {\n return;\n }\n this.signalBuffer.push(item);\n if (this.signalBuffer.length >= this.itemLimit) {\n this.flush();\n }\n }\n start() {\n this.paused = false;\n if (this.sendTimeout > 0) {\n this.flushInterval = window.setInterval(() => this.flush(), this.sendTimeout);\n }\n }\n pause() {\n this.paused = true;\n clearInterval(this.flushInterval);\n }\n groupItems(items) {\n const itemMap = new Map();\n items.forEach((item) => {\n const metaKey = JSON.stringify(item.meta);\n let currentItems = itemMap.get(metaKey);\n if (currentItems === undefined) {\n currentItems = [item];\n }\n else {\n currentItems = [...currentItems, item];\n }\n itemMap.set(metaKey, currentItems);\n });\n return Array.from(itemMap.values());\n }\n flush() {\n if (this.paused || this.signalBuffer.length === 0) {\n return;\n }\n const itemGroups = this.groupItems(this.signalBuffer);\n itemGroups.forEach(this.sendFn);\n this.signalBuffer = [];\n }\n}\n//# sourceMappingURL=batchExecutor.js.map","import { isString } from '../utils';\nimport { BatchExecutor } from './batchExecutor';\nimport { TransportItemType } from './const';\nexport function shouldIgnoreEvent(patterns, msg) {\n return patterns.some((pattern) => {\n return isString(pattern) ? msg.includes(pattern) : !!msg.match(pattern);\n });\n}\nexport function createBeforeSendHookFromIgnorePatterns(patterns) {\n return (item) => {\n if (item.type === TransportItemType.EXCEPTION && item.payload) {\n const evt = item.payload;\n const msg = `${evt.type}: ${evt.value}`;\n if (shouldIgnoreEvent(patterns, msg)) {\n return null;\n }\n }\n return item;\n };\n}\nexport function initializeTransports(unpatchedConsole, internalLogger, config, metas) {\n var _a;\n internalLogger.debug('Initializing transports');\n const transports = [];\n let paused = config.paused;\n let beforeSendHooks = [];\n const add = (...newTransports) => {\n internalLogger.debug('Adding transports');\n newTransports.forEach((newTransport) => {\n internalLogger.debug(`Adding \"${newTransport.name}\" transport`);\n const exists = transports.some((existingTransport) => existingTransport === newTransport);\n if (exists) {\n internalLogger.warn(`Transport ${newTransport.name} is already added`);\n return;\n }\n newTransport.unpatchedConsole = unpatchedConsole;\n newTransport.internalLogger = internalLogger;\n newTransport.config = config;\n newTransport.metas = metas;\n transports.push(newTransport);\n });\n };\n const addBeforeSendHooks = (...newBeforeSendHooks) => {\n internalLogger.debug('Adding beforeSendHooks\\n', beforeSendHooks);\n newBeforeSendHooks.forEach((beforeSendHook) => {\n if (beforeSendHook) {\n beforeSendHooks.push(beforeSendHook);\n }\n });\n };\n const addIgnoreErrorsPatterns = (...ignoreErrorsPatterns) => {\n internalLogger.debug('Adding ignoreErrorsPatterns\\n', ignoreErrorsPatterns);\n ignoreErrorsPatterns.forEach((ignoreErrorsPattern) => {\n if (ignoreErrorsPattern) {\n beforeSendHooks.push(createBeforeSendHookFromIgnorePatterns(ignoreErrorsPattern));\n }\n });\n };\n const applyBeforeSendHooks = (items) => {\n let filteredItems = items;\n for (const hook of beforeSendHooks) {\n const modified = filteredItems.map(hook).filter(Boolean);\n if (modified.length === 0) {\n return [];\n }\n filteredItems = modified;\n }\n return filteredItems;\n };\n const batchedSend = (items) => {\n const filteredItems = applyBeforeSendHooks(items);\n if (filteredItems.length === 0) {\n return;\n }\n for (const transport of transports) {\n internalLogger.debug(`Transporting item using ${transport.name}\\n`, filteredItems);\n if (transport.isBatched()) {\n transport.send(filteredItems);\n }\n }\n };\n const instantSend = (item) => {\n var _a, _b;\n // prevent all beforeSend hooks being executed twice if batching is enabled.\n if (((_a = config.batching) === null || _a === void 0 ? void 0 : _a.enabled) && transports.every((transport) => transport.isBatched())) {\n return;\n }\n const [filteredItem] = applyBeforeSendHooks([item]);\n if (filteredItem === undefined) {\n return;\n }\n for (const transport of transports) {\n internalLogger.debug(`Transporting item using ${transport.name}\\n`, filteredItem);\n if (!transport.isBatched()) {\n transport.send(filteredItem);\n }\n else if (!((_b = config.batching) === null || _b === void 0 ? void 0 : _b.enabled)) {\n transport.send([filteredItem]);\n }\n }\n };\n let batchExecutor;\n if ((_a = config.batching) === null || _a === void 0 ? void 0 : _a.enabled) {\n batchExecutor = new BatchExecutor(batchedSend, {\n sendTimeout: config.batching.sendTimeout,\n itemLimit: config.batching.itemLimit,\n paused,\n });\n }\n // Send a signal to the appropriate transports\n //\n // 1. If SDK is paused, early return\n // 2. If batching is not enabled send the signal to all transports\n // instantly.\n // 3i. If batching is enabled, enqueue the signal\n // 3ii. Send the signal instantly to all un-batched transports\n const execute = (item) => {\n var _a;\n if (paused) {\n return;\n }\n if ((_a = config.batching) === null || _a === void 0 ? void 0 : _a.enabled) {\n batchExecutor === null || batchExecutor === void 0 ? void 0 : batchExecutor.addItem(item);\n }\n instantSend(item);\n };\n const getBeforeSendHooks = () => [...beforeSendHooks];\n const isPaused = () => paused;\n const pause = () => {\n internalLogger.debug('Pausing transports');\n batchExecutor === null || batchExecutor === void 0 ? void 0 : batchExecutor.pause();\n paused = true;\n };\n const remove = (...transportsToRemove) => {\n internalLogger.debug('Removing transports');\n transportsToRemove.forEach((transportToRemove) => {\n internalLogger.debug(`Removing \"${transportToRemove.name}\" transport`);\n const existingTransportIndex = transports.indexOf(transportToRemove);\n if (existingTransportIndex === -1) {\n internalLogger.warn(`Transport \"${transportToRemove.name}\" is not added`);\n return;\n }\n transports.splice(existingTransportIndex, 1);\n });\n };\n const removeBeforeSendHooks = (...beforeSendHooksToRemove) => {\n beforeSendHooks.filter((beforeSendHook) => !beforeSendHooksToRemove.includes(beforeSendHook));\n };\n const unpause = () => {\n internalLogger.debug('Unpausing transports');\n batchExecutor === null || batchExecutor === void 0 ? void 0 : batchExecutor.start();\n paused = false;\n };\n return {\n add,\n addBeforeSendHooks,\n addIgnoreErrorsPatterns,\n getBeforeSendHooks,\n execute,\n isPaused,\n pause,\n remove,\n removeBeforeSendHooks,\n get transports() {\n return [...transports];\n },\n unpause,\n };\n}\n//# sourceMappingURL=initialize.js.map","import { defaultUnpatchedConsole } from './const';\nexport let unpatchedConsole = defaultUnpatchedConsole;\nexport function initializeUnpatchedConsole(config) {\n var _a;\n unpatchedConsole = (_a = config.unpatchedConsole) !== null && _a !== void 0 ? _a : unpatchedConsole;\n return unpatchedConsole;\n}\n//# sourceMappingURL=initialize.js.map","import { initializeAPI } from './api';\nimport { initializeInstrumentations, registerInitialInstrumentations } from './instrumentations';\nimport { initializeInternalLogger } from './internalLogger';\nimport { initializeMetas, registerInitialMetas } from './metas';\nimport { isInternalFaroOnGlobalObject, registerFaro } from './sdk';\nimport { initializeTransports, registerInitialTransports } from './transports';\nimport { initializeUnpatchedConsole } from './unpatchedConsole';\nexport function initializeFaro(config) {\n const unpatchedConsole = initializeUnpatchedConsole(config);\n const internalLogger = initializeInternalLogger(unpatchedConsole, config);\n if (isInternalFaroOnGlobalObject() && !config.isolate) {\n internalLogger.error('Faro is already registered. Either add instrumentations, transports etc. to the global faro instance or use the \"isolate\" property');\n return undefined;\n }\n internalLogger.debug('Initializing');\n // Initializing the APIs\n const metas = initializeMetas(unpatchedConsole, internalLogger, config);\n const transports = initializeTransports(unpatchedConsole, internalLogger, config, metas);\n const api = initializeAPI(unpatchedConsole, internalLogger, config, metas, transports);\n const instrumentations = initializeInstrumentations(unpatchedConsole, internalLogger, config, metas, transports, api);\n const faro = registerFaro(unpatchedConsole, internalLogger, config, metas, transports, api, instrumentations);\n // make sure Faro is initialized before registering default metas, instrumentations, transports etc.\n registerInitialMetas(faro);\n registerInitialTransports(faro);\n registerInitialInstrumentations(faro);\n return faro;\n}\n//# sourceMappingURL=initialize.js.map","import { isFunction } from '../utils';\nexport function initializeMetas(_unpatchedConsole, internalLogger, _config) {\n let items = [];\n let listeners = [];\n const getValue = () => items.reduce((acc, item) => Object.assign(acc, isFunction(item) ? item() : item), {});\n const notifyListeners = () => {\n if (listeners.length) {\n const value = getValue();\n listeners.forEach((listener) => listener(value));\n }\n };\n const add = (...newItems) => {\n internalLogger.debug('Adding metas\\n', newItems);\n items.push(...newItems);\n notifyListeners();\n };\n const remove = (...itemsToRemove) => {\n internalLogger.debug('Removing metas\\n', itemsToRemove);\n items = items.filter((currentItem) => !itemsToRemove.includes(currentItem));\n notifyListeners();\n };\n const addListener = (listener) => {\n internalLogger.debug('Adding metas listener\\n', listener);\n listeners.push(listener);\n };\n const removeListener = (listener) => {\n internalLogger.debug('Removing metas listener\\n', listener);\n listeners = listeners.filter((currentListener) => currentListener !== listener);\n };\n return {\n add,\n remove,\n addListener,\n removeListener,\n get value() {\n return getValue();\n },\n };\n}\n//# sourceMappingURL=initialize.js.map","export function initializeInstrumentations(unpatchedConsole, internalLogger, config, metas, transports, api) {\n internalLogger.debug('Initializing instrumentations');\n const instrumentations = [];\n const add = (...newInstrumentations) => {\n internalLogger.debug('Adding instrumentations');\n newInstrumentations.forEach((newInstrumentation) => {\n internalLogger.debug(`Adding \"${newInstrumentation.name}\" instrumentation`);\n const exists = instrumentations.some((existingInstrumentation) => existingInstrumentation.name === newInstrumentation.name);\n if (exists) {\n internalLogger.warn(`Instrumentation ${newInstrumentation.name} is already added`);\n return;\n }\n newInstrumentation.unpatchedConsole = unpatchedConsole;\n newInstrumentation.internalLogger = internalLogger;\n newInstrumentation.config = config;\n newInstrumentation.metas = metas;\n newInstrumentation.transports = transports;\n newInstrumentation.api = api;\n instrumentations.push(newInstrumentation);\n newInstrumentation.initialize();\n });\n };\n const remove = (...instrumentationsToRemove) => {\n internalLogger.debug('Removing instrumentations');\n instrumentationsToRemove.forEach((instrumentationToRemove) => {\n var _a, _b;\n internalLogger.debug(`Removing \"${instrumentationToRemove.name}\" instrumentation`);\n const existingInstrumentationIndex = instrumentations.reduce((acc, existingInstrumentation, existingTransportIndex) => {\n if (acc === null && existingInstrumentation.name === instrumentationToRemove.name) {\n return existingTransportIndex;\n }\n return null;\n }, null);\n if (!existingInstrumentationIndex) {\n internalLogger.warn(`Instrumentation \"${instrumentationToRemove.name}\" is not added`);\n return;\n }\n (_b = (_a = instrumentations[existingInstrumentationIndex]).destroy) === null || _b === void 0 ? void 0 : _b.call(_a);\n instrumentations.splice(existingInstrumentationIndex, 1);\n });\n };\n return {\n add,\n get instrumentations() {\n return [...instrumentations];\n },\n remove,\n };\n}\n//# sourceMappingURL=initialize.js.map","import { getBundleId } from '../utils/sourceMaps';\nimport { VERSION } from '../version';\nexport function registerInitialMetas(faro) {\n var _a, _b;\n const initial = {\n sdk: {\n version: VERSION,\n },\n app: {\n bundleId: faro.config.app.name && getBundleId(faro.config.app.name),\n },\n };\n const session = (_a = faro.config.sessionTracking) === null || _a === void 0 ? void 0 : _a.session;\n if (session) {\n faro.api.setSession(session);\n }\n if (faro.config.app) {\n initial.app = Object.assign(Object.assign({}, faro.config.app), initial.app);\n }\n if (faro.config.user) {\n initial.user = faro.config.user;\n }\n if (faro.config.view) {\n initial.view = faro.config.view;\n }\n faro.metas.add(initial, ...((_b = faro.config.metas) !== null && _b !== void 0 ? _b : []));\n}\n//# sourceMappingURL=registerInitial.js.map","import { globalObject } from '../globalObject';\nexport function getBundleId(appName) {\n return globalObject === null || globalObject === void 0 ? void 0 : globalObject[`__faroBundleId_${appName}`];\n}\n//# sourceMappingURL=sourceMaps.js.map","export function registerInitialTransports(faro) {\n faro.transports.add(...faro.config.transports);\n faro.transports.addBeforeSendHooks(faro.config.beforeSend);\n faro.transports.addIgnoreErrorsPatterns(faro.config.ignoreErrors);\n}\n//# sourceMappingURL=registerInitial.js.map","export function registerInitialInstrumentations(faro) {\n faro.instrumentations.add(...faro.config.instrumentations);\n}\n//# sourceMappingURL=registerInitial.js.map","export const defaultGlobalObjectKey = 'faro';\nexport const defaultBatchingConfig = {\n enabled: true,\n sendTimeout: 250,\n itemLimit: 50,\n};\n//# sourceMappingURL=const.js.map","export const defaultEventDomain = 'browser';\n//# sourceMappingURL=consts.js.map","export const newLineString = '\\n';\nexport const evalString = 'eval';\nexport const unknownSymbolString = '?';\nexport const atString = '@';\nexport const webkitLineRegex = /^\\s*at (?:(.*\\).*?|.*?) ?\\((?:address at )?)?((?:file|https?|blob|chrome-extension|address|native|eval|webpack||[-a-z]+:|.*bundle|\\/)?.*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\nexport const webkitEvalRegex = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\nexport const webkitEvalString = 'eval';\nexport const webkitAddressAtString = 'address at ';\nexport const webkitAddressAtStringLength = webkitAddressAtString.length;\nexport const firefoxLineRegex = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:file|https?|blob|chrome|webpack|resource|moz-extension|safari-extension|safari-web-extension|capacitor)?:\\/.*?|\\[native code]|[^@]*(?:bundle|\\d+\\.js)|\\/[\\w\\-. /=]+)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nexport const firefoxEvalRegex = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\nexport const firefoxEvalString = ' > eval';\nexport const safariExtensionString = 'safari-extension';\nexport const safariWebExtensionString = 'safari-web-extension';\nexport const reactMinifiedRegex = /Minified React error #\\d+;/i;\n//# sourceMappingURL=const.js.map","import { unknownSymbolString } from './const';\nexport function buildStackFrame(filename, func, lineno, colno) {\n const stackFrame = {\n filename: filename || document.location.href,\n function: func || unknownSymbolString,\n };\n if (lineno !== undefined) {\n stackFrame.lineno = lineno;\n }\n if (colno !== undefined) {\n stackFrame.colno = colno;\n }\n return stackFrame;\n}\n//# sourceMappingURL=buildStackFrame.js.map","import { atString, safariExtensionString, safariWebExtensionString } from './const';\nexport function getDataFromSafariExtensions(func, filename) {\n const isSafariExtension = func === null || func === void 0 ? void 0 : func.includes(safariExtensionString);\n const isSafariWebExtension = !isSafariExtension && (func === null || func === void 0 ? void 0 : func.includes(safariWebExtensionString));\n if (!isSafariExtension && !isSafariWebExtension) {\n return [func, filename];\n }\n return [\n (func === null || func === void 0 ? void 0 : func.includes(atString)) ? func.split(atString)[0] : func,\n isSafariExtension ? `${safariExtensionString}:${filename}` : `${safariWebExtensionString}:${filename}`,\n ];\n}\n//# sourceMappingURL=getDataFromSafariExtensions.js.map","import { isNumber } from '@grafana/faro-core';\nimport { buildStackFrame } from './buildStackFrame';\nimport { evalString, firefoxEvalRegex, firefoxEvalString, firefoxLineRegex, newLineString, reactMinifiedRegex, webkitAddressAtString, webkitAddressAtStringLength, webkitEvalRegex, webkitEvalString, webkitLineRegex, } from './const';\nimport { getDataFromSafariExtensions } from './getDataFromSafariExtensions';\nexport function getStackFramesFromError(error) {\n let lines = [];\n if (error.stacktrace) {\n lines = error.stacktrace.split(newLineString).filter((_line, idx) => idx % 2 === 0);\n }\n else if (error.stack) {\n lines = error.stack.split(newLineString);\n }\n const stackFrames = lines.reduce((acc, line, idx) => {\n let parts;\n let func;\n let filename;\n let lineno;\n let colno;\n if ((parts = webkitLineRegex.exec(line))) {\n func = parts[1];\n filename = parts[2];\n lineno = parts[3];\n colno = parts[4];\n if (filename === null || filename === void 0 ? void 0 : filename.startsWith(webkitEvalString)) {\n const submatch = webkitEvalRegex.exec(filename);\n if (submatch) {\n filename = submatch[1];\n lineno = submatch[2];\n colno = submatch[3];\n }\n }\n filename = (filename === null || filename === void 0 ? void 0 : filename.startsWith(webkitAddressAtString))\n ? filename.substring(webkitAddressAtStringLength)\n : filename;\n [func, filename] = getDataFromSafariExtensions(func, filename);\n }\n else if ((parts = firefoxLineRegex.exec(line))) {\n func = parts[1];\n filename = parts[3];\n lineno = parts[4];\n colno = parts[5];\n if (!!filename && filename.includes(firefoxEvalString)) {\n const submatch = firefoxEvalRegex.exec(filename);\n if (submatch) {\n func = func || evalString;\n filename = submatch[1];\n lineno = submatch[2];\n }\n }\n else if (idx === 0 && !colno && isNumber(error.columnNumber)) {\n colno = String(error.columnNumber + 1);\n }\n [func, filename] = getDataFromSafariExtensions(func, filename);\n }\n if (filename || func) {\n acc.push(buildStackFrame(filename, func, lineno ? Number(lineno) : undefined, colno ? Number(colno) : undefined));\n }\n return acc;\n }, []);\n if (reactMinifiedRegex.test(error.message)) {\n return stackFrames.slice(1);\n }\n return stackFrames;\n}\n//# sourceMappingURL=getStackFramesFromError.js.map","import { getStackFramesFromError } from './getStackFramesFromError';\nexport function parseStacktrace(error) {\n return {\n frames: getStackFramesFromError(error),\n };\n}\n//# sourceMappingURL=parseStacktrace.js.map","export const STORAGE_KEY = 'com.grafana.faro.session';\nexport const SESSION_EXPIRATION_TIME = 4 * 60 * 60 * 1000; // hrs\nexport const SESSION_INACTIVITY_TIME = 15 * 60 * 1000; // minutes\nexport const STORAGE_UPDATE_DELAY = 1 * 1000; // seconds\n/**\n * @deprecated MAX_SESSION_PERSISTENCE_TIME_BUFFER is not used anymore. The constant will be removed in the future\n */\nexport const MAX_SESSION_PERSISTENCE_TIME_BUFFER = 1 * 60 * 1000;\nexport const MAX_SESSION_PERSISTENCE_TIME = SESSION_INACTIVITY_TIME;\nexport const defaultSessionTrackingConfig = {\n enabled: true,\n persistent: false,\n maxSessionPersistenceTime: MAX_SESSION_PERSISTENCE_TIME,\n};\n//# sourceMappingURL=sessionConstants.js.map","export const unknownString = 'unknown';\n//# sourceMappingURL=consts.js.map","import { browserMeta } from './browser';\nimport { pageMeta } from './page';\nexport const defaultMetas = [browserMeta, pageMeta];\n//# sourceMappingURL=const.js.map","import { UAParser } from 'ua-parser-js';\nimport { unknownString } from '@grafana/faro-core';\nexport const browserMeta = () => {\n const parser = new UAParser();\n const { name, version } = parser.getBrowser();\n const { name: osName, version: osVersion } = parser.getOS();\n const userAgent = parser.getUA();\n const language = navigator.language;\n const mobile = navigator.userAgent.includes('Mobi');\n const brands = getBrands();\n return {\n browser: {\n name: name !== null && name !== void 0 ? name : unknownString,\n version: version !== null && version !== void 0 ? version : unknownString,\n os: `${osName !== null && osName !== void 0 ? osName : unknownString} ${osVersion !== null && osVersion !== void 0 ? osVersion : unknownString}`,\n userAgent: userAgent !== null && userAgent !== void 0 ? userAgent : unknownString,\n language: language !== null && language !== void 0 ? language : unknownString,\n mobile,\n brands: brands !== null && brands !== void 0 ? brands : unknownString,\n viewportWidth: `${window.innerWidth}`,\n viewportHeight: `${window.innerHeight}`,\n },\n };\n function getBrands() {\n if (!name || !version) {\n return undefined;\n }\n if ('userAgentData' in navigator && navigator.userAgentData) {\n // userAgentData in experimental (only Chrome supports it) thus TS does not ship the respective type declarations\n return navigator.userAgentData.brands;\n }\n return undefined;\n }\n};\n//# sourceMappingURL=meta.js.map","export const pageMeta = () => ({\n page: {\n url: location.href,\n },\n});\n//# sourceMappingURL=meta.js.map","export const k6Meta = () => {\n const k6Properties = window.k6;\n return {\n k6: Object.assign({ \n // we only add the k6 meta if Faro is running inside a k6 environment, so this is always true\n isK6Browser: true }, ((k6Properties === null || k6Properties === void 0 ? void 0 : k6Properties.testRunId) && { testRunId: k6Properties === null || k6Properties === void 0 ? void 0 : k6Properties.testRunId })),\n };\n};\n//# sourceMappingURL=meta.js.map","import { defaultInternalLogger } from '../internalLogger';\nimport { defaultUnpatchedConsole } from '../unpatchedConsole';\nexport class BaseExtension {\n constructor() {\n this.unpatchedConsole = defaultUnpatchedConsole;\n this.internalLogger = defaultInternalLogger;\n this.config = {};\n this.metas = {};\n }\n logDebug(...args) {\n this.internalLogger.debug(`${this.name}\\n`, ...args);\n }\n logInfo(...args) {\n this.internalLogger.info(`${this.name}\\n`, ...args);\n }\n logWarn(...args) {\n this.internalLogger.warn(`${this.name}\\n`, ...args);\n }\n logError(...args) {\n this.internalLogger.error(`${this.name}\\n`, ...args);\n }\n}\n//# sourceMappingURL=baseExtension.js.map","import { BaseExtension } from '../extensions';\nexport class BaseTransport extends BaseExtension {\n isBatched() {\n return false;\n }\n getIgnoreUrls() {\n return [];\n }\n}\n//# sourceMappingURL=base.js.map","import { TransportItemType, transportItemTypeToBodyKey } from './const';\nexport function mergeResourceSpans(traces, resourceSpans) {\n var _a, _b;\n if (resourceSpans === undefined) {\n return traces;\n }\n if (traces === undefined) {\n return {\n resourceSpans,\n };\n }\n const currentResource = (_a = traces.resourceSpans) === null || _a === void 0 ? void 0 : _a[0];\n if (currentResource === undefined) {\n return traces;\n }\n const currentSpans = (currentResource === null || currentResource === void 0 ? void 0 : currentResource.scopeSpans) || [];\n const newSpans = ((_b = resourceSpans === null || resourceSpans === void 0 ? void 0 : resourceSpans[0]) === null || _b === void 0 ? void 0 : _b.scopeSpans) || [];\n return Object.assign(Object.assign({}, traces), { resourceSpans: [\n Object.assign(Object.assign({}, currentResource), { scopeSpans: [...currentSpans, ...newSpans] }),\n ] });\n}\nexport function getTransportBody(item) {\n let body = {\n meta: {},\n };\n if (item[0] !== undefined) {\n body.meta = item[0].meta;\n }\n item.forEach((currentItem) => {\n switch (currentItem.type) {\n case TransportItemType.LOG:\n case TransportItemType.EVENT:\n case TransportItemType.EXCEPTION:\n case TransportItemType.MEASUREMENT:\n const bk = transportItemTypeToBodyKey[currentItem.type];\n const signals = body[bk];\n body = Object.assign(Object.assign({}, body), { [bk]: signals === undefined ? [currentItem.payload] : [...signals, currentItem.payload] });\n break;\n case TransportItemType.TRACE:\n body = Object.assign(Object.assign({}, body), { traces: mergeResourceSpans(body.traces, currentItem.payload.resourceSpans) });\n break;\n }\n });\n return body;\n}\n//# sourceMappingURL=utils.js.map","/**\n * Tail based throttle which caches the args of the last call and updates\n */\nexport function throttle(callback, delay) {\n let pause = false;\n let lastPending;\n const timeoutBehavior = () => {\n if (lastPending == null) {\n pause = false;\n return;\n }\n callback(...lastPending);\n lastPending = null;\n setTimeout(timeoutBehavior, delay);\n };\n return (...args) => {\n if (pause) {\n lastPending = args;\n return;\n }\n callback(...args);\n pause = true;\n setTimeout(timeoutBehavior, delay);\n };\n}\n//# sourceMappingURL=throttle.js.map","import { faro } from '@grafana/faro-core';\nexport const webStorageType = {\n session: 'sessionStorage',\n local: 'localStorage',\n};\n// TODO: remove default storage type from all function\n/**\n * Check if selected web storage mechanism is available.\n * @param type storage mechanism to test availability for.\n * @returns\n */\nexport function isWebStorageAvailable(type) {\n var _a;\n try {\n let storage;\n storage = window[type];\n const testItem = '__faro_storage_test__';\n storage.setItem(testItem, testItem);\n storage.removeItem(testItem);\n return true;\n }\n catch (error) {\n // the above can throw\n (_a = faro.internalLogger) === null || _a === void 0 ? void 0 : _a.info(`Web storage of type ${type} is not available. Reason: ${error}`);\n return false;\n }\n}\n/**\n * Get item from SessionStorage or LocalStorage.\n * @param key: the item key.\n * @param webStorageMechanism: wether the item shall be received form local storage or session storage. Defaults to local storage.\n */\nexport function getItem(key, webStorageMechanism) {\n if (isWebStorageTypeAvailable(webStorageMechanism)) {\n return window[webStorageMechanism].getItem(key);\n }\n return null;\n}\n/**\n * Store item in SessionStorage or LocalStorage.\n * @param key: the item key.\n * @param value: the item data.\n * @param webStorageMechanism: wether the item shall be received form local storage or session storage. Defaults to local storage.\n */\nexport function setItem(key, value, webStorageMechanism) {\n if (isWebStorageTypeAvailable(webStorageMechanism)) {\n try {\n window[webStorageMechanism].setItem(key, value);\n }\n catch (error) {\n // do nothing\n }\n }\n}\n/**\n * Remove item from SessionStorage or LocalStorage.\n * @param key: the item key.\n * @param webStorageMechanism: wether the item shall be received form local storage or session storage. Defaults to local storage.\n */\nexport function removeItem(key, webStorageMechanism) {\n if (isWebStorageTypeAvailable(webStorageMechanism)) {\n window[webStorageMechanism].removeItem(key);\n }\n}\nexport const isLocalStorageAvailable = isWebStorageAvailable(webStorageType.local);\nexport const isSessionStorageAvailable = isWebStorageAvailable(webStorageType.session);\nfunction isWebStorageTypeAvailable(webStorageMechanism) {\n if (webStorageMechanism === webStorageType.local) {\n return isLocalStorageAvailable;\n }\n if (webStorageMechanism === webStorageType.session) {\n return isSessionStorageAvailable;\n }\n return false;\n}\n//# sourceMappingURL=webStorage.js.map","import { faro } from '@grafana/faro-core';\nexport function isSampled() {\n var _a, _b, _c;\n const sendAllSignals = 1;\n const sessionTracking = faro.config.sessionTracking;\n let samplingRate = (_c = (_b = (_a = sessionTracking === null || sessionTracking === void 0 ? void 0 : sessionTracking.sampler) === null || _a === void 0 ? void 0 : _a.call(sessionTracking, { metas: faro.metas.value })) !== null && _b !== void 0 ? _b : sessionTracking === null || sessionTracking === void 0 ? void 0 : sessionTracking.samplingRate) !== null && _c !== void 0 ? _c : sendAllSignals;\n if (typeof samplingRate !== 'number') {\n const sendNoSignals = 0;\n samplingRate = sendNoSignals;\n }\n return Math.random() < samplingRate;\n}\n//# sourceMappingURL=sampling.js.map","const alphabet = 'abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ0123456789';\nexport function genShortID(length = 10) {\n return Array.from(Array(length))\n .map(() => alphabet[Math.floor(Math.random() * alphabet.length)])\n .join('');\n}\n//# sourceMappingURL=shortId.js.map","import { dateNow, faro, genShortID } from '@grafana/faro-core';\nimport { isLocalStorageAvailable, isSessionStorageAvailable } from '../../../utils';\nimport { isSampled } from './sampling';\nimport { SESSION_EXPIRATION_TIME, SESSION_INACTIVITY_TIME } from './sessionConstants';\nexport function createUserSessionObject({ sessionId, started, lastActivity, isSampled = true, } = {}) {\n var _a, _b;\n const now = dateNow();\n const generateSessionId = (_b = (_a = faro.config) === null || _a === void 0 ? void 0 : _a.sessionTracking) === null || _b === void 0 ? void 0 : _b.generateSessionId;\n if (sessionId == null) {\n sessionId = typeof generateSessionId === 'function' ? generateSessionId() : genShortID();\n }\n return {\n sessionId,\n lastActivity: lastActivity !== null && lastActivity !== void 0 ? lastActivity : now,\n started: started !== null && started !== void 0 ? started : now,\n isSampled: isSampled,\n };\n}\nexport function isUserSessionValid(session) {\n if (session == null) {\n return false;\n }\n const now = dateNow();\n const lifetimeValid = now - session.started < SESSION_EXPIRATION_TIME;\n if (!lifetimeValid) {\n return false;\n }\n const inactivityPeriodValid = now - session.lastActivity < SESSION_INACTIVITY_TIME;\n return inactivityPeriodValid;\n}\nexport function getUserSessionUpdater({ fetchUserSession, storeUserSession, }) {\n return function updateSession({ forceSessionExtend } = { forceSessionExtend: false }) {\n var _a, _b, _c;\n if (!fetchUserSession || !storeUserSession) {\n return;\n }\n const sessionTrackingConfig = faro.config.sessionTracking;\n const isPersistentSessions = sessionTrackingConfig === null || sessionTrackingConfig === void 0 ? void 0 : sessionTrackingConfig.persistent;\n if ((isPersistentSessions && !isLocalStorageAvailable) || (!isPersistentSessions && !isSessionStorageAvailable)) {\n return;\n }\n const sessionFromStorage = fetchUserSession();\n if (forceSessionExtend === false && isUserSessionValid(sessionFromStorage)) {\n storeUserSession(Object.assign(Object.assign({}, sessionFromStorage), { lastActivity: dateNow() }));\n }\n else {\n let newSession = addSessionMetadataToNextSession(createUserSessionObject({ isSampled: isSampled() }), sessionFromStorage);\n storeUserSession(newSession);\n (_a = faro.api) === null || _a === void 0 ? void 0 : _a.setSession(newSession.sessionMeta);\n (_b = sessionTrackingConfig === null || sessionTrackingConfig === void 0 ? void 0 : sessionTrackingConfig.onSessionChange) === null || _b === void 0 ? void 0 : _b.call(sessionTrackingConfig, (_c = sessionFromStorage === null || sessionFromStorage === void 0 ? void 0 : sessionFromStorage.sessionMeta) !== null && _c !== void 0 ? _c : null, newSession.sessionMeta);\n }\n };\n}\nexport function addSessionMetadataToNextSession(newSession, previousSession) {\n var _a, _b, _c, _d;\n const sessionWithMeta = Object.assign(Object.assign({}, newSession), { sessionMeta: {\n id: newSession.sessionId,\n attributes: Object.assign(Object.assign(Object.assign(Object.assign({}, (_b = (_a = faro.config.sessionTracking) === null || _a === void 0 ? void 0 : _a.session) === null || _b === void 0 ? void 0 : _b.attributes), ((_d = (_c = faro.metas.value.session) === null || _c === void 0 ? void 0 : _c.attributes) !== null && _d !== void 0 ? _d : {})), (previousSession != null ? { previousSession: previousSession.sessionId } : {})), { isSampled: newSession.isSampled.toString() }),\n } });\n return sessionWithMeta;\n}\n//# sourceMappingURL=sessionManagerUtils.js.map","import { faro } from '@grafana/faro-core';\nimport { throttle } from '../../../utils';\nimport { getItem, removeItem, setItem, webStorageType } from '../../../utils/webStorage';\nimport { isSampled } from './sampling';\nimport { STORAGE_KEY, STORAGE_UPDATE_DELAY } from './sessionConstants';\nimport { addSessionMetadataToNextSession, createUserSessionObject, getUserSessionUpdater } from './sessionManagerUtils';\nexport class PersistentSessionsManager {\n constructor() {\n this.updateSession = throttle(() => this.updateUserSession(), STORAGE_UPDATE_DELAY);\n this.updateUserSession = getUserSessionUpdater({\n fetchUserSession: PersistentSessionsManager.fetchUserSession,\n storeUserSession: PersistentSessionsManager.storeUserSession,\n });\n this.init();\n }\n static removeUserSession() {\n removeItem(STORAGE_KEY, PersistentSessionsManager.storageTypeLocal);\n }\n static storeUserSession(session) {\n setItem(STORAGE_KEY, JSON.stringify(session), PersistentSessionsManager.storageTypeLocal);\n }\n static fetchUserSession() {\n const storedSession = getItem(STORAGE_KEY, PersistentSessionsManager.storageTypeLocal);\n if (storedSession) {\n return JSON.parse(storedSession);\n }\n return null;\n }\n init() {\n document.addEventListener('visibilitychange', () => {\n if (document.visibilityState === 'visible') {\n this.updateSession();\n }\n });\n // Users can call the setSession() method, so we need to sync this with the local storage session\n faro.metas.addListener(function syncSessionIfChangedExternally(meta) {\n const session = meta.session;\n const sessionFromLocalStorage = PersistentSessionsManager.fetchUserSession();\n if (session && session.id !== (sessionFromLocalStorage === null || sessionFromLocalStorage === void 0 ? void 0 : sessionFromLocalStorage.sessionId)) {\n const userSession = addSessionMetadataToNextSession(createUserSessionObject({ sessionId: session.id, isSampled: isSampled() }), sessionFromLocalStorage);\n PersistentSessionsManager.storeUserSession(userSession);\n faro.api.setSession(userSession.sessionMeta);\n }\n });\n }\n}\nPersistentSessionsManager.storageTypeLocal = webStorageType.local;\n//# sourceMappingURL=PersistentSessionsManager.js.map","import { faro } from '@grafana/faro-core';\nimport { throttle } from '../../../utils';\nimport { getItem, removeItem, setItem, webStorageType } from '../../../utils/webStorage';\nimport { isSampled } from './sampling';\nimport { STORAGE_KEY, STORAGE_UPDATE_DELAY } from './sessionConstants';\nimport { addSessionMetadataToNextSession, createUserSessionObject, getUserSessionUpdater } from './sessionManagerUtils';\nexport class VolatileSessionsManager {\n constructor() {\n this.updateSession = throttle(() => this.updateUserSession(), STORAGE_UPDATE_DELAY);\n this.updateUserSession = getUserSessionUpdater({\n fetchUserSession: VolatileSessionsManager.fetchUserSession,\n storeUserSession: VolatileSessionsManager.storeUserSession,\n });\n this.init();\n }\n static removeUserSession() {\n removeItem(STORAGE_KEY, VolatileSessionsManager.storageTypeSession);\n }\n static storeUserSession(session) {\n setItem(STORAGE_KEY, JSON.stringify(session), VolatileSessionsManager.storageTypeSession);\n }\n static fetchUserSession() {\n const storedSession = getItem(STORAGE_KEY, VolatileSessionsManager.storageTypeSession);\n if (storedSession) {\n return JSON.parse(storedSession);\n }\n return null;\n }\n init() {\n document.addEventListener('visibilitychange', () => {\n if (document.visibilityState === 'visible') {\n this.updateSession();\n }\n });\n // Users can call the setSession() method, so we need to sync this with the local storage session\n faro.metas.addListener(function syncSessionIfChangedExternally(meta) {\n const session = meta.session;\n const sessionFromSessionStorage = VolatileSessionsManager.fetchUserSession();\n if (session && session.id !== (sessionFromSessionStorage === null || sessionFromSessionStorage === void 0 ? void 0 : sessionFromSessionStorage.sessionId)) {\n const userSession = addSessionMetadataToNextSession(createUserSessionObject({ sessionId: session.id, isSampled: isSampled() }), sessionFromSessionStorage);\n VolatileSessionsManager.storeUserSession(userSession);\n faro.api.setSession(userSession.sessionMeta);\n }\n });\n }\n}\nVolatileSessionsManager.storageTypeSession = webStorageType.session;\n//# sourceMappingURL=VolatileSessionManager.js.map","import { PersistentSessionsManager } from './PersistentSessionsManager';\nimport { VolatileSessionsManager } from './VolatileSessionManager';\nexport function getSessionManagerByConfig(sessionTrackingConfig) {\n return (sessionTrackingConfig === null || sessionTrackingConfig === void 0 ? void 0 : sessionTrackingConfig.persistent) ? PersistentSessionsManager : VolatileSessionsManager;\n}\n//# sourceMappingURL=getSessionManagerByConfig.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { BaseTransport, createPromiseBuffer, getTransportBody, noop, VERSION, } from '@grafana/faro-core';\nimport { getSessionManagerByConfig } from '../../instrumentations/session/sessionManager';\nimport { getUserSessionUpdater } from '../../instrumentations/session/sessionManager/sessionManagerUtils';\nconst DEFAULT_BUFFER_SIZE = 30;\nconst DEFAULT_CONCURRENCY = 5; // chrome supports 10 total, firefox 17\nconst DEFAULT_RATE_LIMIT_BACKOFF_MS = 5000;\nconst BEACON_BODY_SIZE_LIMIT = 60000;\nconst TOO_MANY_REQUESTS = 429;\nconst ACCEPTED = 202;\nexport class FetchTransport extends BaseTransport {\n constructor(options) {\n var _a, _b, _c, _d;\n super();\n this.options = options;\n this.name = '@grafana/faro-web-sdk:transport-fetch';\n this.version = VERSION;\n this.disabledUntil = new Date();\n this.rateLimitBackoffMs = (_a = options.defaultRateLimitBackoffMs) !== null && _a !== void 0 ? _a : DEFAULT_RATE_LIMIT_BACKOFF_MS;\n this.getNow = (_b = options.getNow) !== null && _b !== void 0 ? _b : (() => Date.now());\n this.promiseBuffer = createPromiseBuffer({\n size: (_c = options.bufferSize) !== null && _c !== void 0 ? _c : DEFAULT_BUFFER_SIZE,\n concurrency: (_d = options.concurrency) !== null && _d !== void 0 ? _d : DEFAULT_CONCURRENCY,\n });\n }\n send(items) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n if (this.disabledUntil > new Date(this.getNow())) {\n this.logWarn(`Dropping transport item due to too many requests. Backoff until ${this.disabledUntil}`);\n return Promise.resolve();\n }\n yield this.promiseBuffer.add(() => {\n const body = JSON.stringify(getTransportBody(items));\n const { url, requestOptions, apiKey } = this.options;\n const _a = requestOptions !== null && requestOptions !== void 0 ? requestOptions : {}, { headers } = _a, restOfRequestOptions = __rest(_a, [\"headers\"]);\n let sessionId;\n const sessionMeta = this.metas.value.session;\n if (sessionMeta != null) {\n sessionId = sessionMeta.id;\n }\n return fetch(url, Object.assign({ method: 'POST', headers: Object.assign(Object.assign(Object.assign({ 'Content-Type': 'application/json' }, (headers !== null && headers !== void 0 ? headers : {})), (apiKey ? { 'x-api-key': apiKey } : {})), (sessionId ? { 'x-faro-session-id': sessionId } : {})), body, keepalive: body.length <= BEACON_BODY_SIZE_LIMIT }, (restOfRequestOptions !== null && restOfRequestOptions !== void 0 ? restOfRequestOptions : {})))\n .then((response) => __awaiter(this, void 0, void 0, function* () {\n if (response.status === ACCEPTED) {\n const sessionExpired = response.headers.get('X-Faro-Session-Status') === 'invalid';\n if (sessionExpired) {\n this.extendFaroSession(this.config, this.logDebug);\n }\n }\n if (response.status === TOO_MANY_REQUESTS) {\n this.disabledUntil = this.getRetryAfterDate(response);\n this.logWarn(`Too many requests, backing off until ${this.disabledUntil}`);\n }\n // read the body so the connection can be closed\n response.text().catch(noop);\n return response;\n }))\n .catch((err) => {\n this.logError('Failed sending payload to the receiver\\n', JSON.parse(body), err);\n });\n });\n }\n catch (err) {\n this.logError(err);\n }\n });\n }\n getIgnoreUrls() {\n var _a;\n return [this.options.url].concat((_a = this.config.ignoreUrls) !== null && _a !== void 0 ? _a : []);\n }\n isBatched() {\n return true;\n }\n getRetryAfterDate(response) {\n const now = this.getNow();\n const retryAfterHeader = response.headers.get('Retry-After');\n if (retryAfterHeader) {\n const delay = Number(retryAfterHeader);\n if (!isNaN(delay)) {\n return new Date(delay * 1000 + now);\n }\n const date = Date.parse(retryAfterHeader);\n if (!isNaN(date)) {\n return new Date(date);\n }\n }\n return new Date(now + this.rateLimitBackoffMs);\n }\n extendFaroSession(config, logDebug) {\n const SessionExpiredString = `Session expired`;\n const sessionTrackingConfig = config.sessionTracking;\n if (sessionTrackingConfig === null || sessionTrackingConfig === void 0 ? void 0 : sessionTrackingConfig.enabled) {\n const { fetchUserSession, storeUserSession } = getSessionManagerByConfig(sessionTrackingConfig);\n getUserSessionUpdater({ fetchUserSession, storeUserSession })({ forceSessionExtend: true });\n logDebug(`${SessionExpiredString} created new session.`);\n }\n else {\n logDebug(`${SessionExpiredString}.`);\n }\n }\n}\n//# sourceMappingURL=transport.js.map","export function createPromiseBuffer(options) {\n const { size, concurrency } = options;\n const buffer = []; // pending, not-yet-started tasks\n let inProgress = 0; // counter for tasks currently in progress\n const work = () => {\n // if there's space for a task and buffer is not empty,\n // take one task from buffer and run it\n if (inProgress < concurrency && buffer.length) {\n const { producer, resolve, reject } = buffer.shift();\n inProgress++;\n producer().then((result) => {\n inProgress--;\n work();\n resolve(result);\n }, (reason) => {\n inProgress--;\n work();\n reject(reason);\n });\n }\n };\n const add = (promiseProducer) => {\n if (buffer.length + inProgress >= size) {\n throw new Error('Task buffer full');\n }\n return new Promise((resolve, reject) => {\n buffer.push({\n producer: promiseProducer,\n resolve,\n reject,\n });\n work();\n });\n };\n return {\n add,\n };\n}\n//# sourceMappingURL=promiseBuffer.js.map","import { BaseExtension } from '../extensions';\nexport class BaseInstrumentation extends BaseExtension {\n constructor() {\n super(...arguments);\n this.api = {};\n this.transports = {};\n }\n}\n//# sourceMappingURL=base.js.map","export const primitiveUnhandledValue = 'Non-Error promise rejection captured with value:';\nexport const primitiveUnhandledType = 'UnhandledRejection';\nexport const domErrorType = 'DOMError';\nexport const domExceptionType = 'DOMException';\nexport const objectEventValue = 'Non-Error exception captured with keys:';\nexport const unknownSymbolString = '?';\nexport const valueTypeRegex = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;\n//# sourceMappingURL=const.js.map","import { isDomError, isDomException, isError, isErrorEvent, isEvent, isObject } from '@grafana/faro-core';\nimport { domErrorType, domExceptionType, objectEventValue } from './const';\nimport { getStackFramesFromError } from './stackFrames';\nexport function getErrorDetails(evt) {\n let value;\n let type;\n let stackFrames = [];\n let isDomErrorRes;\n let isEventRes;\n if (isErrorEvent(evt) && evt.error) {\n value = evt.error.message;\n type = evt.error.name;\n stackFrames = getStackFramesFromError(evt.error);\n }\n else if ((isDomErrorRes = isDomError(evt)) || isDomException(evt)) {\n const { name, message } = evt;\n type = name !== null && name !== void 0 ? name : (isDomErrorRes ? domErrorType : domExceptionType);\n value = message ? `${type}: ${message}` : type;\n }\n else if (isError(evt)) {\n value = evt.message;\n stackFrames = getStackFramesFromError(evt);\n }\n else if (isObject(evt) || (isEventRes = isEvent(evt))) {\n type = isEventRes ? evt.constructor.name : undefined;\n value = `${objectEventValue} ${Object.keys(evt)}`;\n }\n return [value, type, stackFrames];\n}\n//# sourceMappingURL=getErrorDetails.js.map","import { isString } from '@grafana/faro-core';\nimport { unknownSymbolString } from './const';\nimport { getErrorDetails } from './getErrorDetails';\nimport { getValueAndTypeFromMessage } from './getValueAndTypeFromMessage';\nimport { buildStackFrame } from './stackFrames';\nexport function registerOnerror(api) {\n const oldOnerror = window.onerror;\n window.onerror = (...args) => {\n try {\n const [evt, source, lineno, colno, error] = args;\n let value;\n let type;\n let stackFrames = [];\n const eventIsString = isString(evt);\n const initialStackFrame = buildStackFrame(source, unknownSymbolString, lineno, colno);\n if (error || !eventIsString) {\n [value, type, stackFrames] = getErrorDetails((error !== null && error !== void 0 ? error : evt));\n if (stackFrames.length === 0) {\n stackFrames = [initialStackFrame];\n }\n }\n else if (eventIsString) {\n [value, type] = getValueAndTypeFromMessage(evt);\n stackFrames = [initialStackFrame];\n }\n if (value) {\n api.pushError(new Error(value), { type, stackFrames });\n }\n }\n finally {\n oldOnerror === null || oldOnerror === void 0 ? void 0 : oldOnerror.apply(window, args);\n }\n };\n}\n//# sourceMappingURL=registerOnerror.js.map","import { defaultExceptionType } from '@grafana/faro-core';\nimport { valueTypeRegex } from './const';\nexport function getValueAndTypeFromMessage(message) {\n var _a, _b;\n const groups = message.match(valueTypeRegex);\n const type = (_a = groups === null || groups === void 0 ? void 0 : groups[1]) !== null && _a !== void 0 ? _a : defaultExceptionType;\n const value = (_b = groups === null || groups === void 0 ? void 0 : groups[2]) !== null && _b !== void 0 ? _b : message;\n return [value, type];\n}\n//# sourceMappingURL=getValueAndTypeFromMessage.js.map","import { isPrimitive } from '@grafana/faro-core';\nimport { primitiveUnhandledType, primitiveUnhandledValue } from './const';\nimport { getErrorDetails } from './getErrorDetails';\nexport function registerOnunhandledrejection(api) {\n window.addEventListener('unhandledrejection', (evt) => {\n var _a, _b;\n let error = evt;\n if (error.reason) {\n error = evt.reason;\n }\n else if ((_a = evt.detail) === null || _a === void 0 ? void 0 : _a.reason) {\n error = (_b = evt.detail) === null || _b === void 0 ? void 0 : _b.reason;\n }\n let value;\n let type;\n let stackFrames = [];\n if (isPrimitive(error)) {\n value = `${primitiveUnhandledValue} ${String(error)}`;\n type = primitiveUnhandledType;\n }\n else {\n [value, type, stackFrames] = getErrorDetails(error);\n }\n if (value) {\n api.pushError(new Error(value), { type, stackFrames });\n }\n });\n}\n//# sourceMappingURL=registerOnunhandledrejection.js.map","import { BaseInstrumentation, VERSION } from '@grafana/faro-core';\nimport { registerOnerror } from './registerOnerror';\nimport { registerOnunhandledrejection } from './registerOnunhandledrejection';\nexport class ErrorsInstrumentation extends BaseInstrumentation {\n constructor() {\n super(...arguments);\n this.name = '@grafana/faro-web-sdk:instrumentation-errors';\n this.version = VERSION;\n }\n initialize() {\n this.logDebug('Initializing');\n registerOnerror(this.api);\n registerOnunhandledrejection(this.api);\n }\n}\n//# sourceMappingURL=instrumentation.js.map","var e,n,t,r,i,o=-1,a=function(e){addEventListener(\"pageshow\",(function(n){n.persisted&&(o=n.timeStamp,e(n))}),!0)},c=function(){var e=self.performance&&performance.getEntriesByType&&performance.getEntriesByType(\"navigation\")[0];if(e&&e.responseStart>0&&e.responseStart=0?r=\"back-forward-cache\":t&&(document.prerendering||u()>0?r=\"prerender\":document.wasDiscarded?r=\"restore\":t.type&&(r=t.type.replace(/_/g,\"-\")));return{name:e,value:void 0===n?-1:n,rating:\"good\",delta:0,entries:[],id:\"v4-\".concat(Date.now(),\"-\").concat(Math.floor(8999999999999*Math.random())+1e12),navigationType:r}},s=function(e,n,t){try{if(PerformanceObserver.supportedEntryTypes.includes(e)){var r=new PerformanceObserver((function(e){Promise.resolve().then((function(){n(e.getEntries())}))}));return r.observe(Object.assign({type:e,buffered:!0},t||{})),r}}catch(e){}},d=function(e,n,t,r){var i,o;return function(a){n.value>=0&&(a||r)&&((o=n.value-(i||0))||void 0===i)&&(i=n.value,n.delta=o,n.rating=function(e,n){return e>n[1]?\"poor\":e>n[0]?\"needs-improvement\":\"good\"}(n.value,t),e(n))}},l=function(e){requestAnimationFrame((function(){return requestAnimationFrame((function(){return e()}))}))},p=function(e){document.addEventListener(\"visibilitychange\",(function(){\"hidden\"===document.visibilityState&&e()}))},v=function(e){var n=!1;return function(){n||(e(),n=!0)}},m=-1,h=function(){return\"hidden\"!==document.visibilityState||document.prerendering?1/0:0},g=function(e){\"hidden\"===document.visibilityState&&m>-1&&(m=\"visibilitychange\"===e.type?e.timeStamp:0,T())},y=function(){addEventListener(\"visibilitychange\",g,!0),addEventListener(\"prerenderingchange\",g,!0)},T=function(){removeEventListener(\"visibilitychange\",g,!0),removeEventListener(\"prerenderingchange\",g,!0)},E=function(){return m<0&&(m=h(),y(),a((function(){setTimeout((function(){m=h(),y()}),0)}))),{get firstHiddenTime(){return m}}},C=function(e){document.prerendering?addEventListener(\"prerenderingchange\",(function(){return e()}),!0):e()},b=[1800,3e3],S=function(e,n){n=n||{},C((function(){var t,r=E(),i=f(\"FCP\"),o=s(\"paint\",(function(e){e.forEach((function(e){\"first-contentful-paint\"===e.name&&(o.disconnect(),e.startTimer.value&&(r.value=i,r.entries=o,t())},u=s(\"layout-shift\",c);u&&(t=d(e,r,L,n.reportAllChanges),p((function(){c(u.takeRecords()),t(!0)})),a((function(){i=0,r=f(\"CLS\",0),t=d(e,r,L,n.reportAllChanges),l((function(){return t()}))})),setTimeout(t,0))})))},A=0,I=1/0,P=0,M=function(e){e.forEach((function(e){e.interactionId&&(I=Math.min(I,e.interactionId),P=Math.max(P,e.interactionId),A=P?(P-I)/7+1:0)}))},k=function(){\"interactionCount\"in performance||e||(e=s(\"event\",M,{type:\"event\",buffered:!0,durationThreshold:0}))},F=[],D=new Map,x=0,R=function(){return(e?A:performance.interactionCount||0)-x},B=[],H=function(e){if(B.forEach((function(n){return n(e)})),e.interactionId||\"first-input\"===e.entryType){var n=F[F.length-1],t=D.get(e.interactionId);if(t||F.length<10||e.duration>n.latency){if(t)e.duration>t.latency?(t.entries=[e],t.latency=e.duration):e.duration===t.latency&&e.startTime===t.entries[0].startTime&&t.entries.push(e);else{var r={id:e.interactionId,latency:e.duration,entries:[e]};D.set(r.id,r),F.push(r)}F.sort((function(e,n){return n.latency-e.latency})),F.length>10&&F.splice(10).forEach((function(e){return D.delete(e.id)}))}}},q=function(e){var n=self.requestIdleCallback||self.setTimeout,t=-1;return e=v(e),\"hidden\"===document.visibilityState?e():(t=n(e),p(e)),t},O=[200,500],N=function(e,n){\"PerformanceEventTiming\"in self&&\"interactionId\"in PerformanceEventTiming.prototype&&(n=n||{},C((function(){var t;k();var r,i=f(\"INP\"),o=function(e){q((function(){e.forEach(H);var n,t=(n=Math.min(F.length-1,Math.floor(R()/50)),F[n]);t&&t.latency!==i.value&&(i.value=t.latency,i.entries=t.entries,r())}))},c=s(\"event\",o,{durationThreshold:null!==(t=n.durationThreshold)&&void 0!==t?t:40});r=d(e,i,O,n.reportAllChanges),c&&(c.observe({type:\"first-input\",buffered:!0}),p((function(){o(c.takeRecords()),r(!0)})),a((function(){x=0,F.length=0,D.clear(),i=f(\"INP\"),r=d(e,i,O,n.reportAllChanges)})))})))},j=[2500,4e3],_={},z=function(e,n){n=n||{},C((function(){var t,r=E(),i=f(\"LCP\"),o=function(e){n.reportAllChanges||(e=e.slice(-1)),e.forEach((function(e){e.startTime=0&&t1e12?new Date:performance.now())-e.timeStamp;\"pointerdown\"==e.type?function(e,n){var t=function(){V(e,n),i()},r=function(){i()},i=function(){removeEventListener(\"pointerup\",t,Q),removeEventListener(\"pointercancel\",r,Q)};addEventListener(\"pointerup\",t,Q),addEventListener(\"pointercancel\",r,Q)}(n,e):V(n,e)}},Y=function(e){[\"mousedown\",\"keydown\",\"touchstart\",\"pointerdown\"].forEach((function(n){return e(n,X,Q)}))},Z=[100,300],$=function(e,r){r=r||{},C((function(){var o,c=E(),u=f(\"FID\"),l=function(e){e.startTime {\n executor((metric) => {\n this.pushMeasurement({\n type: 'web-vitals',\n values: {\n [indicator]: metric.value,\n },\n });\n });\n });\n }\n}\nWebVitalsBasic.mapping = {\n cls: onCLS,\n fcp: onFCP,\n fid: onFID,\n inp: onINP,\n lcp: onLCP,\n ttfb: onTTFB,\n};\n//# sourceMappingURL=webVitalsBasic.js.map","var t,e,n,r=function(){var t=self.performance&&performance.getEntriesByType&&performance.getEntriesByType(\"navigation\")[0];if(t&&t.responseStart>0&&t.responseStart(e||100)-1)return n||i;if(n=n?i+\">\"+n:i,r.id)break;t=r.parentNode}}catch(t){}return n},c=-1,u=function(){return c},s=function(t){addEventListener(\"pageshow\",(function(e){e.persisted&&(c=e.timeStamp,t(e))}),!0)},f=function(){var t=r();return t&&t.activationStart||0},d=function(t,e){var n=r(),i=\"navigate\";u()>=0?i=\"back-forward-cache\":n&&(document.prerendering||f()>0?i=\"prerender\":document.wasDiscarded?i=\"restore\":n.type&&(i=n.type.replace(/_/g,\"-\")));return{name:t,value:void 0===e?-1:e,rating:\"good\",delta:0,entries:[],id:\"v4-\".concat(Date.now(),\"-\").concat(Math.floor(8999999999999*Math.random())+1e12),navigationType:i}},l=function(t,e,n){try{if(PerformanceObserver.supportedEntryTypes.includes(t)){var r=new PerformanceObserver((function(t){Promise.resolve().then((function(){e(t.getEntries())}))}));return r.observe(Object.assign({type:t,buffered:!0},n||{})),r}}catch(t){}},m=function(t,e,n,r){var i,a;return function(o){e.value>=0&&(o||r)&&((a=e.value-(i||0))||void 0===i)&&(i=e.value,e.delta=a,e.rating=function(t,e){return t>e[1]?\"poor\":t>e[0]?\"needs-improvement\":\"good\"}(e.value,n),t(e))}},p=function(t){requestAnimationFrame((function(){return requestAnimationFrame((function(){return t()}))}))},v=function(t){document.addEventListener(\"visibilitychange\",(function(){\"hidden\"===document.visibilityState&&t()}))},g=function(t){var e=!1;return function(){e||(t(),e=!0)}},h=-1,T=function(){return\"hidden\"!==document.visibilityState||document.prerendering?1/0:0},y=function(t){\"hidden\"===document.visibilityState&&h>-1&&(h=\"visibilitychange\"===t.type?t.timeStamp:0,S())},E=function(){addEventListener(\"visibilitychange\",y,!0),addEventListener(\"prerenderingchange\",y,!0)},S=function(){removeEventListener(\"visibilitychange\",y,!0),removeEventListener(\"prerenderingchange\",y,!0)},b=function(){return h<0&&(h=T(),E(),s((function(){setTimeout((function(){h=T(),E()}),0)}))),{get firstHiddenTime(){return h}}},L=function(t){document.prerendering?addEventListener(\"prerenderingchange\",(function(){return t()}),!0):t()},C=[1800,3e3],M=function(t,e){e=e||{},L((function(){var n,r=b(),i=d(\"FCP\"),a=l(\"paint\",(function(t){t.forEach((function(t){\"first-contentful-paint\"===t.name&&(a.disconnect(),t.startTimer.value&&(r.value=i,r.entries=a,n())},c=l(\"layout-shift\",o);c&&(n=m(t,r,D,e.reportAllChanges),v((function(){o(c.takeRecords()),n(!0)})),s((function(){i=0,r=d(\"CLS\",0),n=m(t,r,D,e.reportAllChanges),p((function(){return n()}))})),setTimeout(n,0))})))}((function(e){var n=function(t){var e,n={};if(t.entries.length){var r=t.entries.reduce((function(t,e){return t&&t.value>e.value?t:e}));if(r&&r.sources&&r.sources.length){var a=(e=r.sources).find((function(t){return t.node&&1===t.node.nodeType}))||e[0];a&&(n={largestShiftTarget:o(a.node),largestShiftTime:r.startTime,largestShiftValue:r.value,largestShiftSource:a,largestShiftEntry:r,loadState:i(r.startTime)})}}return Object.assign(t,{attribution:n})}(e);t(n)}),e)},x=function(t,e){M((function(e){var n=function(t){var e={timeToFirstByte:0,firstByteToFCP:t.value,loadState:i(u())};if(t.entries.length){var n=r(),a=t.entries[t.entries.length-1];if(n){var o=n.activationStart||0,c=Math.max(0,n.responseStart-o);e={timeToFirstByte:c,firstByteToFCP:t.value-c,loadState:i(t.entries[0].startTime),navigationEntry:n,fcpEntry:a}}}return Object.assign(t,{attribution:e})}(e);t(n)}),e)},I=0,k=1/0,A=0,F=function(t){t.forEach((function(t){t.interactionId&&(k=Math.min(k,t.interactionId),A=Math.max(A,t.interactionId),I=A?(A-k)/7+1:0)}))},P=function(){\"interactionCount\"in performance||t||(t=l(\"event\",F,{type:\"event\",buffered:!0,durationThreshold:0}))},B=[],O=new Map,R=0,j=function(){return(t?I:performance.interactionCount||0)-R},q=[],H=function(t){if(q.forEach((function(e){return e(t)})),t.interactionId||\"first-input\"===t.entryType){var e=B[B.length-1],n=O.get(t.interactionId);if(n||B.length<10||t.duration>e.latency){if(n)t.duration>n.latency?(n.entries=[t],n.latency=t.duration):t.duration===n.latency&&t.startTime===n.entries[0].startTime&&n.entries.push(t);else{var r={id:t.interactionId,latency:t.duration,entries:[t]};O.set(r.id,r),B.push(r)}B.sort((function(t,e){return e.latency-t.latency})),B.length>10&&B.splice(10).forEach((function(t){return O.delete(t.id)}))}}},N=function(t){var e=self.requestIdleCallback||self.setTimeout,n=-1;return t=g(t),\"hidden\"===document.visibilityState?t():(n=e(t),v(t)),n},W=[200,500],z=function(t,e){\"PerformanceEventTiming\"in self&&\"interactionId\"in PerformanceEventTiming.prototype&&(e=e||{},L((function(){var n;P();var r,i=d(\"INP\"),a=function(t){N((function(){t.forEach(H);var e,n=(e=Math.min(B.length-1,Math.floor(j()/50)),B[e]);n&&n.latency!==i.value&&(i.value=n.latency,i.entries=n.entries,r())}))},o=l(\"event\",a,{durationThreshold:null!==(n=e.durationThreshold)&&void 0!==n?n:40});r=m(t,i,W,e.reportAllChanges),o&&(o.observe({type:\"first-input\",buffered:!0}),v((function(){a(o.takeRecords()),r(!0)})),s((function(){R=0,B.length=0,O.clear(),i=d(\"INP\"),r=m(t,i,W,e.reportAllChanges)})))})))},U=[],V=[],_=new WeakMap,G=new Map,J=-1,K=function(t){U=U.concat(t),Q()},Q=function(){J<0&&(J=N(X))},X=function(){G.size>10&&G.forEach((function(t,e){O.has(e)||G.delete(e)}));var t=B.map((function(t){return _.get(t.entries[0])})),e=V.length-50;V=V.filter((function(n,r){return r>=e||t.includes(n)}));for(var r=new Set,i=0;i=0;i--){var a=V[i];if(Math.abs(r-a.renderTime)<=8){(e=a).startTime=Math.min(t.startTime,e.startTime),e.processingStart=Math.min(t.processingStart,e.processingStart),e.processingEnd=Math.max(t.processingEnd,e.processingEnd),e.entries.push(t);break}}e||(e={startTime:t.startTime,processingStart:t.processingStart,processingEnd:t.processingEnd,renderTime:r,entries:[t]},V.push(e)),(t.interactionId||\"first-input\"===t.entryType)&&_.set(t,e),Q()}));var Y,Z,$,tt,et=function(t,e){for(var n,r=[],i=0;n=U[i];i++)if(!(n.startTime+n.duratione)break;r.push(n)}return r},nt=function(t,n){e||(e=l(\"long-animation-frame\",K)),z((function(e){var n=function(t){var e=t.entries[0],n=_.get(e),r=e.processingStart,a=n.processingEnd,c=n.entries.sort((function(t,e){return t.processingStart-e.processingStart})),u=et(e.startTime,a),s=t.entries.find((function(t){return t.target})),f=s&&s.target||G.get(e.interactionId),d=[e.startTime+e.duration,a].concat(u.map((function(t){return t.startTime+t.duration}))),l=Math.max.apply(Math,d),m={interactionTarget:o(f),interactionTargetElement:f,interactionType:e.name.startsWith(\"key\")?\"keyboard\":\"pointer\",interactionTime:e.startTime,nextPaintTime:l,processedEventEntries:c,longAnimationFrameEntries:u,inputDelay:r-e.startTime,processingDuration:a-r,presentationDelay:Math.max(l-a,0),loadState:i(e.startTime)};return Object.assign(t,{attribution:m})}(e);t(n)}),n)},rt=[2500,4e3],it={},at=function(t,e){!function(t,e){e=e||{},L((function(){var n,r=b(),i=d(\"LCP\"),a=function(t){e.reportAllChanges||(t=t.slice(-1)),t.forEach((function(t){t.startTime=0&&Z<$-dt){var t={entryType:\"first-input\",name:Y.type,target:Y.target,cancelable:Y.cancelable,startTime:Y.timeStamp,processingStart:Y.timeStamp+Z};tt.forEach((function(e){e(t)})),tt=[]}},pt=function(t){if(t.cancelable){var e=(t.timeStamp>1e12?new Date:performance.now())-t.timeStamp;\"pointerdown\"==t.type?function(t,e){var n=function(){lt(t,e),i()},r=function(){i()},i=function(){removeEventListener(\"pointerup\",n,ft),removeEventListener(\"pointercancel\",r,ft)};addEventListener(\"pointerup\",n,ft),addEventListener(\"pointercancel\",r,ft)}(e,t):lt(e,t)}},vt=function(t){[\"mousedown\",\"keydown\",\"touchstart\",\"pointerdown\"].forEach((function(e){return t(e,pt,ft)}))},gt=[100,300],ht=function(t,e){e=e||{},L((function(){var n,r=b(),i=d(\"FID\"),a=function(t){t.startTime {\n const { loadState, largestShiftValue, largestShiftTime, largestShiftTarget } = metric.attribution;\n const values = this.buildInitialValues(metric);\n this.addIfPresent(values, 'largest_shift_value', largestShiftValue);\n this.addIfPresent(values, 'largest_shift_time', largestShiftTime);\n const context = this.buildInitialContext(metric);\n this.addIfPresent(context, loadStateKey, loadState);\n this.addIfPresent(context, 'largest_shift_target', largestShiftTarget);\n this.pushMeasurement(values, context);\n });\n }\n measureFCP() {\n onFCP((metric) => {\n const { firstByteToFCP, timeToFirstByte, loadState } = metric.attribution;\n const values = this.buildInitialValues(metric);\n this.addIfPresent(values, 'first_byte_to_fcp', firstByteToFCP);\n this.addIfPresent(values, timeToFirstByteKey, timeToFirstByte);\n const context = this.buildInitialContext(metric);\n this.addIfPresent(context, loadStateKey, loadState);\n this.pushMeasurement(values, context);\n });\n }\n measureFID() {\n onFID((metric) => {\n const { eventTime, eventTarget, eventType, loadState } = metric.attribution;\n const values = this.buildInitialValues(metric);\n this.addIfPresent(values, 'event_time', eventTime);\n const context = this.buildInitialContext(metric);\n this.addIfPresent(context, 'event_target', eventTarget);\n this.addIfPresent(context, 'event_type', eventType);\n this.addIfPresent(context, loadStateKey, loadState);\n this.pushMeasurement(values, context);\n });\n }\n measureINP() {\n onINP((metric) => {\n const { interactionTime, presentationDelay, inputDelay, processingDuration, nextPaintTime, loadState, interactionTarget, interactionType, } = metric.attribution;\n const values = this.buildInitialValues(metric);\n this.addIfPresent(values, 'interaction_time', interactionTime);\n this.addIfPresent(values, 'presentation_delay', presentationDelay);\n this.addIfPresent(values, 'input_delay', inputDelay);\n this.addIfPresent(values, 'processing_duration', processingDuration);\n this.addIfPresent(values, 'next_paint_time', nextPaintTime);\n const context = this.buildInitialContext(metric);\n this.addIfPresent(context, loadStateKey, loadState);\n this.addIfPresent(context, 'interaction_target', interactionTarget);\n this.addIfPresent(context, 'interaction_type', interactionType);\n this.pushMeasurement(values, context);\n });\n }\n measureLCP() {\n onLCP((metric) => {\n const { elementRenderDelay, resourceLoadDelay, resourceLoadDuration, timeToFirstByte, element } = metric.attribution;\n const values = this.buildInitialValues(metric);\n this.addIfPresent(values, 'element_render_delay', elementRenderDelay);\n this.addIfPresent(values, 'resource_load_delay', resourceLoadDelay);\n this.addIfPresent(values, 'resource_load_duration', resourceLoadDuration);\n this.addIfPresent(values, timeToFirstByteKey, timeToFirstByte);\n const context = this.buildInitialContext(metric);\n this.addIfPresent(context, 'element', element);\n this.pushMeasurement(values, context);\n });\n }\n measureTTFB() {\n onTTFB((metric) => {\n const { dnsDuration, connectionDuration, requestDuration, waitingDuration, cacheDuration } = metric.attribution;\n const values = this.buildInitialValues(metric);\n this.addIfPresent(values, 'dns_duration', dnsDuration);\n this.addIfPresent(values, 'connection_duration', connectionDuration);\n this.addIfPresent(values, 'request_duration', requestDuration);\n this.addIfPresent(values, 'waiting_duration', waitingDuration);\n this.addIfPresent(values, 'cache_duration', cacheDuration);\n const context = this.buildInitialContext(metric);\n this.pushMeasurement(values, context);\n });\n }\n buildInitialValues(metric) {\n const indicator = metric.name.toLowerCase();\n return {\n [indicator]: metric.value,\n delta: metric.delta,\n };\n }\n buildInitialContext(metric) {\n var _a;\n const navigationEntryId = (_a = getItem(NAVIGATION_ID_STORAGE_KEY, webStorageType.session)) !== null && _a !== void 0 ? _a : unknownString;\n return {\n id: metric.id,\n rating: metric.rating,\n navigation_type: metric.navigationType,\n navigation_entry_id: navigationEntryId,\n };\n }\n pushMeasurement(values, context) {\n const type = 'web-vitals';\n this.corePushMeasurement({ type, values }, { context });\n }\n addIfPresent(source, key, metric) {\n if (metric) {\n source[key] = metric;\n }\n }\n}\n//# sourceMappingURL=webVitalsWithAttribution.js.map","import { BaseInstrumentation, VERSION } from '@grafana/faro-core';\nimport { WebVitalsBasic } from './webVitalsBasic';\nimport { WebVitalsWithAttribution } from './webVitalsWithAttribution';\nexport class WebVitalsInstrumentation extends BaseInstrumentation {\n constructor() {\n super(...arguments);\n this.name = '@grafana/faro-web-sdk:instrumentation-web-vitals';\n this.version = VERSION;\n }\n initialize() {\n this.logDebug('Initializing');\n const webVitals = this.intializeWebVitalsInstrumentation();\n webVitals.initialize();\n }\n intializeWebVitalsInstrumentation() {\n if (this.config.trackWebVitalsAttribution) {\n return new WebVitalsWithAttribution(this.api.pushMeasurement);\n }\n return new WebVitalsBasic(this.api.pushMeasurement);\n }\n}\n//# sourceMappingURL=instrumentation.js.map","/**\n * @deprecated The conventions object will be removed in a future version\n */\nexport const Conventions = {\n /**\n * @deprecated The event names object will be removed in a future version\n */\n EventNames: {\n CLICK: 'click',\n NAVIGATION: 'navigation',\n SESSION_START: 'session_start',\n VIEW_CHANGED: 'view_changed',\n },\n};\nexport const EVENT_CLICK = 'click';\nexport const EVENT_NAVIGATION = 'navigation';\nexport const EVENT_VIEW_CHANGED = 'view_changed';\nexport const EVENT_SESSION_START = 'session_start';\nexport const EVENT_SESSION_RESUME = 'session_resume';\nexport const EVENT_SESSION_EXTEND = 'session_extend';\nexport const EVENT_ROUTE_CHANGE = 'route_change';\n//# sourceMappingURL=semantic.js.map","import { BaseInstrumentation, dateNow, EVENT_SESSION_EXTEND, EVENT_SESSION_RESUME, EVENT_SESSION_START, VERSION, } from '@grafana/faro-core';\nimport { createSession } from '../../metas';\nimport { getSessionManagerByConfig, isSampled } from './sessionManager';\nimport { PersistentSessionsManager } from './sessionManager/PersistentSessionsManager';\nimport { createUserSessionObject, isUserSessionValid } from './sessionManager/sessionManagerUtils';\nexport class SessionInstrumentation extends BaseInstrumentation {\n constructor() {\n super(...arguments);\n this.name = '@grafana/faro-web-sdk:instrumentation-session';\n this.version = VERSION;\n }\n sendSessionStartEvent(meta) {\n var _a, _b;\n const session = meta.session;\n if (session && session.id !== ((_a = this.notifiedSession) === null || _a === void 0 ? void 0 : _a.id)) {\n if (this.notifiedSession && this.notifiedSession.id === ((_b = session.attributes) === null || _b === void 0 ? void 0 : _b['previousSession'])) {\n this.api.pushEvent(EVENT_SESSION_EXTEND, {}, undefined, { skipDedupe: true });\n this.notifiedSession = session;\n return;\n }\n this.notifiedSession = session;\n // no need to add attributes and session id, they are included as part of meta\n // automatically\n this.api.pushEvent(EVENT_SESSION_START, {}, undefined, { skipDedupe: true });\n }\n }\n createInitialSession(SessionManager, sessionsConfig) {\n var _a, _b, _c, _d, _e;\n let userSession = SessionManager.fetchUserSession();\n if (sessionsConfig.persistent && sessionsConfig.maxSessionPersistenceTime && userSession) {\n const now = dateNow();\n const shouldClearPersistentSession = userSession.lastActivity < now - sessionsConfig.maxSessionPersistenceTime;\n if (shouldClearPersistentSession) {\n PersistentSessionsManager.removeUserSession();\n userSession = null;\n }\n }\n let lifecycleType;\n let initialSession;\n if (isUserSessionValid(userSession)) {\n const sessionId = userSession === null || userSession === void 0 ? void 0 : userSession.sessionId;\n initialSession = createUserSessionObject({\n sessionId,\n isSampled: userSession.isSampled || false,\n started: userSession === null || userSession === void 0 ? void 0 : userSession.started,\n });\n initialSession.sessionMeta = {\n id: sessionId,\n attributes: Object.assign(Object.assign(Object.assign({}, (_a = sessionsConfig.session) === null || _a === void 0 ? void 0 : _a.attributes), (_b = userSession === null || userSession === void 0 ? void 0 : userSession.sessionMeta) === null || _b === void 0 ? void 0 : _b.attributes), { \n // For valid resumed sessions we do not want to recalculate the sampling decision on each init phase.\n isSampled: initialSession.isSampled.toString() }),\n };\n lifecycleType = EVENT_SESSION_RESUME;\n }\n else {\n const sessionId = (_d = (_c = sessionsConfig.session) === null || _c === void 0 ? void 0 : _c.id) !== null && _d !== void 0 ? _d : createSession().id;\n initialSession = createUserSessionObject({\n sessionId,\n isSampled: isSampled(),\n });\n initialSession.sessionMeta = {\n id: sessionId,\n attributes: Object.assign({ isSampled: initialSession.isSampled.toString() }, (_e = sessionsConfig.session) === null || _e === void 0 ? void 0 : _e.attributes),\n };\n lifecycleType = EVENT_SESSION_START;\n }\n return { initialSession, lifecycleType };\n }\n registerBeforeSendHook(SessionManager) {\n var _a;\n const { updateSession } = new SessionManager();\n (_a = this.transports) === null || _a === void 0 ? void 0 : _a.addBeforeSendHooks((item) => {\n var _a, _b, _c;\n updateSession();\n const attributes = (_a = item.meta.session) === null || _a === void 0 ? void 0 : _a.attributes;\n if (attributes && (attributes === null || attributes === void 0 ? void 0 : attributes['isSampled']) === 'true') {\n let newItem = JSON.parse(JSON.stringify(item));\n const newAttributes = (_b = newItem.meta.session) === null || _b === void 0 ? void 0 : _b.attributes;\n newAttributes === null || newAttributes === void 0 ? true : delete newAttributes['isSampled'];\n if (Object.keys(newAttributes !== null && newAttributes !== void 0 ? newAttributes : {}).length === 0) {\n (_c = newItem.meta.session) === null || _c === void 0 ? true : delete _c.attributes;\n }\n return newItem;\n }\n return null;\n });\n }\n initialize() {\n this.logDebug('init session instrumentation');\n const sessionTrackingConfig = this.config.sessionTracking;\n if (sessionTrackingConfig === null || sessionTrackingConfig === void 0 ? void 0 : sessionTrackingConfig.enabled) {\n const SessionManager = getSessionManagerByConfig(sessionTrackingConfig);\n this.registerBeforeSendHook(SessionManager);\n const { initialSession, lifecycleType } = this.createInitialSession(SessionManager, sessionTrackingConfig);\n SessionManager.storeUserSession(initialSession);\n const initialSessionMeta = initialSession.sessionMeta;\n this.notifiedSession = initialSessionMeta;\n this.api.setSession(initialSessionMeta);\n if (lifecycleType === EVENT_SESSION_START) {\n this.api.pushEvent(EVENT_SESSION_START, {}, undefined, { skipDedupe: true });\n }\n if (lifecycleType === EVENT_SESSION_RESUME) {\n this.api.pushEvent(EVENT_SESSION_RESUME, {}, undefined, { skipDedupe: true });\n }\n }\n this.metas.addListener(this.sendSessionStartEvent.bind(this));\n }\n}\n//# sourceMappingURL=instrumentation.js.map","import { faro, genShortID } from '@grafana/faro-core';\nexport function createSession(attributes) {\n var _a, _b, _c, _d;\n return {\n id: (_d = (_c = (_b = (_a = faro.config) === null || _a === void 0 ? void 0 : _a.sessionTracking) === null || _b === void 0 ? void 0 : _b.generateSessionId) === null || _c === void 0 ? void 0 : _c.call(_b)) !== null && _d !== void 0 ? _d : genShortID(),\n attributes,\n };\n}\n//# sourceMappingURL=createSession.js.map","import { BaseInstrumentation, EVENT_VIEW_CHANGED, unknownString, VERSION } from '@grafana/faro-core';\n// all this does is send VIEW_CHANGED event\nexport class ViewInstrumentation extends BaseInstrumentation {\n constructor() {\n super(...arguments);\n this.name = '@grafana/faro-web-sdk:instrumentation-view';\n this.version = VERSION;\n }\n sendViewChangedEvent(meta) {\n var _a, _b, _c, _d;\n const view = meta.view;\n if (view && view.name !== ((_a = this.notifiedView) === null || _a === void 0 ? void 0 : _a.name)) {\n this.api.pushEvent(EVENT_VIEW_CHANGED, {\n fromView: (_c = (_b = this.notifiedView) === null || _b === void 0 ? void 0 : _b.name) !== null && _c !== void 0 ? _c : unknownString,\n toView: (_d = view.name) !== null && _d !== void 0 ? _d : unknownString,\n }, undefined, { skipDedupe: true });\n this.notifiedView = view;\n }\n }\n initialize() {\n this.metas.addListener(this.sendViewChangedEvent.bind(this));\n }\n}\n//# sourceMappingURL=instrumentation.js.map","export const NAVIGATION_ENTRY = 'navigation';\nexport const RESOURCE_ENTRY = 'resource';\n//# sourceMappingURL=performanceConstants.js.map","import { isArray, unknownString } from '@grafana/faro-core';\nconst w3cTraceparentFormat = /^00-[a-f0-9]{32}-[a-f0-9]{16}-[0-9]{1,2}$/;\n// Extract traceparent from serverTiming, if present\nexport function getSpanContextFromServerTiming(serverTimings = []) {\n for (const serverEntry of serverTimings) {\n if (serverEntry.name === 'traceparent') {\n if (!w3cTraceparentFormat.test(serverEntry.description)) {\n continue;\n }\n const [, traceId, spanId] = serverEntry.description.split('-');\n if (traceId != null && spanId != null) {\n return { traceId, spanId };\n }\n break;\n }\n }\n return undefined;\n}\nexport function performanceObserverSupported() {\n return 'PerformanceObserver' in window;\n}\nexport function entryUrlIsIgnored(ignoredUrls = [], entryName) {\n return ignoredUrls.some((url) => url && entryName.match(url) != null);\n}\nexport function onDocumentReady(handleReady) {\n if (document.readyState === 'complete') {\n handleReady();\n }\n else {\n const readyStateCompleteHandler = () => {\n if (document.readyState === 'complete') {\n handleReady();\n document.removeEventListener('readystatechange', readyStateCompleteHandler);\n }\n };\n document.addEventListener('readystatechange', readyStateCompleteHandler);\n }\n}\nexport function includePerformanceEntry(performanceEntryJSON, allowProps = {}) {\n for (const [allowPropKey, allowPropValue] of Object.entries(allowProps)) {\n const perfEntryPropVal = performanceEntryJSON[allowPropKey];\n if (perfEntryPropVal == null) {\n return false;\n }\n if (isArray(allowPropValue)) {\n return allowPropValue.includes(perfEntryPropVal);\n }\n return perfEntryPropVal === allowPropValue;\n }\n // empty object allows all\n return true;\n}\nexport function createFaroResourceTiming(resourceEntryRaw) {\n const { connectEnd, connectStart, decodedBodySize, domainLookupEnd, domainLookupStart, duration, encodedBodySize, fetchStart, initiatorType, name, nextHopProtocol, redirectEnd, redirectStart, \n // @ts-expect-error the renderBlockingStatus property is not available in all browsers\n renderBlockingStatus: rbs, requestStart, responseEnd, responseStart, \n // @ts-expect-error the renderBlockingStatus property is not available in all browsers\n responseStatus, secureConnectionStart, transferSize, workerStart, } = resourceEntryRaw;\n return {\n name: name,\n duration: toFaroPerformanceTimingString(duration),\n tcpHandshakeTime: toFaroPerformanceTimingString(connectEnd - connectStart),\n dnsLookupTime: toFaroPerformanceTimingString(domainLookupEnd - domainLookupStart),\n tlsNegotiationTime: toFaroPerformanceTimingString(requestStart - secureConnectionStart),\n responseStatus: toFaroPerformanceTimingString(responseStatus),\n redirectTime: toFaroPerformanceTimingString(redirectEnd - redirectStart),\n requestTime: toFaroPerformanceTimingString(responseStart - requestStart),\n responseTime: toFaroPerformanceTimingString(responseEnd - responseStart),\n fetchTime: toFaroPerformanceTimingString(responseEnd - fetchStart),\n serviceWorkerTime: toFaroPerformanceTimingString(fetchStart - workerStart),\n decodedBodySize: toFaroPerformanceTimingString(decodedBodySize),\n encodedBodySize: toFaroPerformanceTimingString(encodedBodySize),\n cacheHitStatus: getCacheType(),\n renderBlockingStatus: toFaroPerformanceTimingString(rbs),\n protocol: nextHopProtocol,\n initiatorType: initiatorType,\n // TODO: add in future iteration, ideally after nested objects are supported by the collector.\n // serverTiming: resourceEntryRaw.serverTiming,\n };\n function getCacheType() {\n let cacheType = 'fullLoad';\n if (transferSize === 0) {\n if (decodedBodySize > 0) {\n cacheType = 'cache';\n }\n }\n else {\n if (responseStatus != null) {\n if (responseStatus === 304) {\n cacheType = 'conditionalFetch';\n }\n }\n else if (encodedBodySize > 0 && transferSize < encodedBodySize) {\n cacheType = 'conditionalFetch';\n }\n }\n return cacheType;\n }\n}\nexport function createFaroNavigationTiming(navigationEntryRaw) {\n const { activationStart, domComplete, domContentLoadedEventEnd, domContentLoadedEventStart, domInteractive, fetchStart, loadEventEnd, loadEventStart, responseStart, type, } = navigationEntryRaw;\n const parserStart = getDocumentParsingTime();\n return Object.assign({ visibilityState: document.visibilityState, pageLoadTime: toFaroPerformanceTimingString(domComplete - fetchStart), documentParsingTime: toFaroPerformanceTimingString(parserStart ? domInteractive - parserStart : null), domProcessingTime: toFaroPerformanceTimingString(domComplete - domInteractive), domContentLoadHandlerTime: toFaroPerformanceTimingString(domContentLoadedEventEnd - domContentLoadedEventStart), onLoadTime: toFaroPerformanceTimingString(loadEventEnd - loadEventStart), \n // For more accuracy on prerendered pages page we calculate relative top the activationStart instead of the start of the navigation.\n // clamp to 0 if activationStart occurs after first byte is received.\n ttfb: toFaroPerformanceTimingString(Math.max(responseStart - (activationStart !== null && activationStart !== void 0 ? activationStart : 0), 0)), type: type }, createFaroResourceTiming(navigationEntryRaw));\n}\nfunction getDocumentParsingTime() {\n var _a;\n if (((_a = performance.timing) === null || _a === void 0 ? void 0 : _a.domLoading) != null) {\n // the browser is about to start parsing the first received bytes of the HTML document.\n // This property is deprecated but there isn't a really good alternative atm.\n // For now we stick with domLoading and keep researching a better alternative.\n return performance.timing.domLoading - performance.timeOrigin;\n }\n return null;\n}\nfunction toFaroPerformanceTimingString(v) {\n if (v == null) {\n return unknownString;\n }\n if (typeof v === 'number') {\n return Math.round(v).toString();\n }\n return v.toString();\n}\n//# sourceMappingURL=performanceUtils.js.map","import { faro, genShortID } from '@grafana/faro-core';\nimport { RESOURCE_ENTRY } from './performanceConstants';\nimport { createFaroResourceTiming, entryUrlIsIgnored, getSpanContextFromServerTiming, includePerformanceEntry, } from './performanceUtils';\nconst DEFAULT_TRACK_RESOURCES = { initiatorType: ['xmlhttprequest', 'fetch'] };\nexport function observeResourceTimings(faroNavigationId, pushEvent, ignoredUrls) {\n const trackResources = faro.config.trackResources;\n const observer = new PerformanceObserver((observedEntries) => {\n const entries = observedEntries.getEntries();\n for (const resourceEntryRaw of entries) {\n if (entryUrlIsIgnored(ignoredUrls, resourceEntryRaw.name)) {\n return;\n }\n const resourceEntryJson = resourceEntryRaw.toJSON();\n let spanContext = getSpanContextFromServerTiming(resourceEntryJson === null || resourceEntryJson === void 0 ? void 0 : resourceEntryJson.serverTiming);\n if ((trackResources == null && includePerformanceEntry(resourceEntryJson, DEFAULT_TRACK_RESOURCES)) ||\n trackResources) {\n const faroResourceEntry = Object.assign(Object.assign({}, createFaroResourceTiming(resourceEntryJson)), { faroNavigationId, faroResourceId: genShortID() });\n pushEvent('faro.performance.resource', faroResourceEntry, undefined, {\n spanContext,\n timestampOverwriteMs: performance.timeOrigin + resourceEntryJson.startTime,\n });\n }\n }\n });\n observer.observe({\n type: RESOURCE_ENTRY,\n buffered: true,\n });\n}\n//# sourceMappingURL=resource.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { BaseInstrumentation, VERSION } from '@grafana/faro-core';\nimport { getNavigationTimings } from './navigation';\nimport { onDocumentReady, performanceObserverSupported } from './performanceUtils';\nimport { observeResourceTimings } from './resource';\nexport class PerformanceInstrumentation extends BaseInstrumentation {\n constructor() {\n super(...arguments);\n this.name = '@grafana/faro-web-sdk:instrumentation-performance';\n this.version = VERSION;\n }\n initialize() {\n if (!performanceObserverSupported()) {\n this.logDebug('performance observer not supported. Disable performance instrumentation.');\n return;\n }\n onDocumentReady(() => __awaiter(this, void 0, void 0, function* () {\n const pushEvent = this.api.pushEvent;\n const ignoredUrls = this.getIgnoreUrls();\n const { faroNavigationId } = yield getNavigationTimings(pushEvent, ignoredUrls);\n if (faroNavigationId != null) {\n observeResourceTimings(faroNavigationId, pushEvent, ignoredUrls);\n }\n }));\n }\n getIgnoreUrls() {\n var _a;\n return (_a = this.transports.transports) === null || _a === void 0 ? void 0 : _a.flatMap((transport) => transport.getIgnoreUrls());\n }\n}\n//# sourceMappingURL=instrumentation.js.map","import { genShortID, unknownString } from '@grafana/faro-core';\nimport { getItem, setItem, webStorageType } from '../../utils';\nimport { NAVIGATION_ID_STORAGE_KEY } from '../instrumentationConstants';\nimport { NAVIGATION_ENTRY } from './performanceConstants';\nimport { createFaroNavigationTiming, entryUrlIsIgnored, getSpanContextFromServerTiming } from './performanceUtils';\nexport function getNavigationTimings(pushEvent, ignoredUrls) {\n let faroNavigationEntryResolve;\n const faroNavigationEntryPromise = new Promise((resolve) => {\n faroNavigationEntryResolve = resolve;\n });\n const observer = new PerformanceObserver((observedEntries) => {\n var _a;\n const [navigationEntryRaw] = observedEntries.getEntries();\n if (navigationEntryRaw == null || entryUrlIsIgnored(ignoredUrls, navigationEntryRaw.name)) {\n return;\n }\n const navEntryJson = navigationEntryRaw.toJSON();\n let spanContext = getSpanContextFromServerTiming(navEntryJson === null || navEntryJson === void 0 ? void 0 : navEntryJson.serverTiming);\n const faroPreviousNavigationId = (_a = getItem(NAVIGATION_ID_STORAGE_KEY, webStorageType.session)) !== null && _a !== void 0 ? _a : unknownString;\n const faroNavigationEntry = Object.assign(Object.assign({}, createFaroNavigationTiming(navEntryJson)), { faroNavigationId: genShortID(), faroPreviousNavigationId });\n setItem(NAVIGATION_ID_STORAGE_KEY, faroNavigationEntry.faroNavigationId, webStorageType.session);\n pushEvent('faro.performance.navigation', faroNavigationEntry, undefined, {\n spanContext,\n timestampOverwriteMs: performance.timeOrigin + navEntryJson.startTime,\n });\n faroNavigationEntryResolve(faroNavigationEntry);\n });\n observer.observe({\n type: NAVIGATION_ENTRY,\n buffered: true,\n });\n return faroNavigationEntryPromise;\n}\n//# sourceMappingURL=navigation.js.map","import { allLogLevels, BaseInstrumentation, LogLevel, VERSION } from '@grafana/faro-core';\nexport class ConsoleInstrumentation extends BaseInstrumentation {\n constructor(options = {}) {\n super();\n this.options = options;\n this.name = '@grafana/faro-web-sdk:instrumentation-console';\n this.version = VERSION;\n }\n initialize() {\n this.logDebug('Initializing\\n', this.options);\n allLogLevels\n .filter((level) => { var _a; return !((_a = this.options.disabledLevels) !== null && _a !== void 0 ? _a : ConsoleInstrumentation.defaultDisabledLevels).includes(level); })\n .forEach((level) => {\n /* eslint-disable-next-line no-console */\n console[level] = (...args) => {\n try {\n this.api.pushLog(args, { level });\n }\n catch (err) {\n this.logError(err);\n }\n finally {\n this.unpatchedConsole[level](...args);\n }\n };\n });\n }\n}\nConsoleInstrumentation.defaultDisabledLevels = [LogLevel.DEBUG, LogLevel.TRACE, LogLevel.LOG];\n//# sourceMappingURL=instrumentation.js.map","import { ConsoleInstrumentation, ErrorsInstrumentation, PerformanceInstrumentation, SessionInstrumentation, ViewInstrumentation, WebVitalsInstrumentation, } from '../instrumentations';\nexport function getWebInstrumentations(options = {}) {\n const instrumentations = [\n new ErrorsInstrumentation(),\n new WebVitalsInstrumentation(),\n new SessionInstrumentation(),\n new ViewInstrumentation(),\n ];\n if (options.enablePerformanceInstrumentation !== false) {\n // unshift to ensure that initialization starts before the other instrumentations\n instrumentations.unshift(new PerformanceInstrumentation());\n }\n if (options.captureConsole !== false) {\n instrumentations.push(new ConsoleInstrumentation({\n disabledLevels: options.captureConsoleDisabledLevels,\n }));\n }\n return instrumentations;\n}\n//# sourceMappingURL=getWebInstrumentations.js.map","import { initializeFaro as coreInit } from '@grafana/faro-core';\nimport { makeCoreConfig } from './config';\nexport function initializeFaro(config) {\n const coreConfig = makeCoreConfig(config);\n if (!coreConfig) {\n return undefined;\n }\n return coreInit(coreConfig);\n}\n//# sourceMappingURL=initialize.js.map","import { createInternalLogger, defaultBatchingConfig, defaultGlobalObjectKey, defaultInternalLoggerLevel, defaultLogArgsSerializer, defaultUnpatchedConsole, isObject, } from '@grafana/faro-core';\nimport { defaultEventDomain } from '../consts';\nimport { parseStacktrace } from '../instrumentations';\nimport { defaultSessionTrackingConfig } from '../instrumentations/session';\nimport { defaultMetas } from '../metas';\nimport { k6Meta } from '../metas/k6';\nimport { FetchTransport } from '../transports';\nimport { getWebInstrumentations } from './getWebInstrumentations';\nexport function makeCoreConfig(browserConfig) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j;\n const transports = [];\n const internalLogger = createInternalLogger(browserConfig.unpatchedConsole, browserConfig.internalLoggerLevel);\n if (browserConfig.transports) {\n if (browserConfig.url || browserConfig.apiKey) {\n internalLogger.error('if \"transports\" is defined, \"url\" and \"apiKey\" should not be defined');\n }\n transports.push(...browserConfig.transports);\n }\n else if (browserConfig.url) {\n transports.push(new FetchTransport({\n url: browserConfig.url,\n apiKey: browserConfig.apiKey,\n }));\n }\n else {\n internalLogger.error('either \"url\" or \"transports\" must be defined');\n }\n function createMetas() {\n const initialMetas = defaultMetas;\n if (browserConfig.metas) {\n initialMetas.push(...browserConfig.metas);\n }\n const isK6BrowserSession = isObject(window.k6);\n if (isK6BrowserSession) {\n return [...initialMetas, k6Meta];\n }\n return initialMetas;\n }\n const config = {\n app: browserConfig.app,\n batching: Object.assign(Object.assign({}, defaultBatchingConfig), browserConfig.batching),\n dedupe: (_a = browserConfig.dedupe) !== null && _a !== void 0 ? _a : true,\n globalObjectKey: browserConfig.globalObjectKey || defaultGlobalObjectKey,\n instrumentations: (_b = browserConfig.instrumentations) !== null && _b !== void 0 ? _b : getWebInstrumentations(),\n internalLoggerLevel: (_c = browserConfig.internalLoggerLevel) !== null && _c !== void 0 ? _c : defaultInternalLoggerLevel,\n isolate: (_d = browserConfig.isolate) !== null && _d !== void 0 ? _d : false,\n logArgsSerializer: (_e = browserConfig.logArgsSerializer) !== null && _e !== void 0 ? _e : defaultLogArgsSerializer,\n metas: createMetas(),\n parseStacktrace,\n paused: (_f = browserConfig.paused) !== null && _f !== void 0 ? _f : false,\n preventGlobalExposure: (_g = browserConfig.preventGlobalExposure) !== null && _g !== void 0 ? _g : false,\n transports,\n unpatchedConsole: (_h = browserConfig.unpatchedConsole) !== null && _h !== void 0 ? _h : defaultUnpatchedConsole,\n beforeSend: browserConfig.beforeSend,\n eventDomain: (_j = browserConfig.eventDomain) !== null && _j !== void 0 ? _j : defaultEventDomain,\n ignoreErrors: browserConfig.ignoreErrors,\n ignoreUrls: browserConfig.ignoreUrls,\n sessionTracking: Object.assign(Object.assign({}, defaultSessionTrackingConfig), browserConfig.sessionTracking),\n user: browserConfig.user,\n view: browserConfig.view,\n trackResources: browserConfig.trackResources,\n trackWebVitalsAttribution: browserConfig.trackWebVitalsAttribution,\n };\n return config;\n}\n//# sourceMappingURL=makeCoreConfig.js.map","import plugin from './plugin.json';\n\nexport const PYROSCOPE_APP_ID = plugin.id;\n\nexport const PLUGIN_BASE_URL = `/a/${PYROSCOPE_APP_ID}`;\n\nexport enum ROUTES {\n EXPLORE = '/explore',\n ADHOC = '/ad-hoc',\n SETTINGS = '/settings',\n}\n","export const GIT_COMMIT = 'b4013f7656edf48bc0145426a1d05fecd1bb7806';\n","export type Environment = 'local' | 'dev' | 'ops' | 'prod';\n\nconst MATCHERS: Array<{ regExp: RegExp; environment: Environment }> = [\n {\n regExp: /localhost/,\n environment: 'local',\n },\n {\n regExp: /grafana-dev\\.net/,\n environment: 'dev',\n },\n {\n regExp: /grafana-ops\\.net/,\n environment: 'ops',\n },\n {\n regExp: /grafana\\.net/,\n environment: 'prod',\n },\n];\n\nexport function getEnvironment(): Environment | null {\n if (!window?.location?.host) {\n return null;\n }\n\n const found = MATCHERS.find(({ regExp }) => regExp.test(window.location.host));\n\n return found ? found.environment : null;\n}\n","import { Environment } from '../getEnvironment';\nimport { FaroEnvironment } from './getFaroEnvironment';\n\nexport const FARO_ENVIRONMENTS = new Map([\n // Uncomment this map entry to test from your local machine\n // [\n // 'local',\n // {\n // environment: 'local',\n // appName: 'grafana-pyroscope-local',\n // faroUrl: 'https://faro-collector-ops-eu-south-0.grafana-ops.net/collect/d6ca259b3387e6ddd641973d0fad3ed0',\n // },\n // ],\n // Always keep the options below\n [\n 'dev',\n {\n environment: 'dev',\n appName: 'grafana-pyroscope-dev',\n faroUrl: 'https://faro-collector-ops-eu-south-0.grafana-ops.net/collect/48e03a2647389f2f6494af7f975b4084',\n },\n ],\n [\n 'ops',\n {\n environment: 'ops',\n appName: 'grafana-pyroscope-ops',\n faroUrl: 'https://faro-collector-ops-eu-south-0.grafana-ops.net/collect/b5cfd5eeb412cf5e74bd828b4ddd17ff',\n },\n ],\n [\n 'prod',\n {\n environment: 'prod',\n appName: 'grafana-pyroscope-prod',\n faroUrl: 'https://faro-collector-ops-eu-south-0.grafana-ops.net/collect/6cbe17b3af4b72ce5936bf4d15a5c393',\n },\n ],\n]);\n","import { Faro, getWebInstrumentations, initializeFaro } from '@grafana/faro-web-sdk';\nimport { config } from '@grafana/runtime';\n\nimport { PLUGIN_BASE_URL, PYROSCOPE_APP_ID } from '../../../../constants';\nimport { GIT_COMMIT } from '../../../../version';\nimport { getFaroEnvironment } from './getFaroEnvironment';\n\nlet faro: Faro | null = null;\n\nexport const getFaro = () => faro;\nexport const setFaro = (instance: Faro | null) => (faro = instance);\n\nexport function initFaro() {\n if (getFaro()) {\n return;\n }\n\n const faroEnvironment = getFaroEnvironment();\n if (!faroEnvironment) {\n return;\n }\n\n const { environment, faroUrl, appName } = faroEnvironment;\n\n const { apps, bootData, buildInfo } = config;\n\n const appRelease = apps[PYROSCOPE_APP_ID].version;\n const userEmail = bootData.user.email;\n const grafanaVersion = `v${buildInfo.version} (${buildInfo.edition})`;\n\n setFaro(\n initializeFaro({\n url: faroUrl,\n app: {\n name: appName,\n release: appRelease,\n version: GIT_COMMIT,\n environment,\n namespace: grafanaVersion, // :man_shrug:\n },\n user: {\n email: userEmail,\n },\n instrumentations: [\n ...getWebInstrumentations({\n captureConsole: false,\n }),\n ],\n isolate: true,\n beforeSend: (event) => {\n if ((event.meta.page?.url ?? '').includes(PLUGIN_BASE_URL)) {\n event.meta.view = {\n name: new URLSearchParams(event.meta.page?.url).get('explorationType') || '',\n };\n\n return event;\n }\n\n return null;\n },\n })\n );\n}\n","\"use client\";\n\n// src/QueryClientProvider.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar QueryClientContext = React.createContext(\n void 0\n);\nvar useQueryClient = (queryClient) => {\n const client = React.useContext(QueryClientContext);\n if (queryClient) {\n return queryClient;\n }\n if (!client) {\n throw new Error(\"No QueryClient set, use QueryClientProvider to set one\");\n }\n return client;\n};\nvar QueryClientProvider = ({\n client,\n children\n}) => {\n React.useEffect(() => {\n client.mount();\n return () => {\n client.unmount();\n };\n }, [client]);\n return /* @__PURE__ */ jsx(QueryClientContext.Provider, { value: client, children });\n};\nexport {\n QueryClientContext,\n QueryClientProvider,\n useQueryClient\n};\n//# sourceMappingURL=QueryClientProvider.js.map","import { LogLevel } from '@grafana/faro-web-sdk';\nimport { getFaro } from '@shared/infrastructure/tracking/faro/faro';\n\nimport { Environment, getEnvironment } from './getEnvironment';\n\nexport type ErrorContext = Record;\n\nexport class Logger {\n #environment: Environment | null;\n\n constructor() {\n this.#environment = getEnvironment();\n }\n\n #callConsole(methodName: 'trace' | 'debug' | 'info' | 'log' | 'warn' | 'error', args: any[]) {\n // silence console in production\n if (this.#environment !== 'prod') {\n console[methodName](...args); // eslint-disable-line no-console\n }\n }\n\n trace() {\n this.#callConsole('trace', []);\n\n getFaro()?.api.pushLog([], {\n level: LogLevel.TRACE,\n });\n }\n\n debug(...args: any) {\n this.#callConsole('debug', args);\n\n getFaro()?.api.pushLog(args, {\n level: LogLevel.DEBUG,\n });\n }\n\n info(...args: any) {\n this.#callConsole('info', args);\n\n getFaro()?.api.pushLog(args, {\n level: LogLevel.INFO,\n });\n }\n\n log(...args: any) {\n this.#callConsole('log', args);\n\n getFaro()?.api.pushLog(args, {\n level: LogLevel.LOG,\n });\n }\n\n warn(...args: any) {\n this.#callConsole('warn', args);\n\n getFaro()?.api.pushLog(args, {\n level: LogLevel.WARN,\n });\n }\n\n error(error: Error, context?: ErrorContext) {\n this.#callConsole('error', [error]);\n\n if (context) {\n this.#callConsole('error', ['Error context', context]);\n }\n\n // does not report an error, but an exception ;)\n getFaro()?.api.pushError(error, {\n context,\n });\n }\n}\n\nexport const logger = new Logger();\n","import { logger } from '@shared/infrastructure/tracking/logger';\n\nimport plugin from '../../plugin.json';\n\nclass UserStorage {\n #storage: Storage = window.localStorage;\n\n KEYS = {\n SETTINGS: `${plugin.id}.userSettings`,\n GITHUB_INTEGRATION: `${plugin.id}.gitHubIntegration`,\n PROFILES_EXPLORER: `${plugin.id}.profilesExplorer`,\n };\n\n has(itemName: string): boolean {\n return this.#storage.hasOwnProperty(itemName);\n }\n\n get(itemName: string): null | any {\n if (!this.has(itemName)) {\n return null;\n }\n\n try {\n return JSON.parse(this.#storage.getItem(itemName) as string);\n } catch (error) {\n logger.error(error as Error, { info: `Error parsing JSON for storage item \"${itemName}\"!` });\n return null;\n }\n }\n\n set(itemName: string, value: any): void {\n try {\n this.#storage.setItem(itemName, JSON.stringify(value));\n } catch (error) {\n logger.error(error as Error, { info: `Error setting storage item \"${itemName}\"!` });\n }\n }\n}\n\nexport const userStorage = new UserStorage();\n","export const noOp = () => {};\n","export class HttpClientError extends Error {\n response: Response;\n reason?: any;\n\n constructor(response: Response, responseJson?: Record) {\n let message = `HTTP ${response.status} (${response.statusText || '?'})`;\n\n if (responseJson?.message) {\n message = `${message} → ${responseJson.message}`;\n }\n\n super(message);\n\n this.response = response;\n }\n}\n","import { noOp } from '@shared/domain/noOp';\n\nimport { HttpClientError } from './HttpClientError';\n\nexport class HttpClient {\n baseUrl = '';\n defaultHeaders = {};\n abortController?: AbortController | null = null;\n\n constructor(baseUrl: string, defaultHeaders: Record = {}) {\n this.baseUrl = baseUrl;\n this.defaultHeaders = Object.freeze(defaultHeaders);\n }\n\n async fetch(pathname: string, options?: RequestInit) {\n this.abortController = new AbortController();\n const { signal } = this.abortController;\n\n const fullUrl = `${this.baseUrl}${pathname}`;\n const headers = { ...this.defaultHeaders, ...options?.headers };\n const fullOptions = {\n signal, // we allow signal to be passed as an option\n ...options,\n headers,\n };\n\n let response;\n\n try {\n response = await fetch(fullUrl, fullOptions);\n\n if (!response.ok) {\n throw new HttpClientError(response, await response.json().catch(noOp));\n }\n } catch (error) {\n if (this.isAbortError(error)) {\n (error as any).reason = options?.signal?.reason || signal.reason;\n }\n\n throw error;\n } finally {\n this.abortController = null;\n }\n\n return response;\n }\n\n abort(reason?: any) {\n if (this.abortController) {\n this.abortController.abort(reason);\n }\n }\n\n isAbortError(error: unknown) {\n return error instanceof DOMException && error.name === 'AbortError';\n }\n}\n","import { DataSourceInstanceSettings, DataSourceJsonData } from '@grafana/data';\nimport { config } from '@grafana/runtime';\n\nimport { logger } from '../tracking/logger';\nimport { userStorage } from '../userStorage';\nimport { HttpClient } from './HttpClient';\n\nconst PYROSCOPE_DATA_SOURCES_TYPE = 'grafana-pyroscope-datasource';\nconst PYROSCOPE_URL_SEARCH_PARAM_NAME = 'var-dataSource'; // matches with the Scenes library\n\ntype CustomDataSourceJsonData = { overridesDefault: boolean };\ntype CustomDataSourceInstanceSettings = DataSourceInstanceSettings;\n\n/**\n * An HTTP client ready to fetch data from the plugin's backend\n */\nexport class ApiClient extends HttpClient {\n static getPyroscopeDataSources() {\n return Object.values(config.datasources).filter((ds) => ds.type === PYROSCOPE_DATA_SOURCES_TYPE);\n }\n\n static selectDefaultDataSource() {\n const pyroscopeDataSources = ApiClient.getPyroscopeDataSources() as CustomDataSourceInstanceSettings[];\n\n const uidFromUrl = new URL(window.location.href).searchParams.get(PYROSCOPE_URL_SEARCH_PARAM_NAME);\n const uidFromLocalStorage = userStorage.get(userStorage.KEYS.PROFILES_EXPLORER)?.dataSource;\n\n const defaultDataSource =\n pyroscopeDataSources.find((ds) => ds.uid === uidFromUrl) ||\n pyroscopeDataSources.find((ds) => ds.uid === uidFromLocalStorage) ||\n pyroscopeDataSources.find((ds) => ds.jsonData.overridesDefault) ||\n pyroscopeDataSources.find((ds) => ds.isDefault) ||\n pyroscopeDataSources[0];\n\n if (!defaultDataSource) {\n logger.warn(\n 'Cannot find any Pyroscope data source! Please add and configure a Pyroscope data source to your Grafana instance.'\n );\n\n // because we instantiate most of our API clients before exporting them,\n // we have to return a dummy data source to prevent the whole app to fail\n return { uid: 'no-data-source-configured' };\n }\n\n return defaultDataSource;\n }\n\n static getBaseUrl() {\n const pyroscopeDataSource = ApiClient.selectDefaultDataSource();\n\n let appSubUrl = config.appSubUrl || '';\n if (appSubUrl.at(-1) !== '/') {\n // ensures that the API pathname is appended correctly (appUrl seems to always have it but better to be extra careful)\n appSubUrl += '/';\n }\n\n return `${appSubUrl}api/datasources/proxy/uid/${pyroscopeDataSource.uid}`;\n }\n\n constructor() {\n super(ApiClient.getBaseUrl().toString(), {\n 'content-type': 'application/json',\n 'X-Grafana-Org-Id': String(config.bootData?.user?.orgId || ''),\n });\n }\n}\n","// src/queryObserver.ts\nimport {\n isServer,\n isValidTimeout,\n noop,\n replaceData,\n resolveEnabled,\n resolveStaleTime,\n shallowEqualObjects,\n timeUntilStale\n} from \"./utils.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { focusManager } from \"./focusManager.js\";\nimport { Subscribable } from \"./subscribable.js\";\nimport { fetchState } from \"./query.js\";\nvar QueryObserver = class extends Subscribable {\n constructor(client, options) {\n super();\n this.options = options;\n this.#client = client;\n this.#selectError = null;\n this.bindMethods();\n this.setOptions(options);\n }\n #client;\n #currentQuery = void 0;\n #currentQueryInitialState = void 0;\n #currentResult = void 0;\n #currentResultState;\n #currentResultOptions;\n #selectError;\n #selectFn;\n #selectResult;\n // This property keeps track of the last query with defined data.\n // It will be used to pass the previous data and query to the placeholder function between renders.\n #lastQueryWithDefinedData;\n #staleTimeoutId;\n #refetchIntervalId;\n #currentRefetchInterval;\n #trackedProps = /* @__PURE__ */ new Set();\n bindMethods() {\n this.refetch = this.refetch.bind(this);\n }\n onSubscribe() {\n if (this.listeners.size === 1) {\n this.#currentQuery.addObserver(this);\n if (shouldFetchOnMount(this.#currentQuery, this.options)) {\n this.#executeFetch();\n } else {\n this.updateResult();\n }\n this.#updateTimers();\n }\n }\n onUnsubscribe() {\n if (!this.hasListeners()) {\n this.destroy();\n }\n }\n shouldFetchOnReconnect() {\n return shouldFetchOn(\n this.#currentQuery,\n this.options,\n this.options.refetchOnReconnect\n );\n }\n shouldFetchOnWindowFocus() {\n return shouldFetchOn(\n this.#currentQuery,\n this.options,\n this.options.refetchOnWindowFocus\n );\n }\n destroy() {\n this.listeners = /* @__PURE__ */ new Set();\n this.#clearStaleTimeout();\n this.#clearRefetchInterval();\n this.#currentQuery.removeObserver(this);\n }\n setOptions(options, notifyOptions) {\n const prevOptions = this.options;\n const prevQuery = this.#currentQuery;\n this.options = this.#client.defaultQueryOptions(options);\n if (this.options.enabled !== void 0 && typeof this.options.enabled !== \"boolean\" && typeof this.options.enabled !== \"function\" && typeof resolveEnabled(this.options.enabled, this.#currentQuery) !== \"boolean\") {\n throw new Error(\n \"Expected enabled to be a boolean or a callback that returns a boolean\"\n );\n }\n this.#updateQuery();\n this.#currentQuery.setOptions(this.options);\n if (prevOptions._defaulted && !shallowEqualObjects(this.options, prevOptions)) {\n this.#client.getQueryCache().notify({\n type: \"observerOptionsUpdated\",\n query: this.#currentQuery,\n observer: this\n });\n }\n const mounted = this.hasListeners();\n if (mounted && shouldFetchOptionally(\n this.#currentQuery,\n prevQuery,\n this.options,\n prevOptions\n )) {\n this.#executeFetch();\n }\n this.updateResult(notifyOptions);\n if (mounted && (this.#currentQuery !== prevQuery || resolveEnabled(this.options.enabled, this.#currentQuery) !== resolveEnabled(prevOptions.enabled, this.#currentQuery) || resolveStaleTime(this.options.staleTime, this.#currentQuery) !== resolveStaleTime(prevOptions.staleTime, this.#currentQuery))) {\n this.#updateStaleTimeout();\n }\n const nextRefetchInterval = this.#computeRefetchInterval();\n if (mounted && (this.#currentQuery !== prevQuery || resolveEnabled(this.options.enabled, this.#currentQuery) !== resolveEnabled(prevOptions.enabled, this.#currentQuery) || nextRefetchInterval !== this.#currentRefetchInterval)) {\n this.#updateRefetchInterval(nextRefetchInterval);\n }\n }\n getOptimisticResult(options) {\n const query = this.#client.getQueryCache().build(this.#client, options);\n const result = this.createResult(query, options);\n if (shouldAssignObserverCurrentProperties(this, result)) {\n this.#currentResult = result;\n this.#currentResultOptions = this.options;\n this.#currentResultState = this.#currentQuery.state;\n }\n return result;\n }\n getCurrentResult() {\n return this.#currentResult;\n }\n trackResult(result, onPropTracked) {\n const trackedResult = {};\n Object.keys(result).forEach((key) => {\n Object.defineProperty(trackedResult, key, {\n configurable: false,\n enumerable: true,\n get: () => {\n this.trackProp(key);\n onPropTracked?.(key);\n return result[key];\n }\n });\n });\n return trackedResult;\n }\n trackProp(key) {\n this.#trackedProps.add(key);\n }\n getCurrentQuery() {\n return this.#currentQuery;\n }\n refetch({ ...options } = {}) {\n return this.fetch({\n ...options\n });\n }\n fetchOptimistic(options) {\n const defaultedOptions = this.#client.defaultQueryOptions(options);\n const query = this.#client.getQueryCache().build(this.#client, defaultedOptions);\n query.isFetchingOptimistic = true;\n return query.fetch().then(() => this.createResult(query, defaultedOptions));\n }\n fetch(fetchOptions) {\n return this.#executeFetch({\n ...fetchOptions,\n cancelRefetch: fetchOptions.cancelRefetch ?? true\n }).then(() => {\n this.updateResult();\n return this.#currentResult;\n });\n }\n #executeFetch(fetchOptions) {\n this.#updateQuery();\n let promise = this.#currentQuery.fetch(\n this.options,\n fetchOptions\n );\n if (!fetchOptions?.throwOnError) {\n promise = promise.catch(noop);\n }\n return promise;\n }\n #updateStaleTimeout() {\n this.#clearStaleTimeout();\n const staleTime = resolveStaleTime(\n this.options.staleTime,\n this.#currentQuery\n );\n if (isServer || this.#currentResult.isStale || !isValidTimeout(staleTime)) {\n return;\n }\n const time = timeUntilStale(this.#currentResult.dataUpdatedAt, staleTime);\n const timeout = time + 1;\n this.#staleTimeoutId = setTimeout(() => {\n if (!this.#currentResult.isStale) {\n this.updateResult();\n }\n }, timeout);\n }\n #computeRefetchInterval() {\n return (typeof this.options.refetchInterval === \"function\" ? this.options.refetchInterval(this.#currentQuery) : this.options.refetchInterval) ?? false;\n }\n #updateRefetchInterval(nextInterval) {\n this.#clearRefetchInterval();\n this.#currentRefetchInterval = nextInterval;\n if (isServer || resolveEnabled(this.options.enabled, this.#currentQuery) === false || !isValidTimeout(this.#currentRefetchInterval) || this.#currentRefetchInterval === 0) {\n return;\n }\n this.#refetchIntervalId = setInterval(() => {\n if (this.options.refetchIntervalInBackground || focusManager.isFocused()) {\n this.#executeFetch();\n }\n }, this.#currentRefetchInterval);\n }\n #updateTimers() {\n this.#updateStaleTimeout();\n this.#updateRefetchInterval(this.#computeRefetchInterval());\n }\n #clearStaleTimeout() {\n if (this.#staleTimeoutId) {\n clearTimeout(this.#staleTimeoutId);\n this.#staleTimeoutId = void 0;\n }\n }\n #clearRefetchInterval() {\n if (this.#refetchIntervalId) {\n clearInterval(this.#refetchIntervalId);\n this.#refetchIntervalId = void 0;\n }\n }\n createResult(query, options) {\n const prevQuery = this.#currentQuery;\n const prevOptions = this.options;\n const prevResult = this.#currentResult;\n const prevResultState = this.#currentResultState;\n const prevResultOptions = this.#currentResultOptions;\n const queryChange = query !== prevQuery;\n const queryInitialState = queryChange ? query.state : this.#currentQueryInitialState;\n const { state } = query;\n let newState = { ...state };\n let isPlaceholderData = false;\n let data;\n if (options._optimisticResults) {\n const mounted = this.hasListeners();\n const fetchOnMount = !mounted && shouldFetchOnMount(query, options);\n const fetchOptionally = mounted && shouldFetchOptionally(query, prevQuery, options, prevOptions);\n if (fetchOnMount || fetchOptionally) {\n newState = {\n ...newState,\n ...fetchState(state.data, query.options)\n };\n }\n if (options._optimisticResults === \"isRestoring\") {\n newState.fetchStatus = \"idle\";\n }\n }\n let { error, errorUpdatedAt, status } = newState;\n if (options.select && newState.data !== void 0) {\n if (prevResult && newState.data === prevResultState?.data && options.select === this.#selectFn) {\n data = this.#selectResult;\n } else {\n try {\n this.#selectFn = options.select;\n data = options.select(newState.data);\n data = replaceData(prevResult?.data, data, options);\n this.#selectResult = data;\n this.#selectError = null;\n } catch (selectError) {\n this.#selectError = selectError;\n }\n }\n } else {\n data = newState.data;\n }\n if (options.placeholderData !== void 0 && data === void 0 && status === \"pending\") {\n let placeholderData;\n if (prevResult?.isPlaceholderData && options.placeholderData === prevResultOptions?.placeholderData) {\n placeholderData = prevResult.data;\n } else {\n placeholderData = typeof options.placeholderData === \"function\" ? options.placeholderData(\n this.#lastQueryWithDefinedData?.state.data,\n this.#lastQueryWithDefinedData\n ) : options.placeholderData;\n if (options.select && placeholderData !== void 0) {\n try {\n placeholderData = options.select(placeholderData);\n this.#selectError = null;\n } catch (selectError) {\n this.#selectError = selectError;\n }\n }\n }\n if (placeholderData !== void 0) {\n status = \"success\";\n data = replaceData(\n prevResult?.data,\n placeholderData,\n options\n );\n isPlaceholderData = true;\n }\n }\n if (this.#selectError) {\n error = this.#selectError;\n data = this.#selectResult;\n errorUpdatedAt = Date.now();\n status = \"error\";\n }\n const isFetching = newState.fetchStatus === \"fetching\";\n const isPending = status === \"pending\";\n const isError = status === \"error\";\n const isLoading = isPending && isFetching;\n const hasData = data !== void 0;\n const result = {\n status,\n fetchStatus: newState.fetchStatus,\n isPending,\n isSuccess: status === \"success\",\n isError,\n isInitialLoading: isLoading,\n isLoading,\n data,\n dataUpdatedAt: newState.dataUpdatedAt,\n error,\n errorUpdatedAt,\n failureCount: newState.fetchFailureCount,\n failureReason: newState.fetchFailureReason,\n errorUpdateCount: newState.errorUpdateCount,\n isFetched: newState.dataUpdateCount > 0 || newState.errorUpdateCount > 0,\n isFetchedAfterMount: newState.dataUpdateCount > queryInitialState.dataUpdateCount || newState.errorUpdateCount > queryInitialState.errorUpdateCount,\n isFetching,\n isRefetching: isFetching && !isPending,\n isLoadingError: isError && !hasData,\n isPaused: newState.fetchStatus === \"paused\",\n isPlaceholderData,\n isRefetchError: isError && hasData,\n isStale: isStale(query, options),\n refetch: this.refetch\n };\n return result;\n }\n updateResult(notifyOptions) {\n const prevResult = this.#currentResult;\n const nextResult = this.createResult(this.#currentQuery, this.options);\n this.#currentResultState = this.#currentQuery.state;\n this.#currentResultOptions = this.options;\n if (this.#currentResultState.data !== void 0) {\n this.#lastQueryWithDefinedData = this.#currentQuery;\n }\n if (shallowEqualObjects(nextResult, prevResult)) {\n return;\n }\n this.#currentResult = nextResult;\n const defaultNotifyOptions = {};\n const shouldNotifyListeners = () => {\n if (!prevResult) {\n return true;\n }\n const { notifyOnChangeProps } = this.options;\n const notifyOnChangePropsValue = typeof notifyOnChangeProps === \"function\" ? notifyOnChangeProps() : notifyOnChangeProps;\n if (notifyOnChangePropsValue === \"all\" || !notifyOnChangePropsValue && !this.#trackedProps.size) {\n return true;\n }\n const includedProps = new Set(\n notifyOnChangePropsValue ?? this.#trackedProps\n );\n if (this.options.throwOnError) {\n includedProps.add(\"error\");\n }\n return Object.keys(this.#currentResult).some((key) => {\n const typedKey = key;\n const changed = this.#currentResult[typedKey] !== prevResult[typedKey];\n return changed && includedProps.has(typedKey);\n });\n };\n if (notifyOptions?.listeners !== false && shouldNotifyListeners()) {\n defaultNotifyOptions.listeners = true;\n }\n this.#notify({ ...defaultNotifyOptions, ...notifyOptions });\n }\n #updateQuery() {\n const query = this.#client.getQueryCache().build(this.#client, this.options);\n if (query === this.#currentQuery) {\n return;\n }\n const prevQuery = this.#currentQuery;\n this.#currentQuery = query;\n this.#currentQueryInitialState = query.state;\n if (this.hasListeners()) {\n prevQuery?.removeObserver(this);\n query.addObserver(this);\n }\n }\n onQueryUpdate() {\n this.updateResult();\n if (this.hasListeners()) {\n this.#updateTimers();\n }\n }\n #notify(notifyOptions) {\n notifyManager.batch(() => {\n if (notifyOptions.listeners) {\n this.listeners.forEach((listener) => {\n listener(this.#currentResult);\n });\n }\n this.#client.getQueryCache().notify({\n query: this.#currentQuery,\n type: \"observerResultsUpdated\"\n });\n });\n }\n};\nfunction shouldLoadOnMount(query, options) {\n return resolveEnabled(options.enabled, query) !== false && query.state.data === void 0 && !(query.state.status === \"error\" && options.retryOnMount === false);\n}\nfunction shouldFetchOnMount(query, options) {\n return shouldLoadOnMount(query, options) || query.state.data !== void 0 && shouldFetchOn(query, options, options.refetchOnMount);\n}\nfunction shouldFetchOn(query, options, field) {\n if (resolveEnabled(options.enabled, query) !== false) {\n const value = typeof field === \"function\" ? field(query) : field;\n return value === \"always\" || value !== false && isStale(query, options);\n }\n return false;\n}\nfunction shouldFetchOptionally(query, prevQuery, options, prevOptions) {\n return (query !== prevQuery || resolveEnabled(prevOptions.enabled, query) === false) && (!options.suspense || query.state.status !== \"error\") && isStale(query, options);\n}\nfunction isStale(query, options) {\n return resolveEnabled(options.enabled, query) !== false && query.isStaleByTime(resolveStaleTime(options.staleTime, query));\n}\nfunction shouldAssignObserverCurrentProperties(observer, optimisticResult) {\n if (!shallowEqualObjects(observer.getCurrentResult(), optimisticResult)) {\n return true;\n }\n return false;\n}\nexport {\n QueryObserver\n};\n//# sourceMappingURL=queryObserver.js.map","\"use client\";\n\n// src/QueryErrorResetBoundary.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createValue() {\n let isReset = false;\n return {\n clearReset: () => {\n isReset = false;\n },\n reset: () => {\n isReset = true;\n },\n isReset: () => {\n return isReset;\n }\n };\n}\nvar QueryErrorResetBoundaryContext = React.createContext(createValue());\nvar useQueryErrorResetBoundary = () => React.useContext(QueryErrorResetBoundaryContext);\nvar QueryErrorResetBoundary = ({\n children\n}) => {\n const [value] = React.useState(() => createValue());\n return /* @__PURE__ */ jsx(QueryErrorResetBoundaryContext.Provider, { value, children: typeof children === \"function\" ? children(value) : children });\n};\nexport {\n QueryErrorResetBoundary,\n useQueryErrorResetBoundary\n};\n//# sourceMappingURL=QueryErrorResetBoundary.js.map","\"use client\";\n\n// src/isRestoring.ts\nimport * as React from \"react\";\nvar IsRestoringContext = React.createContext(false);\nvar useIsRestoring = () => React.useContext(IsRestoringContext);\nvar IsRestoringProvider = IsRestoringContext.Provider;\nexport {\n IsRestoringProvider,\n useIsRestoring\n};\n//# sourceMappingURL=isRestoring.js.map","// src/utils.ts\nfunction shouldThrowError(throwError, params) {\n if (typeof throwError === \"function\") {\n return throwError(...params);\n }\n return !!throwError;\n}\nfunction noop() {\n}\nexport {\n noop,\n shouldThrowError\n};\n//# sourceMappingURL=utils.js.map","\"use client\";\n\n// src/errorBoundaryUtils.ts\nimport * as React from \"react\";\nimport { shouldThrowError } from \"./utils.js\";\nvar ensurePreventErrorBoundaryRetry = (options, errorResetBoundary) => {\n if (options.suspense || options.throwOnError) {\n if (!errorResetBoundary.isReset()) {\n options.retryOnMount = false;\n }\n }\n};\nvar useClearResetErrorBoundary = (errorResetBoundary) => {\n React.useEffect(() => {\n errorResetBoundary.clearReset();\n }, [errorResetBoundary]);\n};\nvar getHasError = ({\n result,\n errorResetBoundary,\n throwOnError,\n query\n}) => {\n return result.isError && !errorResetBoundary.isReset() && !result.isFetching && query && shouldThrowError(throwOnError, [result.error, query]);\n};\nexport {\n ensurePreventErrorBoundaryRetry,\n getHasError,\n useClearResetErrorBoundary\n};\n//# sourceMappingURL=errorBoundaryUtils.js.map","// src/suspense.ts\nvar defaultThrowOnError = (_error, query) => query.state.data === void 0;\nvar ensureStaleTime = (defaultedOptions) => {\n if (defaultedOptions.suspense) {\n if (typeof defaultedOptions.staleTime !== \"number\") {\n defaultedOptions.staleTime = 1e3;\n }\n }\n};\nvar willFetch = (result, isRestoring) => result.isLoading && result.isFetching && !isRestoring;\nvar shouldSuspend = (defaultedOptions, result) => defaultedOptions?.suspense && result.isPending;\nvar fetchOptimistic = (defaultedOptions, observer, errorResetBoundary) => observer.fetchOptimistic(defaultedOptions).catch(() => {\n errorResetBoundary.clearReset();\n});\nexport {\n defaultThrowOnError,\n ensureStaleTime,\n fetchOptimistic,\n shouldSuspend,\n willFetch\n};\n//# sourceMappingURL=suspense.js.map","\"use client\";\n\n// src/useQuery.ts\nimport { QueryObserver } from \"@tanstack/query-core\";\nimport { useBaseQuery } from \"./useBaseQuery.js\";\nfunction useQuery(options, queryClient) {\n return useBaseQuery(options, QueryObserver, queryClient);\n}\nexport {\n useQuery\n};\n//# sourceMappingURL=useQuery.js.map","\"use client\";\n\n// src/useBaseQuery.ts\nimport * as React from \"react\";\nimport { notifyManager } from \"@tanstack/query-core\";\nimport { useQueryErrorResetBoundary } from \"./QueryErrorResetBoundary.js\";\nimport { useQueryClient } from \"./QueryClientProvider.js\";\nimport { useIsRestoring } from \"./isRestoring.js\";\nimport {\n ensurePreventErrorBoundaryRetry,\n getHasError,\n useClearResetErrorBoundary\n} from \"./errorBoundaryUtils.js\";\nimport { ensureStaleTime, fetchOptimistic, shouldSuspend } from \"./suspense.js\";\nfunction useBaseQuery(options, Observer, queryClient) {\n if (process.env.NODE_ENV !== \"production\") {\n if (typeof options !== \"object\" || Array.isArray(options)) {\n throw new Error(\n 'Bad argument type. Starting with v5, only the \"Object\" form is allowed when calling query related functions. Please use the error stack to find the culprit call. More info here: https://tanstack.com/query/latest/docs/react/guides/migrating-to-v5#supports-a-single-signature-one-object'\n );\n }\n }\n const client = useQueryClient(queryClient);\n const isRestoring = useIsRestoring();\n const errorResetBoundary = useQueryErrorResetBoundary();\n const defaultedOptions = client.defaultQueryOptions(options);\n client.getDefaultOptions().queries?._experimental_beforeQuery?.(\n defaultedOptions\n );\n defaultedOptions._optimisticResults = isRestoring ? \"isRestoring\" : \"optimistic\";\n ensureStaleTime(defaultedOptions);\n ensurePreventErrorBoundaryRetry(defaultedOptions, errorResetBoundary);\n useClearResetErrorBoundary(errorResetBoundary);\n const [observer] = React.useState(\n () => new Observer(\n client,\n defaultedOptions\n )\n );\n const result = observer.getOptimisticResult(defaultedOptions);\n React.useSyncExternalStore(\n React.useCallback(\n (onStoreChange) => {\n const unsubscribe = isRestoring ? () => void 0 : observer.subscribe(notifyManager.batchCalls(onStoreChange));\n observer.updateResult();\n return unsubscribe;\n },\n [observer, isRestoring]\n ),\n () => observer.getCurrentResult(),\n () => observer.getCurrentResult()\n );\n React.useEffect(() => {\n observer.setOptions(defaultedOptions, { listeners: false });\n }, [defaultedOptions, observer]);\n if (shouldSuspend(defaultedOptions, result)) {\n throw fetchOptimistic(defaultedOptions, observer, errorResetBoundary);\n }\n if (getHasError({\n result,\n errorResetBoundary,\n throwOnError: defaultedOptions.throwOnError,\n query: client.getQueryCache().get(defaultedOptions.queryHash)\n })) {\n throw result.error;\n }\n ;\n client.getDefaultOptions().queries?._experimental_afterQuery?.(\n defaultedOptions,\n result\n );\n return !defaultedOptions.notifyOnChangeProps ? observer.trackResult(result) : result;\n}\nexport {\n useBaseQuery\n};\n//# sourceMappingURL=useBaseQuery.js.map","import { ApiClient } from '@shared/infrastructure/http/ApiClient';\n\nexport type Stats = {\n hasIngestedData: boolean;\n oldestProfileTime: number;\n newestProfileTime: number;\n};\n\nclass StatsApiClient extends ApiClient {\n async get(): Promise {\n const response = await this.fetch('/querier.v1.QuerierService/GetProfileStats', {\n method: 'POST',\n body: JSON.stringify({}),\n });\n\n const json = await response.json();\n\n return {\n hasIngestedData: json.dataIngested,\n oldestProfileTime: Number(json.oldestProfileTime),\n newestProfileTime: Number(json.newestProfileTime),\n };\n }\n}\n\nexport const statsApiClient = new StatsApiClient();\n","import { ApiClient } from '@shared/infrastructure/http/ApiClient';\nimport { DomainHookReturnValue } from '@shared/types/DomainHookReturnValue';\nimport { useState } from 'react';\n\nimport { useFetchTenantStats } from '../infrastructure/useFetchTenantStats';\n\nexport function useOnboarding(): DomainHookReturnValue {\n const [isModalClosed, setIsModalClosed] = useState(false);\n\n const pyroscopeDataSourcesCount = ApiClient.getPyroscopeDataSources().length;\n const { isFetching, error, stats } = useFetchTenantStats({ enabled: pyroscopeDataSourcesCount > 0 });\n const hasNoUserData = !isFetching && !stats?.hasIngestedData;\n\n return {\n data: {\n shouldShowLoadingPage: !error && isFetching,\n shouldShowOnboardingPage: (error || !pyroscopeDataSourcesCount || hasNoUserData) && !isModalClosed,\n shouldShowNoDataSourceBanner: !pyroscopeDataSourcesCount,\n },\n actions: {\n closeModal() {\n setIsModalClosed(true);\n },\n },\n };\n}\n","import { useQuery } from '@tanstack/react-query';\n\nimport { Stats, statsApiClient } from './statsApiClient';\n\ntype FetchResponse = {\n isFetching: boolean;\n error: Error | null;\n stats?: Stats;\n refetch: () => void;\n};\n\nexport function useFetchTenantStats({ enabled }: { enabled: boolean }): FetchResponse {\n const { isFetching, error, data, refetch } = useQuery({\n enabled,\n placeholderData: () => ({ hasIngestedData: true, oldestProfileTime: 0, newestProfileTime: 0 }),\n queryKey: ['tenant-stats'],\n queryFn: () => {\n statsApiClient.abort();\n\n return statsApiClient.get();\n },\n });\n\n return {\n isFetching,\n error: statsApiClient.isAbortError(error) ? null : error,\n stats: data,\n refetch,\n };\n}\n","import { css } from '@emotion/css';\nimport { formattedValueToString, getValueFormat, GrafanaTheme2 } from '@grafana/data';\nimport { Divider, IconButton, styleMixins, Toggletip, useStyles2 } from '@grafana/ui';\nimport React, { useMemo } from 'react';\n\nimport { QueryAnalysisResult } from './domain/QueryAnalysis';\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n row: css({\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'flex-start',\n }),\n headerColumn: css({\n display: 'flex',\n flexDirection: 'column',\n minWidth: '120px',\n alignItems: 'start',\n }),\n column: css({\n display: 'flex',\n flexDirection: 'column',\n minWidth: '120px',\n alignItems: 'end',\n }),\n tooltip: css({\n display: 'flex',\n color: theme.colors.text.secondary,\n fontSize: theme.typography.bodySmall.fontSize,\n }),\n contentWithIcon: css({\n display: 'none',\n\n [`@media ${styleMixins.mediaUp(theme.v1.breakpoints.sm)}`]: {\n display: 'block',\n },\n }),\n});\n\ntype QueryAnalysisTooltipProps = {\n data: QueryAnalysisResult;\n};\n\nconst formatSize = (size: number) => formattedValueToString(getValueFormat('decbytes')(size));\n\nconst formatCount = (count: number) => formattedValueToString(getValueFormat('short')(count));\n\nexport function QueryAnalysisTooltip(props: QueryAnalysisTooltipProps) {\n const styles = useStyles2(getStyles);\n const { data } = props;\n const totalBytesInTimeRange = formatSize(data.queryImpact.totalBytesInTimeRange);\n\n const queryAnalysisTooltip = useMemo(() => {\n return (\n
\n
\n
Data in time range
\n
{totalBytesInTimeRange}
\n
 
\n
\n {data.queryImpact.totalQueriedSeries !== undefined && (\n
\n
Series in query
\n
{formatCount(data.queryImpact.totalQueriedSeries)}
\n
 
\n
\n )}\n
\n
Deduplication
\n
{data.queryImpact.deduplicationNeeded ? 'yes' : 'no'}
\n
 
\n
\n \n
\n
 
\n {data.queryScopes.map((s, i) => (\n
\n {s.componentType}\n
\n ))}\n
\n
\n
Replicas
\n {data.queryScopes.map((s, i) => (\n
\n {s.componentCount || '/'}\n
\n ))}\n
\n
\n
Blocks
\n {data.queryScopes.map((s, i) => (\n
\n {formatCount(s.blockCount) || '/'}\n
\n ))}\n
\n
\n
Series
\n {data.queryScopes.map((s, i) => (\n
\n {formatCount(s.seriesCount) || '/'}\n
\n ))}\n
\n
\n
Profiles
\n {data.queryScopes.map((s, i) => (\n
\n {formatCount(s.profileCount) || '/'}\n
\n ))}\n
\n
\n
Samples
\n {data.queryScopes.map((s, i) => (\n
\n {formatCount(s.sampleCount) || '/'}\n
\n ))}\n
\n
\n
 
\n
 
\n
 
\n
\n
\n
Index Store
\n {data.queryScopes.map((s, i) => (\n
\n {formatSize(s.indexBytes) || '/'}\n
\n ))}\n
\n
\n
Profiles Store
\n {data.queryScopes.map((s, i) => (\n
\n {formatSize(s.profileBytes) || '/'}\n
\n ))}\n
\n
\n
Symbols Store
\n {data.queryScopes.map((s, i) => (\n
\n {formatSize(s.symbolBytes) || '/'}\n
\n ))}\n
\n
\n );\n }, [data, styles, totalBytesInTimeRange]);\n\n return (\n <>\n {data.queryImpact.totalBytesInTimeRange !== undefined ? (\n \n
\n Stored data in time range: {totalBytesInTimeRange}\n  \n \n
\n
\n ) : null}\n \n );\n}\n","import PropTypes from 'prop-types';\nimport withSideEffect from 'react-side-effect';\nimport isEqual from 'react-fast-compare';\nimport React from 'react';\nimport objectAssign from 'object-assign';\n\nvar ATTRIBUTE_NAMES = {\n BODY: \"bodyAttributes\",\n HTML: \"htmlAttributes\",\n TITLE: \"titleAttributes\"\n};\n\nvar TAG_NAMES = {\n BASE: \"base\",\n BODY: \"body\",\n HEAD: \"head\",\n HTML: \"html\",\n LINK: \"link\",\n META: \"meta\",\n NOSCRIPT: \"noscript\",\n SCRIPT: \"script\",\n STYLE: \"style\",\n TITLE: \"title\"\n};\n\nvar VALID_TAG_NAMES = Object.keys(TAG_NAMES).map(function (name) {\n return TAG_NAMES[name];\n});\n\nvar TAG_PROPERTIES = {\n CHARSET: \"charset\",\n CSS_TEXT: \"cssText\",\n HREF: \"href\",\n HTTPEQUIV: \"http-equiv\",\n INNER_HTML: \"innerHTML\",\n ITEM_PROP: \"itemprop\",\n NAME: \"name\",\n PROPERTY: \"property\",\n REL: \"rel\",\n SRC: \"src\",\n TARGET: \"target\"\n};\n\nvar REACT_TAG_MAP = {\n accesskey: \"accessKey\",\n charset: \"charSet\",\n class: \"className\",\n contenteditable: \"contentEditable\",\n contextmenu: \"contextMenu\",\n \"http-equiv\": \"httpEquiv\",\n itemprop: \"itemProp\",\n tabindex: \"tabIndex\"\n};\n\nvar HELMET_PROPS = {\n DEFAULT_TITLE: \"defaultTitle\",\n DEFER: \"defer\",\n ENCODE_SPECIAL_CHARACTERS: \"encodeSpecialCharacters\",\n ON_CHANGE_CLIENT_STATE: \"onChangeClientState\",\n TITLE_TEMPLATE: \"titleTemplate\"\n};\n\nvar HTML_TAG_MAP = Object.keys(REACT_TAG_MAP).reduce(function (obj, key) {\n obj[REACT_TAG_MAP[key]] = key;\n return obj;\n}, {});\n\nvar SELF_CLOSING_TAGS = [TAG_NAMES.NOSCRIPT, TAG_NAMES.SCRIPT, TAG_NAMES.STYLE];\n\nvar HELMET_ATTRIBUTE = \"data-react-helmet\";\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\nvar objectWithoutProperties = function (obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\nvar encodeSpecialCharacters = function encodeSpecialCharacters(str) {\n var encode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (encode === false) {\n return String(str);\n }\n\n return String(str).replace(/&/g, \"&\").replace(//g, \">\").replace(/\"/g, \""\").replace(/'/g, \"'\");\n};\n\nvar getTitleFromPropsList = function getTitleFromPropsList(propsList) {\n var innermostTitle = getInnermostProperty(propsList, TAG_NAMES.TITLE);\n var innermostTemplate = getInnermostProperty(propsList, HELMET_PROPS.TITLE_TEMPLATE);\n\n if (innermostTemplate && innermostTitle) {\n // use function arg to avoid need to escape $ characters\n return innermostTemplate.replace(/%s/g, function () {\n return Array.isArray(innermostTitle) ? innermostTitle.join(\"\") : innermostTitle;\n });\n }\n\n var innermostDefaultTitle = getInnermostProperty(propsList, HELMET_PROPS.DEFAULT_TITLE);\n\n return innermostTitle || innermostDefaultTitle || undefined;\n};\n\nvar getOnChangeClientState = function getOnChangeClientState(propsList) {\n return getInnermostProperty(propsList, HELMET_PROPS.ON_CHANGE_CLIENT_STATE) || function () {};\n};\n\nvar getAttributesFromPropsList = function getAttributesFromPropsList(tagType, propsList) {\n return propsList.filter(function (props) {\n return typeof props[tagType] !== \"undefined\";\n }).map(function (props) {\n return props[tagType];\n }).reduce(function (tagAttrs, current) {\n return _extends({}, tagAttrs, current);\n }, {});\n};\n\nvar getBaseTagFromPropsList = function getBaseTagFromPropsList(primaryAttributes, propsList) {\n return propsList.filter(function (props) {\n return typeof props[TAG_NAMES.BASE] !== \"undefined\";\n }).map(function (props) {\n return props[TAG_NAMES.BASE];\n }).reverse().reduce(function (innermostBaseTag, tag) {\n if (!innermostBaseTag.length) {\n var keys = Object.keys(tag);\n\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && tag[lowerCaseAttributeKey]) {\n return innermostBaseTag.concat(tag);\n }\n }\n }\n\n return innermostBaseTag;\n }, []);\n};\n\nvar getTagsFromPropsList = function getTagsFromPropsList(tagName, primaryAttributes, propsList) {\n // Calculate list of tags, giving priority innermost component (end of the propslist)\n var approvedSeenTags = {};\n\n return propsList.filter(function (props) {\n if (Array.isArray(props[tagName])) {\n return true;\n }\n if (typeof props[tagName] !== \"undefined\") {\n warn(\"Helmet: \" + tagName + \" should be of type \\\"Array\\\". Instead found type \\\"\" + _typeof(props[tagName]) + \"\\\"\");\n }\n return false;\n }).map(function (props) {\n return props[tagName];\n }).reverse().reduce(function (approvedTags, instanceTags) {\n var instanceSeenTags = {};\n\n instanceTags.filter(function (tag) {\n var primaryAttributeKey = void 0;\n var keys = Object.keys(tag);\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n // Special rule with link tags, since rel and href are both primary tags, rel takes priority\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && !(primaryAttributeKey === TAG_PROPERTIES.REL && tag[primaryAttributeKey].toLowerCase() === \"canonical\") && !(lowerCaseAttributeKey === TAG_PROPERTIES.REL && tag[lowerCaseAttributeKey].toLowerCase() === \"stylesheet\")) {\n primaryAttributeKey = lowerCaseAttributeKey;\n }\n // Special case for innerHTML which doesn't work lowercased\n if (primaryAttributes.indexOf(attributeKey) !== -1 && (attributeKey === TAG_PROPERTIES.INNER_HTML || attributeKey === TAG_PROPERTIES.CSS_TEXT || attributeKey === TAG_PROPERTIES.ITEM_PROP)) {\n primaryAttributeKey = attributeKey;\n }\n }\n\n if (!primaryAttributeKey || !tag[primaryAttributeKey]) {\n return false;\n }\n\n var value = tag[primaryAttributeKey].toLowerCase();\n\n if (!approvedSeenTags[primaryAttributeKey]) {\n approvedSeenTags[primaryAttributeKey] = {};\n }\n\n if (!instanceSeenTags[primaryAttributeKey]) {\n instanceSeenTags[primaryAttributeKey] = {};\n }\n\n if (!approvedSeenTags[primaryAttributeKey][value]) {\n instanceSeenTags[primaryAttributeKey][value] = true;\n return true;\n }\n\n return false;\n }).reverse().forEach(function (tag) {\n return approvedTags.push(tag);\n });\n\n // Update seen tags with tags from this instance\n var keys = Object.keys(instanceSeenTags);\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var tagUnion = objectAssign({}, approvedSeenTags[attributeKey], instanceSeenTags[attributeKey]);\n\n approvedSeenTags[attributeKey] = tagUnion;\n }\n\n return approvedTags;\n }, []).reverse();\n};\n\nvar getInnermostProperty = function getInnermostProperty(propsList, property) {\n for (var i = propsList.length - 1; i >= 0; i--) {\n var props = propsList[i];\n\n if (props.hasOwnProperty(property)) {\n return props[property];\n }\n }\n\n return null;\n};\n\nvar reducePropsToState = function reducePropsToState(propsList) {\n return {\n baseTag: getBaseTagFromPropsList([TAG_PROPERTIES.HREF, TAG_PROPERTIES.TARGET], propsList),\n bodyAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.BODY, propsList),\n defer: getInnermostProperty(propsList, HELMET_PROPS.DEFER),\n encode: getInnermostProperty(propsList, HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),\n htmlAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.HTML, propsList),\n linkTags: getTagsFromPropsList(TAG_NAMES.LINK, [TAG_PROPERTIES.REL, TAG_PROPERTIES.HREF], propsList),\n metaTags: getTagsFromPropsList(TAG_NAMES.META, [TAG_PROPERTIES.NAME, TAG_PROPERTIES.CHARSET, TAG_PROPERTIES.HTTPEQUIV, TAG_PROPERTIES.PROPERTY, TAG_PROPERTIES.ITEM_PROP], propsList),\n noscriptTags: getTagsFromPropsList(TAG_NAMES.NOSCRIPT, [TAG_PROPERTIES.INNER_HTML], propsList),\n onChangeClientState: getOnChangeClientState(propsList),\n scriptTags: getTagsFromPropsList(TAG_NAMES.SCRIPT, [TAG_PROPERTIES.SRC, TAG_PROPERTIES.INNER_HTML], propsList),\n styleTags: getTagsFromPropsList(TAG_NAMES.STYLE, [TAG_PROPERTIES.CSS_TEXT], propsList),\n title: getTitleFromPropsList(propsList),\n titleAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.TITLE, propsList)\n };\n};\n\nvar rafPolyfill = function () {\n var clock = Date.now();\n\n return function (callback) {\n var currentTime = Date.now();\n\n if (currentTime - clock > 16) {\n clock = currentTime;\n callback(currentTime);\n } else {\n setTimeout(function () {\n rafPolyfill(callback);\n }, 0);\n }\n };\n}();\n\nvar cafPolyfill = function cafPolyfill(id) {\n return clearTimeout(id);\n};\n\nvar requestAnimationFrame = typeof window !== \"undefined\" ? window.requestAnimationFrame && window.requestAnimationFrame.bind(window) || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || rafPolyfill : global.requestAnimationFrame || rafPolyfill;\n\nvar cancelAnimationFrame = typeof window !== \"undefined\" ? window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || cafPolyfill : global.cancelAnimationFrame || cafPolyfill;\n\nvar warn = function warn(msg) {\n return console && typeof console.warn === \"function\" && console.warn(msg);\n};\n\nvar _helmetCallback = null;\n\nvar handleClientStateChange = function handleClientStateChange(newState) {\n if (_helmetCallback) {\n cancelAnimationFrame(_helmetCallback);\n }\n\n if (newState.defer) {\n _helmetCallback = requestAnimationFrame(function () {\n commitTagChanges(newState, function () {\n _helmetCallback = null;\n });\n });\n } else {\n commitTagChanges(newState);\n _helmetCallback = null;\n }\n};\n\nvar commitTagChanges = function commitTagChanges(newState, cb) {\n var baseTag = newState.baseTag,\n bodyAttributes = newState.bodyAttributes,\n htmlAttributes = newState.htmlAttributes,\n linkTags = newState.linkTags,\n metaTags = newState.metaTags,\n noscriptTags = newState.noscriptTags,\n onChangeClientState = newState.onChangeClientState,\n scriptTags = newState.scriptTags,\n styleTags = newState.styleTags,\n title = newState.title,\n titleAttributes = newState.titleAttributes;\n\n updateAttributes(TAG_NAMES.BODY, bodyAttributes);\n updateAttributes(TAG_NAMES.HTML, htmlAttributes);\n\n updateTitle(title, titleAttributes);\n\n var tagUpdates = {\n baseTag: updateTags(TAG_NAMES.BASE, baseTag),\n linkTags: updateTags(TAG_NAMES.LINK, linkTags),\n metaTags: updateTags(TAG_NAMES.META, metaTags),\n noscriptTags: updateTags(TAG_NAMES.NOSCRIPT, noscriptTags),\n scriptTags: updateTags(TAG_NAMES.SCRIPT, scriptTags),\n styleTags: updateTags(TAG_NAMES.STYLE, styleTags)\n };\n\n var addedTags = {};\n var removedTags = {};\n\n Object.keys(tagUpdates).forEach(function (tagType) {\n var _tagUpdates$tagType = tagUpdates[tagType],\n newTags = _tagUpdates$tagType.newTags,\n oldTags = _tagUpdates$tagType.oldTags;\n\n\n if (newTags.length) {\n addedTags[tagType] = newTags;\n }\n if (oldTags.length) {\n removedTags[tagType] = tagUpdates[tagType].oldTags;\n }\n });\n\n cb && cb();\n\n onChangeClientState(newState, addedTags, removedTags);\n};\n\nvar flattenArray = function flattenArray(possibleArray) {\n return Array.isArray(possibleArray) ? possibleArray.join(\"\") : possibleArray;\n};\n\nvar updateTitle = function updateTitle(title, attributes) {\n if (typeof title !== \"undefined\" && document.title !== title) {\n document.title = flattenArray(title);\n }\n\n updateAttributes(TAG_NAMES.TITLE, attributes);\n};\n\nvar updateAttributes = function updateAttributes(tagName, attributes) {\n var elementTag = document.getElementsByTagName(tagName)[0];\n\n if (!elementTag) {\n return;\n }\n\n var helmetAttributeString = elementTag.getAttribute(HELMET_ATTRIBUTE);\n var helmetAttributes = helmetAttributeString ? helmetAttributeString.split(\",\") : [];\n var attributesToRemove = [].concat(helmetAttributes);\n var attributeKeys = Object.keys(attributes);\n\n for (var i = 0; i < attributeKeys.length; i++) {\n var attribute = attributeKeys[i];\n var value = attributes[attribute] || \"\";\n\n if (elementTag.getAttribute(attribute) !== value) {\n elementTag.setAttribute(attribute, value);\n }\n\n if (helmetAttributes.indexOf(attribute) === -1) {\n helmetAttributes.push(attribute);\n }\n\n var indexToSave = attributesToRemove.indexOf(attribute);\n if (indexToSave !== -1) {\n attributesToRemove.splice(indexToSave, 1);\n }\n }\n\n for (var _i = attributesToRemove.length - 1; _i >= 0; _i--) {\n elementTag.removeAttribute(attributesToRemove[_i]);\n }\n\n if (helmetAttributes.length === attributesToRemove.length) {\n elementTag.removeAttribute(HELMET_ATTRIBUTE);\n } else if (elementTag.getAttribute(HELMET_ATTRIBUTE) !== attributeKeys.join(\",\")) {\n elementTag.setAttribute(HELMET_ATTRIBUTE, attributeKeys.join(\",\"));\n }\n};\n\nvar updateTags = function updateTags(type, tags) {\n var headElement = document.head || document.querySelector(TAG_NAMES.HEAD);\n var tagNodes = headElement.querySelectorAll(type + \"[\" + HELMET_ATTRIBUTE + \"]\");\n var oldTags = Array.prototype.slice.call(tagNodes);\n var newTags = [];\n var indexToDelete = void 0;\n\n if (tags && tags.length) {\n tags.forEach(function (tag) {\n var newElement = document.createElement(type);\n\n for (var attribute in tag) {\n if (tag.hasOwnProperty(attribute)) {\n if (attribute === TAG_PROPERTIES.INNER_HTML) {\n newElement.innerHTML = tag.innerHTML;\n } else if (attribute === TAG_PROPERTIES.CSS_TEXT) {\n if (newElement.styleSheet) {\n newElement.styleSheet.cssText = tag.cssText;\n } else {\n newElement.appendChild(document.createTextNode(tag.cssText));\n }\n } else {\n var value = typeof tag[attribute] === \"undefined\" ? \"\" : tag[attribute];\n newElement.setAttribute(attribute, value);\n }\n }\n }\n\n newElement.setAttribute(HELMET_ATTRIBUTE, \"true\");\n\n // Remove a duplicate tag from domTagstoRemove, so it isn't cleared.\n if (oldTags.some(function (existingTag, index) {\n indexToDelete = index;\n return newElement.isEqualNode(existingTag);\n })) {\n oldTags.splice(indexToDelete, 1);\n } else {\n newTags.push(newElement);\n }\n });\n }\n\n oldTags.forEach(function (tag) {\n return tag.parentNode.removeChild(tag);\n });\n newTags.forEach(function (tag) {\n return headElement.appendChild(tag);\n });\n\n return {\n oldTags: oldTags,\n newTags: newTags\n };\n};\n\nvar generateElementAttributesAsString = function generateElementAttributesAsString(attributes) {\n return Object.keys(attributes).reduce(function (str, key) {\n var attr = typeof attributes[key] !== \"undefined\" ? key + \"=\\\"\" + attributes[key] + \"\\\"\" : \"\" + key;\n return str ? str + \" \" + attr : attr;\n }, \"\");\n};\n\nvar generateTitleAsString = function generateTitleAsString(type, title, attributes, encode) {\n var attributeString = generateElementAttributesAsString(attributes);\n var flattenedTitle = flattenArray(title);\n return attributeString ? \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeString + \">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"\" : \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"\";\n};\n\nvar generateTagsAsString = function generateTagsAsString(type, tags, encode) {\n return tags.reduce(function (str, tag) {\n var attributeHtml = Object.keys(tag).filter(function (attribute) {\n return !(attribute === TAG_PROPERTIES.INNER_HTML || attribute === TAG_PROPERTIES.CSS_TEXT);\n }).reduce(function (string, attribute) {\n var attr = typeof tag[attribute] === \"undefined\" ? attribute : attribute + \"=\\\"\" + encodeSpecialCharacters(tag[attribute], encode) + \"\\\"\";\n return string ? string + \" \" + attr : attr;\n }, \"\");\n\n var tagContent = tag.innerHTML || tag.cssText || \"\";\n\n var isSelfClosing = SELF_CLOSING_TAGS.indexOf(type) === -1;\n\n return str + \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeHtml + (isSelfClosing ? \"/>\" : \">\" + tagContent + \"\");\n }, \"\");\n};\n\nvar convertElementAttributestoReactProps = function convertElementAttributestoReactProps(attributes) {\n var initProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n return Object.keys(attributes).reduce(function (obj, key) {\n obj[REACT_TAG_MAP[key] || key] = attributes[key];\n return obj;\n }, initProps);\n};\n\nvar convertReactPropstoHtmlAttributes = function convertReactPropstoHtmlAttributes(props) {\n var initAttributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n return Object.keys(props).reduce(function (obj, key) {\n obj[HTML_TAG_MAP[key] || key] = props[key];\n return obj;\n }, initAttributes);\n};\n\nvar generateTitleAsReactComponent = function generateTitleAsReactComponent(type, title, attributes) {\n var _initProps;\n\n // assigning into an array to define toString function on it\n var initProps = (_initProps = {\n key: title\n }, _initProps[HELMET_ATTRIBUTE] = true, _initProps);\n var props = convertElementAttributestoReactProps(attributes, initProps);\n\n return [React.createElement(TAG_NAMES.TITLE, props, title)];\n};\n\nvar generateTagsAsReactComponent = function generateTagsAsReactComponent(type, tags) {\n return tags.map(function (tag, i) {\n var _mappedTag;\n\n var mappedTag = (_mappedTag = {\n key: i\n }, _mappedTag[HELMET_ATTRIBUTE] = true, _mappedTag);\n\n Object.keys(tag).forEach(function (attribute) {\n var mappedAttribute = REACT_TAG_MAP[attribute] || attribute;\n\n if (mappedAttribute === TAG_PROPERTIES.INNER_HTML || mappedAttribute === TAG_PROPERTIES.CSS_TEXT) {\n var content = tag.innerHTML || tag.cssText;\n mappedTag.dangerouslySetInnerHTML = { __html: content };\n } else {\n mappedTag[mappedAttribute] = tag[attribute];\n }\n });\n\n return React.createElement(type, mappedTag);\n });\n};\n\nvar getMethodsForTag = function getMethodsForTag(type, tags, encode) {\n switch (type) {\n case TAG_NAMES.TITLE:\n return {\n toComponent: function toComponent() {\n return generateTitleAsReactComponent(type, tags.title, tags.titleAttributes, encode);\n },\n toString: function toString() {\n return generateTitleAsString(type, tags.title, tags.titleAttributes, encode);\n }\n };\n case ATTRIBUTE_NAMES.BODY:\n case ATTRIBUTE_NAMES.HTML:\n return {\n toComponent: function toComponent() {\n return convertElementAttributestoReactProps(tags);\n },\n toString: function toString() {\n return generateElementAttributesAsString(tags);\n }\n };\n default:\n return {\n toComponent: function toComponent() {\n return generateTagsAsReactComponent(type, tags);\n },\n toString: function toString() {\n return generateTagsAsString(type, tags, encode);\n }\n };\n }\n};\n\nvar mapStateOnServer = function mapStateOnServer(_ref) {\n var baseTag = _ref.baseTag,\n bodyAttributes = _ref.bodyAttributes,\n encode = _ref.encode,\n htmlAttributes = _ref.htmlAttributes,\n linkTags = _ref.linkTags,\n metaTags = _ref.metaTags,\n noscriptTags = _ref.noscriptTags,\n scriptTags = _ref.scriptTags,\n styleTags = _ref.styleTags,\n _ref$title = _ref.title,\n title = _ref$title === undefined ? \"\" : _ref$title,\n titleAttributes = _ref.titleAttributes;\n return {\n base: getMethodsForTag(TAG_NAMES.BASE, baseTag, encode),\n bodyAttributes: getMethodsForTag(ATTRIBUTE_NAMES.BODY, bodyAttributes, encode),\n htmlAttributes: getMethodsForTag(ATTRIBUTE_NAMES.HTML, htmlAttributes, encode),\n link: getMethodsForTag(TAG_NAMES.LINK, linkTags, encode),\n meta: getMethodsForTag(TAG_NAMES.META, metaTags, encode),\n noscript: getMethodsForTag(TAG_NAMES.NOSCRIPT, noscriptTags, encode),\n script: getMethodsForTag(TAG_NAMES.SCRIPT, scriptTags, encode),\n style: getMethodsForTag(TAG_NAMES.STYLE, styleTags, encode),\n title: getMethodsForTag(TAG_NAMES.TITLE, { title: title, titleAttributes: titleAttributes }, encode)\n };\n};\n\nvar Helmet = function Helmet(Component) {\n var _class, _temp;\n\n return _temp = _class = function (_React$Component) {\n inherits(HelmetWrapper, _React$Component);\n\n function HelmetWrapper() {\n classCallCheck(this, HelmetWrapper);\n return possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n HelmetWrapper.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n return !isEqual(this.props, nextProps);\n };\n\n HelmetWrapper.prototype.mapNestedChildrenToProps = function mapNestedChildrenToProps(child, nestedChildren) {\n if (!nestedChildren) {\n return null;\n }\n\n switch (child.type) {\n case TAG_NAMES.SCRIPT:\n case TAG_NAMES.NOSCRIPT:\n return {\n innerHTML: nestedChildren\n };\n\n case TAG_NAMES.STYLE:\n return {\n cssText: nestedChildren\n };\n }\n\n throw new Error(\"<\" + child.type + \" /> elements are self-closing and can not contain children. Refer to our API for more information.\");\n };\n\n HelmetWrapper.prototype.flattenArrayTypeChildren = function flattenArrayTypeChildren(_ref) {\n var _babelHelpers$extends;\n\n var child = _ref.child,\n arrayTypeChildren = _ref.arrayTypeChildren,\n newChildProps = _ref.newChildProps,\n nestedChildren = _ref.nestedChildren;\n\n return _extends({}, arrayTypeChildren, (_babelHelpers$extends = {}, _babelHelpers$extends[child.type] = [].concat(arrayTypeChildren[child.type] || [], [_extends({}, newChildProps, this.mapNestedChildrenToProps(child, nestedChildren))]), _babelHelpers$extends));\n };\n\n HelmetWrapper.prototype.mapObjectTypeChildren = function mapObjectTypeChildren(_ref2) {\n var _babelHelpers$extends2, _babelHelpers$extends3;\n\n var child = _ref2.child,\n newProps = _ref2.newProps,\n newChildProps = _ref2.newChildProps,\n nestedChildren = _ref2.nestedChildren;\n\n switch (child.type) {\n case TAG_NAMES.TITLE:\n return _extends({}, newProps, (_babelHelpers$extends2 = {}, _babelHelpers$extends2[child.type] = nestedChildren, _babelHelpers$extends2.titleAttributes = _extends({}, newChildProps), _babelHelpers$extends2));\n\n case TAG_NAMES.BODY:\n return _extends({}, newProps, {\n bodyAttributes: _extends({}, newChildProps)\n });\n\n case TAG_NAMES.HTML:\n return _extends({}, newProps, {\n htmlAttributes: _extends({}, newChildProps)\n });\n }\n\n return _extends({}, newProps, (_babelHelpers$extends3 = {}, _babelHelpers$extends3[child.type] = _extends({}, newChildProps), _babelHelpers$extends3));\n };\n\n HelmetWrapper.prototype.mapArrayTypeChildrenToProps = function mapArrayTypeChildrenToProps(arrayTypeChildren, newProps) {\n var newFlattenedProps = _extends({}, newProps);\n\n Object.keys(arrayTypeChildren).forEach(function (arrayChildName) {\n var _babelHelpers$extends4;\n\n newFlattenedProps = _extends({}, newFlattenedProps, (_babelHelpers$extends4 = {}, _babelHelpers$extends4[arrayChildName] = arrayTypeChildren[arrayChildName], _babelHelpers$extends4));\n });\n\n return newFlattenedProps;\n };\n\n HelmetWrapper.prototype.warnOnInvalidChildren = function warnOnInvalidChildren(child, nestedChildren) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!VALID_TAG_NAMES.some(function (name) {\n return child.type === name;\n })) {\n if (typeof child.type === \"function\") {\n return warn(\"You may be attempting to nest components within each other, which is not allowed. Refer to our API for more information.\");\n }\n\n return warn(\"Only elements types \" + VALID_TAG_NAMES.join(\", \") + \" are allowed. Helmet does not support rendering <\" + child.type + \"> elements. Refer to our API for more information.\");\n }\n\n if (nestedChildren && typeof nestedChildren !== \"string\" && (!Array.isArray(nestedChildren) || nestedChildren.some(function (nestedChild) {\n return typeof nestedChild !== \"string\";\n }))) {\n throw new Error(\"Helmet expects a string as a child of <\" + child.type + \">. Did you forget to wrap your children in braces? ( <\" + child.type + \">{``} ) Refer to our API for more information.\");\n }\n }\n\n return true;\n };\n\n HelmetWrapper.prototype.mapChildrenToProps = function mapChildrenToProps(children, newProps) {\n var _this2 = this;\n\n var arrayTypeChildren = {};\n\n React.Children.forEach(children, function (child) {\n if (!child || !child.props) {\n return;\n }\n\n var _child$props = child.props,\n nestedChildren = _child$props.children,\n childProps = objectWithoutProperties(_child$props, [\"children\"]);\n\n var newChildProps = convertReactPropstoHtmlAttributes(childProps);\n\n _this2.warnOnInvalidChildren(child, nestedChildren);\n\n switch (child.type) {\n case TAG_NAMES.LINK:\n case TAG_NAMES.META:\n case TAG_NAMES.NOSCRIPT:\n case TAG_NAMES.SCRIPT:\n case TAG_NAMES.STYLE:\n arrayTypeChildren = _this2.flattenArrayTypeChildren({\n child: child,\n arrayTypeChildren: arrayTypeChildren,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n\n default:\n newProps = _this2.mapObjectTypeChildren({\n child: child,\n newProps: newProps,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n }\n });\n\n newProps = this.mapArrayTypeChildrenToProps(arrayTypeChildren, newProps);\n return newProps;\n };\n\n HelmetWrapper.prototype.render = function render() {\n var _props = this.props,\n children = _props.children,\n props = objectWithoutProperties(_props, [\"children\"]);\n\n var newProps = _extends({}, props);\n\n if (children) {\n newProps = this.mapChildrenToProps(children, newProps);\n }\n\n return React.createElement(Component, newProps);\n };\n\n createClass(HelmetWrapper, null, [{\n key: \"canUseDOM\",\n\n\n // Component.peek comes from react-side-effect:\n // For testing, you may use a static peek() method available on the returned component.\n // It lets you get the current state without resetting the mounted instance stack.\n // Don’t use it for anything other than testing.\n\n /**\n * @param {Object} base: {\"target\": \"_blank\", \"href\": \"http://mysite.com/\"}\n * @param {Object} bodyAttributes: {\"className\": \"root\"}\n * @param {String} defaultTitle: \"Default Title\"\n * @param {Boolean} defer: true\n * @param {Boolean} encodeSpecialCharacters: true\n * @param {Object} htmlAttributes: {\"lang\": \"en\", \"amp\": undefined}\n * @param {Array} link: [{\"rel\": \"canonical\", \"href\": \"http://mysite.com/example\"}]\n * @param {Array} meta: [{\"name\": \"description\", \"content\": \"Test description\"}]\n * @param {Array} noscript: [{\"innerHTML\": \" console.log(newState)\"\n * @param {Array} script: [{\"type\": \"text/javascript\", \"src\": \"http://mysite.com/js/test.js\"}]\n * @param {Array} style: [{\"type\": \"text/css\", \"cssText\": \"div { display: block; color: blue; }\"}]\n * @param {String} title: \"Title\"\n * @param {Object} titleAttributes: {\"itemprop\": \"name\"}\n * @param {String} titleTemplate: \"MySite.com - %s\"\n */\n set: function set$$1(canUseDOM) {\n Component.canUseDOM = canUseDOM;\n }\n }]);\n return HelmetWrapper;\n }(React.Component), _class.propTypes = {\n base: PropTypes.object,\n bodyAttributes: PropTypes.object,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n defaultTitle: PropTypes.string,\n defer: PropTypes.bool,\n encodeSpecialCharacters: PropTypes.bool,\n htmlAttributes: PropTypes.object,\n link: PropTypes.arrayOf(PropTypes.object),\n meta: PropTypes.arrayOf(PropTypes.object),\n noscript: PropTypes.arrayOf(PropTypes.object),\n onChangeClientState: PropTypes.func,\n script: PropTypes.arrayOf(PropTypes.object),\n style: PropTypes.arrayOf(PropTypes.object),\n title: PropTypes.string,\n titleAttributes: PropTypes.object,\n titleTemplate: PropTypes.string\n }, _class.defaultProps = {\n defer: true,\n encodeSpecialCharacters: true\n }, _class.peek = Component.peek, _class.rewind = function () {\n var mappedState = Component.rewind();\n if (!mappedState) {\n // provide fallback if mappedState is undefined\n mappedState = mapStateOnServer({\n baseTag: [],\n bodyAttributes: {},\n encodeSpecialCharacters: true,\n htmlAttributes: {},\n linkTags: [],\n metaTags: [],\n noscriptTags: [],\n scriptTags: [],\n styleTags: [],\n title: \"\",\n titleAttributes: {}\n });\n }\n\n return mappedState;\n }, _temp;\n};\n\nvar NullComponent = function NullComponent() {\n return null;\n};\n\nvar HelmetSideEffects = withSideEffect(reducePropsToState, handleClientStateChange, mapStateOnServer)(NullComponent);\n\nvar HelmetExport = Helmet(HelmetSideEffects);\nHelmetExport.renderStatic = HelmetExport.rewind;\n\nexport default HelmetExport;\nexport { HelmetExport as Helmet };\n","import { css, cx } from '@emotion/css';\nimport { useStyles2 } from '@grafana/ui';\nimport React from 'react';\n\ntype PyroscopeLogoProps = {\n size: 'small' | 'large';\n};\n\nfunction PyroscopeLogoComponent({ size }: PyroscopeLogoProps) {\n const styles = useStyles2(getStyles);\n return ;\n}\n\nexport const PyroscopeLogo = React.memo(PyroscopeLogoComponent);\n\nconst getStyles = () => ({\n logo: css`\n &.small {\n width: 16px;\n height: 16px;\n margin-right: 4px;\n position: relative;\n top: -2px;\n }\n\n &.large {\n width: 40px;\n height: 40px;\n }\n `,\n});\n","import { css } from '@emotion/css';\nimport { GrafanaTheme2, usePluginContext } from '@grafana/data';\nimport { config } from '@grafana/runtime';\nimport { Dropdown, IconButton, Menu, useStyles2 } from '@grafana/ui';\nimport React from 'react';\n\nimport { GIT_COMMIT } from '../../version';\nimport { PyroscopeLogo } from './PyroscopeLogo';\n\nconst pluginCommitSha: string = GIT_COMMIT;\nconst pluginCommitURL = `https://github.com/grafana/explore-profiles/commit/${pluginCommitSha}`;\n\nconst { buildInfo: grafanaBuildInfo } = config;\n\nfunction InfoMenuHeader() {\n const styles = useStyles2(getStyles);\n\n const {\n meta: {\n info: { version, updated },\n },\n } = usePluginContext() || { meta: { info: { version: '?.?.?', updated: '?' } } };\n\n return (\n
\n
\n \n Grafana Profiles Drilldown v{version}\n
\n
Last update: {updated}
\n
\n );\n}\n\nfunction InfoMenu() {\n const isDev = pluginCommitSha === 'dev';\n const shortCommitSha = isDev ? pluginCommitSha : pluginCommitSha.slice(0, 8);\n\n return (\n }>\n window.open(pluginCommitURL)}\n disabled={isDev}\n />\n window.open('https://github.com/grafana/explore-profiles/blob/main/CHANGELOG.md')}\n />\n window.open('https://github.com/grafana/explore-profiles/blob/main/docs/CONTRIBUTING.md')}\n />\n window.open('https://grafana.com/docs/grafana/latest/explore/simplified-exploration/profiles')}\n />\n window.open('https://github.com/grafana/explore-profiles/issues/new?template=bug_report.md')}\n />\n \n window.open(`https://github.com/grafana/grafana/commit/${grafanaBuildInfo.commit}`)}\n />\n \n );\n}\n\nexport function PluginInfo() {\n return (\n } placement=\"bottom-end\">\n \n \n );\n}\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n menuHeader: css`\n padding: ${theme.spacing(0.5, 1)};\n white-space: nowrap;\n `,\n subTitle: css`\n color: ${theme.colors.text.secondary};\n font-size: ${theme.typography.bodySmall.fontSize};\n `,\n});\n","import { css } from '@emotion/css';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { Stack, useStyles2 } from '@grafana/ui';\nimport { QueryAnalysisResult } from '@shared/components/QueryAnalysisTooltip/domain/QueryAnalysis';\nimport { QueryAnalysisTooltip } from '@shared/components/QueryAnalysisTooltip/QueryAnalysisTooltip';\nimport React, { memo, ReactNode } from 'react';\nimport { Helmet } from 'react-helmet';\n\nimport { PluginInfo } from './PluginInfo';\nimport { PyroscopeLogo } from './PyroscopeLogo';\n\ntype PageTitleProps = {\n title: ReactNode;\n queryAnalysis?: QueryAnalysisResult;\n};\n\nfunction PageTitleComponent({ title, queryAnalysis }: PageTitleProps) {\n const styles = useStyles2(getStyles);\n const fullTitle = typeof title === 'string' ? `${title} | Pyroscope` : 'Pyroscope';\n\n return (\n <>\n \n {fullTitle}\n \n
\n \n
\n \n

\n {title}\n

\n
\n
\n \n {queryAnalysis ? : null}\n
\n
\n
\n \n );\n}\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n titleContainer: css`\n height: ${theme.spacing(5)};\n line-height: ${theme.spacing(5)};\n margin-bottom: ${theme.spacing(3)};\n `,\n title: css`\n font-size: ${theme.typography.h2.fontSize};\n display: inline-block;\n margin: 0;\n position: relative;\n top: 10px;\n left: ${theme.spacing(1)};\n `,\n infoArea: css`\n align-self: end;\n margin-bottom: 0;\n line-height: 20px;\n text-align: right;\n `,\n});\n\nexport const PageTitle = memo(PageTitleComponent);\n","import { PageLayoutType } from '@grafana/data';\nimport { PluginPage } from '@grafana/runtime';\nimport { Icon } from '@grafana/ui';\nimport { PageTitle } from '@shared/ui/PageTitle';\nimport React from 'react';\n\nexport function EmptyLoadingPage() {\n return (\n \n \n Loading... \n
\n }\n />\n \n );\n}\n","import { css } from '@emotion/css';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { Icon, useStyles2 } from '@grafana/ui';\nimport React from 'react';\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n link: css`\n color: ${theme.colors.text.link};\n &:hover {\n text-decoration: underline;\n }\n `,\n});\n\nexport function StyledLink({ href, children }: { href: string; children: React.ReactNode }) {\n const styles = useStyles2(getStyles);\n\n return (\n \n {children} {}\n \n );\n}\n","import { PageLayoutType } from '@grafana/data';\nimport { PluginPage } from '@grafana/runtime';\nimport { Alert } from '@grafana/ui';\nimport { PageTitle } from '@shared/ui/PageTitle';\nimport React from 'react';\n\nimport { StyledLink } from './StyledLink';\n\nexport function NoDataSourcePage() {\n return (\n \n \n\n \n This plugin requires a Pyroscope data source. Please{' '}\n add and configure a Pyroscope data source to your\n Grafana instance.\n \n \n );\n}\n","import { DomainHookReturnValue } from '@shared/types/DomainHookReturnValue';\nimport { useState } from 'react';\n\nimport { useFetchInstances } from '../infrastructure/useFetchInstances';\n\nexport function useOnboardingModal(): DomainHookReturnValue {\n const { instances } = useFetchInstances();\n\n const [settingsUrl, setSettingsUrl] = useState('https://grafana.com/auth/sign-in/');\n const isCloud = /grafana(-dev|-ops)?\\.net/.test(window.location.host);\n\n if (instances && instances.orgSlug && instances.hpInstanceId) {\n const newSettingsUrl = `https://grafana.com/orgs/${instances.orgSlug}/hosted-profiles/${instances.hpInstanceId}`;\n\n if (settingsUrl !== newSettingsUrl) {\n setSettingsUrl(newSettingsUrl);\n }\n }\n\n return {\n data: {\n settingsUrl,\n isCloud,\n },\n actions: {},\n };\n}\n","import { useQuery } from '@tanstack/react-query';\n\nexport function useFetchInstances() {\n const { isFetching, error, data } = useQuery({\n queryKey: ['instances'],\n queryFn: () =>\n fetch('/api/plugin-proxy/cloud-home-app/grafanacom-api/instances').then((response) => response.json()),\n });\n\n return {\n isFetching,\n error,\n instances: data,\n };\n}\n","import { css, cx } from '@emotion/css';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { useStyles2 } from '@grafana/ui';\nimport DecreaseLatency from '@img/decrease-latency.png';\nimport HeroImage from '@img/hero-image.png';\nimport ReduceCosts from '@img/reduce-costs.png';\nimport ResolveIncidents from '@img/resolve-incidents.png';\nimport React from 'react';\n\nimport { useOnboardingModal } from '../domain/useOnboardingModal';\nimport { StyledLink } from './StyledLink';\n\n/** This was extracted from the former `styles.module.scss` */\n// TODO Use more spacial and color parameters from `theme`\nconst getStyles = (theme: GrafanaTheme2) => ({\n onboardingRow: css`\n background: ${theme.colors.background.secondary};\n display: flex;\n margin-top: 16px;\n gap: 20px;\n padding: 20px;\n margin-bottom: 2.5rem;\n `,\n onboardingParagraph: css`\n padding: 20px 64px;\n text-align: center;\n line-height: 2;\n flex: 1;\n margin: 0;\n `,\n onboardingPanel: css`\n flex: 1;\n display: flex;\n flex-flow: column wrap;\n -webkit-box-align: center;\n align-items: center;\n margin-top: 16px;\n text-align: center;\n `,\n onboardingPanelHeader: css`\n line-height: 1.5;\n margin-bottom: 1em;\n `,\n onboardingPanelImage: css`\n width: 5rem;\n margin-bottom: 1em;\n `,\n hero: css`\n display: flex;\n flex-direction: row;\n `,\n heroTitles: css`\n flex: 1;\n `,\n heroImage: css`\n width: 40%;\n margin-left: 16px;\n margin-top: 16px;\n margin-bottom: 16px;\n border-radius: 3px;\n `,\n onboardingPanelNumber: css`\n color: rgb(236, 109, 19);\n text-align: center;\n display: grid;\n place-items: center;\n background-image: linear-gradient(135deg, currentcolor, 75%, rgb(204, 204, 220));\n border-radius: 100%;\n font-size: 2.5rem;\n line-height: 5rem;\n height: 5rem;\n width: 5rem;\n margin-bottom: 1em;\n `,\n // TODO use theme.colors\n color2: css`\n color: rgb(190, 85, 190);\n `,\n // TODO use theme.colors\n color3: css`\n color: rgb(126, 108, 218);\n `,\n // FIXME use theme.colors\n onboardingPanelNumberSpan: css`\n color: rgb(220, 220, 220);\n `,\n onboardingPanelDescription: css`\n text-align: justify;\n text-align: center;\n line-height: 1.66;\n margin-top: 0;\n `,\n title: css`\n margin-bottom: 0.5em;\n line-height: 1.5;\n `,\n subtitle: css`\n margin-bottom: 1em;\n line-height: 1.5;\n font-size: 1.25rem;\n `,\n});\n\nexport function OnboardingModal() {\n const styles = useStyles2(getStyles);\n const { data } = useOnboardingModal();\n\n return (\n
\n
\n
\n

Welcome to Grafana Profiles Drilldown

\n

\n Optimize infrastructure spend, simplify debugging, and enhance application performance\n

\n {/* */}\n
\n \n
\n\n
\n

What You Can Do

\n
\n
\n \n

Reduce Costs

\n

\n Spot CPU spikes, memory leaks, and other inefficiencies with code-level visibility into resource usage.\n Teams can then optimize their code and lower infrastructure costs.\n

\n
\n
\n \n

Decrease Latency

\n

\n Maintain high speed and efficiency and improve application performance. In a competitive digital world,\n decreasing latency translates to increasing revenue.\n

\n
\n
\n \n

Resolve Incidents Faster

\n

\n Cut down the mean time to resolution (MTTR) by correlating continuous profiling data with metrics, logs,\n and traces to quickly identify the root cause of any issue.\n

\n
\n
\n
\n\n
\n

How to Get Started

\n
\n {data.isCloud ? (\n <>\n
\n
\n 1\n
\n

Add Profiling to Your Application

\n

\n Use{' '}\n \n Grafana Alloy\n {' '}\n or{' '}\n \n Pyroscope SDKs\n {' '}\n to push profiles from your applications to Grafana Cloud.\n

\n
\n
\n
\n 2\n
\n

Configure Your Applications

\n

\n Go to Grafana Cloud Stack settings to find your\n Grafana Cloud Credentials.\n

\n
\n
\n
\n 3\n
\n

Start Getting Performance Insights

\n

\n Once you're done with initial setup, refresh this page to see your profiling data.\n

\n
\n \n ) : (\n <>\n
\n
\n 1\n
\n

Set Up Your Pyroscope Server

\n

\n Install Pyroscope Server on\n your infrastructure. Or if you want to use a hosted service, go to{' '}\n Grafana Cloud Stack settings to find your Grafana\n Cloud Credentials.\n

\n
\n
\n
\n 2\n
\n

Configure Grafana

\n

\n Add a new Pyroscope datasource. Use your\n Pyroscope server URL and appropriate security credentials if you use Grafana Cloud Profiles.\n

\n
\n
\n
\n 3\n
\n

Add Profiling to Your Application

\n

\n Use{' '}\n \n Grafana Alloy\n {' '}\n or{' '}\n \n Pyroscope SDKs\n {' '}\n to push profiles from your applications to Grafana Cloud.\n

\n
\n \n )}\n
\n
\n\n {data.isCloud && (\n
\n

How Billing Works

\n
\n

\n Usage of Grafana Cloud Profiles is subject to{' '}\n Grafana Cloud Pricing for Profiles.\n

\n For additional information, read the announcement \n \n blog post\n \n .\n

\n
\n
\n )}\n
\n );\n}\n","import { css } from '@emotion/css';\nimport { GrafanaTheme2, PageLayoutType } from '@grafana/data';\nimport { PluginPage } from '@grafana/runtime';\nimport { useStyles2 } from '@grafana/ui';\nimport React from 'react';\n\nimport { OnboardingModal } from './OnboardingModal';\n\ntype OnboardingPageProps = {\n onCloseModal: () => void;\n};\n\n/** This was extracted from the former `styles.module.scss` */\n// TODO Use more spacial and color parameters from `theme`\nconst getStyles = (theme: GrafanaTheme2) => ({\n onboardingPage: css`\n padding: 16px;\n margin: 64px;\n position: relative;\n background-color: ${theme.colors.background.primary};\n `,\n closeButton: css`\n position: absolute;\n top: -30px;\n opacity: 0.8;\n right: -32px;\n border: none;\n border-radius: 50%;\n width: 40px;\n height: 40px;\n line-height: 40px;\n display: block;\n padding: 0;\n margin: 0;\n font-size: 22px;\n `,\n});\n\nconst pageNav = { text: 'Onboarding' };\n\nexport function OnboardingPage({ onCloseModal }: OnboardingPageProps) {\n const styles = useStyles2(getStyles);\n\n return (\n // The use of `PluginPage` is to set a clear \"Onboarding\" breadcrumb\n // Using `Custom` ensures that it takes up the whole page (and doesn't conflict with the other `PluginPage`)\n \n
\n \n ×\n \n \n
\n
\n );\n}\n","import React from 'react';\n\nimport { useOnboarding } from './domain/useOnboarding';\nimport { EmptyLoadingPage } from './ui/EmptyLoadingPage';\nimport { NoDataSourcePage } from './ui/NoDataSourcePage';\nimport { OnboardingPage } from './ui/OnboardingPage';\n\ntype OnboardingProps = {\n children: React.ReactNode;\n};\n\n/**\n * Displays an onboarding dialog instructing how to push data only when data is not present\n */\nexport function Onboarding({ children }: OnboardingProps) {\n const { data, actions } = useOnboarding();\n\n if (data.shouldShowLoadingPage) {\n return ;\n }\n\n if (data.shouldShowOnboardingPage) {\n return ;\n }\n\n if (data.shouldShowNoDataSourceBanner) {\n return ;\n }\n\n return <>{children};\n}\n","import { config, reportInteraction as grafanaReportInteraction } from '@grafana/runtime';\nimport { ScaleDistribution } from '@grafana/schema';\nimport { ActionType } from 'xstate';\n\nimport { PYROSCOPE_APP_ID, ROUTES } from '../../constants';\nimport { LayoutType } from '../../pages/ProfilesExplorerView/components/SceneByVariableRepeaterGrid/components/SceneLayoutSwitcher';\nimport { PanelType } from '../../pages/ProfilesExplorerView/components/SceneByVariableRepeaterGrid/components/ScenePanelTypeSwitcher';\nimport { GIT_COMMIT } from '../../version';\n\nexport type PageName = 'explore' | 'settings' | 'ad_hoc';\n\n// hey future dev: don't forget to add any new value to our features tracking dashboard!\nexport type Interactions = {\n g_pyroscope_app_page_initialized: {\n page: PageName;\n };\n\n g_pyroscope_app_ad_hoc_file_dropped: {\n fileType: string;\n };\n g_pyroscope_app_ad_hoc_file_removed: {};\n g_pyroscope_app_ad_hoc_profile_metric_selected: {};\n g_pyroscope_app_ad_hoc_profile: {};\n g_pyroscope_app_compare_link_clicked: {};\n g_pyroscope_app_diff_auto_select_clicked: {};\n g_pyroscope_app_diff_choose_preset_clicked: {};\n g_pyroscope_app_diff_learn_how_clicked: {};\n g_pyroscope_app_diff_preset_save_clicked: {};\n g_pyroscope_app_diff_preset_selected: {\n value: string;\n };\n g_pyroscope_app_exclude_action_clicked: {};\n g_pyroscope_app_explain_flamegraph_clicked: {};\n g_pyroscope_app_exploration_type_clicked: {\n explorationType: string;\n };\n g_pyroscope_app_export_profile: {\n format: 'png' | 'json' | 'pprof' | 'flamegraph.com';\n };\n g_pyroscope_app_fav_action_clicked: {\n favAfterClick: boolean;\n };\n g_pyroscope_app_filters_changed: {\n name: string;\n count: number;\n operators: string[];\n };\n g_pyroscope_app_function_details_clicked: {};\n g_pyroscope_app_group_by_label_clicked: {};\n g_pyroscope_app_hide_no_data_changed: {\n hideNoData: 'on' | 'off';\n };\n g_pyroscope_app_include_action_clicked: {};\n g_pyroscope_app_layout_changed: {\n layout: LayoutType;\n };\n g_pyroscope_app_open_in_explore_clicked: {};\n g_pyroscope_app_optimize_code_clicked: {};\n g_pyroscope_app_panel_type_changed: {\n panelType: PanelType;\n };\n g_pyroscope_app_profile_metric_selected: {};\n g_pyroscope_app_quick_filter_focused: {};\n g_pyroscope_app_select_action_clicked: {\n type: ActionType;\n };\n g_pyroscope_app_service_name_selected: {};\n g_pyroscope_app_share_link_clicked: {};\n g_pyroscope_app_timeseries_scale_changed: {\n scale: ScaleDistribution;\n };\n g_pyroscope_app_upload_ad_hoc_clicked: {};\n g_pyroscope_app_user_settings_clicked: {};\n};\n\nconst PROFILES_EXPLORER_PAGE_NAME = ROUTES.EXPLORE.slice(1);\n\nfunction getCurrentPage(): string {\n const { pathname } = new URL(window.location.toString());\n return pathname.split('/').pop() || '';\n}\n\nfunction getMetaProperties() {\n const meta: Record = {\n // same naming as Faro (see src/shared/infrastructure/tracking/faro/faro.ts)\n appRelease: config.apps[PYROSCOPE_APP_ID].version,\n appVersion: GIT_COMMIT,\n page: getCurrentPage(),\n };\n\n if (meta.page === PROFILES_EXPLORER_PAGE_NAME) {\n // same naming as Faro (see src/shared/infrastructure/tracking/faro/faro.ts)\n meta.view = new URLSearchParams(window.location.search).get('explorationType') || '';\n }\n\n return meta;\n}\n\nexport function reportInteraction(\n interactionName: E,\n props?: P\n) {\n grafanaReportInteraction(interactionName, {\n props,\n meta: getMetaProperties(),\n });\n}\n","import { PageName, reportInteraction } from '@shared/domain/reportInteraction';\nimport { useEffect, useState } from 'react';\n\nexport function useReportPageInitialized(page: PageName) {\n const [initialized, setInitialized] = useState(false);\n useEffect(() => {\n if (!initialized) {\n setInitialized(true);\n reportInteraction('g_pyroscope_app_page_initialized', { page });\n }\n }, [page, initialized]);\n}\n","import { css } from '@emotion/css';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { useStyles2 } from '@grafana/ui';\nimport React from 'react';\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n container: css`\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: ${theme.spacing(1)};\n width: 100%;\n `,\n column: css`\n width: 50%;\n `,\n});\n\ntype AdHocColumnsProps = {\n left: React.ReactNode;\n right: React.ReactNode;\n};\n\nexport function AdHocColumns({ left, right }: AdHocColumnsProps) {\n const styles = useStyles2(getStyles);\n\n return (\n
\n
{left}
\n
{right}
\n
\n );\n}\n","import { AppEvents } from '@grafana/data';\nimport { getAppEvents } from '@grafana/runtime';\nimport { logger } from '@shared/infrastructure/tracking/logger';\n\nexport function displayError(error: Error, msgs: string[]) {\n const context = msgs.reduce((acc, msg, i) => ({ ...acc, [`info${i + 1}`]: msg }), { handheldBy: 'displayError' });\n\n logger.error(error, context);\n\n getAppEvents().publish({\n type: AppEvents.alertError.name,\n payload: msgs,\n });\n}\n\nexport function displayWarning(msgs: string[]) {\n logger.warn(msgs);\n\n getAppEvents().publish({\n type: AppEvents.alertWarning.name,\n payload: msgs,\n });\n}\n\nexport function displaySuccess(msgs: string[]) {\n getAppEvents().publish({\n type: AppEvents.alertSuccess.name,\n payload: msgs,\n });\n}\n","import { ApiClient } from '@shared/infrastructure/http/ApiClient';\n\nimport { AdHocProfile } from '../domain/AdHocProfile';\nimport { stripBase64Prefix } from './helpers/stripBase64Prefix';\n\nclass AdHocProfileClient extends ApiClient {\n async get(profileId: string, profileType: string): Promise {\n const response = await this.fetch('/adhocprofiles.v1.AdHocProfileService/Get', {\n method: 'POST',\n body: JSON.stringify({\n id: profileId,\n profile_type: profileType,\n }),\n });\n\n const json = await response.json();\n\n return {\n id: json.id,\n name: json.name,\n profileTypes: json.profileTypes,\n profile: JSON.parse(json.flamebearerProfile),\n };\n }\n\n async uploadSingle(file: File): Promise {\n const profile = await this._readProfileFile(file);\n\n const response = await this.fetch('/adhocprofiles.v1.AdHocProfileService/Upload', {\n method: 'POST',\n body: JSON.stringify({\n name: file.name,\n profile,\n }),\n });\n\n const json = await response.json();\n\n return {\n id: json.id,\n name: file.name,\n profileTypes: json.profileTypes,\n // when the uploaded file contains multiple sample types, the 1st is always returned by the API\n profile: JSON.parse(json.flamebearerProfile),\n };\n }\n\n // TODO\n async uploadDiff() {\n return {\n id: '?',\n name: '??',\n profileTypes: [],\n profile: null,\n };\n }\n\n async _readProfileFile(file: File): Promise {\n return new Promise((resolve, reject) => {\n const fileReader = new FileReader();\n\n fileReader.addEventListener('load', () => {\n try {\n resolve(stripBase64Prefix(fileReader.result as string));\n } catch (error) {\n reject(error);\n }\n });\n\n fileReader.addEventListener('error', (/*event: ProgressEvent*/) => {\n // TODO: upgrade TS lib compiler option to support latest JS features\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/cause\n reject(new Error(`Error while reading file \"${file.name}\"!` /*, { cause: event }*/));\n });\n\n fileReader.readAsDataURL(file);\n });\n }\n}\n\nexport const adHocProfileClient = new AdHocProfileClient();\n","export function stripBase64Prefix(fileContent: string): string {\n const [, base64Content] = fileContent.split(';base64,');\n\n if (!base64Content) {\n throw new Error('No content after stripping the base64 prefix.');\n }\n\n if (fileContent === base64Content) {\n throw new Error('No base64 prefix?!');\n }\n\n return base64Content;\n}\n","import { SelectableValue } from '@grafana/data';\nimport { displayError } from '@shared/domain/displayStatus';\nimport { useCallback, useEffect, useState } from 'react';\n\nimport { adHocProfileClient } from '../infrastructure/adHocProfileClient';\nimport { AdHocProfile } from './AdHocProfile';\n\nconst DEFAULT_PROFILE_DATA: AdHocProfile = {\n id: '',\n name: '',\n profileTypes: [],\n profile: null,\n};\n\nexport function useUploadFile() {\n const [isLoading, setIsLoading] = useState(false);\n const [profileData, setProfileData] = useState(DEFAULT_PROFILE_DATA);\n\n useEffect(() => {\n return () => {\n adHocProfileClient.abort();\n };\n }, []);\n\n const removeFile = useCallback(() => {\n adHocProfileClient.abort();\n\n setIsLoading(false);\n setProfileData(DEFAULT_PROFILE_DATA);\n }, []);\n\n const processFile = useCallback(\n async (file: File) => {\n removeFile();\n\n try {\n setIsLoading(true);\n\n const data = await adHocProfileClient.uploadSingle(file);\n\n setProfileData(data);\n } catch (error) {\n setProfileData(DEFAULT_PROFILE_DATA);\n\n if (!adHocProfileClient.isAbortError(error)) {\n displayError(error as Error, ['Error while uploading profile!', (error as Error).message]);\n }\n }\n\n setIsLoading(false);\n },\n [removeFile]\n );\n\n const removeProfile = () => {\n adHocProfileClient.abort();\n\n setIsLoading(false);\n setProfileData((prevData) => ({ ...prevData, profile: null }));\n };\n\n const selectProfileType = useCallback(\n async (option: SelectableValue) => {\n const profileType = option.value;\n\n if (!profileType || !profileData.id || !profileData.profileTypes.includes(profileType)) {\n return;\n }\n\n removeProfile();\n\n setIsLoading(true);\n\n try {\n const data = await adHocProfileClient.get(profileData.id, profileType);\n\n setProfileData((prevData) => ({\n ...prevData,\n profile: data.profile,\n }));\n } catch (error) {\n if (!adHocProfileClient.isAbortError(error)) {\n displayError(error as Error, ['Error while fetching profile!', (error as Error).message]);\n }\n }\n\n setIsLoading(false);\n },\n [profileData.id, profileData.profileTypes]\n );\n\n return {\n processFile,\n profileTypes: profileData.profileTypes,\n selectProfileType,\n profile: profileData.profile,\n removeFile,\n isLoading,\n };\n}\n","import { DropzoneFile, FileDropzone } from '@grafana/ui';\nimport { displayError } from '@shared/domain/displayStatus';\nimport React, { useCallback } from 'react';\n\nimport { ACCEPTED_FILE_TYPES } from '../domain/accepted-file-types';\n\nconst options = {\n accept: ACCEPTED_FILE_TYPES,\n multiple: false,\n // maxSize: 42, // TODO?\n onError(error: Error) {\n displayError(error, ['Error while uploading file!', error.toString()]);\n },\n};\n\ntype AdHocFileDropZoneProps = {\n onFileDropped: (file: File) => void;\n onFileRemove: (file: DropzoneFile) => void;\n};\n\nexport function AdHocFileDropZone({ onFileDropped, onFileRemove }: AdHocFileDropZoneProps) {\n const onDropAccepted = useCallback(\n function (files: File[]) {\n onFileDropped(files[0]);\n },\n [onFileDropped]\n );\n\n return (\n \n );\n}\n","export const ACCEPTED_FILE_TYPES = {\n 'application/gzip': ['.gz'],\n 'application/json': ['.json'],\n 'application/proto': ['.pb', '.pprof'],\n};\n","/**\n* Copyright (c) 2025, Leon Sorokin\n* All rights reserved. (MIT Licensed)\n*\n* uFuzzy.js (μFuzzy)\n* A tiny, efficient fuzzy matcher that doesn't suck\n* https://github.com/leeoniya/uFuzzy (v1.0.18)\n*/\n\nconst cmp = (a, b) => a > b ? 1 : a < b ? -1 : 0;\n\nconst inf = Infinity;\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_expressions#escaping\nconst escapeRegExp = str => str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n\n// meh, magic tmp placeholder, must be tolerant to toLocaleLowerCase(), interSplit, and intraSplit\nconst EXACT_HERE = 'eexxaacctt';\n\nconst PUNCT_RE = /\\p{P}/gu;\n\nconst LATIN_UPPER = 'A-Z';\nconst LATIN_LOWER = 'a-z';\n\nconst COLLATE_ARGS = ['en', { numeric: true, sensitivity: 'base' }];\n\nconst swapAlpha = (str, upper, lower) => str.replace(LATIN_UPPER, upper).replace(LATIN_LOWER, lower);\n\nconst OPTS = {\n\t// whether regexps use a /u unicode flag\n\tunicode: false,\n\n\talpha: null,\n\n\t// term segmentation & punct/whitespace merging\n\tinterSplit: \"[^A-Za-z\\\\d']+\",\n\tintraSplit: \"[a-z][A-Z]\",\n\n\t// inter bounds that will be used to increase lft2/rgt2 info counters\n\tinterBound: \"[^A-Za-z\\\\d]\",\n\t// intra bounds that will be used to increase lft1/rgt1 info counters\n\tintraBound: \"[A-Za-z]\\\\d|\\\\d[A-Za-z]|[a-z][A-Z]\",\n\n\t// inter-bounds mode\n\t// 2 = strict (will only match 'man' on whitepace and punct boundaries: Mega Man, Mega_Man, mega.man)\n\t// 1 = loose (plus allowance for alpha-num and case-change boundaries: MegaMan, 0007man)\n\t// 0 = any (will match 'man' as any substring: megamaniac)\n\tinterLft: 0,\n\tinterRgt: 0,\n\n\t// allowance between terms\n\tinterChars: '.',\n\tinterIns: inf,\n\n\t// allowance between chars in terms\n\tintraChars: \"[a-z\\\\d']\", // internally case-insensitive\n\tintraIns: null,\n\n\tintraContr: \"'[a-z]{1,2}\\\\b\",\n\n\t// multi-insert or single-error mode\n\tintraMode: 0,\n\n\t// single-error bounds for errors within terms, default requires exact first char\n\tintraSlice: [1, inf],\n\n\t// single-error tolerance toggles\n\tintraSub: null,\n\tintraTrn: null,\n\tintraDel: null,\n\n\t// can post-filter matches that are too far apart in distance or length\n\t// (since intraIns is between each char, it can accum to nonsense matches)\n\tintraFilt: (term, match, index) => true, // should this also accept WIP info?\n\n\ttoUpper: str => str.toLocaleUpperCase(),\n\ttoLower: str => str.toLocaleLowerCase(),\n\tcompare: null,\n\n\t// final sorting fn\n\tsort: (info, haystack, needle, compare = cmp) => {\n\t\tlet {\n\t\t\tidx,\n\t\t\tchars,\n\t\t\tterms,\n\t\t\tinterLft2,\n\t\t\tinterLft1,\n\t\t//\tinterRgt2,\n\t\t//\tinterRgt1,\n\t\t\tstart,\n\t\t\tintraIns,\n\t\t\tinterIns,\n\t\t\tcases,\n\t\t} = info;\n\n\t\treturn idx.map((v, i) => i).sort((ia, ib) => (\n\t\t\t// most contig chars matched\n\t\t\tchars[ib] - chars[ia] ||\n\t\t\t// least char intra-fuzz (most contiguous)\n\t\t\tintraIns[ia] - intraIns[ib] ||\n\t\t\t// most prefix bounds, boosted by full term matches\n\t\t\t(\n\t\t\t\t(terms[ib] + interLft2[ib] + 0.5 * interLft1[ib]) -\n\t\t\t\t(terms[ia] + interLft2[ia] + 0.5 * interLft1[ia])\n\t\t\t) ||\n\t\t\t// highest density of match (least span)\n\t\t//\tspan[ia] - span[ib] ||\n\t\t\t// highest density of match (least term inter-fuzz)\n\t\t\tinterIns[ia] - interIns[ib] ||\n\t\t\t// earliest start of match\n\t\t\tstart[ia] - start[ib] ||\n\t\t\t// case match\n\t\t\tcases[ib] - cases[ia] ||\n\t\t\t// alphabetic\n\t\t\tcompare(haystack[idx[ia]], haystack[idx[ib]])\n\t\t));\n\t},\n};\n\nconst lazyRepeat = (chars, limit) => (\n\tlimit == 0 ? '' :\n\tlimit == 1 ? chars + '??' :\n\tlimit == inf ? chars + '*?' :\n\t chars + `{0,${limit}}?`\n);\n\nconst mode2Tpl = '(?:\\\\b|_)';\n\nfunction uFuzzy(opts) {\n\topts = Object.assign({}, OPTS, opts);\n\n\tlet {\n\t\tunicode,\n\t\tinterLft,\n\t\tinterRgt,\n\t\tintraMode,\n\t\tintraSlice,\n\t\tintraIns,\n\t\tintraSub,\n\t\tintraTrn,\n\t\tintraDel,\n\t\tintraContr,\n\t\tintraSplit: _intraSplit,\n\t\tinterSplit: _interSplit,\n\t\tintraBound: _intraBound,\n\t\tinterBound: _interBound,\n\t\tintraChars,\n\t\ttoUpper,\n\t\ttoLower,\n\t\tcompare,\n\t} = opts;\n\n\tintraIns ??= intraMode;\n\tintraSub ??= intraMode;\n\tintraTrn ??= intraMode;\n\tintraDel ??= intraMode;\n\n\tcompare ??= typeof Intl == \"undefined\" ? cmp : new Intl.Collator(...COLLATE_ARGS).compare;\n\n\tlet alpha = opts.letters ?? opts.alpha;\n\n\tif (alpha != null) {\n\t\tlet upper = toUpper(alpha);\n\t\tlet lower = toLower(alpha);\n\n\t\t_interSplit = swapAlpha(_interSplit, upper, lower);\n\t\t_intraSplit = swapAlpha(_intraSplit, upper, lower);\n\t\t_interBound = swapAlpha(_interBound, upper, lower);\n\t\t_intraBound = swapAlpha(_intraBound, upper, lower);\n\t\tintraChars = swapAlpha(intraChars, upper, lower);\n\t\tintraContr = swapAlpha(intraContr, upper, lower);\n\t}\n\n\tlet uFlag = unicode ? 'u' : '';\n\n\tconst quotedAny = '\".+?\"';\n\tconst EXACTS_RE = new RegExp(quotedAny, 'gi' + uFlag);\n\tconst NEGS_RE = new RegExp(`(?:\\\\s+|^)-(?:${intraChars}+|${quotedAny})`, 'gi' + uFlag);\n\n\tlet { intraRules } = opts;\n\n\tif (intraRules == null) {\n\t\tintraRules = p => {\n\t\t\t// default is exact term matches only\n\t\t\tlet _intraSlice = OPTS.intraSlice, // requires first char\n\t\t\t\t_intraIns = 0,\n\t\t\t\t_intraSub = 0,\n\t\t\t\t_intraTrn = 0,\n\t\t\t\t_intraDel = 0;\n\n\t\t\t// only-digits strings should match exactly, else special rules for short strings\n\t\t\tif (/[^\\d]/.test(p)) {\n\t\t\t\tlet plen = p.length;\n\n\t\t\t\t// prevent junk matches by requiring stricter rules for short terms\n\t\t\t\tif (plen <= 4) {\n\t\t\t\t\tif (plen >= 3) {\n\t\t\t\t\t\t// one swap in non-first char when 3-4 chars\n\t\t\t\t\t\t_intraTrn = Math.min(intraTrn, 1);\n\n\t\t\t\t\t\t// or one insertion when 4 chars\n\t\t\t\t\t\tif (plen == 4)\n\t\t\t\t\t\t\t_intraIns = Math.min(intraIns, 1);\n\t\t\t\t\t}\n\t\t\t\t\t// else exact match when 1-2 chars\n\t\t\t\t}\n\t\t\t\t// use supplied opts\n\t\t\t\telse {\n\t\t\t\t\t_intraSlice = intraSlice;\n\t\t\t\t\t_intraIns = intraIns,\n\t\t\t\t\t_intraSub = intraSub,\n\t\t\t\t\t_intraTrn = intraTrn,\n\t\t\t\t\t_intraDel = intraDel;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tintraSlice: _intraSlice,\n\t\t\t\tintraIns: _intraIns,\n\t\t\t\tintraSub: _intraSub,\n\t\t\t\tintraTrn: _intraTrn,\n\t\t\t\tintraDel: _intraDel,\n\t\t\t};\n\t\t};\n\t}\n\n\tlet withIntraSplit = !!_intraSplit;\n\n\tlet intraSplit = new RegExp(_intraSplit, 'g' + uFlag);\n\tlet interSplit = new RegExp(_interSplit, 'g' + uFlag);\n\n\tlet trimRe = new RegExp('^' + _interSplit + '|' + _interSplit + '$', 'g' + uFlag);\n\tlet contrsRe = new RegExp(intraContr, 'gi' + uFlag);\n\n\tconst split = (needle, keepCase = false) => {\n\t\tlet exacts = [];\n\n\t\tneedle = needle.replace(EXACTS_RE, m => {\n\t\t\texacts.push(m);\n\t\t\treturn EXACT_HERE;\n\t\t});\n\n\t\tneedle = needle.replace(trimRe, '');\n\n\t\tif (!keepCase)\n\t\t\tneedle = toLower(needle);\n\n\t\tif (withIntraSplit)\n\t\t\tneedle = needle.replace(intraSplit, m => m[0] + ' ' + m[1]);\n\n\t\tlet j = 0;\n\t\treturn needle.split(interSplit).filter(t => t != '').map(v => v === EXACT_HERE ? exacts[j++] : v);\n\t};\n\n\tconst NUM_OR_ALPHA_RE = /[^\\d]+|\\d+/g;\n\n\tconst prepQuery = (needle, capt = 0, interOR = false) => {\n\t\t// split on punct, whitespace, num-alpha, and upper-lower boundaries\n\t\tlet parts = split(needle);\n\n\t\tif (parts.length == 0)\n\t\t\treturn [];\n\n\t\t// split out any detected contractions for each term that become required suffixes\n\t\tlet contrs = Array(parts.length).fill('');\n\t\tparts = parts.map((p, pi) => p.replace(contrsRe, m => {\n\t\t\tcontrs[pi] = m;\n\t\t\treturn '';\n\t\t}));\n\n\t\t// array of regexp tpls for each term\n\t\tlet reTpl;\n\n\t\t// allows single mutations within each term\n\t\tif (intraMode == 1) {\n\t\t\treTpl = parts.map((p, pi) => {\n\t\t\t\tif (p[0] === '\"')\n\t\t\t\t\treturn escapeRegExp(p.slice(1, -1));\n\n\t\t\t\tlet reTpl = '';\n\n\t\t\t\t// split into numeric and alpha parts, so numbers are only matched as following punct or alpha boundaries, without swaps or insertions\n\t\t\t\tfor (let m of p.matchAll(NUM_OR_ALPHA_RE)) {\n\t\t\t\t\tlet p = m[0];\n\n\t\t\t\t\tlet {\n\t\t\t\t\t\tintraSlice,\n\t\t\t\t\t\tintraIns,\n\t\t\t\t\t\tintraSub,\n\t\t\t\t\t\tintraTrn,\n\t\t\t\t\t\tintraDel,\n\t\t\t\t\t} = intraRules(p);\n\n\t\t\t\t\tif (intraIns + intraSub + intraTrn + intraDel == 0)\n\t\t\t\t\t\treTpl += p + contrs[pi];\n\t\t\t\t\telse {\n\t\t\t\t\t\tlet [lftIdx, rgtIdx] = intraSlice;\n\t\t\t\t\t\tlet lftChar = p.slice(0, lftIdx); // prefix\n\t\t\t\t\t\tlet rgtChar = p.slice(rgtIdx); // suffix\n\n\t\t\t\t\t\tlet chars = p.slice(lftIdx, rgtIdx);\n\n\t\t\t\t\t\t// neg lookahead to prefer matching 'Test' instead of 'tTest' in ManifestTest or fittest\n\t\t\t\t\t\t// but skip when search term contains leading repetition (aardvark, aaa)\n\t\t\t\t\t\tif (intraIns == 1 && lftChar.length == 1 && lftChar != chars[0])\n\t\t\t\t\t\t\tlftChar += '(?!' + lftChar + ')';\n\n\t\t\t\t\t\tlet numChars = chars.length;\n\n\t\t\t\t\t\tlet variants = [p];\n\n\t\t\t\t\t\t// variants with single char substitutions\n\t\t\t\t\t\tif (intraSub) {\n\t\t\t\t\t\t\tfor (let i = 0; i < numChars; i++)\n\t\t\t\t\t\t\t\tvariants.push(lftChar + chars.slice(0, i) + intraChars + chars.slice(i + 1) + rgtChar);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// variants with single transpositions\n\t\t\t\t\t\tif (intraTrn) {\n\t\t\t\t\t\t\tfor (let i = 0; i < numChars - 1; i++) {\n\t\t\t\t\t\t\t\tif (chars[i] != chars[i+1])\n\t\t\t\t\t\t\t\t\tvariants.push(lftChar + chars.slice(0, i) + chars[i+1] + chars[i] + chars.slice(i + 2) + rgtChar);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// variants with single char omissions\n\t\t\t\t\t\tif (intraDel) {\n\t\t\t\t\t\t\tfor (let i = 0; i < numChars; i++)\n\t\t\t\t\t\t\t\tvariants.push(lftChar + chars.slice(0, i + 1) + '?' + chars.slice(i + 1) + rgtChar);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// variants with single char insertions\n\t\t\t\t\t\tif (intraIns) {\n\t\t\t\t\t\t\tlet intraInsTpl = lazyRepeat(intraChars, 1);\n\n\t\t\t\t\t\t\tfor (let i = 0; i < numChars; i++)\n\t\t\t\t\t\t\t\tvariants.push(lftChar + chars.slice(0, i) + intraInsTpl + chars.slice(i) + rgtChar);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treTpl += '(?:' + variants.join('|') + ')' + contrs[pi];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t//\tconsole.log(reTpl);\n\n\t\t\t\treturn reTpl;\n\t\t\t});\n\t\t}\n\t\telse {\n\t\t\tlet intraInsTpl = lazyRepeat(intraChars, intraIns);\n\n\t\t\t// capture at char level\n\t\t\tif (capt == 2 && intraIns > 0) {\n\t\t\t\t// sadly, we also have to capture the inter-term junk via parenth-wrapping .*?\n\t\t\t\t// to accum other capture groups' indices for \\b boosting during scoring\n\t\t\t\tintraInsTpl = ')(' + intraInsTpl + ')(';\n\t\t\t}\n\n\t\t\treTpl = parts.map((p, pi) => p[0] === '\"' ? escapeRegExp(p.slice(1, -1)) : p.split('').map((c, i, chars) => {\n\t\t\t\t// neg lookahead to prefer matching 'Test' instead of 'tTest' in ManifestTest or fittest\n\t\t\t\t// but skip when search term contains leading repetition (aardvark, aaa)\n\t\t\t\tif (intraIns == 1 && i == 0 && chars.length > 1 && c != chars[i+1])\n\t\t\t\t\tc += '(?!' + c + ')';\n\n\t\t\t\treturn c;\n\t\t\t}).join(intraInsTpl) + contrs[pi]);\n\t\t}\n\n\t//\tconsole.log(reTpl);\n\n\t\t// this only helps to reduce initial matches early when they can be detected\n\t\t// TODO: might want a mode 3 that excludes _\n\t\tlet preTpl = interLft == 2 ? mode2Tpl : '';\n\t\tlet sufTpl = interRgt == 2 ? mode2Tpl : '';\n\n\t\tlet interCharsTpl = sufTpl + lazyRepeat(opts.interChars, opts.interIns) + preTpl;\n\n\t\t// capture at word level\n\t\tif (capt > 0) {\n\t\t\tif (interOR) {\n\t\t\t\t// this is basically for doing .matchAll() occurence counting and highlighting without needing permuted ooo needles\n\t\t\t\treTpl = preTpl + '(' + reTpl.join(')' + sufTpl + '|' + preTpl + '(') + ')' + sufTpl;\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// sadly, we also have to capture the inter-term junk via parenth-wrapping .*?\n\t\t\t\t// to accum other capture groups' indices for \\b boosting during scoring\n\t\t\t\treTpl = '(' + reTpl.join(')(' + interCharsTpl + ')(') + ')';\n\t\t\t\treTpl = '(.??' + preTpl + ')' + reTpl + '(' + sufTpl + '.*)'; // nit: trailing capture here assumes interIns = Inf\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\treTpl = reTpl.join(interCharsTpl);\n\t\t\treTpl = preTpl + reTpl + sufTpl;\n\t\t}\n\n\t//\tconsole.log(reTpl);\n\n\t\treturn [new RegExp(reTpl, 'i' + uFlag), parts, contrs];\n\t};\n\n\tconst filter = (haystack, needle, idxs) => {\n\n\t\tlet [query] = prepQuery(needle);\n\n\t\tif (query == null)\n\t\t\treturn null;\n\n\t\tlet out = [];\n\n\t\tif (idxs != null) {\n\t\t\tfor (let i = 0; i < idxs.length; i++) {\n\t\t\t\tlet idx = idxs[i];\n\t\t\t\tquery.test(haystack[idx]) && out.push(idx);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tfor (let i = 0; i < haystack.length; i++)\n\t\t\t\tquery.test(haystack[i]) && out.push(i);\n\t\t}\n\n\t\treturn out;\n\t};\n\n\tlet withIntraBound = !!_intraBound;\n\n\tlet interBound = new RegExp(_interBound, uFlag);\n\tlet intraBound = new RegExp(_intraBound, uFlag);\n\n\tconst info = (idxs, haystack, needle) => {\n\n\t\tlet [query, parts, contrs] = prepQuery(needle, 1);\n\t\tlet partsCased = split(needle, true);\n\t\tlet [queryR] = prepQuery(needle, 2);\n\t\tlet partsLen = parts.length;\n\n\t\tlet _terms = Array(partsLen);\n\t\tlet _termsCased = Array(partsLen);\n\n\t\tfor (let j = 0; j < partsLen; j++) {\n\t\t\tlet part = parts[j];\n\t\t\tlet partCased = partsCased[j];\n\n\t\t\tlet term = part[0] == '\"' ? part.slice(1, -1) : part + contrs[j];\n\t\t\tlet termCased = partCased[0] == '\"' ? partCased.slice(1, -1) : partCased + contrs[j];\n\n\t\t\t_terms[j] = term;\n\t\t\t_termsCased[j] = termCased;\n\t\t}\n\n\t\tlet len = idxs.length;\n\n\t\tlet field = Array(len).fill(0);\n\n\t\tlet info = {\n\t\t\t// idx in haystack\n\t\t\tidx: Array(len),\n\n\t\t\t// start of match\n\t\t\tstart: field.slice(),\n\t\t\t// length of match\n\t\t//\tspan: field.slice(),\n\n\t\t\t// contiguous chars matched\n\t\t\tchars: field.slice(),\n\n\t\t\t// case matched in term (via term.includes(match))\n\t\t\tcases: field.slice(),\n\n\t\t\t// contiguous (no fuzz) and bounded terms (intra=0, lft2/1, rgt2/1)\n\t\t\t// excludes terms that are contiguous but have < 2 bounds (substrings)\n\t\t\tterms: field.slice(),\n\n\t\t\t// cumulative length of unmatched chars (fuzz) within span\n\t\t\tinterIns: field.slice(), // between terms\n\t\t\tintraIns: field.slice(), // within terms\n\n\t\t\t// interLft/interRgt counters\n\t\t\tinterLft2: field.slice(),\n\t\t\tinterRgt2: field.slice(),\n\t\t\tinterLft1: field.slice(),\n\t\t\tinterRgt1: field.slice(),\n\n\t\t\tranges: Array(len),\n\t\t};\n\n\t\t// might discard idxs based on bounds checks\n\t\tlet mayDiscard = interLft == 1 || interRgt == 1;\n\n\t\tlet ii = 0;\n\n\t\tfor (let i = 0; i < idxs.length; i++) {\n\t\t\tlet mhstr = haystack[idxs[i]];\n\n\t\t\t// the matched parts are [full, junk, term, junk, term, junk]\n\t\t\tlet m = mhstr.match(query);\n\n\t\t\t// leading junk\n\t\t\tlet start = m.index + m[1].length;\n\n\t\t\tlet idxAcc = start;\n\t\t//\tlet span = m[0].length;\n\n\t\t\tlet disc = false;\n\t\t\tlet lft2 = 0;\n\t\t\tlet lft1 = 0;\n\t\t\tlet rgt2 = 0;\n\t\t\tlet rgt1 = 0;\n\t\t\tlet chars = 0;\n\t\t\tlet terms = 0;\n\t\t\tlet cases = 0;\n\t\t\tlet inter = 0;\n\t\t\tlet intra = 0;\n\n\t\t\tlet refine = [];\n\n\t\t\tfor (let j = 0, k = 2; j < partsLen; j++, k+=2) {\n\t\t\t\tlet group = toLower(m[k]);\n\t\t\t\tlet term = _terms[j];\n\t\t\t\tlet termCased = _termsCased[j];\n\t\t\t\tlet termLen = term.length;\n\t\t\t\tlet groupLen = group.length;\n\t\t\t\tlet fullMatch = group == term;\n\n\t\t\t\tif (m[k] == termCased)\n\t\t\t\t\tcases++;\n\n\t\t\t\t// this won't handle the case when an exact match exists across the boundary of the current group and the next junk\n\t\t\t\t// e.g. blob,ob when searching for 'bob' but finding the earlier `blob` (with extra insertion)\n\t\t\t\tif (!fullMatch && m[k+1].length >= termLen) {\n\t\t\t\t\t// probe for exact match in inter junk (TODO: maybe even in this matched part?)\n\t\t\t\t\tlet idxOf = toLower(m[k+1]).indexOf(term);\n\n\t\t\t\t\tif (idxOf > -1) {\n\t\t\t\t\t\trefine.push(idxAcc, groupLen, idxOf, termLen);\n\t\t\t\t\t\tidxAcc += refineMatch(m, k, idxOf, termLen);\n\t\t\t\t\t\tgroup = term;\n\t\t\t\t\t\tgroupLen = termLen;\n\t\t\t\t\t\tfullMatch = true;\n\n\t\t\t\t\t\tif (j == 0)\n\t\t\t\t\t\t\tstart = idxAcc;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (mayDiscard || fullMatch) {\n\t\t\t\t\t// does group's left and/or right land on \\b\n\t\t\t\t\tlet lftCharIdx = idxAcc - 1;\n\t\t\t\t\tlet rgtCharIdx = idxAcc + groupLen;\n\n\t\t\t\t\tlet isPre = false;\n\t\t\t\t\tlet isSuf = false;\n\n\t\t\t\t\t// prefix info\n\t\t\t\t\tif (lftCharIdx == -1 || interBound.test(mhstr[lftCharIdx])) {\n\t\t\t\t\t\tfullMatch && lft2++;\n\t\t\t\t\t\tisPre = true;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tif (interLft == 2) {\n\t\t\t\t\t\t\tdisc = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (withIntraBound && intraBound.test(mhstr[lftCharIdx] + mhstr[lftCharIdx + 1])) {\n\t\t\t\t\t\t\tfullMatch && lft1++;\n\t\t\t\t\t\t\tisPre = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tif (interLft == 1) {\n\t\t\t\t\t\t\t\t// regexps are eager, so try to improve the match by probing forward inter junk for exact match at a boundary\n\t\t\t\t\t\t\t\tlet junk = m[k+1];\n\t\t\t\t\t\t\t\tlet junkIdx = idxAcc + groupLen;\n\n\t\t\t\t\t\t\t\tif (junk.length >= termLen) {\n\t\t\t\t\t\t\t\t\tlet idxOf = 0;\n\t\t\t\t\t\t\t\t\tlet found = false;\n\t\t\t\t\t\t\t\t\tlet re = new RegExp(term, 'ig' + uFlag);\n\n\t\t\t\t\t\t\t\t\tlet m2;\n\t\t\t\t\t\t\t\t\twhile (m2 = re.exec(junk)) {\n\t\t\t\t\t\t\t\t\t\tidxOf = m2.index;\n\n\t\t\t\t\t\t\t\t\t\tlet charIdx = junkIdx + idxOf;\n\t\t\t\t\t\t\t\t\t\tlet lftCharIdx = charIdx - 1;\n\n\t\t\t\t\t\t\t\t\t\tif (lftCharIdx == -1 || interBound.test(mhstr[lftCharIdx])) {\n\t\t\t\t\t\t\t\t\t\t\tlft2++;\n\t\t\t\t\t\t\t\t\t\t\tfound = true;\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse if (intraBound.test(mhstr[lftCharIdx] + mhstr[charIdx])) {\n\t\t\t\t\t\t\t\t\t\t\tlft1++;\n\t\t\t\t\t\t\t\t\t\t\tfound = true;\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif (found) {\n\t\t\t\t\t\t\t\t\t\tisPre = true;\n\n\t\t\t\t\t\t\t\t\t\t// identical to exact term refinement pass above\n\t\t\t\t\t\t\t\t\t\trefine.push(idxAcc, groupLen, idxOf, termLen);\n\t\t\t\t\t\t\t\t\t\tidxAcc += refineMatch(m, k, idxOf, termLen);\n\t\t\t\t\t\t\t\t\t\tgroup = term;\n\t\t\t\t\t\t\t\t\t\tgroupLen = termLen;\n\t\t\t\t\t\t\t\t\t\tfullMatch = true;\n\n\t\t\t\t\t\t\t\t\t\tif (j == 0)\n\t\t\t\t\t\t\t\t\t\t\tstart = idxAcc;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (!isPre) {\n\t\t\t\t\t\t\t\t\tdisc = true;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// suffix info\n\t\t\t\t\tif (rgtCharIdx == mhstr.length || interBound.test(mhstr[rgtCharIdx])) {\n\t\t\t\t\t\tfullMatch && rgt2++;\n\t\t\t\t\t\tisSuf = true;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tif (interRgt == 2) {\n\t\t\t\t\t\t\tdisc = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (withIntraBound && intraBound.test(mhstr[rgtCharIdx - 1] + mhstr[rgtCharIdx])) {\n\t\t\t\t\t\t\tfullMatch && rgt1++;\n\t\t\t\t\t\t\tisSuf = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tif (interRgt == 1) {\n\t\t\t\t\t\t\t\tdisc = true;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (fullMatch) {\n\t\t\t\t\t\tchars += termLen;\n\n\t\t\t\t\t\tif (isPre && isSuf)\n\t\t\t\t\t\t\tterms++;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (groupLen > termLen)\n\t\t\t\t\tintra += groupLen - termLen; // intraFuzz\n\n\t\t\t\tif (j > 0)\n\t\t\t\t\tinter += m[k-1].length; // interFuzz\n\n\t\t\t\t// TODO: group here is lowercased, which is okay for length cmp, but not more case-sensitive filts\n\t\t\t\tif (!opts.intraFilt(term, group, idxAcc)) {\n\t\t\t\t\tdisc = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (j < partsLen - 1)\n\t\t\t\t\tidxAcc += groupLen + m[k+1].length;\n\t\t\t}\n\n\t\t\tif (!disc) {\n\t\t\t\tinfo.idx[ii] = idxs[i];\n\t\t\t\tinfo.interLft2[ii] = lft2;\n\t\t\t\tinfo.interLft1[ii] = lft1;\n\t\t\t\tinfo.interRgt2[ii] = rgt2;\n\t\t\t\tinfo.interRgt1[ii] = rgt1;\n\t\t\t\tinfo.chars[ii] = chars;\n\t\t\t\tinfo.terms[ii] = terms;\n\t\t\t\tinfo.cases[ii] = cases;\n\t\t\t\tinfo.interIns[ii] = inter;\n\t\t\t\tinfo.intraIns[ii] = intra;\n\n\t\t\t\tinfo.start[ii] = start;\n\t\t\t//\tinfo.span[ii] = span;\n\n\t\t\t\t// ranges\n\t\t\t\tlet m = mhstr.match(queryR);\n\n\t\t\t\tlet idxAcc = m.index + m[1].length;\n\n\t\t\t\tlet refLen = refine.length;\n\t\t\t\tlet ri = refLen > 0 ? 0 : Infinity;\n\t\t\t\tlet lastRi = refLen - 4;\n\n\t\t\t\tfor (let i = 2; i < m.length;) {\n\t\t\t\t\tlet len = m[i].length;\n\n\t\t\t\t\tif (ri <= lastRi && refine[ri] == idxAcc) {\n\t\t\t\t\t\tlet groupLen = refine[ri+1];\n\t\t\t\t\t\tlet idxOf = refine[ri+2];\n\t\t\t\t\t\tlet termLen = refine[ri+3];\n\n\t\t\t\t\t\t// advance to end of original (full) group match that includes intra-junk\n\t\t\t\t\t\tlet j = i;\n\t\t\t\t\t\tlet v = '';\n\t\t\t\t\t\tfor (let _len = 0; _len < groupLen; j++) {\n\t\t\t\t\t\t\tv += m[j];\n\t\t\t\t\t\t\t_len += m[j].length;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tm.splice(i, j - i, v);\n\n\t\t\t\t\t\tidxAcc += refineMatch(m, i, idxOf, termLen);\n\n\t\t\t\t\t\tri += 4;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tidxAcc += len;\n\t\t\t\t\t\ti++;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tidxAcc = m.index + m[1].length;\n\n\t\t\t\tlet ranges = info.ranges[ii] = [];\n\t\t\t\tlet from = idxAcc;\n\t\t\t\tlet to = idxAcc;\n\n\t\t\t\tfor (let i = 2; i < m.length; i++) {\n\t\t\t\t\tlet len = m[i].length;\n\n\t\t\t\t\tidxAcc += len;\n\n\t\t\t\t\tif (i % 2 == 0)\n\t\t\t\t\t\tto = idxAcc;\n\t\t\t\t\telse if (len > 0) {\n\t\t\t\t\t\tranges.push(from, to);\n\t\t\t\t\t\tfrom = to = idxAcc;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (to > from)\n\t\t\t\t\tranges.push(from, to);\n\n\t\t\t\tii++;\n\t\t\t}\n\t\t}\n\n\t\t// trim arrays\n\t\tif (ii < idxs.length) {\n\t\t\tfor (let k in info)\n\t\t\t\tinfo[k] = info[k].slice(0, ii);\n\t\t}\n\n\t\treturn info;\n\t};\n\n\tconst refineMatch = (m, k, idxInNext, termLen) => {\n\t\t// shift the current group into the prior junk\n\t\tlet prepend = m[k] + m[k+1].slice(0, idxInNext);\n\t\tm[k-1] += prepend;\n\t\tm[k] = m[k+1].slice(idxInNext, idxInNext + termLen);\n\t\tm[k+1] = m[k+1].slice(idxInNext + termLen);\n\t\treturn prepend.length;\n\t};\n\n\tconst OOO_TERMS_LIMIT = 5;\n\n\t// returns [idxs, info, order]\n\tconst _search = (haystack, needle, outOfOrder, infoThresh = 1e3, preFiltered) => {\n\t\toutOfOrder = !outOfOrder ? 0 : outOfOrder === true ? OOO_TERMS_LIMIT : outOfOrder;\n\n\t\tlet needles = null;\n\t\tlet matches = null;\n\n\t\tlet negs = [];\n\n\t\tneedle = needle.replace(NEGS_RE, m => {\n\t\t\tlet neg = m.trim().slice(1);\n\n\t\t\tneg = neg[0] === '\"' ? escapeRegExp(neg.slice(1,-1)) : neg.replace(PUNCT_RE, '');\n\n\t\t\tif (neg != '')\n\t\t\t\tnegs.push(neg);\n\n\t\t\treturn '';\n\t\t});\n\n\t\tlet terms = split(needle);\n\n\t\tlet negsRe;\n\n\t\tif (negs.length > 0) {\n\t\t\tnegsRe = new RegExp(negs.join('|'), 'i' + uFlag);\n\n\t\t\tif (terms.length == 0) {\n\t\t\t\tlet idxs = [];\n\n\t\t\t\tfor (let i = 0; i < haystack.length; i++) {\n\t\t\t\t\tif (!negsRe.test(haystack[i]))\n\t\t\t\t\t\tidxs.push(i);\n\t\t\t\t}\n\n\t\t\t\treturn [idxs, null, null];\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\t// abort search (needle is empty after pre-processing, e.g. no alpha-numeric chars)\n\t\t\tif (terms.length == 0)\n\t\t\t\treturn [null, null, null];\n\t\t}\n\n\t//\tconsole.log(negs);\n\t//\tconsole.log(needle);\n\n\t\tif (outOfOrder > 0) {\n\t\t\t// since uFuzzy is an AND-based search, we can iteratively pre-reduce the haystack by searching\n\t\t\t// for each term in isolation before running permutations on what's left.\n\t\t\t// this is a major perf win. e.g. searching \"test man ger pp a\" goes from 570ms -> 14ms\n\t\t\tlet terms = split(needle);\n\n\t\t\tif (terms.length > 1) {\n\t\t\t\t// longest -> shortest\n\t\t\t\tlet terms2 = terms.slice().sort((a, b) => b.length - a.length);\n\n\t\t\t\tfor (let ti = 0; ti < terms2.length; ti++) {\n\t\t\t\t\t// no haystack item contained all terms\n\t\t\t\t\tif (preFiltered?.length == 0)\n\t\t\t\t\t\treturn [[], null, null];\n\n\t\t\t\t\tpreFiltered = filter(haystack, terms2[ti], preFiltered);\n\t\t\t\t}\n\n\t\t\t\t// avoid combinatorial explosion by limiting outOfOrder to 5 terms (120 max searches)\n\t\t\t\t// fall back to just filter() otherwise\n\t\t\t\tif (terms.length > outOfOrder)\n\t\t\t\t\treturn [preFiltered, null, null];\n\n\t\t\t\tneedles = permute(terms).map(perm => perm.join(' '));\n\n\t\t\t\t// filtered matches for each needle excluding same matches for prior needles\n\t\t\t\tmatches = [];\n\n\t\t\t\t// keeps track of already-matched idxs to skip in follow-up permutations\n\t\t\t\tlet matchedIdxs = new Set();\n\n\t\t\t\tfor (let ni = 0; ni < needles.length; ni++) {\n\t\t\t\t\tif (matchedIdxs.size < preFiltered.length) {\n\t\t\t\t\t\t// filter further for this needle, exclude already-matched\n\t\t\t\t\t\tlet preFiltered2 = preFiltered.filter(idx => !matchedIdxs.has(idx));\n\n\t\t\t\t\t\tlet matched = filter(haystack, needles[ni], preFiltered2);\n\n\t\t\t\t\t\tfor (let j = 0; j < matched.length; j++)\n\t\t\t\t\t\t\tmatchedIdxs.add(matched[j]);\n\n\t\t\t\t\t\tmatches.push(matched);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t\tmatches.push([]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// interOR\n\t//\tconsole.log(prepQuery(needle, 1, null, true));\n\n\t\t// non-ooo or ooo w/single term\n\t\tif (needles == null) {\n\t\t\tneedles = [needle];\n\t\t\tmatches = [preFiltered?.length > 0 ? preFiltered : filter(haystack, needle)];\n\t\t}\n\n\t\tlet retInfo = null;\n\t\tlet retOrder = null;\n\n\t\tif (negs.length > 0)\n\t\t\tmatches = matches.map(idxs => idxs.filter(idx => !negsRe.test(haystack[idx])));\n\n\t\tlet matchCount = matches.reduce((acc, idxs) => acc + idxs.length, 0);\n\n\t\t// rank, sort, concat\n\t\tif (matchCount <= infoThresh) {\n\t\t\tretInfo = {};\n\t\t\tretOrder = [];\n\n\t\t\tfor (let ni = 0; ni < matches.length; ni++) {\n\t\t\t\tlet idxs = matches[ni];\n\n\t\t\t\tif (idxs == null || idxs.length == 0)\n\t\t\t\t\tcontinue;\n\n\t\t\t\tlet needle = needles[ni];\n\t\t\t\tlet _info = info(idxs, haystack, needle);\n\t\t\t\tlet order = opts.sort(_info, haystack, needle, compare);\n\n\t\t\t\t// offset idxs for concat'ing infos\n\t\t\t\tif (ni > 0) {\n\t\t\t\t\tfor (let i = 0; i < order.length; i++)\n\t\t\t\t\t\torder[i] += retOrder.length;\n\t\t\t\t}\n\n\t\t\t\tfor (let k in _info)\n\t\t\t\t\tretInfo[k] = (retInfo[k] ?? []).concat(_info[k]);\n\n\t\t\t\tretOrder = retOrder.concat(order);\n\t\t\t}\n\t\t}\n\n\t\treturn [\n\t\t\t[].concat(...matches),\n\t\t\tretInfo,\n\t\t\tretOrder,\n\t\t];\n\t};\n\n\treturn {\n\t\tsearch: (...args) => {\n\t\t\tlet out = _search(...args);\n\t\t\treturn out;\n\t\t},\n\t\tsplit,\n\t\tfilter,\n\t\tinfo,\n\t\tsort: opts.sort,\n\t};\n}\n\nconst latinize = (() => {\n\tlet accents = {\n\t\tA: 'ÁÀÃÂÄĄ',\n\t\ta: 'áàãâäą',\n\t\tE: 'ÉÈÊËĖ',\n\t\te: 'éèêëę',\n\t\tI: 'ÍÌÎÏĮ',\n\t\ti: 'íìîïį',\n\t\tO: 'ÓÒÔÕÖ',\n\t\to: 'óòôõö',\n\t\tU: 'ÚÙÛÜŪŲ',\n\t\tu: 'úùûüūų',\n\t\tC: 'ÇČĆ',\n\t\tc: 'çčć',\n\t\tL: 'Ł',\n\t\tl: 'ł',\n\t\tN: 'ÑŃ',\n\t\tn: 'ñń',\n\t\tS: 'ŠŚ',\n\t\ts: 'šś',\n\t\tZ: 'ŻŹ',\n\t\tz: 'żź'\n\t};\n\n\tlet accentsMap = new Map();\n\tlet accentsTpl = '';\n\n\tfor (let r in accents) {\n\t\taccents[r].split('').forEach(a => {\n\t\t\taccentsTpl += a;\n\t\t\taccentsMap.set(a, r);\n\t\t});\n\t}\n\n\tlet accentsRe = new RegExp(`[${accentsTpl}]`, 'g');\n\tlet replacer = m => accentsMap.get(m);\n\n\treturn strings => {\n\t\tif (typeof strings == 'string')\n\t\t\treturn strings.replace(accentsRe, replacer);\n\n\t\tlet out = Array(strings.length);\n\t\tfor (let i = 0; i < strings.length; i++)\n\t\t\tout[i] = strings[i].replace(accentsRe, replacer);\n\t\treturn out;\n\t};\n})();\n\n// https://stackoverflow.com/questions/9960908/permutations-in-javascript/37580979#37580979\nfunction permute(arr) {\n\tarr = arr.slice();\n\n\tlet length = arr.length,\n\t\tresult = [arr.slice()],\n\t\tc = new Array(length).fill(0),\n\t\ti = 1, k, p;\n\n\twhile (i < length) {\n\t\tif (c[i] < i) {\n\t\t\tk = i % 2 && c[i];\n\t\t\tp = arr[i];\n\t\t\tarr[i] = arr[k];\n\t\t\tarr[k] = p;\n\t\t\t++c[i];\n\t\t\ti = 1;\n\t\t\tresult.push(arr.slice());\n\t\t} else {\n\t\t\tc[i] = 0;\n\t\t\t++i;\n\t\t}\n\t}\n\n\treturn result;\n}\n\nconst _mark = (part, matched) => matched ? `${part}` : part;\nconst _append = (acc, part) => acc + part;\n\nfunction highlight(str, ranges, mark = _mark, accum = '', append = _append) {\n\taccum = append(accum, mark(str.substring(0, ranges[0]), false)) ?? accum;\n\n\tfor (let i = 0; i < ranges.length; i+=2) {\n\t\tlet fr = ranges[i];\n\t\tlet to = ranges[i+1];\n\n\t\taccum = append(accum, mark(str.substring(fr, to), true)) ?? accum;\n\n\t\tif (i < ranges.length - 3)\n\t\t\taccum = append(accum, mark(str.substring(ranges[i+1], ranges[i+2]), false)) ?? accum;\n\t}\n\n\taccum = append(accum, mark(str.substring(ranges[ranges.length - 1]), false)) ?? accum;\n\n\treturn accum;\n}\n\nuFuzzy.latinize = latinize;\nuFuzzy.permute = arr => {\n\tlet idxs = permute([...Array(arr.length).keys()]).sort((a,b) => {\n\t\tfor (let i = 0; i < a.length; i++) {\n\t\t\tif (a[i] != b[i])\n\t\t\t\treturn a[i] - b[i];\n\t\t}\n\t\treturn 0;\n\t});\n\n\treturn idxs.map(pi => pi.map(i => arr[i]));\n};\nuFuzzy.highlight = highlight;\n\nexport { uFuzzy as default };\n","export var noop = function () { };\nexport function on(obj) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (obj && obj.addEventListener) {\n obj.addEventListener.apply(obj, args);\n }\n}\nexport function off(obj) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (obj && obj.removeEventListener) {\n obj.removeEventListener.apply(obj, args);\n }\n}\nexport var isBrowser = typeof window !== 'undefined';\nexport var isNavigator = typeof navigator !== 'undefined';\n","import { useEffect, useLayoutEffect } from 'react';\nimport { isBrowser } from './misc/util';\nvar useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect : useEffect;\nexport default useIsomorphicLayoutEffect;\n","import { useMemo, useState } from 'react';\nimport useIsomorphicLayoutEffect from './useIsomorphicLayoutEffect';\nimport { isBrowser, noop } from './misc/util';\nvar defaultState = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n};\nfunction useMeasure() {\n var _a = useState(null), element = _a[0], ref = _a[1];\n var _b = useState(defaultState), rect = _b[0], setRect = _b[1];\n var observer = useMemo(function () {\n return new window.ResizeObserver(function (entries) {\n if (entries[0]) {\n var _a = entries[0].contentRect, x = _a.x, y = _a.y, width = _a.width, height = _a.height, top_1 = _a.top, left = _a.left, bottom = _a.bottom, right = _a.right;\n setRect({ x: x, y: y, width: width, height: height, top: top_1, left: left, bottom: bottom, right: right });\n }\n });\n }, []);\n useIsomorphicLayoutEffect(function () {\n if (!element)\n return;\n observer.observe(element);\n return function () {\n observer.disconnect();\n };\n }, [element]);\n return [ref, rect];\n}\nexport default isBrowser && typeof window.ResizeObserver !== 'undefined'\n ? useMeasure\n : (function () { return [noop, defaultState]; });\n","const PIXELS_PER_LEVEL = 22 * window.devicePixelRatio;\nconst MUTE_THRESHOLD = 10 * window.devicePixelRatio;\nconst HIDE_THRESHOLD = 0.5 * window.devicePixelRatio;\nconst LABEL_THRESHOLD = 20 * window.devicePixelRatio;\nconst BAR_BORDER_WIDTH = 0.5 * window.devicePixelRatio;\nconst BAR_TEXT_PADDING_LEFT = 4 * window.devicePixelRatio;\nconst GROUP_STRIP_WIDTH = 3 * window.devicePixelRatio;\nconst GROUP_STRIP_PADDING = 3 * window.devicePixelRatio;\nconst GROUP_STRIP_MARGIN_LEFT = 4 * window.devicePixelRatio;\nconst GROUP_TEXT_OFFSET = 2 * window.devicePixelRatio;\nconst MIN_WIDTH_TO_SHOW_BOTH_TOPTABLE_AND_FLAMEGRAPH = 800;\nconst TOP_TABLE_COLUMN_WIDTH = 120;\n\nexport { BAR_BORDER_WIDTH, BAR_TEXT_PADDING_LEFT, GROUP_STRIP_MARGIN_LEFT, GROUP_STRIP_PADDING, GROUP_STRIP_WIDTH, GROUP_TEXT_OFFSET, HIDE_THRESHOLD, LABEL_THRESHOLD, MIN_WIDTH_TO_SHOW_BOTH_TOPTABLE_AND_FLAMEGRAPH, MUTE_THRESHOLD, PIXELS_PER_LEVEL, TOP_TABLE_COLUMN_WIDTH };\n//# sourceMappingURL=constants.js.map\n","import { jsx, jsxs, Fragment } from 'react/jsx-runtime';\nimport { ContextMenu, MenuItem, MenuGroup } from '@grafana/ui';\n\nconst FlameGraphContextMenu = ({\n data,\n itemData,\n onMenuItemClick,\n onItemFocus,\n onSandwich,\n collapseConfig,\n onExpandGroup,\n onCollapseGroup,\n onExpandAllGroups,\n onCollapseAllGroups,\n getExtraContextMenuButtons,\n collapsing,\n allGroupsExpanded,\n allGroupsCollapsed,\n selectedView,\n search\n}) => {\n function renderItems() {\n const extraButtons = (getExtraContextMenuButtons == null ? void 0 : getExtraContextMenuButtons(itemData, data.data, {\n selectedView,\n isDiff: data.isDiffFlamegraph(),\n search,\n collapseConfig\n })) || [];\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(\n MenuItem,\n {\n label: \"Focus block\",\n icon: \"eye\",\n onClick: () => {\n onItemFocus();\n onMenuItemClick();\n }\n }\n ),\n /* @__PURE__ */ jsx(\n MenuItem,\n {\n label: \"Copy function name\",\n icon: \"copy\",\n onClick: () => {\n navigator.clipboard.writeText(itemData.label).then(() => {\n onMenuItemClick();\n });\n }\n }\n ),\n /* @__PURE__ */ jsx(\n MenuItem,\n {\n label: \"Sandwich view\",\n icon: \"gf-show-context\",\n onClick: () => {\n onSandwich();\n onMenuItemClick();\n }\n }\n ),\n extraButtons.map(({ label, icon, onClick }) => {\n return /* @__PURE__ */ jsx(MenuItem, { label, icon, onClick: () => onClick() }, label);\n }),\n collapsing && /* @__PURE__ */ jsxs(MenuGroup, { label: \"Grouping\", children: [\n collapseConfig ? collapseConfig.collapsed ? /* @__PURE__ */ jsx(\n MenuItem,\n {\n label: \"Expand group\",\n icon: \"angle-double-down\",\n onClick: () => {\n onExpandGroup();\n onMenuItemClick();\n }\n }\n ) : /* @__PURE__ */ jsx(\n MenuItem,\n {\n label: \"Collapse group\",\n icon: \"angle-double-up\",\n onClick: () => {\n onCollapseGroup();\n onMenuItemClick();\n }\n }\n ) : null,\n !allGroupsExpanded && /* @__PURE__ */ jsx(\n MenuItem,\n {\n label: \"Expand all groups\",\n icon: \"angle-double-down\",\n onClick: () => {\n onExpandAllGroups();\n onMenuItemClick();\n }\n }\n ),\n !allGroupsCollapsed && /* @__PURE__ */ jsx(\n MenuItem,\n {\n label: \"Collapse all groups\",\n icon: \"angle-double-up\",\n onClick: () => {\n onCollapseAllGroups();\n onMenuItemClick();\n }\n }\n )\n ] })\n ] });\n }\n return /* @__PURE__ */ jsx(\"div\", { \"data-testid\": \"contextMenu\", children: /* @__PURE__ */ jsx(\n ContextMenu,\n {\n renderMenuItems: renderItems,\n x: itemData.posX + 10,\n y: itemData.posY,\n focusOnOpen: false\n }\n ) });\n};\n\nexport { FlameGraphContextMenu as default };\n//# sourceMappingURL=FlameGraphContextMenu.js.map\n","import { jsx, jsxs } from 'react/jsx-runtime';\nimport { css } from '@emotion/css';\nimport { getValueFormat } from '@grafana/data';\nimport { useStyles2, InteractiveTable, Portal, VizTooltipContainer } from '@grafana/ui';\n\nconst FlameGraphTooltip = ({ data, item, totalTicks, position, collapseConfig }) => {\n const styles = useStyles2(getStyles);\n if (!(item && position)) {\n return null;\n }\n let content;\n if (data.isDiffFlamegraph()) {\n const tableData = getDiffTooltipData(data, item, totalTicks);\n content = /* @__PURE__ */ jsx(\n InteractiveTable,\n {\n className: styles.tooltipTable,\n columns: [\n { id: \"label\", header: \"\" },\n { id: \"baseline\", header: \"Baseline\" },\n { id: \"comparison\", header: \"Comparison\" },\n { id: \"diff\", header: \"Diff\" }\n ],\n data: tableData,\n getRowId: (originalRow) => originalRow.rowId\n }\n );\n } else {\n const tooltipData = getTooltipData(data, item, totalTicks);\n content = /* @__PURE__ */ jsxs(\"p\", { className: styles.lastParagraph, children: [\n tooltipData.unitTitle,\n /* @__PURE__ */ jsx(\"br\", {}),\n \"Total: \",\n /* @__PURE__ */ jsx(\"b\", { children: tooltipData.unitValue }),\n \" (\",\n tooltipData.percentValue,\n \"%)\",\n /* @__PURE__ */ jsx(\"br\", {}),\n \"Self: \",\n /* @__PURE__ */ jsx(\"b\", { children: tooltipData.unitSelf }),\n \" (\",\n tooltipData.percentSelf,\n \"%)\",\n /* @__PURE__ */ jsx(\"br\", {}),\n \"Samples: \",\n /* @__PURE__ */ jsx(\"b\", { children: tooltipData.samples })\n ] });\n }\n return /* @__PURE__ */ jsx(Portal, { children: /* @__PURE__ */ jsx(VizTooltipContainer, { className: styles.tooltipContainer, position, offset: { x: 15, y: 0 }, children: /* @__PURE__ */ jsxs(\"div\", { className: styles.tooltipContent, children: [\n /* @__PURE__ */ jsxs(\"p\", { className: styles.tooltipName, children: [\n data.getLabel(item.itemIndexes[0]),\n collapseConfig && collapseConfig.collapsed ? /* @__PURE__ */ jsxs(\"span\", { children: [\n /* @__PURE__ */ jsx(\"br\", {}),\n \"and \",\n collapseConfig.items.length,\n \" similar items\"\n ] }) : \"\"\n ] }),\n content\n ] }) }) });\n};\nconst getTooltipData = (data, item, totalTicks) => {\n const displayValue = data.valueDisplayProcessor(item.value);\n const displaySelf = data.getSelfDisplay(item.itemIndexes);\n const percentValue = Math.round(1e4 * (displayValue.numeric / totalTicks)) / 100;\n const percentSelf = Math.round(1e4 * (displaySelf.numeric / totalTicks)) / 100;\n let unitValue = displayValue.text + displayValue.suffix;\n let unitSelf = displaySelf.text + displaySelf.suffix;\n const unitTitle = data.getUnitTitle();\n if (unitTitle === \"Count\") {\n if (!displayValue.suffix) {\n unitValue = displayValue.text;\n }\n if (!displaySelf.suffix) {\n unitSelf = displaySelf.text;\n }\n }\n return {\n percentValue,\n percentSelf,\n unitTitle,\n unitValue,\n unitSelf,\n samples: displayValue.numeric.toLocaleString()\n };\n};\nconst getDiffTooltipData = (data, item, totalTicks) => {\n const levels = data.getLevels();\n const totalTicksRight = levels[0][0].valueRight;\n const totalTicksLeft = totalTicks - totalTicksRight;\n const valueLeft = item.value - item.valueRight;\n const percentageLeft = Math.round(1e4 * valueLeft / totalTicksLeft) / 100;\n const percentageRight = Math.round(1e4 * item.valueRight / totalTicksRight) / 100;\n const diff = (percentageRight - percentageLeft) / percentageLeft * 100;\n const displayValueLeft = getValueWithUnit(data, data.valueDisplayProcessor(valueLeft));\n const displayValueRight = getValueWithUnit(data, data.valueDisplayProcessor(item.valueRight));\n const shortValFormat = getValueFormat(\"short\");\n return [\n {\n rowId: \"1\",\n label: \"% of total\",\n baseline: percentageLeft + \"%\",\n comparison: percentageRight + \"%\",\n diff: shortValFormat(diff).text + \"%\"\n },\n {\n rowId: \"2\",\n label: \"Value\",\n baseline: displayValueLeft,\n comparison: displayValueRight,\n diff: getValueWithUnit(data, data.valueDisplayProcessor(item.valueRight - valueLeft))\n },\n {\n rowId: \"3\",\n label: \"Samples\",\n baseline: shortValFormat(valueLeft).text,\n comparison: shortValFormat(item.valueRight).text,\n diff: shortValFormat(item.valueRight - valueLeft).text\n }\n ];\n};\nfunction getValueWithUnit(data, displayValue) {\n let unitValue = displayValue.text + displayValue.suffix;\n const unitTitle = data.getUnitTitle();\n if (unitTitle === \"Count\") {\n if (!displayValue.suffix) {\n unitValue = displayValue.text;\n }\n }\n return unitValue;\n}\nconst getStyles = (theme) => ({\n tooltipContainer: css({\n title: \"tooltipContainer\",\n overflow: \"hidden\"\n }),\n tooltipContent: css({\n title: \"tooltipContent\",\n fontSize: theme.typography.bodySmall.fontSize,\n width: \"100%\"\n }),\n tooltipName: css({\n title: \"tooltipName\",\n marginTop: 0,\n wordBreak: \"break-all\"\n }),\n lastParagraph: css({\n title: \"lastParagraph\",\n marginBottom: 0\n }),\n name: css({\n title: \"name\",\n marginBottom: \"10px\"\n }),\n tooltipTable: css({\n title: \"tooltipTable\",\n maxWidth: \"400px\"\n })\n});\n\nexport { FlameGraphTooltip as default, getDiffTooltipData, getTooltipData };\n//# sourceMappingURL=FlameGraphTooltip.js.map\n","// This file is autogenerated. It's used to publish ESM to npm.\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\n\n// https://github.com/bgrins/TinyColor\n// Brian Grinstead, MIT License\n\nvar trimLeft = /^\\s+/;\nvar trimRight = /\\s+$/;\nfunction tinycolor(color, opts) {\n color = color ? color : \"\";\n opts = opts || {};\n\n // If input is already a tinycolor, return itself\n if (color instanceof tinycolor) {\n return color;\n }\n // If we are called as a function, call using new instead\n if (!(this instanceof tinycolor)) {\n return new tinycolor(color, opts);\n }\n var rgb = inputToRGB(color);\n this._originalInput = color, this._r = rgb.r, this._g = rgb.g, this._b = rgb.b, this._a = rgb.a, this._roundA = Math.round(100 * this._a) / 100, this._format = opts.format || rgb.format;\n this._gradientType = opts.gradientType;\n\n // Don't let the range of [0,255] come back in [0,1].\n // Potentially lose a little bit of precision here, but will fix issues where\n // .5 gets interpreted as half of the total, instead of half of 1\n // If it was supposed to be 128, this was already taken care of by `inputToRgb`\n if (this._r < 1) this._r = Math.round(this._r);\n if (this._g < 1) this._g = Math.round(this._g);\n if (this._b < 1) this._b = Math.round(this._b);\n this._ok = rgb.ok;\n}\ntinycolor.prototype = {\n isDark: function isDark() {\n return this.getBrightness() < 128;\n },\n isLight: function isLight() {\n return !this.isDark();\n },\n isValid: function isValid() {\n return this._ok;\n },\n getOriginalInput: function getOriginalInput() {\n return this._originalInput;\n },\n getFormat: function getFormat() {\n return this._format;\n },\n getAlpha: function getAlpha() {\n return this._a;\n },\n getBrightness: function getBrightness() {\n //http://www.w3.org/TR/AERT#color-contrast\n var rgb = this.toRgb();\n return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;\n },\n getLuminance: function getLuminance() {\n //http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n var rgb = this.toRgb();\n var RsRGB, GsRGB, BsRGB, R, G, B;\n RsRGB = rgb.r / 255;\n GsRGB = rgb.g / 255;\n BsRGB = rgb.b / 255;\n if (RsRGB <= 0.03928) R = RsRGB / 12.92;else R = Math.pow((RsRGB + 0.055) / 1.055, 2.4);\n if (GsRGB <= 0.03928) G = GsRGB / 12.92;else G = Math.pow((GsRGB + 0.055) / 1.055, 2.4);\n if (BsRGB <= 0.03928) B = BsRGB / 12.92;else B = Math.pow((BsRGB + 0.055) / 1.055, 2.4);\n return 0.2126 * R + 0.7152 * G + 0.0722 * B;\n },\n setAlpha: function setAlpha(value) {\n this._a = boundAlpha(value);\n this._roundA = Math.round(100 * this._a) / 100;\n return this;\n },\n toHsv: function toHsv() {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n return {\n h: hsv.h * 360,\n s: hsv.s,\n v: hsv.v,\n a: this._a\n };\n },\n toHsvString: function toHsvString() {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n var h = Math.round(hsv.h * 360),\n s = Math.round(hsv.s * 100),\n v = Math.round(hsv.v * 100);\n return this._a == 1 ? \"hsv(\" + h + \", \" + s + \"%, \" + v + \"%)\" : \"hsva(\" + h + \", \" + s + \"%, \" + v + \"%, \" + this._roundA + \")\";\n },\n toHsl: function toHsl() {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n return {\n h: hsl.h * 360,\n s: hsl.s,\n l: hsl.l,\n a: this._a\n };\n },\n toHslString: function toHslString() {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n var h = Math.round(hsl.h * 360),\n s = Math.round(hsl.s * 100),\n l = Math.round(hsl.l * 100);\n return this._a == 1 ? \"hsl(\" + h + \", \" + s + \"%, \" + l + \"%)\" : \"hsla(\" + h + \", \" + s + \"%, \" + l + \"%, \" + this._roundA + \")\";\n },\n toHex: function toHex(allow3Char) {\n return rgbToHex(this._r, this._g, this._b, allow3Char);\n },\n toHexString: function toHexString(allow3Char) {\n return \"#\" + this.toHex(allow3Char);\n },\n toHex8: function toHex8(allow4Char) {\n return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char);\n },\n toHex8String: function toHex8String(allow4Char) {\n return \"#\" + this.toHex8(allow4Char);\n },\n toRgb: function toRgb() {\n return {\n r: Math.round(this._r),\n g: Math.round(this._g),\n b: Math.round(this._b),\n a: this._a\n };\n },\n toRgbString: function toRgbString() {\n return this._a == 1 ? \"rgb(\" + Math.round(this._r) + \", \" + Math.round(this._g) + \", \" + Math.round(this._b) + \")\" : \"rgba(\" + Math.round(this._r) + \", \" + Math.round(this._g) + \", \" + Math.round(this._b) + \", \" + this._roundA + \")\";\n },\n toPercentageRgb: function toPercentageRgb() {\n return {\n r: Math.round(bound01(this._r, 255) * 100) + \"%\",\n g: Math.round(bound01(this._g, 255) * 100) + \"%\",\n b: Math.round(bound01(this._b, 255) * 100) + \"%\",\n a: this._a\n };\n },\n toPercentageRgbString: function toPercentageRgbString() {\n return this._a == 1 ? \"rgb(\" + Math.round(bound01(this._r, 255) * 100) + \"%, \" + Math.round(bound01(this._g, 255) * 100) + \"%, \" + Math.round(bound01(this._b, 255) * 100) + \"%)\" : \"rgba(\" + Math.round(bound01(this._r, 255) * 100) + \"%, \" + Math.round(bound01(this._g, 255) * 100) + \"%, \" + Math.round(bound01(this._b, 255) * 100) + \"%, \" + this._roundA + \")\";\n },\n toName: function toName() {\n if (this._a === 0) {\n return \"transparent\";\n }\n if (this._a < 1) {\n return false;\n }\n return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false;\n },\n toFilter: function toFilter(secondColor) {\n var hex8String = \"#\" + rgbaToArgbHex(this._r, this._g, this._b, this._a);\n var secondHex8String = hex8String;\n var gradientType = this._gradientType ? \"GradientType = 1, \" : \"\";\n if (secondColor) {\n var s = tinycolor(secondColor);\n secondHex8String = \"#\" + rgbaToArgbHex(s._r, s._g, s._b, s._a);\n }\n return \"progid:DXImageTransform.Microsoft.gradient(\" + gradientType + \"startColorstr=\" + hex8String + \",endColorstr=\" + secondHex8String + \")\";\n },\n toString: function toString(format) {\n var formatSet = !!format;\n format = format || this._format;\n var formattedString = false;\n var hasAlpha = this._a < 1 && this._a >= 0;\n var needsAlphaFormat = !formatSet && hasAlpha && (format === \"hex\" || format === \"hex6\" || format === \"hex3\" || format === \"hex4\" || format === \"hex8\" || format === \"name\");\n if (needsAlphaFormat) {\n // Special case for \"transparent\", all other non-alpha formats\n // will return rgba when there is transparency.\n if (format === \"name\" && this._a === 0) {\n return this.toName();\n }\n return this.toRgbString();\n }\n if (format === \"rgb\") {\n formattedString = this.toRgbString();\n }\n if (format === \"prgb\") {\n formattedString = this.toPercentageRgbString();\n }\n if (format === \"hex\" || format === \"hex6\") {\n formattedString = this.toHexString();\n }\n if (format === \"hex3\") {\n formattedString = this.toHexString(true);\n }\n if (format === \"hex4\") {\n formattedString = this.toHex8String(true);\n }\n if (format === \"hex8\") {\n formattedString = this.toHex8String();\n }\n if (format === \"name\") {\n formattedString = this.toName();\n }\n if (format === \"hsl\") {\n formattedString = this.toHslString();\n }\n if (format === \"hsv\") {\n formattedString = this.toHsvString();\n }\n return formattedString || this.toHexString();\n },\n clone: function clone() {\n return tinycolor(this.toString());\n },\n _applyModification: function _applyModification(fn, args) {\n var color = fn.apply(null, [this].concat([].slice.call(args)));\n this._r = color._r;\n this._g = color._g;\n this._b = color._b;\n this.setAlpha(color._a);\n return this;\n },\n lighten: function lighten() {\n return this._applyModification(_lighten, arguments);\n },\n brighten: function brighten() {\n return this._applyModification(_brighten, arguments);\n },\n darken: function darken() {\n return this._applyModification(_darken, arguments);\n },\n desaturate: function desaturate() {\n return this._applyModification(_desaturate, arguments);\n },\n saturate: function saturate() {\n return this._applyModification(_saturate, arguments);\n },\n greyscale: function greyscale() {\n return this._applyModification(_greyscale, arguments);\n },\n spin: function spin() {\n return this._applyModification(_spin, arguments);\n },\n _applyCombination: function _applyCombination(fn, args) {\n return fn.apply(null, [this].concat([].slice.call(args)));\n },\n analogous: function analogous() {\n return this._applyCombination(_analogous, arguments);\n },\n complement: function complement() {\n return this._applyCombination(_complement, arguments);\n },\n monochromatic: function monochromatic() {\n return this._applyCombination(_monochromatic, arguments);\n },\n splitcomplement: function splitcomplement() {\n return this._applyCombination(_splitcomplement, arguments);\n },\n // Disabled until https://github.com/bgrins/TinyColor/issues/254\n // polyad: function (number) {\n // return this._applyCombination(polyad, [number]);\n // },\n triad: function triad() {\n return this._applyCombination(polyad, [3]);\n },\n tetrad: function tetrad() {\n return this._applyCombination(polyad, [4]);\n }\n};\n\n// If input is an object, force 1 into \"1.0\" to handle ratios properly\n// String input requires \"1.0\" as input, so 1 will be treated as 1\ntinycolor.fromRatio = function (color, opts) {\n if (_typeof(color) == \"object\") {\n var newColor = {};\n for (var i in color) {\n if (color.hasOwnProperty(i)) {\n if (i === \"a\") {\n newColor[i] = color[i];\n } else {\n newColor[i] = convertToPercentage(color[i]);\n }\n }\n }\n color = newColor;\n }\n return tinycolor(color, opts);\n};\n\n// Given a string or object, convert that input to RGB\n// Possible string inputs:\n//\n// \"red\"\n// \"#f00\" or \"f00\"\n// \"#ff0000\" or \"ff0000\"\n// \"#ff000000\" or \"ff000000\"\n// \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n// \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n// \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n// \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n// \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n// \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n// \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n//\nfunction inputToRGB(color) {\n var rgb = {\n r: 0,\n g: 0,\n b: 0\n };\n var a = 1;\n var s = null;\n var v = null;\n var l = null;\n var ok = false;\n var format = false;\n if (typeof color == \"string\") {\n color = stringInputToObject(color);\n }\n if (_typeof(color) == \"object\") {\n if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {\n rgb = rgbToRgb(color.r, color.g, color.b);\n ok = true;\n format = String(color.r).substr(-1) === \"%\" ? \"prgb\" : \"rgb\";\n } else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {\n s = convertToPercentage(color.s);\n v = convertToPercentage(color.v);\n rgb = hsvToRgb(color.h, s, v);\n ok = true;\n format = \"hsv\";\n } else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {\n s = convertToPercentage(color.s);\n l = convertToPercentage(color.l);\n rgb = hslToRgb(color.h, s, l);\n ok = true;\n format = \"hsl\";\n }\n if (color.hasOwnProperty(\"a\")) {\n a = color.a;\n }\n }\n a = boundAlpha(a);\n return {\n ok: ok,\n format: color.format || format,\n r: Math.min(255, Math.max(rgb.r, 0)),\n g: Math.min(255, Math.max(rgb.g, 0)),\n b: Math.min(255, Math.max(rgb.b, 0)),\n a: a\n };\n}\n\n// Conversion Functions\n// --------------------\n\n// `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n// \n\n// `rgbToRgb`\n// Handle bounds / percentage checking to conform to CSS color spec\n// \n// *Assumes:* r, g, b in [0, 255] or [0, 1]\n// *Returns:* { r, g, b } in [0, 255]\nfunction rgbToRgb(r, g, b) {\n return {\n r: bound01(r, 255) * 255,\n g: bound01(g, 255) * 255,\n b: bound01(b, 255) * 255\n };\n}\n\n// `rgbToHsl`\n// Converts an RGB color value to HSL.\n// *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n// *Returns:* { h, s, l } in [0,1]\nfunction rgbToHsl(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n var max = Math.max(r, g, b),\n min = Math.min(r, g, b);\n var h,\n s,\n l = (max + min) / 2;\n if (max == min) {\n h = s = 0; // achromatic\n } else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n return {\n h: h,\n s: s,\n l: l\n };\n}\n\n// `hslToRgb`\n// Converts an HSL color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\nfunction hslToRgb(h, s, l) {\n var r, g, b;\n h = bound01(h, 360);\n s = bound01(s, 100);\n l = bound01(l, 100);\n function hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n }\n if (s === 0) {\n r = g = b = l; // achromatic\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n return {\n r: r * 255,\n g: g * 255,\n b: b * 255\n };\n}\n\n// `rgbToHsv`\n// Converts an RGB color value to HSV\n// *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n// *Returns:* { h, s, v } in [0,1]\nfunction rgbToHsv(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n var max = Math.max(r, g, b),\n min = Math.min(r, g, b);\n var h,\n s,\n v = max;\n var d = max - min;\n s = max === 0 ? 0 : d / max;\n if (max == min) {\n h = 0; // achromatic\n } else {\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n return {\n h: h,\n s: s,\n v: v\n };\n}\n\n// `hsvToRgb`\n// Converts an HSV color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\nfunction hsvToRgb(h, s, v) {\n h = bound01(h, 360) * 6;\n s = bound01(s, 100);\n v = bound01(v, 100);\n var i = Math.floor(h),\n f = h - i,\n p = v * (1 - s),\n q = v * (1 - f * s),\n t = v * (1 - (1 - f) * s),\n mod = i % 6,\n r = [v, q, p, p, t, v][mod],\n g = [t, v, v, q, p, p][mod],\n b = [p, p, t, v, v, q][mod];\n return {\n r: r * 255,\n g: g * 255,\n b: b * 255\n };\n}\n\n// `rgbToHex`\n// Converts an RGB color to hex\n// Assumes r, g, and b are contained in the set [0, 255]\n// Returns a 3 or 6 character hex\nfunction rgbToHex(r, g, b, allow3Char) {\n var hex = [pad2(Math.round(r).toString(16)), pad2(Math.round(g).toString(16)), pad2(Math.round(b).toString(16))];\n\n // Return a 3 character hex if possible\n if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n }\n return hex.join(\"\");\n}\n\n// `rgbaToHex`\n// Converts an RGBA color plus alpha transparency to hex\n// Assumes r, g, b are contained in the set [0, 255] and\n// a in [0, 1]. Returns a 4 or 8 character rgba hex\nfunction rgbaToHex(r, g, b, a, allow4Char) {\n var hex = [pad2(Math.round(r).toString(16)), pad2(Math.round(g).toString(16)), pad2(Math.round(b).toString(16)), pad2(convertDecimalToHex(a))];\n\n // Return a 4 character hex if possible\n if (allow4Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1) && hex[3].charAt(0) == hex[3].charAt(1)) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);\n }\n return hex.join(\"\");\n}\n\n// `rgbaToArgbHex`\n// Converts an RGBA color to an ARGB Hex8 string\n// Rarely used, but required for \"toFilter()\"\nfunction rgbaToArgbHex(r, g, b, a) {\n var hex = [pad2(convertDecimalToHex(a)), pad2(Math.round(r).toString(16)), pad2(Math.round(g).toString(16)), pad2(Math.round(b).toString(16))];\n return hex.join(\"\");\n}\n\n// `equals`\n// Can be called with any tinycolor input\ntinycolor.equals = function (color1, color2) {\n if (!color1 || !color2) return false;\n return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString();\n};\ntinycolor.random = function () {\n return tinycolor.fromRatio({\n r: Math.random(),\n g: Math.random(),\n b: Math.random()\n });\n};\n\n// Modification Functions\n// ----------------------\n// Thanks to less.js for some of the basics here\n// \n\nfunction _desaturate(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.s -= amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n}\nfunction _saturate(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.s += amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n}\nfunction _greyscale(color) {\n return tinycolor(color).desaturate(100);\n}\nfunction _lighten(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.l += amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n}\nfunction _brighten(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var rgb = tinycolor(color).toRgb();\n rgb.r = Math.max(0, Math.min(255, rgb.r - Math.round(255 * -(amount / 100))));\n rgb.g = Math.max(0, Math.min(255, rgb.g - Math.round(255 * -(amount / 100))));\n rgb.b = Math.max(0, Math.min(255, rgb.b - Math.round(255 * -(amount / 100))));\n return tinycolor(rgb);\n}\nfunction _darken(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.l -= amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n}\n\n// Spin takes a positive or negative amount within [-360, 360] indicating the change of hue.\n// Values outside of this range will be wrapped into this range.\nfunction _spin(color, amount) {\n var hsl = tinycolor(color).toHsl();\n var hue = (hsl.h + amount) % 360;\n hsl.h = hue < 0 ? 360 + hue : hue;\n return tinycolor(hsl);\n}\n\n// Combination Functions\n// ---------------------\n// Thanks to jQuery xColor for some of the ideas behind these\n// \n\nfunction _complement(color) {\n var hsl = tinycolor(color).toHsl();\n hsl.h = (hsl.h + 180) % 360;\n return tinycolor(hsl);\n}\nfunction polyad(color, number) {\n if (isNaN(number) || number <= 0) {\n throw new Error(\"Argument to polyad must be a positive number\");\n }\n var hsl = tinycolor(color).toHsl();\n var result = [tinycolor(color)];\n var step = 360 / number;\n for (var i = 1; i < number; i++) {\n result.push(tinycolor({\n h: (hsl.h + i * step) % 360,\n s: hsl.s,\n l: hsl.l\n }));\n }\n return result;\n}\nfunction _splitcomplement(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [tinycolor(color), tinycolor({\n h: (h + 72) % 360,\n s: hsl.s,\n l: hsl.l\n }), tinycolor({\n h: (h + 216) % 360,\n s: hsl.s,\n l: hsl.l\n })];\n}\nfunction _analogous(color, results, slices) {\n results = results || 6;\n slices = slices || 30;\n var hsl = tinycolor(color).toHsl();\n var part = 360 / slices;\n var ret = [tinycolor(color)];\n for (hsl.h = (hsl.h - (part * results >> 1) + 720) % 360; --results;) {\n hsl.h = (hsl.h + part) % 360;\n ret.push(tinycolor(hsl));\n }\n return ret;\n}\nfunction _monochromatic(color, results) {\n results = results || 6;\n var hsv = tinycolor(color).toHsv();\n var h = hsv.h,\n s = hsv.s,\n v = hsv.v;\n var ret = [];\n var modification = 1 / results;\n while (results--) {\n ret.push(tinycolor({\n h: h,\n s: s,\n v: v\n }));\n v = (v + modification) % 1;\n }\n return ret;\n}\n\n// Utility Functions\n// ---------------------\n\ntinycolor.mix = function (color1, color2, amount) {\n amount = amount === 0 ? 0 : amount || 50;\n var rgb1 = tinycolor(color1).toRgb();\n var rgb2 = tinycolor(color2).toRgb();\n var p = amount / 100;\n var rgba = {\n r: (rgb2.r - rgb1.r) * p + rgb1.r,\n g: (rgb2.g - rgb1.g) * p + rgb1.g,\n b: (rgb2.b - rgb1.b) * p + rgb1.b,\n a: (rgb2.a - rgb1.a) * p + rgb1.a\n };\n return tinycolor(rgba);\n};\n\n// Readability Functions\n// ---------------------\n// false\n// tinycolor.isReadable(\"#000\", \"#111\",{level:\"AA\",size:\"large\"}) => false\ntinycolor.isReadable = function (color1, color2, wcag2) {\n var readability = tinycolor.readability(color1, color2);\n var wcag2Parms, out;\n out = false;\n wcag2Parms = validateWCAG2Parms(wcag2);\n switch (wcag2Parms.level + wcag2Parms.size) {\n case \"AAsmall\":\n case \"AAAlarge\":\n out = readability >= 4.5;\n break;\n case \"AAlarge\":\n out = readability >= 3;\n break;\n case \"AAAsmall\":\n out = readability >= 7;\n break;\n }\n return out;\n};\n\n// `mostReadable`\n// Given a base color and a list of possible foreground or background\n// colors for that base, returns the most readable color.\n// Optionally returns Black or White if the most readable color is unreadable.\n// *Example*\n// tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:false}).toHexString(); // \"#112255\"\n// tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:true}).toHexString(); // \"#ffffff\"\n// tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"large\"}).toHexString(); // \"#faf3f3\"\n// tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"small\"}).toHexString(); // \"#ffffff\"\ntinycolor.mostReadable = function (baseColor, colorList, args) {\n var bestColor = null;\n var bestScore = 0;\n var readability;\n var includeFallbackColors, level, size;\n args = args || {};\n includeFallbackColors = args.includeFallbackColors;\n level = args.level;\n size = args.size;\n for (var i = 0; i < colorList.length; i++) {\n readability = tinycolor.readability(baseColor, colorList[i]);\n if (readability > bestScore) {\n bestScore = readability;\n bestColor = tinycolor(colorList[i]);\n }\n }\n if (tinycolor.isReadable(baseColor, bestColor, {\n level: level,\n size: size\n }) || !includeFallbackColors) {\n return bestColor;\n } else {\n args.includeFallbackColors = false;\n return tinycolor.mostReadable(baseColor, [\"#fff\", \"#000\"], args);\n }\n};\n\n// Big List of Colors\n// ------------------\n// \nvar names = tinycolor.names = {\n aliceblue: \"f0f8ff\",\n antiquewhite: \"faebd7\",\n aqua: \"0ff\",\n aquamarine: \"7fffd4\",\n azure: \"f0ffff\",\n beige: \"f5f5dc\",\n bisque: \"ffe4c4\",\n black: \"000\",\n blanchedalmond: \"ffebcd\",\n blue: \"00f\",\n blueviolet: \"8a2be2\",\n brown: \"a52a2a\",\n burlywood: \"deb887\",\n burntsienna: \"ea7e5d\",\n cadetblue: \"5f9ea0\",\n chartreuse: \"7fff00\",\n chocolate: \"d2691e\",\n coral: \"ff7f50\",\n cornflowerblue: \"6495ed\",\n cornsilk: \"fff8dc\",\n crimson: \"dc143c\",\n cyan: \"0ff\",\n darkblue: \"00008b\",\n darkcyan: \"008b8b\",\n darkgoldenrod: \"b8860b\",\n darkgray: \"a9a9a9\",\n darkgreen: \"006400\",\n darkgrey: \"a9a9a9\",\n darkkhaki: \"bdb76b\",\n darkmagenta: \"8b008b\",\n darkolivegreen: \"556b2f\",\n darkorange: \"ff8c00\",\n darkorchid: \"9932cc\",\n darkred: \"8b0000\",\n darksalmon: \"e9967a\",\n darkseagreen: \"8fbc8f\",\n darkslateblue: \"483d8b\",\n darkslategray: \"2f4f4f\",\n darkslategrey: \"2f4f4f\",\n darkturquoise: \"00ced1\",\n darkviolet: \"9400d3\",\n deeppink: \"ff1493\",\n deepskyblue: \"00bfff\",\n dimgray: \"696969\",\n dimgrey: \"696969\",\n dodgerblue: \"1e90ff\",\n firebrick: \"b22222\",\n floralwhite: \"fffaf0\",\n forestgreen: \"228b22\",\n fuchsia: \"f0f\",\n gainsboro: \"dcdcdc\",\n ghostwhite: \"f8f8ff\",\n gold: \"ffd700\",\n goldenrod: \"daa520\",\n gray: \"808080\",\n green: \"008000\",\n greenyellow: \"adff2f\",\n grey: \"808080\",\n honeydew: \"f0fff0\",\n hotpink: \"ff69b4\",\n indianred: \"cd5c5c\",\n indigo: \"4b0082\",\n ivory: \"fffff0\",\n khaki: \"f0e68c\",\n lavender: \"e6e6fa\",\n lavenderblush: \"fff0f5\",\n lawngreen: \"7cfc00\",\n lemonchiffon: \"fffacd\",\n lightblue: \"add8e6\",\n lightcoral: \"f08080\",\n lightcyan: \"e0ffff\",\n lightgoldenrodyellow: \"fafad2\",\n lightgray: \"d3d3d3\",\n lightgreen: \"90ee90\",\n lightgrey: \"d3d3d3\",\n lightpink: \"ffb6c1\",\n lightsalmon: \"ffa07a\",\n lightseagreen: \"20b2aa\",\n lightskyblue: \"87cefa\",\n lightslategray: \"789\",\n lightslategrey: \"789\",\n lightsteelblue: \"b0c4de\",\n lightyellow: \"ffffe0\",\n lime: \"0f0\",\n limegreen: \"32cd32\",\n linen: \"faf0e6\",\n magenta: \"f0f\",\n maroon: \"800000\",\n mediumaquamarine: \"66cdaa\",\n mediumblue: \"0000cd\",\n mediumorchid: \"ba55d3\",\n mediumpurple: \"9370db\",\n mediumseagreen: \"3cb371\",\n mediumslateblue: \"7b68ee\",\n mediumspringgreen: \"00fa9a\",\n mediumturquoise: \"48d1cc\",\n mediumvioletred: \"c71585\",\n midnightblue: \"191970\",\n mintcream: \"f5fffa\",\n mistyrose: \"ffe4e1\",\n moccasin: \"ffe4b5\",\n navajowhite: \"ffdead\",\n navy: \"000080\",\n oldlace: \"fdf5e6\",\n olive: \"808000\",\n olivedrab: \"6b8e23\",\n orange: \"ffa500\",\n orangered: \"ff4500\",\n orchid: \"da70d6\",\n palegoldenrod: \"eee8aa\",\n palegreen: \"98fb98\",\n paleturquoise: \"afeeee\",\n palevioletred: \"db7093\",\n papayawhip: \"ffefd5\",\n peachpuff: \"ffdab9\",\n peru: \"cd853f\",\n pink: \"ffc0cb\",\n plum: \"dda0dd\",\n powderblue: \"b0e0e6\",\n purple: \"800080\",\n rebeccapurple: \"663399\",\n red: \"f00\",\n rosybrown: \"bc8f8f\",\n royalblue: \"4169e1\",\n saddlebrown: \"8b4513\",\n salmon: \"fa8072\",\n sandybrown: \"f4a460\",\n seagreen: \"2e8b57\",\n seashell: \"fff5ee\",\n sienna: \"a0522d\",\n silver: \"c0c0c0\",\n skyblue: \"87ceeb\",\n slateblue: \"6a5acd\",\n slategray: \"708090\",\n slategrey: \"708090\",\n snow: \"fffafa\",\n springgreen: \"00ff7f\",\n steelblue: \"4682b4\",\n tan: \"d2b48c\",\n teal: \"008080\",\n thistle: \"d8bfd8\",\n tomato: \"ff6347\",\n turquoise: \"40e0d0\",\n violet: \"ee82ee\",\n wheat: \"f5deb3\",\n white: \"fff\",\n whitesmoke: \"f5f5f5\",\n yellow: \"ff0\",\n yellowgreen: \"9acd32\"\n};\n\n// Make it easy to access colors via `hexNames[hex]`\nvar hexNames = tinycolor.hexNames = flip(names);\n\n// Utilities\n// ---------\n\n// `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }`\nfunction flip(o) {\n var flipped = {};\n for (var i in o) {\n if (o.hasOwnProperty(i)) {\n flipped[o[i]] = i;\n }\n }\n return flipped;\n}\n\n// Return a valid alpha value [0,1] with all invalid values being set to 1\nfunction boundAlpha(a) {\n a = parseFloat(a);\n if (isNaN(a) || a < 0 || a > 1) {\n a = 1;\n }\n return a;\n}\n\n// Take input from [0, n] and return it as [0, 1]\nfunction bound01(n, max) {\n if (isOnePointZero(n)) n = \"100%\";\n var processPercent = isPercentage(n);\n n = Math.min(max, Math.max(0, parseFloat(n)));\n\n // Automatically convert percentage into number\n if (processPercent) {\n n = parseInt(n * max, 10) / 100;\n }\n\n // Handle floating point rounding errors\n if (Math.abs(n - max) < 0.000001) {\n return 1;\n }\n\n // Convert into [0, 1] range if it isn't already\n return n % max / parseFloat(max);\n}\n\n// Force a number between 0 and 1\nfunction clamp01(val) {\n return Math.min(1, Math.max(0, val));\n}\n\n// Parse a base-16 hex value into a base-10 integer\nfunction parseIntFromHex(val) {\n return parseInt(val, 16);\n}\n\n// Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n// \nfunction isOnePointZero(n) {\n return typeof n == \"string\" && n.indexOf(\".\") != -1 && parseFloat(n) === 1;\n}\n\n// Check to see if string passed in is a percentage\nfunction isPercentage(n) {\n return typeof n === \"string\" && n.indexOf(\"%\") != -1;\n}\n\n// Force a hex value to have 2 characters\nfunction pad2(c) {\n return c.length == 1 ? \"0\" + c : \"\" + c;\n}\n\n// Replace a decimal with it's percentage value\nfunction convertToPercentage(n) {\n if (n <= 1) {\n n = n * 100 + \"%\";\n }\n return n;\n}\n\n// Converts a decimal to a hex value\nfunction convertDecimalToHex(d) {\n return Math.round(parseFloat(d) * 255).toString(16);\n}\n// Converts a hex value to a decimal\nfunction convertHexToDecimal(h) {\n return parseIntFromHex(h) / 255;\n}\nvar matchers = function () {\n // \n var CSS_INTEGER = \"[-\\\\+]?\\\\d+%?\";\n\n // \n var CSS_NUMBER = \"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\";\n\n // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome.\n var CSS_UNIT = \"(?:\" + CSS_NUMBER + \")|(?:\" + CSS_INTEGER + \")\";\n\n // Actual matching.\n // Parentheses and commas are optional, but not required.\n // Whitespace can take the place of commas or opening paren\n var PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n var PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n return {\n CSS_UNIT: new RegExp(CSS_UNIT),\n rgb: new RegExp(\"rgb\" + PERMISSIVE_MATCH3),\n rgba: new RegExp(\"rgba\" + PERMISSIVE_MATCH4),\n hsl: new RegExp(\"hsl\" + PERMISSIVE_MATCH3),\n hsla: new RegExp(\"hsla\" + PERMISSIVE_MATCH4),\n hsv: new RegExp(\"hsv\" + PERMISSIVE_MATCH3),\n hsva: new RegExp(\"hsva\" + PERMISSIVE_MATCH4),\n hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/\n };\n}();\n\n// `isValidCSSUnit`\n// Take in a single string / number and check to see if it looks like a CSS unit\n// (see `matchers` above for definition).\nfunction isValidCSSUnit(color) {\n return !!matchers.CSS_UNIT.exec(color);\n}\n\n// `stringInputToObject`\n// Permissive string parsing. Take in a number of formats, and output an object\n// based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\nfunction stringInputToObject(color) {\n color = color.replace(trimLeft, \"\").replace(trimRight, \"\").toLowerCase();\n var named = false;\n if (names[color]) {\n color = names[color];\n named = true;\n } else if (color == \"transparent\") {\n return {\n r: 0,\n g: 0,\n b: 0,\n a: 0,\n format: \"name\"\n };\n }\n\n // Try to match string input using regular expressions.\n // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n // Just return an object and let the conversion functions handle that.\n // This way the result will be the same whether the tinycolor is initialized with string or object.\n var match;\n if (match = matchers.rgb.exec(color)) {\n return {\n r: match[1],\n g: match[2],\n b: match[3]\n };\n }\n if (match = matchers.rgba.exec(color)) {\n return {\n r: match[1],\n g: match[2],\n b: match[3],\n a: match[4]\n };\n }\n if (match = matchers.hsl.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n l: match[3]\n };\n }\n if (match = matchers.hsla.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n l: match[3],\n a: match[4]\n };\n }\n if (match = matchers.hsv.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n v: match[3]\n };\n }\n if (match = matchers.hsva.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n v: match[3],\n a: match[4]\n };\n }\n if (match = matchers.hex8.exec(color)) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n a: convertHexToDecimal(match[4]),\n format: named ? \"name\" : \"hex8\"\n };\n }\n if (match = matchers.hex6.exec(color)) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n format: named ? \"name\" : \"hex\"\n };\n }\n if (match = matchers.hex4.exec(color)) {\n return {\n r: parseIntFromHex(match[1] + \"\" + match[1]),\n g: parseIntFromHex(match[2] + \"\" + match[2]),\n b: parseIntFromHex(match[3] + \"\" + match[3]),\n a: convertHexToDecimal(match[4] + \"\" + match[4]),\n format: named ? \"name\" : \"hex8\"\n };\n }\n if (match = matchers.hex3.exec(color)) {\n return {\n r: parseIntFromHex(match[1] + \"\" + match[1]),\n g: parseIntFromHex(match[2] + \"\" + match[2]),\n b: parseIntFromHex(match[3] + \"\" + match[3]),\n format: named ? \"name\" : \"hex\"\n };\n }\n return false;\n}\nfunction validateWCAG2Parms(parms) {\n // return valid WCAG2 parms for isReadable.\n // If input parms are invalid, return {\"level\":\"AA\", \"size\":\"small\"}\n var level, size;\n parms = parms || {\n level: \"AA\",\n size: \"small\"\n };\n level = (parms.level || \"AA\").toUpperCase();\n size = (parms.size || \"small\").toLowerCase();\n if (level !== \"AA\" && level !== \"AAA\") {\n level = \"AA\";\n }\n if (size !== \"small\" && size !== \"large\") {\n size = \"small\";\n }\n return {\n level: level,\n size: size\n };\n}\n\nexport { tinycolor as default };\n","var SampleUnit = /* @__PURE__ */ ((SampleUnit2) => {\n SampleUnit2[\"Bytes\"] = \"bytes\";\n SampleUnit2[\"Short\"] = \"short\";\n SampleUnit2[\"Nanoseconds\"] = \"ns\";\n return SampleUnit2;\n})(SampleUnit || {});\nvar SelectedView = /* @__PURE__ */ ((SelectedView2) => {\n SelectedView2[\"TopTable\"] = \"topTable\";\n SelectedView2[\"FlameGraph\"] = \"flameGraph\";\n SelectedView2[\"Both\"] = \"both\";\n return SelectedView2;\n})(SelectedView || {});\nvar ColorScheme = /* @__PURE__ */ ((ColorScheme2) => {\n ColorScheme2[\"ValueBased\"] = \"valueBased\";\n ColorScheme2[\"PackageBased\"] = \"packageBased\";\n return ColorScheme2;\n})(ColorScheme || {});\nvar ColorSchemeDiff = /* @__PURE__ */ ((ColorSchemeDiff2) => {\n ColorSchemeDiff2[\"Default\"] = \"default\";\n ColorSchemeDiff2[\"DiffColorBlind\"] = \"diffColorBlind\";\n return ColorSchemeDiff2;\n})(ColorSchemeDiff || {});\n\nexport { ColorScheme, ColorSchemeDiff, SampleUnit, SelectedView };\n//# sourceMappingURL=types.js.map\n","import { scaleLinear } from 'd3';\nimport color from 'tinycolor2';\nimport { ColorSchemeDiff } from '../types.js';\nimport murmurhash3_32_gc from './murmur3.js';\n\nconst packageColors = [\n color({ h: 24, s: 69, l: 60 }),\n color({ h: 34, s: 65, l: 65 }),\n color({ h: 194, s: 52, l: 61 }),\n color({ h: 163, s: 45, l: 55 }),\n color({ h: 211, s: 48, l: 60 }),\n color({ h: 246, s: 40, l: 65 }),\n color({ h: 305, s: 63, l: 79 }),\n color({ h: 47, s: 100, l: 73 }),\n color({ r: 183, g: 219, b: 171 }),\n color({ r: 244, g: 213, b: 152 }),\n color({ r: 78, g: 146, b: 249 }),\n color({ r: 249, g: 186, b: 143 }),\n color({ r: 242, g: 145, b: 145 }),\n color({ r: 130, g: 181, b: 216 }),\n color({ r: 229, g: 168, b: 226 }),\n color({ r: 174, g: 162, b: 224 }),\n color({ r: 154, g: 196, b: 138 }),\n color({ r: 242, g: 201, b: 109 }),\n color({ r: 101, g: 197, b: 219 }),\n color({ r: 249, g: 147, b: 78 }),\n color({ r: 234, g: 100, b: 96 }),\n color({ r: 81, g: 149, b: 206 }),\n color({ r: 214, g: 131, b: 206 }),\n color({ r: 128, g: 110, b: 183 })\n];\nconst byValueMinColor = getBarColorByValue(1, 100, 0, 1);\nconst byValueMaxColor = getBarColorByValue(100, 100, 0, 1);\nconst byValueGradient = `linear-gradient(90deg, ${byValueMinColor} 0%, ${byValueMaxColor} 100%)`;\nconst byPackageGradient = `linear-gradient(90deg, ${packageColors[0]} 0%, ${packageColors[2]} 30%, ${packageColors[6]} 50%, ${packageColors[7]} 70%, ${packageColors[8]} 100%)`;\nfunction getBarColorByValue(value, totalTicks, rangeMin, rangeMax) {\n const intensity = Math.min(1, value / totalTicks / (rangeMax - rangeMin));\n const h = 50 - 50 * intensity;\n const l = 65 + 7 * intensity;\n return color({ h, s: 100, l });\n}\nfunction getBarColorByPackage(label, theme) {\n const packageName = getPackageName(label);\n const hash = murmurhash3_32_gc(packageName || \"\", 0);\n const colorIndex = hash % packageColors.length;\n let packageColor = packageColors[colorIndex].clone();\n if (theme.isLight) {\n packageColor = packageColor.brighten(15);\n }\n return packageColor;\n}\nconst diffDefaultColors = [\"rgb(0, 170, 0)\", \"rgb(148, 142, 142)\", \"rgb(200, 0, 0)\"];\nconst diffDefaultGradient = `linear-gradient(90deg, ${diffDefaultColors[0]} 0%, ${diffDefaultColors[1]} 50%, ${diffDefaultColors[2]} 100%)`;\nconst diffColorBlindColors = [\"rgb(26, 133, 255)\", \"rgb(148, 142, 142)\", \"rgb(220, 50, 32)\"];\nconst diffColorBlindGradient = `linear-gradient(90deg, ${diffColorBlindColors[0]} 0%, ${diffColorBlindColors[1]} 50%, ${diffColorBlindColors[2]} 100%)`;\nfunction getBarColorByDiff(ticks, ticksRight, totalTicks, totalTicksRight, colorScheme) {\n const range = colorScheme === ColorSchemeDiff.Default ? diffDefaultColors : diffColorBlindColors;\n const colorScale = scaleLinear().domain([-100, 0, 100]).range(range);\n const ticksLeft = ticks - ticksRight;\n const totalTicksLeft = totalTicks - totalTicksRight;\n if (totalTicksRight === 0 || totalTicksLeft === 0) {\n const rgbString2 = colorScale(0);\n return color(rgbString2);\n }\n const percentageLeft = Math.round(1e4 * ticksLeft / totalTicksLeft) / 100;\n const percentageRight = Math.round(1e4 * ticksRight / totalTicksRight) / 100;\n const diff = (percentageRight - percentageLeft) / percentageLeft * 100;\n const rgbString = colorScale(diff);\n return color(rgbString);\n}\nconst matchers = [\n [\"phpspy\", /^(?([^\\/]*\\/)*)(?.*\\.php+)(?.*)$/],\n [\"pyspy\", /^(?([^\\/]*\\/)*)(?.*\\.py+)(?.*)$/],\n [\"rbspy\", /^(?([^\\/]*\\/)*)(?.*\\.rb+)(?.*)$/],\n [\n \"nodespy\",\n /^(\\.\\/node_modules\\/)?(?[^/]*)(?.*\\.?(jsx?|tsx?)?):(?.*):(?.*)$/\n ],\n [\"gospy\", /^(?.*?\\/.*?\\.|.*?\\.|.+)(?.*)$/],\n // also 'scrape'\n [\"javaspy\", /^(?.+\\/)(?.+\\.)(?.+)$/],\n [\"dotnetspy\", /^(?.+)\\.(.+)\\.(.+)\\(.*\\)$/],\n [\"tracing\", /^(?.+?):.*$/],\n [\"pyroscope-rs\", /^(?[^::]+)/],\n [\"ebpfspy\", /^(?.+)$/],\n [\"unknown\", /^(?.+)$/]\n];\nfunction getPackageName(name) {\n var _a;\n for (const [_, matcher] of matchers) {\n const match = name.match(matcher);\n if (match) {\n return ((_a = match.groups) == null ? void 0 : _a.packageName) || \"\";\n }\n }\n return void 0;\n}\n\nexport { byPackageGradient, byValueGradient, diffColorBlindColors, diffColorBlindGradient, diffDefaultColors, diffDefaultGradient, getBarColorByDiff, getBarColorByPackage, getBarColorByValue };\n//# sourceMappingURL=colors.js.map\n","function murmurhash3_32_gc(key, seed = 0) {\n let remainder;\n let bytes;\n let h1;\n let h1b;\n let c1;\n let c2;\n let k1;\n let i;\n remainder = key.length & 3;\n bytes = key.length - remainder;\n h1 = seed;\n c1 = 3432918353;\n c2 = 461845907;\n i = 0;\n while (i < bytes) {\n k1 = key.charCodeAt(i) & 255 | (key.charCodeAt(++i) & 255) << 8 | (key.charCodeAt(++i) & 255) << 16 | (key.charCodeAt(++i) & 255) << 24;\n ++i;\n k1 = (k1 & 65535) * c1 + (((k1 >>> 16) * c1 & 65535) << 16) & 4294967295;\n k1 = k1 << 15 | k1 >>> 17;\n k1 = (k1 & 65535) * c2 + (((k1 >>> 16) * c2 & 65535) << 16) & 4294967295;\n h1 ^= k1;\n h1 = h1 << 13 | h1 >>> 19;\n h1b = (h1 & 65535) * 5 + (((h1 >>> 16) * 5 & 65535) << 16) & 4294967295;\n h1 = (h1b & 65535) + 27492 + (((h1b >>> 16) + 58964 & 65535) << 16);\n }\n k1 = 0;\n switch (remainder) {\n case 3:\n k1 ^= (key.charCodeAt(i + 2) & 255) << 16;\n // fall through\n case 2:\n k1 ^= (key.charCodeAt(i + 1) & 255) << 8;\n // fall through\n case 1:\n k1 ^= key.charCodeAt(i) & 255;\n // fall through\n default:\n k1 = (k1 & 65535) * c1 + (((k1 >>> 16) * c1 & 65535) << 16) & 4294967295;\n k1 = k1 << 15 | k1 >>> 17;\n k1 = (k1 & 65535) * c2 + (((k1 >>> 16) * c2 & 65535) << 16) & 4294967295;\n h1 ^= k1;\n }\n h1 ^= key.length;\n h1 ^= h1 >>> 16;\n h1 = (h1 & 65535) * 2246822507 + (((h1 >>> 16) * 2246822507 & 65535) << 16) & 4294967295;\n h1 ^= h1 >>> 13;\n h1 = (h1 & 65535) * 3266489909 + (((h1 >>> 16) * 3266489909 & 65535) << 16) & 4294967295;\n h1 ^= h1 >>> 16;\n return h1 >>> 0;\n}\n\nexport { murmurhash3_32_gc as default };\n//# sourceMappingURL=murmur3.js.map\n","import { useMemo, useEffect, useCallback, useState } from 'react';\nimport color from 'tinycolor2';\nimport { useTheme2 } from '@grafana/ui';\nimport { HIDE_THRESHOLD, PIXELS_PER_LEVEL, BAR_BORDER_WIDTH, LABEL_THRESHOLD, GROUP_STRIP_WIDTH, GROUP_STRIP_PADDING, MUTE_THRESHOLD, GROUP_STRIP_MARGIN_LEFT, GROUP_TEXT_OFFSET, BAR_TEXT_PADDING_LEFT } from '../constants.js';\nimport { ColorSchemeDiff, ColorScheme } from '../types.js';\nimport { getBarColorByDiff, getBarColorByValue, getBarColorByPackage } from './colors.js';\n\nfunction useFlameRender(options) {\n const {\n canvasRef,\n data,\n root,\n depth,\n direction,\n wrapperWidth,\n rangeMin,\n rangeMax,\n matchedLabels,\n textAlign,\n totalViewTicks,\n totalColorTicks,\n totalTicksRight,\n colorScheme,\n focusedItemData,\n collapsedMap\n } = options;\n const ctx = useSetupCanvas(canvasRef, wrapperWidth, depth);\n const theme = useTheme2();\n const mutedColor = useMemo(() => {\n const barMutedColor = color(theme.colors.background.secondary);\n return theme.isLight ? barMutedColor.darken(10).toHexString() : barMutedColor.lighten(10).toHexString();\n }, [theme]);\n const getBarColor = useColorFunction(\n totalColorTicks,\n totalTicksRight,\n colorScheme,\n theme,\n mutedColor,\n rangeMin,\n rangeMax,\n matchedLabels,\n focusedItemData ? focusedItemData.item.level : 0\n );\n const renderFunc = useRenderFunc(ctx, data, getBarColor, textAlign, collapsedMap);\n useEffect(() => {\n if (!ctx) {\n return;\n }\n ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);\n const mutedPath2D = new Path2D();\n walkTree(\n root,\n direction,\n data,\n totalViewTicks,\n rangeMin,\n rangeMax,\n wrapperWidth,\n collapsedMap,\n (item, x, y, width, height, label, muted) => {\n if (muted) {\n mutedPath2D.rect(x, y, width, height);\n } else {\n renderFunc(item, x, y, width, height, label);\n }\n }\n );\n ctx.fillStyle = mutedColor;\n ctx.fill(mutedPath2D);\n }, [\n ctx,\n data,\n root,\n wrapperWidth,\n rangeMin,\n rangeMax,\n totalViewTicks,\n direction,\n renderFunc,\n collapsedMap,\n mutedColor\n ]);\n}\nfunction useRenderFunc(ctx, data, getBarColor, textAlign, collapsedMap) {\n return useMemo(() => {\n if (!ctx) {\n return () => {\n };\n }\n const renderFunc = (item, x, y, width, height, label) => {\n ctx.beginPath();\n ctx.rect(x + BAR_BORDER_WIDTH, y, width, height);\n ctx.fillStyle = getBarColor(item, label, false);\n ctx.stroke();\n ctx.fill();\n const collapsedItemConfig = collapsedMap.get(item);\n let finalLabel = label;\n if (collapsedItemConfig && collapsedItemConfig.collapsed) {\n const numberOfCollapsedItems = collapsedItemConfig.items.length;\n finalLabel = `(${numberOfCollapsedItems}) ` + label;\n }\n if (width >= LABEL_THRESHOLD) {\n if (collapsedItemConfig) {\n renderLabel(\n ctx,\n data,\n finalLabel,\n item,\n width,\n textAlign === \"left\" ? x + GROUP_STRIP_MARGIN_LEFT + GROUP_TEXT_OFFSET : x,\n y,\n textAlign\n );\n renderGroupingStrip(ctx, x, y, height, item, collapsedItemConfig);\n } else {\n renderLabel(ctx, data, finalLabel, item, width, x, y, textAlign);\n }\n }\n };\n return renderFunc;\n }, [ctx, getBarColor, textAlign, data, collapsedMap]);\n}\nfunction renderGroupingStrip(ctx, x, y, height, item, collapsedItemConfig) {\n const groupStripX = x + GROUP_STRIP_MARGIN_LEFT;\n ctx.beginPath();\n ctx.rect(x, y, groupStripX - x + GROUP_STRIP_WIDTH + GROUP_STRIP_PADDING, height);\n ctx.fill();\n ctx.beginPath();\n if (collapsedItemConfig.collapsed) {\n ctx.rect(groupStripX, y + height / 4, GROUP_STRIP_WIDTH, height / 2);\n } else {\n if (collapsedItemConfig.items[0] === item) {\n ctx.rect(groupStripX, y + height / 2, GROUP_STRIP_WIDTH, height / 2);\n } else if (collapsedItemConfig.items[collapsedItemConfig.items.length - 1] === item) {\n ctx.rect(groupStripX, y, GROUP_STRIP_WIDTH, height / 2);\n } else {\n ctx.rect(groupStripX, y, GROUP_STRIP_WIDTH, height);\n }\n }\n ctx.fillStyle = \"#666\";\n ctx.fill();\n}\nfunction walkTree(root, direction, data, totalViewTicks, rangeMin, rangeMax, wrapperWidth, collapsedMap, renderFunc) {\n const stack = [];\n stack.push({ item: root, levelOffset: 0 });\n const pixelsPerTick = wrapperWidth * window.devicePixelRatio / totalViewTicks / (rangeMax - rangeMin);\n let collapsedItemRendered = void 0;\n while (stack.length > 0) {\n const { item, levelOffset } = stack.shift();\n let curBarTicks = item.value;\n const muted = curBarTicks * pixelsPerTick <= MUTE_THRESHOLD;\n const width = curBarTicks * pixelsPerTick - (muted ? 0 : BAR_BORDER_WIDTH * 2);\n const height = PIXELS_PER_LEVEL;\n if (width < HIDE_THRESHOLD) {\n continue;\n }\n let offsetModifier = 0;\n let skipRender = false;\n const collapsedItemConfig = collapsedMap.get(item);\n const isCollapsedItem = collapsedItemConfig && collapsedItemConfig.collapsed;\n if (isCollapsedItem) {\n if (collapsedItemRendered === collapsedItemConfig.items[0]) {\n offsetModifier = direction === \"children\" ? -1 : 1;\n skipRender = true;\n } else {\n collapsedItemRendered = void 0;\n }\n } else {\n collapsedItemRendered = void 0;\n }\n if (!skipRender) {\n const barX = getBarX(item.start, totalViewTicks, rangeMin, pixelsPerTick);\n const barY = (item.level + levelOffset) * PIXELS_PER_LEVEL;\n let label = data.getLabel(item.itemIndexes[0]);\n if (isCollapsedItem) {\n collapsedItemRendered = item;\n }\n renderFunc(item, barX, barY, width, height, label, muted);\n }\n const nextList = direction === \"children\" ? item.children : item.parents;\n if (nextList) {\n stack.unshift(...nextList.map((c) => ({ item: c, levelOffset: levelOffset + offsetModifier })));\n }\n }\n}\nfunction useColorFunction(totalTicks, totalTicksRight, colorScheme, theme, mutedColor, rangeMin, rangeMax, matchedLabels, topLevel) {\n return useCallback(\n function getColor(item, label, muted) {\n if (muted && !matchedLabels) {\n return mutedColor;\n }\n const barColor = item.valueRight !== void 0 && (colorScheme === ColorSchemeDiff.Default || colorScheme === ColorSchemeDiff.DiffColorBlind) ? getBarColorByDiff(item.value, item.valueRight, totalTicks, totalTicksRight, colorScheme) : colorScheme === ColorScheme.ValueBased ? getBarColorByValue(item.value, totalTicks, rangeMin, rangeMax) : getBarColorByPackage(label, theme);\n if (matchedLabels) {\n return matchedLabels.has(label) ? barColor.toHslString() : mutedColor;\n }\n return item.level > topLevel - 1 ? barColor.toHslString() : barColor.lighten(15).toHslString();\n },\n [totalTicks, totalTicksRight, colorScheme, theme, rangeMin, rangeMax, matchedLabels, topLevel, mutedColor]\n );\n}\nfunction useSetupCanvas(canvasRef, wrapperWidth, numberOfLevels) {\n const [ctx, setCtx] = useState();\n useEffect(() => {\n if (!(numberOfLevels && canvasRef.current)) {\n return;\n }\n const ctx2 = canvasRef.current.getContext(\"2d\");\n const height = PIXELS_PER_LEVEL * numberOfLevels;\n canvasRef.current.width = Math.round(wrapperWidth * window.devicePixelRatio);\n canvasRef.current.height = Math.round(height);\n canvasRef.current.style.width = `${wrapperWidth}px`;\n canvasRef.current.style.height = `${height / window.devicePixelRatio}px`;\n ctx2.textBaseline = \"middle\";\n ctx2.font = 12 * window.devicePixelRatio + \"px monospace\";\n ctx2.strokeStyle = \"white\";\n setCtx(ctx2);\n }, [canvasRef, setCtx, wrapperWidth, numberOfLevels]);\n return ctx;\n}\nfunction renderLabel(ctx, data, label, item, width, x, y, textAlign) {\n ctx.save();\n ctx.clip();\n ctx.fillStyle = \"#222\";\n const displayValue = data.valueDisplayProcessor(item.value);\n const unit = displayValue.suffix ? displayValue.text + displayValue.suffix : displayValue.text;\n const measure = ctx.measureText(label);\n const spaceForTextInRect = width - BAR_TEXT_PADDING_LEFT;\n let fullLabel = `${label} (${unit})`;\n let labelX = Math.max(x, 0) + BAR_TEXT_PADDING_LEFT;\n if (measure.width > spaceForTextInRect) {\n ctx.textAlign = textAlign;\n if (textAlign === \"right\") {\n fullLabel = label;\n labelX = x + width - BAR_TEXT_PADDING_LEFT;\n }\n }\n ctx.fillText(fullLabel, labelX, y + PIXELS_PER_LEVEL / 2 + 2);\n ctx.restore();\n}\nfunction getBarX(offset, totalTicks, rangeMin, pixelsPerTick) {\n return (offset - totalTicks * rangeMin) * pixelsPerTick;\n}\n\nexport { getBarX, useFlameRender, walkTree };\n//# sourceMappingURL=rendering.js.map\n","import { jsxs, jsx } from 'react/jsx-runtime';\nimport { css } from '@emotion/css';\nimport { useRef, useState, useCallback, useEffect } from 'react';\nimport { useMeasure } from 'react-use';\nimport { PIXELS_PER_LEVEL } from '../constants.js';\nimport FlameGraphContextMenu from './FlameGraphContextMenu.js';\nimport FlameGraphTooltip from './FlameGraphTooltip.js';\nimport { useFlameRender, getBarX } from './rendering.js';\n\nconst FlameGraphCanvas = ({\n data,\n rangeMin,\n rangeMax,\n matchedLabels,\n setRangeMin,\n setRangeMax,\n onItemFocused,\n focusedItemData,\n textAlign,\n onSandwich,\n colorScheme,\n totalProfileTicks,\n totalProfileTicksRight,\n totalViewTicks,\n root,\n direction,\n depth,\n showFlameGraphOnly,\n collapsedMap,\n setCollapsedMap,\n collapsing,\n getExtraContextMenuButtons,\n selectedView,\n search\n}) => {\n const styles = getStyles();\n const [sizeRef, { width: wrapperWidth }] = useMeasure();\n const graphRef = useRef(null);\n const [tooltipItem, setTooltipItem] = useState();\n const [clickedItemData, setClickedItemData] = useState();\n useFlameRender({\n canvasRef: graphRef,\n colorScheme,\n data,\n focusedItemData,\n root,\n direction,\n depth,\n rangeMax,\n rangeMin,\n matchedLabels,\n textAlign,\n totalViewTicks,\n // We need this so that if we have a diff profile and are in sandwich view we still show the same diff colors.\n totalColorTicks: data.isDiffFlamegraph() ? totalProfileTicks : totalViewTicks,\n totalTicksRight: totalProfileTicksRight,\n wrapperWidth,\n collapsedMap\n });\n const onGraphClick = useCallback(\n (e) => {\n setTooltipItem(void 0);\n const pixelsPerTick = graphRef.current.clientWidth / totalViewTicks / (rangeMax - rangeMin);\n const item = convertPixelCoordinatesToBarCoordinates(\n { x: e.nativeEvent.offsetX, y: e.nativeEvent.offsetY },\n root,\n direction,\n depth,\n pixelsPerTick,\n totalViewTicks,\n rangeMin,\n collapsedMap\n );\n if (item) {\n setClickedItemData({\n posY: e.clientY,\n posX: e.clientX,\n item,\n label: data.getLabel(item.itemIndexes[0])\n });\n } else {\n setClickedItemData(void 0);\n }\n },\n [data, rangeMin, rangeMax, totalViewTicks, root, direction, depth, collapsedMap]\n );\n const [mousePosition, setMousePosition] = useState();\n const onGraphMouseMove = useCallback(\n (e) => {\n if (clickedItemData === void 0) {\n setTooltipItem(void 0);\n setMousePosition(void 0);\n const pixelsPerTick = graphRef.current.clientWidth / totalViewTicks / (rangeMax - rangeMin);\n const item = convertPixelCoordinatesToBarCoordinates(\n { x: e.nativeEvent.offsetX, y: e.nativeEvent.offsetY },\n root,\n direction,\n depth,\n pixelsPerTick,\n totalViewTicks,\n rangeMin,\n collapsedMap\n );\n if (item) {\n setMousePosition({ x: e.clientX, y: e.clientY });\n setTooltipItem(item);\n }\n }\n },\n [rangeMin, rangeMax, totalViewTicks, clickedItemData, setMousePosition, root, direction, depth, collapsedMap]\n );\n const onGraphMouseLeave = useCallback(() => {\n setTooltipItem(void 0);\n }, []);\n useEffect(() => {\n const handleOnClick = (e) => {\n var _a;\n if (e.target instanceof HTMLElement && ((_a = e.target.parentElement) == null ? void 0 : _a.id) !== \"flameGraphCanvasContainer_clickOutsideCheck\") {\n setClickedItemData(void 0);\n }\n };\n window.addEventListener(\"click\", handleOnClick);\n return () => window.removeEventListener(\"click\", handleOnClick);\n }, [setClickedItemData]);\n return /* @__PURE__ */ jsxs(\"div\", { className: styles.graph, children: [\n /* @__PURE__ */ jsx(\"div\", { className: styles.canvasWrapper, id: \"flameGraphCanvasContainer_clickOutsideCheck\", ref: sizeRef, children: /* @__PURE__ */ jsx(\n \"canvas\",\n {\n ref: graphRef,\n \"data-testid\": \"flameGraph\",\n onClick: onGraphClick,\n onMouseMove: onGraphMouseMove,\n onMouseLeave: onGraphMouseLeave\n }\n ) }),\n /* @__PURE__ */ jsx(\n FlameGraphTooltip,\n {\n position: mousePosition,\n item: tooltipItem,\n data,\n totalTicks: totalViewTicks,\n collapseConfig: tooltipItem ? collapsedMap.get(tooltipItem) : void 0\n }\n ),\n !showFlameGraphOnly && clickedItemData && /* @__PURE__ */ jsx(\n FlameGraphContextMenu,\n {\n data,\n itemData: clickedItemData,\n collapsing,\n collapseConfig: collapsedMap.get(clickedItemData.item),\n onMenuItemClick: () => {\n setClickedItemData(void 0);\n },\n onItemFocus: () => {\n setRangeMin(clickedItemData.item.start / totalViewTicks);\n setRangeMax((clickedItemData.item.start + clickedItemData.item.value) / totalViewTicks);\n onItemFocused(clickedItemData);\n },\n onSandwich: () => {\n onSandwich(data.getLabel(clickedItemData.item.itemIndexes[0]));\n },\n onExpandGroup: () => {\n setCollapsedMap(collapsedMap.setCollapsedStatus(clickedItemData.item, false));\n },\n onCollapseGroup: () => {\n setCollapsedMap(collapsedMap.setCollapsedStatus(clickedItemData.item, true));\n },\n onExpandAllGroups: () => {\n setCollapsedMap(collapsedMap.setAllCollapsedStatus(false));\n },\n onCollapseAllGroups: () => {\n setCollapsedMap(collapsedMap.setAllCollapsedStatus(true));\n },\n allGroupsCollapsed: Array.from(collapsedMap.values()).every((i) => i.collapsed),\n allGroupsExpanded: Array.from(collapsedMap.values()).every((i) => !i.collapsed),\n getExtraContextMenuButtons,\n selectedView,\n search\n }\n )\n ] });\n};\nconst getStyles = () => ({\n graph: css({\n label: \"graph\",\n overflow: \"auto\",\n flexGrow: 1,\n flexBasis: \"50%\"\n }),\n canvasContainer: css({\n label: \"canvasContainer\",\n display: \"flex\"\n }),\n canvasWrapper: css({\n label: \"canvasWrapper\",\n cursor: \"pointer\",\n flex: 1,\n overflow: \"hidden\"\n }),\n sandwichMarker: css({\n label: \"sandwichMarker\",\n writingMode: \"vertical-lr\",\n transform: \"rotate(180deg)\",\n overflow: \"hidden\",\n whiteSpace: \"nowrap\"\n }),\n sandwichMarkerIcon: css({\n label: \"sandwichMarkerIcon\",\n verticalAlign: \"baseline\"\n })\n});\nconst convertPixelCoordinatesToBarCoordinates = (pos, root, direction, depth, pixelsPerTick, totalTicks, rangeMin, collapsedMap) => {\n let next = root;\n let currentLevel = direction === \"children\" ? 0 : depth - 1;\n const levelIndex = Math.floor(pos.y / (PIXELS_PER_LEVEL / window.devicePixelRatio));\n let found = void 0;\n while (next) {\n const node = next;\n next = void 0;\n if (currentLevel === levelIndex) {\n found = node;\n break;\n }\n const nextList = direction === \"children\" ? node.children : node.parents || [];\n for (const child of nextList) {\n const xStart = getBarX(child.start, totalTicks, rangeMin, pixelsPerTick);\n const xEnd = getBarX(child.start + child.value, totalTicks, rangeMin, pixelsPerTick);\n if (xStart <= pos.x && pos.x < xEnd) {\n next = child;\n const collapsedConfig = collapsedMap.get(child);\n if (!collapsedConfig || !collapsedConfig.collapsed || collapsedConfig.items[0] === child) {\n currentLevel = currentLevel + (direction === \"children\" ? 1 : -1);\n }\n break;\n }\n }\n }\n return found;\n};\n\nexport { convertPixelCoordinatesToBarCoordinates, FlameGraphCanvas as default };\n//# sourceMappingURL=FlameGraphCanvas.js.map\n","import { jsxs, jsx } from 'react/jsx-runtime';\nimport { css } from '@emotion/css';\nimport { memo } from 'react';\nimport { getValueFormat } from '@grafana/data';\nimport { useStyles2, Tooltip, Icon, IconButton } from '@grafana/ui';\n\nconst FlameGraphMetadata = memo(\n ({ data, focusedItem, totalTicks, sandwichedLabel, onFocusPillClick, onSandwichPillClick }) => {\n const styles = useStyles2(getStyles);\n const parts = [];\n const ticksVal = getValueFormat(\"short\")(totalTicks);\n const displayValue = data.valueDisplayProcessor(totalTicks);\n let unitValue = displayValue.text + displayValue.suffix;\n const unitTitle = data.getUnitTitle();\n if (unitTitle === \"Count\") {\n if (!displayValue.suffix) {\n unitValue = displayValue.text;\n }\n }\n parts.push(\n /* @__PURE__ */ jsxs(\"div\", { className: styles.metadataPill, children: [\n unitValue,\n \" | \",\n ticksVal.text,\n ticksVal.suffix,\n \" samples (\",\n unitTitle,\n \")\"\n ] }, \"default\")\n );\n if (sandwichedLabel) {\n parts.push(\n /* @__PURE__ */ jsx(Tooltip, { content: sandwichedLabel, placement: \"top\", children: /* @__PURE__ */ jsxs(\"div\", { children: [\n /* @__PURE__ */ jsx(Icon, { size: \"sm\", name: \"angle-right\" }),\n /* @__PURE__ */ jsxs(\"div\", { className: styles.metadataPill, children: [\n /* @__PURE__ */ jsx(Icon, { size: \"sm\", name: \"gf-show-context\" }),\n \" \",\n /* @__PURE__ */ jsx(\"span\", { className: styles.metadataPillName, children: sandwichedLabel.substring(sandwichedLabel.lastIndexOf(\"/\") + 1) }),\n /* @__PURE__ */ jsx(\n IconButton,\n {\n className: styles.pillCloseButton,\n name: \"times\",\n size: \"sm\",\n onClick: onSandwichPillClick,\n tooltip: \"Remove sandwich view\",\n \"aria-label\": \"Remove sandwich view\"\n }\n )\n ] })\n ] }) }, \"sandwich\")\n );\n }\n if (focusedItem) {\n const percentValue = totalTicks > 0 ? Math.round(1e4 * (focusedItem.item.value / totalTicks)) / 100 : 0;\n const iconName = percentValue > 0 ? \"eye\" : \"exclamation-circle\";\n parts.push(\n /* @__PURE__ */ jsx(Tooltip, { content: focusedItem.label, placement: \"top\", children: /* @__PURE__ */ jsxs(\"div\", { children: [\n /* @__PURE__ */ jsx(Icon, { size: \"sm\", name: \"angle-right\" }),\n /* @__PURE__ */ jsxs(\"div\", { className: styles.metadataPill, children: [\n /* @__PURE__ */ jsx(Icon, { size: \"sm\", name: iconName }),\n \"\\xA0\",\n percentValue,\n \"% of total\",\n /* @__PURE__ */ jsx(\n IconButton,\n {\n className: styles.pillCloseButton,\n name: \"times\",\n size: \"sm\",\n onClick: onFocusPillClick,\n tooltip: \"Remove focus\",\n \"aria-label\": \"Remove focus\"\n }\n )\n ] })\n ] }) }, \"focus\")\n );\n }\n return /* @__PURE__ */ jsx(\"div\", { className: styles.metadata, children: parts });\n }\n);\nFlameGraphMetadata.displayName = \"FlameGraphMetadata\";\nconst getStyles = (theme) => ({\n metadataPill: css({\n label: \"metadataPill\",\n display: \"inline-flex\",\n alignItems: \"center\",\n background: theme.colors.background.secondary,\n borderRadius: theme.shape.borderRadius(8),\n padding: theme.spacing(0.5, 1),\n fontSize: theme.typography.bodySmall.fontSize,\n fontWeight: theme.typography.fontWeightMedium,\n lineHeight: theme.typography.bodySmall.lineHeight,\n color: theme.colors.text.secondary\n }),\n pillCloseButton: css({\n label: \"pillCloseButton\",\n verticalAlign: \"text-bottom\",\n margin: theme.spacing(0, 0.5)\n }),\n metadata: css({\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n margin: \"8px 0\"\n }),\n metadataPillName: css({\n label: \"metadataPillName\",\n maxWidth: \"200px\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n marginLeft: theme.spacing(0.5)\n })\n});\n\nexport { FlameGraphMetadata as default };\n//# sourceMappingURL=FlameGraphMetadata.js.map\n","import { jsxs, Fragment, jsx } from 'react/jsx-runtime';\nimport { cx, css } from '@emotion/css';\nimport { useState, useEffect } from 'react';\nimport { Icon } from '@grafana/ui';\nimport { PIXELS_PER_LEVEL } from '../constants.js';\nimport FlameGraphCanvas from './FlameGraphCanvas.js';\nimport FlameGraphMetadata from './FlameGraphMetadata.js';\n\nconst FlameGraph = ({\n data,\n rangeMin,\n rangeMax,\n matchedLabels,\n setRangeMin,\n setRangeMax,\n onItemFocused,\n focusedItemData,\n textAlign,\n onSandwich,\n sandwichItem,\n onFocusPillClick,\n onSandwichPillClick,\n colorScheme,\n showFlameGraphOnly,\n getExtraContextMenuButtons,\n collapsing,\n selectedView,\n search,\n collapsedMap,\n setCollapsedMap\n}) => {\n const styles = getStyles();\n const [levels, setLevels] = useState();\n const [levelsCallers, setLevelsCallers] = useState();\n const [totalProfileTicks, setTotalProfileTicks] = useState(0);\n const [totalProfileTicksRight, setTotalProfileTicksRight] = useState();\n const [totalViewTicks, setTotalViewTicks] = useState(0);\n useEffect(() => {\n var _a, _b, _c;\n if (data) {\n let levels2 = data.getLevels();\n let totalProfileTicks2 = levels2.length ? levels2[0][0].value : 0;\n let totalProfileTicksRight2 = levels2.length ? levels2[0][0].valueRight : void 0;\n let totalViewTicks2 = totalProfileTicks2;\n let levelsCallers2 = void 0;\n if (sandwichItem) {\n const [callers, callees] = data.getSandwichLevels(sandwichItem);\n levels2 = callees;\n levelsCallers2 = callers;\n totalViewTicks2 = (_c = (_b = (_a = callees[0]) == null ? void 0 : _a[0]) == null ? void 0 : _b.value) != null ? _c : 0;\n }\n setLevels(levels2);\n setLevelsCallers(levelsCallers2);\n setTotalProfileTicks(totalProfileTicks2);\n setTotalProfileTicksRight(totalProfileTicksRight2);\n setTotalViewTicks(totalViewTicks2);\n }\n }, [data, sandwichItem]);\n if (!levels) {\n return null;\n }\n const commonCanvasProps = {\n data,\n rangeMin,\n rangeMax,\n matchedLabels,\n setRangeMin,\n setRangeMax,\n onItemFocused,\n focusedItemData,\n textAlign,\n onSandwich,\n colorScheme,\n totalProfileTicks,\n totalProfileTicksRight,\n totalViewTicks,\n showFlameGraphOnly,\n collapsedMap,\n setCollapsedMap,\n getExtraContextMenuButtons,\n collapsing,\n search,\n selectedView\n };\n let canvas = null;\n if (levelsCallers == null ? void 0 : levelsCallers.length) {\n canvas = /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsxs(\"div\", { className: styles.sandwichCanvasWrapper, children: [\n /* @__PURE__ */ jsxs(\"div\", { className: styles.sandwichMarker, children: [\n \"Callers\",\n /* @__PURE__ */ jsx(Icon, { className: styles.sandwichMarkerIcon, name: \"arrow-down\" })\n ] }),\n /* @__PURE__ */ jsx(\n FlameGraphCanvas,\n {\n ...commonCanvasProps,\n root: levelsCallers[levelsCallers.length - 1][0],\n depth: levelsCallers.length,\n direction: \"parents\",\n collapsing: false\n }\n )\n ] }),\n /* @__PURE__ */ jsxs(\"div\", { className: styles.sandwichCanvasWrapper, children: [\n /* @__PURE__ */ jsxs(\"div\", { className: cx(styles.sandwichMarker, styles.sandwichMarkerCalees), children: [\n /* @__PURE__ */ jsx(Icon, { className: styles.sandwichMarkerIcon, name: \"arrow-up\" }),\n \"Callees\"\n ] }),\n /* @__PURE__ */ jsx(\n FlameGraphCanvas,\n {\n ...commonCanvasProps,\n root: levels[0][0],\n depth: levels.length,\n direction: \"children\",\n collapsing: false\n }\n )\n ] })\n ] });\n } else if (levels == null ? void 0 : levels.length) {\n canvas = /* @__PURE__ */ jsx(FlameGraphCanvas, { ...commonCanvasProps, root: levels[0][0], depth: levels.length, direction: \"children\" });\n }\n return /* @__PURE__ */ jsxs(\"div\", { className: styles.graph, children: [\n /* @__PURE__ */ jsx(\n FlameGraphMetadata,\n {\n data,\n focusedItem: focusedItemData,\n sandwichedLabel: sandwichItem,\n totalTicks: totalViewTicks,\n onFocusPillClick,\n onSandwichPillClick\n }\n ),\n canvas\n ] });\n};\nconst getStyles = () => ({\n graph: css({\n label: \"graph\",\n overflow: \"auto\",\n flexGrow: 1,\n flexBasis: \"50%\"\n }),\n sandwichCanvasWrapper: css({\n label: \"sandwichCanvasWrapper\",\n display: \"flex\",\n marginBottom: `${PIXELS_PER_LEVEL / window.devicePixelRatio}px`\n }),\n sandwichMarker: css({\n label: \"sandwichMarker\",\n writingMode: \"vertical-lr\",\n transform: \"rotate(180deg)\",\n overflow: \"hidden\",\n whiteSpace: \"nowrap\"\n }),\n sandwichMarkerCalees: css({\n label: \"sandwichMarkerCalees\",\n textAlign: \"right\"\n }),\n sandwichMarkerIcon: css({\n label: \"sandwichMarkerIcon\",\n verticalAlign: \"baseline\"\n })\n});\n\nexport { FlameGraph as default };\n//# sourceMappingURL=FlameGraph.js.map\n","import { groupBy } from 'lodash';\n\nfunction mergeParentSubtrees(roots, data) {\n const newRoots = getParentSubtrees(roots);\n return mergeSubtrees(newRoots, data, \"parents\");\n}\nfunction getParentSubtrees(roots) {\n return roots.map((r) => {\n var _a, _b;\n if (!((_a = r.parents) == null ? void 0 : _a.length)) {\n return r;\n }\n const newRoot = {\n ...r,\n children: []\n };\n const stack = [\n { child: newRoot, parent: r.parents[0] }\n ];\n while (stack.length) {\n const args = stack.shift();\n const newNode = {\n ...args.parent,\n children: args.child ? [args.child] : [],\n parents: []\n };\n if (args.child) {\n newNode.value = args.child.value;\n args.child.parents = [newNode];\n }\n if ((_b = args.parent.parents) == null ? void 0 : _b.length) {\n stack.push({ child: newNode, parent: args.parent.parents[0] });\n }\n }\n return newRoot;\n });\n}\nfunction mergeSubtrees(roots, data, direction = \"children\") {\n var _a;\n const oppositeDirection = direction === \"parents\" ? \"children\" : \"parents\";\n const levels = [];\n const stack = [\n { previous: void 0, items: roots, level: 0 }\n ];\n while (stack.length) {\n const args = stack.shift();\n const indexes = args.items.flatMap((i) => i.itemIndexes);\n const newItem = {\n // We use the items value instead of value from the data frame, cause we could have changed it in the process\n value: args.items.reduce((acc, i) => acc + i.value, 0),\n itemIndexes: indexes,\n // these will change later\n children: [],\n parents: [],\n start: 0,\n level: args.level\n };\n levels[args.level] = levels[args.level] || [];\n levels[args.level].push(newItem);\n if (args.previous) {\n newItem[oppositeDirection] = [args.previous];\n const prevSiblingsVal = ((_a = args.previous[direction]) == null ? void 0 : _a.reduce((acc, node) => {\n return acc + node.value;\n }, 0)) || 0;\n newItem.start = args.previous.start + prevSiblingsVal;\n args.previous[direction].push(newItem);\n }\n const nextItems = args.items.flatMap((i) => i[direction] || []);\n const nextGroups = groupBy(nextItems, (c) => data.getLabel(c.itemIndexes[0]));\n for (const g of Object.values(nextGroups)) {\n stack.push({ previous: newItem, items: g, level: args.level + 1 });\n }\n }\n if (direction === \"parents\") {\n levels.reverse();\n levels.forEach((level, index) => {\n level.forEach((item) => {\n item.level = index;\n });\n });\n }\n return levels;\n}\n\nexport { mergeParentSubtrees, mergeSubtrees };\n//# sourceMappingURL=treeTransforms.js.map\n","import { FieldType, getDisplayProcessor, createTheme } from '@grafana/data';\nimport { SampleUnit } from '../types.js';\nimport { mergeParentSubtrees, mergeSubtrees } from './treeTransforms.js';\n\nfunction nestedSetToLevels(container, options) {\n const levels = [];\n let offset = 0;\n let parent = void 0;\n const uniqueLabels = {};\n for (let i = 0; i < container.data.length; i++) {\n const currentLevel = container.getLevel(i);\n const prevLevel = i > 0 ? container.getLevel(i - 1) : void 0;\n levels[currentLevel] = levels[currentLevel] || [];\n if (prevLevel && prevLevel >= currentLevel) {\n const lastSibling = levels[currentLevel][levels[currentLevel].length - 1];\n offset = lastSibling.start + container.getValue(lastSibling.itemIndexes[0]) + container.getValueRight(lastSibling.itemIndexes[0]);\n parent = lastSibling.parents[0];\n }\n const newItem = {\n itemIndexes: [i],\n value: container.getValue(i) + container.getValueRight(i),\n valueRight: container.isDiffFlamegraph() ? container.getValueRight(i) : void 0,\n start: offset,\n parents: parent && [parent],\n children: [],\n level: currentLevel\n };\n if (uniqueLabels[container.getLabel(i)]) {\n uniqueLabels[container.getLabel(i)].push(newItem);\n } else {\n uniqueLabels[container.getLabel(i)] = [newItem];\n }\n if (parent) {\n parent.children.push(newItem);\n }\n parent = newItem;\n levels[currentLevel].push(newItem);\n }\n const collapsedMapContainer = new CollapsedMapBuilder(options == null ? void 0 : options.collapsingThreshold);\n if (options == null ? void 0 : options.collapsing) {\n collapsedMapContainer.addTree(levels[0][0]);\n }\n return [levels, uniqueLabels, collapsedMapContainer.getCollapsedMap()];\n}\nclass CollapsedMap {\n constructor(map) {\n // The levelItem used as a key is the item that will always be rendered in the flame graph. The config.items are all\n // the items that are in the group and if the config.collapsed is true they will be hidden.\n this.map = /* @__PURE__ */ new Map();\n this.map = map || /* @__PURE__ */ new Map();\n }\n get(item) {\n return this.map.get(item);\n }\n keys() {\n return this.map.keys();\n }\n values() {\n return this.map.values();\n }\n size() {\n return this.map.size;\n }\n setCollapsedStatus(item, collapsed) {\n const newMap = new Map(this.map);\n const collapsedConfig = this.map.get(item);\n const newConfig = { ...collapsedConfig, collapsed };\n for (const item2 of collapsedConfig.items) {\n newMap.set(item2, newConfig);\n }\n return new CollapsedMap(newMap);\n }\n setAllCollapsedStatus(collapsed) {\n const newMap = new Map(this.map);\n for (const item of this.map.keys()) {\n const collapsedConfig = this.map.get(item);\n const newConfig = { ...collapsedConfig, collapsed };\n newMap.set(item, newConfig);\n }\n return new CollapsedMap(newMap);\n }\n}\nclass CollapsedMapBuilder {\n constructor(threshold) {\n this.map = /* @__PURE__ */ new Map();\n this.threshold = 0.99;\n if (threshold !== void 0) {\n this.threshold = threshold;\n }\n }\n addTree(root) {\n var _a;\n const stack = [root];\n while (stack.length) {\n const current = stack.shift();\n if ((_a = current.parents) == null ? void 0 : _a.length) {\n this.addItem(current, current.parents[0]);\n }\n if (current.children.length) {\n stack.unshift(...current.children);\n }\n }\n }\n // The heuristics here is pretty simple right now. Just check if it's single child and if we are within threshold.\n // We assume items with small self just aren't too important while we cannot really collapse items with siblings\n // as it's not clear what to do with said sibling.\n addItem(item, parent) {\n if (parent && item.value > parent.value * this.threshold && parent.children.length === 1) {\n if (this.map.has(parent)) {\n const config = this.map.get(parent);\n this.map.set(item, config);\n config.items.push(item);\n } else {\n const config = { items: [parent, item], collapsed: true };\n this.map.set(parent, config);\n this.map.set(item, config);\n }\n }\n }\n getCollapsedMap() {\n return new CollapsedMap(this.map);\n }\n}\nfunction getMessageCheckFieldsResult(wrongFields) {\n if (wrongFields.missingFields.length) {\n return `Data is missing fields: ${wrongFields.missingFields.join(\", \")}`;\n }\n if (wrongFields.wrongTypeFields.length) {\n return `Data has fields of wrong type: ${wrongFields.wrongTypeFields.map((f) => `${f.name} has type ${f.type} but should be ${f.expectedTypes.join(\" or \")}`).join(\", \")}`;\n }\n return \"\";\n}\nfunction checkFields(data) {\n const fields = [\n [\"label\", [FieldType.string, FieldType.enum]],\n [\"level\", [FieldType.number]],\n [\"value\", [FieldType.number]],\n [\"self\", [FieldType.number]]\n ];\n const missingFields = [];\n const wrongTypeFields = [];\n for (const field of fields) {\n const [name, types] = field;\n const frameField = data == null ? void 0 : data.fields.find((f) => f.name === name);\n if (!frameField) {\n missingFields.push(name);\n continue;\n }\n if (!types.includes(frameField.type)) {\n wrongTypeFields.push({ name, expectedTypes: types, type: frameField.type });\n }\n }\n if (missingFields.length > 0 || wrongTypeFields.length > 0) {\n return {\n wrongTypeFields,\n missingFields\n };\n }\n return void 0;\n}\nclass FlameGraphDataContainer {\n constructor(data, options, theme = createTheme()) {\n var _a, _b, _c;\n this.data = data;\n this.options = options;\n const wrongFields = checkFields(data);\n if (wrongFields) {\n throw new Error(getMessageCheckFieldsResult(wrongFields));\n }\n this.labelField = data.fields.find((f) => f.name === \"label\");\n this.levelField = data.fields.find((f) => f.name === \"level\");\n this.valueField = data.fields.find((f) => f.name === \"value\");\n this.selfField = data.fields.find((f) => f.name === \"self\");\n this.valueRightField = data.fields.find((f) => f.name === \"valueRight\");\n this.selfRightField = data.fields.find((f) => f.name === \"selfRight\");\n if ((this.valueField || this.selfField) && !(this.valueField && this.selfField)) {\n throw new Error(\n \"Malformed dataFrame: both valueRight and selfRight has to be present if one of them is present.\"\n );\n }\n const enumConfig = (_c = (_b = (_a = this.labelField) == null ? void 0 : _a.config) == null ? void 0 : _b.type) == null ? void 0 : _c.enum;\n if (enumConfig) {\n this.labelDisplayProcessor = getDisplayProcessor({ field: this.labelField, theme });\n this.uniqueLabels = enumConfig.text || [];\n } else {\n this.labelDisplayProcessor = (value) => ({\n text: value + \"\",\n numeric: 0\n });\n this.uniqueLabels = [...new Set(this.labelField.values)];\n }\n this.valueDisplayProcessor = getDisplayProcessor({\n field: this.valueField,\n theme\n });\n }\n isDiffFlamegraph() {\n return Boolean(this.valueRightField && this.selfRightField);\n }\n getLabel(index) {\n return this.labelDisplayProcessor(this.labelField.values[index]).text;\n }\n getLevel(index) {\n return this.levelField.values[index];\n }\n getValue(index) {\n return fieldAccessor(this.valueField, index);\n }\n getValueRight(index) {\n return fieldAccessor(this.valueRightField, index);\n }\n getSelf(index) {\n return fieldAccessor(this.selfField, index);\n }\n getSelfRight(index) {\n return fieldAccessor(this.selfRightField, index);\n }\n getSelfDisplay(index) {\n return this.valueDisplayProcessor(this.getSelf(index));\n }\n getUniqueLabels() {\n return this.uniqueLabels;\n }\n getUnitTitle() {\n switch (this.valueField.config.unit) {\n case SampleUnit.Bytes:\n return \"RAM\";\n case SampleUnit.Nanoseconds:\n return \"Time\";\n }\n return \"Count\";\n }\n getLevels() {\n this.initLevels();\n return this.levels;\n }\n getSandwichLevels(label) {\n const nodes = this.getNodesWithLabel(label);\n if (!(nodes == null ? void 0 : nodes.length)) {\n return [[], []];\n }\n const callers = mergeParentSubtrees(nodes, this);\n const callees = mergeSubtrees(nodes, this);\n return [callers, callees];\n }\n getNodesWithLabel(label) {\n this.initLevels();\n return this.uniqueLabelsMap[label];\n }\n getCollapsedMap() {\n this.initLevels();\n return this.collapsedMap;\n }\n initLevels() {\n if (!this.levels) {\n const [levels, uniqueLabelsMap, collapsedMap] = nestedSetToLevels(this, this.options);\n this.levels = levels;\n this.uniqueLabelsMap = uniqueLabelsMap;\n this.collapsedMap = collapsedMap;\n }\n }\n}\nfunction fieldAccessor(field, index) {\n if (!field) {\n return 0;\n }\n let indexArray = typeof index === \"number\" ? [index] : index;\n return indexArray.reduce((acc, index2) => {\n return acc + field.values[index2];\n }, 0);\n}\n\nexport { CollapsedMap, CollapsedMapBuilder, FlameGraphDataContainer, checkFields, getMessageCheckFieldsResult, nestedSetToLevels };\n//# sourceMappingURL=dataTransform.js.map\n","import { jsxs, jsx } from 'react/jsx-runtime';\nimport { cx, css } from '@emotion/css';\nimport { useState, useEffect } from 'react';\nimport useDebounce from 'react-use/lib/useDebounce';\nimport usePrevious from 'react-use/lib/usePrevious';\nimport { useStyles2, Input, Button, ButtonGroup, RadioButtonGroup, Menu, Dropdown } from '@grafana/ui';\nimport { byValueGradient, byPackageGradient, diffDefaultGradient, diffColorBlindGradient } from './FlameGraph/colors.js';\nimport { MIN_WIDTH_TO_SHOW_BOTH_TOPTABLE_AND_FLAMEGRAPH } from './constants.js';\nimport { SelectedView, ColorScheme, ColorSchemeDiff } from './types.js';\n\nconst FlameGraphHeader = ({\n search,\n setSearch,\n selectedView,\n setSelectedView,\n containerWidth,\n onReset,\n textAlign,\n onTextAlignChange,\n showResetButton,\n colorScheme,\n onColorSchemeChange,\n stickyHeader,\n extraHeaderElements,\n vertical,\n isDiffMode,\n setCollapsedMap,\n collapsedMap\n}) => {\n const styles = useStyles2(getStyles);\n const [localSearch, setLocalSearch] = useSearchInput(search, setSearch);\n const suffix = localSearch !== \"\" ? /* @__PURE__ */ jsx(\n Button,\n {\n icon: \"times\",\n fill: \"text\",\n size: \"sm\",\n onClick: () => {\n setSearch(\"\");\n setLocalSearch(\"\");\n },\n children: \"Clear\"\n }\n ) : null;\n return /* @__PURE__ */ jsxs(\"div\", { className: cx(styles.header, { [styles.stickyHeader]: stickyHeader }), children: [\n /* @__PURE__ */ jsx(\"div\", { className: styles.inputContainer, children: /* @__PURE__ */ jsx(\n Input,\n {\n value: localSearch || \"\",\n onChange: (v) => {\n setLocalSearch(v.currentTarget.value);\n },\n placeholder: \"Search...\",\n suffix\n }\n ) }),\n /* @__PURE__ */ jsxs(\"div\", { className: styles.rightContainer, children: [\n showResetButton && /* @__PURE__ */ jsx(\n Button,\n {\n variant: \"secondary\",\n fill: \"outline\",\n size: \"sm\",\n icon: \"history-alt\",\n tooltip: \"Reset focus and sandwich state\",\n onClick: () => {\n onReset();\n },\n className: styles.buttonSpacing,\n \"aria-label\": \"Reset focus and sandwich state\"\n }\n ),\n /* @__PURE__ */ jsx(ColorSchemeButton, { value: colorScheme, onChange: onColorSchemeChange, isDiffMode }),\n /* @__PURE__ */ jsxs(ButtonGroup, { className: styles.buttonSpacing, children: [\n /* @__PURE__ */ jsx(\n Button,\n {\n variant: \"secondary\",\n fill: \"outline\",\n size: \"sm\",\n tooltip: \"Expand all groups\",\n onClick: () => {\n setCollapsedMap(collapsedMap.setAllCollapsedStatus(false));\n },\n \"aria-label\": \"Expand all groups\",\n icon: \"angle-double-down\",\n disabled: selectedView === SelectedView.TopTable\n }\n ),\n /* @__PURE__ */ jsx(\n Button,\n {\n variant: \"secondary\",\n fill: \"outline\",\n size: \"sm\",\n tooltip: \"Collapse all groups\",\n onClick: () => {\n setCollapsedMap(collapsedMap.setAllCollapsedStatus(true));\n },\n \"aria-label\": \"Collapse all groups\",\n icon: \"angle-double-up\",\n disabled: selectedView === SelectedView.TopTable\n }\n )\n ] }),\n /* @__PURE__ */ jsx(\n RadioButtonGroup,\n {\n size: \"sm\",\n disabled: selectedView === SelectedView.TopTable,\n options: alignOptions,\n value: textAlign,\n onChange: onTextAlignChange,\n className: styles.buttonSpacing\n }\n ),\n /* @__PURE__ */ jsx(\n RadioButtonGroup,\n {\n size: \"sm\",\n options: getViewOptions(containerWidth, vertical),\n value: selectedView,\n onChange: setSelectedView\n }\n ),\n extraHeaderElements && /* @__PURE__ */ jsx(\"div\", { className: styles.extraElements, children: extraHeaderElements })\n ] })\n ] });\n};\nfunction ColorSchemeButton(props) {\n const styles = useStyles2(getStyles);\n let menu = /* @__PURE__ */ jsxs(Menu, { children: [\n /* @__PURE__ */ jsx(Menu.Item, { label: \"By package name\", onClick: () => props.onChange(ColorScheme.PackageBased) }),\n /* @__PURE__ */ jsx(Menu.Item, { label: \"By value\", onClick: () => props.onChange(ColorScheme.ValueBased) })\n ] });\n const colorDotStyle = {\n [ColorScheme.ValueBased]: styles.colorDotByValue,\n [ColorScheme.PackageBased]: styles.colorDotByPackage,\n [ColorSchemeDiff.DiffColorBlind]: styles.colorDotDiffColorBlind,\n [ColorSchemeDiff.Default]: styles.colorDotDiffDefault\n }[props.value] || styles.colorDotByValue;\n let contents = /* @__PURE__ */ jsx(\"span\", { className: cx(styles.colorDot, colorDotStyle) });\n if (props.isDiffMode) {\n menu = /* @__PURE__ */ jsxs(Menu, { children: [\n /* @__PURE__ */ jsx(Menu.Item, { label: \"Default (green to red)\", onClick: () => props.onChange(ColorSchemeDiff.Default) }),\n /* @__PURE__ */ jsx(Menu.Item, { label: \"Color blind (blue to red)\", onClick: () => props.onChange(ColorSchemeDiff.DiffColorBlind) })\n ] });\n contents = /* @__PURE__ */ jsxs(\"div\", { className: cx(styles.colorDotDiff, colorDotStyle), children: [\n /* @__PURE__ */ jsx(\"div\", { children: \"-100% (removed)\" }),\n /* @__PURE__ */ jsx(\"div\", { children: \"0%\" }),\n /* @__PURE__ */ jsx(\"div\", { children: \"+100% (added)\" })\n ] });\n }\n return /* @__PURE__ */ jsx(Dropdown, { overlay: menu, children: /* @__PURE__ */ jsx(\n Button,\n {\n variant: \"secondary\",\n fill: \"outline\",\n size: \"sm\",\n tooltip: \"Change color scheme\",\n onClick: () => {\n },\n className: styles.buttonSpacing,\n \"aria-label\": \"Change color scheme\",\n children: contents\n }\n ) });\n}\nconst alignOptions = [\n { value: \"left\", description: \"Align text left\", icon: \"align-left\" },\n { value: \"right\", description: \"Align text right\", icon: \"align-right\" }\n];\nfunction getViewOptions(width, vertical) {\n let viewOptions = [\n { value: SelectedView.TopTable, label: \"Top Table\", description: \"Only show top table\" },\n { value: SelectedView.FlameGraph, label: \"Flame Graph\", description: \"Only show flame graph\" }\n ];\n if (width >= MIN_WIDTH_TO_SHOW_BOTH_TOPTABLE_AND_FLAMEGRAPH || vertical) {\n viewOptions.push({\n value: SelectedView.Both,\n label: \"Both\",\n description: \"Show both the top table and flame graph\"\n });\n }\n return viewOptions;\n}\nfunction useSearchInput(search, setSearch) {\n const [localSearchState, setLocalSearchState] = useState(search);\n const prevSearch = usePrevious(search);\n useDebounce(\n () => {\n setSearch(localSearchState);\n },\n 250,\n [localSearchState]\n );\n useEffect(() => {\n if (prevSearch !== search && search !== localSearchState) {\n setLocalSearchState(search);\n }\n }, [search, prevSearch, localSearchState]);\n return [localSearchState, setLocalSearchState];\n}\nconst getStyles = (theme) => ({\n header: css({\n label: \"header\",\n display: \"flex\",\n flexWrap: \"wrap\",\n justifyContent: \"space-between\",\n width: \"100%\",\n top: 0,\n gap: theme.spacing(1),\n marginTop: theme.spacing(1)\n }),\n stickyHeader: css({\n zIndex: theme.zIndex.navbarFixed,\n position: \"sticky\",\n background: theme.colors.background.primary\n }),\n inputContainer: css({\n label: \"inputContainer\",\n flexGrow: 1,\n minWidth: \"150px\",\n maxWidth: \"350px\"\n }),\n rightContainer: css({\n label: \"rightContainer\",\n display: \"flex\",\n alignItems: \"flex-start\",\n flexWrap: \"wrap\"\n }),\n buttonSpacing: css({\n label: \"buttonSpacing\",\n marginRight: theme.spacing(1)\n }),\n resetButton: css({\n label: \"resetButton\",\n display: \"flex\",\n marginRight: theme.spacing(2)\n }),\n resetButtonIconWrapper: css({\n label: \"resetButtonIcon\",\n padding: \"0 5px\",\n color: theme.colors.text.disabled\n }),\n colorDot: css({\n label: \"colorDot\",\n display: \"inline-block\",\n width: \"10px\",\n height: \"10px\",\n // eslint-disable-next-line @grafana/no-border-radius-literal\n borderRadius: \"50%\"\n }),\n colorDotDiff: css({\n label: \"colorDotDiff\",\n display: \"flex\",\n width: \"200px\",\n height: \"12px\",\n color: \"white\",\n fontSize: 9,\n lineHeight: 1.3,\n fontWeight: 300,\n justifyContent: \"space-between\",\n padding: \"0 2px\",\n // We have a specific sizing for this so probably makes sense to use hardcoded value here\n // eslint-disable-next-line @grafana/no-border-radius-literal\n borderRadius: \"2px\"\n }),\n colorDotByValue: css({\n label: \"colorDotByValue\",\n background: byValueGradient\n }),\n colorDotByPackage: css({\n label: \"colorDotByPackage\",\n background: byPackageGradient\n }),\n colorDotDiffDefault: css({\n label: \"colorDotDiffDefault\",\n background: diffDefaultGradient\n }),\n colorDotDiffColorBlind: css({\n label: \"colorDotDiffColorBlind\",\n background: diffColorBlindGradient\n }),\n extraElements: css({\n label: \"extraElements\",\n marginLeft: theme.spacing(1)\n })\n});\n\nexport { FlameGraphHeader as default };\n//# sourceMappingURL=FlameGraphHeader.js.map\n","import { Component, createElement } from 'react';\n\n/**\n * Detect Element Resize.\n * https://github.com/sdecima/javascript-detect-element-resize\n * Sebastian Decima\n *\n * Forked from version 0.5.3; includes the following modifications:\n * 1) Guard against unsafe 'window' and 'document' references (to support SSR).\n * 2) Defer initialization code via a top-level function wrapper (to support SSR).\n * 3) Avoid unnecessary reflows by not measuring size for scroll events bubbling from children.\n * 4) Add nonce for style element.\n * 5) Use 'export' statement over 'module.exports' assignment\n **/\n\n// Check `document` and `window` in case of server-side rendering\nlet windowObject;\nif (typeof window !== \"undefined\") {\n windowObject = window;\n\n // eslint-disable-next-line no-restricted-globals\n} else if (typeof self !== \"undefined\") {\n // eslint-disable-next-line no-restricted-globals\n windowObject = self;\n} else {\n windowObject = global;\n}\nlet cancelFrame = null;\nlet requestFrame = null;\nconst TIMEOUT_DURATION = 20;\nconst clearTimeoutFn = windowObject.clearTimeout;\nconst setTimeoutFn = windowObject.setTimeout;\nconst cancelAnimationFrameFn = windowObject.cancelAnimationFrame || windowObject.mozCancelAnimationFrame || windowObject.webkitCancelAnimationFrame;\nconst requestAnimationFrameFn = windowObject.requestAnimationFrame || windowObject.mozRequestAnimationFrame || windowObject.webkitRequestAnimationFrame;\nif (cancelAnimationFrameFn == null || requestAnimationFrameFn == null) {\n // For environments that don't support animation frame,\n // fallback to a setTimeout based approach.\n cancelFrame = clearTimeoutFn;\n requestFrame = function requestAnimationFrameViaSetTimeout(callback) {\n return setTimeoutFn(callback, TIMEOUT_DURATION);\n };\n} else {\n // Counter intuitively, environments that support animation frames can be trickier.\n // Chrome's \"Throttle non-visible cross-origin iframes\" flag can prevent rAFs from being called.\n // In this case, we should fallback to a setTimeout() implementation.\n cancelFrame = function cancelFrame([animationFrameID, timeoutID]) {\n cancelAnimationFrameFn(animationFrameID);\n clearTimeoutFn(timeoutID);\n };\n requestFrame = function requestAnimationFrameWithSetTimeoutFallback(callback) {\n const animationFrameID = requestAnimationFrameFn(function animationFrameCallback() {\n clearTimeoutFn(timeoutID);\n callback();\n });\n const timeoutID = setTimeoutFn(function timeoutCallback() {\n cancelAnimationFrameFn(animationFrameID);\n callback();\n }, TIMEOUT_DURATION);\n return [animationFrameID, timeoutID];\n };\n}\nfunction createDetectElementResize(nonce) {\n let animationKeyframes;\n let animationName;\n let animationStartEvent;\n let animationStyle;\n let checkTriggers;\n let resetTriggers;\n let scrollListener;\n const attachEvent = typeof document !== \"undefined\" && document.attachEvent;\n if (!attachEvent) {\n resetTriggers = function (element) {\n const triggers = element.__resizeTriggers__,\n expand = triggers.firstElementChild,\n contract = triggers.lastElementChild,\n expandChild = expand.firstElementChild;\n contract.scrollLeft = contract.scrollWidth;\n contract.scrollTop = contract.scrollHeight;\n expandChild.style.width = expand.offsetWidth + 1 + \"px\";\n expandChild.style.height = expand.offsetHeight + 1 + \"px\";\n expand.scrollLeft = expand.scrollWidth;\n expand.scrollTop = expand.scrollHeight;\n };\n checkTriggers = function (element) {\n return element.offsetWidth !== element.__resizeLast__.width || element.offsetHeight !== element.__resizeLast__.height;\n };\n scrollListener = function (e) {\n // Don't measure (which forces) reflow for scrolls that happen inside of children!\n if (e.target.className && typeof e.target.className.indexOf === \"function\" && e.target.className.indexOf(\"contract-trigger\") < 0 && e.target.className.indexOf(\"expand-trigger\") < 0) {\n return;\n }\n const element = this;\n resetTriggers(this);\n if (this.__resizeRAF__) {\n cancelFrame(this.__resizeRAF__);\n }\n this.__resizeRAF__ = requestFrame(function animationFrame() {\n if (checkTriggers(element)) {\n element.__resizeLast__.width = element.offsetWidth;\n element.__resizeLast__.height = element.offsetHeight;\n element.__resizeListeners__.forEach(function forEachResizeListener(fn) {\n fn.call(element, e);\n });\n }\n });\n };\n\n /* Detect CSS Animations support to detect element display/re-attach */\n let animation = false;\n let keyframeprefix = \"\";\n animationStartEvent = \"animationstart\";\n const domPrefixes = \"Webkit Moz O ms\".split(\" \");\n let startEvents = \"webkitAnimationStart animationstart oAnimationStart MSAnimationStart\".split(\" \");\n let pfx = \"\";\n {\n const elm = document.createElement(\"fakeelement\");\n if (elm.style.animationName !== undefined) {\n animation = true;\n }\n if (animation === false) {\n for (let i = 0; i < domPrefixes.length; i++) {\n if (elm.style[domPrefixes[i] + \"AnimationName\"] !== undefined) {\n pfx = domPrefixes[i];\n keyframeprefix = \"-\" + pfx.toLowerCase() + \"-\";\n animationStartEvent = startEvents[i];\n animation = true;\n break;\n }\n }\n }\n }\n animationName = \"resizeanim\";\n animationKeyframes = \"@\" + keyframeprefix + \"keyframes \" + animationName + \" { from { opacity: 0; } to { opacity: 0; } } \";\n animationStyle = keyframeprefix + \"animation: 1ms \" + animationName + \"; \";\n }\n const createStyles = function (doc) {\n if (!doc.getElementById(\"detectElementResize\")) {\n //opacity:0 works around a chrome bug https://code.google.com/p/chromium/issues/detail?id=286360\n const css = (animationKeyframes ? animationKeyframes : \"\") + \".resize-triggers { \" + (animationStyle ? animationStyle : \"\") + \"visibility: hidden; opacity: 0; } \" + '.resize-triggers, .resize-triggers > div, .contract-trigger:before { content: \" \"; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; z-index: -1; } .resize-triggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }',\n head = doc.head || doc.getElementsByTagName(\"head\")[0],\n style = doc.createElement(\"style\");\n style.id = \"detectElementResize\";\n style.type = \"text/css\";\n if (nonce != null) {\n style.setAttribute(\"nonce\", nonce);\n }\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(doc.createTextNode(css));\n }\n head.appendChild(style);\n }\n };\n const addResizeListener = function (element, fn) {\n if (attachEvent) {\n element.attachEvent(\"onresize\", fn);\n } else {\n if (!element.__resizeTriggers__) {\n const doc = element.ownerDocument;\n const elementStyle = windowObject.getComputedStyle(element);\n if (elementStyle && elementStyle.position === \"static\") {\n element.style.position = \"relative\";\n }\n createStyles(doc);\n element.__resizeLast__ = {};\n element.__resizeListeners__ = [];\n (element.__resizeTriggers__ = doc.createElement(\"div\")).className = \"resize-triggers\";\n const expandTrigger = doc.createElement(\"div\");\n expandTrigger.className = \"expand-trigger\";\n expandTrigger.appendChild(doc.createElement(\"div\"));\n const contractTrigger = doc.createElement(\"div\");\n contractTrigger.className = \"contract-trigger\";\n element.__resizeTriggers__.appendChild(expandTrigger);\n element.__resizeTriggers__.appendChild(contractTrigger);\n element.appendChild(element.__resizeTriggers__);\n resetTriggers(element);\n element.addEventListener(\"scroll\", scrollListener, true);\n\n /* Listen for a css animation to detect element display/re-attach */\n if (animationStartEvent) {\n element.__resizeTriggers__.__animationListener__ = function animationListener(e) {\n if (e.animationName === animationName) {\n resetTriggers(element);\n }\n };\n element.__resizeTriggers__.addEventListener(animationStartEvent, element.__resizeTriggers__.__animationListener__);\n }\n }\n element.__resizeListeners__.push(fn);\n }\n };\n const removeResizeListener = function (element, fn) {\n if (attachEvent) {\n element.detachEvent(\"onresize\", fn);\n } else {\n element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(fn), 1);\n if (!element.__resizeListeners__.length) {\n element.removeEventListener(\"scroll\", scrollListener, true);\n if (element.__resizeTriggers__.__animationListener__) {\n element.__resizeTriggers__.removeEventListener(animationStartEvent, element.__resizeTriggers__.__animationListener__);\n element.__resizeTriggers__.__animationListener__ = null;\n }\n try {\n element.__resizeTriggers__ = !element.removeChild(element.__resizeTriggers__);\n } catch (e) {\n // Preact compat; see developit/preact-compat/issues/228\n }\n }\n }\n };\n return {\n addResizeListener,\n removeResizeListener\n };\n}\n\nclass AutoSizer extends Component {\n constructor(...args) {\n super(...args);\n this.state = {\n height: this.props.defaultHeight || 0,\n scaledHeight: this.props.defaultHeight || 0,\n scaledWidth: this.props.defaultWidth || 0,\n width: this.props.defaultWidth || 0\n };\n this._autoSizer = null;\n this._detectElementResize = null;\n this._parentNode = null;\n this._resizeObserver = null;\n this._timeoutId = null;\n this._onResize = () => {\n this._timeoutId = null;\n const {\n disableHeight,\n disableWidth,\n onResize\n } = this.props;\n if (this._parentNode) {\n // Guard against AutoSizer component being removed from the DOM immediately after being added.\n // This can result in invalid style values which can result in NaN values if we don't handle them.\n // See issue #150 for more context.\n\n const style = window.getComputedStyle(this._parentNode) || {};\n const paddingLeft = parseFloat(style.paddingLeft || \"0\");\n const paddingRight = parseFloat(style.paddingRight || \"0\");\n const paddingTop = parseFloat(style.paddingTop || \"0\");\n const paddingBottom = parseFloat(style.paddingBottom || \"0\");\n const rect = this._parentNode.getBoundingClientRect();\n const scaledHeight = rect.height - paddingTop - paddingBottom;\n const scaledWidth = rect.width - paddingLeft - paddingRight;\n const height = this._parentNode.offsetHeight - paddingTop - paddingBottom;\n const width = this._parentNode.offsetWidth - paddingLeft - paddingRight;\n if (!disableHeight && (this.state.height !== height || this.state.scaledHeight !== scaledHeight) || !disableWidth && (this.state.width !== width || this.state.scaledWidth !== scaledWidth)) {\n this.setState({\n height,\n width,\n scaledHeight,\n scaledWidth\n });\n if (typeof onResize === \"function\") {\n onResize({\n height,\n scaledHeight,\n scaledWidth,\n width\n });\n }\n }\n }\n };\n this._setRef = autoSizer => {\n this._autoSizer = autoSizer;\n };\n }\n componentDidMount() {\n const {\n nonce\n } = this.props;\n const parentNode = this._autoSizer ? this._autoSizer.parentNode : null;\n if (parentNode != null && parentNode.ownerDocument && parentNode.ownerDocument.defaultView && parentNode instanceof parentNode.ownerDocument.defaultView.HTMLElement) {\n // Delay access of parentNode until mount.\n // This handles edge-cases where the component has already been unmounted before its ref has been set,\n // As well as libraries like react-lite which have a slightly different lifecycle.\n this._parentNode = parentNode;\n\n // Use ResizeObserver from the same context where parentNode (which we will observe) was defined\n // Using just global can result into onResize events not being emitted in cases with multiple realms\n const ResizeObserverInstance = parentNode.ownerDocument.defaultView.ResizeObserver;\n if (ResizeObserverInstance != null) {\n this._resizeObserver = new ResizeObserverInstance(() => {\n // Guard against \"ResizeObserver loop limit exceeded\" error;\n // could be triggered if the state update causes the ResizeObserver handler to run long.\n // See https://github.com/bvaughn/react-virtualized-auto-sizer/issues/55\n this._timeoutId = setTimeout(this._onResize, 0);\n });\n this._resizeObserver.observe(parentNode);\n } else {\n // Defer requiring resize handler in order to support server-side rendering.\n // See issue #41\n this._detectElementResize = createDetectElementResize(nonce);\n this._detectElementResize.addResizeListener(parentNode, this._onResize);\n }\n this._onResize();\n }\n }\n componentWillUnmount() {\n if (this._parentNode) {\n if (this._detectElementResize) {\n this._detectElementResize.removeResizeListener(this._parentNode, this._onResize);\n }\n if (this._timeoutId !== null) {\n clearTimeout(this._timeoutId);\n }\n if (this._resizeObserver) {\n this._resizeObserver.disconnect();\n }\n }\n }\n render() {\n const {\n children,\n defaultHeight,\n defaultWidth,\n disableHeight = false,\n disableWidth = false,\n doNotBailOutOnEmptyChildren = false,\n nonce,\n onResize,\n style = {},\n tagName = \"div\",\n ...rest\n } = this.props;\n const {\n height,\n scaledHeight,\n scaledWidth,\n width\n } = this.state;\n\n // Outer div should not force width/height since that may prevent containers from shrinking.\n // Inner component should overflow and use calculated width/height.\n // See issue #68 for more information.\n const outerStyle = {\n overflow: \"visible\"\n };\n const childParams = {};\n\n // Avoid rendering children before the initial measurements have been collected.\n // At best this would just be wasting cycles.\n let bailoutOnChildren = false;\n if (!disableHeight) {\n if (height === 0) {\n bailoutOnChildren = true;\n }\n outerStyle.height = 0;\n childParams.height = height;\n childParams.scaledHeight = scaledHeight;\n }\n if (!disableWidth) {\n if (width === 0) {\n bailoutOnChildren = true;\n }\n outerStyle.width = 0;\n childParams.width = width;\n childParams.scaledWidth = scaledWidth;\n }\n if (doNotBailOutOnEmptyChildren) {\n bailoutOnChildren = false;\n }\n return createElement(tagName, {\n ref: this._setRef,\n style: {\n ...outerStyle,\n ...style\n },\n ...rest\n }, !bailoutOnChildren && children(childParams));\n }\n}\n\nfunction isHeightAndWidthProps(props) {\n return props && props.disableHeight !== true && props.disableWidth !== true;\n}\nfunction isHeightOnlyProps(props) {\n return props && props.disableHeight !== true && props.disableWidth === true;\n}\nfunction isWidthOnlyProps(props) {\n return props && props.disableHeight === true && props.disableWidth !== true;\n}\n\nexport { AutoSizer as default, isHeightAndWidthProps, isHeightOnlyProps, isWidthOnlyProps };\n","import { jsx, jsxs } from 'react/jsx-runtime';\nimport { css } from '@emotion/css';\nimport { memo, useMemo, useState } from 'react';\nimport AutoSizer from 'react-virtualized-auto-sizer';\nimport { FieldType, MappingType, applyFieldOverrides } from '@grafana/data';\nimport { useStyles2, useTheme2, Table, TableCellDisplayMode, IconButton } from '@grafana/ui';\nimport { diffColorBlindColors, diffDefaultColors } from '../FlameGraph/colors.js';\nimport { TOP_TABLE_COLUMN_WIDTH } from '../constants.js';\nimport { ColorSchemeDiff } from '../types.js';\n\nconst FlameGraphTopTableContainer = memo(\n ({\n data,\n onSymbolClick,\n search,\n matchedLabels,\n onSearch,\n sandwichItem,\n onSandwich,\n onTableSort,\n colorScheme\n }) => {\n const table = useMemo(() => {\n let filteredTable = {};\n for (let i = 0; i < data.data.length; i++) {\n const value = data.getValue(i);\n const valueRight = data.getValueRight(i);\n const self = data.getSelf(i);\n const label = data.getLabel(i);\n if (!matchedLabels || matchedLabels.has(label)) {\n filteredTable[label] = filteredTable[label] || {};\n filteredTable[label].self = filteredTable[label].self ? filteredTable[label].self + self : self;\n filteredTable[label].total = filteredTable[label].total ? filteredTable[label].total + value : value;\n filteredTable[label].totalRight = filteredTable[label].totalRight ? filteredTable[label].totalRight + valueRight : valueRight;\n }\n }\n return filteredTable;\n }, [data, matchedLabels]);\n const styles = useStyles2(getStyles);\n const theme = useTheme2();\n const [sort, setSort] = useState([{ displayName: \"Self\", desc: true }]);\n return /* @__PURE__ */ jsx(\"div\", { className: styles.topTableContainer, \"data-testid\": \"topTable\", children: /* @__PURE__ */ jsx(AutoSizer, { style: { width: \"100%\" }, children: ({ width, height }) => {\n if (width < 3 || height < 3) {\n return null;\n }\n const frame = buildTableDataFrame(\n data,\n table,\n width,\n onSymbolClick,\n onSearch,\n onSandwich,\n theme,\n colorScheme,\n search,\n sandwichItem\n );\n return /* @__PURE__ */ jsx(\n Table,\n {\n initialSortBy: sort,\n onSortByChange: (s) => {\n if (s && s.length) {\n onTableSort == null ? void 0 : onTableSort(s[0].displayName + \"_\" + (s[0].desc ? \"desc\" : \"asc\"));\n }\n setSort(s);\n },\n data: frame,\n width,\n height\n }\n );\n } }) });\n }\n);\nFlameGraphTopTableContainer.displayName = \"FlameGraphTopTableContainer\";\nfunction buildTableDataFrame(data, table, width, onSymbolClick, onSearch, onSandwich, theme, colorScheme, search, sandwichItem) {\n const actionField = createActionField(onSandwich, onSearch, search, sandwichItem);\n const symbolField = {\n type: FieldType.string,\n name: \"Symbol\",\n values: [],\n config: {\n custom: { width: width - actionColumnWidth - TOP_TABLE_COLUMN_WIDTH * 2 },\n links: [\n {\n title: \"Highlight symbol\",\n url: \"\",\n onClick: (e) => {\n const field = e.origin.field;\n const value = field.values[e.origin.rowIndex];\n onSymbolClick(value);\n }\n }\n ]\n }\n };\n let frame;\n if (data.isDiffFlamegraph()) {\n symbolField.config.custom.width = width - actionColumnWidth - TOP_TABLE_COLUMN_WIDTH * 3;\n const baselineField = createNumberField(\"Baseline\", \"percent\");\n const comparisonField = createNumberField(\"Comparison\", \"percent\");\n const diffField = createNumberField(\"Diff\", \"percent\");\n diffField.config.custom.cellOptions.type = TableCellDisplayMode.ColorText;\n const [removeColor, addColor] = colorScheme === ColorSchemeDiff.DiffColorBlind ? [diffColorBlindColors[0], diffColorBlindColors[2]] : [diffDefaultColors[0], diffDefaultColors[2]];\n diffField.config.mappings = [\n { type: MappingType.ValueToText, options: { [Infinity]: { text: \"new\", color: addColor } } },\n { type: MappingType.ValueToText, options: { [-100]: { text: \"removed\", color: removeColor } } },\n { type: MappingType.RangeToText, options: { from: 0, to: Infinity, result: { color: addColor } } },\n { type: MappingType.RangeToText, options: { from: -Infinity, to: 0, result: { color: removeColor } } }\n ];\n const levels = data.getLevels();\n const totalTicks = levels.length ? levels[0][0].value : 0;\n const totalTicksRight = levels.length ? levels[0][0].valueRight : void 0;\n for (let key in table) {\n actionField.values.push(null);\n symbolField.values.push(key);\n const ticksLeft = table[key].total;\n const ticksRight = table[key].totalRight;\n const totalTicksLeft = totalTicks - totalTicksRight;\n const percentageLeft = Math.round(1e4 * ticksLeft / totalTicksLeft) / 100;\n const percentageRight = Math.round(1e4 * ticksRight / totalTicksRight) / 100;\n const diff = (percentageRight - percentageLeft) / percentageLeft * 100;\n diffField.values.push(diff);\n baselineField.values.push(percentageLeft);\n comparisonField.values.push(percentageRight);\n }\n frame = {\n fields: [actionField, symbolField, baselineField, comparisonField, diffField],\n length: symbolField.values.length\n };\n } else {\n const selfField = createNumberField(\"Self\", data.selfField.config.unit);\n const totalField = createNumberField(\"Total\", data.valueField.config.unit);\n for (let key in table) {\n actionField.values.push(null);\n symbolField.values.push(key);\n selfField.values.push(table[key].self);\n totalField.values.push(table[key].total);\n }\n frame = { fields: [actionField, symbolField, selfField, totalField], length: symbolField.values.length };\n }\n const dataFrames = applyFieldOverrides({\n data: [frame],\n fieldConfig: {\n defaults: {},\n overrides: []\n },\n replaceVariables: (value) => value,\n theme\n });\n return dataFrames[0];\n}\nfunction createNumberField(name, unit) {\n const tableFieldOptions = {\n width: TOP_TABLE_COLUMN_WIDTH,\n align: \"auto\",\n inspect: false,\n cellOptions: { type: TableCellDisplayMode.Auto }\n };\n return {\n type: FieldType.number,\n name,\n values: [],\n config: {\n unit,\n custom: tableFieldOptions\n }\n };\n}\nconst actionColumnWidth = 61;\nfunction createActionField(onSandwich, onSearch, search, sandwichItem) {\n const options = {\n type: TableCellDisplayMode.Custom,\n cellComponent: (props) => {\n return /* @__PURE__ */ jsx(\n ActionCell,\n {\n frame: props.frame,\n onSandwich,\n onSearch,\n search,\n sandwichItem,\n rowIndex: props.rowIndex\n }\n );\n }\n };\n const actionFieldTableConfig = {\n filterable: false,\n width: actionColumnWidth,\n hideHeader: true,\n inspect: false,\n align: \"auto\",\n cellOptions: options\n };\n return {\n type: FieldType.number,\n name: \"actions\",\n values: [],\n config: {\n custom: actionFieldTableConfig\n }\n };\n}\nfunction ActionCell(props) {\n var _a;\n const styles = getStylesActionCell();\n const symbol = (_a = props.frame.fields.find((f) => f.name === \"Symbol\")) == null ? void 0 : _a.values[props.rowIndex];\n const isSearched = props.search === symbol;\n const isSandwiched = props.sandwichItem === symbol;\n return /* @__PURE__ */ jsxs(\"div\", { className: styles.actionCellWrapper, children: [\n /* @__PURE__ */ jsx(\n IconButton,\n {\n className: styles.actionCellButton,\n name: \"search\",\n variant: isSearched ? \"primary\" : \"secondary\",\n tooltip: isSearched ? \"Clear from search\" : \"Search for symbol\",\n \"aria-label\": isSearched ? \"Clear from search\" : \"Search for symbol\",\n onClick: () => {\n props.onSearch(isSearched ? \"\" : symbol);\n }\n }\n ),\n /* @__PURE__ */ jsx(\n IconButton,\n {\n className: styles.actionCellButton,\n name: \"gf-show-context\",\n tooltip: isSandwiched ? \"Remove from sandwich view\" : \"Show in sandwich view\",\n variant: isSandwiched ? \"primary\" : \"secondary\",\n \"aria-label\": isSandwiched ? \"Remove from sandwich view\" : \"Show in sandwich view\",\n onClick: () => {\n props.onSandwich(isSandwiched ? void 0 : symbol);\n }\n }\n )\n ] });\n}\nconst getStyles = (theme) => {\n return {\n topTableContainer: css({\n label: \"topTableContainer\",\n padding: theme.spacing(1),\n backgroundColor: theme.colors.background.secondary,\n height: \"100%\"\n })\n };\n};\nconst getStylesActionCell = () => {\n return {\n actionCellWrapper: css({\n label: \"actionCellWrapper\",\n display: \"flex\",\n height: \"24px\"\n }),\n actionCellButton: css({\n label: \"actionCellButton\",\n marginRight: 0,\n width: \"24px\"\n })\n };\n};\n\nexport { FlameGraphTopTableContainer as default };\n//# sourceMappingURL=FlameGraphTopTableContainer.js.map\n","import { jsx, jsxs } from 'react/jsx-runtime';\nimport { css } from '@emotion/css';\nimport uFuzzy from '@leeoniya/ufuzzy';\nimport { useState, useMemo, useEffect, useCallback } from 'react';\nimport { useMeasure } from 'react-use';\nimport { ThemeContext } from '@grafana/ui';\nimport FlameGraph from './FlameGraph/FlameGraph.js';\nimport { CollapsedMap, FlameGraphDataContainer } from './FlameGraph/dataTransform.js';\nimport FlameGraphHeader from './FlameGraphHeader.js';\nimport FlameGraphTopTableContainer from './TopTable/FlameGraphTopTableContainer.js';\nimport { MIN_WIDTH_TO_SHOW_BOTH_TOPTABLE_AND_FLAMEGRAPH } from './constants.js';\nimport { SelectedView, ColorSchemeDiff, ColorScheme } from './types.js';\n\nconst ufuzzy = new uFuzzy();\nconst FlameGraphContainer = ({\n data,\n onTableSymbolClick,\n onViewSelected,\n onTextAlignSelected,\n onTableSort,\n getTheme,\n stickyHeader,\n extraHeaderElements,\n vertical,\n showFlameGraphOnly,\n disableCollapsing,\n keepFocusOnDataChange,\n getExtraContextMenuButtons\n}) => {\n const [focusedItemData, setFocusedItemData] = useState();\n const [rangeMin, setRangeMin] = useState(0);\n const [rangeMax, setRangeMax] = useState(1);\n const [search, setSearch] = useState(\"\");\n const [selectedView, setSelectedView] = useState(SelectedView.Both);\n const [sizeRef, { width: containerWidth }] = useMeasure();\n const [textAlign, setTextAlign] = useState(\"left\");\n const [sandwichItem, setSandwichItem] = useState();\n const [collapsedMap, setCollapsedMap] = useState(new CollapsedMap());\n const theme = useMemo(() => getTheme(), [getTheme]);\n const dataContainer = useMemo(() => {\n if (!data) {\n return;\n }\n const container = new FlameGraphDataContainer(data, { collapsing: !disableCollapsing }, theme);\n setCollapsedMap(container.getCollapsedMap());\n return container;\n }, [data, theme, disableCollapsing]);\n const [colorScheme, setColorScheme] = useColorScheme(dataContainer);\n const styles = getStyles(theme);\n const matchedLabels = useLabelSearch(search, dataContainer);\n useEffect(() => {\n if (containerWidth > 0 && containerWidth < MIN_WIDTH_TO_SHOW_BOTH_TOPTABLE_AND_FLAMEGRAPH && selectedView === SelectedView.Both && !vertical) {\n setSelectedView(SelectedView.FlameGraph);\n }\n }, [selectedView, setSelectedView, containerWidth, vertical]);\n const resetFocus = useCallback(() => {\n setFocusedItemData(void 0);\n setRangeMin(0);\n setRangeMax(1);\n }, [setFocusedItemData, setRangeMax, setRangeMin]);\n const resetSandwich = useCallback(() => {\n setSandwichItem(void 0);\n }, [setSandwichItem]);\n useEffect(() => {\n var _a;\n if (!keepFocusOnDataChange) {\n resetFocus();\n resetSandwich();\n return;\n }\n if (dataContainer && focusedItemData) {\n const item = (_a = dataContainer.getNodesWithLabel(focusedItemData.label)) == null ? void 0 : _a[0];\n if (item) {\n setFocusedItemData({ ...focusedItemData, item });\n const levels = dataContainer.getLevels();\n const totalViewTicks = levels.length ? levels[0][0].value : 0;\n setRangeMin(item.start / totalViewTicks);\n setRangeMax((item.start + item.value) / totalViewTicks);\n } else {\n setFocusedItemData({\n ...focusedItemData,\n item: {\n start: 0,\n value: 0,\n itemIndexes: [],\n children: [],\n level: 0\n }\n });\n setRangeMin(0);\n setRangeMax(1);\n }\n }\n }, [dataContainer, keepFocusOnDataChange]);\n const onSymbolClick = useCallback(\n (symbol) => {\n if (search === symbol) {\n setSearch(\"\");\n } else {\n onTableSymbolClick == null ? void 0 : onTableSymbolClick(symbol);\n setSearch(symbol);\n resetFocus();\n }\n },\n [setSearch, resetFocus, onTableSymbolClick, search]\n );\n if (!dataContainer) {\n return null;\n }\n const flameGraph = /* @__PURE__ */ jsx(\n FlameGraph,\n {\n data: dataContainer,\n rangeMin,\n rangeMax,\n matchedLabels,\n setRangeMin,\n setRangeMax,\n onItemFocused: (data2) => setFocusedItemData(data2),\n focusedItemData,\n textAlign,\n sandwichItem,\n onSandwich: (label) => {\n resetFocus();\n setSandwichItem(label);\n },\n onFocusPillClick: resetFocus,\n onSandwichPillClick: resetSandwich,\n colorScheme,\n showFlameGraphOnly,\n collapsing: !disableCollapsing,\n getExtraContextMenuButtons,\n selectedView,\n search,\n collapsedMap,\n setCollapsedMap\n }\n );\n const table = /* @__PURE__ */ jsx(\n FlameGraphTopTableContainer,\n {\n data: dataContainer,\n onSymbolClick,\n search,\n matchedLabels,\n sandwichItem,\n onSandwich: setSandwichItem,\n onSearch: setSearch,\n onTableSort,\n colorScheme\n }\n );\n let body;\n if (showFlameGraphOnly || selectedView === SelectedView.FlameGraph) {\n body = flameGraph;\n } else if (selectedView === SelectedView.TopTable) {\n body = /* @__PURE__ */ jsx(\"div\", { className: styles.tableContainer, children: table });\n } else if (selectedView === SelectedView.Both) {\n if (vertical) {\n body = /* @__PURE__ */ jsxs(\"div\", { children: [\n /* @__PURE__ */ jsx(\"div\", { className: styles.verticalGraphContainer, children: flameGraph }),\n /* @__PURE__ */ jsx(\"div\", { className: styles.verticalTableContainer, children: table })\n ] });\n } else {\n body = /* @__PURE__ */ jsxs(\"div\", { className: styles.horizontalContainer, children: [\n /* @__PURE__ */ jsx(\"div\", { className: styles.horizontalTableContainer, children: table }),\n /* @__PURE__ */ jsx(\"div\", { className: styles.horizontalGraphContainer, children: flameGraph })\n ] });\n }\n }\n return (\n // We add the theme context to bridge the gap if this is rendered in non grafana environment where the context\n // isn't already provided.\n /* @__PURE__ */ jsx(ThemeContext.Provider, { value: theme, children: /* @__PURE__ */ jsxs(\"div\", { ref: sizeRef, className: styles.container, children: [\n !showFlameGraphOnly && /* @__PURE__ */ jsx(\n FlameGraphHeader,\n {\n search,\n setSearch,\n selectedView,\n setSelectedView: (view) => {\n setSelectedView(view);\n onViewSelected == null ? void 0 : onViewSelected(view);\n },\n containerWidth,\n onReset: () => {\n resetFocus();\n resetSandwich();\n },\n textAlign,\n onTextAlignChange: (align) => {\n setTextAlign(align);\n onTextAlignSelected == null ? void 0 : onTextAlignSelected(align);\n },\n showResetButton: Boolean(focusedItemData || sandwichItem),\n colorScheme,\n onColorSchemeChange: setColorScheme,\n stickyHeader: Boolean(stickyHeader),\n extraHeaderElements,\n vertical,\n isDiffMode: dataContainer.isDiffFlamegraph(),\n setCollapsedMap,\n collapsedMap\n }\n ),\n /* @__PURE__ */ jsx(\"div\", { className: styles.body, children: body })\n ] }) })\n );\n};\nfunction useColorScheme(dataContainer) {\n const defaultColorScheme = (dataContainer == null ? void 0 : dataContainer.isDiffFlamegraph()) ? ColorSchemeDiff.Default : ColorScheme.PackageBased;\n const [colorScheme, setColorScheme] = useState(defaultColorScheme);\n useEffect(() => {\n setColorScheme(defaultColorScheme);\n }, [defaultColorScheme]);\n return [colorScheme, setColorScheme];\n}\nfunction useLabelSearch(search, data) {\n return useMemo(() => {\n if (search && data) {\n const foundLabels = /* @__PURE__ */ new Set();\n let idxs = ufuzzy.filter(data.getUniqueLabels(), search);\n if (idxs) {\n for (let idx of idxs) {\n foundLabels.add(data.getUniqueLabels()[idx]);\n }\n }\n return foundLabels;\n }\n return void 0;\n }, [search, data]);\n}\nfunction getStyles(theme) {\n return {\n container: css({\n label: \"container\",\n overflow: \"auto\",\n height: \"100%\",\n display: \"flex\",\n flex: \"1 1 0\",\n flexDirection: \"column\",\n minHeight: 0,\n gap: theme.spacing(1)\n }),\n body: css({\n label: \"body\",\n flexGrow: 1\n }),\n tableContainer: css({\n // This is not ideal for dashboard panel where it creates a double scroll. In a panel it should be 100% but then\n // in explore we need a specific height.\n height: 800\n }),\n horizontalContainer: css({\n label: \"horizontalContainer\",\n display: \"flex\",\n minHeight: 0,\n flexDirection: \"row\",\n columnGap: theme.spacing(1),\n width: \"100%\"\n }),\n horizontalGraphContainer: css({\n flexBasis: \"50%\"\n }),\n horizontalTableContainer: css({\n flexBasis: \"50%\",\n maxHeight: 800\n }),\n verticalGraphContainer: css({\n marginBottom: theme.spacing(1)\n }),\n verticalTableContainer: css({\n height: 800\n })\n };\n}\n\nexport { FlameGraphContainer as default };\n//# sourceMappingURL=FlameGraphContainer.js.map\n","// DEFLATE is a complex format; to read this code, you should probably check the RFC first:\n// https://tools.ietf.org/html/rfc1951\n// You may also wish to take a look at the guide I made about this program:\n// https://gist.github.com/101arrowz/253f31eb5abc3d9275ab943003ffecad\n// Some of the following code is similar to that of UZIP.js:\n// https://github.com/photopea/UZIP.js\n// However, the vast majority of the codebase has diverged from UZIP.js to increase performance and reduce bundle size.\n// Sometimes 0 will appear where -1 would be more appropriate. This is because using a uint\n// is better for memory in most engines (I *think*).\nvar ch2 = {};\nvar wk = (function (c, id, msg, transfer, cb) {\n var w = new Worker(ch2[id] || (ch2[id] = URL.createObjectURL(new Blob([\n c + ';addEventListener(\"error\",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})'\n ], { type: 'text/javascript' }))));\n w.onmessage = function (e) {\n var d = e.data, ed = d.$e$;\n if (ed) {\n var err = new Error(ed[0]);\n err['code'] = ed[1];\n err.stack = ed[2];\n cb(err, null);\n }\n else\n cb(null, d);\n };\n w.postMessage(msg, transfer);\n return w;\n});\n\n// aliases for shorter compressed code (most minifers don't do this)\nvar u8 = Uint8Array, u16 = Uint16Array, i32 = Int32Array;\n// fixed length extra bits\nvar fleb = new u8([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, /* unused */ 0, 0, /* impossible */ 0]);\n// fixed distance extra bits\nvar fdeb = new u8([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, /* unused */ 0, 0]);\n// code length index map\nvar clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n// get base, reverse index map from extra bits\nvar freb = function (eb, start) {\n var b = new u16(31);\n for (var i = 0; i < 31; ++i) {\n b[i] = start += 1 << eb[i - 1];\n }\n // numbers here are at max 18 bits\n var r = new i32(b[30]);\n for (var i = 1; i < 30; ++i) {\n for (var j = b[i]; j < b[i + 1]; ++j) {\n r[j] = ((j - b[i]) << 5) | i;\n }\n }\n return { b: b, r: r };\n};\nvar _a = freb(fleb, 2), fl = _a.b, revfl = _a.r;\n// we can ignore the fact that the other numbers are wrong; they never happen anyway\nfl[28] = 258, revfl[258] = 28;\nvar _b = freb(fdeb, 0), fd = _b.b, revfd = _b.r;\n// map of value to reverse (assuming 16 bits)\nvar rev = new u16(32768);\nfor (var i = 0; i < 32768; ++i) {\n // reverse table algorithm from SO\n var x = ((i & 0xAAAA) >> 1) | ((i & 0x5555) << 1);\n x = ((x & 0xCCCC) >> 2) | ((x & 0x3333) << 2);\n x = ((x & 0xF0F0) >> 4) | ((x & 0x0F0F) << 4);\n rev[i] = (((x & 0xFF00) >> 8) | ((x & 0x00FF) << 8)) >> 1;\n}\n// create huffman tree from u8 \"map\": index -> code length for code index\n// mb (max bits) must be at most 15\n// TODO: optimize/split up?\nvar hMap = (function (cd, mb, r) {\n var s = cd.length;\n // index\n var i = 0;\n // u16 \"map\": index -> # of codes with bit length = index\n var l = new u16(mb);\n // length of cd must be 288 (total # of codes)\n for (; i < s; ++i) {\n if (cd[i])\n ++l[cd[i] - 1];\n }\n // u16 \"map\": index -> minimum code for bit length = index\n var le = new u16(mb);\n for (i = 1; i < mb; ++i) {\n le[i] = (le[i - 1] + l[i - 1]) << 1;\n }\n var co;\n if (r) {\n // u16 \"map\": index -> number of actual bits, symbol for code\n co = new u16(1 << mb);\n // bits to remove for reverser\n var rvb = 15 - mb;\n for (i = 0; i < s; ++i) {\n // ignore 0 lengths\n if (cd[i]) {\n // num encoding both symbol and bits read\n var sv = (i << 4) | cd[i];\n // free bits\n var r_1 = mb - cd[i];\n // start value\n var v = le[cd[i] - 1]++ << r_1;\n // m is end value\n for (var m = v | ((1 << r_1) - 1); v <= m; ++v) {\n // every 16 bit value starting with the code yields the same result\n co[rev[v] >> rvb] = sv;\n }\n }\n }\n }\n else {\n co = new u16(s);\n for (i = 0; i < s; ++i) {\n if (cd[i]) {\n co[i] = rev[le[cd[i] - 1]++] >> (15 - cd[i]);\n }\n }\n }\n return co;\n});\n// fixed length tree\nvar flt = new u8(288);\nfor (var i = 0; i < 144; ++i)\n flt[i] = 8;\nfor (var i = 144; i < 256; ++i)\n flt[i] = 9;\nfor (var i = 256; i < 280; ++i)\n flt[i] = 7;\nfor (var i = 280; i < 288; ++i)\n flt[i] = 8;\n// fixed distance tree\nvar fdt = new u8(32);\nfor (var i = 0; i < 32; ++i)\n fdt[i] = 5;\n// fixed length map\nvar flm = /*#__PURE__*/ hMap(flt, 9, 0), flrm = /*#__PURE__*/ hMap(flt, 9, 1);\n// fixed distance map\nvar fdm = /*#__PURE__*/ hMap(fdt, 5, 0), fdrm = /*#__PURE__*/ hMap(fdt, 5, 1);\n// find max of array\nvar max = function (a) {\n var m = a[0];\n for (var i = 1; i < a.length; ++i) {\n if (a[i] > m)\n m = a[i];\n }\n return m;\n};\n// read d, starting at bit p and mask with m\nvar bits = function (d, p, m) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8)) >> (p & 7)) & m;\n};\n// read d, starting at bit p continuing for at least 16 bits\nvar bits16 = function (d, p) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >> (p & 7));\n};\n// get end of byte\nvar shft = function (p) { return ((p + 7) / 8) | 0; };\n// typed array slice - allows garbage collector to free original reference,\n// while being more compatible than .slice\nvar slc = function (v, s, e) {\n if (s == null || s < 0)\n s = 0;\n if (e == null || e > v.length)\n e = v.length;\n // can't use .constructor in case user-supplied\n return new u8(v.subarray(s, e));\n};\n/**\n * Codes for errors generated within this library\n */\nexport var FlateErrorCode = {\n UnexpectedEOF: 0,\n InvalidBlockType: 1,\n InvalidLengthLiteral: 2,\n InvalidDistance: 3,\n StreamFinished: 4,\n NoStreamHandler: 5,\n InvalidHeader: 6,\n NoCallback: 7,\n InvalidUTF8: 8,\n ExtraFieldTooLong: 9,\n InvalidDate: 10,\n FilenameTooLong: 11,\n StreamFinishing: 12,\n InvalidZipData: 13,\n UnknownCompressionMethod: 14\n};\n// error codes\nvar ec = [\n 'unexpected EOF',\n 'invalid block type',\n 'invalid length/literal',\n 'invalid distance',\n 'stream finished',\n 'no stream handler',\n ,\n 'no callback',\n 'invalid UTF-8 data',\n 'extra field too long',\n 'date not in range 1980-2099',\n 'filename too long',\n 'stream finishing',\n 'invalid zip data'\n // determined by unknown compression method\n];\n;\nvar err = function (ind, msg, nt) {\n var e = new Error(msg || ec[ind]);\n e.code = ind;\n if (Error.captureStackTrace)\n Error.captureStackTrace(e, err);\n if (!nt)\n throw e;\n return e;\n};\n// expands raw DEFLATE data\nvar inflt = function (dat, st, buf, dict) {\n // source length dict length\n var sl = dat.length, dl = dict ? dict.length : 0;\n if (!sl || st.f && !st.l)\n return buf || new u8(0);\n var noBuf = !buf;\n // have to estimate size\n var resize = noBuf || st.i != 2;\n // no state\n var noSt = st.i;\n // Assumes roughly 33% compression ratio average\n if (noBuf)\n buf = new u8(sl * 3);\n // ensure buffer can fit at least l elements\n var cbuf = function (l) {\n var bl = buf.length;\n // need to increase size to fit\n if (l > bl) {\n // Double or set to necessary, whichever is greater\n var nbuf = new u8(Math.max(bl * 2, l));\n nbuf.set(buf);\n buf = nbuf;\n }\n };\n // last chunk bitpos bytes\n var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;\n // total bits\n var tbts = sl * 8;\n do {\n if (!lm) {\n // BFINAL - this is only 1 when last chunk is next\n final = bits(dat, pos, 1);\n // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman\n var type = bits(dat, pos + 1, 3);\n pos += 3;\n if (!type) {\n // go to end of byte boundary\n var s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l;\n if (t > sl) {\n if (noSt)\n err(0);\n break;\n }\n // ensure size\n if (resize)\n cbuf(bt + l);\n // Copy over uncompressed data\n buf.set(dat.subarray(s, t), bt);\n // Get new bitpos, update byte count\n st.b = bt += l, st.p = pos = t * 8, st.f = final;\n continue;\n }\n else if (type == 1)\n lm = flrm, dm = fdrm, lbt = 9, dbt = 5;\n else if (type == 2) {\n // literal lengths\n var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;\n var tl = hLit + bits(dat, pos + 5, 31) + 1;\n pos += 14;\n // length+distance tree\n var ldt = new u8(tl);\n // code length tree\n var clt = new u8(19);\n for (var i = 0; i < hcLen; ++i) {\n // use index map to get real code\n clt[clim[i]] = bits(dat, pos + i * 3, 7);\n }\n pos += hcLen * 3;\n // code lengths bits\n var clb = max(clt), clbmsk = (1 << clb) - 1;\n // code lengths map\n var clm = hMap(clt, clb, 1);\n for (var i = 0; i < tl;) {\n var r = clm[bits(dat, pos, clbmsk)];\n // bits read\n pos += r & 15;\n // symbol\n var s = r >> 4;\n // code length to copy\n if (s < 16) {\n ldt[i++] = s;\n }\n else {\n // copy count\n var c = 0, n = 0;\n if (s == 16)\n n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];\n else if (s == 17)\n n = 3 + bits(dat, pos, 7), pos += 3;\n else if (s == 18)\n n = 11 + bits(dat, pos, 127), pos += 7;\n while (n--)\n ldt[i++] = c;\n }\n }\n // length tree distance tree\n var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);\n // max length bits\n lbt = max(lt);\n // max dist bits\n dbt = max(dt);\n lm = hMap(lt, lbt, 1);\n dm = hMap(dt, dbt, 1);\n }\n else\n err(1);\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n }\n // Make sure the buffer can hold this + the largest possible addition\n // Maximum chunk size (practically, theoretically infinite) is 2^17\n if (resize)\n cbuf(bt + 131072);\n var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;\n var lpos = pos;\n for (;; lpos = pos) {\n // bits read, code\n var c = lm[bits16(dat, pos) & lms], sym = c >> 4;\n pos += c & 15;\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (!c)\n err(2);\n if (sym < 256)\n buf[bt++] = sym;\n else if (sym == 256) {\n lpos = pos, lm = null;\n break;\n }\n else {\n var add = sym - 254;\n // no extra bits needed if less\n if (sym > 264) {\n // index\n var i = sym - 257, b = fleb[i];\n add = bits(dat, pos, (1 << b) - 1) + fl[i];\n pos += b;\n }\n // dist\n var d = dm[bits16(dat, pos) & dms], dsym = d >> 4;\n if (!d)\n err(3);\n pos += d & 15;\n var dt = fd[dsym];\n if (dsym > 3) {\n var b = fdeb[dsym];\n dt += bits16(dat, pos) & (1 << b) - 1, pos += b;\n }\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (resize)\n cbuf(bt + 131072);\n var end = bt + add;\n if (bt < dt) {\n var shift = dl - dt, dend = Math.min(dt, end);\n if (shift + bt < 0)\n err(3);\n for (; bt < dend; ++bt)\n buf[bt] = dict[shift + bt];\n }\n for (; bt < end; ++bt)\n buf[bt] = buf[bt - dt];\n }\n }\n st.l = lm, st.p = lpos, st.b = bt, st.f = final;\n if (lm)\n final = 1, st.m = lbt, st.d = dm, st.n = dbt;\n } while (!final);\n // don't reallocate for streams or user buffers\n return bt != buf.length && noBuf ? slc(buf, 0, bt) : buf.subarray(0, bt);\n};\n// starting at p, write the minimum number of bits that can hold v to d\nvar wbits = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >> 8;\n};\n// starting at p, write the minimum number of bits (>8) that can hold v to d\nvar wbits16 = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >> 8;\n d[o + 2] |= v >> 16;\n};\n// creates code lengths from a frequency table\nvar hTree = function (d, mb) {\n // Need extra info to make a tree\n var t = [];\n for (var i = 0; i < d.length; ++i) {\n if (d[i])\n t.push({ s: i, f: d[i] });\n }\n var s = t.length;\n var t2 = t.slice();\n if (!s)\n return { t: et, l: 0 };\n if (s == 1) {\n var v = new u8(t[0].s + 1);\n v[t[0].s] = 1;\n return { t: v, l: 1 };\n }\n t.sort(function (a, b) { return a.f - b.f; });\n // after i2 reaches last ind, will be stopped\n // freq must be greater than largest possible number of symbols\n t.push({ s: -1, f: 25001 });\n var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2;\n t[0] = { s: -1, f: l.f + r.f, l: l, r: r };\n // efficient algorithm from UZIP.js\n // i0 is lookbehind, i2 is lookahead - after processing two low-freq\n // symbols that combined have high freq, will start processing i2 (high-freq,\n // non-composite) symbols instead\n // see https://reddit.com/r/photopea/comments/ikekht/uzipjs_questions/\n while (i1 != s - 1) {\n l = t[t[i0].f < t[i2].f ? i0++ : i2++];\n r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];\n t[i1++] = { s: -1, f: l.f + r.f, l: l, r: r };\n }\n var maxSym = t2[0].s;\n for (var i = 1; i < s; ++i) {\n if (t2[i].s > maxSym)\n maxSym = t2[i].s;\n }\n // code lengths\n var tr = new u16(maxSym + 1);\n // max bits in tree\n var mbt = ln(t[i1 - 1], tr, 0);\n if (mbt > mb) {\n // more algorithms from UZIP.js\n // TODO: find out how this code works (debt)\n // ind debt\n var i = 0, dt = 0;\n // left cost\n var lft = mbt - mb, cst = 1 << lft;\n t2.sort(function (a, b) { return tr[b.s] - tr[a.s] || a.f - b.f; });\n for (; i < s; ++i) {\n var i2_1 = t2[i].s;\n if (tr[i2_1] > mb) {\n dt += cst - (1 << (mbt - tr[i2_1]));\n tr[i2_1] = mb;\n }\n else\n break;\n }\n dt >>= lft;\n while (dt > 0) {\n var i2_2 = t2[i].s;\n if (tr[i2_2] < mb)\n dt -= 1 << (mb - tr[i2_2]++ - 1);\n else\n ++i;\n }\n for (; i >= 0 && dt; --i) {\n var i2_3 = t2[i].s;\n if (tr[i2_3] == mb) {\n --tr[i2_3];\n ++dt;\n }\n }\n mbt = mb;\n }\n return { t: new u8(tr), l: mbt };\n};\n// get the max length and assign length codes\nvar ln = function (n, l, d) {\n return n.s == -1\n ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1))\n : (l[n.s] = d);\n};\n// length codes generation\nvar lc = function (c) {\n var s = c.length;\n // Note that the semicolon was intentional\n while (s && !c[--s])\n ;\n var cl = new u16(++s);\n // ind num streak\n var cli = 0, cln = c[0], cls = 1;\n var w = function (v) { cl[cli++] = v; };\n for (var i = 1; i <= s; ++i) {\n if (c[i] == cln && i != s)\n ++cls;\n else {\n if (!cln && cls > 2) {\n for (; cls > 138; cls -= 138)\n w(32754);\n if (cls > 2) {\n w(cls > 10 ? ((cls - 11) << 5) | 28690 : ((cls - 3) << 5) | 12305);\n cls = 0;\n }\n }\n else if (cls > 3) {\n w(cln), --cls;\n for (; cls > 6; cls -= 6)\n w(8304);\n if (cls > 2)\n w(((cls - 3) << 5) | 8208), cls = 0;\n }\n while (cls--)\n w(cln);\n cls = 1;\n cln = c[i];\n }\n }\n return { c: cl.subarray(0, cli), n: s };\n};\n// calculate the length of output from tree, code lengths\nvar clen = function (cf, cl) {\n var l = 0;\n for (var i = 0; i < cl.length; ++i)\n l += cf[i] * cl[i];\n return l;\n};\n// writes a fixed block\n// returns the new bit pos\nvar wfblk = function (out, pos, dat) {\n // no need to write 00 as type: TypedArray defaults to 0\n var s = dat.length;\n var o = shft(pos + 2);\n out[o] = s & 255;\n out[o + 1] = s >> 8;\n out[o + 2] = out[o] ^ 255;\n out[o + 3] = out[o + 1] ^ 255;\n for (var i = 0; i < s; ++i)\n out[o + i + 4] = dat[i];\n return (o + 4 + s) * 8;\n};\n// writes a block\nvar wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) {\n wbits(out, p++, final);\n ++lf[256];\n var _a = hTree(lf, 15), dlt = _a.t, mlb = _a.l;\n var _b = hTree(df, 15), ddt = _b.t, mdb = _b.l;\n var _c = lc(dlt), lclt = _c.c, nlc = _c.n;\n var _d = lc(ddt), lcdt = _d.c, ndc = _d.n;\n var lcfreq = new u16(19);\n for (var i = 0; i < lclt.length; ++i)\n ++lcfreq[lclt[i] & 31];\n for (var i = 0; i < lcdt.length; ++i)\n ++lcfreq[lcdt[i] & 31];\n var _e = hTree(lcfreq, 7), lct = _e.t, mlcb = _e.l;\n var nlcc = 19;\n for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)\n ;\n var flen = (bl + 5) << 3;\n var ftlen = clen(lf, flt) + clen(df, fdt) + eb;\n var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + 2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18];\n if (bs >= 0 && flen <= ftlen && flen <= dtlen)\n return wfblk(out, p, dat.subarray(bs, bs + bl));\n var lm, ll, dm, dl;\n wbits(out, p, 1 + (dtlen < ftlen)), p += 2;\n if (dtlen < ftlen) {\n lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;\n var llm = hMap(lct, mlcb, 0);\n wbits(out, p, nlc - 257);\n wbits(out, p + 5, ndc - 1);\n wbits(out, p + 10, nlcc - 4);\n p += 14;\n for (var i = 0; i < nlcc; ++i)\n wbits(out, p + 3 * i, lct[clim[i]]);\n p += 3 * nlcc;\n var lcts = [lclt, lcdt];\n for (var it = 0; it < 2; ++it) {\n var clct = lcts[it];\n for (var i = 0; i < clct.length; ++i) {\n var len = clct[i] & 31;\n wbits(out, p, llm[len]), p += lct[len];\n if (len > 15)\n wbits(out, p, (clct[i] >> 5) & 127), p += clct[i] >> 12;\n }\n }\n }\n else {\n lm = flm, ll = flt, dm = fdm, dl = fdt;\n }\n for (var i = 0; i < li; ++i) {\n var sym = syms[i];\n if (sym > 255) {\n var len = (sym >> 18) & 31;\n wbits16(out, p, lm[len + 257]), p += ll[len + 257];\n if (len > 7)\n wbits(out, p, (sym >> 23) & 31), p += fleb[len];\n var dst = sym & 31;\n wbits16(out, p, dm[dst]), p += dl[dst];\n if (dst > 3)\n wbits16(out, p, (sym >> 5) & 8191), p += fdeb[dst];\n }\n else {\n wbits16(out, p, lm[sym]), p += ll[sym];\n }\n }\n wbits16(out, p, lm[256]);\n return p + ll[256];\n};\n// deflate options (nice << 13) | chain\nvar deo = /*#__PURE__*/ new i32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);\n// empty\nvar et = /*#__PURE__*/ new u8(0);\n// compresses data into a raw DEFLATE buffer\nvar dflt = function (dat, lvl, plvl, pre, post, st) {\n var s = st.z || dat.length;\n var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7000)) + post);\n // writing to this writes to the output buffer\n var w = o.subarray(pre, o.length - post);\n var lst = st.l;\n var pos = (st.r || 0) & 7;\n if (lvl) {\n if (pos)\n w[0] = st.r >> 3;\n var opt = deo[lvl - 1];\n var n = opt >> 13, c = opt & 8191;\n var msk_1 = (1 << plvl) - 1;\n // prev 2-byte val map curr 2-byte val map\n var prev = st.p || new u16(32768), head = st.h || new u16(msk_1 + 1);\n var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;\n var hsh = function (i) { return (dat[i] ^ (dat[i + 1] << bs1_1) ^ (dat[i + 2] << bs2_1)) & msk_1; };\n // 24576 is an arbitrary number of maximum symbols per block\n // 424 buffer for last block\n var syms = new i32(25000);\n // length/literal freq distance freq\n var lf = new u16(288), df = new u16(32);\n // l/lcnt exbits index l/lind waitdx blkpos\n var lc_1 = 0, eb = 0, i = st.i || 0, li = 0, wi = st.w || 0, bs = 0;\n for (; i + 2 < s; ++i) {\n // hash value\n var hv = hsh(i);\n // index mod 32768 previous index mod\n var imod = i & 32767, pimod = head[hv];\n prev[imod] = pimod;\n head[hv] = imod;\n // We always should modify head and prev, but only add symbols if\n // this data is not yet processed (\"wait\" for wait index)\n if (wi <= i) {\n // bytes remaining\n var rem = s - i;\n if ((lc_1 > 7000 || li > 24576) && (rem > 423 || !lst)) {\n pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);\n li = lc_1 = eb = 0, bs = i;\n for (var j = 0; j < 286; ++j)\n lf[j] = 0;\n for (var j = 0; j < 30; ++j)\n df[j] = 0;\n }\n // len dist chain\n var l = 2, d = 0, ch_1 = c, dif = imod - pimod & 32767;\n if (rem > 2 && hv == hsh(i - dif)) {\n var maxn = Math.min(n, rem) - 1;\n var maxd = Math.min(32767, i);\n // max possible length\n // not capped at dif because decompressors implement \"rolling\" index population\n var ml = Math.min(258, rem);\n while (dif <= maxd && --ch_1 && imod != pimod) {\n if (dat[i + l] == dat[i + l - dif]) {\n var nl = 0;\n for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl)\n ;\n if (nl > l) {\n l = nl, d = dif;\n // break out early when we reach \"nice\" (we are satisfied enough)\n if (nl > maxn)\n break;\n // now, find the rarest 2-byte sequence within this\n // length of literals and search for that instead.\n // Much faster than just using the start\n var mmd = Math.min(dif, nl - 2);\n var md = 0;\n for (var j = 0; j < mmd; ++j) {\n var ti = i - dif + j & 32767;\n var pti = prev[ti];\n var cd = ti - pti & 32767;\n if (cd > md)\n md = cd, pimod = ti;\n }\n }\n }\n // check the previous match\n imod = pimod, pimod = prev[imod];\n dif += imod - pimod & 32767;\n }\n }\n // d will be nonzero only when a match was found\n if (d) {\n // store both dist and len data in one int32\n // Make sure this is recognized as a len/dist with 28th bit (2^28)\n syms[li++] = 268435456 | (revfl[l] << 18) | revfd[d];\n var lin = revfl[l] & 31, din = revfd[d] & 31;\n eb += fleb[lin] + fdeb[din];\n ++lf[257 + lin];\n ++df[din];\n wi = i + l;\n ++lc_1;\n }\n else {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n }\n }\n for (i = Math.max(i, wi); i < s; ++i) {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos);\n if (!lst) {\n st.r = (pos & 7) | w[(pos / 8) | 0] << 3;\n // shft(pos) now 1 less if pos & 7 != 0\n pos -= 7;\n st.h = head, st.p = prev, st.i = i, st.w = wi;\n }\n }\n else {\n for (var i = st.w || 0; i < s + lst; i += 65535) {\n // end\n var e = i + 65535;\n if (e >= s) {\n // write final block\n w[(pos / 8) | 0] = lst;\n e = s;\n }\n pos = wfblk(w, pos + 1, dat.subarray(i, e));\n }\n st.i = s;\n }\n return slc(o, 0, pre + shft(pos) + post);\n};\n// CRC32 table\nvar crct = /*#__PURE__*/ (function () {\n var t = new Int32Array(256);\n for (var i = 0; i < 256; ++i) {\n var c = i, k = 9;\n while (--k)\n c = ((c & 1) && -306674912) ^ (c >>> 1);\n t[i] = c;\n }\n return t;\n})();\n// CRC32\nvar crc = function () {\n var c = -1;\n return {\n p: function (d) {\n // closures have awful performance\n var cr = c;\n for (var i = 0; i < d.length; ++i)\n cr = crct[(cr & 255) ^ d[i]] ^ (cr >>> 8);\n c = cr;\n },\n d: function () { return ~c; }\n };\n};\n// Adler32\nvar adler = function () {\n var a = 1, b = 0;\n return {\n p: function (d) {\n // closures have awful performance\n var n = a, m = b;\n var l = d.length | 0;\n for (var i = 0; i != l;) {\n var e = Math.min(i + 2655, l);\n for (; i < e; ++i)\n m += n += d[i];\n n = (n & 65535) + 15 * (n >> 16), m = (m & 65535) + 15 * (m >> 16);\n }\n a = n, b = m;\n },\n d: function () {\n a %= 65521, b %= 65521;\n return (a & 255) << 24 | (a & 0xFF00) << 8 | (b & 255) << 8 | (b >> 8);\n }\n };\n};\n;\n// deflate with opts\nvar dopt = function (dat, opt, pre, post, st) {\n if (!st) {\n st = { l: 1 };\n if (opt.dictionary) {\n var dict = opt.dictionary.subarray(-32768);\n var newDat = new u8(dict.length + dat.length);\n newDat.set(dict);\n newDat.set(dat, dict.length);\n dat = newDat;\n st.w = dict.length;\n }\n }\n return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? (st.l ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : 20) : (12 + opt.mem), pre, post, st);\n};\n// Walmart object spread\nvar mrg = function (a, b) {\n var o = {};\n for (var k in a)\n o[k] = a[k];\n for (var k in b)\n o[k] = b[k];\n return o;\n};\n// worker clone\n// This is possibly the craziest part of the entire codebase, despite how simple it may seem.\n// The only parameter to this function is a closure that returns an array of variables outside of the function scope.\n// We're going to try to figure out the variable names used in the closure as strings because that is crucial for workerization.\n// We will return an object mapping of true variable name to value (basically, the current scope as a JS object).\n// The reason we can't just use the original variable names is minifiers mangling the toplevel scope.\n// This took me three weeks to figure out how to do.\nvar wcln = function (fn, fnStr, td) {\n var dt = fn();\n var st = fn.toString();\n var ks = st.slice(st.indexOf('[') + 1, st.lastIndexOf(']')).replace(/\\s+/g, '').split(',');\n for (var i = 0; i < dt.length; ++i) {\n var v = dt[i], k = ks[i];\n if (typeof v == 'function') {\n fnStr += ';' + k + '=';\n var st_1 = v.toString();\n if (v.prototype) {\n // for global objects\n if (st_1.indexOf('[native code]') != -1) {\n var spInd = st_1.indexOf(' ', 8) + 1;\n fnStr += st_1.slice(spInd, st_1.indexOf('(', spInd));\n }\n else {\n fnStr += st_1;\n for (var t in v.prototype)\n fnStr += ';' + k + '.prototype.' + t + '=' + v.prototype[t].toString();\n }\n }\n else\n fnStr += st_1;\n }\n else\n td[k] = v;\n }\n return fnStr;\n};\nvar ch = [];\n// clone bufs\nvar cbfs = function (v) {\n var tl = [];\n for (var k in v) {\n if (v[k].buffer) {\n tl.push((v[k] = new v[k].constructor(v[k])).buffer);\n }\n }\n return tl;\n};\n// use a worker to execute code\nvar wrkr = function (fns, init, id, cb) {\n if (!ch[id]) {\n var fnStr = '', td_1 = {}, m = fns.length - 1;\n for (var i = 0; i < m; ++i)\n fnStr = wcln(fns[i], fnStr, td_1);\n ch[id] = { c: wcln(fns[m], fnStr, td_1), e: td_1 };\n }\n var td = mrg({}, ch[id].e);\n return wk(ch[id].c + ';onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=' + init.toString() + '}', id, td, cbfs(td), cb);\n};\n// base async inflate fn\nvar bInflt = function () { return [u8, u16, i32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, ec, hMap, max, bits, bits16, shft, slc, err, inflt, inflateSync, pbf, gopt]; };\nvar bDflt = function () { return [u8, u16, i32, fleb, fdeb, clim, revfl, revfd, flm, flt, fdm, fdt, rev, deo, et, hMap, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, shft, slc, dflt, dopt, deflateSync, pbf]; };\n// gzip extra\nvar gze = function () { return [gzh, gzhl, wbytes, crc, crct]; };\n// gunzip extra\nvar guze = function () { return [gzs, gzl]; };\n// zlib extra\nvar zle = function () { return [zlh, wbytes, adler]; };\n// unzlib extra\nvar zule = function () { return [zls]; };\n// post buf\nvar pbf = function (msg) { return postMessage(msg, [msg.buffer]); };\n// get opts\nvar gopt = function (o) { return o && {\n out: o.size && new u8(o.size),\n dictionary: o.dictionary\n}; };\n// async helper\nvar cbify = function (dat, opts, fns, init, id, cb) {\n var w = wrkr(fns, init, id, function (err, dat) {\n w.terminate();\n cb(err, dat);\n });\n w.postMessage([dat, opts], opts.consume ? [dat.buffer] : []);\n return function () { w.terminate(); };\n};\n// auto stream\nvar astrm = function (strm) {\n strm.ondata = function (dat, final) { return postMessage([dat, final], [dat.buffer]); };\n return function (ev) {\n if (ev.data.length) {\n strm.push(ev.data[0], ev.data[1]);\n postMessage([ev.data[0].length]);\n }\n else\n strm.flush();\n };\n};\n// async stream attach\nvar astrmify = function (fns, strm, opts, init, id, flush, ext) {\n var t;\n var w = wrkr(fns, init, id, function (err, dat) {\n if (err)\n w.terminate(), strm.ondata.call(strm, err);\n else if (!Array.isArray(dat))\n ext(dat);\n else if (dat.length == 1) {\n strm.queuedSize -= dat[0];\n if (strm.ondrain)\n strm.ondrain(dat[0]);\n }\n else {\n if (dat[1])\n w.terminate();\n strm.ondata.call(strm, err, dat[0], dat[1]);\n }\n });\n w.postMessage(opts);\n strm.queuedSize = 0;\n strm.push = function (d, f) {\n if (!strm.ondata)\n err(5);\n if (t)\n strm.ondata(err(4, 0, 1), null, !!f);\n strm.queuedSize += d.length;\n w.postMessage([d, t = f], [d.buffer]);\n };\n strm.terminate = function () { w.terminate(); };\n if (flush) {\n strm.flush = function () { w.postMessage([]); };\n }\n};\n// read 2 bytes\nvar b2 = function (d, b) { return d[b] | (d[b + 1] << 8); };\n// read 4 bytes\nvar b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16) | (d[b + 3] << 24)) >>> 0; };\nvar b8 = function (d, b) { return b4(d, b) + (b4(d, b + 4) * 4294967296); };\n// write bytes\nvar wbytes = function (d, b, v) {\n for (; v; ++b)\n d[b] = v, v >>>= 8;\n};\n// gzip header\nvar gzh = function (c, o) {\n var fn = o.filename;\n c[0] = 31, c[1] = 139, c[2] = 8, c[8] = o.level < 2 ? 4 : o.level == 9 ? 2 : 0, c[9] = 3; // assume Unix\n if (o.mtime != 0)\n wbytes(c, 4, Math.floor(new Date(o.mtime || Date.now()) / 1000));\n if (fn) {\n c[3] = 8;\n for (var i = 0; i <= fn.length; ++i)\n c[i + 10] = fn.charCodeAt(i);\n }\n};\n// gzip footer: -8 to -4 = CRC, -4 to -0 is length\n// gzip start\nvar gzs = function (d) {\n if (d[0] != 31 || d[1] != 139 || d[2] != 8)\n err(6, 'invalid gzip data');\n var flg = d[3];\n var st = 10;\n if (flg & 4)\n st += (d[10] | d[11] << 8) + 2;\n for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++])\n ;\n return st + (flg & 2);\n};\n// gzip length\nvar gzl = function (d) {\n var l = d.length;\n return (d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16 | d[l - 1] << 24) >>> 0;\n};\n// gzip header length\nvar gzhl = function (o) { return 10 + (o.filename ? o.filename.length + 1 : 0); };\n// zlib header\nvar zlh = function (c, o) {\n var lv = o.level, fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;\n c[0] = 120, c[1] = (fl << 6) | (o.dictionary && 32);\n c[1] |= 31 - ((c[0] << 8) | c[1]) % 31;\n if (o.dictionary) {\n var h = adler();\n h.p(o.dictionary);\n wbytes(c, 2, h.d());\n }\n};\n// zlib start\nvar zls = function (d, dict) {\n if ((d[0] & 15) != 8 || (d[0] >> 4) > 7 || ((d[0] << 8 | d[1]) % 31))\n err(6, 'invalid zlib data');\n if ((d[1] >> 5 & 1) == +!dict)\n err(6, 'invalid zlib data: ' + (d[1] & 32 ? 'need' : 'unexpected') + ' dictionary');\n return (d[1] >> 3 & 4) + 2;\n};\nfunction StrmOpt(opts, cb) {\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n return opts;\n}\n/**\n * Streaming DEFLATE compression\n */\nvar Deflate = /*#__PURE__*/ (function () {\n function Deflate(opts, cb) {\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n this.o = opts || {};\n this.s = { l: 0, i: 32768, w: 32768, z: 32768 };\n // Buffer length must always be 0 mod 32768 for index calculations to be correct when modifying head and prev\n // 98304 = 32768 (lookback) + 65536 (common chunk size)\n this.b = new u8(98304);\n if (this.o.dictionary) {\n var dict = this.o.dictionary.subarray(-32768);\n this.b.set(dict, 32768 - dict.length);\n this.s.i = 32768 - dict.length;\n }\n }\n Deflate.prototype.p = function (c, f) {\n this.ondata(dopt(c, this.o, 0, 0, this.s), f);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Deflate.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.s.l)\n err(4);\n var endLen = chunk.length + this.s.z;\n if (endLen > this.b.length) {\n if (endLen > 2 * this.b.length - 32768) {\n var newBuf = new u8(endLen & -32768);\n newBuf.set(this.b.subarray(0, this.s.z));\n this.b = newBuf;\n }\n var split = this.b.length - this.s.z;\n this.b.set(chunk.subarray(0, split), this.s.z);\n this.s.z = this.b.length;\n this.p(this.b, false);\n this.b.set(this.b.subarray(-32768));\n this.b.set(chunk.subarray(split), 32768);\n this.s.z = chunk.length - split + 32768;\n this.s.i = 32766, this.s.w = 32768;\n }\n else {\n this.b.set(chunk, this.s.z);\n this.s.z += chunk.length;\n }\n this.s.l = final & 1;\n if (this.s.z > this.s.w + 8191 || final) {\n this.p(this.b, final || false);\n this.s.w = this.s.i, this.s.i -= 2;\n }\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * deflated output for small inputs.\n */\n Deflate.prototype.flush = function () {\n if (!this.ondata)\n err(5);\n if (this.s.l)\n err(4);\n this.p(this.b, false);\n this.s.w = this.s.i, this.s.i -= 2;\n };\n return Deflate;\n}());\nexport { Deflate };\n/**\n * Asynchronous streaming DEFLATE compression\n */\nvar AsyncDeflate = /*#__PURE__*/ (function () {\n function AsyncDeflate(opts, cb) {\n astrmify([\n bDflt,\n function () { return [astrm, Deflate]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Deflate(ev.data);\n onmessage = astrm(strm);\n }, 6, 1);\n }\n return AsyncDeflate;\n}());\nexport { AsyncDeflate };\nexport function deflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n ], function (ev) { return pbf(deflateSync(ev.data[0], ev.data[1])); }, 0, cb);\n}\n/**\n * Compresses data with DEFLATE without any wrapper\n * @param data The data to compress\n * @param opts The compression options\n * @returns The deflated version of the data\n */\nexport function deflateSync(data, opts) {\n return dopt(data, opts || {}, 0, 0);\n}\n/**\n * Streaming DEFLATE decompression\n */\nvar Inflate = /*#__PURE__*/ (function () {\n function Inflate(opts, cb) {\n // no StrmOpt here to avoid adding to workerizer\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n var dict = opts && opts.dictionary && opts.dictionary.subarray(-32768);\n this.s = { i: 0, b: dict ? dict.length : 0 };\n this.o = new u8(32768);\n this.p = new u8(0);\n if (dict)\n this.o.set(dict);\n }\n Inflate.prototype.e = function (c) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n if (!this.p.length)\n this.p = c;\n else if (c.length) {\n var n = new u8(this.p.length + c.length);\n n.set(this.p), n.set(c, this.p.length), this.p = n;\n }\n };\n Inflate.prototype.c = function (final) {\n this.s.i = +(this.d = final || false);\n var bts = this.s.b;\n var dt = inflt(this.p, this.s, this.o);\n this.ondata(slc(dt, bts, this.s.b), this.d);\n this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length;\n this.p = slc(this.p, (this.s.p / 8) | 0), this.s.p &= 7;\n };\n /**\n * Pushes a chunk to be inflated\n * @param chunk The chunk to push\n * @param final Whether this is the final chunk\n */\n Inflate.prototype.push = function (chunk, final) {\n this.e(chunk), this.c(final);\n };\n return Inflate;\n}());\nexport { Inflate };\n/**\n * Asynchronous streaming DEFLATE decompression\n */\nvar AsyncInflate = /*#__PURE__*/ (function () {\n function AsyncInflate(opts, cb) {\n astrmify([\n bInflt,\n function () { return [astrm, Inflate]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Inflate(ev.data);\n onmessage = astrm(strm);\n }, 7, 0);\n }\n return AsyncInflate;\n}());\nexport { AsyncInflate };\nexport function inflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt\n ], function (ev) { return pbf(inflateSync(ev.data[0], gopt(ev.data[1]))); }, 1, cb);\n}\n/**\n * Expands DEFLATE data with no wrapper\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function inflateSync(data, opts) {\n return inflt(data, { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// before you yell at me for not just using extends, my reason is that TS inheritance is hard to workerize.\n/**\n * Streaming GZIP compression\n */\nvar Gzip = /*#__PURE__*/ (function () {\n function Gzip(opts, cb) {\n this.c = crc();\n this.l = 0;\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gzip.prototype.push = function (chunk, final) {\n this.c.p(chunk);\n this.l += chunk.length;\n Deflate.prototype.push.call(this, chunk, final);\n };\n Gzip.prototype.p = function (c, f) {\n var raw = dopt(c, this.o, this.v && gzhl(this.o), f && 8, this.s);\n if (this.v)\n gzh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 8, this.c.d()), wbytes(raw, raw.length - 4, this.l);\n this.ondata(raw, f);\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * GZIPped output for small inputs.\n */\n Gzip.prototype.flush = function () {\n Deflate.prototype.flush.call(this);\n };\n return Gzip;\n}());\nexport { Gzip };\n/**\n * Asynchronous streaming GZIP compression\n */\nvar AsyncGzip = /*#__PURE__*/ (function () {\n function AsyncGzip(opts, cb) {\n astrmify([\n bDflt,\n gze,\n function () { return [astrm, Deflate, Gzip]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Gzip(ev.data);\n onmessage = astrm(strm);\n }, 8, 1);\n }\n return AsyncGzip;\n}());\nexport { AsyncGzip };\nexport function gzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n gze,\n function () { return [gzipSync]; }\n ], function (ev) { return pbf(gzipSync(ev.data[0], ev.data[1])); }, 2, cb);\n}\n/**\n * Compresses data with GZIP\n * @param data The data to compress\n * @param opts The compression options\n * @returns The gzipped version of the data\n */\nexport function gzipSync(data, opts) {\n if (!opts)\n opts = {};\n var c = crc(), l = data.length;\n c.p(data);\n var d = dopt(data, opts, gzhl(opts), 8), s = d.length;\n return gzh(d, opts), wbytes(d, s - 8, c.d()), wbytes(d, s - 4, l), d;\n}\n/**\n * Streaming single or multi-member GZIP decompression\n */\nvar Gunzip = /*#__PURE__*/ (function () {\n function Gunzip(opts, cb) {\n this.v = 1;\n this.r = 0;\n Inflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GUNZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gunzip.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n this.r += chunk.length;\n if (this.v) {\n var p = this.p.subarray(this.v - 1);\n var s = p.length > 3 ? gzs(p) : 4;\n if (s > p.length) {\n if (!final)\n return;\n }\n else if (this.v > 1 && this.onmember) {\n this.onmember(this.r - p.length);\n }\n this.p = p.subarray(s), this.v = 0;\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n // process concatenated GZIP\n if (this.s.f && !this.s.l && !final) {\n this.v = shft(this.s.p) + 9;\n this.s = { i: 0 };\n this.o = new u8(0);\n this.push(new u8(0), final);\n }\n };\n return Gunzip;\n}());\nexport { Gunzip };\n/**\n * Asynchronous streaming single or multi-member GZIP decompression\n */\nvar AsyncGunzip = /*#__PURE__*/ (function () {\n function AsyncGunzip(opts, cb) {\n var _this = this;\n astrmify([\n bInflt,\n guze,\n function () { return [astrm, Inflate, Gunzip]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Gunzip(ev.data);\n strm.onmember = function (offset) { return postMessage(offset); };\n onmessage = astrm(strm);\n }, 9, 0, function (offset) { return _this.onmember && _this.onmember(offset); });\n }\n return AsyncGunzip;\n}());\nexport { AsyncGunzip };\nexport function gunzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n guze,\n function () { return [gunzipSync]; }\n ], function (ev) { return pbf(gunzipSync(ev.data[0], ev.data[1])); }, 3, cb);\n}\n/**\n * Expands GZIP data\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function gunzipSync(data, opts) {\n var st = gzs(data);\n if (st + 8 > data.length)\n err(6, 'invalid gzip data');\n return inflt(data.subarray(st, -8), { i: 2 }, opts && opts.out || new u8(gzl(data)), opts && opts.dictionary);\n}\n/**\n * Streaming Zlib compression\n */\nvar Zlib = /*#__PURE__*/ (function () {\n function Zlib(opts, cb) {\n this.c = adler();\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be zlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Zlib.prototype.push = function (chunk, final) {\n this.c.p(chunk);\n Deflate.prototype.push.call(this, chunk, final);\n };\n Zlib.prototype.p = function (c, f) {\n var raw = dopt(c, this.o, this.v && (this.o.dictionary ? 6 : 2), f && 4, this.s);\n if (this.v)\n zlh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 4, this.c.d());\n this.ondata(raw, f);\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * zlibbed output for small inputs.\n */\n Zlib.prototype.flush = function () {\n Deflate.prototype.flush.call(this);\n };\n return Zlib;\n}());\nexport { Zlib };\n/**\n * Asynchronous streaming Zlib compression\n */\nvar AsyncZlib = /*#__PURE__*/ (function () {\n function AsyncZlib(opts, cb) {\n astrmify([\n bDflt,\n zle,\n function () { return [astrm, Deflate, Zlib]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Zlib(ev.data);\n onmessage = astrm(strm);\n }, 10, 1);\n }\n return AsyncZlib;\n}());\nexport { AsyncZlib };\nexport function zlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n zle,\n function () { return [zlibSync]; }\n ], function (ev) { return pbf(zlibSync(ev.data[0], ev.data[1])); }, 4, cb);\n}\n/**\n * Compress data with Zlib\n * @param data The data to compress\n * @param opts The compression options\n * @returns The zlib-compressed version of the data\n */\nexport function zlibSync(data, opts) {\n if (!opts)\n opts = {};\n var a = adler();\n a.p(data);\n var d = dopt(data, opts, opts.dictionary ? 6 : 2, 4);\n return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d;\n}\n/**\n * Streaming Zlib decompression\n */\nvar Unzlib = /*#__PURE__*/ (function () {\n function Unzlib(opts, cb) {\n Inflate.call(this, opts, cb);\n this.v = opts && opts.dictionary ? 2 : 1;\n }\n /**\n * Pushes a chunk to be unzlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzlib.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n if (this.v) {\n if (this.p.length < 6 && !final)\n return;\n this.p = this.p.subarray(zls(this.p, this.v - 1)), this.v = 0;\n }\n if (final) {\n if (this.p.length < 4)\n err(6, 'invalid zlib data');\n this.p = this.p.subarray(0, -4);\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n };\n return Unzlib;\n}());\nexport { Unzlib };\n/**\n * Asynchronous streaming Zlib decompression\n */\nvar AsyncUnzlib = /*#__PURE__*/ (function () {\n function AsyncUnzlib(opts, cb) {\n astrmify([\n bInflt,\n zule,\n function () { return [astrm, Inflate, Unzlib]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Unzlib(ev.data);\n onmessage = astrm(strm);\n }, 11, 0);\n }\n return AsyncUnzlib;\n}());\nexport { AsyncUnzlib };\nexport function unzlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n zule,\n function () { return [unzlibSync]; }\n ], function (ev) { return pbf(unzlibSync(ev.data[0], gopt(ev.data[1]))); }, 5, cb);\n}\n/**\n * Expands Zlib data\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function unzlibSync(data, opts) {\n return inflt(data.subarray(zls(data, opts && opts.dictionary), -4), { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// Default algorithm for compression (used because having a known output size allows faster decompression)\nexport { gzip as compress, AsyncGzip as AsyncCompress };\nexport { gzipSync as compressSync, Gzip as Compress };\n/**\n * Streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar Decompress = /*#__PURE__*/ (function () {\n function Decompress(opts, cb) {\n this.o = StrmOpt.call(this, opts, cb) || {};\n this.G = Gunzip;\n this.I = Inflate;\n this.Z = Unzlib;\n }\n // init substream\n // overriden by AsyncDecompress\n Decompress.prototype.i = function () {\n var _this = this;\n this.s.ondata = function (dat, final) {\n _this.ondata(dat, final);\n };\n };\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Decompress.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (!this.s) {\n if (this.p && this.p.length) {\n var n = new u8(this.p.length + chunk.length);\n n.set(this.p), n.set(chunk, this.p.length);\n }\n else\n this.p = chunk;\n if (this.p.length > 2) {\n this.s = (this.p[0] == 31 && this.p[1] == 139 && this.p[2] == 8)\n ? new this.G(this.o)\n : ((this.p[0] & 15) != 8 || (this.p[0] >> 4) > 7 || ((this.p[0] << 8 | this.p[1]) % 31))\n ? new this.I(this.o)\n : new this.Z(this.o);\n this.i();\n this.s.push(this.p, final);\n this.p = null;\n }\n }\n else\n this.s.push(chunk, final);\n };\n return Decompress;\n}());\nexport { Decompress };\n/**\n * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar AsyncDecompress = /*#__PURE__*/ (function () {\n function AsyncDecompress(opts, cb) {\n Decompress.call(this, opts, cb);\n this.queuedSize = 0;\n this.G = AsyncGunzip;\n this.I = AsyncInflate;\n this.Z = AsyncUnzlib;\n }\n AsyncDecompress.prototype.i = function () {\n var _this = this;\n this.s.ondata = function (err, dat, final) {\n _this.ondata(err, dat, final);\n };\n this.s.ondrain = function (size) {\n _this.queuedSize -= size;\n if (_this.ondrain)\n _this.ondrain(size);\n };\n };\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncDecompress.prototype.push = function (chunk, final) {\n this.queuedSize += chunk.length;\n Decompress.prototype.push.call(this, chunk, final);\n };\n return AsyncDecompress;\n}());\nexport { AsyncDecompress };\nexport function decompress(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzip(data, opts, cb)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflate(data, opts, cb)\n : unzlib(data, opts, cb);\n}\n/**\n * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function decompressSync(data, opts) {\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzipSync(data, opts)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflateSync(data, opts)\n : unzlibSync(data, opts);\n}\n// flatten a directory structure\nvar fltn = function (d, p, t, o) {\n for (var k in d) {\n var val = d[k], n = p + k, op = o;\n if (Array.isArray(val))\n op = mrg(o, val[1]), val = val[0];\n if (val instanceof u8)\n t[n] = [val, op];\n else {\n t[n += '/'] = [new u8(0), op];\n fltn(val, n, t, o);\n }\n }\n};\n// text encoder\nvar te = typeof TextEncoder != 'undefined' && /*#__PURE__*/ new TextEncoder();\n// text decoder\nvar td = typeof TextDecoder != 'undefined' && /*#__PURE__*/ new TextDecoder();\n// text decoder stream\nvar tds = 0;\ntry {\n td.decode(et, { stream: true });\n tds = 1;\n}\ncatch (e) { }\n// decode UTF8\nvar dutf8 = function (d) {\n for (var r = '', i = 0;;) {\n var c = d[i++];\n var eb = (c > 127) + (c > 223) + (c > 239);\n if (i + eb > d.length)\n return { s: r, r: slc(d, i - 1) };\n if (!eb)\n r += String.fromCharCode(c);\n else if (eb == 3) {\n c = ((c & 15) << 18 | (d[i++] & 63) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63)) - 65536,\n r += String.fromCharCode(55296 | (c >> 10), 56320 | (c & 1023));\n }\n else if (eb & 1)\n r += String.fromCharCode((c & 31) << 6 | (d[i++] & 63));\n else\n r += String.fromCharCode((c & 15) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63));\n }\n};\n/**\n * Streaming UTF-8 decoding\n */\nvar DecodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is decoded\n */\n function DecodeUTF8(cb) {\n this.ondata = cb;\n if (tds)\n this.t = new TextDecoder();\n else\n this.p = et;\n }\n /**\n * Pushes a chunk to be decoded from UTF-8 binary\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n DecodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n final = !!final;\n if (this.t) {\n this.ondata(this.t.decode(chunk, { stream: true }), final);\n if (final) {\n if (this.t.decode().length)\n err(8);\n this.t = null;\n }\n return;\n }\n if (!this.p)\n err(4);\n var dat = new u8(this.p.length + chunk.length);\n dat.set(this.p);\n dat.set(chunk, this.p.length);\n var _a = dutf8(dat), s = _a.s, r = _a.r;\n if (final) {\n if (r.length)\n err(8);\n this.p = null;\n }\n else\n this.p = r;\n this.ondata(s, final);\n };\n return DecodeUTF8;\n}());\nexport { DecodeUTF8 };\n/**\n * Streaming UTF-8 encoding\n */\nvar EncodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is encoded\n */\n function EncodeUTF8(cb) {\n this.ondata = cb;\n }\n /**\n * Pushes a chunk to be encoded to UTF-8\n * @param chunk The string data to push\n * @param final Whether this is the last chunk\n */\n EncodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n this.ondata(strToU8(chunk), this.d = final || false);\n };\n return EncodeUTF8;\n}());\nexport { EncodeUTF8 };\n/**\n * Converts a string into a Uint8Array for use with compression/decompression methods\n * @param str The string to encode\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless decoding a binary string.\n * @returns The string encoded in UTF-8/Latin-1 binary\n */\nexport function strToU8(str, latin1) {\n if (latin1) {\n var ar_1 = new u8(str.length);\n for (var i = 0; i < str.length; ++i)\n ar_1[i] = str.charCodeAt(i);\n return ar_1;\n }\n if (te)\n return te.encode(str);\n var l = str.length;\n var ar = new u8(str.length + (str.length >> 1));\n var ai = 0;\n var w = function (v) { ar[ai++] = v; };\n for (var i = 0; i < l; ++i) {\n if (ai + 5 > ar.length) {\n var n = new u8(ai + 8 + ((l - i) << 1));\n n.set(ar);\n ar = n;\n }\n var c = str.charCodeAt(i);\n if (c < 128 || latin1)\n w(c);\n else if (c < 2048)\n w(192 | (c >> 6)), w(128 | (c & 63));\n else if (c > 55295 && c < 57344)\n c = 65536 + (c & 1023 << 10) | (str.charCodeAt(++i) & 1023),\n w(240 | (c >> 18)), w(128 | ((c >> 12) & 63)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n else\n w(224 | (c >> 12)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n }\n return slc(ar, 0, ai);\n}\n/**\n * Converts a Uint8Array to a string\n * @param dat The data to decode to string\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless encoding to binary string.\n * @returns The original UTF-8/Latin-1 string\n */\nexport function strFromU8(dat, latin1) {\n if (latin1) {\n var r = '';\n for (var i = 0; i < dat.length; i += 16384)\n r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384));\n return r;\n }\n else if (td) {\n return td.decode(dat);\n }\n else {\n var _a = dutf8(dat), s = _a.s, r = _a.r;\n if (r.length)\n err(8);\n return s;\n }\n}\n;\n// deflate bit flag\nvar dbf = function (l) { return l == 1 ? 3 : l < 6 ? 2 : l == 9 ? 1 : 0; };\n// skip local zip header\nvar slzh = function (d, b) { return b + 30 + b2(d, b + 26) + b2(d, b + 28); };\n// read zip header\nvar zh = function (d, b, z) {\n var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl, bs = b4(d, b + 20);\n var _a = z && bs == 4294967295 ? z64e(d, es) : [bs, b4(d, b + 24), b4(d, b + 42)], sc = _a[0], su = _a[1], off = _a[2];\n return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off];\n};\n// read zip64 extra field\nvar z64e = function (d, b) {\n for (; b2(d, b) != 1; b += 4 + b2(d, b + 2))\n ;\n return [b8(d, b + 12), b8(d, b + 4), b8(d, b + 20)];\n};\n// extra field length\nvar exfl = function (ex) {\n var le = 0;\n if (ex) {\n for (var k in ex) {\n var l = ex[k].length;\n if (l > 65535)\n err(9);\n le += l + 4;\n }\n }\n return le;\n};\n// write zip header\nvar wzh = function (d, b, f, fn, u, c, ce, co) {\n var fl = fn.length, ex = f.extra, col = co && co.length;\n var exl = exfl(ex);\n wbytes(d, b, ce != null ? 0x2014B50 : 0x4034B50), b += 4;\n if (ce != null)\n d[b++] = 20, d[b++] = f.os;\n d[b] = 20, b += 2; // spec compliance? what's that?\n d[b++] = (f.flag << 1) | (c < 0 && 8), d[b++] = u && 8;\n d[b++] = f.compression & 255, d[b++] = f.compression >> 8;\n var dt = new Date(f.mtime == null ? Date.now() : f.mtime), y = dt.getFullYear() - 1980;\n if (y < 0 || y > 119)\n err(10);\n wbytes(d, b, (y << 25) | ((dt.getMonth() + 1) << 21) | (dt.getDate() << 16) | (dt.getHours() << 11) | (dt.getMinutes() << 5) | (dt.getSeconds() >> 1)), b += 4;\n if (c != -1) {\n wbytes(d, b, f.crc);\n wbytes(d, b + 4, c < 0 ? -c - 2 : c);\n wbytes(d, b + 8, f.size);\n }\n wbytes(d, b + 12, fl);\n wbytes(d, b + 14, exl), b += 16;\n if (ce != null) {\n wbytes(d, b, col);\n wbytes(d, b + 6, f.attrs);\n wbytes(d, b + 10, ce), b += 14;\n }\n d.set(fn, b);\n b += fl;\n if (exl) {\n for (var k in ex) {\n var exf = ex[k], l = exf.length;\n wbytes(d, b, +k);\n wbytes(d, b + 2, l);\n d.set(exf, b + 4), b += 4 + l;\n }\n }\n if (col)\n d.set(co, b), b += col;\n return b;\n};\n// write zip footer (end of central directory)\nvar wzf = function (o, b, c, d, e) {\n wbytes(o, b, 0x6054B50); // skip disk\n wbytes(o, b + 8, c);\n wbytes(o, b + 10, c);\n wbytes(o, b + 12, d);\n wbytes(o, b + 16, e);\n};\n/**\n * A pass-through stream to keep data uncompressed in a ZIP archive.\n */\nvar ZipPassThrough = /*#__PURE__*/ (function () {\n /**\n * Creates a pass-through stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n */\n function ZipPassThrough(filename) {\n this.filename = filename;\n this.c = crc();\n this.size = 0;\n this.compression = 0;\n }\n /**\n * Processes a chunk and pushes to the output stream. You can override this\n * method in a subclass for custom behavior, but by default this passes\n * the data through. You must call this.ondata(err, chunk, final) at some\n * point in this method.\n * @param chunk The chunk to process\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.process = function (chunk, final) {\n this.ondata(null, chunk, final);\n };\n /**\n * Pushes a chunk to be added. If you are subclassing this with a custom\n * compression algorithm, note that you must push data from the source\n * file only, pre-compression.\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n this.c.p(chunk);\n this.size += chunk.length;\n if (final)\n this.crc = this.c.d();\n this.process(chunk, final || false);\n };\n return ZipPassThrough;\n}());\nexport { ZipPassThrough };\n// I don't extend because TypeScript extension adds 1kB of runtime bloat\n/**\n * Streaming DEFLATE compression for ZIP archives. Prefer using AsyncZipDeflate\n * for better performance\n */\nvar ZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function ZipDeflate(filename, opts) {\n var _this = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new Deflate(opts, function (dat, final) {\n _this.ondata(null, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n }\n ZipDeflate.prototype.process = function (chunk, final) {\n try {\n this.d.push(chunk, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return ZipDeflate;\n}());\nexport { ZipDeflate };\n/**\n * Asynchronous streaming DEFLATE compression for ZIP archives\n */\nvar AsyncZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function AsyncZipDeflate(filename, opts) {\n var _this = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new AsyncDeflate(opts, function (err, dat, final) {\n _this.ondata(err, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n this.terminate = this.d.terminate;\n }\n AsyncZipDeflate.prototype.process = function (chunk, final) {\n this.d.push(chunk, final);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return AsyncZipDeflate;\n}());\nexport { AsyncZipDeflate };\n// TODO: Better tree shaking\n/**\n * A zippable archive to which files can incrementally be added\n */\nvar Zip = /*#__PURE__*/ (function () {\n /**\n * Creates an empty ZIP archive to which files can be added\n * @param cb The callback to call whenever data for the generated ZIP archive\n * is available\n */\n function Zip(cb) {\n this.ondata = cb;\n this.u = [];\n this.d = 1;\n }\n /**\n * Adds a file to the ZIP archive\n * @param file The file stream to add\n */\n Zip.prototype.add = function (file) {\n var _this = this;\n if (!this.ondata)\n err(5);\n // finishing or finished\n if (this.d & 2)\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, false);\n else {\n var f = strToU8(file.filename), fl_1 = f.length;\n var com = file.comment, o = com && strToU8(com);\n var u = fl_1 != file.filename.length || (o && (com.length != o.length));\n var hl_1 = fl_1 + exfl(file.extra) + 30;\n if (fl_1 > 65535)\n this.ondata(err(11, 0, 1), null, false);\n var header = new u8(hl_1);\n wzh(header, 0, file, f, u, -1);\n var chks_1 = [header];\n var pAll_1 = function () {\n for (var _i = 0, chks_2 = chks_1; _i < chks_2.length; _i++) {\n var chk = chks_2[_i];\n _this.ondata(null, chk, false);\n }\n chks_1 = [];\n };\n var tr_1 = this.d;\n this.d = 0;\n var ind_1 = this.u.length;\n var uf_1 = mrg(file, {\n f: f,\n u: u,\n o: o,\n t: function () {\n if (file.terminate)\n file.terminate();\n },\n r: function () {\n pAll_1();\n if (tr_1) {\n var nxt = _this.u[ind_1 + 1];\n if (nxt)\n nxt.r();\n else\n _this.d = 1;\n }\n tr_1 = 1;\n }\n });\n var cl_1 = 0;\n file.ondata = function (err, dat, final) {\n if (err) {\n _this.ondata(err, dat, final);\n _this.terminate();\n }\n else {\n cl_1 += dat.length;\n chks_1.push(dat);\n if (final) {\n var dd = new u8(16);\n wbytes(dd, 0, 0x8074B50);\n wbytes(dd, 4, file.crc);\n wbytes(dd, 8, cl_1);\n wbytes(dd, 12, file.size);\n chks_1.push(dd);\n uf_1.c = cl_1, uf_1.b = hl_1 + cl_1 + 16, uf_1.crc = file.crc, uf_1.size = file.size;\n if (tr_1)\n uf_1.r();\n tr_1 = 1;\n }\n else if (tr_1)\n pAll_1();\n }\n };\n this.u.push(uf_1);\n }\n };\n /**\n * Ends the process of adding files and prepares to emit the final chunks.\n * This *must* be called after adding all desired files for the resulting\n * ZIP file to work properly.\n */\n Zip.prototype.end = function () {\n var _this = this;\n if (this.d & 2) {\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, true);\n return;\n }\n if (this.d)\n this.e();\n else\n this.u.push({\n r: function () {\n if (!(_this.d & 1))\n return;\n _this.u.splice(-1, 1);\n _this.e();\n },\n t: function () { }\n });\n this.d = 3;\n };\n Zip.prototype.e = function () {\n var bt = 0, l = 0, tl = 0;\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n tl += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0);\n }\n var out = new u8(tl + 22);\n for (var _b = 0, _c = this.u; _b < _c.length; _b++) {\n var f = _c[_b];\n wzh(out, bt, f, f.f, f.u, -f.c - 2, l, f.o);\n bt += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0), l += f.b;\n }\n wzf(out, bt, this.u.length, tl, l);\n this.ondata(null, out, true);\n this.d = 2;\n };\n /**\n * A method to terminate any internal workers used by the stream. Subsequent\n * calls to add() will fail.\n */\n Zip.prototype.terminate = function () {\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n f.t();\n }\n this.d = 2;\n };\n return Zip;\n}());\nexport { Zip };\nexport function zip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var r = {};\n fltn(data, '', r, opts);\n var k = Object.keys(r);\n var lft = k.length, o = 0, tot = 0;\n var slft = lft, files = new Array(lft);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var cbf = function () {\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n tot = 0;\n for (var i = 0; i < slft; ++i) {\n var f = files[i];\n try {\n var l = f.c.length;\n wzh(out, tot, f, f.f, f.u, l);\n var badd = 30 + f.f.length + exfl(f.extra);\n var loc = tot + badd;\n out.set(f.c, loc);\n wzh(out, o, f, f.f, f.u, l, tot, f.m), o += 16 + badd + (f.m ? f.m.length : 0), tot = loc + l;\n }\n catch (e) {\n return cbd(e, null);\n }\n }\n wzf(out, o, files.length, cdl, oe);\n cbd(null, out);\n };\n if (!lft)\n cbf();\n var _loop_1 = function (i) {\n var fn = k[i];\n var _a = r[fn], file = _a[0], p = _a[1];\n var c = crc(), size = file.length;\n c.p(file);\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n var compression = p.level == 0 ? 0 : 8;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n var l = d.length;\n files[i] = mrg(p, {\n size: size,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n compression: compression\n });\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n if (!--lft)\n cbf();\n }\n };\n if (s > 65535)\n cbl(err(11, 0, 1), null);\n if (!compression)\n cbl(null, file);\n else if (size < 160000) {\n try {\n cbl(null, deflateSync(file, p));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(deflate(file, p, cbl));\n };\n // Cannot use lft because it can decrease\n for (var i = 0; i < slft; ++i) {\n _loop_1(i);\n }\n return tAll;\n}\n/**\n * Synchronously creates a ZIP file. Prefer using `zip` for better performance\n * with more than one file.\n * @param data The directory structure for the ZIP archive\n * @param opts The main options, merged with per-file options\n * @returns The generated ZIP archive\n */\nexport function zipSync(data, opts) {\n if (!opts)\n opts = {};\n var r = {};\n var files = [];\n fltn(data, '', r, opts);\n var o = 0;\n var tot = 0;\n for (var fn in r) {\n var _a = r[fn], file = _a[0], p = _a[1];\n var compression = p.level == 0 ? 0 : 8;\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n if (s > 65535)\n err(11);\n var d = compression ? deflateSync(file, p) : file, l = d.length;\n var c = crc();\n c.p(file);\n files.push(mrg(p, {\n size: file.length,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n o: o,\n compression: compression\n }));\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n }\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n for (var i = 0; i < files.length; ++i) {\n var f = files[i];\n wzh(out, f.o, f, f.f, f.u, f.c.length);\n var badd = 30 + f.f.length + exfl(f.extra);\n out.set(f.c, f.o + badd);\n wzh(out, o, f, f.f, f.u, f.c.length, f.o, f.m), o += 16 + badd + (f.m ? f.m.length : 0);\n }\n wzf(out, o, files.length, cdl, oe);\n return out;\n}\n/**\n * Streaming pass-through decompression for ZIP archives\n */\nvar UnzipPassThrough = /*#__PURE__*/ (function () {\n function UnzipPassThrough() {\n }\n UnzipPassThrough.prototype.push = function (data, final) {\n this.ondata(null, data, final);\n };\n UnzipPassThrough.compression = 0;\n return UnzipPassThrough;\n}());\nexport { UnzipPassThrough };\n/**\n * Streaming DEFLATE decompression for ZIP archives. Prefer AsyncZipInflate for\n * better performance.\n */\nvar UnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function UnzipInflate() {\n var _this = this;\n this.i = new Inflate(function (dat, final) {\n _this.ondata(null, dat, final);\n });\n }\n UnzipInflate.prototype.push = function (data, final) {\n try {\n this.i.push(data, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n UnzipInflate.compression = 8;\n return UnzipInflate;\n}());\nexport { UnzipInflate };\n/**\n * Asynchronous streaming DEFLATE decompression for ZIP archives\n */\nvar AsyncUnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function AsyncUnzipInflate(_, sz) {\n var _this = this;\n if (sz < 320000) {\n this.i = new Inflate(function (dat, final) {\n _this.ondata(null, dat, final);\n });\n }\n else {\n this.i = new AsyncInflate(function (err, dat, final) {\n _this.ondata(err, dat, final);\n });\n this.terminate = this.i.terminate;\n }\n }\n AsyncUnzipInflate.prototype.push = function (data, final) {\n if (this.i.terminate)\n data = slc(data, 0);\n this.i.push(data, final);\n };\n AsyncUnzipInflate.compression = 8;\n return AsyncUnzipInflate;\n}());\nexport { AsyncUnzipInflate };\n/**\n * A ZIP archive decompression stream that emits files as they are discovered\n */\nvar Unzip = /*#__PURE__*/ (function () {\n /**\n * Creates a ZIP decompression stream\n * @param cb The callback to call whenever a file in the ZIP archive is found\n */\n function Unzip(cb) {\n this.onfile = cb;\n this.k = [];\n this.o = {\n 0: UnzipPassThrough\n };\n this.p = et;\n }\n /**\n * Pushes a chunk to be unzipped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzip.prototype.push = function (chunk, final) {\n var _this = this;\n if (!this.onfile)\n err(5);\n if (!this.p)\n err(4);\n if (this.c > 0) {\n var len = Math.min(this.c, chunk.length);\n var toAdd = chunk.subarray(0, len);\n this.c -= len;\n if (this.d)\n this.d.push(toAdd, !this.c);\n else\n this.k[0].push(toAdd);\n chunk = chunk.subarray(len);\n if (chunk.length)\n return this.push(chunk, final);\n }\n else {\n var f = 0, i = 0, is = void 0, buf = void 0;\n if (!this.p.length)\n buf = chunk;\n else if (!chunk.length)\n buf = this.p;\n else {\n buf = new u8(this.p.length + chunk.length);\n buf.set(this.p), buf.set(chunk, this.p.length);\n }\n var l = buf.length, oc = this.c, add = oc && this.d;\n var _loop_2 = function () {\n var _a;\n var sig = b4(buf, i);\n if (sig == 0x4034B50) {\n f = 1, is = i;\n this_1.d = null;\n this_1.c = 0;\n var bf = b2(buf, i + 6), cmp_1 = b2(buf, i + 8), u = bf & 2048, dd = bf & 8, fnl = b2(buf, i + 26), es = b2(buf, i + 28);\n if (l > i + 30 + fnl + es) {\n var chks_3 = [];\n this_1.k.unshift(chks_3);\n f = 2;\n var sc_1 = b4(buf, i + 18), su_1 = b4(buf, i + 22);\n var fn_1 = strFromU8(buf.subarray(i + 30, i += 30 + fnl), !u);\n if (sc_1 == 4294967295) {\n _a = dd ? [-2] : z64e(buf, i), sc_1 = _a[0], su_1 = _a[1];\n }\n else if (dd)\n sc_1 = -1;\n i += es;\n this_1.c = sc_1;\n var d_1;\n var file_1 = {\n name: fn_1,\n compression: cmp_1,\n start: function () {\n if (!file_1.ondata)\n err(5);\n if (!sc_1)\n file_1.ondata(null, et, true);\n else {\n var ctr = _this.o[cmp_1];\n if (!ctr)\n file_1.ondata(err(14, 'unknown compression type ' + cmp_1, 1), null, false);\n d_1 = sc_1 < 0 ? new ctr(fn_1) : new ctr(fn_1, sc_1, su_1);\n d_1.ondata = function (err, dat, final) { file_1.ondata(err, dat, final); };\n for (var _i = 0, chks_4 = chks_3; _i < chks_4.length; _i++) {\n var dat = chks_4[_i];\n d_1.push(dat, false);\n }\n if (_this.k[0] == chks_3 && _this.c)\n _this.d = d_1;\n else\n d_1.push(et, true);\n }\n },\n terminate: function () {\n if (d_1 && d_1.terminate)\n d_1.terminate();\n }\n };\n if (sc_1 >= 0)\n file_1.size = sc_1, file_1.originalSize = su_1;\n this_1.onfile(file_1);\n }\n return \"break\";\n }\n else if (oc) {\n if (sig == 0x8074B50) {\n is = i += 12 + (oc == -2 && 8), f = 3, this_1.c = 0;\n return \"break\";\n }\n else if (sig == 0x2014B50) {\n is = i -= 4, f = 3, this_1.c = 0;\n return \"break\";\n }\n }\n };\n var this_1 = this;\n for (; i < l - 4; ++i) {\n var state_1 = _loop_2();\n if (state_1 === \"break\")\n break;\n }\n this.p = et;\n if (oc < 0) {\n var dat = f ? buf.subarray(0, is - 12 - (oc == -2 && 8) - (b4(buf, is - 16) == 0x8074B50 && 4)) : buf.subarray(0, i);\n if (add)\n add.push(dat, !!f);\n else\n this.k[+(f == 2)].push(dat);\n }\n if (f & 2)\n return this.push(buf.subarray(i), final);\n this.p = buf.subarray(i);\n }\n if (final) {\n if (this.c)\n err(13);\n this.p = null;\n }\n };\n /**\n * Registers a decoder with the stream, allowing for files compressed with\n * the compression type provided to be expanded correctly\n * @param decoder The decoder constructor\n */\n Unzip.prototype.register = function (decoder) {\n this.o[decoder.compression] = decoder;\n };\n return Unzip;\n}());\nexport { Unzip };\nvar mt = typeof queueMicrotask == 'function' ? queueMicrotask : typeof setTimeout == 'function' ? setTimeout : function (fn) { fn(); };\nexport function unzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var files = {};\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558) {\n cbd(err(13, 0, 1), null);\n return tAll;\n }\n }\n ;\n var lft = b2(data, e + 8);\n if (lft) {\n var c = lft;\n var o = b4(data, e + 16);\n var z = o == 4294967295 || c == 65535;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 0x6064B50;\n if (z) {\n c = lft = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n var _loop_3 = function (i) {\n var _a = zh(data, o, z), c_1 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n if (d)\n files[fn] = d;\n if (!--lft)\n cbd(null, files);\n }\n };\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_1\n })) {\n if (!c_1)\n cbl(null, slc(data, b, b + sc));\n else if (c_1 == 8) {\n var infl = data.subarray(b, b + sc);\n // Synchronously decompress under 512KB, or barely-compressed data\n if (su < 524288 || sc > 0.8 * su) {\n try {\n cbl(null, inflateSync(infl, { out: new u8(su) }));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(inflate(infl, { size: su }, cbl));\n }\n else\n cbl(err(14, 'unknown compression type ' + c_1, 1), null);\n }\n else\n cbl(null, null);\n };\n for (var i = 0; i < c; ++i) {\n _loop_3(i);\n }\n }\n else\n cbd(null, {});\n return tAll;\n}\n/**\n * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better\n * performance with more than one file.\n * @param data The raw compressed ZIP file\n * @param opts The ZIP extraction options\n * @returns The decompressed files\n */\nexport function unzipSync(data, opts) {\n var files = {};\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558)\n err(13);\n }\n ;\n var c = b2(data, e + 8);\n if (!c)\n return {};\n var o = b4(data, e + 16);\n var z = o == 4294967295 || c == 65535;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 0x6064B50;\n if (z) {\n c = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n for (var i = 0; i < c; ++i) {\n var _a = zh(data, o, z), c_2 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_2\n })) {\n if (!c_2)\n files[fn] = slc(data, b, b + sc);\n else if (c_2 == 8)\n files[fn] = inflateSync(data.subarray(b, b + sc), { out: new u8(su) });\n else\n err(14, 'unknown compression type ' + c_2);\n }\n }\n return files;\n}\n","import { AsyncDeflate, Deflate, AsyncGzip, AsyncZlib, AsyncInflate, AsyncGunzip, AsyncUnzlib, Gzip, Zlib, Gunzip, Unzlib, Inflate } from 'fflate';\nconst wrapSync = (Stream) => {\n class AsyncWrappedStream {\n constructor() {\n this.i = new Stream();\n this.i.ondata = (data, final) => {\n this.ondata(null, data, final);\n };\n }\n push(data, final) {\n try {\n this.queuedSize += data.length;\n this.i.push(data, final);\n this.queuedSize -= data.length;\n if (this.ondrain)\n this.ondrain(data.length);\n }\n catch (err) {\n this.ondata(err, null, final || false);\n }\n }\n }\n return AsyncWrappedStream;\n};\n// Safari fix\nlet hasWorker = 1;\ntry {\n const test = new AsyncDeflate();\n test.terminate();\n}\ncatch (err) {\n hasWorker = 0;\n}\nconst compressors = hasWorker ? {\n 'gzip': AsyncGzip,\n 'deflate': AsyncZlib,\n 'deflate-raw': AsyncDeflate\n} : {\n 'gzip': wrapSync(Gzip),\n 'deflate': wrapSync(Zlib),\n 'deflate-raw': wrapSync(Deflate)\n};\nconst decompressors = hasWorker ? {\n 'gzip': AsyncGunzip,\n 'deflate': AsyncUnzlib,\n 'deflate-raw': AsyncInflate\n} : {\n 'gzip': wrapSync(Gunzip),\n 'deflate': wrapSync(Unzlib),\n 'deflate-raw': wrapSync(Inflate)\n};\nconst makeMulti = (TransformStreamBase, processors, name) => {\n class BaseCompressionStream extends TransformStreamBase {\n constructor(format) {\n if (!arguments.length) {\n throw new TypeError(`Failed to construct '${name}': 1 argument required, but only 0 present.`);\n }\n const Processor = processors[format];\n if (!Processor) {\n throw new TypeError(`Failed to construct '${name}': Unsupported compression format: '${format}'`);\n }\n let compressor = new Processor();\n let endCb;\n super({\n start: controller => {\n compressor.ondata = (err, dat, final) => {\n if (err)\n controller.error(err);\n else if (dat) {\n controller.enqueue(dat);\n if (final) {\n if (endCb)\n endCb();\n else\n controller.terminate();\n }\n }\n };\n },\n transform: chunk => {\n if (chunk instanceof ArrayBuffer)\n chunk = new Uint8Array(chunk);\n else if (ArrayBuffer.isView(chunk)) {\n chunk = new Uint8Array(chunk.buffer, chunk.byteOffset, chunk.byteLength);\n }\n else {\n throw new TypeError(\"The provided value is not of type '(ArrayBuffer or ArrayBufferView)'\");\n }\n compressor.push(chunk);\n // use fflate internal buffering to keep worker message channel fed\n if (compressor.queuedSize >= 32768) {\n return new Promise(resolve => {\n compressor.ondrain = () => {\n if (compressor.queuedSize < 32768)\n resolve();\n };\n });\n }\n },\n flush: () => new Promise(resolve => {\n endCb = resolve;\n compressor.push(new Uint8Array(0), true);\n })\n }, {\n size: chunk => chunk.byteLength | 0,\n highWaterMark: 65536\n }, {\n size: chunk => chunk.byteLength | 0,\n highWaterMark: 65536\n });\n }\n }\n return BaseCompressionStream;\n};\nexport function makeCompressionStream(TransformStreamBase) {\n return makeMulti(TransformStreamBase, compressors, 'CompressionStream');\n}\nexport function makeDecompressionStream(TransformStreamBase) {\n return makeMulti(TransformStreamBase, decompressors, 'DecompressionStream');\n}\n","import { makeCompressionStream, makeDecompressionStream } from './ponyfill.mjs';\nconst globals = typeof globalThis == 'undefined'\n ? typeof self == 'undefined'\n ? typeof global == 'undefined'\n ? {}\n : global\n : self\n : globalThis;\nif (typeof globals.CompressionStream == 'undefined') {\n globals.CompressionStream = makeCompressionStream(TransformStream);\n}\nif (typeof globals.DecompressionStream == 'undefined') {\n globals.DecompressionStream = makeDecompressionStream(TransformStream);\n}\n","import { HttpClient } from '@shared/infrastructure/http/HttpClient';\nimport { FlamebearerProfile } from '@shared/types/FlamebearerProfile';\n\ntype UploadResponse = {\n key: string;\n url: string;\n subProfiles: any[]; // TODO: define them, what are they?\n};\n\nclass FlamegraphDotComApiClient extends HttpClient {\n constructor() {\n super('https://flamegraph.com/api', {\n 'content-type': 'application/json',\n });\n }\n\n async upload(name: string, profile: FlamebearerProfile): Promise {\n const response = await this.fetch('/upload/v1', {\n method: 'POST',\n body: JSON.stringify({\n name,\n profile: btoa(JSON.stringify(profile)),\n fileTypeData: {\n units: profile.metadata.units,\n spyName: profile.metadata.spyName,\n },\n type: 'json',\n }),\n });\n\n const json = await response.json();\n\n return json;\n }\n}\n\nexport const flamegraphDotComApiClient = new FlamegraphDotComApiClient();\n","export enum CompareTarget {\n BASELINE = 'baseline',\n COMPARISON = 'comparison',\n}\n","import { dateTimeParse, TimeRange } from '@grafana/data';\n\nimport { CompareTarget } from '../../../../../pages/ProfilesExplorerView/components/SceneExploreDiffFlameGraph/domain/types';\n\ntype DateParts = {\n year: string;\n month: string;\n day: string;\n hour: string;\n minute: string;\n second: string;\n};\n\nconst DATETIME_FORMATTER = new Intl.DateTimeFormat('fr-CA', {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour12: false,\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n});\n\nfunction format(date: Date): string {\n const parts = DATETIME_FORMATTER.formatToParts(date).reduce((acc, { type, value }) => {\n acc[type as keyof DateParts] = value;\n return acc;\n }, {} as DateParts);\n\n return `${parts.year}-${parts.month}-${parts.day}_${parts.hour}${parts.minute}`;\n}\n\nfunction dateForExportFilename(timeRange: TimeRange) {\n const from = new Date(Math.round(timeRange.from.unix() * 1000));\n const to = new Date(Math.round(timeRange.to.unix() * 1000));\n\n return `${format(from)}-to-${format(to)}`;\n}\n\nfunction getTimeRange(target: CompareTarget) {\n const [fromKey, toKey] = target === CompareTarget.BASELINE ? ['diffFrom', 'diffTo'] : ['diffFrom-2', 'diffTo-2'];\n\n const searchParams = new URLSearchParams(window.location.search);\n const from = searchParams.get(fromKey) as string;\n const to = searchParams.get(toKey) as string;\n\n return {\n raw: { from, to },\n from: dateTimeParse(from),\n to: dateTimeParse(to),\n };\n}\n\nexport function getExportFilename(appName?: string) {\n const timeRanges = [\n 'baseline',\n dateForExportFilename(getTimeRange(CompareTarget.BASELINE)),\n 'comparison',\n dateForExportFilename(getTimeRange(CompareTarget.COMPARISON)),\n ];\n\n return appName ? [appName, ...timeRanges].join('_') : ['flamegraph', ...timeRanges].join('_');\n}\n","import { displayError } from '@shared/domain/displayStatus';\nimport { reportInteraction } from '@shared/domain/reportInteraction';\nimport 'compression-streams-polyfill';\nimport saveAs from 'file-saver';\n\nimport { ExportDataProps } from '../ExportData';\nimport { flamegraphDotComApiClient } from '../infrastructure/flamegraphDotComApiClient';\nimport { getExportFilename } from './getExportFilename';\n\n/* Note: no pprof export, as the underlying API only accepts a single query (see PprofApiClient) */\nexport function useExportMenu({ profile, enableFlameGraphDotComExport }: ExportDataProps) {\n const downloadPng = () => {\n reportInteraction('g_pyroscope_app_export_profile', { format: 'png' });\n\n const customExportName = getExportFilename(profile.metadata.appName);\n const filename = `${customExportName}.png`;\n\n // TODO use ref, this won't work for comparison side by side (??!)\n const canvasElement = document.querySelector('canvas[data-testid=\"flameGraph\"]') as HTMLCanvasElement;\n\n canvasElement.toBlob((blob) => {\n if (!blob) {\n const error = new Error('No Blob, the image cannot be created.');\n displayError(error, ['Failed to export to png!', error.message]);\n return;\n }\n\n saveAs(blob, filename);\n }, 'image/png');\n };\n\n const downloadJson = () => {\n reportInteraction('g_pyroscope_app_export_profile', { format: 'json' });\n\n const customExportName = getExportFilename(profile.metadata.appName);\n const filename = `${customExportName}.json`;\n const dataStr = `data:text/json;charset=utf-8,${encodeURIComponent(JSON.stringify(profile))}`;\n\n try {\n saveAs(dataStr, filename);\n } catch (error) {\n displayError(error as Error, ['Failed to export to JSON!', (error as Error).message]);\n return;\n }\n };\n\n const uploadToFlamegraphDotCom = async () => {\n reportInteraction('g_pyroscope_app_export_profile', { format: 'flamegraph.com' });\n\n const customExportName = getExportFilename(profile.metadata.appName);\n\n let response;\n\n try {\n response = await flamegraphDotComApiClient.upload(customExportName, profile);\n } catch (error) {\n displayError(error as Error, ['Failed to export to flamegraph.com!', (error as Error).message]);\n return;\n }\n\n const dlLink = document.createElement('a');\n dlLink.target = '_blank';\n dlLink.href = response.url;\n document.body.appendChild(dlLink);\n dlLink.click();\n document.body.removeChild(dlLink);\n };\n\n return {\n data: {\n shouldDisplayFlamegraphDotCom: Boolean(enableFlameGraphDotComExport),\n },\n actions: {\n downloadPng,\n downloadJson,\n uploadToFlamegraphDotCom,\n },\n };\n}\n","import { Menu } from '@grafana/ui';\nimport React from 'react';\n\nimport { useExportMenu } from './domain/useExportMenu';\nimport { ExportDataProps } from './ExportData';\n\nexport function ExportMenu(props: ExportDataProps) {\n const { actions } = useExportMenu(props);\n\n return (\n \n \n \n \n );\n}\n","import { Button, Dropdown } from '@grafana/ui';\nimport { FlamebearerProfile } from '@shared/types/FlamebearerProfile';\nimport React, { memo } from 'react';\n\nimport { ExportMenu } from './ExportMenu';\n\nexport type ExportDataProps = {\n profile: FlamebearerProfile;\n enableFlameGraphDotComExport?: boolean;\n};\n\nfunction ExportDataComponent(props: ExportDataProps) {\n const { profile, enableFlameGraphDotComExport } = props;\n\n return (\n }>\n \n \n );\n}\n\nexport const ExportData = memo(ExportDataComponent);\n","import { createDataFrame, DataFrameDTO, FieldType } from '@grafana/data';\n\n// eslint-disable-next-line sonarjs/cognitive-complexity\nfunction getNodes(level: number[], names: string[], diff: boolean) {\n const nodes = [];\n const itemOffset = diff ? 7 : 4;\n\n for (let i = 0; i < level.length; i += itemOffset) {\n nodes.push({\n level: 0,\n label: diff ? names[level[i + 6]] : names[level[i + 3]],\n offset: level[i],\n val: level[i + 1],\n self: level[i + 2],\n selfRight: diff ? level[i + 5] : 0,\n valRight: diff ? level[i + 4] : 0,\n valTotal: diff ? level[i + 1] + level[i + 4] : level[i + 1],\n offsetRight: diff ? level[i + 3] : 0,\n offsetTotal: diff ? level[i] + level[i + 3] : level[i],\n children: [],\n });\n }\n\n return nodes;\n}\n\n// eslint-disable-next-line sonarjs/cognitive-complexity\nexport function flamebearerToDataFrameDTO(levels: number[][], names: string[], unit: string, diff: boolean) {\n if (!levels.length) {\n return;\n }\n\n const nodeLevels: any[][] = [];\n\n for (let i = 0; i < levels.length; i++) {\n nodeLevels[i] = [];\n\n for (const node of getNodes(levels[i], names, diff)) {\n node.level = i;\n nodeLevels[i].push(node);\n\n if (i > 0) {\n const prevNodesInLevel = nodeLevels[i].slice(0, -1);\n const currentNodeStart =\n prevNodesInLevel.reduce((acc, n) => n.offsetTotal + n.valTotal + acc, 0) + node.offsetTotal;\n\n const prevLevel = nodeLevels[i - 1];\n let prevLevelOffset = 0;\n\n for (const prevLevelNode of prevLevel) {\n const parentNodeStart = prevLevelOffset + prevLevelNode.offsetTotal;\n const parentNodeEnd = parentNodeStart + prevLevelNode.valTotal;\n\n if (parentNodeStart <= currentNodeStart && parentNodeEnd > currentNodeStart) {\n prevLevelNode.children.push(node);\n break;\n } else {\n prevLevelOffset += prevLevelNode.offsetTotal + prevLevelNode.valTotal;\n }\n }\n }\n }\n }\n\n const root = nodeLevels[0][0];\n const stack = [root];\n\n const labelValues = [];\n const levelValues = [];\n const selfValues = [];\n const valueValues = [];\n const selfRightValues = [];\n const valueRightValues = [];\n\n while (stack.length) {\n const node = stack.shift();\n labelValues.push(node.label);\n levelValues.push(node.level);\n selfValues.push(node.self);\n valueValues.push(node.val);\n selfRightValues.push(node.selfRight);\n valueRightValues.push(node.valRight);\n stack.unshift(...node.children);\n }\n\n let valueUnit = 'short';\n\n // See format.ts#getFormatter. We have to use Grafana unit string here though.\n switch (unit) {\n case 'samples':\n case 'trace_samples':\n case 'lock_nanoseconds':\n case 'nanoseconds':\n valueUnit = 'ns';\n break;\n case 'bytes':\n valueUnit = 'bytes';\n break;\n }\n\n const fields = [\n { name: 'level', values: levelValues },\n { name: 'label', values: labelValues, type: FieldType.string },\n { name: 'self', values: selfValues, config: { unit: valueUnit } },\n { name: 'value', values: valueValues, config: { unit: valueUnit } },\n ];\n\n if (diff) {\n fields.push(\n ...[\n {\n name: 'selfRight',\n values: selfRightValues,\n config: { unit: valueUnit },\n },\n {\n name: 'valueRight',\n values: valueRightValues,\n config: { unit: valueUnit },\n },\n ]\n );\n }\n\n const frame: DataFrameDTO = {\n name: 'response',\n meta: { preferredVisualisationType: 'flamegraph' },\n fields,\n };\n\n return createDataFrame(frame);\n}\n","import { createTheme } from '@grafana/data';\nimport { FlameGraph as GrafanaFlameGraph, Props } from '@grafana/flamegraph';\nimport { useTheme2 } from '@grafana/ui';\nimport React, { memo, useMemo } from 'react';\n\nimport type { FlamebearerProfile } from '../../types/FlamebearerProfile';\nimport { ExportData } from './components/ExportData';\nimport { flamebearerToDataFrameDTO } from './domain/flamebearerToDataFrameDTO';\n\ntype FlameGraphProps = {\n profile: FlamebearerProfile;\n diff?: boolean;\n vertical?: boolean;\n enableFlameGraphDotComExport?: boolean;\n collapsedFlamegraphs?: boolean;\n getExtraContextMenuButtons?: Props['getExtraContextMenuButtons'];\n};\n\nfunction FlameGraphComponent({\n profile,\n diff,\n vertical,\n enableFlameGraphDotComExport,\n collapsedFlamegraphs,\n getExtraContextMenuButtons,\n}: FlameGraphProps) {\n const { isLight } = useTheme2();\n const getTheme = () => createTheme({ colors: { mode: isLight ? 'light' : 'dark' } });\n\n const dataFrame = useMemo(\n () =>\n flamebearerToDataFrameDTO(\n profile.flamebearer.levels,\n profile.flamebearer.names,\n profile.metadata.units,\n Boolean(diff)\n ),\n [profile, diff]\n );\n\n return (\n }\n vertical={vertical}\n getTheme={getTheme as any}\n getExtraContextMenuButtons={getExtraContextMenuButtons}\n keepFocusOnDataChange\n />\n );\n}\n\nexport const FlameGraph = memo(FlameGraphComponent);\n","import { css } from '@emotion/css';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { useStyles2 } from '@grafana/ui';\nimport { FlameGraph } from '@shared/components/FlameGraph/FlameGraph';\nimport { FlamebearerProfile } from '@shared/types/FlamebearerProfile';\nimport React from 'react';\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n flamegraph: css`\n margin-top: ${theme.spacing(2)};\n `,\n});\n\nexport function AdHocFlameGraph({ profile, diff }: { profile: FlamebearerProfile; diff?: boolean }) {\n const styles = useStyles2(getStyles);\n\n return (\n
\n \n
\n );\n}\n","import { css } from '@emotion/css';\nimport { GrafanaTheme2, SelectableValue } from '@grafana/data';\nimport { InlineField, InlineFieldRow, Select, useStyles2 } from '@grafana/ui';\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\n\ntype ProfileSelectorProps = {\n profileTypes: string[];\n onChange: (options: SelectableValue) => void;\n};\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n selectorContainer: css`\n display: flex;\n justify-content: center;\n margin-bottom: ${theme.spacing(2)};\n `,\n});\n\nexport function AdHocProfileTypeSelector({ profileTypes, onChange }: ProfileSelectorProps) {\n const styles = useStyles2(getStyles);\n\n const options = useMemo(() => profileTypes.map((type) => ({ value: type, label: type })), [profileTypes]);\n const [option, setOption] = useState>();\n\n const _onChange = useCallback(\n (o: SelectableValue) => {\n setOption(o);\n onChange(o);\n },\n [onChange]\n );\n\n useEffect(() => {\n // when the uploaded file contains multiple sample types, the 1st is always returned by the API\n // so, we select it automatically\n setOption(options[0]);\n }, [options]);\n\n return (\n
\n \n \n {/* added a key to ensure the dropdown is properly reset */}\n without a
\");\n }\n //