353 lines
21 KiB
JavaScript
353 lines
21 KiB
JavaScript
(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode("._container_101xd_1{background:radial-gradient(circle at top,rgba(99,102,241,.14),transparent 48%),linear-gradient(180deg,var(--gc-bg-secondary, #12121a),var(--gc-bg, #0a0a0f));color:var(--gc-text, #e8e8ec);box-sizing:border-box;font-family:Russo One,system-ui,-apple-system,sans-serif;line-height:1.5;width:100%;min-height:100%}._container_101xd_1,._container_101xd_1 *,._container_101xd_1 *:before,._container_101xd_1 *:after{box-sizing:inherit}._frame_101xd_20{width:100%;aspect-ratio:16 / 9;padding:var(--frame-pad, 1rem)}._squareLayout_101xd_26{width:100%;height:100%;display:flex;align-items:center;justify-content:center;gap:var(--panel-gap, 1rem)}._squarePanel_101xd_35{position:relative;flex:0 0 auto;overflow:hidden;border:1px solid color-mix(in srgb,var(--gc-border, #2a2a3a) 82%,transparent);border-radius:28px;box-shadow:0 28px 70px #00000040}._viewportPanel_101xd_44{background:radial-gradient(circle at 50% 18%,rgba(34,211,238,.2),transparent 32%),linear-gradient(160deg,rgba(18,18,26,.95),rgba(10,10,15,.98))}._contentPanel_101xd_50{background:linear-gradient(180deg,rgba(18,18,26,.96),rgba(10,10,15,.98)),var(--gc-bg, #0a0a0f)}._panelBody_101xd_56{width:100%;height:100%;padding:clamp(1rem,3vw,2rem);display:flex;flex-direction:column;justify-content:center;gap:1rem}._copy_101xd_66{margin:0;color:var(--gc-text, #e8e8ec);font-size:clamp(.95rem,1.9vw,1.15rem);line-height:1.65}._muted_101xd_73{color:var(--gc-text-muted, #9999a8)}._badge_101xd_77{align-self:flex-start;padding:.35rem .7rem;border-radius:999px;background:rgba(99,102,241,.14);color:var(--gc-primary, #6366f1);font-size:.75rem;letter-spacing:.08em;text-transform:uppercase}._startButton_101xd_88,._choiceButton_101xd_89,._completeButton_101xd_90{border:none;border-radius:14px;padding:.95rem 1.2rem;font:inherit;color:#fff;cursor:pointer;transition:transform .18s ease,filter .18s ease,border-color .18s ease,background .18s ease}._startButton_101xd_88:hover,._choiceButton_101xd_89:hover,._completeButton_101xd_90:hover{transform:translateY(-1px);filter:brightness(1.06)}._startButton_101xd_88,._completeButton_101xd_90{background:linear-gradient(135deg,var(--gc-primary, #6366f1),var(--gc-accent, #22d3ee))}._sliderSection_101xd_112{display:flex;flex-direction:column;gap:.8rem}._sliderHeader_101xd_118{display:flex;justify-content:space-between;align-items:baseline;gap:1rem}._sliderLabel_101xd_125{color:var(--gc-text-muted, #9999a8);font-size:.8rem;letter-spacing:.08em;text-transform:uppercase}._sliderValue_101xd_132{color:var(--gc-accent, #22d3ee);font-family:SF Mono,Monaco,Consolas,monospace;font-size:clamp(1.2rem,2.4vw,1.8rem)}._valueInfinity_101xd_138{color:#ef4444}._slider_101xd_112{width:100%;height:12px;border-radius:999px;background:rgba(255,255,255,.08);outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}._slider_101xd_112::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:26px;height:26px;border-radius:50%;background:var(--gc-primary, #6366f1);box-shadow:0 0 0 6px #6366f129}._slider_101xd_112::-moz-range-thumb{width:26px;height:26px;border:0;border-radius:50%;background:var(--gc-primary, #6366f1);box-shadow:0 0 0 6px #6366f129}._sliderInfinity_101xd_170{background:linear-gradient(90deg,rgba(255,255,255,.08),rgba(239,68,68,.7))}._sliderInfinity_101xd_170::-webkit-slider-thumb{background:#ef4444;box-shadow:0 0 0 6px #ef44442e}._sliderInfinity_101xd_170::-moz-range-thumb{background:#ef4444;box-shadow:0 0 0 6px #ef44442e}._sliderHint_101xd_184{color:var(--gc-text-muted, #9999a8);font-size:.85rem}._statsOverlay_101xd_189{position:absolute;right:1rem;bottom:1rem;left:1rem;display:flex;justify-content:space-between;gap:.75rem;pointer-events:none}._stat_101xd_189{min-width:0;padding:.7rem .85rem;border-radius:16px;background:rgba(0,0,0,.55);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}._statLabel_101xd_208{display:block;margin-bottom:.2rem;color:var(--gc-text-muted, #9999a8);font-size:.68rem;letter-spacing:.08em;text-transform:uppercase}._statValue_101xd_217{color:var(--gc-accent, #22d3ee);font-family:SF Mono,Monaco,Consolas,monospace;font-size:clamp(.95rem,1.8vw,1.15rem)}._statInfinity_101xd_223{color:#ef4444}._warning_101xd_227{display:flex;flex-direction:column;gap:1rem}._warningText_101xd_233,._warningQuestion_101xd_234{margin:0;color:var(--gc-text, #e8e8ec);font-size:clamp(.95rem,1.9vw,1.1rem);line-height:1.65}._warningQuestion_101xd_234{color:#ef4444}._warningChoices_101xd_245{display:flex;flex-direction:column;gap:.85rem}._choiceButton_101xd_89{text-align:left;background:rgba(255,255,255,.04);border:1px solid var(--gc-border, #2a2a3a)}._choiceInfinity_101xd_257{border-color:#ef444473}._choiceInfinity_101xd_257:hover{background:rgba(239,68,68,.14)}._choiceFinite_101xd_265{border-color:#22c55e73}._choiceFinite_101xd_265:hover{background:rgba(34,197,94,.14)}._resultStats_101xd_273{padding:1rem 1.1rem;border-radius:20px;background:rgba(255,255,255,.04);border:1px solid color-mix(in srgb,var(--gc-border, #2a2a3a) 82%,transparent)}._resultRow_101xd_280{display:flex;justify-content:space-between;gap:1rem;padding:.7rem 0;color:var(--gc-text-muted, #9999a8);font-size:.92rem}._resultRow_101xd_280+._resultRow_101xd_280{border-top:1px solid rgba(255,255,255,.08)}._resultRow_101xd_280 span:last-child{font-family:SF Mono,Monaco,Consolas,monospace;font-weight:700}._resultMessage_101xd_298{margin:0;color:var(--gc-text-muted, #9999a8);font-size:clamp(.92rem,1.8vw,1rem);line-height:1.7}._resultMessage_101xd_298 strong{color:var(--gc-text, #e8e8ec)}._resultSuccess_101xd_309{color:#22c55e}._resultAccent_101xd_313{color:var(--gc-accent, #22d3ee)}@media (orientation: portrait),(max-aspect-ratio: 1 / 1){._frame_101xd_20{aspect-ratio:1 / 2}}@media (max-width: 768px){._squarePanel_101xd_35{border-radius:22px}._panelBody_101xd_56{padding:1rem}._statsOverlay_101xd_189{right:.75rem;bottom:.75rem;left:.75rem}._stat_101xd_189{padding:.55rem .7rem}}")),document.head.appendChild(e)}}catch(r){console.error("vite-plugin-css-injected-by-js",r)}})();
|
|
import { jsx as e, jsxs as a, Fragment as _ } from "react/jsx-runtime";
|
|
import { useState as N, useRef as F, useMemo as q, useEffect as z, useCallback as V } from "react";
|
|
import { Canvas as I, useFrame as Q } from "@react-three/fiber";
|
|
import { OrbitControls as W } from "@react-three/drei";
|
|
import * as te from "three";
|
|
const ne = "_container_101xd_1", ie = "_frame_101xd_20", se = "_squareLayout_101xd_26", ae = "_squarePanel_101xd_35", ce = "_viewportPanel_101xd_44", oe = "_contentPanel_101xd_50", re = "_panelBody_101xd_56", le = "_copy_101xd_66", de = "_muted_101xd_73", ue = "_badge_101xd_77", fe = "_startButton_101xd_88", he = "_choiceButton_101xd_89", me = "_completeButton_101xd_90", pe = "_sliderSection_101xd_112", _e = "_sliderHeader_101xd_118", ye = "_sliderLabel_101xd_125", xe = "_sliderValue_101xd_132", ge = "_valueInfinity_101xd_138", ve = "_slider_101xd_112", be = "_sliderInfinity_101xd_170", Se = "_sliderHint_101xd_184", we = "_statsOverlay_101xd_189", Ne = "_stat_101xd_189", Me = "_statLabel_101xd_208", Ie = "_statValue_101xd_217", $e = "_statInfinity_101xd_223", Re = "_warning_101xd_227", Le = "_warningText_101xd_233", Ce = "_warningQuestion_101xd_234", Be = "_warningChoices_101xd_245", Ve = "_choiceInfinity_101xd_257", ke = "_choiceFinite_101xd_265", qe = "_resultStats_101xd_273", ze = "_resultRow_101xd_280", Ae = "_resultMessage_101xd_298", Fe = "_resultSuccess_101xd_309", He = "_resultAccent_101xd_313", t = {
|
|
container: ne,
|
|
frame: ie,
|
|
squareLayout: se,
|
|
squarePanel: ae,
|
|
viewportPanel: ce,
|
|
contentPanel: oe,
|
|
panelBody: re,
|
|
copy: le,
|
|
muted: de,
|
|
badge: ue,
|
|
startButton: fe,
|
|
choiceButton: he,
|
|
completeButton: me,
|
|
sliderSection: pe,
|
|
sliderHeader: _e,
|
|
sliderLabel: ye,
|
|
sliderValue: xe,
|
|
valueInfinity: ge,
|
|
slider: ve,
|
|
sliderInfinity: be,
|
|
sliderHint: Se,
|
|
statsOverlay: we,
|
|
stat: Ne,
|
|
statLabel: Me,
|
|
statValue: Ie,
|
|
statInfinity: $e,
|
|
warning: Re,
|
|
warningText: Le,
|
|
warningQuestion: Ce,
|
|
warningChoices: Be,
|
|
choiceInfinity: Ve,
|
|
choiceFinite: ke,
|
|
resultStats: qe,
|
|
resultRow: ze,
|
|
resultMessage: Ae,
|
|
resultSuccess: Fe,
|
|
resultAccent: He
|
|
}, A = 5, y = 41;
|
|
function Oe(d) {
|
|
const r = Math.min(Math.max(d, A), y);
|
|
return r % 2 === 0 ? r + 1 : r;
|
|
}
|
|
function j(d) {
|
|
const r = [], n = d, f = 2 / n;
|
|
for (let u = 0; u < n; u++)
|
|
for (let m = 0; m < n; m++)
|
|
for (let o = 0; o < n; o++) {
|
|
const g = -1 + f * (u + 0.5), i = -1 + f * (m + 0.5), x = -1 + f * (o + 0.5), p = Math.sqrt(g * g + i * i + x * x), $ = f * 1.2;
|
|
p <= 1 && p > 1 - $ && r.push(g, i, x);
|
|
}
|
|
return { positions: r, count: r.length / 3 };
|
|
}
|
|
function Te({ resolution: d, isInfinity: r }) {
|
|
const s = F(null), n = q(() => new te.Object3D(), []), { positions: f, count: u, cubeSize: m } = q(() => {
|
|
const i = Math.min(d, y), x = j(i), p = 2 / i * 0.85;
|
|
return {
|
|
positions: x.positions,
|
|
count: x.count,
|
|
cubeSize: p
|
|
};
|
|
}, [d]);
|
|
z(() => {
|
|
if (!(!s.current || u === 0)) {
|
|
for (let i = 0; i < u; i++)
|
|
n.position.set(
|
|
f[i * 3],
|
|
f[i * 3 + 1],
|
|
f[i * 3 + 2]
|
|
), n.scale.setScalar(m), n.updateMatrix(), s.current.setMatrixAt(i, n.matrix);
|
|
s.current.instanceMatrix.needsUpdate = !0, s.current.count = u;
|
|
}
|
|
}, [f, u, m, n]), Q((i) => {
|
|
s.current && (s.current.rotation.y = i.clock.elapsedTime * 0.2);
|
|
});
|
|
const o = r ? "#ef4444" : "#818cf8";
|
|
return /* @__PURE__ */ a("instancedMesh", { ref: s, args: [void 0, void 0, 1e4], frustumCulled: !1, children: [
|
|
/* @__PURE__ */ e("boxGeometry", { args: [1, 1, 1] }),
|
|
/* @__PURE__ */ e(
|
|
"meshStandardMaterial",
|
|
{
|
|
color: o,
|
|
emissive: o,
|
|
emissiveIntensity: 0.05,
|
|
roughness: 0.4,
|
|
metalness: 0.3
|
|
}
|
|
)
|
|
] });
|
|
}
|
|
function k({ resolution: d, isInfinity: r }) {
|
|
return /* @__PURE__ */ a(_, { children: [
|
|
/* @__PURE__ */ e("ambientLight", { intensity: 0.3 }),
|
|
/* @__PURE__ */ e("directionalLight", { position: [5, 8, 5], intensity: 1.2, castShadow: !0 }),
|
|
/* @__PURE__ */ e("directionalLight", { position: [-3, -2, -4], intensity: 0.4, color: "#22d3ee" }),
|
|
/* @__PURE__ */ e("pointLight", { position: [0, 5, 0], intensity: 0.5 }),
|
|
/* @__PURE__ */ e(Te, { resolution: d, isInfinity: r }),
|
|
/* @__PURE__ */ e(
|
|
W,
|
|
{
|
|
enableZoom: !0,
|
|
enablePan: !1,
|
|
autoRotate: !1,
|
|
minDistance: 2,
|
|
maxDistance: 6
|
|
}
|
|
)
|
|
] });
|
|
}
|
|
function De() {
|
|
const d = F(null);
|
|
return Q((r) => {
|
|
d.current && (d.current.rotation.y = r.clock.elapsedTime * 0.3);
|
|
}), /* @__PURE__ */ a("mesh", { ref: d, children: [
|
|
/* @__PURE__ */ e("sphereGeometry", { args: [1, 128, 128] }),
|
|
/* @__PURE__ */ e(
|
|
"meshStandardMaterial",
|
|
{
|
|
color: "#22d3ee",
|
|
emissive: "#22d3ee",
|
|
emissiveIntensity: 0.08,
|
|
roughness: 0.15,
|
|
metalness: 0.9,
|
|
envMapIntensity: 1
|
|
}
|
|
)
|
|
] });
|
|
}
|
|
function Ee() {
|
|
return /* @__PURE__ */ a(_, { children: [
|
|
/* @__PURE__ */ e("ambientLight", { intensity: 0.3 }),
|
|
/* @__PURE__ */ e("directionalLight", { position: [5, 8, 5], intensity: 1.5 }),
|
|
/* @__PURE__ */ e("directionalLight", { position: [-4, -2, -3], intensity: 0.5, color: "#6366f1" }),
|
|
/* @__PURE__ */ e("pointLight", { position: [0, 3, 3], intensity: 0.8, color: "#ffffff" }),
|
|
/* @__PURE__ */ e(De, {}),
|
|
/* @__PURE__ */ e(
|
|
W,
|
|
{
|
|
enableZoom: !1,
|
|
enablePan: !1,
|
|
autoRotate: !0,
|
|
autoRotateSpeed: 1.5
|
|
}
|
|
)
|
|
] });
|
|
}
|
|
function Pe({
|
|
config: d,
|
|
onComplete: r,
|
|
onProgress: s,
|
|
theme: n,
|
|
className: f
|
|
}) {
|
|
const [u, m] = N("exploring"), [o, g] = N(A), [i, x] = N(null), [p, $] = N(!1), H = F(null), [v, K] = N({
|
|
stacked: !1,
|
|
panelSize: 320,
|
|
gap: 16,
|
|
padding: 16
|
|
}), M = o >= y, O = q(() => j(Math.min(o, y)).count, [o]);
|
|
z(() => {
|
|
const c = H.current;
|
|
if (!c || typeof ResizeObserver > "u")
|
|
return;
|
|
const l = () => {
|
|
const { width: h, height: S } = c.getBoundingClientRect();
|
|
if (!h || !S)
|
|
return;
|
|
const C = S > h, E = Math.min(h, S), w = Math.round(Math.max(12, Math.min(28, E * 0.04))), B = Math.round(Math.max(12, Math.min(22, E * 0.03))), X = C ? h - w * 2 : (h - w * 2 - B) / 2, ee = C ? (S - w * 2 - B) / 2 : S - w * 2;
|
|
K({
|
|
stacked: C,
|
|
panelSize: Math.max(0, Math.floor(Math.min(X, ee))),
|
|
gap: B,
|
|
padding: w
|
|
});
|
|
};
|
|
l();
|
|
const b = new ResizeObserver(l);
|
|
return b.observe(c), () => b.disconnect();
|
|
}, []);
|
|
const P = {
|
|
"--gc-primary": (n == null ? void 0 : n.primary) || "#6366f1",
|
|
"--gc-accent": (n == null ? void 0 : n.accent) || "#22d3ee",
|
|
"--gc-bg": (n == null ? void 0 : n.bg) || "#0a0a0f",
|
|
"--gc-bg-secondary": (n == null ? void 0 : n.bgSecondary) || "#12121a",
|
|
"--gc-text": (n == null ? void 0 : n.text) || "#e8e8ec",
|
|
"--gc-text-muted": (n == null ? void 0 : n.textMuted) || "#9999a8",
|
|
"--gc-border": (n == null ? void 0 : n.border) || "#2a2a3a",
|
|
"--panel-gap": `${v.gap}px`,
|
|
"--frame-pad": `${v.padding}px`
|
|
}, T = {
|
|
width: `${v.panelSize}px`,
|
|
height: `${v.panelSize}px`
|
|
};
|
|
z(() => {
|
|
s == null || s(10);
|
|
}, [s]);
|
|
const G = V((c) => {
|
|
const l = Oe(parseInt(c.target.value, 10));
|
|
g(l);
|
|
const b = 10 + l / y * 40;
|
|
s == null || s(Math.min(b, 50)), l >= y && !p && (m("warning"), $(!0), s == null || s(70));
|
|
}, [p, s, y]), D = V((c) => {
|
|
x(c), m("result"), s == null || s(100);
|
|
}, [s]), Z = V(() => {
|
|
r({
|
|
success: !0,
|
|
score: 100,
|
|
data: {
|
|
choice: i,
|
|
finalResolution: o,
|
|
exploredInfinity: p,
|
|
completedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
}
|
|
});
|
|
}, [i, o, p, r]), U = (c) => c >= y ? "∞" : c.toString(), Y = (c, l) => l ? "∞" : c.toLocaleString(), J = (c, l) => {
|
|
if (l)
|
|
return "∞";
|
|
const h = c * 80;
|
|
return h < 1024 ? `${h} B` : h < 1024 * 1024 ? `${(h / 1024).toFixed(1)} KB` : `${(h / (1024 * 1024)).toFixed(2)} MB`;
|
|
}, R = (c, l) => /* @__PURE__ */ a("div", { className: `${t.squarePanel} ${t.viewportPanel}`, style: T, children: [
|
|
c,
|
|
/* @__PURE__ */ a("div", { className: t.statsOverlay, children: [
|
|
/* @__PURE__ */ a("div", { className: t.stat, children: [
|
|
/* @__PURE__ */ e("span", { className: t.statLabel, children: "Blocks" }),
|
|
/* @__PURE__ */ e("span", { className: `${t.statValue} ${l ? t.statInfinity : ""}`, children: Y(O, l) })
|
|
] }),
|
|
/* @__PURE__ */ a("div", { className: t.stat, children: [
|
|
/* @__PURE__ */ e("span", { className: t.statLabel, children: "Memory" }),
|
|
/* @__PURE__ */ e("span", { className: `${t.statValue} ${l ? t.statInfinity : ""}`, children: J(O, l) })
|
|
] })
|
|
] })
|
|
] }), L = (c) => /* @__PURE__ */ e("div", { className: `${t.squarePanel} ${t.contentPanel}`, style: T, children: /* @__PURE__ */ e("div", { className: t.panelBody, children: c }) });
|
|
return /* @__PURE__ */ e("div", { className: `${t.container} ${f || ""}`, style: P, children: /* @__PURE__ */ e("div", { ref: H, className: t.frame, children: /* @__PURE__ */ a(
|
|
"div",
|
|
{
|
|
className: t.squareLayout,
|
|
style: { flexDirection: v.stacked ? "column" : "row" },
|
|
children: [
|
|
u === "exploring" && /* @__PURE__ */ a(_, { children: [
|
|
R(
|
|
/* @__PURE__ */ e(I, { camera: { position: [0, 0, 3.5], fov: 50 }, children: /* @__PURE__ */ e(k, { resolution: o, isInfinity: M }) }),
|
|
M
|
|
),
|
|
L(
|
|
/* @__PURE__ */ a(_, { children: [
|
|
/* @__PURE__ */ e("div", { className: t.badge, children: "Resolution" }),
|
|
/* @__PURE__ */ e("p", { className: `${t.copy} ${t.muted}`, children: "Every step adds more cubes to the shell. Keep sliding until the approximation breaks open." }),
|
|
/* @__PURE__ */ a("div", { className: t.sliderSection, children: [
|
|
/* @__PURE__ */ a("div", { className: t.sliderHeader, children: [
|
|
/* @__PURE__ */ e("span", { className: t.sliderLabel, children: "Current Level" }),
|
|
/* @__PURE__ */ e("span", { className: `${t.sliderValue} ${M ? t.valueInfinity : ""}`, children: U(o) })
|
|
] }),
|
|
/* @__PURE__ */ e(
|
|
"input",
|
|
{
|
|
type: "range",
|
|
min: A,
|
|
max: y,
|
|
step: "2",
|
|
value: o,
|
|
onChange: G,
|
|
className: `${t.slider} ${M ? t.sliderInfinity : ""}`
|
|
}
|
|
),
|
|
/* @__PURE__ */ e("div", { className: t.sliderHint, children: "Drag right to approach a perfectly smooth sphere." })
|
|
] })
|
|
] })
|
|
)
|
|
] }),
|
|
u === "warning" && /* @__PURE__ */ a(_, { children: [
|
|
R(
|
|
/* @__PURE__ */ e(I, { camera: { position: [0, 0, 3.5], fov: 50 }, children: /* @__PURE__ */ e(k, { resolution: o, isInfinity: !0 }) }),
|
|
!0
|
|
),
|
|
L(
|
|
/* @__PURE__ */ a("div", { className: t.warning, children: [
|
|
/* @__PURE__ */ e("div", { className: t.badge, children: "Limit Reached" }),
|
|
/* @__PURE__ */ e("p", { className: t.warningText, children: "At infinite resolution, the sphere needs infinitely many blocks." }),
|
|
/* @__PURE__ */ e("p", { className: t.warningText, children: "Infinitely many blocks means infinite information and unbounded memory." }),
|
|
/* @__PURE__ */ e("p", { className: t.warningQuestion, children: "Do you want the perfect sphere anyway?" }),
|
|
/* @__PURE__ */ a("div", { className: t.warningChoices, children: [
|
|
/* @__PURE__ */ e(
|
|
"button",
|
|
{
|
|
className: `${t.choiceButton} ${t.choiceInfinity}`,
|
|
onClick: () => D("infinity"),
|
|
children: "Embrace Infinity"
|
|
}
|
|
),
|
|
/* @__PURE__ */ e(
|
|
"button",
|
|
{
|
|
className: `${t.choiceButton} ${t.choiceFinite}`,
|
|
onClick: () => D("finite"),
|
|
children: "Keep It Finite"
|
|
}
|
|
)
|
|
] })
|
|
] })
|
|
)
|
|
] }),
|
|
u === "result" && /* @__PURE__ */ a(_, { children: [
|
|
R(
|
|
i === "infinity" ? /* @__PURE__ */ e(I, { camera: { position: [0, 0, 3], fov: 50 }, children: /* @__PURE__ */ e(Ee, {}) }) : /* @__PURE__ */ e(I, { camera: { position: [0, 0, 3.5], fov: 50 }, children: /* @__PURE__ */ e(k, { resolution: o, isInfinity: !1 }) }),
|
|
i === "infinity"
|
|
),
|
|
L(
|
|
/* @__PURE__ */ a(_, { children: [
|
|
/* @__PURE__ */ e("div", { className: t.badge, children: i === "finite" ? "Finite Wins" : "Infinity Chosen" }),
|
|
/* @__PURE__ */ a("div", { className: t.resultStats, children: [
|
|
/* @__PURE__ */ a("div", { className: t.resultRow, children: [
|
|
/* @__PURE__ */ e("span", { children: "Memory Required" }),
|
|
/* @__PURE__ */ e("span", { className: i === "finite" ? t.resultSuccess : t.resultAccent, children: i === "finite" ? "Finite" : "∞" })
|
|
] }),
|
|
/* @__PURE__ */ a("div", { className: t.resultRow, children: [
|
|
/* @__PURE__ */ e("span", { children: "Simulation Possible" }),
|
|
/* @__PURE__ */ e("span", { className: i === "finite" ? t.resultSuccess : t.resultAccent, children: i === "finite" ? "Yes" : "Only in theory" })
|
|
] })
|
|
] }),
|
|
/* @__PURE__ */ e("p", { className: t.resultMessage, children: i === "finite" ? /* @__PURE__ */ a(_, { children: [
|
|
/* @__PURE__ */ e("strong", { children: "Discreteness can be enough." }),
|
|
" A finite model never becomes perfect, but it can get close enough to feel continuous."
|
|
] }) : /* @__PURE__ */ a(_, { children: [
|
|
/* @__PURE__ */ e("strong", { children: "Perfect smoothness costs infinity." }),
|
|
" A mathematically exact sphere cannot be simulated without infinite information."
|
|
] }) }),
|
|
/* @__PURE__ */ e("button", { className: t.completeButton, onClick: Z, children: "Complete Challenge" })
|
|
] })
|
|
)
|
|
] })
|
|
]
|
|
}
|
|
) }) });
|
|
}
|
|
const Ge = {
|
|
name: "sphere-paradox",
|
|
displayName: "Create a Perfect Sphere",
|
|
version: "1.0.0",
|
|
paramSchema: {},
|
|
defaultParams: {}
|
|
};
|
|
export {
|
|
Pe as default,
|
|
Ge as metadata
|
|
};
|
|
//# sourceMappingURL=sphere-paradox.js.map
|