From 632799fea6ead4bfee29c77bd9f073ca4d7b8cc9 Mon Sep 17 00:00:00 2001 From: Tom Moor Date: Tue, 14 Dec 2021 16:06:31 -0800 Subject: [PATCH] feat: Add 'Whimsical' as embed provider --- public/images/whimsical.png | Bin 0 -> 12907 bytes shared/embeds/Whimsical.tsx | 22 ++++++++++++++++++++++ shared/embeds/index.tsx | 8 ++++++++ 3 files changed, 30 insertions(+) create mode 100644 public/images/whimsical.png create mode 100644 shared/embeds/Whimsical.tsx diff --git a/public/images/whimsical.png b/public/images/whimsical.png new file mode 100644 index 0000000000000000000000000000000000000000..8ec678f3a064c5a66d59b61cfb4b687d45e16a4c GIT binary patch literal 12907 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%0DkAG7b6$&ZRI>1TCkxIete$5J4|6&Z?s}orI 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 VxkEa&3{L<6002ovPDHLkV1ieo+k*fA literal 0 HcmV?d00001 diff --git a/shared/embeds/Whimsical.tsx b/shared/embeds/Whimsical.tsx new file mode 100644 index 000000000..3e71dc9aa --- /dev/null +++ b/shared/embeds/Whimsical.tsx @@ -0,0 +1,22 @@ +import * as React from "react"; +import Frame from "./components/Frame"; +import { EmbedProps as Props } from "."; + +const URL_REGEX = /^https?:\/\/whimsical.com\/[0-9a-zA-Z-_~]*-([a-zA-Z0-9]+)\/?$/; + +export default class Whimsical extends React.Component { + static ENABLED = [URL_REGEX]; + + render() { + const { matches } = this.props.attrs; + const boardId = matches[1]; + + return ( + + ); + } +} diff --git a/shared/embeds/index.tsx b/shared/embeds/index.tsx index f03836cb1..9ec9a8f39 100644 --- a/shared/embeds/index.tsx +++ b/shared/embeds/index.tsx @@ -32,6 +32,7 @@ import Spotify from "./Spotify"; import Trello from "./Trello"; import Typeform from "./Typeform"; import Vimeo from "./Vimeo"; +import Whimsical from "./Whimsical"; import YouTube from "./YouTube"; import Image from "./components/Image"; @@ -292,6 +293,13 @@ const embeds: EmbedDescriptor[] = [ component: Vimeo, matcher: matcher(Vimeo), }, + { + title: "Whimsical", + keywords: "whiteboard", + icon: () => Whimsical, + component: Whimsical, + matcher: matcher(Whimsical), + }, { title: "YouTube", keywords: "google video",