Browse Source
* refactor: move ActionButton component * refactor: move BanUserButton component * refactor: move ChatActionMessage component * refactor: move ChatContainer component * refactor: move AuthModal component * refactor: move BrowserNotifyModal component * refactor: move ChatUserMessage component * refactor: move ChatJoinMessage component * refactor: move ChatTextField component * refactor: move ChatUserBadge component * refactor: move FollowerCollection and SingleFollower components * fix: bad import path * refactor: move FollowModal component * refactor: move Modal component * refactor: move ContentHeader component * refactor: move ChatSystemMessage component * refactor: move Header component * refactor: move Footer component * refactor: move StatusBar component * refactor: move OfflineBanner component * refactor: move OwncastPlayer component * refactor: move IndieAuthModal component * refactor: move SocialLinks component * refactor: move VideoPoster component * refactor: move FollowModal component * refactor: move FediAuthModal.tsx component * refactor: move UserDropdown component * refactor: move ChatSocialMessage component * refactor: move Logo component * refactor: move NotifyReminderPopup component * refactor: move NameChangeModal component * refactor: move FatalErrorStateModal component * refactor: move ChatModeratorNotification component * refactor: move ChatModerationActionMenu and ChatModerationDetailsModal components * refactor: move CustomPageContent component * refactor: move storybook Introduction file * refactor: update storybook story import path * refactor: move storybook preview styles * refactor: move storybook doc pages * refactor: move Color and ImageAsset components * fix: bad import path * fix: bad import path in story filepull/2083/head
82 changed files with 121 additions and 122 deletions
@ -0,0 +1,2 @@
@@ -0,0 +1,2 @@
|
||||
@import '../styles/globals'; |
||||
@import '../styles/ant-overrides'; |
@ -1,7 +1,7 @@
@@ -1,7 +1,7 @@
|
||||
import { Meta } from '@storybook/addon-docs'; |
||||
import { Typography } from 'antd'; |
||||
import UserChatMessage from '../components/chat/ChatUserMessage'; |
||||
import { ChatMessage } from '../interfaces/chat-message.model'; |
||||
import UserChatMessage from '../../components/chat/ChatUserMessage'; |
||||
import { ChatMessage } from '../../interfaces/chat-message.model'; |
||||
|
||||
<Meta title="Owncast/Documentation/Chat" /> |
||||
|
@ -1,5 +1,5 @@
@@ -1,5 +1,5 @@
|
||||
import { Canvas, Meta, Story } from '@storybook/addon-docs'; |
||||
import { Color, ColorRow } from './Color'; |
||||
import { Color, ColorRow } from '../../components/Color'; |
||||
|
||||
<Meta title="owncast/Style Guide/Default Theme" /> |
||||
|
@ -1,12 +1,12 @@
@@ -1,12 +1,12 @@
|
||||
import { Canvas, Meta, Story } from '@storybook/addon-docs'; |
||||
import { Image, ImageRow } from './ImageAsset'; |
||||
|
||||
import Logo from '../assets/images/logo.svg'; |
||||
import FediverseColor from '../assets/images/fediverse-color.png'; |
||||
import FediverseBlack from '../assets/images/fediverse-black.png'; |
||||
import Moderator from '../assets/images/moderator.svg'; |
||||
import IndieAuth from '../assets/images/indieauth.png'; |
||||
import IsBot from '../assets/images/bot.svg'; |
||||
import { Image, ImageRow } from '../../components/ImageAsset'; |
||||
|
||||
import Logo from '../../assets/images/logo.svg'; |
||||
import FediverseColor from '../../assets/images/fediverse-color.png'; |
||||
import FediverseBlack from '../../assets/images/fediverse-black.png'; |
||||
import Moderator from '../../assets/images/moderator.svg'; |
||||
import IndieAuth from '../../assets/images/indieauth.png'; |
||||
import IsBot from '../../assets/images/bot.svg'; |
||||
|
||||
<Meta title="owncast/Style Guide/Images+Icons" /> |
||||
|
@ -1,6 +1,6 @@
@@ -1,6 +1,6 @@
|
||||
import React from 'react'; |
||||
import { ComponentStory, ComponentMeta } from '@storybook/react'; |
||||
import ActionButton from '../components/action-buttons/ActionButton'; |
||||
import ActionButton from './ActionButton'; |
||||
|
||||
export default { |
||||
title: 'owncast/Components/Action Buttons/Single button', |
@ -1,7 +1,7 @@
@@ -1,7 +1,7 @@
|
||||
import { Button } from 'antd'; |
||||
import { useState } from 'react'; |
||||
import Modal from '../ui/Modal/Modal'; |
||||
import { ExternalAction } from '../../interfaces/external-action'; |
||||
import Modal from '../../ui/Modal/Modal'; |
||||
import { ExternalAction } from '../../../interfaces/external-action'; |
||||
import s from './ActionButton.module.scss'; |
||||
|
||||
interface Props { |
@ -1,7 +1,7 @@
@@ -1,7 +1,7 @@
|
||||
import React from 'react'; |
||||
import { ComponentStory, ComponentMeta } from '@storybook/react'; |
||||
import ActionButtonRow from '../components/action-buttons/ActionButtonRow'; |
||||
import ActionButton from '../components/action-buttons/ActionButton'; |
||||
import ActionButtonRow from './ActionButtonRow'; |
||||
import ActionButton from '../ActionButton/ActionButton'; |
||||
|
||||
export default { |
||||
title: 'owncast/Components/Action Buttons/Buttons Row', |
@ -1,5 +1,5 @@
@@ -1,5 +1,5 @@
|
||||
import React from 'react'; |
||||
import s from './ActionButtons.module.scss'; |
||||
import s from './ActionButtonRow.module.scss'; |
||||
|
||||
interface Props { |
||||
children: React.ReactNode[]; |
@ -1,7 +1,7 @@
@@ -1,7 +1,7 @@
|
||||
import React from 'react'; |
||||
import { ComponentStory, ComponentMeta } from '@storybook/react'; |
||||
import ChatActionMessage from '../components/chat/ChatAction/ChatActionMessage'; |
||||
import Mock from './assets/mocks/chatmessage-action.png'; |
||||
import ChatActionMessage from './ChatActionMessage'; |
||||
import Mock from '../../../stories/assets/mocks/chatmessage-action.png'; |
||||
|
||||
export default { |
||||
title: 'owncast/Chat/Messages/Chat action', |
@ -1,8 +1,8 @@
@@ -1,8 +1,8 @@
|
||||
import React, { useState } from 'react'; |
||||
import { ComponentStory, ComponentMeta } from '@storybook/react'; |
||||
import { RecoilRoot } from 'recoil'; |
||||
import ChatContainer from '../components/chat/ChatContainer'; |
||||
import { ChatMessage } from '../interfaces/chat-message.model'; |
||||
import ChatContainer from './index'; |
||||
import { ChatMessage } from '../../../interfaces/chat-message.model'; |
||||
|
||||
export default { |
||||
title: 'owncast/Chat/Chat messages container', |
@ -1,7 +1,7 @@
@@ -1,7 +1,7 @@
|
||||
import React from 'react'; |
||||
import { ComponentStory, ComponentMeta } from '@storybook/react'; |
||||
import ChatJoinMessage from '../components/chat/ChatJoinMessage/ChatJoinMessage'; |
||||
import Mock from './assets/mocks/chatmessage-action.png'; |
||||
import ChatJoinMessage from './ChatJoinMessage'; |
||||
import Mock from '../../../stories/assets/mocks/chatmessage-action.png'; |
||||
|
||||
export default { |
||||
title: 'owncast/Chat/Messages/Chat Join', |
@ -1,7 +1,7 @@
@@ -1,7 +1,7 @@
|
||||
import React from 'react'; |
||||
import { ComponentStory, ComponentMeta } from '@storybook/react'; |
||||
import { RecoilRoot } from 'recoil'; |
||||
import ChatModerationActionMenu from '../components/chat/ChatModerationActionMenu/ChatModerationActionMenu'; |
||||
import ChatModerationActionMenu from './ChatModerationActionMenu'; |
||||
|
||||
const mocks = { |
||||
mocks: [ |
@ -1,7 +1,7 @@
@@ -1,7 +1,7 @@
|
||||
import React from 'react'; |
||||
import { ComponentStory, ComponentMeta } from '@storybook/react'; |
||||
import { RecoilRoot } from 'recoil'; |
||||
import ChatModerationDetailsModal from '../components/chat/ChatModerationActionMenu/ChatModerationDetailsModal'; |
||||
import ChatModerationDetailsModal from './ChatModerationDetailsModal'; |
||||
|
||||
const mocks = { |
||||
mocks: [ |
@ -1,6 +1,6 @@
@@ -1,6 +1,6 @@
|
||||
import React from 'react'; |
||||
import { ComponentStory, ComponentMeta } from '@storybook/react'; |
||||
import ChatModeratorNotification from '../components/chat/ChatModeratorNotification/ChatModeratorNotification'; |
||||
import ChatModeratorNotification from './ChatModeratorNotification'; |
||||
|
||||
export default { |
||||
title: 'owncast/Chat/Messages/Moderation Role Notification', |
@ -1,6 +1,6 @@
@@ -1,6 +1,6 @@
|
||||
import React from 'react'; |
||||
import { ComponentStory, ComponentMeta } from '@storybook/react'; |
||||
import ChatSocialMessage from '../components/chat/ChatSocialMessage'; |
||||
import ChatSocialMessage from './ChatSocialMessage'; |
||||
|
||||
export default { |
||||
title: 'owncast/Chat/Messages/Social-fediverse event', |
@ -1,6 +1,6 @@
@@ -1,6 +1,6 @@
|
||||
/* eslint-disable react/no-unused-prop-types */ |
||||
/* eslint-disable @typescript-eslint/no-unused-vars */ |
||||
import { ChatMessage } from '../../interfaces/chat-message.model'; |
||||
import { ChatMessage } from '../../../interfaces/chat-message.model'; |
||||
|
||||
interface Props { |
||||
message: ChatMessage; |
@ -1,8 +1,8 @@
@@ -1,8 +1,8 @@
|
||||
import React from 'react'; |
||||
import { ComponentStory, ComponentMeta } from '@storybook/react'; |
||||
import ChatSystemMessage from '../components/chat/ChatSystemMessage/ChatSystemMessage'; |
||||
import Mock from './assets/mocks/chatmessage-system.png'; |
||||
import { ChatMessage } from '../interfaces/chat-message.model'; |
||||
import ChatSystemMessage from './ChatSystemMessage'; |
||||
import Mock from '../../../stories/assets/mocks/chatmessage-system.png'; |
||||
import { ChatMessage } from '../../../interfaces/chat-message.model'; |
||||
|
||||
export default { |
||||
title: 'owncast/Chat/Messages/System', |
@ -1,8 +1,8 @@
@@ -1,8 +1,8 @@
|
||||
import React from 'react'; |
||||
import { ComponentStory, ComponentMeta } from '@storybook/react'; |
||||
import { RecoilRoot } from 'recoil'; |
||||
import ChatTextField from '../components/chat/ChatTextField/ChatTextField'; |
||||
import Mock from './assets/mocks/chatinput-mock.png'; |
||||
import ChatTextField from './ChatTextField'; |
||||
import Mock from '../../../stories/assets/mocks/chatinput-mock.png'; |
||||
|
||||
export default { |
||||
title: 'owncast/Chat/Input text field', |
@ -1,6 +1,6 @@
@@ -1,6 +1,6 @@
|
||||
import React from 'react'; |
||||
import { ComponentStory, ComponentMeta } from '@storybook/react'; |
||||
import ChatUserBadge from '../components/chat/ChatUserBadge/ChatUserBadge'; |
||||
import ChatUserBadge from './ChatUserBadge'; |
||||
|
||||
export default { |
||||
title: 'owncast/Chat/Messages/User Flag', |
@ -1,6 +1,6 @@
@@ -1,6 +1,6 @@
|
||||
import React from 'react'; |
||||
import { ComponentStory, ComponentMeta } from '@storybook/react'; |
||||
import ContentHeader from '../components/common/ContentHeader/ContentHeader'; |
||||
import ContentHeader from './ContentHeader'; |
||||
|
||||
export default { |
||||
title: 'owncast/Components/Content Header', |
@ -1,6 +1,6 @@
@@ -1,6 +1,6 @@
|
||||
import React from 'react'; |
||||
import { ComponentStory, ComponentMeta } from '@storybook/react'; |
||||
import { OwncastLogo } from '../components/common'; |
||||
import OwncastLogo from './Logo'; |
||||
|
||||
export default { |
||||
title: 'owncast/Components/Header Logo', |
@ -1,7 +1,7 @@
@@ -1,7 +1,7 @@
|
||||
import React from 'react'; |
||||
import { ComponentStory, ComponentMeta } from '@storybook/react'; |
||||
import { RecoilRoot } from 'recoil'; |
||||
import { UserDropdown } from '../components/common'; |
||||
import UserDropdown from './UserDropdown'; |
||||
|
||||
export default { |
||||
title: 'owncast/Components/User settings menu', |
@ -1,7 +1,7 @@
@@ -1,7 +1,7 @@
|
||||
import React from 'react'; |
||||
import { ComponentStory, ComponentMeta } from '@storybook/react'; |
||||
import { RecoilRoot } from 'recoil'; |
||||
import AuthModal from '../components/modals/AuthModal/AuthModal'; |
||||
import AuthModal from './AuthModal'; |
||||
|
||||
const Example = () => ( |
||||
<div> |
@ -1,8 +1,8 @@
@@ -1,8 +1,8 @@
|
||||
import React from 'react'; |
||||
import { ComponentStory, ComponentMeta } from '@storybook/react'; |
||||
import { RecoilRoot } from 'recoil'; |
||||
import BrowserNotifyModal from '../components/modals/BrowserNotify/BrowserNotifyModal'; |
||||
import BrowserNotifyModalMock from './assets/mocks/notify-modal.png'; |
||||
import BrowserNotifyModal from './BrowserNotifyModal'; |
||||
import BrowserNotifyModalMock from '../../../stories/assets/mocks/notify-modal.png'; |
||||
|
||||
const Example = () => ( |
||||
<div> |
@ -1,6 +1,6 @@
@@ -1,6 +1,6 @@
|
||||
import React from 'react'; |
||||
import { ComponentStory, ComponentMeta } from '@storybook/react'; |
||||
import FatalErrorStateModal from '../components/modals/FatalErrorModal'; |
||||
import FatalErrorStateModal from './FatalErrorStateModal'; |
||||
|
||||
export default { |
||||
title: 'owncast/Modals/Global error state', |
@ -1,7 +1,7 @@
@@ -1,7 +1,7 @@
|
||||
import React from 'react'; |
||||
import { ComponentStory, ComponentMeta } from '@storybook/react'; |
||||
import FediAuthModal from '../components/modals/FediAuthModal'; |
||||
import FediAuthModalMock from './assets/mocks/fediauth-modal.png'; |
||||
import FediAuthModal from './FediAuthModal'; |
||||
import FediAuthModalMock from '../../../stories/assets/mocks/fediauth-modal.png'; |
||||
|
||||
const Example = () => ( |
||||
<div> |
@ -1,7 +1,7 @@
@@ -1,7 +1,7 @@
|
||||
import React from 'react'; |
||||
import { ComponentStory, ComponentMeta } from '@storybook/react'; |
||||
import FollowModal from '../components/modals/Follow/FollowModal'; |
||||
import FollowModalMock from './assets/mocks/follow-modal.png'; |
||||
import FollowModal from './FollowModal'; |
||||
import FollowModalMock from '../../../stories/assets/mocks/follow-modal.png'; |
||||
|
||||
const Example = () => ( |
||||
<div> |
@ -1,7 +1,7 @@
@@ -1,7 +1,7 @@
|
||||
import React from 'react'; |
||||
import { ComponentStory, ComponentMeta } from '@storybook/react'; |
||||
import IndieAuthModal from '../components/modals/IndieAuthModal'; |
||||
import Mock from './assets/mocks/indieauth-modal.png'; |
||||
import IndieAuthModal from './IndieAuthModal'; |
||||
import Mock from '../../../stories/assets/mocks/indieauth-modal.png'; |
||||
|
||||
const Example = () => ( |
||||
<div> |
@ -1,6 +1,6 @@
@@ -1,6 +1,6 @@
|
||||
import { Alert, Button, Input, Space, Spin, Collapse, Typography } from 'antd'; |
||||
import React, { useState } from 'react'; |
||||
import isValidURL from '../../utils/urls'; |
||||
import isValidURL from '../../../utils/urls'; |
||||
|
||||
const { Panel } = Collapse; |
||||
const { Link } = Typography; |
@ -1,7 +1,7 @@
@@ -1,7 +1,7 @@
|
||||
import React from 'react'; |
||||
import { ComponentStory, ComponentMeta } from '@storybook/react'; |
||||
import { RecoilRoot } from 'recoil'; |
||||
import NameChangeModal from '../components/modals/NameChangeModal'; |
||||
import NameChangeModal from './NameChangeModal'; |
||||
|
||||
export default { |
||||
title: 'owncast/Modals/Name change', |
@ -1,13 +1,13 @@
@@ -1,13 +1,13 @@
|
||||
import React, { CSSProperties, useState } from 'react'; |
||||
import { useRecoilValue } from 'recoil'; |
||||
import { Input, Button, Select } from 'antd'; |
||||
import { MessageType } from '../../interfaces/socket-events'; |
||||
import WebsocketService from '../../services/websocket-service'; |
||||
import { MessageType } from '../../../interfaces/socket-events'; |
||||
import WebsocketService from '../../../services/websocket-service'; |
||||
import { |
||||
websocketServiceAtom, |
||||
chatDisplayNameAtom, |
||||
chatDisplayColorAtom, |
||||
} from '../stores/ClientConfigStore'; |
||||
} from '../../stores/ClientConfigStore'; |
||||
|
||||
const { Option } = Select; |
||||
|
@ -1,7 +1,7 @@
@@ -1,7 +1,7 @@
|
||||
import { Modal, Button } from 'antd'; |
||||
import { ExclamationCircleFilled, QuestionCircleFilled, StopTwoTone } from '@ant-design/icons'; |
||||
import { USER_ENABLED_TOGGLE, fetchData } from '../utils/apis'; |
||||
import { User } from '../types/chat'; |
||||
import { USER_ENABLED_TOGGLE, fetchData } from '../../../utils/apis'; |
||||
import { User } from '../../../types/chat'; |
||||
|
||||
interface BanUserButtonProps { |
||||
user: User; |
@ -1,7 +1,7 @@
@@ -1,7 +1,7 @@
|
||||
/* eslint-disable no-useless-escape */ |
||||
import React from 'react'; |
||||
import { ComponentStory, ComponentMeta } from '@storybook/react'; |
||||
import CustomPageContent from '../components/ui/CustomPageContent/CustomPageContent'; |
||||
import CustomPageContent from './CustomPageContent'; |
||||
|
||||
export default { |
||||
title: 'owncast/Components/Custom page content', |
@ -1,6 +1,6 @@
@@ -1,6 +1,6 @@
|
||||
import React from 'react'; |
||||
import { ComponentStory, ComponentMeta } from '@storybook/react'; |
||||
import Footer from '../components/ui/Footer/Footer'; |
||||
import Footer from './Footer'; |
||||
|
||||
export default { |
||||
title: 'owncast/Layout/Footer', |
@ -1,7 +1,7 @@
@@ -1,7 +1,7 @@
|
||||
import React from 'react'; |
||||
import { ComponentStory, ComponentMeta } from '@storybook/react'; |
||||
import { RecoilRoot } from 'recoil'; |
||||
import Header from '../components/ui/Header/Header'; |
||||
import Header from './Header'; |
||||
|
||||
export default { |
||||
title: 'owncast/Layout/Header', |
@ -1,6 +1,6 @@
@@ -1,6 +1,6 @@
|
||||
import React from 'react'; |
||||
import { ComponentStory, ComponentMeta } from '@storybook/react'; |
||||
import Modal from '../components/ui/Modal/Modal'; |
||||
import Modal from './Modal'; |
||||
|
||||
export default { |
||||
title: 'owncast/Modals/Container', |
@ -1,7 +1,7 @@
@@ -1,7 +1,7 @@
|
||||
import React from 'react'; |
||||
import { ComponentStory, ComponentMeta } from '@storybook/react'; |
||||
import OfflineBanner from '../components/ui/OfflineBanner/OfflineBanner'; |
||||
import OfflineState from './assets/mocks/offline-state.png'; |
||||
import OfflineBanner from './OfflineBanner'; |
||||
import OfflineState from '../../../stories/assets/mocks/offline-state.png'; |
||||
|
||||
export default { |
||||
title: 'owncast/Layout/Offline Banner', |
@ -1,6 +1,6 @@
@@ -1,6 +1,6 @@
|
||||
import React from 'react'; |
||||
import { ComponentStory, ComponentMeta } from '@storybook/react'; |
||||
import SocialLinks from '../components/ui/SocialLinks/SocialLinks'; |
||||
import SocialLinks from './SocialLinks'; |
||||
|
||||
export default { |
||||
title: 'owncast/Components/Social links', |
@ -1,7 +1,7 @@
@@ -1,7 +1,7 @@
|
||||
import React from 'react'; |
||||
import { ComponentStory, ComponentMeta } from '@storybook/react'; |
||||
import { subHours } from 'date-fns'; |
||||
import Statusbar from '../components/ui/Statusbar/Statusbar'; |
||||
import Statusbar from './Statusbar'; |
||||
|
||||
export default { |
||||
title: 'owncast/Player/Status bar', |
@ -0,0 +1,3 @@
@@ -0,0 +1,3 @@
|
||||
.followers { |
||||
width: 100%; |
||||
} |
@ -1,6 +1,6 @@
@@ -1,6 +1,6 @@
|
||||
import React from 'react'; |
||||
import { ComponentStory, ComponentMeta } from '@storybook/react'; |
||||
import FollowerCollection from '../components/ui/Followers/FollowersCollection'; |
||||
import FollowerCollection from './FollowerCollection'; |
||||
|
||||
export default { |
||||
title: 'owncast/Components/Followers/Followers collection', |
@ -1,8 +1,8 @@
@@ -1,8 +1,8 @@
|
||||
import { useEffect, useState } from 'react'; |
||||
import { Col, Pagination, Row } from 'antd'; |
||||
import { Follower } from '../../../interfaces/follower'; |
||||
import SingleFollower from './Follower'; |
||||
import s from './Followers.module.scss'; |
||||
import { Follower } from '../../../../interfaces/follower'; |
||||
import SingleFollower from '../SingleFollower/SingleFollower'; |
||||
import s from '../SingleFollower/SingleFollower.module.scss'; |
||||
|
||||
export default function FollowerCollection() { |
||||
const ENDPOINT = '/api/followers'; |
@ -1,7 +1,7 @@
@@ -1,7 +1,7 @@
|
||||
import React from 'react'; |
||||
import { ComponentStory, ComponentMeta } from '@storybook/react'; |
||||
import SingleFollower from '../components/ui/Followers/Follower'; |
||||
import SingleFollowerMock from './assets/mocks/single-follower.png'; |
||||
import SingleFollower from './SingleFollower'; |
||||
import SingleFollowerMock from '../../../../stories/assets/mocks/single-follower.png'; |
||||
|
||||
export default { |
||||
title: 'owncast/Components/Followers/Single Follower', |
@ -1,7 +1,7 @@
@@ -1,7 +1,7 @@
|
||||
import { Avatar, Col, Row } from 'antd'; |
||||
import React from 'react'; |
||||
import { Follower } from '../../../interfaces/follower'; |
||||
import s from './Followers.module.scss'; |
||||
import { Follower } from '../../../../interfaces/follower'; |
||||
import s from './SingleFollower.module.scss'; |
||||
|
||||
interface Props { |
||||
follower: Follower; |
@ -1,7 +1,7 @@
@@ -1,7 +1,7 @@
|
||||
import React from 'react'; |
||||
import { ComponentStory, ComponentMeta } from '@storybook/react'; |
||||
import { RecoilRoot } from 'recoil'; |
||||
import OwncastPlayer from '../components/video/OwncastPlayer'; |
||||
import OwncastPlayer from './OwncastPlayer'; |
||||
|
||||
const streams = { |
||||
DemoServer: `https://watch.owncast.online/hls/stream.m3u8`, |
@ -1,14 +1,14 @@
@@ -1,14 +1,14 @@
|
||||
import React, { useEffect } from 'react'; |
||||
import { useRecoilState, useRecoilValue } from 'recoil'; |
||||
import { useHotkeys } from 'react-hotkeys-hook'; |
||||
import VideoJS from './player'; |
||||
import ViewerPing from './viewer-ping'; |
||||
import VideoPoster from './VideoPoster'; |
||||
import { getLocalStorage, setLocalStorage } from '../../utils/localStorage'; |
||||
import { isVideoPlayingAtom, clockSkewAtom } from '../stores/ClientConfigStore'; |
||||
import PlaybackMetrics from './metrics/playback'; |
||||
import createVideoSettingsMenuButton from './settings-menu'; |
||||
import LatencyCompensator from './latencyCompensator'; |
||||
import VideoJS from '../player'; |
||||
import ViewerPing from '../viewer-ping'; |
||||
import VideoPoster from '../VideoPoster/VideoPoster'; |
||||
import { getLocalStorage, setLocalStorage } from '../../../utils/localStorage'; |
||||
import { isVideoPlayingAtom, clockSkewAtom } from '../../stores/ClientConfigStore'; |
||||
import PlaybackMetrics from '../metrics/playback'; |
||||
import createVideoSettingsMenuButton from '../settings-menu'; |
||||
import LatencyCompensator from '../latencyCompensator'; |
||||
|
||||
const VIDEO_CONFIG_URL = '/api/video/variants'; |
||||
const PLAYER_VOLUME = 'owncast_volume'; |
@ -1,6 +1,6 @@
@@ -1,6 +1,6 @@
|
||||
import React from 'react'; |
||||
import { ComponentStory, ComponentMeta } from '@storybook/react'; |
||||
import VideoPoster from '../components/video/VideoPoster'; |
||||
import VideoPoster from './VideoPoster'; |
||||
|
||||
export default { |
||||
title: 'owncast/Player/Video poster', |
@ -1,5 +1,5 @@
@@ -1,5 +1,5 @@
|
||||
import { useEffect, useState } from 'react'; |
||||
import CrossfadeImage from '../ui/CrossfadeImage/CrossfadeImage'; |
||||
import CrossfadeImage from '../../ui/CrossfadeImage/CrossfadeImage'; |
||||
import s from './VideoPoster.module.scss'; |
||||
|
||||
const REFRESH_INTERVAL = 20_000; |
Loading…
Reference in new issue