@gravitee/gamma-lib-observability 1.4.0 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -3,7 +3,7 @@ import { Fragment as v, createContext as y, createElement as b, forwardRef as x,
3
3
  import { Fragment as A, jsx as j, jsxs as M } from "react/jsx-runtime";
4
4
  import { keepPreviousData as ee, useQueries as te, useQuery as N } from "@tanstack/react-query";
5
5
  import { Accordion as ne, AccordionContent as re, AccordionItem as ie, AccordionTrigger as ae, Badge as P, Button as F, Calendar as oe, Card as se, Combobox as ce, ComboboxChip as le, ComboboxChips as ue, ComboboxChipsInput as de, ComboboxContent as fe, ComboboxEmpty as pe, ComboboxItem as me, ComboboxList as he, ComboboxValue as ge, DataTable as _e, DataTablePagination as ve, Empty as ye, EmptyDescription as be, EmptyHeader as xe, EmptyMedia as Se, EmptyTitle as Ce, Field as we, FieldError as Te, FieldLabel as Ee, Input as De, Popover as Oe, PopoverAnchor as ke, PopoverContent as Ae, PopoverTrigger as je, ScrollArea as Me, Select as Ne, SelectContent as Pe, SelectItem as Fe, SelectTrigger as Ie, SelectValue as Le, Separator as Re, Sheet as ze, SheetContent as Be, SheetDescription as Ve, SheetTitle as He, Skeleton as I, Spinner as Ue, ToggleGroup as We, ToggleGroupItem as Ge, Tooltip as L, TooltipContent as R, TooltipProvider as z, TooltipTrigger as B, cn as V, toast as H, useComboboxAnchor as Ke } from "@gravitee/graphene-core";
6
- import { AlertCircleIcon as qe, ArrowLeftIcon as Je, ArrowRightIcon as Ye, BrainCircuitIcon as Xe, CableIcon as Ze, CalendarIcon as Qe, ChevronDownIcon as $e, ChevronRightIcon as et, CircleHelpIcon as tt, CopyIcon as nt, ExpandIcon as rt, FileTextIcon as it, FilterIcon as at, GlobeIcon as ot, LayoutDashboardIcon as st, MessageSquareIcon as ct, PanelLeftIcon as lt, PlusIcon as ut, RefreshCwIcon as dt, SearchIcon as ft, Trash2Icon as pt, WebhookIcon as mt, XIcon as ht } from "@gravitee/graphene-core/icons";
6
+ import { AlertCircleIcon as qe, ArrowLeftIcon as Je, ArrowRightIcon as Ye, BrainCircuitIcon as Xe, CableIcon as Ze, CalendarIcon as Qe, ChevronDownIcon as $e, ChevronRightIcon as et, CircleHelpIcon as tt, CopyIcon as nt, ExpandIcon as rt, FileTextIcon as it, FilterIcon as at, FunnelXIcon as ot, GlobeIcon as st, LayoutDashboardIcon as ct, MessageSquareIcon as lt, PanelLeftIcon as ut, PlusIcon as dt, RefreshCwIcon as ft, SearchIcon as pt, WebhookIcon as mt, XIcon as ht } from "@gravitee/graphene-core/icons";
7
7
  import { DashboardGrid as gt, DashboardWidget as _t } from "@gravitee/graphene-charts/dashboard-grid";
8
8
  import { AreaSeries as vt, BarChart as yt, BarSeries as bt, CartesianChart as xt, ChartContainer as St, ChartLegend as Ct, ChartLegendContent as wt, ChartTooltip as Tt, ChartTooltipContent as Et, DoughnutChart as Dt, Grid as Ot, LineSeries as kt, Metric as At, MetricGroup as jt, ReferenceLine as Mt, XAxis as Nt, YAxis as Pt } from "@gravitee/graphene-charts";
9
9
  import { Link as Ft, Navigate as It, Route as Lt, Routes as Rt, useNavigate as zt, useParams as Bt, useSearchParams as Vt } from "react-router-dom";
@@ -89,15 +89,15 @@ var W = 3e4;
89
89
  //#region src/hooks/query-keys.ts
90
90
  function on(e) {
91
91
  let t = { name: e.name };
92
- return e.measures && (t.measures = e.measures.slice().sort()), e.filters && (t.filters = cn(e.filters)), "sorts" in e && e.sorts && (t.sorts = e.sorts), t;
92
+ return e.measures && (t.measures = e.measures.slice().sort()), e.filters && (t.filters = G(e.filters)), "sorts" in e && e.sorts && (t.sorts = e.sorts), t;
93
93
  }
94
94
  function sn(e) {
95
95
  return e.map(on).sort((e, t) => e.name.localeCompare(t.name));
96
96
  }
97
- function cn(e) {
97
+ function G(e) {
98
98
  return !e || e.length === 0 ? e : e.slice().sort((e, t) => e.field.localeCompare(t.field) || e.operator.localeCompare(t.operator));
99
99
  }
100
- var G = {
100
+ var K = {
101
101
  all: ["observability"],
102
102
  timeSeries: (e, t, n, r, i, a) => [
103
103
  "observability",
@@ -106,7 +106,7 @@ var G = {
106
106
  metrics: sn(e),
107
107
  timeRange: t,
108
108
  interval: n,
109
- filters: cn(r),
109
+ filters: G(r),
110
110
  by: i,
111
111
  limit: a
112
112
  }
@@ -117,7 +117,7 @@ var G = {
117
117
  {
118
118
  field: e,
119
119
  timeRange: t,
120
- filters: cn(n),
120
+ filters: G(n),
121
121
  limit: r,
122
122
  search: i
123
123
  }
@@ -128,7 +128,7 @@ var G = {
128
128
  {
129
129
  metrics: sn(e),
130
130
  timeRange: t,
131
- filters: cn(n)
131
+ filters: G(n)
132
132
  }
133
133
  ],
134
134
  logs: (e, t, n) => [
@@ -136,7 +136,7 @@ var G = {
136
136
  "logs",
137
137
  {
138
138
  timeRange: e,
139
- filters: cn(t),
139
+ filters: G(t),
140
140
  search: n
141
141
  }
142
142
  ],
@@ -150,7 +150,7 @@ var G = {
150
150
  "traces",
151
151
  {
152
152
  timeRange: e,
153
- filters: cn(t),
153
+ filters: G(t),
154
154
  serviceName: n
155
155
  }
156
156
  ],
@@ -167,30 +167,30 @@ var G = {
167
167
  };
168
168
  //#endregion
169
169
  //#region src/dashboards/merge-filters.ts
170
- function K(...e) {
170
+ function q(...e) {
171
171
  let t = /* @__PURE__ */ new Map();
172
172
  for (let n of e) if (n) for (let e of n) t.set(e.field, e);
173
173
  return Array.from(t.values());
174
174
  }
175
175
  //#endregion
176
176
  //#region src/providers/ContextFiltersProvider.tsx
177
- var ln = y([]);
178
- function un({ filters: e, children: t }) {
177
+ var cn = y([]);
178
+ function ln({ filters: e, children: t }) {
179
179
  let n = D(() => e, [e]);
180
- return /* @__PURE__ */ j(ln.Provider, {
180
+ return /* @__PURE__ */ j(cn.Provider, {
181
181
  value: n,
182
182
  children: t
183
183
  });
184
184
  }
185
- function q() {
186
- return w(ln);
185
+ function J() {
186
+ return w(cn);
187
187
  }
188
188
  //#endregion
189
189
  //#region src/hooks/use-facets-query.ts
190
- function dn(e, t) {
191
- let n = m(), r = K(q(), e.filters);
190
+ function un(e, t) {
191
+ let n = m(), r = q(J(), e.filters);
192
192
  return N({
193
- queryKey: G.facets(e.field, e.timeRange, r, e.limit, e.search),
193
+ queryKey: K.facets(e.field, e.timeRange, r, e.limit, e.search),
194
194
  queryFn: ({ signal: t }) => n.fetchFacets({
195
195
  field: e.field,
196
196
  timeRange: e.timeRange,
@@ -206,9 +206,9 @@ function dn(e, t) {
206
206
  }
207
207
  //#endregion
208
208
  //#region src/hooks/use-log-detail-query.ts
209
- function fn(e) {
209
+ function dn(e) {
210
210
  let t = g(), n = typeof t.getById == "function", r = N({
211
- queryKey: G.logDetail(e.id ?? ""),
211
+ queryKey: K.logDetail(e.id ?? ""),
212
212
  queryFn: ({ signal: n }) => t.getById(e.id, n),
213
213
  staleTime: W,
214
214
  enabled: n && !!e.id && e.enabled !== !1
@@ -225,10 +225,10 @@ function fn(e) {
225
225
  }
226
226
  //#endregion
227
227
  //#region src/hooks/use-logs-query.ts
228
- function pn(e, t) {
229
- let n = g(), r = K(q(), e.filters);
228
+ function fn(e, t) {
229
+ let n = g(), r = q(J(), e.filters);
230
230
  return N({
231
- queryKey: G.logs(e.timeRange, r, e.search),
231
+ queryKey: K.logs(e.timeRange, r, e.search),
232
232
  queryFn: ({ signal: t }) => n.fetchLogs({
233
233
  timeRange: e.timeRange,
234
234
  filters: r,
@@ -242,9 +242,9 @@ function pn(e, t) {
242
242
  }
243
243
  //#endregion
244
244
  //#region src/hooks/use-logs-paged-query.ts
245
- var mn = 25;
246
- function hn(e) {
247
- let { timeRange: t, filters: n, search: r, pageSize: i = mn, enabled: a } = e, o = g(), s = K(q(), n), [c, l] = k(1), [u, d] = k(i), f = G.logs(t, s, r), p = JSON.stringify(f), m = O(p);
245
+ var pn = 25;
246
+ function mn(e) {
247
+ let { timeRange: t, filters: n, search: r, pageSize: i = pn, enabled: a } = e, o = g(), s = q(J(), n), [c, l] = k(1), [u, d] = k(i), f = K.logs(t, s, r), p = JSON.stringify(f), m = O(p);
248
248
  T(() => {
249
249
  m.current !== p && (m.current = p, l(1));
250
250
  }, [p]);
@@ -284,10 +284,10 @@ function hn(e) {
284
284
  }
285
285
  //#endregion
286
286
  //#region src/hooks/use-measures-query.ts
287
- function gn(e, t) {
288
- let n = m(), r = K(q(), e.filters);
287
+ function hn(e, t) {
288
+ let n = m(), r = q(J(), e.filters);
289
289
  return N({
290
- queryKey: G.measures(e.metrics, e.timeRange, r),
290
+ queryKey: K.measures(e.metrics, e.timeRange, r),
291
291
  queryFn: ({ signal: t }) => n.fetchMeasures({
292
292
  metrics: e.metrics,
293
293
  timeRange: e.timeRange,
@@ -302,12 +302,12 @@ function gn(e, t) {
302
302
  }
303
303
  //#endregion
304
304
  //#region src/hooks/use-resolve-filter-labels.ts
305
- function _n(e, t) {
305
+ function gn(e, t) {
306
306
  let n = D(() => e.filter((e) => e.value.length > 0 && !e.valueLabels?.length), [e]), r = D(() => n.map((e) => ({
307
307
  filterName: e.field,
308
308
  ids: e.value
309
309
  })), [n]), i = D(() => JSON.stringify(r), [r]), { data: a } = N({
310
- queryKey: G.filterLabels(i),
310
+ queryKey: K.filterLabels(i),
311
311
  queryFn: ({ signal: e }) => t.resolveLabels(r, e),
312
312
  enabled: !!t && r.length > 0,
313
313
  staleTime: 300 * 1e3
@@ -329,10 +329,10 @@ function _n(e, t) {
329
329
  }
330
330
  //#endregion
331
331
  //#region src/hooks/use-time-series-query.ts
332
- function vn(e, t) {
333
- let n = m(), r = K(q(), e.filters);
332
+ function _n(e, t) {
333
+ let n = m(), r = q(J(), e.filters);
334
334
  return N({
335
- queryKey: G.timeSeries(e.metrics, e.timeRange, e.interval, r, e.by, e.limit),
335
+ queryKey: K.timeSeries(e.metrics, e.timeRange, e.interval, r, e.by, e.limit),
336
336
  queryFn: ({ signal: t }) => n.fetchTimeSeries({
337
337
  metrics: e.metrics,
338
338
  timeRange: e.timeRange,
@@ -350,7 +350,7 @@ function vn(e, t) {
350
350
  }
351
351
  //#endregion
352
352
  //#region src/filters/constants.ts
353
- var yn = "5m", bn = [
353
+ var vn = "5m", yn = [
354
354
  {
355
355
  label: "Last",
356
356
  periods: [
@@ -383,7 +383,7 @@ var yn = "5m", bn = [
383
383
  "previousQuarter"
384
384
  ]
385
385
  }
386
- ], xn = bn.flatMap((e) => e.periods), Sn = {
386
+ ], bn = yn.flatMap((e) => e.periods), xn = {
387
387
  "5m": "5 minutes",
388
388
  "15m": "15 minutes",
389
389
  "1h": "1 hour",
@@ -401,7 +401,7 @@ var yn = "5m", bn = [
401
401
  previousWeek: "Week",
402
402
  previousMonth: "Month",
403
403
  previousQuarter: "Quarter"
404
- }, Cn = {
404
+ }, Sn = {
405
405
  "5m": "Last 5 minutes",
406
406
  "15m": "Last 15 minutes",
407
407
  "1h": "Last 1 hour",
@@ -419,22 +419,22 @@ var yn = "5m", bn = [
419
419
  previousWeek: "Previous week",
420
420
  previousMonth: "Previous month",
421
421
  previousQuarter: "Previous quarter"
422
- }, wn = new Set(xn), Tn = new Set(_), En = "1", Dn = {
422
+ }, Cn = new Set(bn), wn = new Set(_), Tn = "1", En = {
423
423
  type: "relative",
424
424
  period: "5m"
425
425
  };
426
- function On(e) {
426
+ function Dn(e) {
427
427
  return btoa(e).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
428
428
  }
429
- function kn(e) {
429
+ function On(e) {
430
430
  let t = e.replace(/-/g, "+").replace(/_/g, "/");
431
431
  return atob(t);
432
432
  }
433
- function An(e) {
434
- return e.conditions.length === 0 && e.timeRange.type === "relative" && e.timeRange.period === Dn.period;
433
+ function kn(e) {
434
+ return e.conditions.length === 0 && e.timeRange.type === "relative" && e.timeRange.period === En.period;
435
435
  }
436
- function jn(e) {
437
- if (An(e)) return null;
436
+ function An(e) {
437
+ if (kn(e)) return null;
438
438
  let t = {
439
439
  c: e.conditions.map(({ field: e, label: t, operator: n, value: r }) => ({
440
440
  field: e,
@@ -445,19 +445,19 @@ function jn(e) {
445
445
  t: e.timeRange
446
446
  };
447
447
  return {
448
- q: On(JSON.stringify(t)),
448
+ q: Dn(JSON.stringify(t)),
449
449
  v: "1"
450
450
  };
451
451
  }
452
- function Mn(e, t) {
452
+ function jn(e, t) {
453
453
  let n = {
454
454
  conditions: [],
455
- timeRange: Dn
455
+ timeRange: En
456
456
  };
457
457
  if (!e || !t || t !== "1") return n;
458
458
  try {
459
- let t = kn(e), r = JSON.parse(t);
460
- return Fn(r) ? {
459
+ let t = On(e), r = JSON.parse(t);
460
+ return Pn(r) ? {
461
461
  conditions: r.c.map(({ field: e, label: t, operator: n, value: r }) => ({
462
462
  field: e,
463
463
  label: t,
@@ -470,33 +470,33 @@ function Mn(e, t) {
470
470
  return n;
471
471
  }
472
472
  }
473
- function Nn(e) {
473
+ function Mn(e) {
474
474
  if (typeof e != "object" || !e) return !1;
475
475
  let t = e;
476
- return !(typeof t.field != "string" || t.field.length === 0 || typeof t.label != "string" || typeof t.operator != "string" || !Tn.has(t.operator) || !Array.isArray(t.value) || !t.value.every((e) => typeof e == "string"));
476
+ return !(typeof t.field != "string" || t.field.length === 0 || typeof t.label != "string" || typeof t.operator != "string" || !wn.has(t.operator) || !Array.isArray(t.value) || !t.value.every((e) => typeof e == "string"));
477
477
  }
478
- function Pn(e) {
478
+ function Nn(e) {
479
479
  if (typeof e != "object" || !e) return !1;
480
480
  let t = e;
481
- return t.type === "relative" ? typeof t.period == "string" && wn.has(t.period) : t.type === "absolute" ? typeof t.from == "number" && Number.isFinite(t.from) && typeof t.to == "number" && Number.isFinite(t.to) : !1;
481
+ return t.type === "relative" ? typeof t.period == "string" && Cn.has(t.period) : t.type === "absolute" ? typeof t.from == "number" && Number.isFinite(t.from) && typeof t.to == "number" && Number.isFinite(t.to) : !1;
482
482
  }
483
- function Fn(e) {
483
+ function Pn(e) {
484
484
  if (typeof e != "object" || !e) return !1;
485
485
  let t = e;
486
- return !Array.isArray(t.c) || !t.c.every(Nn) ? !1 : Pn(t.t);
486
+ return !Array.isArray(t.c) || !t.c.every(Mn) ? !1 : Nn(t.t);
487
487
  }
488
488
  //#endregion
489
489
  //#region src/filters/TimeRangePicker.tsx
490
- function In(e) {
490
+ function Fn(e) {
491
491
  return `${String(e.getHours()).padStart(2, "0")}:${String(e.getMinutes()).padStart(2, "0")}`;
492
492
  }
493
- function Ln() {
493
+ function In() {
494
494
  let e = -(/* @__PURE__ */ new Date()).getTimezoneOffset();
495
495
  return `GMT${e >= 0 ? "+" : "-"}${Math.floor(Math.abs(e) / 60)}`;
496
496
  }
497
- function Rn(e, t) {
498
- let n = t ? ` (${Ln()})` : "";
499
- if (e.type === "relative") return `${Cn[e.period]}${n}`;
497
+ function Ln(e, t) {
498
+ let n = t ? ` (${In()})` : "";
499
+ if (e.type === "relative") return `${Sn[e.period]}${n}`;
500
500
  let r = new Date(e.from), i = new Date(e.to), a = new Intl.DateTimeFormat(void 0, {
501
501
  month: "short",
502
502
  day: "numeric",
@@ -508,7 +508,7 @@ function Rn(e, t) {
508
508
  });
509
509
  return `${a.format(r)} @ ${o.format(r)} - ${a.format(i)} @ ${o.format(i)}${n}`;
510
510
  }
511
- function zn(e) {
511
+ function Rn(e) {
512
512
  return e ? e.toLocaleDateString(void 0, {
513
513
  weekday: "short",
514
514
  month: "short",
@@ -516,20 +516,20 @@ function zn(e) {
516
516
  year: "numeric"
517
517
  }) : "—";
518
518
  }
519
- function Bn(e, t) {
519
+ function zn(e, t) {
520
520
  if (!e) return;
521
521
  let [n, r] = t.split(":").map(Number), i = new Date(e);
522
522
  return i.setHours(n ?? 0, r ?? 0, 0, 0), i.getTime();
523
523
  }
524
- function Vn({ value: e, onChange: t, disabled: n = !1, showTimezone: r = !1, className: i }) {
525
- let a = E(), o = `${a}-from`, s = `${a}-to`, [c, l] = k(!1), [u, d] = k("relative"), [f, p] = k(void 0), [m, h] = k("00:00"), [g, _] = k("23:59"), v = Bn(f?.from, m), y = Bn(f?.to, g), b = v !== void 0 && y !== void 0 && v >= y, x = v !== void 0 && y !== void 0 && !b;
524
+ function Bn({ value: e, onChange: t, disabled: n = !1, showTimezone: r = !1, className: i }) {
525
+ let a = E(), o = `${a}-from`, s = `${a}-to`, [c, l] = k(!1), [u, d] = k("relative"), [f, p] = k(void 0), [m, h] = k("00:00"), [g, _] = k("23:59"), v = zn(f?.from, m), y = zn(f?.to, g), b = v !== void 0 && y !== void 0 && v >= y, x = v !== void 0 && y !== void 0 && !b;
526
526
  function S(t) {
527
527
  if (l(t), t && (d(e.type === "absolute" ? "custom" : "relative"), e.type === "absolute")) {
528
528
  let t = new Date(e.from), n = new Date(e.to);
529
529
  p({
530
530
  from: t,
531
531
  to: n
532
- }), h(In(t)), _(In(n));
532
+ }), h(Fn(t)), _(Fn(n));
533
533
  }
534
534
  }
535
535
  function C(e) {
@@ -560,7 +560,7 @@ function Vn({ value: e, onChange: t, disabled: n = !1, showTimezone: r = !1, cla
560
560
  "aria-haspopup": "dialog",
561
561
  "aria-expanded": c,
562
562
  className: V("justify-between gap-2 font-normal", i),
563
- children: [Rn(e, r), /* @__PURE__ */ j(Qe, {
563
+ children: [Ln(e, r), /* @__PURE__ */ j(Qe, {
564
564
  "aria-hidden": "true",
565
565
  className: "size-4 shrink-0"
566
566
  })]
@@ -591,7 +591,7 @@ function Vn({ value: e, onChange: t, disabled: n = !1, showTimezone: r = !1, cla
591
591
  className: "flex flex-col gap-4",
592
592
  role: "listbox",
593
593
  "aria-label": "Preset time ranges",
594
- children: bn.map((t) => /* @__PURE__ */ M("div", {
594
+ children: yn.map((t) => /* @__PURE__ */ M("div", {
595
595
  className: "flex flex-col gap-2",
596
596
  children: [/* @__PURE__ */ j("p", {
597
597
  className: "text-xs font-medium text-muted-foreground",
@@ -602,12 +602,12 @@ function Vn({ value: e, onChange: t, disabled: n = !1, showTimezone: r = !1, cla
602
602
  variant: "outline",
603
603
  size: "sm",
604
604
  role: "option",
605
- "aria-label": Cn[t],
605
+ "aria-label": Sn[t],
606
606
  "aria-selected": e.type === "relative" && e.period === t,
607
607
  className: V(e.type === "relative" && e.period === t && "bg-primary text-primary-foreground hover:bg-primary/90"),
608
608
  disabled: n,
609
609
  onClick: () => C(t),
610
- children: Sn[t]
610
+ children: xn[t]
611
611
  }, t))
612
612
  })]
613
613
  }, t.label))
@@ -631,7 +631,7 @@ function Vn({ value: e, onChange: t, disabled: n = !1, showTimezone: r = !1, cla
631
631
  className: "flex-1",
632
632
  children: [/* @__PURE__ */ j(Ee, {
633
633
  htmlFor: o,
634
- children: zn(f?.from)
634
+ children: Rn(f?.from)
635
635
  }), /* @__PURE__ */ j(De, {
636
636
  id: o,
637
637
  type: "time",
@@ -650,7 +650,7 @@ function Vn({ value: e, onChange: t, disabled: n = !1, showTimezone: r = !1, cla
650
650
  className: "flex-1",
651
651
  children: [/* @__PURE__ */ j(Ee, {
652
652
  htmlFor: s,
653
- children: zn(f?.to)
653
+ children: Rn(f?.to)
654
654
  }), /* @__PURE__ */ j(De, {
655
655
  id: s,
656
656
  type: "time",
@@ -682,7 +682,7 @@ function Vn({ value: e, onChange: t, disabled: n = !1, showTimezone: r = !1, cla
682
682
  }
683
683
  //#endregion
684
684
  //#region src/filters/resolve-period.ts
685
- function Hn() {
685
+ function Vn() {
686
686
  try {
687
687
  let { firstDay: e } = new Intl.Locale(navigator.language).getWeekInfo();
688
688
  return e % 7;
@@ -690,7 +690,7 @@ function Hn() {
690
690
  return 1;
691
691
  }
692
692
  }
693
- var Un = {
693
+ var Hn = {
694
694
  "5m": 5 * 6e4,
695
695
  "15m": 15 * 6e4,
696
696
  "1h": 60 * 6e4,
@@ -703,51 +703,51 @@ var Un = {
703
703
  "180d": 4320 * 60 * 6e4,
704
704
  "365d": 365 * 24 * 60 * 6e4
705
705
  };
706
- function Wn(e) {
706
+ function Un(e) {
707
707
  let t = new Date(e);
708
708
  return t.setHours(0, 0, 0, 0), t;
709
709
  }
710
- function Gn(e, t) {
711
- let n = Wn(e), r = (n.getDay() - t + 7) % 7;
710
+ function Wn(e, t) {
711
+ let n = Un(e), r = (n.getDay() - t + 7) % 7;
712
712
  return n.setDate(n.getDate() - r), n;
713
713
  }
714
- function Kn(e) {
714
+ function Gn(e) {
715
715
  return new Date(e.getFullYear(), e.getMonth(), 1);
716
716
  }
717
- function qn(e) {
717
+ function Kn(e) {
718
718
  let t = Math.floor(e.getMonth() / 3) * 3;
719
719
  return new Date(e.getFullYear(), t, 1);
720
720
  }
721
- function Jn(e, t, n) {
721
+ function qn(e, t, n) {
722
722
  switch (e) {
723
723
  case "currentWeek": return {
724
- from: Gn(t, n),
724
+ from: Wn(t, n),
725
725
  to: t
726
726
  };
727
727
  case "currentMonth": return {
728
- from: Kn(t),
728
+ from: Gn(t),
729
729
  to: t
730
730
  };
731
731
  case "currentQuarter": return {
732
- from: qn(t),
732
+ from: Kn(t),
733
733
  to: t
734
734
  };
735
735
  case "previousWeek": {
736
- let e = Gn(t, n), r = new Date(e);
736
+ let e = Wn(t, n), r = new Date(e);
737
737
  return r.setDate(r.getDate() - 7), {
738
738
  from: r,
739
739
  to: e
740
740
  };
741
741
  }
742
742
  case "previousMonth": {
743
- let e = Kn(t), n = new Date(e);
743
+ let e = Gn(t), n = new Date(e);
744
744
  return n.setMonth(n.getMonth() - 1), {
745
745
  from: n,
746
746
  to: e
747
747
  };
748
748
  }
749
749
  case "previousQuarter": {
750
- let e = qn(t), n = new Date(e);
750
+ let e = Kn(t), n = new Date(e);
751
751
  return n.setMonth(n.getMonth() - 3), {
752
752
  from: n,
753
753
  to: e
@@ -756,8 +756,8 @@ function Jn(e, t, n) {
756
756
  default: return;
757
757
  }
758
758
  }
759
- function Yn(e, t = {}) {
760
- let { now: n = /* @__PURE__ */ new Date(), weekStartsOn: r = Hn() } = t, i = Un[e];
759
+ function Jn(e, t = {}) {
760
+ let { now: n = /* @__PURE__ */ new Date(), weekStartsOn: r = Vn() } = t, i = Hn[e];
761
761
  if (i !== void 0) {
762
762
  let e = n.getTime();
763
763
  return {
@@ -766,7 +766,7 @@ function Yn(e, t = {}) {
766
766
  to: e
767
767
  };
768
768
  }
769
- let a = Jn(e, n, r);
769
+ let a = qn(e, n, r);
770
770
  return a ? {
771
771
  type: "absolute",
772
772
  from: a.from.getTime(),
@@ -779,7 +779,7 @@ function Yn(e, t = {}) {
779
779
  }
780
780
  //#endregion
781
781
  //#region src/filters/filter-provider.ts
782
- function Xn(e) {
782
+ function Yn(e) {
783
783
  let t = e.kind ?? "async", n = e.field;
784
784
  if (!e.operators.length) throw Error(`[gamma-lib-observability] FilterProvider "${n}" must define at least one operator.`);
785
785
  if (t === "enum") {
@@ -795,8 +795,8 @@ function Xn(e) {
795
795
  }
796
796
  //#endregion
797
797
  //#region src/filters/use-scoped-filter-providers.ts
798
- function Zn(e) {
799
- let t = p(), n = q();
798
+ function Xn(e) {
799
+ let t = p(), n = J();
800
800
  return D(() => {
801
801
  if (!e) return t;
802
802
  let r = n.find((t) => t.field === e);
@@ -811,18 +811,18 @@ function Zn(e) {
811
811
  }
812
812
  //#endregion
813
813
  //#region src/filters/utils/filter-value-options.ts
814
- function Qn(e, t) {
814
+ function Zn(e, t) {
815
815
  let n = /* @__PURE__ */ new Map();
816
816
  for (let t of e) n.set(t.value, t);
817
817
  for (let e of t) n.set(e.value, e);
818
818
  return [...n.values()];
819
819
  }
820
- function $n(e, t) {
820
+ function Qn(e, t) {
821
821
  return e.value === t.value;
822
822
  }
823
823
  //#endregion
824
824
  //#region src/filters/utils/use-auto-open-on-focus.ts
825
- function er() {
825
+ function $n() {
826
826
  let [e, t] = k(!1), n = O(!1);
827
827
  return {
828
828
  open: e,
@@ -843,15 +843,15 @@ function er() {
843
843
  }
844
844
  //#endregion
845
845
  //#region src/filters/FilterValueCombobox.tsx
846
- var tr = (e) => e.label, nr = (e) => e.value;
847
- function rr({ options: e, selected: t, onSelectedChange: n, multiple: r, onSearchChange: i, disableBuiltInFilter: a = !1, placeholder: o = r ? "Search values…" : "Search value…", emptyMessage: s = "No results.", listFooter: c, errorMessage: l }) {
848
- let u = Ke(), { open: d, handleOpenChange: f, handleInputFocus: p, handleInputKeyDown: m } = er(), h = E(), g = !!l, _ = {
846
+ var er = (e) => e.label, tr = (e) => e.value;
847
+ function nr({ options: e, selected: t, onSelectedChange: n, multiple: r, onSearchChange: i, disableBuiltInFilter: a = !1, placeholder: o = r ? "Search values…" : "Search value…", emptyMessage: s = "No results.", listFooter: c, errorMessage: l }) {
848
+ let u = Ke(), { open: d, handleOpenChange: f, handleInputFocus: p, handleInputKeyDown: m } = $n(), h = E(), g = !!l, _ = {
849
849
  open: d,
850
850
  onOpenChange: f,
851
851
  items: e,
852
- itemToStringLabel: tr,
853
- itemToStringValue: nr,
854
- isItemEqualToValue: $n,
852
+ itemToStringLabel: er,
853
+ itemToStringValue: tr,
854
+ isItemEqualToValue: Qn,
855
855
  ...a && { filter: null },
856
856
  ...i && { onInputValueChange: (e) => i(String(e)) }
857
857
  }, y = /* @__PURE__ */ M(A, { children: [
@@ -911,7 +911,7 @@ function rr({ options: e, selected: t, onSelectedChange: n, multiple: r, onSearc
911
911
  }
912
912
  //#endregion
913
913
  //#region src/filters/utils/use-debounced-value.ts
914
- function ir(e, t) {
914
+ function rr(e, t) {
915
915
  let [n, r] = k(e);
916
916
  return T(() => {
917
917
  let n = window.setTimeout(() => r(e), t);
@@ -920,13 +920,13 @@ function ir(e, t) {
920
920
  }
921
921
  //#endregion
922
922
  //#region src/filters/utils/use-scroll-sentinel.ts
923
- function ar(e, t) {
923
+ function ir(e, t) {
924
924
  let n = O(e), r = O(null);
925
925
  return T(() => {
926
926
  n.current = e;
927
927
  }, [e]), C((e) => {
928
928
  if (r.current &&= (r.current.disconnect(), null), e && t) {
929
- let t = or(e), i = new IntersectionObserver((e) => {
929
+ let t = ar(e), i = new IntersectionObserver((e) => {
930
930
  e[0]?.isIntersecting && n.current();
931
931
  }, {
932
932
  root: t,
@@ -936,7 +936,7 @@ function ar(e, t) {
936
936
  }
937
937
  }, [t]);
938
938
  }
939
- function or(e) {
939
+ function ar(e) {
940
940
  let t = e.closest("[data-slot=combobox-content]");
941
941
  if (t) return t;
942
942
  let n = e.parentElement;
@@ -949,9 +949,9 @@ function or(e) {
949
949
  }
950
950
  //#endregion
951
951
  //#region src/filters/FilterAsyncValueField.tsx
952
- var sr = 300;
953
- function cr({ provider: e, selected: t, onSelectedChange: n, multiple: r }) {
954
- let [i, a] = k(""), o = ir(i, sr), [s, c] = k([]), [l, u] = k(!1), [d, f] = k(null), [p, m] = k(!1), [h, g] = k(1), _ = O(0), v = O(null), y = O(o), b = C(async (t, n) => {
952
+ var or = 300;
953
+ function sr({ provider: e, selected: t, onSelectedChange: n, multiple: r }) {
954
+ let [i, a] = k(""), o = rr(i, or), [s, c] = k([]), [l, u] = k(!1), [d, f] = k(null), [p, m] = k(!1), [h, g] = k(1), _ = O(0), v = O(null), y = O(o), b = C(async (t, n) => {
955
955
  if (!e.valueLoader) return;
956
956
  v.current?.abort();
957
957
  let r = new AbortController();
@@ -991,11 +991,11 @@ function cr({ provider: e, selected: t, onSelectedChange: n, multiple: r }) {
991
991
  h,
992
992
  b
993
993
  ]);
994
- let x = ar(C(() => {
994
+ let x = ir(C(() => {
995
995
  !l && p && g((e) => e + 1);
996
996
  }, [l, p]), p && !l);
997
- return /* @__PURE__ */ j(rr, {
998
- options: D(() => Qn(t, s), [t, s]),
997
+ return /* @__PURE__ */ j(nr, {
998
+ options: D(() => Zn(t, s), [t, s]),
999
999
  selected: t,
1000
1000
  onSelectedChange: n,
1001
1001
  multiple: r,
@@ -1021,8 +1021,8 @@ function cr({ provider: e, selected: t, onSelectedChange: n, multiple: r }) {
1021
1021
  }
1022
1022
  //#endregion
1023
1023
  //#region src/filters/FilterEnumValueField.tsx
1024
- function lr({ provider: e, selected: t, onSelectedChange: n, multiple: r }) {
1025
- return /* @__PURE__ */ j(rr, {
1024
+ function cr({ provider: e, selected: t, onSelectedChange: n, multiple: r }) {
1025
+ return /* @__PURE__ */ j(nr, {
1026
1026
  options: D(() => e.options ?? [], [e.options]),
1027
1027
  selected: t,
1028
1028
  onSelectedChange: n,
@@ -1031,19 +1031,19 @@ function lr({ provider: e, selected: t, onSelectedChange: n, multiple: r }) {
1031
1031
  }
1032
1032
  //#endregion
1033
1033
  //#region src/filters/utils/scope-labels.ts
1034
- var ur = {
1034
+ var lr = {
1035
1035
  HTTP_PROXY: "HTTP Proxy",
1036
1036
  MESSAGE: "Message"
1037
1037
  };
1038
- function dr(e) {
1038
+ function ur(e) {
1039
1039
  return e.trim().replace(/\s+/g, "_").toUpperCase();
1040
1040
  }
1041
- function fr(e) {
1042
- return ur[dr(e)] ?? e.trim();
1041
+ function dr(e) {
1042
+ return lr[ur(e)] ?? e.trim();
1043
1043
  }
1044
1044
  //#endregion
1045
1045
  //#region src/filters/FilterFieldOptionRow.tsx
1046
- var pr = S(function({ provider: e, showScopes: t = !1, className: n }) {
1046
+ var fr = S(function({ provider: e, showScopes: t = !1, className: n }) {
1047
1047
  let r = t && e.scopes && e.scopes.length > 0;
1048
1048
  return /* @__PURE__ */ M("div", {
1049
1049
  className: V("flex min-w-0 flex-1 items-center justify-between gap-3", n),
@@ -1055,15 +1055,15 @@ var pr = S(function({ provider: e, showScopes: t = !1, className: n }) {
1055
1055
  children: e.scopes?.map((e) => /* @__PURE__ */ j(P, {
1056
1056
  variant: "secondary",
1057
1057
  className: "max-w-28 truncate text-xs font-normal",
1058
- children: fr(e)
1058
+ children: dr(e)
1059
1059
  }, e))
1060
1060
  }) : null]
1061
1061
  });
1062
1062
  });
1063
1063
  //#endregion
1064
1064
  //#region src/filters/FilterPropertyField.tsx
1065
- function mr({ providers: e, selectedField: t, onFieldChange: n, showScopes: r }) {
1066
- let i = Ke(), { open: a, handleOpenChange: o, handleInputFocus: s, handleInputKeyDown: c } = er();
1065
+ function pr({ providers: e, selectedField: t, onFieldChange: n, showScopes: r }) {
1066
+ let i = Ke(), { open: a, handleOpenChange: o, handleInputFocus: s, handleInputKeyDown: c } = $n();
1067
1067
  return /* @__PURE__ */ M(ce, {
1068
1068
  open: a,
1069
1069
  onOpenChange: o,
@@ -1085,7 +1085,7 @@ function mr({ providers: e, selectedField: t, onFieldChange: n, showScopes: r })
1085
1085
  anchor: i,
1086
1086
  children: [/* @__PURE__ */ j(pe, { children: "No results." }), /* @__PURE__ */ j(he, { children: (e) => /* @__PURE__ */ j(me, {
1087
1087
  value: e,
1088
- children: /* @__PURE__ */ j(pr, {
1088
+ children: /* @__PURE__ */ j(fr, {
1089
1089
  provider: e,
1090
1090
  showScopes: r
1091
1091
  })
@@ -1095,7 +1095,7 @@ function mr({ providers: e, selectedField: t, onFieldChange: n, showScopes: r })
1095
1095
  }
1096
1096
  //#endregion
1097
1097
  //#region src/filters/utils/filter-operators.ts
1098
- var hr = {
1098
+ var mr = {
1099
1099
  eq: "=",
1100
1100
  neq: "≠",
1101
1101
  in: "in",
@@ -1110,13 +1110,13 @@ var hr = {
1110
1110
  lte: "≤",
1111
1111
  exists: "exists",
1112
1112
  not_exists: "not exists"
1113
- }, gr = new Set(["exists", "not_exists"]), _r = new Set([
1113
+ }, hr = new Set(["exists", "not_exists"]), gr = new Set([
1114
1114
  "neq",
1115
1115
  "not_in",
1116
1116
  "not_contains",
1117
1117
  "not_exists"
1118
1118
  ]);
1119
- function vr(e) {
1119
+ function _r(e) {
1120
1120
  switch (e) {
1121
1121
  case "eq": return "=";
1122
1122
  case "neq": return "≠";
@@ -1124,38 +1124,38 @@ function vr(e) {
1124
1124
  case "not_in": return "Not in";
1125
1125
  case "gte": return "≥";
1126
1126
  case "lte": return "≤";
1127
- default: return hr[e] ?? e;
1127
+ default: return mr[e] ?? e;
1128
1128
  }
1129
1129
  }
1130
- function yr(e) {
1131
- return !gr.has(e);
1130
+ function vr(e) {
1131
+ return !hr.has(e);
1132
1132
  }
1133
- function br(e, t) {
1133
+ function yr(e, t) {
1134
1134
  return e.operators.includes(t);
1135
1135
  }
1136
- function xr(e, t) {
1137
- let n = br(e, "in"), r = br(e, "not_in");
1136
+ function br(e, t) {
1137
+ let n = yr(e, "in"), r = yr(e, "not_in");
1138
1138
  return !!(t === "in" || t === "not_in" || n && t === "eq" || r && t === "neq");
1139
1139
  }
1140
- function Sr(e, t, n) {
1140
+ function xr(e, t, n) {
1141
1141
  if (n >= 2) {
1142
- if (t === "eq" && br(e, "in")) return "in";
1143
- if (t === "neq" && br(e, "not_in")) return "not_in";
1142
+ if (t === "eq" && yr(e, "in")) return "in";
1143
+ if (t === "neq" && yr(e, "not_in")) return "not_in";
1144
1144
  }
1145
1145
  if (n === 1) {
1146
- if (t === "in" && br(e, "eq")) return "eq";
1147
- if (t === "not_in" && br(e, "neq")) return "neq";
1146
+ if (t === "in" && yr(e, "eq")) return "eq";
1147
+ if (t === "not_in" && yr(e, "neq")) return "neq";
1148
1148
  }
1149
1149
  return t;
1150
1150
  }
1151
1151
  //#endregion
1152
1152
  //#region src/filters/utils/normalize-filter-value.ts
1153
- function Cr(e) {
1153
+ function Sr(e) {
1154
1154
  return e.every((e) => typeof e == "object" && !!e && "value" in e && typeof e.value == "string" && "label" in e && typeof e.label == "string");
1155
1155
  }
1156
- function wr(e) {
1156
+ function Cr(e) {
1157
1157
  if (Array.isArray(e)) {
1158
- if (e.length > 0 && Cr(e)) return {
1158
+ if (e.length > 0 && Sr(e)) return {
1159
1159
  values: e.map((e) => e.value),
1160
1160
  valueLabels: e.map((e) => e.label)
1161
1161
  };
@@ -1174,7 +1174,7 @@ function wr(e) {
1174
1174
  valueLabels: t.map((e, t) => n[t] ?? e)
1175
1175
  };
1176
1176
  }
1177
- function Tr(e, t) {
1177
+ function wr(e, t) {
1178
1178
  return e.map((e, n) => ({
1179
1179
  value: e,
1180
1180
  label: t?.[n] ?? e
@@ -1182,42 +1182,42 @@ function Tr(e, t) {
1182
1182
  }
1183
1183
  //#endregion
1184
1184
  //#region src/filters/utils/parse-free-text-input.ts
1185
- function Er(e) {
1185
+ function Tr(e) {
1186
1186
  return e.split(",").map((e) => e.trim()).filter((e) => e.length > 0);
1187
1187
  }
1188
1188
  //#endregion
1189
1189
  //#region src/filters/utils/build-filter-condition.ts
1190
- function Dr(e) {
1190
+ function Er(e) {
1191
1191
  let { provider: t, operator: n, selectedOptions: r = [], freeText: i = "" } = e;
1192
1192
  if (!t || !n) return !1;
1193
- if (!yr(n)) return !0;
1193
+ if (!vr(n)) return !0;
1194
1194
  if (t.allowFreeText && !t.valueLoader && t.kind !== "enum") {
1195
- let e = Er(i);
1195
+ let e = Tr(i);
1196
1196
  if (e.length === 0) return !1;
1197
1197
  if (e.length > 1) {
1198
- let r = Sr(t, n, e.length);
1198
+ let r = xr(t, n, e.length);
1199
1199
  if (r === "eq" || r === "neq") return !1;
1200
1200
  }
1201
1201
  return !0;
1202
1202
  }
1203
1203
  if (r.length === 0) return !1;
1204
1204
  if (r.length > 1) {
1205
- let e = Sr(t, n, r.length);
1205
+ let e = xr(t, n, r.length);
1206
1206
  if (e === "eq" || e === "neq") return !1;
1207
1207
  }
1208
1208
  return !0;
1209
1209
  }
1210
- function Or(e) {
1211
- let { provider: t, operator: n, selectedOptions: r, freeText: i } = e, a = yr(n), o, s;
1210
+ function Dr(e) {
1211
+ let { provider: t, operator: n, selectedOptions: r, freeText: i } = e, a = vr(n), o, s;
1212
1212
  if (!a) o = [], s = [];
1213
1213
  else if (t.allowFreeText && !t.valueLoader && t.kind !== "enum") {
1214
- let e = wr(Er(i));
1214
+ let e = Cr(Tr(i));
1215
1215
  o = e.values, s = e.valueLabels;
1216
1216
  } else {
1217
- let e = wr([...r]);
1217
+ let e = Cr([...r]);
1218
1218
  o = e.values, s = e.valueLabels;
1219
1219
  }
1220
- let c = Sr(t, n, o.length);
1220
+ let c = xr(t, n, o.length);
1221
1221
  return {
1222
1222
  field: t.field,
1223
1223
  label: t.label,
@@ -1228,8 +1228,8 @@ function Or(e) {
1228
1228
  }
1229
1229
  //#endregion
1230
1230
  //#region src/filters/FilterPopoverForm.tsx
1231
- function kr({ existingCondition: e, onApply: t, onCancel: n, showScopes: r = !1 }) {
1232
- let i = p(), [a, o] = k(e?.field ?? null), [s, c] = k(e?.operator ?? null), [l, u] = k(() => e ? Tr(e.value, e.valueLabels) : []), [d, f] = k(e?.value.join(", ") ?? ""), m = D(() => i.find((e) => e.field === a) ?? null, [i, a]), h = m && s ? xr(m, s) : !1, g = m?.kind ?? "async", _ = s ? yr(s) : !0, v = Dr({
1231
+ function Or({ existingCondition: e, onApply: t, onCancel: n, showScopes: r = !1 }) {
1232
+ let i = p(), [a, o] = k(e?.field ?? null), [s, c] = k(e?.operator ?? null), [l, u] = k(() => e ? wr(e.value, e.valueLabels) : []), [d, f] = k(e?.value.join(", ") ?? ""), m = D(() => i.find((e) => e.field === a) ?? null, [i, a]), h = m && s ? br(m, s) : !1, g = m?.kind ?? "async", _ = s ? vr(s) : !0, v = Er({
1233
1233
  provider: m,
1234
1234
  operator: s,
1235
1235
  selectedOptions: l,
@@ -1244,12 +1244,12 @@ function kr({ existingCondition: e, onApply: t, onCancel: n, showScopes: r = !1
1244
1244
  function x(e) {
1245
1245
  let t = h ? e : e.slice(0, 1);
1246
1246
  if (u(t), m && s) {
1247
- let e = Sr(m, s, t.length);
1247
+ let e = xr(m, s, t.length);
1248
1248
  e !== s && c(e);
1249
1249
  }
1250
1250
  }
1251
1251
  function S() {
1252
- !m || !s || t(Or({
1252
+ !m || !s || t(Dr({
1253
1253
  provider: m,
1254
1254
  operator: s,
1255
1255
  selectedOptions: l,
@@ -1261,12 +1261,12 @@ function kr({ existingCondition: e, onApply: t, onCancel: n, showScopes: r = !1
1261
1261
  disabled: !0,
1262
1262
  placeholder: "Search value…",
1263
1263
  "aria-label": "Filter value"
1264
- }) : g === "enum" && m.options ? /* @__PURE__ */ j(lr, {
1264
+ }) : g === "enum" && m.options ? /* @__PURE__ */ j(cr, {
1265
1265
  provider: m,
1266
1266
  selected: l,
1267
1267
  onSelectedChange: x,
1268
1268
  multiple: h
1269
- }, m.field) : m.valueLoader ? /* @__PURE__ */ j(cr, {
1269
+ }, m.field) : m.valueLoader ? /* @__PURE__ */ j(sr, {
1270
1270
  provider: m,
1271
1271
  selected: l,
1272
1272
  onSelectedChange: x,
@@ -1284,7 +1284,7 @@ function kr({ existingCondition: e, onApply: t, onCancel: n, showScopes: r = !1
1284
1284
  return /* @__PURE__ */ M("div", {
1285
1285
  className: "flex w-[340px] flex-col gap-4 p-4",
1286
1286
  children: [
1287
- /* @__PURE__ */ M(we, { children: [/* @__PURE__ */ j(Ee, { children: "Filter by" }), /* @__PURE__ */ j(mr, {
1287
+ /* @__PURE__ */ M(we, { children: [/* @__PURE__ */ j(Ee, { children: "Filter by" }), /* @__PURE__ */ j(pr, {
1288
1288
  providers: i,
1289
1289
  selectedField: a,
1290
1290
  onFieldChange: y,
@@ -1300,7 +1300,7 @@ function kr({ existingCondition: e, onApply: t, onCancel: n, showScopes: r = !1
1300
1300
  children: /* @__PURE__ */ j(Le, { placeholder: "Select operator…" })
1301
1301
  }), /* @__PURE__ */ j(Pe, { children: (m?.operators ?? []).map((e) => /* @__PURE__ */ j(Fe, {
1302
1302
  value: e,
1303
- children: vr(e)
1303
+ children: _r(e)
1304
1304
  }, e)) })]
1305
1305
  })] }),
1306
1306
  _ ? /* @__PURE__ */ M(we, { children: [/* @__PURE__ */ j(Ee, { children: "Filter value" }), C()] }) : null,
@@ -1325,31 +1325,31 @@ function kr({ existingCondition: e, onApply: t, onCancel: n, showScopes: r = !1
1325
1325
  }
1326
1326
  //#endregion
1327
1327
  //#region src/filters/utils/filter-display.ts
1328
- function Ar(e, t) {
1328
+ function kr(e, t) {
1329
1329
  let n = e.value[t];
1330
1330
  if (n === void 0) return "";
1331
1331
  let r = e.valueLabels?.[t];
1332
1332
  return r != null && r !== "" ? r : n;
1333
1333
  }
1334
- function jr(e) {
1334
+ function Ar(e) {
1335
1335
  return e.value.length === 1 && e.operator === "in" ? "eq" : e.value.length === 1 && e.operator === "not_in" ? "neq" : e.operator;
1336
1336
  }
1337
- function Mr(e) {
1338
- return hr[e] ?? e;
1337
+ function jr(e) {
1338
+ return mr[e] ?? e;
1339
1339
  }
1340
- function Nr(e) {
1340
+ function Mr(e) {
1341
1341
  if (e.value.length === 0) return e.label;
1342
- let t = Mr(jr(e));
1343
- return e.value.length > 1 ? `${e.label} ${t} (${e.value.length})` : `${e.label} ${t} ${Ar(e, 0)}`;
1342
+ let t = jr(Ar(e));
1343
+ return e.value.length > 1 ? `${e.label} ${t} (${e.value.length})` : `${e.label} ${t} ${kr(e, 0)}`;
1344
1344
  }
1345
- function Pr(e) {
1345
+ function Nr(e) {
1346
1346
  if (e.value.length === 0) return {
1347
1347
  name: e.label,
1348
1348
  operator: "",
1349
1349
  value: "",
1350
1350
  isCount: !1
1351
1351
  };
1352
- let t = Mr(jr(e));
1352
+ let t = jr(Ar(e));
1353
1353
  return e.value.length > 1 ? {
1354
1354
  name: e.label,
1355
1355
  operator: t,
@@ -1358,26 +1358,26 @@ function Pr(e) {
1358
1358
  } : {
1359
1359
  name: e.label,
1360
1360
  operator: t,
1361
- value: Ar(e, 0),
1361
+ value: kr(e, 0),
1362
1362
  isCount: !1
1363
1363
  };
1364
1364
  }
1365
- function Fr(e) {
1365
+ function Pr(e) {
1366
1366
  if (e.value.length === 0) return e.label;
1367
- let t = Mr(jr(e));
1367
+ let t = jr(Ar(e));
1368
1368
  if (e.value.length > 1) {
1369
- let n = e.value.map((t, n) => Ar(e, n));
1369
+ let n = e.value.map((t, n) => kr(e, n));
1370
1370
  return `${e.label} ${t} [${n.join(", ")}]`;
1371
1371
  }
1372
- return `${e.label} ${t} ${Ar(e, 0)}`;
1372
+ return `${e.label} ${t} ${kr(e, 0)}`;
1373
1373
  }
1374
1374
  //#endregion
1375
1375
  //#region src/filters/FilterChip.tsx
1376
- function Ir(e, t, n) {
1376
+ function Fr(e, t, n) {
1377
1377
  return e ? t ? `Filter: ${n}` : `Edit filter: ${n}. Press Delete to remove.` : `Active filter: ${n}`;
1378
1378
  }
1379
- var Lr = S(x(function({ condition: e, onEdit: t, onRemove: n, editable: r = !0, disabled: i = !1, active: a = !1, className: o, "data-chip-index": s }, c) {
1380
- let l = Pr(e), u = Fr(e), d = r && !i, f = _r.has(e.operator), [p, m] = k(!1);
1379
+ var Ir = S(x(function({ condition: e, onEdit: t, onRemove: n, editable: r = !0, disabled: i = !1, active: a = !1, className: o, "data-chip-index": s }, c) {
1380
+ let l = Nr(e), u = Pr(e), d = r && !i, f = gr.has(e.operator), [p, m] = k(!1);
1381
1381
  function h(e) {
1382
1382
  e.stopPropagation(), d && n?.();
1383
1383
  }
@@ -1404,7 +1404,7 @@ var Lr = S(x(function({ condition: e, onEdit: t, onRemove: n, editable: r = !0,
1404
1404
  ref: c,
1405
1405
  "data-chip-index": s,
1406
1406
  className: V("inline-flex items-center gap-1.5", f && r && "border-dashed border-highlight/40", f && !r && "border-dashed", i && "pointer-events-none opacity-50", o),
1407
- "aria-label": Ir(r, i, u),
1407
+ "aria-label": Fr(r, i, u),
1408
1408
  "aria-disabled": i || void 0,
1409
1409
  "data-active": a || void 0,
1410
1410
  onMouseEnter: () => d && m(!0),
@@ -1426,7 +1426,7 @@ var Lr = S(x(function({ condition: e, onEdit: t, onRemove: n, editable: r = !0,
1426
1426
  type: "button",
1427
1427
  variant: "ghost",
1428
1428
  size: "sm",
1429
- className: "size-5 shrink-0 p-0 hover:bg-highlight/20",
1429
+ className: "size-5 shrink-0 p-0 hover:bg-highlight/20 dark:hover:bg-foreground/10",
1430
1430
  "aria-label": `Remove filter ${l.name}`,
1431
1431
  onClick: h,
1432
1432
  tabIndex: 0,
@@ -1438,32 +1438,32 @@ var Lr = S(x(function({ condition: e, onEdit: t, onRemove: n, editable: r = !0,
1438
1438
  })
1439
1439
  }), /* @__PURE__ */ j(R, { children: u })] });
1440
1440
  }));
1441
- Lr.displayName = "FilterChip";
1441
+ Ir.displayName = "FilterChip";
1442
1442
  //#endregion
1443
1443
  //#region src/filters/utils/filter-condition-key.ts
1444
- function Rr(e) {
1444
+ function Lr(e) {
1445
1445
  let t = JSON.stringify([...e.value].sort());
1446
1446
  return `${e.field}:${e.operator}:${t}`;
1447
1447
  }
1448
1448
  //#endregion
1449
1449
  //#region src/filters/utils/merge-conditions.ts
1450
- var zr = new Set(["eq", "in"]), Br = new Set(["neq", "not_in"]);
1450
+ var Rr = new Set(["eq", "in"]), zr = new Set(["neq", "not_in"]);
1451
+ function Br(e) {
1452
+ return Rr.has(e);
1453
+ }
1451
1454
  function Vr(e) {
1452
1455
  return zr.has(e);
1453
1456
  }
1454
- function Hr(e) {
1455
- return Br.has(e);
1457
+ function Hr(e, t) {
1458
+ return e.field === t.field ? !!(Br(e.operator) && Br(t.operator) || Vr(e.operator) && Vr(t.operator)) : !1;
1456
1459
  }
1457
- function Ur(e, t) {
1458
- return e.field === t.field ? !!(Vr(e.operator) && Vr(t.operator) || Hr(e.operator) && Hr(t.operator)) : !1;
1459
- }
1460
- function Wr(e, t, n) {
1461
- if (!Ur(e, t)) return null;
1460
+ function Ur(e, t, n) {
1461
+ if (!Hr(e, t)) return null;
1462
1462
  let r = /* @__PURE__ */ new Set(), i = [], a = [];
1463
1463
  for (let n of [e, t]) n.value.forEach((e, t) => {
1464
1464
  r.has(e) || (r.add(e), i.push(e), a.push(n.valueLabels?.[t] ?? e));
1465
1465
  });
1466
- let o = Sr(n, Vr(e.operator) ? "eq" : "neq", i.length);
1466
+ let o = xr(n, Br(e.operator) ? "eq" : "neq", i.length);
1467
1467
  return !n.operators.includes(o) || i.length > 1 && (o === "eq" || o === "neq") ? null : {
1468
1468
  field: e.field,
1469
1469
  label: e.label,
@@ -1474,11 +1474,11 @@ function Wr(e, t, n) {
1474
1474
  }
1475
1475
  //#endregion
1476
1476
  //#region src/filters/FilterBar.tsx
1477
- function Gr(e, t) {
1477
+ function Wr(e, t) {
1478
1478
  return e ? e.mode === "add" ? "add" : t ? `edit-${t.field}-${t.operator}-${JSON.stringify(t.value)}` : `edit-${e.editIndex}` : "closed";
1479
1479
  }
1480
- function Kr({ filters: e, onFiltersChange: t, editable: n = !0, showScopes: r = !1, scopeFilterField: i, className: a }) {
1481
- let o = Zn(i), [s, c] = k(null), l = O(null), u = O(/* @__PURE__ */ new Map()), d = O(null), f = O({ getBoundingClientRect: () => new DOMRect() }), p = s?.editIndex !== void 0 && s.editIndex >= 0 && s.editIndex < e.length, m = s !== null && (s.mode === "add" || p), h = p ? e[s.editIndex] : void 0, g = C((e) => {
1480
+ function Gr({ filters: e, onFiltersChange: t, editable: n = !0, showScopes: r = !1, scopeFilterField: i, className: a }) {
1481
+ let o = Xn(i), [s, c] = k(null), l = O(null), u = O(/* @__PURE__ */ new Map()), d = O(null), f = O({ getBoundingClientRect: () => new DOMRect() }), p = s?.editIndex !== void 0 && s.editIndex >= 0 && s.editIndex < e.length, m = s !== null && (s.mode === "add" || p), h = p ? e[s.editIndex] : void 0, g = C((e) => {
1482
1482
  if (e) {
1483
1483
  let t = Number(e.dataset.chipIndex);
1484
1484
  u.current.set(t, e);
@@ -1509,7 +1509,7 @@ function Kr({ filters: e, onFiltersChange: t, editable: n = !0, showScopes: r =
1509
1509
  }
1510
1510
  let r = o.find((e) => e.field === n.field), i = e.findIndex((e) => e.field === n.field), a = i >= 0 ? e[i] : void 0;
1511
1511
  if (a && r) {
1512
- let o = Wr(a, n, r);
1512
+ let o = Ur(a, n, r);
1513
1513
  if (o) {
1514
1514
  t(e.map((e, t) => t === i ? o : e)), b();
1515
1515
  return;
@@ -1547,14 +1547,14 @@ function Kr({ filters: e, onFiltersChange: t, editable: n = !0, showScopes: r =
1547
1547
  size: "sm",
1548
1548
  onClick: _,
1549
1549
  className: "shrink-0",
1550
- children: [/* @__PURE__ */ j(ut, {
1550
+ children: [/* @__PURE__ */ j(dt, {
1551
1551
  className: "size-4",
1552
1552
  "aria-hidden": "true"
1553
1553
  }), "Add filter"]
1554
1554
  }) : null,
1555
1555
  e.map((e, t) => {
1556
1556
  let r = s?.mode === "edit" && s.editIndex === t;
1557
- return /* @__PURE__ */ j(Lr, {
1557
+ return /* @__PURE__ */ j(Ir, {
1558
1558
  ref: g,
1559
1559
  "data-chip-index": t,
1560
1560
  condition: e,
@@ -1563,14 +1563,14 @@ function Kr({ filters: e, onFiltersChange: t, editable: n = !0, showScopes: r =
1563
1563
  active: r,
1564
1564
  onEdit: () => v(t),
1565
1565
  onRemove: () => w(t)
1566
- }, Rr(e));
1566
+ }, Lr(e));
1567
1567
  }),
1568
1568
  n && e.length > 0 ? /* @__PURE__ */ j("button", {
1569
1569
  type: "button",
1570
1570
  onClick: T,
1571
1571
  className: "ml-1 shrink-0 rounded p-1 text-muted-foreground hover:bg-muted hover:text-foreground",
1572
1572
  "aria-label": "Clear all filters",
1573
- children: /* @__PURE__ */ j(pt, { className: "size-3.5" })
1573
+ children: /* @__PURE__ */ j(ot, { className: "size-3.5" })
1574
1574
  }) : null
1575
1575
  ]
1576
1576
  }),
@@ -1582,44 +1582,44 @@ function Kr({ filters: e, onFiltersChange: t, editable: n = !0, showScopes: r =
1582
1582
  sideOffset: 8,
1583
1583
  className: "w-auto p-0",
1584
1584
  onOpenAutoFocus: E,
1585
- children: m ? /* @__PURE__ */ j(kr, {
1585
+ children: m ? /* @__PURE__ */ j(Or, {
1586
1586
  existingCondition: h,
1587
1587
  onApply: S,
1588
1588
  onCancel: b,
1589
1589
  showScopes: r
1590
- }, Gr(s, h)) : null
1590
+ }, Wr(s, h)) : null
1591
1591
  })
1592
1592
  ]
1593
1593
  }) });
1594
1594
  }
1595
1595
  //#endregion
1596
1596
  //#region src/dashboards/WidgetGroupContext.tsx
1597
- var qr = [], Jr = y(null), Yr = Jr.Provider;
1598
- function Xr() {
1599
- return w(Jr);
1597
+ var Kr = [], qr = y(null), Jr = qr.Provider;
1598
+ function Yr() {
1599
+ return w(qr);
1600
1600
  }
1601
1601
  //#endregion
1602
1602
  //#region src/dashboards/resolve-stable-time-range.ts
1603
- var Zr = 6e4;
1604
- function Qr(e) {
1603
+ var Xr = 6e4;
1604
+ function Zr(e) {
1605
1605
  if (e.type === "absolute") return e;
1606
- let t = Yn(e.period);
1606
+ let t = Jn(e.period);
1607
1607
  return {
1608
1608
  type: "absolute",
1609
- from: Math.floor(t.from / Zr) * Zr,
1610
- to: Math.floor(t.to / Zr) * Zr
1609
+ from: Math.floor(t.from / Xr) * Xr,
1610
+ to: Math.floor(t.to / Xr) * Xr
1611
1611
  };
1612
1612
  }
1613
1613
  //#endregion
1614
1614
  //#region src/hooks/use-stable-time-range.ts
1615
- function $r(e) {
1615
+ function Qr(e) {
1616
1616
  return Math.floor(Date.now() / e);
1617
1617
  }
1618
- function J(e) {
1619
- let t = Qt(), n = t?.intervalMs ?? 6e4, r = t?.isLive ?? !0, [i, a] = k(() => $r(n));
1618
+ function Y(e) {
1619
+ let t = Qt(), n = t?.intervalMs ?? 6e4, r = t?.isLive ?? !0, [i, a] = k(() => Qr(n));
1620
1620
  return T(() => {
1621
1621
  if (e.type === "absolute" || !r) return;
1622
- let t, i = () => a($r(n)), o = n - Date.now() % n, s = setTimeout(() => {
1622
+ let t, i = () => a(Qr(n)), o = n - Date.now() % n, s = setTimeout(() => {
1623
1623
  i(), t = setInterval(i, n);
1624
1624
  }, o);
1625
1625
  if (typeof document < "u") {
@@ -1637,54 +1637,54 @@ function J(e) {
1637
1637
  e.type,
1638
1638
  r,
1639
1639
  n
1640
- ]), D(() => Qr(e), [e, i]);
1640
+ ]), D(() => Zr(e), [e, i]);
1641
1641
  }
1642
1642
  //#endregion
1643
1643
  //#region src/dashboards/adapters/facets-adapter.ts
1644
- var ei = 20;
1645
- function ti(e) {
1646
- return e.length <= ei ? e : `${e.slice(0, ei - 1)}…`;
1644
+ var $r = 20;
1645
+ function ei(e) {
1646
+ return e.length <= $r ? e : `${e.slice(0, $r - 1)}…`;
1647
1647
  }
1648
- function ni(e) {
1648
+ function ti(e) {
1649
1649
  return e.map((e) => ({
1650
1650
  category: e.value,
1651
1651
  value: e.count
1652
1652
  }));
1653
1653
  }
1654
- function ri(e) {
1654
+ function ni(e) {
1655
1655
  return e.map((e) => ({
1656
- category: ti(e.label || e.value),
1656
+ category: ei(e.label || e.value),
1657
1657
  count: e.count
1658
1658
  }));
1659
1659
  }
1660
1660
  //#endregion
1661
1661
  //#region src/dashboards/use-merged-widget-filters.ts
1662
- function ii(e, t) {
1663
- return K(q(), t, e);
1662
+ function ri(e, t) {
1663
+ return q(J(), t, e);
1664
1664
  }
1665
1665
  //#endregion
1666
1666
  //#region src/dashboards/renderers/BarPresentation.tsx
1667
- var ai = 160, oi = 72, si = 7, ci = 20;
1668
- function li({ data: e, config: t, state: n, layout: r = "vertical" }) {
1667
+ var ii = 160, ai = 72, oi = 7, si = 20;
1668
+ function ci({ data: e, config: t, state: n, layout: r = "vertical" }) {
1669
1669
  let i = D(() => {
1670
- if (!(r !== "horizontal" || e.length === 0)) return { left: Math.min(ai, Math.max(oi, e.reduce((e, t) => Math.max(e, t.category.length), 0) * si + ci)) };
1670
+ if (!(r !== "horizontal" || e.length === 0)) return { left: Math.min(ii, Math.max(ai, e.reduce((e, t) => Math.max(e, t.category.length), 0) * oi + si)) };
1671
1671
  }, [e, r]);
1672
1672
  return /* @__PURE__ */ j(St, {
1673
1673
  config: t,
1674
1674
  className: "h-full w-full",
1675
- children: /* @__PURE__ */ j(yt, {
1675
+ children: /* @__PURE__ */ M(yt, {
1676
1676
  data: [...e],
1677
1677
  state: n,
1678
1678
  layout: r,
1679
1679
  margin: i,
1680
- children: /* @__PURE__ */ j(Tt, { content: /* @__PURE__ */ j(Et, {}) })
1680
+ children: [/* @__PURE__ */ j(Tt, { content: /* @__PURE__ */ j(Et, {}) }), /* @__PURE__ */ j(Ct, { content: /* @__PURE__ */ j(wt, {}) })]
1681
1681
  })
1682
1682
  });
1683
1683
  }
1684
1684
  //#endregion
1685
1685
  //#region src/dashboards/renderers/BarWidgetRenderer.tsx
1686
- function ui({ widget: e, timeRange: t, filters: n }) {
1687
- let r = ii(e.filters, n), i = J(t), { data: a, isLoading: o, isError: s } = dn({
1686
+ function li({ widget: e, timeRange: t, filters: n }) {
1687
+ let r = ri(e.filters, n), i = Y(t), { data: a, isLoading: o, isError: s } = un({
1688
1688
  field: e.field,
1689
1689
  timeRange: i,
1690
1690
  filters: r,
@@ -1694,13 +1694,13 @@ function ui({ widget: e, timeRange: t, filters: n }) {
1694
1694
  s && console.error(`[BarWidgetRenderer] Failed to fetch facets for widget "${e.title}"`);
1695
1695
  }, [s, e.title]);
1696
1696
  let { data: c, config: l } = D(() => a ? {
1697
- data: ri(a),
1697
+ data: ni(a),
1698
1698
  config: { count: { label: e.title } }
1699
1699
  } : {
1700
1700
  data: [],
1701
1701
  config: {}
1702
1702
  }, [a, e.title]);
1703
- return /* @__PURE__ */ j(li, {
1703
+ return /* @__PURE__ */ j(ci, {
1704
1704
  data: c,
1705
1705
  config: l,
1706
1706
  state: o ? "loading" : s ? "empty" : "ready",
@@ -1709,36 +1709,36 @@ function ui({ widget: e, timeRange: t, filters: n }) {
1709
1709
  }
1710
1710
  //#endregion
1711
1711
  //#region src/dashboards/adapters/status-palette.ts
1712
- var di = {
1712
+ var ui = {
1713
1713
  "1XX": "var(--chart-5)",
1714
1714
  "2XX": "var(--success)",
1715
1715
  "3XX": "var(--chart-4)",
1716
1716
  "4XX": "var(--warning)",
1717
1717
  "5XX": "var(--destructive)"
1718
- }, fi = new Set([
1718
+ }, di = new Set([
1719
1719
  "HTTP_STATUS_CODE_GROUP",
1720
1720
  "http_status_code_group",
1721
1721
  "status_code_group"
1722
1722
  ]);
1723
- function pi(e, t, n) {
1723
+ function fi(e, t, n) {
1724
1724
  if (n?.[e]) return n[e];
1725
- if (t && fi.has(t)) return di[e.toUpperCase()];
1725
+ if (t && di.has(t)) return ui[e.toUpperCase()];
1726
1726
  }
1727
1727
  //#endregion
1728
1728
  //#region src/dashboards/adapters/time-series-adapter.ts
1729
- function mi(e) {
1729
+ function pi(e) {
1730
1730
  return e.replace(/[^a-zA-Z0-9_-]/g, "_");
1731
1731
  }
1732
- function hi(e, t) {
1732
+ function mi(e, t) {
1733
1733
  let n = [], r = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Map();
1734
1734
  for (let t of e) i.set(t.metric, (i.get(t.metric) ?? 0) + 1);
1735
1735
  return e.forEach((e, a) => {
1736
- let o = t[a] ?? [], s = U(e.measure), c = `${mi(e.metric)}__${mi(s)}__${mi(e.representation)}`;
1736
+ let o = t[a] ?? [], s = U(e.measure), c = `${pi(e.metric)}__${pi(s)}__${pi(e.representation)}`;
1737
1737
  if (e.groupBy) {
1738
1738
  for (let t of o) {
1739
- let i = `${c}__${mi(t.key)}`;
1739
+ let i = `${c}__${pi(t.key)}`;
1740
1740
  if (r.has(i)) continue;
1741
- let a = pi(t.key, e.groupBy, e.colorByGroup);
1741
+ let a = fi(t.key, e.groupBy, e.colorByGroup);
1742
1742
  n.push({
1743
1743
  dataKey: i,
1744
1744
  label: t.label,
@@ -1771,10 +1771,10 @@ function hi(e, t) {
1771
1771
  seriesMap: r
1772
1772
  };
1773
1773
  }
1774
- function gi(e) {
1774
+ function hi(e) {
1775
1775
  let t = /* @__PURE__ */ new Map(), n = Infinity, r = -Infinity;
1776
1776
  for (let t of e.values()) for (let e of t) for (let t of e.points) t.timestamp < n && (n = t.timestamp), t.timestamp > r && (r = t.timestamp);
1777
- let i = r - n > _i ? bi : yi;
1777
+ let i = r - n > gi ? yi : vi;
1778
1778
  for (let n of e.values()) for (let e of n) for (let n of e.points) {
1779
1779
  let e = i(n.timestamp), r = t.get(e);
1780
1780
  (r === void 0 || n.timestamp < r) && t.set(e, n.timestamp);
@@ -1790,7 +1790,7 @@ function gi(e) {
1790
1790
  }
1791
1791
  return o;
1792
1792
  }
1793
- var _i = 1440 * 6e4, vi = [
1793
+ var gi = 1440 * 6e4, _i = [
1794
1794
  "Jan",
1795
1795
  "Feb",
1796
1796
  "Mar",
@@ -1804,25 +1804,25 @@ var _i = 1440 * 6e4, vi = [
1804
1804
  "Nov",
1805
1805
  "Dec"
1806
1806
  ];
1807
- function yi(e) {
1807
+ function vi(e) {
1808
1808
  let t = new Date(e);
1809
1809
  return `${String(t.getHours()).padStart(2, "0")}:${String(t.getMinutes()).padStart(2, "0")}`;
1810
1810
  }
1811
- function bi(e) {
1811
+ function yi(e) {
1812
1812
  let t = new Date(e);
1813
- return `${vi[t.getMonth()]} ${String(t.getDate()).padStart(2, "0")} ${String(t.getHours()).padStart(2, "0")}:${String(t.getMinutes()).padStart(2, "0")}`;
1813
+ return `${_i[t.getMonth()]} ${String(t.getDate()).padStart(2, "0")} ${String(t.getHours()).padStart(2, "0")}:${String(t.getMinutes()).padStart(2, "0")}`;
1814
1814
  }
1815
1815
  //#endregion
1816
1816
  //#region src/dashboards/compute-bucket-interval.ts
1817
- var xi = 6e4, Si = 48;
1818
- function Ci(e, t) {
1819
- if (t <= 0) return xi;
1817
+ var bi = 6e4, xi = 48;
1818
+ function Si(e, t) {
1819
+ if (t <= 0) return bi;
1820
1820
  let n = e.to - e.from, r = Math.floor(n / t);
1821
- return Math.max(xi, r);
1821
+ return Math.max(bi, r);
1822
1822
  }
1823
1823
  //#endregion
1824
1824
  //#region src/dashboards/renderers/CartesianPresentation.tsx
1825
- function wi({ data: e, config: t, series: n, seriesByKey: r, state: i, showTotal: a, totalLabel: o }) {
1825
+ function Ci({ data: e, config: t, series: n, seriesByKey: r, state: i, showTotal: a, totalLabel: o }) {
1826
1826
  let s = Object.keys(t), c = n.some((e) => e.representation === "bar") ? "band" : "point";
1827
1827
  return /* @__PURE__ */ j(St, {
1828
1828
  config: t,
@@ -1835,8 +1835,8 @@ function wi({ data: e, config: t, series: n, seriesByKey: r, state: i, showTotal
1835
1835
  children: [
1836
1836
  /* @__PURE__ */ j(Ot, {}),
1837
1837
  s.map((e) => {
1838
- let t = r?.[e] ?? Ti(e, n);
1839
- return t ? Ei(e, t) : null;
1838
+ let t = r?.[e] ?? wi(e, n);
1839
+ return t ? Ti(e, t) : null;
1840
1840
  }),
1841
1841
  /* @__PURE__ */ j(Nt, {}),
1842
1842
  /* @__PURE__ */ j(Pt, {}),
@@ -1849,10 +1849,10 @@ function wi({ data: e, config: t, series: n, seriesByKey: r, state: i, showTotal
1849
1849
  })
1850
1850
  });
1851
1851
  }
1852
- function Ti(e, t) {
1852
+ function wi(e, t) {
1853
1853
  return t.find((t) => e === t.metric || e.startsWith(`${t.metric}_`));
1854
1854
  }
1855
- function Ei(e, t) {
1855
+ function Ti(e, t) {
1856
1856
  switch (t.representation) {
1857
1857
  case "line": return /* @__PURE__ */ j(kt, {
1858
1858
  dataKey: e,
@@ -1873,14 +1873,14 @@ function Ei(e, t) {
1873
1873
  }
1874
1874
  //#endregion
1875
1875
  //#region src/dashboards/renderers/CartesianWidgetRenderer.tsx
1876
- function Di({ widget: e, timeRange: t, filters: n }) {
1877
- let r = ii(e.filters, n), i = m(), a = J(t), o = D(() => Ci(a, 48), [a]), s = te({ queries: e.series.map((e) => {
1876
+ function Ei({ widget: e, timeRange: t, filters: n }) {
1877
+ let r = ri(e.filters, n), i = m(), a = Y(t), o = D(() => Si(a, 48), [a]), s = te({ queries: e.series.map((e) => {
1878
1878
  let t = [{
1879
1879
  name: e.metric,
1880
1880
  measures: [U(e.measure)]
1881
1881
  }], n = e.groupBy ? [e.groupBy] : void 0;
1882
1882
  return {
1883
- queryKey: G.timeSeries(t, a, o, r, n),
1883
+ queryKey: K.timeSeries(t, a, o, r, n),
1884
1884
  queryFn: ({ signal: e }) => i.fetchTimeSeries({
1885
1885
  metrics: t,
1886
1886
  timeRange: a,
@@ -1896,18 +1896,18 @@ function Di({ widget: e, timeRange: t, filters: n }) {
1896
1896
  l && console.error(`[CartesianWidgetRenderer] One or more series queries failed for widget "${e.title}"`);
1897
1897
  }, [l, e.title]);
1898
1898
  let u = s.map((e) => e.dataUpdatedAt).join(","), { data: d, config: f, seriesByKey: p } = D(() => {
1899
- let { elements: t, seriesMap: n } = hi(e.series, s.map((e) => e?.data)), r = {}, i = {};
1899
+ let { elements: t, seriesMap: n } = mi(e.series, s.map((e) => e?.data)), r = {}, i = {};
1900
1900
  for (let e of t) {
1901
1901
  let t = { label: e.label };
1902
1902
  e.color && (t.color = e.color), r[e.dataKey] = t, i[e.dataKey] = e.series;
1903
1903
  }
1904
1904
  return {
1905
- data: gi(n),
1905
+ data: hi(n),
1906
1906
  config: r,
1907
1907
  seriesByKey: i
1908
1908
  };
1909
1909
  }, [e.series, u]), h = c ? "loading" : l ? "empty" : "ready";
1910
- return /* @__PURE__ */ j(wi, {
1910
+ return /* @__PURE__ */ j(Ci, {
1911
1911
  data: d,
1912
1912
  config: f,
1913
1913
  series: [...e.series],
@@ -1919,7 +1919,7 @@ function Di({ widget: e, timeRange: t, filters: n }) {
1919
1919
  }
1920
1920
  //#endregion
1921
1921
  //#region src/dashboards/renderers/DoughnutPresentation.tsx
1922
- function Oi({ data: e, config: t, state: n }) {
1922
+ function Di({ data: e, config: t, state: n }) {
1923
1923
  return /* @__PURE__ */ j(St, {
1924
1924
  config: t,
1925
1925
  className: "h-full w-full",
@@ -1932,8 +1932,8 @@ function Oi({ data: e, config: t, state: n }) {
1932
1932
  }
1933
1933
  //#endregion
1934
1934
  //#region src/dashboards/renderers/DoughnutWidgetRenderer.tsx
1935
- function ki({ widget: e, timeRange: t, filters: n }) {
1936
- let r = ii(e.filters, n), i = J(t), { data: a, isLoading: o, isError: s } = dn({
1935
+ function Oi({ widget: e, timeRange: t, filters: n }) {
1936
+ let r = ri(e.filters, n), i = Y(t), { data: a, isLoading: o, isError: s } = un({
1937
1937
  field: e.field,
1938
1938
  timeRange: i,
1939
1939
  filters: r,
@@ -1947,14 +1947,14 @@ function ki({ widget: e, timeRange: t, filters: n }) {
1947
1947
  data: [],
1948
1948
  config: {}
1949
1949
  };
1950
- let e = ni(a), t = {};
1950
+ let e = ti(a), t = {};
1951
1951
  for (let e of a) t[e.value] = { label: e.label || e.value };
1952
1952
  return {
1953
1953
  data: e,
1954
1954
  config: t
1955
1955
  };
1956
1956
  }, [a]);
1957
- return /* @__PURE__ */ j(Oi, {
1957
+ return /* @__PURE__ */ j(Di, {
1958
1958
  data: c,
1959
1959
  config: l,
1960
1960
  state: o ? "loading" : s ? "empty" : "ready"
@@ -1962,18 +1962,18 @@ function ki({ widget: e, timeRange: t, filters: n }) {
1962
1962
  }
1963
1963
  //#endregion
1964
1964
  //#region src/dashboards/adapters/measures-adapter.ts
1965
- function Ai(e, t) {
1965
+ function ki(e, t) {
1966
1966
  if (e.measures.length !== 0) return t ? e.measures.find((e) => e.name === t)?.value : e.measures[0].value;
1967
1967
  }
1968
- function ji(e, t) {
1969
- let n = Ai(e, t);
1968
+ function Ai(e, t) {
1969
+ let n = ki(e, t);
1970
1970
  return {
1971
- value: n === void 0 ? "—" : Li(n, e.unit),
1971
+ value: n === void 0 ? "—" : Ii(n, e.unit),
1972
1972
  label: e.name,
1973
1973
  unit: e.unit
1974
1974
  };
1975
1975
  }
1976
- function Mi(e, t) {
1976
+ function ji(e, t) {
1977
1977
  if (t === void 0) return;
1978
1978
  if (t === 0) return {
1979
1979
  value: 0,
@@ -1988,17 +1988,17 @@ function Mi(e, t) {
1988
1988
  direction: n > 0 ? "up" : "down"
1989
1989
  };
1990
1990
  }
1991
- function Ni(e, t) {
1991
+ function Mi(e, t) {
1992
1992
  if (!e || e.length === 0) return;
1993
1993
  let n = t ? e.find((e) => e.key === t) : e[0];
1994
1994
  if (!(!n || n.points.length < 2)) return n.points.slice().sort((e, t) => e.timestamp - t.timestamp).map((e) => e.value);
1995
1995
  }
1996
- var Pi = new Set([
1996
+ var Ni = new Set([
1997
1997
  "B",
1998
1998
  "KB",
1999
1999
  "MB",
2000
2000
  "GB"
2001
- ]), Fi = {
2001
+ ]), Pi = {
2002
2002
  PERCENT: { suffix: "%" },
2003
2003
  MILLISECONDS: { suffix: "ms" },
2004
2004
  SECONDS: { suffix: "s" },
@@ -2008,17 +2008,17 @@ var Pi = new Set([
2008
2008
  GIGABYTES: { suffix: "GB" },
2009
2009
  COUNT: { suffix: "" },
2010
2010
  COUNT_PER_SECOND: { suffix: "/s" }
2011
- }, Ii = /* @__PURE__ */ new Set();
2012
- function Li(e, t) {
2013
- let n = t ? Fi[t] : void 0;
2014
- if (t && !n && !Ii.has(t) && (Ii.add(t), console.warn(`[formatMeasureValue] Unknown unit "${t}" — value will be displayed without unit`)), n?.suffix === "%") return `${(Math.round(e * 10) / 10).toLocaleString()}%`;
2011
+ }, Fi = /* @__PURE__ */ new Set();
2012
+ function Ii(e, t) {
2013
+ let n = t ? Pi[t] : void 0;
2014
+ if (t && !n && !Fi.has(t) && (Fi.add(t), console.warn(`[formatMeasureValue] Unknown unit "${t}" — value will be displayed without unit`)), n?.suffix === "%") return `${(Math.round(e * 10) / 10).toLocaleString()}%`;
2015
2015
  if (n?.suffix === "ms" && e >= 1e3) return `${(e / 1e3).toFixed(2)} s`;
2016
- let r = n !== void 0 && Pi.has(n.suffix) ? e.toLocaleString() : e >= 1e6 ? `${(e / 1e6).toFixed(1)}M` : e >= 1e3 ? `${(e / 1e3).toFixed(1)}k` : e.toLocaleString(), i = n?.suffix;
2016
+ let r = n !== void 0 && Ni.has(n.suffix) ? e.toLocaleString() : e >= 1e6 ? `${(e / 1e6).toFixed(1)}M` : e >= 1e3 ? `${(e / 1e3).toFixed(1)}k` : e.toLocaleString(), i = n?.suffix;
2017
2017
  return i ? `${r}${i === "" ? "" : ` ${i}`}` : r;
2018
2018
  }
2019
2019
  //#endregion
2020
2020
  //#region src/dashboards/compute-previous-time-range.ts
2021
- function Ri(e) {
2021
+ function Li(e) {
2022
2022
  let t = e.to - e.from;
2023
2023
  return {
2024
2024
  type: "absolute",
@@ -2028,7 +2028,7 @@ function Ri(e) {
2028
2028
  }
2029
2029
  //#endregion
2030
2030
  //#region src/dashboards/renderers/MetricGroupPresentation.tsx
2031
- function zi({ items: e, state: t, skeletonCount: n }) {
2031
+ function Ri({ items: e, state: t, skeletonCount: n }) {
2032
2032
  return /* @__PURE__ */ j(jt, {
2033
2033
  items: e,
2034
2034
  state: t,
@@ -2037,7 +2037,7 @@ function zi({ items: e, state: t, skeletonCount: n }) {
2037
2037
  }
2038
2038
  //#endregion
2039
2039
  //#region src/dashboards/renderers/MetricGroupWidgetRenderer.tsx
2040
- function Bi(e) {
2040
+ function zi(e) {
2041
2041
  let t = /* @__PURE__ */ new Map();
2042
2042
  for (let n of e) {
2043
2043
  let e = t.get(n.name), r = n.measures ?? [];
@@ -2049,18 +2049,18 @@ function Bi(e) {
2049
2049
  measures: Array.from(t)
2050
2050
  }));
2051
2051
  }
2052
- function Vi({ widget: e, timeRange: t, filters: n }) {
2053
- let r = ii(e.filters, n), i = e.items.some((e) => e.showTrend !== !1), a = J(t), o = D(() => Bi(e.items.map((e) => ({
2052
+ function Bi({ widget: e, timeRange: t, filters: n }) {
2053
+ let r = ri(e.filters, n), i = e.items.some((e) => e.showTrend !== !1), a = Y(t), o = D(() => zi(e.items.map((e) => ({
2054
2054
  name: e.metric,
2055
2055
  measures: [U(e.measure)]
2056
- }))), [e.items]), s = D(() => Bi(e.items.filter((e) => e.showTrend !== !1).map((e) => ({
2056
+ }))), [e.items]), s = D(() => zi(e.items.filter((e) => e.showTrend !== !1).map((e) => ({
2057
2057
  name: e.metric,
2058
2058
  measures: [U(e.measure)]
2059
- }))), [e.items]), c = D(() => Ri(a), [a]), { data: l, isLoading: u, isError: d } = gn({
2059
+ }))), [e.items]), c = D(() => Li(a), [a]), { data: l, isLoading: u, isError: d } = hn({
2060
2060
  metrics: o,
2061
2061
  timeRange: a,
2062
2062
  filters: r
2063
- }), { data: f, isError: p } = gn({
2063
+ }), { data: f, isError: p } = hn({
2064
2064
  metrics: s,
2065
2065
  timeRange: c,
2066
2066
  filters: r,
@@ -2070,7 +2070,7 @@ function Vi({ widget: e, timeRange: t, filters: n }) {
2070
2070
  d && console.error(`[MetricGroupWidgetRenderer] Failed to fetch measures for "${e.title}"`);
2071
2071
  }, [d, e.title]), T(() => {
2072
2072
  p && console.error(`[MetricGroupWidgetRenderer] Failed to fetch previous-period measures for "${e.title}"`);
2073
- }, [p, e.title]), /* @__PURE__ */ j(zi, {
2073
+ }, [p, e.title]), /* @__PURE__ */ j(Ri, {
2074
2074
  items: D(() => {
2075
2075
  let t = new Map(l?.map((e) => [e.name, e]) ?? []), n = new Map(f?.map((e) => [e.name, e]) ?? []);
2076
2076
  return e.items.map((e) => {
@@ -2079,11 +2079,11 @@ function Vi({ widget: e, timeRange: t, filters: n }) {
2079
2079
  value: "—",
2080
2080
  label: e.label ?? e.metric
2081
2081
  };
2082
- let i = U(e.measure), a = ji(r, i), o = e.showTrend !== !1, s = Ai(r, i), c = n.get(e.metric), l = c ? Ai(c, i) : void 0;
2082
+ let i = U(e.measure), a = Ai(r, i), o = e.showTrend !== !1, s = ki(r, i), c = n.get(e.metric), l = c ? ki(c, i) : void 0;
2083
2083
  return {
2084
2084
  value: a.value,
2085
2085
  label: e.label ?? r.name,
2086
- trend: o && s !== void 0 ? Mi(s, l) : void 0,
2086
+ trend: o && s !== void 0 ? ji(s, l) : void 0,
2087
2087
  trendSentiment: e.sentiment
2088
2088
  };
2089
2089
  });
@@ -2098,7 +2098,7 @@ function Vi({ widget: e, timeRange: t, filters: n }) {
2098
2098
  }
2099
2099
  //#endregion
2100
2100
  //#region src/dashboards/renderers/MetricPresentation.tsx
2101
- function Hi({ value: e, label: t, state: n, trend: r, trendSentiment: i, sparklineData: a }) {
2101
+ function Vi({ value: e, label: t, state: n, trend: r, trendSentiment: i, sparklineData: a }) {
2102
2102
  return /* @__PURE__ */ j(At, {
2103
2103
  value: e,
2104
2104
  label: t,
@@ -2110,20 +2110,20 @@ function Hi({ value: e, label: t, state: n, trend: r, trendSentiment: i, sparkli
2110
2110
  }
2111
2111
  //#endregion
2112
2112
  //#region src/dashboards/renderers/MetricWidgetRenderer.tsx
2113
- function Ui({ widget: e, timeRange: t, filters: n }) {
2114
- let r = ii(e.filters, n), i = e.showTrend === !0, a = e.showSparkline === !0, o = J(t), s = U(e.measure), c = D(() => [{
2113
+ function Hi({ widget: e, timeRange: t, filters: n }) {
2114
+ let r = ri(e.filters, n), i = e.showTrend === !0, a = e.showSparkline === !0, o = Y(t), s = U(e.measure), c = D(() => [{
2115
2115
  name: e.metric,
2116
2116
  measures: [s]
2117
- }], [e.metric, s]), l = D(() => Ri(o), [o]), u = D(() => Ci(o, 48), [o]), { data: d, isLoading: f, isError: p } = gn({
2117
+ }], [e.metric, s]), l = D(() => Li(o), [o]), u = D(() => Si(o, 48), [o]), { data: d, isLoading: f, isError: p } = hn({
2118
2118
  metrics: c,
2119
2119
  timeRange: o,
2120
2120
  filters: r
2121
- }), { data: m, isError: h } = gn({
2121
+ }), { data: m, isError: h } = hn({
2122
2122
  metrics: c,
2123
2123
  timeRange: l,
2124
2124
  filters: r,
2125
2125
  enabled: i
2126
- }), { data: g, isError: _ } = vn({
2126
+ }), { data: g, isError: _ } = _n({
2127
2127
  metrics: c,
2128
2128
  timeRange: o,
2129
2129
  interval: u,
@@ -2137,8 +2137,8 @@ function Ui({ widget: e, timeRange: t, filters: n }) {
2137
2137
  }, [h, e.metric]), T(() => {
2138
2138
  _ && console.error(`[MetricWidgetRenderer] Failed to fetch sparkline data for "${e.metric}"`);
2139
2139
  }, [_, e.metric]);
2140
- let v = d?.[0], y = m?.[0], b = v ? ji(v, s) : void 0, x = v ? Ai(v, s) : void 0, S = y ? Ai(y, s) : void 0, C = i && x !== void 0 ? Mi(x, S) : void 0, w = a ? Ni(g, e.metric) : void 0, E = f ? "loading" : p || !f && !v ? "empty" : "ready";
2141
- return /* @__PURE__ */ j(Hi, {
2140
+ let v = d?.[0], y = m?.[0], b = v ? Ai(v, s) : void 0, x = v ? ki(v, s) : void 0, S = y ? ki(y, s) : void 0, C = i && x !== void 0 ? ji(x, S) : void 0, w = a ? Mi(g, e.metric) : void 0, E = f ? "loading" : p || !f && !v ? "empty" : "ready";
2141
+ return /* @__PURE__ */ j(Vi, {
2142
2142
  value: b?.value ?? "—",
2143
2143
  label: e.title,
2144
2144
  state: E,
@@ -2149,21 +2149,21 @@ function Ui({ widget: e, timeRange: t, filters: n }) {
2149
2149
  }
2150
2150
  //#endregion
2151
2151
  //#region src/dashboards/widget-renderer-registry.ts
2152
- var Wi = /* @__PURE__ */ new Map();
2153
- function Y(e, t) {
2154
- Wi.set(e, t);
2152
+ var Ui = /* @__PURE__ */ new Map();
2153
+ function Wi(e, t) {
2154
+ Ui.set(e, t);
2155
2155
  }
2156
2156
  function Gi(e) {
2157
- return Wi.get(e);
2157
+ return Ui.get(e);
2158
2158
  }
2159
2159
  function Ki() {
2160
- Wi.clear();
2160
+ Ui.clear();
2161
2161
  }
2162
2162
  //#endregion
2163
2163
  //#region src/dashboards/register-default-renderers.ts
2164
2164
  var qi = !1;
2165
2165
  function Ji() {
2166
- qi || (qi = !0, Y("cartesian", Di), Y("doughnut", ki), Y("bar", ui), Y("metric", Ui), Y("metric-group", Vi));
2166
+ qi || (qi = !0, Wi("cartesian", Ei), Wi("doughnut", Oi), Wi("bar", li), Wi("metric", Hi), Wi("metric-group", Bi));
2167
2167
  }
2168
2168
  //#endregion
2169
2169
  //#region src/dashboards/renderers/UnknownWidgetFallback.tsx
@@ -2195,7 +2195,7 @@ function Xi(e) {
2195
2195
  });
2196
2196
  }
2197
2197
  function Zi({ widget: e, timeRange: t, filters: n }) {
2198
- let r = Xr(), i = t ?? r?.timeRange, a = n ?? r?.filters ?? qr;
2198
+ let r = Yr(), i = t ?? r?.timeRange, a = n ?? r?.filters ?? Kr;
2199
2199
  if (!i) throw Error("[gamma-lib-observability] <WidgetItem> requires a timeRange. Provide it as a prop or wrap the component in a <WidgetGroup>.");
2200
2200
  let o = Gi(e.type);
2201
2201
  return o ? b(o, {
@@ -2207,7 +2207,7 @@ function Zi({ widget: e, timeRange: t, filters: n }) {
2207
2207
  function Qi(e, t) {
2208
2208
  if (t.type !== e.type) throw Error(`[gamma-lib-observability] <WidgetItem> data.type "${t.type}" does not match widget.type "${e.type}". The data.type must match the widget definition type.`);
2209
2209
  switch (t.type) {
2210
- case "metric": return /* @__PURE__ */ j(Hi, {
2210
+ case "metric": return /* @__PURE__ */ j(Vi, {
2211
2211
  value: t.value,
2212
2212
  label: t.label,
2213
2213
  state: t.state,
@@ -2215,12 +2215,12 @@ function Qi(e, t) {
2215
2215
  trendSentiment: t.trendSentiment,
2216
2216
  sparklineData: t.sparklineData
2217
2217
  });
2218
- case "metric-group": return /* @__PURE__ */ j(zi, {
2218
+ case "metric-group": return /* @__PURE__ */ j(Ri, {
2219
2219
  items: t.items,
2220
2220
  state: t.state,
2221
2221
  skeletonCount: t.skeletonCount
2222
2222
  });
2223
- case "cartesian": return /* @__PURE__ */ j(wi, {
2223
+ case "cartesian": return /* @__PURE__ */ j(Ci, {
2224
2224
  data: t.data,
2225
2225
  config: t.config,
2226
2226
  series: t.series,
@@ -2228,13 +2228,13 @@ function Qi(e, t) {
2228
2228
  showTotal: t.showTotal,
2229
2229
  totalLabel: t.totalLabel
2230
2230
  });
2231
- case "bar": return /* @__PURE__ */ j(li, {
2231
+ case "bar": return /* @__PURE__ */ j(ci, {
2232
2232
  data: t.data,
2233
2233
  config: t.config,
2234
2234
  state: t.state,
2235
2235
  layout: t.layout
2236
2236
  });
2237
- case "doughnut": return /* @__PURE__ */ j(Oi, {
2237
+ case "doughnut": return /* @__PURE__ */ j(Di, {
2238
2238
  data: t.data,
2239
2239
  config: t.config,
2240
2240
  state: t.state
@@ -2251,7 +2251,7 @@ var $i = {
2251
2251
  xs: 12,
2252
2252
  xxs: 12
2253
2253
  };
2254
- function ea({ dashboard: e, timeRange: t, filters: n = qr, editable: r = !1, rowHeight: i, breakpointCols: o = $i, onLayoutChange: s }) {
2254
+ function ea({ dashboard: e, timeRange: t, filters: n = Kr, editable: r = !1, rowHeight: i, breakpointCols: o = $i, onLayoutChange: s }) {
2255
2255
  let c = a("observability.dashboards.write"), l = r && c, u = D(() => e.widgets.map((e) => ({
2256
2256
  id: e.id,
2257
2257
  x: e.layout.x,
@@ -2298,8 +2298,8 @@ var na = {
2298
2298
  start: "items-start",
2299
2299
  end: "items-end"
2300
2300
  };
2301
- function ra({ timeRange: e, filters: t = qr, align: n = "stretch", children: r }) {
2302
- return /* @__PURE__ */ j(Yr, {
2301
+ function ra({ timeRange: e, filters: t = Kr, align: n = "stretch", children: r }) {
2302
+ return /* @__PURE__ */ j(Jr, {
2303
2303
  value: D(() => ({
2304
2304
  timeRange: e,
2305
2305
  filters: t
@@ -2377,8 +2377,8 @@ function fa({ isFetching: e, className: t }) {
2377
2377
  //#endregion
2378
2378
  //#region src/routing/use-observability-url-state.ts
2379
2379
  function pa() {
2380
- let [e, t] = Vt(), n = D(() => Mn(e.get("q"), e.get("v")), [e]), r = C((e, n) => {
2381
- let r = jn({
2380
+ let [e, t] = Vt(), n = D(() => jn(e.get("q"), e.get("v")), [e]), r = C((e, n) => {
2381
+ let r = An({
2382
2382
  conditions: n,
2383
2383
  timeRange: e
2384
2384
  });
@@ -2388,7 +2388,7 @@ function pa() {
2388
2388
  }, { replace: !0 });
2389
2389
  }, [t]), i = C((e) => r(e, n.conditions), [r, n.conditions]), a = C((e) => r(n.timeRange, e), [r, n.timeRange]);
2390
2390
  return {
2391
- timeRange: n.timeRange ?? Dn,
2391
+ timeRange: n.timeRange ?? En,
2392
2392
  filters: n.conditions,
2393
2393
  setTimeRange: i,
2394
2394
  setFilters: a
@@ -2616,7 +2616,7 @@ var Da = 40, Oa = "HTTP_REQUESTS", ka = "COUNT", Aa = {
2616
2616
  to: 599
2617
2617
  };
2618
2618
  function Na(e) {
2619
- let { timeRange: t, filters: r, enabled: i = !0 } = e, a = n(), o = K(q(), r), s = J(t), c = D(() => Ci(s, Da), [s]), l = D(() => [{
2619
+ let { timeRange: t, filters: r, enabled: i = !0 } = e, a = n(), o = q(J(), r), s = Y(t), c = D(() => Si(s, Da), [s]), l = D(() => [{
2620
2620
  name: Oa,
2621
2621
  measures: [ka]
2622
2622
  }], []), u = D(() => ["HTTP_STATUS"], []), d = D(() => [
@@ -2624,7 +2624,7 @@ function Na(e) {
2624
2624
  ja,
2625
2625
  Ma
2626
2626
  ], []), f = N({
2627
- queryKey: [...G.timeSeries(l, s, c, o, u), "histogram"],
2627
+ queryKey: [...K.timeSeries(l, s, c, o, u), "histogram"],
2628
2628
  queryFn: ({ signal: e }) => a.fetchTimeSeries({
2629
2629
  metrics: l,
2630
2630
  timeRange: s,
@@ -2707,20 +2707,20 @@ function Ra(e) {
2707
2707
  function za(e) {
2708
2708
  let t = /* @__PURE__ */ new Map();
2709
2709
  for (let n of e) t.set(n.key, [n]);
2710
- return gi(t);
2710
+ return hi(t);
2711
2711
  }
2712
2712
  //#endregion
2713
2713
  //#region src/logs/LogsExplorerPage.tsx
2714
2714
  var Ba = 300, Va = "observability-logs-columns";
2715
2715
  function Ha({ columns: e, onRowClick: t, pageSize: n = 25, getRowId: r, scopeFilterField: i, columnVisibilityStorageKey: a = Va }) {
2716
- let { timeRange: o, filters: s, setTimeRange: c, setFilters: l } = pa(), u = _n(s, tn()), [d, f] = k(""), p = hn({
2716
+ let { timeRange: o, filters: s, setTimeRange: c, setFilters: l } = pa(), u = gn(s, tn()), [d, f] = k(""), p = mn({
2717
2717
  timeRange: o,
2718
2718
  filters: s,
2719
- search: ir(d, Ba) || void 0,
2719
+ search: rr(d, Ba) || void 0,
2720
2720
  pageSize: n
2721
2721
  }), m = /* @__PURE__ */ M("div", {
2722
2722
  className: "relative flex-1",
2723
- children: [/* @__PURE__ */ j(ft, { className: "absolute left-2.5 top-1/2 size-4 -translate-y-1/2 text-muted-foreground" }), /* @__PURE__ */ j(De, {
2723
+ children: [/* @__PURE__ */ j(pt, { className: "absolute left-2.5 top-1/2 size-4 -translate-y-1/2 text-muted-foreground" }), /* @__PURE__ */ j(De, {
2724
2724
  type: "search",
2725
2725
  placeholder: "Search logs…",
2726
2726
  value: d,
@@ -2741,14 +2741,14 @@ function Ha({ columns: e, onRowClick: t, pageSize: n = 25, getRowId: r, scopeFil
2741
2741
  children: [
2742
2742
  /* @__PURE__ */ j("div", {
2743
2743
  className: "flex flex-1 items-center gap-2",
2744
- children: /* @__PURE__ */ j(Kr, {
2744
+ children: /* @__PURE__ */ j(Gr, {
2745
2745
  filters: u,
2746
2746
  onFiltersChange: l,
2747
2747
  scopeFilterField: i
2748
2748
  })
2749
2749
  }),
2750
2750
  /* @__PURE__ */ j(z, { children: /* @__PURE__ */ j(fa, { isFetching: p.isFetching }) }),
2751
- /* @__PURE__ */ j(Vn, {
2751
+ /* @__PURE__ */ j(Bn, {
2752
2752
  value: o,
2753
2753
  onChange: c
2754
2754
  })
@@ -2770,7 +2770,7 @@ function Ha({ columns: e, onRowClick: t, pageSize: n = 25, getRowId: r, scopeFil
2770
2770
  variant: "outline",
2771
2771
  size: "sm",
2772
2772
  onClick: p.refetch,
2773
- children: [/* @__PURE__ */ j(dt, { className: "size-3.5" }), "Retry"]
2773
+ children: [/* @__PURE__ */ j(ft, { className: "size-3.5" }), "Retry"]
2774
2774
  })
2775
2775
  ]
2776
2776
  }),
@@ -2794,7 +2794,7 @@ function Ha({ columns: e, onRowClick: t, pageSize: n = 25, getRowId: r, scopeFil
2794
2794
  //#endregion
2795
2795
  //#region src/logs/build-logs-deep-link.ts
2796
2796
  function Ua({ basePath: e, timeRange: t, filters: n = [] }) {
2797
- let r = jn({
2797
+ let r = An({
2798
2798
  conditions: n,
2799
2799
  timeRange: t
2800
2800
  }), i = `${e.replace(/\/+$/, "")}/logs`;
@@ -2806,7 +2806,7 @@ function Ua({ basePath: e, timeRange: t, filters: n = [] }) {
2806
2806
  //#region src/logs/default-connection-log-columns.tsx
2807
2807
  var Wa = {
2808
2808
  HTTP_PROXY: {
2809
- icon: ot,
2809
+ icon: st,
2810
2810
  label: "HTTP"
2811
2811
  },
2812
2812
  LLM_PROXY: {
@@ -2818,7 +2818,7 @@ var Wa = {
2818
2818
  label: "MCP"
2819
2819
  },
2820
2820
  MESSAGE: {
2821
- icon: ct,
2821
+ icon: lt,
2822
2822
  label: "Message"
2823
2823
  },
2824
2824
  WEBHOOK: {
@@ -4025,8 +4025,8 @@ function wo({ apiId: e, timestamp: t, metric: r = Co }) {
4025
4025
  from: e - So,
4026
4026
  to: e + So
4027
4027
  };
4028
- }, [t]), o = D(() => Ci(a, 30), [a]), { data: s, isLoading: c } = N({
4029
- queryKey: G.timeSeries([{ name: r }], a, o, [{
4028
+ }, [t]), o = D(() => Si(a, 30), [a]), { data: s, isLoading: c } = N({
4029
+ queryKey: K.timeSeries([{ name: r }], a, o, [{
4030
4030
  field: "API_ID",
4031
4031
  operator: "eq",
4032
4032
  value: [e],
@@ -4052,7 +4052,7 @@ function wo({ apiId: e, timestamp: t, metric: r = Co }) {
4052
4052
  } }), [l]), d = D(() => {
4053
4053
  if (!s) return [];
4054
4054
  let e = /* @__PURE__ */ new Map();
4055
- return e.set(l, s), gi(e);
4055
+ return e.set(l, s), hi(e);
4056
4056
  }, [s, l]), f = D(() => {
4057
4057
  let e = new Date(t).getTime(), n = s?.[0]?.points;
4058
4058
  if (d.length === 0 || !n?.length) return;
@@ -4263,7 +4263,7 @@ function No({ method: e, status: t, uri: n, timestamp: r, onClose: i, onNavigate
4263
4263
  size: "icon",
4264
4264
  onClick: () => f(!d),
4265
4265
  "aria-label": d ? "Exit full screen" : "Full screen",
4266
- children: j(d ? lt : rt, { className: "size-4" })
4266
+ children: j(d ? ut : rt, { className: "size-4" })
4267
4267
  })
4268
4268
  }), /* @__PURE__ */ j(R, { children: d ? "Exit full screen" : "Full screen" })] }) }),
4269
4269
  i && /* @__PURE__ */ M(A, { children: [/* @__PURE__ */ j(Re, {
@@ -4432,7 +4432,7 @@ function Bo(e) {
4432
4432
  //#endregion
4433
4433
  //#region src/logs/detail/components/LogDetailDrawer.tsx
4434
4434
  function Vo({ config: e, logId: t, onClose: n, onNavigatePrev: r, onNavigateNext: i, onFilter: a, hasPrev: o, hasNext: s }) {
4435
- let { data: c, isLoading: l, isError: u, isNotFound: d, isUnsupported: f, refetch: p } = fn({ id: t });
4435
+ let { data: c, isLoading: l, isError: u, isNotFound: d, isUnsupported: f, refetch: p } = dn({ id: t });
4436
4436
  return /* @__PURE__ */ M(ko, {
4437
4437
  open: !!t,
4438
4438
  onClose: n,
@@ -4522,7 +4522,7 @@ function Ho() {
4522
4522
  //#endregion
4523
4523
  //#region src/logs/detail/components/LogDetailPage.tsx
4524
4524
  function Uo({ config: e, onFilter: t }) {
4525
- let { logId: n } = Bt(), r = zt(), { data: i, isLoading: a, isError: o, isNotFound: s, isUnsupported: c, refetch: l } = fn({ id: n }), u = () => r(-1);
4525
+ let { logId: n } = Bt(), r = zt(), { data: i, isLoading: a, isError: o, isNotFound: s, isUnsupported: c, refetch: l } = dn({ id: n }), u = () => r(-1);
4526
4526
  return a ? /* @__PURE__ */ M("div", {
4527
4527
  className: "space-y-4 p-6",
4528
4528
  children: [
@@ -4739,7 +4739,7 @@ function rs(e) {
4739
4739
  };
4740
4740
  }
4741
4741
  function is(e, t) {
4742
- let n = Qr(e.timeRange), r = { timeRange: {
4742
+ let n = Zr(e.timeRange), r = { timeRange: {
4743
4743
  from: new Date(n.from).toISOString(),
4744
4744
  to: new Date(n.to).toISOString()
4745
4745
  } }, i = Xo(e.filters);
@@ -4915,7 +4915,7 @@ function fs(e, t) {
4915
4915
  }
4916
4916
  return {
4917
4917
  async fetchLogs(e) {
4918
- let t = Qr(e.timeRange);
4918
+ let t = Zr(e.timeRange);
4919
4919
  a = t;
4920
4920
  let r = Xo(e.filters), l = { timeRange: c(t) };
4921
4921
  r && (l.filters = r);
@@ -4944,7 +4944,7 @@ function ps({ templates: e }) {
4944
4944
  cell: ({ row: e }) => /* @__PURE__ */ M(Ft, {
4945
4945
  to: `./${e.original.id}`,
4946
4946
  className: "flex items-center gap-2 font-medium hover:underline",
4947
- children: [b(e.original.icon ?? st, { className: "size-4 text-muted-foreground" }), e.original.label]
4947
+ children: [b(e.original.icon ?? ct, { className: "size-4 text-muted-foreground" }), e.original.label]
4948
4948
  })
4949
4949
  }, {
4950
4950
  id: "description",
@@ -4970,56 +4970,86 @@ function ps({ templates: e }) {
4970
4970
  }
4971
4971
  //#endregion
4972
4972
  //#region src/routing/ObservabilityDashboardPage.tsx
4973
- function ms({ templates: e, scopeFilterField: t }) {
4974
- let { dashboardId: n } = Bt(), r = o(), i = D(() => oa(e, r), [e, r]).find((e) => e.id === n), { timeRange: a, filters: s, setTimeRange: c, setFilters: l } = pa(), u = _n(s, tn()), d = D(() => i ? aa(i, { capabilities: r }) : null, [i, r]);
4975
- return !i || !d ? /* @__PURE__ */ j("div", {
4973
+ function ms(e) {
4974
+ let [t] = Vt(), n = t.get("live");
4975
+ return /* @__PURE__ */ j(Xt, {
4976
+ config: { defaultEnabled: n === "1" || n === "true" },
4977
+ children: /* @__PURE__ */ j(hs, { ...e })
4978
+ });
4979
+ }
4980
+ function hs({ templates: e, scopeFilterField: t, externalLinks: n }) {
4981
+ let { dashboardId: r } = Bt(), i = o(), a = Qt(), [, s] = Vt(), c = D(() => oa(e, i), [e, i]).find((e) => e.id === r), { timeRange: l, filters: u, setTimeRange: d, setFilters: f } = pa(), p = gn(u, tn()), m = a?.isLive ?? !1;
4982
+ T(() => {
4983
+ s((e) => {
4984
+ let t = e.has("live");
4985
+ if (m && !t) {
4986
+ let t = new URLSearchParams(e);
4987
+ return t.set("live", "1"), t;
4988
+ }
4989
+ if (!m && t) {
4990
+ let t = new URLSearchParams(e);
4991
+ return t.delete("live"), t;
4992
+ }
4993
+ return e;
4994
+ }, { replace: !0 });
4995
+ }, [m, s]);
4996
+ let h = C((e) => {
4997
+ e.type === "absolute" && a?.isLive && a.toggle(), d(e);
4998
+ }, [d, a]), g = D(() => c ? aa(c, { capabilities: i }) : null, [c, i]);
4999
+ return !c || !g ? /* @__PURE__ */ j("div", {
4976
5000
  className: "flex items-center justify-center p-8 text-muted-foreground",
4977
- children: n ? `Dashboard "${n}" not found.` : "No dashboard available."
5001
+ children: r ? `Dashboard "${r}" not found.` : "No dashboard available."
4978
5002
  }) : /* @__PURE__ */ M("div", {
4979
5003
  className: "space-y-4 p-4",
4980
5004
  children: [
4981
- /* @__PURE__ */ M("div", {
4982
- className: "flex items-center gap-2",
4983
- children: [b(i.icon ?? st, { className: "size-5 text-muted-foreground" }), /* @__PURE__ */ j("h1", {
4984
- className: "text-lg font-semibold",
4985
- children: i.label
4986
- })]
5005
+ /* @__PURE__ */ j("h1", {
5006
+ className: "text-lg font-semibold",
5007
+ children: c.label
4987
5008
  }),
4988
5009
  /* @__PURE__ */ M("div", {
4989
5010
  className: "flex flex-wrap items-center gap-3",
4990
- children: [/* @__PURE__ */ j("div", {
4991
- className: "flex flex-1 items-center gap-2",
4992
- children: /* @__PURE__ */ j(Kr, {
4993
- filters: u,
4994
- onFiltersChange: l,
4995
- scopeFilterField: t
5011
+ children: [
5012
+ /* @__PURE__ */ j("div", {
5013
+ className: "flex flex-1 items-center gap-2",
5014
+ children: /* @__PURE__ */ j(Gr, {
5015
+ filters: p,
5016
+ onFiltersChange: f,
5017
+ scopeFilterField: t
5018
+ })
5019
+ }),
5020
+ n?.map((e) => /* @__PURE__ */ M("a", {
5021
+ href: typeof e.href == "function" ? e.href(u) : e.href,
5022
+ className: "text-sm text-muted-foreground transition-colors hover:text-foreground",
5023
+ children: [e.label, " →"]
5024
+ }, e.label)),
5025
+ /* @__PURE__ */ j(z, { children: /* @__PURE__ */ j(fa, {}) }),
5026
+ /* @__PURE__ */ j(Bn, {
5027
+ value: l,
5028
+ onChange: h
4996
5029
  })
4997
- }), /* @__PURE__ */ j(Vn, {
4998
- value: a,
4999
- onChange: c
5000
- })]
5030
+ ]
5001
5031
  }),
5002
5032
  /* @__PURE__ */ j(ea, {
5003
- dashboard: d,
5004
- timeRange: a,
5005
- filters: s
5033
+ dashboard: g,
5034
+ timeRange: l,
5035
+ filters: u
5006
5036
  })
5007
5037
  ]
5008
5038
  });
5009
5039
  }
5010
5040
  //#endregion
5011
5041
  //#region src/routing/ObservabilityRoutes.tsx
5012
- var hs = [];
5013
- function gs({ children: e }) {
5042
+ var gs = [];
5043
+ function _s({ children: e }) {
5014
5044
  let t = tn(), { data: n, isLoading: r, isError: i } = N({
5015
5045
  queryKey: ["observability", "filter-definitions"],
5016
5046
  queryFn: ({ signal: e }) => t.fetchFilterDefinitions(e),
5017
5047
  enabled: !!t,
5018
5048
  staleTime: 300 * 1e3
5019
5049
  });
5020
- return r ? /* @__PURE__ */ j(_s, {}) : i || !n ? /* @__PURE__ */ j(A, { children: e([]) }) : /* @__PURE__ */ j(A, { children: e(n) });
5050
+ return r ? /* @__PURE__ */ j(vs, {}) : i || !n ? /* @__PURE__ */ j(A, { children: e([]) }) : /* @__PURE__ */ j(A, { children: e(n) });
5021
5051
  }
5022
- function _s() {
5052
+ function vs() {
5023
5053
  return /* @__PURE__ */ M("div", {
5024
5054
  className: "flex items-center gap-2 p-4",
5025
5055
  children: [
@@ -5029,43 +5059,44 @@ function _s() {
5029
5059
  ]
5030
5060
  });
5031
5061
  }
5032
- function vs({ templates: e, contextFilters: t }) {
5062
+ function ys({ templates: e, contextFilters: t }) {
5033
5063
  let n = o(), r = D(() => oa(e, n), [e, n]);
5034
5064
  return r.length === 1 && r[0] ? /* @__PURE__ */ j(It, {
5035
5065
  to: `./${r[0].id}`,
5036
5066
  replace: !0
5037
- }) : /* @__PURE__ */ j(un, {
5067
+ }) : /* @__PURE__ */ j(ln, {
5038
5068
  filters: t,
5039
5069
  children: /* @__PURE__ */ j(ps, { templates: e })
5040
5070
  });
5041
5071
  }
5042
- function ys({ baseUrl: e, http: t, dataSource: i, filterProviders: a, logsPage: o, logsDataSource: s, logsColumns: l, logsOnRowClick: u, logsGetRowId: f, config: p }) {
5072
+ function bs({ baseUrl: e, http: t, dataSource: i, filterProviders: a, logsPage: o, logsDataSource: s, logsColumns: l, logsOnRowClick: u, logsGetRowId: f, config: p }) {
5043
5073
  let m = an(), g = t ?? m, _ = n(), v = D(() => os(e, g), [e, g]), y = i !== void 0 || _ === null, b = i ?? _ ?? v, x = D(() => ls(e, g), [e, g]), S = r(), C = D(() => p.features.logs?.enabled ? fs(e, g) : void 0, [
5044
5074
  e,
5045
5075
  g,
5046
5076
  p.features.logs?.enabled
5047
- ]), w = s ?? S ?? C, T = s !== void 0 || S === null, E = p.features.dashboards, O = p.features.logs, k = E?.contextFilters ?? hs, ee = O?.contextFilters ?? hs, te = (e) => /* @__PURE__ */ j(h, {
5077
+ ]), w = s ?? S ?? C, T = s !== void 0 || S === null, E = p.features.dashboards, O = p.features.logs, k = E?.contextFilters ?? gs, ee = O?.contextFilters ?? gs, te = (e) => /* @__PURE__ */ j(h, {
5048
5078
  providers: e,
5049
5079
  children: /* @__PURE__ */ M(Rt, { children: [
5050
5080
  E?.enabled && /* @__PURE__ */ M(A, { children: [/* @__PURE__ */ j(Lt, {
5051
5081
  path: "dashboards",
5052
- element: /* @__PURE__ */ j(vs, {
5082
+ element: /* @__PURE__ */ j(ys, {
5053
5083
  templates: E.templates,
5054
5084
  contextFilters: k
5055
5085
  })
5056
5086
  }), /* @__PURE__ */ j(Lt, {
5057
5087
  path: "dashboards/:dashboardId",
5058
- element: /* @__PURE__ */ j(un, {
5088
+ element: /* @__PURE__ */ j(ln, {
5059
5089
  filters: k,
5060
5090
  children: /* @__PURE__ */ j(ms, {
5061
5091
  templates: E.templates,
5062
- scopeFilterField: E.scopeFilterField
5092
+ scopeFilterField: E.scopeFilterField,
5093
+ externalLinks: E.externalLinks
5063
5094
  })
5064
5095
  })
5065
5096
  })] }),
5066
5097
  p.features.logs?.enabled && /* @__PURE__ */ j(Lt, {
5067
5098
  path: "logs",
5068
- element: /* @__PURE__ */ j(un, {
5099
+ element: /* @__PURE__ */ j(ln, {
5069
5100
  filters: ee,
5070
5101
  children: o ?? (w && l ? T ? /* @__PURE__ */ j(c, {
5071
5102
  dataSource: w,
@@ -5092,7 +5123,7 @@ function ys({ baseUrl: e, http: t, dataSource: i, filterProviders: a, logsPage:
5092
5123
  }),
5093
5124
  p.features.logs?.enabled && O?.logDetail && w && /* @__PURE__ */ j(Lt, {
5094
5125
  path: "logs/:logId",
5095
- element: /* @__PURE__ */ j(un, {
5126
+ element: /* @__PURE__ */ j(ln, {
5096
5127
  filters: ee,
5097
5128
  children: T ? /* @__PURE__ */ j(c, {
5098
5129
  dataSource: w,
@@ -5116,7 +5147,7 @@ function ys({ baseUrl: e, http: t, dataSource: i, filterProviders: a, logsPage:
5116
5147
  ] })
5117
5148
  }), N = /* @__PURE__ */ j(en, {
5118
5149
  source: x,
5119
- children: a ? te(a) : /* @__PURE__ */ j(gs, { children: (e) => te(e) })
5150
+ children: a ? te(a) : /* @__PURE__ */ j(_s, { children: (e) => te(e) })
5120
5151
  });
5121
5152
  return y ? /* @__PURE__ */ j(d, {
5122
5153
  dataSource: b,
@@ -5125,9 +5156,9 @@ function ys({ baseUrl: e, http: t, dataSource: i, filterProviders: a, logsPage:
5125
5156
  }
5126
5157
  //#endregion
5127
5158
  //#region src/routing/define-observability-features.ts
5128
- var bs = {
5159
+ var xs = {
5129
5160
  dashboards: {
5130
- icon: st,
5161
+ icon: ct,
5131
5162
  title: "Dashboards",
5132
5163
  order: 0
5133
5164
  },
@@ -5137,10 +5168,10 @@ var bs = {
5137
5168
  order: 1
5138
5169
  }
5139
5170
  };
5140
- function xs(e) {
5141
- let t = e.basePath ?? "observe", n = Ss(e), r = Cs(e, n, t), i = n.map((e) => `${t}/${e}`), a = ws(n, t);
5171
+ function Ss(e) {
5172
+ let t = e.basePath ?? "observe", n = Cs(e), r = ws(e, n, t), i = n.map((e) => `${t}/${e}`), a = Ts(n, t);
5142
5173
  function o(t) {
5143
- return b(ys, {
5174
+ return b(bs, {
5144
5175
  ...t,
5145
5176
  config: e
5146
5177
  });
@@ -5152,13 +5183,13 @@ function xs(e) {
5152
5183
  Routes: o
5153
5184
  };
5154
5185
  }
5155
- function Ss(e) {
5186
+ function Cs(e) {
5156
5187
  let t = [];
5157
- return e.features.dashboards?.enabled && t.push("dashboards"), e.features.logs?.enabled && t.push("logs"), t.sort((e, t) => bs[e].order - bs[t].order);
5188
+ return e.features.dashboards?.enabled && t.push("dashboards"), e.features.logs?.enabled && t.push("logs"), t.sort((e, t) => xs[e].order - xs[t].order);
5158
5189
  }
5159
- function Cs(e, t, n) {
5190
+ function ws(e, t, n) {
5160
5191
  let r = t.map((t) => {
5161
- let r = bs[t], i = e.nav.overrides?.[t];
5192
+ let r = xs[t], i = e.nav.overrides?.[t];
5162
5193
  return {
5163
5194
  key: `${n}/${t}`,
5164
5195
  title: i?.title ?? r.title,
@@ -5170,10 +5201,10 @@ function Cs(e, t, n) {
5170
5201
  items: r
5171
5202
  };
5172
5203
  }
5173
- function ws(e, t) {
5204
+ function Ts(e, t) {
5174
5205
  let n = {};
5175
5206
  for (let r of e) {
5176
- let e = bs[r], i = `${t}/${r}`;
5207
+ let e = xs[r], i = `${t}/${r}`;
5177
5208
  n[i] = {
5178
5209
  path: `${t}/${r}`,
5179
5210
  label: e.title
@@ -5182,4 +5213,4 @@ function ws(e, t) {
5182
5213
  return n;
5183
5214
  }
5184
5215
  //#endregion
5185
- export { li as BarPresentation, En as CODEC_VERSION, l as CapabilityProvider, wi as CartesianPresentation, un as ContextFiltersProvider, Si as DASHBOARD_BUCKET_TARGET, e as DEFAULT_CAPABILITIES, qt as DEFAULT_MEASURE, yn as DEFAULT_PERIOD, Jt as DEFAULT_REFRESH_INTERVAL_MS, W as DEFAULT_STALE_TIME, Dn as DEFAULT_TIME_RANGE, i as DashboardPersistenceProvider, ca as DashboardTemplatesProvider, ea as DashboardView, Oi as DoughnutPresentation, _ as FILTER_OPERATORS, Kr as FilterBar, Lr as FilterChip, kr as FilterPopoverForm, h as FilterProvidersProvider, di as HTTP_STATUS_PALETTE, rn as HttpProvider, fa as LiveIndicator, Xt as LiveRefreshProvider, X as LogDetailCodeBlock, wo as LogDetailContextChart, Vo as LogDetailDrawer, ko as LogDetailDrawerShell, Z as LogDetailEmptyField, No as LogDetailHeader, Q as LogDetailHeadersTable, Ya as LogDetailJsonTree, $ as LogDetailKeyValueGrid, Po as LogDetailMetrics, Uo as LogDetailPage, Lo as LogDetailSection, Io as LogDetailSections, ga as LogSeverityBadge, Ea as LogTable, c as LogsDataSourceProvider, Ha as LogsExplorerPage, zi as MetricGroupPresentation, Hi as MetricPresentation, d as MetricsDataSourceProvider, Cn as PERIOD_DISPLAY_LABELS, Sn as PERIOD_LABELS, bn as PRESET_CATEGORIES, xn as RELATIVE_PERIODS, Vn as TimeRangePicker, s as TracesDataSourceProvider, ra as WidgetGroup, Xi as WidgetItem, Nr as buildChipLabel, Pr as buildChipLabelParts, Fr as buildChipTooltip, Ka as buildDefaultConnectionLogColumns, xo as buildDefaultLogDetailConfig, Ua as buildLogsDeepLink, Ki as clearWidgetRenderers, Ci as computeBucketInterval, Ri as computePreviousTimeRange, Mi as computeTrend, $a as connectionLogPreset, os as createHttpDataSource, ls as createHttpFilterSource, fs as createHttpLogsSource, Mn as decodeObservabilityState, ia as defineDashboardTemplate, Xn as defineFilterProvider, vo as defineLogDetail, xs as defineObservabilityFeatures, jn as encodeObservabilityState, Ai as extractMeasureValue, Ni as extractSparklineData, ri as facetsToBar, ni as facetsToDoughnut, Hn as getLocaleWeekStart, Gi as getWidgetRenderer, Wt as isBarWidget, Ht as isCartesianWidget, Ut as isDoughnutWidget, Kt as isMetricGroupWidget, Gt as isMetricWidget, xr as isMultiSelectForFilter, ji as measureResultToMetric, K as mergeFilters, gi as mergeTimeSeriesToCartesian, ao as messageLogPreset, Sr as normalizeMembershipOperatorForValues, G as observabilityQueryKeys, vr as operatorLabel, yr as operatorNeedsValue, Ji as registerDefaultRenderers, Y as registerWidgetRenderer, aa as resolveDashboardFromTemplate, pi as resolveGroupColor, yo as resolveLogDetailVariant, U as resolveMeasure, bo as resolvePreset, Yn as resolveRelativePeriod, Qr as resolveStableTimeRange, o as useCapabilities, a as useCapability, q as useContextFilters, f as useDashboardPersistence, ua as useDashboardTemplate, la as useDashboardTemplates, dn as useFacetsQuery, u as useFilterProvider, p as useFilterProviders, an as useHttpOptions, Zt as useLiveRefresh, Eo as useLogDetailDrawerExpand, fn as useLogDetailQuery, g as useLogsDataSource, hn as useLogsPagedQuery, pn as useLogsQuery, gn as useMeasuresQuery, ii as useMergedWidgetFilters, m as useMetricsDataSource, Qt as useOptionalLiveRefresh, r as useOptionalLogsDataSource, n as useOptionalMetricsDataSource, J as useStableTimeRange, vn as useTimeSeriesQuery, t as useTracesDataSource, Xr as useWidgetGroupContext, uo as webhookLogPreset };
5216
+ export { ci as BarPresentation, Tn as CODEC_VERSION, l as CapabilityProvider, Ci as CartesianPresentation, ln as ContextFiltersProvider, xi as DASHBOARD_BUCKET_TARGET, e as DEFAULT_CAPABILITIES, qt as DEFAULT_MEASURE, vn as DEFAULT_PERIOD, Jt as DEFAULT_REFRESH_INTERVAL_MS, W as DEFAULT_STALE_TIME, En as DEFAULT_TIME_RANGE, i as DashboardPersistenceProvider, ca as DashboardTemplatesProvider, ea as DashboardView, Di as DoughnutPresentation, _ as FILTER_OPERATORS, Gr as FilterBar, Ir as FilterChip, Or as FilterPopoverForm, h as FilterProvidersProvider, ui as HTTP_STATUS_PALETTE, rn as HttpProvider, fa as LiveIndicator, Xt as LiveRefreshProvider, X as LogDetailCodeBlock, wo as LogDetailContextChart, Vo as LogDetailDrawer, ko as LogDetailDrawerShell, Z as LogDetailEmptyField, No as LogDetailHeader, Q as LogDetailHeadersTable, Ya as LogDetailJsonTree, $ as LogDetailKeyValueGrid, Po as LogDetailMetrics, Uo as LogDetailPage, Lo as LogDetailSection, Io as LogDetailSections, ga as LogSeverityBadge, Ea as LogTable, c as LogsDataSourceProvider, Ha as LogsExplorerPage, Ri as MetricGroupPresentation, Vi as MetricPresentation, d as MetricsDataSourceProvider, Sn as PERIOD_DISPLAY_LABELS, xn as PERIOD_LABELS, yn as PRESET_CATEGORIES, bn as RELATIVE_PERIODS, Bn as TimeRangePicker, s as TracesDataSourceProvider, ra as WidgetGroup, Xi as WidgetItem, Mr as buildChipLabel, Nr as buildChipLabelParts, Pr as buildChipTooltip, Ka as buildDefaultConnectionLogColumns, xo as buildDefaultLogDetailConfig, Ua as buildLogsDeepLink, Ki as clearWidgetRenderers, Si as computeBucketInterval, Li as computePreviousTimeRange, ji as computeTrend, $a as connectionLogPreset, os as createHttpDataSource, ls as createHttpFilterSource, fs as createHttpLogsSource, jn as decodeObservabilityState, ia as defineDashboardTemplate, Yn as defineFilterProvider, vo as defineLogDetail, Ss as defineObservabilityFeatures, An as encodeObservabilityState, ki as extractMeasureValue, Mi as extractSparklineData, ni as facetsToBar, ti as facetsToDoughnut, Vn as getLocaleWeekStart, Gi as getWidgetRenderer, Wt as isBarWidget, Ht as isCartesianWidget, Ut as isDoughnutWidget, Kt as isMetricGroupWidget, Gt as isMetricWidget, br as isMultiSelectForFilter, Ai as measureResultToMetric, q as mergeFilters, hi as mergeTimeSeriesToCartesian, ao as messageLogPreset, xr as normalizeMembershipOperatorForValues, K as observabilityQueryKeys, _r as operatorLabel, vr as operatorNeedsValue, Ji as registerDefaultRenderers, Wi as registerWidgetRenderer, aa as resolveDashboardFromTemplate, fi as resolveGroupColor, yo as resolveLogDetailVariant, U as resolveMeasure, bo as resolvePreset, Jn as resolveRelativePeriod, Zr as resolveStableTimeRange, o as useCapabilities, a as useCapability, J as useContextFilters, f as useDashboardPersistence, ua as useDashboardTemplate, la as useDashboardTemplates, un as useFacetsQuery, u as useFilterProvider, p as useFilterProviders, an as useHttpOptions, Zt as useLiveRefresh, Eo as useLogDetailDrawerExpand, dn as useLogDetailQuery, g as useLogsDataSource, mn as useLogsPagedQuery, fn as useLogsQuery, hn as useMeasuresQuery, ri as useMergedWidgetFilters, m as useMetricsDataSource, Qt as useOptionalLiveRefresh, r as useOptionalLogsDataSource, n as useOptionalMetricsDataSource, Y as useStableTimeRange, _n as useTimeSeriesQuery, t as useTracesDataSource, Yr as useWidgetGroupContext, uo as webhookLogPreset };