Files
gnommoplayer/dist/glitch/glitch_lightlane/lightlane.js
T
2026-04-11 09:21:22 +02:00

2806 lines
110 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { jsx as n, jsxs as i, Fragment as Fe } from "react/jsx-runtime";
import { useMemo as he, useState as $, useRef as Z, useEffect as de } from "react";
import { useFrame as Qe } from "@react-three/fiber";
import { Html as De, Grid as At } from "@react-three/drei";
import * as Ye from "three";
import { Color as Dt } from "three";
function Nt({ vector: e, origin: t = [0, 0, 0], color: o = "#facc15" }) {
const { dir: r, len: l, position: a } = he(() => {
const c = new Ye.Vector3(...t), s = new Ye.Vector3(...e), d = c.distanceTo(s);
return { dir: s.clone().sub(c).normalize(), len: d, position: c };
}, [e, t]), h = he(() => new Ye.ArrowHelper(r, a, l, o, 0.2 * Math.min(l, 1) + 0.1, 0.1 * Math.min(l, 1) + 0.05), [r, l, a, o]);
return /* @__PURE__ */ n("primitive", { object: h });
}
function _t(e, t = !1) {
const o = [];
for (let r = 0; r <= e; r++)
for (let l = 0; l <= e - r; l++) {
const a = e - r - l;
if (a >= 0)
if (!t)
o.push([r, l, a]);
else {
const h = r === 0 ? [1] : [1, -1], c = l === 0 ? [1] : [1, -1], s = a === 0 ? [1] : [1, -1];
for (const d of h)
for (const m of c)
for (const u of s)
o.push([r * d, l * m, a * u]);
}
}
return o;
}
function Ht({ vector: e, radius: t, distance: o, color: r }) {
const { position: l, quaternion: a } = he(() => {
const h = new Ye.Vector3(...e).normalize(), c = new Ye.Vector3(0, 1, 0), s = new Ye.Quaternion().setFromUnitVectors(c, h);
return { position: h.clone().multiplyScalar(o / 2), quaternion: s };
}, [e, o]);
return /* @__PURE__ */ i("mesh", { position: l, quaternion: a, children: [
/* @__PURE__ */ n("cylinderGeometry", { args: [t, t, o, 32] }),
/* @__PURE__ */ n("meshStandardMaterial", { color: r, opacity: 0.5, transparent: !0 })
] });
}
function Wt({ complexity: e, lightlanes: t = !1, radius: o = 0.5, distance: r = 5, allSectors: l = !1, cumulative: a = !1 }) {
const h = he(() => {
const s = [], d = a ? 1 : e, m = e;
for (let u = d; u <= m; u++) {
const x = _t(u, l);
for (const y of x)
s.push({ vec: y, c: u });
}
return s;
}, [e, l, a]), c = (s) => {
const d = a ? Math.max(e, 1) : e;
return `hsl(${270 * (1 - (d > 1 ? (s - 1) / (d - 1) : 1))}, 100%, 50%)`;
};
return /* @__PURE__ */ n("group", { children: h.map((s, d) => {
const m = a ? c(s.c) : t ? "#ff33c5" : "#4ade80";
return t ? /* @__PURE__ */ n(
Ht,
{
vector: s.vec,
radius: o,
distance: r,
color: m
},
`cyl-${d}-${s.vec.join(",")}-${s.c}`
) : /* @__PURE__ */ n(
Nt,
{
vector: s.vec,
color: m
},
`vec-${d}-${s.vec.join(",")}-${s.c}`
);
}) });
}
const Vt = "glitch:play-sound", jt = "glitch:stop-sound", we = {
click: "ui.button_click",
hover: "ui.button_hover",
computeStart: "machine.compute_start",
computeStep: "machine.compute_step",
computeDone: "machine.compute_done"
};
function Ct(e, t) {
typeof window > "u" || window.dispatchEvent(new CustomEvent(e, { detail: t }));
}
function Ce(e, t, o) {
try {
if (e?.playSound) {
e.playSound(t, o);
return;
}
} catch {
}
Ct(Vt, { id: t, payload: o });
}
function Yt(e, t, o) {
try {
if (e?.stopSound) {
e.stopSound(t, o);
return;
}
} catch {
}
Ct(jt, { id: t, payload: o });
}
const Ue = 1e-12;
function ut(e = 123456789) {
let t = e >>> 0;
return function() {
t |= 0, t = t + 1831565813 | 0;
let r = Math.imul(t ^ t >>> 15, 1 | t);
return r = r + Math.imul(r ^ r >>> 7, 61 | r) ^ r, ((r ^ r >>> 14) >>> 0) / 4294967296;
};
}
function Ut(e, t = Math.random) {
if (!Number.isFinite(e) || e <= 0) return 0;
if (e < 30) {
const h = Math.exp(-e);
let c = 0, s = 1;
do
c++, s *= t();
while (s > h);
return c - 1;
}
const o = Math.max(1e-12, t()), r = t(), l = Math.sqrt(-2 * Math.log(o)) * Math.cos(2 * Math.PI * r), a = e + Math.sqrt(e) * l;
return Math.max(0, Math.round(a));
}
function st(e) {
return [e[0] ?? e.x, e[1] ?? e.y, e[2] ?? e.z];
}
function Gt(e, t, o) {
return Math.sqrt(e * e + t * t + o * o);
}
function kt(e) {
const t = 2 * Math.PI;
let o = e % t;
return o < 0 && (o += t), o;
}
function Jt(e) {
const t = 2 * e() - 1, o = 2 * Math.PI * e();
return {
theta: Math.acos(Math.max(-1, Math.min(1, t))),
phi: o
};
}
function mt(e) {
const t = 2 * Math.PI;
let o = e % t;
return o < 0 && (o += t), o > Math.PI && (o = t - o), o;
}
function Mt(e = Math.random) {
const t = Math.max(1e-12, e()), o = e();
return Math.sqrt(-2 * Math.log(t)) * Math.cos(2 * Math.PI * o);
}
function qt(e, t, o) {
const r = Math.sin(t);
return [
e * r * Math.cos(o),
e * Math.cos(t),
e * r * Math.sin(o)
];
}
function Xt(e, t = !1, o = !1) {
const r = [], l = o ? 1 : e, a = e;
for (let h = l; h <= a; h++)
for (let c = 0; c <= h; c++)
for (let s = 0; s <= h - c; s++) {
const d = h - c - s;
if (!t) {
r.push([c, s, d]);
continue;
}
const m = c === 0 ? [1] : [1, -1], u = s === 0 ? [1] : [1, -1], x = d === 0 ? [1] : [1, -1];
for (const y of m)
for (const B of u)
for (const F of x)
r.push([c * y, s * B, d * F]);
}
return r;
}
function wt({
D: e,
complexity: t,
allSectors: o = !1,
cumulative: r = !1
}) {
if (!Number.isFinite(e) || e <= 0) return [];
if (!Number.isInteger(t) || t < 1) return [];
const l = Xt(t, o, r), a = [];
for (let h = 0; h < l.length; h++) {
const [c, s, d] = l[h], m = Gt(c, s, d);
m <= Ue || a.push([e * c / m, e * s / m, e * d / m]);
}
return a;
}
function Kt(e, t, o) {
if (!e || e.length === 0 || !Number.isFinite(o) || o <= 0) return 0;
const [r, l, a] = st(t), h = o * o;
let c = 0;
for (let s = 0; s < e.length; s++) {
const [d, m, u] = st(e[s]), x = d * d + m * m + u * u;
if (x <= Ue) continue;
let y = (r * d + l * m + a * u) / x;
y < 0 && (y = 0), y > 1 && (y = 1);
const B = y * d, F = y * m, R = y * u, C = r - B, j = l - F, v = a - R;
C * C + j * j + v * v < h && c++;
}
return c;
}
function Qt(e, t, o, r) {
if (!e || e.length === 0 || !Number.isFinite(t) || t <= 0 || !Number.isFinite(r) || r <= 0) return 0;
const [l, a, h] = st(o), s = t * t - 0.5 * r * r;
let d = 0;
for (let m = 0; m < e.length; m++) {
const [u, x, y] = st(e[m]);
l * u + a * x + h * y > s && d++;
}
return d;
}
function Bt({ D: e, lane_radius: t }) {
if (!Number.isFinite(e) || e <= 0 || !Number.isFinite(t) || t <= 0) return 0;
const o = t * t / (4 * e * e);
return o <= 0 ? 0 : o > 1 ? 1 : o;
}
function Zt({ D: e, lane_radius: t, lane_length: o }) {
if (!Number.isFinite(e) || e <= 0 || !Number.isFinite(t) || t <= 0 || !Number.isFinite(o) || o <= 0) return 0;
if (o >= e - Ue)
return Bt({ D: e, lane_radius: t });
const r = t, l = o, a = e - l;
if (r <= a) return 0;
if (r >= e + l) return 1;
const h = Math.sqrt(Math.max(0, e * e - l * l));
let c;
return r < h ? c = (e * e + l * l - r * r) / (2 * e * l) : r < e ? c = Math.sqrt(Math.max(0, 1 - r * r / (e * e))) : c = -1, Number.isFinite(c) ? (c < -1 && (c = -1), c > 1 && (c = 1), (1 - c) / 2) : 0;
}
function en({ flux: e, D: t, lane_radius: o, dt: r }) {
if (!Number.isFinite(e) || e <= 0 || !Number.isFinite(r) || r <= 0) return 0;
const l = Bt({ D: t, lane_radius: o });
return e * l * r;
}
function tn({ flux: e, D: t, lane_radius: o, lane_length: r, dt: l }) {
if (!Number.isFinite(e) || e <= 0 || !Number.isFinite(l) || l <= 0) return 0;
const a = Zt({ D: t, lane_radius: o, lane_length: r });
return e * a * l;
}
function Et({
flux: e,
D: t,
lane_radius: o,
dt: r,
hitTestModel: l = "shell",
lane_length: a
}) {
return l === "segment" ? tn({ flux: e, D: t, lane_radius: o, lane_length: a, dt: r }) : en({ flux: e, D: t, lane_radius: o, dt: r });
}
function nn(e) {
if (!e || typeof e != "object")
throw new Error("createSamplingSimulation: config object is required.");
const t = e.lane_radius ?? e.radius, o = e.D, r = e.complexity, l = e.flux, a = e.bin_size ?? 1, h = e.sub_bin_sampling ?? 4, c = e.thetaDrift ?? e.theta_drift ?? 0, s = e.thetaJitter ?? e.theta_jitter ?? 0, d = e.phiJitter ?? e.phi_jitter ?? 0, m = e.laneLength ?? e.lane_length ?? e.distance ?? o, u = e.hitTestModel ?? e.hit_test_model ?? "shell", x = e.observationMode ?? e.observation_mode ?? "orbit";
if (!Number.isFinite(o) || o <= 0)
throw new Error("createSamplingSimulation: D must be a positive number.");
if (!Number.isFinite(t) || t <= 0)
throw new Error("createSamplingSimulation: lane_radius (or radius) must be a positive number.");
if (!Number.isInteger(r) || r < 1)
throw new Error("createSamplingSimulation: complexity must be an integer >= 1.");
if (!Number.isFinite(l) || l < 0)
throw new Error("createSamplingSimulation: flux must be a finite number >= 0.");
if (!Number.isFinite(a) || a <= 0)
throw new Error("createSamplingSimulation: bin_size must be a positive number.");
if (!Number.isInteger(h) || h < 1)
throw new Error("createSamplingSimulation: sub_bin_sampling must be an integer >= 1.");
if (!Number.isFinite(c))
throw new Error("createSamplingSimulation: thetaDrift must be finite.");
if (!Number.isFinite(s) || s < 0)
throw new Error("createSamplingSimulation: thetaJitter must be a finite number >= 0.");
if (!Number.isFinite(d) || d < 0)
throw new Error("createSamplingSimulation: phiJitter must be a finite number >= 0.");
if (!Number.isFinite(m) || m <= 0)
throw new Error("createSamplingSimulation: laneLength/lane_length/distance must be a positive number.");
if (u !== "shell" && u !== "segment")
throw new Error('createSamplingSimulation: hitTestModel must be "shell" or "segment".');
if (x !== "orbit" && x !== "randomSphere")
throw new Error('createSamplingSimulation: observationMode must be "orbit" or "randomSphere".');
return {
D: o,
lane_radius: t,
complexity: r,
flux: l,
bin_size: a,
sub_bin_sampling: h,
theta: mt(e.theta ?? Math.PI / 2),
phi: kt(e.phi ?? 0),
velocity: e.velocity ?? 0,
thetaDrift: c,
thetaJitter: s,
phiJitter: d,
lane_length: m,
hitTestModel: u,
observationMode: x,
allSectors: !!e.allSectors,
cumulative: !!e.cumulative,
usePoisson: e.usePoisson !== !1,
seed: Number.isFinite(e.seed) ? e.seed : 1
};
}
function It(e) {
const t = nn(e), o = wt(t), r = t.hitTestModel === "segment" ? wt({ ...t, D: t.lane_length }) : o, l = ut(t.seed), a = ut(t.seed + 1), h = ut(t.seed + 2), c = t.bin_size / t.sub_bin_sampling, s = Et({
flux: t.flux,
D: t.D,
lane_radius: t.lane_radius,
dt: c,
hitTestModel: t.hitTestModel,
lane_length: t.lane_length
});
let d = 0, m = 0, u = t.phi, x = t.theta, y = 0, B = 0, F = 0, R = 0, C = 0, j = 0, v = 0;
function L(k, A) {
return t.usePoisson ? Ut(k, A) : k;
}
function O(k = x, A = u) {
return qt(t.D, k, A);
}
function J() {
let k, A;
if (t.observationMode === "randomSphere") {
const P = Jt(h);
k = P.theta, A = P.phi;
} else
k = mt(
x + (t.thetaJitter > 0 ? t.thetaJitter * Mt(h) : 0)
), A = kt(
u + (t.phiJitter > 0 ? t.phiJitter * Mt(h) : 0)
);
const ee = O(k, A), z = t.hitTestModel === "segment" ? Kt(r, ee, t.lane_radius) : Qt(o, t.D, ee, t.lane_radius);
j = z;
const D = o.length, N = D > 0 ? z * t.flux * c / D : 0;
return B += L(N, l), F += L(s, a), R += N, v += z, C++, {
laneCount: z,
satPos: ee,
lambdaLightlaneSubBin: N,
phase: A,
theta: k
};
}
function _() {
const k = C > 0 ? C * c : t.bin_size, A = s * t.sub_bin_sampling, D = {
time: y,
bin_size: k,
lightlane: B,
isotropic: F,
lambdaIsotropic: C > 0 ? s * C : A,
overlaps: j,
overlapsMean: C > 0 ? v / C : 0,
subBins: C,
phase: u,
theta: x,
lambdaLightlaneExpected: R
};
return B = 0, F = 0, R = 0, v = 0, C = 0, D;
}
return {
config: { ...t },
getLaneCount() {
return o.length;
},
getState() {
return {
elapsed: y,
phase: u,
theta: x,
timeInBin: d,
timeInSubBin: m,
accumulatedLightlane: B,
accumulatedIsotropic: F,
expectedLightlaneThisBin: R,
processedSubBinsInCurrentBin: C,
lastLaneCount: j,
laneCount: o.length
};
},
reset() {
d = 0, m = 0, u = t.phi, x = t.theta, y = 0, B = 0, F = 0, R = 0, C = 0, j = 0, v = 0;
},
flushPartialBin() {
if (C <= 0) return null;
const k = _();
return d = 0, m = 0, k;
},
simulate(k) {
if (!Number.isFinite(k) || k <= 0)
return {
bins: [],
lastLaneCount: j,
subBinEvents: 0,
elapsed: y
};
let A = k, ee = 0;
const z = [];
for (; A > Ue; ) {
const D = c - m, N = t.bin_size - d, P = Math.min(A, D, N);
u += t.velocity * P, x = mt(x + t.thetaDrift * P), y += P, m += P, d += P, A -= P, m >= c - Ue && (m = 0, J(), ee++), d >= t.bin_size - Ue && (d = 0, z.push(_()));
}
return {
bins: z,
lastLaneCount: j,
subBinEvents: ee,
elapsed: y
};
}
};
}
function Ft(e, t) {
const o = e.n + 1, r = t - e.mean, l = e.mean + r / o, a = e.m2 + r * (t - l);
return { n: o, mean: l, m2: a };
}
function Pt() {
return { n: 0, mean: 0, m2: 0 };
}
function on({
complexity: e,
samplesPerPoint: t,
runsPerPoint: o,
binSize: r,
subBinSampling: l,
props: a,
observationMode: h,
seed: c
}) {
let s = Pt(), d = Pt(), m = 0;
for (let F = 0; F < o; F++) {
const R = It({
D: a.chandraDistance,
theta: a.theta,
phi: a.phi,
observationMode: h,
velocity: a.orbitSpeed,
thetaDrift: a.thetaDrift,
thetaJitter: a.thetaJitter,
phiJitter: a.phiJitter,
bin_size: r,
complexity: e,
sub_bin_sampling: l,
flux: a.K,
lane_radius: a.radius,
distance: a.distance,
hitTestModel: "segment",
allSectors: a.allSectors,
cumulative: a.cumulative,
usePoisson: a.usePoisson,
seed: c + F * 7919
});
F === 0 && (m = R.getLaneCount());
for (let C = 0; C < t; C++) {
const { bins: j } = R.simulate(r), v = j[0];
v && (s = Ft(s, v.lightlane), d = Ft(d, v.isotropic));
}
}
const u = s.n > 1 ? s.m2 / (s.n - 1) : 0, x = d.n > 1 ? d.m2 / (d.n - 1) : 0, y = s.mean > 0 ? u / s.mean : 0, B = d.mean > 0 ? x / d.mean : 0;
return {
complexity: e,
laneCount: m,
meanBlue: s.mean,
meanYellow: d.mean,
fanoBlue: y,
fanoYellow: B,
fanoExcess: Math.max(0, y - B)
};
}
function rn(e, t = 1) {
const o = e.filter((u) => u.complexity >= t && u.complexity > 1 && u.fanoExcess > 1e-6);
if (o.length < 3) return null;
let r = 0, l = 0, a = 0, h = 0;
const c = o.length;
for (const u of o) {
const x = Math.log(u.laneCount), y = Math.log(u.fanoExcess);
r += x, l += y, a += x * x, h += x * y;
}
const s = c * a - r * r;
if (Math.abs(s) < 1e-12) return null;
const d = (c * h - r * l) / s, m = (l - d * r) / c;
return {
A: Math.exp(m),
alpha: -d,
predictFanoExcessFromLaneCount(u) {
return Math.exp(m + d * Math.log(Math.max(1, u)));
}
};
}
function an(e, t = 1) {
const o = e.filter((c) => c.complexity >= t && c.complexity > 1 && c.fanoExcess > 1e-6);
if (o.length < 4) return null;
const r = Math.min(...o.map((c) => c.fanoExcess)), l = Math.max(0, r * 0.98);
let a = null;
const h = 80;
for (let c = 0; c <= h; c++) {
const s = c / h * l, d = o.map((O) => ({ x: O.laneCount, y: O.fanoExcess - s })).filter((O) => O.y > 1e-9);
if (d.length < 3) continue;
let m = 0, u = 0, x = 0, y = 0;
const B = d.length;
for (const O of d) {
const J = Math.log(O.x), _ = Math.log(O.y);
m += J, u += _, x += J * J, y += J * _;
}
const F = B * x - m * m;
if (Math.abs(F) < 1e-12) continue;
const R = (B * y - m * u) / F, C = (u - R * m) / B, j = Math.exp(C), v = -R;
if (!(j > 0) || !(v > 0)) continue;
let L = 0;
for (const O of o) {
const J = s + j * Math.pow(Math.max(1, O.laneCount), -v), _ = Math.log(Math.max(1e-9, O.fanoExcess)) - Math.log(Math.max(1e-9, J));
L += _ * _;
}
(!a || L < a.score) && (a = { A: j, alpha: v, B: s, score: L });
}
return a ? {
A: a.A,
alpha: a.alpha,
B: a.B,
score: a.score,
predictFanoExcessFromLaneCount(c) {
return a.B + a.A * Math.pow(Math.max(1, c), -a.alpha);
}
} : null;
}
function sn(e) {
const t = e.filter((u) => u.x > 0 && u.y > 0);
if (t.length < 3) return null;
let o = 0, r = 0, l = 0, a = 0;
const h = t.length;
for (const u of t) {
const x = Math.log(u.x), y = Math.log(u.y);
o += x, r += y, l += x * x, a += x * y;
}
const c = h * l - o * o;
if (Math.abs(c) < 1e-12) return null;
const s = (h * a - o * r) / c, d = (r - s * o) / h, m = Math.exp(d);
return {
A: m,
beta: s,
predict(u) {
return m * Math.pow(Math.max(1e-9, u), s);
},
invert(u) {
return m <= 0 || Math.abs(s) < 1e-12 || u <= 0 ? null : Math.pow(u / m, 1 / s);
}
};
}
function ln(e, t) {
if (!Number.isFinite(t) || t <= 0 || e.length === 0) return null;
const o = [...e].sort((s, d) => s.complexity - d.complexity), r = [...o].sort((s, d) => s.laneCount - d.laneCount), l = r[0], a = r[r.length - 1];
if (t <= l.laneCount)
return { complexity: l.complexity, mode: "observed-range" };
for (let s = 1; s < r.length; s++) {
const d = r[s - 1], m = r[s];
if (t <= m.laneCount) {
const u = Math.max(1e-9, m.laneCount - d.laneCount), x = (t - d.laneCount) / u;
return {
complexity: d.complexity + x * (m.complexity - d.complexity),
mode: "observed-range"
};
}
}
const c = sn(o.map((s) => ({ x: s.complexity, y: s.laneCount })))?.invert(t) ?? null;
return c && Number.isFinite(c) ? { complexity: c, mode: "extrapolated" } : { complexity: a.complexity, mode: "observed-max" };
}
function Tt(e, t, o, r) {
return e.map((l, a) => `${a === 0 ? "M" : "L"} ${o(l.complexity)} ${r(t(l))}`).join(" ");
}
function cn(e) {
return e >= 10 ? e.toFixed(0) : e >= 2 ? e.toFixed(1) : e.toFixed(2);
}
function dn(e, t) {
const r = [
0.5,
0.6,
0.7,
0.8,
0.9,
1,
1.1,
1.2,
1.4,
1.6,
1.8,
2,
2.5,
3,
4,
5,
7.5,
10
].filter((c) => c >= e && c <= t);
if (r.length >= 3) return r;
const l = 5, a = Math.log(e), h = Math.log(t);
return Array.from({ length: l }, (c, s) => {
const d = s / (l - 1);
return Math.exp(a + (h - a) * d);
});
}
function pn(e) {
const [t, o] = $(40), [r, l] = $(1e3), [a, h] = $(3), [c, s] = $(1), [d, m] = $(4), [u, x] = $("randomSphere"), [y, B] = $(0.05), [F, R] = $(10), [C, j] = $(0), [v, L] = $([]), [O, J] = $(0), [_, k] = $(!1), A = Z(!1), ee = Z(-1), z = () => {
Ce(e.host, we.hover, { page: "fano" });
}, D = (b, T) => {
Ce(e.host, we.click, { page: "fano", target: b, ...T });
};
de(() => {
let b = !1;
return L([]), J(0), k(!0), (async () => {
const T = [];
for (let E = 1; E <= t; E++) {
if (b) return;
const I = on({
complexity: E,
samplesPerPoint: r,
runsPerPoint: a,
binSize: c,
subBinSampling: d,
props: e,
observationMode: u,
seed: 1e4 + E * 97 + C * 100003
});
T.push(I), L([...T]), J(E / t), await new Promise((ne) => setTimeout(ne, 0));
}
b || k(!1);
})(), () => {
b = !0;
};
}, [
t,
r,
a,
c,
d,
u,
C,
e.radius,
e.distance,
e.chandraDistance,
e.allSectors,
e.cumulative,
e.theta,
e.phi,
e.orbitSpeed,
e.thetaDrift,
e.thetaJitter,
e.phiJitter,
e.K,
e.speedup,
e.usePoisson
]), de(() => {
const b = A.current;
if (A.current = _, _ && !b) {
ee.current = -1, Ce(e.host, we.computeStart, { page: "fano" });
return;
}
!_ && b && (Yt(e.host, we.computeStep, { page: "fano" }), Ce(e.host, we.computeDone, { page: "fano", points: v.length }));
}, [_, e.host, v.length]), de(() => {
if (!_) return;
const b = Math.floor(O * 10);
b <= ee.current || (ee.current = b, Ce(e.host, we.computeStep, { page: "fano", progress: O }));
}, [O, _, e.host]);
const N = he(() => rn(v, F), [v, F]), P = he(() => an(v, F), [v, F]), H = he(() => {
if (!N || N.alpha <= 0 || y <= 0) return null;
if (P && P.B >= y)
return {
targetExcess: y,
requiredLaneCount: Number.POSITIVE_INFINITY,
measuredCrossing: v.find((se) => se.fanoExcess <= y) ?? null,
complexityEstimate: null,
blockedByFloor: !0,
floorExcess: P.B
};
const b = P ? Math.max(1e-9, y - P.B) : y, T = P ? P.A : N.A, E = P ? P.alpha : N.alpha, I = Math.pow(T / b, 1 / E);
if (!Number.isFinite(I) || I <= 0) return null;
const ne = v.find((se) => se.fanoExcess <= y) ?? null, G = ln(v, I);
return {
targetExcess: y,
requiredLaneCount: I,
measuredCrossing: ne,
complexityEstimate: G,
blockedByFloor: !1,
floorExcess: P?.B ?? 0
};
}, [N, P, v, y]), g = he(() => {
const E = { top: 20, right: 20, bottom: 42, left: 48 }, I = 860 - E.left - E.right, ne = 360 - E.top - E.bottom, G = Math.max(2, t), se = [
1,
...v.map((Y) => Y.fanoBlue),
...v.map((Y) => Y.fanoYellow),
...v.map((Y) => 1 + Y.fanoExcess)
].filter((Y) => Number.isFinite(Y) && Y > 0), ve = Math.min(...se), Re = Math.max(...se), X = Math.max(1e-3, Math.min(0.95, ve * 0.95)), Pe = Math.max(1.05, Re * 1.05), Be = Math.log(X), Je = Math.log(Pe), me = (Y) => E.left + (Y - 1) / (G - 1) * I, Ee = (Y) => {
const Ie = Math.min(Pe, Math.max(X, Y)), le = Math.log(Ie);
return E.top + ne - (le - Be) / Math.max(1e-9, Je - Be) * ne;
}, Se = dn(X, Pe);
return { width: 860, height: 360, margin: E, innerW: I, innerH: ne, xToPx: me, yToPx: Ee, yMax: Pe, yMin: X, yTicks: Se };
}, [v, t]), ue = he(
() => v.length > 1 ? Tt(v, (b) => b.fanoBlue, g.xToPx, g.yToPx) : "",
[v, g]
), ke = he(
() => v.length > 1 ? Tt(v, (b) => b.fanoYellow, g.xToPx, g.yToPx) : "",
[v, g]
), q = v.at(-1) ?? null;
return /* @__PURE__ */ n(De, { fullscreen: !0, style: { pointerEvents: "auto" }, children: /* @__PURE__ */ i(
"div",
{
style: {
width: "100%",
height: "100%",
display: "flex",
flexDirection: "column",
background: "radial-gradient(circle at 20% 10%, rgba(30,41,59,0.9), rgba(2,6,23,0.96))",
color: "var(--terminal-green-soft)",
padding: "16px",
paddingBottom: `${16 + (e.bottomInset ?? 0)}px`,
boxSizing: "border-box",
gap: "12px",
fontFamily: "var(--font-ui)"
},
children: [
/* @__PURE__ */ i("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "center", gap: "12px", flexWrap: "wrap" }, children: [
/* @__PURE__ */ i("div", { children: [
/* @__PURE__ */ n("div", { style: { fontSize: "14px", fontWeight: 400, letterSpacing: "0.12em", textTransform: "uppercase", fontFamily: "var(--font-headline)", color: "var(--terminal-green-soft)" }, children: "Fano Sweep" }),
/* @__PURE__ */ i("div", { style: { fontSize: "11px", color: "var(--terminal-green)", marginTop: "4px" }, children: [
"Goal: show ",
"Fano(Blue)",
" trending toward 1.0 (or toward Yellow) as complexity increases."
] })
] }),
/* @__PURE__ */ i("div", { style: { display: "flex", gap: "8px", flexWrap: "wrap" }, children: [
e.onBack && /* @__PURE__ */ n(
"button",
{
type: "button",
onClick: () => {
D("back-to-simulator"), e.onBack?.();
},
onPointerEnter: z,
style: {
border: "1px solid var(--terminal-panel-border)",
background: "rgba(7,19,11,0.8)",
color: "var(--terminal-green-soft)",
padding: "8px 12px",
borderRadius: "8px",
cursor: "pointer",
fontSize: "12px",
fontWeight: 400,
fontFamily: "var(--font-headline)",
letterSpacing: "0.08em",
textTransform: "uppercase"
},
children: "Back To Simulator"
}
),
/* @__PURE__ */ n(
"button",
{
type: "button",
onClick: () => {
D("rerun-sweep"), j((b) => b + 1);
},
onPointerEnter: z,
style: {
border: "1px solid var(--terminal-panel-border)",
background: _ ? "rgba(125, 255, 155, 0.14)" : "rgba(7,19,11,0.8)",
color: "var(--terminal-green-soft)",
padding: "8px 12px",
borderRadius: "8px",
cursor: "pointer",
fontSize: "12px",
fontWeight: 400,
fontFamily: "var(--font-headline)",
letterSpacing: "0.08em",
textTransform: "uppercase"
},
children: _ ? "Rerun (queued)" : "Rerun Sweep"
}
)
] })
] }),
/* @__PURE__ */ i("div", { style: { display: "flex", gap: "8px", flexWrap: "wrap" }, children: [
/* @__PURE__ */ n(
"button",
{
type: "button",
onClick: () => {
D("preset-video-demo"), x("randomSphere"), o(60), l(1200), h(2), s(1), m(4), R(12);
},
onPointerEnter: z,
style: {
border: "1px solid var(--terminal-panel-border)",
background: "rgba(7,19,11,0.8)",
color: "var(--terminal-green-soft)",
padding: "6px 10px",
borderRadius: 8,
cursor: "pointer",
fontSize: 11,
fontWeight: 400,
fontFamily: "var(--font-headline)",
letterSpacing: "0.06em"
},
children: "Preset: Video Demo"
}
),
/* @__PURE__ */ n(
"button",
{
type: "button",
onClick: () => {
D("preset-robust-sweep"), x("randomSphere"), o(200), l(3e3), h(5), s(1), m(16), R(40);
},
onPointerEnter: z,
style: {
border: "1px solid rgba(125, 255, 155, 0.32)",
background: "rgba(2,6,23,0.8)",
color: "var(--terminal-green-soft)",
padding: "6px 10px",
borderRadius: 8,
cursor: "pointer",
fontSize: 11,
fontWeight: 400,
fontFamily: "var(--font-headline)",
letterSpacing: "0.06em"
},
children: "Preset: Robust Sweep"
}
)
] }),
/* @__PURE__ */ i("div", { style: { display: "grid", gridTemplateColumns: "repeat(auto-fit, minmax(140px, 1fr))", gap: "8px" }, children: [
/* @__PURE__ */ i("label", { style: { fontSize: "11px", color: "var(--terminal-green-soft)", display: "flex", flexDirection: "column", gap: "4px" }, children: [
"Max Complexity",
/* @__PURE__ */ n(
"input",
{
type: "number",
min: 2,
max: 200,
value: t,
onChange: (b) => o(Math.max(2, Math.min(200, Number(b.target.value) || 2))),
onFocus: () => z(),
style: { background: "#07130b", color: "var(--terminal-green-soft)", border: "1px solid var(--terminal-panel-border)", borderRadius: "6px", padding: "6px 8px" }
}
)
] }),
/* @__PURE__ */ i("label", { style: { fontSize: "11px", color: "var(--terminal-green-soft)", display: "flex", flexDirection: "column", gap: "4px" }, children: [
"Samples / Point",
/* @__PURE__ */ n(
"input",
{
type: "number",
min: 100,
max: 2e4,
step: 100,
value: r,
onChange: (b) => l(Math.max(100, Math.min(2e4, Number(b.target.value) || 100))),
onFocus: () => z(),
style: { background: "#07130b", color: "var(--terminal-green-soft)", border: "1px solid var(--terminal-panel-border)", borderRadius: "6px", padding: "6px 8px" }
}
)
] }),
/* @__PURE__ */ i("label", { style: { fontSize: "11px", color: "var(--terminal-green-soft)", display: "flex", flexDirection: "column", gap: "4px" }, children: [
"Runs / Point (Seeds)",
/* @__PURE__ */ n(
"input",
{
type: "number",
min: 1,
max: 20,
step: 1,
value: a,
onChange: (b) => h(Math.max(1, Math.min(20, Number(b.target.value) || 1))),
onFocus: () => z(),
style: { background: "#07130b", color: "var(--terminal-green-soft)", border: "1px solid var(--terminal-panel-border)", borderRadius: "6px", padding: "6px 8px" }
}
)
] }),
/* @__PURE__ */ i("label", { style: { fontSize: "11px", color: "var(--terminal-green-soft)", display: "flex", flexDirection: "column", gap: "4px" }, children: [
"Bin Size (s)",
/* @__PURE__ */ n(
"input",
{
type: "number",
min: 0.1,
max: 20,
step: 0.1,
value: c,
onChange: (b) => s(Math.max(0.1, Math.min(20, Number(b.target.value) || 0.1))),
onFocus: () => z(),
style: { background: "#07130b", color: "var(--terminal-green-soft)", border: "1px solid var(--terminal-panel-border)", borderRadius: "6px", padding: "6px 8px" }
}
)
] }),
/* @__PURE__ */ i("label", { style: { fontSize: "11px", color: "var(--terminal-green-soft)", display: "flex", flexDirection: "column", gap: "4px" }, children: [
"Sub-Bin Sampling",
/* @__PURE__ */ n(
"input",
{
type: "number",
min: 1,
max: 256,
step: 1,
value: d,
onChange: (b) => m(Math.max(1, Math.min(256, Math.round(Number(b.target.value) || 1)))),
onFocus: () => z(),
style: { background: "#07130b", color: "var(--terminal-green-soft)", border: "1px solid var(--terminal-panel-border)", borderRadius: "6px", padding: "6px 8px" }
}
)
] }),
/* @__PURE__ */ i("label", { style: { fontSize: "11px", color: "var(--terminal-green-soft)", display: "flex", flexDirection: "column", gap: "4px" }, children: [
"Observation Mode",
/* @__PURE__ */ i(
"select",
{
value: u,
onChange: (b) => x(b.target.value),
onFocus: () => z(),
style: { background: "#07130b", color: "var(--terminal-green-soft)", border: "1px solid var(--terminal-panel-border)", borderRadius: "6px", padding: "6px 8px" },
children: [
/* @__PURE__ */ n("option", { value: "randomSphere", children: "Random Sphere (recommended)" }),
/* @__PURE__ */ n("option", { value: "orbit", children: "Orbit (path-biased)" })
]
}
)
] }),
/* @__PURE__ */ i("label", { style: { fontSize: "11px", color: "var(--terminal-green-soft)", display: "flex", flexDirection: "column", gap: "4px" }, children: [
"Target Excess (B-Y)",
/* @__PURE__ */ n(
"input",
{
type: "number",
min: 1e-3,
max: 1,
step: 5e-3,
value: y,
onChange: (b) => B(Math.max(1e-3, Math.min(1, Number(b.target.value) || 0.05))),
onFocus: () => z(),
style: { background: "#07130b", color: "var(--terminal-green-soft)", border: "1px solid var(--terminal-panel-border)", borderRadius: "6px", padding: "6px 8px" }
}
)
] }),
/* @__PURE__ */ i("label", { style: { fontSize: "11px", color: "var(--terminal-green-soft)", display: "flex", flexDirection: "column", gap: "4px" }, children: [
"Fit Start Complexity",
/* @__PURE__ */ n(
"input",
{
type: "number",
min: 1,
max: t,
step: 1,
value: F,
onChange: (b) => R(Math.max(1, Math.min(t, Number(b.target.value) || 1))),
onFocus: () => z(),
style: { background: "#07130b", color: "var(--terminal-green-soft)", border: "1px solid var(--terminal-panel-border)", borderRadius: "6px", padding: "6px 8px" }
}
)
] }),
/* @__PURE__ */ i("div", { style: { fontSize: "11px", color: "var(--terminal-green-soft)", display: "flex", flexDirection: "column", gap: "6px" }, children: [
"Progress",
/* @__PURE__ */ n("div", { style: { background: "rgba(7,19,11,0.9)", border: "1px solid var(--terminal-panel-border)", borderRadius: "999px", padding: "3px" }, children: /* @__PURE__ */ n(
"div",
{
style: {
height: "8px",
width: `${Math.round(O * 100)}%`,
background: "linear-gradient(90deg, var(--terminal-green-dim), var(--terminal-green-soft))",
borderRadius: "999px",
transition: "width 0.15s ease"
}
}
) }),
/* @__PURE__ */ n("div", { style: { color: "var(--terminal-green)" }, children: _ ? `Running ${Math.round(O * 100)}%` : "Complete" })
] })
] }),
/* @__PURE__ */ i("div", { style: { display: "flex", flexDirection: "column", gap: "12px", minHeight: 0, flex: 1 }, children: [
/* @__PURE__ */ n(
"div",
{
style: {
background: "rgba(7,19,11,0.72)",
border: "1px solid var(--terminal-panel-border)",
borderRadius: "10px",
padding: "10px",
width: "100%",
minWidth: 0,
minHeight: "min(58vh, 520px)"
},
children: /* @__PURE__ */ i("svg", { viewBox: `0 0 ${g.width} ${g.height}`, style: { width: "100%", height: "100%" }, children: [
/* @__PURE__ */ n("rect", { x: 0, y: 0, width: g.width, height: g.height, fill: "transparent" }),
g.yTicks.map((b, T) => {
const E = g.yToPx(b);
return /* @__PURE__ */ i("g", { children: [
/* @__PURE__ */ n("line", { x1: g.margin.left, y1: E, x2: g.margin.left + g.innerW, y2: E, stroke: "rgba(125, 255, 155, 0.12)" }),
/* @__PURE__ */ n("text", { x: 8, y: E + 4, fill: "var(--terminal-green)", fontSize: "10", fontFamily: "var(--font-ui)", children: cn(b) })
] }, `ygrid-${T}`);
}),
/* @__PURE__ */ n(
"line",
{
x1: g.margin.left,
y1: g.yToPx(1),
x2: g.margin.left + g.innerW,
y2: g.yToPx(1),
stroke: "#f97316",
strokeDasharray: "4 4",
opacity: 0.8
}
),
/* @__PURE__ */ n("text", { x: g.margin.left + 6, y: g.yToPx(1) - 6, fill: "#fdba74", fontSize: "10", children: "Fano = 1" }),
/* @__PURE__ */ n("line", { x1: g.margin.left, y1: g.margin.top + g.innerH, x2: g.margin.left + g.innerW, y2: g.margin.top + g.innerH, stroke: "rgba(125, 255, 155, 0.3)" }),
/* @__PURE__ */ n("line", { x1: g.margin.left, y1: g.margin.top, x2: g.margin.left, y2: g.margin.top + g.innerH, stroke: "rgba(125, 255, 155, 0.3)" }),
Array.from({ length: Math.min(t, 10) }, (b, T) => {
const E = 1 + (t - 1) * T / Math.max(1, Math.min(t - 1, 9)), I = g.xToPx(E);
return /* @__PURE__ */ i("g", { children: [
/* @__PURE__ */ n("line", { x1: I, y1: g.margin.top + g.innerH, x2: I, y2: g.margin.top + g.innerH + 4, stroke: "rgba(125, 255, 155, 0.3)" }),
/* @__PURE__ */ n("text", { x: I, y: g.margin.top + g.innerH + 18, fill: "var(--terminal-green)", fontSize: "10", fontFamily: "var(--font-ui)", textAnchor: "middle", children: Math.round(E) })
] }, `xtick-${T}`);
}),
ke && /* @__PURE__ */ n("path", { d: ke, fill: "none", stroke: "#fbbf24", strokeWidth: "2", opacity: 0.95 }),
ue && /* @__PURE__ */ n("path", { d: ue, fill: "none", stroke: "#60a5fa", strokeWidth: "2.25", opacity: 0.95 }),
N && v.length > 2 && (() => {
const b = v.filter((T) => T.complexity >= F).map((T, E) => {
const I = 1 + N.predictFanoExcessFromLaneCount(T.laneCount);
return `${E === 0 ? "M" : "L"} ${g.xToPx(T.complexity)} ${g.yToPx(I)}`;
}).join(" ");
return /* @__PURE__ */ n("path", { d: b, fill: "none", stroke: "#93c5fd", strokeDasharray: "5 4", strokeWidth: "1.5", opacity: 0.8 });
})(),
P && v.length > 2 && (() => {
const b = v.filter((T) => T.complexity >= F).map((T, E) => {
const I = 1 + P.predictFanoExcessFromLaneCount(T.laneCount);
return `${E === 0 ? "M" : "L"} ${g.xToPx(T.complexity)} ${g.yToPx(I)}`;
}).join(" ");
return /* @__PURE__ */ n("path", { d: b, fill: "none", stroke: "#22d3ee", strokeDasharray: "2 4", strokeWidth: "1.5", opacity: 0.7 });
})(),
v.map((b) => /* @__PURE__ */ i("g", { children: [
/* @__PURE__ */ n("circle", { cx: g.xToPx(b.complexity), cy: g.yToPx(b.fanoYellow), r: "2.2", fill: "#fbbf24" }),
/* @__PURE__ */ n("circle", { cx: g.xToPx(b.complexity), cy: g.yToPx(b.fanoBlue), r: "2.5", fill: "#60a5fa" })
] }, `dot-${b.complexity}`)),
/* @__PURE__ */ n("text", { x: g.margin.left + g.innerW / 2, y: g.height - 8, fill: "var(--terminal-green)", fontSize: "11", fontFamily: "var(--font-ui)", textAnchor: "middle", children: "Complexity" }),
/* @__PURE__ */ n(
"text",
{
x: 14,
y: g.margin.top + g.innerH / 2,
fill: "var(--terminal-green)",
fontSize: "11",
fontFamily: "var(--font-ui)",
textAnchor: "middle",
transform: `rotate(-90 14 ${g.margin.top + g.innerH / 2})`,
children: "Fano Factor (Var / Mean, log scale)"
}
)
] })
}
),
/* @__PURE__ */ i(
"div",
{
style: {
display: "grid",
gridTemplateColumns: "repeat(auto-fit, minmax(220px, 1fr))",
gap: "8px",
alignItems: "start"
},
children: [
/* @__PURE__ */ i("div", { style: { background: "rgba(7,19,11,0.72)", border: "1px solid var(--terminal-panel-border)", borderRadius: "10px", padding: "10px", fontSize: "11px" }, children: [
/* @__PURE__ */ n("div", { style: { fontWeight: 400, marginBottom: "6px", color: "var(--terminal-green-soft)", fontFamily: "var(--font-headline)", letterSpacing: "0.06em", textTransform: "uppercase" }, children: "Legend" }),
/* @__PURE__ */ n("div", { style: { color: "#60a5fa" }, children: "Blue: Lightlane Fano" }),
/* @__PURE__ */ n("div", { style: { color: "#fbbf24" }, children: "Yellow: Isotropic Fano" }),
/* @__PURE__ */ n("div", { style: { color: "#fdba74", marginTop: "4px" }, children: "Dashed orange: Fano = 1" }),
/* @__PURE__ */ n("div", { style: { color: "#93c5fd", marginTop: "4px" }, children: "Dashed blue: power-fit extrapolation (blue excess over yellow)" }),
/* @__PURE__ */ n("div", { style: { color: "#22d3ee", marginTop: "4px" }, children: "Dashed cyan: floor-aware fit (B + A×N^-α)" })
] }),
/* @__PURE__ */ i("div", { style: { background: "rgba(7,19,11,0.72)", border: "1px solid var(--terminal-panel-border)", borderRadius: "10px", padding: "10px", fontSize: "11px" }, children: [
/* @__PURE__ */ n("div", { style: { fontWeight: 400, marginBottom: "6px", color: "var(--terminal-green-soft)", fontFamily: "var(--font-headline)", letterSpacing: "0.06em", textTransform: "uppercase" }, children: "Latest Point" }),
q ? /* @__PURE__ */ i(Fe, { children: [
/* @__PURE__ */ i("div", { children: [
"Complexity: ",
/* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "var(--terminal-green-soft)" }, children: q.complexity })
] }),
/* @__PURE__ */ i("div", { children: [
"Lanes: ",
/* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "var(--terminal-green-soft)" }, children: q.laneCount })
] }),
/* @__PURE__ */ i("div", { children: [
"Mean Ratio (B/Y): ",
/* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "var(--terminal-green-soft)" }, children: (q.meanBlue / Math.max(1e-9, q.meanYellow)).toFixed(3) })
] }),
/* @__PURE__ */ i("div", { children: [
"Fano Blue: ",
/* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "#93c5fd" }, children: q.fanoBlue.toFixed(3) })
] }),
/* @__PURE__ */ i("div", { children: [
"Fano Yellow: ",
/* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "#fef3c7" }, children: q.fanoYellow.toFixed(3) })
] }),
/* @__PURE__ */ i("div", { children: [
"Excess (B-Y): ",
/* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "var(--terminal-green-soft)" }, children: q.fanoExcess.toFixed(3) })
] }),
/* @__PURE__ */ i("div", { style: { color: "var(--terminal-green)", marginTop: "6px" }, children: [
"Aggregated over ",
r.toLocaleString(),
" bins × ",
a,
" seeds"
] })
] }) : /* @__PURE__ */ n("div", { style: { color: "var(--terminal-green)" }, children: "No points yet." })
] }),
/* @__PURE__ */ i("div", { style: { background: "rgba(7,19,11,0.72)", border: "1px solid var(--terminal-panel-border)", borderRadius: "10px", padding: "10px", fontSize: "11px" }, children: [
/* @__PURE__ */ n("div", { style: { fontWeight: 400, marginBottom: "6px", color: "var(--terminal-green-soft)", fontFamily: "var(--font-headline)", letterSpacing: "0.06em", textTransform: "uppercase" }, children: "Power Fit" }),
N ? /* @__PURE__ */ i(Fe, { children: [
/* @__PURE__ */ i("div", { style: { color: "var(--terminal-green-soft)" }, children: [
"Excess ≈ ",
/* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "var(--terminal-green-soft)" }, children: N.A.toExponential(2) }),
" × N",
/* @__PURE__ */ i("sup", { style: { fontFamily: "monospace", color: "var(--terminal-green-soft)" }, children: [
"-",
N.alpha.toFixed(2)
] })
] }),
/* @__PURE__ */ i("div", { style: { color: "var(--terminal-green)", marginTop: "6px" }, children: [
"Fit is on blue excess over yellow using lane count N, starting at complexity ",
F,
"."
] })
] }) : /* @__PURE__ */ n("div", { style: { color: "var(--terminal-green)" }, children: "Need more points with nonzero excess." }),
P && /* @__PURE__ */ i("div", { style: { color: "var(--terminal-green)", marginTop: "6px" }, children: [
"Floor fit: excess ≈ ",
/* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "var(--terminal-green-soft)" }, children: P.B.toFixed(3) }),
" + ",
/* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "var(--terminal-green-soft)" }, children: P.A.toExponential(2) }),
" × N",
/* @__PURE__ */ i("sup", { style: { fontFamily: "monospace", color: "var(--terminal-green-soft)" }, children: [
"-",
P.alpha.toFixed(2)
] })
] })
] }),
/* @__PURE__ */ i("div", { style: { background: "rgba(7,19,11,0.72)", border: "1px solid var(--terminal-panel-border)", borderRadius: "10px", padding: "10px", fontSize: "11px" }, children: [
/* @__PURE__ */ n("div", { style: { fontWeight: 400, marginBottom: "6px", color: "var(--terminal-green-soft)", fontFamily: "var(--font-headline)", letterSpacing: "0.06em", textTransform: "uppercase" }, children: "Indistinguishable Target" }),
/* @__PURE__ */ i("div", { style: { color: "var(--terminal-green)", marginBottom: "6px" }, children: [
"Criterion: ",
/* @__PURE__ */ i("span", { style: { color: "var(--terminal-green-soft)" }, children: [
"Fano Blue - Fano Yellow ≤ ",
y.toFixed(3)
] })
] }),
H ? /* @__PURE__ */ i(Fe, { children: [
H.blockedByFloor ? /* @__PURE__ */ i(Fe, { children: [
/* @__PURE__ */ n("div", { style: { color: "#ff8f8f" }, children: "Floor-aware fit predicts no finite crossing for this threshold." }),
/* @__PURE__ */ i("div", { children: [
"Fitted excess floor:",
" ",
/* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "var(--terminal-green-soft)" }, children: H.floorExcess.toFixed(3) })
] }),
/* @__PURE__ */ n("div", { style: { color: "var(--terminal-green)", marginTop: "6px" }, children: "Increase `Max Complexity` / `Samples`, or raise fit start to test whether the floor is a transient or a genuine plateau." })
] }) : /* @__PURE__ */ i(Fe, { children: [
/* @__PURE__ */ i("div", { children: [
"Required lane count N (fit):",
" ",
/* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "var(--terminal-green-soft)" }, children: Math.round(H.requiredLaneCount).toLocaleString() })
] }),
/* @__PURE__ */ i("div", { children: [
"Estimated complexity:",
" ",
/* @__PURE__ */ n("span", { style: { fontFamily: "monospace", color: "#93c5fd" }, children: H.complexityEstimate ? Math.ceil(H.complexityEstimate.complexity).toLocaleString() : "n/a" }),
H.complexityEstimate && /* @__PURE__ */ i("span", { style: { color: "var(--terminal-green)" }, children: [
" ",
"(",
H.complexityEstimate.mode === "observed-range" ? "interpolated from current sweep" : H.complexityEstimate.mode === "extrapolated" ? "extrapolated" : "bounded by current sweep",
")"
] })
] })
] }),
/* @__PURE__ */ n("div", { style: { marginTop: "6px", color: "var(--terminal-green)" }, children: H.measuredCrossing ? `Observed crossing already reached at complexity ${H.measuredCrossing.complexity}.` : "No observed crossing yet in current sweep; estimate uses fit." })
] }) : /* @__PURE__ */ n("div", { style: { color: "var(--terminal-green)" }, children: "Need a stable excess fit (nonzero blue excess across multiple points)." })
] }),
/* @__PURE__ */ i("div", { style: { background: "rgba(7,19,11,0.72)", border: "1px solid var(--terminal-panel-border)", borderRadius: "10px", padding: "10px", fontSize: "11px", color: "var(--terminal-green)" }, children: [
"Use ",
/* @__PURE__ */ n("span", { style: { color: "var(--terminal-green-soft)" }, children: "Random Sphere" }),
" to isolate discretization convergence from path bias. Orbit mode is still useful to show persistent anisotropy on specific trajectories.",
/* @__PURE__ */ i("div", { style: { marginTop: "6px" }, children: [
"For a stronger/cleaner claim in the video: report the threshold estimate together with ",
/* @__PURE__ */ n("span", { style: { color: "var(--terminal-green-soft)" }, children: "bin size" }),
", ",
/* @__PURE__ */ n("span", { style: { color: "var(--terminal-green-soft)" }, children: "sub-bin sampling" }),
", and ",
/* @__PURE__ */ n("span", { style: { color: "var(--terminal-green-soft)" }, children: "runs/point" }),
"."
] }),
/* @__PURE__ */ n("div", { style: { marginTop: "6px" }, children: "If the floor-aware fit stays above zero as you increase complexity and samples, frame it as an open question for viewers." })
] })
]
}
)
] })
]
}
) });
}
const Ge = new Dt("#dbeafe");
function hn(e, t) {
const o = new Float32Array(t * 3), r = new Float32Array(t * 3), l = [], a = e + 0.01;
for (let h = 0; h < t; h += 1) {
const c = Math.random(), s = Math.random(), d = 2 * Math.PI * c, m = 1 - 2 * s, u = Math.sqrt(Math.max(0, 1 - m * m)), x = h * 3;
o[x] = a * u * Math.cos(d), o[x + 1] = a * u * Math.sin(d), o[x + 2] = a * m, r[x] = Ge.r * 0.15, r[x + 1] = Ge.g * 0.15, r[x + 2] = Ge.b * 0.15, l.push({
speed: 0.8 + Math.random() * 2.6,
phase: Math.random() * Math.PI * 2,
minBrightness: 0.03 + Math.random() * 0.06,
maxBoost: 0.35 + Math.random() * 0.85
});
}
return { positions: o, colors: r, sparklePoints: l };
}
function un({ radius: e }) {
const t = Z(null), o = 16e3, { positions: r, colors: l, sparklePoints: a } = he(
() => hn(e, o),
[e]
);
return Qe(({ clock: h }) => {
const c = t.current;
if (!c) return;
const s = c.geometry.getAttribute("color");
if (!s) return;
const d = h.getElapsedTime(), m = s.array;
for (let u = 0; u < a.length; u += 1) {
const x = a[u], y = Math.pow(Math.max(0, Math.sin(d * x.speed + x.phase)), 24), B = x.minBrightness + y * x.maxBoost, F = u * 3;
m[F] = Ge.r * B, m[F + 1] = Ge.g * B, m[F + 2] = Ge.b * B;
}
s.needsUpdate = !0;
}), /* @__PURE__ */ i("group", { children: [
/* @__PURE__ */ i("mesh", { children: [
/* @__PURE__ */ n("sphereGeometry", { args: [e, 64, 64] }),
/* @__PURE__ */ n(
"meshStandardMaterial",
{
color: "#60a5fa",
emissive: "#1d4ed8",
emissiveIntensity: 0.18,
transparent: !0,
opacity: 0.08,
roughness: 0.15,
metalness: 0.05
}
)
] }),
/* @__PURE__ */ i("mesh", { renderOrder: 2, children: [
/* @__PURE__ */ n("sphereGeometry", { args: [e, 48, 48] }),
/* @__PURE__ */ n(
"meshBasicMaterial",
{
color: "#93c5fd",
wireframe: !0,
transparent: !0,
opacity: 0.14,
toneMapped: !1
}
)
] }),
/* @__PURE__ */ i("points", { ref: t, renderOrder: 3, children: [
/* @__PURE__ */ i("bufferGeometry", { children: [
/* @__PURE__ */ n("bufferAttribute", { attach: "attributes-position", args: [r, 3] }),
/* @__PURE__ */ n("bufferAttribute", { attach: "attributes-color", args: [l, 3] })
] }),
/* @__PURE__ */ n(
"pointsMaterial",
{
size: Math.max(0.06, e * 0.018),
sizeAttenuation: !0,
transparent: !0,
opacity: 0.95,
vertexColors: !0,
depthWrite: !1,
toneMapped: !1
}
)
] })
] });
}
function mn({ radius: e, paused: t = !1 }) {
const o = Z(null);
return Qe((r) => {
if (!t && o.current) {
const l = r.clock.elapsedTime * 3, a = 0.5 + (Math.sin(l) + 1) / 2 * 1.5;
o.current.emissiveIntensity = a;
}
}), /* @__PURE__ */ i("mesh", { position: [0, 0, 0], children: [
/* @__PURE__ */ n("sphereGeometry", { args: [e, 64, 64] }),
/* @__PURE__ */ n(
"meshStandardMaterial",
{
ref: o,
color: "#ec4899",
emissive: "#db2777",
emissiveIntensity: 1,
toneMapped: !1
}
)
] });
}
function fn(e) {
const t = 2 * Math.PI;
let o = e % t;
return o < 0 && (o += t), o > Math.PI && (o = t - o), o;
}
function gn({ radius: e, theta: t, phi: o, orbitTime: r, simTime: l, thetaDrift: a = 0, paused: h = !1 }) {
const c = Z(null);
return Qe(() => {
if (!h && c.current) {
const s = o + r.current, d = fn(t + (l?.current ?? 0) * a), m = e * Math.sin(d) * Math.cos(s), u = e * Math.cos(d), x = e * Math.sin(d) * Math.sin(s);
c.current.position.set(m, u, x), c.current.lookAt(0, 0, 0);
}
}), /* @__PURE__ */ i("group", { ref: c, children: [
/* @__PURE__ */ i("mesh", { renderOrder: 10, children: [
/* @__PURE__ */ n("sphereGeometry", { args: [0.09, 16, 16] }),
/* @__PURE__ */ n("meshBasicMaterial", { color: "#22d3ee", toneMapped: !1 })
] }),
/* @__PURE__ */ i("mesh", { renderOrder: 9, children: [
/* @__PURE__ */ n("sphereGeometry", { args: [0.16, 16, 16] }),
/* @__PURE__ */ n("meshBasicMaterial", { color: "#22d3ee", transparent: !0, opacity: 0.18, toneMapped: !1 })
] }),
/* @__PURE__ */ i("mesh", { rotation: [Math.PI / 2, 0, 0], children: [
/* @__PURE__ */ n("cylinderGeometry", { args: [0.14, 0.18, 1, 16] }),
/* @__PURE__ */ n("meshStandardMaterial", { color: "#c0c0c0", metalness: 0.8, roughness: 0.2 })
] }),
/* @__PURE__ */ i("mesh", { position: [0, 0, 0.3], rotation: [Math.PI / 2, 0, 0], children: [
/* @__PURE__ */ n("cylinderGeometry", { args: [0.18, 0.18, 0.16, 8] }),
/* @__PURE__ */ n("meshStandardMaterial", { color: "#d4af37", metalness: 0.95, roughness: 0.18 })
] }),
/* @__PURE__ */ i("mesh", { position: [0, 0, 0.6], rotation: [Math.PI / 2, 0, 0], children: [
/* @__PURE__ */ n("cylinderGeometry", { args: [0.22, 0.22, 0.2, 16] }),
/* @__PURE__ */ n("meshStandardMaterial", { color: "#ffd700", metalness: 1, roughness: 0.1 })
] }),
/* @__PURE__ */ i("mesh", { position: [0, 0, 0.7], renderOrder: 11, children: [
/* @__PURE__ */ n("sphereGeometry", { args: [0.05, 12, 12] }),
/* @__PURE__ */ n("meshBasicMaterial", { color: "#f97316", toneMapped: !1 })
] }),
/* @__PURE__ */ i("mesh", { position: [0, 0, 0.35], rotation: [Math.PI / 2, 0, 0], renderOrder: 8, children: [
/* @__PURE__ */ n("cylinderGeometry", { args: [0.015, 0.015, 0.7, 8] }),
/* @__PURE__ */ n("meshBasicMaterial", { color: "#f97316", transparent: !0, opacity: 0.7, toneMapped: !1 })
] }),
/* @__PURE__ */ i("group", { position: [0, 0, 0.22], children: [
/* @__PURE__ */ i("mesh", { position: [0.6, 0, 0], children: [
/* @__PURE__ */ n("boxGeometry", { args: [0.8, 0.4, 0.05] }),
/* @__PURE__ */ n("meshStandardMaterial", { color: "#1e3a8a", metalness: 0.5, roughness: 0.1 })
] }),
/* @__PURE__ */ i("mesh", { position: [-0.6, 0, 0], children: [
/* @__PURE__ */ n("boxGeometry", { args: [0.8, 0.4, 0.05] }),
/* @__PURE__ */ n("meshStandardMaterial", { color: "#1e3a8a", metalness: 0.5, roughness: 0.1 })
] }),
/* @__PURE__ */ i("mesh", { position: [0.28, 0, -0.01], children: [
/* @__PURE__ */ n("boxGeometry", { args: [0.18, 0.05, 0.04] }),
/* @__PURE__ */ n("meshStandardMaterial", { color: "#94a3b8", metalness: 0.7, roughness: 0.22 })
] }),
/* @__PURE__ */ i("mesh", { position: [-0.28, 0, -0.01], children: [
/* @__PURE__ */ n("boxGeometry", { args: [0.18, 0.05, 0.04] }),
/* @__PURE__ */ n("meshStandardMaterial", { color: "#94a3b8", metalness: 0.7, roughness: 0.22 })
] })
] })
] });
}
const ce = {
solid: "#60a5fa",
dark: "#3b82f6",
light: "#93c5fd",
glow: "rgba(96,165,250,0.5)",
panel: "rgba(0,20,40,0.8)"
}, ae = {
solid: "#fbbf24",
dark: "#f59e0b",
light: "#fef3c7",
glow: "rgba(251,191,36,0.5)"
}, it = "var(--font-headline)", pe = "var(--font-ui)", xn = "var(--terminal-green)", Ae = "var(--terminal-green-soft)", ye = "var(--terminal-green-muted)";
function bn({ bars: e }) {
const t = window.innerHeight;
return /* @__PURE__ */ i(Fe, { children: [
e.map((o) => {
const r = t - o.startBottom - o.barHeight, l = o.targetLeft - o.startLeft, a = o.targetTop - r;
return /* @__PURE__ */ n(
"div",
{
style: {
position: "absolute",
left: `${o.startLeft}px`,
top: `${r}px`,
width: `${o.barWidth}px`,
height: `${o.barHeight}px`,
background: o.color,
borderRadius: "2px 2px 0 0",
opacity: 0.95,
animation: "flyToDistribution 1.2s ease-in-out forwards",
"--delta-x": `${l}px`,
"--delta-y": `${a}px`,
zIndex: 1e3,
boxShadow: `0 0 15px ${o.color}`
}
},
o.id
);
}),
/* @__PURE__ */ n("style", { children: `
@keyframes flyToDistribution {
0% {
transform: translate(0, 0) scale(1);
opacity: 0.95;
}
40% {
transform: translate(calc(var(--delta-x) * 0.3), calc(var(--delta-y) * 0.5)) scale(0.9);
opacity: 0.9;
}
85% {
transform: translate(calc(var(--delta-x) * 0.95), calc(var(--delta-y) * 0.95)) scale(0.7);
opacity: 0.85;
}
100% {
transform: translate(var(--delta-x), var(--delta-y)) scale(0.6);
opacity: 0;
}
}
.clickable-bar {
transition: all 0.2s ease;
}
.clickable-bar:hover {
transform: scaleY(1.1) scaleX(1.2);
filter: brightness(1.3);
box-shadow: 0 0 10px currentColor;
}
` })
] });
}
function at() {
return { n: 0, meanObs: 0, m2Obs: 0, meanIso: 0, m2Iso: 0 };
}
function yn(e, t, o) {
const r = e.n + 1, l = t - e.meanObs, a = e.meanObs + l / r, h = e.m2Obs + l * (t - a), c = o - e.meanIso, s = e.meanIso + c / r, d = e.m2Iso + c * (o - s);
return { n: r, meanObs: a, m2Obs: h, meanIso: s, m2Iso: d };
}
function vn({
complexity: e,
radius: t,
distance: o,
theta: r,
phi: l,
observationMode: a,
allSectors: h,
cumulative: c,
K: s,
orbitRadius: d,
orbitVelocity: m,
thetaDrift: u,
thetaJitter: x,
phiJitter: y,
usePoisson: B,
speedup: F,
paused: R,
sceneView: C,
bottomInset: j = 0,
showNumericDiagnostics: v = !0,
compactNumericDiagnostics: L = !1,
host: O,
centerDistribution: J = !1,
hideFlyingBars: _ = !1
}) {
const [k, A] = $({
current: 0,
total: 0,
lastCheck: 0,
overlaps: 0,
currentTheory: 0,
binOverlapsMean: 0,
currentExpectedLightlane: 0
}), ee = 4, z = he(() => It({
D: d,
theta: r,
phi: l,
observationMode: a,
velocity: m,
thetaDrift: u,
thetaJitter: x,
phiJitter: y,
distance: o,
hitTestModel: "segment",
bin_size: 1,
complexity: e,
sub_bin_sampling: ee,
flux: s,
lane_radius: t,
allSectors: h,
cumulative: c,
usePoisson: B
}), [d, r, l, a, m, u, x, y, e, s, t, o, h, c, B]), D = 60, N = Z(new Array(D).fill(-1)), P = Z(new Array(D).fill(-1)), H = Z(0), [g, ue] = $(new Array(D).fill(-1)), [ke, q] = $(new Array(D).fill(-1)), b = Et({
flux: s,
D: d,
lane_radius: t,
dt: 1,
hitTestModel: "segment",
lane_length: o
}), T = Math.sqrt(b), E = 15, I = 4 * T, ne = Math.max(0, b - I), G = b + I, se = B, ve = Math.max(0, Math.floor(ne)), Re = Math.max(ve, Math.ceil(G)), X = se ? Re - ve + 1 : E, Pe = se ? 1 : Math.max(1e-9, (G - ne) / E), Be = (f) => {
if (se) {
const S = Math.round(f);
return S <= ve ? 0 : S >= Re ? X - 1 : S - ve;
}
return f < ne ? 0 : f >= G ? X - 1 : Math.floor((f - ne) / Pe);
}, Je = (f) => se ? ve + f : ne + (f + 0.5) * Pe, [me, Ee] = $(new Array(X).fill(0)), [Se, Y] = $(new Array(X).fill(0)), [Ie, le] = $(/* @__PURE__ */ new Set()), [qe, Le] = $(/* @__PURE__ */ new Set()), [Ne, ze] = $([]), $e = Z(0), _e = Z(at()), [U, Ze] = $(at()), et = Z(R), tt = Z(0);
de(() => {
Ee(new Array(X).fill(0)), Y(new Array(X).fill(0)), N.current.fill(-1), P.current.fill(-1), H.current = 0, ue(new Array(D).fill(-1)), q(new Array(D).fill(-1)), le(/* @__PURE__ */ new Set()), Le(/* @__PURE__ */ new Set()), ze([]), _e.current = at(), Ze(at()), A({
current: 0,
total: 0,
lastCheck: 0,
overlaps: 0,
currentTheory: 0,
binOverlapsMean: 0,
currentExpectedLightlane: 0
});
}, [e, s, t, o, d, r, l, a, m, u, x, y, h, c, B, X]);
const nt = (f, S) => {
if (f.length === 0) return;
let w = 0, oe = 0, te = 0, fe = k.binOverlapsMean, V = k.currentExpectedLightlane, re = _e.current;
for (const ie of f) {
const ge = ie.lightlane, xe = ie.isotropic;
if (w += ge, oe = ge, te = xe, fe = ie.overlapsMean, V = ie.lambdaLightlaneExpected, re = yn(re, ge, xe), N.current[H.current] = ge, P.current[H.current] = xe, H.current++, H.current >= D) {
const Me = Math.max(10, ...N.current.filter((Q) => Q >= 0), ...P.current.filter((Q) => Q >= 0));
K([...N.current], [...P.current], Me), N.current.fill(-1), P.current.fill(-1), H.current = 0, le(/* @__PURE__ */ new Set()), Le(/* @__PURE__ */ new Set());
}
}
_e.current = re, A((ie) => ({
current: oe,
total: ie.total + w,
lastCheck: Date.now(),
overlaps: S,
currentTheory: te,
binOverlapsMean: fe,
currentExpectedLightlane: V
})), Ze(re), ue([...N.current]), q([...P.current]);
}, He = Z(!1), We = Z(null), ot = (f, S) => {
f.stopPropagation(), He.current = !0, We.current = S, f.target.setPointerCapture(f.pointerId), Ce(O, we.click, { target: `${S}-periodogram`, action: "pointer-down" });
}, rt = (f, S, w, oe) => {
if (!He.current || We.current !== S) return;
f.stopPropagation();
const te = f.currentTarget.getBoundingClientRect(), fe = f.clientX - te.left, V = Math.floor(fe / te.width * D);
if (V >= 0 && V < D) {
const re = w[V], ie = S === "observed" ? Ie.has(V) : qe.has(V);
re >= 0 && !ie && W(V, re, S, oe);
}
}, p = (f) => {
f.stopPropagation(), He.current = !1, We.current = null;
}, M = (f, S, w, oe) => {
const te = window.innerWidth, fe = f / D * te, V = te / D, re = Math.max(2, S / oe * 80), xe = w === "observed" ? 25 : 110, Me = Be(S), Q = 20, be = te - 2 * Q, Te = Q + (Me + 0.5) / X * be;
return { startLeft: fe, startBottom: xe, barHeight: re, barWidth: V, targetLeft: Te, targetTop: 150, binIndex: Me };
}, W = (f, S, w, oe) => {
if (S < 0) return;
const te = Date.now();
te - tt.current >= 45 && (tt.current = te, Ce(O, we.computeStep, { target: `${w}-periodogram`, value: S }));
const { startLeft: fe, startBottom: V, barHeight: re, barWidth: ie, targetLeft: ge, targetTop: xe } = M(f, S, w, oe), Me = {
id: $e.current++,
value: S,
startLeft: fe,
startBottom: V,
barHeight: re,
barWidth: ie,
targetLeft: ge,
targetTop: xe,
color: w === "observed" ? ae.solid : ce.solid,
type: w
};
ze((Q) => [...Q, Me]), w === "observed" ? (le((Q) => new Set(Q).add(f)), Ee((Q) => {
const be = [...Q], Te = Be(S);
return be[Te]++, be;
})) : (Le((Q) => new Set(Q).add(f)), Y((Q) => {
const be = [...Q], Te = Be(S);
return be[Te]++, be;
}));
}, K = (f, S, w) => {
const oe = [], te = [...me], fe = [...Se];
f.forEach((V, re) => {
if (V >= 0) {
const { startLeft: ie, startBottom: ge, barHeight: xe, barWidth: Me, targetLeft: Q, targetTop: be, binIndex: Te } = M(re, V, "observed", w);
oe.push({
id: $e.current++,
value: V,
startLeft: ie,
startBottom: ge,
barHeight: xe,
barWidth: Me,
targetLeft: Q,
targetTop: be,
color: ae.solid,
type: "observed"
}), te[Te]++;
}
}), S.forEach((V, re) => {
if (V >= 0) {
const { startLeft: ie, startBottom: ge, barHeight: xe, barWidth: Me, targetLeft: Q, targetTop: be, binIndex: Te } = M(re, V, "theory", w);
oe.push({
id: $e.current++,
value: V,
startLeft: ie,
startBottom: ge,
barHeight: xe,
barWidth: Me,
targetLeft: Q,
targetTop: be,
color: ce.solid,
type: "theory"
}), fe[Te]++;
}
}), ze((V) => [...V, ...oe]), Ee(te), Y(fe);
};
de(() => {
if (Ne.length > 0) {
const f = setTimeout(() => {
ze([]);
}, 1300);
return () => clearTimeout(f);
}
}, [Ne.length]);
const Ve = Z(0);
de(() => {
H.current < Ve.current && (le(/* @__PURE__ */ new Set()), Le(/* @__PURE__ */ new Set())), Ve.current = H.current;
}), de(() => {
const f = et.current;
if (et.current = R, !R || f) return;
const S = z.flushPartialBin();
S && nt([S], S.overlaps);
}, [R, z]), Qe((f, S) => {
if (R) return;
const w = z.simulate(S * F);
w.subBinEvents > 0 && A((oe) => ({ ...oe, overlaps: w.lastLaneCount })), nt(w.bins, w.lastLaneCount);
});
const zt = g.filter((f) => f >= 0), Rt = ke.filter((f) => f >= 0), lt = Math.max(10, Math.max(0, ...zt)), ct = Math.max(10, Math.max(0, ...Rt)), ft = Math.max(1, ...me, ...Se), gt = U.n > 1 ? U.m2Obs / (U.n - 1) : 0, dt = U.n > 1 ? U.m2Iso / (U.n - 1) : 0, Lt = U.meanIso > 0 ? U.meanObs / U.meanIso : 0, xt = dt > 0 ? gt / dt : 0, pt = U.meanObs > 0 ? gt / U.meanObs : 0, Xe = U.meanIso > 0 ? dt / U.meanIso : 0, ht = z.getLaneCount(), bt = ht > 0 && s > 0 ? ht * b / s : 0, yt = v && !L, Ke = C !== "lightlane", Oe = C !== "poisson", $t = Ne.filter((f) => f.type === "theory" && Ke || f.type === "observed" && Oe), Ot = C === "poisson" ? "Shot Noise Distribution" : C === "lightlane" ? "Shot Noise + Lightlane" : "Head to Head", je = {
background: "rgba(255,255,255,0.04)",
border: "1px solid var(--terminal-panel-border)",
borderRadius: "6px",
padding: "6px 8px",
fontFamily: pe
}, vt = /* @__PURE__ */ i("div", { style: {
marginTop: L ? "0" : "12px",
display: "grid",
gridTemplateColumns: L ? "1fr" : "repeat(3, minmax(0, 1fr))",
gap: L ? "6px" : "8px",
fontSize: "10px",
color: Ae,
fontFamily: pe
}, children: [
/* @__PURE__ */ i("div", { style: je, children: [
/* @__PURE__ */ n("div", { style: { color: ye }, children: "Samples" }),
/* @__PURE__ */ n("div", { style: { fontFamily: "monospace" }, children: U.n })
] }),
/* @__PURE__ */ i("div", { style: je, children: [
/* @__PURE__ */ n("div", { style: { color: ye }, children: "Mean Ratio (Lightlane/Poisson)" }),
/* @__PURE__ */ n("div", { style: { fontFamily: "monospace", color: Ae }, children: U.n > 0 ? Lt.toFixed(3) : "n/a" })
] }),
/* @__PURE__ */ i("div", { style: je, children: [
/* @__PURE__ */ n("div", { style: { color: ye }, children: "Var Ratio (Lightlane/Poisson)" }),
/* @__PURE__ */ n("div", { style: { fontFamily: "monospace", color: xt > 1.1 ? ae.light : ce.light }, children: U.n > 1 ? xt.toFixed(3) : "n/a" })
] }),
/* @__PURE__ */ i("div", { style: je, children: [
/* @__PURE__ */ n("div", { style: { color: ye }, children: "Fano Lightlane" }),
/* @__PURE__ */ n("div", { style: { fontFamily: "monospace", color: ae.light }, children: U.n > 1 ? pt.toFixed(3) : "n/a" })
] }),
/* @__PURE__ */ i("div", { style: je, children: [
/* @__PURE__ */ n("div", { style: { color: ye }, children: "Fano Poisson" }),
/* @__PURE__ */ n("div", { style: { fontFamily: "monospace", color: ce.light }, children: U.n > 1 ? Xe.toFixed(3) : "n/a" })
] }),
/* @__PURE__ */ i("div", { style: je, children: [
/* @__PURE__ */ n("div", { style: { color: ye }, children: "Fano Ratio (Lightlane/Poisson)" }),
/* @__PURE__ */ n("div", { style: { fontFamily: "monospace", color: Xe > 0 && pt / Xe > 1.05 ? ae.light : Ae }, children: U.n > 1 && Xe > 0 ? (pt / Xe).toFixed(3) : "n/a" })
] })
] }), St = /* @__PURE__ */ i("div", { style: {
marginTop: L ? "6px" : "8px",
display: L ? "grid" : "flex",
gridTemplateColumns: L ? "1fr" : void 0,
justifyContent: L ? void 0 : "center",
gap: L ? "4px" : "12px",
flexWrap: L ? void 0 : "wrap",
fontSize: "10px",
color: ye,
fontFamily: pe
}, children: [
/* @__PURE__ */ i("span", { children: [
"LC(now): ",
k.overlaps
] }),
/* @__PURE__ */ i("span", { children: [
"LC(bin avg): ",
k.binOverlapsMean.toFixed(2)
] }),
/* @__PURE__ */ i("span", { children: [
"LC iso target: ",
Number.isFinite(bt) ? bt.toFixed(2) : "n/a"
] }),
/* @__PURE__ */ i("span", { children: [
"E[Lightlane|bin]: ",
k.currentExpectedLightlane.toFixed(2)
] }),
/* @__PURE__ */ i("span", { children: [
"Lightlane(last): ",
typeof k.current == "number" ? Number(k.current).toFixed(2) : k.current
] }),
/* @__PURE__ */ i("span", { children: [
"Lanes: ",
ht
] }),
/* @__PURE__ */ i("span", { children: [
"Mode: ",
a === "randomSphere" ? "Random Sphere" : "Orbit"
] }),
/* @__PURE__ */ i("span", { children: [
"theta drift: ",
u.toFixed(3)
] }),
/* @__PURE__ */ i("span", { children: [
"theta jitter: ",
x.toFixed(3)
] }),
/* @__PURE__ */ i("span", { children: [
"phi jitter: ",
y.toFixed(3)
] })
] });
return /* @__PURE__ */ i(Fe, { children: [
!_ && /* @__PURE__ */ n(De, { fullscreen: !0, style: { pointerEvents: "none" }, children: /* @__PURE__ */ n(bn, { bars: $t }) }),
/* @__PURE__ */ i(De, { fullscreen: !0, style: { pointerEvents: "none", display: "flex", flexDirection: "column", justifyContent: J ? "center" : "flex-start" }, children: [
/* @__PURE__ */ i("div", { style: {
position: "absolute",
top: "18px",
left: "20px",
right: "20px",
color: Ae,
fontSize: "12px",
fontWeight: 400,
textAlign: "center",
textTransform: "uppercase",
letterSpacing: "0.16em",
fontFamily: it
}, children: [
Ot,
/* @__PURE__ */ i("span", { style: { fontSize: "10px", fontWeight: "normal", marginLeft: "10px", opacity: 0.8, fontFamily: pe, color: xn }, children: [
"(λ = ",
b.toFixed(1),
", σ = ",
T.toFixed(1),
")"
] })
] }),
/* @__PURE__ */ i("div", { style: {
width: "100%",
padding: J ? "20px" : "60px 20px 20px 20px",
background: J ? "transparent" : "linear-gradient(to bottom, rgba(0,0,0,0.9), transparent)",
fontFamily: pe,
alignSelf: "center"
}, children: [
/* @__PURE__ */ n("div", { style: {
position: "absolute",
left: "5px",
top: J ? "130px" : "170px",
transform: "rotate(-90deg)",
transformOrigin: "left top",
fontSize: "10px",
color: ye,
fontStyle: "italic",
whiteSpace: "nowrap",
fontFamily: pe
}, children: "← Frequency (how many)" }),
/* @__PURE__ */ n("div", { style: {
display: "flex",
height: "100px",
gap: "2px",
alignItems: "flex-end",
padding: "0 20px"
}, children: me.map((f, S) => {
const w = Se[S], oe = f / ft * 100, te = w / ft * 100;
return /* @__PURE__ */ i("div", { style: {
flex: 1,
display: "flex",
flexDirection: "column",
alignItems: "center",
position: "relative",
height: "100%",
justifyContent: "flex-end"
}, children: [
/* @__PURE__ */ i("div", { style: {
width: "100%",
display: "flex",
justifyContent: "center",
gap: "1px",
alignItems: "flex-end",
height: "100%",
position: "relative"
}, children: [
Ke && /* @__PURE__ */ n("div", { style: {
width: Oe ? "45%" : "92%",
height: `${te}%`,
background: `linear-gradient(to top, ${ce.solid}, ${ce.dark})`,
borderRadius: "2px 2px 0 0",
minHeight: w > 0 ? "2px" : "0",
transition: "height 0.3s ease",
boxShadow: w > 0 ? `0 0 5px ${ce.glow}` : "none",
position: "relative"
}, children: w > 0 && /* @__PURE__ */ n("div", { style: {
position: "absolute",
top: "-16px",
left: "50%",
transform: "translateX(-50%)",
fontSize: "9px",
fontWeight: "bold",
color: ce.solid,
textShadow: "0 0 3px rgba(0,0,0,0.8)"
}, children: w }) }),
Oe && /* @__PURE__ */ n("div", { style: {
width: Ke ? "45%" : "92%",
height: `${oe}%`,
background: `linear-gradient(to top, ${ae.solid}, ${ae.dark})`,
borderRadius: "2px 2px 0 0",
minHeight: f > 0 ? "2px" : "0",
transition: "height 0.3s ease",
boxShadow: f > 0 ? `0 0 5px ${ae.glow}` : "none",
position: "relative"
}, children: f > 0 && /* @__PURE__ */ n("div", { style: {
position: "absolute",
top: "-16px",
left: "50%",
transform: "translateX(-50%)",
fontSize: "9px",
fontWeight: "bold",
color: ae.solid,
textShadow: "0 0 3px rgba(0,0,0,0.8)"
}, children: f }) })
] }),
/* @__PURE__ */ n("div", { style: {
position: "absolute",
bottom: "-18px",
fontSize: "9px",
color: ye,
fontWeight: "bold",
fontFamily: pe
}, children: Je(S).toFixed(0) })
] }, S);
}) }),
/* @__PURE__ */ n("div", { style: {
textAlign: "center",
marginTop: "25px",
fontSize: "10px",
color: ye,
fontStyle: "italic",
fontFamily: pe
}, children: "Photon Count Value →" }),
/* @__PURE__ */ i("div", { style: {
display: "flex",
justifyContent: "center",
gap: "20px",
marginTop: "25px",
fontSize: "10px"
}, children: [
Ke && /* @__PURE__ */ i("div", { style: { display: "flex", alignItems: "center", gap: "5px" }, children: [
/* @__PURE__ */ n("div", { style: { width: "12px", height: "12px", background: ce.solid, borderRadius: "2px" } }),
/* @__PURE__ */ n("span", { style: { color: ce.solid }, children: "Theory (Poisson)" })
] }),
Oe && /* @__PURE__ */ i("div", { style: { display: "flex", alignItems: "center", gap: "5px" }, children: [
/* @__PURE__ */ n("div", { style: { width: "12px", height: "12px", background: ae.solid, borderRadius: "2px" } }),
/* @__PURE__ */ n("span", { style: { color: ae.solid }, children: "Observed (Lightlanes)" })
] })
] }),
yt && vt,
yt && St
] })
] }),
v && L && /* @__PURE__ */ n(De, { fullscreen: !0, style: { pointerEvents: "none" }, children: /* @__PURE__ */ i("div", { style: {
position: "absolute",
top: "88px",
left: "12px",
width: "min(300px, calc(100vw - 24px))",
background: "linear-gradient(to bottom, rgba(0,0,0,0.88), rgba(0,0,0,0.55))",
border: "1px solid var(--terminal-panel-border)",
borderRadius: "10px",
padding: "10px",
boxShadow: "0 8px 24px rgba(0,0,0,0.35)",
fontFamily: pe
}, children: [
/* @__PURE__ */ n("div", { style: {
color: Ae,
fontSize: "10px",
textTransform: "uppercase",
letterSpacing: "0.08em",
marginBottom: "8px",
fontWeight: 400,
fontFamily: it
}, children: "Diagnostics" }),
vt,
St
] }) }),
/* @__PURE__ */ i(De, { fullscreen: !0, style: { pointerEvents: "none", display: "flex", flexDirection: "column", justifyContent: "flex-end", paddingBottom: `${j}px`, boxSizing: "border-box" }, children: [
Ke && /* @__PURE__ */ i(
"div",
{
onPointerDown: (f) => ot(f, "theory"),
onPointerMove: (f) => rt(f, "theory", ke, ct),
onPointerUp: p,
onPointerLeave: p,
style: {
width: "100%",
height: "100px",
background: `linear-gradient(to top, ${ce.panel}, transparent)`,
display: "flex",
alignItems: "flex-end",
padding: Oe ? "0 20px 5px 20px" : "0 20px 20px 20px",
gap: "2px",
position: "relative",
borderBottom: Oe ? "1px solid #555" : "none",
pointerEvents: "auto",
touchAction: "none",
cursor: "crosshair"
},
children: [
/* @__PURE__ */ n("div", { style: { position: "absolute", top: "10px", left: "20px", color: ce.solid, fontSize: "10px", fontWeight: 400, pointerEvents: "none", fontFamily: it, letterSpacing: "0.08em" }, children: "THEORY (Poisson) - Swipe or click to count" }),
ke.map((f, S) => {
const w = qe.has(S);
return /* @__PURE__ */ n(
"div",
{
className: f >= 0 && !w ? "clickable-bar" : "",
style: {
flex: 1,
height: f >= 0 && !w ? `${f / ct * 100}%` : "0",
background: f === 0 ? "rgba(255,255,255,0.1)" : ce.solid,
color: ce.solid,
minHeight: f >= 0 && !w ? "1px" : "0",
transition: "all 0.3s ease",
opacity: w ? 0 : 0.8,
borderRadius: "2px 2px 0 0",
transform: w ? "scale(0)" : "scale(1)",
pointerEvents: "none"
}
},
S
);
}),
/* @__PURE__ */ i("div", { style: { position: "absolute", bottom: "10px", right: "80px", color: Ae, fontFamily: pe, fontSize: "10px", pointerEvents: "none" }, children: [
"Max: ",
ct
] })
]
}
),
Oe && /* @__PURE__ */ i(
"div",
{
onPointerDown: (f) => ot(f, "observed"),
onPointerMove: (f) => rt(f, "observed", g, lt),
onPointerUp: p,
onPointerLeave: p,
style: {
width: "100%",
height: "100px",
background: "linear-gradient(to top, rgba(0,0,0,0.8), transparent)",
display: "flex",
alignItems: "flex-end",
padding: "0 20px 20px 20px",
gap: "2px",
position: "relative",
pointerEvents: "auto",
touchAction: "none",
cursor: "crosshair"
},
children: [
/* @__PURE__ */ n("div", { style: { position: "absolute", top: "10px", left: "20px", color: ae.solid, fontSize: "10px", fontWeight: 400, pointerEvents: "none", fontFamily: it, letterSpacing: "0.08em" }, children: "OBSERVED (Lightlanes) - Swipe or click to count" }),
g.map((f, S) => {
const w = Ie.has(S);
return /* @__PURE__ */ n(
"div",
{
className: f >= 0 && !w ? "clickable-bar" : "",
style: {
flex: 1,
height: f >= 0 && !w ? `${f / lt * 100}%` : "0",
background: f === 0 ? "rgba(255,255,255,0.1)" : f > 0 ? ae.solid : "transparent",
color: ae.solid,
minHeight: f >= 0 && !w ? "2px" : "0",
transition: "all 0.3s ease",
borderTop: f >= 0 && !w ? `2px solid ${ae.light}` : "none",
opacity: w ? 0 : 0.8,
position: "relative",
borderRadius: "2px 2px 0 0",
transform: w ? "scale(0)" : "scale(1)",
pointerEvents: "none"
},
children: (S + 1) % 5 === 0 && !w && /* @__PURE__ */ n("div", { style: {
position: "absolute",
bottom: "-20px",
left: "50%",
transform: "translateX(-50%)",
width: "1px",
height: "5px",
background: "#fff",
opacity: 0.5,
pointerEvents: "none"
}, children: /* @__PURE__ */ n("span", { style: { position: "absolute", top: "5px", left: "-50%", fontSize: "10px", color: ye, fontFamily: pe }, children: S + 1 }) })
},
S
);
}),
/* @__PURE__ */ i("div", { style: { position: "absolute", bottom: "10px", right: "80px", color: Ae, fontFamily: pe, fontSize: "10px" }, children: [
"Max: ",
lt
] })
]
}
)
] })
] });
}
const Sn = {
complexity: 1,
radius: 2,
distance: 5,
chandraDistance: 6,
showAxes: !1,
// Cleaner look for challenge
lightlanes: !0,
// Always show lightlanes
allSectors: !0,
cumulative: !1,
phi: 0,
theta: Math.PI / 2,
observationMode: "orbit",
orbitSpeed: 0.2,
thetaDrift: 0,
thetaJitter: 0,
phiJitter: 0,
speedup: 1,
K: 1e3,
usePoisson: !0,
sceneView: "both",
hideScenePresentation: !1,
hideFlyingBars: !1,
hideDataBoxes: !1
};
function kn(e) {
const t = e.host, o = e.devUi?.compactNumericDiagnostics ?? !1, r = e.devUi?.maxComplexity ?? 20, l = e.devUi?.maxSpeedup ?? 240, a = 74, h = 20, c = e.config?.params || {}, {
complexity: s,
radius: d,
distance: m,
chandraDistance: u,
showAxes: x,
lightlanes: y,
allSectors: B,
cumulative: F,
phi: R,
theta: C,
observationMode: j,
orbitSpeed: v,
thetaDrift: L,
thetaJitter: O,
phiJitter: J,
speedup: _,
K: k,
usePoisson: A,
sceneView: ee,
hideScenePresentation: z,
hideFlyingBars: D,
hideDataBoxes: N
} = { ...Sn, ...c }, P = !N, H = Z(0), g = Z(0), [ue, ke] = $(!1), [q, b] = $("scene"), [T, E] = $(ee), [I, ne] = $(s), [G, se] = $(_), [ve, Re] = $(null), X = Z(null);
de(() => {
E(ee);
}, [ee]), de(() => {
ne(s);
}, [s]), de(() => {
se(_);
}, [_]);
const Pe = G > 20, Be = T !== "lightlane", Je = T !== "poisson", me = q === "scene" && T !== "poisson", Ee = (p) => p === "poisson" ? "Poisson" : p === "lightlane" ? "Lightlane" : "Both", Se = () => {
Ce(t, we.hover, { page: q, sceneView: T });
}, Y = (p, M) => {
Ce(t, we.click, { page: q, sceneView: T, target: p, ...M });
}, Ie = (p) => {
Re(p), X.current && clearTimeout(X.current), X.current = setTimeout(() => {
Re(null), X.current = null;
}, 1500);
}, le = (p) => {
const M = Array.from({ length: h }, (W, K) => K === 0 ? 1 : K === h - 1 ? p : Math.round(1 + (p - 1) * K / (h - 1)));
return Array.from(new Set(M)).sort((W, K) => W - K);
}, qe = (p, M) => {
const W = le(M);
return W.find((K) => p < K) ?? W[W.length - 1];
}, Le = (p, M) => {
const W = le(M);
for (let K = W.length - 1; K >= 0; K -= 1)
if (p > W[K]) return W[K];
return W[0];
}, Ne = (p, M) => {
const W = le(M), K = W.findIndex((Ve) => p <= Ve);
return K >= 0 ? K : W.length - 1;
}, ze = Ne(I, r), $e = Ne(G, l), _e = `${(ze + 1) / h * 100}%`, U = `${($e + 1) / h * 100}%`, Ze = me && I > le(r)[0], et = me && I < le(r).at(-1), tt = G > le(l)[0], nt = G < le(l).at(-1), He = (p) => {
if (!me) return;
const M = p === "up" ? qe(I, r) : Le(I, r);
M !== I && (Y("complexity", { direction: p, value: M }), ne(M), e.devUi?.onSetParam?.("complexity", M), Ie(`Complexity ${M}`));
}, We = (p) => {
const M = p === "up" ? qe(G, l) : Le(G, l);
M !== G && (Y("turbo", { direction: p, value: M }), se(M), e.devUi?.onSetParam?.("speedup", M), Ie(`Turbo ${M}x`));
}, ot = () => {
const p = ["poisson", "lightlane", "both"], M = p.indexOf(T), W = p[(M + 1) % p.length];
Y("mode", { value: W }), E(W), Ie(`Mode ${Ee(W)}`);
}, rt = () => {
Y("fano-page", { value: q === "scene" ? "fano" : "scene" }), b((p) => p === "scene" ? "fano" : "scene");
};
return de(() => {
const p = (M) => {
if (M.code !== "Space" || M.repeat) return;
const W = M.target, K = W?.tagName;
K === "INPUT" || K === "TEXTAREA" || W?.isContentEditable || (M.preventDefault(), ke((Ve) => !Ve));
};
return window.addEventListener("keydown", p), () => window.removeEventListener("keydown", p);
}, []), de(() => () => {
X.current && clearTimeout(X.current);
}, []), Qe((p, M) => {
ue || q === "fano" || (H.current += M * v * G, g.current += M * G);
}), de(() => {
H.current = 0, g.current = 0;
}, [
I,
d,
m,
u,
R,
C,
j,
v,
L,
O,
J,
G,
k,
B,
F,
A
]), /* @__PURE__ */ i(Fe, { children: [
/* @__PURE__ */ n(De, { fullscreen: !0, style: { pointerEvents: "none", zIndex: 3e3 }, children: /* @__PURE__ */ n("div", { style: { position: "absolute", top: 12, right: 12, display: "flex", gap: 8, pointerEvents: "auto" }, children: /* @__PURE__ */ n(
"button",
{
type: "button",
onClick: () => {
Y("advanced"), e.devUi?.onOpenHarness?.();
},
onPointerEnter: Se,
style: {
border: "1px solid var(--terminal-panel-border)",
background: "rgba(7,19,11,0.86)",
color: "var(--terminal-green-soft)",
borderRadius: 10,
padding: "10px 12px",
fontSize: 12,
fontWeight: 400,
letterSpacing: "0.08em",
fontFamily: "var(--font-headline)",
textTransform: "uppercase",
cursor: "pointer",
boxShadow: "0 8px 24px rgba(0,0,0,0.25)"
},
children: "Advanced"
}
) }) }),
/* @__PURE__ */ n("ambientLight", { intensity: 0.4 }),
/* @__PURE__ */ n("directionalLight", { position: [10, 10, 5], intensity: 1, castShadow: !0 }),
/* @__PURE__ */ n("pointLight", { position: [-10, -10, -10], intensity: 0.5, color: "blue" }),
q === "scene" ? /* @__PURE__ */ i(Fe, { children: [
!z && Be && /* @__PURE__ */ n(un, { radius: u }),
!z && Je && /* @__PURE__ */ n(
Wt,
{
complexity: I,
lightlanes: y,
radius: d,
distance: m,
allSectors: B,
cumulative: F
}
),
!z && /* @__PURE__ */ n(mn, { radius: d, paused: ue }),
/* @__PURE__ */ n(
gn,
{
radius: u,
theta: C,
phi: R,
orbitTime: H,
simTime: g,
thetaDrift: L,
paused: ue
}
),
/* @__PURE__ */ n(
vn,
{
complexity: I,
radius: d,
distance: m,
theta: C,
phi: R,
observationMode: j,
allSectors: B,
cumulative: F,
K: k,
orbitRadius: u,
orbitVelocity: v,
thetaDrift: L,
thetaJitter: O,
phiJitter: J,
usePoisson: A,
speedup: G,
paused: ue,
sceneView: T,
bottomInset: a,
showNumericDiagnostics: P,
compactNumericDiagnostics: o,
host: t,
centerDistribution: z,
hideFlyingBars: D || Pe
}
),
ue && /* @__PURE__ */ n("group", { position: [0, u + 1.5, 0], children: /* @__PURE__ */ i("mesh", { children: [
/* @__PURE__ */ n("sphereGeometry", { args: [0.12, 16, 16] }),
/* @__PURE__ */ n("meshBasicMaterial", { color: "#ef4444", toneMapped: !1 })
] }) }),
x && /* @__PURE__ */ n("axesHelper", { args: [Math.max(5, I)] }),
/* @__PURE__ */ n(
At,
{
infiniteGrid: !0,
fadeDistance: 50,
sectionColor: "#333",
cellColor: "#111",
position: [0, -0.01, 0]
}
)
] }) : /* @__PURE__ */ n(
pn,
{
radius: d,
distance: m,
chandraDistance: u,
allSectors: B,
cumulative: F,
theta: C,
phi: R,
orbitSpeed: v,
thetaDrift: L,
thetaJitter: O,
phiJitter: J,
K: k,
speedup: G,
usePoisson: A,
bottomInset: a,
onBack: () => b("scene"),
host: t
}
),
/* @__PURE__ */ i(De, { fullscreen: !0, style: { pointerEvents: "none", zIndex: 3200 }, children: [
ve && /* @__PURE__ */ n(
"div",
{
style: {
position: "absolute",
top: "50%",
left: "50%",
transform: "translate(-50%, -50%) skewX(-12deg)",
padding: "16px 28px",
color: "var(--terminal-green-soft)",
fontFamily: "var(--font-headline)",
fontStyle: "italic",
fontSize: 42,
letterSpacing: "0.16em",
textTransform: "uppercase",
textShadow: "0 0 20px rgba(125,255,155,0.38), 0 0 42px rgba(125,255,155,0.18)"
},
children: /* @__PURE__ */ n("span", { style: { display: "inline-block", transform: "skewX(12deg)" }, children: ve })
}
),
/* @__PURE__ */ n(
"div",
{
style: {
position: "absolute",
left: 10,
bottom: a + 16,
width: 26,
height: "min(44vh, 320px)",
display: "flex",
alignItems: "flex-end"
},
children: /* @__PURE__ */ i(
"div",
{
style: {
position: "relative",
width: "100%",
height: "100%",
borderRadius: 14,
border: "1px solid rgba(251,191,36,0.35)",
background: "linear-gradient(to top, rgba(30,18,0,0.92), rgba(7,19,11,0.15))",
boxShadow: "0 0 22px rgba(251,191,36,0.12)",
overflow: "hidden",
opacity: me ? 1 : 0.35,
transition: "opacity 0.2s ease"
},
children: [
/* @__PURE__ */ n(
"div",
{
style: {
position: "absolute",
inset: "6px",
borderRadius: 10,
border: "1px solid rgba(251,191,36,0.14)"
}
}
),
/* @__PURE__ */ n(
"div",
{
style: {
position: "absolute",
left: 5,
right: 5,
bottom: 5,
height: _e,
borderRadius: 9,
background: "linear-gradient(to top, rgba(245,158,11,0.96), rgba(253,224,71,0.96))",
boxShadow: "0 0 18px rgba(251,191,36,0.5)",
transition: "height 0.25s ease"
}
}
),
/* @__PURE__ */ n(
"div",
{
style: {
position: "absolute",
inset: "8px 7px",
display: "grid",
gridTemplateRows: `repeat(${h}, 1fr)`,
pointerEvents: "none"
},
children: Array.from({ length: h }).map((p, M) => /* @__PURE__ */ n(
"div",
{
style: {
borderTop: M === 0 ? "none" : "1px solid rgba(251,191,36,0.15)"
}
},
`complexity-tick-${M}`
))
}
),
/* @__PURE__ */ i(
"div",
{
style: {
position: "absolute",
left: 34,
bottom: 0,
color: "#fcd34d",
fontFamily: "var(--font-headline)",
fontSize: 10,
letterSpacing: "0.08em",
textTransform: "uppercase",
writingMode: "vertical-rl",
transform: "rotate(180deg)",
textShadow: "0 0 12px rgba(251,191,36,0.25)"
},
children: [
"Complexity ",
ze + 1,
"/",
h
]
}
)
]
}
)
}
),
/* @__PURE__ */ n(
"div",
{
style: {
position: "absolute",
right: 10,
bottom: a + 16,
width: 26,
height: "min(44vh, 320px)",
display: "flex",
alignItems: "flex-end"
},
children: /* @__PURE__ */ i(
"div",
{
style: {
position: "relative",
width: "100%",
height: "100%",
borderRadius: 14,
border: "1px solid rgba(244,114,182,0.35)",
background: "linear-gradient(to top, rgba(42,7,23,0.94), rgba(7,19,11,0.15))",
boxShadow: "0 0 22px rgba(244,114,182,0.14)",
overflow: "hidden"
},
children: [
/* @__PURE__ */ n(
"div",
{
style: {
position: "absolute",
inset: "6px",
borderRadius: 10,
border: "1px solid rgba(244,114,182,0.14)"
}
}
),
/* @__PURE__ */ n(
"div",
{
style: {
position: "absolute",
left: 5,
right: 5,
bottom: 5,
height: U,
borderRadius: 9,
background: "linear-gradient(to top, rgba(236,72,153,0.96), rgba(244,114,182,0.98))",
boxShadow: "0 0 18px rgba(244,114,182,0.5)",
transition: "height 0.25s ease"
}
}
),
/* @__PURE__ */ n(
"div",
{
style: {
position: "absolute",
inset: "8px 7px",
display: "grid",
gridTemplateRows: `repeat(${h}, 1fr)`,
pointerEvents: "none"
},
children: Array.from({ length: h }).map((p, M) => /* @__PURE__ */ n(
"div",
{
style: {
borderTop: M === 0 ? "none" : "1px solid rgba(244,114,182,0.15)"
}
},
`turbo-tick-${M}`
))
}
),
/* @__PURE__ */ i(
"div",
{
style: {
position: "absolute",
right: 34,
bottom: 0,
color: "#f9a8d4",
fontFamily: "var(--font-headline)",
fontSize: 10,
letterSpacing: "0.08em",
textTransform: "uppercase",
writingMode: "vertical-rl",
textShadow: "0 0 12px rgba(244,114,182,0.25)"
},
children: [
"Turbo ",
$e + 1,
"/",
h
]
}
)
]
}
)
}
),
/* @__PURE__ */ n(
"div",
{
style: {
position: "absolute",
left: 12,
right: 12,
bottom: 10,
display: "grid",
gridTemplateColumns: "repeat(4, minmax(0, 1fr))",
gap: 8,
pointerEvents: "auto"
},
children: [
{
label: "Complexity",
kind: "adjust",
active: !1,
disabled: !me,
accent: "rgba(245,158,11,0.2)",
sublabel: `${I}${ze + 1}/${h}`,
meterColor: "linear-gradient(to top, rgba(245,158,11,0.95), rgba(253,224,71,0.95))",
meterSide: "left",
meterFill: _e,
onDecrease: () => He("down"),
onIncrease: () => He("up"),
canDecrease: Ze,
canIncrease: et
},
{
label: "Mode",
kind: "action",
onClick: ot,
active: !1,
accent: "rgba(59,130,246,0.18)",
sublabel: Ee(T)
},
{
label: "Fano Sweep",
kind: "action",
onClick: rt,
active: q === "fano",
accent: "rgba(59,130,246,0.22)",
sublabel: q === "fano" ? "Open" : "Scene"
},
{
label: "Turbo",
kind: "adjust",
active: !1,
accent: "rgba(34,197,94,0.2)",
sublabel: `${G}x • ${$e + 1}/${h}`,
meterColor: "linear-gradient(to top, rgba(236,72,153,0.95), rgba(244,114,182,0.95))",
meterSide: "right",
meterFill: U,
onDecrease: () => We("down"),
onIncrease: () => We("up"),
canDecrease: tt,
canIncrease: nt
}
].map((p) => p.kind === "adjust" ? /* @__PURE__ */ i(
"div",
{
style: {
minHeight: 54,
border: "1px solid var(--terminal-panel-border)",
background: p.active ? p.accent : "rgba(7,19,11,0.86)",
color: "var(--terminal-green-soft)",
borderRadius: 10,
padding: "8px 10px",
display: "flex",
flexDirection: "column",
alignItems: "center",
justifyContent: "center",
gap: 6,
boxShadow: p.active ? "0 0 18px rgba(125,255,155,0.12)" : "0 8px 24px rgba(0,0,0,0.25)",
position: "relative",
overflow: "hidden",
opacity: p.disabled ? 0.38 : 1
},
children: [
"meterColor" in p && /* @__PURE__ */ i(Fe, { children: [
/* @__PURE__ */ n(
"div",
{
style: {
position: "absolute",
top: 6,
bottom: 6,
left: p.meterSide === "left" ? 6 : void 0,
right: p.meterSide === "right" ? 6 : void 0,
width: 6,
borderRadius: 999,
background: "rgba(255,255,255,0.07)",
border: "1px solid rgba(255,255,255,0.08)"
}
}
),
/* @__PURE__ */ n(
"div",
{
style: {
position: "absolute",
bottom: 7,
left: p.meterSide === "left" ? 7 : void 0,
right: p.meterSide === "right" ? 7 : void 0,
width: 4,
height: p.meterFill,
borderRadius: 999,
background: p.meterColor,
boxShadow: p.meterSide === "left" ? "0 0 10px rgba(251,191,36,0.45)" : "0 0 10px rgba(244,114,182,0.45)",
transition: "height 0.25s ease"
}
}
)
] }),
/* @__PURE__ */ n(
"span",
{
style: {
fontFamily: "var(--font-headline)",
fontSize: 11,
fontWeight: 400,
letterSpacing: "0.08em",
textTransform: "uppercase",
lineHeight: 1.1
},
children: p.label
}
),
/* @__PURE__ */ n(
"span",
{
style: {
fontFamily: "var(--font-ui)",
fontSize: 10,
color: "var(--terminal-green)",
letterSpacing: "0.08em",
lineHeight: 1
},
children: p.sublabel
}
),
/* @__PURE__ */ i("div", { style: { display: "grid", gridTemplateColumns: "repeat(2, minmax(0, 1fr))", gap: 6, width: "100%", marginTop: "auto" }, children: [
/* @__PURE__ */ n(
"button",
{
type: "button",
onClick: p.onDecrease,
onPointerEnter: Se,
disabled: p.disabled || !p.canDecrease,
style: {
border: "1px solid rgba(255,255,255,0.12)",
background: "rgba(255,255,255,0.04)",
color: "var(--terminal-green-soft)",
borderRadius: 8,
minHeight: 24,
cursor: p.disabled || !p.canDecrease ? "not-allowed" : "pointer",
fontFamily: "var(--font-headline)",
fontSize: 12,
letterSpacing: "0.08em",
opacity: p.disabled || !p.canDecrease ? 0.35 : 1,
position: "relative",
zIndex: 1
},
children: "-"
}
),
/* @__PURE__ */ n(
"button",
{
type: "button",
onClick: p.onIncrease,
onPointerEnter: Se,
disabled: p.disabled || !p.canIncrease,
style: {
border: "1px solid rgba(255,255,255,0.12)",
background: "rgba(255,255,255,0.04)",
color: "var(--terminal-green-soft)",
borderRadius: 8,
minHeight: 24,
cursor: p.disabled || !p.canIncrease ? "not-allowed" : "pointer",
fontFamily: "var(--font-headline)",
fontSize: 12,
letterSpacing: "0.08em",
opacity: p.disabled || !p.canIncrease ? 0.35 : 1,
position: "relative",
zIndex: 1
},
children: "+"
}
)
] })
]
},
p.label
) : /* @__PURE__ */ i(
"button",
{
type: "button",
onClick: p.onClick,
onPointerEnter: Se,
disabled: "disabled" in p ? p.disabled : !1,
style: {
minHeight: 54,
border: "1px solid var(--terminal-panel-border)",
background: p.active ? p.accent : "rgba(7,19,11,0.86)",
color: "var(--terminal-green-soft)",
borderRadius: 10,
padding: "8px 10px",
cursor: "disabled" in p && p.disabled ? "not-allowed" : "pointer",
display: "flex",
flexDirection: "column",
alignItems: "center",
justifyContent: "center",
gap: 2,
boxShadow: p.active ? "0 0 18px rgba(125,255,155,0.12)" : "0 8px 24px rgba(0,0,0,0.25)",
position: "relative",
overflow: "hidden",
opacity: "disabled" in p && p.disabled ? 0.38 : 1
},
children: [
/* @__PURE__ */ n(
"span",
{
style: {
fontFamily: "var(--font-headline)",
fontSize: 11,
fontWeight: 400,
letterSpacing: "0.08em",
textTransform: "uppercase",
lineHeight: 1.1
},
children: p.label
}
),
/* @__PURE__ */ n(
"span",
{
style: {
fontFamily: "var(--font-ui)",
fontSize: 10,
color: "var(--terminal-green)",
letterSpacing: "0.08em",
lineHeight: 1
},
children: p.sublabel
}
)
]
},
p.label
))
}
)
] }),
/* @__PURE__ */ n("color", { attach: "background", args: ["#050505"] })
] });
}
const Bn = {
name: "lightlane",
displayName: "Lightlane Challenge",
version: "1.1.0",
paramSchema: {
hideScenePresentation: { type: "boolean", label: "Hide Sphere + Lightlanes", default: !1 },
hideFlyingBars: { type: "boolean", label: "Hide Flying Bars", default: !1 },
hideDataBoxes: { type: "boolean", label: "Hide Data Boxes", default: !1 },
complexity: { type: "range", label: "Complexity", default: 5, min: 1, max: 20, step: 1 },
radius: { type: "range", label: "Distance to star", default: 2, min: 0.1, max: 5, step: 0.1 },
chandraDistance: { type: "range", label: "Chandra Camera Distance", default: 6, min: 5, max: 30, step: 0.5 },
observationMode: {
type: "select",
label: "Observation Mode",
default: "randomSphere",
options: [
{ value: "orbit", label: "Orbit" },
{ value: "randomSphere", label: "Random Sphere" }
]
},
sceneView: {
type: "select",
label: "Scene View",
default: "both",
options: [
{ value: "both", label: "Both" },
{ value: "poisson", label: "Poisson" },
{ value: "lightlane", label: "Lightlane" }
]
},
orbitSpeed: { type: "range", label: "Orbit Speed", default: 0.2, min: 0, max: 2, step: 0.01 },
thetaDrift: { type: "range", label: "Theta Drift", default: 0, min: -1, max: 1, step: 0.01 },
thetaJitter: { type: "range", label: "Theta Jitter", default: 0, min: 0, max: 0.25, step: 5e-3 },
phiJitter: { type: "range", label: "Phi Jitter", default: 0, min: 0, max: 0.5, step: 0.01 },
speedup: { type: "range", label: "Speedup", default: 1, min: 1, max: 240, step: 1 }
},
defaultParams: {
complexity: 5,
radius: 2,
orbitSpeed: 0.2,
thetaDrift: 0,
thetaJitter: 0,
phiJitter: 0,
chandraDistance: 6,
observationMode: "randomSphere",
sceneView: "both",
speedup: 1,
// Internal defaults will handle the rest
distance: 5,
showAxes: !1,
lightlanes: !0,
allSectors: !0,
cumulative: !1,
phi: 0,
theta: Math.PI / 2,
K: 1e3,
usePoisson: !0,
hideScenePresentation: !1,
hideFlyingBars: !1,
hideDataBoxes: !1
}
};
export {
kn as default,
Bn as metadata
};
//# sourceMappingURL=lightlane.js.map