chore: tweak

This commit is contained in:
pengzhanbo 2024-09-24 22:42:53 +08:00
parent 39f920f6f8
commit 64bf308e2f
10 changed files with 96 additions and 47 deletions

View File

@ -40,7 +40,13 @@
"vuepress": "2.0.0-rc.15"
},
"dependencies": {
"@mdit/plugin-attrs": "^0.13.1",
"@mdit/plugin-footnote": "^0.13.1",
"@mdit/plugin-mark": "^0.13.1",
"@mdit/plugin-sub": "^0.13.1",
"@mdit/plugin-sup": "^0.13.1",
"@mdit/plugin-tab": "^0.13.1",
"@mdit/plugin-tasklist": "^0.13.1",
"@vuepress/helper": "2.0.0-rc.47",
"@vueuse/core": "^11.1.0",
"image-size": "^1.1.1",

View File

@ -0,0 +1,21 @@
import type Token from 'markdown-it/lib/token.mjs'
import type { Markdown } from 'vuepress/markdown'
import container from 'markdown-it-container'
const alignList = ['left', 'center', 'right', 'justify']
export function alignPlugin(md: Markdown): void {
for (const name of alignList) {
md.use(container, name, {
validate: (info: string) => info.trim() === name,
render: (tokens: Token[], idx: number): string => {
if (tokens[idx].nesting === 1) {
return `<div style="text-align:${name}">`
}
else {
return '</div>'
}
},
})
}
}

View File

@ -1,6 +1,7 @@
import type { App } from 'vuepress'
import type { Markdown } from 'vuepress/markdown'
import type { MarkdownPowerPluginOptions } from '../../shared/index.js'
import { alignPlugin } from './align.js'
import { codeTabs } from './codeTabs.js'
import { fileTreePlugin } from './fileTree.js'
import { langReplPlugin } from './langRepl.js'
@ -11,6 +12,8 @@ export async function containerPlugin(
md: Markdown,
options: MarkdownPowerPluginOptions,
) {
// ::: left / right / center / justify
alignPlugin(md)
// ::: tabs
tabs(md)
// ::: code-tabs

View File

@ -1,5 +1,11 @@
import type { Markdown } from 'vuepress/markdown'
import type { MarkdownPowerPluginOptions } from '../../shared/index.js'
import { attrs } from '@mdit/plugin-attrs'
import { footnote } from '@mdit/plugin-footnote'
import { mark } from '@mdit/plugin-mark'
import { sub } from '@mdit/plugin-sub'
import { sup } from '@mdit/plugin-sup'
import { tasklist } from '@mdit/plugin-tasklist'
import { iconsPlugin } from './icons.js'
import { plotPlugin } from './plot.js'
@ -7,6 +13,13 @@ export function inlineSyntaxPlugin(
md: Markdown,
options: MarkdownPowerPluginOptions,
): void {
md.use(attrs)
md.use(mark)
md.use(sub)
md.use(sup)
md.use(footnote)
md.use(tasklist)
if (options.icons) {
// :[collect:name]:
md.use(iconsPlugin)

18
pnpm-lock.yaml generated
View File

@ -156,9 +156,27 @@ importers:
plugins/plugin-md-power:
dependencies:
'@mdit/plugin-attrs':
specifier: ^0.13.1
version: 0.13.1(markdown-it@14.1.0)
'@mdit/plugin-footnote':
specifier: ^0.13.1
version: 0.13.1(markdown-it@14.1.0)
'@mdit/plugin-mark':
specifier: ^0.13.1
version: 0.13.1(markdown-it@14.1.0)
'@mdit/plugin-sub':
specifier: ^0.13.1
version: 0.13.1(markdown-it@14.1.0)
'@mdit/plugin-sup':
specifier: ^0.13.1
version: 0.13.1(markdown-it@14.1.0)
'@mdit/plugin-tab':
specifier: ^0.13.1
version: 0.13.1(markdown-it@14.1.0)
'@mdit/plugin-tasklist':
specifier: ^0.13.1
version: 0.13.1(markdown-it@14.1.0)
'@vuepress/helper':
specifier: 2.0.0-rc.47
version: 2.0.0-rc.47(typescript@5.6.2)(vuepress@2.0.0-rc.15(@vuepress/bundler-vite@2.0.0-rc.15(@types/node@20.12.10)(jiti@1.21.6)(sass-embedded@1.79.3)(sass@1.79.3)(typescript@5.6.2)(yaml@2.5.1))(typescript@5.6.2)(vue@3.5.8(typescript@5.6.2)))

View File

@ -87,7 +87,7 @@ const showFooter = computed(() => {
<style scoped>
.vp-doc-footer {
margin-top: 96px;
margin-top: 64px;
}
@media (min-width: 640px) {

View File

@ -151,6 +151,7 @@
/* ---------------------- Markdown Enhance: Task List ---------------------- */
.vp-doc .task-list-container {
padding-left: 0;
list-style: none;
}
.vp-doc .task-list-container .task-list-item input {
@ -164,59 +165,53 @@
margin-left: 1.2em;
}
.vp-doc .task-list-container .task-list-item input::before,
.vp-doc .task-list-container .task-list-item input::after {
position: absolute;
top: -1em;
left: 0;
.vp-doc .task-list-container .task-list-item input::before {
display: inline-block;
font-size: 1em;
content: none;
width: 1.25em;
height: 1.25em;
content: "";
background-image: var(--icon);
background-repeat: no-repeat;
background-position: center;
background-size: 100% 100%;
transform: translateY(2px);
}
.vp-doc .task-list-container .task-list-item input::after {
content: url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="1em" height="1em" viewBox="0 0 32 32"%3E%3Cpath fill="%23c2c2c4" d="M26 27.5H6A1.5 1.5 0 0 1 4.5 26V6c0-.83.67-1.5 1.5-1.5h20c.828 0 1.5.67 1.5 1.5v20a1.5 1.5 0 0 1-1.5 1.5m-18.5-3h17v-17h-17z"%2F%3E%3C%2Fsvg%3E');
background-color: transparent;
border: none;
.vp-doc .task-list-container .task-list-item input::before {
--icon: url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="1em" height="1em" viewBox="0 0 32 32"%3E%3Cpath fill="%23c2c2c4" d="M26 27.5H6A1.5 1.5 0 0 1 4.5 26V6c0-.83.67-1.5 1.5-1.5h20c.828 0 1.5.67 1.5 1.5v20a1.5 1.5 0 0 1-1.5 1.5m-18.5-3h17v-17h-17z"%2F%3E%3C%2Fsvg%3E');
}
.vp-doc .task-list-container .task-list-item input:checked[disabled]::after {
content: url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="1em" height="1em" viewBox="0 0 32 32"%3E%3Cpath fill="%23299764" d="M29.548 3.043a2.5 2.5 0 0 0-3.513.4L16 16.067l-3.508-4.414a2.5 2.5 0 0 0-3.915 3.112l5.465 6.875c.474.597 1.195.943 1.957.943s1.482-.35 1.957-.944L29.95 6.555c.86-1.08.68-2.654-.402-3.513zM24.5 24.5h-17v-17h12.756l2.385-3H6c-.83 0-1.5.67-1.5 1.5v20c0 .828.67 1.5 1.5 1.5h20a1.5 1.5 0 0 0 1.5-1.5V12.85l-3 3.774z"%2F%3E%3C%2Fsvg%3E');
background-color: transparent;
border: none;
.vp-doc .task-list-container .task-list-item input:checked[disabled]::before {
--icon: url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="1em" height="1em" viewBox="0 0 32 32"%3E%3Cpath fill="%23299764" d="M29.548 3.043a2.5 2.5 0 0 0-3.513.4L16 16.067l-3.508-4.414a2.5 2.5 0 0 0-3.915 3.112l5.465 6.875c.474.597 1.195.943 1.957.943s1.482-.35 1.957-.944L29.95 6.555c.86-1.08.68-2.654-.402-3.513zM24.5 24.5h-17v-17h12.756l2.385-3H6c-.83 0-1.5.67-1.5 1.5v20c0 .828.67 1.5 1.5 1.5h20a1.5 1.5 0 0 0 1.5-1.5V12.85l-3 3.774z"%2F%3E%3C%2Fsvg%3E');
}
/* --------------------- Markdown Enhance: Footnote -------------------------------- */
.vp-doc .footnotes-sep {
margin-top: 48px;
border-top: none;
display: none;
}
.vp-doc .footnotes {
position: relative;
padding: 48px 0 12px 16px;
padding: 12px 0 12px 16px;
margin-top: 32px;
font-size: 14px;
border: 1px solid var(--vp-c-divider);
background-color: var(--vp-c-bg-safe);
border-radius: 6px;
box-shadow: var(--vp-shadow-1);
opacity: 0.75;
transition: border var(--vp-t-color), box-shadow var(--vp-t-color);
opacity: 0.85;
transition: background var(--vp-t-color);
}
.vp-doc .footnotes::before {
position: absolute;
top: 12px;
left: 16px;
font-size: 16px;
font-weight: 700;
@media (max-width: 419px) {
.vp-doc .footnotes {
margin: 16px -24px;
border-radius: 0;
}
}
[lang="zh-CN"] .vp-doc .footnotes::before {
content: "脚注:";
}
[lang="en-US"] .vp-doc .footnotes::before {
content: "Footnotes:";
.vp-doc .footnotes p {
line-height: 24px;
}
.vp-doc .footnotes ol {

View File

@ -37,7 +37,7 @@ export function extendsBundlerOptions(bundlerOptions: any, app: App): void {
// api: 'modern-compiler',
...options,
sassOptions: {
silenceDeprecations: ['mixed-decls'],
silenceDeprecations: ['mixed-decls', 'legacy-js-api'],
...options.sassOptions,
},
}))
@ -47,7 +47,7 @@ export function extendsBundlerOptions(bundlerOptions: any, app: App): void {
css: {
preprocessorOptions: {
sass: {
silenceDeprecations: ['mixed-decls'],
silenceDeprecations: ['mixed-decls', 'legacy-js-api'],
// logger: {
// warn: (message, { deprecation, deprecationType }) => {
// if (deprecation && deprecationType.id === 'mixed-decls')
@ -58,7 +58,7 @@ export function extendsBundlerOptions(bundlerOptions: any, app: App): void {
// },
},
scss: {
silenceDeprecations: ['mixed-decls'],
silenceDeprecations: ['mixed-decls', 'legacy-js-api'],
// logger: {
// warn: (message, { deprecation, deprecationType }) => {
// if (deprecation && deprecationType.id === 'mixed-decls')

View File

@ -36,7 +36,7 @@ export const customContainerPlugins: Plugin[] = [
<div class="demo-container" ${containerStyle ? `style="${containerStyle}"` : ''}>\n`
},
after() {
return '</div></div>\n'
return '</div></div>'
},
}),
/**

View File

@ -113,16 +113,9 @@ export function getPlugins({
if (pluginOptions.markdownEnhance !== false) {
const options: MarkdownEnhancePluginOptions = {
attrs: true,
align: true,
mark: true,
tasklist: true,
sup: true,
sub: true,
footnote: true,
...pluginOptions.markdownEnhance,
}
plugins.push(mdEnhancePlugin(deleteAttrs(options, 'hint', 'alert', 'imgSize', 'imgLazyload', 'imgMark', 'figure', 'obsidianImgSize', 'katex', 'mathjax', 'tabs', 'codetabs')))
plugins.push(mdEnhancePlugin(deleteAttrs(options, 'hint', 'alert', 'imgSize', 'imgLazyload', 'imgMark', 'figure', 'obsidianImgSize', 'katex', 'mathjax', 'tabs', 'codetabs', 'align', 'mark', 'sub', 'sup', 'attrs', 'tasklist', 'footnote')))
}
if (pluginOptions.markdownPower !== false) {