feat: multi-purpose site

feat: editor
feat: plugin editor
This commit is contained in:
2024-08-01 01:31:04 +02:00
parent b8b903c5e1
commit 8b2bfee099
15 changed files with 262 additions and 64 deletions

View File

@@ -5,21 +5,21 @@
import { ChordsReplayPlugin } from "./core/plugins/chords.js";
import type { ReplayPlayer } from "./core/player.js";
const player: ReplayPlayer | undefined = getContext("replay");
const player: { player: ReplayPlayer | undefined } = getContext("replay");
let {
chords = $bindable([]),
count = 1,
}: {
chords: InferredChord[];
count: number;
count?: number;
} = $props();
if (browser) {
$effect(() => {
if (!player) return;
if (!player.player) return;
const tracker = new ChordsReplayPlugin();
tracker.register(player);
tracker.register(player.player);
const unsubscribe = tracker.subscribe((value) => {
chords = value.slice(-count);
});

View File

@@ -3,14 +3,14 @@
import { RollingWpmReplayPlugin } from "./core/plugins/rolling-wpm";
import type { ReplayPlayer } from "./core/player";
const player: ReplayPlayer | undefined = getContext("replay");
const player: { player: ReplayPlayer | undefined } = getContext("replay");
let { wpm = $bindable(0) } = $props();
$effect(() => {
if (!player) return;
if (!player.player) return;
const tracker = new RollingWpmReplayPlugin();
tracker.register(player);
tracker.register(player.player);
const unsubscribe = tracker.subscribe((value) => {
wpm = value;
});

View File

@@ -10,6 +10,7 @@ export const popup: Action<HTMLButtonElement, Component> = (
let target: HTMLElement | undefined;
const edit = tippy(node, {
interactive: true,
placement: "right",
trigger: "click",
onShow(instance) {
target = instance.popper.querySelector(".tippy-content") as HTMLElement;