diff --git a/src/lib/stringifyWorker.js b/src/lib/stringifyWorker.js deleted file mode 100644 index f15f422..0000000 --- a/src/lib/stringifyWorker.js +++ /dev/null @@ -1,7 +0,0 @@ -import stringifyAll from 'licia/stringifyAll' - -onmessage = function(e) { - const [id, obj, options] = e.data - const result = stringifyAll(obj, options) - postMessage([id, result]) -} diff --git a/src/lib/themes.js b/src/lib/themes.js index 716bfd7..7ae725b 100644 --- a/src/lib/themes.js +++ b/src/lib/themes.js @@ -1,4 +1,74 @@ -import { extend } from './util' +import { extend, isArr } from './util' + +const keyMap = [ + 'background', + 'foreground', + 'selectForeground', + 'accent', + 'highlight', + 'border', + 'primary', + 'contrast', + 'varColor', + 'stringColor', + 'keywordColor', + 'numberColor', + 'operatorColor', + 'linkColor', + 'textColor', + 'tagNameColor', + 'functionColor', + 'attributeNameColor', + 'commentColor' +] + +const keyMapLen = keyMap.length + +function arrToMap(arr) { + const ret = {} + + for (let i = 0; i < keyMapLen; i++) { + ret[keyMap[i]] = arr[i] + } + + return ret +} + +function createDarkTheme(theme) { + if (isArr(theme)) theme = arrToMap(theme) + if (!theme.darkerBackground) theme.darkerBackground = theme.contrast + return extend( + { + consoleWarnBackground: '#332a00', + consoleWarnForeground: '#ffcb6b', + consoleWarnBorder: '#650', + consoleErrorBackground: '#290000', + consoleErrorForeground: '#ff8080', + consoleErrorBorder: '#5c0000', + light: '#ccc', + dark: '#aaa' + }, + theme + ) +} + +function createLightTheme(theme) { + if (isArr(theme)) theme = arrToMap(theme) + if (!theme.darkerBackground) theme.darkerBackground = theme.contrast + return extend( + { + consoleWarnBackground: '#fffbe5', + consoleWarnForeground: '#5c5c00', + consoleWarnBorder: '#fff5c2', + consoleErrorBackground: '#fff0f0', + consoleErrorForeground: '#f00', + consoleErrorBorder: '#ffd6d6', + light: '#fff', + dark: '#eee' + }, + theme + ) +} export default { Light: createLightTheme({ @@ -46,353 +116,319 @@ export default { attributeNameColor: '#9bbbdc', commentColor: '#747474' }), - 'Material Oceanic': createDarkTheme({ - background: '#263238', - foreground: '#B0BEC5', - selectForeground: '#FFFFFF', - accent: '#009688', - highlight: '#425B67', - border: '#2A373E', - primary: '#607D8B', - contrast: '#1E272C', - varColor: '#eeffff', - stringColor: '#c3e88d', - keywordColor: '#c792ea', - numberColor: '#f78c6c', - operatorColor: '#89ddff', - linkColor: '#80cbc4', - textColor: '#B0BEC5', - tagNameColor: '#f07178', - functionColor: '#82aaff', - attributeNameColor: '#ffcb6b', - commentColor: '#546e7a' - }), - 'Material Darker': createDarkTheme({ - background: '#212121', - foreground: '#B0BEC5', - selectForeground: '#FFFFFF', - accent: '#FF9800', - highlight: '#3F3F3F', - border: '#292929', - primary: '#727272', - contrast: '#1A1A1A', - varColor: '#eeffff', - stringColor: '#c3e88d', - keywordColor: '#c792ea', - numberColor: '#f78c6c', - operatorColor: '#89ddff', - linkColor: '#80cbc4', - textColor: '#B0BEC5', - tagNameColor: '#f07178', - functionColor: '#82aaff', - attributeNameColor: '#ffcb6b', - commentColor: '#616161' - }), - 'Material Lighter': createLightTheme({ - background: '#FAFAFA', - foreground: '#546E7A', - selectForeground: '#546e7a', - accent: '#00BCD4', - highlight: '#E7E7E8', - border: '#d3e1e8', - primary: '#94A7B0', - contrast: '#F4F4F4', - varColor: '#272727', - stringColor: '#91B859', - keywordColor: '#7C4DFF', - numberColor: '#F76D47', - operatorColor: '#39ADB5', - linkColor: '#39ADB5', - textColor: '#546E7A', - tagNameColor: '#E53935', - functionColor: '#6182B8', - attributeNameColor: '#F6A434', - commentColor: '#AABFC9' - }), - 'Material Palenight': createDarkTheme({ - background: '#292D3E', - foreground: '#A6ACCD', - selectForeground: '#FFFFFF', - accent: '#ab47bc', - highlight: '#444267', - border: '#2b2a3e', - primary: '#676E95', - contrast: '#202331', - varColor: '#eeffff', - stringColor: '#c3e88d', - keywordColor: '#c792ea', - numberColor: '#f78c6c', - operatorColor: '#89ddff', - linkColor: '#80cbc4', - textColor: '#A6ACCD', - tagNameColor: '#f07178', - functionColor: '#82aaff', - attributeNameColor: '#ffcb6b', - commentColor: '#676E95' - }), - 'Material Deep Ocean': createDarkTheme({ - background: '#0F111A', - foreground: '#8F93A2', - selectForeground: '#FFFFFF', - accent: '#84ffff', - highlight: '#1F2233', - border: '#41465b', - primary: '#4B526D', - contrast: '#090B10', - varColor: '#eeffff', - stringColor: '#c3e88d', - keywordColor: '#c792ea', - numberColor: '#f78c6c', - operatorColor: '#89ddff', - linkColor: '#80cbc4', - textColor: '#8F93A2', - tagNameColor: '#f07178', - functionColor: '#82aaff', - attributeNameColor: '#ffcb6b', - commentColor: '#717CB4' - }), - 'Monokai Pro': createDarkTheme({ - background: '#2D2A2E', - foreground: '#fcfcfa', - selectForeground: '#FFFFFF', - accent: '#ffd866', - highlight: '#5b595c', - border: '#423f43', - primary: '#939293', - contrast: '#221F22', - varColor: '#FCFCFA', - stringColor: '#FFD866', - keywordColor: '#FF6188', - numberColor: '#AB9DF2', - operatorColor: '#FF6188', - linkColor: '#78DCE8', - textColor: '#fcfcfa', - tagNameColor: '#FF6188', - functionColor: '#A9DC76', - attributeNameColor: '#78DCE8', - commentColor: '#727072' - }), - Dracula: createDarkTheme({ - background: '#282A36', - foreground: '#F8F8F2', - selectForeground: '#8BE9FD', - accent: '#FF79C5', - highlight: '#6272A4', - border: '#21222C', - primary: '#6272A4', - contrast: '#191A21', - varColor: '#F8F8F2', - stringColor: '#F1FA8C', - keywordColor: '#FF79C6', - numberColor: '#BD93F9', - operatorColor: '#FF79C6', - linkColor: '#F1FA8C', - textColor: '#F8F8F2', - tagNameColor: '#FF79C6', - functionColor: '#50FA78', - attributeNameColor: '#50FA7B', - commentColor: '#6272A4' - }), - 'Arc Dark': createDarkTheme({ - background: '#2f343f', - foreground: '#D3DAE3', - selectForeground: '#FFFFFF', - accent: '#42A5F5', - highlight: '#3F3F46', - border: '#404552', - primary: '#8b9eb5', - contrast: '#262b33', - varColor: '#CF6A4C', - stringColor: '#8F9D6A', - keywordColor: '#9B859D', - numberColor: '#CDA869', - operatorColor: '#A7A7A7', - linkColor: '#7587A6', - textColor: '#D3DAE3', - tagNameColor: '#CF6A4C', - functionColor: '#7587A6', - attributeNameColor: '#F9EE98', - commentColor: '#747C84' - }), - 'Atom One Dark': createDarkTheme({ - background: '#282C34', - foreground: '#979FAD', - selectForeground: '#FFFFFF', - accent: '#2979ff', - highlight: '#383D48', - border: '#2e3239', - primary: '#979FAD', - contrast: '#21252B', - varColor: '#D19A66', - stringColor: '#98C379', - keywordColor: '#C679DD', - numberColor: '#D19A66', - operatorColor: '#61AFEF', - linkColor: '#56B6C2', - textColor: '#979FAD', - tagNameColor: '#F07178', - functionColor: '#61AEEF', - attributeNameColor: '#E5C17C', - commentColor: '#59626F' - }), - 'Atom One Light': createLightTheme({ - background: '#FAFAFA', - foreground: '#232324', - selectForeground: '#232324', - accent: '#2979ff', - highlight: '#EAEAEB', - border: '#DBDBDC', - primary: '#9D9D9F', - contrast: '#FFFFFF', - varColor: '#986801', - stringColor: '#50A14E', - keywordColor: '#A626A4', - numberColor: '#986801', - operatorColor: '#4078F2', - linkColor: '#0184BC', - textColor: '#232324', - tagNameColor: '#E4564A', - functionColor: '#4078F2', - attributeNameColor: '#C18401', - commentColor: '#A0A1A7' - }), - 'Solarized Dark': createDarkTheme({ - background: '#002B36', - foreground: '#839496', - selectForeground: '#FFFFFF', - accent: '#d33682', - highlight: '#11353F', - border: '#0D3640', - primary: '#586e75', - contrast: '#00252E', - varColor: '#268BD2', - stringColor: '#2AA198', - keywordColor: '#859900', - numberColor: '#D33682', - operatorColor: '#93A1A1', - linkColor: '#268BD2', - textColor: '#839496', - tagNameColor: '#268BD2', - functionColor: '#B58900', - attributeNameColor: '#B58900', - commentColor: '#657B83' - }), - 'Solarized Light': createLightTheme({ - background: '#fdf6e3', - foreground: '#586e75', - selectForeground: '#002b36', - accent: '#d33682', - highlight: '#F6F0DE', - border: '#f7f2e2', - primary: '#93a1a1', - contrast: '#eee8d5', - varColor: '#268BD2', - stringColor: '#2AA198', - keywordColor: '#859900', - numberColor: '#D33682', - operatorColor: '#657B83', - linkColor: '#268BD2', - textColor: '#586e75', - tagNameColor: '#268BD2', - functionColor: '#B58900', - attributeNameColor: '#657B83', - commentColor: '#93A1A1' - }), - Github: createLightTheme({ - background: '#F7F8FA', - foreground: '#5B6168', - selectForeground: '#FFFFFF', - accent: '#79CB60', - highlight: '#CCE5FF', - border: '#DFE1E4', - primary: '#292D31', - contrast: '#FFFFFF', - varColor: '#24292E', - stringColor: '#032F62', - keywordColor: '#D73A49', - numberColor: '#005CC5', - operatorColor: '#D73A49', - linkColor: '#005CC5', - textColor: '#5B6168', - tagNameColor: '#22863A', - functionColor: '#6F42C1', - attributeNameColor: '#6F42C1', - commentColor: '#6A737D' - }), - 'Night Owl': createDarkTheme({ - background: '#011627', - foreground: '#b0bec5', - selectForeground: '#ffffff', - accent: '#7e57c2', - highlight: '#152C3B', - border: '#2a373e', - primary: '#607d8b', - contrast: '#001424', - varColor: '#addb67', - stringColor: '#ecc48d', - keywordColor: '#c792ea', - numberColor: '#f78c6c', - operatorColor: '#c792ea', - linkColor: '#80CBC4', - textColor: '#b0bec5', - tagNameColor: '#7fdbca', - functionColor: '#82AAFF', - attributeNameColor: '#FAD430', - commentColor: '#637777' - }), - 'Light Owl': createLightTheme({ - background: '#FAFAFA', - foreground: '#546e7a', - selectForeground: '#403f53', - accent: '#269386', - highlight: '#E0E7EA', - border: '#efefef', - primary: '#403F53', - contrast: '#FAFAFA', - varColor: '#0C969B', - stringColor: '#c96765', - keywordColor: '#994cc3', - numberColor: '#aa0982', - operatorColor: '#7d818b', - linkColor: '#994cc3', - textColor: '#546e7a', - tagNameColor: '#994cc3', - functionColor: '#4876d6', - attributeNameColor: '#4876d6', - commentColor: '#637777' - }) -} - -function createDarkTheme(theme) { - if (!theme.darkerBackground) theme.darkerBackground = theme.contrast - return extend( - { - consoleWarnBackground: '#332a00', - consoleWarnForeground: '#ffcb6b', - consoleWarnBorder: '#650', - consoleErrorBackground: '#290000', - consoleErrorForeground: '#ff8080', - consoleErrorBorder: '#5c0000', - light: '#ccc', - dark: '#aaa' - }, - theme - ) -} - -function createLightTheme(theme) { - if (!theme.darkerBackground) theme.darkerBackground = theme.contrast - return extend( - { - consoleWarnBackground: '#fffbe5', - consoleWarnForeground: '#5c5c00', - consoleWarnBorder: '#fff5c2', - consoleErrorBackground: '#fff0f0', - consoleErrorForeground: '#f00', - consoleErrorBorder: '#ffd6d6', - light: '#fff', - dark: '#eee' - }, - theme - ) + 'Material Oceanic': createDarkTheme([ + '#263238', + '#B0BEC5', + '#FFFFFF', + '#009688', + '#425B67', + '#2A373E', + '#607D8B', + '#1E272C', + '#eeffff', + '#c3e88d', + '#c792ea', + '#f78c6c', + '#89ddff', + '#80cbc4', + '#B0BEC5', + '#f07178', + '#82aaff', + '#ffcb6b', + '#546e7a' + ]), + 'Material Darker': createDarkTheme([ + '#212121', + '#B0BEC5', + '#FFFFFF', + '#FF9800', + '#3F3F3F', + '#292929', + '#727272', + '#1A1A1A', + '#eeffff', + '#c3e88d', + '#c792ea', + '#f78c6c', + '#89ddff', + '#80cbc4', + '#B0BEC5', + '#f07178', + '#82aaff', + '#ffcb6b', + '#616161' + ]), + 'Material Lighter': createLightTheme([ + '#FAFAFA', + '#546E7A', + '#546e7a', + '#00BCD4', + '#E7E7E8', + '#d3e1e8', + '#94A7B0', + '#F4F4F4', + '#272727', + '#91B859', + '#7C4DFF', + '#F76D47', + '#39ADB5', + '#39ADB5', + '#546E7A', + '#E53935', + '#6182B8', + '#F6A434', + '#AABFC9' + ]), + 'Material Palenight': createDarkTheme([ + '#292D3E', + '#A6ACCD', + '#FFFFFF', + '#ab47bc', + '#444267', + '#2b2a3e', + '#676E95', + '#202331', + '#eeffff', + '#c3e88d', + '#c792ea', + '#f78c6c', + '#89ddff', + '#80cbc4', + '#A6ACCD', + '#f07178', + '#82aaff', + '#ffcb6b', + '#676E95' + ]), + 'Material Deep Ocean': createDarkTheme([ + '#0F111A', + '#8F93A2', + '#FFFFFF', + '#84ffff', + '#1F2233', + '#41465b', + '#4B526D', + '#090B10', + '#eeffff', + '#c3e88d', + '#c792ea', + '#f78c6c', + '#89ddff', + '#80cbc4', + '#8F93A2', + '#f07178', + '#82aaff', + '#ffcb6b', + '#717CB4' + ]), + 'Monokai Pro': createDarkTheme([ + '#2D2A2E', + '#fcfcfa', + '#FFFFFF', + '#ffd866', + '#5b595c', + '#423f43', + '#939293', + '#221F22', + '#FCFCFA', + '#FFD866', + '#FF6188', + '#AB9DF2', + '#FF6188', + '#78DCE8', + '#fcfcfa', + '#FF6188', + '#A9DC76', + '#78DCE8', + '#727072' + ]), + Dracula: createDarkTheme([ + '#282A36', + '#F8F8F2', + '#8BE9FD', + '#FF79C5', + '#6272A4', + '#21222C', + '#6272A4', + '#191A21', + '#F8F8F2', + '#F1FA8C', + '#FF79C6', + '#BD93F9', + '#FF79C6', + '#F1FA8C', + '#F8F8F2', + '#FF79C6', + '#50FA78', + '#50FA7B', + '#6272A4' + ]), + 'Arc Dark': createDarkTheme([ + '#2f343f', + '#D3DAE3', + '#FFFFFF', + '#42A5F5', + '#3F3F46', + '#404552', + '#8b9eb5', + '#262b33', + '#CF6A4C', + '#8F9D6A', + '#9B859D', + '#CDA869', + '#A7A7A7', + '#7587A6', + '#D3DAE3', + '#CF6A4C', + '#7587A6', + '#F9EE98', + '#747C84' + ]), + 'Atom One Dark': createDarkTheme([ + '#282C34', + '#979FAD', + '#FFFFFF', + '#2979ff', + '#383D48', + '#2e3239', + '#979FAD', + '#21252B', + '#D19A66', + '#98C379', + '#C679DD', + '#D19A66', + '#61AFEF', + '#56B6C2', + '#979FAD', + '#F07178', + '#61AEEF', + '#E5C17C', + '#59626F' + ]), + 'Atom One Light': createLightTheme([ + '#FAFAFA', + '#232324', + '#232324', + '#2979ff', + '#EAEAEB', + '#DBDBDC', + '#9D9D9F', + '#FFFFFF', + '#986801', + '#50A14E', + '#A626A4', + '#986801', + '#4078F2', + '#0184BC', + '#232324', + '#E4564A', + '#4078F2', + '#C18401', + '#A0A1A7' + ]), + 'Solarized Dark': createDarkTheme([ + '#002B36', + '#839496', + '#FFFFFF', + '#d33682', + '#11353F', + '#0D3640', + '#586e75', + '#00252E', + '#268BD2', + '#2AA198', + '#859900', + '#D33682', + '#93A1A1', + '#268BD2', + '#839496', + '#268BD2', + '#B58900', + '#B58900', + '#657B83' + ]), + 'Solarized Light': createLightTheme([ + '#fdf6e3', + '#586e75', + '#002b36', + '#d33682', + '#F6F0DE', + '#f7f2e2', + '#93a1a1', + '#eee8d5', + '#268BD2', + '#2AA198', + '#859900', + '#D33682', + '#657B83', + '#268BD2', + '#586e75', + '#268BD2', + '#B58900', + '#657B83', + '#93A1A1' + ]), + Github: createLightTheme([ + '#F7F8FA', + '#5B6168', + '#FFFFFF', + '#79CB60', + '#CCE5FF', + '#DFE1E4', + '#292D31', + '#FFFFFF', + '#24292E', + '#032F62', + '#D73A49', + '#005CC5', + '#D73A49', + '#005CC5', + '#5B6168', + '#22863A', + '#6F42C1', + '#6F42C1', + '#6A737D' + ]), + 'Night Owl': createDarkTheme([ + '#011627', + '#b0bec5', + '#ffffff', + '#7e57c2', + '#152C3B', + '#2a373e', + '#607d8b', + '#001424', + '#addb67', + '#ecc48d', + '#c792ea', + '#f78c6c', + '#c792ea', + '#80CBC4', + '#b0bec5', + '#7fdbca', + '#82AAFF', + '#FAD430', + '#637777' + ]), + 'Light Owl': createLightTheme([ + '#FAFAFA', + '#546e7a', + '#403f53', + '#269386', + '#E0E7EA', + '#efefef', + '#403F53', + '#FAFAFA', + '#0C969B', + '#c96765', + '#994cc3', + '#aa0982', + '#7d818b', + '#994cc3', + '#546e7a', + '#994cc3', + '#4876d6', + '#4876d6', + '#637777' + ]) }