* Move shared components to a packages/ directory so they can be publish more sensibly * Iterate towards split out shared-components module * Move shared component source into src/ subdir * Fix up imports * Include shared components in babel-ing (again) * Remove now unused dependencies * Update import in storybook preview * ...except of course they aren't unused if we import the shared components by source * Ignore shared components deps * Add shared-components to i18n paths and upgrade web-i18n to version that supports doing so * Move storybook stuff to shared-components * Seems we don't need this anymore... * Remove unused deps and remove storybook plugin from eslint * Presumably working-directory is only valid on run steps * Ignore dep & run prettier * Prettier on knips.ts * Hopefully run in right dir * Remember how to software write * Okay... how about THIS way? * Oh right, they were git ignored. Sigh. * Add concurrently * Ignore in knip * Better? * Paaaaaaaackageeeeeeees * More packages * Move playwright snapshots * Still need a custom snapshots dir * Add eslint back * Oh, now knip sees them * Fix another import * Don't lint shared-components with everything else Okay, eslint & tsconfig are tied too closely for this to work and running tsc on the shared components will need its deps installing * Maybe lint shared components please? * Not quite * Remove storybook again Re-check if it does work without it * Remove storybook eslint plugin as we're not linting storybook here anymore * Remove this too * We do need it here though
67 lines
1.8 KiB
TypeScript
67 lines
1.8 KiB
TypeScript
/*
|
|
* Copyright 2025 New Vector Ltd.
|
|
*
|
|
* SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial
|
|
* Please see LICENSE files in the repository root for full details.
|
|
*/
|
|
|
|
import React, { type JSX } from "react";
|
|
import { fn } from "storybook/test";
|
|
|
|
import type { Meta, StoryFn } from "@storybook/react-vite";
|
|
import {
|
|
AudioPlayerView,
|
|
type AudioPlayerViewActions,
|
|
type AudioPlayerViewSnapshot,
|
|
type AudioPlayerViewModel,
|
|
} from "./AudioPlayerView";
|
|
import { ViewWrapper } from "../../ViewWrapper";
|
|
|
|
type AudioPlayerProps = AudioPlayerViewSnapshot & AudioPlayerViewActions;
|
|
const AudioPlayerViewWrapper = (props: AudioPlayerProps): JSX.Element => (
|
|
<ViewWrapper<AudioPlayerViewSnapshot, AudioPlayerViewModel> Component={AudioPlayerView} props={props} />
|
|
);
|
|
|
|
export default {
|
|
title: "Audio/AudioPlayerView",
|
|
component: AudioPlayerViewWrapper,
|
|
tags: ["autodocs"],
|
|
argTypes: {
|
|
playbackState: {
|
|
options: ["stopped", "playing", "paused", "decoding"],
|
|
control: { type: "select" },
|
|
},
|
|
},
|
|
args: {
|
|
mediaName: "Sample Audio",
|
|
durationSeconds: 300,
|
|
playedSeconds: 120,
|
|
percentComplete: 30,
|
|
playbackState: "stopped",
|
|
sizeBytes: 3500,
|
|
error: false,
|
|
togglePlay: fn(),
|
|
onKeyDown: fn(),
|
|
onSeekbarChange: fn(),
|
|
},
|
|
} as Meta<typeof AudioPlayerViewWrapper>;
|
|
|
|
const Template: StoryFn<typeof AudioPlayerViewWrapper> = (args) => <AudioPlayerViewWrapper {...args} />;
|
|
|
|
export const Default = Template.bind({});
|
|
|
|
export const NoMediaName = Template.bind({});
|
|
NoMediaName.args = {
|
|
mediaName: undefined,
|
|
};
|
|
|
|
export const NoSize = Template.bind({});
|
|
NoSize.args = {
|
|
sizeBytes: undefined,
|
|
};
|
|
|
|
export const HasError = Template.bind({});
|
|
HasError.args = {
|
|
error: true,
|
|
};
|