diff --git a/web/plugins/com.msgbyte.bbcode/src/tags/ImgTag.tsx b/web/plugins/com.msgbyte.bbcode/src/tags/ImgTag.tsx new file mode 100644 index 00000000..acda5a64 --- /dev/null +++ b/web/plugins/com.msgbyte.bbcode/src/tags/ImgTag.tsx @@ -0,0 +1,12 @@ +import React from 'react'; +import { Image } from '@capital/component'; +import type { TagProps } from '../bbcode/type'; + +export const ImgTag: React.FC = React.memo((props) => { + const { node } = props; + const text = node.content.join(''); + const url = node.attrs.url ?? text; + + return ; +}); +ImgTag.displayName = 'ImgTag'; diff --git a/web/plugins/com.msgbyte.bbcode/src/tags/__all__.ts b/web/plugins/com.msgbyte.bbcode/src/tags/__all__.ts index e492127b..35308c24 100644 --- a/web/plugins/com.msgbyte.bbcode/src/tags/__all__.ts +++ b/web/plugins/com.msgbyte.bbcode/src/tags/__all__.ts @@ -1,6 +1,8 @@ import { registerBBCodeTag } from '../bbcode/parser'; +import { ImgTag } from './ImgTag'; import { PlainText } from './PlainText'; import { UrlTag } from './UrlTag'; registerBBCodeTag('_text', PlainText); registerBBCodeTag('url', UrlTag); +registerBBCodeTag('img', ImgTag); diff --git a/web/src/components/Image.tsx b/web/src/components/Image.tsx new file mode 100644 index 00000000..b7f78b14 --- /dev/null +++ b/web/src/components/Image.tsx @@ -0,0 +1,13 @@ +import React from 'react'; +import { Image as AntdImage, ImageProps as AntdImageProps } from 'antd'; + +export const Image: React.FC = React.memo((props) => { + return ( + + ); +}); +Image.displayName = 'Image'; diff --git a/web/src/components/modals/ImageUploadPreviewer.tsx b/web/src/components/modals/ImageUploadPreviewer.tsx index e7a31e83..5e2fbd62 100644 --- a/web/src/components/modals/ImageUploadPreviewer.tsx +++ b/web/src/components/modals/ImageUploadPreviewer.tsx @@ -21,7 +21,7 @@ export const ImageUploadPreviewer: React.FC =
- +
diff --git a/web/src/plugin/component/index.tsx b/web/src/plugin/component/index.tsx index cf911aa8..24ac375c 100644 --- a/web/src/plugin/component/index.tsx +++ b/web/src/plugin/component/index.tsx @@ -1,4 +1,5 @@ import Button from 'antd/lib/button'; import TextArea from 'antd/lib/input/TextArea'; +import { Image } from '@/components/Image'; -export { Button, TextArea }; +export { Button, TextArea, Image }; diff --git a/web/src/styles/antd/overwrite.less b/web/src/styles/antd/overwrite.less index c2911d64..384bd6fa 100644 --- a/web/src/styles/antd/overwrite.less +++ b/web/src/styles/antd/overwrite.less @@ -20,3 +20,7 @@ background-color: black; } } + +.ant-image-preview-img { + display: inline; +}