1(function () { 2const { 3 useState, 4 useEffect, 5 useRef 6} = React; 7function TopBar({ 8 go, 9 cartCount = 0 10}) { 11 return React.createElement("div", { 12 className: "top-actions-float" 13 }, React.createElement("button", { 14 className: "icon-btn", 15 "aria-label": "Search", 16 onClick: () => go("search") 17 }, React.createElement(Icon.search, null)), React.createElement("button", { 18 className: "icon-btn", 19 "aria-label": "Notifications", 20 style: { 21 position: "relative" 22 }, 23 onClick: () => go("notifications") 24 }, React.createElement(Icon.bell, null), React.createElement("span", { 25 style: { 26 position: "absolute", 27 top: 7, 28 right: 8, 29 width: 7, 30 height: 7, 31 borderRadius: "50%", 32 background: "var(--crimson-hi)", 33 boxShadow: "0 0 6px var(--crimson-glow)" 34 } 35 })), React.createElement("button", { 36 className: "icon-btn", 37 "aria-label": "Cart", 38 onClick: () => go("cart"), 39 style: { 40 position: "relative" 41 } 42 }, React.createElement(Icon.cart, null), cartCount > 0 && React.createElement("span", { 43 style: { 44 position: "absolute", 45 top: -2, 46 right: -2, 47 minWidth: 16, 48 height: 16, 49 padding: "0 4px", 50 borderRadius: 8, 51 background: "var(--crimson)", 52 color: "#fff", 53 fontSize: 9, 54 fontWeight: 700, 55 display: "inline-flex", 56 alignItems: "center", 57 justifyContent: "center", 58 border: "2px solid var(--bg-1)" 59 } 60 }, cartCount))); 61} 62function GameBuyPanel({ 63 game, 64 platform 65}) { 66 const g = game; 67 const wallet = window.EAGWallet; 68 const [, bump] = useState(0); 69 const [busy, setBusy] = useState(""); 70 const [err, setErr] = useState(""); 71 const [ready, setReady] = useState(false); 72 const signedIn = !!(window.EAGAuth && window.EAGAuth.current && window.EAGAuth.current()); 73 useEffect(() => { 74 let live = true; 75 if (wallet && signedIn) { 76 wallet.load(true).then(() => { 77 if (live) { 78 setReady(true); 79 bump(v => v + 1); 80 } 81 }); 82 } else { 83 setReady(true); 84 } 85 const onChange = () => { 86 if (live) bump(v => v + 1); 87 }; 88 window.addEventListener("eag-wallet-changed", onChange); 89 return () => { 90 live = false; 91 window.removeEventListener("eag-wallet-changed", onChange); 92 }; 93 }, [g && g.id, signedIn]); 94 const priceLC = Number(g && g.priceLC) || 0; 95 const isPaid = priceLC > 0; 96 const owned = !!(wallet && g && g.id && wallet.owns(g.id)); 97 const balance = wallet ? wallet.balance() : 0; 98 const adFree = !!(wallet && wallet.adFree()); 99 const playLabel = platform === "browser" ? "PLAY NOW" : "INSTALL"; 100 async function doBuy() { 101 setErr(""); 102 setBusy("buy"); 103 try { 104 await wallet.buyGame(g.id); 105 if (window.EAGToast) window.EAGToast(g.title + " unlocked"); 106 window.dispatchEvent(new Event("eag-wallet-changed")); 107 } catch (e) { 108 setErr(e && e.message || "Purchase failed."); 109 } finally { 110 setBusy(""); 111 } 112 } 113 async function doAdFree() { 114 setErr(""); 115 setBusy("adfree"); 116 try { 117 await wallet.removeAds(); 118 if (window.EAGToast) window.EAGToast("Ads removed across Ever After Games"); 119 window.dispatchEvent(new Event("eag-wallet-changed")); 120 } catch (e) { 121 setErr(e && e.message || "Could not remove ads."); 122 } finally { 123 setBusy(""); 124 } 125 } 126 const balanceChip = signedIn ? React.createElement("span", { 127 className: "chip", 128 style: { 129 fontSize: 10, 130 padding: "5px 10px", 131 color: "var(--gold)" 132 } 133 }, ready ? balance.toLocaleString() : "â¦", " LC") : null; 134 const isTester = !!(window.eagIsBetaTester && window.eagIsBetaTester()); 135 if (g && g.beta && !isTester) { 136 return React.createElement("div", null, React.createElement("button", { 137 className: "btn btn-primary", 138 style: { 139 width: "100%", 140 padding: "16px 18px", 141 fontSize: 13 142 }, 143 onClick: () => window.playGame(g) 144 }, React.createElement(Icon.play, { 145 style: { 146 width: 12, 147 height: 12, 148 fill: "#fff" 149 } 150 }), "JOIN THE BETA"), React.createElement("div", { 151 className: "meta", 152 style: { 153 fontSize: 11, 154 marginTop: 8, 155 textAlign: "center" 156 } 157 }, "In testing with a small group. Pop your email in to be first to play.")); 158 } 159 if (isPaid && !owned && signedIn) { 160 const canAfford = balance >= priceLC; 161 return React.createElement("div", null, React.createElement("div", { 162 className: "row", 163 style: { 164 gap: 8 165 } 166 }, React.createElement("button", { 167 className: "btn btn-primary", 168 disabled: busy === "buy" || !canAfford, 169 style: { 170 flex: 1, 171 padding: "16px 18px", 172 fontSize: 13, 173 opacity: busy === "buy" || !canAfford ? 0.7 : 1 174 }, 175 onClick: doBuy 176 }, busy === "buy" ? "PROCESSINGâ¦" : `BUY WITH LITCOIN · ${priceLC} LC`), React.createElement("button", { 177 className: "btn btn-ghost", 178 style: { 179 padding: "16px 14px" 180 }, 181 onClick: () => window.EAGToast && window.EAGToast("Saved to your list") 182 }, React.createElement(Icon.bookmark, { 183 style: { 184 width: 14, 185 height: 14 186 } 187 }))), React.createElement("div", { 188 className: "row", 189 style: { 190 gap: 8, 191 marginTop: 8, 192 justifyContent: "space-between" 193 } 194 }, React.createElement("span", { 195 className: "meta", 196 style: { 197 fontSize: 11 198 } 199 }, "Your balance ", balanceChip), React.createElement("a", { 200 href: "https://buylitcoins.com", 201 target: "_blank", 202 rel: "noopener noreferrer", 203 style: { 204 fontSize: 11, 205 color: "var(--gold)", 206 fontWeight: 700, 207 textDecoration: "none" 208 } 209 }, "Top up")), !canAfford && React.createElement("div", { 210 className: "meta", 211 style: { 212 fontSize: 11, 213 marginTop: 6, 214 color: "var(--away)" 215 } 216 }, "You need ", priceLC - balance, " more LC. ", React.createElement("a", { 217 href: "https://buylitcoins.com", 218 target: "_blank", 219 rel: "noopener noreferrer", 220 style: { 221 color: "var(--gold)" 222 } 223 }, "Buy LitCoins"), "."), err && React.createElement("div", { 224 style: { 225 marginTop: 8, 226 fontSize: 11.5, 227 color: "var(--crimson-hi)" 228 } 229 }, err)); 230 } 231 if (isPaid && !owned && !signedIn) { 232 return React.createElement("div", null, React.createElement("button", { 233 className: "btn btn-primary", 234 style: { 235 width: "100%", 236 padding: "16px 18px", 237 fontSize: 13 238 }, 239 onClick: () => { 240 if (window.EAGShowBetaGate) {} 241 window.playGame(g); 242 } 243 }, `BUY WITH LITCOIN · ${priceLC} LC`), React.createElement("div", { 244 className: "meta", 245 style: { 246 fontSize: 11, 247 marginTop: 8, 248 textAlign: "center" 249 } 250 }, "Sign in to buy with your Ever After LitCoin wallet.")); 251 } 252 return React.createElement("div", null, React.createElement("div", { 253 className: "row", 254 style: { 255 gap: 8 256 } 257 }, React.createElement("button", { 258 className: "btn btn-primary", 259 style: { 260 flex: 1, 261 padding: "16px 18px", 262 fontSize: 13 263 }, 264 onClick: () => window.playGame(g) 265 }, React.createElement(Icon.play, { 266 style: { 267 width: 12, 268 height: 12, 269 fill: "#fff" 270 } 271 }), owned ? "PLAY · OWNED" : playLabel), React.createElement("button", { 272 className: "btn btn-ghost", 273 style: { 274 padding: "16px 14px" 275 }, 276 onClick: () => window.EAGToast && window.EAGToast("Saved to your list") 277 }, React.createElement(Icon.bookmark, { 278 style: { 279 width: 14, 280 height: 14 281 } 282 }))), !isPaid && signedIn && !adFree && React.createElement("div", { 283 className: "row", 284 style: { 285 gap: 8, 286 marginTop: 8, 287 justifyContent: "space-between", 288 alignItems: "center" 289 } 290 }, React.createElement("span", { 291 className: "meta", 292 style: { 293 fontSize: 11 294 } 295 }, "Free to play, with ads ", balanceChip), React.createElement("button", { 296 className: "btn btn-outline", 297 disabled: busy === "adfree", 298 style: { 299 padding: "8px 12px", 300 fontSize: 10, 301 opacity: busy === "adfree" ? 0.7 : 1 302 }, 303 onClick: doAdFree 304 }, busy === "adfree" ? "â¦" : "REMOVE ADS · 199 LC")), !isPaid && signedIn && adFree && React.createElement("div", { 305 className: "meta", 306 style: { 307 fontSize: 11, 308 marginTop: 8, 309 color: "var(--online)" 310 } 311 }, "Ad-free across Ever After Games."), err && React.createElement("div", { 312 style: { 313 marginTop: 8, 314 fontSize: 11.5, 315 color: "var(--crimson-hi)" 316 } 317 }, err)); 318} 319function GameDetailScreen({ 320 go, 321 params, 322 cartCount 323}) { 324 const g = getGame(params.id) || GAMES[0]; 325 const platform = g.platforms[0]; 326 const willowAccess = window.useWillowAccess ? window.useWillowAccess(!!g.willowBeta) : null;
327 const willowLocked = !!g.willowBeta && !(willowAccess && willowAccess.beta); 328 return React.createElement("div", { 329 className: "screen-in", 330 "data-screen-label": "Game Detail" 331 }, React.createElement("div", { 332 className: "sub-header" 333 }, React.createElement("button", { 334 className: "icon-btn", 335 onClick: () => go("back") 336 }, React.createElement(Icon.back, null)), React.createElement("div", { 337 className: "row", 338 style: { 339 gap: 8 340 } 341 }, React.createElement("button", { 342 className: "icon-btn", 343 onClick: () => window.EAGToast && window.EAGToast("Saved to your list") 344 }, React.createElement(Icon.bookmark, null)), React.createElement("button", { 345 className: "icon-btn", 346 onClick: () => window.eagShare(g.title) 347 }, React.createElement(Icon.share, null)))), React.createElement("div", { 348 className: `detail-hero${g.cover ? " detail-hero-cover" : ""}` 349 }, React.createElement(KeyArt, { 350 variant: g.art, 351 img: g.cover 352 }), g.cover && React.createElement("span", { 353 style: { 354 position: "absolute", 355 width: 1, 356 height: 1, 357 padding: 0, 358 margin: -1, 359 overflow: "hidden", 360 clip: "rect(0, 0, 0, 0)", 361 whiteSpace: "nowrap", 362 border: 0 363 } 364 }, g.title.toUpperCase()), !g.cover && React.createElement(React.Fragment, null, React.createElement("div", { 365 className: "top-grad" 366 }), React.createElement("div", { 367 className: "grad" 368 }), React.createElement("div", { 369 style: { 370 position: "absolute", 371 inset: 0, 372 padding: "18px 20px 24px", 373 display: "flex", 374 flexDirection: "column", 375 justifyContent: "flex-end", 376 zIndex: 3 377 } 378 }, g.original && React.createElement("span", { 379 className: "badge badge-gold", 380 style: { 381 alignSelf: "flex-start", 382 marginBottom: 6 383 } 384 }, "EAG \xB7 ORIGINAL"), React.createElement("div", { 385 className: "h-display", 386 style: { 387 fontSize: 28, 388 lineHeight: 1.0, 389 letterSpacing: "0.04em", 390 maxWidth: 300 391 } 392 }, g.title.toUpperCase()), React.createElement("div", { 393 style: { 394 color: "var(--ink-2)", 395 fontSize: 13, 396 marginTop: 6, 397 fontStyle: "italic", 398 fontFamily: "var(--f-display)" 399 } 400 }, "\"", g.tagline, "\""), React.createElement("div", { 401 className: "row", 402 style: { 403 marginTop: 12, 404 gap: 10, 405 flexWrap: "wrap" 406 } 407 }, React.createElement("span", { 408 style: { 409 fontSize: 11, 410 color: "var(--ink-3)" 411 } 412 }, g.genre), g.age && React.createElement(React.Fragment, null, React.createElement("span", { 413 className: "meta", 414 style: { 415 opacity: 0.5 416 } 417 }, "\xB7"), React.createElement("span", { 418 style: { 419 fontSize: 11, 420 color: "var(--ink-3)" 421 } 422 }, "Ages ", g.age)))))), React.createElement("div", { 423 style: { 424 padding: "14px 20px 6px" 425 } 426 }, g.willowBeta && window.WillowBetaPanel ? React.createElement(WillowBetaPanel, { 427 game: g, 428 go: go 429 }) : React.createElement(GameBuyPanel, { 430 game: g, 431 platform: platform 432 }), React.createElement("div", { 433 className: "row", 434 style: { 435 gap: 6, 436 marginTop: 10 437 } 438 }, g.platforms.map(p => React.createElement("span", { 439 key: p, 440 className: "chip", 441 style: { 442 fontSize: 10, 443 padding: "5px 10px" 444 } 445 }, p === "browser" ? "BROWSER" : p === "desktop" ? "WINDOWS" : "MOBILE")), React.createElement("span", { 446 className: "chip", 447 style: { 448 fontSize: 10, 449 padding: "5px 10px" 450 } 451 }, g.genre), g.size && React.createElement("span", { 452 className: "chip", 453 style: { 454 fontSize: 10, 455 padding: "5px 10px" 456 } 457 }, g.size))), willowLocked && React.createElement("div", { 458 className: "meta", 459 style: { 460 padding: "16px 20px 24px", 461 fontSize: 12, 462 lineHeight: 1.6 463 } 464 }, "Willow is in closed beta. The full page, story details and downloads unlock for approved testers."), !willowLocked && React.createElement(React.Fragment, null, React.createElement("div", { 465 className: "row", 466 style: { 467 padding: "14px 20px", 468 gap: 10,
469 borderBottom: "1px solid var(--line-1)", 470 marginTop: 10 471 } 472 }, React.createElement("div", { 473 style: { 474 width: 36, 475 height: 36, 476 borderRadius: 6, 477 background: "linear-gradient(135deg, var(--bg-3), var(--bg-4))", 478 border: "1px solid var(--line-2)", 479 display: "flex", 480 alignItems: "center", 481 justifyContent: "center" 482 } 483 }, React.createElement(BrandMark, { 484 size: 18 485 })), React.createElement("div", { 486 className: "col", 487 style: { 488 flex: 1 489 } 490 }, React.createElement("div", { 491 style: { 492 fontSize: 12, 493 color: "var(--ink-1)", 494 fontWeight: 600 495 } 496 }, g.studio), React.createElement("div", { 497 className: "meta", 498 style: { 499 fontSize: 10 500 } 501 }, g.original ? "Made by Ever After Games" : "Third-party studio"))), g.fromLitFic && React.createElement("div", { 502 style: { 503 padding: "16px 20px 0" 504 } 505 }, React.createElement("div", { 506 style: { 507 padding: 16, 508 borderRadius: 10, 509 background: "var(--bg-2)", 510 border: "1px solid var(--gold-dim)" 511 } 512 }, React.createElement("div", { 513 className: "h-section", 514 style: { 515 marginBottom: 8, 516 color: "var(--gold)" 517 } 518 }, React.createElement("span", { 519 className: "ornament", 520 style: { 521 background: "linear-gradient(90deg, transparent, var(--gold))" 522 } 523 }), "From LitFic"), React.createElement("div", { 524 className: "body-text", 525 style: { 526 textWrap: "pretty" 527 } 528 }, "This game is an adaptation of \u201C", g.fromLitFic.story, "\u201D, a short story from ", g.fromLitFic.series, " on LitFic, our webnovel site. Read the story it came from, then play it."), React.createElement("a", { 529 className: "btn btn-gold", 530 href: g.fromLitFic.url, 531 target: "_blank", 532 rel: "noopener noreferrer", 533 style: { 534 marginTop: 12, 535 display: "inline-flex" 536 } 537 }, "Read the original story on LitFic"))), React.createElement("div", { 538 style: { 539 padding: "16px 20px" 540 } 541 }, React.createElement("div", { 542 className: "h-section", 543 style: { 544 marginBottom: 8 545 } 546 }, React.createElement("span", { 547 className: "ornament" 548 }), "About"), React.createElement("div", { 549 className: "body-text", 550 style: { 551 textWrap: "pretty" 552 } 553 }, g.desc), React.createElement("div", { 554 className: "row", 555 style: { 556 flexWrap: "wrap", 557 gap: 6, 558 marginTop: 12 559 } 560 }, g.tags.map(t => React.createElement("span", { 561 key: t, 562 style: { 563 padding: "4px 8px", 564 fontSize: 10, 565 color: "var(--ink-3)", 566 border: "1px solid var(--line-1)", 567 borderRadius: 3, 568 letterSpacing: "0.06em" 569 } 570 }, t)))), g.id === "dock-nine" && React.createElement("div", { 571 style: { 572 padding: "6px 20px 22px" 573 } 574 }, React.createElement("a", { 575 className: "btn btn-outline", 576 href: "/dock-nine-radio/", 577 style: { 578 width: "100%", 579 justifyContent: "center", 580 gap: 10, 581 padding: "15px 18px", 582 borderColor: "var(--gold-dim)", 583 background: "linear-gradient(135deg, rgba(71,236,226,0.10), rgba(194,56,74,0.10))", 584 color: "var(--ink-1)" 585 } 586 }, React.createElement("span", { 587 style: { 588 color: "var(--gold)", 589 fontSize: 10, 590 letterSpacing: "0.14em" 591 } 592 }, "D9 09.9"), React.createElement("span", null, "LISTEN TO DOCK NINE RADIO"))), (() => { 593 const ach = window.GAME_ACHIEVEMENTS && window.GAME_ACHIEVEMENTS[g.id] || []; 594 if (!ach.length) return null; 595 const unlocked = window.unlockedAchievements ? window.unlockedAchievements(g.id) : {}; 596 const got = ach.filter(a => unlocked[a.id]).length; 597 return React.createElement(React.Fragment, null, React.createElement("div", { 598 className: "section-head" 599 }, React.createElement("div", { 600 className: "h-section" 601 }, React.createElement("span", { 602 className: "ornament" 603 }), "Achievements"), React.createElement("span", { 604 className: "right" 605 }, got, " / ", ach.length)), React.createElement("div", { 606 style: { 607 padding: "0 20px", 608 display: "flex", 609 flexDirection: "column", 610 gap: 8 611 } 612 }, ach.map(a => { 613 const isUnlocked = !!unlocked[a.id]; 614 return React.createElement("div", { 615 key: a.id, 616 className: "row", 617 style: { 618 gap: 12, 619 padding: 12, 620 background: "var(--bg-2)", 621 border: "1px solid var(--line-1)", 622 borderRadius: 8, 623 opacity: isUnlocked ? 1 : 0.6 624 } 625 }, React.createElement("div", { 626 style: { 627 width: 40, 628 height: 40, 629 borderRadius: 6, 630 flexShrink: 0, 631 background: isUnlocked ? `linear-gradient(135deg, ${window.rarityColor(a.rarity)}40, ${window.rarityColor(a.rarity)}15)` : "var(--bg-3)", 632 border: `1px solid ${isUnlocked ? window.rarityColor(a.rarity) : "var(--line-2)"}`, 633 display: "flex", 634 alignItems: "center", 635 justifyContent: "center", 636 color: window.rarityColor(a.rarity) 637 } 638 }, isUnlocked ? React.createElement(Icon.trophy, { 639 style: { 640 width: 18, 641 height: 18 642 } 643 }) : React.createElement(Icon.lock, { 644 style: { 645 width: 14, 646 height: 14, 647 color: "var(--ink-4)" 648 } 649 })), React.createElement("div", { 650 className: "col", 651 style: { 652 flex: 1 653 } 654 }, React.createElement("div", { 655 className: "row", 656 style: { 657 gap: 6 658 } 659 }, React.createElement("div", { 660 style: { 661 fontFamily: "var(--f-display)", 662 fontSize: 12, 663 color: "var(--ink-1)", 664 letterSpacing: "0.04em", 665 textTransform: "uppercase" 666 } 667 }, a.title), React.createElement("span", { 668 style: { 669 fontSize: 8, 670 letterSpacing: "0.16em", 671 fontWeight: 700, 672 textTransform: "uppercase", 673 color: window.rarityColor(a.rarity) 674 } 675 }, a.rarity)), React.createElement("div", { 676 className: "meta", 677 style: { 678 fontSize: 11, 679 marginTop: 2 680 } 681 }, a.desc)), React.createElement("div", { 682 className: "meta", 683 style: { 684 fontSize: 10, 685 textAlign: "right", 686 color: isUnlocked ? window.rarityColor(a.rarity) : "var(--ink-4)" 687 } 688 }, isUnlocked ? "Unlocked" : "Locked")); 689 }
689))); 690 })(), window.GAME_TIE_INS[g.id] && window.GAME_TIE_INS[g.id].length > 0 && React.createElement(React.Fragment, null, React.createElement("div", { 691 className: "section-head" 692 }, React.createElement("div", { 693 className: "h-section", 694 style: { 695 color: "var(--gold)" 696 } 697 }, React.createElement("span", { 698 className: "ornament", 699 style: { 700 background: "linear-gradient(90deg, transparent, var(--gold))" 701 } 702 }), "From the World of ", g.title.split(" ").slice(-2).join(" "))), React.createElement("div", { 703 className: "meta", 704 style: { 705 padding: "0 20px 8px", 706 fontSize: 11 707 } 708 }, "Tabletop editions, novels, art books and lore from the same realm."), React.createElement("div", { 709 className: "h-scroll", 710 style: { 711 paddingBottom: 24 712 } 713 }, window.GAME_TIE_INS[g.id].map(pid => { 714 const tp = window.getProduct(pid); 715 if (!tp) return null; 716 const isBook = tp.kind === "book"; 717 const isBoardGame = tp.category === "Board Games"; 718 const kindLabel = isBook ? tp.title.toLowerCase().includes("novel") || tp.title.toLowerCase().includes("ashfall") || tp.title.toLowerCase().includes("bloodmoon") ? "NOVEL" : tp.title.toLowerCase().includes("art of") ? "ART BOOK" : "LORE BOOK" : isBoardGame ? "TABLETOP EDITION" : "MERCH"; 719 return React.createElement("div", { 720 key: pid, 721 className: "tap", 722 style: { 723 flex: "0 0 160px" 724 }, 725 onClick: () => go("product", { 726 id: pid 727 }) 728 }, React.createElement("div", { 729 style: { 730 height: 200, 731 borderRadius: 8, 732 overflow: "hidden", 733 border: "1px solid var(--line-1)", 734 position: "relative" 735 } 736 }, React.createElement(KeyArt, { 737 variant: tp.art, 738 img: tp.image 739 }), React.createElement("div", { 740 style: { 741 position: "absolute", 742 top: 8, 743 left: 8 744 } 745 }, React.createElement("span", { 746 className: "badge", 747 style: { 748 fontSize: 8, 749 color: isBoardGame ? "var(--crimson-hi)" : "var(--gold)", 750 background: isBoardGame ? "rgba(194,56,74,0.18)" : "rgba(200,162,75,0.14)", 751 border: `1px solid ${isBoardGame ? "var(--crimson-dim)" : "var(--gold-dim)"}` 752 } 753 }, kindLabel))), React.createElement("div", { 754 style: { 755 fontFamily: "var(--f-display)", 756 fontSize: 11, 757 color: "var(--ink-1)", 758 marginTop: 8, 759 letterSpacing: "0.04em", 760 textTransform: "uppercase", 761 lineHeight: 1.25, 762 display: "-webkit-box", 763 WebkitLineClamp: 2, 764 WebkitBoxOrient: "vertical", 765 overflow: "hidden", 766 minHeight: 28 767 } 768 }, tp.title), React.createElement("div", { 769 className: "row", 770 style: { 771 marginTop: 4, 772 justifyContent: "space-between" 773 } 774 }, React.createElement("span", { 775 style: { 776 fontFamily: "var(--f-display)", 777 fontSize: 13, 778 color: "var(--ink-0)" 779 } 780 }, "\xA3", tp.price.toFixed(2)), React.createElement("span", { 781 style: { 782 fontSize: 9, 783 color: tp.stock === "in" ? "var(--online)" : "var(--away)", 784 fontWeight: 700, 785 letterSpacing: "0.1em" 786 } 787 }, tp.stock === "in" ? "IN STOCK" : "LOW"))); 788 }))))); 789} 790Object.assign(window, { 791 GameDetailScreen, 792 TopBar 793}); 794})();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.