From 51d8b62a4dc16198ae419eda0243f453393db667 Mon Sep 17 00:00:00 2001 From: Daniel Jacobs Date: Fri, 1 Mar 2024 21:09:08 -0500 Subject: [PATCH] Don't dynamically create the static logo --- src/app/index.module.css | 4 ++++ src/components/logo.tsx | 29 ++++++++++++----------------- 2 files changed, 16 insertions(+), 17 deletions(-) diff --git a/src/app/index.module.css b/src/app/index.module.css index 41a68c5f..16401f49 100644 --- a/src/app/index.module.css +++ b/src/app/index.module.css @@ -42,6 +42,10 @@ transform: translateY(-50%); } +.hidden { + display: none; +} + .title { text-align: center; margin-bottom: calc(var(--mantine-spacing-xl)); diff --git a/src/components/logo.tsx b/src/components/logo.tsx index 34f36b8e..796db18b 100644 --- a/src/components/logo.tsx +++ b/src/components/logo.tsx @@ -1,6 +1,7 @@ "use client"; import React from "react"; +import Image from "next/image"; import Script from "next/script"; import classes from "../app/index.module.css"; @@ -36,17 +37,6 @@ export default class InteractiveLogo extends React.Component { this.container = React.createRef(); } - private createStaticLogo() { - if (this.container.current) { - const staticLogo = document.createElement("IMG") as HTMLImageElement; - staticLogo.src = "/logo.svg"; - staticLogo.alt = "Ruffle Logo"; - staticLogo.className = classes.staticLogo; - this.container.current.textContent = ""; - this.container.current.appendChild(staticLogo); - } - } - private load() { if (this.player) { // Already loaded. @@ -57,7 +47,6 @@ export default class InteractiveLogo extends React.Component { if (this.player) { this.container.current!.appendChild(this.player); - this.player.load({ url: "/logo-anim.swf", autoplay: "on", @@ -66,16 +55,21 @@ export default class InteractiveLogo extends React.Component { contextMenu: "off", splashScreen: false, preferredRenderer: "canvas", + }).then(() => { + this?.container?.current?.querySelector("img")?.classList?.toggle(classes.hidden); }).catch(() => { - this.createStaticLogo(); + this.player?.remove(); + this.player = null; }); this.player.style.width = "100%"; this.player.style.height = "100%"; - } else { - this.createStaticLogo(); } } + componentDidMount() { + this.load(); + } + componentWillUnmount() { this.player?.remove(); this.player = null; @@ -87,9 +81,10 @@ export default class InteractiveLogo extends React.Component {