1904 lines
64 KiB
JavaScript
1904 lines
64 KiB
JavaScript
var __defProp = Object.defineProperty;
|
|
var __export = (target, all) => {
|
|
for (var name in all)
|
|
__defProp(target, name, { get: all[name], enumerable: !0 });
|
|
};
|
|
|
|
// node_modules/@remix-run/dev/dist/config/defaults/entry.server.node.tsx
|
|
var entry_server_node_exports = {};
|
|
__export(entry_server_node_exports, {
|
|
default: () => handleRequest
|
|
});
|
|
import { PassThrough } from "node:stream";
|
|
import { createReadableStreamFromReadable } from "@remix-run/node";
|
|
import { RemixServer } from "@remix-run/react";
|
|
import * as isbotModule from "isbot";
|
|
import { renderToPipeableStream } from "react-dom/server";
|
|
import { jsxDEV } from "react/jsx-dev-runtime";
|
|
var ABORT_DELAY = 5e3;
|
|
function handleRequest(request, responseStatusCode, responseHeaders, remixContext, loadContext) {
|
|
return isBotRequest(request.headers.get("user-agent")) || remixContext.isSpaMode ? handleBotRequest(
|
|
request,
|
|
responseStatusCode,
|
|
responseHeaders,
|
|
remixContext
|
|
) : handleBrowserRequest(
|
|
request,
|
|
responseStatusCode,
|
|
responseHeaders,
|
|
remixContext
|
|
);
|
|
}
|
|
function isBotRequest(userAgent) {
|
|
return userAgent ? "isbot" in isbotModule && typeof isbotModule.isbot == "function" ? isbotModule.isbot(userAgent) : "default" in isbotModule && typeof isbotModule.default == "function" ? isbotModule.default(userAgent) : !1 : !1;
|
|
}
|
|
function handleBotRequest(request, responseStatusCode, responseHeaders, remixContext) {
|
|
return new Promise((resolve, reject) => {
|
|
let shellRendered = !1, { pipe, abort } = renderToPipeableStream(
|
|
/* @__PURE__ */ jsxDEV(
|
|
RemixServer,
|
|
{
|
|
context: remixContext,
|
|
url: request.url,
|
|
abortDelay: ABORT_DELAY
|
|
},
|
|
void 0,
|
|
!1,
|
|
{
|
|
fileName: "node_modules/@remix-run/dev/dist/config/defaults/entry.server.node.tsx",
|
|
lineNumber: 66,
|
|
columnNumber: 7
|
|
},
|
|
this
|
|
),
|
|
{
|
|
onAllReady() {
|
|
shellRendered = !0;
|
|
let body = new PassThrough(), stream = createReadableStreamFromReadable(body);
|
|
responseHeaders.set("Content-Type", "text/html"), resolve(
|
|
new Response(stream, {
|
|
headers: responseHeaders,
|
|
status: responseStatusCode
|
|
})
|
|
), pipe(body);
|
|
},
|
|
onShellError(error) {
|
|
reject(error);
|
|
},
|
|
onError(error) {
|
|
responseStatusCode = 500, shellRendered && console.error(error);
|
|
}
|
|
}
|
|
);
|
|
setTimeout(abort, ABORT_DELAY);
|
|
});
|
|
}
|
|
function handleBrowserRequest(request, responseStatusCode, responseHeaders, remixContext) {
|
|
return new Promise((resolve, reject) => {
|
|
let shellRendered = !1, { pipe, abort } = renderToPipeableStream(
|
|
/* @__PURE__ */ jsxDEV(
|
|
RemixServer,
|
|
{
|
|
context: remixContext,
|
|
url: request.url,
|
|
abortDelay: ABORT_DELAY
|
|
},
|
|
void 0,
|
|
!1,
|
|
{
|
|
fileName: "node_modules/@remix-run/dev/dist/config/defaults/entry.server.node.tsx",
|
|
lineNumber: 116,
|
|
columnNumber: 7
|
|
},
|
|
this
|
|
),
|
|
{
|
|
onShellReady() {
|
|
shellRendered = !0;
|
|
let body = new PassThrough(), stream = createReadableStreamFromReadable(body);
|
|
responseHeaders.set("Content-Type", "text/html"), resolve(
|
|
new Response(stream, {
|
|
headers: responseHeaders,
|
|
status: responseStatusCode
|
|
})
|
|
), pipe(body);
|
|
},
|
|
onShellError(error) {
|
|
reject(error);
|
|
},
|
|
onError(error) {
|
|
responseStatusCode = 500, shellRendered && console.error(error);
|
|
}
|
|
}
|
|
);
|
|
setTimeout(abort, ABORT_DELAY);
|
|
});
|
|
}
|
|
|
|
// app/root.tsx
|
|
var root_exports = {};
|
|
__export(root_exports, {
|
|
default: () => App,
|
|
links: () => links
|
|
});
|
|
|
|
// css-bundle-plugin-ns:@remix-run/css-bundle
|
|
var cssBundleHref = "/build/css-bundle-RYSASN3C.css";
|
|
|
|
// app/root.tsx
|
|
import {
|
|
Links,
|
|
LiveReload,
|
|
Meta,
|
|
Outlet,
|
|
Scripts,
|
|
ScrollRestoration
|
|
} from "@remix-run/react";
|
|
|
|
// app/root.css.ts
|
|
var root = "root_root__o19f1u0";
|
|
|
|
// app/root.tsx
|
|
import { jsxDEV as jsxDEV2 } from "react/jsx-dev-runtime";
|
|
var links = () => [
|
|
{
|
|
rel: "preconnect",
|
|
href: "https://fonts.gstatic.com",
|
|
crossOrigin: "anonymous"
|
|
},
|
|
{
|
|
rel: "preconnect",
|
|
href: "ttps://fonts.googleapis.com",
|
|
crossOrigin: "anonymous"
|
|
},
|
|
{
|
|
rel: "stylesheet",
|
|
href: "https://fonts.googleapis.com/css2?family=Unbounded:wght@700&display=swap"
|
|
},
|
|
...cssBundleHref ? [{ rel: "stylesheet", href: cssBundleHref }] : []
|
|
];
|
|
function App() {
|
|
return /* @__PURE__ */ jsxDEV2("html", { lang: "en", children: [
|
|
/* @__PURE__ */ jsxDEV2("head", { children: [
|
|
/* @__PURE__ */ jsxDEV2("meta", { charSet: "utf-8" }, void 0, !1, {
|
|
fileName: "app/root.tsx",
|
|
lineNumber: 37,
|
|
columnNumber: 9
|
|
}, this),
|
|
/* @__PURE__ */ jsxDEV2("meta", { name: "viewport", content: "width=device-width,initial-scale=1" }, void 0, !1, {
|
|
fileName: "app/root.tsx",
|
|
lineNumber: 38,
|
|
columnNumber: 9
|
|
}, this),
|
|
/* @__PURE__ */ jsxDEV2(Meta, {}, void 0, !1, {
|
|
fileName: "app/root.tsx",
|
|
lineNumber: 39,
|
|
columnNumber: 9
|
|
}, this),
|
|
/* @__PURE__ */ jsxDEV2(Links, {}, void 0, !1, {
|
|
fileName: "app/root.tsx",
|
|
lineNumber: 40,
|
|
columnNumber: 9
|
|
}, this)
|
|
] }, void 0, !0, {
|
|
fileName: "app/root.tsx",
|
|
lineNumber: 36,
|
|
columnNumber: 7
|
|
}, this),
|
|
/* @__PURE__ */ jsxDEV2("body", { className: root, children: [
|
|
/* @__PURE__ */ jsxDEV2(Outlet, {}, void 0, !1, {
|
|
fileName: "app/root.tsx",
|
|
lineNumber: 43,
|
|
columnNumber: 9
|
|
}, this),
|
|
/* @__PURE__ */ jsxDEV2(ScrollRestoration, {}, void 0, !1, {
|
|
fileName: "app/root.tsx",
|
|
lineNumber: 44,
|
|
columnNumber: 9
|
|
}, this),
|
|
/* @__PURE__ */ jsxDEV2(Scripts, {}, void 0, !1, {
|
|
fileName: "app/root.tsx",
|
|
lineNumber: 45,
|
|
columnNumber: 9
|
|
}, this),
|
|
/* @__PURE__ */ jsxDEV2(LiveReload, {}, void 0, !1, {
|
|
fileName: "app/root.tsx",
|
|
lineNumber: 46,
|
|
columnNumber: 9
|
|
}, this)
|
|
] }, void 0, !0, {
|
|
fileName: "app/root.tsx",
|
|
lineNumber: 42,
|
|
columnNumber: 7
|
|
}, this)
|
|
] }, void 0, !0, {
|
|
fileName: "app/root.tsx",
|
|
lineNumber: 35,
|
|
columnNumber: 5
|
|
}, this);
|
|
}
|
|
|
|
// app/routes/debug.components.tsx
|
|
var debug_components_exports = {};
|
|
__export(debug_components_exports, {
|
|
default: () => DebugComponents
|
|
});
|
|
import { useState } from "react";
|
|
|
|
// app/components/faction-bar.tsx
|
|
import { useMemo } from "react";
|
|
|
|
// app/components/faction-bar.css.ts
|
|
var bar = "faction-bar_bar__prieg10", tinyBar = "faction-bar_tinyBar__prieg11", left = "faction-bar_left__prieg12", center = "faction-bar_center__prieg13", right = "faction-bar_right__prieg14";
|
|
|
|
// app/components/faction-bar.tsx
|
|
import { Fragment, jsxDEV as jsxDEV3 } from "react/jsx-dev-runtime";
|
|
var FactionBar = ({
|
|
population: { vs, nc, tr },
|
|
tiny
|
|
}) => {
|
|
let { vsPercent, ncPercent, trPercent } = useMemo(() => {
|
|
let total = nc + vs + tr;
|
|
return {
|
|
vsPercent: Math.round(vs / total * 100) || 0,
|
|
ncPercent: Math.round(nc / total * 100) || 0,
|
|
trPercent: Math.round(tr / total * 100) || 0
|
|
};
|
|
}, [vs, nc, tr]);
|
|
return /* @__PURE__ */ jsxDEV3("div", { className: tiny ? tinyBar : bar, children: [
|
|
/* @__PURE__ */ jsxDEV3("div", { className: left, style: { flexGrow: vs + 1 }, children: tiny ? /* @__PURE__ */ jsxDEV3(Fragment, { children: "\xA0" }, void 0, !1, {
|
|
fileName: "app/components/faction-bar.tsx",
|
|
lineNumber: 23,
|
|
columnNumber: 17
|
|
}, this) : `${vsPercent}%` }, void 0, !1, {
|
|
fileName: "app/components/faction-bar.tsx",
|
|
lineNumber: 22,
|
|
columnNumber: 7
|
|
}, this),
|
|
/* @__PURE__ */ jsxDEV3("div", { className: center, style: { flexGrow: nc + 1 }, children: tiny ? /* @__PURE__ */ jsxDEV3(Fragment, { children: "\xA0" }, void 0, !1, {
|
|
fileName: "app/components/faction-bar.tsx",
|
|
lineNumber: 26,
|
|
columnNumber: 17
|
|
}, this) : `${ncPercent}%` }, void 0, !1, {
|
|
fileName: "app/components/faction-bar.tsx",
|
|
lineNumber: 25,
|
|
columnNumber: 7
|
|
}, this),
|
|
/* @__PURE__ */ jsxDEV3("div", { className: right, style: { flexGrow: tr + 1 }, children: tiny ? /* @__PURE__ */ jsxDEV3(Fragment, { children: "\xA0" }, void 0, !1, {
|
|
fileName: "app/components/faction-bar.tsx",
|
|
lineNumber: 29,
|
|
columnNumber: 17
|
|
}, this) : `${trPercent}%` }, void 0, !1, {
|
|
fileName: "app/components/faction-bar.tsx",
|
|
lineNumber: 28,
|
|
columnNumber: 7
|
|
}, this)
|
|
] }, void 0, !0, {
|
|
fileName: "app/components/faction-bar.tsx",
|
|
lineNumber: 21,
|
|
columnNumber: 5
|
|
}, this);
|
|
};
|
|
|
|
// app/components/faction-pie.css.ts
|
|
var pieRoot = "faction-pie_pieRoot__15tar860";
|
|
|
|
// app/components/faction-pie.tsx
|
|
import { jsxDEV as jsxDEV4 } from "react/jsx-dev-runtime";
|
|
var FactionPie = ({
|
|
population: population3,
|
|
innerMargin,
|
|
innerBackground,
|
|
size
|
|
}) => {
|
|
let { nc, tr, vs } = population3, total = nc + tr + vs, trPct = tr / total * 100, vsPct = vs / total * 100;
|
|
return /* @__PURE__ */ jsxDEV4(
|
|
"div",
|
|
{
|
|
className: pieRoot,
|
|
style: {
|
|
fontSize: size || "1em",
|
|
backgroundImage: `conic-gradient(
|
|
#d30101 0% ${trPct}%,
|
|
#991cba ${trPct}% ${trPct + vsPct}%,
|
|
#1564cc ${trPct + vsPct}% 100%
|
|
)`,
|
|
"--inner-margin": innerMargin ? `${innerMargin}px` : "0",
|
|
"--inner-bg": innerBackground || "none"
|
|
},
|
|
children: "\xA0"
|
|
},
|
|
void 0,
|
|
!1,
|
|
{
|
|
fileName: "app/components/faction-pie.tsx",
|
|
lineNumber: 22,
|
|
columnNumber: 5
|
|
},
|
|
this
|
|
);
|
|
};
|
|
|
|
// app/routes/debug.components.tsx
|
|
import { jsxDEV as jsxDEV5 } from "react/jsx-dev-runtime";
|
|
function DebugComponents() {
|
|
let [population3, setPopulation] = useState({
|
|
nc: 33,
|
|
tr: 33,
|
|
vs: 33
|
|
}), [innerMargin, setInnerMargin] = useState(10), [innerColor, setInnerColor] = useState("black");
|
|
return /* @__PURE__ */ jsxDEV5("div", { children: [
|
|
/* @__PURE__ */ jsxDEV5("h1", { children: "Debug Components" }, void 0, !1, {
|
|
fileName: "app/routes/debug.components.tsx",
|
|
lineNumber: 17,
|
|
columnNumber: 7
|
|
}, this),
|
|
/* @__PURE__ */ jsxDEV5("h2", { children: "Faction Viz" }, void 0, !1, {
|
|
fileName: "app/routes/debug.components.tsx",
|
|
lineNumber: 18,
|
|
columnNumber: 7
|
|
}, this),
|
|
/* @__PURE__ */ jsxDEV5("div", { children: [
|
|
"NC",
|
|
" ",
|
|
/* @__PURE__ */ jsxDEV5(
|
|
"input",
|
|
{
|
|
type: "number",
|
|
value: population3.nc,
|
|
onChange: (e) => setPopulation((p) => ({ ...p, nc: Number(e.target.value) }))
|
|
},
|
|
void 0,
|
|
!1,
|
|
{
|
|
fileName: "app/routes/debug.components.tsx",
|
|
lineNumber: 21,
|
|
columnNumber: 9
|
|
},
|
|
this
|
|
),
|
|
" ",
|
|
"|| TR",
|
|
" ",
|
|
/* @__PURE__ */ jsxDEV5(
|
|
"input",
|
|
{
|
|
type: "number",
|
|
value: population3.tr,
|
|
onChange: (e) => setPopulation((p) => ({ ...p, tr: Number(e.target.value) }))
|
|
},
|
|
void 0,
|
|
!1,
|
|
{
|
|
fileName: "app/routes/debug.components.tsx",
|
|
lineNumber: 29,
|
|
columnNumber: 9
|
|
},
|
|
this
|
|
),
|
|
" ",
|
|
"|| VS",
|
|
" ",
|
|
/* @__PURE__ */ jsxDEV5(
|
|
"input",
|
|
{
|
|
type: "number",
|
|
value: population3.vs,
|
|
onChange: (e) => setPopulation((p) => ({ ...p, vs: Number(e.target.value) }))
|
|
},
|
|
void 0,
|
|
!1,
|
|
{
|
|
fileName: "app/routes/debug.components.tsx",
|
|
lineNumber: 37,
|
|
columnNumber: 9
|
|
},
|
|
this
|
|
)
|
|
] }, void 0, !0, {
|
|
fileName: "app/routes/debug.components.tsx",
|
|
lineNumber: 19,
|
|
columnNumber: 7
|
|
}, this),
|
|
/* @__PURE__ */ jsxDEV5("div", { children: [
|
|
/* @__PURE__ */ jsxDEV5("h3", { children: "Horizontal Stacked Bar Chart" }, void 0, !1, {
|
|
fileName: "app/routes/debug.components.tsx",
|
|
lineNumber: 46,
|
|
columnNumber: 9
|
|
}, this),
|
|
/* @__PURE__ */ jsxDEV5(FactionBar, { population: population3 }, void 0, !1, {
|
|
fileName: "app/routes/debug.components.tsx",
|
|
lineNumber: 47,
|
|
columnNumber: 9
|
|
}, this),
|
|
/* @__PURE__ */ jsxDEV5("h3", { children: "Pie Chart" }, void 0, !1, {
|
|
fileName: "app/routes/debug.components.tsx",
|
|
lineNumber: 48,
|
|
columnNumber: 9
|
|
}, this),
|
|
/* @__PURE__ */ jsxDEV5("div", { style: { fontSize: "5rem" }, children: [
|
|
/* @__PURE__ */ jsxDEV5(FactionPie, { population: population3 }, void 0, !1, {
|
|
fileName: "app/routes/debug.components.tsx",
|
|
lineNumber: 50,
|
|
columnNumber: 11
|
|
}, this),
|
|
/* @__PURE__ */ jsxDEV5(
|
|
FactionPie,
|
|
{
|
|
population: population3,
|
|
innerBackground: innerColor,
|
|
innerMargin
|
|
},
|
|
void 0,
|
|
!1,
|
|
{
|
|
fileName: "app/routes/debug.components.tsx",
|
|
lineNumber: 51,
|
|
columnNumber: 11
|
|
},
|
|
this
|
|
)
|
|
] }, void 0, !0, {
|
|
fileName: "app/routes/debug.components.tsx",
|
|
lineNumber: 49,
|
|
columnNumber: 9
|
|
}, this),
|
|
"Inner margin",
|
|
" ",
|
|
/* @__PURE__ */ jsxDEV5(
|
|
"input",
|
|
{
|
|
type: "number",
|
|
value: innerMargin,
|
|
onChange: (e) => setInnerMargin(Number(e.target.value))
|
|
},
|
|
void 0,
|
|
!1,
|
|
{
|
|
fileName: "app/routes/debug.components.tsx",
|
|
lineNumber: 58,
|
|
columnNumber: 9
|
|
},
|
|
this
|
|
),
|
|
"Inner color",
|
|
" ",
|
|
/* @__PURE__ */ jsxDEV5(
|
|
"input",
|
|
{
|
|
type: "color",
|
|
value: innerColor,
|
|
onChange: (e) => setInnerColor(e.target.value)
|
|
},
|
|
void 0,
|
|
!1,
|
|
{
|
|
fileName: "app/routes/debug.components.tsx",
|
|
lineNumber: 64,
|
|
columnNumber: 9
|
|
},
|
|
this
|
|
)
|
|
] }, void 0, !0, {
|
|
fileName: "app/routes/debug.components.tsx",
|
|
lineNumber: 45,
|
|
columnNumber: 7
|
|
}, this)
|
|
] }, void 0, !0, {
|
|
fileName: "app/routes/debug.components.tsx",
|
|
lineNumber: 16,
|
|
columnNumber: 5
|
|
}, this);
|
|
}
|
|
|
|
// app/routes/worlds.$id.tsx
|
|
var worlds_id_exports = {};
|
|
__export(worlds_id_exports, {
|
|
default: () => World,
|
|
loader: () => loader,
|
|
meta: () => meta
|
|
});
|
|
import { json } from "@remix-run/cloudflare";
|
|
import { useLoaderData } from "@remix-run/react";
|
|
|
|
// app/components/footer.tsx
|
|
import { Link } from "@remix-run/react";
|
|
|
|
// app/components/footer.css.ts
|
|
var root2 = "footer_root__1a7dndp0", background = "footer_background__1a7dndp1", logo = "footer_logo__1a7dndp2";
|
|
var logoLive = "footer_logoLive__1a7dndp4", logoDot = "footer_logoDot__1a7dndp5", lowerLogo = "footer_lowerLogo__1a7dndp6", link = "footer_link__1a7dndp7";
|
|
|
|
// app/components/footer.tsx
|
|
import { jsxDEV as jsxDEV6 } from "react/jsx-dev-runtime";
|
|
var Footer = ({ isMainPage }) => /* @__PURE__ */ jsxDEV6("footer", { children: /* @__PURE__ */ jsxDEV6("div", { className: root2, children: [
|
|
/* @__PURE__ */ jsxDEV6("div", { className: background }, void 0, !1, {
|
|
fileName: "app/components/footer.tsx",
|
|
lineNumber: 7,
|
|
columnNumber: 7
|
|
}, this),
|
|
/* @__PURE__ */ jsxDEV6("div", { className: logo, children: [
|
|
"PS2",
|
|
/* @__PURE__ */ jsxDEV6("div", { className: logoDot }, void 0, !1, {
|
|
fileName: "app/components/footer.tsx",
|
|
lineNumber: 10,
|
|
columnNumber: 9
|
|
}, this),
|
|
/* @__PURE__ */ jsxDEV6("span", { className: logoLive, children: "LIVE" }, void 0, !1, {
|
|
fileName: "app/components/footer.tsx",
|
|
lineNumber: 11,
|
|
columnNumber: 9
|
|
}, this),
|
|
/* @__PURE__ */ jsxDEV6("div", { className: lowerLogo, children: [
|
|
/* @__PURE__ */ jsxDEV6("div", { children: isMainPage ? /* @__PURE__ */ jsxDEV6(Link, { className: link, to: "/about", children: "more stuff \xBB" }, void 0, !1, {
|
|
fileName: "app/components/footer.tsx",
|
|
lineNumber: 15,
|
|
columnNumber: 11
|
|
}, this) : /* @__PURE__ */ jsxDEV6(Link, { className: link, to: "/", children: "less stuff \xBB" }, void 0, !1, {
|
|
fileName: "app/components/footer.tsx",
|
|
lineNumber: 19,
|
|
columnNumber: 11
|
|
}, this) }, void 0, !1, {
|
|
fileName: "app/components/footer.tsx",
|
|
lineNumber: 13,
|
|
columnNumber: 11
|
|
}, this),
|
|
/* @__PURE__ */ jsxDEV6("div", { children: [
|
|
"\xA9 ",
|
|
(/* @__PURE__ */ new Date()).getFullYear()
|
|
] }, void 0, !0, {
|
|
fileName: "app/components/footer.tsx",
|
|
lineNumber: 24,
|
|
columnNumber: 11
|
|
}, this)
|
|
] }, void 0, !0, {
|
|
fileName: "app/components/footer.tsx",
|
|
lineNumber: 12,
|
|
columnNumber: 9
|
|
}, this)
|
|
] }, void 0, !0, {
|
|
fileName: "app/components/footer.tsx",
|
|
lineNumber: 8,
|
|
columnNumber: 7
|
|
}, this)
|
|
] }, void 0, !0, {
|
|
fileName: "app/components/footer.tsx",
|
|
lineNumber: 6,
|
|
columnNumber: 5
|
|
}, this) }, void 0, !1, {
|
|
fileName: "app/components/footer.tsx",
|
|
lineNumber: 5,
|
|
columnNumber: 1
|
|
}, this);
|
|
|
|
// app/utils/metagame.ts
|
|
var fetchMetagameWorlds = async () => await (await fetch("https://metagame.ps2.live/all")).json(), fetchSingleMetagameWorld = async (id) => await (await fetch(`https://metagame.ps2.live/${id}`)).json();
|
|
|
|
// app/utils/saerro.ts
|
|
var saerroFetch = async (query) => (await (await fetch(
|
|
`https://saerro.ps2.live/graphql?query=${query}`,
|
|
{
|
|
cf: {
|
|
cacheTtl: 60
|
|
}
|
|
}
|
|
)).json()).data, allVehicles = [
|
|
"flash",
|
|
"sunderer",
|
|
"lightning",
|
|
"scythe",
|
|
"vanguard",
|
|
"prowler",
|
|
"reaver",
|
|
"mosquito",
|
|
"galaxy",
|
|
"valkyrie",
|
|
"liberator",
|
|
"ant",
|
|
"harasser",
|
|
"dervish",
|
|
"chimera",
|
|
"javelin",
|
|
"corsair",
|
|
"magrider"
|
|
], allClasses = [
|
|
"infiltrator",
|
|
"lightAssault",
|
|
"combatMedic",
|
|
"engineer",
|
|
"heavyAssault",
|
|
"max"
|
|
], worldQuery = async (worldID) => {
|
|
let query = `{
|
|
world(by: {id: ${Number(worldID)}}) {
|
|
id
|
|
population {
|
|
nc
|
|
tr
|
|
vs
|
|
}
|
|
zones {
|
|
all {
|
|
id
|
|
classes {
|
|
${allClasses.map((cls) => `${cls} { total nc tr vs }`).join(" ")}
|
|
}
|
|
vehicles {
|
|
total
|
|
${allVehicles.map((vehicle) => `${vehicle} { total nc tr vs }`).join(" ")}
|
|
}
|
|
population {
|
|
nc
|
|
tr
|
|
vs
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}`;
|
|
return await saerroFetch(query);
|
|
}, totalPopulation = ({ nc, vs, tr }) => nc + vs + tr;
|
|
|
|
// app/utils/strings.ts
|
|
var toTitleCase = (str) => str.replace(/\w\S*/g, (txt) => txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase()), pascalCaseToTitleCase = (str) => toTitleCase(str.replace(/([A-Z])/g, " $1")), snakeCaseToTitleCase = (str) => toTitleCase(str.replace(/_/g, " ")), humanTimeAgo = (ms, full) => {
|
|
let millis = Math.floor(ms % 1e3), seconds = Math.floor(ms / 1e3), minutes = Math.floor(seconds / 60), hours = Math.floor(minutes / 60);
|
|
return hours > 0 ? full ? `${hours}h ${minutes % 60}m ${seconds % 60}s` : `${hours}h` : minutes > 0 ? full ? `${minutes}m ${seconds % 60}s` : `${minutes}m` : seconds > 0 ? `${seconds}s` : `${millis}ms`;
|
|
}, worlds = {
|
|
1: {
|
|
name: "Connery",
|
|
timeZone: "America/Los_Angeles",
|
|
locale: "en-US",
|
|
location: "US-W",
|
|
platform: "PC"
|
|
},
|
|
10: {
|
|
name: "Miller",
|
|
timeZone: "UTC",
|
|
locale: "en-GB",
|
|
location: "EU",
|
|
platform: "PC"
|
|
},
|
|
13: {
|
|
name: "Cobalt",
|
|
timeZone: "UTC",
|
|
locale: "en-GB",
|
|
location: "EU",
|
|
platform: "PC"
|
|
},
|
|
17: {
|
|
name: "Emerald",
|
|
timeZone: "America/New_York",
|
|
locale: "en-US",
|
|
location: "US-E",
|
|
platform: "PC"
|
|
},
|
|
19: {
|
|
name: "Jaeger",
|
|
timeZone: "America/New_York",
|
|
locale: "en-US",
|
|
location: "US-E",
|
|
platform: "PC"
|
|
},
|
|
40: {
|
|
name: "SolTech",
|
|
timeZone: "Asia/Tokyo",
|
|
locale: "en-GB",
|
|
location: "JP",
|
|
platform: "PC"
|
|
},
|
|
1e3: {
|
|
name: "Genudine",
|
|
timeZone: "America/New_York",
|
|
locale: "en-US",
|
|
location: "US-E",
|
|
platform: "PS4"
|
|
},
|
|
2e3: {
|
|
name: "Ceres",
|
|
timeZone: "UTC",
|
|
locale: "en-GB",
|
|
location: "EU",
|
|
platform: "PS4"
|
|
},
|
|
default: {
|
|
name: "Unknown",
|
|
timeZone: "UTC",
|
|
locale: "en-US",
|
|
location: "???",
|
|
platform: "???"
|
|
}
|
|
}, zones = {
|
|
2: {
|
|
name: "Indar",
|
|
colors: ["#edb96b", "#964c2f"]
|
|
},
|
|
4: {
|
|
name: "Hossin",
|
|
colors: ["#47570d", "#7b9c05"]
|
|
},
|
|
6: {
|
|
name: "Amerish",
|
|
colors: ["#87a12a", "#5f634f"]
|
|
},
|
|
8: {
|
|
name: "Esamir",
|
|
colors: ["#d5f3f5", "#a1c7e6"]
|
|
},
|
|
344: {
|
|
name: "Oshur",
|
|
colors: ["#00c2bf", "#174185"]
|
|
},
|
|
default: {
|
|
name: "Unknown",
|
|
colors: ["#111111", "#cccccc"]
|
|
}
|
|
};
|
|
|
|
// app/components/world.css.ts
|
|
var headerFont = "world_headerFont__cpwhdm0", header = "world_header__cpwhdm1", headerName = "world_headerName__cpwhdm2", headerSub = "world_headerSub__cpwhdm3", outer = "world_outer__cpwhdm4", population = "world_population__cpwhdm5", populationHead = "world_populationHead__cpwhdm6", popNumbers = "world_popNumbers__cpwhdm7", popItem = "world_popItem__cpwhdm8", totalPop = "world_totalPop__cpwhdm9", headerConts = "world_headerConts__cpwhdma";
|
|
var cont = "world_cont__cpwhdmc", contSub = "world_contSub__cpwhdmd";
|
|
|
|
// app/utils/classes.ts
|
|
var c = (...args) => args.filter((x) => !!x).join(" ");
|
|
|
|
// app/components/index-world.css.ts
|
|
var container = "index-world_container__1e3z7iu0", header2 = "index-world_header__1e3z7iu1", headerName2 = "index-world_headerName__1e3z7iu2", headerDetailsLink = "index-world_headerDetailsLink__1e3z7iu3", headerMarkers = "index-world_headerMarkers__1e3z7iu4";
|
|
var details = "index-world_details__1e3z7iu6", population2 = "index-world_population__1e3z7iu7", popFaction = "index-world_popFaction__1e3z7iu8", popImage = "index-world_popImage__1e3z7iu9", totalPop2 = "index-world_totalPop__1e3z7iua", continent = "index-world_continent__1e3z7iub", contBars = "index-world_contBars__1e3z7iuc", contBarTitle = "index-world_contBarTitle__1e3z7iud", barSeparator = "index-world_barSeparator__1e3z7iue", contCircle = "index-world_contCircle__1e3z7iuf", contName = "index-world_contName__1e3z7iug", jaegerConts = "index-world_jaegerConts__1e3z7iuh";
|
|
var nextCont = "index-world_nextCont__1e3z7ium", nextContText = "index-world_nextContText__1e3z7iun", oopsies = "index-world_oopsies__1e3z7iuo", oopsiesSpin = "index-world_oopsiesSpin__1e3z7iuq";
|
|
|
|
// app/images/vs-100.png
|
|
var vs_100_default = "/build/_assets/vs-100-5TO3XQQ2.png";
|
|
|
|
// app/images/nc-100.png
|
|
var nc_100_default = "/build/_assets/nc-100-22JVQEND.png";
|
|
|
|
// app/images/tr-100.png
|
|
var tr_100_default = "/build/_assets/tr-100-MTGS5ODT.png";
|
|
|
|
// app/components/alert-timer.tsx
|
|
import { useEffect, useState as useState2 } from "react";
|
|
|
|
// app/components/alert-timer.css.ts
|
|
var alertDot = "alert-timer_alertDot__eh4xj51", timer = "alert-timer_timer__eh4xj52";
|
|
|
|
// app/components/alert-timer.tsx
|
|
import { Fragment as Fragment2, jsxDEV as jsxDEV7 } from "react/jsx-dev-runtime";
|
|
var endTime = (alert) => {
|
|
let alertDurationMins = 90;
|
|
switch (alert.alert_type) {
|
|
case "air":
|
|
alertDurationMins = 30;
|
|
break;
|
|
case "sudden_death":
|
|
case "max":
|
|
alertDurationMins = 15;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
return new Date(alert.start_time).getTime() + alertDurationMins * 60 * 1e3;
|
|
}, timeLeftString = (alert) => {
|
|
if (alert) {
|
|
let time = endTime(alert) - Date.now();
|
|
if (time < 2e3)
|
|
return /* @__PURE__ */ jsxDEV7(Fragment2, { children: "JUST ENDED" }, void 0, !1, {
|
|
fileName: "app/components/alert-timer.tsx",
|
|
lineNumber: 30,
|
|
columnNumber: 14
|
|
}, this);
|
|
let speed = time < 1e3 * 60 * 15 ? "1s" : "4s";
|
|
return /* @__PURE__ */ jsxDEV7(Fragment2, { children: [
|
|
humanTimeAgo(time, !0).toUpperCase(),
|
|
" LEFT",
|
|
" ",
|
|
/* @__PURE__ */ jsxDEV7(
|
|
"div",
|
|
{
|
|
className: alertDot,
|
|
style: { "--speed": speed }
|
|
},
|
|
void 0,
|
|
!1,
|
|
{
|
|
fileName: "app/components/alert-timer.tsx",
|
|
lineNumber: 38,
|
|
columnNumber: 9
|
|
},
|
|
this
|
|
)
|
|
] }, void 0, !0, {
|
|
fileName: "app/components/alert-timer.tsx",
|
|
lineNumber: 36,
|
|
columnNumber: 7
|
|
}, this);
|
|
} else
|
|
return /* @__PURE__ */ jsxDEV7(Fragment2, {}, void 0, !1, {
|
|
fileName: "app/components/alert-timer.tsx",
|
|
lineNumber: 45,
|
|
columnNumber: 12
|
|
}, this);
|
|
}, AlertTimer = ({
|
|
alert
|
|
}) => {
|
|
let [timeLeft, setTimeLeft] = useState2(timeLeftString(alert));
|
|
return useEffect(() => {
|
|
if (alert) {
|
|
let interval = setInterval(() => {
|
|
setTimeLeft(timeLeftString(alert));
|
|
}, 1e3);
|
|
return () => clearInterval(interval);
|
|
}
|
|
}, [alert]), /* @__PURE__ */ jsxDEV7("div", { className: timer, children: timeLeft }, void 0, !1, {
|
|
fileName: "app/components/alert-timer.tsx",
|
|
lineNumber: 65,
|
|
columnNumber: 10
|
|
}, this);
|
|
};
|
|
|
|
// app/utils/sorting.ts
|
|
var contPrioritySort = (a, b) => a.locked && !b.locked ? 1 : !a.locked && b.locked ? -1 : a.alert && b.alert ? Date.parse(a.alert.start_time) - Date.parse(b.alert.start_time) : a.alert ? -1 : b.alert ? 1 : a.locked_since && b.locked_since ? Date.parse(a.locked_since) - Date.parse(b.locked_since) : a.locked_since ? -1 : b.locked_since ? 1 : 0;
|
|
|
|
// app/routes/worlds.$id.tsx
|
|
import { Fragment as Fragment3, jsxDEV as jsxDEV8 } from "react/jsx-dev-runtime";
|
|
async function loader({ params }) {
|
|
let [saerro, metagame] = await Promise.all(
|
|
[
|
|
worldQuery(params.id),
|
|
fetchSingleMetagameWorld(params.id)
|
|
]
|
|
);
|
|
return json({ saerro, metagame, id: params.id });
|
|
}
|
|
var meta = ({ data }) => {
|
|
let { saerro, id } = data, date = /* @__PURE__ */ new Date(), worldInfo = worlds[String(id || "default")], datetimeHumanFriendly = date.toLocaleString(worldInfo.locale, {
|
|
timeZone: worldInfo.timeZone,
|
|
dateStyle: "medium",
|
|
timeStyle: "short"
|
|
});
|
|
return [
|
|
{
|
|
title: `${worldInfo.name || "Unknown world"} | PlanetSide 2 Live Population Stats`
|
|
},
|
|
{
|
|
name: "description",
|
|
content: `${worldInfo.name} currently has ${totalPopulation(
|
|
saerro.world.population
|
|
)} players online as of ${datetimeHumanFriendly} ${worldInfo.name} time. VS: ${saerro.world.population.vs}, NC: ${saerro.world.population.nc}, TR: ${saerro.world.population.tr} -- See more detailed stats on ps2.live.`
|
|
}
|
|
];
|
|
};
|
|
function World() {
|
|
let {
|
|
saerro: { world },
|
|
id,
|
|
metagame
|
|
} = useLoaderData(), worldInfo = worlds[String(id || "default")], nextZoneID = metagame.zones.length !== 0 ? metagame.zones.sort(
|
|
(a, b) => new Date(a.locked_since ?? Date.now()).getTime() - new Date(b.locked_since ?? Date.now()).getTime()
|
|
)[0].id : 0;
|
|
return /* @__PURE__ */ jsxDEV8(Fragment3, { children: [
|
|
/* @__PURE__ */ jsxDEV8("div", { className: outer, children: /* @__PURE__ */ jsxDEV8("div", { children: [
|
|
/* @__PURE__ */ jsxDEV8("div", { className: header, children: [
|
|
/* @__PURE__ */ jsxDEV8("div", { className: c(headerName, headerFont), children: [
|
|
/* @__PURE__ */ jsxDEV8("div", { children: worldInfo.name.toUpperCase() }, void 0, !1, {
|
|
fileName: "app/routes/worlds.$id.tsx",
|
|
lineNumber: 98,
|
|
columnNumber: 15
|
|
}, this),
|
|
/* @__PURE__ */ jsxDEV8("div", { className: headerSub, children: [
|
|
"[",
|
|
worldInfo.location,
|
|
"] [",
|
|
worldInfo.platform,
|
|
"]"
|
|
] }, void 0, !0, {
|
|
fileName: "app/routes/worlds.$id.tsx",
|
|
lineNumber: 99,
|
|
columnNumber: 15
|
|
}, this)
|
|
] }, void 0, !0, {
|
|
fileName: "app/routes/worlds.$id.tsx",
|
|
lineNumber: 97,
|
|
columnNumber: 13
|
|
}, this),
|
|
/* @__PURE__ */ jsxDEV8("div", { className: populationHead, children: [
|
|
/* @__PURE__ */ jsxDEV8("div", { className: headerFont, children: [
|
|
/* @__PURE__ */ jsxDEV8("div", { className: totalPop, children: totalPopulation(world.population).toLocaleString() }, void 0, !1, {
|
|
fileName: "app/routes/worlds.$id.tsx",
|
|
lineNumber: 105,
|
|
columnNumber: 17
|
|
}, this),
|
|
"PLAYERS"
|
|
] }, void 0, !0, {
|
|
fileName: "app/routes/worlds.$id.tsx",
|
|
lineNumber: 104,
|
|
columnNumber: 15
|
|
}, this),
|
|
/* @__PURE__ */ jsxDEV8("div", { className: population, children: [
|
|
/* @__PURE__ */ jsxDEV8("div", { className: popNumbers, children: [
|
|
/* @__PURE__ */ jsxDEV8(
|
|
"div",
|
|
{
|
|
className: popItem,
|
|
style: { flex: world.population.vs + 1 },
|
|
children: [
|
|
/* @__PURE__ */ jsxDEV8("img", { className: popImage, src: vs_100_default, alt: "VS" }, void 0, !1, {
|
|
fileName: "app/routes/worlds.$id.tsx",
|
|
lineNumber: 116,
|
|
columnNumber: 21
|
|
}, this),
|
|
" ",
|
|
world.population.vs
|
|
]
|
|
},
|
|
void 0,
|
|
!0,
|
|
{
|
|
fileName: "app/routes/worlds.$id.tsx",
|
|
lineNumber: 112,
|
|
columnNumber: 19
|
|
},
|
|
this
|
|
),
|
|
/* @__PURE__ */ jsxDEV8(
|
|
"div",
|
|
{
|
|
className: popItem,
|
|
style: { flex: world.population.nc + 1 },
|
|
children: [
|
|
/* @__PURE__ */ jsxDEV8("img", { className: popImage, src: nc_100_default, alt: "NC" }, void 0, !1, {
|
|
fileName: "app/routes/worlds.$id.tsx",
|
|
lineNumber: 123,
|
|
columnNumber: 21
|
|
}, this),
|
|
" ",
|
|
world.population.nc
|
|
]
|
|
},
|
|
void 0,
|
|
!0,
|
|
{
|
|
fileName: "app/routes/worlds.$id.tsx",
|
|
lineNumber: 119,
|
|
columnNumber: 19
|
|
},
|
|
this
|
|
),
|
|
/* @__PURE__ */ jsxDEV8(
|
|
"div",
|
|
{
|
|
className: popItem,
|
|
style: { flex: world.population.tr + 1 },
|
|
children: [
|
|
/* @__PURE__ */ jsxDEV8("img", { className: popImage, src: tr_100_default, alt: "TR" }, void 0, !1, {
|
|
fileName: "app/routes/worlds.$id.tsx",
|
|
lineNumber: 130,
|
|
columnNumber: 21
|
|
}, this),
|
|
" ",
|
|
world.population.tr
|
|
]
|
|
},
|
|
void 0,
|
|
!0,
|
|
{
|
|
fileName: "app/routes/worlds.$id.tsx",
|
|
lineNumber: 126,
|
|
columnNumber: 19
|
|
},
|
|
this
|
|
)
|
|
] }, void 0, !0, {
|
|
fileName: "app/routes/worlds.$id.tsx",
|
|
lineNumber: 111,
|
|
columnNumber: 17
|
|
}, this),
|
|
/* @__PURE__ */ jsxDEV8(FactionBar, { population: world.population }, void 0, !1, {
|
|
fileName: "app/routes/worlds.$id.tsx",
|
|
lineNumber: 134,
|
|
columnNumber: 17
|
|
}, this)
|
|
] }, void 0, !0, {
|
|
fileName: "app/routes/worlds.$id.tsx",
|
|
lineNumber: 110,
|
|
columnNumber: 15
|
|
}, this)
|
|
] }, void 0, !0, {
|
|
fileName: "app/routes/worlds.$id.tsx",
|
|
lineNumber: 103,
|
|
columnNumber: 13
|
|
}, this),
|
|
/* @__PURE__ */ jsxDEV8("div", { className: headerConts, children: [
|
|
/* @__PURE__ */ jsxDEV8("div", { className: headerSub, children: "CONTINENT CONTROL" }, void 0, !1, {
|
|
fileName: "app/routes/worlds.$id.tsx",
|
|
lineNumber: 138,
|
|
columnNumber: 15
|
|
}, this),
|
|
metagame.zones.sort(contPrioritySort).map((zone, idx) => {
|
|
let zoneInfo = zones[String(zone.id)];
|
|
return /* @__PURE__ */ jsxDEV8("div", { className: cont, children: [
|
|
/* @__PURE__ */ jsxDEV8("div", { style: { flex: 0 }, children: zoneInfo.name.toUpperCase() }, void 0, !1, {
|
|
fileName: "app/routes/worlds.$id.tsx",
|
|
lineNumber: 143,
|
|
columnNumber: 21
|
|
}, this),
|
|
/* @__PURE__ */ jsxDEV8("div", { style: { flex: 1 }, children: /* @__PURE__ */ jsxDEV8(
|
|
FactionPie,
|
|
{
|
|
size: "4rem",
|
|
population: zone.alert?.percentages ?? zone.territory,
|
|
innerBackground: `linear-gradient(45deg, ${zoneInfo.colors[0]}, ${zoneInfo.colors[1]})`,
|
|
innerMargin: 10
|
|
},
|
|
void 0,
|
|
!1,
|
|
{
|
|
fileName: "app/routes/worlds.$id.tsx",
|
|
lineNumber: 145,
|
|
columnNumber: 23
|
|
},
|
|
this
|
|
) }, void 0, !1, {
|
|
fileName: "app/routes/worlds.$id.tsx",
|
|
lineNumber: 144,
|
|
columnNumber: 21
|
|
}, this),
|
|
/* @__PURE__ */ jsxDEV8("div", { className: contSub, children: zone.alert ? /* @__PURE__ */ jsxDEV8(AlertTimer, { alert: zone.alert }, void 0, !1, {
|
|
fileName: "app/routes/worlds.$id.tsx",
|
|
lineNumber: 154,
|
|
columnNumber: 23
|
|
}, this) : zone.locked ? nextZoneID == zone.id ? /* @__PURE__ */ jsxDEV8(Fragment3, { children: "NEXT UP \xBB" }, void 0, !1, {
|
|
fileName: "app/routes/worlds.$id.tsx",
|
|
lineNumber: 157,
|
|
columnNumber: 23
|
|
}, this) : /* @__PURE__ */ jsxDEV8(Fragment3, { children: "LOCKED" }, void 0, !1, {
|
|
fileName: "app/routes/worlds.$id.tsx",
|
|
lineNumber: 159,
|
|
columnNumber: 23
|
|
}, this) : /* @__PURE__ */ jsxDEV8(Fragment3, { children: "UNLOCKED" }, void 0, !1, {
|
|
fileName: "app/routes/worlds.$id.tsx",
|
|
lineNumber: 162,
|
|
columnNumber: 23
|
|
}, this) }, void 0, !1, {
|
|
fileName: "app/routes/worlds.$id.tsx",
|
|
lineNumber: 152,
|
|
columnNumber: 21
|
|
}, this)
|
|
] }, idx, !0, {
|
|
fileName: "app/routes/worlds.$id.tsx",
|
|
lineNumber: 142,
|
|
columnNumber: 19
|
|
}, this);
|
|
})
|
|
] }, void 0, !0, {
|
|
fileName: "app/routes/worlds.$id.tsx",
|
|
lineNumber: 137,
|
|
columnNumber: 13
|
|
}, this)
|
|
] }, void 0, !0, {
|
|
fileName: "app/routes/worlds.$id.tsx",
|
|
lineNumber: 96,
|
|
columnNumber: 11
|
|
}, this),
|
|
/* @__PURE__ */ jsxDEV8("div", { children: [
|
|
/* @__PURE__ */ jsxDEV8("h2", { children: "Continents" }, void 0, !1, {
|
|
fileName: "app/routes/worlds.$id.tsx",
|
|
lineNumber: 171,
|
|
columnNumber: 13
|
|
}, this),
|
|
world.zones.all.map(
|
|
(zone) => /* @__PURE__ */ jsxDEV8(ZoneInfo, { zone }, zone.id, !1, {
|
|
fileName: "app/routes/worlds.$id.tsx",
|
|
lineNumber: 173,
|
|
columnNumber: 13
|
|
}, this)
|
|
)
|
|
] }, void 0, !0, {
|
|
fileName: "app/routes/worlds.$id.tsx",
|
|
lineNumber: 170,
|
|
columnNumber: 11
|
|
}, this)
|
|
] }, void 0, !0, {
|
|
fileName: "app/routes/worlds.$id.tsx",
|
|
lineNumber: 95,
|
|
columnNumber: 9
|
|
}, this) }, void 0, !1, {
|
|
fileName: "app/routes/worlds.$id.tsx",
|
|
lineNumber: 94,
|
|
columnNumber: 7
|
|
}, this),
|
|
/* @__PURE__ */ jsxDEV8(Footer, { isMainPage: !0 }, void 0, !1, {
|
|
fileName: "app/routes/worlds.$id.tsx",
|
|
lineNumber: 178,
|
|
columnNumber: 7
|
|
}, this)
|
|
] }, void 0, !0, {
|
|
fileName: "app/routes/worlds.$id.tsx",
|
|
lineNumber: 93,
|
|
columnNumber: 5
|
|
}, this);
|
|
}
|
|
var ZoneInfo = ({ zone }) => {
|
|
let zoneInfo = zones[String(zone.id)];
|
|
return /* @__PURE__ */ jsxDEV8("section", { children: [
|
|
/* @__PURE__ */ jsxDEV8("h3", { children: zoneInfo.name }, void 0, !1, {
|
|
fileName: "app/routes/worlds.$id.tsx",
|
|
lineNumber: 187,
|
|
columnNumber: 7
|
|
}, this),
|
|
/* @__PURE__ */ jsxDEV8("p", { children: [
|
|
totalPopulation(zone.population),
|
|
" players (",
|
|
zone.population.vs,
|
|
" VS,",
|
|
" ",
|
|
zone.population.nc,
|
|
" NC, ",
|
|
zone.population.tr,
|
|
" TR)"
|
|
] }, void 0, !0, {
|
|
fileName: "app/routes/worlds.$id.tsx",
|
|
lineNumber: 188,
|
|
columnNumber: 7
|
|
}, this),
|
|
/* @__PURE__ */ jsxDEV8("p", { children: /* @__PURE__ */ jsxDEV8("ul", { children: allClasses.map(
|
|
(cls, idx) => /* @__PURE__ */ jsxDEV8("li", { children: [
|
|
/* @__PURE__ */ jsxDEV8("b", { children: pascalCaseToTitleCase(cls) }, void 0, !1, {
|
|
fileName: "app/routes/worlds.$id.tsx",
|
|
lineNumber: 196,
|
|
columnNumber: 15
|
|
}, this),
|
|
": ",
|
|
zone.classes?.[cls].total,
|
|
" ",
|
|
"total, ",
|
|
zone.classes?.[cls].vs,
|
|
" VS, ",
|
|
zone.classes?.[cls].nc,
|
|
" NC,",
|
|
" ",
|
|
zone.classes?.[cls].tr,
|
|
" TR"
|
|
] }, idx, !0, {
|
|
fileName: "app/routes/worlds.$id.tsx",
|
|
lineNumber: 195,
|
|
columnNumber: 11
|
|
}, this)
|
|
) }, void 0, !1, {
|
|
fileName: "app/routes/worlds.$id.tsx",
|
|
lineNumber: 193,
|
|
columnNumber: 9
|
|
}, this) }, void 0, !1, {
|
|
fileName: "app/routes/worlds.$id.tsx",
|
|
lineNumber: 192,
|
|
columnNumber: 7
|
|
}, this),
|
|
/* @__PURE__ */ jsxDEV8("p", { children: [
|
|
totalPopulation(zone.vehicles),
|
|
" vehicles...",
|
|
/* @__PURE__ */ jsxDEV8("ul", { children: allVehicles.map(
|
|
(vehicle, idx) => /* @__PURE__ */ jsxDEV8("li", { children: [
|
|
/* @__PURE__ */ jsxDEV8("b", { children: toTitleCase(vehicle) }, void 0, !1, {
|
|
fileName: "app/routes/worlds.$id.tsx",
|
|
lineNumber: 208,
|
|
columnNumber: 15
|
|
}, this),
|
|
":",
|
|
" ",
|
|
totalPopulation(zone.vehicles?.[vehicle]),
|
|
" total,",
|
|
" ",
|
|
zone.vehicles?.[vehicle].vs,
|
|
" VS, ",
|
|
zone.vehicles?.[vehicle].nc,
|
|
" ",
|
|
"NC, ",
|
|
zone.vehicles?.[vehicle].tr,
|
|
" TR"
|
|
] }, idx, !0, {
|
|
fileName: "app/routes/worlds.$id.tsx",
|
|
lineNumber: 207,
|
|
columnNumber: 11
|
|
}, this)
|
|
) }, void 0, !1, {
|
|
fileName: "app/routes/worlds.$id.tsx",
|
|
lineNumber: 205,
|
|
columnNumber: 9
|
|
}, this)
|
|
] }, void 0, !0, {
|
|
fileName: "app/routes/worlds.$id.tsx",
|
|
lineNumber: 203,
|
|
columnNumber: 7
|
|
}, this)
|
|
] }, void 0, !0, {
|
|
fileName: "app/routes/worlds.$id.tsx",
|
|
lineNumber: 186,
|
|
columnNumber: 5
|
|
}, this);
|
|
};
|
|
|
|
// app/routes/_index.tsx
|
|
var index_exports = {};
|
|
__export(index_exports, {
|
|
default: () => Index,
|
|
loader: () => loader2,
|
|
meta: () => meta2
|
|
});
|
|
import { json as json2 } from "@remix-run/cloudflare";
|
|
import { useLoaderData as useLoaderData2 } from "@remix-run/react";
|
|
|
|
// app/components/index-world.tsx
|
|
import { Link as Link2 } from "@remix-run/react";
|
|
import { Fragment as Fragment4, jsxDEV as jsxDEV9 } from "react/jsx-dev-runtime";
|
|
var IndexWorld = ({ metagame, population: population3 }) => {
|
|
let worldId = metagame.id, { platform, location, name } = worlds[String(worldId || "default")];
|
|
if (metagame.zones.length === 0)
|
|
return /* @__PURE__ */ jsxDEV9(BrokenWorld, { worldId }, void 0, !1, {
|
|
fileName: "app/components/index-world.tsx",
|
|
lineNumber: 29,
|
|
columnNumber: 12
|
|
}, this);
|
|
let nextZone = metagame.zones.sort(
|
|
(a, b) => new Date(a.locked_since ?? Date.now()).getTime() - new Date(b.locked_since ?? Date.now()).getTime()
|
|
)[0], nextZoneStrings = zones[nextZone.id];
|
|
return /* @__PURE__ */ jsxDEV9("div", { className: container, children: [
|
|
/* @__PURE__ */ jsxDEV9(Link2, { to: `/worlds/${worldId}`, className: header2, children: [
|
|
/* @__PURE__ */ jsxDEV9("div", { className: headerName2, children: name }, void 0, !1, {
|
|
fileName: "app/components/index-world.tsx",
|
|
lineNumber: 42,
|
|
columnNumber: 9
|
|
}, this),
|
|
/* @__PURE__ */ jsxDEV9("div", { className: headerMarkers, children: [
|
|
"[",
|
|
location,
|
|
"] [",
|
|
platform,
|
|
"]",
|
|
" "
|
|
] }, void 0, !0, {
|
|
fileName: "app/components/index-world.tsx",
|
|
lineNumber: 43,
|
|
columnNumber: 9
|
|
}, this),
|
|
/* @__PURE__ */ jsxDEV9("div", { className: headerDetailsLink, children: "DETAILS \u21E8" }, void 0, !1, {
|
|
fileName: "app/components/index-world.tsx",
|
|
lineNumber: 46,
|
|
columnNumber: 9
|
|
}, this)
|
|
] }, void 0, !0, {
|
|
fileName: "app/components/index-world.tsx",
|
|
lineNumber: 41,
|
|
columnNumber: 7
|
|
}, this),
|
|
/* @__PURE__ */ jsxDEV9("div", { className: details, children: [
|
|
/* @__PURE__ */ jsxDEV9("div", { className: population2, children: [
|
|
/* @__PURE__ */ jsxDEV9("div", { className: totalPop2, children: population3.factions.vs + population3.factions.nc + population3.factions.tr }, void 0, !1, {
|
|
fileName: "app/components/index-world.tsx",
|
|
lineNumber: 50,
|
|
columnNumber: 11
|
|
}, this),
|
|
/* @__PURE__ */ jsxDEV9("div", { className: popFaction, children: [
|
|
/* @__PURE__ */ jsxDEV9("img", { className: popImage, src: vs_100_default, alt: "VS" }, void 0, !1, {
|
|
fileName: "app/components/index-world.tsx",
|
|
lineNumber: 56,
|
|
columnNumber: 13
|
|
}, this),
|
|
" ",
|
|
population3.factions.vs
|
|
] }, void 0, !0, {
|
|
fileName: "app/components/index-world.tsx",
|
|
lineNumber: 55,
|
|
columnNumber: 11
|
|
}, this),
|
|
/* @__PURE__ */ jsxDEV9("div", { className: popFaction, children: [
|
|
/* @__PURE__ */ jsxDEV9("img", { className: popImage, src: nc_100_default, alt: "NC" }, void 0, !1, {
|
|
fileName: "app/components/index-world.tsx",
|
|
lineNumber: 60,
|
|
columnNumber: 13
|
|
}, this),
|
|
" ",
|
|
population3.factions.nc
|
|
] }, void 0, !0, {
|
|
fileName: "app/components/index-world.tsx",
|
|
lineNumber: 59,
|
|
columnNumber: 11
|
|
}, this),
|
|
/* @__PURE__ */ jsxDEV9("div", { className: popFaction, children: [
|
|
/* @__PURE__ */ jsxDEV9("img", { className: popImage, src: tr_100_default, alt: "TR" }, void 0, !1, {
|
|
fileName: "app/components/index-world.tsx",
|
|
lineNumber: 64,
|
|
columnNumber: 13
|
|
}, this),
|
|
" ",
|
|
population3.factions.tr
|
|
] }, void 0, !0, {
|
|
fileName: "app/components/index-world.tsx",
|
|
lineNumber: 63,
|
|
columnNumber: 11
|
|
}, this)
|
|
] }, void 0, !0, {
|
|
fileName: "app/components/index-world.tsx",
|
|
lineNumber: 49,
|
|
columnNumber: 9
|
|
}, this),
|
|
/* @__PURE__ */ jsxDEV9(FactionBar, { population: population3.factions }, void 0, !1, {
|
|
fileName: "app/components/index-world.tsx",
|
|
lineNumber: 68,
|
|
columnNumber: 9
|
|
}, this)
|
|
] }, void 0, !0, {
|
|
fileName: "app/components/index-world.tsx",
|
|
lineNumber: 48,
|
|
columnNumber: 7
|
|
}, this),
|
|
/* @__PURE__ */ jsxDEV9("div", { className: c(worldId === 19 && jaegerConts), children: [
|
|
metagame.zones.filter((zone) => !zone.locked).sort((a, b) => a.alert && !b.alert ? -1 : b.alert && !a.alert ? 1 : 0).map((zone) => worldId !== 19 ? /* @__PURE__ */ jsxDEV9(Continent, { zone }, zone.id, !1, {
|
|
fileName: "app/components/index-world.tsx",
|
|
lineNumber: 78,
|
|
columnNumber: 11
|
|
}, this) : /* @__PURE__ */ jsxDEV9(JaegerContinent, { zone }, zone.id, !1, {
|
|
fileName: "app/components/index-world.tsx",
|
|
lineNumber: 80,
|
|
columnNumber: 11
|
|
}, this)),
|
|
worldId !== 19 && /* @__PURE__ */ jsxDEV9("div", { className: nextCont, children: [
|
|
/* @__PURE__ */ jsxDEV9("div", { className: nextContText, children: "Next continent \xBB" }, void 0, !1, {
|
|
fileName: "app/components/index-world.tsx",
|
|
lineNumber: 85,
|
|
columnNumber: 13
|
|
}, this),
|
|
" ",
|
|
/* @__PURE__ */ jsxDEV9("div", { className: contName, children: [
|
|
/* @__PURE__ */ jsxDEV9(
|
|
"div",
|
|
{
|
|
className: contCircle,
|
|
style: {
|
|
"--upper-color": nextZoneStrings.colors[0],
|
|
"--lower-color": nextZoneStrings.colors[1]
|
|
}
|
|
},
|
|
void 0,
|
|
!1,
|
|
{
|
|
fileName: "app/components/index-world.tsx",
|
|
lineNumber: 87,
|
|
columnNumber: 15
|
|
},
|
|
this
|
|
),
|
|
/* @__PURE__ */ jsxDEV9("div", { children: nextZoneStrings.name }, void 0, !1, {
|
|
fileName: "app/components/index-world.tsx",
|
|
lineNumber: 96,
|
|
columnNumber: 15
|
|
}, this)
|
|
] }, void 0, !0, {
|
|
fileName: "app/components/index-world.tsx",
|
|
lineNumber: 86,
|
|
columnNumber: 13
|
|
}, this)
|
|
] }, void 0, !0, {
|
|
fileName: "app/components/index-world.tsx",
|
|
lineNumber: 84,
|
|
columnNumber: 9
|
|
}, this)
|
|
] }, void 0, !0, {
|
|
fileName: "app/components/index-world.tsx",
|
|
lineNumber: 70,
|
|
columnNumber: 7
|
|
}, this)
|
|
] }, void 0, !0, {
|
|
fileName: "app/components/index-world.tsx",
|
|
lineNumber: 40,
|
|
columnNumber: 5
|
|
}, this);
|
|
}, JaegerContinent = ({ zone }) => {
|
|
let {
|
|
name,
|
|
colors: [upper, lower]
|
|
} = zones[zone.id];
|
|
return /* @__PURE__ */ jsxDEV9("div", { className: contName, children: [
|
|
/* @__PURE__ */ jsxDEV9(
|
|
"div",
|
|
{
|
|
className: contCircle,
|
|
style: {
|
|
"--upper-color": upper,
|
|
"--lower-color": lower
|
|
}
|
|
},
|
|
void 0,
|
|
!1,
|
|
{
|
|
fileName: "app/components/index-world.tsx",
|
|
lineNumber: 112,
|
|
columnNumber: 7
|
|
},
|
|
this
|
|
),
|
|
/* @__PURE__ */ jsxDEV9("div", { children: name }, void 0, !1, {
|
|
fileName: "app/components/index-world.tsx",
|
|
lineNumber: 121,
|
|
columnNumber: 7
|
|
}, this)
|
|
] }, zone.id, !0, {
|
|
fileName: "app/components/index-world.tsx",
|
|
lineNumber: 111,
|
|
columnNumber: 5
|
|
}, this);
|
|
}, Continent = ({ zone }) => {
|
|
let {
|
|
name,
|
|
colors: [upper, lower]
|
|
} = zones[zone.id];
|
|
return /* @__PURE__ */ jsxDEV9("div", { className: c(continent), children: [
|
|
/* @__PURE__ */ jsxDEV9("div", { className: contName, children: [
|
|
/* @__PURE__ */ jsxDEV9(
|
|
"div",
|
|
{
|
|
className: contCircle,
|
|
style: {
|
|
"--upper-color": upper,
|
|
"--lower-color": lower
|
|
}
|
|
},
|
|
void 0,
|
|
!1,
|
|
{
|
|
fileName: "app/components/index-world.tsx",
|
|
lineNumber: 135,
|
|
columnNumber: 9
|
|
},
|
|
this
|
|
),
|
|
/* @__PURE__ */ jsxDEV9("div", { children: name }, void 0, !1, {
|
|
fileName: "app/components/index-world.tsx",
|
|
lineNumber: 144,
|
|
columnNumber: 9
|
|
}, this)
|
|
] }, void 0, !0, {
|
|
fileName: "app/components/index-world.tsx",
|
|
lineNumber: 134,
|
|
columnNumber: 7
|
|
}, this),
|
|
/* @__PURE__ */ jsxDEV9("div", { className: contBars, children: [
|
|
/* @__PURE__ */ jsxDEV9("div", { children: [
|
|
/* @__PURE__ */ jsxDEV9("div", { className: contBarTitle, children: "TERRITORY CONTROL" }, void 0, !1, {
|
|
fileName: "app/components/index-world.tsx",
|
|
lineNumber: 148,
|
|
columnNumber: 11
|
|
}, this),
|
|
/* @__PURE__ */ jsxDEV9(FactionBar, { population: zone.territory }, void 0, !1, {
|
|
fileName: "app/components/index-world.tsx",
|
|
lineNumber: 149,
|
|
columnNumber: 11
|
|
}, this)
|
|
] }, void 0, !0, {
|
|
fileName: "app/components/index-world.tsx",
|
|
lineNumber: 147,
|
|
columnNumber: 9
|
|
}, this),
|
|
zone.alert && /* @__PURE__ */ jsxDEV9(Fragment4, { children: [
|
|
/* @__PURE__ */ jsxDEV9("div", { className: barSeparator }, void 0, !1, {
|
|
fileName: "app/components/index-world.tsx",
|
|
lineNumber: 153,
|
|
columnNumber: 13
|
|
}, this),
|
|
/* @__PURE__ */ jsxDEV9("div", { children: [
|
|
/* @__PURE__ */ jsxDEV9("div", { className: contBarTitle, children: [
|
|
/* @__PURE__ */ jsxDEV9("div", { children: [
|
|
snakeCaseToTitleCase(zone.alert.alert_type).toUpperCase(),
|
|
" ",
|
|
"ALERT PROGRESS"
|
|
] }, void 0, !0, {
|
|
fileName: "app/components/index-world.tsx",
|
|
lineNumber: 156,
|
|
columnNumber: 17
|
|
}, this),
|
|
" ",
|
|
/* @__PURE__ */ jsxDEV9("div", { children: [
|
|
/* @__PURE__ */ jsxDEV9(AlertTimer, { alert: zone.alert }, void 0, !1, {
|
|
fileName: "app/components/index-world.tsx",
|
|
lineNumber: 161,
|
|
columnNumber: 19
|
|
}, this),
|
|
" "
|
|
] }, void 0, !0, {
|
|
fileName: "app/components/index-world.tsx",
|
|
lineNumber: 160,
|
|
columnNumber: 17
|
|
}, this)
|
|
] }, void 0, !0, {
|
|
fileName: "app/components/index-world.tsx",
|
|
lineNumber: 155,
|
|
columnNumber: 15
|
|
}, this),
|
|
/* @__PURE__ */ jsxDEV9(FactionBar, { population: zone.alert.percentages }, void 0, !1, {
|
|
fileName: "app/components/index-world.tsx",
|
|
lineNumber: 164,
|
|
columnNumber: 15
|
|
}, this)
|
|
] }, void 0, !0, {
|
|
fileName: "app/components/index-world.tsx",
|
|
lineNumber: 154,
|
|
columnNumber: 13
|
|
}, this)
|
|
] }, void 0, !0, {
|
|
fileName: "app/components/index-world.tsx",
|
|
lineNumber: 152,
|
|
columnNumber: 9
|
|
}, this)
|
|
] }, void 0, !0, {
|
|
fileName: "app/components/index-world.tsx",
|
|
lineNumber: 146,
|
|
columnNumber: 7
|
|
}, this)
|
|
] }, zone.id, !0, {
|
|
fileName: "app/components/index-world.tsx",
|
|
lineNumber: 133,
|
|
columnNumber: 5
|
|
}, this);
|
|
}, BrokenWorld = ({ worldId }) => {
|
|
let { platform, location, name } = worlds[String(worldId || "default")];
|
|
return /* @__PURE__ */ jsxDEV9("div", { className: container, children: [
|
|
/* @__PURE__ */ jsxDEV9(Link2, { to: `/worlds/${worldId}`, className: header2, children: [
|
|
/* @__PURE__ */ jsxDEV9("div", { className: headerName2, children: name }, void 0, !1, {
|
|
fileName: "app/components/index-world.tsx",
|
|
lineNumber: 179,
|
|
columnNumber: 9
|
|
}, this),
|
|
/* @__PURE__ */ jsxDEV9("div", { className: headerMarkers, children: [
|
|
"[",
|
|
location,
|
|
"] [",
|
|
platform,
|
|
"]",
|
|
" "
|
|
] }, void 0, !0, {
|
|
fileName: "app/components/index-world.tsx",
|
|
lineNumber: 180,
|
|
columnNumber: 9
|
|
}, this),
|
|
/* @__PURE__ */ jsxDEV9("div", { className: headerDetailsLink, children: "DETAILS \u21E8" }, void 0, !1, {
|
|
fileName: "app/components/index-world.tsx",
|
|
lineNumber: 183,
|
|
columnNumber: 9
|
|
}, this)
|
|
] }, void 0, !0, {
|
|
fileName: "app/components/index-world.tsx",
|
|
lineNumber: 178,
|
|
columnNumber: 7
|
|
}, this),
|
|
/* @__PURE__ */ jsxDEV9("div", { className: details, children: /* @__PURE__ */ jsxDEV9("div", { className: oopsies, children: [
|
|
"Daybreak made an oopsie.",
|
|
/* @__PURE__ */ jsxDEV9("br", {}, void 0, !1, {
|
|
fileName: "app/components/index-world.tsx",
|
|
lineNumber: 188,
|
|
columnNumber: 11
|
|
}, this),
|
|
/* @__PURE__ */ jsxDEV9("div", { className: oopsiesSpin, children: "\u{1F642}" }, void 0, !1, {
|
|
fileName: "app/components/index-world.tsx",
|
|
lineNumber: 189,
|
|
columnNumber: 11
|
|
}, this)
|
|
] }, void 0, !0, {
|
|
fileName: "app/components/index-world.tsx",
|
|
lineNumber: 186,
|
|
columnNumber: 9
|
|
}, this) }, void 0, !1, {
|
|
fileName: "app/components/index-world.tsx",
|
|
lineNumber: 185,
|
|
columnNumber: 7
|
|
}, this)
|
|
] }, void 0, !0, {
|
|
fileName: "app/components/index-world.tsx",
|
|
lineNumber: 177,
|
|
columnNumber: 5
|
|
}, this);
|
|
};
|
|
|
|
// app/components/index-world-container.css.ts
|
|
var container2 = "index-world-container_container__1ib388g0";
|
|
|
|
// app/components/index-world-container.tsx
|
|
import { jsxDEV as jsxDEV10 } from "react/jsx-dev-runtime";
|
|
var WorldContainer = ({
|
|
metagame,
|
|
population: population3
|
|
}) => /* @__PURE__ */ jsxDEV10("div", { className: container2, children: metagame.map(
|
|
(world) => /* @__PURE__ */ jsxDEV10(
|
|
IndexWorld,
|
|
{
|
|
metagame: world,
|
|
population: population3.find((p) => p.id === world.id)
|
|
},
|
|
world.id,
|
|
!1,
|
|
{
|
|
fileName: "app/components/index-world-container.tsx",
|
|
lineNumber: 15,
|
|
columnNumber: 3
|
|
},
|
|
this
|
|
)
|
|
) }, void 0, !1, {
|
|
fileName: "app/components/index-world-container.tsx",
|
|
lineNumber: 13,
|
|
columnNumber: 1
|
|
}, this);
|
|
|
|
// app/components/index.css.ts
|
|
var outer2 = "components_outer__8hh0bp0";
|
|
|
|
// app/utils/population.ts
|
|
var fetchPopulationWorlds = async () => (await (await fetch("https://agg.ps2.live/population/all")).json()).map(({ id, average, factions }) => ({ id, average, factions }));
|
|
|
|
// app/routes/_index.tsx
|
|
import { jsxDEV as jsxDEV11 } from "react/jsx-dev-runtime";
|
|
var loader2 = async () => {
|
|
let [metagame, population3] = await Promise.all(
|
|
[
|
|
fetchMetagameWorlds(),
|
|
fetchPopulationWorlds()
|
|
]
|
|
);
|
|
return json2({ metagame: metagame.sort((a, b) => a.id - b.id), population: population3 });
|
|
}, meta2 = () => [
|
|
{ title: "PS2.LIVE" },
|
|
{
|
|
name: "description",
|
|
content: "PlanetSide 2 Live Population Stats"
|
|
}
|
|
];
|
|
function Index() {
|
|
let data = useLoaderData2();
|
|
return /* @__PURE__ */ jsxDEV11("div", { children: [
|
|
/* @__PURE__ */ jsxDEV11("div", { className: outer2, children: /* @__PURE__ */ jsxDEV11(WorldContainer, { metagame: data.metagame, population: data.population }, void 0, !1, {
|
|
fileName: "app/routes/_index.tsx",
|
|
lineNumber: 33,
|
|
columnNumber: 9
|
|
}, this) }, void 0, !1, {
|
|
fileName: "app/routes/_index.tsx",
|
|
lineNumber: 32,
|
|
columnNumber: 7
|
|
}, this),
|
|
/* @__PURE__ */ jsxDEV11(Footer, { isMainPage: !0 }, void 0, !1, {
|
|
fileName: "app/routes/_index.tsx",
|
|
lineNumber: 35,
|
|
columnNumber: 7
|
|
}, this)
|
|
] }, void 0, !0, {
|
|
fileName: "app/routes/_index.tsx",
|
|
lineNumber: 31,
|
|
columnNumber: 5
|
|
}, this);
|
|
}
|
|
|
|
// app/routes/about.tsx
|
|
var about_exports = {};
|
|
__export(about_exports, {
|
|
default: () => About
|
|
});
|
|
|
|
// app/components/about.css.ts
|
|
var header3 = "about_header__wg0hcp0", outer3 = "about_outer__wg0hcp1", link2 = "about_link__wg0hcp2", itemContainer = "about_itemContainer__wg0hcp3", item = "about_item__wg0hcp4", itemLink = "about_itemLink__wg0hcp5", itemGithubLink = "about_itemGithubLink__wg0hcp6", love = "about_love__wg0hcp7";
|
|
|
|
// app/routes/about.tsx
|
|
import { jsxDEV as jsxDEV12 } from "react/jsx-dev-runtime";
|
|
function About() {
|
|
return /* @__PURE__ */ jsxDEV12("div", { children: [
|
|
/* @__PURE__ */ jsxDEV12("div", { className: outer3, children: [
|
|
/* @__PURE__ */ jsxDEV12("div", { children: [
|
|
/* @__PURE__ */ jsxDEV12("p", { className: header3, children: [
|
|
/* @__PURE__ */ jsxDEV12("b", { children: "PS2.LIVE" }, void 0, !1, {
|
|
fileName: "app/routes/about.tsx",
|
|
lineNumber: 19,
|
|
columnNumber: 13
|
|
}, this),
|
|
" is a network of services that report on the ongoing war on Auraxis."
|
|
] }, void 0, !0, {
|
|
fileName: "app/routes/about.tsx",
|
|
lineNumber: 18,
|
|
columnNumber: 11
|
|
}, this),
|
|
/* @__PURE__ */ jsxDEV12("p", { style: { fontStyle: "italic" }, children: [
|
|
"hat tips:",
|
|
" ",
|
|
/* @__PURE__ */ jsxDEV12("a", { className: link2, href: "https://ps2.fisu.pw/", children: "fisu" }, void 0, !1, {
|
|
fileName: "app/routes/about.tsx",
|
|
lineNumber: 24,
|
|
columnNumber: 13
|
|
}, this),
|
|
",",
|
|
" ",
|
|
/* @__PURE__ */ jsxDEV12("a", { className: link2, href: "https://wt.honu.pw/", children: "honu & varunda" }, void 0, !1, {
|
|
fileName: "app/routes/about.tsx",
|
|
lineNumber: 28,
|
|
columnNumber: 13
|
|
}, this),
|
|
",",
|
|
" ",
|
|
/* @__PURE__ */ jsxDEV12("a", { className: link2, href: "https://voidwell.com/", children: "Voidwell & Lampjaw" }, void 0, !1, {
|
|
fileName: "app/routes/about.tsx",
|
|
lineNumber: 32,
|
|
columnNumber: 13
|
|
}, this),
|
|
",",
|
|
" ",
|
|
/* @__PURE__ */ jsxDEV12("a", { className: link2, href: "https://census.lithafalcon.cc/", children: "Sanctuary & Falcon" }, void 0, !1, {
|
|
fileName: "app/routes/about.tsx",
|
|
lineNumber: 36,
|
|
columnNumber: 13
|
|
}, this),
|
|
",",
|
|
" ",
|
|
/* @__PURE__ */ jsxDEV12("a", { className: link2, href: "https://ps2alerts.com/", children: "PS2Alerts team" }, void 0, !1, {
|
|
fileName: "app/routes/about.tsx",
|
|
lineNumber: 40,
|
|
columnNumber: 13
|
|
}, this),
|
|
",",
|
|
" ",
|
|
/* @__PURE__ */ jsxDEV12("a", { className: link2, href: "https://discord.gg/yVzGEg3RKV", children: "PS2devs Discord" }, void 0, !1, {
|
|
fileName: "app/routes/about.tsx",
|
|
lineNumber: 44,
|
|
columnNumber: 13
|
|
}, this),
|
|
", Daybreak Census Team \u{1F496}"
|
|
] }, void 0, !0, {
|
|
fileName: "app/routes/about.tsx",
|
|
lineNumber: 22,
|
|
columnNumber: 11
|
|
}, this)
|
|
] }, void 0, !0, {
|
|
fileName: "app/routes/about.tsx",
|
|
lineNumber: 17,
|
|
columnNumber: 9
|
|
}, this),
|
|
/* @__PURE__ */ jsxDEV12("div", { children: /* @__PURE__ */ jsxDEV12("ul", { className: itemContainer, children: [
|
|
{
|
|
name: "Saerro",
|
|
url: "https://saerro.ps2.live",
|
|
github: "https://github.com/genudine/saerro",
|
|
description: "Population GraphQL API focussing on deep granularity."
|
|
},
|
|
{
|
|
name: "Metagame API",
|
|
url: "https://metagame.ps2.live",
|
|
github: "https://github.com/genudine/metagame",
|
|
description: "World states, contininent locks, alerts, etc."
|
|
},
|
|
{
|
|
name: "Population API",
|
|
url: "https://agg.ps2.live/population",
|
|
github: "https://github.com/genudine/agg-population",
|
|
description: "Population as seen by many services, averaged."
|
|
},
|
|
{
|
|
name: "Census Playground",
|
|
url: "https://try.ps2.live",
|
|
github: "https://github.com/genudine/try.ps2.live",
|
|
description: "Explore and share the Census API."
|
|
},
|
|
{
|
|
name: "ps2.live",
|
|
url: "https://ps2.live",
|
|
github: "https://github.com/genudine/ps2.live",
|
|
description: "This website. It's pretty cool."
|
|
},
|
|
{
|
|
name: "Medkit",
|
|
url: "https://github.com/genudine/medkit2",
|
|
github: "https://github.com/genudine/medkit2",
|
|
description: "PS2 Discord bot for population/continents in channel names."
|
|
}
|
|
].map(
|
|
({ name, url, github, description }, i) => /* @__PURE__ */ jsxDEV12("li", { className: item, children: [
|
|
/* @__PURE__ */ jsxDEV12("a", { href: url, className: itemLink, children: name }, void 0, !1, {
|
|
fileName: "app/routes/about.tsx",
|
|
lineNumber: 93,
|
|
columnNumber: 17
|
|
}, this),
|
|
/* @__PURE__ */ jsxDEV12("div", { children: [
|
|
description,
|
|
" "
|
|
] }, void 0, !0, {
|
|
fileName: "app/routes/about.tsx",
|
|
lineNumber: 96,
|
|
columnNumber: 17
|
|
}, this),
|
|
/* @__PURE__ */ jsxDEV12("a", { href: github, className: itemGithubLink, children: "github" }, void 0, !1, {
|
|
fileName: "app/routes/about.tsx",
|
|
lineNumber: 97,
|
|
columnNumber: 17
|
|
}, this)
|
|
] }, i, !0, {
|
|
fileName: "app/routes/about.tsx",
|
|
lineNumber: 92,
|
|
columnNumber: 13
|
|
}, this)
|
|
) }, void 0, !1, {
|
|
fileName: "app/routes/about.tsx",
|
|
lineNumber: 51,
|
|
columnNumber: 11
|
|
}, this) }, void 0, !1, {
|
|
fileName: "app/routes/about.tsx",
|
|
lineNumber: 50,
|
|
columnNumber: 9
|
|
}, this),
|
|
/* @__PURE__ */ jsxDEV12("p", { className: love, children: "Built with \u{1F496} by Doll" }, void 0, !1, {
|
|
fileName: "app/routes/about.tsx",
|
|
lineNumber: 104,
|
|
columnNumber: 9
|
|
}, this)
|
|
] }, void 0, !0, {
|
|
fileName: "app/routes/about.tsx",
|
|
lineNumber: 16,
|
|
columnNumber: 7
|
|
}, this),
|
|
/* @__PURE__ */ jsxDEV12(Footer, {}, void 0, !1, {
|
|
fileName: "app/routes/about.tsx",
|
|
lineNumber: 106,
|
|
columnNumber: 7
|
|
}, this)
|
|
] }, void 0, !0, {
|
|
fileName: "app/routes/about.tsx",
|
|
lineNumber: 15,
|
|
columnNumber: 5
|
|
}, this);
|
|
}
|
|
|
|
// server-assets-manifest:@remix-run/dev/assets-manifest
|
|
var assets_manifest_default = { entry: { module: "/build/entry.client-ZTY5EYA2.js", imports: ["/build/_shared/chunk-O4BRYNJ4.js", "/build/_shared/chunk-Q3VAUTNA.js", "/build/_shared/chunk-U4FRFQSK.js", "/build/_shared/chunk-D6I44YFN.js", "/build/_shared/chunk-UWV35TSL.js", "/build/_shared/chunk-XGOTYLZ5.js", "/build/_shared/chunk-7M6SC7J5.js", "/build/_shared/chunk-PNG5AS42.js"] }, routes: { root: { id: "root", parentId: void 0, path: "", index: void 0, caseSensitive: void 0, module: "/build/root-LK675L7D.js", imports: void 0, hasAction: !1, hasLoader: !1, hasClientAction: !1, hasClientLoader: !1, hasErrorBoundary: !1 }, "routes/_index": { id: "routes/_index", parentId: "root", path: void 0, index: !0, caseSensitive: void 0, module: "/build/routes/_index-QVFHENLU.js", imports: ["/build/_shared/chunk-RPE3GBUS.js", "/build/_shared/chunk-UFMODTTP.js", "/build/_shared/chunk-AKBCVZVU.js"], hasAction: !1, hasLoader: !0, hasClientAction: !1, hasClientLoader: !1, hasErrorBoundary: !1 }, "routes/about": { id: "routes/about", parentId: "root", path: "about", index: void 0, caseSensitive: void 0, module: "/build/routes/about-NZRSS7UU.js", imports: ["/build/_shared/chunk-AKBCVZVU.js"], hasAction: !1, hasLoader: !1, hasClientAction: !1, hasClientLoader: !1, hasErrorBoundary: !1 }, "routes/debug.components": { id: "routes/debug.components", parentId: "root", path: "debug/components", index: void 0, caseSensitive: void 0, module: "/build/routes/debug.components-JC3GMEKW.js", imports: ["/build/_shared/chunk-YKZC3E7O.js", "/build/_shared/chunk-UFMODTTP.js"], hasAction: !1, hasLoader: !1, hasClientAction: !1, hasClientLoader: !1, hasErrorBoundary: !1 }, "routes/worlds.$id": { id: "routes/worlds.$id", parentId: "root", path: "worlds/:id", index: void 0, caseSensitive: void 0, module: "/build/routes/worlds.$id-S4Z76SWU.js", imports: ["/build/_shared/chunk-YKZC3E7O.js", "/build/_shared/chunk-RPE3GBUS.js", "/build/_shared/chunk-UFMODTTP.js", "/build/_shared/chunk-AKBCVZVU.js"], hasAction: !1, hasLoader: !0, hasClientAction: !1, hasClientLoader: !1, hasErrorBoundary: !1 } }, version: "918ff520", hmr: { runtime: "/build/_shared/chunk-D6I44YFN.js", timestamp: 1718514722630 }, url: "/build/manifest-918FF520.js" };
|
|
|
|
// server-entry-module:@remix-run/dev/server-build
|
|
var mode = "development", assetsBuildDirectory = "public/build", future = { v3_fetcherPersist: !1, v3_relativeSplatPath: !1, v3_throwAbortReason: !1, unstable_singleFetch: !1 }, publicPath = "/build/", entry = { module: entry_server_node_exports }, routes = {
|
|
root: {
|
|
id: "root",
|
|
parentId: void 0,
|
|
path: "",
|
|
index: void 0,
|
|
caseSensitive: void 0,
|
|
module: root_exports
|
|
},
|
|
"routes/debug.components": {
|
|
id: "routes/debug.components",
|
|
parentId: "root",
|
|
path: "debug/components",
|
|
index: void 0,
|
|
caseSensitive: void 0,
|
|
module: debug_components_exports
|
|
},
|
|
"routes/worlds.$id": {
|
|
id: "routes/worlds.$id",
|
|
parentId: "root",
|
|
path: "worlds/:id",
|
|
index: void 0,
|
|
caseSensitive: void 0,
|
|
module: worlds_id_exports
|
|
},
|
|
"routes/_index": {
|
|
id: "routes/_index",
|
|
parentId: "root",
|
|
path: void 0,
|
|
index: !0,
|
|
caseSensitive: void 0,
|
|
module: index_exports
|
|
},
|
|
"routes/about": {
|
|
id: "routes/about",
|
|
parentId: "root",
|
|
path: "about",
|
|
index: void 0,
|
|
caseSensitive: void 0,
|
|
module: about_exports
|
|
}
|
|
};
|
|
export {
|
|
assets_manifest_default as assets,
|
|
assetsBuildDirectory,
|
|
entry,
|
|
future,
|
|
mode,
|
|
publicPath,
|
|
routes
|
|
};
|
|
//# sourceMappingURL=index.js.map
|