youtube, intagram, html tokens support

This commit is contained in:
tmshv committed 2020-03-21 20:03:56 +03:00
1 parent a13b642979
commit be836c42be
1 file changed
+42
+42
View File
@@ -9,6 +9,7 @@ import { createApiUrl, requestGet, IResponseItems } from 'src/next-lib'
import { NextPage } from 'next'
import { IBreadcumbsPart, IMeta, IPage, ITag, FileTokenData, Token } from 'src/types'
import { joinTokens } from 'src/lib/tokens'
import { Html } from 'src/components/Html'
function array<T>(value: T | T[]) {
return Array.isArray(value)
@@ -16,6 +17,26 @@ function array<T>(value: T | T[]) {
: [value]
}
const Youtube: React.SFC<{ url: string }> = props => {
const url = new URL(props.url)
const videoId = url.searchParams.get('v')
if (!videoId) {
return null
}
const src = `//www.youtube.com/embed/${videoId}`
return (
<div className="kazimir__video">
<iframe
src={src}
frameBorder="0"
// allowFullscreen
/>
</div>
)
}
const File: React.SFC<FileTokenData> = props => (
<div className="document-row">
<a href={props['url']} className="invisible">
@@ -74,6 +95,27 @@ const Index: NextPage<Props> = props => (
/>
)
case 'html':
return (
<Html
html={x.data}
/>
)
case 'instagram':
return (
<Html
html={x.data.embed}
/>
)
case 'youtube':
return (
<Youtube
url={x.data.url}
/>
)
case 'image':
return (
<div className="kazimir__image">