From 2aacb6f71f3392846d83fc2893f9c433fd6a4098 Mon Sep 17 00:00:00 2001
From: jaywcjlove <398188662@qq.com>
Date: Wed, 7 Dec 2022 00:27:25 +0800
Subject: [PATCH] feat(github): add githubDarkInit/githubLightInit method to
github theme.
---
themes/github/README.md | 24 ++++++++
themes/github/src/index.ts | 122 +++++++++++++++++++++----------------
2 files changed, 92 insertions(+), 54 deletions(-)
diff --git a/themes/github/README.md b/themes/github/README.md
index 10d78cc69..1f6af7418 100644
--- a/themes/github/README.md
+++ b/themes/github/README.md
@@ -20,6 +20,30 @@
npm install @uiw/codemirror-theme-github --save
```
+```jsx
+import { githubLight, githubLightInit, githubDark, githubDarkInit } from '@uiw/codemirror-theme-github';
+
+
+
+```
+
+## API
+
+```tsx
+import { CreateThemeOptions } from '@uiw/codemirror-themes';
+export declare const githubLightInit: (options?: CreateThemeOptions) => import('@codemirror/state').Extension;
+export declare const githubLight: import('@codemirror/state').Extension;
+export declare const githubDarkInit: (options?: CreateThemeOptions) => import('@codemirror/state').Extension;
+export declare const githubDark: import('@codemirror/state').Extension;
+```
+
## Usage
```jsx
diff --git a/themes/github/src/index.ts b/themes/github/src/index.ts
index e40df4f2b..501f1f26f 100644
--- a/themes/github/src/index.ts
+++ b/themes/github/src/index.ts
@@ -2,59 +2,73 @@
* @name github
*/
import { tags as t } from '@lezer/highlight';
-import { createTheme } from '@uiw/codemirror-themes';
+import { createTheme, CreateThemeOptions } from '@uiw/codemirror-themes';
-export const githubLight = createTheme({
- theme: 'light',
- settings: {
- background: '#fff',
- foreground: '#24292e',
- selection: '#BBDFFF',
- selectionMatch: '#BBDFFF',
- gutterBackground: '#fff',
- gutterForeground: '#6e7781',
- },
- styles: [
- { tag: [t.comment, t.bracket], color: '#6a737d' },
- { tag: [t.className, t.propertyName], color: '#6f42c1' },
- { tag: [t.variableName, t.attributeName, t.number, t.operator], color: '#005cc5' },
- { tag: [t.keyword, t.typeName, t.typeOperator, t.typeName], color: '#d73a49' },
- { tag: [t.string, t.meta, t.regexp], color: '#032f62' },
- { tag: [t.name, t.quote], color: '#22863a' },
- { tag: [t.heading], color: '#24292e', fontWeight: 'bold' },
- { tag: [t.emphasis], color: '#24292e', fontStyle: 'italic' },
- { tag: [t.deleted], color: '#b31d28', backgroundColor: 'ffeef0' },
- { tag: [t.atom, t.bool, t.special(t.variableName)], color: '#e36209' },
- { tag: [t.url, t.escape, t.regexp, t.link], color: '#032f62' },
- { tag: t.link, textDecoration: 'underline' },
- { tag: t.strikethrough, textDecoration: 'line-through' },
- { tag: t.invalid, color: '#cb2431' },
- ],
-});
+export const githubLightInit = (options?: CreateThemeOptions) => {
+ const { theme = 'light', settings = {}, styles = [] } = options || {};
+ return createTheme({
+ theme: theme,
+ settings: {
+ background: '#fff',
+ foreground: '#24292e',
+ selection: '#BBDFFF',
+ selectionMatch: '#BBDFFF',
+ gutterBackground: '#fff',
+ gutterForeground: '#6e7781',
+ ...settings,
+ },
+ styles: [
+ { tag: [t.comment, t.bracket], color: '#6a737d' },
+ { tag: [t.className, t.propertyName], color: '#6f42c1' },
+ { tag: [t.variableName, t.attributeName, t.number, t.operator], color: '#005cc5' },
+ { tag: [t.keyword, t.typeName, t.typeOperator, t.typeName], color: '#d73a49' },
+ { tag: [t.string, t.meta, t.regexp], color: '#032f62' },
+ { tag: [t.name, t.quote], color: '#22863a' },
+ { tag: [t.heading], color: '#24292e', fontWeight: 'bold' },
+ { tag: [t.emphasis], color: '#24292e', fontStyle: 'italic' },
+ { tag: [t.deleted], color: '#b31d28', backgroundColor: 'ffeef0' },
+ { tag: [t.atom, t.bool, t.special(t.variableName)], color: '#e36209' },
+ { tag: [t.url, t.escape, t.regexp, t.link], color: '#032f62' },
+ { tag: t.link, textDecoration: 'underline' },
+ { tag: t.strikethrough, textDecoration: 'line-through' },
+ { tag: t.invalid, color: '#cb2431' },
+ ...styles,
+ ],
+ });
+};
-export const githubDark = createTheme({
- theme: 'dark',
- settings: {
- background: '#0d1117',
- foreground: '#c9d1d9',
- caret: '#c9d1d9',
- selection: '#003d73',
- selectionMatch: '#003d73',
- lineHighlight: '#36334280',
- },
- styles: [
- { tag: [t.comment, t.bracket], color: '#8b949e' },
- { tag: [t.className, t.propertyName], color: '#d2a8ff' },
- { tag: [t.variableName, t.attributeName, t.number, t.operator], color: '#79c0ff' },
- { tag: [t.keyword, t.typeName, t.typeOperator, t.typeName], color: '#ff7b72' },
- { tag: [t.string, t.meta, t.regexp], color: '#a5d6ff' },
- { tag: [t.name, t.quote], color: '#7ee787' },
- { tag: [t.heading], color: '#d2a8ff', fontWeight: 'bold' },
- { tag: [t.emphasis], color: '#d2a8ff', fontStyle: 'italic' },
- { tag: [t.deleted], color: '#ffdcd7', backgroundColor: 'ffeef0' },
- { tag: [t.atom, t.bool, t.special(t.variableName)], color: '#ffab70' },
- { tag: t.link, textDecoration: 'underline' },
- { tag: t.strikethrough, textDecoration: 'line-through' },
- { tag: t.invalid, color: '#f97583' },
- ],
-});
+export const githubLight = githubLightInit();
+
+export const githubDarkInit = (options?: CreateThemeOptions) => {
+ const { theme = 'dark', settings = {}, styles = [] } = options || {};
+ return createTheme({
+ theme: theme,
+ settings: {
+ background: '#0d1117',
+ foreground: '#c9d1d9',
+ caret: '#c9d1d9',
+ selection: '#003d73',
+ selectionMatch: '#003d73',
+ lineHighlight: '#36334280',
+ ...settings,
+ },
+ styles: [
+ { tag: [t.comment, t.bracket], color: '#8b949e' },
+ { tag: [t.className, t.propertyName], color: '#d2a8ff' },
+ { tag: [t.variableName, t.attributeName, t.number, t.operator], color: '#79c0ff' },
+ { tag: [t.keyword, t.typeName, t.typeOperator, t.typeName], color: '#ff7b72' },
+ { tag: [t.string, t.meta, t.regexp], color: '#a5d6ff' },
+ { tag: [t.name, t.quote], color: '#7ee787' },
+ { tag: [t.heading], color: '#d2a8ff', fontWeight: 'bold' },
+ { tag: [t.emphasis], color: '#d2a8ff', fontStyle: 'italic' },
+ { tag: [t.deleted], color: '#ffdcd7', backgroundColor: 'ffeef0' },
+ { tag: [t.atom, t.bool, t.special(t.variableName)], color: '#ffab70' },
+ { tag: t.link, textDecoration: 'underline' },
+ { tag: t.strikethrough, textDecoration: 'line-through' },
+ { tag: t.invalid, color: '#f97583' },
+ ...styles,
+ ],
+ });
+};
+
+export const githubDark = githubDarkInit();