Skip to content

Commit

Permalink
Merge pull request #58 from KazariEX/master
Browse files Browse the repository at this point in the history
fix: duplicate new windows when clicking topic links
  • Loading branch information
KUN1007 committed Jun 8, 2024
2 parents 29360f2 + 7f85ea8 commit 2d94410
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 56 deletions.
21 changes: 4 additions & 17 deletions components/kun/milkdown/ReadOnly.vue
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,11 @@ import {
editorViewOptionsCtx
} from '@milkdown/core'
import { Milkdown, useEditor } from '@milkdown/vue'
import { commonmark } from '@milkdown/preset-commonmark'
import { commonmark, linkAttr } from '@milkdown/preset-commonmark'
import { gfm } from '@milkdown/preset-gfm'
import { prism, prismConfig } from '@milkdown/plugin-prism'
import { replaceAll } from '@milkdown/utils'
import type { EditorView } from 'prosemirror-view'
import type { Node } from '@milkdown/prose/model'
import '~/assets/css/editor/index.scss'
Expand All @@ -38,7 +36,7 @@ import tsx from 'refractor/lang/tsx'
import markdown from 'refractor/lang/markdown'
// Open link on new tab
import { handleClick } from './plugins/hyperlinkOpen'
import { handleExternal } from './plugins/hyperlinkExternal'
const props = defineProps<{
isReadonly: boolean
Expand All @@ -61,21 +59,10 @@ const { get, loading } = useEditor((root) =>
ctx.update(editorViewOptionsCtx, (prev) => ({
...prev,
editable,
handleClickOn: (view: EditorView, pos: number, node: Node) =>
handleClick(ctx, view, pos, node)
editable
}))
// preventDefaultClick
const observer = new MutationObserver(() => {
const links = Array.from(root.querySelectorAll('a'))
links.forEach((link) => {
link.onclick = () => false
})
})
observer.observe(root, {
childList: true
})
ctx.set(linkAttr.key, handleExternal)
ctx.set(prismConfig.key, {
configureRefractor: (refractor) => {
Expand Down
23 changes: 23 additions & 0 deletions components/kun/milkdown/plugins/hyperlinkExternal.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import { Mark } from '@milkdown/prose/model'

const hasURLProtocol = (url: string) => {
return (
url.startsWith('http://') ||
url.startsWith('https://') ||
url.startsWith('file://') ||
url.startsWith('data:') ||
url.startsWith('ts://?ts') ||
url.startsWith('ts:?ts')
)
}

export const handleExternal = (node: Mark) => {
const href = node.attrs.href
if (typeof href === 'string' && hasURLProtocol(href)) {
return {
target: '_blank',
rel: 'noopener noreferrer'
}
}
return {}
}
38 changes: 0 additions & 38 deletions components/kun/milkdown/plugins/hyperlinkOpen.ts

This file was deleted.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "kun-galgame-nuxt3",
"version": "2.11.28",
"version": "2.11.29",
"private": true,
"scripts": {
"build": "nuxt build",
Expand Down

0 comments on commit 2d94410

Please sign in to comment.