Initial Commit

This commit is contained in:
2026-05-27 23:47:53 +01:00
parent fbc70f96e6
commit 9b28db724f
18103 changed files with 1600554 additions and 0 deletions

View File

@@ -0,0 +1,63 @@
import type { Meta, StoryObj } from "@storybook/react";
import { createPackedResourceManager } from "@suaveplan/packer-browser";
import { PackedResourceProvider } from "../../provider/packed-resource-provider/packed-resource-provider.js";
import { usePackedVideo } from "./use-packed-video.js";
const BYTES = new Uint8Array(16);
function makeManager(): ReturnType<typeof createPackedResourceManager> {
return createPackedResourceManager({
fetch: async (): Promise<Response> =>
new Response(BYTES, {
status: 200,
headers: { "content-type": "video/webm" },
}),
});
}
function Demo({ src }: { src: string | null }): React.ReactElement {
const { url, status, error } = usePackedVideo(src);
return (
<div>
<p>status: {status}</p>
<p>error: {error?.code ?? "<none>"}</p>
{url !== null ? (
<video controls src={url}>
<track kind="captions" />
</video>
) : null}
</div>
);
}
const meta: Meta<typeof Demo> = {
title: "react-packer/usePackedVideo",
component: Demo,
};
export default meta;
type Story = StoryObj<typeof Demo>;
export const Default: Story = {
render: () => (
<PackedResourceProvider value={{ manager: makeManager() }}>
<Demo src="/demo.video.packed" />
</PackedResourceProvider>
),
};
export const Idle: Story = {
render: () => (
<PackedResourceProvider value={{ manager: makeManager() }}>
<Demo src={null} />
</PackedResourceProvider>
),
};
export const PlaygroundStory: Story = {
name: "Playground",
render: () => (
<PackedResourceProvider value={{ manager: makeManager() }}>
<Demo src="/playground.video.packed" />
</PackedResourceProvider>
),
};