@ioai/lerobot-studio 1.3.0 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -14266,24 +14266,52 @@ _m.assign = Ad, _m.fmtNum = Ru, _m.rangeNum = Pu, _m.rangeLog = Ou, _m.rangeAsin
14266
14266
  }
14267
14267
  //#endregion
14268
14268
  //#region src/react/lib/chartTheme.ts
14269
- var vm = typeof document < "u" ? () => document.querySelector(".lerobot-root") ?? document.getElementById("lerobot-root") : () => null;
14270
- function ym(e, t, n = "#888") {
14269
+ var vm = typeof document < "u" ? () => document.querySelector(".lerobot-root") ?? document.getElementById("lerobot-root") : () => null, ym = "rgb(1, 2, 3)", bm = null, xm = null, Sm = null, Cm = null;
14270
+ function wm() {
14271
+ return typeof document > "u" ? null : bm?.isConnected && xm?.isConnected ? {
14272
+ wrap: bm,
14273
+ probe: xm
14274
+ } : (bm = document.createElement("span"), bm.setAttribute("data-lerobot-color-probe-wrap", ""), bm.style.cssText = "position:absolute;width:0;height:0;overflow:hidden;pointer-events:none;visibility:hidden", xm = document.createElement("span"), xm.setAttribute("data-lerobot-color-probe", ""), bm.appendChild(xm), document.documentElement.appendChild(bm), {
14275
+ wrap: bm,
14276
+ probe: xm
14277
+ });
14278
+ }
14279
+ function Tm() {
14280
+ return typeof document > "u" ? null : Cm || (Sm = document.createElement("canvas"), Sm.width = 1, Sm.height = 1, Cm = Sm.getContext("2d", { willReadFrequently: !0 }), Cm);
14281
+ }
14282
+ function Em(e, t) {
14283
+ let n = Tm();
14284
+ if (!n) return t;
14285
+ n.clearRect(0, 0, 1, 1), n.fillStyle = "#000000", n.fillStyle = e, n.fillRect(0, 0, 1, 1);
14286
+ let [r, i, a, o] = n.getImageData(0, 0, 1, 1).data;
14287
+ return o === 0 ? t : o === 255 ? `rgb(${r}, ${i}, ${a})` : `rgba(${r}, ${i}, ${a}, ${+(o / 255).toFixed(3)})`;
14288
+ }
14289
+ function Dm(e, t, n) {
14290
+ if (!e.trim()) return n;
14291
+ let r = wm();
14292
+ if (!r) return n;
14293
+ let { wrap: i, probe: a } = r, o = t && t.isConnected ? t : document.documentElement;
14294
+ i.parentElement !== o && o.appendChild(i), i.style.color = ym, a.style.color = e;
14295
+ let s = getComputedStyle(a).color.trim();
14296
+ return a.style.color = "", i.style.color = "", !s || s === ym || s === "rgba(0, 0, 0, 0)" || s === "transparent" ? n : Em(s, n);
14297
+ }
14298
+ function Om(e, t, n = "#888") {
14271
14299
  let r = e ?? (typeof document < "u" ? document.documentElement : null);
14272
14300
  if (!r) return n;
14273
14301
  let i = getComputedStyle(r).getPropertyValue(t).trim();
14274
- return i ? i.startsWith("oklch") || i.startsWith("oklab") || i.startsWith("hsl") || i.startsWith("rgb") || i.startsWith("color") || i.startsWith("#") ? i : `hsl(${i.includes(",") ? i : i.replace(/\s+/g, ", ")})` : n;
14302
+ return i ? Dm(i, r, n) : n;
14275
14303
  }
14276
- function bm(e, t, n = "#888") {
14277
- return ym(e, t, n);
14304
+ function km(e, t, n = "#888") {
14305
+ return Om(e, t, n);
14278
14306
  }
14279
- function xm(e) {
14307
+ function Am(e) {
14280
14308
  return {
14281
- axisStroke: ym(e, "--muted-foreground", "#6b7280"),
14282
- gridStroke: ym(e, "--border", "#e5e7eb"),
14283
- tickStroke: ym(e, "--border", "#d1d5db")
14309
+ axisStroke: Om(e, "--muted-foreground", "#6b7280"),
14310
+ gridStroke: Om(e, "--border", "#e5e7eb"),
14311
+ tickStroke: Om(e, "--border", "#d1d5db")
14284
14312
  };
14285
14313
  }
14286
- var Sm = [
14314
+ var jm = [
14287
14315
  "--chart-1",
14288
14316
  "--chart-2",
14289
14317
  "--chart-3",
@@ -14291,7 +14319,7 @@ var Sm = [
14291
14319
  "--chart-5",
14292
14320
  "--primary"
14293
14321
  ];
14294
- function Cm(e) {
14322
+ function Mm(e) {
14295
14323
  let t = [], n = [
14296
14324
  "#2563eb",
14297
14325
  "#dc2626",
@@ -14301,17 +14329,17 @@ function Cm(e) {
14301
14329
  "#0d9488"
14302
14330
  ];
14303
14331
  for (let r = 0; r < 14; r++) {
14304
- let i = Sm[r % Sm.length];
14305
- t.push(ym(e, i, n[r % n.length]));
14332
+ let i = jm[r % jm.length];
14333
+ t.push(Om(e, i, n[r % n.length]));
14306
14334
  }
14307
14335
  return t;
14308
14336
  }
14309
- function wm() {
14337
+ function Nm() {
14310
14338
  return vm();
14311
14339
  }
14312
14340
  //#endregion
14313
14341
  //#region src/react/components/panels/Common/PanelState.tsx
14314
- var Tm = ({ message: e, className: t }) => /* @__PURE__ */ W("div", {
14342
+ var Pm = ({ message: e, className: t }) => /* @__PURE__ */ W("div", {
14315
14343
  role: "status",
14316
14344
  "aria-live": "polite",
14317
14345
  className: x("flex h-full min-h-0 w-full items-center justify-center text-muted-foreground", t),
@@ -14325,7 +14353,7 @@ var Tm = ({ message: e, className: t }) => /* @__PURE__ */ W("div", {
14325
14353
  children: e
14326
14354
  })]
14327
14355
  })
14328
- }), Em = ({ message: e, className: t }) => /* @__PURE__ */ W("div", {
14356
+ }), Fm = ({ message: e, className: t }) => /* @__PURE__ */ W("div", {
14329
14357
  className: x("flex h-full min-h-0 w-full items-center justify-center text-muted-foreground", t),
14330
14358
  children: /* @__PURE__ */ W("p", {
14331
14359
  className: "text-[10px] font-medium uppercase tracking-widest opacity-50",
@@ -14334,13 +14362,13 @@ var Tm = ({ message: e, className: t }) => /* @__PURE__ */ W("div", {
14334
14362
  });
14335
14363
  //#endregion
14336
14364
  //#region src/react/components/panels/ChartPanel/NestedHierarchicalFilterList.tsx
14337
- function Dm(e, t) {
14365
+ function Im(e, t) {
14338
14366
  if (e.length === 0) return "none";
14339
14367
  let n = 0;
14340
14368
  for (let r of e) t.has(r) && n++;
14341
14369
  return n === 0 ? "none" : n === e.length ? "all" : "partial";
14342
14370
  }
14343
- var Om = Ee(function({ checked: e, indeterminate: t }) {
14371
+ var Lm = Ee(function({ checked: e, indeterminate: t }) {
14344
14372
  let n = U(null);
14345
14373
  return V(() => {
14346
14374
  n.current && (n.current.checked = e, n.current.indeterminate = t);
@@ -14351,7 +14379,7 @@ var Om = Ee(function({ checked: e, indeterminate: t }) {
14351
14379
  readOnly: !0,
14352
14380
  className: "pointer-events-none h-3.5 w-3.5 shrink-0 rounded border-border accent-primary"
14353
14381
  });
14354
- }), km = Ee(function({ featureNodes: e, selectedIds: n, searchValue: r, onSearchChange: i, onSetItemsChecked: a, onToggleItem: o, onSelectAll: s, onClearAll: l, searchPlaceholder: u, emptyLabel: d, selectAllLabel: f, onHoverChange: m, getItemColor: h, className: g }) {
14382
+ }), Rm = Ee(function({ featureNodes: e, selectedIds: n, searchValue: r, onSearchChange: i, onSetItemsChecked: a, onToggleItem: o, onSelectAll: s, onClearAll: l, searchPlaceholder: u, emptyLabel: d, selectAllLabel: f, onHoverChange: m, getItemColor: h, className: g }) {
14355
14383
  let _ = H(() => dr(e), [e]), v = H(() => fr(e, r), [e, r]), y = H(() => _.reduce((e, t) => n.has(t) ? e + 1 : e, 0), [_, n]), b = _.length > 0 && y === _.length, S = !b && y !== 0;
14356
14384
  return /* @__PURE__ */ G("div", {
14357
14385
  className: x("w-full", g),
@@ -14368,7 +14396,7 @@ var Om = Ee(function({ checked: e, indeterminate: t }) {
14368
14396
  },
14369
14397
  title: f,
14370
14398
  "aria-label": f,
14371
- children: /* @__PURE__ */ W(Om, {
14399
+ children: /* @__PURE__ */ W(Lm, {
14372
14400
  checked: b,
14373
14401
  indeterminate: S
14374
14402
  })
@@ -14402,7 +14430,7 @@ var Om = Ee(function({ checked: e, indeterminate: t }) {
14402
14430
  className: "px-2 py-3 text-xs text-muted-foreground",
14403
14431
  children: d
14404
14432
  }) : v.map((e) => {
14405
- let t = ur(e), r = Dm(t, n);
14433
+ let t = ur(e), r = Im(t, n);
14406
14434
  return /* @__PURE__ */ G("div", {
14407
14435
  className: "mb-1 border-b border-border/50 pb-1 last:border-b-0",
14408
14436
  children: [/* @__PURE__ */ G("button", {
@@ -14417,7 +14445,7 @@ var Om = Ee(function({ checked: e, indeterminate: t }) {
14417
14445
  id: e.id,
14418
14446
  itemIds: t
14419
14447
  }),
14420
- children: [/* @__PURE__ */ W(Om, {
14448
+ children: [/* @__PURE__ */ W(Lm, {
14421
14449
  checked: r === "all",
14422
14450
  indeterminate: r === "partial"
14423
14451
  }), /* @__PURE__ */ W("span", {
@@ -14440,7 +14468,7 @@ var Om = Ee(function({ checked: e, indeterminate: t }) {
14440
14468
  id: t.id,
14441
14469
  itemIds: r
14442
14470
  }),
14443
- children: [/* @__PURE__ */ W(Om, {
14471
+ children: [/* @__PURE__ */ W(Lm, {
14444
14472
  checked: i === "all",
14445
14473
  indeterminate: i === "partial"
14446
14474
  }), /* @__PURE__ */ W("span", {
@@ -14460,7 +14488,7 @@ var Om = Ee(function({ checked: e, indeterminate: t }) {
14460
14488
  itemIds: [e.id]
14461
14489
  }),
14462
14490
  children: [
14463
- /* @__PURE__ */ W(Om, {
14491
+ /* @__PURE__ */ W(Lm, {
14464
14492
  checked: n.has(e.id),
14465
14493
  indeterminate: !1
14466
14494
  }),
@@ -14480,7 +14508,7 @@ var Om = Ee(function({ checked: e, indeterminate: t }) {
14480
14508
  })
14481
14509
  })]
14482
14510
  });
14483
- }), Am = Ee(function({ featureFilterNodes: e, selectedIds: t, jointSearch: n, onSearchChange: r, onSetItemsChecked: i, onToggleItem: a, onSelectAll: o, onClearAll: s, searchPlaceholder: l, emptyLabel: u, selectAllLabel: d, summaryAllLabel: f, summaryNoneLabel: p, summarySelectedCountLabel: m, totalSeriesCount: h, onHoverChange: g, getItemColor: _, onMenuOpenChange: v, triggerClassName: y, contentClassName: b, align: S = "start", side: C = "bottom", sideOffset: w = 4 }) {
14511
+ }), zm = Ee(function({ featureFilterNodes: e, selectedIds: t, jointSearch: n, onSearchChange: r, onSetItemsChecked: i, onToggleItem: a, onSelectAll: o, onClearAll: s, searchPlaceholder: l, emptyLabel: u, selectAllLabel: d, summaryAllLabel: f, summaryNoneLabel: p, summarySelectedCountLabel: m, totalSeriesCount: h, onHoverChange: g, getItemColor: _, onMenuOpenChange: v, triggerClassName: y, contentClassName: b, align: S = "start", side: C = "bottom", sideOffset: w = 4 }) {
14484
14512
  let T = t.size, E = h > 0 && T === h ? f : T === 0 ? p : m(T);
14485
14513
  return /* @__PURE__ */ G(An, {
14486
14514
  onOpenChange: v,
@@ -14504,7 +14532,7 @@ var Om = Ee(function({ checked: e, indeterminate: t }) {
14504
14532
  side: C,
14505
14533
  sideOffset: w,
14506
14534
  className: x("w-80 max-h-[60vh] overflow-hidden", b),
14507
- children: /* @__PURE__ */ W(km, {
14535
+ children: /* @__PURE__ */ W(Rm, {
14508
14536
  featureNodes: e,
14509
14537
  selectedIds: t,
14510
14538
  searchValue: n,
@@ -14524,11 +14552,11 @@ var Om = Ee(function({ checked: e, indeterminate: t }) {
14524
14552
  });
14525
14553
  //#endregion
14526
14554
  //#region src/react/components/panels/ChartPanel/chartPanelModel.ts
14527
- function jm(e, t) {
14555
+ function Bm(e, t) {
14528
14556
  return `${e}::${t}`;
14529
14557
  }
14530
- var Mm = [8, 5];
14531
- function Nm(e) {
14558
+ var Vm = [8, 5];
14559
+ function Hm(e) {
14532
14560
  if (e <= 0) return [];
14533
14561
  let t = Array(e).fill(!1), n = [], r = [[0, e - 1]], i = 0;
14534
14562
  for (; i < r.length && n.length < e;) {
@@ -14538,7 +14566,7 @@ function Nm(e) {
14538
14566
  for (let r = 0; r < e && n.length < e; r++) t[r] || n.push(r);
14539
14567
  return n;
14540
14568
  }
14541
- function Pm(e, t, n) {
14569
+ function Um(e, t, n) {
14542
14570
  let r = Math.max(1, e.width), i = Math.ceil(e.rows / n), a = new Float64Array(i), o = 0;
14543
14571
  for (let i = 0; i < e.rows; i += n) {
14544
14572
  let n = i * r + Math.min(t, r - 1);
@@ -14546,13 +14574,13 @@ function Pm(e, t, n) {
14546
14574
  }
14547
14575
  return a;
14548
14576
  }
14549
- function Fm(e, t) {
14577
+ function Wm(e, t) {
14550
14578
  if (t <= 1) return Float64Array.from(e);
14551
14579
  let n = Math.ceil(e.length / t), r = new Float64Array(n), i = 0;
14552
14580
  for (let n = 0; n < e.length; n += t) r[i++] = e[n] ?? 0;
14553
14581
  return r;
14554
14582
  }
14555
- function Im(e, t) {
14583
+ function Gm(e, t) {
14556
14584
  if (e.length === 0) return 0;
14557
14585
  let n = 0, r = e.length - 1;
14558
14586
  if (t <= e[0]) return 0;
@@ -14564,7 +14592,7 @@ function Im(e, t) {
14564
14592
  let i = n, a = Math.max(0, i - 1);
14565
14593
  return Math.abs(e[i] - t) < Math.abs(e[a] - t) ? i : a;
14566
14594
  }
14567
- function Lm(e, t, n) {
14595
+ function Km(e, t, n) {
14568
14596
  let r = [];
14569
14597
  return e.forEach((e) => {
14570
14598
  let i = t?.[e];
@@ -14573,7 +14601,7 @@ function Lm(e, t, n) {
14573
14601
  for (let t = 0; t < s; t++) {
14574
14602
  let n = (typeof c[t] == "string" ? c[t] : null) || `${e.split(".").pop()}[${t}]`;
14575
14603
  r.push({
14576
- id: jm(e, t),
14604
+ id: Bm(e, t),
14577
14605
  featureKey: e,
14578
14606
  dimIndex: t,
14579
14607
  jointName: n,
@@ -14582,37 +14610,37 @@ function Lm(e, t, n) {
14582
14610
  }
14583
14611
  }), r;
14584
14612
  }
14585
- function Rm(e) {
14613
+ function qm(e) {
14586
14614
  let t = /* @__PURE__ */ new Set(), n = [];
14587
14615
  return e.forEach((e) => {
14588
14616
  t.has(e.jointName) || (t.add(e.jointName), n.push(e.jointName));
14589
14617
  }), n;
14590
14618
  }
14591
- function zm(e, t) {
14592
- let n = {}, r = e.slice().sort(), i = Nm(r.length), a = wm(), o = Cm(a), s = t === "dark" ? "#94a3b8" : "#64748b";
14619
+ function Jm(e, t) {
14620
+ let n = {}, r = e.slice().sort(), i = Hm(r.length), a = Nm(), o = Mm(a), s = t === "dark" ? "#94a3b8" : "#64748b";
14593
14621
  return r.forEach((e, t) => {
14594
14622
  let r = i[t] ?? t;
14595
- n[e] = o[r % o.length] ?? bm(a, "--muted-foreground", s);
14623
+ n[e] = o[r % o.length] ?? km(a, "--muted-foreground", s);
14596
14624
  }), n;
14597
14625
  }
14598
- var Bm = 2e3;
14599
- function Vm(e) {
14626
+ var Ym = 2e3;
14627
+ function Xm(e) {
14600
14628
  let { chartData: t, currentFrames: n, targetFeatures: r, features: i, resolvedTheme: a } = e, o = t.timestamp;
14601
14629
  if (!o || o.rows === 0) return null;
14602
- let s = (n && n.length > 0 ? n.map((e) => Number(e.timestamp ?? 0)) : Array.from(o.values.slice(0, o.rows))).slice(0, o.rows), c = o.rows > Bm, l = c ? Math.ceil(o.rows / Bm) : 1, u = Fm(s, l), d = n && n.length > 0 ? n.map((e) => Number(e.timestamp ?? 0)) : Array.from(o.values.slice(0, o.rows)), f = Lm(r, i, t), p = Rm(f), m = {}, h = {};
14630
+ let s = (n && n.length > 0 ? n.map((e) => Number(e.timestamp ?? 0)) : Array.from(o.values.slice(0, o.rows))).slice(0, o.rows), c = o.rows > Ym, l = c ? Math.ceil(o.rows / Ym) : 1, u = Wm(s, l), d = n && n.length > 0 ? n.map((e) => Number(e.timestamp ?? 0)) : Array.from(o.values.slice(0, o.rows)), f = Km(r, i, t), p = qm(f), m = {}, h = {};
14603
14631
  for (let e of p) h[e] = [];
14604
14632
  return r.forEach((e) => {
14605
14633
  let n = i?.[e], r = t[e];
14606
14634
  if (!n || !r) return;
14607
14635
  let a = n.shape || [r.width || 1], o = Math.max(r.width, a[0] ?? 1), s = Array.isArray(n.names) ? n.names : [];
14608
14636
  for (let t = 0; t < o; t++) {
14609
- let n = (typeof s[t] == "string" ? s[t] : null) || `${e.split(".").pop()}[${t}]`, i = jm(e, t);
14610
- m[i] = Pm(r, t, l), h[n] || (h[n] = []), h[n].push(i);
14637
+ let n = (typeof s[t] == "string" ? s[t] : null) || `${e.split(".").pop()}[${t}]`, i = Bm(e, t);
14638
+ m[i] = Um(r, t, l), h[n] || (h[n] = []), h[n].push(i);
14611
14639
  }
14612
14640
  }), {
14613
14641
  dimensions: f,
14614
14642
  allJointNames: p,
14615
- jointColorMap: zm(p, a),
14643
+ jointColorMap: Jm(p, a),
14616
14644
  simplifiedTimestamps: u,
14617
14645
  originalTimestamps: d,
14618
14646
  stride: l,
@@ -14626,7 +14654,7 @@ function Vm(e) {
14626
14654
  seriesIdsByJoint: h
14627
14655
  };
14628
14656
  }
14629
- function Hm(e, t) {
14657
+ function Zm(e, t) {
14630
14658
  let { selectedSeriesIds: n, showAction: r, showState: i, getStrokeColor: a, stateLabel: o, actionLabel: s } = t, c = [], l = [null], u = [{}];
14631
14659
  return e.dimensions.forEach((t) => {
14632
14660
  if (!n.has(t.id) || t.kind === "state" && !i || t.kind === "action" && !r) return;
@@ -14637,7 +14665,7 @@ function Hm(e, t) {
14637
14665
  label: m,
14638
14666
  stroke: () => a(t.id, f),
14639
14667
  width: p ? 1.25 : 1.5,
14640
- dash: p ? [] : Mm,
14668
+ dash: p ? [] : Vm,
14641
14669
  points: { show: !1 },
14642
14670
  spanGaps: !0
14643
14671
  }), l.push({
@@ -14658,10 +14686,10 @@ function Hm(e, t) {
14658
14686
  }
14659
14687
  //#endregion
14660
14688
  //#region src/react/components/panels/ChartPanel/Split/SplitJointMiniPlot.tsx
14661
- var Um = {
14689
+ var Qm = {
14662
14690
  min: null,
14663
14691
  max: null
14664
- }, Wm = z.memo(function({ jointName: e, core: t, chartHeight: n, selectedSeriesIds: i, showAction: o, showState: s, hasAction: c, hasState: l, actionLabel: u, stateLabel: d }) {
14692
+ }, $m = z.memo(function({ jointName: e, core: t, chartHeight: n, selectedSeriesIds: i, showAction: o, showState: s, hasAction: c, hasState: l, actionLabel: u, stateLabel: d }) {
14665
14693
  let { t: f } = a(), { subscribeFrameIndex: p } = ee(), { setFrameIndex: m } = F(), { resolvedTheme: h } = r(), g = U(null), _ = U(null), v = U(null), y = U(null), b = U(0), x = U([]), S = U("#ef4444"), C = U(null), w = U(null), T = U(null), E = U(!1), D = t.dimensions.filter((n) => n.jointName === e && i.has(n.id) && t.seriesData[n.id] != null), O = D.some((e) => e.kind === "action" && c && o || e.kind === "state" && l && s);
14666
14694
  return V(() => p((e) => {
14667
14695
  b.current = e, y.current?.redraw(!1, !1);
@@ -14683,7 +14711,7 @@ var Um = {
14683
14711
  label: `${r ? d : u}: ${e.featureKey}`,
14684
14712
  stroke: h,
14685
14713
  width: r ? 1.25 : 1.5,
14686
- dash: r ? [] : Mm,
14714
+ dash: r ? [] : Vm,
14687
14715
  points: { show: !1 },
14688
14716
  spanGaps: !0
14689
14717
  });
@@ -14696,8 +14724,8 @@ var Um = {
14696
14724
  return;
14697
14725
  }
14698
14726
  A();
14699
- let j = wm(), { axisStroke: M, gridStroke: N, tickStroke: P } = xm(j);
14700
- S.current = bm(j, "--destructive", "#ef4444");
14727
+ let j = Nm(), { axisStroke: M, gridStroke: N, tickStroke: P } = Am(j);
14728
+ S.current = km(j, "--destructive", "#ef4444");
14701
14729
  let te = (e) => {
14702
14730
  let t = v.current;
14703
14731
  if (!t) return;
@@ -14820,7 +14848,7 @@ var Um = {
14820
14848
  return { hooks: {
14821
14849
  init: (r) => {
14822
14850
  e = () => {
14823
- r.setScale("y", Um);
14851
+ r.setScale("y", Qm);
14824
14852
  }, t = () => {
14825
14853
  E.current = !0, te(r), ne();
14826
14854
  }, n = () => {
@@ -14829,7 +14857,7 @@ var Um = {
14829
14857
  if (e.button !== 0) return;
14830
14858
  let t = r.cursor.left;
14831
14859
  if (t == null) return;
14832
- let n = r.posToVal(t, "x"), i = x.current, a = i.length > 0 ? Im(i, n) : 0;
14860
+ let n = r.posToVal(t, "x"), i = x.current, a = i.length > 0 ? Gm(i, n) : 0;
14833
14861
  m(a);
14834
14862
  });
14835
14863
  },
@@ -14889,7 +14917,7 @@ var Um = {
14889
14917
  });
14890
14918
  //#endregion
14891
14919
  //#region src/react/components/panels/ChartPanel/Split/SplitChartsSheet.tsx
14892
- function Gm(e) {
14920
+ function eh(e) {
14893
14921
  let { index: t, style: n, ariaAttributes: r, jointOrder: i, chartCore: a, chartHeight: o, selectedSeriesIds: s, showAction: c, showState: l, hasAction: u, hasState: d, actionLabel: f, stateLabel: p } = e, m = i[t];
14894
14922
  if (!m) return null;
14895
14923
  let h = a.jointColorMap[m] ?? "#94a3b8";
@@ -14905,7 +14933,7 @@ function Gm(e) {
14905
14933
  title: m,
14906
14934
  children: m
14907
14935
  })
14908
- }), /* @__PURE__ */ W(Wm, {
14936
+ }), /* @__PURE__ */ W($m, {
14909
14937
  jointName: m,
14910
14938
  core: a,
14911
14939
  chartHeight: o,
@@ -14919,7 +14947,7 @@ function Gm(e) {
14919
14947
  })]
14920
14948
  });
14921
14949
  }
14922
- function Km({ open: e, onOpenChange: t, chartCore: n, allJointNames: r, selectedSeriesIds: i, jointFilterDropdownProps: o, showAction: s, showState: c, hasAction: l, hasState: u }) {
14950
+ function th({ open: e, onOpenChange: t, chartCore: n, allJointNames: r, selectedSeriesIds: i, jointFilterDropdownProps: o, showAction: s, showState: c, hasAction: l, hasState: u }) {
14923
14951
  let { t: d } = a(), f = H(() => r, [r]), p = f.length, m = hr(p), h = gr(p), g = H(() => ({
14924
14952
  jointOrder: f,
14925
14953
  chartCore: n,
@@ -14951,7 +14979,7 @@ function Km({ open: e, onOpenChange: t, chartCore: n, allJointNames: r, selected
14951
14979
  "aria-describedby": void 0,
14952
14980
  children: [/* @__PURE__ */ W("div", {
14953
14981
  className: "flex shrink-0 items-center border-b border-border/60 bg-muted/20 px-3 py-2",
14954
- children: /* @__PURE__ */ W(Am, {
14982
+ children: /* @__PURE__ */ W(zm, {
14955
14983
  ...o,
14956
14984
  contentClassName: x("w-80 max-h-[min(55vh,380px)] overflow-hidden", o.contentClassName)
14957
14985
  })
@@ -14963,7 +14991,7 @@ function Km({ open: e, onOpenChange: t, chartCore: n, allJointNames: r, selected
14963
14991
  }) : /* @__PURE__ */ W(fe, {
14964
14992
  rowHeight: h,
14965
14993
  rowCount: p,
14966
- rowComponent: Gm,
14994
+ rowComponent: eh,
14967
14995
  rowProps: g,
14968
14996
  className: "h-full w-full",
14969
14997
  style: {
@@ -14978,28 +15006,33 @@ function Km({ open: e, onOpenChange: t, chartCore: n, allJointNames: r, selected
14978
15006
  }
14979
15007
  //#endregion
14980
15008
  //#region src/react/components/panels/ChartPanel/ChartPanel.tsx
14981
- var qm = (e, t) => {
15009
+ var nh = (e, t) => {
14982
15010
  let n = Math.max(0, Math.min(1, t));
14983
15011
  if (e.startsWith("#")) {
14984
15012
  let t = e.slice(1);
14985
15013
  if (t.length === 3) return `rgba(${parseInt(t[0] + t[0], 16)}, ${parseInt(t[1] + t[1], 16)}, ${parseInt(t[2] + t[2], 16)}, ${n})`;
14986
15014
  if (t.length === 6) return `rgba(${parseInt(t.slice(0, 2), 16)}, ${parseInt(t.slice(2, 4), 16)}, ${parseInt(t.slice(4, 6), 16)}, ${n})`;
14987
15015
  }
14988
- if (e.startsWith("rgb(")) return e.replace(/^rgb\((.+)\)$/, `rgba($1, ${n})`);
15016
+ if (e.startsWith("rgb(")) {
15017
+ let t = e.slice(4, -1).trim();
15018
+ if (t.includes(",")) return `rgba(${t}, ${n})`;
15019
+ let [r] = t.split("/");
15020
+ return `rgba(${r.trim().replace(/\s+/g, ", ")}, ${n})`;
15021
+ }
14989
15022
  if (e.startsWith("rgba(")) return e;
14990
15023
  if (e.startsWith("hsl(")) {
14991
15024
  let t = e.match(/^hsl\(\s*([0-9.]+)\s*,\s*([0-9.]+%)\s*,\s*([0-9.]+%)\s*\)$/);
14992
15025
  if (t) return `hsla(${t[1]}, ${t[2]}, ${t[3]}, ${n})`;
14993
15026
  }
14994
15027
  return e.startsWith("hsla("), e;
14995
- }, Jm = {
15028
+ }, rh = {
14996
15029
  min: null,
14997
15030
  max: null
14998
- }, Ym = (e) => {
15031
+ }, ih = (e) => {
14999
15032
  let t = e.deltaY;
15000
15033
  return e.deltaMode === WheelEvent.DOM_DELTA_LINE ? t *= 16 : e.deltaMode === WheelEvent.DOM_DELTA_PAGE && (t *= 400), t;
15001
15034
  };
15002
- function Xm(e, t, n) {
15035
+ function ah(e, t, n) {
15003
15036
  let r = e.scales.y, i = r.min, a = r.max;
15004
15037
  if (typeof i != "number" || typeof a != "number" || !Number.isFinite(i) || !Number.isFinite(a)) return !1;
15005
15038
  let o = a - i;
@@ -15016,12 +15049,12 @@ function Xm(e, t, n) {
15016
15049
  max: m
15017
15050
  }), !0;
15018
15051
  }
15019
- var Zm = ({ params: e }) => {
15020
- let { t, i18n: n } = a(), { chartData: i, currentFrames: o, setFrameIndex: s, setPlaying: l } = F(), { subscribeFrameIndex: u, info: d, isLoading: f, error: p } = ee(), { selectedEpisodeIndex: m } = me(), { resolvedTheme: h } = r(), g = U(null), _ = U(null), v = U(null), y = U(null), b = U(!1), x = U(null), S = U(null), C = U(null), w = U(null), T = U(null), E = U(null), D = U(null), O = U(null), k = U(null), A = U(!1), j = U(null), M = U(!1), N = U(!1), P = U(null), te = U(null), ne = U(null), re = U(h), ie = U("#ef4444"), ae = U(0), oe = U([]), se = U(void 0), ce = U(!1), [le, ue] = ke(/* @__PURE__ */ new Set()), [de, fe] = ke(""), [pe, he] = ke(!0), [ge, _e] = ke(!0), [ve, ye] = ke(!1), be = H(() => cr(d, e?.featureKey), [d, e?.featureKey]), xe = H(() => be.some((e) => sr(e) === "action" && i[e] != null), [be, i]), Se = H(() => be.some((e) => sr(e) === "state" && i[e] != null), [be, i]), Ce = H(() => Lm(be, d?.features, i), [
15052
+ var oh = ({ params: e }) => {
15053
+ let { t, i18n: n } = a(), { chartData: i, currentFrames: o, setFrameIndex: s, setPlaying: l } = F(), { subscribeFrameIndex: u, info: d, isLoading: f, error: p } = ee(), { selectedEpisodeIndex: m } = me(), { resolvedTheme: h } = r(), g = U(null), _ = U(null), v = U(null), y = U(null), b = U(!1), x = U(null), S = U(null), C = U(null), w = U(null), T = U(null), E = U(null), D = U(null), O = U(null), k = U(null), A = U(!1), j = U(null), M = U(!1), N = U(!1), P = U(null), te = U(null), ne = U(null), re = U(h), ie = U("#ef4444"), ae = U(0), oe = U([]), se = U(void 0), ce = U(!1), [le, ue] = ke(/* @__PURE__ */ new Set()), [de, fe] = ke(""), [pe, he] = ke(!0), [ge, _e] = ke(!0), [ve, ye] = ke(!1), be = H(() => cr(d, e?.featureKey), [d, e?.featureKey]), xe = H(() => be.some((e) => sr(e) === "action" && i[e] != null), [be, i]), Se = H(() => be.some((e) => sr(e) === "state" && i[e] != null), [be, i]), Ce = H(() => Km(be, d?.features, i), [
15021
15054
  be,
15022
15055
  d?.features,
15023
15056
  i
15024
- ]), I = H(() => Rm(Ce), [Ce]), L = H(() => Ce.map((e) => e.id), [Ce]), R = H(() => Vm({
15057
+ ]), I = H(() => qm(Ce), [Ce]), L = H(() => Ce.map((e) => e.id), [Ce]), R = H(() => Xm({
15025
15058
  chartData: i,
15026
15059
  currentFrames: o,
15027
15060
  targetFeatures: be,
@@ -15033,7 +15066,7 @@ var Zm = ({ params: e }) => {
15033
15066
  be,
15034
15067
  d?.features,
15035
15068
  h
15036
- ]), z = H(() => zm(I, h), [I, h]), we = R?.jointColorMap ?? z, Te = U(!1);
15069
+ ]), z = H(() => Jm(I, h), [I, h]), we = R?.jointColorMap ?? z, Te = U(!1);
15037
15070
  V(() => {
15038
15071
  Te.current = !1;
15039
15072
  }, [L]), V(() => {
@@ -15041,8 +15074,8 @@ var Zm = ({ params: e }) => {
15041
15074
  }, [L, le.size]);
15042
15075
  let Ee = B((e, t) => {
15043
15076
  let n = P.current;
15044
- return !n || n.size === 0 || n.has(e) ? t : qm(t, .22);
15045
- }, []), De = H(() => R ? Hm(R, {
15077
+ return !n || n.size === 0 || n.has(e) ? t : nh(t, .22);
15078
+ }, []), De = H(() => R ? Zm(R, {
15046
15079
  selectedSeriesIds: le,
15047
15080
  showAction: pe,
15048
15081
  showState: ge,
@@ -15085,7 +15118,7 @@ var Zm = ({ params: e }) => {
15085
15118
  }, 300));
15086
15119
  };
15087
15120
  e?.addEventListener("mouseenter", r), e?.addEventListener("mouseleave", i);
15088
- let a = wm(), o = (e, t) => bm(a, e, t), { axisStroke: c, gridStroke: l, tickStroke: u } = xm(a);
15121
+ let a = Nm(), o = (e, t) => km(a, e, t), { axisStroke: c, gridStroke: l, tickStroke: u } = Am(a);
15089
15122
  ie.current = o("--destructive", "#ef4444"), v.current && re.current !== h && (v.current.destroy(), v.current = null, re.current = h);
15090
15123
  let d = t("units.second.short"), f = t("units.frame"), p = t("chart.tooltip.time"), m = (e, t, n) => {
15091
15124
  let r = ne.current;
@@ -15284,12 +15317,12 @@ var Zm = ({ params: e }) => {
15284
15317
  let e = de;
15285
15318
  if (de = 0, e === 0) return;
15286
15319
  let t = v.current;
15287
- t && Xm(t, e, fe);
15320
+ t && ah(t, e, fe);
15288
15321
  }, me = (e) => {
15289
- e.ctrlKey || e.metaKey || e.shiftKey || e.altKey || v.current && (de += Ym(e), fe = e.offsetY, e.preventDefault(), ue ??= window.requestAnimationFrame(pe));
15322
+ e.ctrlKey || e.metaKey || e.shiftKey || e.altKey || v.current && (de += ih(e), fe = e.offsetY, e.preventDefault(), ue ??= window.requestAnimationFrame(pe));
15290
15323
  }, he = () => {
15291
15324
  let e = v.current;
15292
- e && e.setScale("y", Jm);
15325
+ e && e.setScale("y", rh);
15293
15326
  }, ge = {
15294
15327
  width: _.current.offsetWidth || 800,
15295
15328
  height: _.current.offsetHeight || 400,
@@ -15356,7 +15389,7 @@ var Zm = ({ params: e }) => {
15356
15389
  return;
15357
15390
  }
15358
15391
  if (A.current) return;
15359
- let i = oe.current, a = i.length > 0 ? Im(i, r) : n, o = e.over, s = o.offsetLeft || 0, c = o.offsetTop || 0, l = e.cursor.left ?? 0, u = e.cursor.top ?? 0, d = s + l, f = c + u, p = _.current?.clientWidth ?? o.clientWidth, m = _.current?.clientHeight ?? o.clientHeight;
15392
+ let i = oe.current, a = i.length > 0 ? Gm(i, r) : n, o = e.over, s = o.offsetLeft || 0, c = o.offsetTop || 0, l = e.cursor.left ?? 0, u = e.cursor.top ?? 0, d = s + l, f = c + u, p = _.current?.clientWidth ?? o.clientWidth, m = _.current?.clientHeight ?? o.clientHeight;
15360
15393
  C.current = {
15361
15394
  u: e,
15362
15395
  idx: n,
@@ -15378,20 +15411,20 @@ var Zm = ({ params: e }) => {
15378
15411
  let s = te.current;
15379
15412
  if (!s) return;
15380
15413
  let c = e.valToPos(s.xVal, "x", !0), l = e.valToPos(s.yVal, "y", !0);
15381
- !Number.isFinite(c) || !Number.isFinite(l) || c < n.left || c > n.left + n.width || l < n.top || l > n.top + n.height || (t.save(), t.setLineDash([]), t.beginPath(), t.arc(c, l, 8, 0, Math.PI * 2), t.fillStyle = qm(s.color, .2), t.fill(), t.beginPath(), t.arc(c, l, 4.2, 0, Math.PI * 2), t.fillStyle = s.color, t.fill(), t.lineWidth = 1.5, t.strokeStyle = "#ffffff", t.stroke(), t.restore());
15414
+ !Number.isFinite(c) || !Number.isFinite(l) || c < n.left || c > n.left + n.width || l < n.top || l > n.top + n.height || (t.save(), t.setLineDash([]), t.beginPath(), t.arc(c, l, 8, 0, Math.PI * 2), t.fillStyle = nh(s.color, .2), t.fill(), t.beginPath(), t.arc(c, l, 4.2, 0, Math.PI * 2), t.fillStyle = s.color, t.fill(), t.lineWidth = 1.5, t.strokeStyle = "#ffffff", t.stroke(), t.restore());
15382
15415
  }]
15383
15416
  },
15384
15417
  plugins: [{ hooks: {
15385
15418
  init: (e) => {
15386
15419
  e.over.addEventListener("wheel", me, { passive: !1 }), e.over.addEventListener("dblclick", he), e.over.addEventListener("mousedown", (t) => {
15387
15420
  if (t.button === 0) {
15388
- let t = e.posToVal(e.cursor.left, "x"), n = oe.current, r = n.length > 0 ? Im(n, t) : 0;
15421
+ let t = e.posToVal(e.cursor.left, "x"), n = oe.current, r = n.length > 0 ? Gm(n, t) : 0;
15389
15422
  s(r);
15390
- let i = e.over, a = i.offsetLeft || 0, o = i.offsetTop || 0, c = e.cursor.left ?? 0, l = e.cursor.top ?? 0, u = a + c, d = o + l, f = e.data[0], p = f.length > 0 ? Im(Array.from(f), t) : 0, m = Number(f[p] ?? t), h = {
15423
+ let i = e.over, a = i.offsetLeft || 0, o = i.offsetTop || 0, c = e.cursor.left ?? 0, l = e.cursor.top ?? 0, u = a + c, d = o + l, f = e.data[0], p = f.length > 0 ? Gm(Array.from(f), t) : 0, m = Number(f[p] ?? t), h = {
15391
15424
  u: e,
15392
15425
  idx: p,
15393
15426
  xVal: m,
15394
- frameIdx: n.length > 0 ? Im(n, m) : p,
15427
+ frameIdx: n.length > 0 ? Gm(n, m) : p,
15395
15428
  cursorX: u,
15396
15429
  cursorY: d,
15397
15430
  containerW: _.current?.clientWidth ?? i.clientWidth,
@@ -15510,7 +15543,7 @@ var Zm = ({ params: e }) => {
15510
15543
  className: "flex items-center justify-between px-3 py-1.5 border-b bg-muted/20",
15511
15544
  children: [/* @__PURE__ */ G("div", {
15512
15545
  className: "flex items-center gap-2 overflow-hidden mr-2",
15513
- children: [/* @__PURE__ */ W(Am, { ...Be }), /* @__PURE__ */ G(c, {
15546
+ children: [/* @__PURE__ */ W(zm, { ...Be }), /* @__PURE__ */ G(c, {
15514
15547
  type: "button",
15515
15548
  variant: "ghost",
15516
15549
  size: "sm",
@@ -15617,10 +15650,10 @@ var Zm = ({ params: e }) => {
15617
15650
  })]
15618
15651
  }), !De && /* @__PURE__ */ W("div", {
15619
15652
  className: "absolute inset-0",
15620
- children: p && !f ? /* @__PURE__ */ W(Em, { message: p }) : m === null && !f ? /* @__PURE__ */ W(Em, { message: t("playback.noData") }) : /* @__PURE__ */ W(Tm, { message: t("common.loading") })
15653
+ children: p && !f ? /* @__PURE__ */ W(Fm, { message: p }) : m === null && !f ? /* @__PURE__ */ W(Fm, { message: t("playback.noData") }) : /* @__PURE__ */ W(Pm, { message: t("common.loading") })
15621
15654
  })]
15622
15655
  }),
15623
- R ? /* @__PURE__ */ W(Km, {
15656
+ R ? /* @__PURE__ */ W(th, {
15624
15657
  open: ve,
15625
15658
  onOpenChange: (e) => {
15626
15659
  ye(e), e && l(!1);
@@ -15636,7 +15669,7 @@ var Zm = ({ params: e }) => {
15636
15669
  }) : null
15637
15670
  ]
15638
15671
  });
15639
- }, Qm = Ee(function({ checked: e, indeterminate: t }) {
15672
+ }, sh = Ee(function({ checked: e, indeterminate: t }) {
15640
15673
  let n = U(null);
15641
15674
  return V(() => {
15642
15675
  n.current && (n.current.checked = e, n.current.indeterminate = t);
@@ -15647,7 +15680,7 @@ var Zm = ({ params: e }) => {
15647
15680
  readOnly: !0,
15648
15681
  className: "pointer-events-none h-3.5 w-3.5 shrink-0 rounded border-border accent-primary"
15649
15682
  });
15650
- }), $m = Ee(function({ groups: e, selectedIds: n, searchValue: r, onSearchChange: i, onSetItemsChecked: a, onToggleItem: o, onSelectAll: s, onClearAll: l, searchPlaceholder: u, emptyLabel: d, selectAllLabel: f, onHoverChange: m, getItemColor: h, getGroupColor: g, className: _ }) {
15683
+ }), ch = Ee(function({ groups: e, selectedIds: n, searchValue: r, onSearchChange: i, onSetItemsChecked: a, onToggleItem: o, onSelectAll: s, onClearAll: l, searchPlaceholder: u, emptyLabel: d, selectAllLabel: f, onHoverChange: m, getItemColor: h, getGroupColor: g, className: _ }) {
15651
15684
  let v = H(() => e.flatMap((e) => e.items.map((e) => e.id)), [e]), y = H(() => Qn(e, r), [e, r]), b = H(() => v.reduce((e, t) => n.has(t) ? e + 1 : e, 0), [v, n]), S = v.length > 0 && b === v.length, C = !S && b !== 0;
15652
15685
  return /* @__PURE__ */ G("div", {
15653
15686
  className: x("w-full", _),
@@ -15664,7 +15697,7 @@ var Zm = ({ params: e }) => {
15664
15697
  },
15665
15698
  title: f,
15666
15699
  "aria-label": f,
15667
- children: /* @__PURE__ */ W(Qm, {
15700
+ children: /* @__PURE__ */ W(sh, {
15668
15701
  checked: S,
15669
15702
  indeterminate: C
15670
15703
  })
@@ -15714,7 +15747,7 @@ var Zm = ({ params: e }) => {
15714
15747
  itemIds: t
15715
15748
  }),
15716
15749
  children: [
15717
- /* @__PURE__ */ W(Qm, {
15750
+ /* @__PURE__ */ W(sh, {
15718
15751
  checked: r === "all",
15719
15752
  indeterminate: r === "partial"
15720
15753
  }),
@@ -15740,7 +15773,7 @@ var Zm = ({ params: e }) => {
15740
15773
  itemIds: [e.id]
15741
15774
  }),
15742
15775
  children: [
15743
- /* @__PURE__ */ W(Qm, {
15776
+ /* @__PURE__ */ W(sh, {
15744
15777
  checked: n.has(e.id),
15745
15778
  indeterminate: !1
15746
15779
  }),
@@ -15758,39 +15791,39 @@ var Zm = ({ params: e }) => {
15758
15791
  })
15759
15792
  })]
15760
15793
  });
15761
- }), eh = 200, th = 50, nh = 20;
15762
- function rh(e) {
15794
+ }), lh = 200, uh = 50, dh = 20;
15795
+ function fh(e) {
15763
15796
  return typeof e == "object" && !!e && e.__rawMedia === !0 && (e.kind === "image" || e.kind === "video");
15764
15797
  }
15765
- function ih(e) {
15798
+ function ph(e) {
15766
15799
  return `${e.featureKey}_episode-${e.episodeIndex}_frame-${e.frameIndex}`;
15767
15800
  }
15768
- function ah(e) {
15801
+ function mh(e) {
15769
15802
  if (e == null || e === "") return null;
15770
15803
  let t = Number(e);
15771
15804
  return Number.isFinite(t) ? t : null;
15772
15805
  }
15773
- function oh(e, t) {
15806
+ function hh(e, t) {
15774
15807
  if (!e) return null;
15775
15808
  let n = e.match(t);
15776
- return n ? ah(n[1]) : null;
15809
+ return n ? mh(n[1]) : null;
15777
15810
  }
15778
- function sh(e) {
15779
- let t = ah(e?.chunks_size);
15811
+ function gh(e) {
15812
+ let t = mh(e?.chunks_size);
15780
15813
  return t && t > 0 ? t : 1e3;
15781
15814
  }
15782
- function ch(e) {
15783
- let { kind: t, featureKey: n, info: r, episode: i, episodeIndex: a, frameIndex: o, path: s } = e, c = i ?? {}, l = `videos/${n}`, u = oh(s, /chunk-(\d+)/), d = oh(s, /file-(\d+)/), f = Math.floor(a / sh(r));
15815
+ function _h(e) {
15816
+ let { kind: t, featureKey: n, info: r, episode: i, episodeIndex: a, frameIndex: o, path: s } = e, c = i ?? {}, l = `videos/${n}`, u = hh(s, /chunk-(\d+)/), d = hh(s, /file-(\d+)/), f = Math.floor(a / gh(r));
15784
15817
  return {
15785
15818
  type: t,
15786
15819
  path: s,
15787
- chunk_index: t === "video" ? ah(c[`${l}/chunk_index`]) ?? ah(c["data/chunk_index"]) ?? ah(c.chunk_index) ?? u ?? f : ah(c["data/chunk_index"]) ?? ah(c.chunk_index) ?? u ?? f,
15788
- file_index: t === "video" ? ah(c[`${l}/file_index`]) ?? ah(c["data/file_index"]) ?? ah(c.file_index) ?? d : ah(c["data/file_index"]) ?? ah(c.file_index) ?? d,
15820
+ chunk_index: t === "video" ? mh(c[`${l}/chunk_index`]) ?? mh(c["data/chunk_index"]) ?? mh(c.chunk_index) ?? u ?? f : mh(c["data/chunk_index"]) ?? mh(c.chunk_index) ?? u ?? f,
15821
+ file_index: t === "video" ? mh(c[`${l}/file_index`]) ?? mh(c["data/file_index"]) ?? mh(c.file_index) ?? d : mh(c["data/file_index"]) ?? mh(c.file_index) ?? d,
15789
15822
  episode_index: a,
15790
15823
  frame_index: o
15791
15824
  };
15792
15825
  }
15793
- var lh = Ee((e) => {
15826
+ var vh = Ee((e) => {
15794
15827
  let { data: t, labelNode: r, depth: i, isLast: a, translations: o, mediaActions: s } = e, [c, l] = ke("idle"), u = H(() => ({ marginLeft: `${i * 14}px` }), [i]), d = B((e) => {
15795
15828
  e.stopPropagation(), !(!s || c === "copying") && (l("copying"), s.copyImage(t).then((e) => {
15796
15829
  l(e === "clipboard" ? "copied" : "downloaded"), window.setTimeout(() => l("idle"), 2e3);
@@ -15826,9 +15859,9 @@ var lh = Ee((e) => {
15826
15859
  })
15827
15860
  });
15828
15861
  });
15829
- lh.displayName = "RawMediaTreeNode";
15830
- var uh = Ee(({ data: e, label: t, depth: n = 0, isLast: r = !0, annotations: i, path: a = "", translations: o, mediaActions: s }) => {
15831
- let [c, l] = ke(n < 2), [u, d] = ke(nh), p = B((n) => {
15862
+ vh.displayName = "RawMediaTreeNode";
15863
+ var yh = Ee(({ data: e, label: t, depth: n = 0, isLast: r = !0, annotations: i, path: a = "", translations: o, mediaActions: s }) => {
15864
+ let [c, l] = ke(n < 2), [u, d] = ke(dh), p = B((n) => {
15832
15865
  if (n.stopPropagation(), !(e instanceof Uint8Array)) return;
15833
15866
  let r = new Blob([e], { type: "application/octet-stream" }), i = URL.createObjectURL(r), a = document.createElement("a");
15834
15867
  a.href = i, a.download = t ? `${t}.bin` : "data.bin", document.body.appendChild(a), a.click(), document.body.removeChild(a), URL.revokeObjectURL(i);
@@ -15880,7 +15913,7 @@ var uh = Ee(({ data: e, label: t, depth: n = 0, isLast: r = !0, annotations: i,
15880
15913
  !r && ","
15881
15914
  ]
15882
15915
  });
15883
- if (rh(e)) return /* @__PURE__ */ W(lh, {
15916
+ if (fh(e)) return /* @__PURE__ */ W(vh, {
15884
15917
  data: e,
15885
15918
  labelNode: h,
15886
15919
  depth: n,
@@ -15899,7 +15932,7 @@ var uh = Ee(({ data: e, label: t, depth: n = 0, isLast: r = !0, annotations: i,
15899
15932
  !r && ","
15900
15933
  ]
15901
15934
  });
15902
- let v = f && e.length > th, y = f ? v ? e.slice(0, u) : e : Object.entries(e), b = f ? e.length - u : 0;
15935
+ let v = f && e.length > uh, y = f ? v ? e.slice(0, u) : e : Object.entries(e), b = f ? e.length - u : 0;
15903
15936
  return /* @__PURE__ */ G("div", {
15904
15937
  style: m,
15905
15938
  className: "font-mono text-xs leading-5",
@@ -15925,7 +15958,7 @@ var uh = Ee(({ data: e, label: t, depth: n = 0, isLast: r = !0, annotations: i,
15925
15958
  let r = i?.[_]?.[t], a = t;
15926
15959
  return /* @__PURE__ */ G("div", {
15927
15960
  className: "flex group",
15928
- children: [/* @__PURE__ */ W(uh, {
15961
+ children: [/* @__PURE__ */ W(yh, {
15929
15962
  data: e,
15930
15963
  depth: n + 1,
15931
15964
  isLast: t === y.length - 1 && b <= 0,
@@ -15943,21 +15976,21 @@ var uh = Ee(({ data: e, label: t, depth: n = 0, isLast: r = !0, annotations: i,
15943
15976
  style: { marginLeft: `${(n + 1) * 14}px` },
15944
15977
  className: "text-xs text-primary cursor-pointer hover:underline py-1",
15945
15978
  onClick: (t) => {
15946
- t.stopPropagation(), d((t) => Math.min(t + nh, e.length));
15979
+ t.stopPropagation(), d((t) => Math.min(t + dh, e.length));
15947
15980
  },
15948
15981
  children: o.showMore(b)
15949
15982
  }),
15950
- v && u > nh && /* @__PURE__ */ W("div", {
15983
+ v && u > dh && /* @__PURE__ */ W("div", {
15951
15984
  style: { marginLeft: `${(n + 1) * 14}px` },
15952
15985
  className: "text-xs text-muted-foreground cursor-pointer hover:underline py-1",
15953
15986
  onClick: (e) => {
15954
- e.stopPropagation(), d(nh);
15987
+ e.stopPropagation(), d(dh);
15955
15988
  },
15956
15989
  children: o.showLess
15957
15990
  })
15958
15991
  ] }) : y.map(([e, t], r, a) => {
15959
- let c = rh(t) ? `${e}:${t.kind}:${t.episodeIndex}` : e;
15960
- return /* @__PURE__ */ W(uh, {
15992
+ let c = fh(t) ? `${e}:${t.kind}:${t.episodeIndex}` : e;
15993
+ return /* @__PURE__ */ W(yh, {
15961
15994
  label: e,
15962
15995
  data: t,
15963
15996
  depth: n + 1,
@@ -15994,8 +16027,8 @@ var uh = Ee(({ data: e, label: t, depth: n = 0, isLast: r = !0, annotations: i,
15994
16027
  ]
15995
16028
  });
15996
16029
  }, (e, t) => e.data === t.data && e.label === t.label && e.depth === t.depth && e.isLast === t.isLast && e.path === t.path && e.annotations === t.annotations && e.translations === t.translations && e.mediaActions === t.mediaActions);
15997
- uh.displayName = "JsonTreeView";
15998
- var dh = Ee((e) => {
16030
+ yh.displayName = "JsonTreeView";
16031
+ var bh = Ee((e) => {
15999
16032
  let { isPaused: t, copied: r, hasData: a, selectedFeatures: s, allFeaturesCount: l, featureGroups: u, featureSearch: d, onFeatureSearchChange: f, onToggleFeature: p, onSetFeaturesChecked: m, onSelectAll: h, onClearAll: _, onTogglePause: y, onManualRefresh: S, onCopy: C, allFeaturesLabel: w, featuresCountLabel: T, selectAllLabel: E, searchFeaturePlaceholder: D, noSearchResultLabel: O, pauseLabel: k, resumeLabel: ee, refreshLabel: A, copyLabel: j, copiedLabel: M } = e, N = s.size === 1 ? Array.from(s)[0] : null, P = s.size === l ? w : s.size === 1 ? N : T;
16000
16033
  return /* @__PURE__ */ G("div", {
16001
16034
  className: "flex items-center justify-between px-3 py-1.5 border-b bg-muted/20",
@@ -16018,7 +16051,7 @@ var dh = Ee((e) => {
16018
16051
  }), /* @__PURE__ */ W(Mn, {
16019
16052
  align: "start",
16020
16053
  className: "w-80 max-h-[70vh] overflow-hidden",
16021
- children: /* @__PURE__ */ W($m, {
16054
+ children: /* @__PURE__ */ W(ch, {
16022
16055
  groups: u,
16023
16056
  selectedIds: s,
16024
16057
  searchValue: d,
@@ -16070,27 +16103,27 @@ var dh = Ee((e) => {
16070
16103
  })]
16071
16104
  });
16072
16105
  });
16073
- dh.displayName = "RawPanelHeader";
16074
- var fh = Ee((e) => {
16106
+ bh.displayName = "RawPanelHeader";
16107
+ var xh = Ee((e) => {
16075
16108
  let { combinedData: t, featureAnnotations: n, translations: r, mediaActions: i, selectedCount: a, loadingLabel: o, noFeatureLabel: s, noEpisodeLabel: c, hasSelectedEpisode: l, isStale: u } = e;
16076
- return l ? !t && a > 0 ? /* @__PURE__ */ W(Tm, { message: o }) : /* @__PURE__ */ W(h, {
16109
+ return l ? !t && a > 0 ? /* @__PURE__ */ W(Pm, { message: o }) : /* @__PURE__ */ W(h, {
16077
16110
  className: x("flex-1 transition-opacity duration-150", u ? "opacity-85" : "opacity-100"),
16078
16111
  children: /* @__PURE__ */ W("div", {
16079
16112
  className: "p-3 min-w-fit max-w-full",
16080
- children: t ? /* @__PURE__ */ W(uh, {
16113
+ children: t ? /* @__PURE__ */ W(yh, {
16081
16114
  data: t,
16082
16115
  annotations: n,
16083
16116
  translations: r,
16084
16117
  mediaActions: i
16085
- }) : a === 0 ? /* @__PURE__ */ W(Em, {
16118
+ }) : a === 0 ? /* @__PURE__ */ W(Fm, {
16086
16119
  message: s,
16087
16120
  className: "py-20"
16088
16121
  }) : null
16089
16122
  })
16090
- }) : /* @__PURE__ */ W(Em, { message: c });
16123
+ }) : /* @__PURE__ */ W(Fm, { message: c });
16091
16124
  });
16092
- fh.displayName = "RawPanelTreeBody";
16093
- var ph = ({ params: e }) => {
16125
+ xh.displayName = "RawPanelTreeBody";
16126
+ var Sh = ({ params: e }) => {
16094
16127
  let { t } = a(), { info: n, featureData: r, subscribeFeature: i, unsubscribeFeature: o, subscribeFrameIndex: s, getFrameIndex: c, dataLoader: l, imageService: u, episodes: d } = ee(), { selectedEpisodeIndex: f } = me(), [p, m] = ke(null), [h, g] = ke(!1), [_, v] = ke(""), [y, b] = ke(!1), x = U(0), S = U(0), C = U({
16095
16128
  value: c(),
16096
16129
  listeners: /* @__PURE__ */ new Set()
@@ -16119,7 +16152,7 @@ var ph = ({ params: e }) => {
16119
16152
  V(() => s((e) => {
16120
16153
  if (S.current = e, y) return;
16121
16154
  let t = Date.now();
16122
- t - x.current >= eh && (x.current = t, De(() => {
16155
+ t - x.current >= lh && (x.current = t, De(() => {
16123
16156
  w(e);
16124
16157
  }));
16125
16158
  }), [
@@ -16177,7 +16210,7 @@ var ph = ({ params: e }) => {
16177
16210
  f
16178
16211
  ]), ne = Oe(te), re = ne !== te, F = H(() => f === null ? null : d.find((e) => e.episode_index === f) ?? d[f] ?? null, [d, f]), ie = H(() => {
16179
16212
  if (l) return { copyImage: async (e) => {
16180
- let t = ih(e);
16213
+ let t = ph(e);
16181
16214
  if (e.kind === "image") {
16182
16215
  let n = l.getEpisodeDataPath(e.episodeIndex);
16183
16216
  if (!n) throw Error(`Episode ${e.episodeIndex} data path not found`);
@@ -16191,7 +16224,7 @@ var ph = ({ params: e }) => {
16191
16224
  let a = ge(n, i);
16192
16225
  if (f !== null && (a === "image" || a === "video")) {
16193
16226
  let r = a === "video" ? l?.getEpisodeVideoPath(f, i)?.path ?? null : l?.getEpisodeDataPath(f)?.path ?? null;
16194
- e[i] = ch({
16227
+ e[i] = _h({
16195
16228
  kind: a,
16196
16229
  featureKey: i,
16197
16230
  info: n,
@@ -16222,7 +16255,7 @@ var ph = ({ params: e }) => {
16222
16255
  }, [M]), de = B((e) => v(e), []);
16223
16256
  return /* @__PURE__ */ G("div", {
16224
16257
  className: "flex flex-col h-full bg-background text-foreground overflow-hidden",
16225
- children: [/* @__PURE__ */ W(dh, {
16258
+ children: [/* @__PURE__ */ W(bh, {
16226
16259
  isPaused: y,
16227
16260
  copied: h,
16228
16261
  hasData: !!te,
@@ -16248,7 +16281,7 @@ var ph = ({ params: e }) => {
16248
16281
  refreshLabel: t("panels.raw.refresh"),
16249
16282
  copyLabel: t("common.copy"),
16250
16283
  copiedLabel: t("common.copied")
16251
- }), /* @__PURE__ */ W(fh, {
16284
+ }), /* @__PURE__ */ W(xh, {
16252
16285
  combinedData: ne,
16253
16286
  featureAnnotations: P,
16254
16287
  translations: O,
@@ -16264,7 +16297,7 @@ var ph = ({ params: e }) => {
16264
16297
  };
16265
16298
  //#endregion
16266
16299
  //#region src/react/components/panels/Common/PanelErrorBoundary.tsx
16267
- function mh({ error: e, panelName: t, onRetry: n }) {
16300
+ function Ch({ error: e, panelName: t, onRetry: n }) {
16268
16301
  let { t: r } = a();
16269
16302
  return /* @__PURE__ */ G("div", {
16270
16303
  className: "flex flex-col items-center justify-center h-full w-full bg-background text-foreground p-4 text-center",
@@ -16305,7 +16338,7 @@ function mh({ error: e, panelName: t, onRetry: n }) {
16305
16338
  ]
16306
16339
  });
16307
16340
  }
16308
- var hh = class extends we {
16341
+ var wh = class extends we {
16309
16342
  state = {
16310
16343
  hasError: !1,
16311
16344
  error: null,
@@ -16334,23 +16367,23 @@ var hh = class extends we {
16334
16367
  panelName: this.props.panelName,
16335
16368
  onRetry: this.handleRetry
16336
16369
  };
16337
- return this.props.renderFallback ? this.props.renderFallback(e) : /* @__PURE__ */ W(mh, { ...e });
16370
+ return this.props.renderFallback ? this.props.renderFallback(e) : /* @__PURE__ */ W(Ch, { ...e });
16338
16371
  }
16339
16372
  return /* @__PURE__ */ W(z.Fragment, { children: this.props.children }, this.state.retryKey);
16340
16373
  }
16341
- }, gh = 3;
16342
- function _h(e) {
16374
+ }, Th = 3;
16375
+ function Eh(e) {
16343
16376
  return e instanceof Error && e.message.includes("already exists");
16344
16377
  }
16345
- function vh(e, t, n) {
16378
+ function Dh(e, t, n) {
16346
16379
  let r = `${t}-${n}`, i = 1;
16347
16380
  for (; e.getPanel(`${r}-${i}`);) i += 1;
16348
16381
  return `${r}-${i}`;
16349
16382
  }
16350
- function yh(e, t) {
16383
+ function Oh(e, t) {
16351
16384
  let { autoId: n, ...r } = t;
16352
- for (let t = 0; t < gh; t++) {
16353
- let i = r.id ?? (n ? vh(e, n.type, n.featureKey) : void 0);
16385
+ for (let t = 0; t < Th; t++) {
16386
+ let i = r.id ?? (n ? Dh(e, n.type, n.featureKey) : void 0);
16354
16387
  if (!i) {
16355
16388
  console.warn("[dockview] safeAddPanel: missing panel id");
16356
16389
  return;
@@ -16361,7 +16394,7 @@ function yh(e, t) {
16361
16394
  id: i
16362
16395
  });
16363
16396
  } catch (e) {
16364
- if (!_h(e)) throw e;
16397
+ if (!Eh(e)) throw e;
16365
16398
  if (!n || t === 2) {
16366
16399
  console.warn("[dockview] safeAddPanel: panel id conflict", i, e);
16367
16400
  return;
@@ -16371,7 +16404,7 @@ function yh(e, t) {
16371
16404
  }
16372
16405
  //#endregion
16373
16406
  //#region src/react/components/PanelTitle.tsx
16374
- var bh = (e) => {
16407
+ var kh = (e) => {
16375
16408
  let { api: n, containerApi: r } = e, { t: o } = a(), { info: s } = ee(), l = n.id, u = r.getPanel(l), d = z.useMemo(() => s?.features ? Object.keys(s.features).sort() : [], [s]), f = (e) => {
16376
16409
  let t = s?.features[e];
16377
16410
  return t ? t.dtype === "video" ? "video" : t.dtype === "image" ? "image" : t.dtype.includes("float") || t.dtype.includes("int") ? "chart" : "raw" : "raw";
@@ -16385,7 +16418,7 @@ var bh = (e) => {
16385
16418
  }, m = (e, t) => {
16386
16419
  if (!u) return;
16387
16420
  let n = f(t), i = t.split(".").pop() || t;
16388
- yh(r, {
16421
+ Oh(r, {
16389
16422
  component: n,
16390
16423
  title: i,
16391
16424
  params: { featureKey: t },
@@ -16507,24 +16540,24 @@ var bh = (e) => {
16507
16540
  children: g
16508
16541
  })
16509
16542
  });
16510
- }, xh = Te(null), Sh = {
16511
- video: (e) => /* @__PURE__ */ W(hh, {
16543
+ }, Ah = Te(null), jh = {
16544
+ video: (e) => /* @__PURE__ */ W(wh, {
16512
16545
  panelName: "Video",
16513
16546
  children: /* @__PURE__ */ W(fl, { params: e.params })
16514
16547
  }),
16515
- image: (e) => /* @__PURE__ */ W(hh, {
16548
+ image: (e) => /* @__PURE__ */ W(wh, {
16516
16549
  panelName: "Image",
16517
16550
  children: /* @__PURE__ */ W(ul, { params: e.params })
16518
16551
  }),
16519
- chart: (e) => /* @__PURE__ */ W(hh, {
16552
+ chart: (e) => /* @__PURE__ */ W(wh, {
16520
16553
  panelName: "Chart",
16521
- children: /* @__PURE__ */ W(Zm, { params: e.params })
16554
+ children: /* @__PURE__ */ W(oh, { params: e.params })
16522
16555
  }),
16523
- raw: (e) => /* @__PURE__ */ W(hh, {
16556
+ raw: (e) => /* @__PURE__ */ W(wh, {
16524
16557
  panelName: "Raw",
16525
- children: /* @__PURE__ */ W(ph, { params: e.params })
16558
+ children: /* @__PURE__ */ W(Sh, { params: e.params })
16526
16559
  })
16527
- }, Ch = { default: bh }, wh = () => {
16560
+ }, Mh = { default: kh }, Nh = () => {
16528
16561
  let e = U(null), [t, n] = ke(null), { t: i } = a(), { resolvedTheme: o } = r(), { info: s } = ee(), c = U(null), [l, u] = ke(4);
16529
16562
  V(() => {
16530
16563
  let e = c.current;
@@ -16615,13 +16648,13 @@ var bh = (e) => {
16615
16648
  }];
16616
16649
  })), { row1: r, row2: a } = D(Array.from(n.keys()), 6, l), o = r.map((e) => n.get(e)).filter((e) => !!e), c = a.map((e) => n.get(e)).filter((e) => !!e), u = [...o, ...c];
16617
16650
  if (u.length === 0) {
16618
- yh(t, {
16651
+ Oh(t, {
16619
16652
  id: "chart-panel",
16620
16653
  component: "chart",
16621
16654
  title: i("common.chart"),
16622
16655
  params: {},
16623
16656
  tabComponent: "default"
16624
- }), yh(t, {
16657
+ }), Oh(t, {
16625
16658
  id: "raw-panel",
16626
16659
  component: "raw",
16627
16660
  title: i("panels.raw.title"),
@@ -16635,7 +16668,7 @@ var bh = (e) => {
16635
16668
  return;
16636
16669
  }
16637
16670
  let f = o[0].id;
16638
- yh(t, {
16671
+ Oh(t, {
16639
16672
  id: f,
16640
16673
  component: u[0].component,
16641
16674
  title: u[0].title,
@@ -16643,7 +16676,7 @@ var bh = (e) => {
16643
16676
  tabComponent: "default"
16644
16677
  });
16645
16678
  let p = f;
16646
- for (let e of o.slice(1)) yh(t, {
16679
+ for (let e of o.slice(1)) Oh(t, {
16647
16680
  id: e.id,
16648
16681
  component: e.component,
16649
16682
  title: e.title,
@@ -16656,7 +16689,7 @@ var bh = (e) => {
16656
16689
  }), p = e.id;
16657
16690
  if (c.length > 0) {
16658
16691
  let e = c[0];
16659
- yh(t, {
16692
+ Oh(t, {
16660
16693
  id: e.id,
16661
16694
  component: e.component,
16662
16695
  title: e.title,
@@ -16665,7 +16698,7 @@ var bh = (e) => {
16665
16698
  position: { direction: "below" }
16666
16699
  });
16667
16700
  let n = e.id;
16668
- for (let e of c.slice(1)) yh(t, {
16701
+ for (let e of c.slice(1)) Oh(t, {
16669
16702
  id: e.id,
16670
16703
  component: e.component,
16671
16704
  title: e.title,
@@ -16677,14 +16710,14 @@ var bh = (e) => {
16677
16710
  }
16678
16711
  }), n = e.id;
16679
16712
  }
16680
- yh(t, {
16713
+ Oh(t, {
16681
16714
  id: "chart-panel",
16682
16715
  component: "chart",
16683
16716
  title: i("common.chart"),
16684
16717
  params: {},
16685
16718
  tabComponent: "default",
16686
16719
  position: { direction: "below" }
16687
- }), yh(t, {
16720
+ }), Oh(t, {
16688
16721
  id: "raw-panel",
16689
16722
  component: "raw",
16690
16723
  title: i("panels.raw.title"),
@@ -16699,15 +16732,15 @@ var bh = (e) => {
16699
16732
  s,
16700
16733
  i,
16701
16734
  l
16702
- ]), /* @__PURE__ */ W(xh.Provider, {
16735
+ ]), /* @__PURE__ */ W(Ah.Provider, {
16703
16736
  value: t,
16704
16737
  children: /* @__PURE__ */ W("div", {
16705
16738
  ref: c,
16706
16739
  className: "w-full h-full",
16707
16740
  children: /* @__PURE__ */ W(Zc, {
16708
- components: Sh,
16709
- tabComponents: Ch,
16710
- defaultTabComponent: bh,
16741
+ components: jh,
16742
+ tabComponents: Mh,
16743
+ defaultTabComponent: kh,
16711
16744
  singleTabMode: "fullwidth",
16712
16745
  disableTabsOverflowList: !0,
16713
16746
  onReady: (t) => {
@@ -16722,4 +16755,4 @@ var bh = (e) => {
16722
16755
  });
16723
16756
  };
16724
16757
  //#endregion
16725
- export { wh as DockviewLayout };
16758
+ export { Nh as DockviewLayout };