├── .gitignore
├── LICENSE
├── README.md
├── wj-markdown-editor-electron
├── eslint.config.mjs
├── icon
│ ├── 1024x1024.png
│ ├── 256x256.png
│ └── favicon.ico
├── installer.nsh
├── package-lock.json
├── package.json
└── src
│ ├── data
│ ├── configUtil.js
│ ├── defaultConfig.js
│ └── recent.js
│ ├── main.js
│ ├── preload.js
│ └── util
│ ├── channel
│ ├── ipcMainUtil.js
│ └── sendUtil.js
│ ├── commonUtil.js
│ ├── fileUploadUtil.js
│ ├── imageBedUtil.js
│ ├── imgUtil.js
│ ├── logUtil.js
│ ├── protocolUtil.js
│ ├── updateUtil.js
│ └── win
│ ├── aboutUtil.js
│ ├── exportUtil.js
│ ├── guideUtil.js
│ ├── screenshotsUtil.js
│ ├── settingUtil.js
│ └── winInfoUtil.js
└── wj-markdown-editor-web
├── .gitignore
├── README.md
├── eslint.config.js
├── index.html
├── jsconfig.json
├── package-lock.json
├── package.json
├── public
└── favicon.ico
├── src
├── App.vue
├── assets
│ ├── img
│ │ ├── guide
│ │ │ ├── Code.webp
│ │ │ ├── Container.webp
│ │ │ ├── CurrentDate.webp
│ │ │ ├── GithubAlert.webp
│ │ │ ├── TextColor.png
│ │ │ └── TextColor.webp
│ │ └── logo.png
│ └── style
│ │ ├── antd.scss
│ │ ├── code-theme
│ │ ├── code-theme.scss
│ │ └── theme
│ │ │ ├── a11y-dark.scss
│ │ │ ├── a11y-light.scss
│ │ │ ├── agate.scss
│ │ │ ├── an-old-hope.scss
│ │ │ ├── androidstudio.scss
│ │ │ ├── arduino-light.scss
│ │ │ ├── arta.scss
│ │ │ ├── ascetic.scss
│ │ │ ├── atom-one-dark-reasonable.scss
│ │ │ ├── atom-one-dark.scss
│ │ │ ├── atom-one-light.scss
│ │ │ ├── brown-paper.scss
│ │ │ ├── codepen-embed.scss
│ │ │ ├── color-brewer.scss
│ │ │ ├── dark.scss
│ │ │ ├── default.scss
│ │ │ ├── devibeans.scss
│ │ │ ├── docco.scss
│ │ │ ├── far.scss
│ │ │ ├── felipec.scss
│ │ │ ├── foundation.scss
│ │ │ ├── github-dark-dimmed.scss
│ │ │ ├── github-dark.scss
│ │ │ ├── github.scss
│ │ │ ├── gml.scss
│ │ │ ├── googlecode.scss
│ │ │ ├── gradient-dark.scss
│ │ │ ├── gradient-light.scss
│ │ │ ├── grayscale.scss
│ │ │ ├── hybrid.scss
│ │ │ ├── idea.scss
│ │ │ ├── intellij-light.scss
│ │ │ ├── ir-black.scss
│ │ │ ├── isbl-editor-dark.scss
│ │ │ ├── isbl-editor-light.scss
│ │ │ ├── kimbie-dark.scss
│ │ │ ├── kimbie-light.scss
│ │ │ ├── lightfair.scss
│ │ │ ├── lioshi.scss
│ │ │ ├── magula.scss
│ │ │ ├── mono-blue.scss
│ │ │ ├── monokai-sublime.scss
│ │ │ ├── monokai.scss
│ │ │ ├── night-owl.scss
│ │ │ ├── nnfx-dark.scss
│ │ │ ├── nnfx-light.scss
│ │ │ ├── nord.scss
│ │ │ ├── obsidian.scss
│ │ │ ├── panda-syntax-dark.scss
│ │ │ ├── panda-syntax-light.scss
│ │ │ ├── paraiso-dark.scss
│ │ │ ├── paraiso-light.scss
│ │ │ ├── pojoaque.scss
│ │ │ ├── purebasic.scss
│ │ │ ├── qtcreator-dark.scss
│ │ │ ├── qtcreator-light.scss
│ │ │ ├── rainbow.scss
│ │ │ ├── routeros.scss
│ │ │ ├── school-book.scss
│ │ │ ├── shades-of-purple.scss
│ │ │ ├── srcery.scss
│ │ │ ├── stackoverflow-dark.scss
│ │ │ ├── stackoverflow-light.scss
│ │ │ ├── sunburst.scss
│ │ │ ├── tokyo-night-dark.scss
│ │ │ ├── tokyo-night-light.scss
│ │ │ ├── tomorrow-night-blue.scss
│ │ │ ├── tomorrow-night-bright.scss
│ │ │ ├── vs.scss
│ │ │ ├── vs2015.scss
│ │ │ ├── xcode.scss
│ │ │ └── xt256.scss
│ │ ├── codemirror.scss
│ │ ├── colorpicker.scss
│ │ ├── common.scss
│ │ ├── global-theme
│ │ ├── dark.scss
│ │ ├── global-theme.scss
│ │ └── light.scss
│ │ ├── preview-theme
│ │ ├── preview-theme.scss
│ │ └── theme
│ │ │ ├── cyanosis.scss
│ │ │ ├── github.css
│ │ │ ├── juejin.scss
│ │ │ ├── markdown-here.scss
│ │ │ ├── mk-cute.scss
│ │ │ ├── scrolls.scss
│ │ │ ├── smart-blue.scss
│ │ │ └── vuepress.scss
│ │ ├── reset.css
│ │ ├── scroll.scss
│ │ ├── search.scss
│ │ ├── wj-markdown-it-container.scss
│ │ └── wj-markdown-it-text-color.scss
├── components
│ ├── CommonVNode.vue
│ ├── SearchBar.vue
│ ├── TableShape.vue
│ ├── editor
│ │ ├── EditorSearchBar.vue
│ │ ├── IconButton.vue
│ │ ├── MarkdownEdit.vue
│ │ ├── MarkdownMenu.vue
│ │ └── MarkdownPreview.vue
│ └── layout
│ │ ├── LayoutContainer.vue
│ │ ├── LayoutMenu.vue
│ │ ├── LayoutTop.vue
│ │ └── OtherLayout.vue
├── main.js
├── router
│ └── index.js
├── stores
│ └── counter.js
├── util
│ ├── channel
│ │ ├── channelUtil.js
│ │ ├── eventEmit.js
│ │ └── eventUtil.js
│ ├── commonUtil.js
│ ├── constant.js
│ ├── editor
│ │ ├── completion
│ │ │ ├── alertCompletion.js
│ │ │ ├── codeBlockCompletion.js
│ │ │ ├── completionHandler.js
│ │ │ ├── containerCompletion.js
│ │ │ ├── dateCompletion.js
│ │ │ ├── headingCompletion.js
│ │ │ └── tableCompletion.js
│ │ ├── editorExtensionUtil.js
│ │ ├── editorUtil.js
│ │ └── keymap
│ │ │ └── keymapUtil.js
│ ├── guideUtil.js
│ ├── markdown-it
│ │ ├── markdownItCodeBlock.js
│ │ ├── markdownItContainerUtil.js
│ │ ├── markdownItDefault.js
│ │ └── markdownItTextColor.js
│ └── shortcutKeyUtil.js
└── views
│ ├── AboutView.vue
│ ├── EditorView.vue
│ ├── ExportView.vue
│ ├── GuideView.vue
│ ├── HomeView.vue
│ ├── PreviewView.vue
│ └── SettingView.vue
├── uno.config.js
└── vite.config.js
/.gitignore:
--------------------------------------------------------------------------------
1 | HELP.md
2 | target/
3 | !.mvn/wrapper/maven-wrapper.jar
4 | !**/src/main/**/target/
5 | !**/src/test/**/target/
6 |
7 | ### STS ###
8 | .apt_generated
9 | .classpath
10 | .factorypath
11 | .project
12 | .settings
13 | .springBeans
14 | .sts4-cache
15 | electron-build/
16 | web-dist/
17 | node_modules/
18 | ### IntelliJ IDEA ###
19 | .idea
20 | /log/
21 | *.iws
22 | *.iml
23 | *.ipr
24 |
25 | ### NetBeans ###
26 | /nbproject/private/
27 | /nbbuild/
28 | /dist/
29 | /nbdist/
30 | /.nb-gradle/
31 | build/
32 | !**/src/main/**/build/
33 | !**/src/test/**/build/
34 |
35 | ### VS Code ###
36 | .vscode/
37 | config.json
38 | recent.json
39 | TempImg/
40 |
41 | wj-markdown-editor-electron/img/
42 |
43 | login_info
44 |
45 | last_opened.json
46 |
47 | wj-markdown-editor.db
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2024 nlbwqmz
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/wj-markdown-editor-electron/eslint.config.mjs:
--------------------------------------------------------------------------------
1 | import antfu from '@antfu/eslint-config'
2 |
3 | export default antfu({
4 | rules: {
5 | 'no-console': 'off',
6 | 'node/prefer-global/process': 'off',
7 | 'style/no-mixed-operators': 'off',
8 | 'new-cap': 'off',
9 | 'style/brace-style': 'off',
10 | 'node/prefer-global/buffer': 'off',
11 | },
12 | })
13 |
--------------------------------------------------------------------------------
/wj-markdown-editor-electron/icon/1024x1024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlbwqmz/wj-markdown-editor/76b7a320f92c1f419dd88c29b310044fc9b347c4/wj-markdown-editor-electron/icon/1024x1024.png
--------------------------------------------------------------------------------
/wj-markdown-editor-electron/icon/256x256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlbwqmz/wj-markdown-editor/76b7a320f92c1f419dd88c29b310044fc9b347c4/wj-markdown-editor-electron/icon/256x256.png
--------------------------------------------------------------------------------
/wj-markdown-editor-electron/icon/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlbwqmz/wj-markdown-editor/76b7a320f92c1f419dd88c29b310044fc9b347c4/wj-markdown-editor-electron/icon/favicon.ico
--------------------------------------------------------------------------------
/wj-markdown-editor-electron/installer.nsh:
--------------------------------------------------------------------------------
1 | ;安装时写入
2 | !macro customInstall
3 | WriteRegStr HKCR ".md" "" "Markdown File"
4 | WriteRegStr HKCR ".md\ShellNew" "NullFile" ""
5 | WriteRegStr HKCR "Markdown File" "" "Markdown"
6 | WriteRegStr HKCR "Markdown File\shell\open" "Icon" "$INSTDIR\wj-markdown-editor.exe"
7 | !macroend
8 | ;卸载时清除
9 | !macro customUninstall
10 | DeleteRegKey HKCR ".md\ShellNew"
11 | ${ifNot} ${isUpdated}
12 | RMDir /r "$PROFILE\Documents\wj-markdown-editor"
13 | ${endif}
14 | !macroend
15 |
--------------------------------------------------------------------------------
/wj-markdown-editor-electron/src/data/recent.js:
--------------------------------------------------------------------------------
1 | import path from 'node:path'
2 | import { app } from 'electron'
3 | import fs from 'fs-extra'
4 |
5 | let recent = []
6 | let maxSize = 10
7 | let callback = null
8 |
9 | const documentsPath = app.isPackaged ? path.resolve(app.getPath('documents'), 'wj-markdown-editor') : app.getAppPath()
10 | const recentPath = path.resolve(documentsPath, 'recent.json')
11 |
12 | async function write() {
13 | await fs.writeFile(recentPath, JSON.stringify(recent), 'utf-8')
14 | callback && callback(parseRecent())
15 | }
16 |
17 | function parseRecent() {
18 | return recent.map((item) => {
19 | return {
20 | name: path.basename(item),
21 | path: item,
22 | }
23 | })
24 | }
25 |
26 | async function initRecent(max, callbackFunction) {
27 | maxSize = max || 10
28 | callback = callbackFunction
29 | try {
30 | await fs.ensureDir(documentsPath)
31 | if (await fs.pathExists(recentPath)) {
32 | recent = JSON.parse(await fs.readFile(recentPath, 'utf-8'))
33 | } else {
34 | await fs.writeFile(recentPath, JSON.stringify([]), 'utf-8')
35 | }
36 | } catch {
37 | await fs.writeFile(recentPath, JSON.stringify([]), 'utf-8')
38 | }
39 | }
40 |
41 | async function clear() {
42 | recent = []
43 | await write()
44 | }
45 |
46 | async function add(filePath) {
47 | if (!maxSize || maxSize <= 0) {
48 | return
49 | }
50 | if (recent.includes(filePath)) {
51 | recent.splice(recent.indexOf(filePath), 1)
52 | }
53 | if (recent.unshift(filePath) > maxSize) {
54 | recent.pop()
55 | }
56 | await write()
57 | }
58 |
59 | async function remove(filePath) {
60 | if (recent.includes(filePath)) {
61 | recent.splice(recent.indexOf(filePath), 1)
62 | await write()
63 | }
64 | }
65 |
66 | export default {
67 | initRecent,
68 | clear,
69 | add,
70 | remove,
71 | get: () => parseRecent(),
72 | setMax: async (max) => {
73 | maxSize = max || 0
74 | while (recent.length > maxSize && recent.length !== 0) {
75 | recent.pop()
76 | }
77 | await write()
78 | },
79 | }
80 |
--------------------------------------------------------------------------------
/wj-markdown-editor-electron/src/main.js:
--------------------------------------------------------------------------------
1 | import { app, Menu } from 'electron'
2 | import configUtil from './data/configUtil.js'
3 | import recent from './data/recent.js'
4 | import sendUtil from './util/channel/sendUtil.js'
5 | import logUtil from './util/logUtil.js'
6 | import protocolUtil from './util/protocolUtil.js'
7 | import updateUtil from './util/updateUtil.js'
8 | import aboutUtil from './util/win/aboutUtil.js'
9 | import exportUtil from './util/win/exportUtil.js'
10 | import guideUtil from './util/win/guideUtil.js'
11 | import screenshotsUtil from './util/win/screenshotsUtil.js'
12 | import settingUtil from './util/win/settingUtil.js'
13 | import winInfoUtil from './util/win/winInfoUtil.js'
14 | import './util/channel/ipcMainUtil.js'
15 |
16 | app.commandLine.appendSwitch('--disable-http-cache')
17 |
18 | /**
19 | * 是否通过文件打开
20 | */
21 | function isOpenOnFile() {
22 | return Boolean(process.argv && process.argv.length > 0 && /.*\.md$/.test(process.argv[process.argv.length - 1]))
23 | }
24 |
25 | /**
26 | * 如果通过打开 获取文件路径
27 | */
28 | function getOpenOnFilePath() {
29 | return isOpenOnFile() ? process.argv[process.argv.length - 1] : null
30 | }
31 |
32 | const lock = app.requestSingleInstanceLock({ filePath: getOpenOnFilePath() })
33 |
34 | if (!lock) {
35 | app.quit()
36 | } else {
37 | app.on('second-instance', (event, commandLine, workingDirectory, additionalData) => {
38 | winInfoUtil.createNew(additionalData.filePath).then(() => {})
39 | })
40 | logUtil.init()
41 | app.whenReady().then(async () => {
42 | Menu.setApplicationMenu(null)
43 | await configUtil.initConfig((config) => {
44 | winInfoUtil.getAll().forEach((item) => {
45 | sendUtil.send(item.win, { event: 'update-config', data: config })
46 | })
47 | if (aboutUtil.get()) {
48 | sendUtil.send(aboutUtil.get(), { event: 'update-config', data: config })
49 | }
50 | if (exportUtil.get()) {
51 | sendUtil.send(exportUtil.get(), { event: 'update-config', data: config })
52 | }
53 | if (guideUtil.get()) {
54 | sendUtil.send(guideUtil.get(), { event: 'update-config', data: config })
55 | }
56 | if (settingUtil.get()) {
57 | sendUtil.send(settingUtil.get(), { event: 'update-config', data: config })
58 | }
59 | })
60 | await recent.initRecent(configUtil.getConfig().recentMax, (recentList) => {
61 | winInfoUtil.getAll().forEach((item) => {
62 | sendUtil.send(item.win, { event: 'update-recent', data: recentList })
63 | })
64 | })
65 | protocolUtil.handleProtocol()
66 | const openOnFilePath = getOpenOnFilePath()
67 | if (openOnFilePath) {
68 | await winInfoUtil.createNew(openOnFilePath)
69 | } else if (configUtil.getConfig().openRecent) {
70 | const recentList = recent.get()
71 | if (recentList && recentList.length > 0) {
72 | await winInfoUtil.createNew(recentList[0].path, true)
73 | } else {
74 | await winInfoUtil.createNew(null)
75 | }
76 | } else {
77 | await winInfoUtil.createNew(null)
78 | }
79 | screenshotsUtil.init()
80 | updateUtil.initUpdater(() => winInfoUtil.getAll())
81 | })
82 | }
83 |
--------------------------------------------------------------------------------
/wj-markdown-editor-electron/src/preload.js:
--------------------------------------------------------------------------------
1 | const { contextBridge, ipcRenderer, webUtils } = require('electron')
2 |
3 | // 主进程调用渲染进程
4 | const mainToShow = {
5 | sendToShow: callback => ipcRenderer.on('sendToShow', (_event, json) => callback(json)),
6 | }
7 |
8 | // 渲染进程调用主进程
9 | const showToMain = {
10 | sendToMain: json => ipcRenderer.invoke('sendToMain', json),
11 | // 只能在渲染进程中使用 通过web端file对象获取绝对路径
12 | getWebFilePath: file => webUtils.getPathForFile(file),
13 | }
14 |
15 | contextBridge.exposeInMainWorld('node', {
16 | ...showToMain,
17 | ...mainToShow,
18 | })
19 |
--------------------------------------------------------------------------------
/wj-markdown-editor-electron/src/util/channel/sendUtil.js:
--------------------------------------------------------------------------------
1 | export default {
2 | send: (win, data) => {
3 | win.webContents.send('sendToShow', data)
4 | },
5 | }
6 |
--------------------------------------------------------------------------------
/wj-markdown-editor-electron/src/util/commonUtil.js:
--------------------------------------------------------------------------------
1 | import path from 'node:path'
2 | import fs from 'fs-extra'
3 | import { nanoid } from 'nanoid'
4 |
5 | const createId = () => `wj${nanoid()}`
6 |
7 | function removePathSplit(value) {
8 | value = value.replace(/\\/g, '/')
9 | if (!value.startsWith('/') && !value.endsWith('/')) {
10 | return value
11 | }
12 | if (value.startsWith('/')) {
13 | value = value.substring(1)
14 | }
15 | if (value.endsWith('/')) {
16 | value = value.substring(0, value.length - 1)
17 | }
18 | return removePathSplit(value)
19 | }
20 |
21 | function hexToString(hex) {
22 | return Buffer.from(hex, 'hex').toString('utf8')
23 | }
24 |
25 | function createUniqueFileName(name) {
26 | const extname = path.extname(name)
27 | return `${path.basename(name, extname)}_${nanoid(6)}${extname}`
28 | }
29 |
30 | export default {
31 | createId,
32 | createUniqueFileName,
33 | removePathSplit,
34 | base64ToImg: async (data, imgPath) => {
35 | await fs.ensureDir(path.dirname(imgPath))
36 | const base64 = data.startsWith('data:') ? data.replace(/^data:image\/\w+;base64,/, '') : data
37 | const dataBuffer = Buffer.from(base64, 'base64')
38 | await fs.ensureDir(path.dirname(imgPath))
39 | await fs.writeFile(imgPath, dataBuffer)
40 | },
41 | hexToString,
42 | }
43 |
--------------------------------------------------------------------------------
/wj-markdown-editor-electron/src/util/fileUploadUtil.js:
--------------------------------------------------------------------------------
1 | import path from 'node:path'
2 | import fs from 'fs-extra'
3 | import sendUtil from './channel/sendUtil.js'
4 | import commonUtil from './commonUtil.js'
5 |
6 | function createLocalSavePath(winInfo, filePath, config) {
7 | const uniqueFileName = commonUtil.createUniqueFileName(filePath)
8 | if (config.fileMode === '2') { // 绝对路径
9 | return path.resolve(config.fileAbsolutePath, uniqueFileName)
10 | }
11 | if (config.fileMode === '3') {
12 | return path.resolve(path.dirname(winInfo.path), path.basename(winInfo.path, path.extname(winInfo.path)), uniqueFileName)
13 | }
14 | if (config.fileMode === '4') {
15 | if (!config.fileRelativePath) {
16 | return path.resolve(path.dirname(winInfo.path), uniqueFileName)
17 | } else {
18 | return path.resolve(path.dirname(winInfo.path), commonUtil.removePathSplit(config.fileRelativePath), uniqueFileName)
19 | }
20 | }
21 | throw new Error('文件存储模式未知')
22 | }
23 |
24 | function check(winInfo, config) {
25 | if (config.fileMode === '2' && !config.fileAbsolutePath) {
26 | sendUtil.send(winInfo.win, { event: 'message', data: { type: 'warning', content: '未设置文件绝对路径' } })
27 | return false
28 | }
29 | if ((config.fileMode === '3' || config.fileMode === '4') && !winInfo.path) {
30 | sendUtil.send(winInfo.win, { event: 'message', data: { type: 'warning', content: '当前文件未保存,不能将文件保存到相对路径' } })
31 | return false
32 | }
33 | return true
34 | }
35 |
36 | export default {
37 | save: async (winInfo, filePath, config) => {
38 | if (check(winInfo, config)) {
39 | if (!await fs.pathExists(filePath)) {
40 | sendUtil.send(winInfo.win, { event: 'message', data: { type: 'warning', content: '文件不存在' } })
41 | return null
42 | }
43 | const loadingKey = commonUtil.createId()
44 | try {
45 | const savePath = createLocalSavePath(winInfo, filePath, config)
46 | await fs.ensureDir(path.dirname(savePath))
47 | // 消息Key
48 | sendUtil.send(winInfo.win, { event: 'message', data: { type: 'loading', content: '正在保存文件', duration: 0, key: loadingKey } })
49 | await fs.copyFile(filePath, savePath)
50 | sendUtil.send(winInfo.win, { event: 'message', data: { type: 'success', content: '文件保存成功', duration: 3, key: loadingKey } })
51 | // 保存带绝对路径
52 | if (config.fileMode === '2') {
53 | return { name: path.basename(filePath), path: savePath }
54 | }
55 |
56 | // 保存到文件名路径
57 | if (config.fileMode === '3') {
58 | return { name: path.basename(filePath), path: `${path.basename(winInfo.path, path.extname(winInfo.path))}/${path.basename(savePath)}` }
59 | }
60 |
61 | // 保存到相对路径
62 | if (config.fileMode === '4') {
63 | if (config.imgRelativePath) {
64 | return { name: path.basename(filePath), path: `${config.fileRelativePath}/${path.basename(savePath)}` }
65 | } else {
66 | return { name: path.basename(filePath), path: path.basename(savePath) }
67 | }
68 | }
69 | } catch (e) {
70 | console.error(e)
71 | sendUtil.send(winInfo.win, { event: 'message', data: { type: 'error', content: `文件保存失败,错误信息:${e.message}`, duration: 3, key: loadingKey } })
72 | }
73 | }
74 | },
75 | }
76 |
--------------------------------------------------------------------------------
/wj-markdown-editor-electron/src/util/imageBedUtil.js:
--------------------------------------------------------------------------------
1 | import path from 'node:path'
2 | import axios from 'axios'
3 | import FormData from 'form-data'
4 | import fs from 'fs-extra'
5 | import mime from 'mime-types'
6 |
7 | const handler = {
8 | github: async (option, filePath) => {
9 | const fileName = path.basename(filePath)
10 | const buffer = await fs.readFile(filePath)
11 | const base64Image = Buffer.from(buffer).toString('base64')
12 | const data = {
13 | message: 'Upload by wj-markdown-editor.',
14 | branch: option.branch,
15 | content: base64Image,
16 | path: option.path + encodeURI(fileName),
17 | }
18 | const res = await axios.request({
19 | method: 'PUT',
20 | url: `https://api.github.com/repos/${option.repo}/contents/${encodeURI(option.path)}${encodeURIComponent(fileName)}`,
21 | headers: {
22 | 'Authorization': `token ${option.token}`,
23 | 'User-Agent': 'wj-markdown-editor',
24 | 'Content-Type': mime.lookup(fileName),
25 | },
26 | data,
27 | })
28 | if (option.customUrl) {
29 | return `${option.customUrl}/${encodeURI(option.path)}${encodeURIComponent(fileName)}`
30 | } else {
31 | return res.data.content.download_url
32 | }
33 | },
34 | smms: async (option, filePath) => {
35 | const fileName = path.basename(filePath)
36 | const buffer = await fs.readFile(filePath)
37 | const formData = new FormData()
38 | formData.append('smfile', buffer, fileName)
39 | const res = await axios.request({
40 | method: 'POST',
41 | url: `https://${option.domain ? option.domain : 'sm.ms'}/api/v2/upload`,
42 | headers: {
43 | 'Authorization': option.token,
44 | 'User-Agent': 'wj-markdown-editor',
45 | 'Content-Type': 'multipart/form-data',
46 | },
47 | data: formData,
48 | })
49 | if (res.data.code === 'success') {
50 | return res.data.data.url
51 | } else if (res.data.code === 'image_repeated') {
52 | return res.data.images
53 | }
54 | throw new Error(res.data.message)
55 | },
56 | }
57 |
58 | async function upload(imageBedConfig, filePath) {
59 | const uploader = imageBedConfig.uploader
60 | if (!handler[uploader]) {
61 | throw new Error('不支持当前图床类型。')
62 | }
63 | return await handler[uploader](imageBedConfig[uploader], filePath)
64 | }
65 |
66 | export default {
67 | upload,
68 | }
69 |
--------------------------------------------------------------------------------
/wj-markdown-editor-electron/src/util/logUtil.js:
--------------------------------------------------------------------------------
1 | import path from 'node:path'
2 | import dayjs from 'dayjs'
3 | import { app } from 'electron'
4 | import log from 'electron-log'
5 |
6 | export default {
7 | init: () => {
8 | // 日志文件大小 5MB
9 | log.transports.file.maxSize = 1048576 * 5
10 | Object.assign(console, log.functions)
11 | log.transports.file.resolvePathFn = () => path.join(app.getPath('documents'), `wj-markdown-editor/logs/${dayjs().format('YYYY-MM-DD')}/main.log`)
12 | },
13 | }
14 |
--------------------------------------------------------------------------------
/wj-markdown-editor-electron/src/util/protocolUtil.js:
--------------------------------------------------------------------------------
1 | import path from 'node:path'
2 | import { net, protocol } from 'electron'
3 | import commonUtil from './commonUtil.js'
4 | import winInfoUtil from './win/winInfoUtil.js'
5 |
6 | export default {
7 | handleProtocol: () => {
8 | protocol.handle('wj', (request) => {
9 | const url = decodeURIComponent(commonUtil.hexToString(request.url.slice('wj:///'.length)))
10 | if (path.isAbsolute(url)) {
11 | return net.fetch(`file:///${url}`)
12 | } else {
13 | const winInfo = winInfoUtil.getWinInfo(request.headers.get('X-Window-ID'))
14 | if (winInfo.path) {
15 | return net.fetch(`file:///${path.resolve(path.dirname(winInfo.path), url)}`)
16 | }
17 | }
18 | })
19 | },
20 | }
21 |
--------------------------------------------------------------------------------
/wj-markdown-editor-electron/src/util/win/aboutUtil.js:
--------------------------------------------------------------------------------
1 | import path from 'node:path'
2 | import { fileURLToPath } from 'node:url'
3 | import { BrowserWindow, shell } from 'electron'
4 |
5 | const __filename = fileURLToPath(import.meta.url)
6 | const __dirname = path.dirname(__filename)
7 |
8 | let aboutWin
9 |
10 | export default {
11 | get: () => aboutWin,
12 | channel: {
13 | 'open-about': () => {
14 | if (aboutWin) {
15 | aboutWin.show()
16 | return
17 | }
18 | aboutWin = new BrowserWindow({
19 | frame: false,
20 | icon: path.resolve(__dirname, '../../../icon/favicon.ico'),
21 | title: '设置',
22 | width: 490,
23 | height: 390,
24 | show: false,
25 | maximizable: false,
26 | resizable: false,
27 | webPreferences: {
28 | preload: path.resolve(__dirname, '../../preload.js'),
29 | },
30 | })
31 | // 通过默认浏览器打开链接
32 | aboutWin.webContents.setWindowOpenHandler((details) => {
33 | shell.openExternal(details.url).then(() => {})
34 | return { action: 'deny' }
35 | })
36 | aboutWin.once('ready-to-show', () => {
37 | aboutWin.show()
38 | })
39 | if (process.env.NODE_ENV && process.env.NODE_ENV.trim() === 'dev') {
40 | aboutWin.loadURL('http://localhost:8080/#/about').then(() => {
41 | aboutWin.webContents.openDevTools({ mode: 'undocked' })
42 | })
43 | } else {
44 | aboutWin.loadFile(path.resolve(__dirname, '../../../web-dist/index.html'), { hash: 'about' }).then(() => {})
45 | }
46 | },
47 | 'about-minimize': () => {
48 | aboutWin.minimize()
49 | },
50 | 'about-close': () => {
51 | aboutWin.hide()
52 | },
53 | },
54 | }
55 |
--------------------------------------------------------------------------------
/wj-markdown-editor-electron/src/util/win/guideUtil.js:
--------------------------------------------------------------------------------
1 | import path from 'node:path'
2 | import { fileURLToPath } from 'node:url'
3 | import { BrowserWindow, shell } from 'electron'
4 |
5 | const __filename = fileURLToPath(import.meta.url)
6 | const __dirname = path.dirname(__filename)
7 |
8 | let guideWin
9 |
10 | export default {
11 | get: () => guideWin,
12 | channel: {
13 | 'open-guide': () => {
14 | if (guideWin) {
15 | guideWin.show()
16 | return
17 | }
18 | guideWin = new BrowserWindow({
19 | frame: false,
20 | icon: path.resolve(__dirname, '../../../icon/favicon.ico'),
21 | title: '示例',
22 | width: 1200,
23 | height: 800,
24 | minWidth: 480,
25 | minHeight: 480,
26 | show: false,
27 | maximizable: false,
28 | resizable: true,
29 | webPreferences: {
30 | preload: path.resolve(__dirname, '../../preload.js'),
31 | },
32 | })
33 | // 通过默认浏览器打开链接
34 | guideWin.webContents.setWindowOpenHandler((details) => {
35 | shell.openExternal(details.url).then(() => {})
36 | return { action: 'deny' }
37 | })
38 | guideWin.once('ready-to-show', () => {
39 | guideWin.show()
40 | })
41 | if (process.env.NODE_ENV && process.env.NODE_ENV.trim() === 'dev') {
42 | guideWin.loadURL('http://localhost:8080/#/guide').then(() => {
43 | // guideWin.webContents.openDevTools({ mode: 'undocked' })
44 | })
45 | } else {
46 | guideWin.loadFile(path.resolve(__dirname, '../../../web-dist/index.html'), { hash: 'guide' }).then(() => {})
47 | }
48 | },
49 | 'guide-minimize': () => {
50 | guideWin.minimize()
51 | },
52 | 'guide-close': () => {
53 | guideWin.hide()
54 | },
55 | },
56 | }
57 |
--------------------------------------------------------------------------------
/wj-markdown-editor-electron/src/util/win/screenshotsUtil.js:
--------------------------------------------------------------------------------
1 | import { globalShortcut } from 'electron'
2 | import Screenshots from 'electron-screenshots'
3 |
4 | let screenshots
5 | let onOk
6 | let onAlways
7 |
8 | function finish() {
9 | globalShortcut.unregister('esc')
10 | onAlways && onAlways()
11 | }
12 |
13 | export default {
14 | init: () => {
15 | screenshots = new Screenshots({ singleWindow: true })
16 | screenshots.on('cancel', (e) => {
17 | e.preventDefault()
18 | })
19 | screenshots.on('ok', (e, buffer, bounds) => {
20 | onOk && onOk(Buffer.from(buffer).toString('base64'), bounds)
21 | finish()
22 | })
23 | screenshots.on('afterSave', () => {
24 | finish()
25 | })
26 | },
27 | startCapture: (ok, always) => {
28 | onOk = ok
29 | onAlways = always
30 | screenshots.startCapture().then(() => {
31 | globalShortcut.register('esc', () => {
32 | if (screenshots.$win?.isFocused()) {
33 | screenshots.endCapture().then(() => {
34 | finish()
35 | })
36 | }
37 | })
38 | })
39 | },
40 | }
41 |
--------------------------------------------------------------------------------
/wj-markdown-editor-electron/src/util/win/settingUtil.js:
--------------------------------------------------------------------------------
1 | import path from 'node:path'
2 | import { fileURLToPath } from 'node:url'
3 | import { BrowserWindow, shell } from 'electron'
4 |
5 | const __filename = fileURLToPath(import.meta.url)
6 | const __dirname = path.dirname(__filename)
7 |
8 | let settingWin
9 |
10 | export default {
11 | get: () => settingWin,
12 | close: () => {
13 | if (settingWin) {
14 | settingWin.close()
15 | }
16 | },
17 | channel: {
18 | 'open-setting': () => {
19 | if (settingWin) {
20 | settingWin.show()
21 | return
22 | }
23 | settingWin = new BrowserWindow({
24 | frame: false,
25 | icon: path.resolve(__dirname, '../../../icon/favicon.ico'),
26 | title: '设置',
27 | width: 800,
28 | height: 800,
29 | show: false,
30 | maximizable: false,
31 | resizable: false,
32 | webPreferences: {
33 | preload: path.resolve(__dirname, '../../preload.js'),
34 | },
35 | })
36 | // 通过默认浏览器打开链接
37 | settingWin.webContents.setWindowOpenHandler((details) => {
38 | shell.openExternal(details.url).then(() => {})
39 | return { action: 'deny' }
40 | })
41 | settingWin.once('ready-to-show', () => {
42 | settingWin.show()
43 | })
44 | if (process.env.NODE_ENV && process.env.NODE_ENV.trim() === 'dev') {
45 | settingWin.loadURL('http://localhost:8080/#/setting').then(() => {
46 | // settingWin.webContents.openDevTools({ mode: 'undocked' })
47 | })
48 | } else {
49 | settingWin.loadFile(path.resolve(__dirname, '../../../web-dist/index.html'), { hash: 'setting' }).then(() => {})
50 | }
51 | },
52 | 'setting-minimize': () => {
53 | settingWin.minimize()
54 | },
55 | 'setting-close': () => {
56 | settingWin.hide()
57 | },
58 | },
59 | }
60 |
--------------------------------------------------------------------------------
/wj-markdown-editor-web/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | pnpm-debug.log*
8 | lerna-debug.log*
9 |
10 | node_modules
11 | .DS_Store
12 | dist
13 | dist-ssr
14 | coverage
15 | *.local
16 |
17 | /cypress/videos/
18 | /cypress/screenshots/
19 |
20 | # Editor directories and files
21 | .vscode/*
22 | !.vscode/extensions.json
23 | .idea
24 | *.suo
25 | *.ntvs*
26 | *.njsproj
27 | *.sln
28 | *.sw?
29 |
30 | *.tsbuildinfo
31 |
--------------------------------------------------------------------------------
/wj-markdown-editor-web/README.md:
--------------------------------------------------------------------------------
1 | # wj-markdown-editor-web
2 |
3 | This template should help get you started developing with Vue 3 in Vite.
4 |
5 | ## Recommended IDE Setup
6 |
7 | [VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur).
8 |
9 | ## Customize configuration
10 |
11 | See [Vite Configuration Reference](https://vite.dev/config/).
12 |
13 | ## Project Setup
14 |
15 | ```sh
16 | npm install
17 | ```
18 |
19 | ### Compile and Hot-Reload for Development
20 |
21 | ```sh
22 | npm run dev
23 | ```
24 |
25 | ### Compile and Minify for Production
26 |
27 | ```sh
28 | npm run build
29 | ```
30 |
--------------------------------------------------------------------------------
/wj-markdown-editor-web/eslint.config.js:
--------------------------------------------------------------------------------
1 | import antfu from '@antfu/eslint-config'
2 |
3 | export default antfu({
4 | unocss: true,
5 | vue: true,
6 | formatters: {
7 | css: true,
8 | html: true,
9 | markdown: true,
10 | },
11 | rules: {
12 | 'style/brace-style': 'off',
13 | 'antfu/no-top-level-await': 'off',
14 | },
15 | ignores: ['public/**'],
16 | })
17 |
--------------------------------------------------------------------------------
/wj-markdown-editor-web/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | wj-markdown-editor
8 |
9 |
10 |
25 |

30 |
31 |
55 |
56 |
57 |
58 |
68 |
69 |
--------------------------------------------------------------------------------
/wj-markdown-editor-web/jsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "paths": {
4 | "@/*": ["./src/*"]
5 | }
6 | },
7 | "exclude": ["node_modules", "dist"]
8 | }
9 |
--------------------------------------------------------------------------------
/wj-markdown-editor-web/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "wj-markdown-editor-web",
3 | "version": "0.0.0",
4 | "private": true,
5 | "type": "module",
6 | "scripts": {
7 | "dev": "vite",
8 | "build": "vite build",
9 | "preview": "vite preview"
10 | },
11 | "dependencies": {
12 | "@codemirror/lang-markdown": "^6.3.2",
13 | "@codemirror/language-data": "^6.5.1",
14 | "@codemirror/theme-one-dark": "^6.1.2",
15 | "@codemirror/view": "6.27.0",
16 | "@iconify-json/tabler": "^1.2.16",
17 | "@mdit/plugin-img-size": "^0.16.0",
18 | "@vscode/markdown-it-katex": "^1.1.1",
19 | "ant-design-vue": "^4.2.6",
20 | "codemirror": "^6.0.1",
21 | "dayjs": "^1.11.13",
22 | "github-markdown-css": "^5.8.1",
23 | "highlight.js": "^11.11.1",
24 | "katex": "^0.16.21",
25 | "mark.js": "^8.11.1",
26 | "markdown-it": "^14.1.0",
27 | "markdown-it-anchor": "^9.2.0",
28 | "markdown-it-container": "^4.0.0",
29 | "markdown-it-deflist": "^3.0.0",
30 | "markdown-it-for-inline": "^2.0.1",
31 | "markdown-it-github-alerts": "^1.0.0",
32 | "markdown-it-ins": "^4.0.0",
33 | "markdown-it-mark": "^4.0.0",
34 | "markdown-it-sub": "^2.0.0",
35 | "markdown-it-sup": "^2.0.0",
36 | "markdown-it-task-lists": "^2.1.1",
37 | "markdown-it-textual-uml": "^0.17.1",
38 | "mermaid": "^11.4.1",
39 | "nanoid": "^5.1.5",
40 | "pinia": "^3.0.1",
41 | "prettier": "^3.5.3",
42 | "split-grid": "^1.0.11",
43 | "vue": "^3.5.13",
44 | "vue-router": "^4.5.0",
45 | "vue3-colorpicker": "^2.3.0"
46 | },
47 | "devDependencies": {
48 | "@antfu/eslint-config": "^4.11.0",
49 | "@unocss/eslint-plugin": "65.4.3",
50 | "@vitejs/plugin-vue": "^5.2.3",
51 | "eslint": "^9.17.0",
52 | "eslint-plugin-format": "^1.0.1",
53 | "postcss-pxtorem": "^6.1.0",
54 | "sass": "^1.83.0",
55 | "unocss": "65.4.3",
56 | "vite": "^6.2.4",
57 | "vite-plugin-eslint": "^1.8.1",
58 | "vite-plugin-vue-devtools": "^7.7.2"
59 | }
60 | }
61 |
--------------------------------------------------------------------------------
/wj-markdown-editor-web/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlbwqmz/wj-markdown-editor/76b7a320f92c1f419dd88c29b310044fc9b347c4/wj-markdown-editor-web/public/favicon.ico
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/App.vue:
--------------------------------------------------------------------------------
1 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
67 |
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/img/guide/Code.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlbwqmz/wj-markdown-editor/76b7a320f92c1f419dd88c29b310044fc9b347c4/wj-markdown-editor-web/src/assets/img/guide/Code.webp
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/img/guide/Container.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlbwqmz/wj-markdown-editor/76b7a320f92c1f419dd88c29b310044fc9b347c4/wj-markdown-editor-web/src/assets/img/guide/Container.webp
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/img/guide/CurrentDate.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlbwqmz/wj-markdown-editor/76b7a320f92c1f419dd88c29b310044fc9b347c4/wj-markdown-editor-web/src/assets/img/guide/CurrentDate.webp
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/img/guide/GithubAlert.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlbwqmz/wj-markdown-editor/76b7a320f92c1f419dd88c29b310044fc9b347c4/wj-markdown-editor-web/src/assets/img/guide/GithubAlert.webp
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/img/guide/TextColor.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlbwqmz/wj-markdown-editor/76b7a320f92c1f419dd88c29b310044fc9b347c4/wj-markdown-editor-web/src/assets/img/guide/TextColor.png
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/img/guide/TextColor.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlbwqmz/wj-markdown-editor/76b7a320f92c1f419dd88c29b310044fc9b347c4/wj-markdown-editor-web/src/assets/img/guide/TextColor.webp
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/img/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nlbwqmz/wj-markdown-editor/76b7a320f92c1f419dd88c29b310044fc9b347c4/wj-markdown-editor-web/src/assets/img/logo.png
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/code-theme.scss:
--------------------------------------------------------------------------------
1 | @use "./theme/a11y-dark";
2 | @use "./theme/a11y-light";
3 | @use "./theme/agate";
4 | @use "./theme/an-old-hope";
5 | @use "./theme/androidstudio";
6 | @use "./theme/arduino-light";
7 | @use "./theme/arta";
8 | @use "./theme/ascetic";
9 | @use "./theme/atom-one-dark-reasonable";
10 | @use "./theme/atom-one-dark";
11 | @use "./theme/atom-one-light";
12 | @use "./theme/brown-paper";
13 | @use "./theme/codepen-embed";
14 | @use "./theme/color-brewer";
15 | @use "./theme/dark";
16 | @use "./theme/default";
17 | @use "./theme/devibeans";
18 | @use "./theme/docco";
19 | @use "./theme/far";
20 | @use "./theme/felipec";
21 | @use "./theme/foundation";
22 | @use "./theme/github-dark-dimmed";
23 | @use "./theme/github-dark";
24 | @use "./theme/github";
25 | @use "./theme/gml";
26 | @use "./theme/googlecode";
27 | @use "./theme/gradient-dark";
28 | @use "./theme/gradient-light";
29 | @use "./theme/grayscale";
30 | @use "./theme/hybrid";
31 | @use "./theme/idea";
32 | @use "./theme/intellij-light";
33 | @use "./theme/ir-black";
34 | @use "./theme/isbl-editor-dark";
35 | @use "./theme/isbl-editor-light";
36 | @use "./theme/kimbie-dark";
37 | @use "./theme/kimbie-light";
38 | @use "./theme/lightfair";
39 | @use "./theme/lioshi";
40 | @use "./theme/magula";
41 | @use "./theme/mono-blue";
42 | @use "./theme/monokai-sublime";
43 | @use "./theme/monokai";
44 | @use "./theme/night-owl";
45 | @use "./theme/nnfx-dark";
46 | @use "./theme/nnfx-light";
47 | @use "./theme/nord";
48 | @use "./theme/obsidian";
49 | @use "./theme/panda-syntax-dark";
50 | @use "./theme/panda-syntax-light";
51 | @use "./theme/paraiso-dark";
52 | @use "./theme/paraiso-light";
53 | @use "./theme/pojoaque";
54 | @use "./theme/purebasic";
55 | @use "./theme/qtcreator-dark";
56 | @use "./theme/qtcreator-light";
57 | @use "./theme/rainbow";
58 | @use "./theme/routeros";
59 | @use "./theme/school-book";
60 | @use "./theme/shades-of-purple";
61 | @use "./theme/srcery";
62 | @use "./theme/stackoverflow-dark";
63 | @use "./theme/stackoverflow-light";
64 | @use "./theme/sunburst";
65 | @use "./theme/tokyo-night-dark";
66 | @use "./theme/tokyo-night-light";
67 | @use "./theme/tomorrow-night-blue";
68 | @use "./theme/tomorrow-night-bright";
69 | @use "./theme/vs";
70 | @use "./theme/vs2015";
71 | @use "./theme/xcode";
72 | @use "./theme/xt256";
73 |
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/a11y-dark.scss:
--------------------------------------------------------------------------------
1 | .code-theme-a11y-dark{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*!
11 | Theme: a11y-dark
12 | Author: @ericwbailey
13 | Maintainer: @ericwbailey
14 |
15 | Based on the Tomorrow Night Eighties theme: https://github.com/isagalaev/highlight.js/blob/master/src/styles/tomorrow-night-eighties.css
16 | */
17 | .hljs {
18 | background: #2b2b2b;
19 | color: #f8f8f2
20 | }
21 | /* Comment */
22 | .hljs-comment,
23 | .hljs-quote {
24 | color: #d4d0ab
25 | }
26 | /* Red */
27 | .hljs-variable,
28 | .hljs-template-variable,
29 | .hljs-tag,
30 | .hljs-name,
31 | .hljs-selector-id,
32 | .hljs-selector-class,
33 | .hljs-regexp,
34 | .hljs-deletion {
35 | color: #ffa07a
36 | }
37 | /* Orange */
38 | .hljs-number,
39 | .hljs-built_in,
40 | .hljs-literal,
41 | .hljs-type,
42 | .hljs-params,
43 | .hljs-meta,
44 | .hljs-link {
45 | color: #f5ab35
46 | }
47 | /* Yellow */
48 | .hljs-attribute {
49 | color: #ffd700
50 | }
51 | /* Green */
52 | .hljs-string,
53 | .hljs-symbol,
54 | .hljs-bullet,
55 | .hljs-addition {
56 | color: #abe338
57 | }
58 | /* Blue */
59 | .hljs-title,
60 | .hljs-section {
61 | color: #00e0e0
62 | }
63 | /* Purple */
64 | .hljs-keyword,
65 | .hljs-selector-tag {
66 | color: #dcc6e0
67 | }
68 | .hljs-emphasis {
69 | font-style: italic
70 | }
71 | .hljs-strong {
72 | font-weight: bold
73 | }
74 | @media screen and (-ms-high-contrast: active) {
75 | .hljs-addition,
76 | .hljs-attribute,
77 | .hljs-built_in,
78 | .hljs-bullet,
79 | .hljs-comment,
80 | .hljs-link,
81 | .hljs-literal,
82 | .hljs-meta,
83 | .hljs-number,
84 | .hljs-params,
85 | .hljs-string,
86 | .hljs-symbol,
87 | .hljs-type,
88 | .hljs-quote {
89 | color: highlight
90 | }
91 | .hljs-keyword,
92 | .hljs-selector-tag {
93 | font-weight: bold
94 | }
95 | }
96 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/a11y-light.scss:
--------------------------------------------------------------------------------
1 | .code-theme-a11y-light{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*!
11 | Theme: a11y-light
12 | Author: @ericwbailey
13 | Maintainer: @ericwbailey
14 |
15 | Based on the Tomorrow Night Eighties theme: https://github.com/isagalaev/highlight.js/blob/master/src/styles/tomorrow-night-eighties.css
16 | */
17 | .hljs {
18 | background: #fefefe;
19 | color: #545454
20 | }
21 | /* Comment */
22 | .hljs-comment,
23 | .hljs-quote {
24 | color: #696969
25 | }
26 | /* Red */
27 | .hljs-variable,
28 | .hljs-template-variable,
29 | .hljs-tag,
30 | .hljs-name,
31 | .hljs-selector-id,
32 | .hljs-selector-class,
33 | .hljs-regexp,
34 | .hljs-deletion {
35 | color: #d91e18
36 | }
37 | /* Orange */
38 | .hljs-number,
39 | .hljs-built_in,
40 | .hljs-literal,
41 | .hljs-type,
42 | .hljs-params,
43 | .hljs-meta,
44 | .hljs-link {
45 | color: #aa5d00
46 | }
47 | /* Yellow */
48 | .hljs-attribute {
49 | color: #aa5d00
50 | }
51 | /* Green */
52 | .hljs-string,
53 | .hljs-symbol,
54 | .hljs-bullet,
55 | .hljs-addition {
56 | color: #008000
57 | }
58 | /* Blue */
59 | .hljs-title,
60 | .hljs-section {
61 | color: #007faa
62 | }
63 | /* Purple */
64 | .hljs-keyword,
65 | .hljs-selector-tag {
66 | color: #7928a1
67 | }
68 | .hljs-emphasis {
69 | font-style: italic
70 | }
71 | .hljs-strong {
72 | font-weight: bold
73 | }
74 | @media screen and (-ms-high-contrast: active) {
75 | .hljs-addition,
76 | .hljs-attribute,
77 | .hljs-built_in,
78 | .hljs-bullet,
79 | .hljs-comment,
80 | .hljs-link,
81 | .hljs-literal,
82 | .hljs-meta,
83 | .hljs-number,
84 | .hljs-params,
85 | .hljs-string,
86 | .hljs-symbol,
87 | .hljs-type,
88 | .hljs-quote {
89 | color: highlight
90 | }
91 | .hljs-keyword,
92 | .hljs-selector-tag {
93 | font-weight: bold
94 | }
95 | }
96 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/agate.scss:
--------------------------------------------------------------------------------
1 | .code-theme-agate{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*!
11 | Theme: Agate
12 | Author: (c) Taufik Nurrohman
13 | Maintainer: @taufik-nurrohman
14 | Updated: 2021-04-24
15 |
16 | #333
17 | #62c8f3
18 | #7bd694
19 | #888
20 | #a2fca2
21 | #ade5fc
22 | #b8d8a2
23 | #c6b4f0
24 | #d36363
25 | #fc9b9b
26 | #fcc28c
27 | #ffa
28 | #fff
29 | */
30 | .hljs {
31 | background: #333;
32 | color: #fff
33 | }
34 | .hljs-doctag,
35 | .hljs-meta-keyword,
36 | .hljs-name,
37 | .hljs-strong {
38 | font-weight: bold
39 | }
40 | .hljs-code,
41 | .hljs-emphasis {
42 | font-style: italic
43 | }
44 | .hljs-section,
45 | .hljs-tag {
46 | color: #62c8f3
47 | }
48 | .hljs-selector-class,
49 | .hljs-selector-id,
50 | .hljs-template-variable,
51 | .hljs-variable {
52 | color: #ade5fc
53 | }
54 | .hljs-meta-string,
55 | .hljs-string {
56 | color: #a2fca2
57 | }
58 | .hljs-attr,
59 | .hljs-quote,
60 | .hljs-selector-attr {
61 | color: #7bd694
62 | }
63 | .hljs-tag .hljs-attr {
64 | color: inherit
65 | }
66 | .hljs-attribute,
67 | .hljs-title,
68 | .hljs-type {
69 | color: #ffa
70 | }
71 | .hljs-number,
72 | .hljs-symbol {
73 | color: #d36363
74 | }
75 | .hljs-bullet,
76 | .hljs-template-tag {
77 | color: #b8d8a2
78 | }
79 | .hljs-built_in,
80 | .hljs-keyword,
81 | .hljs-literal,
82 | .hljs-selector-tag {
83 | color: #fcc28c
84 | }
85 | .hljs-code,
86 | .hljs-comment,
87 | .hljs-formula {
88 | color: #888
89 | }
90 | .hljs-link,
91 | .hljs-selector-pseudo,
92 | .hljs-regexp {
93 | color: #c6b4f0
94 | }
95 | .hljs-meta {
96 | color: #fc9b9b
97 | }
98 | .hljs-deletion {
99 | background: #fc9b9b;
100 | color: #333
101 | }
102 | .hljs-addition {
103 | background: #a2fca2;
104 | color: #333
105 | }
106 | /* Purposely ignored */
107 | .hljs-operator,
108 | .hljs-params,
109 | .hljs-property,
110 | .hljs-punctuation {
111 |
112 | }
113 | .hljs-subst {
114 | color: #fff
115 | }
116 | /* This applies only if HTML auto-merging plugin is enabled by user (#2889) */
117 | .hljs a {
118 | color: inherit
119 | }
120 | .hljs a:focus,
121 | .hljs a:hover {
122 | color: inherit;
123 | text-decoration: underline
124 | }
125 | .hljs mark {
126 | background: #555;
127 | color: inherit
128 | }
129 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/an-old-hope.scss:
--------------------------------------------------------------------------------
1 | .code-theme-an-old-hope{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*!
11 | Theme: An Old Hope – Star Wars Syntax
12 | Author: (c) Gustavo Costa
13 | Maintainer: @gusbemacbe
14 |
15 | Original theme - Ocean Dark Theme – by https://github.com/gavsiu
16 | Based on Jesse Leite's Atom syntax theme 'An Old Hope'
17 | https://github.com/JesseLeite/an-old-hope-syntax-atom
18 | */
19 | /* Millenium Falcon */
20 | .hljs {
21 | background: #1C1D21;
22 | color: #c0c5ce
23 | }
24 | /* Death Star Comment */
25 | .hljs-comment,
26 | .hljs-quote {
27 | color: #B6B18B
28 | }
29 | /* Darth Vader */
30 | .hljs-variable,
31 | .hljs-template-variable,
32 | .hljs-tag,
33 | .hljs-name,
34 | .hljs-selector-id,
35 | .hljs-selector-class,
36 | .hljs-regexp,
37 | .hljs-deletion {
38 | color: #EB3C54
39 | }
40 | /* Threepio */
41 | .hljs-number,
42 | .hljs-built_in,
43 | .hljs-literal,
44 | .hljs-type,
45 | .hljs-params,
46 | .hljs-meta,
47 | .hljs-link {
48 | color: #E7CE56
49 | }
50 | /* Luke Skywalker */
51 | .hljs-attribute {
52 | color: #EE7C2B
53 | }
54 | /* Obi Wan Kenobi */
55 | .hljs-string,
56 | .hljs-symbol,
57 | .hljs-bullet,
58 | .hljs-addition {
59 | color: #4FB4D7
60 | }
61 | /* Yoda */
62 | .hljs-title,
63 | .hljs-section {
64 | color: #78BB65
65 | }
66 | /* Mace Windu */
67 | .hljs-keyword,
68 | .hljs-selector-tag {
69 | color: #B45EA4
70 | }
71 | .hljs-emphasis {
72 | font-style: italic
73 | }
74 | .hljs-strong {
75 | font-weight: bold
76 | }
77 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/androidstudio.scss:
--------------------------------------------------------------------------------
1 | .code-theme-androidstudio{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*
11 | Date: 24 Fev 2015
12 | Author: Pedro Oliveira
13 | */
14 | .hljs {
15 | color: #a9b7c6;
16 | background: #282b2e
17 | }
18 | .hljs-number,
19 | .hljs-literal,
20 | .hljs-symbol,
21 | .hljs-bullet {
22 | color: #6897BB
23 | }
24 | .hljs-keyword,
25 | .hljs-selector-tag,
26 | .hljs-deletion {
27 | color: #cc7832
28 | }
29 | .hljs-variable,
30 | .hljs-template-variable,
31 | .hljs-link {
32 | color: #629755
33 | }
34 | .hljs-comment,
35 | .hljs-quote {
36 | color: #808080
37 | }
38 | .hljs-meta {
39 | color: #bbb529
40 | }
41 | .hljs-string,
42 | .hljs-attribute,
43 | .hljs-addition {
44 | color: #6A8759
45 | }
46 | .hljs-section,
47 | .hljs-title,
48 | .hljs-type {
49 | color: #ffc66d
50 | }
51 | .hljs-name,
52 | .hljs-selector-id,
53 | .hljs-selector-class {
54 | color: #e8bf6a
55 | }
56 | .hljs-emphasis {
57 | font-style: italic
58 | }
59 | .hljs-strong {
60 | font-weight: bold
61 | }
62 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/arduino-light.scss:
--------------------------------------------------------------------------------
1 | .code-theme-arduino-light{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*
11 |
12 | Arduino® Light Theme - Stefania Mellai
13 |
14 | */
15 | .hljs {
16 | background: white;
17 | color: #434f54
18 | }
19 | .hljs-subst {
20 | color: #434f54
21 | }
22 | .hljs-keyword,
23 | .hljs-attribute,
24 | .hljs-selector-tag,
25 | .hljs-doctag,
26 | .hljs-name {
27 | color: #00979D
28 | }
29 | .hljs-built_in,
30 | .hljs-literal,
31 | .hljs-bullet,
32 | .hljs-code,
33 | .hljs-addition {
34 | color: #D35400
35 | }
36 | .hljs-regexp,
37 | .hljs-symbol,
38 | .hljs-variable,
39 | .hljs-template-variable,
40 | .hljs-link,
41 | .hljs-selector-attr,
42 | .hljs-selector-pseudo {
43 | color: #00979D
44 | }
45 | .hljs-type,
46 | .hljs-string,
47 | .hljs-selector-id,
48 | .hljs-selector-class,
49 | .hljs-quote,
50 | .hljs-template-tag,
51 | .hljs-deletion {
52 | color: #005C5F
53 | }
54 | .hljs-comment {
55 | color: rgba(149,165,166,.8)
56 | }
57 | .hljs-meta .hljs-keyword {
58 | color: #728E00
59 | }
60 | .hljs-meta {
61 | color: #434f54
62 | }
63 | .hljs-emphasis {
64 | font-style: italic
65 | }
66 | .hljs-strong {
67 | font-weight: bold
68 | }
69 | .hljs-function {
70 | color: #728E00
71 | }
72 | .hljs-title,
73 | .hljs-section {
74 | color: #880000;
75 | font-weight: bold
76 | }
77 | .hljs-number {
78 | color: #8A7B52
79 | }
80 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/arta.scss:
--------------------------------------------------------------------------------
1 | .code-theme-arta{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*
11 | Date: 17.V.2011
12 | Author: pumbur
13 | */
14 | .hljs {
15 | background: #222;
16 | color: #aaa
17 | }
18 | .hljs-subst {
19 | color: #aaa
20 | }
21 | .hljs-section {
22 | color: #fff
23 | }
24 | .hljs-comment,
25 | .hljs-quote,
26 | .hljs-meta {
27 | color: #444
28 | }
29 | .hljs-string,
30 | .hljs-symbol,
31 | .hljs-bullet,
32 | .hljs-regexp {
33 | color: #ffcc33
34 | }
35 | .hljs-number,
36 | .hljs-addition {
37 | color: #00cc66
38 | }
39 | .hljs-built_in,
40 | .hljs-literal,
41 | .hljs-type,
42 | .hljs-template-variable,
43 | .hljs-attribute,
44 | .hljs-link {
45 | color: #32aaee
46 | }
47 | .hljs-keyword,
48 | .hljs-selector-tag,
49 | .hljs-name,
50 | .hljs-selector-id,
51 | .hljs-selector-class {
52 | color: #6644aa
53 | }
54 | .hljs-title,
55 | .hljs-variable,
56 | .hljs-deletion,
57 | .hljs-template-tag {
58 | color: #bb1166
59 | }
60 | .hljs-section,
61 | .hljs-doctag,
62 | .hljs-strong {
63 | font-weight: bold
64 | }
65 | .hljs-emphasis {
66 | font-style: italic
67 | }
68 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/ascetic.scss:
--------------------------------------------------------------------------------
1 | .code-theme-ascetic{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*
11 |
12 | Original style from softwaremaniacs.org (c) Ivan Sagalaev
13 |
14 | */
15 | .hljs {
16 | background: white;
17 | color: black
18 | }
19 | .hljs-string,
20 | .hljs-variable,
21 | .hljs-template-variable,
22 | .hljs-symbol,
23 | .hljs-bullet,
24 | .hljs-section,
25 | .hljs-addition,
26 | .hljs-attribute,
27 | .hljs-link {
28 | color: #888
29 | }
30 | .hljs-comment,
31 | .hljs-quote,
32 | .hljs-meta,
33 | .hljs-deletion {
34 | color: #ccc
35 | }
36 | .hljs-keyword,
37 | .hljs-selector-tag,
38 | .hljs-section,
39 | .hljs-name,
40 | .hljs-type,
41 | .hljs-strong {
42 | font-weight: bold
43 | }
44 | .hljs-emphasis {
45 | font-style: italic
46 | }
47 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/atom-one-dark-reasonable.scss:
--------------------------------------------------------------------------------
1 | .code-theme-atom-one-dark-reasonable{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*
11 |
12 | Atom One Dark With support for ReasonML by Gidi Morris, based off work by Daniel Gamage
13 |
14 | Original One Dark Syntax theme from https://github.com/atom/one-dark-syntax
15 |
16 | */
17 | .hljs {
18 | color: #abb2bf;
19 | background: #282c34
20 | }
21 | .hljs-keyword,
22 | .hljs-operator {
23 | color: #F92672
24 | }
25 | .hljs-pattern-match {
26 | color: #F92672
27 | }
28 | .hljs-pattern-match .hljs-constructor {
29 | color: #61aeee
30 | }
31 | .hljs-function {
32 | color: #61aeee
33 | }
34 | .hljs-function .hljs-params {
35 | color: #A6E22E
36 | }
37 | .hljs-function .hljs-params .hljs-typing {
38 | color: #FD971F
39 | }
40 | .hljs-module-access .hljs-module {
41 | color: #7e57c2
42 | }
43 | .hljs-constructor {
44 | color: #e2b93d
45 | }
46 | .hljs-constructor .hljs-string {
47 | color: #9CCC65
48 | }
49 | .hljs-comment,
50 | .hljs-quote {
51 | color: #b18eb1;
52 | font-style: italic
53 | }
54 | .hljs-doctag,
55 | .hljs-formula {
56 | color: #c678dd
57 | }
58 | .hljs-section,
59 | .hljs-name,
60 | .hljs-selector-tag,
61 | .hljs-deletion,
62 | .hljs-subst {
63 | color: #e06c75
64 | }
65 | .hljs-literal {
66 | color: #56b6c2
67 | }
68 | .hljs-string,
69 | .hljs-regexp,
70 | .hljs-addition,
71 | .hljs-attribute,
72 | .hljs-meta .hljs-string {
73 | color: #98c379
74 | }
75 | .hljs-built_in,
76 | .hljs-title.class_,
77 | .hljs-class .hljs-title {
78 | color: #e6c07b
79 | }
80 | .hljs-attr,
81 | .hljs-variable,
82 | .hljs-template-variable,
83 | .hljs-type,
84 | .hljs-selector-class,
85 | .hljs-selector-attr,
86 | .hljs-selector-pseudo,
87 | .hljs-number {
88 | color: #d19a66
89 | }
90 | .hljs-symbol,
91 | .hljs-bullet,
92 | .hljs-link,
93 | .hljs-meta,
94 | .hljs-selector-id,
95 | .hljs-title {
96 | color: #61aeee
97 | }
98 | .hljs-emphasis {
99 | font-style: italic
100 | }
101 | .hljs-strong {
102 | font-weight: bold
103 | }
104 | .hljs-link {
105 | text-decoration: underline
106 | }
107 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/atom-one-dark.scss:
--------------------------------------------------------------------------------
1 | .code-theme-atom-one-dark{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*
11 |
12 | Atom One Dark by Daniel Gamage
13 | Original One Dark Syntax theme from https://github.com/atom/one-dark-syntax
14 |
15 | base: #282c34
16 | mono-1: #abb2bf
17 | mono-2: #818896
18 | mono-3: #5c6370
19 | hue-1: #56b6c2
20 | hue-2: #61aeee
21 | hue-3: #c678dd
22 | hue-4: #98c379
23 | hue-5: #e06c75
24 | hue-5-2: #be5046
25 | hue-6: #d19a66
26 | hue-6-2: #e6c07b
27 |
28 | */
29 | .hljs {
30 | color: #abb2bf;
31 | background: #282c34;
32 | }
33 | .hljs-comment,
34 | .hljs-quote {
35 | color: #5c6370;
36 | font-style: italic
37 | }
38 | .hljs-doctag,
39 | .hljs-keyword,
40 | .hljs-formula {
41 | color: #c678dd
42 | }
43 | .hljs-section,
44 | .hljs-name,
45 | .hljs-selector-tag,
46 | .hljs-deletion,
47 | .hljs-subst {
48 | color: #e06c75
49 | }
50 | .hljs-literal {
51 | color: #56b6c2
52 | }
53 | .hljs-string,
54 | .hljs-regexp,
55 | .hljs-addition,
56 | .hljs-attribute,
57 | .hljs-meta .hljs-string {
58 | color: #98c379
59 | }
60 | .hljs-attr,
61 | .hljs-variable,
62 | .hljs-template-variable,
63 | .hljs-type,
64 | .hljs-selector-class,
65 | .hljs-selector-attr,
66 | .hljs-selector-pseudo,
67 | .hljs-number {
68 | color: #d19a66
69 | }
70 | .hljs-symbol,
71 | .hljs-bullet,
72 | .hljs-link,
73 | .hljs-meta,
74 | .hljs-selector-id,
75 | .hljs-title {
76 | color: #61aeee
77 | }
78 | .hljs-built_in,
79 | .hljs-title.class_,
80 | .hljs-class .hljs-title {
81 | color: #e6c07b
82 | }
83 | .hljs-emphasis {
84 | font-style: italic
85 | }
86 | .hljs-strong {
87 | font-weight: bold
88 | }
89 | .hljs-link {
90 | text-decoration: underline
91 | }
92 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/atom-one-light.scss:
--------------------------------------------------------------------------------
1 | .code-theme-atom-one-light{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*
11 |
12 | Atom One Light by Daniel Gamage
13 | Original One Light Syntax theme from https://github.com/atom/one-light-syntax
14 |
15 | base: #fafafa
16 | mono-1: #383a42
17 | mono-2: #686b77
18 | mono-3: #a0a1a7
19 | hue-1: #0184bb
20 | hue-2: #4078f2
21 | hue-3: #a626a4
22 | hue-4: #50a14f
23 | hue-5: #e45649
24 | hue-5-2: #c91243
25 | hue-6: #986801
26 | hue-6-2: #c18401
27 |
28 | */
29 | .hljs {
30 | color: #383a42;
31 | background: #fafafa
32 | }
33 | .hljs-comment,
34 | .hljs-quote {
35 | color: #a0a1a7;
36 | font-style: italic
37 | }
38 | .hljs-doctag,
39 | .hljs-keyword,
40 | .hljs-formula {
41 | color: #a626a4
42 | }
43 | .hljs-section,
44 | .hljs-name,
45 | .hljs-selector-tag,
46 | .hljs-deletion,
47 | .hljs-subst {
48 | color: #e45649
49 | }
50 | .hljs-literal {
51 | color: #0184bb
52 | }
53 | .hljs-string,
54 | .hljs-regexp,
55 | .hljs-addition,
56 | .hljs-attribute,
57 | .hljs-meta .hljs-string {
58 | color: #50a14f
59 | }
60 | .hljs-attr,
61 | .hljs-variable,
62 | .hljs-template-variable,
63 | .hljs-type,
64 | .hljs-selector-class,
65 | .hljs-selector-attr,
66 | .hljs-selector-pseudo,
67 | .hljs-number {
68 | color: #986801
69 | }
70 | .hljs-symbol,
71 | .hljs-bullet,
72 | .hljs-link,
73 | .hljs-meta,
74 | .hljs-selector-id,
75 | .hljs-title {
76 | color: #4078f2
77 | }
78 | .hljs-built_in,
79 | .hljs-title.class_,
80 | .hljs-class .hljs-title {
81 | color: #c18401
82 | }
83 | .hljs-emphasis {
84 | font-style: italic
85 | }
86 | .hljs-strong {
87 | font-weight: bold
88 | }
89 | .hljs-link {
90 | text-decoration: underline
91 | }
92 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/brown-paper.scss:
--------------------------------------------------------------------------------
1 | .code-theme-brown-paper{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*
11 |
12 | Brown Paper style from goldblog.com.ua (c) Zaripov Yura
13 |
14 | */
15 | .hljs {
16 | color: #363c69;
17 | background: #b7a68e url(./brown-papersq.png)
18 | }
19 | .hljs-keyword,
20 | .hljs-selector-tag,
21 | .hljs-literal {
22 | color: #005599;
23 | font-weight: bold
24 | }
25 | .hljs-subst {
26 | /* default */
27 |
28 | }
29 | .hljs-string,
30 | .hljs-title,
31 | .hljs-section,
32 | .hljs-type,
33 | .hljs-attribute,
34 | .hljs-symbol,
35 | .hljs-bullet,
36 | .hljs-built_in,
37 | .hljs-addition,
38 | .hljs-variable,
39 | .hljs-template-tag,
40 | .hljs-template-variable,
41 | .hljs-link,
42 | .hljs-name {
43 | color: #2c009f
44 | }
45 | .hljs-comment,
46 | .hljs-quote,
47 | .hljs-meta,
48 | .hljs-deletion {
49 | color: #802022
50 | }
51 | .hljs-keyword,
52 | .hljs-selector-tag,
53 | .hljs-literal,
54 | .hljs-doctag,
55 | .hljs-title,
56 | .hljs-section,
57 | .hljs-type,
58 | .hljs-name,
59 | .hljs-strong {
60 | font-weight: bold
61 | }
62 | .hljs-emphasis {
63 | font-style: italic
64 | }
65 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/codepen-embed.scss:
--------------------------------------------------------------------------------
1 | .code-theme-codepen-embed{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*
11 | codepen.io Embed Theme
12 | Author: Justin Perry
13 | Original theme - https://github.com/chriskempson/tomorrow-theme
14 | */
15 | .hljs {
16 | background: #222;
17 | color: #fff
18 | }
19 | .hljs-comment,
20 | .hljs-quote {
21 | color: #777
22 | }
23 | .hljs-variable,
24 | .hljs-template-variable,
25 | .hljs-tag,
26 | .hljs-regexp,
27 | .hljs-meta,
28 | .hljs-number,
29 | .hljs-built_in,
30 | .hljs-literal,
31 | .hljs-params,
32 | .hljs-symbol,
33 | .hljs-bullet,
34 | .hljs-link,
35 | .hljs-deletion {
36 | color: #ab875d
37 | }
38 | .hljs-section,
39 | .hljs-title,
40 | .hljs-name,
41 | .hljs-selector-id,
42 | .hljs-selector-class,
43 | .hljs-type,
44 | .hljs-attribute {
45 | color: #9b869b
46 | }
47 | .hljs-string,
48 | .hljs-keyword,
49 | .hljs-selector-tag,
50 | .hljs-addition {
51 | color: #8f9c6c
52 | }
53 | .hljs-emphasis {
54 | font-style: italic
55 | }
56 | .hljs-strong {
57 | font-weight: bold
58 | }
59 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/color-brewer.scss:
--------------------------------------------------------------------------------
1 | .code-theme-color-brewer{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*
11 |
12 | Colorbrewer theme
13 | Original: https://github.com/mbostock/colorbrewer-theme (c) Mike Bostock
14 | Ported by Fabrício Tavares de Oliveira
15 |
16 | */
17 | .hljs {
18 | color: #000;
19 | background: #fff
20 | }
21 | .hljs-subst {
22 | /* default */
23 |
24 | }
25 | .hljs-string,
26 | .hljs-meta,
27 | .hljs-symbol,
28 | .hljs-template-tag,
29 | .hljs-template-variable,
30 | .hljs-addition {
31 | color: #756bb1
32 | }
33 | .hljs-comment,
34 | .hljs-quote {
35 | color: #636363
36 | }
37 | .hljs-number,
38 | .hljs-regexp,
39 | .hljs-literal,
40 | .hljs-bullet,
41 | .hljs-link {
42 | color: #31a354
43 | }
44 | .hljs-deletion,
45 | .hljs-variable {
46 | color: #88f
47 | }
48 | .hljs-keyword,
49 | .hljs-selector-tag,
50 | .hljs-title,
51 | .hljs-section,
52 | .hljs-built_in,
53 | .hljs-doctag,
54 | .hljs-type,
55 | .hljs-tag,
56 | .hljs-name,
57 | .hljs-selector-id,
58 | .hljs-selector-class,
59 | .hljs-strong {
60 | color: #3182bd
61 | }
62 | .hljs-emphasis {
63 | font-style: italic
64 | }
65 | .hljs-attribute {
66 | color: #e6550d
67 | }
68 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/dark.scss:
--------------------------------------------------------------------------------
1 | .code-theme-dark{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*
11 |
12 | Dark style from softwaremaniacs.org (c) Ivan Sagalaev
13 |
14 | */
15 | .hljs {
16 | color: #ddd;
17 | background: #303030
18 | }
19 | .hljs-keyword,
20 | .hljs-selector-tag,
21 | .hljs-literal,
22 | .hljs-section,
23 | .hljs-link {
24 | color: white
25 | }
26 | .hljs-subst {
27 | /* default */
28 |
29 | }
30 | .hljs-string,
31 | .hljs-title,
32 | .hljs-name,
33 | .hljs-type,
34 | .hljs-attribute,
35 | .hljs-symbol,
36 | .hljs-bullet,
37 | .hljs-built_in,
38 | .hljs-addition,
39 | .hljs-variable,
40 | .hljs-template-tag,
41 | .hljs-template-variable {
42 | color: #d88
43 | }
44 | .hljs-comment,
45 | .hljs-quote,
46 | .hljs-deletion,
47 | .hljs-meta {
48 | color: #979797
49 | }
50 | .hljs-keyword,
51 | .hljs-selector-tag,
52 | .hljs-literal,
53 | .hljs-title,
54 | .hljs-section,
55 | .hljs-doctag,
56 | .hljs-type,
57 | .hljs-name,
58 | .hljs-strong {
59 | font-weight: bold
60 | }
61 | .hljs-emphasis {
62 | font-style: italic
63 | }
64 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/default.scss:
--------------------------------------------------------------------------------
1 | .code-theme-default{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*!
11 | Theme: Default
12 | Description: Original highlight.js style
13 | Author: (c) Ivan Sagalaev
14 | Maintainer: @highlightjs/core-team
15 | Website: https://highlightjs.org/
16 | License: see project LICENSE
17 | Touched: 2021
18 | */
19 | /*
20 | This is left on purpose making default.css the single file that can be lifted
21 | as-is from the repository directly without the need for a build step
22 |
23 | Typically this "required" baseline CSS is added by `makestuff.js` during build.
24 | */
25 | pre code.hljs {
26 | display: block;
27 | overflow-x: auto;
28 | padding: 1em
29 | }
30 | code.hljs {
31 | padding: 3px 5px
32 | }
33 | /* end baseline CSS */
34 | .hljs {
35 | background: #F3F3F3;
36 | color: #444
37 | }
38 | /* Base color: saturation 0; */
39 | .hljs-subst {
40 | /* default */
41 |
42 | }
43 | /* purposely ignored */
44 | .hljs-formula,
45 | .hljs-attr,
46 | .hljs-property,
47 | .hljs-params {
48 |
49 | }
50 | .hljs-comment {
51 | color: #697070
52 | }
53 | .hljs-tag,
54 | .hljs-punctuation {
55 | color: #444a
56 | }
57 | .hljs-tag .hljs-name,
58 | .hljs-tag .hljs-attr {
59 | color: #444
60 | }
61 | .hljs-keyword,
62 | .hljs-attribute,
63 | .hljs-selector-tag,
64 | .hljs-meta .hljs-keyword,
65 | .hljs-doctag,
66 | .hljs-name {
67 | font-weight: bold
68 | }
69 | /* User color: hue: 0 */
70 | .hljs-type,
71 | .hljs-string,
72 | .hljs-number,
73 | .hljs-selector-id,
74 | .hljs-selector-class,
75 | .hljs-quote,
76 | .hljs-template-tag,
77 | .hljs-deletion {
78 | color: #880000
79 | }
80 | .hljs-title,
81 | .hljs-section {
82 | color: #880000;
83 | font-weight: bold
84 | }
85 | .hljs-regexp,
86 | .hljs-symbol,
87 | .hljs-variable,
88 | .hljs-template-variable,
89 | .hljs-link,
90 | .hljs-selector-attr,
91 | .hljs-operator,
92 | .hljs-selector-pseudo {
93 | color: #ab5656
94 | }
95 | /* Language color: hue: 90; */
96 | .hljs-literal {
97 | color: #695
98 | }
99 | .hljs-built_in,
100 | .hljs-bullet,
101 | .hljs-code,
102 | .hljs-addition {
103 | color: #397300
104 | }
105 | /* Meta color: hue: 200 */
106 | .hljs-meta {
107 | color: #1f7199
108 | }
109 | .hljs-meta .hljs-string {
110 | color: #38a
111 | }
112 | /* Misc effects */
113 | .hljs-emphasis {
114 | font-style: italic
115 | }
116 | .hljs-strong {
117 | font-weight: bold
118 | }
119 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/devibeans.scss:
--------------------------------------------------------------------------------
1 | .code-theme-devibeans{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*!
11 | Theme: devibeans (dark)
12 | Author: @terminaldweller
13 | Maintainer: @terminaldweller
14 |
15 | Inspired by vim's jellybeans theme (https://github.com/nanotech/jellybeans.vim)
16 | */
17 | .hljs {
18 | background: #000000;
19 | color: #a39e9b
20 | }
21 | .hljs-attr,
22 | .hljs-template-tag {
23 | color: #8787d7
24 | }
25 | .hljs-comment,
26 | .hljs-doctag,
27 | .hljs-quote {
28 | color: #339966
29 | }
30 | .hljs-params {
31 | color: #a39e9b
32 | }
33 | .hljs-regexp {
34 | color: #d700ff
35 | }
36 | .hljs-tag,
37 | .hljs-selector-id,
38 | .hljs-number,
39 | .hljs-literal {
40 | color: #ef5350
41 | }
42 | .hljs-meta,
43 | .hljs-meta .hljs-keyword {
44 | color: #0087ff
45 | }
46 | /* opt-out */
47 | .hljs-operator,
48 | .hljs-punctuation {
49 |
50 | }
51 | .hljs-selector-class,
52 | .hljs-code,
53 | .hljs-formula,
54 | .hljs-variable,
55 | .hljs-template-variable,
56 | .hljs-selector-attr,
57 | .hljs-selector-pseudo,
58 | .hljs-link,
59 | .hljs-keyword {
60 | color: #64b5f6
61 | }
62 | .hljs-built_in,
63 | .hljs-title,
64 | .hljs-deletion {
65 | color: #ff8700
66 | }
67 | .hljs-type,
68 | .hljs-section,
69 | .hljs-function,
70 | .hljs-name,
71 | .hljs-property,
72 | .hljs-attribute {
73 | color: #ffd75f
74 | }
75 | .hljs-meta .hljs-string,
76 | .hljs-string,
77 | .hljs-subst,
78 | .hljs-symbol,
79 | .hljs-bullet,
80 | .hljs-addition {
81 | color: #558b2f
82 | }
83 | .hljs-selector-tag {
84 | color: #9966ff
85 | }
86 | .hljs-emphasis {
87 | font-style: italic
88 | }
89 | .hljs-strong {
90 | font-weight: bold
91 | }
92 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/docco.scss:
--------------------------------------------------------------------------------
1 | .code-theme-docco{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*
11 | Docco style used in http://jashkenas.github.com/docco/ converted by Simon Madine (@thingsinjars)
12 | */
13 | .hljs {
14 | color: #000;
15 | background: #f8f8ff
16 | }
17 | .hljs-comment,
18 | .hljs-quote {
19 | color: #408080;
20 | font-style: italic
21 | }
22 | .hljs-keyword,
23 | .hljs-selector-tag,
24 | .hljs-literal,
25 | .hljs-subst {
26 | color: #954121
27 | }
28 | .hljs-number {
29 | color: #40a070
30 | }
31 | .hljs-string,
32 | .hljs-doctag {
33 | color: #219161
34 | }
35 | .hljs-selector-id,
36 | .hljs-selector-class,
37 | .hljs-section,
38 | .hljs-type {
39 | color: #19469d
40 | }
41 | .hljs-params {
42 | color: #00f
43 | }
44 | .hljs-title {
45 | color: #458;
46 | font-weight: bold
47 | }
48 | .hljs-tag,
49 | .hljs-name,
50 | .hljs-attribute {
51 | color: #000080;
52 | font-weight: normal
53 | }
54 | .hljs-variable,
55 | .hljs-template-variable {
56 | color: #008080
57 | }
58 | .hljs-regexp,
59 | .hljs-link {
60 | color: #b68
61 | }
62 | .hljs-symbol,
63 | .hljs-bullet {
64 | color: #990073
65 | }
66 | .hljs-built_in {
67 | color: #0086b3
68 | }
69 | .hljs-meta {
70 | color: #999;
71 | font-weight: bold
72 | }
73 | .hljs-deletion {
74 | background: #fdd
75 | }
76 | .hljs-addition {
77 | background: #dfd
78 | }
79 | .hljs-emphasis {
80 | font-style: italic
81 | }
82 | .hljs-strong {
83 | font-weight: bold
84 | }
85 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/far.scss:
--------------------------------------------------------------------------------
1 | .code-theme-far{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*
11 |
12 | FAR Style (c) MajestiC
13 |
14 | */
15 | .hljs {
16 | color: #0ff;
17 | background: #000080
18 | }
19 | .hljs-subst {
20 | /* default */
21 |
22 | }
23 | .hljs-string,
24 | .hljs-attribute,
25 | .hljs-symbol,
26 | .hljs-bullet,
27 | .hljs-built_in,
28 | .hljs-template-tag,
29 | .hljs-template-variable,
30 | .hljs-addition {
31 | color: #ff0
32 | }
33 | .hljs-keyword,
34 | .hljs-selector-tag,
35 | .hljs-section,
36 | .hljs-type,
37 | .hljs-name,
38 | .hljs-selector-id,
39 | .hljs-selector-class,
40 | .hljs-variable {
41 | color: #fff
42 | }
43 | .hljs-comment,
44 | .hljs-quote,
45 | .hljs-doctag,
46 | .hljs-deletion {
47 | color: #888
48 | }
49 | .hljs-number,
50 | .hljs-regexp,
51 | .hljs-literal,
52 | .hljs-link {
53 | color: #0f0
54 | }
55 | .hljs-meta {
56 | color: #008080
57 | }
58 | .hljs-keyword,
59 | .hljs-selector-tag,
60 | .hljs-title,
61 | .hljs-section,
62 | .hljs-name,
63 | .hljs-strong {
64 | font-weight: bold
65 | }
66 | .hljs-emphasis {
67 | font-style: italic
68 | }
69 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/felipec.scss:
--------------------------------------------------------------------------------
1 | .code-theme-felipec{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*!
11 | * Theme: FelipeC
12 | * Author: (c) 2021 Felipe Contreras
13 | * Website: https://github.com/felipec/vim-felipec
14 | *
15 | * Autogenerated with vim-felipec's generator.
16 | */
17 | .hljs {
18 | color: #dddde1;
19 | background: #1e1e22
20 | }
21 | .hljs::selection,
22 | .hljs ::selection {
23 | color: #1e1e22;
24 | background: #bf8fef
25 | }
26 | .hljs-comment,
27 | .hljs-code,
28 | .hljs-quote {
29 | color: #888896
30 | }
31 | .hljs-number,
32 | .hljs-literal,
33 | .hljs-deletion {
34 | color: #ef8f8f
35 | }
36 | .hljs-punctuation,
37 | .hljs-meta,
38 | .hljs-operator,
39 | .hljs-subst,
40 | .hljs-doctag,
41 | .hljs-template-variable,
42 | .hljs-selector-attr {
43 | color: #efbf8f
44 | }
45 | .hljs-type {
46 | color: #efef8f
47 | }
48 | .hljs-tag,
49 | .hljs-title,
50 | .hljs-selector-class,
51 | .hljs-selector-id {
52 | color: #bfef8f
53 | }
54 | .hljs-string,
55 | .hljs-regexp,
56 | .hljs-addition {
57 | color: #8fef8f
58 | }
59 | .hljs-class,
60 | .hljs-property {
61 | color: #8fefbf
62 | }
63 | .hljs-name,
64 | .hljs-selector-tag {
65 | color: #8fefef
66 | }
67 | .hljs-keyword,
68 | .hljs-built_in {
69 | color: #8fbfef
70 | }
71 | .hljs-section,
72 | .hljs-bullet {
73 | color: #8f8fef
74 | }
75 | .hljs-selector-pseudo {
76 | color: #bf8fef
77 | }
78 | .hljs-variable,
79 | .hljs-params,
80 | .hljs-attr,
81 | .hljs-attribute {
82 | color: #ef8fef
83 | }
84 | .hljs-symbol,
85 | .hljs-link {
86 | color: #ef8fbf
87 | }
88 | .hljs-strong,
89 | .hljs-literal,
90 | .hljs-title {
91 | font-weight: bold
92 | }
93 | .hljs-emphasis {
94 | font-style: italic
95 | }
96 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/foundation.scss:
--------------------------------------------------------------------------------
1 | .code-theme-foundation{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*
11 | Description: Foundation 4 docs style for highlight.js
12 | Author: Dan Allen
13 | Website: http://foundation.zurb.com/docs/
14 | Version: 1.0
15 | Date: 2013-04-02
16 | */
17 | .hljs {
18 | background: #eee;
19 | color: black
20 | }
21 | .hljs-link,
22 | .hljs-emphasis,
23 | .hljs-attribute,
24 | .hljs-addition {
25 | color: #070
26 | }
27 | .hljs-emphasis {
28 | font-style: italic
29 | }
30 | .hljs-strong,
31 | .hljs-string,
32 | .hljs-deletion {
33 | color: #d14
34 | }
35 | .hljs-strong {
36 | font-weight: bold
37 | }
38 | .hljs-quote,
39 | .hljs-comment {
40 | color: #998;
41 | font-style: italic
42 | }
43 | .hljs-section,
44 | .hljs-title {
45 | color: #900
46 | }
47 | .hljs-class .hljs-title,
48 | .hljs-title.class_,
49 | .hljs-type {
50 | color: #458
51 | }
52 | .hljs-variable,
53 | .hljs-template-variable {
54 | color: #336699
55 | }
56 | .hljs-bullet {
57 | color: #997700
58 | }
59 | .hljs-meta {
60 | color: #3344bb
61 | }
62 | .hljs-code,
63 | .hljs-number,
64 | .hljs-literal,
65 | .hljs-keyword,
66 | .hljs-selector-tag {
67 | color: #099
68 | }
69 | .hljs-regexp {
70 | background-color: #fff0ff;
71 | color: #880088
72 | }
73 | .hljs-symbol {
74 | color: #990073
75 | }
76 | .hljs-tag,
77 | .hljs-name,
78 | .hljs-selector-id,
79 | .hljs-selector-class {
80 | color: #007700
81 | }
82 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/github-dark-dimmed.scss:
--------------------------------------------------------------------------------
1 | .code-theme-github-dark-dimmed{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*!
11 | Theme: GitHub Dark Dimmed
12 | Description: Dark dimmed theme as seen on github.com
13 | Author: github.com
14 | Maintainer: @Hirse
15 | Updated: 2021-05-15
16 |
17 | Colors taken from GitHub's CSS
18 | */
19 | .hljs {
20 | color: #adbac7;
21 | background: #22272e
22 | }
23 | .hljs-doctag,
24 | .hljs-keyword,
25 | .hljs-meta .hljs-keyword,
26 | .hljs-template-tag,
27 | .hljs-template-variable,
28 | .hljs-type,
29 | .hljs-variable.language_ {
30 | /* prettylights-syntax-keyword */
31 | color: #f47067
32 | }
33 | .hljs-title,
34 | .hljs-title.class_,
35 | .hljs-title.class_.inherited__,
36 | .hljs-title.function_ {
37 | /* prettylights-syntax-entity */
38 | color: #dcbdfb
39 | }
40 | .hljs-attr,
41 | .hljs-attribute,
42 | .hljs-literal,
43 | .hljs-meta,
44 | .hljs-number,
45 | .hljs-operator,
46 | .hljs-variable,
47 | .hljs-selector-attr,
48 | .hljs-selector-class,
49 | .hljs-selector-id {
50 | /* prettylights-syntax-constant */
51 | color: #6cb6ff
52 | }
53 | .hljs-regexp,
54 | .hljs-string,
55 | .hljs-meta .hljs-string {
56 | /* prettylights-syntax-string */
57 | color: #96d0ff
58 | }
59 | .hljs-built_in,
60 | .hljs-symbol {
61 | /* prettylights-syntax-variable */
62 | color: #f69d50
63 | }
64 | .hljs-comment,
65 | .hljs-code,
66 | .hljs-formula {
67 | /* prettylights-syntax-comment */
68 | color: #768390
69 | }
70 | .hljs-name,
71 | .hljs-quote,
72 | .hljs-selector-tag,
73 | .hljs-selector-pseudo {
74 | /* prettylights-syntax-entity-tag */
75 | color: #8ddb8c
76 | }
77 | .hljs-subst {
78 | /* prettylights-syntax-storage-modifier-import */
79 | color: #adbac7
80 | }
81 | .hljs-section {
82 | /* prettylights-syntax-markup-heading */
83 | color: #316dca;
84 | font-weight: bold
85 | }
86 | .hljs-bullet {
87 | /* prettylights-syntax-markup-list */
88 | color: #eac55f
89 | }
90 | .hljs-emphasis {
91 | /* prettylights-syntax-markup-italic */
92 | color: #adbac7;
93 | font-style: italic
94 | }
95 | .hljs-strong {
96 | /* prettylights-syntax-markup-bold */
97 | color: #adbac7;
98 | font-weight: bold
99 | }
100 | .hljs-addition {
101 | /* prettylights-syntax-markup-inserted */
102 | color: #b4f1b4;
103 | background-color: #1b4721
104 | }
105 | .hljs-deletion {
106 | /* prettylights-syntax-markup-deleted */
107 | color: #ffd8d3;
108 | background-color: #78191b
109 | }
110 | .hljs-char.escape_,
111 | .hljs-link,
112 | .hljs-params,
113 | .hljs-property,
114 | .hljs-punctuation,
115 | .hljs-tag {
116 | /* purposely ignored */
117 |
118 | }
119 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/github-dark.scss:
--------------------------------------------------------------------------------
1 | .code-theme-github-dark{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*!
11 | Theme: GitHub Dark
12 | Description: Dark theme as seen on github.com
13 | Author: github.com
14 | Maintainer: @Hirse
15 | Updated: 2021-05-15
16 |
17 | Outdated base version: https://github.com/primer/github-syntax-dark
18 | Current colors taken from GitHub's CSS
19 | */
20 | .hljs {
21 | color: #c9d1d9;
22 | background: #0d1117
23 | }
24 | .hljs-doctag,
25 | .hljs-keyword,
26 | .hljs-meta .hljs-keyword,
27 | .hljs-template-tag,
28 | .hljs-template-variable,
29 | .hljs-type,
30 | .hljs-variable.language_ {
31 | /* prettylights-syntax-keyword */
32 | color: #ff7b72
33 | }
34 | .hljs-title,
35 | .hljs-title.class_,
36 | .hljs-title.class_.inherited__,
37 | .hljs-title.function_ {
38 | /* prettylights-syntax-entity */
39 | color: #d2a8ff
40 | }
41 | .hljs-attr,
42 | .hljs-attribute,
43 | .hljs-literal,
44 | .hljs-meta,
45 | .hljs-number,
46 | .hljs-operator,
47 | .hljs-variable,
48 | .hljs-selector-attr,
49 | .hljs-selector-class,
50 | .hljs-selector-id {
51 | /* prettylights-syntax-constant */
52 | color: #79c0ff
53 | }
54 | .hljs-regexp,
55 | .hljs-string,
56 | .hljs-meta .hljs-string {
57 | /* prettylights-syntax-string */
58 | color: #a5d6ff
59 | }
60 | .hljs-built_in,
61 | .hljs-symbol {
62 | /* prettylights-syntax-variable */
63 | color: #ffa657
64 | }
65 | .hljs-comment,
66 | .hljs-code,
67 | .hljs-formula {
68 | /* prettylights-syntax-comment */
69 | color: #8b949e
70 | }
71 | .hljs-name,
72 | .hljs-quote,
73 | .hljs-selector-tag,
74 | .hljs-selector-pseudo {
75 | /* prettylights-syntax-entity-tag */
76 | color: #7ee787
77 | }
78 | .hljs-subst {
79 | /* prettylights-syntax-storage-modifier-import */
80 | color: #c9d1d9
81 | }
82 | .hljs-section {
83 | /* prettylights-syntax-markup-heading */
84 | color: #1f6feb;
85 | font-weight: bold
86 | }
87 | .hljs-bullet {
88 | /* prettylights-syntax-markup-list */
89 | color: #f2cc60
90 | }
91 | .hljs-emphasis {
92 | /* prettylights-syntax-markup-italic */
93 | color: #c9d1d9;
94 | font-style: italic
95 | }
96 | .hljs-strong {
97 | /* prettylights-syntax-markup-bold */
98 | color: #c9d1d9;
99 | font-weight: bold
100 | }
101 | .hljs-addition {
102 | /* prettylights-syntax-markup-inserted */
103 | color: #aff5b4;
104 | background-color: #033a16
105 | }
106 | .hljs-deletion {
107 | /* prettylights-syntax-markup-deleted */
108 | color: #ffdcd7;
109 | background-color: #67060c
110 | }
111 | .hljs-char.escape_,
112 | .hljs-link,
113 | .hljs-params,
114 | .hljs-property,
115 | .hljs-punctuation,
116 | .hljs-tag {
117 | /* purposely ignored */
118 |
119 | }
120 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/github.scss:
--------------------------------------------------------------------------------
1 | .code-theme-github{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*!
11 | Theme: GitHub
12 | Description: Light theme as seen on github.com
13 | Author: github.com
14 | Maintainer: @Hirse
15 | Updated: 2021-05-15
16 |
17 | Outdated base version: https://github.com/primer/github-syntax-light
18 | Current colors taken from GitHub's CSS
19 | */
20 | .hljs {
21 | color: #24292e;
22 | background: #ffffff
23 | }
24 | .hljs-doctag,
25 | .hljs-keyword,
26 | .hljs-meta .hljs-keyword,
27 | .hljs-template-tag,
28 | .hljs-template-variable,
29 | .hljs-type,
30 | .hljs-variable.language_ {
31 | /* prettylights-syntax-keyword */
32 | color: #d73a49
33 | }
34 | .hljs-title,
35 | .hljs-title.class_,
36 | .hljs-title.class_.inherited__,
37 | .hljs-title.function_ {
38 | /* prettylights-syntax-entity */
39 | color: #6f42c1
40 | }
41 | .hljs-attr,
42 | .hljs-attribute,
43 | .hljs-literal,
44 | .hljs-meta,
45 | .hljs-number,
46 | .hljs-operator,
47 | .hljs-variable,
48 | .hljs-selector-attr,
49 | .hljs-selector-class,
50 | .hljs-selector-id {
51 | /* prettylights-syntax-constant */
52 | color: #005cc5
53 | }
54 | .hljs-regexp,
55 | .hljs-string,
56 | .hljs-meta .hljs-string {
57 | /* prettylights-syntax-string */
58 | color: #032f62
59 | }
60 | .hljs-built_in,
61 | .hljs-symbol {
62 | /* prettylights-syntax-variable */
63 | color: #e36209
64 | }
65 | .hljs-comment,
66 | .hljs-code,
67 | .hljs-formula {
68 | /* prettylights-syntax-comment */
69 | color: #6a737d
70 | }
71 | .hljs-name,
72 | .hljs-quote,
73 | .hljs-selector-tag,
74 | .hljs-selector-pseudo {
75 | /* prettylights-syntax-entity-tag */
76 | color: #22863a
77 | }
78 | .hljs-subst {
79 | /* prettylights-syntax-storage-modifier-import */
80 | color: #24292e
81 | }
82 | .hljs-section {
83 | /* prettylights-syntax-markup-heading */
84 | color: #005cc5;
85 | font-weight: bold
86 | }
87 | .hljs-bullet {
88 | /* prettylights-syntax-markup-list */
89 | color: #735c0f
90 | }
91 | .hljs-emphasis {
92 | /* prettylights-syntax-markup-italic */
93 | color: #24292e;
94 | font-style: italic
95 | }
96 | .hljs-strong {
97 | /* prettylights-syntax-markup-bold */
98 | color: #24292e;
99 | font-weight: bold
100 | }
101 | .hljs-addition {
102 | /* prettylights-syntax-markup-inserted */
103 | color: #22863a;
104 | background-color: #f0fff4
105 | }
106 | .hljs-deletion {
107 | /* prettylights-syntax-markup-deleted */
108 | color: #b31d28;
109 | background-color: #ffeef0
110 | }
111 | .hljs-char.escape_,
112 | .hljs-link,
113 | .hljs-params,
114 | .hljs-property,
115 | .hljs-punctuation,
116 | .hljs-tag {
117 | /* purposely ignored */
118 |
119 | }
120 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/gml.scss:
--------------------------------------------------------------------------------
1 | .code-theme-gml{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*
11 |
12 | GML Theme - Meseta
13 |
14 | */
15 | .hljs {
16 | background: #222222;
17 | color: #C0C0C0
18 | }
19 | .hljs-keyword {
20 | color: #FFB871;
21 | font-weight: bold
22 | }
23 | .hljs-built_in {
24 | color: #FFB871
25 | }
26 | .hljs-literal {
27 | color: #FF8080
28 | }
29 | .hljs-symbol {
30 | color: #58E55A
31 | }
32 | .hljs-comment {
33 | color: #5B995B
34 | }
35 | .hljs-string {
36 | color: #FFFF00
37 | }
38 | .hljs-number {
39 | color: #FF8080
40 | }
41 | .hljs-attribute,
42 | .hljs-selector-tag,
43 | .hljs-doctag,
44 | .hljs-name,
45 | .hljs-bullet,
46 | .hljs-code,
47 | .hljs-addition,
48 | .hljs-regexp,
49 | .hljs-variable,
50 | .hljs-template-variable,
51 | .hljs-link,
52 | .hljs-selector-attr,
53 | .hljs-selector-pseudo,
54 | .hljs-type,
55 | .hljs-selector-id,
56 | .hljs-selector-class,
57 | .hljs-quote,
58 | .hljs-template-tag,
59 | .hljs-deletion,
60 | .hljs-title,
61 | .hljs-section,
62 | .hljs-function,
63 | .hljs-meta .hljs-keyword,
64 | .hljs-meta,
65 | .hljs-subst {
66 | color: #C0C0C0
67 | }
68 | .hljs-emphasis {
69 | font-style: italic
70 | }
71 | .hljs-strong {
72 | font-weight: bold
73 | }
74 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/googlecode.scss:
--------------------------------------------------------------------------------
1 | .code-theme-googlecode{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*
11 |
12 | Google Code style (c) Aahan Krish
13 |
14 | */
15 | .hljs {
16 | background: white;
17 | color: black
18 | }
19 | .hljs-comment,
20 | .hljs-quote {
21 | color: #800
22 | }
23 | .hljs-keyword,
24 | .hljs-selector-tag,
25 | .hljs-section,
26 | .hljs-title,
27 | .hljs-name {
28 | color: #008
29 | }
30 | .hljs-variable,
31 | .hljs-template-variable {
32 | color: #660
33 | }
34 | .hljs-string,
35 | .hljs-selector-attr,
36 | .hljs-selector-pseudo,
37 | .hljs-regexp {
38 | color: #080
39 | }
40 | .hljs-literal,
41 | .hljs-symbol,
42 | .hljs-bullet,
43 | .hljs-meta,
44 | .hljs-number,
45 | .hljs-link {
46 | color: #066
47 | }
48 | .hljs-title,
49 | .hljs-doctag,
50 | .hljs-type,
51 | .hljs-attr,
52 | .hljs-built_in,
53 | .hljs-params {
54 | color: #606
55 | }
56 | .hljs-attribute,
57 | .hljs-subst {
58 | color: #000
59 | }
60 | .hljs-formula {
61 | background-color: #eee;
62 | font-style: italic
63 | }
64 | .hljs-selector-id,
65 | .hljs-selector-class {
66 | color: #9B703F
67 | }
68 | .hljs-addition {
69 | background-color: #baeeba
70 | }
71 | .hljs-deletion {
72 | background-color: #ffc8bd
73 | }
74 | .hljs-doctag,
75 | .hljs-strong {
76 | font-weight: bold
77 | }
78 | .hljs-emphasis {
79 | font-style: italic
80 | }
81 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/gradient-dark.scss:
--------------------------------------------------------------------------------
1 | .code-theme-gradient-dark{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*
11 |
12 | Gradient Dark (c) Samia Ali
13 |
14 | */
15 | .hljs {
16 | background-color: #652487;
17 | background-image: linear-gradient(160deg, #652487 0%, #443ac3 35%, #0174b7 68%, #04988e 100%);
18 | color: #e7e4eb
19 | }
20 | .hljs-subtr {
21 | color: #e7e4eb
22 | }
23 | .hljs-doctag,
24 | .hljs-meta,
25 | .hljs-comment,
26 | .hljs-quote {
27 | color: #af8dd9
28 | }
29 | .hljs-selector-tag,
30 | .hljs-selector-id,
31 | .hljs-template-tag,
32 | .hljs-regexp,
33 | .hljs-attr,
34 | .hljs-tag {
35 | color: #AEFBFF
36 | }
37 | .hljs-params,
38 | .hljs-selector-class,
39 | .hljs-bullet {
40 | color: #F19FFF
41 | }
42 | .hljs-keyword,
43 | .hljs-section,
44 | .hljs-meta .hljs-keyword,
45 | .hljs-symbol,
46 | .hljs-type {
47 | color: #17fc95
48 | }
49 | .hljs-addition,
50 | .hljs-number,
51 | .hljs-link {
52 | color: #C5FE00
53 | }
54 | .hljs-string {
55 | color: #38c0ff
56 | }
57 | .hljs-attribute,
58 | .hljs-addition {
59 | color: #E7FF9F
60 | }
61 | .hljs-variable,
62 | .hljs-template-variable {
63 | color: #E447FF
64 | }
65 | .hljs-built_in,
66 | .hljs-formula,
67 | .hljs-name,
68 | .hljs-title,
69 | .hljs-class,
70 | .hljs-function {
71 | color: #FFC800
72 | }
73 | .hljs-selector-pseudo,
74 | .hljs-deletion,
75 | .hljs-literal {
76 | color: #FF9E44
77 | }
78 | .hljs-emphasis,
79 | .hljs-quote {
80 | font-style: italic
81 | }
82 | .hljs-params,
83 | .hljs-selector-class,
84 | .hljs-strong,
85 | .hljs-selector-tag,
86 | .hljs-selector-id,
87 | .hljs-template-tag,
88 | .hljs-section,
89 | .hljs-keyword {
90 | font-weight: bold
91 | }
92 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/gradient-light.scss:
--------------------------------------------------------------------------------
1 | .code-theme-gradient-light{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*
11 |
12 | Gradient Light (c) Samia Ali
13 |
14 | */
15 | .hljs {
16 | background-color: #f9ccff;
17 | background-image: linear-gradient(295deg, #f9ccff 0%, #e6bbf9 11%, #9ec6f9 32%, #55e6ee 60%, #91f5d1 74%, #f9ffbf 98%);
18 | color: #250482
19 | }
20 | .hljs-subtr {
21 | color: #01958B
22 | }
23 | .hljs-doctag,
24 | .hljs-meta,
25 | .hljs-comment,
26 | .hljs-quote {
27 | color: #CB7200
28 | }
29 | .hljs-selector-tag,
30 | .hljs-selector-id,
31 | .hljs-template-tag,
32 | .hljs-regexp,
33 | .hljs-attr,
34 | .hljs-tag {
35 | color: #07BD5F
36 | }
37 | .hljs-params,
38 | .hljs-selector-class,
39 | .hljs-bullet {
40 | color: #43449F
41 | }
42 | .hljs-keyword,
43 | .hljs-section,
44 | .hljs-meta .hljs-keyword,
45 | .hljs-symbol,
46 | .hljs-type {
47 | color: #7D2801
48 | }
49 | .hljs-addition,
50 | .hljs-number,
51 | .hljs-link {
52 | color: #7F0096
53 | }
54 | .hljs-string {
55 | color: #2681ab
56 | }
57 | .hljs-attribute,
58 | .hljs-addition {
59 | color: #296562
60 | }
61 | .hljs-variable,
62 | .hljs-template-variable {
63 | color: #025C8F
64 | }
65 | .hljs-built_in,
66 | .hljs-formula,
67 | .hljs-name,
68 | .hljs-title,
69 | .hljs-class,
70 | .hljs-function {
71 | color: #529117
72 | }
73 | .hljs-selector-pseudo,
74 | .hljs-deletion,
75 | .hljs-literal {
76 | color: #AD13FF
77 | }
78 | .hljs-emphasis,
79 | .hljs-quote {
80 | font-style: italic
81 | }
82 | .hljs-params,
83 | .hljs-selector-class,
84 | .hljs-strong,
85 | .hljs-selector-tag,
86 | .hljs-selector-id,
87 | .hljs-template-tag,
88 | .hljs-section,
89 | .hljs-keyword {
90 | font-weight: bold
91 | }
92 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/grayscale.scss:
--------------------------------------------------------------------------------
1 | .code-theme-grayscale{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*
11 |
12 | grayscale style (c) MY Sun
13 |
14 | */
15 | .hljs {
16 | color: #333;
17 | background: #fff
18 | }
19 | .hljs-comment,
20 | .hljs-quote {
21 | color: #777;
22 | font-style: italic
23 | }
24 | .hljs-keyword,
25 | .hljs-selector-tag,
26 | .hljs-subst {
27 | color: #333;
28 | font-weight: bold
29 | }
30 | .hljs-number,
31 | .hljs-literal {
32 | color: #777
33 | }
34 | .hljs-string,
35 | .hljs-doctag,
36 | .hljs-formula {
37 | color: #333;
38 | background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAJ0lEQVQIW2O8e/fufwYGBgZBQUEQxcCIIfDu3Tuwivfv30NUoAsAALHpFMMLqZlPAAAAAElFTkSuQmCC) repeat
39 | }
40 | .hljs-title,
41 | .hljs-section,
42 | .hljs-selector-id {
43 | color: #000;
44 | font-weight: bold
45 | }
46 | .hljs-subst {
47 | font-weight: normal
48 | }
49 | .hljs-title.class_,
50 | .hljs-class .hljs-title,
51 | .hljs-type,
52 | .hljs-name {
53 | color: #333;
54 | font-weight: bold
55 | }
56 | .hljs-tag {
57 | color: #333
58 | }
59 | .hljs-regexp {
60 | color: #333;
61 | background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAICAYAAADA+m62AAAAPUlEQVQYV2NkQAN37979r6yszIgujiIAU4RNMVwhuiQ6H6wQl3XI4oy4FMHcCJPHcDS6J2A2EqUQpJhohQDexSef15DBCwAAAABJRU5ErkJggg==) repeat
62 | }
63 | .hljs-symbol,
64 | .hljs-bullet,
65 | .hljs-link {
66 | color: #000;
67 | background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAKElEQVQIW2NkQAO7d+/+z4gsBhJwdXVlhAvCBECKwIIwAbhKZBUwBQA6hBpm5efZsgAAAABJRU5ErkJggg==) repeat
68 | }
69 | .hljs-built_in {
70 | color: #000;
71 | text-decoration: underline
72 | }
73 | .hljs-meta {
74 | color: #999;
75 | font-weight: bold
76 | }
77 | .hljs-deletion {
78 | color: #fff;
79 | background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAADCAYAAABS3WWCAAAAE0lEQVQIW2MMDQ39zzhz5kwIAQAyxweWgUHd1AAAAABJRU5ErkJggg==) repeat
80 | }
81 | .hljs-addition {
82 | color: #000;
83 | background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAALUlEQVQYV2N89+7dfwYk8P79ewZBQUFkIQZGOiu6e/cuiptQHAPl0NtNxAQBAM97Oejj3Dg7AAAAAElFTkSuQmCC) repeat
84 | }
85 | .hljs-emphasis {
86 | font-style: italic
87 | }
88 | .hljs-strong {
89 | font-weight: bold
90 | }
91 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/hybrid.scss:
--------------------------------------------------------------------------------
1 | .code-theme-hybrid{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*
11 |
12 | vim-hybrid theme by w0ng (https://github.com/w0ng/vim-hybrid)
13 |
14 | */
15 | .hljs {
16 | background: #1d1f21;
17 | color: #c5c8c6
18 | }
19 | /*selection color*/
20 | .hljs::selection,
21 | .hljs span::selection {
22 | background: #373b41
23 | }
24 | .hljs::-moz-selection,
25 | .hljs span::-moz-selection {
26 | background: #373b41
27 | }
28 | /*color: fg_yellow*/
29 | .hljs-title,
30 | .hljs-name {
31 | color: #f0c674
32 | }
33 | /*color: fg_comment*/
34 | .hljs-comment,
35 | .hljs-meta,
36 | .hljs-meta .hljs-keyword {
37 | color: #707880
38 | }
39 | /*color: fg_red*/
40 | .hljs-number,
41 | .hljs-symbol,
42 | .hljs-literal,
43 | .hljs-deletion,
44 | .hljs-link {
45 | color: #cc6666
46 | }
47 | /*color: fg_green*/
48 | .hljs-string,
49 | .hljs-doctag,
50 | .hljs-addition,
51 | .hljs-regexp,
52 | .hljs-selector-attr,
53 | .hljs-selector-pseudo {
54 | color: #b5bd68
55 | }
56 | /*color: fg_purple*/
57 | .hljs-attribute,
58 | .hljs-code,
59 | .hljs-selector-id {
60 | color: #b294bb
61 | }
62 | /*color: fg_blue*/
63 | .hljs-keyword,
64 | .hljs-selector-tag,
65 | .hljs-bullet,
66 | .hljs-tag {
67 | color: #81a2be
68 | }
69 | /*color: fg_aqua*/
70 | .hljs-subst,
71 | .hljs-variable,
72 | .hljs-template-tag,
73 | .hljs-template-variable {
74 | color: #8abeb7
75 | }
76 | /*color: fg_orange*/
77 | .hljs-type,
78 | .hljs-built_in,
79 | .hljs-quote,
80 | .hljs-section,
81 | .hljs-selector-class {
82 | color: #de935f
83 | }
84 | .hljs-emphasis {
85 | font-style: italic
86 | }
87 | .hljs-strong {
88 | font-weight: bold
89 | }
90 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/idea.scss:
--------------------------------------------------------------------------------
1 | .code-theme-idea{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*
11 |
12 | Intellij Idea-like styling (c) Vasily Polovnyov
13 |
14 | */
15 | .hljs {
16 | color: #000;
17 | background: #fff
18 | }
19 | .hljs-subst,
20 | .hljs-title {
21 | font-weight: normal;
22 | color: #000
23 | }
24 | .hljs-comment,
25 | .hljs-quote {
26 | color: #808080;
27 | font-style: italic
28 | }
29 | .hljs-meta {
30 | color: #808000
31 | }
32 | .hljs-tag {
33 | background: #efefef
34 | }
35 | .hljs-section,
36 | .hljs-name,
37 | .hljs-literal,
38 | .hljs-keyword,
39 | .hljs-selector-tag,
40 | .hljs-type,
41 | .hljs-selector-id,
42 | .hljs-selector-class {
43 | font-weight: bold;
44 | color: #000080
45 | }
46 | .hljs-attribute,
47 | .hljs-number,
48 | .hljs-regexp,
49 | .hljs-link {
50 | font-weight: bold;
51 | color: #0000ff
52 | }
53 | .hljs-number,
54 | .hljs-regexp,
55 | .hljs-link {
56 | font-weight: normal
57 | }
58 | .hljs-string {
59 | color: #008000;
60 | font-weight: bold
61 | }
62 | .hljs-symbol,
63 | .hljs-bullet,
64 | .hljs-formula {
65 | color: #000;
66 | background: #d0eded;
67 | font-style: italic
68 | }
69 | .hljs-doctag {
70 | text-decoration: underline
71 | }
72 | .hljs-variable,
73 | .hljs-template-variable {
74 | color: #660e7a
75 | }
76 | .hljs-addition {
77 | background: #baeeba
78 | }
79 | .hljs-deletion {
80 | background: #ffc8bd
81 | }
82 | .hljs-emphasis {
83 | font-style: italic
84 | }
85 | .hljs-strong {
86 | font-weight: bold
87 | }
88 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/intellij-light.scss:
--------------------------------------------------------------------------------
1 | .code-theme-intellij-light{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*
11 |
12 | Intellij-light style (c) Pegasis
13 |
14 | */
15 | .hljs {
16 | color: #000;
17 | background: #fff
18 | }
19 | .hljs-subst,
20 | .hljs-title {
21 | font-weight: normal;
22 | color: #000
23 | }
24 | .hljs-title.function_ {
25 | color: #7A7A43
26 | }
27 | .hljs-code,
28 | .hljs-comment,
29 | .hljs-quote {
30 | color: #8C8C8C;
31 | font-style: italic
32 | }
33 | .hljs-meta {
34 | color: #9E880D
35 | }
36 | .hljs-section {
37 | color: #871094
38 | }
39 | .hljs-variable.language_,
40 | .hljs-symbol,
41 | .hljs-selector-class,
42 | .hljs-selector-id,
43 | .hljs-selector-tag,
44 | .hljs-template-tag,
45 | .hljs-selector-attr,
46 | .hljs-selector-pseudo,
47 | .hljs-keyword,
48 | .hljs-meta .hljs-keyword,
49 | .hljs-literal,
50 | .hljs-name,
51 | .hljs-built_in,
52 | .hljs-type {
53 | color: #0033B3
54 | }
55 | .hljs-property,
56 | .hljs-attr {
57 | color: #871094
58 | }
59 | .hljs-attribute {
60 | color: #174AD4
61 | }
62 | .hljs-number {
63 | color: #1750EB
64 | }
65 | .hljs-regexp {
66 | color: #264EFF
67 | }
68 | .hljs-link {
69 | text-decoration: underline;
70 | color: #006DCC
71 | }
72 | .hljs-meta .hljs-string,
73 | .hljs-string {
74 | color: #067D17
75 | }
76 | .hljs-char.escape_ {
77 | color: #0037A6
78 | }
79 | .hljs-doctag {
80 | text-decoration: underline
81 | }
82 | .hljs-template-variable {
83 | color: #248F8F
84 | }
85 | .hljs-addition {
86 | background: #BEE6BE
87 | }
88 | .hljs-deletion {
89 | background: #D6D6D6
90 | }
91 | .hljs-emphasis {
92 | font-style: italic
93 | }
94 | .hljs-strong {
95 | font-weight: bold
96 | }
97 | .hljs-variable,
98 | .hljs-operator,
99 | .hljs-punctuation,
100 | .hljs-title.class_.inherited__,
101 | .hljs-title.class_,
102 | .hljs-params,
103 | .hljs-bullet,
104 | .hljs-formula,
105 | .hljs-tag {
106 | /* purposely ignored */
107 |
108 | }
109 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/ir-black.scss:
--------------------------------------------------------------------------------
1 | .code-theme-ir-black{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*
11 | IR_Black style (c) Vasily Mikhailitchenko
12 | */
13 | .hljs {
14 | background: #000;
15 | color: #f8f8f8
16 | }
17 | .hljs-comment,
18 | .hljs-quote,
19 | .hljs-meta {
20 | color: #7c7c7c
21 | }
22 | .hljs-keyword,
23 | .hljs-selector-tag,
24 | .hljs-tag,
25 | .hljs-name {
26 | color: #96cbfe
27 | }
28 | .hljs-attribute,
29 | .hljs-selector-id {
30 | color: #ffffb6
31 | }
32 | .hljs-string,
33 | .hljs-selector-attr,
34 | .hljs-selector-pseudo,
35 | .hljs-addition {
36 | color: #a8ff60
37 | }
38 | .hljs-subst {
39 | color: #daefa3
40 | }
41 | .hljs-regexp,
42 | .hljs-link {
43 | color: #e9c062
44 | }
45 | .hljs-title,
46 | .hljs-section,
47 | .hljs-type,
48 | .hljs-doctag {
49 | color: #ffffb6
50 | }
51 | .hljs-symbol,
52 | .hljs-bullet,
53 | .hljs-variable,
54 | .hljs-template-variable,
55 | .hljs-literal {
56 | color: #c6c5fe
57 | }
58 | .hljs-number,
59 | .hljs-deletion {
60 | color: #ff73fd
61 | }
62 | .hljs-emphasis {
63 | font-style: italic
64 | }
65 | .hljs-strong {
66 | font-weight: bold
67 | }
68 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/isbl-editor-dark.scss:
--------------------------------------------------------------------------------
1 | .code-theme-isbl-editor-dark{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*
11 |
12 | ISBL Editor style dark color scheme (c) Dmitriy Tarasov
13 |
14 | */
15 | .hljs {
16 | background: #404040;
17 | color: #f0f0f0
18 | }
19 | /* Base color: saturation 0; */
20 | .hljs,
21 | .hljs-subst {
22 | color: #f0f0f0
23 | }
24 | .hljs-comment {
25 | color: #b5b5b5;
26 | font-style: italic
27 | }
28 | .hljs-keyword,
29 | .hljs-attribute,
30 | .hljs-selector-tag,
31 | .hljs-meta .hljs-keyword,
32 | .hljs-doctag,
33 | .hljs-name {
34 | color: #f0f0f0;
35 | font-weight: bold
36 | }
37 | /* User color: hue: 0 */
38 | .hljs-string {
39 | color: #97bf0d
40 | }
41 | .hljs-type,
42 | .hljs-number,
43 | .hljs-selector-id,
44 | .hljs-selector-class,
45 | .hljs-quote,
46 | .hljs-template-tag,
47 | .hljs-deletion {
48 | color: #f0f0f0
49 | }
50 | .hljs-regexp,
51 | .hljs-symbol,
52 | .hljs-variable,
53 | .hljs-template-variable,
54 | .hljs-link,
55 | .hljs-selector-attr,
56 | .hljs-selector-pseudo {
57 | color: #e2c696
58 | }
59 | /* Language color: hue: 90; */
60 | .hljs-built_in,
61 | .hljs-literal {
62 | color: #97bf0d;
63 | font-weight: bold
64 | }
65 | .hljs-bullet,
66 | .hljs-code,
67 | .hljs-addition {
68 | color: #397300
69 | }
70 | .hljs-class {
71 | color: #ce9d4d;
72 | font-weight: bold
73 | }
74 | .hljs-title,
75 | .hljs-section {
76 | color: #df471e
77 | }
78 | .hljs-title>.hljs-built_in {
79 | color: #81bce9;
80 | font-weight: normal
81 | }
82 | /* Meta color: hue: 200 */
83 | .hljs-meta {
84 | color: #1f7199
85 | }
86 | .hljs-meta .hljs-string {
87 | color: #4d99bf
88 | }
89 | /* Misc effects */
90 | .hljs-emphasis {
91 | font-style: italic
92 | }
93 | .hljs-strong {
94 | font-weight: bold
95 | }
96 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/isbl-editor-light.scss:
--------------------------------------------------------------------------------
1 | .code-theme-isbl-editor-light{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*
11 |
12 | ISBL Editor style light color schemec (c) Dmitriy Tarasov
13 |
14 | */
15 | .hljs {
16 | background: white;
17 | color: black
18 | }
19 | /* Base color: saturation 0; */
20 | .hljs-subst {
21 | color: black
22 | }
23 | .hljs-comment {
24 | color: #555555;
25 | font-style: italic
26 | }
27 | .hljs-keyword,
28 | .hljs-attribute,
29 | .hljs-selector-tag,
30 | .hljs-meta .hljs-keyword,
31 | .hljs-doctag,
32 | .hljs-name {
33 | color: #000000;
34 | font-weight: bold
35 | }
36 | /* User color: hue: 0 */
37 | .hljs-string {
38 | color: #000080
39 | }
40 | .hljs-type,
41 | .hljs-number,
42 | .hljs-selector-id,
43 | .hljs-selector-class,
44 | .hljs-quote,
45 | .hljs-template-tag,
46 | .hljs-deletion {
47 | color: #000000
48 | }
49 | .hljs-regexp,
50 | .hljs-symbol,
51 | .hljs-variable,
52 | .hljs-template-variable,
53 | .hljs-link,
54 | .hljs-selector-attr,
55 | .hljs-selector-pseudo {
56 | color: #5e1700
57 | }
58 | /* Language color: hue: 90; */
59 | .hljs-built_in,
60 | .hljs-literal {
61 | color: #000080;
62 | font-weight: bold
63 | }
64 | .hljs-bullet,
65 | .hljs-code,
66 | .hljs-addition {
67 | color: #397300
68 | }
69 | .hljs-class {
70 | color: #6f1C00;
71 | font-weight: bold
72 | }
73 | .hljs-title,
74 | .hljs-section {
75 | color: #fb2c00
76 | }
77 | .hljs-title>.hljs-built_in {
78 | color: #008080;
79 | font-weight: normal
80 | }
81 | /* Meta color: hue: 200 */
82 | .hljs-meta {
83 | color: #1f7199
84 | }
85 | .hljs-meta .hljs-string {
86 | color: #4d99bf
87 | }
88 | /* Misc effects */
89 | .hljs-emphasis {
90 | font-style: italic
91 | }
92 | .hljs-strong {
93 | font-weight: bold
94 | }
95 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/kimbie-dark.scss:
--------------------------------------------------------------------------------
1 | .code-theme-kimbie-dark{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*
11 | Name: Kimbie (dark)
12 | Author: Jan T. Sott
13 | License: Creative Commons Attribution-ShareAlike 4.0 Unported License
14 | URL: https://github.com/idleberg/Kimbie-highlight.js
15 | */
16 | .hljs {
17 | background: #221a0f;
18 | color: #d3af86
19 | }
20 | /* Kimbie Comment */
21 | .hljs-comment,
22 | .hljs-quote {
23 | color: #d6baad
24 | }
25 | /* Kimbie Red */
26 | .hljs-variable,
27 | .hljs-template-variable,
28 | .hljs-tag,
29 | .hljs-name,
30 | .hljs-selector-id,
31 | .hljs-selector-class,
32 | .hljs-regexp,
33 | .hljs-meta {
34 | color: #dc3958
35 | }
36 | /* Kimbie Orange */
37 | .hljs-number,
38 | .hljs-built_in,
39 | .hljs-literal,
40 | .hljs-type,
41 | .hljs-params,
42 | .hljs-deletion,
43 | .hljs-link {
44 | color: #f79a32
45 | }
46 | /* Kimbie Green */
47 | .hljs-string,
48 | .hljs-symbol,
49 | .hljs-bullet,
50 | .hljs-addition {
51 | color: #889b4a
52 | }
53 | /* Kimbie Purple */
54 | .hljs-keyword,
55 | .hljs-selector-tag,
56 | .hljs-function {
57 | color: #98676a
58 | }
59 | /* Kimbie Yellow */
60 | .hljs-title,
61 | .hljs-section,
62 | .hljs-attribute {
63 | color: #f06431
64 | }
65 | .hljs-emphasis {
66 | font-style: italic
67 | }
68 | .hljs-strong {
69 | font-weight: bold
70 | }
71 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/kimbie-light.scss:
--------------------------------------------------------------------------------
1 | .code-theme-kimbie-light{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*
11 | Name: Kimbie (light)
12 | Author: Jan T. Sott
13 | License: Creative Commons Attribution-ShareAlike 4.0 Unported License
14 | URL: https://github.com/idleberg/Kimbie-highlight.js
15 | */
16 | .hljs {
17 | background: #fbebd4;
18 | color: #84613d
19 | }
20 | /* Kimbie Comment */
21 | .hljs-comment,
22 | .hljs-quote {
23 | color: #a57a4c
24 | }
25 | /* Kimbie Red */
26 | .hljs-variable,
27 | .hljs-template-variable,
28 | .hljs-tag,
29 | .hljs-name,
30 | .hljs-selector-id,
31 | .hljs-selector-class,
32 | .hljs-regexp,
33 | .hljs-meta {
34 | color: #dc3958
35 | }
36 | /* Kimbie Orange */
37 | .hljs-number,
38 | .hljs-built_in,
39 | .hljs-literal,
40 | .hljs-type,
41 | .hljs-params,
42 | .hljs-deletion,
43 | .hljs-link {
44 | color: #f79a32
45 | }
46 | /* Kimbie Green */
47 | .hljs-string,
48 | .hljs-symbol,
49 | .hljs-bullet,
50 | .hljs-addition {
51 | color: #889b4a
52 | }
53 | /* Kimbie Purple */
54 | .hljs-keyword,
55 | .hljs-selector-tag,
56 | .hljs-function {
57 | color: #98676a
58 | }
59 | /* Kimbie Yellow */
60 | .hljs-title,
61 | .hljs-section,
62 | .hljs-attribute {
63 | color: #f06431
64 | }
65 | .hljs-emphasis {
66 | font-style: italic
67 | }
68 | .hljs-strong {
69 | font-weight: bold
70 | }
71 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/lightfair.scss:
--------------------------------------------------------------------------------
1 | .code-theme-lightfair{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*
11 |
12 | Lightfair style (c) Tristian Kelly
13 |
14 | */
15 | .hljs {
16 | color: #444;
17 | background: #fff
18 | }
19 | .hljs-name {
20 | color: #01a3a3
21 | }
22 | .hljs-tag,
23 | .hljs-meta {
24 | color: #778899
25 | }
26 | .hljs-subst {
27 | /* default */
28 |
29 | }
30 | .hljs-comment {
31 | color: #888888
32 | }
33 | .hljs-keyword,
34 | .hljs-attribute,
35 | .hljs-selector-tag,
36 | .hljs-meta .hljs-keyword,
37 | .hljs-doctag,
38 | .hljs-name {
39 | font-weight: bold
40 | }
41 | .hljs-type,
42 | .hljs-string,
43 | .hljs-number,
44 | .hljs-selector-id,
45 | .hljs-selector-class,
46 | .hljs-quote,
47 | .hljs-template-tag,
48 | .hljs-deletion {
49 | color: #4286f4
50 | }
51 | .hljs-title,
52 | .hljs-section {
53 | color: #4286f4;
54 | font-weight: bold
55 | }
56 | .hljs-regexp,
57 | .hljs-symbol,
58 | .hljs-variable,
59 | .hljs-template-variable,
60 | .hljs-link,
61 | .hljs-selector-attr,
62 | .hljs-selector-pseudo {
63 | color: #BC6060
64 | }
65 | .hljs-literal {
66 | color: #62bcbc
67 | }
68 | .hljs-built_in,
69 | .hljs-bullet,
70 | .hljs-code,
71 | .hljs-addition {
72 | color: #25c6c6
73 | }
74 | .hljs-meta .hljs-string {
75 | color: #4d99bf
76 | }
77 | .hljs-emphasis {
78 | font-style: italic
79 | }
80 | .hljs-strong {
81 | font-weight: bold
82 | }
83 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/lioshi.scss:
--------------------------------------------------------------------------------
1 | .code-theme-lioshi{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /* lioshi Theme */
11 | /* Original theme - https://github.com/lioshi/vscode-lioshi-theme */
12 | .hljs {
13 | background: #303030;
14 | color: #c5c8c6
15 | }
16 | /* Comment */
17 | .hljs-comment {
18 | color: #8d8d8d
19 | }
20 | /* quote */
21 | .hljs-quote {
22 | color: #b3c7d8
23 | }
24 | /* Red */
25 | .hljs-variable,
26 | .hljs-template-variable,
27 | .hljs-tag,
28 | .hljs-name,
29 | .hljs-selector-id,
30 | .hljs-selector-class,
31 | .hljs-regexp,
32 | .hljs-deletion {
33 | color: #cc6666
34 | }
35 | /* Orange */
36 | .hljs-number,
37 | .hljs-built_in,
38 | .hljs-literal,
39 | .hljs-type,
40 | .hljs-subst
41 | .hljs-link {
42 | color: #de935f
43 | }
44 | /* Yellow */
45 | .hljs-attribute {
46 | color: #f0c674
47 | }
48 | /* Green */
49 | .hljs-string,
50 | .hljs-bullet,
51 | .hljs-params,
52 | .hljs-addition {
53 | color: #b5bd68
54 | }
55 | /* Purple */
56 | .hljs-selector-tag,
57 | .hljs-keyword,
58 | .hljs-function,
59 | .hljs-class {
60 | color: #be94bb
61 | }
62 | /* Blue */
63 | .hljs-title,
64 | .hljs-meta,
65 | .hljs-section {
66 | color: #81a2be
67 | }
68 | /* Purple light */
69 | .hljs-symbol {
70 | color: #dbc4d9
71 | }
72 | .hljs-emphasis {
73 | font-style: italic
74 | }
75 | .hljs-strong {
76 | font-weight: bold
77 | }
78 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/magula.scss:
--------------------------------------------------------------------------------
1 | .code-theme-magula{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*
11 | Description: Magula style for highligh.js
12 | Author: Ruslan Keba
13 | Website: http://rukeba.com/
14 | Version: 1.0
15 | Date: 2009-01-03
16 | Music: Aphex Twin / Xtal
17 | */
18 | .hljs {
19 | background-color: #f4f4f4;
20 | color: black
21 | }
22 | .hljs-subst {
23 | color: black
24 | }
25 | .hljs-string,
26 | .hljs-title,
27 | .hljs-symbol,
28 | .hljs-bullet,
29 | .hljs-attribute,
30 | .hljs-addition,
31 | .hljs-variable,
32 | .hljs-template-tag,
33 | .hljs-template-variable {
34 | color: #050
35 | }
36 | .hljs-comment,
37 | .hljs-quote {
38 | color: #777
39 | }
40 | .hljs-number,
41 | .hljs-regexp,
42 | .hljs-literal,
43 | .hljs-type,
44 | .hljs-link {
45 | color: #800
46 | }
47 | .hljs-deletion,
48 | .hljs-meta {
49 | color: #00e
50 | }
51 | .hljs-keyword,
52 | .hljs-selector-tag,
53 | .hljs-doctag,
54 | .hljs-title,
55 | .hljs-section,
56 | .hljs-built_in,
57 | .hljs-tag,
58 | .hljs-name {
59 | font-weight: bold;
60 | color: navy
61 | }
62 | .hljs-emphasis {
63 | font-style: italic
64 | }
65 | .hljs-strong {
66 | font-weight: bold
67 | }
68 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/mono-blue.scss:
--------------------------------------------------------------------------------
1 | .code-theme-mono-blue{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*
11 | Five-color theme from a single blue hue.
12 | */
13 | .hljs {
14 | background: #eaeef3;
15 | color: #00193a
16 | }
17 | .hljs-keyword,
18 | .hljs-selector-tag,
19 | .hljs-title,
20 | .hljs-section,
21 | .hljs-doctag,
22 | .hljs-name,
23 | .hljs-strong {
24 | font-weight: bold
25 | }
26 | .hljs-comment {
27 | color: #738191
28 | }
29 | .hljs-string,
30 | .hljs-title,
31 | .hljs-section,
32 | .hljs-built_in,
33 | .hljs-literal,
34 | .hljs-type,
35 | .hljs-addition,
36 | .hljs-tag,
37 | .hljs-quote,
38 | .hljs-name,
39 | .hljs-selector-id,
40 | .hljs-selector-class {
41 | color: #0048ab
42 | }
43 | .hljs-meta,
44 | .hljs-subst,
45 | .hljs-symbol,
46 | .hljs-regexp,
47 | .hljs-attribute,
48 | .hljs-deletion,
49 | .hljs-variable,
50 | .hljs-template-variable,
51 | .hljs-link,
52 | .hljs-bullet {
53 | color: #4c81c9
54 | }
55 | .hljs-emphasis {
56 | font-style: italic
57 | }
58 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/monokai-sublime.scss:
--------------------------------------------------------------------------------
1 | .code-theme-monokai-sublime{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*
11 |
12 | Monokai Sublime style. Derived from Monokai by noformnocontent http://nn.mit-license.org/
13 |
14 | */
15 | .hljs {
16 | background: #23241f;
17 | color: #f8f8f2
18 | }
19 | .hljs-tag,
20 | .hljs-subst {
21 | color: #f8f8f2
22 | }
23 | .hljs-strong,
24 | .hljs-emphasis {
25 | color: #a8a8a2
26 | }
27 | .hljs-bullet,
28 | .hljs-quote,
29 | .hljs-number,
30 | .hljs-regexp,
31 | .hljs-literal,
32 | .hljs-link {
33 | color: #ae81ff
34 | }
35 | .hljs-code,
36 | .hljs-title,
37 | .hljs-section,
38 | .hljs-selector-class {
39 | color: #a6e22e
40 | }
41 | .hljs-strong {
42 | font-weight: bold
43 | }
44 | .hljs-emphasis {
45 | font-style: italic
46 | }
47 | .hljs-keyword,
48 | .hljs-selector-tag,
49 | .hljs-name,
50 | .hljs-attr {
51 | color: #f92672
52 | }
53 | .hljs-symbol,
54 | .hljs-attribute {
55 | color: #66d9ef
56 | }
57 | .hljs-params,
58 | .hljs-title.class_,
59 | .hljs-class .hljs-title {
60 | color: #f8f8f2
61 | }
62 | .hljs-string,
63 | .hljs-type,
64 | .hljs-built_in,
65 | .hljs-selector-id,
66 | .hljs-selector-attr,
67 | .hljs-selector-pseudo,
68 | .hljs-addition,
69 | .hljs-variable,
70 | .hljs-template-variable {
71 | color: #e6db74
72 | }
73 | .hljs-comment,
74 | .hljs-deletion,
75 | .hljs-meta {
76 | color: #75715e
77 | }
78 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/monokai.scss:
--------------------------------------------------------------------------------
1 | .code-theme-monokai{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*
11 | Monokai style - ported by Luigi Maselli - http://grigio.org
12 | */
13 | .hljs {
14 | background: #272822;
15 | color: #ddd
16 | }
17 | .hljs-tag,
18 | .hljs-keyword,
19 | .hljs-selector-tag,
20 | .hljs-literal,
21 | .hljs-strong,
22 | .hljs-number,
23 | .hljs-name {
24 | color: #f92672
25 | }
26 | .hljs-code {
27 | color: #66d9ef
28 | }
29 | .hljs-attribute,
30 | .hljs-attr,
31 | .hljs-symbol,
32 | .hljs-regexp,
33 | .hljs-link {
34 | color: #bf79db
35 | }
36 | .hljs-string,
37 | .hljs-bullet,
38 | .hljs-subst,
39 | .hljs-title,
40 | .hljs-section,
41 | .hljs-emphasis,
42 | .hljs-type,
43 | .hljs-built_in,
44 | .hljs-selector-attr,
45 | .hljs-selector-pseudo,
46 | .hljs-addition,
47 | .hljs-variable,
48 | .hljs-template-tag,
49 | .hljs-template-variable {
50 | color: #a6e22e
51 | }
52 | .hljs-title.class_,
53 | .hljs-class .hljs-title {
54 | color: white
55 | }
56 | .hljs-comment,
57 | .hljs-quote,
58 | .hljs-deletion,
59 | .hljs-meta {
60 | color: #75715e
61 | }
62 | .hljs-keyword,
63 | .hljs-selector-tag,
64 | .hljs-literal,
65 | .hljs-doctag,
66 | .hljs-title,
67 | .hljs-section,
68 | .hljs-type,
69 | .hljs-selector-id {
70 | font-weight: bold
71 | }
72 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/nnfx-dark.scss:
--------------------------------------------------------------------------------
1 | .code-theme-nnfx-dark{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*!
11 | Theme: nnfx dark
12 | Description: a theme inspired by Netscape Navigator/Firefox
13 | Author: (c) 2020-2021 Jim Mason
14 | Maintainer: @RocketMan
15 | License: https://creativecommons.org/licenses/by-sa/4.0 CC BY-SA 4.0
16 | Updated: 2021-05-17
17 |
18 | @version 1.1.0
19 | */
20 | .hljs {
21 | background: #333;
22 | color: #fff
23 | }
24 | .language-xml .hljs-meta,
25 | .language-xml .hljs-meta-string {
26 | font-weight: bold;
27 | font-style: italic;
28 | color: #69f
29 | }
30 | .hljs-comment,
31 | .hljs-quote {
32 | font-style: italic;
33 | color: #9c6
34 | }
35 | .hljs-name,
36 | .hljs-keyword,
37 | .hljs-built_in {
38 | color: #a7a
39 | }
40 | .hljs-name,
41 | .hljs-attr {
42 | font-weight: bold
43 | }
44 | .hljs-string {
45 | font-weight: normal
46 | }
47 | .hljs-code,
48 | .hljs-string,
49 | .hljs-meta .hljs-string,
50 | .hljs-number,
51 | .hljs-regexp,
52 | .hljs-link {
53 | color: #bce
54 | }
55 | .hljs-title,
56 | .hljs-symbol,
57 | .hljs-bullet,
58 | .hljs-variable,
59 | .hljs-template-variable {
60 | color: #d40
61 | }
62 | .hljs-title.class_,
63 | .hljs-class .hljs-title,
64 | .hljs-type {
65 | font-weight: bold;
66 | color: #96c
67 | }
68 | .hljs-title.function_,
69 | .hljs-function .hljs-title,
70 | .hljs-attr,
71 | .hljs-subst,
72 | .hljs-tag {
73 | color: #fff
74 | }
75 | .hljs-formula {
76 | background-color: #eee;
77 | font-style: italic
78 | }
79 | .hljs-addition {
80 | background-color: #797
81 | }
82 | .hljs-deletion {
83 | background-color: #c99
84 | }
85 | .hljs-meta {
86 | color: #69f
87 | }
88 | .hljs-section,
89 | .hljs-selector-id,
90 | .hljs-selector-class,
91 | .hljs-selector-pseudo,
92 | .hljs-selector-tag {
93 | font-weight: bold;
94 | color: #69f
95 | }
96 | .hljs-selector-pseudo {
97 | font-style: italic
98 | }
99 | .hljs-doctag,
100 | .hljs-strong {
101 | font-weight: bold
102 | }
103 | .hljs-emphasis {
104 | font-style: italic
105 | }
106 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/nnfx-light.scss:
--------------------------------------------------------------------------------
1 | .code-theme-nnfx-light{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*!
11 | Theme: nnfx light
12 | Description: a theme inspired by Netscape Navigator/Firefox
13 | Author: (c) 2020-2021 Jim Mason
14 | Maintainer: @RocketMan
15 | License: https://creativecommons.org/licenses/by-sa/4.0 CC BY-SA 4.0
16 | Updated: 2021-05-17
17 |
18 | @version 1.1.0
19 | */
20 | .hljs {
21 | background: #fff;
22 | color: #000
23 | }
24 | .language-xml .hljs-meta,
25 | .language-xml .hljs-meta-string {
26 | font-weight: bold;
27 | font-style: italic;
28 | color: #48b
29 | }
30 | .hljs-comment,
31 | .hljs-quote {
32 | font-style: italic;
33 | color: #070
34 | }
35 | .hljs-name,
36 | .hljs-keyword,
37 | .hljs-built_in {
38 | color: #808
39 | }
40 | .hljs-name,
41 | .hljs-attr {
42 | font-weight: bold
43 | }
44 | .hljs-string {
45 | font-weight: normal
46 | }
47 | .hljs-code,
48 | .hljs-string,
49 | .hljs-meta .hljs-string,
50 | .hljs-number,
51 | .hljs-regexp,
52 | .hljs-link {
53 | color: #00f
54 | }
55 | .hljs-title,
56 | .hljs-symbol,
57 | .hljs-bullet,
58 | .hljs-variable,
59 | .hljs-template-variable {
60 | color: #f40
61 | }
62 | .hljs-title.class_,
63 | .hljs-class .hljs-title,
64 | .hljs-type {
65 | font-weight: bold;
66 | color: #639
67 | }
68 | .hljs-title.function_,
69 | .hljs-function .hljs-title,
70 | .hljs-attr,
71 | .hljs-subst,
72 | .hljs-tag {
73 | color: #000
74 | }
75 | .hljs-formula {
76 | background-color: #eee;
77 | font-style: italic
78 | }
79 | .hljs-addition {
80 | background-color: #beb
81 | }
82 | .hljs-deletion {
83 | background-color: #fbb
84 | }
85 | .hljs-meta {
86 | color: #269
87 | }
88 | .hljs-section,
89 | .hljs-selector-id,
90 | .hljs-selector-class,
91 | .hljs-selector-pseudo,
92 | .hljs-selector-tag {
93 | font-weight: bold;
94 | color: #48b
95 | }
96 | .hljs-selector-pseudo {
97 | font-style: italic
98 | }
99 | .hljs-doctag,
100 | .hljs-strong {
101 | font-weight: bold
102 | }
103 | .hljs-emphasis {
104 | font-style: italic
105 | }
106 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/obsidian.scss:
--------------------------------------------------------------------------------
1 | .code-theme-obsidian{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /**
11 | * Obsidian style
12 | * ported by Alexander Marenin (http://github.com/ioncreature)
13 | */
14 | .hljs {
15 | color: #e0e2e4;
16 | background: #282b2e
17 | }
18 | .hljs-keyword,
19 | .hljs-selector-tag,
20 | .hljs-literal,
21 | .hljs-selector-id {
22 | color: #93c763
23 | }
24 | .hljs-number {
25 | color: #ffcd22
26 | }
27 | .hljs-attribute {
28 | color: #668bb0
29 | }
30 | .hljs-regexp,
31 | .hljs-link {
32 | color: #d39745
33 | }
34 | .hljs-meta {
35 | color: #557182
36 | }
37 | .hljs-tag,
38 | .hljs-name,
39 | .hljs-bullet,
40 | .hljs-subst,
41 | .hljs-emphasis,
42 | .hljs-type,
43 | .hljs-built_in,
44 | .hljs-selector-attr,
45 | .hljs-selector-pseudo,
46 | .hljs-addition,
47 | .hljs-variable,
48 | .hljs-template-tag,
49 | .hljs-template-variable {
50 | color: #8cbbad
51 | }
52 | .hljs-string,
53 | .hljs-symbol {
54 | color: #ec7600
55 | }
56 | .hljs-comment,
57 | .hljs-quote,
58 | .hljs-deletion {
59 | color: #818e96
60 | }
61 | .hljs-selector-class {
62 | color: #A082BD
63 | }
64 | .hljs-keyword,
65 | .hljs-selector-tag,
66 | .hljs-literal,
67 | .hljs-doctag,
68 | .hljs-title,
69 | .hljs-section,
70 | .hljs-type,
71 | .hljs-name,
72 | .hljs-strong {
73 | font-weight: bold
74 | }
75 | .hljs-code,
76 | .hljs-title.class_,
77 | .hljs-class .hljs-title,
78 | .hljs-section {
79 | color: white
80 | }
81 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/panda-syntax-dark.scss:
--------------------------------------------------------------------------------
1 | .code-theme-panda-syntax-dark{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /**
11 | * Panda Syntax Theme for Highlight.js
12 | * Based on: https://github.com/tinkertrain/panda-syntax-vscode
13 | * Author: Annmarie Switzer
14 | */
15 | .hljs {
16 | color: #e6e6e6;
17 | background: #2a2c2d
18 | }
19 | .hljs-emphasis {
20 | font-style: italic
21 | }
22 | .hljs-strong {
23 | font-weight: bold
24 | }
25 | .hljs-link {
26 | text-decoration: underline
27 | }
28 | .hljs-comment,
29 | .hljs-quote {
30 | color: #bbbbbb;
31 | font-style: italic
32 | }
33 | .hljs-params {
34 | color: #bbbbbb
35 | }
36 | .hljs-punctuation,
37 | .hljs-attr {
38 | color: #e6e6e6
39 | }
40 | .hljs-selector-tag,
41 | .hljs-name,
42 | .hljs-meta {
43 | color: #ff4b82
44 | }
45 | .hljs-operator,
46 | .hljs-char.escape_ {
47 | color: #b084eb
48 | }
49 | .hljs-keyword,
50 | .hljs-deletion {
51 | color: #ff75b5
52 | }
53 | .hljs-regexp,
54 | .hljs-selector-pseudo,
55 | .hljs-selector-attr,
56 | .hljs-variable.language_ {
57 | color: #ff9ac1
58 | }
59 | .hljs-subst,
60 | .hljs-property,
61 | .hljs-code,
62 | .hljs-formula,
63 | .hljs-section,
64 | .hljs-title.function_ {
65 | color: #45a9f9
66 | }
67 | .hljs-string,
68 | .hljs-symbol,
69 | .hljs-bullet,
70 | .hljs-addition,
71 | .hljs-selector-class,
72 | .hljs-title.class_,
73 | .hljs-title.class_.inherited__,
74 | .hljs-meta .hljs-string {
75 | color: #19f9d8
76 | }
77 | .hljs-variable,
78 | .hljs-template-variable,
79 | .hljs-number,
80 | .hljs-literal,
81 | .hljs-type,
82 | .hljs-link,
83 | .hljs-built_in,
84 | .hljs-title,
85 | .hljs-selector-id,
86 | .hljs-tag,
87 | .hljs-doctag,
88 | .hljs-attribute,
89 | .hljs-template-tag,
90 | .hljs-meta .hljs-keyword,
91 | .hljs-punctuation {
92 | color: #ffb86c
93 | }
94 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/panda-syntax-light.scss:
--------------------------------------------------------------------------------
1 | .code-theme-panda-syntax-light{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /**
11 | * Panda Syntax Theme for Highlight.js
12 | * Based on: https://github.com/tinkertrain/panda-syntax-vscode
13 | * Author: Annmarie Switzer
14 | */
15 | .hljs {
16 | color: #2a2c2d;
17 | background: #e6e6e6
18 | }
19 | .hljs-emphasis {
20 | font-style: italic
21 | }
22 | .hljs-strong {
23 | font-weight: bold
24 | }
25 | .hljs-link {
26 | text-decoration: underline
27 | }
28 | .hljs-comment,
29 | .hljs-quote {
30 | color: #676B79;
31 | font-style: italic
32 | }
33 | .hljs-params {
34 | color: #676B79
35 | }
36 | .hljs-punctuation,
37 | .hljs-attr {
38 | color: #2a2c2d
39 | }
40 | .hljs-selector-tag,
41 | .hljs-name,
42 | .hljs-meta,
43 | .hljs-operator,
44 | .hljs-char.escape_ {
45 | color: #c56200
46 | }
47 | .hljs-keyword,
48 | .hljs-deletion {
49 | color: #d92792
50 | }
51 | .hljs-regexp,
52 | .hljs-selector-pseudo,
53 | .hljs-selector-attr,
54 | .hljs-variable.language_ {
55 | color: #cc5e91
56 | }
57 | .hljs-subst,
58 | .hljs-property,
59 | .hljs-code,
60 | .hljs-formula,
61 | .hljs-section,
62 | .hljs-title.function_ {
63 | color: #3787c7
64 | }
65 | .hljs-string,
66 | .hljs-symbol,
67 | .hljs-bullet,
68 | .hljs-addition,
69 | .hljs-selector-class,
70 | .hljs-title.class_,
71 | .hljs-title.class_.inherited__,
72 | .hljs-meta .hljs-string {
73 | color: #0d7d6c
74 | }
75 | .hljs-variable,
76 | .hljs-template-variable,
77 | .hljs-number,
78 | .hljs-literal,
79 | .hljs-type,
80 | .hljs-link,
81 | .hljs-built_in,
82 | .hljs-title,
83 | .hljs-selector-id,
84 | .hljs-tag,
85 | .hljs-doctag,
86 | .hljs-attribute,
87 | .hljs-template-tag,
88 | .hljs-meta .hljs-keyword {
89 | color: #7641bb
90 | }
91 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/paraiso-dark.scss:
--------------------------------------------------------------------------------
1 | .code-theme-paraiso-dark{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*
11 | Paraíso (dark)
12 | Created by Jan T. Sott (http://github.com/idleberg)
13 | Inspired by the art of Rubens LP (http://www.rubenslp.com.br)
14 | */
15 | .hljs {
16 | background: #2f1e2e;
17 | color: #a39e9b
18 | }
19 | /* Paraíso Comment */
20 | .hljs-comment,
21 | .hljs-quote {
22 | color: #8d8687
23 | }
24 | /* Paraíso Red */
25 | .hljs-variable,
26 | .hljs-template-variable,
27 | .hljs-tag,
28 | .hljs-name,
29 | .hljs-selector-id,
30 | .hljs-selector-class,
31 | .hljs-regexp,
32 | .hljs-link,
33 | .hljs-meta {
34 | color: #ef6155
35 | }
36 | /* Paraíso Orange */
37 | .hljs-number,
38 | .hljs-built_in,
39 | .hljs-literal,
40 | .hljs-type,
41 | .hljs-params,
42 | .hljs-deletion {
43 | color: #f99b15
44 | }
45 | /* Paraíso Yellow */
46 | .hljs-title,
47 | .hljs-section,
48 | .hljs-attribute {
49 | color: #fec418
50 | }
51 | /* Paraíso Green */
52 | .hljs-string,
53 | .hljs-symbol,
54 | .hljs-bullet,
55 | .hljs-addition {
56 | color: #48b685
57 | }
58 | /* Paraíso Purple */
59 | .hljs-keyword,
60 | .hljs-selector-tag {
61 | color: #815ba4
62 | }
63 | .hljs-emphasis {
64 | font-style: italic
65 | }
66 | .hljs-strong {
67 | font-weight: bold
68 | }
69 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/paraiso-light.scss:
--------------------------------------------------------------------------------
1 | .code-theme-paraiso-light{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*
11 | Paraíso (light)
12 | Created by Jan T. Sott (http://github.com/idleberg)
13 | Inspired by the art of Rubens LP (http://www.rubenslp.com.br)
14 | */
15 | .hljs {
16 | background: #e7e9db;
17 | color: #4f424c
18 | }
19 | /* Paraíso Comment */
20 | .hljs-comment,
21 | .hljs-quote {
22 | color: #776e71
23 | }
24 | /* Paraíso Red */
25 | .hljs-variable,
26 | .hljs-template-variable,
27 | .hljs-tag,
28 | .hljs-name,
29 | .hljs-selector-id,
30 | .hljs-selector-class,
31 | .hljs-regexp,
32 | .hljs-link,
33 | .hljs-meta {
34 | color: #ef6155
35 | }
36 | /* Paraíso Orange */
37 | .hljs-number,
38 | .hljs-built_in,
39 | .hljs-literal,
40 | .hljs-type,
41 | .hljs-params,
42 | .hljs-deletion {
43 | color: #f99b15
44 | }
45 | /* Paraíso Yellow */
46 | .hljs-title,
47 | .hljs-section,
48 | .hljs-attribute {
49 | color: #fec418
50 | }
51 | /* Paraíso Green */
52 | .hljs-string,
53 | .hljs-symbol,
54 | .hljs-bullet,
55 | .hljs-addition {
56 | color: #48b685
57 | }
58 | /* Paraíso Purple */
59 | .hljs-keyword,
60 | .hljs-selector-tag {
61 | color: #815ba4
62 | }
63 | .hljs-emphasis {
64 | font-style: italic
65 | }
66 | .hljs-strong {
67 | font-weight: bold
68 | }
69 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/pojoaque.scss:
--------------------------------------------------------------------------------
1 | .code-theme-pojoaque{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*
11 |
12 | Pojoaque Style by Jason Tate
13 | http://web-cms-designs.com/ftopict-10-pojoaque-style-for-highlight-js-code-highlighter.html
14 | Based on Solarized Style from http://ethanschoonover.com/solarized
15 |
16 | */
17 | .hljs {
18 | color: #dccf8f;
19 | background: url(./pojoaque.jpg) repeat scroll left top #181914
20 | }
21 | .hljs-comment,
22 | .hljs-quote {
23 | color: #586e75;
24 | font-style: italic
25 | }
26 | .hljs-keyword,
27 | .hljs-selector-tag,
28 | .hljs-literal,
29 | .hljs-addition {
30 | color: #b64926
31 | }
32 | .hljs-number,
33 | .hljs-string,
34 | .hljs-doctag,
35 | .hljs-regexp {
36 | color: #468966
37 | }
38 | .hljs-title,
39 | .hljs-section,
40 | .hljs-built_in,
41 | .hljs-name {
42 | color: #ffb03b
43 | }
44 | .hljs-variable,
45 | .hljs-template-variable,
46 | .hljs-title.class_,
47 | .hljs-class .hljs-title,
48 | .hljs-type,
49 | .hljs-tag {
50 | color: #b58900
51 | }
52 | .hljs-attribute {
53 | color: #b89859
54 | }
55 | .hljs-symbol,
56 | .hljs-bullet,
57 | .hljs-link,
58 | .hljs-subst,
59 | .hljs-meta {
60 | color: #cb4b16
61 | }
62 | .hljs-deletion {
63 | color: #dc322f
64 | }
65 | .hljs-selector-id,
66 | .hljs-selector-class {
67 | color: #d3a60c
68 | }
69 | .hljs-formula {
70 | background: #073642
71 | }
72 | .hljs-emphasis {
73 | font-style: italic
74 | }
75 | .hljs-strong {
76 | font-weight: bold
77 | }
78 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/purebasic.scss:
--------------------------------------------------------------------------------
1 | .code-theme-purebasic{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*
11 |
12 | PureBASIC native IDE style ( version 1.0 - April 2016 )
13 |
14 | by Tristano Ajmone
15 |
16 | Public Domain
17 |
18 | NOTE_1: PureBASIC code syntax highlighting only applies the following classes:
19 | .hljs-comment
20 | .hljs-function
21 | .hljs-keywords
22 | .hljs-string
23 | .hljs-symbol
24 |
25 | Other classes are added here for the benefit of styling other languages with the look and feel of PureBASIC native IDE style.
26 | If you need to customize a stylesheet for PureBASIC only, remove all non-relevant classes -- PureBASIC-related classes are followed by
27 | a "--- used for PureBASIC ... ---" comment on same line.
28 |
29 | NOTE_2: Color names provided in comments were derived using "Name that Color" online tool:
30 | http://chir.ag/projects/name-that-color
31 | */
32 | .hljs {
33 | background: #FFFFDF/* Half and Half (approx.) */
34 |
35 | }
36 | /* --- used for PureBASIC base color --- */
37 | /* --- used for PureBASIC Procedures return type --- */
38 | /* --- used for wrapping PureBASIC Procedures definitions --- */
39 | .hljs,
40 | .hljs-type,
41 | .hljs-function,
42 | .hljs-name,
43 | .hljs-number,
44 | .hljs-attr,
45 | .hljs-params,
46 | .hljs-subst {
47 | color: #000000/* Black */
48 |
49 | }
50 | /* --- used for PureBASIC Comments --- */
51 | .hljs-comment,
52 | .hljs-regexp,
53 | .hljs-section,
54 | .hljs-selector-pseudo,
55 | .hljs-addition {
56 | color: #00AAAA/* Persian Green (approx.) */
57 |
58 | }
59 | /* --- used for PureBASIC Keywords --- */
60 | .hljs-keyword,
61 | .hljs-class,
62 | .hljs-meta .hljs-keyword,
63 | .hljs-selector-class,
64 | .hljs-built_in {
65 | color: #006666;
66 | /* Blue Stone (approx.) */
67 | font-weight: bold
68 | }
69 | /* --- used for PureBASIC Procedures Names --- */
70 | .hljs-title,
71 | .hljs-tag,
72 | .hljs-variable,
73 | .hljs-code {
74 | color: #006666/* Blue Stone (approx.) */
75 |
76 | }
77 | /* --- used for PureBASIC Strings --- */
78 | .hljs-string,
79 | .hljs-selector-attr {
80 | color: #0080FF/* Azure Radiance (approx.) */
81 |
82 | }
83 | /* --- used for PureBASIC Constants --- */
84 | .hljs-symbol,
85 | .hljs-link,
86 | .hljs-deletion,
87 | .hljs-attribute {
88 | color: #924B72/* Cannon Pink (approx.) */
89 |
90 | }
91 | .hljs-meta,
92 | .hljs-literal,
93 | .hljs-selector-id {
94 | color: #924B72;
95 | /* Cannon Pink (approx.) */
96 | font-weight: bold
97 | }
98 | .hljs-strong,
99 | .hljs-name {
100 | font-weight: bold
101 | }
102 | .hljs-emphasis {
103 | font-style: italic
104 | }
105 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/qtcreator-dark.scss:
--------------------------------------------------------------------------------
1 | .code-theme-qtcreator-dark{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*
11 |
12 | Qt Creator dark color scheme
13 |
14 | */
15 | .hljs {
16 | color: #aaaaaa;
17 | background: #000000
18 | }
19 | .hljs-strong,
20 | .hljs-emphasis {
21 | color: #a8a8a2
22 | }
23 | .hljs-bullet,
24 | .hljs-quote,
25 | .hljs-number,
26 | .hljs-regexp,
27 | .hljs-literal {
28 | color: #ff55ff
29 | }
30 | .hljs-code
31 | .hljs-selector-class {
32 | color: #aaaaff
33 | }
34 | .hljs-emphasis,
35 | .hljs-stronge,
36 | .hljs-type {
37 | font-style: italic
38 | }
39 | .hljs-keyword,
40 | .hljs-selector-tag,
41 | .hljs-function,
42 | .hljs-section,
43 | .hljs-symbol,
44 | .hljs-name {
45 | color: #ffff55
46 | }
47 | .hljs-subst,
48 | .hljs-tag,
49 | .hljs-title {
50 | color: #aaaaaa
51 | }
52 | .hljs-attribute {
53 | color: #ff5555
54 | }
55 | .hljs-variable,
56 | .hljs-params,
57 | .hljs-title.class_,
58 | .hljs-class .hljs-title {
59 | color: #8888ff
60 | }
61 | .hljs-string,
62 | .hljs-selector-id,
63 | .hljs-selector-attr,
64 | .hljs-selector-pseudo,
65 | .hljs-type,
66 | .hljs-built_in,
67 | .hljs-template-tag,
68 | .hljs-template-variable,
69 | .hljs-addition,
70 | .hljs-link {
71 | color: #ff55ff
72 | }
73 | .hljs-comment,
74 | .hljs-meta,
75 | .hljs-deletion {
76 | color: #55ffff
77 | }
78 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/qtcreator-light.scss:
--------------------------------------------------------------------------------
1 | .code-theme-qtcreator-light{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*
11 | Qt Creator light color scheme
12 | */
13 | .hljs {
14 | color: #000000;
15 | background: #ffffff
16 | }
17 | .hljs-strong,
18 | .hljs-emphasis {
19 | color: #000000
20 | }
21 | .hljs-bullet,
22 | .hljs-quote,
23 | .hljs-number,
24 | .hljs-regexp,
25 | .hljs-literal {
26 | color: #000080
27 | }
28 | .hljs-code
29 | .hljs-selector-class {
30 | color: #800080
31 | }
32 | .hljs-emphasis,
33 | .hljs-stronge,
34 | .hljs-type {
35 | font-style: italic
36 | }
37 | .hljs-keyword,
38 | .hljs-selector-tag,
39 | .hljs-function,
40 | .hljs-section,
41 | .hljs-symbol,
42 | .hljs-name {
43 | color: #808000
44 | }
45 | .hljs-subst,
46 | .hljs-tag,
47 | .hljs-title {
48 | color: #000000
49 | }
50 | .hljs-attribute {
51 | color: #800000
52 | }
53 | .hljs-variable,
54 | .hljs-params,
55 | .hljs-title.class_,
56 | .hljs-class .hljs-title {
57 | color: #0055AF
58 | }
59 | .hljs-string,
60 | .hljs-selector-id,
61 | .hljs-selector-attr,
62 | .hljs-selector-pseudo,
63 | .hljs-type,
64 | .hljs-built_in,
65 | .hljs-template-tag,
66 | .hljs-template-variable,
67 | .hljs-addition,
68 | .hljs-link {
69 | color: #008000
70 | }
71 | .hljs-comment,
72 | .hljs-meta,
73 | .hljs-deletion {
74 | color: #008000
75 | }
76 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/rainbow.scss:
--------------------------------------------------------------------------------
1 | .code-theme-rainbow{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*
11 |
12 | Style with support for rainbow parens
13 |
14 | */
15 | .hljs {
16 | background: #474949;
17 | color: #d1d9e1
18 | }
19 | .hljs-comment,
20 | .hljs-quote {
21 | color: #969896;
22 | font-style: italic
23 | }
24 | .hljs-keyword,
25 | .hljs-selector-tag,
26 | .hljs-literal,
27 | .hljs-type,
28 | .hljs-addition {
29 | color: #cc99cc
30 | }
31 | .hljs-number,
32 | .hljs-selector-attr,
33 | .hljs-selector-pseudo {
34 | color: #f99157
35 | }
36 | .hljs-string,
37 | .hljs-doctag,
38 | .hljs-regexp {
39 | color: #8abeb7
40 | }
41 | .hljs-title,
42 | .hljs-name,
43 | .hljs-section,
44 | .hljs-built_in {
45 | color: #b5bd68
46 | }
47 | .hljs-variable,
48 | .hljs-template-variable,
49 | .hljs-selector-id,
50 | .hljs-title.class_,
51 | .hljs-class .hljs-title {
52 | color: #ffcc66
53 | }
54 | .hljs-section,
55 | .hljs-name,
56 | .hljs-strong {
57 | font-weight: bold
58 | }
59 | .hljs-symbol,
60 | .hljs-bullet,
61 | .hljs-subst,
62 | .hljs-meta,
63 | .hljs-link {
64 | color: #f99157
65 | }
66 | .hljs-deletion {
67 | color: #dc322f
68 | }
69 | .hljs-formula {
70 | background: #eee8d5
71 | }
72 | .hljs-attr,
73 | .hljs-attribute {
74 | color: #81a2be
75 | }
76 | .hljs-emphasis {
77 | font-style: italic
78 | }
79 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/routeros.scss:
--------------------------------------------------------------------------------
1 | .code-theme-routeros{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*
11 |
12 | highlight.js style for MikroTik RouterOS script
13 |
14 | */
15 | .hljs {
16 | color: #444;
17 | background: #F0F0F0
18 | }
19 | /* Base color: saturation 0; */
20 | .hljs-subst {
21 | color: #444
22 | }
23 | .hljs-comment {
24 | color: #888888
25 | }
26 | .hljs-keyword,
27 | .hljs-selector-tag,
28 | .hljs-meta .hljs-keyword,
29 | .hljs-doctag,
30 | .hljs-name {
31 | font-weight: bold
32 | }
33 | .hljs-attribute {
34 | color: #0E9A00
35 | }
36 | .hljs-function {
37 | color: #99069A
38 | }
39 | /* User color: hue: 0 */
40 | .hljs-type,
41 | .hljs-string,
42 | .hljs-number,
43 | .hljs-selector-id,
44 | .hljs-selector-class,
45 | .hljs-quote,
46 | .hljs-template-tag,
47 | .hljs-deletion {
48 | color: #880000
49 | }
50 | .hljs-title,
51 | .hljs-section {
52 | color: #880000;
53 | font-weight: bold
54 | }
55 | .hljs-regexp,
56 | .hljs-symbol,
57 | .hljs-variable,
58 | .hljs-template-variable,
59 | .hljs-link,
60 | .hljs-selector-attr,
61 | .hljs-selector-pseudo {
62 | color: #BC6060
63 | }
64 | /* Language color: hue: 90; */
65 | .hljs-literal {
66 | color: #78A960
67 | }
68 | .hljs-built_in,
69 | .hljs-bullet,
70 | .hljs-code,
71 | .hljs-addition {
72 | color: #0C9A9A
73 | }
74 | /* Meta color: hue: 200 */
75 | .hljs-meta {
76 | color: #1f7199
77 | }
78 | .hljs-meta .hljs-string {
79 | color: #4d99bf
80 | }
81 | /* Misc effects */
82 | .hljs-emphasis {
83 | font-style: italic
84 | }
85 | .hljs-strong {
86 | font-weight: bold
87 | }
88 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/school-book.scss:
--------------------------------------------------------------------------------
1 | .code-theme-school-book{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*
11 |
12 | School Book style from goldblog.com.ua (c) Zaripov Yura
13 |
14 | */
15 | .hljs {
16 | color: #3e5915;
17 | background: #f6f5b2
18 | }
19 | .hljs-keyword,
20 | .hljs-selector-tag,
21 | .hljs-literal {
22 | color: #005599;
23 | font-weight: bold
24 | }
25 | .hljs-subst {
26 | color: #3e5915
27 | }
28 | .hljs-string,
29 | .hljs-title,
30 | .hljs-section,
31 | .hljs-type,
32 | .hljs-symbol,
33 | .hljs-bullet,
34 | .hljs-attribute,
35 | .hljs-built_in,
36 | .hljs-addition,
37 | .hljs-variable,
38 | .hljs-template-tag,
39 | .hljs-template-variable,
40 | .hljs-link {
41 | color: #2c009f
42 | }
43 | .hljs-comment,
44 | .hljs-quote,
45 | .hljs-deletion,
46 | .hljs-meta {
47 | color: #e60415
48 | }
49 | .hljs-keyword,
50 | .hljs-selector-tag,
51 | .hljs-literal,
52 | .hljs-doctag,
53 | .hljs-title,
54 | .hljs-section,
55 | .hljs-type,
56 | .hljs-name,
57 | .hljs-selector-id,
58 | .hljs-strong {
59 | font-weight: bold
60 | }
61 | .hljs-emphasis {
62 | font-style: italic
63 | }
64 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/shades-of-purple.scss:
--------------------------------------------------------------------------------
1 | .code-theme-shades-of-purple{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /**
11 | * Shades of Purple Theme — for Highlightjs.
12 | *
13 | * @author (c) Ahmad Awais
14 | * @link GitHub Repo → https://github.com/ahmadawais/Shades-of-Purple-HighlightJS
15 | * @version 1.5.0
16 | */
17 | .hljs {
18 | background: #2d2b57;
19 | color: #e3dfff;
20 | font-weight: normal
21 | }
22 | .hljs-subst {
23 | color: #e3dfff
24 | }
25 | .hljs-title {
26 | color: #fad000;
27 | font-weight: normal
28 | }
29 | .hljs-name {
30 | color: #a1feff
31 | }
32 | .hljs-tag {
33 | color: #ffffff
34 | }
35 | .hljs-attr {
36 | color: #f8d000;
37 | font-style: italic
38 | }
39 | .hljs-built_in,
40 | .hljs-selector-tag,
41 | .hljs-section {
42 | color: #fb9e00
43 | }
44 | .hljs-keyword {
45 | color: #fb9e00
46 | }
47 | .hljs-string,
48 | .hljs-attribute,
49 | .hljs-symbol,
50 | .hljs-bullet,
51 | .hljs-addition,
52 | .hljs-code,
53 | .hljs-regexp,
54 | .hljs-selector-class,
55 | .hljs-selector-attr,
56 | .hljs-selector-pseudo,
57 | .hljs-template-tag,
58 | .hljs-quote,
59 | .hljs-deletion {
60 | color: #4cd213
61 | }
62 | .hljs-meta,
63 | .hljs-meta .hljs-string {
64 | color: #fb9e00
65 | }
66 | .hljs-comment {
67 | color: #ac65ff
68 | }
69 | .hljs-keyword,
70 | .hljs-selector-tag,
71 | .hljs-literal,
72 | .hljs-name,
73 | .hljs-strong {
74 | font-weight: normal
75 | }
76 | .hljs-literal,
77 | .hljs-number {
78 | color: #fa658d
79 | }
80 | .hljs-emphasis {
81 | font-style: italic
82 | }
83 | .hljs-strong {
84 | font-weight: bold
85 | }
86 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/srcery.scss:
--------------------------------------------------------------------------------
1 | .code-theme-srcery{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*
11 | Theme: Srcery
12 | Description: Srcery dark color scheme for highlight.js
13 | Author: Chen Bin
14 | Maintainer: @redguardtoo
15 | Website: https://srcery-colors.github.io/
16 | Date: 2021-04-13
17 | */
18 | .hljs {
19 | background: #1C1B19;
20 | /* Black */
21 | color: #FCE8C3/* Bright White */
22 |
23 | }
24 | /* Bright White */
25 | .hljs-subst,
26 | .hljs-quote,
27 | .hljs-literal {
28 | color: #FCE8C3
29 | }
30 | /* Bright Blue */
31 | .hljs-type,
32 | .hljs-symbol {
33 | color: #68A8E4
34 | }
35 | /* Red */
36 | .hljs-keyword,
37 | .hljs-deletion {
38 | color: #EF2F27
39 | }
40 | /* Yellow */
41 | .hljs-name,
42 | .hljs-function,
43 | .hljs-attribute,
44 | .hljs-selector-attr,
45 | .hljs-selector-id,
46 | .hljs-selector-class,
47 | .hljs-selector-pseudo,
48 | .hljs-section,
49 | .hljs-title {
50 | color: #FBB829
51 | }
52 | /* Cyan */
53 | .hljs-code,
54 | .hljs-variable,
55 | .hljs-property,
56 | .hljs-template-variable,
57 | .hljs-class {
58 | color: #0AAEB3
59 | }
60 | /* Bright Green */
61 | .hljs-string,
62 | .hljs-regexp,
63 | .hljs-bullet,
64 | .hljs-addition {
65 | color: #98BC37
66 | }
67 | /* Bright Magenta */
68 | .hljs-built_in,
69 | .hljs-params {
70 | color: #FF5C8F
71 | }
72 | /* Blue */
73 | .hljs-template-tag,
74 | .hljs-selector-tag {
75 | color: #2C78BF
76 | }
77 | /* Bright Black */
78 | .hljs-link,
79 | .hljs-number,
80 | .hljs-comment,
81 | .hljs-meta {
82 | color: #918175
83 | }
84 | .hljs-emphasis {
85 | font-style: italic
86 | }
87 | .hljs-strong {
88 | font-weight: bold
89 | }
90 | /* @see https://github.com/srcery-colors/srcery-emacs for reference */
91 |
92 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/stackoverflow-dark.scss:
--------------------------------------------------------------------------------
1 | .code-theme-stackoverflow-dark{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*!
11 | Theme: StackOverflow Dark
12 | Description: Dark theme as used on stackoverflow.com
13 | Author: stackoverflow.com
14 | Maintainer: @Hirse
15 | Website: https://github.com/StackExchange/Stacks
16 | License: MIT
17 | Updated: 2021-05-15
18 |
19 | Updated for @stackoverflow/stacks v0.64.0
20 | Code Blocks: /blob/v0.64.0/lib/css/components/_stacks-code-blocks.less
21 | Colors: /blob/v0.64.0/lib/css/exports/_stacks-constants-colors.less
22 | */
23 | .hljs {
24 | /* var(--highlight-color) */
25 | color: #ffffff;
26 | /* var(--highlight-bg) */
27 | background: #1c1b1b
28 | }
29 | .hljs-subst {
30 | /* var(--highlight-color) */
31 | color: #ffffff
32 | }
33 | .hljs-comment {
34 | /* var(--highlight-comment) */
35 | color: #999999
36 | }
37 | .hljs-keyword,
38 | .hljs-selector-tag,
39 | .hljs-meta .hljs-keyword,
40 | .hljs-doctag,
41 | .hljs-section {
42 | /* var(--highlight-keyword) */
43 | color: #88aece
44 | }
45 | .hljs-attr {
46 | /* var(--highlight-attribute); */
47 | color: #88aece
48 | }
49 | .hljs-attribute {
50 | /* var(--highlight-symbol) */
51 | color: #c59bc1
52 | }
53 | .hljs-name,
54 | .hljs-type,
55 | .hljs-number,
56 | .hljs-selector-id,
57 | .hljs-quote,
58 | .hljs-template-tag {
59 | /* var(--highlight-namespace) */
60 | color: #f08d49
61 | }
62 | .hljs-selector-class {
63 | /* var(--highlight-keyword) */
64 | color: #88aece
65 | }
66 | .hljs-string,
67 | .hljs-regexp,
68 | .hljs-symbol,
69 | .hljs-variable,
70 | .hljs-template-variable,
71 | .hljs-link,
72 | .hljs-selector-attr {
73 | /* var(--highlight-variable) */
74 | color: #b5bd68
75 | }
76 | .hljs-meta,
77 | .hljs-selector-pseudo {
78 | /* var(--highlight-keyword) */
79 | color: #88aece
80 | }
81 | .hljs-built_in,
82 | .hljs-title,
83 | .hljs-literal {
84 | /* var(--highlight-literal) */
85 | color: #f08d49
86 | }
87 | .hljs-bullet,
88 | .hljs-code {
89 | /* var(--highlight-punctuation) */
90 | color: #cccccc
91 | }
92 | .hljs-meta .hljs-string {
93 | /* var(--highlight-variable) */
94 | color: #b5bd68
95 | }
96 | .hljs-deletion {
97 | /* var(--highlight-deletion) */
98 | color: #de7176
99 | }
100 | .hljs-addition {
101 | /* var(--highlight-addition) */
102 | color: #76c490
103 | }
104 | .hljs-emphasis {
105 | font-style: italic
106 | }
107 | .hljs-strong {
108 | font-weight: bold
109 | }
110 | .hljs-formula,
111 | .hljs-operator,
112 | .hljs-params,
113 | .hljs-property,
114 | .hljs-punctuation,
115 | .hljs-tag {
116 | /* purposely ignored */
117 |
118 | }
119 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/stackoverflow-light.scss:
--------------------------------------------------------------------------------
1 | .code-theme-stackoverflow-light{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*!
11 | Theme: StackOverflow Light
12 | Description: Light theme as used on stackoverflow.com
13 | Author: stackoverflow.com
14 | Maintainer: @Hirse
15 | Website: https://github.com/StackExchange/Stacks
16 | License: MIT
17 | Updated: 2021-05-15
18 |
19 | Updated for @stackoverflow/stacks v0.64.0
20 | Code Blocks: /blob/v0.64.0/lib/css/components/_stacks-code-blocks.less
21 | Colors: /blob/v0.64.0/lib/css/exports/_stacks-constants-colors.less
22 | */
23 | .hljs {
24 | /* var(--highlight-color) */
25 | color: #2f3337;
26 | /* var(--highlight-bg) */
27 | background: #f6f6f6
28 | }
29 | .hljs-subst {
30 | /* var(--highlight-color) */
31 | color: #2f3337
32 | }
33 | .hljs-comment {
34 | /* var(--highlight-comment) */
35 | color: #656e77
36 | }
37 | .hljs-keyword,
38 | .hljs-selector-tag,
39 | .hljs-meta .hljs-keyword,
40 | .hljs-doctag,
41 | .hljs-section {
42 | /* var(--highlight-keyword) */
43 | color: #015692
44 | }
45 | .hljs-attr {
46 | /* var(--highlight-attribute); */
47 | color: #015692
48 | }
49 | .hljs-attribute {
50 | /* var(--highlight-symbol) */
51 | color: #803378
52 | }
53 | .hljs-name,
54 | .hljs-type,
55 | .hljs-number,
56 | .hljs-selector-id,
57 | .hljs-quote,
58 | .hljs-template-tag {
59 | /* var(--highlight-namespace) */
60 | color: #b75501
61 | }
62 | .hljs-selector-class {
63 | /* var(--highlight-keyword) */
64 | color: #015692
65 | }
66 | .hljs-string,
67 | .hljs-regexp,
68 | .hljs-symbol,
69 | .hljs-variable,
70 | .hljs-template-variable,
71 | .hljs-link,
72 | .hljs-selector-attr {
73 | /* var(--highlight-variable) */
74 | color: #54790d
75 | }
76 | .hljs-meta,
77 | .hljs-selector-pseudo {
78 | /* var(--highlight-keyword) */
79 | color: #015692
80 | }
81 | .hljs-built_in,
82 | .hljs-title,
83 | .hljs-literal {
84 | /* var(--highlight-literal) */
85 | color: #b75501
86 | }
87 | .hljs-bullet,
88 | .hljs-code {
89 | /* var(--highlight-punctuation) */
90 | color: #535a60
91 | }
92 | .hljs-meta .hljs-string {
93 | /* var(--highlight-variable) */
94 | color: #54790d
95 | }
96 | .hljs-deletion {
97 | /* var(--highlight-deletion) */
98 | color: #c02d2e
99 | }
100 | .hljs-addition {
101 | /* var(--highlight-addition) */
102 | color: #2f6f44
103 | }
104 | .hljs-emphasis {
105 | font-style: italic
106 | }
107 | .hljs-strong {
108 | font-weight: bold
109 | }
110 | .hljs-formula,
111 | .hljs-operator,
112 | .hljs-params,
113 | .hljs-property,
114 | .hljs-punctuation,
115 | .hljs-tag {
116 | /* purposely ignored */
117 |
118 | }
119 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/sunburst.scss:
--------------------------------------------------------------------------------
1 | .code-theme-sunburst{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*
11 |
12 | Sunburst-like style (c) Vasily Polovnyov
13 |
14 | */
15 | .hljs {
16 | background: #000;
17 | color: #f8f8f8
18 | }
19 | .hljs-comment,
20 | .hljs-quote {
21 | color: #aeaeae;
22 | font-style: italic
23 | }
24 | .hljs-keyword,
25 | .hljs-selector-tag,
26 | .hljs-type {
27 | color: #e28964
28 | }
29 | .hljs-string {
30 | color: #65b042
31 | }
32 | .hljs-subst {
33 | color: #daefa3
34 | }
35 | .hljs-regexp,
36 | .hljs-link {
37 | color: #e9c062
38 | }
39 | .hljs-title,
40 | .hljs-section,
41 | .hljs-tag,
42 | .hljs-name {
43 | color: #89bdff
44 | }
45 | .hljs-title.class_,
46 | .hljs-class .hljs-title,
47 | .hljs-doctag {
48 | text-decoration: underline
49 | }
50 | .hljs-symbol,
51 | .hljs-bullet,
52 | .hljs-number {
53 | color: #3387cc
54 | }
55 | .hljs-params,
56 | .hljs-variable,
57 | .hljs-template-variable {
58 | color: #3e87e3
59 | }
60 | .hljs-attribute {
61 | color: #cda869
62 | }
63 | .hljs-meta {
64 | color: #8996a8
65 | }
66 | .hljs-formula {
67 | background-color: #0e2231;
68 | color: #f8f8f8;
69 | font-style: italic
70 | }
71 | .hljs-addition {
72 | background-color: #253b22;
73 | color: #f8f8f8
74 | }
75 | .hljs-deletion {
76 | background-color: #420e09;
77 | color: #f8f8f8
78 | }
79 | .hljs-selector-class {
80 | color: #9b703f
81 | }
82 | .hljs-selector-id {
83 | color: #8b98ab
84 | }
85 | .hljs-emphasis {
86 | font-style: italic
87 | }
88 | .hljs-strong {
89 | font-weight: bold
90 | }
91 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/tokyo-night-dark.scss:
--------------------------------------------------------------------------------
1 | .code-theme-tokyo-night-dark{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*!
11 | Theme: Tokyo-night-Dark
12 | origin: https://github.com/enkia/tokyo-night-vscode-theme
13 | Description: Original highlight.js style
14 | Author: (c) Henri Vandersleyen
15 | License: see project LICENSE
16 | Touched: 2022
17 | */
18 | /* Comment */
19 | .hljs-meta,
20 | .hljs-comment {
21 | color: #565f89
22 | }
23 | /* Red */
24 | /*INFO: This keyword, HTML elements, Regex group symbol, CSS units, Terminal Red */
25 | .hljs-tag,
26 | .hljs-doctag,
27 | .hljs-selector-id,
28 | .hljs-selector-class,
29 | .hljs-regexp,
30 | .hljs-template-tag,
31 | .hljs-selector-pseudo,
32 | .hljs-selector-attr,
33 | .hljs-variable.language_,
34 | .hljs-deletion {
35 | color: #f7768e
36 | }
37 | /*Orange */
38 | /*INFO: Number and Boolean constants, Language support constants */
39 | .hljs-variable,
40 | .hljs-template-variable,
41 | .hljs-number,
42 | .hljs-literal,
43 | .hljs-type,
44 | .hljs-params,
45 | .hljs-link {
46 | color: #ff9e64
47 | }
48 | /* Yellow */
49 | /* INFO: Function parameters, Regex character sets, Terminal Yellow */
50 | .hljs-built_in,
51 | .hljs-attribute {
52 | color: #e0af68
53 | }
54 | /* cyan */
55 | /* INFO: Language support functions, CSS HTML elements */
56 | .hljs-selector-tag {
57 | color: #2ac3de
58 | }
59 | /* light blue */
60 | /* INFO: Object properties, Regex quantifiers and flags, Markdown headings, Terminal Cyan, Markdown code, Import/export keywords */
61 | .hljs-keyword,
62 | .hljs-title.function_,
63 | .hljs-title,
64 | .hljs-title.class_,
65 | .hljs-title.class_.inherited__,
66 | .hljs-subst,
67 | .hljs-property {
68 | color: #7dcfff
69 | }
70 | /*Green*/
71 | /* INFO: Object literal keys, Markdown links, Terminal Green */
72 | .hljs-selector-tag {
73 | color: #73daca
74 | }
75 | /*Green(er) */
76 | /* INFO: Strings, CSS class names */
77 | .hljs-quote,
78 | .hljs-string,
79 | .hljs-symbol,
80 | .hljs-bullet,
81 | .hljs-addition {
82 | color: #9ece6a
83 | }
84 | /* Blue */
85 | /* INFO: Function names, CSS property names, Terminal Blue */
86 | .hljs-code,
87 | .hljs-formula,
88 | .hljs-section {
89 | color: #7aa2f7
90 | }
91 | /* Magenta */
92 | /*INFO: Control Keywords, Storage Types, Regex symbols and operators, HTML Attributes, Terminal Magenta */
93 | .hljs-name,
94 | .hljs-keyword,
95 | .hljs-operator,
96 | .hljs-keyword,
97 | .hljs-char.escape_,
98 | .hljs-attr {
99 | color: #bb9af7
100 | }
101 | /* white*/
102 | /* INFO: Variables, Class names, Terminal White */
103 | .hljs-punctuation {
104 | color: #c0caf5
105 | }
106 | .hljs {
107 | background: #1a1b26;
108 | color: #9aa5ce
109 | }
110 | .hljs-emphasis {
111 | font-style: italic
112 | }
113 | .hljs-strong {
114 | font-weight: bold
115 | }
116 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/tokyo-night-light.scss:
--------------------------------------------------------------------------------
1 | .code-theme-tokyo-night-light{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*!
11 | Theme: Tokyo-night-light
12 | origin: https://github.com/enkia/tokyo-night-vscode-theme
13 | Description: Original highlight.js style
14 | Author: (c) Henri Vandersleyen
15 | License: see project LICENSE
16 | Touched: 2022
17 | */
18 | /* Comment */
19 | .hljs-meta,
20 | .hljs-comment {
21 | color: #9699a3
22 | }
23 | /* Red */
24 | /*INFO: This keyword, HTML elements, Regex group symbol, CSS units, Terminal Red */
25 | .hljs-tag,
26 | .hljs-doctag,
27 | .hljs-selector-id,
28 | .hljs-selector-class,
29 | .hljs-regexp,
30 | .hljs-template-tag,
31 | .hljs-selector-pseudo,
32 | .hljs-selector-attr,
33 | .hljs-variable.language_,
34 | .hljs-deletion {
35 | color: #8c4351
36 | }
37 | /*Orange */
38 | /*INFO: Number and Boolean constants, Language support constants */
39 | .hljs-variable,
40 | .hljs-template-variable,
41 | .hljs-number,
42 | .hljs-literal,
43 | .hljs-type,
44 | .hljs-params,
45 | .hljs-link {
46 | color: #965027
47 | }
48 | /* Yellow */
49 | /* INFO: Function parameters, Regex character sets, Terminal Yellow */
50 | .hljs-built_in,
51 | .hljs-attribute {
52 | color: #8f5e15
53 | }
54 | /* cyan */
55 | /* INFO: Language support functions, CSS HTML elements */
56 | .hljs-selector-tag {
57 | color: #166775
58 | }
59 | /* light blue */
60 | /* INFO: Object properties, Regex quantifiers and flags, Markdown headings, Terminal Cyan, Markdown code, Import/export keywords */
61 | .hljs-keyword,
62 | .hljs-title.function_,
63 | .hljs-title,
64 | .hljs-title.class_,
65 | .hljs-title.class_.inherited__,
66 | .hljs-subst,
67 | .hljs-property {
68 | color: #0f4b6e
69 | }
70 | /*Green*/
71 | /* INFO: Object literal keys, Markdown links, Terminal Green */
72 | .hljs-selector-tag {
73 | color: #33635c
74 | }
75 | /*Green(er) */
76 | /* INFO: Strings, CSS class names */
77 | .hljs-quote,
78 | .hljs-string,
79 | .hljs-symbol,
80 | .hljs-bullet,
81 | .hljs-addition {
82 | color: #485e30
83 | }
84 | /* Blue */
85 | /* INFO: Function names, CSS property names, Terminal Blue */
86 | .hljs-code,
87 | .hljs-formula,
88 | .hljs-section {
89 | color: #34548a
90 | }
91 | /* Magenta */
92 | /*INFO: Control Keywords, Storage Types, Regex symbols and operators, HTML Attributes, Terminal Magenta */
93 | .hljs-name,
94 | .hljs-keyword,
95 | .hljs-operator,
96 | .hljs-keyword,
97 | .hljs-char.escape_,
98 | .hljs-attr {
99 | color: #5a4a78
100 | }
101 | /* white*/
102 | /* INFO: Variables, Class names, Terminal White */
103 | .hljs-punctuation {
104 | color: #343b58
105 | }
106 | .hljs {
107 | background: #d5d6db;
108 | color: #565a6e
109 | }
110 | .hljs-emphasis {
111 | font-style: italic
112 | }
113 | .hljs-strong {
114 | font-weight: bold
115 | }
116 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/tomorrow-night-blue.scss:
--------------------------------------------------------------------------------
1 | .code-theme-tomorrow-night-blue{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /* Tomorrow Night Blue Theme */
11 | /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */
12 | /* Original theme - https://github.com/chriskempson/tomorrow-theme */
13 | /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */
14 | /* Tomorrow Comment */
15 | .hljs-comment,
16 | .hljs-quote {
17 | color: #7285b7
18 | }
19 | /* Tomorrow Red */
20 | .hljs-variable,
21 | .hljs-template-variable,
22 | .hljs-tag,
23 | .hljs-name,
24 | .hljs-selector-id,
25 | .hljs-selector-class,
26 | .hljs-regexp,
27 | .hljs-deletion {
28 | color: #ff9da4
29 | }
30 | /* Tomorrow Orange */
31 | .hljs-number,
32 | .hljs-built_in,
33 | .hljs-literal,
34 | .hljs-type,
35 | .hljs-params,
36 | .hljs-meta,
37 | .hljs-link {
38 | color: #ffc58f
39 | }
40 | /* Tomorrow Yellow */
41 | .hljs-attribute {
42 | color: #ffeead
43 | }
44 | /* Tomorrow Green */
45 | .hljs-string,
46 | .hljs-symbol,
47 | .hljs-bullet,
48 | .hljs-addition {
49 | color: #d1f1a9
50 | }
51 | /* Tomorrow Blue */
52 | .hljs-title,
53 | .hljs-section {
54 | color: #bbdaff
55 | }
56 | /* Tomorrow Purple */
57 | .hljs-keyword,
58 | .hljs-selector-tag {
59 | color: #ebbbff
60 | }
61 | .hljs {
62 | background: #002451;
63 | color: white
64 | }
65 | .hljs-emphasis {
66 | font-style: italic
67 | }
68 | .hljs-strong {
69 | font-weight: bold
70 | }
71 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/tomorrow-night-bright.scss:
--------------------------------------------------------------------------------
1 | .code-theme-tomorrow-night-bright{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /* Tomorrow Night Bright Theme */
11 | /* Original theme - https://github.com/chriskempson/tomorrow-theme */
12 | /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */
13 | /* Tomorrow Comment */
14 | .hljs-comment,
15 | .hljs-quote {
16 | color: #969896
17 | }
18 | /* Tomorrow Red */
19 | .hljs-variable,
20 | .hljs-template-variable,
21 | .hljs-tag,
22 | .hljs-name,
23 | .hljs-selector-id,
24 | .hljs-selector-class,
25 | .hljs-regexp,
26 | .hljs-deletion {
27 | color: #d54e53
28 | }
29 | /* Tomorrow Orange */
30 | .hljs-number,
31 | .hljs-built_in,
32 | .hljs-literal,
33 | .hljs-type,
34 | .hljs-params,
35 | .hljs-meta,
36 | .hljs-link {
37 | color: #e78c45
38 | }
39 | /* Tomorrow Yellow */
40 | .hljs-attribute {
41 | color: #e7c547
42 | }
43 | /* Tomorrow Green */
44 | .hljs-string,
45 | .hljs-symbol,
46 | .hljs-bullet,
47 | .hljs-addition {
48 | color: #b9ca4a
49 | }
50 | /* Tomorrow Blue */
51 | .hljs-title,
52 | .hljs-section {
53 | color: #7aa6da
54 | }
55 | /* Tomorrow Purple */
56 | .hljs-keyword,
57 | .hljs-selector-tag {
58 | color: #c397d8
59 | }
60 | .hljs {
61 | background: black;
62 | color: #eaeaea
63 | }
64 | .hljs-emphasis {
65 | font-style: italic
66 | }
67 | .hljs-strong {
68 | font-weight: bold
69 | }
70 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/vs.scss:
--------------------------------------------------------------------------------
1 | .code-theme-vs{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*
11 |
12 | Visual Studio-like style based on original C# coloring by Jason Diamond
13 |
14 | */
15 | .hljs {
16 | background: white;
17 | color: black
18 | }
19 | .hljs-comment,
20 | .hljs-quote,
21 | .hljs-variable {
22 | color: #008000
23 | }
24 | .hljs-keyword,
25 | .hljs-selector-tag,
26 | .hljs-built_in,
27 | .hljs-name,
28 | .hljs-tag {
29 | color: #00f
30 | }
31 | .hljs-string,
32 | .hljs-title,
33 | .hljs-section,
34 | .hljs-attribute,
35 | .hljs-literal,
36 | .hljs-template-tag,
37 | .hljs-template-variable,
38 | .hljs-type,
39 | .hljs-addition {
40 | color: #a31515
41 | }
42 | .hljs-deletion,
43 | .hljs-selector-attr,
44 | .hljs-selector-pseudo,
45 | .hljs-meta {
46 | color: #2b91af
47 | }
48 | .hljs-doctag {
49 | color: #808080
50 | }
51 | .hljs-attr {
52 | color: #f00
53 | }
54 | .hljs-symbol,
55 | .hljs-bullet,
56 | .hljs-link {
57 | color: #00b0e8
58 | }
59 | .hljs-emphasis {
60 | font-style: italic
61 | }
62 | .hljs-strong {
63 | font-weight: bold
64 | }
65 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/vs2015.scss:
--------------------------------------------------------------------------------
1 | .code-theme-vs2015{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*
11 | * Visual Studio 2015 dark style
12 | * Author: Nicolas LLOBERA
13 | */
14 | .hljs {
15 | background: #1E1E1E;
16 | color: #DCDCDC
17 | }
18 | .hljs-keyword,
19 | .hljs-literal,
20 | .hljs-symbol,
21 | .hljs-name {
22 | color: #569CD6
23 | }
24 | .hljs-link {
25 | color: #569CD6;
26 | text-decoration: underline
27 | }
28 | .hljs-built_in,
29 | .hljs-type {
30 | color: #4EC9B0
31 | }
32 | .hljs-number,
33 | .hljs-class {
34 | color: #B8D7A3
35 | }
36 | .hljs-string,
37 | .hljs-meta .hljs-string {
38 | color: #D69D85
39 | }
40 | .hljs-regexp,
41 | .hljs-template-tag {
42 | color: #9A5334
43 | }
44 | .hljs-subst,
45 | .hljs-function,
46 | .hljs-title,
47 | .hljs-params,
48 | .hljs-formula {
49 | color: #DCDCDC
50 | }
51 | .hljs-comment,
52 | .hljs-quote {
53 | color: #57A64A;
54 | font-style: italic
55 | }
56 | .hljs-doctag {
57 | color: #608B4E
58 | }
59 | .hljs-meta,
60 | .hljs-meta .hljs-keyword,
61 | .hljs-tag {
62 | color: #9B9B9B
63 | }
64 | .hljs-variable,
65 | .hljs-template-variable {
66 | color: #BD63C5
67 | }
68 | .hljs-attr,
69 | .hljs-attribute {
70 | color: #9CDCFE
71 | }
72 | .hljs-section {
73 | color: gold
74 | }
75 | .hljs-emphasis {
76 | font-style: italic
77 | }
78 | .hljs-strong {
79 | font-weight: bold
80 | }
81 | /*.hljs-code {
82 | font-family:'Monospace';
83 | }*/
84 | .hljs-bullet,
85 | .hljs-selector-tag,
86 | .hljs-selector-id,
87 | .hljs-selector-class,
88 | .hljs-selector-attr,
89 | .hljs-selector-pseudo {
90 | color: #D7BA7D
91 | }
92 | .hljs-addition {
93 | background-color: #144212;
94 | display: inline-block;
95 | width: 100%
96 | }
97 | .hljs-deletion {
98 | background-color: #600;
99 | display: inline-block;
100 | width: 100%
101 | }
102 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/xcode.scss:
--------------------------------------------------------------------------------
1 | .code-theme-xcode{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*
11 |
12 | XCode style (c) Angel Garcia
13 |
14 | */
15 | .hljs {
16 | background: #fff;
17 | color: black
18 | }
19 | /* Gray DOCTYPE selectors like WebKit */
20 | .xml .hljs-meta {
21 | color: #c0c0c0
22 | }
23 | .hljs-comment,
24 | .hljs-quote {
25 | color: #007400
26 | }
27 | .hljs-tag,
28 | .hljs-attribute,
29 | .hljs-keyword,
30 | .hljs-selector-tag,
31 | .hljs-literal,
32 | .hljs-name {
33 | color: #aa0d91
34 | }
35 | .hljs-variable,
36 | .hljs-template-variable {
37 | color: #3F6E74
38 | }
39 | .hljs-code,
40 | .hljs-string,
41 | .hljs-meta .hljs-string {
42 | color: #c41a16
43 | }
44 | .hljs-regexp,
45 | .hljs-link {
46 | color: #0E0EFF
47 | }
48 | .hljs-title,
49 | .hljs-symbol,
50 | .hljs-bullet,
51 | .hljs-number {
52 | color: #1c00cf
53 | }
54 | .hljs-section,
55 | .hljs-meta {
56 | color: #643820
57 | }
58 | .hljs-title.class_,
59 | .hljs-class .hljs-title,
60 | .hljs-type,
61 | .hljs-built_in,
62 | .hljs-params {
63 | color: #5c2699
64 | }
65 | .hljs-attr {
66 | color: #836C28
67 | }
68 | .hljs-subst {
69 | color: #000
70 | }
71 | .hljs-formula {
72 | background-color: #eee;
73 | font-style: italic
74 | }
75 | .hljs-addition {
76 | background-color: #baeeba
77 | }
78 | .hljs-deletion {
79 | background-color: #ffc8bd
80 | }
81 | .hljs-selector-id,
82 | .hljs-selector-class {
83 | color: #9b703f
84 | }
85 | .hljs-doctag,
86 | .hljs-strong {
87 | font-weight: bold
88 | }
89 | .hljs-emphasis {
90 | font-style: italic
91 | }
92 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/code-theme/theme/xt256.scss:
--------------------------------------------------------------------------------
1 | .code-theme-xt256{
2 | pre code.hljs {
3 | display: block;
4 | overflow-x: auto;
5 | padding: 1em
6 | }
7 | code.hljs {
8 | padding: 3px 5px
9 | }
10 | /*
11 | xt256.css
12 |
13 | Contact: initbar [at] protonmail [dot] ch
14 | : github.com/initbar
15 | */
16 | .hljs {
17 | color: #eaeaea;
18 | background: #000
19 | }
20 | .hljs-subst {
21 | color: #eaeaea
22 | }
23 | .hljs-emphasis {
24 | font-style: italic
25 | }
26 | .hljs-strong {
27 | font-weight: bold
28 | }
29 | .hljs-type {
30 | color: #eaeaea
31 | }
32 | .hljs-params {
33 | color: #da0000
34 | }
35 | .hljs-literal,
36 | .hljs-number,
37 | .hljs-name {
38 | color: #ff0000;
39 | font-weight: bolder
40 | }
41 | .hljs-comment {
42 | color: #969896
43 | }
44 | .hljs-selector-id,
45 | .hljs-quote {
46 | color: #00ffff
47 | }
48 | .hljs-template-variable,
49 | .hljs-variable,
50 | .hljs-title {
51 | color: #00ffff;
52 | font-weight: bold
53 | }
54 | .hljs-selector-class,
55 | .hljs-keyword,
56 | .hljs-symbol {
57 | color: #fff000
58 | }
59 | .hljs-string,
60 | .hljs-bullet {
61 | color: #00ff00
62 | }
63 | .hljs-tag,
64 | .hljs-section {
65 | color: #000fff
66 | }
67 | .hljs-selector-tag {
68 | color: #000fff;
69 | font-weight: bold
70 | }
71 | .hljs-attribute,
72 | .hljs-built_in,
73 | .hljs-regexp,
74 | .hljs-link {
75 | color: #ff00ff
76 | }
77 | .hljs-meta {
78 | color: #fff;
79 | font-weight: bolder
80 | }
81 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/codemirror.scss:
--------------------------------------------------------------------------------
1 | :root[theme='dark'] {
2 | // 搜索匹配项(未选中)的高亮
3 | .cm-selectionMatch{
4 | //outline: 1px #ff9900 solid
5 | }
6 | // 当前选中匹配项的高亮
7 | .cm-searchMatch-selected {
8 | outline: 1px #E3B999 solid !important;
9 | }
10 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/colorpicker.scss:
--------------------------------------------------------------------------------
1 | .vc-colorpicker--container {
2 | background-color: var(--wj-markdown-bg-tertiary);
3 | color: var(--wj-markdown-text-primary);
4 | .vc-colorPicker__record {
5 | .color-list {
6 | .color-item {
7 | border-radius: 0;
8 | border: none;
9 | }
10 | }
11 | }
12 | }
13 |
14 |
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/common.scss:
--------------------------------------------------------------------------------
1 | // electron拖拽
2 | .electron-drag {
3 | -webkit-app-region: drag;
4 | -webkit-user-select: none;
5 | }
6 |
7 | .mermaid-cache, .mermaid {
8 | display: flex;
9 | justify-content: center;
10 | align-items: center;
11 | }
12 |
13 | //layout menu
14 | .ant-dropdown-menu-submenu-popup.ant-dropdown-menu {
15 | *::-webkit-scrollbar{
16 | display: revert;
17 | width: 4px;
18 | height: 4px;
19 | }
20 | *::-webkit-scrollbar-track{
21 | background-color: #e2e2e2;
22 | }
23 | *::-webkit-scrollbar-thumb {
24 | border-radius: 4px;
25 | background-color: #0000004d;
26 | }
27 | *::-webkit-scrollbar-thumb:hover{
28 | background-color: #00000059;
29 | }
30 | *::-webkit-scrollbar-thumb:active{
31 | background-color: #00000061;
32 | }
33 | .ant-dropdown-menu.ant-dropdown-menu-sub.ant-dropdown-menu-vertical {
34 | max-height: 400px;
35 | overflow: auto;
36 | }
37 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/global-theme/dark.scss:
--------------------------------------------------------------------------------
1 | :root[theme=dark] {
2 | // 文字颜色
3 | --wj-markdown-text-primary: rgb(171,178,191);
4 | // 背景颜色
5 | --wj-markdown-bg-primary: rgb(40,44,52);
6 | --wj-markdown-bg-secondary: #363A43;
7 | --wj-markdown-bg-tertiary: rgb(30,34,42);
8 | --wj-markdown-bg-hover: rgba(171,178,191, .2);
9 | --wj-markdown-border-primary: #393B40;
10 | --wj-markdown-scroll-bg: #393B40;
11 | --wj-markdown-text-secondary: rgb(171,178,191);
12 | --wj-markdown-text-tertiary: rgb(160,160,160);
13 |
14 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/global-theme/global-theme.scss:
--------------------------------------------------------------------------------
1 | @use "dark";
2 | @use "light";
3 |
4 | //* {
5 | // color: var(--wj-markdown-text-primary);
6 | // background-color: var(--wj-markdown-bg-primary);
7 | //}
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/global-theme/light.scss:
--------------------------------------------------------------------------------
1 | :root {
2 | --wj-markdown-text-primary: black;
3 | --wj-markdown-bg-primary: white;
4 | --wj-markdown-bg-secondary: rgba(5, 5, 5, 0.06);
5 | --wj-markdown-bg-tertiary: white;
6 | --wj-markdown-bg-hover: rgb(237,237,237);
7 | --wj-markdown-border-primary: rgb(229,231,235);
8 | --wj-markdown-scroll-bg: #e2e2e2;
9 | --wj-markdown-text-secondary: rgb(107,114,128);
10 | --wj-markdown-text-tertiary: rgb(160,160,160);
11 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/preview-theme/preview-theme.scss:
--------------------------------------------------------------------------------
1 | @use "theme/github";
2 | @use "theme/juejin.scss";
3 | @use "theme/smart-blue";
4 | @use "theme/vuepress";
5 | @use "theme/mk-cute";
6 | @use "theme/cyanosis";
7 | @use "theme/scrolls";
8 | @use "theme/markdown-here";
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/reset.css:
--------------------------------------------------------------------------------
1 | * {
2 | box-sizing: border-box;
3 | margin: 0;
4 | padding: 0;
5 | }
6 | html, body, #app {
7 | width: 100%;
8 | height: 100%;
9 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/scroll.scss:
--------------------------------------------------------------------------------
1 | .wj-scrollbar::-webkit-scrollbar{
2 | display: revert;
3 | width: 6px;
4 | height: 6px;
5 | //background-color: rgb(20, 19, 19);
6 | }
7 | /*滚动条里面轨道*/
8 | .wj-scrollbar::-webkit-scrollbar-track{
9 | background-color: var(--wj-markdown-scroll-bg);
10 | }
11 |
12 | /*滚动条的样式*/
13 | .wj-scrollbar::-webkit-scrollbar-thumb{
14 | border-radius: 4px;
15 | background-color: #0000004d;
16 | }
17 |
18 | .wj-scrollbar::-webkit-scrollbar-thumb:hover{
19 | background-color: #00000059;
20 | }
21 |
22 | .wj-scrollbar::-webkit-scrollbar-thumb:active{
23 | background-color: #00000061;
24 | }
25 |
26 | .wj-scrollbar{
27 | *::-webkit-scrollbar{
28 | display: revert;
29 | width: 6px;
30 | height: 6px;
31 | }
32 | *::-webkit-scrollbar-track{
33 | background-color: var(--wj-markdown-scroll-bg);
34 | }
35 | *::-webkit-scrollbar-thumb {
36 | border-radius: 4px;
37 | background-color: #0000004d;
38 | }
39 | *::-webkit-scrollbar-thumb:hover{
40 | background-color: #00000059;
41 | }
42 | *::-webkit-scrollbar-thumb:active{
43 | background-color: #00000061;
44 | }
45 | //background-color: rgb(20, 19, 19);
46 | }
47 |
48 |
49 | .wj-scrollbar-hide::-webkit-scrollbar{
50 | display: revert;
51 | width: 0;
52 | height: 0;
53 | }
54 |
55 |
56 | //// 始终显示滚动条
57 | //.cm-scroller {
58 | // overflow-y: scroll;
59 | //}
60 | //
61 | //.cm-scroller::-webkit-scrollbar{
62 | // display: revert;
63 | // width: 6px;
64 | // height: 6px;
65 | // //background-color: rgb(20, 19, 19);
66 | //}
67 | ///*滚动条里面轨道*/
68 | //.cm-scroller::-webkit-scrollbar-track{
69 | // background-color: #e2e2e2;
70 | //}
71 | //
72 | ///*滚动条的样式*/
73 | //.cm-scroller::-webkit-scrollbar-thumb{
74 | // border-radius: 4px;
75 | // background-color: #0000004d;
76 | //}
77 | //
78 | //.cm-scroller::-webkit-scrollbar-thumb:hover{
79 | // background-color: #00000059;
80 | //}
81 | //
82 | //.cm-scroller::-webkit-scrollbar-thumb:active{
83 | // background-color: #00000061;
84 | //}
85 |
86 |
87 | //.cm-autocompletion-scrollbar {
88 | // ul::-webkit-scrollbar{
89 | // display: revert;
90 | // width: 6px;
91 | // height: 6px;
92 | // //background-color: rgb(20, 19, 19);
93 | // }
94 | // /*滚动条里面轨道*/
95 | // ul::-webkit-scrollbar-track{
96 | // background-color: #e2e2e2;
97 | // }
98 | //
99 | // /*滚动条的样式*/
100 | // ul::-webkit-scrollbar-thumb{
101 | // border-radius: 4px;
102 | // background-color: #0000004d;
103 | // }
104 | //
105 | // ul::-webkit-scrollbar-thumb:hover{
106 | // background-color: #00000059;
107 | // }
108 | //
109 | // ul::-webkit-scrollbar-thumb:active{
110 | // background-color: #00000061;
111 | // }
112 | //}
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/search.scss:
--------------------------------------------------------------------------------
1 | .search-mark {
2 | display: inline;
3 | color: black;
4 | background-color: #ffff00;
5 | }
6 |
7 | .search-mark-highlight {
8 | background-color: #ff9632;
9 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/assets/style/wj-markdown-it-text-color.scss:
--------------------------------------------------------------------------------
1 | .markdown-it-text-color {
2 | color: var(--markdown-it-text-color);
3 | * {
4 | color: var(--markdown-it-text-color) !important;
5 | }
6 | }
7 |
8 | .markdown-it-text-color-gradient {
9 | background: var(--markdown-it-text-color) !important;
10 | -webkit-background-clip: text !important;
11 | background-clip: text !important;
12 | color: transparent !important;
13 | * {
14 | background: var(--markdown-it-text-color) !important;
15 | -webkit-background-clip: text !important;
16 | background-clip: text !important;
17 | color: transparent !important;
18 | }
19 | }
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/components/CommonVNode.vue:
--------------------------------------------------------------------------------
1 |
15 |
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/components/TableShape.vue:
--------------------------------------------------------------------------------
1 |
35 |
36 |
37 |
49 |
50 |
51 |
54 |
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/components/editor/IconButton.vue:
--------------------------------------------------------------------------------
1 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
46 |
47 |
48 |
49 |
{{ label }}
50 |
{{ shortcutKey }}
51 |
52 | {{ label }}
53 |
54 |
55 |
56 |
57 |
58 |
65 |
68 |
69 |
70 |
71 |
{{ label }}
72 |
{{ shortcutKey }}
73 |
74 | {{ label }}
75 |
76 |
77 |
78 |
79 |
80 |
85 |
86 |
87 |
92 |
93 |
94 |
95 |
{{ label }}
96 |
{{ shortcutKey }}
97 |
98 | {{ label }}
99 |
100 |
101 |
102 |
103 |
104 |
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/components/editor/MarkdownMenu.vue:
--------------------------------------------------------------------------------
1 |
33 |
34 |
35 |
36 |
37 |
38 | 大纲
39 |
40 |
41 |
42 |
59 |
60 |
61 |
62 |
65 |
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/components/layout/LayoutContainer.vue:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
7 |
8 |
12 |
13 |
14 |
15 |
16 |
17 |
20 |
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/components/layout/OtherLayout.vue:
--------------------------------------------------------------------------------
1 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 | {{ props.name }}
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
35 |
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/main.js:
--------------------------------------------------------------------------------
1 | import eventUtil from '@/util/channel/eventUtil.js'
2 | import commonUtil from '@/util/commonUtil.js'
3 | import Antd from 'ant-design-vue'
4 |
5 | import { createPinia } from 'pinia'
6 | import { createApp } from 'vue'
7 | import App from './App.vue'
8 | import router from './router'
9 | import '@/assets/style/reset.css'
10 | import '@/assets/style/common.scss'
11 | import 'virtual:uno.css'
12 | import 'ant-design-vue/dist/reset.css'
13 | import 'katex/dist/katex.min.css'
14 | import '@/assets/style/scroll.scss'
15 | import '@/assets/style/wj-markdown-it-container.scss'
16 | import '@/assets/style/wj-markdown-it-text-color.scss'
17 | import 'vue3-colorpicker/style.css'
18 | // 代码主题
19 | import '@/assets/style/code-theme/code-theme.scss'
20 | // 预览主题
21 | import '@/assets/style/preview-theme/preview-theme.scss'
22 | import '@/assets/style/antd.scss'
23 | // markdown-it-github-alerts
24 | import 'markdown-it-github-alerts/styles/github-base.css'
25 | import 'markdown-it-github-alerts/styles/github-colors-light.css'
26 |
27 | import '@/assets/style/search.scss'
28 |
29 | import '@/assets/style/global-theme/global-theme.scss'
30 | import '@/assets/style/colorpicker.scss'
31 | import '@/assets/style/codemirror.scss'
32 |
33 | const app = createApp(App)
34 |
35 | app.use(createPinia())
36 | app.use(router)
37 | app.use(Antd)
38 | app.mount('#app')
39 |
40 | commonUtil.initMessageConfig()
41 | eventUtil.link()
42 | eventUtil.on()
43 |
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/router/index.js:
--------------------------------------------------------------------------------
1 | import { createRouter, createWebHashHistory } from 'vue-router'
2 |
3 | const router = createRouter({
4 | history: createWebHashHistory(import.meta.env.BASE_URL),
5 | routes: [
6 | {
7 | path: '/',
8 | name: 'home',
9 | component: () => import('../views/HomeView.vue'),
10 | children: [
11 | {
12 | path: '/editor',
13 | name: 'editor',
14 | component: () => import('../views/EditorView.vue'),
15 | },
16 | {
17 | path: '/preview',
18 | name: 'preview',
19 | component: () => import('../views/PreviewView.vue'),
20 | },
21 | ],
22 | },
23 | {
24 | path: '/setting',
25 | name: 'setting',
26 | component: () => import('../views/SettingView.vue'),
27 | },
28 | {
29 | path: '/export',
30 | name: 'export',
31 | component: () => import('../views/ExportView.vue'),
32 | },
33 | {
34 | path: '/about',
35 | name: 'about',
36 | component: () => import('../views/AboutView.vue'),
37 | },
38 | {
39 | path: '/guide',
40 | name: 'guide',
41 | component: () => import('../views/GuideView.vue'),
42 | },
43 | ],
44 | })
45 |
46 | export default router
47 |
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/stores/counter.js:
--------------------------------------------------------------------------------
1 | import channelUtil from '@/util/channel/channelUtil.js'
2 | import { defineStore } from 'pinia'
3 | import { ref } from 'vue'
4 |
5 | const configData = await channelUtil.send({ event: 'get-config' })
6 | const recentListData = await channelUtil.send({ event: 'get-recent-list' })
7 |
8 | const useCommonStore = defineStore('common', () => {
9 | const fileName = ref('')
10 | const saved = ref(true)
11 | const isMaximize = ref(false)
12 | const config = ref(configData)
13 | const searchBarVisible = ref(false)
14 | const editorSearchBarVisible = ref(false)
15 | const hasNewVersion = ref(false)
16 | const isAlwaysOnTop = ref(false)
17 | const recentList = ref(recentListData)
18 | return { fileName, saved, isMaximize, config, searchBarVisible, hasNewVersion, isAlwaysOnTop, recentList, editorSearchBarVisible }
19 | })
20 |
21 | export { useCommonStore }
22 |
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/util/channel/channelUtil.js:
--------------------------------------------------------------------------------
1 | export default {
2 | send: async (data) => {
3 | return await window.node.sendToMain(data)
4 | },
5 | getWebFilePath: file => window.node.getWebFilePath(file),
6 | }
7 |
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/util/channel/eventEmit.js:
--------------------------------------------------------------------------------
1 | class EventEmit {
2 | #list = []
3 |
4 | on(event, callback) {
5 | if (!event) {
6 | throw new Error('event is required')
7 | }
8 | if (!callback) {
9 | throw new Error('callback is required')
10 | }
11 | this.#list.push({
12 | event,
13 | callback,
14 | })
15 | }
16 |
17 | remove(event, callback) {
18 | this.#list = this.#list.filter(item => !(item.event === event && item.callback === callback))
19 | }
20 |
21 | publish(event, obj) {
22 | this.#list.forEach((item) => {
23 | if (item.event === event) {
24 | try {
25 | item.callback(obj)
26 | }
27 | catch (e) {
28 | console.error(e)
29 | }
30 | }
31 | })
32 | }
33 | }
34 |
35 | const eventEmit = new EventEmit()
36 |
37 | export default eventEmit
38 |
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/util/channel/eventUtil.js:
--------------------------------------------------------------------------------
1 | import { useCommonStore } from '@/stores/counter.js'
2 | import channelUtil from '@/util/channel/channelUtil.js'
3 | import eventEmit from '@/util/channel/eventEmit.js'
4 | import { ExclamationCircleOutlined } from '@ant-design/icons-vue'
5 | import { Button, message, Modal } from 'ant-design-vue'
6 | import { createVNode, h } from 'vue'
7 |
8 | export default {
9 | link: () => {
10 | window.node.sendToShow((obj) => {
11 | eventEmit.publish(obj.event, obj.data)
12 | })
13 | },
14 | on: () => {
15 | eventEmit.on('always-on-top-changed', (isAlwaysOnTop) => {
16 | useCommonStore().isAlwaysOnTop = isAlwaysOnTop
17 | })
18 | eventEmit.on('file-is-saved', (data) => {
19 | useCommonStore().saved = data
20 | })
21 | eventEmit.on('update-recent', (data) => {
22 | useCommonStore().$patch({
23 | recentList: data,
24 | })
25 | })
26 | eventEmit.on('save-success', (data) => {
27 | window.document.title = data.fileName === 'Unnamed' ? 'wj-markdown-editor' : data.fileName
28 | useCommonStore().$patch({
29 | fileName: data.fileName,
30 | saved: data.saved,
31 | })
32 | })
33 | eventEmit.on('has-new-version', (flag) => {
34 | useCommonStore().hasNewVersion = flag
35 | })
36 | eventEmit.on('message', (data) => {
37 | message[data.type]({
38 | content: data.content,
39 | key: data.key,
40 | duration: data.duration,
41 | })
42 | })
43 | eventEmit.on('window-size', (data) => {
44 | useCommonStore().isMaximize = data.isMaximize
45 | })
46 | eventEmit.on('update-config', (data) => {
47 | useCommonStore().$patch({
48 | config: data,
49 | })
50 | })
51 | eventEmit.on('unsaved', () => {
52 | const modal = Modal.confirm({
53 | centered: true,
54 | title: '提示',
55 | icon: createVNode(ExclamationCircleOutlined),
56 | content: `${useCommonStore().fileName}未保存,是否直接退出?`,
57 | footer: h('div', { style: { width: '100%', display: 'flex', justifyContent: 'right', gap: '10px', paddingTop: '10px' } }, [
58 | h(Button, { onClick: () => modal.destroy() }, () => '取消'),
59 | h(Button, {
60 | type: 'primary',
61 | danger: true,
62 | onClick: () => {
63 | channelUtil.send({ event: 'force-close' }).then(() => {})
64 | modal.destroy() },
65 | }, () => '直接退出'),
66 | ]),
67 | })
68 | })
69 | },
70 | }
71 |
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/util/constant.js:
--------------------------------------------------------------------------------
1 | const codeThemeList = [
2 | 'a11y-dark',
3 | 'a11y-light',
4 | 'agate',
5 | 'an-old-hope',
6 | 'androidstudio',
7 | 'arduino-light',
8 | 'arta',
9 | 'ascetic',
10 | 'atom-one-dark-reasonable',
11 | 'atom-one-dark',
12 | 'atom-one-light',
13 | 'brown-paper',
14 | 'codepen-embed',
15 | 'color-brewer',
16 | 'dark',
17 | 'default',
18 | 'devibeans',
19 | 'docco',
20 | 'far',
21 | 'felipec',
22 | 'foundation',
23 | 'github-dark-dimmed',
24 | 'github-dark',
25 | 'github',
26 | 'gml',
27 | 'googlecode',
28 | 'gradient-dark',
29 | 'gradient-light',
30 | 'grayscale',
31 | 'hybrid',
32 | 'idea',
33 | 'intellij-light',
34 | 'ir-black',
35 | 'isbl-editor-dark',
36 | 'isbl-editor-light',
37 | 'kimbie-dark',
38 | 'kimbie-light',
39 | 'lightfair',
40 | 'lioshi',
41 | 'magula',
42 | 'mono-blue',
43 | 'monokai-sublime',
44 | 'monokai',
45 | 'night-owl',
46 | 'nnfx-dark',
47 | 'nnfx-light',
48 | 'nord',
49 | 'obsidian',
50 | 'panda-syntax-dark',
51 | 'panda-syntax-light',
52 | 'paraiso-dark',
53 | 'paraiso-light',
54 | 'pojoaque',
55 | 'purebasic',
56 | 'qtcreator-dark',
57 | 'qtcreator-light',
58 | 'rainbow',
59 | 'routeros',
60 | 'school-book',
61 | 'shades-of-purple',
62 | 'srcery',
63 | 'stackoverflow-dark',
64 | 'stackoverflow-light',
65 | 'sunburst',
66 | 'tokyo-night-dark',
67 | 'tokyo-night-light',
68 | 'tomorrow-night-blue',
69 | 'tomorrow-night-bright',
70 | 'vs',
71 | 'vs2015',
72 | 'xcode',
73 | 'xt256',
74 | ]
75 |
76 | const previewThemeList = ['github', 'juejin', 'smart-blue', 'vuepress', 'mk-cute', 'cyanosis', 'scrolls', 'markdown-here']
77 |
78 | // 禁止使用搜索功能的路由名称
79 | const notAllowedSearchRouteNameList = ['about', 'export']
80 |
81 | export default {
82 | codeThemeList,
83 | previewThemeList,
84 | notAllowedSearchRouteNameList,
85 | }
86 |
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/util/editor/completion/alertCompletion.js:
--------------------------------------------------------------------------------
1 | function checkLineStart(context) {
2 | const word = context.matchBefore(/.*/)
3 | if (!word) {
4 | return false
5 | }
6 | const line = context.state.doc.lineAt(context.pos)
7 | if (!line) {
8 | return false
9 | }
10 | const lineText = line.text
11 | if (!lineText) {
12 | return false
13 | }
14 | return word.text === lineText
15 | }
16 |
17 | const listLanguages = ['Note', 'Tip', 'Important', 'Warning', 'Caution']
18 | function alertCompletion(context) {
19 | if (checkLineStart(context) === false) {
20 | return []
21 | }
22 | const word = context.matchBefore(/^>\x20*/)
23 | if (word) {
24 | const suggestions = []
25 | const match = word.text.match(/^>(\x20*)/)
26 | const offset = match[0] ? match[0].length : 0
27 | listLanguages.forEach((item) => {
28 | suggestions.push({
29 | label: `${item}`,
30 | type: 'text',
31 | section: '提示',
32 | apply: (view, completion, from, to) => {
33 | const insert = `> [!${item}]\n> `
34 | view.dispatch({
35 | changes: { from: to - offset, to, insert },
36 | selection: { anchor: to - offset + 8 + item.length },
37 | })
38 | },
39 | })
40 | })
41 | return suggestions
42 | }
43 | return []
44 | }
45 |
46 | export default alertCompletion
47 |
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/util/editor/completion/codeBlockCompletion.js:
--------------------------------------------------------------------------------
1 | import hljs from 'highlight.js'
2 |
3 | const listLanguages = hljs.listLanguages().concat(['vue', 'mermaid'])
4 | function codeBlockCompletion(context) {
5 | const word = context.matchBefore(/^`{1,3}[a-z0-9]*/i)
6 | if (word) {
7 | const suggestions = []
8 | const match = word.text.match(/^`(`{0,2})([a-z0-9]*)/i)
9 | const offset = match[1] ? match[1].length + 1 : 1
10 | const list = match[2] ? listLanguages.filter(item => item.startsWith(match[2])) : listLanguages
11 | list.forEach((item) => {
12 | suggestions.push({
13 | label: `${item}`,
14 | type: 'text',
15 | section: '代码块',
16 | apply: (view, completion, from, to) => {
17 | const insert = `\`\`\`${item}\n\n\`\`\``
18 | view.dispatch({
19 | changes: { from: from - offset, to, insert },
20 | selection: { anchor: from - offset + 4 + item.length },
21 | })
22 | },
23 | })
24 | suggestions.push({
25 | label: `${item}`,
26 | detail: '非包围',
27 | type: 'text',
28 | section: '代码块',
29 | apply: (view, completion, from, to) => {
30 | const insert = `\`\`\`${item}`
31 | view.dispatch({
32 | changes: { from: from - offset, to, insert },
33 | selection: { anchor: from - offset + 4 + item.length },
34 | })
35 | },
36 | })
37 | })
38 | return suggestions
39 | }
40 | return []
41 | }
42 |
43 | export default codeBlockCompletion
44 |
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/util/editor/completion/completionHandler.js:
--------------------------------------------------------------------------------
1 | import alertCompletion from '@/util/editor/completion/alertCompletion.js'
2 | import codeBlockCompletion from '@/util/editor/completion/codeBlockCompletion.js'
3 | import containerCompletion from '@/util/editor/completion/containerCompletion.js'
4 | import dateCompletion from '@/util/editor/completion/dateCompletion.js'
5 | import headingCompletion from '@/util/editor/completion/headingCompletion.js'
6 | import tableCompletion from '@/util/editor/completion/tableCompletion.js'
7 |
8 | const handlerList = [tableCompletion, codeBlockCompletion, headingCompletion, dateCompletion, containerCompletion, alertCompletion]
9 |
10 | function autocompletionHandler(context) {
11 | const word = context.matchBefore(/\w*/)
12 | const suggestions = []
13 | handlerList.forEach((handler) => {
14 | const itemSuggestions = handler(context)
15 | if (itemSuggestions && Array.isArray(itemSuggestions) && itemSuggestions.length > 0) {
16 | suggestions.push(...itemSuggestions)
17 | }
18 | })
19 | return {
20 | from: word.from,
21 | to: word.to,
22 | options: suggestions,
23 | validFor: undefined,
24 | filter: false,
25 | }
26 | }
27 |
28 | export default autocompletionHandler
29 |
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/util/editor/completion/containerCompletion.js:
--------------------------------------------------------------------------------
1 | function checkLineStart(context) {
2 | const word = context.matchBefore(/.*/)
3 | if (!word) {
4 | return false
5 | }
6 | const line = context.state.doc.lineAt(context.pos)
7 | if (!line) {
8 | return false
9 | }
10 | const lineText = line.text
11 | if (!lineText) {
12 | return false
13 | }
14 | return word.text === lineText
15 | }
16 |
17 | const listLanguages = ['Info', 'Tip', 'Important', 'Warning', 'Danger', 'Detail']
18 | function containerCompletion(context) {
19 | if (checkLineStart(context) === false) {
20 | return []
21 | }
22 | const word = context.matchBefore(/^:{1,3}[\x20a-z]*/)
23 | if (word) {
24 | const suggestions = []
25 | const match = word.text.match(/^:(:{0,2})([\x20a-z]*)/i)
26 | const offset = match[0] ? match[0].length : 0
27 | const list = match[2] ? listLanguages.filter(item => item.toLowerCase().startsWith(match[2].replaceAll(' ', '').toLowerCase())) : listLanguages
28 | list.forEach((item) => {
29 | suggestions.push({
30 | label: `${item}`,
31 | type: 'text',
32 | section: '容器',
33 | apply: (view, completion, from, to) => {
34 | const insert = `::: ${item}\n\n:::`
35 | view.dispatch({
36 | changes: { from: to - offset, to, insert },
37 | selection: { anchor: to - offset + 5 + item.length },
38 | })
39 | },
40 | })
41 | suggestions.push({
42 | label: `${item}`,
43 | detail: '非包围',
44 | type: 'text',
45 | section: '容器',
46 | apply: (view, completion, from, to) => {
47 | const insert = `::: ${item}`
48 | view.dispatch({
49 | changes: { from: to - offset, to, insert },
50 | })
51 | },
52 | })
53 | })
54 | return suggestions
55 | }
56 | return []
57 | }
58 |
59 | export default containerCompletion
60 |
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/util/editor/completion/dateCompletion.js:
--------------------------------------------------------------------------------
1 | import dayjs from 'dayjs'
2 |
3 | function dateCompletion(context) {
4 | const word = context.matchBefore(/\w*/)
5 | if (word && word.text) {
6 | const lowerText = word.text.toLowerCase()
7 | const suggestions = []
8 | if ('date'.startsWith(lowerText)) {
9 | suggestions.push({
10 | label: 'date',
11 | type: 'text',
12 | detail: '日期',
13 | section: '时间',
14 | apply: (view, completion, from, to) => {
15 | const insert = dayjs().format('YYYY-MM-DD')
16 | view.dispatch({
17 | changes: { from, to, insert },
18 | })
19 | },
20 | })
21 | }
22 | if ('datetime'.startsWith(lowerText)) {
23 | suggestions.push({
24 | label: 'datetime',
25 | type: 'text',
26 | detail: '时间',
27 | section: '时间',
28 | apply: (view, completion, from, to) => {
29 | const insert = dayjs().format('YYYY-MM-DD HH:mm:ss')
30 | view.dispatch({
31 | changes: { from, to, insert },
32 | })
33 | },
34 | })
35 | }
36 | return suggestions
37 | }
38 | return []
39 | }
40 |
41 | export default dateCompletion
42 |
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/util/editor/completion/headingCompletion.js:
--------------------------------------------------------------------------------
1 | function headingCompletion(context) {
2 | const word = context.matchBefore(/^#{1,5}/)
3 | if (word) {
4 | const text = word.text
5 | const suggestions = []
6 | for (let i = text.length; i <= 6; i++) {
7 | suggestions.push({
8 | label: `${'#'.repeat(i)}`,
9 | type: 'text',
10 | section: '标题',
11 | apply: (view, completion, from, to) => {
12 | const insert = `${'#'.repeat(i)} `
13 | view.dispatch({
14 | changes: { from: from - text.length, to, insert },
15 | })
16 | },
17 | })
18 | }
19 | return suggestions
20 | }
21 | return []
22 | }
23 |
24 | export default headingCompletion
25 |
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/util/editor/completion/tableCompletion.js:
--------------------------------------------------------------------------------
1 | import editorUtil from '@/util/editor/editorUtil.js'
2 |
3 | function checkLineStart(context) {
4 | const word = context.matchBefore(/.*/)
5 | if (!word) {
6 | return false
7 | }
8 | const line = context.state.doc.lineAt(context.pos)
9 | if (!line) {
10 | return false
11 | }
12 | const lineText = line.text
13 | if (!lineText) {
14 | return false
15 | }
16 | return word.text === lineText
17 | }
18 | function tableCompletion(context) {
19 | if (checkLineStart(context) === false) {
20 | return []
21 | }
22 | const word = context.matchBefore(/^([1-9]\d*)(x)([1-9]\d*)?$/i)
23 | if (!word || word.text === '') {
24 | return []
25 | }
26 | // 表格
27 | const text = word.text
28 |
29 | const suggestions = []
30 | // 表格
31 | const match = text.match(/^([1-9]\d*)(x)([1-9]\d*)?$/i)
32 | if (match) {
33 | const rows = Number(match[1])
34 | const symbol = match[2]
35 | const cols = match[3] ? Number(match[3]) : 1
36 | for (let i = 0; i < 5; i++) {
37 | suggestions.push({
38 | label: `${rows}${symbol}${cols + i}`,
39 | type: 'text',
40 | section: '表格',
41 | apply: (view, completion, from, to) => {
42 | editorUtil.insertTable(view, rows, cols + i, from, to)
43 | },
44 | })
45 | }
46 | }
47 | return suggestions
48 | }
49 |
50 | export default tableCompletion
51 |
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/util/editor/editorExtensionUtil.js:
--------------------------------------------------------------------------------
1 | import completionHandler from '@/util/editor/completion/completionHandler.js'
2 | import {
3 | autocompletion,
4 | closeBrackets,
5 | } from '@codemirror/autocomplete'
6 | import { history } from '@codemirror/commands'
7 | import { markdown } from '@codemirror/lang-markdown'
8 | import {
9 | bracketMatching,
10 | defaultHighlightStyle,
11 | indentOnInput,
12 | syntaxHighlighting,
13 | } from '@codemirror/language'
14 | import { languages } from '@codemirror/language-data'
15 | import { highlightSelectionMatches, search } from '@codemirror/search'
16 | import { EditorState } from '@codemirror/state'
17 | import {
18 | crosshairCursor,
19 | drawSelection,
20 | dropCursor,
21 | highlightActiveLine,
22 | highlightSpecialChars,
23 | lineNumbers,
24 | rectangularSelection,
25 | } from '@codemirror/view'
26 | import { EditorView } from 'codemirror'
27 |
28 | /**
29 | * 固定的插件
30 | */
31 | const fixedExtension = [
32 | history(),
33 | drawSelection(),
34 | dropCursor(),
35 | indentOnInput(),
36 | search(),
37 | highlightSelectionMatches(),
38 | markdown({ codeLanguages: languages }),
39 | EditorView.theme({
40 | '&': {
41 | height: '100%',
42 | fontSize: '1rem',
43 | },
44 | '.cm-line': {
45 | fontFamily: 'source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace', // 字体
46 | },
47 | '.cm-content': {
48 | lineHeight: '1.5',
49 | },
50 | '.cm-gutterElement': {
51 | userSelect: 'none',
52 | },
53 | '.cm-scroller': {
54 | overflowY: 'scroll',
55 | },
56 | // 自定义搜索框依赖于原生的搜索框组件 设置原生搜索框不显示 若height不设置为0,会导致切换上一个或者下一个匹配项时,高度计算不正确,不能保证匹配项在可视区域
57 | '.cm-panels:has(.cm-search.cm-panel)': {
58 | height: 0,
59 | overflow: 'hidden',
60 | },
61 | '*::-webkit-scrollbar': {
62 | display: 'revert',
63 | width: '6px',
64 | height: '6px',
65 | },
66 | /* 滚动条里面轨道 */
67 | '*::-webkit-scrollbar-track': {
68 | backgroundColor: 'var(--wj-markdown-scroll-bg)',
69 | },
70 | /* 滚动条的样式 */
71 | '*::-webkit-scrollbar-thumb': {
72 | borderRadius: '4px',
73 | backgroundColor: '#0000004d',
74 | },
75 | '*::-webkit-scrollbar-thumb:hover': {
76 | backgroundColor: '#00000059',
77 | },
78 | '*::-webkit-scrollbar-thumb:active': {
79 | backgroundColor: '#00000061',
80 | },
81 | }),
82 | autocompletion({
83 | override: [
84 | completionHandler,
85 | ],
86 | }),
87 | ]
88 |
89 | const dynamicExtension = [
90 | syntaxHighlighting(defaultHighlightStyle, { fallback: true }),
91 | bracketMatching(),
92 | closeBrackets(),
93 | EditorState.allowMultipleSelections.of(true),
94 | highlightSpecialChars(),
95 | rectangularSelection(),
96 | crosshairCursor(),
97 | highlightActiveLine(),
98 | lineNumbers(),
99 | EditorView.lineWrapping,
100 | ]
101 |
102 | const editorExtensionUtil = {
103 | getDefault: () => {
104 | return [
105 | ...fixedExtension,
106 | ...dynamicExtension,
107 | ]
108 | },
109 | }
110 |
111 | export default editorExtensionUtil
112 |
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/util/markdown-it/markdownItCodeBlock.js:
--------------------------------------------------------------------------------
1 | import hljs from 'highlight.js'
2 | /**
3 | * 若字符串以```结尾,则删除最后3个字符
4 | */
5 | function removeTripleBackticks(inputString) {
6 | return inputString.endsWith('```') ? inputString.slice(0, -3) : inputString
7 | }
8 |
9 | function parseAttrs(attrs) {
10 | const value = []
11 | if (attrs && attrs.length > 0) {
12 | attrs.forEach((item) => {
13 | value.push(`${item[0]}="${item[1]}"`)
14 | })
15 | }
16 | return value.join(' ')
17 | }
18 |
19 | export default function codeBlockPlugin(md) {
20 | const defaultRenderer = md.renderer.rules.fence.bind(md.renderer.rules)
21 | md.renderer.rules.fence = (tokens, idx, options, env, slf) => {
22 | const token = tokens[idx]
23 | const code = token.content.trim()
24 | const info = token.info ? md.utils.unescapeAll(token.info).trim() : ''
25 |
26 | if (info) {
27 | const lang = info.split(/\s+/g)[0]
28 | if (lang === 'mermaid') {
29 | const content = removeTripleBackticks(code)
30 | return `\n${content}\n
\n`
31 | } else {
32 | try {
33 | return `${lang && hljs.getLanguage(lang) ? hljs.highlight(code, { language: lang, ignoreIllegals: true }).value : hljs.highlightAuto(code).value}
`
34 | } catch (e) {
35 | console.error(e)
36 | }
37 | return `${md.utils.escapeHtml(code)}
`
38 | }
39 | }
40 | return defaultRenderer(tokens, idx, options, env, slf)
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/util/markdown-it/markdownItContainerUtil.js:
--------------------------------------------------------------------------------
1 | import commonUtil from '@/util/commonUtil.js'
2 |
3 | function helper(md, type, marker) {
4 | // 忽略大小写
5 | const reg = new RegExp(`^${type}\\s+(\\S*)$`, 'i')
6 | const regNotTitle = new RegExp(`^${type}$`, 'i')
7 | return {
8 | type,
9 | marker,
10 | validate(params) {
11 | return params.trim().match(reg) || regNotTitle.test(params.trim())
12 | },
13 | render(tokens, idx) {
14 | if (type.toLowerCase() === 'details') {
15 | if (tokens[idx].nesting === 1) {
16 | const title = regNotTitle.test(tokens[idx].info.trim()) ? commonUtil.upperCaseFirst(type) : md.utils.escapeHtml(tokens[idx].info.trim().match(reg)[1])
17 | return `
18 |
19 |
${title}
\n
20 | \n`
21 | } else {
22 | return '
\n'
23 | }
24 | }
25 | // 始终显示标题
26 | if (tokens[idx].nesting === 1) {
27 | const title = regNotTitle.test(tokens[idx].info.trim()) ? commonUtil.upperCaseFirst(type) : md.utils.escapeHtml(tokens[idx].info.trim().match(reg)[1])
28 | return `
29 |
30 |
${title}
31 |
\n`
32 | } else {
33 | return '
\n'
34 | }
35 | // 没有标题
36 | // if (regNotTitle.test(tokens[idx].info.trim())) {
37 | // if (tokens[idx].nesting === 1) {
38 | // // opening tag
39 | // return `
40 | //
41 | //
\n`
42 | // } else {
43 | // // closing tag
44 | // return '
\n'
45 | // }
46 | // } else {
47 | // // 有标题
48 | // const m = tokens[idx].info.trim().match(reg)
49 | // if (tokens[idx].nesting === 1) {
50 | // // opening tag
51 | // return `
52 | //
53 | //
${md.utils.escapeHtml(m[1])}
54 | //
\n`
55 | // } else {
56 | // // closing tag
57 | // return '
\n'
58 | // }
59 | // }
60 | },
61 | }
62 | }
63 |
64 | export default {
65 | createContainerPlugin: (md, typeList) => {
66 | const list = []
67 | for (const type of typeList) {
68 | list.push(helper(md, type, ':'))
69 | }
70 | return list
71 | },
72 | }
73 |
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/util/markdown-it/markdownItTextColor.js:
--------------------------------------------------------------------------------
1 | export default function (md) {
2 | md.inline.ruler.push('text_color', (state, silent) => {
3 | const start = state.pos
4 |
5 | if (state.src.charCodeAt(start) !== 0x7B)
6 | return false
7 | const match = state.src.slice(start).match(/^\{([^}]+)\}\(([^)]+)\)/)
8 | if (!match)
9 | return false
10 |
11 | if (!silent) {
12 | const token = state.push('html_inline', '', 0)
13 | const color = match[1]
14 | const text = match[2]
15 | if (color.includes('gradient')) {
16 | token.content = `
${md.renderInline(text)}`
17 | } else {
18 | token.content = `
${md.renderInline(text)}`
19 | }
20 | }
21 |
22 | state.pos += match[0].length
23 | return true
24 | })
25 | }
26 |
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/views/EditorView.vue:
--------------------------------------------------------------------------------
1 |
55 |
56 |
57 |
58 |
59 |
60 |
62 |
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/views/ExportView.vue:
--------------------------------------------------------------------------------
1 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
77 |
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/views/GuideView.vue:
--------------------------------------------------------------------------------
1 |
30 |
31 |
32 |
33 |
34 |
37 |
40 |
41 |
54 |
55 |
56 |
57 |
60 |
--------------------------------------------------------------------------------
/wj-markdown-editor-web/src/views/HomeView.vue:
--------------------------------------------------------------------------------
1 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
--------------------------------------------------------------------------------
/wj-markdown-editor-web/uno.config.js:
--------------------------------------------------------------------------------
1 | import { defineConfig, presetIcons, presetUno } from 'unocss'
2 |
3 | export default defineConfig({
4 | presets: [
5 | presetUno(),
6 | presetIcons({
7 | extraProperties: {
8 | 'display': 'inline-block',
9 | 'vertical-align': 'middle',
10 | },
11 | collections: {
12 | tabler: () => import('@iconify-json/tabler/icons.json').then(i => i.default),
13 | },
14 | }),
15 | ],
16 | theme: {
17 | // ...
18 | colors: {
19 | text: {
20 | primary: 'var(--wj-markdown-text-primary)',
21 | secondary: 'var(--wj-markdown-text-secondary)',
22 | },
23 | bg: {
24 | primary: 'var(--wj-markdown-bg-primary)',
25 | hover: 'var(--wj-markdown-bg-hover)',
26 | },
27 | border: {
28 | primary: 'var(--wj-markdown-border-primary)',
29 | },
30 | },
31 | },
32 | })
33 |
--------------------------------------------------------------------------------
/wj-markdown-editor-web/vite.config.js:
--------------------------------------------------------------------------------
1 | import { fileURLToPath, URL } from 'node:url'
2 | import vue from '@vitejs/plugin-vue'
3 | import postCssPxToRem from 'postcss-pxtorem'
4 | import UnoCSS from 'unocss/vite'
5 |
6 | import { defineConfig } from 'vite'
7 |
8 | // https://vitejs.dev/config/
9 | export default defineConfig({
10 | base: './',
11 | plugins: [
12 | vue(),
13 | UnoCSS(),
14 | ],
15 | resolve: {
16 | alias: {
17 | '@': fileURLToPath(new URL('./src', import.meta.url)),
18 | },
19 | },
20 | build: {
21 | outDir: '../wj-markdown-editor-electron/web-dist',
22 | emptyOutDir: true,
23 | target: 'esnext',
24 | },
25 | css: {
26 | postcss: {
27 | plugins: [
28 | postCssPxToRem({
29 | rootValue: 16,
30 | propList: ['*'],
31 | selectorBlackList: ['grid-rows-', 'grid-cols', 'wj-scrollbar'],
32 | }),
33 | ],
34 | },
35 | },
36 | server: {
37 | port: 8080,
38 | },
39 | })
40 |
--------------------------------------------------------------------------------