Skip to content

Commit abc904c

Browse files
authored
refactor: migrate to new theme system (#1007)
1 parent 218c6e8 commit abc904c

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+1769
-1452
lines changed

apps/vscode/src/extension.ts

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1+
import type { ThemeName } from '@md/shared'
12
import { initRenderer } from '@md/core/renderer'
2-
import { customCssWithTemplate, customizeTheme, modifyHtmlContent } from '@md/core/utils'
3-
import { css2json, themeMap } from '@md/shared'
3+
import { generateCSSVariables, modifyHtmlContent } from '@md/core/utils'
4+
import { baseCSSContent, themeMap } from '@md/shared'
45
import * as vscode from 'vscode'
56
import { css } from './css'
67
import { MarkdownTreeDataProvider } from './treeDataProvider'
@@ -17,7 +18,7 @@ export function activate(context: vscode.ExtensionContext) {
1718
vscode.commands.registerCommand(`markdown.setFontSize`, (size: string) => {
1819
treeDataProvider.updateFontSize(size)
1920
}),
20-
vscode.commands.registerCommand(`markdown.setTheme`, (theme: keyof typeof themeMap) => {
21+
vscode.commands.registerCommand(`markdown.setTheme`, (theme: ThemeName) => {
2122
treeDataProvider.updateTheme(theme)
2223
}),
2324
vscode.commands.registerCommand(`markdown.setPrimaryColor`, (color: string) => {
@@ -67,27 +68,30 @@ export function activate(context: vscode.ExtensionContext) {
6768
function updateWebview() {
6869
if (!editor)
6970
return
71+
72+
// 使用新主题系统
7073
const renderer = initRenderer({
71-
theme: customCssWithTemplate(
72-
// TODO
73-
css2json(``),
74-
treeDataProvider.getCurrentPrimaryColor(),
75-
customizeTheme(themeMap[treeDataProvider.getCurrentTheme()], {
76-
fontSize: treeDataProvider.getCurrentFontSizeNumber(),
77-
color: treeDataProvider.getCurrentPrimaryColor(),
78-
}),
79-
),
80-
fonts: treeDataProvider.getCurrentFontFamily(),
81-
size: treeDataProvider.getCurrentFontSize(),
82-
isUseIndent: false,
83-
isUseJustify: false,
8474
countStatus: treeDataProvider.getCurrentCountStatus(),
8575
isMacCodeBlock: treeDataProvider.getCurrentMacCodeBlock(),
8676
legend: `none`,
8777
})
78+
8879
const markdownContent = editor.document.getText()
8980
const html = modifyHtmlContent(markdownContent, renderer)
90-
panel.webview.html = wrapHtmlTag(html, css)
81+
82+
// 生成主题 CSS
83+
const variables = generateCSSVariables({
84+
primaryColor: treeDataProvider.getCurrentPrimaryColor(),
85+
fontFamily: treeDataProvider.getCurrentFontFamily(),
86+
fontSize: treeDataProvider.getCurrentFontSize(),
87+
isUseIndent: false,
88+
isUseJustify: false,
89+
})
90+
91+
const themeCSS = themeMap[treeDataProvider.getCurrentTheme() as ThemeName]
92+
const completeCss = `${variables}\n\n${baseCSSContent}\n\n${themeCSS}\n\n${css}`
93+
94+
panel.webview.html = wrapHtmlTag(html, completeCss)
9195
}
9296

9397
// render first webview

apps/vscode/src/treeDataProvider.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
import type { themeMap } from '@md/shared/configs'
1+
import type { ThemeName } from '@md/shared/configs'
22
import * as vscode from 'vscode'
33
import { colorOptions, fontFamilyOptions, fontSizeOptions, themeOptions } from './styleChoices'
44

55
export class MarkdownTreeDataProvider implements vscode.TreeDataProvider<vscode.TreeItem> {
66
private _onDidChangeTreeData: vscode.EventEmitter<vscode.TreeItem | undefined> = new vscode.EventEmitter<vscode.TreeItem | undefined>()
77
readonly onDidChangeTreeData: vscode.Event<vscode.TreeItem | undefined> = this._onDidChangeTreeData.event
88
private currentFontSize: string
9-
private currentTheme: keyof typeof themeMap
9+
private currentTheme: ThemeName
1010
private currentPrimaryColor: string
1111
private currentFontFamily: string
1212
private countStatus: boolean
@@ -157,7 +157,7 @@ export class MarkdownTreeDataProvider implements vscode.TreeDataProvider<vscode.
157157
this._onDidChangeTreeData.fire(undefined)
158158
}
159159

160-
updateTheme(theme: keyof typeof themeMap) {
160+
updateTheme(theme: ThemeName) {
161161
this.currentTheme = theme
162162
this.context.workspaceState.update(`markdownPreview.theme`, theme)
163163
this._onDidChangeTreeData.fire(undefined)
@@ -183,7 +183,7 @@ export class MarkdownTreeDataProvider implements vscode.TreeDataProvider<vscode.
183183
return Number(this.currentFontSize.replace(`px`, ``))
184184
}
185185

186-
getCurrentTheme(): keyof typeof themeMap {
186+
getCurrentTheme(): ThemeName {
187187
return this.currentTheme
188188
}
189189

apps/web/package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@
4646
"core-js": "^3.46.0",
4747
"cos-js-sdk-v5": "^1.8.7",
4848
"crypto-js": "^4.2.0",
49-
"csstype": "^3.1.3",
5049
"es-toolkit": "^1.41.0",
5150
"front-matter": "^4.0.2",
5251
"highlight.js": "^11.11.1",

apps/web/src/assets/example/markdown.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ Markdown 中的段落就是一行接一行的文本。要创建新段落,只
2929
### 3. 字体样式:强调你的文字
3030

3131
- **粗体**:用两个星号或下划线包裹文字,如 `**粗体**``__粗体__`
32-
- _斜体_用一个星号或下划线包裹文字,如 `*斜体*``_斜体_`
32+
- _斜体_用一个星号包裹文字,如 `*斜体*`
3333
- ~~删除线~~:用两个波浪线包裹文字,如 `~~删除线~~`
3434
- ==高亮==:用两个等号包裹文字,如 `==高亮==`
3535
- ++下划线++:用两个加号包裹文字,如 `++下划线++`

apps/web/src/assets/example/theme-css.txt

Lines changed: 0 additions & 150 deletions
This file was deleted.

0 commit comments

Comments
 (0)