Security News
pnpm 10.0.0 Blocks Lifecycle Scripts by Default
pnpm 10 blocks lifecycle scripts by default to improve security, addressing supply chain attack risks but sparking debate over compatibility and workflow changes.
@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.This 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.5.0/lite-youtube.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>
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.
The npm package @justinribeiro/lite-youtube receives a total of 4,979 weekly downloads. As such, @justinribeiro/lite-youtube popularity was classified as popular.
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.
Security News
pnpm 10 blocks lifecycle scripts by default to improve security, addressing supply chain attack risks but sparking debate over compatibility and workflow changes.
Product
Socket now supports uv.lock files to ensure consistent, secure dependency resolution for Python projects and enhance supply chain security.
Research
Security News
Socket researchers have discovered multiple malicious npm packages targeting Solana private keys, abusing Gmail to exfiltrate the data and drain Solana wallets.