Research
Security News
Quasar RAT Disguised as an npm Package for Detecting Vulnerabilities in Ethereum Smart Contracts
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
@justinribeiro/lite-youtube
Advanced tools
A web component that loads YouTube embed iframes faster. ShadowDom based version of Paul Irish' concept.
A web component that renders YouTube embeds faster. The ShadowDom web component version of Paul's lite-youtube-embed.
videotitle
attributevideoplay
to have a properly locale based labelstart
attribute to start at a particular place in a videoautoload
to use Intersection Observer to load the iframe when scrolled into view.nocookie
attr for use with use youtube-nocookie.com as iframe embed uriplaylistid
for playlist loading interface supportloading=lazy
to image placeholder for more perf with posterloading
attr if you'd like to use eagershort
attr for enabling experimental YouTube Shorts mobile interaction support. See (example video)[https://www.youtube.com/watch?v=aw7CRQTuRfo] for details.window.liteYouTubeNonce
for CSP 2/3 support.autoPause
for pausing videos scrolled off screen; adds --lite-youtube-aspect-ratio
CSS custom property create custom aspect ratio videos; adds --lite-youtube-frame-shadow-visible
CSS custom property to disable frame shadow (flat look); adds a named slot image
that allows for setting custom poster image; adds credentialless
for COEPThis web component is built with ES modules in mind and is available on NPM:
To install, use your package manager of choice:
npm i @justinribeiro/lite-youtube
# or
yarn add @justinribeiro/lite-youtube
After install, import into your project:
import '@justinribeiro/lite-youtube';
If you want the paste-and-go version, you can simply load it via CDN:
<script type="module" src="https://cdn.jsdelivr.net/npm/@justinribeiro/lite-youtube@1/lite-youtube.min.js"></script>
<lite-youtube videoid="guJLfqTFfIw"></lite-youtube>
A fallback appears in any of the following circumstances:
<noscript>
)<lite-youtube videoid="guJLfqTFfIw">
<a class="lite-youtube-fallback" href="https://www.youtube.com/watch?v=guJLfqTFfIw">Watch on YouTube: "Sample output of devtools-to-video cli tool"</a>
</lite-youtube>
Example CSS:
.lite-youtube-fallback {
aspect-ratio: 16 / 9; /* matches YouTube player */
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
gap: 1em;
padding: 1em;
background-color: #000;
color: #fff;
text-decoration: none;
}
/* right-facing triangle "Play" icon */
.lite-youtube-fallback::before {
display: block;
content: '';
border: solid transparent;
border-width: 2em 0 2em 3em;
border-left-color: red;
}
.lite-youtube-fallback:hover::before {
border-left-color: #fff;
}
.lite-youtube-fallback:focus {
outline: 2px solid red;
}
Setting the YouTube playlistid allows the playlist interface to load on interaction. Note, this still requires a videoid for to load a placeholder thumbnail as YouTube does not return a thumbnail for playlists in the API.
<lite-youtube
videoid="VLrYOji75Vc"
playlistid="PL-G5r6j4GptH5JTveoLTVqpp7w2oc27Q9"
></lite-youtube>
<lite-youtube
videotitle="This is a video title"
videoid="guJLfqTFfIw"
></lite-youtube>
<lite-youtube
videoplay="Mirar"
videotitle="Mis hijos se burlan de mi español"
videoid="guJLfqTFfIw"
>
</lite-youtube>
Height and Width are responsive in the component.
<style>
.styleIt {
width: 400px;
margin: auto;
}
</style>
<div class="styleIt">
<lite-youtube videoid="guJLfqTFfIw"></lite-youtube>
</div>
See the example video of how this feature works for additional details.
<lite-youtube videoid="vMImN9gghao" short></lite-youtube>
Uses Intersection Observer if available to automatically load the YouTube iframe when scrolled into view.
<lite-youtube videoid="guJLfqTFfIw" autoload> </lite-youtube>
<!-- Start at 5 seconds -->
<lite-youtube videoid="guJLfqTFfIw" videoStartAt="5"></lite-youtube>
<lite-youtube
videoid="guJLfqTFfIw"
posterquality="maxresdefault"
></lite-youtube>
<lite-youtube videoid="guJLfqTFfIw">
<img slot="image" src="my-poster-override.jpg">
</lite-youtube>
<style>
lite-youtube {
--lite-youtube-aspect-ratio: 2 / 3;
}
</style>
<lite-youtube videoid="guJLfqTFfIw"></lite-youtube>
<style>
lite-youtube {
/* No Shadow */
--lite-youtube-frame-shadow-visible: no;
}
</style>
<lite-youtube videoid="guJLfqTFfIw"></lite-youtube>
<lite-youtube videoid="VLrYOji75Vc" autopause></lite-youtube>
Use any YouTube Embedded Players and Player Parameters you like.
Note: the exception to this rule is the autoplay param; because of the nature of the performance loading and the inconsistency of usage, that parameter generally does not work. See this comment for details.
<lite-youtube videoid="guJLfqTFfIw" params="controls=0&enablejsapi=1">
</lite-youtube>
The web component allows certain attributes to be give a little additional flexibility.
Name | Description | Default |
---|---|---|
videoid | The YouTube videoid | `` |
playlistid | The YouTube playlistid; requires a videoid for thumbnail | `` |
videotitle | The title of the video | Video |
videoplay | The title of the play button (for translation) | Play |
videoStartAt | Set the point at which the video should start, in seconds | 0 |
posterquality | Set thumbnail poster quality (maxresdefault, sddefault, mqdefault, hqdefault) | hqdefault |
posterloading | Set img lazy load attr loading for poster image | lazy |
nocookie | Use youtube-nocookie.com as iframe embed uri | false |
autoload | Use Intersection Observer to load iframe when scrolled into view | false |
short | Show 9:16 YouTube Shorts-style interaction on mobile devices | false |
params | Set YouTube query parameters | `` |
The web component fires events to give the ability understand important lifecycle.
Event Name | Description | Returns |
---|---|---|
liteYoutubeIframeLoaded | When the iframe is loaded, allowing us of JS API | detail: { videoId: this.videoId } |
FAQs
A web component that loads YouTube embed iframes faster. ShadowDom based version of Paul Irish' concept.
We found that @justinribeiro/lite-youtube demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
Security News
Research
A supply chain attack on Rspack's npm packages injected cryptomining malware, potentially impacting thousands of developers.
Research
Security News
Socket researchers discovered a malware campaign on npm delivering the Skuld infostealer via typosquatted packages, exposing sensitive data.