0.0.6 • Published 5 years ago

@evo/youtube v0.0.6

Weekly downloads
13
License
ISC
Repository
-
Last release
5 years ago

Youtube

Компонент подгружает iframe с видео только после клика на изображение(превью). Это способуствует экономии около 500Кб на каждом видео при загрузке страницы и более высокой оценке в PageSpeed Insights. По умолчанию используется превью в формате webp в самом высоком качестве - maxresdefault и если такое не найдено будет выбрано следующее более низкого качества вплоть до значения mqdefault. Если и оно отсутствует, то будет удален тег <source> где указывается путь к wepb изображению и выше описанные шаги повторяются для превью в формате jpg. Так как youtube при 404й ошибке отдает заглушку (превью не найдено или ссылка битая), то принцип проверки наличия этого превью заключается в проверке высоты текущего изображения. У заглушки оно равняется 90рх, поэтому все что <= этому размеру приравнивается к отсутствию превью и будет отображаться спиннер на черном фоне. Размеры превью:

  • maxresdefault (1280×720px)
  • sddefault (640×480px)
  • hqdefault (480×360px)
  • mqdefault (320×180px)
  • default (120x90px) Это значение не используется по указанным выше причинам!

Использование

Пример:

import Youtube from '@evo/youtube';

<Youtube
    id='-OHgXJR1r4E'
    buttonAriaLabel={i18n`Запустить видео`}
/>

В этом случае размер превью будет выбран самостоятельно с наилучшим доступным качеством.

Dependencies

В проекте, который будет использовать данный компонент, должны быть установлены следующие зависимости:

"peerDependencies": {
    "classnames": "^2.1.3",
    "react": "^16.2.0",
    "react-dom": "^16.2.0",
    "prop-types": "^15.6.1"
},

Props

NameTypeDefaultDescription
idStringRequiredid видео. Пример для: https://www.youtube.com/watch?v=-OHgXJR1r4E id='-OHgXJR1r4E'
autoplaybooltrueАвтовоспроизведение видео сразу после клика по превью или нажатию клавиш SPACE или ENTER когда видео находится в фокусе. Пример: autoplay={false} // Отключит автовоспроизведение.
showinfobooltrueПроигрыватель перед началом воспроизведения НЕ выводит информацию о видео, такую как название и автор видео. Подробнее Пример: bashowinfo={false} // Установит значине по умолчанию.
relbooltrueЭтот параметр определяет, будут ли воспроизводиться похожие видео после завершения показа исходного видео. Подробнее Пример: rel={false} // Установит значине по умолчанию.
startNumbernullЕсли этот параметр определен, то проигрыватель начинает воспроизведение видео с указанной секунды. Подробнее Пример: start={66}
endNumbernullЭтот параметр определяет время, измеряемое в секундах от начала видео, когда проигрыватель должен остановить воспроизведение видео. Подробнее Пример: end={99}
extraParamsStringnullВозможность указать другие параметры. Список доступных Примеры: extraParams='loop=1' extraParams='controls=0&loop=1' // Два и больше разделять знаком &
webpThumbnailbooltrueВывод превью в формате webp для браузеров которые его поддерживает. Важно: В некоторых старых видео и/или с плохим качеством оно может отсутствовать.
customImagefuncundefinedВозможность вставить свое изображение. Пример
classNameStringnullВозможность указать доп. класс для корневого блока. Примеры: className='some-class' className={css.someClass}
aspectRatioString16:9Соотношение сторон для корневого блока. Примеры: aspectRation='16:10' aspectRation='18:9.5'
thumbnailSizeString *oneOf( )Выбор качества превью из доступных на youtube. Принимает одно из заданных значений: 'maxresdefault', 'sddefault', 'hqdefault', 'mqdefault' Пример: thumbnailSize='sddefault' // Примечание Примечание: Если заданное изображение не будет найдено, то подставится доступное худшего качества.
buttonAriaLabelStringRun videoВозможность заменить стандартный текст и при необходимости обернуть в перевод. Пример: buttonAriaLabel={t`Запустить видео`} buttonAriaLabel={i18n`Запустить видео`}

customImage

const image = (onClick, onLoad, className) => (
    <img
        className={className}
        src='https://upload.wikimedia.org/wikipedia/commons/f/ff/Pizigani_1367_Chart_10MB.jpg'
        alt=''
        onClick={onClick}
        onLoad={onLoad}
    />
);

<Youtube
    id='-OHgXJR1r4E'
    customImage={image}
/>