From 9576c2e8a66dfe2d3b620ea4ddeb7b5c704acadc Mon Sep 17 00:00:00 2001 From: Nathan Adams Date: Thu, 3 Oct 2024 00:40:10 +0200 Subject: [PATCH] web: Move player stuff to Player module --- web/packages/core/src/index.ts | 5 +---- .../core/src/internal/internal-source-api.ts | 2 +- web/packages/core/src/internal/player/inner.tsx | 2 +- .../src/internal/player/ruffle-player-element.tsx | 3 +-- .../core/src/public/{ => player}/flash.ts | 0 web/packages/core/src/public/player/index.ts | 4 ++++ .../core/src/public/{ => player}/legacy.ts | 6 +++--- .../src/{ => public/player}/movie-metadata.ts | 0 .../src/public/{ => player}/player-element.ts | 0 web/packages/core/src/public/setup/source-api.ts | 2 +- web/packages/demo/src/App.tsx | 6 ++++-- web/packages/demo/src/metadata.tsx | 6 +++--- web/packages/demo/src/player.tsx | 6 +++--- web/packages/extension/src/player.ts | 4 ++-- web/packages/selfhosted/test/js_api/load.ts | 4 ++-- web/packages/selfhosted/test/js_api/metadata.ts | 4 ++-- web/packages/selfhosted/test/utils.ts | 15 ++++++++------- 17 files changed, 36 insertions(+), 33 deletions(-) rename web/packages/core/src/public/{ => player}/flash.ts (100%) create mode 100644 web/packages/core/src/public/player/index.ts rename web/packages/core/src/public/{ => player}/legacy.ts (96%) rename web/packages/core/src/{ => public/player}/movie-metadata.ts (100%) rename web/packages/core/src/public/{ => player}/player-element.ts (100%) diff --git a/web/packages/core/src/index.ts b/web/packages/core/src/index.ts index b7d0cc13c57df..6dd20d598c82a 100644 --- a/web/packages/core/src/index.ts +++ b/web/packages/core/src/index.ts @@ -6,8 +6,5 @@ export * as Setup from "./public/setup"; export * as Config from "./public/config"; +export * as Player from "./public/player"; export * from "./build-info"; -export * from "./movie-metadata"; -export * from "./public/flash"; -export * from "./public/legacy"; -export * from "./public/player-element"; diff --git a/web/packages/core/src/internal/internal-source-api.ts b/web/packages/core/src/internal/internal-source-api.ts index 2a42db307894e..ab4ddc9ac4aa3 100644 --- a/web/packages/core/src/internal/internal-source-api.ts +++ b/web/packages/core/src/internal/internal-source-api.ts @@ -1,6 +1,6 @@ import { buildInfo } from "../build-info"; import { pluginPolyfill, polyfill } from "../polyfills"; -import { PlayerElement } from "../public/player-element"; +import { PlayerElement } from "../public/player"; import { registerElement } from "./register-element"; import { RufflePlayerElement } from "./player/ruffle-player-element"; import { InstallationOptions } from "../public/setup"; diff --git a/web/packages/core/src/internal/player/inner.tsx b/web/packages/core/src/internal/player/inner.tsx index 3cb0231dba19e..8884a3ba413a6 100644 --- a/web/packages/core/src/internal/player/inner.tsx +++ b/web/packages/core/src/internal/player/inner.tsx @@ -9,7 +9,7 @@ import { WindowMode, DEFAULT_CONFIG, } from "../../public/config"; -import type { MovieMetadata } from "../../movie-metadata"; +import type { MovieMetadata } from "../../public/player"; import { ruffleShadowTemplate } from "../ui/shadow-template"; import { text, textAsParagraphs } from "../i18n"; import { swfFileName } from "../../swf-utils"; diff --git a/web/packages/core/src/internal/player/ruffle-player-element.tsx b/web/packages/core/src/internal/player/ruffle-player-element.tsx index 529aee0cfed9b..d9ac7596926f7 100644 --- a/web/packages/core/src/internal/player/ruffle-player-element.tsx +++ b/web/packages/core/src/internal/player/ruffle-player-element.tsx @@ -1,7 +1,6 @@ import type { DataLoadOptions, URLLoadOptions } from "../../public/config"; -import type { MovieMetadata } from "../../movie-metadata"; +import type { MovieMetadata, PlayerElement } from "../../public/player"; import { InnerPlayer, ReadyState } from "./inner"; -import { PlayerElement } from "../../public/player-element"; /** * The ruffle player element that should be inserted onto the page. diff --git a/web/packages/core/src/public/flash.ts b/web/packages/core/src/public/player/flash.ts similarity index 100% rename from web/packages/core/src/public/flash.ts rename to web/packages/core/src/public/player/flash.ts diff --git a/web/packages/core/src/public/player/index.ts b/web/packages/core/src/public/player/index.ts new file mode 100644 index 0000000000000..ad6d0359ccd5e --- /dev/null +++ b/web/packages/core/src/public/player/index.ts @@ -0,0 +1,4 @@ +export * from "./flash"; +export * from "./player-element"; +export * from "./movie-metadata"; +export * from "./legacy"; diff --git a/web/packages/core/src/public/legacy.ts b/web/packages/core/src/public/player/legacy.ts similarity index 96% rename from web/packages/core/src/public/legacy.ts rename to web/packages/core/src/public/player/legacy.ts index 3ec704e14e958..605c4d50e41b9 100644 --- a/web/packages/core/src/public/legacy.ts +++ b/web/packages/core/src/public/player/legacy.ts @@ -1,6 +1,6 @@ -import { DataLoadOptions, URLLoadOptions } from "./config"; -import { MovieMetadata } from "../movie-metadata"; -import { ReadyState } from "../internal/player/inner"; +import { DataLoadOptions, URLLoadOptions } from "../config"; +import { MovieMetadata } from "./movie-metadata"; +import { ReadyState } from "../../internal/player/inner"; /** * Legacy interface to the Ruffle API. diff --git a/web/packages/core/src/movie-metadata.ts b/web/packages/core/src/public/player/movie-metadata.ts similarity index 100% rename from web/packages/core/src/movie-metadata.ts rename to web/packages/core/src/public/player/movie-metadata.ts diff --git a/web/packages/core/src/public/player-element.ts b/web/packages/core/src/public/player/player-element.ts similarity index 100% rename from web/packages/core/src/public/player-element.ts rename to web/packages/core/src/public/player/player-element.ts diff --git a/web/packages/core/src/public/setup/source-api.ts b/web/packages/core/src/public/setup/source-api.ts index 6593d4d969492..0e88b4e25e83a 100644 --- a/web/packages/core/src/public/setup/source-api.ts +++ b/web/packages/core/src/public/setup/source-api.ts @@ -1,4 +1,4 @@ -import { PlayerElement } from "../player-element"; +import { PlayerElement } from "../player"; /** * Represents this particular version of Ruffle. diff --git a/web/packages/demo/src/App.tsx b/web/packages/demo/src/App.tsx index 0c6cc9d4e7891..d0af1119e2417 100644 --- a/web/packages/demo/src/App.tsx +++ b/web/packages/demo/src/App.tsx @@ -1,6 +1,6 @@ import { Player } from "./player.tsx"; import { useRef, useState, DragEvent, useCallback } from "react"; -import type { Config, MovieMetadata } from "ruffle-core"; +import type { Config, Player as RufflePlayer } from "ruffle-core"; import { Navbar } from "./navbar.tsx"; import { MetadataPanel } from "./metadata.tsx"; @@ -15,7 +15,9 @@ export function App({ allowUrlLoading, allowSampleSwfs, }: AppProperties) { - const [metadata, setMetadata] = useState(null); + const [metadata, setMetadata] = useState( + null, + ); const [metadataVisible, setMetadataVisible] = useState(false); const [selectedFilename, setSelectedFilename] = useState( null, diff --git a/web/packages/demo/src/metadata.tsx b/web/packages/demo/src/metadata.tsx index 04e128042d8e5..90088d4824b87 100644 --- a/web/packages/demo/src/metadata.tsx +++ b/web/packages/demo/src/metadata.tsx @@ -1,8 +1,8 @@ -import { MovieMetadata } from "ruffle-core"; +import { Player } from "ruffle-core"; interface MetadataProps { visible: boolean; - metadata: MovieMetadata | null; + metadata: Player.MovieMetadata | null; } const swfToFlashVersion: { [key: number]: string } = { @@ -68,7 +68,7 @@ export function MetadataPanel({ visible, metadata }: MetadataProps) { FP Version {metadata - ? swfToFlashVersion[metadata.swfVersion] ?? "Unknown" + ? (swfToFlashVersion[metadata.swfVersion] ?? "Unknown") : ""} diff --git a/web/packages/demo/src/player.tsx b/web/packages/demo/src/player.tsx index b900007c3785f..f58bb5074df74 100644 --- a/web/packages/demo/src/player.tsx +++ b/web/packages/demo/src/player.tsx @@ -1,10 +1,10 @@ import React, { ReactNode, DragEvent } from "react"; -import { Setup, PlayerElement, MovieMetadata, Config } from "ruffle-core"; +import { Setup, Player as RufflePlayer, Config } from "ruffle-core"; export interface PlayerAttributes { id?: string | undefined; children?: ReactNode; - onLoadedMetadata: (metadata: MovieMetadata) => void; + onLoadedMetadata: (metadata: RufflePlayer.MovieMetadata) => void; baseConfig?: Config.BaseLoadOptions; onDragEnter: (event: DragEvent) => void; onDragLeave: (event: DragEvent) => void; @@ -14,7 +14,7 @@ export interface PlayerAttributes { export class Player extends React.Component { private readonly container: React.RefObject; - private player: PlayerElement | null = null; + private player: RufflePlayer.PlayerElement | null = null; // [NA] Ruffle has a bug where if you load a swf whilst it's already loading another swf, it breaks // Combine this with React testing everything by loading things twice to catch bugs - well, they caught the bug for sure. diff --git a/web/packages/extension/src/player.ts b/web/packages/extension/src/player.ts index 052bc79c776fa..2a9e0df0e77d3 100644 --- a/web/packages/extension/src/player.ts +++ b/web/packages/extension/src/player.ts @@ -1,7 +1,7 @@ import * as utils from "./utils"; import { Setup } from "ruffle-core"; -import type { Config, PlayerElement } from "ruffle-core"; +import type { Config, Player } from "ruffle-core"; declare global { interface Navigator { @@ -15,7 +15,7 @@ declare global { Setup.installRuffle("local"); const ruffle = (window.RufflePlayer as Setup.PublicAPI).newest()!; -let player: PlayerElement; +let player: Player.PlayerElement; const playerContainer = document.getElementById("player-container")!; const overlay = document.getElementById("overlay")!; diff --git a/web/packages/selfhosted/test/js_api/load.ts b/web/packages/selfhosted/test/js_api/load.ts index 538e8c3e10f11..e083fc6e93cb4 100644 --- a/web/packages/selfhosted/test/js_api/load.ts +++ b/web/packages/selfhosted/test/js_api/load.ts @@ -1,7 +1,7 @@ import { loadJsAPI, playAndMonitor } from "../utils.js"; import { use } from "chai"; import chaiHtml from "chai-html"; -import { PlayerElement } from "ruffle-core"; +import { Player } from "ruffle-core"; use(chaiHtml); @@ -12,7 +12,7 @@ describe("RufflePlayer.load", () => { const player = await browser.$(""); await browser.execute(async (playerElement) => { // https://github.com/webdriverio/webdriverio/issues/6486 - const player = playerElement as unknown as PlayerElement; + const player = playerElement as unknown as Player.PlayerElement; await player.load("/test_assets/example.swf"); }, player); await playAndMonitor(browser, player); diff --git a/web/packages/selfhosted/test/js_api/metadata.ts b/web/packages/selfhosted/test/js_api/metadata.ts index d0e2086c895d5..8645af8259c22 100644 --- a/web/packages/selfhosted/test/js_api/metadata.ts +++ b/web/packages/selfhosted/test/js_api/metadata.ts @@ -1,7 +1,7 @@ import { loadJsAPI } from "../utils.js"; import { expect, use } from "chai"; import chaiHtml from "chai-html"; -import { PlayerElement } from "ruffle-core"; +import { Player } from "ruffle-core"; use(chaiHtml); @@ -12,7 +12,7 @@ describe("RufflePlayer.metadata", () => { const player = await browser.$(""); const metadata = await browser.execute( // https://github.com/webdriverio/webdriverio/issues/6486 - (player) => (player as unknown as PlayerElement).metadata, + (player) => (player as unknown as Player.PlayerElement).metadata, player, ); // [NA] Work around a chrome 87 bug where it's (somehow) adding extra data to this object diff --git a/web/packages/selfhosted/test/utils.ts b/web/packages/selfhosted/test/utils.ts index 80f7deb31d336..ba524c426b957 100644 --- a/web/packages/selfhosted/test/utils.ts +++ b/web/packages/selfhosted/test/utils.ts @@ -1,5 +1,5 @@ import { expect } from "chai"; -import { PlayerElement, Setup } from "ruffle-core"; +import { Player, Setup } from "ruffle-core"; declare global { interface Window { @@ -7,7 +7,7 @@ declare global { } } -declare module "ruffle-core" { +declare module "ruffle-core/dist/public/player" { interface PlayerElement { __ruffle_log__: string; } @@ -31,7 +31,7 @@ export async function isRufflePlayerLoaded( (player) => // https://github.com/webdriverio/webdriverio/issues/6486 // TODO: How can we import ReadyState enum? - (player as unknown as PlayerElement).readyState, + (player as unknown as Player.PlayerElement).readyState, player, )) === 2 ); @@ -103,7 +103,7 @@ export async function setupAndPlay( ) { await browser.execute((playerElement) => { // https://github.com/webdriverio/webdriverio/issues/6486 - const player = playerElement as unknown as PlayerElement; + const player = playerElement as unknown as Player.PlayerElement; player.__ruffle_log__ = ""; player.traceObserver = (msg) => { player.__ruffle_log__ += msg + "\n"; @@ -122,7 +122,8 @@ export async function getTraceOutput( return ( (await browser.execute((player) => { // https://github.com/webdriverio/webdriverio/issues/6486 - return (player as unknown as PlayerElement).__ruffle_log__; + return (player as unknown as Player.PlayerElement) + .__ruffle_log__; }, player)) !== "" ); }, @@ -134,7 +135,7 @@ export async function getTraceOutput( // Get the output, and replace it with an empty string for any future test return await browser.execute((playerElement) => { // https://github.com/webdriverio/webdriverio/issues/6486 - const player = playerElement as unknown as PlayerElement; + const player = playerElement as unknown as Player.PlayerElement; const log = player.__ruffle_log__; player.__ruffle_log__ = ""; return log; @@ -190,7 +191,7 @@ export function loadJsAPI(swf?: string) { await browser.execute( async (player, swf) => { // https://github.com/webdriverio/webdriverio/issues/6486 - await (player as unknown as PlayerElement).load(swf); + await (player as unknown as Player.PlayerElement).load(swf); }, player, swf,