Files
outline/shared/editor/embeds/Spotify.tsx

43 lines
941 B
TypeScript

import * as React from "react";
import styled from "styled-components";
import Frame from "../components/Frame";
import { EmbedProps as Props } from ".";
function Spotify({ matches, ...props }: Props) {
let pathname = "";
try {
const parsed = new URL(props.attrs.href);
pathname = parsed.pathname;
} catch (err) {
pathname = "";
}
const normalizedPath = pathname.replace(/^\/embed/, "/");
let height;
if (normalizedPath.includes("episode") || normalizedPath.includes("show")) {
height = 232;
} else if (normalizedPath.includes("track")) {
height = 80;
} else {
height = 380;
}
return (
<SpotifyFrame
{...props}
width="100%"
height={`${height}px`}
src={`https://open.spotify.com/embed${normalizedPath}`}
title="Spotify Embed"
allow="encrypted-media"
/>
);
}
const SpotifyFrame = styled(Frame)`
border-radius: 13px;
`;
export default Spotify;