mio-previewer 0.2.72 → 0.2.74
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
CHANGED
|
@@ -466,6 +466,7 @@ mio-previewer/
|
|
|
466
466
|
|
|
467
467
|
### Quick Links
|
|
468
468
|
|
|
469
|
+
- [Built-in Plugins Config Guide](./PLUGINS.zh-CN.md) - Configuration schema for all built-in plugins
|
|
469
470
|
- [Plugin System Guide](./docs/PLUGINS.md) - Complete plugin system documentation
|
|
470
471
|
- [Customize Code Block Styles](./docs/CUSTOMIZE_CODEBLOCK_STYLE.md) - Code block theming
|
|
471
472
|
- [KaTeX Configuration](./docs/KATEX_DELIMITERS.md) - Math formula setup
|
package/README.zh-CN.md
CHANGED
|
@@ -42,7 +42,8 @@ impor## 浏览器支持
|
|
|
42
42
|
📚 **[完整文档 →](./docs/README.md)**
|
|
43
43
|
|
|
44
44
|
### 快速链接
|
|
45
|
-
- [
|
|
45
|
+
- [内置插件配置指南](./PLUGINS.zh-CN.md) - 所有内置插件的配置 Schema
|
|
46
|
+
- [插件系统指南](./docs/PLUGINS.md) - 完整的插件系统开发文档
|
|
46
47
|
- [自定义代码块样式](./docs/CUSTOMIZE_CODEBLOCK_STYLE.md) - 代码块主题定制
|
|
47
48
|
- [KaTeX 配置](./docs/KATEX_DELIMITERS.md) - 数学公式设置
|
|
48
49
|
- [更新日志](./CHANGELOG.md) - 版本历史
|
package/dist/mio-previewer.css
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
code[class*=language-],pre[class*=language-]{color:#ccc;background:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#2d2d2d}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.comment,.token.block-comment,.token.prolog,.token.doctype,.token.cdata{color:#999}.token.punctuation{color:#ccc}.token.tag,.token.attr-name,.token.namespace,.token.deleted{color:#e2777a}.token.function-name{color:#6196cc}.token.boolean,.token.number,.token.function{color:#f08d49}.token.property,.token.class-name,.token.constant,.token.symbol{color:#f8c555}.token.selector,.token.important,.token.atrule,.token.keyword,.token.builtin{color:#cc99cd}.token.string,.token.char,.token.attr-value,.token.regex,.token.variable{color:#7ec699}.token.operator,.token.entity,.token.url{color:#67cdcc}.token.important,.token.bold{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:green}.code-block-wrapper[data-v-5a9f6db9]{margin:1.5em 0;background:#262733;border-radius:8px;overflow:hidden;box-shadow:0 2px 6px #6e7d8c12;border:1px solid #222229;position:relative}.code-block-tooltip[data-v-5a9f6db9]{position:fixed;transform:translate(-50%,-100%);margin-top:-8px;background:#000000e6;color:#fff;padding:6px 12px;border-radius:4px;font-size:13px;white-space:nowrap;pointer-events:none;z-index:10000;animation:tooltipFadeIn-5a9f6db9 .2s ease;box-shadow:0 2px 8px #0000004d}.code-block-tooltip[data-v-5a9f6db9]:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:5px solid transparent;border-top-color:#000000e6}@keyframes tooltipFadeIn-5a9f6db9{0%{opacity:0;transform:translate(-50%,calc(-100% - 5px))}to{opacity:1;transform:translate(-50%,-100%)}}.code-block-header[data-v-5a9f6db9]{display:flex;justify-content:space-between;align-items:center;background:#2d2f3a;padding:.35rem .85rem;border-bottom:1px solid #23242d}.lang-label[data-v-5a9f6db9]{color:#a3b0d0;font-size:.89em;font-weight:600;letter-spacing:1px;-webkit-user-select:none;user-select:none}.op-btn-group[data-v-5a9f6db9]{display:flex;gap:.4rem}.op-btn-group button[data-v-5a9f6db9]{border:none;outline:none;background:transparent;color:#8fa3c1;cursor:pointer;border-radius:3px;padding:.21em;transition:color .18s,background .22s;line-height:1;display:flex;align-items:center;font-size:1.02rem;opacity:.85}.op-btn-group button[data-v-5a9f6db9]:hover:not(:disabled){background:#ecf6ff1a}.op-btn-group button[data-v-5a9f6db9]:disabled{cursor:not-allowed;opacity:.5}.copy-code-button[data-v-5a9f6db9]{color:#8fa3c1}.publish-html-button[data-v-5a9f6db9]{color:#10b981}.preview-html-button[data-v-5a9f6db9]{color:#3486ff}.close-preview-button[data-v-5a9f6db9]{color:#ff5d5b;background:#fae8e410}.fullscreen-button[data-v-5a9f6db9]{color:#8b5cf6}.exit-fullscreen-button[data-v-5a9f6db9]{color:#f59e0b}pre[data-v-5a9f6db9],code[data-v-5a9f6db9]{background:transparent;border-radius:0;font-family:JetBrains Mono,Fira Code,Consolas,Menlo,Monaco,monospace;font-size:.92em;line-height:1.6;color:#ddd}pre[data-v-5a9f6db9]{margin:0;padding:1rem;overflow-x:auto;background:#1e1e2e}pre[data-v-5a9f6db9]::-webkit-scrollbar{height:8px;background:transparent}pre[data-v-5a9f6db9]::-webkit-scrollbar-thumb{background-color:#8889;border-radius:4px}pre[data-v-5a9f6db9]::-webkit-scrollbar-thumb:hover{background-color:#888888e6}.iframe-wrapper[data-v-5a9f6db9]{width:100%;overflow:hidden;display:block;position:relative;border:1px solid #ddd;background:#fff;transition:height .1s ease-out}.html-preview-iframe[data-v-5a9f6db9]{width:100%;height:100%;border:none;background:#fff;display:block}.code-block-wrapper.fullscreen[data-v-5a9f6db9]{position:fixed;inset:0;width:100vw;height:100vh;z-index:9999;margin:0;border-radius:0;display:flex;flex-direction:column}.code-block-wrapper.fullscreen .code-block-header[data-v-5a9f6db9]{flex-shrink:0}.code-block-wrapper.fullscreen pre[data-v-5a9f6db9]{flex:1;overflow:auto;max-height:none}.code-block-wrapper.fullscreen .iframe-wrapper[data-v-5a9f6db9]{flex:1;height:auto!important;border:none}.code-block-wrapper.fullscreen .html-preview-iframe[data-v-5a9f6db9]{height:100%}.code-block-wrapper.code-block-wrapper pre{background-color:#1e1e2e!important;background:#1e1e2e!important}.code-block-wrapper.code-block-wrapper code{background:transparent!important}.code-block-wrapper pre[class*=language-]{background-color:#1e1e2e!important;background:#1e1e2e!important}.code-block-wrapper code[class*=language-]{background:transparent!important;background-color:transparent!important}.code-block-wrapper pre,.code-block-wrapper pre code,.code-block-wrapper pre[class*=language-],.code-block-wrapper code[class*=language-],.markdown-body .code-block-wrapper pre,.markdown-body .code-block-wrapper pre[class*=language-]{background-color:#1e1e2e!important;background:#1e1e2e!important}.mermaid-diagram-wrapper[data-v-d873f163]{margin:1em 0;background:var(--mermaid-bg, #f9f9f9);border-radius:8px;border:1px solid var(--mermaid-border, #e0e0e0);position:relative}.mermaid-controls[data-v-d873f163]{position:absolute;top:8px;right:8px;z-index:10;display:flex;gap:8px;align-items:center;background:#ffffffe6;padding:4px 8px;border-radius:6px;box-shadow:0 2px 8px #0000001a}.control-btn[data-v-d873f163]{background:transparent;border:none;cursor:pointer;padding:4px;display:flex;align-items:center;justify-content:center;color:#555;transition:color .2s,background .2s;border-radius:4px}.control-btn[data-v-d873f163]:hover{background:#0000000d;color:#000}.zoom-indicator[data-v-d873f163]{font-size:12px;color:#666;min-width:45px;text-align:center;font-weight:500}.mermaid-diagram[data-v-d873f163]{position:relative;overflow:hidden;padding:1em;cursor:grab;-webkit-user-select:none;user-select:none}.mermaid-diagram.is-dragging[data-v-d873f163]{cursor:grabbing}.mermaid-diagram.is-fullscreen[data-v-d873f163]{position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:9999;background:var(--mermaid-bg, #f9f9f9);margin:0;border-radius:0;display:flex;align-items:center;justify-content:center}.mermaid-diagram-content[data-v-d873f163]{display:flex;justify-content:center;align-items:flex-start;width:100%}.mermaid-diagram.is-fullscreen .mermaid-diagram-content[data-v-d873f163]{align-items:center;height:100%}.mermaid-diagram-content[data-v-d873f163] svg{display:block;height:auto;max-width:100%}.mermaid-error[data-v-d873f163]{color:#c00;background:#fff0f0;padding:1em;border-radius:4px;margin:1em}.mermaid-error pre[data-v-d873f163]{margin:.5em 0 0;font-size:.9em;white-space:pre-wrap}.theme-dark{background:#1e1e1ef2}.theme-dark{color:#bbb}.theme-dark{background:#ffffff1a;color:#fff}.theme-dark{color:#999}@media (prefers-color-scheme: dark){.mermaid-controls[data-v-d873f163],.mermaid-diagram.is-fullscreen[data-v-d873f163]{background:#1e1e1ef2}.control-btn[data-v-d873f163]{color:#bbb}.control-btn[data-v-d873f163]:hover{background:#ffffff1a;color:#fff}.zoom-indicator[data-v-d873f163]{color:#999}}.blinking-cursor[data-v-0d4d5123]{display:inline-block;animation:blink-0d4d5123 1.2s ease-in-out infinite;vertical-align:text-bottom;margin-left:2px}.cursor-square[data-v-0d4d5123]{width:8px;height:1.2em}.cursor-line[data-v-0d4d5123]{width:2px;height:1.2em}.cursor-circle[data-v-0d4d5123]{width:8px;height:8px;border-radius:50%;vertical-align:baseline}@keyframes blink-0d4d5123{0%,to{opacity:1}50%{opacity:.2}}.mio-image-viewer[data-v-
|
|
1
|
+
code[class*=language-],pre[class*=language-]{color:#ccc;background:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#2d2d2d}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.comment,.token.block-comment,.token.prolog,.token.doctype,.token.cdata{color:#999}.token.punctuation{color:#ccc}.token.tag,.token.attr-name,.token.namespace,.token.deleted{color:#e2777a}.token.function-name{color:#6196cc}.token.boolean,.token.number,.token.function{color:#f08d49}.token.property,.token.class-name,.token.constant,.token.symbol{color:#f8c555}.token.selector,.token.important,.token.atrule,.token.keyword,.token.builtin{color:#cc99cd}.token.string,.token.char,.token.attr-value,.token.regex,.token.variable{color:#7ec699}.token.operator,.token.entity,.token.url{color:#67cdcc}.token.important,.token.bold{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:green}.code-block-wrapper[data-v-5a9f6db9]{margin:1.5em 0;background:#262733;border-radius:8px;overflow:hidden;box-shadow:0 2px 6px #6e7d8c12;border:1px solid #222229;position:relative}.code-block-tooltip[data-v-5a9f6db9]{position:fixed;transform:translate(-50%,-100%);margin-top:-8px;background:#000000e6;color:#fff;padding:6px 12px;border-radius:4px;font-size:13px;white-space:nowrap;pointer-events:none;z-index:10000;animation:tooltipFadeIn-5a9f6db9 .2s ease;box-shadow:0 2px 8px #0000004d}.code-block-tooltip[data-v-5a9f6db9]:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:5px solid transparent;border-top-color:#000000e6}@keyframes tooltipFadeIn-5a9f6db9{0%{opacity:0;transform:translate(-50%,calc(-100% - 5px))}to{opacity:1;transform:translate(-50%,-100%)}}.code-block-header[data-v-5a9f6db9]{display:flex;justify-content:space-between;align-items:center;background:#2d2f3a;padding:.35rem .85rem;border-bottom:1px solid #23242d}.lang-label[data-v-5a9f6db9]{color:#a3b0d0;font-size:.89em;font-weight:600;letter-spacing:1px;-webkit-user-select:none;user-select:none}.op-btn-group[data-v-5a9f6db9]{display:flex;gap:.4rem}.op-btn-group button[data-v-5a9f6db9]{border:none;outline:none;background:transparent;color:#8fa3c1;cursor:pointer;border-radius:3px;padding:.21em;transition:color .18s,background .22s;line-height:1;display:flex;align-items:center;font-size:1.02rem;opacity:.85}.op-btn-group button[data-v-5a9f6db9]:hover:not(:disabled){background:#ecf6ff1a}.op-btn-group button[data-v-5a9f6db9]:disabled{cursor:not-allowed;opacity:.5}.copy-code-button[data-v-5a9f6db9]{color:#8fa3c1}.publish-html-button[data-v-5a9f6db9]{color:#10b981}.preview-html-button[data-v-5a9f6db9]{color:#3486ff}.close-preview-button[data-v-5a9f6db9]{color:#ff5d5b;background:#fae8e410}.fullscreen-button[data-v-5a9f6db9]{color:#8b5cf6}.exit-fullscreen-button[data-v-5a9f6db9]{color:#f59e0b}pre[data-v-5a9f6db9],code[data-v-5a9f6db9]{background:transparent;border-radius:0;font-family:JetBrains Mono,Fira Code,Consolas,Menlo,Monaco,monospace;font-size:.92em;line-height:1.6;color:#ddd}pre[data-v-5a9f6db9]{margin:0;padding:1rem;overflow-x:auto;background:#1e1e2e}pre[data-v-5a9f6db9]::-webkit-scrollbar{height:8px;background:transparent}pre[data-v-5a9f6db9]::-webkit-scrollbar-thumb{background-color:#8889;border-radius:4px}pre[data-v-5a9f6db9]::-webkit-scrollbar-thumb:hover{background-color:#888888e6}.iframe-wrapper[data-v-5a9f6db9]{width:100%;overflow:hidden;display:block;position:relative;border:1px solid #ddd;background:#fff;transition:height .1s ease-out}.html-preview-iframe[data-v-5a9f6db9]{width:100%;height:100%;border:none;background:#fff;display:block}.code-block-wrapper.fullscreen[data-v-5a9f6db9]{position:fixed;inset:0;width:100vw;height:100vh;z-index:9999;margin:0;border-radius:0;display:flex;flex-direction:column}.code-block-wrapper.fullscreen .code-block-header[data-v-5a9f6db9]{flex-shrink:0}.code-block-wrapper.fullscreen pre[data-v-5a9f6db9]{flex:1;overflow:auto;max-height:none}.code-block-wrapper.fullscreen .iframe-wrapper[data-v-5a9f6db9]{flex:1;height:auto!important;border:none}.code-block-wrapper.fullscreen .html-preview-iframe[data-v-5a9f6db9]{height:100%}.code-block-wrapper.code-block-wrapper pre{background-color:#1e1e2e!important;background:#1e1e2e!important}.code-block-wrapper.code-block-wrapper code{background:transparent!important}.code-block-wrapper pre[class*=language-]{background-color:#1e1e2e!important;background:#1e1e2e!important}.code-block-wrapper code[class*=language-]{background:transparent!important;background-color:transparent!important}.code-block-wrapper pre,.code-block-wrapper pre code,.code-block-wrapper pre[class*=language-],.code-block-wrapper code[class*=language-],.markdown-body .code-block-wrapper pre,.markdown-body .code-block-wrapper pre[class*=language-]{background-color:#1e1e2e!important;background:#1e1e2e!important}.mermaid-diagram-wrapper[data-v-d873f163]{margin:1em 0;background:var(--mermaid-bg, #f9f9f9);border-radius:8px;border:1px solid var(--mermaid-border, #e0e0e0);position:relative}.mermaid-controls[data-v-d873f163]{position:absolute;top:8px;right:8px;z-index:10;display:flex;gap:8px;align-items:center;background:#ffffffe6;padding:4px 8px;border-radius:6px;box-shadow:0 2px 8px #0000001a}.control-btn[data-v-d873f163]{background:transparent;border:none;cursor:pointer;padding:4px;display:flex;align-items:center;justify-content:center;color:#555;transition:color .2s,background .2s;border-radius:4px}.control-btn[data-v-d873f163]:hover{background:#0000000d;color:#000}.zoom-indicator[data-v-d873f163]{font-size:12px;color:#666;min-width:45px;text-align:center;font-weight:500}.mermaid-diagram[data-v-d873f163]{position:relative;overflow:hidden;padding:1em;cursor:grab;-webkit-user-select:none;user-select:none}.mermaid-diagram.is-dragging[data-v-d873f163]{cursor:grabbing}.mermaid-diagram.is-fullscreen[data-v-d873f163]{position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:9999;background:var(--mermaid-bg, #f9f9f9);margin:0;border-radius:0;display:flex;align-items:center;justify-content:center}.mermaid-diagram-content[data-v-d873f163]{display:flex;justify-content:center;align-items:flex-start;width:100%}.mermaid-diagram.is-fullscreen .mermaid-diagram-content[data-v-d873f163]{align-items:center;height:100%}.mermaid-diagram-content[data-v-d873f163] svg{display:block;height:auto;max-width:100%}.mermaid-error[data-v-d873f163]{color:#c00;background:#fff0f0;padding:1em;border-radius:4px;margin:1em}.mermaid-error pre[data-v-d873f163]{margin:.5em 0 0;font-size:.9em;white-space:pre-wrap}.theme-dark{background:#1e1e1ef2}.theme-dark{color:#bbb}.theme-dark{background:#ffffff1a;color:#fff}.theme-dark{color:#999}@media (prefers-color-scheme: dark){.mermaid-controls[data-v-d873f163],.mermaid-diagram.is-fullscreen[data-v-d873f163]{background:#1e1e1ef2}.control-btn[data-v-d873f163]{color:#bbb}.control-btn[data-v-d873f163]:hover{background:#ffffff1a;color:#fff}.zoom-indicator[data-v-d873f163]{color:#999}}.blinking-cursor[data-v-0d4d5123]{display:inline-block;animation:blink-0d4d5123 1.2s ease-in-out infinite;vertical-align:text-bottom;margin-left:2px}.cursor-square[data-v-0d4d5123]{width:8px;height:1.2em}.cursor-line[data-v-0d4d5123]{width:2px;height:1.2em}.cursor-circle[data-v-0d4d5123]{width:8px;height:8px;border-radius:50%;vertical-align:baseline}@keyframes blink-0d4d5123{0%,to{opacity:1}50%{opacity:.2}}.mio-image-viewer[data-v-768757af]{display:inline-block;max-width:100%;height:auto}/*!
|
|
2
2
|
* Viewer.js v1.11.7
|
|
3
3
|
* https://fengyuanchen.github.io/viewerjs
|
|
4
4
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("../viewer-Canph5Zx.cjs"),t=require("vue"),f=["src","alt","title","data-original","data-index","crossorigin"],h=t.defineComponent({__name:"ImageViewer",props:{src:{},alt:{default:""},title:{default:""},index:{default:0},crossOrigin:{type:Boolean,default:!1},context:{}},setup(i){const r=i,a=t.ref(null),n=t.inject("imageViewerManager",null),e={cursor:"pointer",maxWidth:"100%",height:"auto"},g=t.computed(()=>{const s=r.context?.images||[];if(r.src&&s.length>0){const c=s.findIndex(u=>u.src===r.src);return c!==-1?c:0}return 0}),d=t.computed(()=>r.crossOrigin?r.src.startsWith("http")&&!r.src.includes(window.location.host):!1);t.onMounted(()=>{n&&a.value&&n.registerImage(a.value)}),t.onUnmounted(()=>{n&&a.value&&n.unregisterImage(a.value)});function o(){n&&n.show(g.value)}return(s,c)=>(t.openBlock(),t.createElementBlock("img",{ref_key:"imgRef",ref:a,src:i.src,alt:i.alt,title:i.title,"data-original":i.src,"data-index":i.index,class:"mio-image-viewer",crossorigin:d.value?"anonymous":void 0,style:e,onClick:o},null,8,f))}}),x=l._export_sfc(h,[["__scopeId","data-v-768757af"]]);function v(i){const{priority:r=50,viewerOptions:a={},crossOrigin:n=!1}=i||{};return{name:"imageViewer",priority:r,test:e=>e.type==="tag"&&e.name==="img",render:(e,g,d,o)=>{const s=o?.images||[];let c=0;if(e.attribs?.src&&s.length>0){const u=s.findIndex(m=>m.src===e.attribs?.src);u!==-1&&(c=u)}return t.h(x,{src:e.attribs?.src||"",alt:e.attribs?.alt||"",title:e.attribs?.title||"",index:c,viewerOptions:a,crossOrigin:n,context:o})}}}exports.codeBlockPlugin=l.codeBlockPlugin;exports.cursorPlugin=l.cursorPlugin;exports.emojiPlugin=l.emojiPlugin;exports.mermaidPlugin=l.mermaidPlugin;exports.imageViewerPlugin=v;
|
|
@@ -1,82 +1,85 @@
|
|
|
1
|
-
import { aF as
|
|
2
|
-
import { aG as M, aJ as
|
|
3
|
-
import { defineComponent as
|
|
4
|
-
const
|
|
1
|
+
import { aF as d } from "../viewer-CZUSHxhf.js";
|
|
2
|
+
import { aG as M, aJ as R, aH as j, aI as S } from "../viewer-CZUSHxhf.js";
|
|
3
|
+
import { defineComponent as f, ref as x, inject as h, computed as g, onMounted as v, onUnmounted as w, createElementBlock as p, openBlock as I, h as y } from "vue";
|
|
4
|
+
const k = ["src", "alt", "title", "data-original", "data-index", "crossorigin"], b = /* @__PURE__ */ f({
|
|
5
5
|
__name: "ImageViewer",
|
|
6
6
|
props: {
|
|
7
7
|
src: {},
|
|
8
8
|
alt: { default: "" },
|
|
9
9
|
title: { default: "" },
|
|
10
10
|
index: { default: 0 },
|
|
11
|
+
crossOrigin: { type: Boolean, default: !1 },
|
|
11
12
|
context: {}
|
|
12
13
|
},
|
|
13
14
|
setup(t) {
|
|
14
|
-
const i = t,
|
|
15
|
+
const i = t, n = x(null), r = h("imageViewerManager", null), e = {
|
|
15
16
|
cursor: "pointer",
|
|
16
17
|
maxWidth: "100%",
|
|
17
18
|
height: "auto"
|
|
18
|
-
},
|
|
19
|
-
const
|
|
20
|
-
if (i.src &&
|
|
21
|
-
const
|
|
22
|
-
return
|
|
19
|
+
}, l = g(() => {
|
|
20
|
+
const a = i.context?.images || [];
|
|
21
|
+
if (i.src && a.length > 0) {
|
|
22
|
+
const s = a.findIndex((c) => c.src === i.src);
|
|
23
|
+
return s !== -1 ? s : 0;
|
|
23
24
|
}
|
|
24
25
|
return 0;
|
|
25
|
-
}),
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
}),
|
|
29
|
-
|
|
26
|
+
}), u = g(() => i.crossOrigin ? i.src.startsWith("http") && !i.src.includes(window.location.host) : !1);
|
|
27
|
+
v(() => {
|
|
28
|
+
r && n.value && r.registerImage(n.value);
|
|
29
|
+
}), w(() => {
|
|
30
|
+
r && n.value && r.unregisterImage(n.value);
|
|
30
31
|
});
|
|
31
|
-
function
|
|
32
|
-
|
|
32
|
+
function o() {
|
|
33
|
+
r && r.show(l.value);
|
|
33
34
|
}
|
|
34
|
-
return (
|
|
35
|
+
return (a, s) => (I(), p("img", {
|
|
35
36
|
ref_key: "imgRef",
|
|
36
|
-
ref:
|
|
37
|
+
ref: n,
|
|
37
38
|
src: t.src,
|
|
38
39
|
alt: t.alt,
|
|
39
40
|
title: t.title,
|
|
40
41
|
"data-original": t.src,
|
|
41
42
|
"data-index": t.index,
|
|
42
43
|
class: "mio-image-viewer",
|
|
43
|
-
crossorigin:
|
|
44
|
-
style:
|
|
45
|
-
onClick:
|
|
46
|
-
}, null, 8,
|
|
44
|
+
crossorigin: u.value ? "anonymous" : void 0,
|
|
45
|
+
style: e,
|
|
46
|
+
onClick: o
|
|
47
|
+
}, null, 8, k));
|
|
47
48
|
}
|
|
48
|
-
}),
|
|
49
|
-
function
|
|
49
|
+
}), C = /* @__PURE__ */ d(b, [["__scopeId", "data-v-768757af"]]);
|
|
50
|
+
function V(t) {
|
|
50
51
|
const {
|
|
51
52
|
priority: i = 50,
|
|
52
|
-
viewerOptions:
|
|
53
|
+
viewerOptions: n = {},
|
|
54
|
+
crossOrigin: r = !1
|
|
53
55
|
} = t || {};
|
|
54
56
|
return {
|
|
55
57
|
name: "imageViewer",
|
|
56
58
|
priority: i,
|
|
57
59
|
test: (e) => e.type === "tag" && e.name === "img",
|
|
58
|
-
render: (e, l, u,
|
|
59
|
-
const
|
|
60
|
-
let
|
|
61
|
-
if (e.attribs?.src &&
|
|
62
|
-
const
|
|
63
|
-
|
|
60
|
+
render: (e, l, u, o) => {
|
|
61
|
+
const a = o?.images || [];
|
|
62
|
+
let s = 0;
|
|
63
|
+
if (e.attribs?.src && a.length > 0) {
|
|
64
|
+
const c = a.findIndex((m) => m.src === e.attribs?.src);
|
|
65
|
+
c !== -1 && (s = c);
|
|
64
66
|
}
|
|
65
|
-
return
|
|
67
|
+
return y(C, {
|
|
66
68
|
src: e.attribs?.src || "",
|
|
67
69
|
alt: e.attribs?.alt || "",
|
|
68
70
|
title: e.attribs?.title || "",
|
|
69
|
-
index:
|
|
70
|
-
viewerOptions:
|
|
71
|
-
|
|
71
|
+
index: s,
|
|
72
|
+
viewerOptions: n,
|
|
73
|
+
crossOrigin: r,
|
|
74
|
+
context: o
|
|
72
75
|
});
|
|
73
76
|
}
|
|
74
77
|
};
|
|
75
78
|
}
|
|
76
79
|
export {
|
|
77
80
|
M as codeBlockPlugin,
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
81
|
+
R as cursorPlugin,
|
|
82
|
+
j as emojiPlugin,
|
|
83
|
+
V as imageViewerPlugin,
|
|
84
|
+
S as mermaidPlugin
|
|
82
85
|
};
|
|
@@ -13,6 +13,11 @@ export interface ImageViewerPluginOptions {
|
|
|
13
13
|
* @see https://github.com/fengyuanchen/viewerjs#options
|
|
14
14
|
*/
|
|
15
15
|
viewerOptions?: any;
|
|
16
|
+
/**
|
|
17
|
+
* 是否开启跨域支持(默认 false)
|
|
18
|
+
* 如果开启,外部图片将添加 crossorigin="anonymous" 属性
|
|
19
|
+
*/
|
|
20
|
+
crossOrigin?: boolean;
|
|
16
21
|
}
|
|
17
22
|
/**
|
|
18
23
|
* imageViewerPlugin - 图片预览插件
|
|
@@ -31,6 +36,7 @@ export interface ImageViewerPluginOptions {
|
|
|
31
36
|
* @param options - 插件配置选项
|
|
32
37
|
* @param options.priority - 优先级(默认 50)
|
|
33
38
|
* @param options.viewerOptions - Viewer.js 配置选项
|
|
39
|
+
* @param options.crossOrigin - 是否开启跨域支持(默认 false)
|
|
34
40
|
* @returns CustomPlugin
|
|
35
41
|
*
|
|
36
42
|
* @example
|
|
@@ -48,7 +54,8 @@ export interface ImageViewerPluginOptions {
|
|
|
48
54
|
* title: true,
|
|
49
55
|
* button: true,
|
|
50
56
|
* loop: false
|
|
51
|
-
* }
|
|
57
|
+
* },
|
|
58
|
+
* crossOrigin: true
|
|
52
59
|
* }
|
|
53
60
|
* }
|
|
54
61
|
* ```
|