koin.js 1.0.4 → 1.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +50 -0
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +50 -0
- package/dist/index.mjs.map +1 -1
- package/dist/styles.css +13 -0
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -7434,8 +7434,39 @@ function usePlayerPersistence(onSettingsChange) {
|
|
|
7434
7434
|
updateSettings
|
|
7435
7435
|
};
|
|
7436
7436
|
}
|
|
7437
|
+
|
|
7438
|
+
// src/lib/telemetry.ts
|
|
7439
|
+
var sendTelemetry = (eventName, params = {}) => {
|
|
7440
|
+
if (typeof window === "undefined") return;
|
|
7441
|
+
try {
|
|
7442
|
+
fetch("https://koin.theretrosaga.com/api/telemetry", {
|
|
7443
|
+
method: "POST",
|
|
7444
|
+
headers: {
|
|
7445
|
+
"Content-Type": "application/json"
|
|
7446
|
+
},
|
|
7447
|
+
body: JSON.stringify({
|
|
7448
|
+
event_name: eventName,
|
|
7449
|
+
params: {
|
|
7450
|
+
...params,
|
|
7451
|
+
url: window.location.href,
|
|
7452
|
+
referrer: document.referrer,
|
|
7453
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
7454
|
+
}
|
|
7455
|
+
})
|
|
7456
|
+
}).catch(() => {
|
|
7457
|
+
});
|
|
7458
|
+
} catch (e) {
|
|
7459
|
+
}
|
|
7460
|
+
};
|
|
7437
7461
|
var GamePlayer = memo(function GamePlayer2(props) {
|
|
7438
7462
|
const { settings, updateSettings, isLoaded: settingsLoaded } = usePlayerPersistence();
|
|
7463
|
+
useEffect(() => {
|
|
7464
|
+
sendTelemetry("game_start", {
|
|
7465
|
+
system: props.system,
|
|
7466
|
+
core: props.core,
|
|
7467
|
+
game: props.title || "unknown"
|
|
7468
|
+
});
|
|
7469
|
+
}, [props.system, props.core, props.title]);
|
|
7439
7470
|
const [biosModalOpen, setBiosModalOpen] = useState(false);
|
|
7440
7471
|
const [showShortcutsModal, setShowShortcutsModal] = useState(false);
|
|
7441
7472
|
const effectiveShader = props.shader !== void 0 ? props.shader : settings.shader;
|
|
@@ -7533,6 +7564,13 @@ var GamePlayer = memo(function GamePlayer2(props) {
|
|
|
7533
7564
|
status,
|
|
7534
7565
|
isPerformanceMode
|
|
7535
7566
|
} = nostalgist;
|
|
7567
|
+
useEffect(() => {
|
|
7568
|
+
if (status === "running") {
|
|
7569
|
+
console.log("[Koin Debug] Status:", status);
|
|
7570
|
+
console.log("[Koin Debug] isPerformanceMode:", isPerformanceMode);
|
|
7571
|
+
console.log("[Koin Debug] crossOriginIsolated:", typeof window !== "undefined" ? window.crossOriginIsolated : "N/A");
|
|
7572
|
+
}
|
|
7573
|
+
}, [status, isPerformanceMode]);
|
|
7536
7574
|
useEffect(() => {
|
|
7537
7575
|
if (settingsLoaded) {
|
|
7538
7576
|
setVolume(settings.volume);
|
|
@@ -7726,6 +7764,18 @@ var GamePlayer = memo(function GamePlayer2(props) {
|
|
|
7726
7764
|
]
|
|
7727
7765
|
}
|
|
7728
7766
|
),
|
|
7767
|
+
!isPerformanceMode && (status === "running" || status === "paused") && /* @__PURE__ */ jsx(
|
|
7768
|
+
"div",
|
|
7769
|
+
{
|
|
7770
|
+
className: "bg-red-900/80 backdrop-blur-md px-2 py-1 rounded border border-red-500/50 flex items-center gap-1.5",
|
|
7771
|
+
title: "Standard Mode (Single Threaded)",
|
|
7772
|
+
children: /* @__PURE__ */ jsxs("span", { className: "text-[10px] uppercase font-bold tracking-wider text-red-200", children: [
|
|
7773
|
+
"Standard (",
|
|
7774
|
+
typeof window !== "undefined" && window.crossOriginIsolated ? "Isolated" : "Not Isolated",
|
|
7775
|
+
")"
|
|
7776
|
+
] })
|
|
7777
|
+
}
|
|
7778
|
+
),
|
|
7729
7779
|
settings.showInputDisplay && (status === "running" || status === "paused") && /* @__PURE__ */ jsx(
|
|
7730
7780
|
InputDisplay_default,
|
|
7731
7781
|
{
|