[remark-wiki-link][xs]: add support youtu.be links
This commit is contained in:
parent
06d39779ce
commit
71716ab018
5
.changeset/spicy-terms-worry.md
Normal file
5
.changeset/spicy-terms-worry.md
Normal file
@ -0,0 +1,5 @@
|
||||
---
|
||||
'@portaljs/remark-embed': patch
|
||||
---
|
||||
|
||||
Add support for shortened yt links (https://youtu.be).
|
||||
@ -1,14 +1,29 @@
|
||||
import { visit } from "unist-util-visit";
|
||||
|
||||
// https://youtu.be/vDuh7vDgGIg
|
||||
|
||||
// TODO write tests!
|
||||
function transformer(tree) {
|
||||
visit(tree, "paragraph", (node) => {
|
||||
visit(node, "text", (textNode) => {
|
||||
if (
|
||||
textNode.value.includes("https://www.youtube.com") &&
|
||||
(textNode.value.includes("https://www.youtube.com") ||
|
||||
textNode.value.includes("https://youtu.be")
|
||||
) &&
|
||||
!textNode.value.includes("\n")
|
||||
) {
|
||||
const urlSplit = textNode.value.split(/[=&]+/);
|
||||
const iframeUrl = `https://www.youtube.com/embed/${urlSplit[1]}`;
|
||||
let videoId: string;
|
||||
|
||||
if (textNode.value.includes("https://youtu.be")) {
|
||||
// Extract video ID for short YT URLs
|
||||
videoId = textNode.value.split("/").pop();
|
||||
} else {
|
||||
// Extract video ID for full YT URLs
|
||||
const urlSplit = textNode.value.split(/[=&]+/);
|
||||
videoId = urlSplit[1];
|
||||
}
|
||||
|
||||
const iframeUrl = `https://www.youtube.com/embed/${videoId}`;
|
||||
Object.assign(node, {
|
||||
...node,
|
||||
type: "element",
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user