From 32233410625f3568b444617a29a07fdaf56b8c7d Mon Sep 17 00:00:00 2001 From: Tom Moor Date: Mon, 4 Sep 2023 20:47:52 -0400 Subject: [PATCH] feat: Add Valtown embed support --- public/images/valtown.png | Bin 0 -> 5406 bytes shared/editor/embeds/Valtown.tsx | 19 +++++++++++++++++++ shared/editor/embeds/index.tsx | 7 +++++++ 3 files changed, 26 insertions(+) create mode 100644 public/images/valtown.png create mode 100644 shared/editor/embeds/Valtown.tsx diff --git a/public/images/valtown.png b/public/images/valtown.png new file mode 100644 index 0000000000000000000000000000000000000000..2738bd653a0fc3a4c9ae0f4c3e415b2f7c3b06f4 GIT binary patch literal 5406 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 literal 0 HcmV?d00001 diff --git a/shared/editor/embeds/Valtown.tsx b/shared/editor/embeds/Valtown.tsx new file mode 100644 index 000000000..586b84999 --- /dev/null +++ b/shared/editor/embeds/Valtown.tsx @@ -0,0 +1,19 @@ +import * as React from "react"; +import Frame from "../components/Frame"; +import { EmbedProps as Props } from "."; + +export default function Valtown(props: Props) { + const { matches } = props.attrs; + const valId = matches[1]; + + return ( + + ); +} + +Valtown.ENABLED = [/^https?:\/\/(?:www.)?val\.town\/(?:v|embed)\/(.*)$/]; diff --git a/shared/editor/embeds/index.tsx b/shared/editor/embeds/index.tsx index 083c43d1c..5558b8a2b 100644 --- a/shared/editor/embeds/index.tsx +++ b/shared/editor/embeds/index.tsx @@ -47,6 +47,7 @@ import Spotify from "./Spotify"; import Tldraw from "./Tldraw"; import Trello from "./Trello"; import Typeform from "./Typeform"; +import Valtown from "./Valtown"; import Vimeo from "./Vimeo"; import Whimsical from "./Whimsical"; import YouTube from "./YouTube"; @@ -384,6 +385,12 @@ const embeds: EmbedDescriptor[] = [ icon: Typeform, component: Typeform, }), + new EmbedDescriptor({ + title: "Valtown", + keywords: "code", + icon: Valtown, + component: Valtown, + }), new EmbedDescriptor({ title: "Vimeo", keywords: "video",