diff --git a/components/ArticleDetail.js b/components/ArticleDetail.js index 0e91dc34..2a86de3f 100644 --- a/components/ArticleDetail.js +++ b/components/ArticleDetail.js @@ -19,11 +19,12 @@ import 'prismjs/components/prism-javascript' import 'prismjs/components/prism-markup' import 'prismjs/components/prism-python' import 'prismjs/components/prism-typescript' -import { useRef } from 'react' +import { useEffect, useRef } from 'react' import { Code, Collection, CollectionRow, Equation, NotionRenderer } from 'react-notion-x' import ArticleCopyright from './ArticleCopyright' import Live2D from './Live2D' import WordCount from './WordCount' +import mediumZoom from 'medium-zoom' /** * @@ -37,6 +38,19 @@ export default function ArticleDetail ({ post, blockMap, recommendPosts, prev, n const { locale } = useGlobal() const date = formatDate(post?.date?.start_date || post.createdTime, locale.LOCALE) + const zoom = typeof window !== 'undefined' && mediumZoom({ + container: '.notion-viewport', + background: 'rgba(0, 0, 0, 0.2)', + margin: getMediumZoomMargin() + }) + const zoomRef = useRef(zoom ? zoom.clone() : null) + function attachZoom (image) { + if (zoomRef.current) { + (zoomRef.current).attach(image) + } + } + const attachZoomRef = attachZoom + return (<>