@uiw/codemirror-themes 4.10.2 → 4.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -141,11 +141,11 @@ export default App;
141
141
  **duotone**
142
142
 
143
143
  <a href="https://uiwjs.github.io/react-codemirror/#/theme/data/duotone/dark">
144
- <img width="436" alt="codemirror-theme-duotone" src="https://user-images.githubusercontent.com/1680273/176572959-adfc1284-4c70-48df-8aeb-9a47ff76b2f2.png">
144
+ <img width="436" alt="codemirror-theme-duotone dark" src="https://user-images.githubusercontent.com/1680273/176572959-adfc1284-4c70-48df-8aeb-9a47ff76b2f2.png">
145
145
  </a>
146
146
 
147
147
  <a href="https://uiwjs.github.io/react-codemirror/#/theme/data/duotone/light">
148
- <img width="436" alt="codemirror-theme-duotone" src="https://user-images.githubusercontent.com/1680273/176573139-5c22ed62-6000-40da-b080-59c83e6181e2.png">
148
+ <img width="436" alt="codemirror-theme-duotone light" src="https://user-images.githubusercontent.com/1680273/176573139-5c22ed62-6000-40da-b080-59c83e6181e2.png">
149
149
  </a>
150
150
 
151
151
  **eclipse**
@@ -154,6 +154,16 @@ export default App;
154
154
  <img width="436" alt="codemirror-theme-eclipse" src="https://user-images.githubusercontent.com/1680273/176572785-4f56f11a-018b-4f86-9088-e6f71f745cfb.png">
155
155
  </a>
156
156
 
157
+ **github**
158
+
159
+ <a href="https://uiwjs.github.io/react-codemirror/#/theme/data/github/dark">
160
+ <img width="436" alt="codemirror-theme-github dark" src="https://user-images.githubusercontent.com/1680273/177048035-644af599-aaf1-41d8-86ea-9ea8c3a1a0c5.png">
161
+ </a>
162
+
163
+ <a href="https://uiwjs.github.io/react-codemirror/#/theme/data/github/light">
164
+ <img width="436" alt="codemirror-theme-github light" src="https://user-images.githubusercontent.com/1680273/177048005-32794f23-8bff-4059-babf-21316d886e65.png">
165
+ </a>
166
+
157
167
  **okaidia**
158
168
 
159
169
  <a href="https://uiwjs.github.io/react-codemirror/#/theme/data/okaidia">
@@ -166,6 +176,22 @@ export default App;
166
176
  <img width="436" alt="codemirror-theme-sublime" src="https://user-images.githubusercontent.com/1680273/176572314-cc296f81-0763-485c-8fa2-7d61b24ad09b.png">
167
177
  </a>
168
178
 
179
+ **xcode**
180
+
181
+ <a href="https://uiwjs.github.io/react-codemirror/#/theme/data/xcode/dark">
182
+ <img width="436" alt="codemirror-theme-xcode dark" src="https://user-images.githubusercontent.com/1680273/177074703-4c5c6be0-e287-45ac-b6cc-db1568276e73.png">
183
+ </a>
184
+
185
+ <a href="https://uiwjs.github.io/react-codemirror/#/theme/data/xcode/light">
186
+ <img width="436" alt="codemirror-theme-xcode light" src="https://user-images.githubusercontent.com/1680273/177077462-2046096f-a31c-4dee-b9bb-2fcaaa87a844.png">
187
+ </a>
188
+
189
+ **android studio**
190
+
191
+ <a href="https://uiwjs.github.io/react-codemirror/#/theme/data/xcode/light">
192
+ <img width="436" alt="codemirror-theme-androidstudio" src="https://user-images.githubusercontent.com/1680273/177484354-0a4fa43e-de96-409f-83e2-61808f2347e6.png">
193
+ </a>
194
+
169
195
  ## Props
170
196
 
171
197
  ```ts
@@ -203,6 +229,8 @@ export interface Settings {
203
229
  gutterBackground: string;
204
230
  /** Text color inside gutter. */
205
231
  gutterForeground: string;
232
+ /** Gutter right border color. */
233
+ gutterBorder: string;
206
234
  }
207
235
  declare const createTheme: ({ dark, settings, styles }: CreateThemeOptions) => Extension;
208
236
  export default createTheme;
package/cjs/index.d.ts CHANGED
@@ -19,17 +19,19 @@ export interface Settings {
19
19
  /** Default text color. */
20
20
  foreground: string;
21
21
  /** Caret color. */
22
- caret: string;
22
+ caret?: string;
23
23
  /** Selection background. */
24
- selection: string;
24
+ selection?: string;
25
25
  /** Selection match background. */
26
26
  selectionMatch?: string;
27
27
  /** Background of highlighted lines. */
28
- lineHighlight: string;
28
+ lineHighlight?: string;
29
29
  /** Gutter background. */
30
- gutterBackground: string;
30
+ gutterBackground?: string;
31
31
  /** Text color inside gutter. */
32
- gutterForeground: string;
32
+ gutterForeground?: string;
33
+ /** Gutter right border color. */
34
+ gutterBorder?: string;
33
35
  }
34
36
  export declare const createTheme: ({ theme, settings, styles }: CreateThemeOptions) => Extension;
35
37
  export default createTheme;
package/cjs/index.js CHANGED
@@ -18,23 +18,38 @@ var createTheme = function createTheme(_ref) {
18
18
  backgroundColor: settings.background,
19
19
  color: settings.foreground
20
20
  },
21
- '.cm-content': {
21
+ '.cm-gutters': {}
22
+ };
23
+
24
+ if (settings.gutterBackground) {
25
+ themeOptions['.cm-gutters'].backgroundColor = settings.gutterBackground;
26
+ }
27
+
28
+ if (settings.gutterForeground) {
29
+ themeOptions['.cm-gutters'].color = settings.gutterForeground;
30
+ }
31
+
32
+ if (settings.gutterBorder) {
33
+ themeOptions['.cm-gutters'].borderRightColor = settings.gutterBorder;
34
+ }
35
+
36
+ if (settings.caret) {
37
+ themeOptions['.cm-content'] = {
22
38
  caretColor: settings.caret
23
- },
24
- '.cm-cursor, .cm-dropCursor': {
39
+ };
40
+ themeOptions['.cm-cursor, .cm-dropCursor'] = {
25
41
  borderLeftColor: settings.caret
26
- },
27
- '.cm-activeLine': {
42
+ };
43
+ }
44
+
45
+ if (settings.lineHighlight) {
46
+ themeOptions['.cm-activeLine'] = {
28
47
  backgroundColor: settings.lineHighlight
29
- },
30
- '.cm-gutters': {
31
- backgroundColor: settings.gutterBackground,
32
- color: settings.gutterForeground
33
- },
34
- '.cm-activeLineGutter': {
48
+ };
49
+ themeOptions['.cm-activeLineGutter'] = {
35
50
  backgroundColor: settings.lineHighlight
36
- }
37
- };
51
+ };
52
+ }
38
53
 
39
54
  if (settings.selection) {
40
55
  themeOptions['&.cm-focused .cm-selectionBackground .cm-selectionBackground, & .cm-selectionLayer .cm-selectionBackground, ::selection'] = {
package/cjs/index.js.map CHANGED
@@ -10,12 +10,14 @@
10
10
  "background",
11
11
  "color",
12
12
  "foreground",
13
- "caretColor",
13
+ "gutterBackground",
14
+ "gutterForeground",
15
+ "gutterBorder",
16
+ "borderRightColor",
14
17
  "caret",
18
+ "caretColor",
15
19
  "borderLeftColor",
16
20
  "lineHighlight",
17
- "gutterBackground",
18
- "gutterForeground",
19
21
  "selection",
20
22
  "selectionMatch",
21
23
  "themeExtension",
@@ -31,7 +33,7 @@
31
33
  "../src/index.tsx"
32
34
  ],
33
35
  "sourcesContent": [
34
- "import { EditorView } from '@codemirror/view';\nimport { Extension } from '@codemirror/state';\nimport { HighlightStyle, TagStyle, syntaxHighlighting } from '@codemirror/language';\nimport { StyleSpec } from 'style-mod';\n\nexport interface CreateThemeOptions {\n /**\n * Theme inheritance. Determines which styles CodeMirror will apply by default.\n */\n theme: Theme;\n /**\n * Settings to customize the look of the editor, like background, gutter, selection and others.\n */\n settings: Settings;\n /** Syntax highlighting styles. */\n styles: TagStyle[];\n}\n\ntype Theme = 'light' | 'dark';\n\nexport interface Settings {\n /** Editor background. */\n background: string;\n /** Default text color. */\n foreground: string;\n /** Caret color. */\n caret: string;\n /** Selection background. */\n selection: string;\n /** Selection match background. */\n selectionMatch?: string;\n /** Background of highlighted lines. */\n lineHighlight: string;\n /** Gutter background. */\n gutterBackground: string;\n /** Text color inside gutter. */\n gutterForeground: string;\n}\n\nexport const createTheme = ({ theme, settings, styles }: CreateThemeOptions): Extension => {\n const themeOptions: Record<string, StyleSpec> = {\n '&': {\n backgroundColor: settings.background,\n color: settings.foreground,\n },\n '.cm-content': {\n caretColor: settings.caret,\n },\n '.cm-cursor, .cm-dropCursor': {\n borderLeftColor: settings.caret,\n },\n '.cm-activeLine': {\n backgroundColor: settings.lineHighlight,\n },\n '.cm-gutters': {\n backgroundColor: settings.gutterBackground,\n color: settings.gutterForeground,\n },\n '.cm-activeLineGutter': {\n backgroundColor: settings.lineHighlight,\n },\n };\n if (settings.selection) {\n themeOptions[\n '&.cm-focused .cm-selectionBackground .cm-selectionBackground, & .cm-selectionLayer .cm-selectionBackground, ::selection'\n ] = {\n backgroundColor: settings.selection,\n };\n }\n if (settings.selectionMatch) {\n themeOptions['& .cm-selectionMatch'] = {\n backgroundColor: settings.selectionMatch,\n };\n }\n const themeExtension = EditorView.theme(themeOptions, {\n dark: theme === 'dark',\n });\n\n const highlightStyle = HighlightStyle.define(styles);\n const extension = [themeExtension, syntaxHighlighting(highlightStyle)];\n\n return extension;\n};\n\nexport default createTheme;\n"
36
+ "import { EditorView } from '@codemirror/view';\nimport { Extension } from '@codemirror/state';\nimport { HighlightStyle, TagStyle, syntaxHighlighting } from '@codemirror/language';\nimport { StyleSpec } from 'style-mod';\n\nexport interface CreateThemeOptions {\n /**\n * Theme inheritance. Determines which styles CodeMirror will apply by default.\n */\n theme: Theme;\n /**\n * Settings to customize the look of the editor, like background, gutter, selection and others.\n */\n settings: Settings;\n /** Syntax highlighting styles. */\n styles: TagStyle[];\n}\n\ntype Theme = 'light' | 'dark';\n\nexport interface Settings {\n /** Editor background. */\n background: string;\n /** Default text color. */\n foreground: string;\n /** Caret color. */\n caret?: string;\n /** Selection background. */\n selection?: string;\n /** Selection match background. */\n selectionMatch?: string;\n /** Background of highlighted lines. */\n lineHighlight?: string;\n /** Gutter background. */\n gutterBackground?: string;\n /** Text color inside gutter. */\n gutterForeground?: string;\n /** Gutter right border color. */\n gutterBorder?: string;\n}\n\nexport const createTheme = ({ theme, settings, styles }: CreateThemeOptions): Extension => {\n const themeOptions: Record<string, StyleSpec> = {\n '&': {\n backgroundColor: settings.background,\n color: settings.foreground,\n },\n '.cm-gutters': {},\n };\n\n if (settings.gutterBackground) {\n themeOptions['.cm-gutters'].backgroundColor = settings.gutterBackground;\n }\n if (settings.gutterForeground) {\n themeOptions['.cm-gutters'].color = settings.gutterForeground;\n }\n if (settings.gutterBorder) {\n themeOptions['.cm-gutters'].borderRightColor = settings.gutterBorder;\n }\n\n if (settings.caret) {\n themeOptions['.cm-content'] = {\n caretColor: settings.caret,\n };\n themeOptions['.cm-cursor, .cm-dropCursor'] = {\n borderLeftColor: settings.caret,\n };\n }\n\n if (settings.lineHighlight) {\n themeOptions['.cm-activeLine'] = {\n backgroundColor: settings.lineHighlight,\n };\n themeOptions['.cm-activeLineGutter'] = {\n backgroundColor: settings.lineHighlight,\n };\n }\n\n if (settings.selection) {\n themeOptions[\n '&.cm-focused .cm-selectionBackground .cm-selectionBackground, & .cm-selectionLayer .cm-selectionBackground, ::selection'\n ] = {\n backgroundColor: settings.selection,\n };\n }\n if (settings.selectionMatch) {\n themeOptions['& .cm-selectionMatch'] = {\n backgroundColor: settings.selectionMatch,\n };\n }\n const themeExtension = EditorView.theme(themeOptions, {\n dark: theme === 'dark',\n });\n\n const highlightStyle = HighlightStyle.define(styles);\n const extension = [themeExtension, syntaxHighlighting(highlightStyle)];\n\n return extension;\n};\n\nexport default createTheme;\n"
35
37
  ],
36
- "mappings": ";;;;;;;AAAA;;AAEA;;AAqCO,IAAMA,WAAW,GAAG,SAAdA,WAAc,OAAgE;EAAA,IAA7DC,KAA6D,QAA7DA,KAA6D;EAAA,IAAtDC,QAAsD,QAAtDA,QAAsD;EAAA,IAA5CC,MAA4C,QAA5CA,MAA4C;EACzF,IAAMC,YAAuC,GAAG;IAC9C,KAAK;MACHC,eAAe,EAAEH,QAAQ,CAACI,UADvB;MAEHC,KAAK,EAAEL,QAAQ,CAACM;IAFb,CADyC;IAK9C,eAAe;MACbC,UAAU,EAAEP,QAAQ,CAACQ;IADR,CAL+B;IAQ9C,8BAA8B;MAC5BC,eAAe,EAAET,QAAQ,CAACQ;IADE,CARgB;IAW9C,kBAAkB;MAChBL,eAAe,EAAEH,QAAQ,CAACU;IADV,CAX4B;IAc9C,eAAe;MACbP,eAAe,EAAEH,QAAQ,CAACW,gBADb;MAEbN,KAAK,EAAEL,QAAQ,CAACY;IAFH,CAd+B;IAkB9C,wBAAwB;MACtBT,eAAe,EAAEH,QAAQ,CAACU;IADJ;EAlBsB,CAAhD;;EAsBA,IAAIV,QAAQ,CAACa,SAAb,EAAwB;IACtBX,YAAY,CACV,yHADU,CAAZ,GAEI;MACFC,eAAe,EAAEH,QAAQ,CAACa;IADxB,CAFJ;EAKD;;EACD,IAAIb,QAAQ,CAACc,cAAb,EAA6B;IAC3BZ,YAAY,CAAC,sBAAD,CAAZ,GAAuC;MACrCC,eAAe,EAAEH,QAAQ,CAACc;IADW,CAAvC;EAGD;;EACD,IAAMC,cAAc,GAAGC,gBAAA,CAAWjB,KAAX,CAAiBG,YAAjB,EAA+B;IACpDe,IAAI,EAAElB,KAAK,KAAK;EADoC,CAA/B,CAAvB;;EAIA,IAAMmB,cAAc,GAAGC,wBAAA,CAAeC,MAAf,CAAsBnB,MAAtB,CAAvB;;EACA,IAAMoB,SAAS,GAAG,CAACN,cAAD,EAAiB,IAAAO,4BAAA,EAAmBJ,cAAnB,CAAjB,CAAlB;EAEA,OAAOG,SAAP;AACD,CA3CM;;;eA6CQvB,W"
38
+ "mappings": ";;;;;;;AAAA;;AAEA;;AAuCO,IAAMA,WAAW,GAAG,SAAdA,WAAc,OAAgE;EAAA,IAA7DC,KAA6D,QAA7DA,KAA6D;EAAA,IAAtDC,QAAsD,QAAtDA,QAAsD;EAAA,IAA5CC,MAA4C,QAA5CA,MAA4C;EACzF,IAAMC,YAAuC,GAAG;IAC9C,KAAK;MACHC,eAAe,EAAEH,QAAQ,CAACI,UADvB;MAEHC,KAAK,EAAEL,QAAQ,CAACM;IAFb,CADyC;IAK9C,eAAe;EAL+B,CAAhD;;EAQA,IAAIN,QAAQ,CAACO,gBAAb,EAA+B;IAC7BL,YAAY,CAAC,aAAD,CAAZ,CAA4BC,eAA5B,GAA8CH,QAAQ,CAACO,gBAAvD;EACD;;EACD,IAAIP,QAAQ,CAACQ,gBAAb,EAA+B;IAC7BN,YAAY,CAAC,aAAD,CAAZ,CAA4BG,KAA5B,GAAoCL,QAAQ,CAACQ,gBAA7C;EACD;;EACD,IAAIR,QAAQ,CAACS,YAAb,EAA2B;IACzBP,YAAY,CAAC,aAAD,CAAZ,CAA4BQ,gBAA5B,GAA+CV,QAAQ,CAACS,YAAxD;EACD;;EAED,IAAIT,QAAQ,CAACW,KAAb,EAAoB;IAClBT,YAAY,CAAC,aAAD,CAAZ,GAA8B;MAC5BU,UAAU,EAAEZ,QAAQ,CAACW;IADO,CAA9B;IAGAT,YAAY,CAAC,4BAAD,CAAZ,GAA6C;MAC3CW,eAAe,EAAEb,QAAQ,CAACW;IADiB,CAA7C;EAGD;;EAED,IAAIX,QAAQ,CAACc,aAAb,EAA4B;IAC1BZ,YAAY,CAAC,gBAAD,CAAZ,GAAiC;MAC/BC,eAAe,EAAEH,QAAQ,CAACc;IADK,CAAjC;IAGAZ,YAAY,CAAC,sBAAD,CAAZ,GAAuC;MACrCC,eAAe,EAAEH,QAAQ,CAACc;IADW,CAAvC;EAGD;;EAED,IAAId,QAAQ,CAACe,SAAb,EAAwB;IACtBb,YAAY,CACV,yHADU,CAAZ,GAEI;MACFC,eAAe,EAAEH,QAAQ,CAACe;IADxB,CAFJ;EAKD;;EACD,IAAIf,QAAQ,CAACgB,cAAb,EAA6B;IAC3Bd,YAAY,CAAC,sBAAD,CAAZ,GAAuC;MACrCC,eAAe,EAAEH,QAAQ,CAACgB;IADW,CAAvC;EAGD;;EACD,IAAMC,cAAc,GAAGC,gBAAA,CAAWnB,KAAX,CAAiBG,YAAjB,EAA+B;IACpDiB,IAAI,EAAEpB,KAAK,KAAK;EADoC,CAA/B,CAAvB;;EAIA,IAAMqB,cAAc,GAAGC,wBAAA,CAAeC,MAAf,CAAsBrB,MAAtB,CAAvB;;EACA,IAAMsB,SAAS,GAAG,CAACN,cAAD,EAAiB,IAAAO,4BAAA,EAAmBJ,cAAnB,CAAjB,CAAlB;EAEA,OAAOG,SAAP;AACD,CAzDM;;;eA2DQzB,W"
37
39
  }
package/esm/index.d.ts CHANGED
@@ -19,17 +19,19 @@ export interface Settings {
19
19
  /** Default text color. */
20
20
  foreground: string;
21
21
  /** Caret color. */
22
- caret: string;
22
+ caret?: string;
23
23
  /** Selection background. */
24
- selection: string;
24
+ selection?: string;
25
25
  /** Selection match background. */
26
26
  selectionMatch?: string;
27
27
  /** Background of highlighted lines. */
28
- lineHighlight: string;
28
+ lineHighlight?: string;
29
29
  /** Gutter background. */
30
- gutterBackground: string;
30
+ gutterBackground?: string;
31
31
  /** Text color inside gutter. */
32
- gutterForeground: string;
32
+ gutterForeground?: string;
33
+ /** Gutter right border color. */
34
+ gutterBorder?: string;
33
35
  }
34
36
  export declare const createTheme: ({ theme, settings, styles }: CreateThemeOptions) => Extension;
35
37
  export default createTheme;
package/esm/index.js CHANGED
@@ -11,23 +11,38 @@ export var createTheme = _ref => {
11
11
  backgroundColor: settings.background,
12
12
  color: settings.foreground
13
13
  },
14
- '.cm-content': {
14
+ '.cm-gutters': {}
15
+ };
16
+
17
+ if (settings.gutterBackground) {
18
+ themeOptions['.cm-gutters'].backgroundColor = settings.gutterBackground;
19
+ }
20
+
21
+ if (settings.gutterForeground) {
22
+ themeOptions['.cm-gutters'].color = settings.gutterForeground;
23
+ }
24
+
25
+ if (settings.gutterBorder) {
26
+ themeOptions['.cm-gutters'].borderRightColor = settings.gutterBorder;
27
+ }
28
+
29
+ if (settings.caret) {
30
+ themeOptions['.cm-content'] = {
15
31
  caretColor: settings.caret
16
- },
17
- '.cm-cursor, .cm-dropCursor': {
32
+ };
33
+ themeOptions['.cm-cursor, .cm-dropCursor'] = {
18
34
  borderLeftColor: settings.caret
19
- },
20
- '.cm-activeLine': {
35
+ };
36
+ }
37
+
38
+ if (settings.lineHighlight) {
39
+ themeOptions['.cm-activeLine'] = {
21
40
  backgroundColor: settings.lineHighlight
22
- },
23
- '.cm-gutters': {
24
- backgroundColor: settings.gutterBackground,
25
- color: settings.gutterForeground
26
- },
27
- '.cm-activeLineGutter': {
41
+ };
42
+ themeOptions['.cm-activeLineGutter'] = {
28
43
  backgroundColor: settings.lineHighlight
29
- }
30
- };
44
+ };
45
+ }
31
46
 
32
47
  if (settings.selection) {
33
48
  themeOptions['&.cm-focused .cm-selectionBackground .cm-selectionBackground, & .cm-selectionLayer .cm-selectionBackground, ::selection'] = {
package/esm/index.js.map CHANGED
@@ -13,12 +13,14 @@
13
13
  "background",
14
14
  "color",
15
15
  "foreground",
16
- "caretColor",
16
+ "gutterBackground",
17
+ "gutterForeground",
18
+ "gutterBorder",
19
+ "borderRightColor",
17
20
  "caret",
21
+ "caretColor",
18
22
  "borderLeftColor",
19
23
  "lineHighlight",
20
- "gutterBackground",
21
- "gutterForeground",
22
24
  "selection",
23
25
  "selectionMatch",
24
26
  "themeExtension",
@@ -31,7 +33,7 @@
31
33
  "../src/index.tsx"
32
34
  ],
33
35
  "sourcesContent": [
34
- "import { EditorView } from '@codemirror/view';\nimport { Extension } from '@codemirror/state';\nimport { HighlightStyle, TagStyle, syntaxHighlighting } from '@codemirror/language';\nimport { StyleSpec } from 'style-mod';\n\nexport interface CreateThemeOptions {\n /**\n * Theme inheritance. Determines which styles CodeMirror will apply by default.\n */\n theme: Theme;\n /**\n * Settings to customize the look of the editor, like background, gutter, selection and others.\n */\n settings: Settings;\n /** Syntax highlighting styles. */\n styles: TagStyle[];\n}\n\ntype Theme = 'light' | 'dark';\n\nexport interface Settings {\n /** Editor background. */\n background: string;\n /** Default text color. */\n foreground: string;\n /** Caret color. */\n caret: string;\n /** Selection background. */\n selection: string;\n /** Selection match background. */\n selectionMatch?: string;\n /** Background of highlighted lines. */\n lineHighlight: string;\n /** Gutter background. */\n gutterBackground: string;\n /** Text color inside gutter. */\n gutterForeground: string;\n}\n\nexport const createTheme = ({ theme, settings, styles }: CreateThemeOptions): Extension => {\n const themeOptions: Record<string, StyleSpec> = {\n '&': {\n backgroundColor: settings.background,\n color: settings.foreground,\n },\n '.cm-content': {\n caretColor: settings.caret,\n },\n '.cm-cursor, .cm-dropCursor': {\n borderLeftColor: settings.caret,\n },\n '.cm-activeLine': {\n backgroundColor: settings.lineHighlight,\n },\n '.cm-gutters': {\n backgroundColor: settings.gutterBackground,\n color: settings.gutterForeground,\n },\n '.cm-activeLineGutter': {\n backgroundColor: settings.lineHighlight,\n },\n };\n if (settings.selection) {\n themeOptions[\n '&.cm-focused .cm-selectionBackground .cm-selectionBackground, & .cm-selectionLayer .cm-selectionBackground, ::selection'\n ] = {\n backgroundColor: settings.selection,\n };\n }\n if (settings.selectionMatch) {\n themeOptions['& .cm-selectionMatch'] = {\n backgroundColor: settings.selectionMatch,\n };\n }\n const themeExtension = EditorView.theme(themeOptions, {\n dark: theme === 'dark',\n });\n\n const highlightStyle = HighlightStyle.define(styles);\n const extension = [themeExtension, syntaxHighlighting(highlightStyle)];\n\n return extension;\n};\n\nexport default createTheme;\n"
36
+ "import { EditorView } from '@codemirror/view';\nimport { Extension } from '@codemirror/state';\nimport { HighlightStyle, TagStyle, syntaxHighlighting } from '@codemirror/language';\nimport { StyleSpec } from 'style-mod';\n\nexport interface CreateThemeOptions {\n /**\n * Theme inheritance. Determines which styles CodeMirror will apply by default.\n */\n theme: Theme;\n /**\n * Settings to customize the look of the editor, like background, gutter, selection and others.\n */\n settings: Settings;\n /** Syntax highlighting styles. */\n styles: TagStyle[];\n}\n\ntype Theme = 'light' | 'dark';\n\nexport interface Settings {\n /** Editor background. */\n background: string;\n /** Default text color. */\n foreground: string;\n /** Caret color. */\n caret?: string;\n /** Selection background. */\n selection?: string;\n /** Selection match background. */\n selectionMatch?: string;\n /** Background of highlighted lines. */\n lineHighlight?: string;\n /** Gutter background. */\n gutterBackground?: string;\n /** Text color inside gutter. */\n gutterForeground?: string;\n /** Gutter right border color. */\n gutterBorder?: string;\n}\n\nexport const createTheme = ({ theme, settings, styles }: CreateThemeOptions): Extension => {\n const themeOptions: Record<string, StyleSpec> = {\n '&': {\n backgroundColor: settings.background,\n color: settings.foreground,\n },\n '.cm-gutters': {},\n };\n\n if (settings.gutterBackground) {\n themeOptions['.cm-gutters'].backgroundColor = settings.gutterBackground;\n }\n if (settings.gutterForeground) {\n themeOptions['.cm-gutters'].color = settings.gutterForeground;\n }\n if (settings.gutterBorder) {\n themeOptions['.cm-gutters'].borderRightColor = settings.gutterBorder;\n }\n\n if (settings.caret) {\n themeOptions['.cm-content'] = {\n caretColor: settings.caret,\n };\n themeOptions['.cm-cursor, .cm-dropCursor'] = {\n borderLeftColor: settings.caret,\n };\n }\n\n if (settings.lineHighlight) {\n themeOptions['.cm-activeLine'] = {\n backgroundColor: settings.lineHighlight,\n };\n themeOptions['.cm-activeLineGutter'] = {\n backgroundColor: settings.lineHighlight,\n };\n }\n\n if (settings.selection) {\n themeOptions[\n '&.cm-focused .cm-selectionBackground .cm-selectionBackground, & .cm-selectionLayer .cm-selectionBackground, ::selection'\n ] = {\n backgroundColor: settings.selection,\n };\n }\n if (settings.selectionMatch) {\n themeOptions['& .cm-selectionMatch'] = {\n backgroundColor: settings.selectionMatch,\n };\n }\n const themeExtension = EditorView.theme(themeOptions, {\n dark: theme === 'dark',\n });\n\n const highlightStyle = HighlightStyle.define(styles);\n const extension = [themeExtension, syntaxHighlighting(highlightStyle)];\n\n return extension;\n};\n\nexport default createTheme;\n"
35
37
  ],
36
- "mappings": "AAAA,SAASA,UAAT,QAA2B,kBAA3B;AAEA,SAASC,cAAT,EAAmCC,kBAAnC,QAA6D,sBAA7D;AAqCA,OAAO,IAAMC,WAAW,GAAG,QAAgE;EAAA,IAA/D;IAAEC,KAAF;IAASC,QAAT;IAAmBC;EAAnB,CAA+D;EACzF,IAAMC,YAAuC,GAAG;IAC9C,KAAK;MACHC,eAAe,EAAEH,QAAQ,CAACI,UADvB;MAEHC,KAAK,EAAEL,QAAQ,CAACM;IAFb,CADyC;IAK9C,eAAe;MACbC,UAAU,EAAEP,QAAQ,CAACQ;IADR,CAL+B;IAQ9C,8BAA8B;MAC5BC,eAAe,EAAET,QAAQ,CAACQ;IADE,CARgB;IAW9C,kBAAkB;MAChBL,eAAe,EAAEH,QAAQ,CAACU;IADV,CAX4B;IAc9C,eAAe;MACbP,eAAe,EAAEH,QAAQ,CAACW,gBADb;MAEbN,KAAK,EAAEL,QAAQ,CAACY;IAFH,CAd+B;IAkB9C,wBAAwB;MACtBT,eAAe,EAAEH,QAAQ,CAACU;IADJ;EAlBsB,CAAhD;;EAsBA,IAAIV,QAAQ,CAACa,SAAb,EAAwB;IACtBX,YAAY,CACV,yHADU,CAAZ,GAEI;MACFC,eAAe,EAAEH,QAAQ,CAACa;IADxB,CAFJ;EAKD;;EACD,IAAIb,QAAQ,CAACc,cAAb,EAA6B;IAC3BZ,YAAY,CAAC,sBAAD,CAAZ,GAAuC;MACrCC,eAAe,EAAEH,QAAQ,CAACc;IADW,CAAvC;EAGD;;EACD,IAAMC,cAAc,GAAGpB,UAAU,CAACI,KAAX,CAAiBG,YAAjB,EAA+B;IACpDc,IAAI,EAAEjB,KAAK,KAAK;EADoC,CAA/B,CAAvB;EAIA,IAAMkB,cAAc,GAAGrB,cAAc,CAACsB,MAAf,CAAsBjB,MAAtB,CAAvB;EACA,IAAMkB,SAAS,GAAG,CAACJ,cAAD,EAAiBlB,kBAAkB,CAACoB,cAAD,CAAnC,CAAlB;EAEA,OAAOE,SAAP;AACD,CA3CM;AA6CP,eAAerB,WAAf"
38
+ "mappings": "AAAA,SAASA,UAAT,QAA2B,kBAA3B;AAEA,SAASC,cAAT,EAAmCC,kBAAnC,QAA6D,sBAA7D;AAuCA,OAAO,IAAMC,WAAW,GAAG,QAAgE;EAAA,IAA/D;IAAEC,KAAF;IAASC,QAAT;IAAmBC;EAAnB,CAA+D;EACzF,IAAMC,YAAuC,GAAG;IAC9C,KAAK;MACHC,eAAe,EAAEH,QAAQ,CAACI,UADvB;MAEHC,KAAK,EAAEL,QAAQ,CAACM;IAFb,CADyC;IAK9C,eAAe;EAL+B,CAAhD;;EAQA,IAAIN,QAAQ,CAACO,gBAAb,EAA+B;IAC7BL,YAAY,CAAC,aAAD,CAAZ,CAA4BC,eAA5B,GAA8CH,QAAQ,CAACO,gBAAvD;EACD;;EACD,IAAIP,QAAQ,CAACQ,gBAAb,EAA+B;IAC7BN,YAAY,CAAC,aAAD,CAAZ,CAA4BG,KAA5B,GAAoCL,QAAQ,CAACQ,gBAA7C;EACD;;EACD,IAAIR,QAAQ,CAACS,YAAb,EAA2B;IACzBP,YAAY,CAAC,aAAD,CAAZ,CAA4BQ,gBAA5B,GAA+CV,QAAQ,CAACS,YAAxD;EACD;;EAED,IAAIT,QAAQ,CAACW,KAAb,EAAoB;IAClBT,YAAY,CAAC,aAAD,CAAZ,GAA8B;MAC5BU,UAAU,EAAEZ,QAAQ,CAACW;IADO,CAA9B;IAGAT,YAAY,CAAC,4BAAD,CAAZ,GAA6C;MAC3CW,eAAe,EAAEb,QAAQ,CAACW;IADiB,CAA7C;EAGD;;EAED,IAAIX,QAAQ,CAACc,aAAb,EAA4B;IAC1BZ,YAAY,CAAC,gBAAD,CAAZ,GAAiC;MAC/BC,eAAe,EAAEH,QAAQ,CAACc;IADK,CAAjC;IAGAZ,YAAY,CAAC,sBAAD,CAAZ,GAAuC;MACrCC,eAAe,EAAEH,QAAQ,CAACc;IADW,CAAvC;EAGD;;EAED,IAAId,QAAQ,CAACe,SAAb,EAAwB;IACtBb,YAAY,CACV,yHADU,CAAZ,GAEI;MACFC,eAAe,EAAEH,QAAQ,CAACe;IADxB,CAFJ;EAKD;;EACD,IAAIf,QAAQ,CAACgB,cAAb,EAA6B;IAC3Bd,YAAY,CAAC,sBAAD,CAAZ,GAAuC;MACrCC,eAAe,EAAEH,QAAQ,CAACgB;IADW,CAAvC;EAGD;;EACD,IAAMC,cAAc,GAAGtB,UAAU,CAACI,KAAX,CAAiBG,YAAjB,EAA+B;IACpDgB,IAAI,EAAEnB,KAAK,KAAK;EADoC,CAA/B,CAAvB;EAIA,IAAMoB,cAAc,GAAGvB,cAAc,CAACwB,MAAf,CAAsBnB,MAAtB,CAAvB;EACA,IAAMoB,SAAS,GAAG,CAACJ,cAAD,EAAiBpB,kBAAkB,CAACsB,cAAD,CAAnC,CAAlB;EAEA,OAAOE,SAAP;AACD,CAzDM;AA2DP,eAAevB,WAAf"
37
39
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uiw/codemirror-themes",
3
- "version": "4.10.2",
3
+ "version": "4.11.0",
4
4
  "description": "Themes for CodeMirror.",
5
5
  "homepage": "https://uiwjs.github.io/react-codemirror/#/theme/doc",
6
6
  "author": "kenny wong <wowohoo@qq.com>",
package/src/index.tsx CHANGED
@@ -24,17 +24,19 @@ export interface Settings {
24
24
  /** Default text color. */
25
25
  foreground: string;
26
26
  /** Caret color. */
27
- caret: string;
27
+ caret?: string;
28
28
  /** Selection background. */
29
- selection: string;
29
+ selection?: string;
30
30
  /** Selection match background. */
31
31
  selectionMatch?: string;
32
32
  /** Background of highlighted lines. */
33
- lineHighlight: string;
33
+ lineHighlight?: string;
34
34
  /** Gutter background. */
35
- gutterBackground: string;
35
+ gutterBackground?: string;
36
36
  /** Text color inside gutter. */
37
- gutterForeground: string;
37
+ gutterForeground?: string;
38
+ /** Gutter right border color. */
39
+ gutterBorder?: string;
38
40
  }
39
41
 
40
42
  export const createTheme = ({ theme, settings, styles }: CreateThemeOptions): Extension => {
@@ -43,23 +45,37 @@ export const createTheme = ({ theme, settings, styles }: CreateThemeOptions): Ex
43
45
  backgroundColor: settings.background,
44
46
  color: settings.foreground,
45
47
  },
46
- '.cm-content': {
48
+ '.cm-gutters': {},
49
+ };
50
+
51
+ if (settings.gutterBackground) {
52
+ themeOptions['.cm-gutters'].backgroundColor = settings.gutterBackground;
53
+ }
54
+ if (settings.gutterForeground) {
55
+ themeOptions['.cm-gutters'].color = settings.gutterForeground;
56
+ }
57
+ if (settings.gutterBorder) {
58
+ themeOptions['.cm-gutters'].borderRightColor = settings.gutterBorder;
59
+ }
60
+
61
+ if (settings.caret) {
62
+ themeOptions['.cm-content'] = {
47
63
  caretColor: settings.caret,
48
- },
49
- '.cm-cursor, .cm-dropCursor': {
64
+ };
65
+ themeOptions['.cm-cursor, .cm-dropCursor'] = {
50
66
  borderLeftColor: settings.caret,
51
- },
52
- '.cm-activeLine': {
67
+ };
68
+ }
69
+
70
+ if (settings.lineHighlight) {
71
+ themeOptions['.cm-activeLine'] = {
53
72
  backgroundColor: settings.lineHighlight,
54
- },
55
- '.cm-gutters': {
56
- backgroundColor: settings.gutterBackground,
57
- color: settings.gutterForeground,
58
- },
59
- '.cm-activeLineGutter': {
73
+ };
74
+ themeOptions['.cm-activeLineGutter'] = {
60
75
  backgroundColor: settings.lineHighlight,
61
- },
62
- };
76
+ };
77
+ }
78
+
63
79
  if (settings.selection) {
64
80
  themeOptions[
65
81
  '&.cm-focused .cm-selectionBackground .cm-selectionBackground, & .cm-selectionLayer .cm-selectionBackground, ::selection'