Skip to content

Commit

Permalink
feat: 暴露预览区域图片点击事件的回调
Browse files Browse the repository at this point in the history
  • Loading branch information
sunsonliu committed Jun 9, 2022
1 parent 6d8a769 commit 203ff13
Show file tree
Hide file tree
Showing 6 changed files with 28 additions and 2 deletions.
2 changes: 2 additions & 0 deletions examples/preview_only.html
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/katex.min.css"
integrity="sha384-AfEj0r4/OFrOo5t7NnNe46zW/tFgW6x/bCJG8FqQCEo3+Aro6EYUG4+cU+KJWu/X" crossorigin="anonymous">
<link href="./markdown/basic.md" rel="preload">
<link rel="stylesheet" href="https://fengyuanchen.github.io/viewerjs/css/viewer.css">
</head>

<body>
Expand All @@ -28,6 +29,7 @@
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts@4.6.0/dist/echarts.js"></script>
<!--<script src="https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/katex.min.js" integrity="sha384-g7c+Jr9ZivxKLnZTDUhnkOnsh30B4H0rpLUpJ4jAIKs4fnJI+sEnkvrMWph2EDg4" crossorigin="anonymous"></script>-->
<script src="../dist/cherry-markdown.js"></script>
<script src="https://fengyuanchen.github.io/viewerjs/js/viewer.js"></script>
<script src="./scripts/preview-demo.js"></script>
</body>

Expand Down
14 changes: 14 additions & 0 deletions examples/scripts/preview-demo.js
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,20 @@ var cherryConfig = {
editor: {
defaultModel: 'previewOnly',
},
callback: {
onClickPreview: function(e) {
const {target} = e;
if(target.tagName === 'IMG') {
console.log('click img', target);
const tmp = new Viewer(target, {
button: false,
navbar: false,
title: [1, (image, imageData) => `${image.alt.replace(/#.+$/, '')} (${imageData.naturalWidth} × ${imageData.naturalHeight})`],
});
tmp.show();
}
}
},
previewer: {
// 自定义markdown预览区域class
// className: 'markdown'
Expand Down
3 changes: 3 additions & 0 deletions src/Cherry.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ const callbacks = {
afterChange: (text, html) => {},
afterInit: (text, html) => {},
beforeImageMounted: (srcProp, src) => ({ srcProp, src }),
onClickPreview: (event) => {},
};

/** @type {Partial<import('~types/cherry').CherryOptions>} */
Expand Down Expand Up @@ -215,6 +216,8 @@ const defaultConfig = {
afterChange: callbacks.afterChange,
afterInit: callbacks.afterInit,
beforeImageMounted: callbacks.beforeImageMounted,
// 预览区域点击事件,previewer.enablePreviewerBubble = true 时生效
onClickPreview: callbacks.onClickPreview,
},
previewer: {
dom: false,
Expand Down
2 changes: 1 addition & 1 deletion src/Cherry.js
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ export default class Cherry extends CherryStatic {
editor: 'show',
};

if (this.options.isPreviewOnly) {
if (this.options.isPreviewOnly || this.options.editor.defaultModel === 'previewOnly') {
this.options.toolbars.showToolbar = false;
this.options.editor.defaultModel = 'previewOnly';
this.status.editor = 'hide';
Expand Down
8 changes: 7 additions & 1 deletion src/toolbars/PreviewerBubble.js
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,13 @@ export default class PreviewerBubble {

$onClick(e) {
// 只有双栏编辑模式才出现该功能
if (this.previewer.$cherry.getStatus().editor === 'hide') {
const cherryStatus = this.previewer.$cherry.getStatus();
if (cherryStatus.editor === 'hide') {
if (cherryStatus.previewer === 'show') {
// 纯预览模式下,支持点击放大图片功能(以回调的形式实现,需要业务侧实现图片放大功能)
this.previewer.$cherry.options.callback.onClickPreview &&
this.previewer.$cherry.options.callback.onClickPreview(e);
}
return;
}
const { target } = e;
Expand Down
1 change: 1 addition & 0 deletions types/cherry.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ export interface CherryOptions {
afterInit: CherryLifecycle;
/** img 标签挂载前触发,可用于懒加载等场景 */
beforeImageMounted: (srcProp: string, src: string) => { srcProp: string; src: string };
onClickPreview: (e: MouseEvent) => void;
};
/** 预览区域配置 */
previewer: CherryPreviewerOptions;
Expand Down

0 comments on commit 203ff13

Please sign in to comment.