@epic-web/workshop-app 5.5.0 → 5.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/client/assets/{_-BrkpfnBb.js → _-hAKYb2AG.js} +2 -2
- package/build/client/assets/{_-BrkpfnBb.js.map → _-hAKYb2AG.js.map} +1 -1
- package/build/client/assets/_exerciseNumber-PTdG9GGB.js +2 -0
- package/build/client/assets/{_exerciseNumber-DCSM0NCG.js.map → _exerciseNumber-PTdG9GGB.js.map} +1 -1
- package/build/client/assets/{_exerciseNumber_._stepNumber-BIMJh_sg.js → _exerciseNumber_._stepNumber-03erOIGo.js} +2 -2
- package/build/client/assets/{_exerciseNumber_._stepNumber-BIMJh_sg.js.map → _exerciseNumber_._stepNumber-03erOIGo.js.map} +1 -1
- package/build/client/assets/_exerciseNumber_.finished-DQg4F1NL.js +2 -0
- package/build/client/assets/{_exerciseNumber_.finished-nbpk1ToO.js.map → _exerciseNumber_.finished-DQg4F1NL.js.map} +1 -1
- package/build/client/assets/{_layout-88n0To1b.js → _layout-B4JGpA3A.js} +2 -2
- package/build/client/assets/{_layout-88n0To1b.js.map → _layout-B4JGpA3A.js.map} +1 -1
- package/build/client/assets/{_layout-Dfmv2zcn.js → _layout-BJbMl6SJ.js} +2 -2
- package/build/client/assets/{_layout-Dfmv2zcn.js.map → _layout-BJbMl6SJ.js.map} +1 -1
- package/build/client/assets/{_layout-B8j0pWoF.js → _layout-Bu0lel3p.js} +2 -2
- package/build/client/assets/{_layout-B8j0pWoF.js.map → _layout-Bu0lel3p.js.map} +1 -1
- package/build/client/assets/_layout-DHoH74NH.js +2 -0
- package/build/client/assets/{_layout-DTAM9xh5.js.map → _layout-DHoH74NH.js.map} +1 -1
- package/build/client/assets/{accordion-D9-D-n9p.js → accordion-DLg7gJkp.js} +2 -2
- package/build/client/assets/{accordion-D9-D-n9p.js.map → accordion-DLg7gJkp.js.map} +1 -1
- package/build/client/assets/account-DLDPrc9J.js +2 -0
- package/build/client/assets/account-DLDPrc9J.js.map +1 -0
- package/build/client/assets/app-DJDjmdlu.js +2 -0
- package/build/client/assets/{app-DgTXXO8s.js.map → app-DJDjmdlu.js.map} +1 -1
- package/build/client/assets/{button-_qPvcoqR.js → button-39zQyNX6.js} +2 -2
- package/build/client/assets/{button-_qPvcoqR.js.map → button-39zQyNX6.js.map} +1 -1
- package/build/client/assets/{components-Be92gVxW.js → components-DUNtf72c.js} +2 -2
- package/build/client/assets/{components-Be92gVxW.js.map → components-DUNtf72c.js.map} +1 -1
- package/build/client/assets/diff-B3oaU_KB.js +2 -0
- package/build/client/assets/{diff-BhRAIPKc.js.map → diff-B3oaU_KB.js.map} +1 -1
- package/build/client/assets/{diff-8nlDkmpc.js → diff-BNCREJvf.js} +2 -2
- package/build/client/assets/{diff-8nlDkmpc.js.map → diff-BNCREJvf.js.map} +1 -1
- package/build/client/assets/{discord-BUWZUTEC.js → discord-CEOqKs_c.js} +2 -2
- package/build/client/assets/{discord-BUWZUTEC.js.map → discord-CEOqKs_c.js.map} +1 -1
- package/build/client/assets/discord-CpIgvYus.js +2 -0
- package/build/client/assets/discord-CpIgvYus.js.map +1 -0
- package/build/client/assets/{entry.client-DqIWuxf8.js → entry.client-CrlHhRMR.js} +2 -2
- package/build/client/assets/{entry.client-DqIWuxf8.js.map → entry.client-CrlHhRMR.js.map} +1 -1
- package/build/client/assets/epic-video-D8ex9vao.js +2 -0
- package/build/client/assets/epic-video-D8ex9vao.js.map +1 -0
- package/build/client/assets/error-boundary-3zItlMUO.js +2 -0
- package/build/client/assets/{error-boundary-BZA-ffa8.js.map → error-boundary-3zItlMUO.js.map} +1 -1
- package/build/client/assets/finished-rUzUjnEm.js +2 -0
- package/build/client/assets/{finished-C0cpfAFL.js.map → finished-rUzUjnEm.js.map} +1 -1
- package/build/client/assets/index-BajUQsFT.js +3053 -0
- package/build/client/assets/index-BajUQsFT.js.map +1 -0
- package/build/client/assets/{index-BCxBKsqT.js → index-CLNXC84j.js} +2 -2
- package/build/client/assets/{index-BCxBKsqT.js.map → index-CLNXC84j.js.map} +1 -1
- package/build/client/assets/{index-BCTr8uu6.js → index-CV3nxGFp.js} +2 -2
- package/build/client/assets/{index-BCTr8uu6.js.map → index-CV3nxGFp.js.map} +1 -1
- package/build/client/assets/{index-BFGhCX_U.js → index-C_B1-9rF.js} +2 -2
- package/build/client/assets/{index-BFGhCX_U.js.map → index-C_B1-9rF.js.map} +1 -1
- package/build/client/assets/{index-pkiQppkK.js → index-DDqzbGM2.js} +2 -2
- package/build/client/assets/{index-pkiQppkK.js.map → index-DDqzbGM2.js.map} +1 -1
- package/build/client/assets/index-DE-jwnOP.js +2 -0
- package/build/client/assets/{index-Bi1TbRTj.js.map → index-DE-jwnOP.js.map} +1 -1
- package/build/client/assets/{index-DZDhtMuq.js → index-DFqQCjCw.js} +2 -2
- package/build/client/assets/{index-DZDhtMuq.js.map → index-DFqQCjCw.js.map} +1 -1
- package/build/client/assets/{index-Bdg3v8tC.js → index-DH1w3QmP.js} +2 -2
- package/build/client/assets/{index-Bdg3v8tC.js.map → index-DH1w3QmP.js.map} +1 -1
- package/build/client/assets/{index-C9Hx0Dey.js → index-LjRZeU7x.js} +2 -2
- package/build/client/assets/{index-C9Hx0Dey.js.map → index-LjRZeU7x.js.map} +1 -1
- package/build/client/assets/index-mivnjq36.js +2 -0
- package/build/client/assets/{index-Ca4vBON4.js.map → index-mivnjq36.js.map} +1 -1
- package/build/client/assets/{loading-XhMtj4mp.js → loading-DW_I206H.js} +2 -2
- package/build/client/assets/{loading-XhMtj4mp.js.map → loading-DW_I206H.js.map} +1 -1
- package/build/client/assets/{login-C1oOgi98.js → login-CdNej0Z7.js} +2 -2
- package/build/client/assets/{login-C1oOgi98.js.map → login-CdNej0Z7.js.map} +1 -1
- package/build/client/assets/manifest-62ea49c4.js +1 -0
- package/build/client/assets/{mdx-CEjzXoEx.js → mdx-C9dqA6IZ.js} +2 -2
- package/build/client/assets/{mdx-CEjzXoEx.js.map → mdx-C9dqA6IZ.js.map} +1 -1
- package/build/client/assets/{misc-DUy_whwE.js → misc-DIdEn_jt.js} +2 -2
- package/build/client/assets/{misc-DUy_whwE.js.map → misc-DIdEn_jt.js.map} +1 -1
- package/build/client/assets/{nav-chevrons-DnR25VLp.js → nav-chevrons-B3SvZV8B.js} +2 -2
- package/build/client/assets/{nav-chevrons-DnR25VLp.js.map → nav-chevrons-B3SvZV8B.js.map} +1 -1
- package/build/client/assets/onboarding-CC9zz4rl.js +2 -0
- package/build/client/assets/{onboarding-C2YNq60k.js.map → onboarding-CC9zz4rl.js.map} +1 -1
- package/build/client/assets/{pe-ChIwTk8v.js → pe-D5h19vSo.js} +2 -2
- package/build/client/assets/{pe-ChIwTk8v.js.map → pe-D5h19vSo.js.map} +1 -1
- package/build/client/assets/{presence-8FPJKg_8.js → presence-D1DPz__2.js} +2 -2
- package/build/client/assets/{presence-8FPJKg_8.js.map → presence-D1DPz__2.js.map} +1 -1
- package/build/client/assets/{preview-DaZd0wMb.js → preview-BEtmdi0E.js} +2 -2
- package/build/client/assets/{preview-DaZd0wMb.js.map → preview-BEtmdi0E.js.map} +1 -1
- package/build/client/assets/{product-DIAmCwmZ.js → product-CYOFfeJM.js} +2 -2
- package/build/client/assets/{product-DIAmCwmZ.js.map → product-CYOFfeJM.js.map} +1 -1
- package/build/client/assets/{progress-DQt_Bn9o.js → progress-D6SP0Gec.js} +2 -2
- package/build/client/assets/{progress-DQt_Bn9o.js.map → progress-D6SP0Gec.js.map} +1 -1
- package/build/client/assets/{progress-bar-BaTU3Yx_.js → progress-bar-CBDBzRQ2.js} +2 -2
- package/build/client/assets/{progress-bar-BaTU3Yx_.js.map → progress-bar-CBDBzRQ2.js.map} +1 -1
- package/build/client/assets/{request-info-ByUEfOil.js → request-info-vBkaf3Rk.js} +2 -2
- package/build/client/assets/{request-info-ByUEfOil.js.map → request-info-vBkaf3Rk.js.map} +1 -1
- package/build/client/assets/{revalidation-ws-dUa9CAqr.js → revalidation-ws-DK5QOPlL.js} +2 -2
- package/build/client/assets/{revalidation-ws-dUa9CAqr.js.map → revalidation-ws-DK5QOPlL.js.map} +1 -1
- package/build/client/assets/{root-D12XnE1S.js → root-Bg-hxaOK.js} +2 -2
- package/build/client/assets/{root-D12XnE1S.js.map → root-Bg-hxaOK.js.map} +1 -1
- package/build/client/assets/{set-playground-CBHBA46B.js → set-playground-CMoUFgkO.js} +2 -2
- package/build/client/assets/{set-playground-CBHBA46B.js.map → set-playground-CMoUFgkO.js.map} +1 -1
- package/build/client/assets/{support-CIz02V_r.js → support-CPzYlWkd.js} +2 -2
- package/build/client/assets/{support-CIz02V_r.js.map → support-CPzYlWkd.js.map} +1 -1
- package/build/client/assets/test-C8wkLh9a.js +2 -0
- package/build/client/assets/{test-DoKJvNug.js.map → test-C8wkLh9a.js.map} +1 -1
- package/build/client/assets/{tests-DbuyD2cI.js → tests-CiM4RPOf.js} +2 -2
- package/build/client/assets/{tests-DbuyD2cI.js.map → tests-CiM4RPOf.js.map} +1 -1
- package/build/client/assets/{tooltip-DO9uwurQ.js → tooltip-BoVikCa-.js} +2 -2
- package/build/client/assets/{tooltip-DO9uwurQ.js.map → tooltip-BoVikCa-.js.map} +1 -1
- package/build/client/assets/{use-event-source-x59d4R2Z.js → use-event-source-M87p8Tme.js} +2 -2
- package/build/client/assets/{use-event-source-x59d4R2Z.js.map → use-event-source-M87p8Tme.js.map} +1 -1
- package/build/client/assets/{user-Bv6wYhQP.js → user-CbbIYEs8.js} +2 -2
- package/build/client/assets/{user-Bv6wYhQP.js.map → user-CbbIYEs8.js.map} +1 -1
- package/build/client/assets/{version-lxUUxt3s.js → version-CIF3cX3N.js} +2 -2
- package/build/client/assets/{version-lxUUxt3s.js.map → version-CIF3cX3N.js.map} +1 -1
- package/build/client/assets/{workshop-config-WVltG_BV.js → workshop-config-C5sYl312.js} +2 -2
- package/build/client/assets/{workshop-config-WVltG_BV.js.map → workshop-config-C5sYl312.js.map} +1 -1
- package/build/server/index.js +299 -211
- package/build/server/index.js.map +1 -1
- package/package.json +8 -8
- package/build/client/assets/_exerciseNumber-DCSM0NCG.js +0 -2
- package/build/client/assets/_exerciseNumber_.finished-nbpk1ToO.js +0 -2
- package/build/client/assets/_layout-DTAM9xh5.js +0 -2
- package/build/client/assets/account-DPP4rKOb.js +0 -2
- package/build/client/assets/account-DPP4rKOb.js.map +0 -1
- package/build/client/assets/app-DgTXXO8s.js +0 -2
- package/build/client/assets/diff-BhRAIPKc.js +0 -2
- package/build/client/assets/discord-Bdnx7fu-.js +0 -2
- package/build/client/assets/discord-Bdnx7fu-.js.map +0 -1
- package/build/client/assets/epic-video-Bp4BOD2R.js +0 -3053
- package/build/client/assets/epic-video-Bp4BOD2R.js.map +0 -1
- package/build/client/assets/error-boundary-BZA-ffa8.js +0 -2
- package/build/client/assets/finished-C0cpfAFL.js +0 -2
- package/build/client/assets/index-Bi1TbRTj.js +0 -2
- package/build/client/assets/index-Ca4vBON4.js +0 -2
- package/build/client/assets/manifest-a8336fab.js +0 -1
- package/build/client/assets/onboarding-C2YNq60k.js +0 -2
- package/build/client/assets/test-DoKJvNug.js +0 -2
- /package/build/client/assets/{epic-video-DUnRvy1A.css → index-DUnRvy1A.css} +0 -0
package/build/server/index.js
CHANGED
|
@@ -7,7 +7,7 @@ import { renderToPipeableStream, renderToStaticMarkup } from "react-dom/server";
|
|
|
7
7
|
import path from "node:path";
|
|
8
8
|
import { makeSingletonCache, cachified, deleteCache, compiledCodeCache, diffFilesCache, diffCodeCache, shouldForceFresh, fsCache, getAllFileCacheEntries, ogCache } from "@epic-web/workshop-utils/cache.server";
|
|
9
9
|
import { getWorkshopConfig } from "@epic-web/workshop-utils/config.server";
|
|
10
|
-
import { getAuthInfo, getPreferences, readOnboardingData, requireAuthInfo,
|
|
10
|
+
import { getAuthInfo, getPreferences, readOnboardingData, requireAuthInfo, PlayerPreferencesSchema, setPlayerPreferences, deleteDb, setPresencePreferences, setAuthInfo, markOnboardingVideoWatched } from "@epic-web/workshop-utils/db.server";
|
|
11
11
|
import { getUserInfo, userHasAccessToWorkshop, getProgress, updateProgress, getEpicVideoInfos } from "@epic-web/workshop-utils/epic-api.server";
|
|
12
12
|
import { getUserId, getSetClientIdCookieHeader } from "@epic-web/workshop-utils/user.server";
|
|
13
13
|
import { z } from "zod";
|
|
@@ -41,6 +41,7 @@ import { motion, useAnimationControls } from "framer-motion";
|
|
|
41
41
|
import { useHydrated } from "remix-utils/use-hydrated";
|
|
42
42
|
import * as DialogPrimitive from "@radix-ui/react-dialog";
|
|
43
43
|
import { invariantResponse, invariant } from "@epic-web/invariant";
|
|
44
|
+
import RealMuxPlayer, { MinResolution, MaxResolution } from "@mux/mux-player-react";
|
|
44
45
|
import path$1 from "path";
|
|
45
46
|
import etag from "etag";
|
|
46
47
|
import fsExtra from "fs-extra";
|
|
@@ -49,7 +50,6 @@ import fs from "fs";
|
|
|
49
50
|
import { getDirModifiedTime, modifiedMoreRecentlyThan } from "@epic-web/workshop-utils/modified-time.server";
|
|
50
51
|
import * as esbuild from "esbuild";
|
|
51
52
|
import { ElementScrollRestoration } from "@epic-web/restore-scroll";
|
|
52
|
-
import RealMuxPlayer from "@mux/mux-player-react";
|
|
53
53
|
import child_process from "child_process";
|
|
54
54
|
import os from "os";
|
|
55
55
|
import shellQuote from "shell-quote";
|
|
@@ -3087,6 +3087,228 @@ function ButtonLink({
|
|
|
3087
3087
|
}
|
|
3088
3088
|
) });
|
|
3089
3089
|
}
|
|
3090
|
+
const PlaybackTimeSchema = z.object({
|
|
3091
|
+
time: z.number(),
|
|
3092
|
+
expiresAt: z.string()
|
|
3093
|
+
}).transform((data2) => {
|
|
3094
|
+
return { time: Number(data2.time), expiresAt: new Date(data2.expiresAt) };
|
|
3095
|
+
});
|
|
3096
|
+
function usePlayerPreferences() {
|
|
3097
|
+
var _a;
|
|
3098
|
+
const data2 = useRouteLoaderData("root");
|
|
3099
|
+
return ((_a = data2 == null ? void 0 : data2.preferences) == null ? void 0 : _a.player) ?? null;
|
|
3100
|
+
}
|
|
3101
|
+
const ignoredInputs = [
|
|
3102
|
+
"INPUT",
|
|
3103
|
+
"SELECT",
|
|
3104
|
+
"BUTTON",
|
|
3105
|
+
"TEXTAREA",
|
|
3106
|
+
"MUX-PLAYER",
|
|
3107
|
+
"SUMMARY"
|
|
3108
|
+
];
|
|
3109
|
+
const ignoredRoles = ["button", "option", "combobox", "tab", "tablist"];
|
|
3110
|
+
function shouldIgnoreHotkey(el) {
|
|
3111
|
+
let current = el;
|
|
3112
|
+
while (current) {
|
|
3113
|
+
if (!(current instanceof HTMLElement)) return false;
|
|
3114
|
+
const isIgnored = ignoredInputs.includes(current.tagName) || ignoredRoles.includes(current.getAttribute("role") || "") || current.isContentEditable;
|
|
3115
|
+
if (isIgnored) return true;
|
|
3116
|
+
current = current.parentElement;
|
|
3117
|
+
}
|
|
3118
|
+
return false;
|
|
3119
|
+
}
|
|
3120
|
+
async function action$9({ request }) {
|
|
3121
|
+
const result = PlayerPreferencesSchema.safeParse(await request.json());
|
|
3122
|
+
if (!result.success) {
|
|
3123
|
+
return unstable_data$1({ status: "error", error: result.error.flatten() }, {
|
|
3124
|
+
status: 400
|
|
3125
|
+
});
|
|
3126
|
+
}
|
|
3127
|
+
await setPlayerPreferences(result.data);
|
|
3128
|
+
return { status: "success" };
|
|
3129
|
+
}
|
|
3130
|
+
function useLatest(value) {
|
|
3131
|
+
const ref = React.useRef(value);
|
|
3132
|
+
React.useEffect(() => {
|
|
3133
|
+
ref.current = value;
|
|
3134
|
+
}, [value]);
|
|
3135
|
+
return ref;
|
|
3136
|
+
}
|
|
3137
|
+
function MuxPlayer({
|
|
3138
|
+
muxPlayerRef,
|
|
3139
|
+
...props
|
|
3140
|
+
}) {
|
|
3141
|
+
const playerPreferences = usePlayerPreferences();
|
|
3142
|
+
const playerPreferencesFetcher = useFetcher();
|
|
3143
|
+
const [metadataLoaded, setMetadataLoaded] = React.useState(false);
|
|
3144
|
+
const currentTimeSessionKey = `${props.playbackId}:currentTime`;
|
|
3145
|
+
const [currentTime, setCurrentTime] = React.useState(0);
|
|
3146
|
+
const fetcherRef = useLatest(playerPreferencesFetcher);
|
|
3147
|
+
const playerPreferencesRef = useLatest(playerPreferences);
|
|
3148
|
+
React.useEffect(() => {
|
|
3149
|
+
if (typeof document === "undefined") return;
|
|
3150
|
+
const stored = sessionStorage.getItem(currentTimeSessionKey);
|
|
3151
|
+
if (!stored) return;
|
|
3152
|
+
try {
|
|
3153
|
+
const { time: time2, expiresAt } = PlaybackTimeSchema.parse(JSON.parse(stored));
|
|
3154
|
+
if (expiresAt.getTime() < Date.now()) throw new Error("Time expired");
|
|
3155
|
+
setCurrentTime(time2);
|
|
3156
|
+
} catch {
|
|
3157
|
+
sessionStorage.removeItem(currentTimeSessionKey);
|
|
3158
|
+
}
|
|
3159
|
+
}, [currentTimeSessionKey]);
|
|
3160
|
+
React.useEffect(() => {
|
|
3161
|
+
function handleUserKeyPress(e) {
|
|
3162
|
+
if (!muxPlayerRef.current) return;
|
|
3163
|
+
const activeElement = document.activeElement;
|
|
3164
|
+
if (shouldIgnoreHotkey(activeElement)) return;
|
|
3165
|
+
if (shouldIgnoreHotkey(e.target)) return;
|
|
3166
|
+
if (e.key === " ") {
|
|
3167
|
+
e.preventDefault();
|
|
3168
|
+
void (muxPlayerRef.current.paused ? muxPlayerRef.current.play() : muxPlayerRef.current.pause());
|
|
3169
|
+
}
|
|
3170
|
+
if (e.key === "ArrowRight") {
|
|
3171
|
+
e.preventDefault();
|
|
3172
|
+
muxPlayerRef.current.currentTime = muxPlayerRef.current.currentTime + (muxPlayerRef.current.forwardSeekOffset || 10);
|
|
3173
|
+
}
|
|
3174
|
+
if (e.key === "ArrowLeft") {
|
|
3175
|
+
e.preventDefault();
|
|
3176
|
+
muxPlayerRef.current.currentTime = muxPlayerRef.current.currentTime - (muxPlayerRef.current.forwardSeekOffset || 10);
|
|
3177
|
+
}
|
|
3178
|
+
if (e.key === "f" && !e.metaKey && !e.ctrlKey) {
|
|
3179
|
+
e.preventDefault();
|
|
3180
|
+
void (document.fullscreenElement ? document.exitFullscreen() : muxPlayerRef.current.requestFullscreen());
|
|
3181
|
+
}
|
|
3182
|
+
}
|
|
3183
|
+
window.document.addEventListener("keydown", handleUserKeyPress);
|
|
3184
|
+
return () => {
|
|
3185
|
+
window.document.removeEventListener("keydown", handleUserKeyPress);
|
|
3186
|
+
};
|
|
3187
|
+
}, [muxPlayerRef]);
|
|
3188
|
+
const updatePreferences = useDebounce(() => {
|
|
3189
|
+
const player = muxPlayerRef.current;
|
|
3190
|
+
if (!player) return;
|
|
3191
|
+
const subs = Array.from(player.textTracks ?? []).find(
|
|
3192
|
+
(t) => t.kind === "subtitles"
|
|
3193
|
+
);
|
|
3194
|
+
const newPrefs = {
|
|
3195
|
+
playbackRate: player.playbackRate,
|
|
3196
|
+
volumeRate: player.volume,
|
|
3197
|
+
subtitle: subs ? { id: subs.id, mode: subs.mode } : { id: null, mode: "disabled" }
|
|
3198
|
+
};
|
|
3199
|
+
if (isDeepEqual(newPrefs, playerPreferencesRef.current)) return;
|
|
3200
|
+
fetcherRef.current.submit(newPrefs, {
|
|
3201
|
+
method: "POST",
|
|
3202
|
+
action: "/video-player",
|
|
3203
|
+
encType: "application/json"
|
|
3204
|
+
});
|
|
3205
|
+
}, 300);
|
|
3206
|
+
React.useEffect(() => {
|
|
3207
|
+
var _a, _b;
|
|
3208
|
+
if (!metadataLoaded) return;
|
|
3209
|
+
const textTracks = (_a = muxPlayerRef.current) == null ? void 0 : _a.textTracks;
|
|
3210
|
+
if (!textTracks) return;
|
|
3211
|
+
const subtitlePref = (_b = playerPreferencesRef.current) == null ? void 0 : _b.subtitle;
|
|
3212
|
+
if (subtitlePref == null ? void 0 : subtitlePref.id) {
|
|
3213
|
+
const preferredTextTrack = textTracks.getTrackById(subtitlePref.id);
|
|
3214
|
+
if (preferredTextTrack) {
|
|
3215
|
+
preferredTextTrack.mode = subtitlePref.mode ?? "hidden";
|
|
3216
|
+
}
|
|
3217
|
+
}
|
|
3218
|
+
textTracks.addEventListener("change", updatePreferences);
|
|
3219
|
+
return () => {
|
|
3220
|
+
textTracks.removeEventListener("change", updatePreferences);
|
|
3221
|
+
};
|
|
3222
|
+
}, [metadataLoaded, muxPlayerRef, playerPreferencesRef, updatePreferences]);
|
|
3223
|
+
return /* @__PURE__ */ jsx("div", { className: "flex aspect-video flex-col", children: /* @__PURE__ */ jsx(
|
|
3224
|
+
RealMuxPlayer,
|
|
3225
|
+
{
|
|
3226
|
+
ref: muxPlayerRef,
|
|
3227
|
+
playbackRates: [
|
|
3228
|
+
0.5,
|
|
3229
|
+
0.75,
|
|
3230
|
+
1,
|
|
3231
|
+
1.25,
|
|
3232
|
+
1.5,
|
|
3233
|
+
1.75,
|
|
3234
|
+
2,
|
|
3235
|
+
2.5,
|
|
3236
|
+
3,
|
|
3237
|
+
3.5,
|
|
3238
|
+
// lol, someone really asked for this and I think it's funny so let's do it
|
|
3239
|
+
// https://twitter.com/zackerydev/status/1710840197879918840
|
|
3240
|
+
4
|
|
3241
|
+
],
|
|
3242
|
+
volume: (playerPreferences == null ? void 0 : playerPreferences.volumeRate) ?? 1,
|
|
3243
|
+
playbackRate: (playerPreferences == null ? void 0 : playerPreferences.playbackRate) ?? 1,
|
|
3244
|
+
thumbnailTime: currentTime,
|
|
3245
|
+
onRateChange: updatePreferences,
|
|
3246
|
+
onVolumeChange: updatePreferences,
|
|
3247
|
+
streamType: "on-demand",
|
|
3248
|
+
defaultHiddenCaptions: true,
|
|
3249
|
+
currentTime,
|
|
3250
|
+
onTimeUpdate: () => {
|
|
3251
|
+
var _a;
|
|
3252
|
+
return sessionStorage.setItem(
|
|
3253
|
+
currentTimeSessionKey,
|
|
3254
|
+
JSON.stringify({
|
|
3255
|
+
time: (_a = muxPlayerRef.current) == null ? void 0 : _a.currentTime,
|
|
3256
|
+
expiresAt: new Date(Date.now() + 1e3 * 60 * 30).toISOString()
|
|
3257
|
+
})
|
|
3258
|
+
);
|
|
3259
|
+
},
|
|
3260
|
+
accentColor: "#427cf0",
|
|
3261
|
+
targetLiveWindow: NaN,
|
|
3262
|
+
onLoadedMetadata: () => setMetadataLoaded(true),
|
|
3263
|
+
minResolution: getMinResolutionValue(playerPreferences == null ? void 0 : playerPreferences.minResolution),
|
|
3264
|
+
maxResolution: getMaxResolutionValue(playerPreferences == null ? void 0 : playerPreferences.maxResolution),
|
|
3265
|
+
...props
|
|
3266
|
+
}
|
|
3267
|
+
) });
|
|
3268
|
+
}
|
|
3269
|
+
function isDeepEqual(obj1, obj2) {
|
|
3270
|
+
if (obj1 === obj2) return true;
|
|
3271
|
+
if (typeof obj1 !== typeof obj2) return false;
|
|
3272
|
+
if (typeof obj1 !== "object" || typeof obj2 !== "object") return false;
|
|
3273
|
+
if (obj1 === null || obj2 === null) return false;
|
|
3274
|
+
if (Array.isArray(obj1) !== Array.isArray(obj2)) return false;
|
|
3275
|
+
if (Array.isArray(obj1) && Array.isArray(obj2)) {
|
|
3276
|
+
if (obj1.length !== obj2.length) return false;
|
|
3277
|
+
for (let i = 0; i < obj1.length; i++) {
|
|
3278
|
+
if (!isDeepEqual(obj1[i], obj2[i])) return false;
|
|
3279
|
+
}
|
|
3280
|
+
return true;
|
|
3281
|
+
}
|
|
3282
|
+
const keys1 = Object.keys(obj1);
|
|
3283
|
+
const keys2 = Object.keys(obj2);
|
|
3284
|
+
if (keys1.length !== keys2.length) return false;
|
|
3285
|
+
for (const key of keys1) {
|
|
3286
|
+
if (!isDeepEqual(obj1[key], obj2[key])) return false;
|
|
3287
|
+
}
|
|
3288
|
+
return true;
|
|
3289
|
+
}
|
|
3290
|
+
function getMinResolutionValue(resolution) {
|
|
3291
|
+
if (!resolution) return void 0;
|
|
3292
|
+
if (resolution <= 480) return MinResolution.noLessThan480p;
|
|
3293
|
+
if (resolution <= 540) return MinResolution.noLessThan540p;
|
|
3294
|
+
if (resolution <= 720) return MinResolution.noLessThan720p;
|
|
3295
|
+
if (resolution <= 1080) return MinResolution.noLessThan1080p;
|
|
3296
|
+
if (resolution <= 1440) return MinResolution.noLessThan1440p;
|
|
3297
|
+
return MinResolution.noLessThan2160p;
|
|
3298
|
+
}
|
|
3299
|
+
function getMaxResolutionValue(resolution) {
|
|
3300
|
+
if (!resolution) return void 0;
|
|
3301
|
+
if (resolution <= 720) return MaxResolution.upTo720p;
|
|
3302
|
+
if (resolution <= 1080) return MaxResolution.upTo1080p;
|
|
3303
|
+
if (resolution <= 1440) return MaxResolution.upTo1440p;
|
|
3304
|
+
return MaxResolution.upTo2160p;
|
|
3305
|
+
}
|
|
3306
|
+
const route45 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
3307
|
+
__proto__: null,
|
|
3308
|
+
MuxPlayer,
|
|
3309
|
+
action: action$9,
|
|
3310
|
+
usePlayerPreferences
|
|
3311
|
+
}, Symbol.toStringTag, { value: "Module" }));
|
|
3090
3312
|
const handle$9 = {
|
|
3091
3313
|
getSitemapEntries: () => null
|
|
3092
3314
|
};
|
|
@@ -3095,7 +3317,7 @@ async function loader$u({ request }) {
|
|
|
3095
3317
|
await requireAuthInfo({ request });
|
|
3096
3318
|
return {};
|
|
3097
3319
|
}
|
|
3098
|
-
async function action$
|
|
3320
|
+
async function action$8({ request }) {
|
|
3099
3321
|
ensureUndeployed();
|
|
3100
3322
|
const formData = await request.formData();
|
|
3101
3323
|
const intent = formData.get("intent");
|
|
@@ -3115,6 +3337,18 @@ async function action$9({ request }) {
|
|
|
3115
3337
|
description: `You are now ${optOut ? "invisible" : "visible"}.`,
|
|
3116
3338
|
type: "success"
|
|
3117
3339
|
});
|
|
3340
|
+
} else if (intent === "update-player-preferences") {
|
|
3341
|
+
const minResolution = formData.get("minResolution");
|
|
3342
|
+
const maxResolution = formData.get("maxResolution");
|
|
3343
|
+
await setPlayerPreferences({
|
|
3344
|
+
minResolution: minResolution ? Number(minResolution) : void 0,
|
|
3345
|
+
maxResolution: maxResolution ? Number(maxResolution) : void 0
|
|
3346
|
+
});
|
|
3347
|
+
return redirectWithToast("/account", {
|
|
3348
|
+
title: "Preferences updated",
|
|
3349
|
+
description: "Your video player preferences have been updated.",
|
|
3350
|
+
type: "success"
|
|
3351
|
+
});
|
|
3118
3352
|
}
|
|
3119
3353
|
return redirect$1("/account");
|
|
3120
3354
|
}
|
|
@@ -3128,7 +3362,10 @@ function Account() {
|
|
|
3128
3362
|
const user = useUser();
|
|
3129
3363
|
const discordMember = useOptionalDiscordMember();
|
|
3130
3364
|
const presencePreferences = usePresencePreferences();
|
|
3365
|
+
const playerPreferences = usePlayerPreferences();
|
|
3131
3366
|
const connectDiscordURL = useConnectDiscordURL$1();
|
|
3367
|
+
const navigation = useNavigation();
|
|
3368
|
+
const isSubmitting = navigation.state === "submitting";
|
|
3132
3369
|
return /* @__PURE__ */ jsxs("main", { className: "container flex h-full w-full max-w-3xl flex-grow flex-col items-center justify-center gap-4", children: [
|
|
3133
3370
|
user.imageUrlLarge ? /* @__PURE__ */ jsx(
|
|
3134
3371
|
"img",
|
|
@@ -3201,6 +3438,61 @@ function Account() {
|
|
|
3201
3438
|
}
|
|
3202
3439
|
)
|
|
3203
3440
|
] }),
|
|
3441
|
+
/* @__PURE__ */ jsx("hr", { className: "w-full" }),
|
|
3442
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
3443
|
+
/* @__PURE__ */ jsx("h2", { className: "mb-2 text-xl", children: "Video Player Preferences" }),
|
|
3444
|
+
/* @__PURE__ */ jsxs(Form, { method: "post", className: "flex flex-col gap-4", children: [
|
|
3445
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
3446
|
+
/* @__PURE__ */ jsx("label", { htmlFor: "minResolution", children: "Minimum Resolution:" }),
|
|
3447
|
+
/* @__PURE__ */ jsxs(
|
|
3448
|
+
"select",
|
|
3449
|
+
{
|
|
3450
|
+
id: "minResolution",
|
|
3451
|
+
name: "minResolution",
|
|
3452
|
+
defaultValue: playerPreferences == null ? void 0 : playerPreferences.minResolution,
|
|
3453
|
+
children: [
|
|
3454
|
+
/* @__PURE__ */ jsx("option", { value: "", children: "Auto" }),
|
|
3455
|
+
/* @__PURE__ */ jsx("option", { value: "480", children: "480p" }),
|
|
3456
|
+
/* @__PURE__ */ jsx("option", { value: "720", children: "720p" }),
|
|
3457
|
+
/* @__PURE__ */ jsx("option", { value: "1080", children: "1080p" }),
|
|
3458
|
+
/* @__PURE__ */ jsx("option", { value: "1440", children: "1440p" }),
|
|
3459
|
+
/* @__PURE__ */ jsx("option", { value: "2160", children: "2160p (4K)" })
|
|
3460
|
+
]
|
|
3461
|
+
}
|
|
3462
|
+
)
|
|
3463
|
+
] }),
|
|
3464
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
3465
|
+
/* @__PURE__ */ jsx("label", { htmlFor: "maxResolution", children: "Maximum Resolution:" }),
|
|
3466
|
+
/* @__PURE__ */ jsxs(
|
|
3467
|
+
"select",
|
|
3468
|
+
{
|
|
3469
|
+
id: "maxResolution",
|
|
3470
|
+
name: "maxResolution",
|
|
3471
|
+
defaultValue: playerPreferences == null ? void 0 : playerPreferences.maxResolution,
|
|
3472
|
+
children: [
|
|
3473
|
+
/* @__PURE__ */ jsx("option", { value: "", children: "Auto" }),
|
|
3474
|
+
/* @__PURE__ */ jsx("option", { value: "720", children: "720p" }),
|
|
3475
|
+
/* @__PURE__ */ jsx("option", { value: "1080", children: "1080p" }),
|
|
3476
|
+
/* @__PURE__ */ jsx("option", { value: "1440", children: "1440p" }),
|
|
3477
|
+
/* @__PURE__ */ jsx("option", { value: "2160", children: "2160p (4K)" })
|
|
3478
|
+
]
|
|
3479
|
+
}
|
|
3480
|
+
)
|
|
3481
|
+
] }),
|
|
3482
|
+
/* @__PURE__ */ jsx(
|
|
3483
|
+
Button,
|
|
3484
|
+
{
|
|
3485
|
+
varient: "mono",
|
|
3486
|
+
type: "submit",
|
|
3487
|
+
name: "intent",
|
|
3488
|
+
value: "update-player-preferences",
|
|
3489
|
+
disabled: isSubmitting,
|
|
3490
|
+
children: isSubmitting ? "Updating..." : "Update Player Preferences"
|
|
3491
|
+
}
|
|
3492
|
+
)
|
|
3493
|
+
] })
|
|
3494
|
+
] }),
|
|
3495
|
+
/* @__PURE__ */ jsx("hr", { className: "w-full" }),
|
|
3204
3496
|
/* @__PURE__ */ jsxs("p", { children: [
|
|
3205
3497
|
"Check",
|
|
3206
3498
|
" ",
|
|
@@ -3219,7 +3511,7 @@ function Account() {
|
|
|
3219
3511
|
}
|
|
3220
3512
|
const route3 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
3221
3513
|
__proto__: null,
|
|
3222
|
-
action: action$
|
|
3514
|
+
action: action$8,
|
|
3223
3515
|
default: Account,
|
|
3224
3516
|
handle: handle$9,
|
|
3225
3517
|
loader: loader$u
|
|
@@ -3386,7 +3678,7 @@ async function loader$s(args) {
|
|
|
3386
3678
|
api.cleanupError(error);
|
|
3387
3679
|
}
|
|
3388
3680
|
}
|
|
3389
|
-
async function action$
|
|
3681
|
+
async function action$7(args) {
|
|
3390
3682
|
const api = await getApiModule(args);
|
|
3391
3683
|
invariantResponse(
|
|
3392
3684
|
api.mod.action,
|
|
@@ -3474,7 +3766,7 @@ async function getApiModule({ request, params }) {
|
|
|
3474
3766
|
}
|
|
3475
3767
|
const route5 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
3476
3768
|
__proto__: null,
|
|
3477
|
-
action: action$
|
|
3769
|
+
action: action$7,
|
|
3478
3770
|
loader: loader$s
|
|
3479
3771
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
3480
3772
|
async function loader$r({ request, params }) {
|
|
@@ -3926,210 +4218,6 @@ const route12 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePrope
|
|
|
3926
4218
|
default: ExercisesLayout,
|
|
3927
4219
|
handle: handle$7
|
|
3928
4220
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
3929
|
-
const PlaybackTimeSchema = z.object({
|
|
3930
|
-
time: z.number(),
|
|
3931
|
-
expiresAt: z.string()
|
|
3932
|
-
}).transform((data2) => {
|
|
3933
|
-
return { time: Number(data2.time), expiresAt: new Date(data2.expiresAt) };
|
|
3934
|
-
});
|
|
3935
|
-
function usePlayerPreferences() {
|
|
3936
|
-
var _a;
|
|
3937
|
-
const data2 = useRouteLoaderData("root");
|
|
3938
|
-
return ((_a = data2 == null ? void 0 : data2.preferences) == null ? void 0 : _a.player) ?? null;
|
|
3939
|
-
}
|
|
3940
|
-
const ignoredInputs = [
|
|
3941
|
-
"INPUT",
|
|
3942
|
-
"SELECT",
|
|
3943
|
-
"BUTTON",
|
|
3944
|
-
"TEXTAREA",
|
|
3945
|
-
"MUX-PLAYER",
|
|
3946
|
-
"SUMMARY"
|
|
3947
|
-
];
|
|
3948
|
-
const ignoredRoles = ["button", "option", "combobox", "tab", "tablist"];
|
|
3949
|
-
function shouldIgnoreHotkey(el) {
|
|
3950
|
-
let current = el;
|
|
3951
|
-
while (current) {
|
|
3952
|
-
if (!(current instanceof HTMLElement)) return false;
|
|
3953
|
-
const isIgnored = ignoredInputs.includes(current.tagName) || ignoredRoles.includes(current.getAttribute("role") || "") || current.isContentEditable;
|
|
3954
|
-
if (isIgnored) return true;
|
|
3955
|
-
current = current.parentElement;
|
|
3956
|
-
}
|
|
3957
|
-
return false;
|
|
3958
|
-
}
|
|
3959
|
-
async function action$7({ request }) {
|
|
3960
|
-
const result = PlayerPreferencesSchema.safeParse(await request.json());
|
|
3961
|
-
if (!result.success) {
|
|
3962
|
-
return unstable_data$1({ status: "error", error: result.error.flatten() }, {
|
|
3963
|
-
status: 400
|
|
3964
|
-
});
|
|
3965
|
-
}
|
|
3966
|
-
await setPlayerPreferences(result.data);
|
|
3967
|
-
return { status: "success" };
|
|
3968
|
-
}
|
|
3969
|
-
function useLatest(value) {
|
|
3970
|
-
const ref = React.useRef(value);
|
|
3971
|
-
React.useEffect(() => {
|
|
3972
|
-
ref.current = value;
|
|
3973
|
-
}, [value]);
|
|
3974
|
-
return ref;
|
|
3975
|
-
}
|
|
3976
|
-
function MuxPlayer({
|
|
3977
|
-
muxPlayerRef,
|
|
3978
|
-
...props
|
|
3979
|
-
}) {
|
|
3980
|
-
const playerPreferences = usePlayerPreferences();
|
|
3981
|
-
const playerPreferencesFetcher = useFetcher();
|
|
3982
|
-
const [metadataLoaded, setMetadataLoaded] = React.useState(false);
|
|
3983
|
-
const currentTimeSessionKey = `${props.playbackId}:currentTime`;
|
|
3984
|
-
const [currentTime, setCurrentTime] = React.useState(0);
|
|
3985
|
-
const fetcherRef = useLatest(playerPreferencesFetcher);
|
|
3986
|
-
const playerPreferencesRef = useLatest(playerPreferences);
|
|
3987
|
-
React.useEffect(() => {
|
|
3988
|
-
if (typeof document === "undefined") return;
|
|
3989
|
-
const stored = sessionStorage.getItem(currentTimeSessionKey);
|
|
3990
|
-
if (!stored) return;
|
|
3991
|
-
try {
|
|
3992
|
-
const { time: time2, expiresAt } = PlaybackTimeSchema.parse(JSON.parse(stored));
|
|
3993
|
-
if (expiresAt.getTime() < Date.now()) throw new Error("Time expired");
|
|
3994
|
-
setCurrentTime(time2);
|
|
3995
|
-
} catch {
|
|
3996
|
-
sessionStorage.removeItem(currentTimeSessionKey);
|
|
3997
|
-
}
|
|
3998
|
-
}, [currentTimeSessionKey]);
|
|
3999
|
-
React.useEffect(() => {
|
|
4000
|
-
function handleUserKeyPress(e) {
|
|
4001
|
-
if (!muxPlayerRef.current) return;
|
|
4002
|
-
const activeElement = document.activeElement;
|
|
4003
|
-
if (shouldIgnoreHotkey(activeElement)) return;
|
|
4004
|
-
if (shouldIgnoreHotkey(e.target)) return;
|
|
4005
|
-
if (e.key === " ") {
|
|
4006
|
-
e.preventDefault();
|
|
4007
|
-
void (muxPlayerRef.current.paused ? muxPlayerRef.current.play() : muxPlayerRef.current.pause());
|
|
4008
|
-
}
|
|
4009
|
-
if (e.key === "ArrowRight") {
|
|
4010
|
-
e.preventDefault();
|
|
4011
|
-
muxPlayerRef.current.currentTime = muxPlayerRef.current.currentTime + (muxPlayerRef.current.forwardSeekOffset || 10);
|
|
4012
|
-
}
|
|
4013
|
-
if (e.key === "ArrowLeft") {
|
|
4014
|
-
e.preventDefault();
|
|
4015
|
-
muxPlayerRef.current.currentTime = muxPlayerRef.current.currentTime - (muxPlayerRef.current.forwardSeekOffset || 10);
|
|
4016
|
-
}
|
|
4017
|
-
if (e.key === "f" && !e.metaKey && !e.ctrlKey) {
|
|
4018
|
-
e.preventDefault();
|
|
4019
|
-
void (document.fullscreenElement ? document.exitFullscreen() : muxPlayerRef.current.requestFullscreen());
|
|
4020
|
-
}
|
|
4021
|
-
}
|
|
4022
|
-
window.document.addEventListener("keydown", handleUserKeyPress);
|
|
4023
|
-
return () => {
|
|
4024
|
-
window.document.removeEventListener("keydown", handleUserKeyPress);
|
|
4025
|
-
};
|
|
4026
|
-
}, [muxPlayerRef]);
|
|
4027
|
-
const updatePreferences = useDebounce(() => {
|
|
4028
|
-
const player = muxPlayerRef.current;
|
|
4029
|
-
if (!player) return;
|
|
4030
|
-
const subs = Array.from(player.textTracks ?? []).find(
|
|
4031
|
-
(t) => t.kind === "subtitles"
|
|
4032
|
-
);
|
|
4033
|
-
const newPrefs = {
|
|
4034
|
-
playbackRate: player.playbackRate,
|
|
4035
|
-
volumeRate: player.volume,
|
|
4036
|
-
subtitle: subs ? { id: subs.id, mode: subs.mode } : { id: null, mode: "disabled" }
|
|
4037
|
-
};
|
|
4038
|
-
if (isDeepEqual(newPrefs, playerPreferencesRef.current)) return;
|
|
4039
|
-
fetcherRef.current.submit(newPrefs, {
|
|
4040
|
-
method: "POST",
|
|
4041
|
-
action: "/video-player",
|
|
4042
|
-
encType: "application/json"
|
|
4043
|
-
});
|
|
4044
|
-
}, 300);
|
|
4045
|
-
React.useEffect(() => {
|
|
4046
|
-
var _a, _b;
|
|
4047
|
-
if (!metadataLoaded) return;
|
|
4048
|
-
const textTracks = (_a = muxPlayerRef.current) == null ? void 0 : _a.textTracks;
|
|
4049
|
-
if (!textTracks) return;
|
|
4050
|
-
const subtitlePref = (_b = playerPreferencesRef.current) == null ? void 0 : _b.subtitle;
|
|
4051
|
-
if (subtitlePref == null ? void 0 : subtitlePref.id) {
|
|
4052
|
-
const preferredTextTrack = textTracks.getTrackById(subtitlePref.id);
|
|
4053
|
-
if (preferredTextTrack) {
|
|
4054
|
-
preferredTextTrack.mode = subtitlePref.mode ?? "hidden";
|
|
4055
|
-
}
|
|
4056
|
-
}
|
|
4057
|
-
textTracks.addEventListener("change", updatePreferences);
|
|
4058
|
-
return () => {
|
|
4059
|
-
textTracks.removeEventListener("change", updatePreferences);
|
|
4060
|
-
};
|
|
4061
|
-
}, [metadataLoaded, muxPlayerRef, playerPreferencesRef, updatePreferences]);
|
|
4062
|
-
return /* @__PURE__ */ jsx("div", { className: "flex aspect-video flex-col", children: /* @__PURE__ */ jsx(
|
|
4063
|
-
RealMuxPlayer,
|
|
4064
|
-
{
|
|
4065
|
-
ref: muxPlayerRef,
|
|
4066
|
-
playbackRates: [
|
|
4067
|
-
0.5,
|
|
4068
|
-
0.75,
|
|
4069
|
-
1,
|
|
4070
|
-
1.25,
|
|
4071
|
-
1.5,
|
|
4072
|
-
1.75,
|
|
4073
|
-
2,
|
|
4074
|
-
2.5,
|
|
4075
|
-
3,
|
|
4076
|
-
3.5,
|
|
4077
|
-
// lol, someone really asked for this and I think it's funny so let's do it
|
|
4078
|
-
// https://twitter.com/zackerydev/status/1710840197879918840
|
|
4079
|
-
4
|
|
4080
|
-
],
|
|
4081
|
-
volume: (playerPreferences == null ? void 0 : playerPreferences.volumeRate) ?? 1,
|
|
4082
|
-
playbackRate: (playerPreferences == null ? void 0 : playerPreferences.playbackRate) ?? 1,
|
|
4083
|
-
thumbnailTime: currentTime,
|
|
4084
|
-
onRateChange: updatePreferences,
|
|
4085
|
-
onVolumeChange: updatePreferences,
|
|
4086
|
-
streamType: "on-demand",
|
|
4087
|
-
defaultHiddenCaptions: true,
|
|
4088
|
-
currentTime,
|
|
4089
|
-
onTimeUpdate: () => {
|
|
4090
|
-
var _a;
|
|
4091
|
-
return sessionStorage.setItem(
|
|
4092
|
-
currentTimeSessionKey,
|
|
4093
|
-
JSON.stringify({
|
|
4094
|
-
time: (_a = muxPlayerRef.current) == null ? void 0 : _a.currentTime,
|
|
4095
|
-
expiresAt: new Date(Date.now() + 1e3 * 60 * 30).toISOString()
|
|
4096
|
-
})
|
|
4097
|
-
);
|
|
4098
|
-
},
|
|
4099
|
-
accentColor: "#427cf0",
|
|
4100
|
-
targetLiveWindow: NaN,
|
|
4101
|
-
onLoadedMetadata: () => setMetadataLoaded(true),
|
|
4102
|
-
...props
|
|
4103
|
-
}
|
|
4104
|
-
) });
|
|
4105
|
-
}
|
|
4106
|
-
function isDeepEqual(obj1, obj2) {
|
|
4107
|
-
if (obj1 === obj2) return true;
|
|
4108
|
-
if (typeof obj1 !== typeof obj2) return false;
|
|
4109
|
-
if (typeof obj1 !== "object" || typeof obj2 !== "object") return false;
|
|
4110
|
-
if (obj1 === null || obj2 === null) return false;
|
|
4111
|
-
if (Array.isArray(obj1) !== Array.isArray(obj2)) return false;
|
|
4112
|
-
if (Array.isArray(obj1) && Array.isArray(obj2)) {
|
|
4113
|
-
if (obj1.length !== obj2.length) return false;
|
|
4114
|
-
for (let i = 0; i < obj1.length; i++) {
|
|
4115
|
-
if (!isDeepEqual(obj1[i], obj2[i])) return false;
|
|
4116
|
-
}
|
|
4117
|
-
return true;
|
|
4118
|
-
}
|
|
4119
|
-
const keys1 = Object.keys(obj1);
|
|
4120
|
-
const keys2 = Object.keys(obj2);
|
|
4121
|
-
if (keys1.length !== keys2.length) return false;
|
|
4122
|
-
for (const key of keys1) {
|
|
4123
|
-
if (!isDeepEqual(obj1[key], obj2[key])) return false;
|
|
4124
|
-
}
|
|
4125
|
-
return true;
|
|
4126
|
-
}
|
|
4127
|
-
const route45 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
4128
|
-
__proto__: null,
|
|
4129
|
-
MuxPlayer,
|
|
4130
|
-
action: action$7,
|
|
4131
|
-
usePlayerPreferences
|
|
4132
|
-
}, Symbol.toStringTag, { value: "Module" }));
|
|
4133
4221
|
function Loading({
|
|
4134
4222
|
className,
|
|
4135
4223
|
children = "Loading"
|
|
@@ -10885,7 +10973,7 @@ const route41 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePrope
|
|
|
10885
10973
|
__proto__: null,
|
|
10886
10974
|
loader
|
|
10887
10975
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
10888
|
-
const serverManifest = { "entry": { "module": "/assets/entry.client-DqIWuxf8.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/components-Be92gVxW.js"], "css": [] }, "routes": { "root": { "id": "root", "parentId": void 0, "path": "", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/root-D12XnE1S.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/components-Be92gVxW.js", "/assets/misc-DUy_whwE.js", "/assets/pe-ChIwTk8v.js", "/assets/error-boundary-BZA-ffa8.js", "/assets/progress-bar-BaTU3Yx_.js", "/assets/index-C9Hx0Dey.js", "/assets/tooltip-DO9uwurQ.js", "/assets/index-Bdg3v8tC.js", "/assets/presence-8FPJKg_8.js", "/assets/seo-pBpFCWsy.js", "/assets/request-info-ByUEfOil.js"], "css": [] }, "routes/$": { "id": "routes/$", "parentId": "root", "path": "*", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_-BrkpfnBb.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/error-boundary-BZA-ffa8.js", "/assets/misc-DUy_whwE.js", "/assets/components-Be92gVxW.js"], "css": [] }, "routes/_app+/_layout": { "id": "routes/_app+/_layout", "parentId": "root", "path": void 0, "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_layout-B8j0pWoF.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/misc-DUy_whwE.js", "/assets/pe-ChIwTk8v.js", "/assets/product-DIAmCwmZ.js", "/assets/revalidation-ws-dUa9CAqr.js", "/assets/tooltip-DO9uwurQ.js", "/assets/index-BCTr8uu6.js", "/assets/user-Bv6wYhQP.js", "/assets/workshop-config-WVltG_BV.js", "/assets/presence-8FPJKg_8.js", "/assets/progress-DQt_Bn9o.js", "/assets/index-Bdg3v8tC.js", "/assets/components-Be92gVxW.js", "/assets/request-info-ByUEfOil.js"], "css": [] }, "routes/_app+/account": { "id": "routes/_app+/account", "parentId": "routes/_app+/_layout", "path": "account", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/account-DPP4rKOb.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/button-_qPvcoqR.js", "/assets/misc-DUy_whwE.js", "/assets/tooltip-DO9uwurQ.js", "/assets/user-Bv6wYhQP.js", "/assets/workshop-config-WVltG_BV.js", "/assets/presence-8FPJKg_8.js", "/assets/components-Be92gVxW.js", "/assets/request-info-ByUEfOil.js"], "css": [] }, "routes/_app+/app.$appName+/$": { "id": "routes/_app+/app.$appName+/$", "parentId": "routes/_app+/_layout", "path": "app/:appName/*", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/api.$": { "id": "routes/_app+/app.$appName+/api.$", "parentId": "routes/_app+/_layout", "path": "app/:appName/api/*", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/api._-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/epic_ws[.js]": { "id": "routes/_app+/app.$appName+/epic_ws[.js]", "parentId": "routes/_app+/_layout", "path": "app/:appName/epic_ws.js", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/epic_ws_.js_-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/index": { "id": "routes/_app+/app.$appName+/index", "parentId": "routes/_app+/_layout", "path": "app/:appName/", "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/index-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/test.$testName": { "id": "routes/_app+/app.$appName+/test.$testName", "parentId": "routes/_app+/_layout", "path": "app/:appName/test/:testName", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/test._testName-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/test.epic_ws[.js]": { "id": "routes/_app+/app.$appName+/test.epic_ws[.js]", "parentId": "routes/_app+/_layout", "path": "app/:appName/test/epic_ws.js", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/test.epic_ws_.js_-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.epic_ws[.js]": { "id": "routes/_app+/app.epic_ws[.js]", "parentId": "routes/_app+/_layout", "path": "app/epic_ws.js", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/app.epic_ws_.js_-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/discord": { "id": "routes/_app+/discord", "parentId": "routes/_app+/_layout", "path": "discord", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/discord-Bdnx7fu-.js", "imports": ["/assets/discord-BUWZUTEC.js", "/assets/index-BFGhCX_U.js", "/assets/misc-DUy_whwE.js", "/assets/components-Be92gVxW.js", "/assets/user-Bv6wYhQP.js", "/assets/workshop-config-WVltG_BV.js"], "css": [] }, "routes/_app+/exercise+/_layout": { "id": "routes/_app+/exercise+/_layout", "parentId": "routes/_app+/_layout", "path": "exercise", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_layout-88n0To1b.js", "imports": ["/assets/index-BFGhCX_U.js"], "css": [] }, "routes/_app+/exercise+/$exerciseNumber": { "id": "routes/_app+/exercise+/$exerciseNumber", "parentId": "routes/_app+/exercise+/_layout", "path": ":exerciseNumber", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_exerciseNumber-DCSM0NCG.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/index-BCxBKsqT.js", "/assets/epic-video-Bp4BOD2R.js", "/assets/revalidation-ws-dUa9CAqr.js", "/assets/mdx-CEjzXoEx.js", "/assets/progress-DQt_Bn9o.js", "/assets/misc-DUy_whwE.js", "/assets/seo-pBpFCWsy.js", "/assets/components-Be92gVxW.js", "/assets/index-Bdg3v8tC.js", "/assets/request-info-ByUEfOil.js", "/assets/tooltip-DO9uwurQ.js", "/assets/pe-ChIwTk8v.js", "/assets/loading-XhMtj4mp.js", "/assets/user-Bv6wYhQP.js", "/assets/workshop-config-WVltG_BV.js", "/assets/progress-bar-BaTU3Yx_.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber", "parentId": "routes/_app+/exercise+/_layout", "path": ":exerciseNumber/:stepNumber", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_exerciseNumber_._stepNumber-BIMJh_sg.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/misc-DUy_whwE.js", "/assets/components-Be92gVxW.js"], "css": [] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber", "path": ":type", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_layout-DTAM9xh5.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/index-BCxBKsqT.js", "/assets/error-boundary-BZA-ffa8.js", "/assets/nav-chevrons-DnR25VLp.js", "/assets/revalidation-ws-dUa9CAqr.js", "/assets/mdx-CEjzXoEx.js", "/assets/progress-DQt_Bn9o.js", "/assets/set-playground-CBHBA46B.js", "/assets/seo-pBpFCWsy.js", "/assets/misc-DUy_whwE.js", "/assets/epic-video-Bp4BOD2R.js", "/assets/tooltip-DO9uwurQ.js", "/assets/request-info-ByUEfOil.js", "/assets/components-Be92gVxW.js", "/assets/index-BCTr8uu6.js", "/assets/progress-bar-BaTU3Yx_.js", "/assets/pe-ChIwTk8v.js", "/assets/index-DZDhtMuq.js", "/assets/index-Bdg3v8tC.js", "/assets/loading-XhMtj4mp.js", "/assets/user-Bv6wYhQP.js", "/assets/workshop-config-WVltG_BV.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/app": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/app", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout", "path": "app", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/app-DgTXXO8s.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/preview-DaZd0wMb.js", "/assets/components-Be92gVxW.js", "/assets/misc-DUy_whwE.js", "/assets/request-info-ByUEfOil.js", "/assets/button-_qPvcoqR.js", "/assets/loading-XhMtj4mp.js", "/assets/index-Bdg3v8tC.js", "/assets/tooltip-DO9uwurQ.js", "/assets/pe-ChIwTk8v.js", "/assets/progress-bar-BaTU3Yx_.js"], "css": [] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/index": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/index", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/index-Bi1TbRTj.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/tooltip-DO9uwurQ.js", "/assets/index-DZDhtMuq.js", "/assets/misc-DUy_whwE.js", "/assets/diff-8nlDkmpc.js", "/assets/error-boundary-BZA-ffa8.js", "/assets/loading-XhMtj4mp.js", "/assets/discord-BUWZUTEC.js", "/assets/components-Be92gVxW.js", "/assets/index-C9Hx0Dey.js", "/assets/set-playground-CBHBA46B.js", "/assets/tests-DbuyD2cI.js", "/assets/preview-DaZd0wMb.js", "/assets/index-BCTr8uu6.js", "/assets/accordion-D9-D-n9p.js", "/assets/mdx-CEjzXoEx.js", "/assets/epic-video-Bp4BOD2R.js", "/assets/index-Bdg3v8tC.js", "/assets/request-info-ByUEfOil.js", "/assets/pe-ChIwTk8v.js", "/assets/user-Bv6wYhQP.js", "/assets/workshop-config-WVltG_BV.js", "/assets/progress-bar-BaTU3Yx_.js", "/assets/revalidation-ws-dUa9CAqr.js", "/assets/use-event-source-x59d4R2Z.js", "/assets/button-_qPvcoqR.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/test": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/test", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout", "path": "test", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/test-DoKJvNug.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/tests-DbuyD2cI.js", "/assets/components-Be92gVxW.js", "/assets/epic-video-Bp4BOD2R.js", "/assets/index-Bdg3v8tC.js", "/assets/request-info-ByUEfOil.js", "/assets/misc-DUy_whwE.js", "/assets/tooltip-DO9uwurQ.js", "/assets/pe-ChIwTk8v.js", "/assets/loading-XhMtj4mp.js", "/assets/user-Bv6wYhQP.js", "/assets/workshop-config-WVltG_BV.js", "/assets/accordion-D9-D-n9p.js", "/assets/index-DZDhtMuq.js", "/assets/index-BCTr8uu6.js", "/assets/use-event-source-x59d4R2Z.js", "/assets/set-playground-CBHBA46B.js", "/assets/progress-bar-BaTU3Yx_.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.index": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.index", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_exerciseNumber_._stepNumber.index-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/exercise+/$exerciseNumber_.finished": { "id": "routes/_app+/exercise+/$exerciseNumber_.finished", "parentId": "routes/_app+/exercise+/_layout", "path": ":exerciseNumber/finished", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_exerciseNumber_.finished-nbpk1ToO.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/index-BCxBKsqT.js", "/assets/epic-video-Bp4BOD2R.js", "/assets/loading-XhMtj4mp.js", "/assets/nav-chevrons-DnR25VLp.js", "/assets/revalidation-ws-dUa9CAqr.js", "/assets/mdx-CEjzXoEx.js", "/assets/progress-DQt_Bn9o.js", "/assets/misc-DUy_whwE.js", "/assets/seo-pBpFCWsy.js", "/assets/components-Be92gVxW.js", "/assets/index-Bdg3v8tC.js", "/assets/request-info-ByUEfOil.js", "/assets/tooltip-DO9uwurQ.js", "/assets/pe-ChIwTk8v.js", "/assets/user-Bv6wYhQP.js", "/assets/workshop-config-WVltG_BV.js", "/assets/progress-bar-BaTU3Yx_.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/finished": { "id": "routes/_app+/finished", "parentId": "routes/_app+/_layout", "path": "finished", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/finished-C0cpfAFL.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/index-BCxBKsqT.js", "/assets/epic-video-Bp4BOD2R.js", "/assets/loading-XhMtj4mp.js", "/assets/nav-chevrons-DnR25VLp.js", "/assets/revalidation-ws-dUa9CAqr.js", "/assets/mdx-CEjzXoEx.js", "/assets/misc-DUy_whwE.js", "/assets/seo-pBpFCWsy.js", "/assets/progress-DQt_Bn9o.js", "/assets/components-Be92gVxW.js", "/assets/index-Bdg3v8tC.js", "/assets/request-info-ByUEfOil.js", "/assets/tooltip-DO9uwurQ.js", "/assets/pe-ChIwTk8v.js", "/assets/user-Bv6wYhQP.js", "/assets/workshop-config-WVltG_BV.js", "/assets/progress-bar-BaTU3Yx_.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/index": { "id": "routes/_app+/index", "parentId": "routes/_app+/_layout", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/index-Ca4vBON4.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/index-BCxBKsqT.js", "/assets/epic-video-Bp4BOD2R.js", "/assets/error-boundary-BZA-ffa8.js", "/assets/mdx-CEjzXoEx.js", "/assets/misc-DUy_whwE.js", "/assets/progress-DQt_Bn9o.js", "/assets/components-Be92gVxW.js", "/assets/index-Bdg3v8tC.js", "/assets/request-info-ByUEfOil.js", "/assets/tooltip-DO9uwurQ.js", "/assets/pe-ChIwTk8v.js", "/assets/loading-XhMtj4mp.js", "/assets/user-Bv6wYhQP.js", "/assets/workshop-config-WVltG_BV.js", "/assets/progress-bar-BaTU3Yx_.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/login": { "id": "routes/_app+/login", "parentId": "routes/_app+/_layout", "path": "login", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/login-C1oOgi98.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/use-event-source-x59d4R2Z.js", "/assets/button-_qPvcoqR.js", "/assets/loading-XhMtj4mp.js", "/assets/product-DIAmCwmZ.js", "/assets/workshop-config-WVltG_BV.js", "/assets/request-info-ByUEfOil.js", "/assets/components-Be92gVxW.js", "/assets/misc-DUy_whwE.js", "/assets/index-Bdg3v8tC.js", "/assets/tooltip-DO9uwurQ.js", "/assets/pe-ChIwTk8v.js"], "css": [] }, "routes/_app+/support": { "id": "routes/_app+/support", "parentId": "routes/_app+/_layout", "path": "support", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/support-CIz02V_r.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/components-Be92gVxW.js"], "css": [] }, "routes/admin+/_layout": { "id": "routes/admin+/_layout", "parentId": "root", "path": "admin", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_layout-Dfmv2zcn.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/components-Be92gVxW.js"], "css": [] }, "routes/admin+/apps": { "id": "routes/admin+/apps", "parentId": "routes/admin+/_layout", "path": "apps", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/apps-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/admin+/cache": { "id": "routes/admin+/cache", "parentId": "routes/admin+/_layout", "path": "cache", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/cache-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/admin+/index": { "id": "routes/admin+/index", "parentId": "routes/admin+/_layout", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/index-pkiQppkK.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/misc-DUy_whwE.js", "/assets/tooltip-DO9uwurQ.js", "/assets/progress-DQt_Bn9o.js", "/assets/components-Be92gVxW.js", "/assets/pe-ChIwTk8v.js"], "css": [] }, "routes/admin+/version": { "id": "routes/admin+/version", "parentId": "routes/admin+/_layout", "path": "version", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/version-lxUUxt3s.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/workshop-config-WVltG_BV.js", "/assets/components-Be92gVxW.js"], "css": [] }, "routes/apps": { "id": "routes/apps", "parentId": "root", "path": "apps", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/apps-DP2rzg_V.js", "imports": [], "css": [] }, "routes/diff": { "id": "routes/diff", "parentId": "root", "path": "diff", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/diff-BhRAIPKc.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/misc-DUy_whwE.js", "/assets/diff-8nlDkmpc.js", "/assets/nav-chevrons-DnR25VLp.js", "/assets/components-Be92gVxW.js", "/assets/accordion-D9-D-n9p.js", "/assets/tooltip-DO9uwurQ.js", "/assets/index-DZDhtMuq.js", "/assets/index-BCTr8uu6.js", "/assets/mdx-CEjzXoEx.js", "/assets/epic-video-Bp4BOD2R.js", "/assets/index-Bdg3v8tC.js", "/assets/request-info-ByUEfOil.js", "/assets/pe-ChIwTk8v.js", "/assets/loading-XhMtj4mp.js", "/assets/user-Bv6wYhQP.js", "/assets/workshop-config-WVltG_BV.js", "/assets/progress-bar-BaTU3Yx_.js", "/assets/revalidation-ws-dUa9CAqr.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/exercises": { "id": "routes/exercises", "parentId": "root", "path": "exercises", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/exercises-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/launch-editor": { "id": "routes/launch-editor", "parentId": "root", "path": "launch-editor", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/launch-editor-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/login-sse": { "id": "routes/login-sse", "parentId": "root", "path": "login-sse", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/login-sse-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/og": { "id": "routes/og", "parentId": "root", "path": "og", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/og-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/onboarding": { "id": "routes/onboarding", "parentId": "root", "path": "onboarding", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/onboarding-C2YNq60k.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/button-_qPvcoqR.js", "/assets/epic-video-Bp4BOD2R.js", "/assets/components-Be92gVxW.js", "/assets/misc-DUy_whwE.js", "/assets/index-Bdg3v8tC.js", "/assets/request-info-ByUEfOil.js", "/assets/tooltip-DO9uwurQ.js", "/assets/pe-ChIwTk8v.js", "/assets/loading-XhMtj4mp.js", "/assets/user-Bv6wYhQP.js", "/assets/workshop-config-WVltG_BV.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/processes": { "id": "routes/processes", "parentId": "root", "path": "processes", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/processes-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/progress": { "id": "routes/progress", "parentId": "root", "path": "progress", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/progress-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/robots[.]txt": { "id": "routes/robots[.]txt", "parentId": "root", "path": "robots.txt", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/robots_._txt-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/set-playground": { "id": "routes/set-playground", "parentId": "root", "path": "set-playground", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/set-playground-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/sitemap[.]xml": { "id": "routes/sitemap[.]xml", "parentId": "root", "path": "sitemap.xml", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/sitemap_._xml-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/start": { "id": "routes/start", "parentId": "root", "path": "start", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/start-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/test": { "id": "routes/test", "parentId": "root", "path": "test", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/test-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/theme/index": { "id": "routes/theme/index", "parentId": "root", "path": "theme", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/index-DP2rzg_V.js", "imports": [], "css": [] }, "routes/video-player/index": { "id": "routes/video-player/index", "parentId": "root", "path": "video-player", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/index-K6Dvbx-E.js", "imports": [], "css": [] } }, "url": "/assets/manifest-a8336fab.js", "version": "a8336fab" };
|
|
10976
|
+
const serverManifest = { "entry": { "module": "/assets/entry.client-CrlHhRMR.js", "imports": ["/assets/index-C_B1-9rF.js", "/assets/components-DUNtf72c.js"], "css": [] }, "routes": { "root": { "id": "root", "parentId": void 0, "path": "", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/root-Bg-hxaOK.js", "imports": ["/assets/index-C_B1-9rF.js", "/assets/components-DUNtf72c.js", "/assets/misc-DIdEn_jt.js", "/assets/pe-D5h19vSo.js", "/assets/error-boundary-3zItlMUO.js", "/assets/progress-bar-CBDBzRQ2.js", "/assets/index-LjRZeU7x.js", "/assets/tooltip-BoVikCa-.js", "/assets/index-DH1w3QmP.js", "/assets/presence-D1DPz__2.js", "/assets/seo-pBpFCWsy.js", "/assets/request-info-vBkaf3Rk.js"], "css": [] }, "routes/$": { "id": "routes/$", "parentId": "root", "path": "*", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_-hAKYb2AG.js", "imports": ["/assets/index-C_B1-9rF.js", "/assets/error-boundary-3zItlMUO.js", "/assets/misc-DIdEn_jt.js", "/assets/components-DUNtf72c.js"], "css": [] }, "routes/_app+/_layout": { "id": "routes/_app+/_layout", "parentId": "root", "path": void 0, "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_layout-Bu0lel3p.js", "imports": ["/assets/index-C_B1-9rF.js", "/assets/misc-DIdEn_jt.js", "/assets/pe-D5h19vSo.js", "/assets/product-CYOFfeJM.js", "/assets/revalidation-ws-DK5QOPlL.js", "/assets/tooltip-BoVikCa-.js", "/assets/index-CV3nxGFp.js", "/assets/user-CbbIYEs8.js", "/assets/workshop-config-C5sYl312.js", "/assets/presence-D1DPz__2.js", "/assets/progress-D6SP0Gec.js", "/assets/index-DH1w3QmP.js", "/assets/components-DUNtf72c.js", "/assets/request-info-vBkaf3Rk.js"], "css": [] }, "routes/_app+/account": { "id": "routes/_app+/account", "parentId": "routes/_app+/_layout", "path": "account", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/account-DLDPrc9J.js", "imports": ["/assets/index-C_B1-9rF.js", "/assets/button-39zQyNX6.js", "/assets/misc-DIdEn_jt.js", "/assets/tooltip-BoVikCa-.js", "/assets/user-CbbIYEs8.js", "/assets/workshop-config-C5sYl312.js", "/assets/presence-D1DPz__2.js", "/assets/index-BajUQsFT.js", "/assets/components-DUNtf72c.js", "/assets/request-info-vBkaf3Rk.js"], "css": ["/assets/index-DUnRvy1A.css"] }, "routes/_app+/app.$appName+/$": { "id": "routes/_app+/app.$appName+/$", "parentId": "routes/_app+/_layout", "path": "app/:appName/*", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/api.$": { "id": "routes/_app+/app.$appName+/api.$", "parentId": "routes/_app+/_layout", "path": "app/:appName/api/*", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/api._-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/epic_ws[.js]": { "id": "routes/_app+/app.$appName+/epic_ws[.js]", "parentId": "routes/_app+/_layout", "path": "app/:appName/epic_ws.js", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/epic_ws_.js_-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/index": { "id": "routes/_app+/app.$appName+/index", "parentId": "routes/_app+/_layout", "path": "app/:appName/", "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/index-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/test.$testName": { "id": "routes/_app+/app.$appName+/test.$testName", "parentId": "routes/_app+/_layout", "path": "app/:appName/test/:testName", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/test._testName-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/test.epic_ws[.js]": { "id": "routes/_app+/app.$appName+/test.epic_ws[.js]", "parentId": "routes/_app+/_layout", "path": "app/:appName/test/epic_ws.js", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/test.epic_ws_.js_-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.epic_ws[.js]": { "id": "routes/_app+/app.epic_ws[.js]", "parentId": "routes/_app+/_layout", "path": "app/epic_ws.js", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/app.epic_ws_.js_-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/discord": { "id": "routes/_app+/discord", "parentId": "routes/_app+/_layout", "path": "discord", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/discord-CpIgvYus.js", "imports": ["/assets/discord-CEOqKs_c.js", "/assets/index-C_B1-9rF.js", "/assets/misc-DIdEn_jt.js", "/assets/components-DUNtf72c.js", "/assets/user-CbbIYEs8.js", "/assets/workshop-config-C5sYl312.js"], "css": [] }, "routes/_app+/exercise+/_layout": { "id": "routes/_app+/exercise+/_layout", "parentId": "routes/_app+/_layout", "path": "exercise", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_layout-B4JGpA3A.js", "imports": ["/assets/index-C_B1-9rF.js"], "css": [] }, "routes/_app+/exercise+/$exerciseNumber": { "id": "routes/_app+/exercise+/$exerciseNumber", "parentId": "routes/_app+/exercise+/_layout", "path": ":exerciseNumber", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_exerciseNumber-PTdG9GGB.js", "imports": ["/assets/index-C_B1-9rF.js", "/assets/index-CLNXC84j.js", "/assets/epic-video-D8ex9vao.js", "/assets/revalidation-ws-DK5QOPlL.js", "/assets/mdx-C9dqA6IZ.js", "/assets/progress-D6SP0Gec.js", "/assets/misc-DIdEn_jt.js", "/assets/seo-pBpFCWsy.js", "/assets/components-DUNtf72c.js", "/assets/index-DH1w3QmP.js", "/assets/request-info-vBkaf3Rk.js", "/assets/tooltip-BoVikCa-.js", "/assets/pe-D5h19vSo.js", "/assets/index-BajUQsFT.js", "/assets/loading-DW_I206H.js", "/assets/user-CbbIYEs8.js", "/assets/workshop-config-C5sYl312.js", "/assets/progress-bar-CBDBzRQ2.js"], "css": ["/assets/index-DUnRvy1A.css"] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber", "parentId": "routes/_app+/exercise+/_layout", "path": ":exerciseNumber/:stepNumber", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_exerciseNumber_._stepNumber-03erOIGo.js", "imports": ["/assets/index-C_B1-9rF.js", "/assets/misc-DIdEn_jt.js", "/assets/components-DUNtf72c.js"], "css": [] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber", "path": ":type", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_layout-DHoH74NH.js", "imports": ["/assets/index-C_B1-9rF.js", "/assets/index-CLNXC84j.js", "/assets/error-boundary-3zItlMUO.js", "/assets/nav-chevrons-B3SvZV8B.js", "/assets/revalidation-ws-DK5QOPlL.js", "/assets/mdx-C9dqA6IZ.js", "/assets/progress-D6SP0Gec.js", "/assets/set-playground-CMoUFgkO.js", "/assets/seo-pBpFCWsy.js", "/assets/misc-DIdEn_jt.js", "/assets/epic-video-D8ex9vao.js", "/assets/tooltip-BoVikCa-.js", "/assets/request-info-vBkaf3Rk.js", "/assets/components-DUNtf72c.js", "/assets/index-CV3nxGFp.js", "/assets/progress-bar-CBDBzRQ2.js", "/assets/pe-D5h19vSo.js", "/assets/index-DFqQCjCw.js", "/assets/index-DH1w3QmP.js", "/assets/index-BajUQsFT.js", "/assets/loading-DW_I206H.js", "/assets/user-CbbIYEs8.js", "/assets/workshop-config-C5sYl312.js"], "css": ["/assets/index-DUnRvy1A.css"] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/app": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/app", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout", "path": "app", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/app-DJDjmdlu.js", "imports": ["/assets/index-C_B1-9rF.js", "/assets/preview-BEtmdi0E.js", "/assets/components-DUNtf72c.js", "/assets/misc-DIdEn_jt.js", "/assets/request-info-vBkaf3Rk.js", "/assets/button-39zQyNX6.js", "/assets/loading-DW_I206H.js", "/assets/index-DH1w3QmP.js", "/assets/tooltip-BoVikCa-.js", "/assets/pe-D5h19vSo.js", "/assets/progress-bar-CBDBzRQ2.js"], "css": [] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/index": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/index", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/index-DE-jwnOP.js", "imports": ["/assets/index-C_B1-9rF.js", "/assets/tooltip-BoVikCa-.js", "/assets/index-DFqQCjCw.js", "/assets/misc-DIdEn_jt.js", "/assets/diff-BNCREJvf.js", "/assets/error-boundary-3zItlMUO.js", "/assets/loading-DW_I206H.js", "/assets/discord-CEOqKs_c.js", "/assets/components-DUNtf72c.js", "/assets/index-LjRZeU7x.js", "/assets/set-playground-CMoUFgkO.js", "/assets/tests-CiM4RPOf.js", "/assets/preview-BEtmdi0E.js", "/assets/index-CV3nxGFp.js", "/assets/accordion-DLg7gJkp.js", "/assets/mdx-C9dqA6IZ.js", "/assets/epic-video-D8ex9vao.js", "/assets/index-DH1w3QmP.js", "/assets/request-info-vBkaf3Rk.js", "/assets/pe-D5h19vSo.js", "/assets/index-BajUQsFT.js", "/assets/user-CbbIYEs8.js", "/assets/workshop-config-C5sYl312.js", "/assets/progress-bar-CBDBzRQ2.js", "/assets/revalidation-ws-DK5QOPlL.js", "/assets/use-event-source-M87p8Tme.js", "/assets/button-39zQyNX6.js"], "css": ["/assets/index-DUnRvy1A.css"] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/test": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/test", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout", "path": "test", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/test-C8wkLh9a.js", "imports": ["/assets/index-C_B1-9rF.js", "/assets/tests-CiM4RPOf.js", "/assets/components-DUNtf72c.js", "/assets/epic-video-D8ex9vao.js", "/assets/index-DH1w3QmP.js", "/assets/request-info-vBkaf3Rk.js", "/assets/misc-DIdEn_jt.js", "/assets/tooltip-BoVikCa-.js", "/assets/pe-D5h19vSo.js", "/assets/index-BajUQsFT.js", "/assets/loading-DW_I206H.js", "/assets/user-CbbIYEs8.js", "/assets/workshop-config-C5sYl312.js", "/assets/accordion-DLg7gJkp.js", "/assets/index-DFqQCjCw.js", "/assets/index-CV3nxGFp.js", "/assets/use-event-source-M87p8Tme.js", "/assets/set-playground-CMoUFgkO.js", "/assets/progress-bar-CBDBzRQ2.js"], "css": ["/assets/index-DUnRvy1A.css"] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.index": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.index", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_exerciseNumber_._stepNumber.index-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/exercise+/$exerciseNumber_.finished": { "id": "routes/_app+/exercise+/$exerciseNumber_.finished", "parentId": "routes/_app+/exercise+/_layout", "path": ":exerciseNumber/finished", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_exerciseNumber_.finished-DQg4F1NL.js", "imports": ["/assets/index-C_B1-9rF.js", "/assets/index-CLNXC84j.js", "/assets/epic-video-D8ex9vao.js", "/assets/loading-DW_I206H.js", "/assets/nav-chevrons-B3SvZV8B.js", "/assets/revalidation-ws-DK5QOPlL.js", "/assets/mdx-C9dqA6IZ.js", "/assets/progress-D6SP0Gec.js", "/assets/misc-DIdEn_jt.js", "/assets/seo-pBpFCWsy.js", "/assets/components-DUNtf72c.js", "/assets/index-DH1w3QmP.js", "/assets/request-info-vBkaf3Rk.js", "/assets/tooltip-BoVikCa-.js", "/assets/pe-D5h19vSo.js", "/assets/index-BajUQsFT.js", "/assets/user-CbbIYEs8.js", "/assets/workshop-config-C5sYl312.js", "/assets/progress-bar-CBDBzRQ2.js"], "css": ["/assets/index-DUnRvy1A.css"] }, "routes/_app+/finished": { "id": "routes/_app+/finished", "parentId": "routes/_app+/_layout", "path": "finished", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/finished-rUzUjnEm.js", "imports": ["/assets/index-C_B1-9rF.js", "/assets/index-CLNXC84j.js", "/assets/epic-video-D8ex9vao.js", "/assets/loading-DW_I206H.js", "/assets/nav-chevrons-B3SvZV8B.js", "/assets/revalidation-ws-DK5QOPlL.js", "/assets/mdx-C9dqA6IZ.js", "/assets/misc-DIdEn_jt.js", "/assets/seo-pBpFCWsy.js", "/assets/progress-D6SP0Gec.js", "/assets/components-DUNtf72c.js", "/assets/index-DH1w3QmP.js", "/assets/request-info-vBkaf3Rk.js", "/assets/tooltip-BoVikCa-.js", "/assets/pe-D5h19vSo.js", "/assets/index-BajUQsFT.js", "/assets/user-CbbIYEs8.js", "/assets/workshop-config-C5sYl312.js", "/assets/progress-bar-CBDBzRQ2.js"], "css": ["/assets/index-DUnRvy1A.css"] }, "routes/_app+/index": { "id": "routes/_app+/index", "parentId": "routes/_app+/_layout", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/index-mivnjq36.js", "imports": ["/assets/index-C_B1-9rF.js", "/assets/index-CLNXC84j.js", "/assets/epic-video-D8ex9vao.js", "/assets/error-boundary-3zItlMUO.js", "/assets/mdx-C9dqA6IZ.js", "/assets/misc-DIdEn_jt.js", "/assets/progress-D6SP0Gec.js", "/assets/components-DUNtf72c.js", "/assets/index-DH1w3QmP.js", "/assets/request-info-vBkaf3Rk.js", "/assets/tooltip-BoVikCa-.js", "/assets/pe-D5h19vSo.js", "/assets/index-BajUQsFT.js", "/assets/loading-DW_I206H.js", "/assets/user-CbbIYEs8.js", "/assets/workshop-config-C5sYl312.js", "/assets/progress-bar-CBDBzRQ2.js"], "css": ["/assets/index-DUnRvy1A.css"] }, "routes/_app+/login": { "id": "routes/_app+/login", "parentId": "routes/_app+/_layout", "path": "login", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/login-CdNej0Z7.js", "imports": ["/assets/index-C_B1-9rF.js", "/assets/use-event-source-M87p8Tme.js", "/assets/button-39zQyNX6.js", "/assets/loading-DW_I206H.js", "/assets/product-CYOFfeJM.js", "/assets/workshop-config-C5sYl312.js", "/assets/request-info-vBkaf3Rk.js", "/assets/components-DUNtf72c.js", "/assets/misc-DIdEn_jt.js", "/assets/index-DH1w3QmP.js", "/assets/tooltip-BoVikCa-.js", "/assets/pe-D5h19vSo.js"], "css": [] }, "routes/_app+/support": { "id": "routes/_app+/support", "parentId": "routes/_app+/_layout", "path": "support", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/support-CPzYlWkd.js", "imports": ["/assets/index-C_B1-9rF.js", "/assets/components-DUNtf72c.js"], "css": [] }, "routes/admin+/_layout": { "id": "routes/admin+/_layout", "parentId": "root", "path": "admin", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_layout-BJbMl6SJ.js", "imports": ["/assets/index-C_B1-9rF.js", "/assets/components-DUNtf72c.js"], "css": [] }, "routes/admin+/apps": { "id": "routes/admin+/apps", "parentId": "routes/admin+/_layout", "path": "apps", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/apps-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/admin+/cache": { "id": "routes/admin+/cache", "parentId": "routes/admin+/_layout", "path": "cache", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/cache-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/admin+/index": { "id": "routes/admin+/index", "parentId": "routes/admin+/_layout", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/index-DDqzbGM2.js", "imports": ["/assets/index-C_B1-9rF.js", "/assets/misc-DIdEn_jt.js", "/assets/tooltip-BoVikCa-.js", "/assets/progress-D6SP0Gec.js", "/assets/components-DUNtf72c.js", "/assets/pe-D5h19vSo.js"], "css": [] }, "routes/admin+/version": { "id": "routes/admin+/version", "parentId": "routes/admin+/_layout", "path": "version", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/version-CIF3cX3N.js", "imports": ["/assets/index-C_B1-9rF.js", "/assets/workshop-config-C5sYl312.js", "/assets/components-DUNtf72c.js"], "css": [] }, "routes/apps": { "id": "routes/apps", "parentId": "root", "path": "apps", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/apps-DP2rzg_V.js", "imports": [], "css": [] }, "routes/diff": { "id": "routes/diff", "parentId": "root", "path": "diff", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/diff-B3oaU_KB.js", "imports": ["/assets/index-C_B1-9rF.js", "/assets/misc-DIdEn_jt.js", "/assets/diff-BNCREJvf.js", "/assets/nav-chevrons-B3SvZV8B.js", "/assets/components-DUNtf72c.js", "/assets/accordion-DLg7gJkp.js", "/assets/tooltip-BoVikCa-.js", "/assets/index-DFqQCjCw.js", "/assets/index-CV3nxGFp.js", "/assets/mdx-C9dqA6IZ.js", "/assets/epic-video-D8ex9vao.js", "/assets/index-DH1w3QmP.js", "/assets/request-info-vBkaf3Rk.js", "/assets/pe-D5h19vSo.js", "/assets/index-BajUQsFT.js", "/assets/loading-DW_I206H.js", "/assets/user-CbbIYEs8.js", "/assets/workshop-config-C5sYl312.js", "/assets/progress-bar-CBDBzRQ2.js", "/assets/revalidation-ws-DK5QOPlL.js"], "css": ["/assets/index-DUnRvy1A.css"] }, "routes/exercises": { "id": "routes/exercises", "parentId": "root", "path": "exercises", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/exercises-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/launch-editor": { "id": "routes/launch-editor", "parentId": "root", "path": "launch-editor", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/launch-editor-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/login-sse": { "id": "routes/login-sse", "parentId": "root", "path": "login-sse", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/login-sse-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/og": { "id": "routes/og", "parentId": "root", "path": "og", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/og-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/onboarding": { "id": "routes/onboarding", "parentId": "root", "path": "onboarding", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/onboarding-CC9zz4rl.js", "imports": ["/assets/index-C_B1-9rF.js", "/assets/button-39zQyNX6.js", "/assets/epic-video-D8ex9vao.js", "/assets/components-DUNtf72c.js", "/assets/misc-DIdEn_jt.js", "/assets/index-DH1w3QmP.js", "/assets/request-info-vBkaf3Rk.js", "/assets/tooltip-BoVikCa-.js", "/assets/pe-D5h19vSo.js", "/assets/index-BajUQsFT.js", "/assets/loading-DW_I206H.js", "/assets/user-CbbIYEs8.js", "/assets/workshop-config-C5sYl312.js"], "css": ["/assets/index-DUnRvy1A.css"] }, "routes/processes": { "id": "routes/processes", "parentId": "root", "path": "processes", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/processes-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/progress": { "id": "routes/progress", "parentId": "root", "path": "progress", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/progress-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/robots[.]txt": { "id": "routes/robots[.]txt", "parentId": "root", "path": "robots.txt", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/robots_._txt-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/set-playground": { "id": "routes/set-playground", "parentId": "root", "path": "set-playground", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/set-playground-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/sitemap[.]xml": { "id": "routes/sitemap[.]xml", "parentId": "root", "path": "sitemap.xml", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/sitemap_._xml-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/start": { "id": "routes/start", "parentId": "root", "path": "start", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/start-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/test": { "id": "routes/test", "parentId": "root", "path": "test", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/test-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/theme/index": { "id": "routes/theme/index", "parentId": "root", "path": "theme", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/index-DP2rzg_V.js", "imports": [], "css": [] }, "routes/video-player/index": { "id": "routes/video-player/index", "parentId": "root", "path": "video-player", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/index-K6Dvbx-E.js", "imports": [], "css": [] } }, "url": "/assets/manifest-62ea49c4.js", "version": "62ea49c4" };
|
|
10889
10977
|
const mode = "production";
|
|
10890
10978
|
const assetsBuildDirectory = "build/client";
|
|
10891
10979
|
const basename = "/";
|