From 16029bade8e05610db24104b60a05974aa2e9206 Mon Sep 17 00:00:00 2001 From: octod Date: Fri, 21 Jul 2017 20:20:17 +0200 Subject: [PATCH] chore: Adds theme variants command to "Material Theme Settings" --- .gulp/tasks/icons-variants.ts | 17 ++-- extensions/commands/accents-setter/index.ts | 30 +++---- extensions/commands/theme-icons/index.ts | 90 ++++++++++----------- extensions/commands/theme-variant/index.ts | 37 +++++++++ extensions/defaults.json | 12 +++ extensions/helpers/settings.ts | 4 +- extensions/helpers/vscode.ts | 15 ++++ extensions/interfaces/idefaults.ts | 11 +++ extensions/material.theme.config.ts | 12 +-- package.json | 17 +--- themes/Material-Theme-Icons.json | 2 +- 11 files changed, 144 insertions(+), 103 deletions(-) create mode 100644 extensions/commands/theme-variant/index.ts diff --git a/.gulp/tasks/icons-variants.ts b/.gulp/tasks/icons-variants.ts index 8d4ade4..1b85a2f 100644 --- a/.gulp/tasks/icons-variants.ts +++ b/.gulp/tasks/icons-variants.ts @@ -3,19 +3,15 @@ import * as gulp from 'gulp'; import * as path from 'path'; import { CHARSET } from "../../extensions/consts/files"; -import { IGenericObject } from "../../extensions/interfaces/igeneric-object"; import { IPackageJSON } from "../../extensions/interfaces/ipackage.json"; import { IThemeIconsVariants } from "../interfaces/itheme-icons-variants"; import PATHS from '../../extensions/consts/paths' +import { getDefaultValues } from "../../extensions/helpers/fs"; +import { IDefaultsThemeVariantColours } from "../../extensions/interfaces/idefaults"; const PACKAGE_JSON: IPackageJSON = require(path.join(process.cwd(), './package.json')); -let variants: IGenericObject = { - Darker: '#424242', - Default: '#4A616C', - Light: '#90A4AE', - Palenight: '#4E5579' -} +let variants: IDefaultsThemeVariantColours = getDefaultValues().themeVariantsColours; function writeIconVariant(filepath: string, destpath: string, colour: string): void { let regexp = new RegExp('.st0\{fill:(#[a-zA-Z0-9]{3,6})') @@ -37,14 +33,15 @@ export default gulp.task('build:icons.variants', callback => { let basepath: string = path.join(process.cwd(), contribute.path); let basetheme: IThemeIconsVariants = require(basepath); let theme: IThemeIconsVariants = JSON.parse(JSON.stringify(basetheme)); + let variant = variants[variantName]; theme.iconDefinitions._folder_dark.iconPath = theme.iconDefinitions._folder_dark.iconPath.replace('.svg', `${ variantName }.svg`); theme.iconDefinitions._file_folder.iconPath = theme.iconDefinitions._file_folder.iconPath.replace('.svg', `${ variantName }.svg`); theme.iconDefinitions["_file_folder-build"].iconPath = theme.iconDefinitions["_file_folder-build"].iconPath.replace('.svg', `${ variantName }.svg`); - writeIconVariant(basetheme.iconDefinitions._folder_dark.iconPath, theme.iconDefinitions._folder_dark.iconPath, variants[variantName]); - writeIconVariant(basetheme.iconDefinitions._file_folder.iconPath, theme.iconDefinitions._file_folder.iconPath, variants[variantName]); - writeIconVariant(basetheme.iconDefinitions["_file_folder-build"].iconPath, theme.iconDefinitions["_file_folder-build"].iconPath, variants[variantName]); + writeIconVariant(basetheme.iconDefinitions._folder_dark.iconPath, theme.iconDefinitions._folder_dark.iconPath, variant); + writeIconVariant(basetheme.iconDefinitions._file_folder.iconPath, theme.iconDefinitions._file_folder.iconPath, variant); + writeIconVariant(basetheme.iconDefinitions["_file_folder-build"].iconPath, theme.iconDefinitions["_file_folder-build"].iconPath, variant); }); }); diff --git a/extensions/commands/accents-setter/index.ts b/extensions/commands/accents-setter/index.ts index ce2e6f0..0432b20 100644 --- a/extensions/commands/accents-setter/index.ts +++ b/extensions/commands/accents-setter/index.ts @@ -3,7 +3,9 @@ import * as vscode from 'vscode'; import {IAccentCustomProperty} from '../../interfaces/iaccent-custom-property'; import { IDefaults } from "../../interfaces/idefaults"; import {IGenericObject} from '../../interfaces/igeneric-object'; -import { updateAccent } from "../../helpers/settings"; +import { updateAccent, isMaterialTheme, isMaterialThemeIcons } from "../../helpers/settings"; +import { getCurrentThemeID, getCurrentThemeIconsID, askForWindowReload } from "../../helpers/vscode"; +import { THEME_ICONS } from "../theme-icons/index"; const REGEXP_HEX: RegExp = /^#([0-9A-F]{6}|[0-9A-F]{8})$/i; @@ -90,10 +92,14 @@ function isValidColour(colour: string | null | undefined): boolean { */ function setWorkbenchOptions(accentSelected: string | undefined, config: any): void { vscode.workspace.getConfiguration().update('workbench.colorCustomizations', config, true).then(() => { - // let message: string = accentSelected !== undefined ? `${ accentSelected } set` : `Accents removed`; + let themeID = getCurrentThemeID() + let themeIconsID = getCurrentThemeIconsID() + updateAccent(accentSelected); - // vscode.window.showInformationMessage(message).then(() => { - // }); + + if (isMaterialTheme(themeID) && isMaterialThemeIcons(themeIconsID)) { + THEME_ICONS().then(() => askForWindowReload()); + } }, reason => { vscode.window.showErrorMessage(reason); }); @@ -105,10 +111,8 @@ function setWorkbenchOptions(accentSelected: string | undefined, config: any): v export const THEME_ACCENTS_SETTER = () => { // shows the quick pick dropdown let options: string[] = Object.keys(themeConfigCommon.accents); - // let customColourKey: string = 'Custom colour'; let purgeColourKey: string = 'Remove accents'; - // options.push(customColourKey); options.push(purgeColourKey); vscode.window.showQuickPick(options).then(accentSelected => { @@ -117,19 +121,6 @@ export const THEME_ACCENTS_SETTER = () => { let config: any = vscode.workspace.getConfiguration().get('workbench.colorCustomizations'); switch(accentSelected) { - // case customColourKey: - // vscode.window.showInputBox().then(colourCode => { - // if (colourCode === null || colourCode === undefined) return; - - // if (colourCode && !isValidColour(colourCode)) { - // vscode.window.showWarningMessage('Invalid colour set, aborting.'); - // return; - // } - - // assignColorCustomizations(colourCode, config); - // setWorkbenchOptions(accentSelected, config); - // }); - // break; case purgeColourKey: assignColorCustomizations(undefined, config); setWorkbenchOptions(undefined, config); @@ -137,7 +128,6 @@ export const THEME_ACCENTS_SETTER = () => { default: assignColorCustomizations(themeConfigCommon.accents[accentSelected], config); setWorkbenchOptions(accentSelected, config); - // assignIconTheme(accentSelected); break; } }); diff --git a/extensions/commands/theme-icons/index.ts b/extensions/commands/theme-icons/index.ts index 0423147..a44a9eb 100644 --- a/extensions/commands/theme-icons/index.ts +++ b/extensions/commands/theme-icons/index.ts @@ -1,63 +1,55 @@ import * as fs from 'fs'; -import * as vscode from 'vscode'; import { getAbsolutePath, getDefaultValues, getThemeIconsByContributeID, getThemeIconsContribute } from "../../helpers/fs"; -import { getCurrentThemeID, getCurrentThemeIconsID, reloadWindow } from "../../helpers/vscode"; -import { getCustomSettings, isAccent, shouldReloadWindow } from "../../helpers/settings"; +import { getCurrentThemeIconsID } from "../../helpers/vscode"; +import { getCustomSettings, isAccent, isMaterialThemeIcons } from "../../helpers/settings"; import { CHARSET } from "../../consts/files"; import { IPackageJSONThemeIcons } from "../../interfaces/ipackage.json"; import { IThemeIcons } from "../../interfaces/itheme-icons"; -export const THEME_CHANGE_LISTENER = () => { - vscode.workspace.onDidChangeConfiguration(() => { - let themeID: string = getCurrentThemeID(); - let themeIconsID: string = getCurrentThemeIconsID(); +export const THEME_ICONS = () => { + let deferred: any = {}; + let promise = new Promise((resolve, reject) => { + deferred.resolve = resolve; + deferred.reject = reject; + }); + let themeIconsID: string = getCurrentThemeIconsID(); - if (themeIconsID && /material-theme/i.test(themeIconsID)) { - let customSettings = getCustomSettings(); - let defaults = getDefaultValues(); - let accentName = customSettings.accent; - let variantNames: string[] = themeID.split('Material Theme'); - let variantName: string = variantNames[1] === undefined ? '' : variantNames[1].trim(); - let themeContribute: IPackageJSONThemeIcons = getThemeIconsContribute(themeIconsID); - let theme: IThemeIcons = getThemeIconsByContributeID(themeIconsID); - let themepath: string = getAbsolutePath(themeContribute.path); + if (isMaterialThemeIcons(themeIconsID)) { + let customSettings = getCustomSettings(); + let defaults = getDefaultValues(); + let accentName = customSettings.accent; + let variantName: string = customSettings.themeColours === undefined ? '' : customSettings.themeColours; + let themeContribute: IPackageJSONThemeIcons = getThemeIconsContribute(themeIconsID); + let theme: IThemeIcons = getThemeIconsByContributeID(themeIconsID); + let themepath: string = getAbsolutePath(themeContribute.path); - if (isAccent(accentName, defaults)) { - let _accentName = accentName.replace(/\s+/, '-'); - theme.iconDefinitions._folder_open.iconPath = defaults.icons.theme.iconDefinitions._folder_open.iconPath.replace('.svg', `.accent.${ _accentName }.svg`); - theme.iconDefinitions._folder_open_build.iconPath = defaults.icons.theme.iconDefinitions._folder_open_build.iconPath.replace('.svg', `.accent.${ _accentName }.svg`); - } else { - theme.iconDefinitions._folder_open.iconPath = defaults.icons.theme.iconDefinitions._folder_open.iconPath; - theme.iconDefinitions._folder_open_build.iconPath = defaults.icons.theme.iconDefinitions._folder_open_build.iconPath; + if (isAccent(accentName, defaults)) { + let _accentName = accentName.replace(/\s+/, '-'); + theme.iconDefinitions._folder_open.iconPath = defaults.icons.theme.iconDefinitions._folder_open.iconPath.replace('.svg', `.accent.${ _accentName }.svg`); + theme.iconDefinitions._folder_open_build.iconPath = defaults.icons.theme.iconDefinitions._folder_open_build.iconPath.replace('.svg', `.accent.${ _accentName }.svg`); + } else { + theme.iconDefinitions._folder_open.iconPath = defaults.icons.theme.iconDefinitions._folder_open.iconPath; + theme.iconDefinitions._folder_open_build.iconPath = defaults.icons.theme.iconDefinitions._folder_open_build.iconPath; + } + + theme.iconDefinitions._folder_dark.iconPath = defaults.icons.theme.iconDefinitions._folder_dark.iconPath.replace('.svg', `${ variantName }.svg`); + theme.iconDefinitions._file_folder.iconPath = defaults.icons.theme.iconDefinitions._file_folder.iconPath.replace('.svg', `${ variantName }.svg`); + theme.iconDefinitions._folder_dark_build.iconPath = defaults.icons.theme.iconDefinitions._folder_dark_build.iconPath.replace('.svg', `${ variantName }.svg`); + theme.iconDefinitions["_file_folder-build"].iconPath = defaults.icons.theme.iconDefinitions["_file_folder-build"].iconPath.replace('.svg', `${ variantName }.svg`); + + fs.writeFile(themepath, JSON.stringify(theme), { encoding: CHARSET }, (error) => { + if (error) { + deferred.reject(error); + return; } - theme.iconDefinitions._folder_dark.iconPath = defaults.icons.theme.iconDefinitions._folder_dark.iconPath.replace('.svg', `${ variantName }.svg`); - theme.iconDefinitions._file_folder.iconPath = defaults.icons.theme.iconDefinitions._file_folder.iconPath.replace('.svg', `${ variantName }.svg`); - theme.iconDefinitions._folder_dark_build.iconPath = defaults.icons.theme.iconDefinitions._folder_dark_build.iconPath.replace('.svg', `${ variantName }.svg`); - theme.iconDefinitions["_file_folder-build"].iconPath = defaults.icons.theme.iconDefinitions["_file_folder-build"].iconPath.replace('.svg', `${ variantName }.svg`); + deferred.resolve(); + }); + } else { + deferred.reject(); + } - fs.writeFile(themepath, JSON.stringify(theme), { encoding: CHARSET }, (error) => { - if (error) { - console.trace(error); - return; - } - - const PROMPT_MESSAGE: string = 'Material Theme requires VS Code reload in order to display icons correctly.'; - const PROMPT_MESSAGE_CONFIRM: string = 'Ok, reload'; - const PROMPT_MESSAGE_CANCEL: string = 'I will do it later'; - - if (shouldReloadWindow(themeID, themeIconsID)) { - vscode.window.showInformationMessage(PROMPT_MESSAGE, PROMPT_MESSAGE_CONFIRM, PROMPT_MESSAGE_CANCEL).then((response) => { - if (response === PROMPT_MESSAGE_CONFIRM) { - reloadWindow(); - } - }, (error) => { - console.log(error); - }); - } - }); - } - }); + return promise; } \ No newline at end of file diff --git a/extensions/commands/theme-variant/index.ts b/extensions/commands/theme-variant/index.ts new file mode 100644 index 0000000..82a1709 --- /dev/null +++ b/extensions/commands/theme-variant/index.ts @@ -0,0 +1,37 @@ +import * as vscode from 'vscode'; +import { getDefaultValues, getPackageJSON, getAbsolutePath } from "../../helpers/fs"; +import { setCustomSettings, getCustomSettings } from "../../helpers/settings"; +import { THEME_ICONS } from "../theme-icons/index"; +import * as fs from "fs"; +import { CHARSET } from "../../consts/files"; +import { reloadWindow } from "../../helpers/vscode"; + +export const THEME_VARIANT = () => { + let defaults = getDefaultValues(); + let options: string[] = Object.keys(defaults.themeVariants); + let packageJSON = getPackageJSON(); + + options = options.filter(i => i !== packageJSON.contributes.themes[0].path); + + vscode.window.showQuickPick(options).then((response: string) => { + let customSettings = getCustomSettings(); + let themepath: string = defaults.themeVariants[response]; + let themeUITheme: string = defaults.themeVariantsUITheme[response]; + + customSettings.themeColours = response; + + packageJSON.contributes.themes[0].path = themepath; + packageJSON.contributes.themes[0].uiTheme = themeUITheme; + + fs.writeFile(getAbsolutePath('./package.json'), JSON.stringify(packageJSON, null, 2), { encoding: CHARSET }, (error) => { + if (error) { + console.trace(error); + return; + } + + setCustomSettings(customSettings); + + THEME_ICONS().then(() => reloadWindow()).catch(error => console.trace(error)); + }); + }); +} \ No newline at end of file diff --git a/extensions/defaults.json b/extensions/defaults.json index 149de72..5abd0c1 100644 --- a/extensions/defaults.json +++ b/extensions/defaults.json @@ -42,9 +42,21 @@ } }, "themeVariants": { + "Darker": "./themes/Material-Theme-Darker.json", + "Default": "./themes/Material-Theme-Default.json", + "Light": "./themes/Material-Theme-Lighter.json", + "Palenight": "./themes/Material-Theme-Palenight.json" + }, + "themeVariantsColours": { "Darker": "#424242", "Default": "#4A616C", "Light": "#90A4AE", "Palenight": "#4E5579" + }, + "themeVariantsUITheme": { + "Darker": "vs-dark", + "Default": "vs-dark", + "Light": "vs", + "Palenight": "vs-dark" } } \ No newline at end of file diff --git a/extensions/helpers/settings.ts b/extensions/helpers/settings.ts index 9b3f654..121714f 100644 --- a/extensions/helpers/settings.ts +++ b/extensions/helpers/settings.ts @@ -96,7 +96,7 @@ export function shouldReloadWindow(themeColour: string, themeIcons: string): boo let customSettings = getCustomSettings(); - return customSettings.themeColours !== themeColour || customSettings.themeIcons !== themeIcons || customSettings.accent !== customSettings.accentPrevious; + return customSettings.accent !== customSettings.accentPrevious; } /** @@ -105,7 +105,7 @@ export function shouldReloadWindow(themeColour: string, themeIcons: string): boo * @param {string} accentName */ export function updateAccent(accentName: string): Thenable { - let config: IThemeCustomProperties = {}; + let config: IThemeCustomProperties = getCustomSettings(); let prevaccent = getAccent(); if (prevaccent !== undefined && prevaccent !== accentName) { diff --git a/extensions/helpers/vscode.ts b/extensions/helpers/vscode.ts index 03d9a4a..8ae4cc7 100644 --- a/extensions/helpers/vscode.ts +++ b/extensions/helpers/vscode.ts @@ -1,5 +1,20 @@ import * as vscode from 'vscode' + +export function askForWindowReload(): Thenable { + const PROMPT_MESSAGE: string = 'Material Theme requires VS Code reload in order to display icons correctly.'; + const PROMPT_MESSAGE_CONFIRM: string = 'Ok, reload'; + const PROMPT_MESSAGE_CANCEL: string = 'I will do it later'; + + return vscode.window.showInformationMessage(PROMPT_MESSAGE, PROMPT_MESSAGE_CONFIRM, PROMPT_MESSAGE_CANCEL).then((response) => { + if (response === PROMPT_MESSAGE_CONFIRM) { + reloadWindow(); + } + }, (error) => { + console.log(error); + }); +} + /** * Gets your current theme ID * @export diff --git a/extensions/interfaces/idefaults.ts b/extensions/interfaces/idefaults.ts index af762b8..87826cf 100644 --- a/extensions/interfaces/idefaults.ts +++ b/extensions/interfaces/idefaults.ts @@ -2,6 +2,8 @@ export interface IDefaults { accents: IAccents; icons: IDefaultsThemeIcons; themeVariants: IDefaultsThemeVariant; + themeVariantsColours: IDefaultsThemeVariantColours; + themeVariantsUITheme: IDefaultsThemeVariantUITheme; } export interface IAccents { @@ -35,8 +37,17 @@ export interface IDefaultsThemeIcons { } export interface IDefaultsThemeVariant { + [index: string]: string; Darker: string; Default: string; Light: string; Palenight: string; +} + +export interface IDefaultsThemeVariantColours extends IDefaultsThemeVariant { + +} + +export interface IDefaultsThemeVariantUITheme extends IDefaultsThemeVariant { + } \ No newline at end of file diff --git a/extensions/material.theme.config.ts b/extensions/material.theme.config.ts index 5170c49..ddd7302 100644 --- a/extensions/material.theme.config.ts +++ b/extensions/material.theme.config.ts @@ -2,15 +2,16 @@ import * as vscode from 'vscode'; import { IGenericObject } from "./interfaces/igeneric-object"; import { THEME_ACCENTS_SETTER } from "./commands/accents-setter/index"; -import { THEME_CHANGE_LISTENER } from "./commands/theme-icons/index"; +import { THEME_VARIANT } from "./commands/theme-variant/index"; enum Commands { ACCENTS, - COLOR_THEME + COLOUR_VARIANT } const OPTIONS: IGenericObject = { - 'Change accent color': Commands.ACCENTS + 'Change accent color': Commands.ACCENTS, + 'Change color variant': Commands.COLOUR_VARIANT } export function activate(context: vscode.ExtensionContext) { @@ -23,11 +24,12 @@ export function activate(context: vscode.ExtensionContext) { case Commands.ACCENTS: THEME_ACCENTS_SETTER(); break; + case Commands.COLOUR_VARIANT: + THEME_VARIANT(); + break; } }); }); - THEME_CHANGE_LISTENER(); - context.subscriptions.push(command); } diff --git a/package.json b/package.json index bf471fe..678e93d 100644 --- a/package.json +++ b/package.json @@ -66,22 +66,7 @@ { "label": "Material Theme", "uiTheme": "vs-dark", - "path": "./themes/Material-Theme-Default.json" - }, - { - "label": "Material Theme Darker", - "uiTheme": "vs-dark", "path": "./themes/Material-Theme-Darker.json" - }, - { - "label": "Material Theme Palenight", - "uiTheme": "vs-dark", - "path": "./themes/Material-Theme-Palenight.json" - }, - { - "label": "Material Theme Lighter", - "uiTheme": "vs", - "path": "./themes/Material-Theme-Lighter.json" } ], "iconThemes": [ @@ -131,4 +116,4 @@ "yamljs": "0.3.0", "yargs": "8.0.2" } -} +} \ No newline at end of file diff --git a/themes/Material-Theme-Icons.json b/themes/Material-Theme-Icons.json index ece9460..8a3239c 100644 --- a/themes/Material-Theme-Icons.json +++ b/themes/Material-Theme-Icons.json @@ -1 +1 @@ -{"iconDefinitions":{"_folder_dark":{"iconPath":"../icons/folder.svg"},"_folder_dark_build":{"iconPath":"../icons/folder-build.svg"},"_folder_light":{"iconPath":"../icons/folder-light.svg"},"_folder_light_build":{"iconPath":"../icons/folder-light-build.svg"},"_folder_open":{"iconPath":"../icons/folder-outline.accent.Bright-Teal.svg"},"_folder_open_build":{"iconPath":"../icons/folder-outline-build.accent.Bright-Teal.svg"},"_file_dark":{"iconPath":"../icons/file.svg"},"_file_.DS_Store":{"iconPath":"../icons/.DS_Store.svg"},"_file_actionscript":{"iconPath":"../icons/actionscript.svg"},"_file_ai":{"iconPath":"../icons/ai.svg"},"_file_android":{"iconPath":"../icons/android.svg"},"_file_angular":{"iconPath":"../icons/angular.svg"},"_file_applescript":{"iconPath":"../icons/applescript.svg"},"_file_arduino":{"iconPath":"../icons/arduino.svg"},"_file_assembly":{"iconPath":"../icons/assembly.svg"},"_file_autohotkey":{"iconPath":"../icons/autohotkey.svg"},"_file_bower":{"iconPath":"../icons/bower.svg"},"_file_c":{"iconPath":"../icons/c.svg"},"_file_certificate":{"iconPath":"../icons/certificate.svg"},"_file_changelog":{"iconPath":"../icons/changelog.svg"},"_file_clojure":{"iconPath":"../icons/clojure.svg"},"_file_cmake":{"iconPath":"../icons/cmake.svg"},"_file_cmd":{"iconPath":"../icons/cmd.svg"},"_file_coffee":{"iconPath":"../icons/coffee.svg"},"_file_console":{"iconPath":"../icons/console.svg"},"_file_contributing":{"iconPath":"../icons/contributing.svg"},"_file_cpp":{"iconPath":"../icons/cpp.svg"},"_file_credits":{"iconPath":"../icons/credits.svg"},"_file_csharp":{"iconPath":"../icons/csharp.svg"},"_file_css-map":{"iconPath":"../icons/css-map.svg"},"_file_css":{"iconPath":"../icons/css.svg"},"_file_dart":{"iconPath":"../icons/dart.svg"},"_file_database":{"iconPath":"../icons/database.svg"},"_file_dlang":{"iconPath":"../icons/dlang.svg"},"_file_docker":{"iconPath":"../icons/docker.svg"},"_file_document":{"iconPath":"../icons/document.svg"},"_file_email":{"iconPath":"../icons/email.svg"},"_file_eslint":{"iconPath":"../icons/eslint.svg"},"_file_ex":{"iconPath":"../icons/ex.svg"},"_file_exe":{"iconPath":"../icons/exe.svg"},"_file_favicon":{"iconPath":"../icons/favicon.svg"},"_file_file":{"iconPath":"../icons/file.svg"},"_file_flash":{"iconPath":"../icons/flash.svg"},"_file_flow":{"iconPath":"../icons/flow.svg"},"_file_folder-build":{"iconPath":"../icons/folder-build.svg"},"_file_folder-light-build":{"iconPath":"../icons/folder-light-build.svg"},"_file_folder-light":{"iconPath":"../icons/folder-light.svg"},"_file_folder-outline-build":{"iconPath":"../icons/folder-outline-build.svg"},"_file_folder-outline":{"iconPath":"../icons/folder-outline.svg"},"_file_folder":{"iconPath":"../icons/folder.svg"},"_file_font":{"iconPath":"../icons/font.svg"},"_file_fsharp":{"iconPath":"../icons/fsharp.svg"},"_file_git":{"iconPath":"../icons/git.svg"},"_file_github":{"iconPath":"../icons/github.svg"},"_file_go":{"iconPath":"../icons/go.svg"},"_file_gopher":{"iconPath":"../icons/gopher.svg"},"_file_gradle":{"iconPath":"../icons/gradle.svg"},"_file_graphql":{"iconPath":"../icons/graphql.svg"},"_file_groovy":{"iconPath":"../icons/groovy.svg"},"_file_grunt":{"iconPath":"../icons/grunt.svg"},"_file_gulp":{"iconPath":"../icons/gulp.svg"},"_file_haml":{"iconPath":"../icons/haml.svg"},"_file_haskell":{"iconPath":"../icons/haskell.svg"},"_file_html":{"iconPath":"../icons/html.svg"},"_file_image":{"iconPath":"../icons/image.svg"},"_file_ionic":{"iconPath":"../icons/ionic.svg"},"_file_java":{"iconPath":"../icons/java.svg"},"_file_javascript-map":{"iconPath":"../icons/javascript-map.svg"},"_file_js":{"iconPath":"../icons/js.svg"},"_file_json":{"iconPath":"../icons/json.svg"},"_file_key":{"iconPath":"../icons/key.svg"},"_file_kotlin":{"iconPath":"../icons/kotlin.svg"},"_file_less":{"iconPath":"../icons/less.svg"},"_file_lib":{"iconPath":"../icons/lib.svg"},"_file_license":{"iconPath":"../icons/license.svg"},"_file_lua":{"iconPath":"../icons/lua.svg"},"_file_markdown":{"iconPath":"../icons/markdown.svg"},"_file_markup":{"iconPath":"../icons/markup.svg"},"_file_movie":{"iconPath":"../icons/movie.svg"},"_file_music":{"iconPath":"../icons/music.svg"},"_file_mustache":{"iconPath":"../icons/mustache.svg"},"_file_mxml":{"iconPath":"../icons/mxml.svg"},"_file_nodejs":{"iconPath":"../icons/nodejs.svg"},"_file_npm":{"iconPath":"../icons/npm.svg"},"_file_ocaml":{"iconPath":"../icons/ocaml.svg"},"_file_pdf":{"iconPath":"../icons/pdf.svg"},"_file_php":{"iconPath":"../icons/php.svg"},"_file_polymer":{"iconPath":"../icons/polymer.svg"},"_file_postcss":{"iconPath":"../icons/postcss.svg"},"_file_powerpoint":{"iconPath":"../icons/powerpoint.svg"},"_file_pp":{"iconPath":"../icons/pp.svg"},"_file_procfile":{"iconPath":"../icons/procfile.svg"},"_file_pug":{"iconPath":"../icons/pug.svg"},"_file_python":{"iconPath":"../icons/python.svg"},"_file_r":{"iconPath":"../icons/r.svg"},"_file_rails":{"iconPath":"../icons/rails.svg"},"_file_raml":{"iconPath":"../icons/raml.svg"},"_file_react":{"iconPath":"../icons/react.svg"},"_file_readme":{"iconPath":"../icons/readme.svg"},"_file_ruby":{"iconPath":"../icons/ruby.svg"},"_file_rust":{"iconPath":"../icons/rust.svg"},"_file_sass":{"iconPath":"../icons/sass.svg"},"_file_settings":{"iconPath":"../icons/settings.svg"},"_file_sketch":{"iconPath":"../icons/sketch.svg"},"_file_star":{"iconPath":"../icons/star.svg"},"_file_stylelint":{"iconPath":"../icons/stylelint.svg"},"_file_stylus":{"iconPath":"../icons/stylus.svg"},"_file_sublime":{"iconPath":"../icons/sublime.svg"},"_file_svg":{"iconPath":"../icons/svg.svg"},"_file_swc":{"iconPath":"../icons/swc.svg"},"_file_swift":{"iconPath":"../icons/swift.svg"},"_file_swig":{"iconPath":"../icons/swig.svg"},"_file_table":{"iconPath":"../icons/table.svg"},"_file_tex":{"iconPath":"../icons/tex.svg"},"_file_todo":{"iconPath":"../icons/todo.svg"},"_file_tune":{"iconPath":"../icons/tune.svg"},"_file_twig":{"iconPath":"../icons/twig.svg"},"_file_typescript":{"iconPath":"../icons/typescript.svg"},"_file_typescript_def":{"iconPath":"../icons/typescript_def.svg"},"_file_url":{"iconPath":"../icons/url.svg"},"_file_virtual":{"iconPath":"../icons/virtual.svg"},"_file_visualstudio":{"iconPath":"../icons/visualstudio.svg"},"_file_vue":{"iconPath":"../icons/vue.svg"},"_file_webpack":{"iconPath":"../icons/webpack.svg"},"_file_word":{"iconPath":"../icons/word.svg"},"_file_xaml":{"iconPath":"../icons/xaml.svg"},"_file_xml":{"iconPath":"../icons/xml.svg"},"_file_yaml":{"iconPath":"../icons/yaml.svg"},"_file_yarn":{"iconPath":"../icons/yarn.svg"},"_file_zip":{"iconPath":"../icons/zip.svg"}},"fileExtensions":{"cmd":"_file_cmd","mustache":"_file_mustache","rails":"_file_rails","styl":"_file_stylus","twig":"_file_twig","swig":"_file_swig","sketch":"_file_sketch","do":"_file_todo","sublime-settings":"_file_sublime","sublime-theme":"_file_sublime","sublime-commands":"_file_sublime","sublime-menu":"_file_sublime","html":"_file_html","jade":"_file_pug","pug":"_file_pug","md":"_file_markdown","md.rendered":"_file_markdown","markdown":"_file_markdown","markdown.rendered":"_file_markdown","css":"_file_css","postcss":"_file_postcss","scss":"_file_sass","sass":"_file_sass","less":"_file_less","json":"_file_json","yaml":"_file_yaml","YAML-tmLanguage":"_file_yaml","yml":"_file_yaml","xml":"_file_xml","plist":"_file_xml","xsd":"_file_xml","dtd":"_file_xml","xsl":"_file_xml","xslt":"_file_xml","resx":"_file_xml","iml":"_file_xml","xquery":"_file_xml","tmLanguage":"_file_xml","png":"_file_image","jpeg":"_file_image","jpg":"_file_image","gif":"_file_image","svg":"_file_svg","eps":"_file_svg","ai":"_file_ai","ico":"_file_image","tif":"_file_image","tiff":"_file_image","psd":"_file_image","psb":"_file_image","ami":"_file_image","apx":"_file_image","bmp":"_file_image","bpg":"_file_image","brk":"_file_image","cur":"_file_image","dds":"_file_image","dng":"_file_image","exr":"_file_image","fpx":"_file_image","gbr":"_file_image","img":"_file_image","jbig2":"_file_image","jb2":"_file_image","jng":"_file_image","jxr":"_file_image","pbm":"_file_image","pgf":"_file_image","pic":"_file_image","raw":"_file_image","webp":"_file_image","php":"_file_php","js":"_file_js","ejs":"_file_js","jsx":"_file_react","ini":"_file_settings","dlc":"_file_settings","dll":"_file_settings","config":"_file_settings","conf":"_file_settings","esx":"_file_js","ts":"_file_typescript","tsx":"_file_react","d.ts":"_file_typescript_def","pdf":"_file_pdf","xlsx":"_file_table","xls":"_file_table","csv":"_file_table","vscodeignore":"_file_vs","vsixmanifest":"_file_vs","suo":"_file_vs","sln":"_file_vs","pdb":"_file_database","cs":"_file_csharp","csx":"_file_csharp","csproj":"_file_vs","zip":"_file_zip","tar":"_file_zip","gz":"_file_zip","xz":"_file_zip","bzip2":"_file_zip","gzip":"_file_zip","7z":"_file_zip","7zip":"_file_zip","pzip":"_file_zip","wim":"_file_zip","rar":"_file_zip","tgz":"_file_zip","exe":"_file_exe","msi":"_file_exe","java":"_file_java","jar":"_file_java","jsp":"_file_java","c":"_file_c","h":"_file_c","m":"_file_c","cc":"_file_cpp","cpp":"_file_cpp","c++":"_file_cpp","hpp":"_file_cpp","mm":"_file_cpp","cxx":"_file_cpp","go":"_file_go","py":"_file_python","url":"_file_url","sh":"_file_console","bat":"_file_console","ps1":"_file_console","fish":"_file_console","bash":"_file_console","gradle":"_file_gradle","doc":"_file_word","docx":"_file_word","rtf":"_file_word","properties":"_file_settings","prop":"_file_settings","settings":"_file_settings","sql":"_file_database","accdb":"_file_database","mdb":"_file_database","cer":"_file_certificate","cert":"_file_certificate","crt":"_file_certificate","pub":"_file_key","key":"_file_key","pem":"_file_key","asc":"_file_key","woff":"_file_font","woff2":"_file_font","ttf":"_file_font","eot":"_file_font","suit":"_file_font","otf":"_file_font","bmap":"_file_font","fnt":"_file_font","odttf":"_file_font","ttc":"_file_font","font":"_file_font","fonts":"_file_font","sui":"_file_font","ntf":"_file_font","mrf":"_file_font","lib":"_file_lib","rb":"_file_ruby","erb":"_file_ruby","fs":"_file_fsharp","fsx":"_file_fsharp","fsi":"_file_fsharp","fsproj":"_file_fsharp","manifest":"_file_xml","swift":"_file_swift","ino":"_file_arduino","dockerignore":"_file_docker","tex":"_file_tex","bib":"_file_lib","pptx":"_file_powerpoint","ppt":"_file_powerpoint","pptm":"_file_powerpoint","potx":"_file_powerpoint","pot":"_file_powerpoint","potm":"_file_powerpoint","ppsx":"_file_powerpoint","ppsm":"_file_powerpoint","pps":"_file_powerpoint","ppam":"_file_powerpoint","ppa":"_file_powerpoint","webm":"_file_movie","mkv":"_file_movie","flv":"_file_movie","vob":"_file_movie","ogv":"_file_movie","ogg":"_file_movie","gifv":"_file_movie","avi":"_file_movie","mov":"_file_movie","qt":"_file_movie","wmv":"_file_movie","yuv":"_file_movie","rm":"_file_movie","rmvb":"_file_movie","mp4":"_file_movie","m4v":"_file_movie","mpg":"_file_movie","mp2":"_file_movie","mpeg":"_file_movie","mpe":"_file_movie","mpv":"_file_movie","m2v":"_file_movie","vdi":"_file_virtual","vbox":"_file_virtual","vbox-prev":"_file_virtual","ics":"_file_email","mp3":"_file_music","flac":"_file_music","m4a":"_file_music","wma":"_file_music","aiff":"_file_music","coffee":"_file_coffee","txt":"_file_document","sqlite":"_file_database","graphql":"_file_graphql","gql":"_file_graphql","props":"_file_settings","toml":"_file_settings","rs":"_file_rust","raml":"_file_raml","xaml":"_file_xaml","prefs":"_file_settings","hs":"_file_haskell","kt":"_file_kotlin","project":"_file_xml","patch":"_file_git","dockerfile":"_file_docker","vb":"_file_vs","lua":"_file_lua","clj":"_file_clojure","groovy":"_file_groovy","r":"_file_r","rst":"_file_markdown","dart":"_file_dart","as":"_file_actionscript","mxml":"_file_mxml","ahk":"_file_autohotkey","swf":"_file_flash","swc":"_file_swc","cmake":"_file_cmake","asm":"_file_assembly","a51":"_file_assembly","inc":"_file_assembly","nasm":"_file_assembly","s":"_file_assembly","ms":"_file_assembly","agc":"_file_assembly","ags":"_file_assembly","aea":"_file_assembly","argus":"_file_assembly","mitigus":"_file_assembly","binsource":"_file_assembly","vue":"_file_vue","ml":"_file_ocaml","mli":"_file_ocaml","cmx":"_file_ocaml","js.map":"_file_jsmap","css.map":"_file_cssmap","tmTheme":"_file_markup","pp":"_file_pp","applescript":"_file_applescript","haml":"_file_haml","ex":"_file_ex"},"fileNames":{"gruntfile.js":"_file_grunt","bower.json":"_file_bower",".bowerrc":"_file_bower","webpack.js":"_file_webpack","webpack.config.js":"_file_webpack","webpack.dev.js":"_file_webpack","webpack.prod.js":"_file_webpack","webpack.common.js":"_file_webpack","webpackfile.js":"_file_webpack","ionic.config.json":"_file_ionic",".io-config.json":"_file_ionic","gulpfile.js":"_file_gulp","gulpfile.babel.js":"_file_gulp","package.json":"_file_npm","gradle.properties":"_file_gradle","gradlew":"_file_gradle",".jscsrc":"_file_json",".jshintrc":"_file_json",".jshintignore":"_file_settings",".npmignore":"_file_npm","tsconfig.json":"_file_json","tslint.json":"_file_json","androidmanifest.xml":"_file_android","gradle-wrapper.properties":"_file_gradle",".editorconfig":"_file_settings","procfile":"_file_procfile",".env":"_file_tune","dockerfile":"_file_docker","license":"_file_license","license.md":"_file_license","license.md.rendered":"_file_license","license.txt":"_file_license",".babelrc":"_file_json",".eslintrc":"_file_eslint",".eslintrc.js":"_file_eslint",".eslintrc.json":"_file_eslint",".eslintrc.yml":"_file_eslint",".stylelintrc":"_file_stylelint",".stylelint.js":"_file_stylelint",".stylelintrc.json":"_file_stylelint",".stylelintrc.yml":"_file_stylelint",".buildignore":"_file_settings",".htaccess":"_file_xml","composer.lock":"_file_json",".gitignore":"_file_git",".gitconfig":"_file_git",".gitattributes":"_file_git",".gitmodules":"_file_git",".gitkeep":"_file_git","yarn.lock":"_file_yarn",".yarnclean":"_file_yarn",".yarn-integrity":"_file_yarn","yarn-error.log":"_file_yarn","contributing.md":"_file_contributing","contributing.md.rendered":"_file_contributing","readme.md":"_file_readme","readme.md.rendered":"_file_readme",".mailmap":"_file_email","makefile":"_file_settings","changelog":"_file_changelog","changelog.md":"_file_changelog","changelog.md.rendered":"_file_changelog","CREDITS":"_file_credits","credits.txt":"_file_credits","credits.md":"_file_credits","credits.md.rendered":"_file_credits",".flowconfig":"_file_flow",".jsbeautifyrc":"_file_json","git-history":"_file_git","angular-cli.json":"_file_angular","app.module.ts":"_file_angular","favicon.ico":"_file_favicon"},"file":"_file_dark","folder":"_folder_dark","folderExpanded":"_folder_open","languageIds":{"git":"_file_git"},"light":{"folderExpanded":"_folder_open","folder":"_folder_light","folderNames":{"node_modules":"_file_nodejs",".git":"_file_git",".github":"_file_github",".gulp":"_file_gulp","bower_components":"_file_bower","build":"_folder_light_build","dist":"_folder_light_build"},"folderNamesExpanded":{"node_modules":"_file_nodejs",".git":"_file_git",".github":"_file_github",".gulp":"_file_gulp","bower_components":"_file_bower","build":"_folder_light_build","dist":"_folder_light_build"}},"folderNames":{"node_modules":"_file_nodejs",".git":"_file_git",".github":"_file_github",".gulp":"_file_gulp","bower_components":"_file_bower","build":"_folder_dark_build","dist":"_folder_dark_build"},"folderNamesExpanded":{"node_modules":"_file_nodejs",".git":"_file_git",".github":"_file_github",".gulp":"_file_gulp","bower_components":"_file_bower","build":"_folder_open_build","dist":"_folder_open_build"}} \ No newline at end of file +{"iconDefinitions":{"_folder_dark":{"iconPath":"../icons/folderDarker.svg"},"_folder_dark_build":{"iconPath":"../icons/folder-buildDarker.svg"},"_folder_light":{"iconPath":"../icons/folder-light.svg"},"_folder_light_build":{"iconPath":"../icons/folder-light-build.svg"},"_folder_open":{"iconPath":"../icons/folder-outline.svg"},"_folder_open_build":{"iconPath":"../icons/folder-outline-build.svg"},"_file_dark":{"iconPath":"../icons/file.svg"},"_file_actionscript":{"iconPath":"../icons/actionscript.svg"},"_file_ai":{"iconPath":"../icons/ai.svg"},"_file_android":{"iconPath":"../icons/android.svg"},"_file_angular":{"iconPath":"../icons/angular.svg"},"_file_applescript":{"iconPath":"../icons/applescript.svg"},"_file_arduino":{"iconPath":"../icons/arduino.svg"},"_file_assembly":{"iconPath":"../icons/assembly.svg"},"_file_autohotkey":{"iconPath":"../icons/autohotkey.svg"},"_file_bower":{"iconPath":"../icons/bower.svg"},"_file_c":{"iconPath":"../icons/c.svg"},"_file_certificate":{"iconPath":"../icons/certificate.svg"},"_file_changelog":{"iconPath":"../icons/changelog.svg"},"_file_clojure":{"iconPath":"../icons/clojure.svg"},"_file_cmake":{"iconPath":"../icons/cmake.svg"},"_file_cmd":{"iconPath":"../icons/cmd.svg"},"_file_coffee":{"iconPath":"../icons/coffee.svg"},"_file_console":{"iconPath":"../icons/console.svg"},"_file_contributing":{"iconPath":"../icons/contributing.svg"},"_file_cpp":{"iconPath":"../icons/cpp.svg"},"_file_credits":{"iconPath":"../icons/credits.svg"},"_file_csharp":{"iconPath":"../icons/csharp.svg"},"_file_css-map":{"iconPath":"../icons/css-map.svg"},"_file_css":{"iconPath":"../icons/css.svg"},"_file_dart":{"iconPath":"../icons/dart.svg"},"_file_database":{"iconPath":"../icons/database.svg"},"_file_dlang":{"iconPath":"../icons/dlang.svg"},"_file_docker":{"iconPath":"../icons/docker.svg"},"_file_document":{"iconPath":"../icons/document.svg"},"_file_email":{"iconPath":"../icons/email.svg"},"_file_eslint":{"iconPath":"../icons/eslint.svg"},"_file_ex":{"iconPath":"../icons/ex.svg"},"_file_exe":{"iconPath":"../icons/exe.svg"},"_file_favicon":{"iconPath":"../icons/favicon.svg"},"_file_file":{"iconPath":"../icons/file.svg"},"_file_flash":{"iconPath":"../icons/flash.svg"},"_file_flow":{"iconPath":"../icons/flow.svg"},"_file_folder-build":{"iconPath":"../icons/folder-buildDarker.svg"},"_file_folder-light-build":{"iconPath":"../icons/folder-light-build.svg"},"_file_folder-light":{"iconPath":"../icons/folder-light.svg"},"_file_folder-outline-build":{"iconPath":"../icons/folder-outline-build.svg"},"_file_folder-outline":{"iconPath":"../icons/folder-outline.svg"},"_file_folder":{"iconPath":"../icons/folderDarker.svg"},"_file_font":{"iconPath":"../icons/font.svg"},"_file_fsharp":{"iconPath":"../icons/fsharp.svg"},"_file_git":{"iconPath":"../icons/git.svg"},"_file_github":{"iconPath":"../icons/github.svg"},"_file_go":{"iconPath":"../icons/go.svg"},"_file_gopher":{"iconPath":"../icons/gopher.svg"},"_file_gradle":{"iconPath":"../icons/gradle.svg"},"_file_graphql":{"iconPath":"../icons/graphql.svg"},"_file_groovy":{"iconPath":"../icons/groovy.svg"},"_file_grunt":{"iconPath":"../icons/grunt.svg"},"_file_gulp":{"iconPath":"../icons/gulp.svg"},"_file_haml":{"iconPath":"../icons/haml.svg"},"_file_haskell":{"iconPath":"../icons/haskell.svg"},"_file_html":{"iconPath":"../icons/html.svg"},"_file_image":{"iconPath":"../icons/image.svg"},"_file_ionic":{"iconPath":"../icons/ionic.svg"},"_file_java":{"iconPath":"../icons/java.svg"},"_file_javascript-map":{"iconPath":"../icons/javascript-map.svg"},"_file_js":{"iconPath":"../icons/js.svg"},"_file_json":{"iconPath":"../icons/json.svg"},"_file_key":{"iconPath":"../icons/key.svg"},"_file_kotlin":{"iconPath":"../icons/kotlin.svg"},"_file_less":{"iconPath":"../icons/less.svg"},"_file_lib":{"iconPath":"../icons/lib.svg"},"_file_license":{"iconPath":"../icons/license.svg"},"_file_lua":{"iconPath":"../icons/lua.svg"},"_file_markdown":{"iconPath":"../icons/markdown.svg"},"_file_markup":{"iconPath":"../icons/markup.svg"},"_file_movie":{"iconPath":"../icons/movie.svg"},"_file_music":{"iconPath":"../icons/music.svg"},"_file_mustache":{"iconPath":"../icons/mustache.svg"},"_file_mxml":{"iconPath":"../icons/mxml.svg"},"_file_nodejs":{"iconPath":"../icons/nodejs.svg"},"_file_npm":{"iconPath":"../icons/npm.svg"},"_file_ocaml":{"iconPath":"../icons/ocaml.svg"},"_file_pdf":{"iconPath":"../icons/pdf.svg"},"_file_php":{"iconPath":"../icons/php.svg"},"_file_polymer":{"iconPath":"../icons/polymer.svg"},"_file_postcss":{"iconPath":"../icons/postcss.svg"},"_file_powerpoint":{"iconPath":"../icons/powerpoint.svg"},"_file_pp":{"iconPath":"../icons/pp.svg"},"_file_procfile":{"iconPath":"../icons/procfile.svg"},"_file_pug":{"iconPath":"../icons/pug.svg"},"_file_python":{"iconPath":"../icons/python.svg"},"_file_r":{"iconPath":"../icons/r.svg"},"_file_rails":{"iconPath":"../icons/rails.svg"},"_file_raml":{"iconPath":"../icons/raml.svg"},"_file_react":{"iconPath":"../icons/react.svg"},"_file_readme":{"iconPath":"../icons/readme.svg"},"_file_ruby":{"iconPath":"../icons/ruby.svg"},"_file_rust":{"iconPath":"../icons/rust.svg"},"_file_sass":{"iconPath":"../icons/sass.svg"},"_file_settings":{"iconPath":"../icons/settings.svg"},"_file_sketch":{"iconPath":"../icons/sketch.svg"},"_file_star":{"iconPath":"../icons/star.svg"},"_file_stylelint":{"iconPath":"../icons/stylelint.svg"},"_file_stylus":{"iconPath":"../icons/stylus.svg"},"_file_sublime":{"iconPath":"../icons/sublime.svg"},"_file_svg":{"iconPath":"../icons/svg.svg"},"_file_swc":{"iconPath":"../icons/swc.svg"},"_file_swift":{"iconPath":"../icons/swift.svg"},"_file_swig":{"iconPath":"../icons/swig.svg"},"_file_table":{"iconPath":"../icons/table.svg"},"_file_tex":{"iconPath":"../icons/tex.svg"},"_file_todo":{"iconPath":"../icons/todo.svg"},"_file_tune":{"iconPath":"../icons/tune.svg"},"_file_twig":{"iconPath":"../icons/twig.svg"},"_file_typescript":{"iconPath":"../icons/typescript.svg"},"_file_typescript_def":{"iconPath":"../icons/typescript_def.svg"},"_file_url":{"iconPath":"../icons/url.svg"},"_file_virtual":{"iconPath":"../icons/virtual.svg"},"_file_visualstudio":{"iconPath":"../icons/visualstudio.svg"},"_file_vue":{"iconPath":"../icons/vue.svg"},"_file_webpack":{"iconPath":"../icons/webpack.svg"},"_file_word":{"iconPath":"../icons/word.svg"},"_file_xaml":{"iconPath":"../icons/xaml.svg"},"_file_xml":{"iconPath":"../icons/xml.svg"},"_file_yaml":{"iconPath":"../icons/yaml.svg"},"_file_yarn":{"iconPath":"../icons/yarn.svg"},"_file_zip":{"iconPath":"../icons/zip.svg"}},"fileExtensions":{"cmd":"_file_cmd","mustache":"_file_mustache","rails":"_file_rails","styl":"_file_stylus","twig":"_file_twig","swig":"_file_swig","sketch":"_file_sketch","do":"_file_todo","sublime-settings":"_file_sublime","sublime-theme":"_file_sublime","sublime-commands":"_file_sublime","sublime-menu":"_file_sublime","html":"_file_html","jade":"_file_pug","pug":"_file_pug","md":"_file_markdown","md.rendered":"_file_markdown","markdown":"_file_markdown","markdown.rendered":"_file_markdown","css":"_file_css","postcss":"_file_postcss","scss":"_file_sass","sass":"_file_sass","less":"_file_less","json":"_file_json","yaml":"_file_yaml","YAML-tmLanguage":"_file_yaml","yml":"_file_yaml","xml":"_file_xml","plist":"_file_xml","xsd":"_file_xml","dtd":"_file_xml","xsl":"_file_xml","xslt":"_file_xml","resx":"_file_xml","iml":"_file_xml","xquery":"_file_xml","tmLanguage":"_file_xml","png":"_file_image","jpeg":"_file_image","jpg":"_file_image","gif":"_file_image","svg":"_file_svg","eps":"_file_svg","ai":"_file_ai","ico":"_file_image","tif":"_file_image","tiff":"_file_image","psd":"_file_image","psb":"_file_image","ami":"_file_image","apx":"_file_image","bmp":"_file_image","bpg":"_file_image","brk":"_file_image","cur":"_file_image","dds":"_file_image","dng":"_file_image","exr":"_file_image","fpx":"_file_image","gbr":"_file_image","img":"_file_image","jbig2":"_file_image","jb2":"_file_image","jng":"_file_image","jxr":"_file_image","pbm":"_file_image","pgf":"_file_image","pic":"_file_image","raw":"_file_image","webp":"_file_image","php":"_file_php","js":"_file_js","ejs":"_file_js","jsx":"_file_react","ini":"_file_settings","dlc":"_file_settings","dll":"_file_settings","config":"_file_settings","conf":"_file_settings","esx":"_file_js","ts":"_file_typescript","tsx":"_file_react","d.ts":"_file_typescript_def","pdf":"_file_pdf","xlsx":"_file_table","xls":"_file_table","csv":"_file_table","vscodeignore":"_file_vs","vsixmanifest":"_file_vs","suo":"_file_vs","sln":"_file_vs","pdb":"_file_database","cs":"_file_csharp","csx":"_file_csharp","csproj":"_file_vs","zip":"_file_zip","tar":"_file_zip","gz":"_file_zip","xz":"_file_zip","bzip2":"_file_zip","gzip":"_file_zip","7z":"_file_zip","7zip":"_file_zip","pzip":"_file_zip","wim":"_file_zip","rar":"_file_zip","tgz":"_file_zip","exe":"_file_exe","msi":"_file_exe","java":"_file_java","jar":"_file_java","jsp":"_file_java","c":"_file_c","h":"_file_c","m":"_file_c","cc":"_file_cpp","cpp":"_file_cpp","c++":"_file_cpp","hpp":"_file_cpp","mm":"_file_cpp","cxx":"_file_cpp","go":"_file_go","py":"_file_python","url":"_file_url","sh":"_file_console","bat":"_file_console","ps1":"_file_console","fish":"_file_console","bash":"_file_console","gradle":"_file_gradle","doc":"_file_word","docx":"_file_word","rtf":"_file_word","properties":"_file_settings","prop":"_file_settings","settings":"_file_settings","sql":"_file_database","accdb":"_file_database","mdb":"_file_database","cer":"_file_certificate","cert":"_file_certificate","crt":"_file_certificate","pub":"_file_key","key":"_file_key","pem":"_file_key","asc":"_file_key","woff":"_file_font","woff2":"_file_font","ttf":"_file_font","eot":"_file_font","suit":"_file_font","otf":"_file_font","bmap":"_file_font","fnt":"_file_font","odttf":"_file_font","ttc":"_file_font","font":"_file_font","fonts":"_file_font","sui":"_file_font","ntf":"_file_font","mrf":"_file_font","lib":"_file_lib","rb":"_file_ruby","erb":"_file_ruby","fs":"_file_fsharp","fsx":"_file_fsharp","fsi":"_file_fsharp","fsproj":"_file_fsharp","manifest":"_file_xml","swift":"_file_swift","ino":"_file_arduino","dockerignore":"_file_docker","tex":"_file_tex","bib":"_file_lib","pptx":"_file_powerpoint","ppt":"_file_powerpoint","pptm":"_file_powerpoint","potx":"_file_powerpoint","pot":"_file_powerpoint","potm":"_file_powerpoint","ppsx":"_file_powerpoint","ppsm":"_file_powerpoint","pps":"_file_powerpoint","ppam":"_file_powerpoint","ppa":"_file_powerpoint","webm":"_file_movie","mkv":"_file_movie","flv":"_file_movie","vob":"_file_movie","ogv":"_file_movie","ogg":"_file_movie","gifv":"_file_movie","avi":"_file_movie","mov":"_file_movie","qt":"_file_movie","wmv":"_file_movie","yuv":"_file_movie","rm":"_file_movie","rmvb":"_file_movie","mp4":"_file_movie","m4v":"_file_movie","mpg":"_file_movie","mp2":"_file_movie","mpeg":"_file_movie","mpe":"_file_movie","mpv":"_file_movie","m2v":"_file_movie","vdi":"_file_virtual","vbox":"_file_virtual","vbox-prev":"_file_virtual","ics":"_file_email","mp3":"_file_music","flac":"_file_music","m4a":"_file_music","wma":"_file_music","aiff":"_file_music","coffee":"_file_coffee","txt":"_file_document","sqlite":"_file_database","graphql":"_file_graphql","gql":"_file_graphql","props":"_file_settings","toml":"_file_settings","rs":"_file_rust","raml":"_file_raml","xaml":"_file_xaml","prefs":"_file_settings","hs":"_file_haskell","kt":"_file_kotlin","project":"_file_xml","patch":"_file_git","dockerfile":"_file_docker","vb":"_file_vs","lua":"_file_lua","clj":"_file_clojure","groovy":"_file_groovy","r":"_file_r","rst":"_file_markdown","dart":"_file_dart","as":"_file_actionscript","mxml":"_file_mxml","ahk":"_file_autohotkey","swf":"_file_flash","swc":"_file_swc","cmake":"_file_cmake","asm":"_file_assembly","a51":"_file_assembly","inc":"_file_assembly","nasm":"_file_assembly","s":"_file_assembly","ms":"_file_assembly","agc":"_file_assembly","ags":"_file_assembly","aea":"_file_assembly","argus":"_file_assembly","mitigus":"_file_assembly","binsource":"_file_assembly","vue":"_file_vue","ml":"_file_ocaml","mli":"_file_ocaml","cmx":"_file_ocaml","js.map":"_file_jsmap","css.map":"_file_cssmap","tmTheme":"_file_markup","pp":"_file_pp","applescript":"_file_applescript","haml":"_file_haml","ex":"_file_ex"},"fileNames":{"gruntfile.js":"_file_grunt","bower.json":"_file_bower",".bowerrc":"_file_bower","webpack.js":"_file_webpack","webpack.config.js":"_file_webpack","webpack.dev.js":"_file_webpack","webpack.prod.js":"_file_webpack","webpack.common.js":"_file_webpack","webpackfile.js":"_file_webpack","ionic.config.json":"_file_ionic",".io-config.json":"_file_ionic","gulpfile.js":"_file_gulp","gulpfile.babel.js":"_file_gulp","package.json":"_file_npm","gradle.properties":"_file_gradle","gradlew":"_file_gradle",".jscsrc":"_file_json",".jshintrc":"_file_json",".jshintignore":"_file_settings",".npmignore":"_file_npm","tsconfig.json":"_file_json","tslint.json":"_file_json","androidmanifest.xml":"_file_android","gradle-wrapper.properties":"_file_gradle",".editorconfig":"_file_settings","procfile":"_file_procfile",".env":"_file_tune","dockerfile":"_file_docker","license":"_file_license","license.md":"_file_license","license.md.rendered":"_file_license","license.txt":"_file_license",".babelrc":"_file_json",".eslintrc":"_file_eslint",".eslintrc.js":"_file_eslint",".eslintrc.json":"_file_eslint",".eslintrc.yml":"_file_eslint",".stylelintrc":"_file_stylelint",".stylelint.js":"_file_stylelint",".stylelintrc.json":"_file_stylelint",".stylelintrc.yml":"_file_stylelint",".buildignore":"_file_settings",".htaccess":"_file_xml","composer.lock":"_file_json",".gitignore":"_file_git",".gitconfig":"_file_git",".gitattributes":"_file_git",".gitmodules":"_file_git",".gitkeep":"_file_git","yarn.lock":"_file_yarn",".yarnclean":"_file_yarn",".yarn-integrity":"_file_yarn","yarn-error.log":"_file_yarn","contributing.md":"_file_contributing","contributing.md.rendered":"_file_contributing","readme.md":"_file_readme","readme.md.rendered":"_file_readme",".mailmap":"_file_email","makefile":"_file_settings","changelog":"_file_changelog","changelog.md":"_file_changelog","changelog.md.rendered":"_file_changelog","CREDITS":"_file_credits","credits.txt":"_file_credits","credits.md":"_file_credits","credits.md.rendered":"_file_credits",".flowconfig":"_file_flow",".jsbeautifyrc":"_file_json","git-history":"_file_git","angular-cli.json":"_file_angular","app.module.ts":"_file_angular","favicon.ico":"_file_favicon"},"file":"_file_dark","folder":"_folder_dark","folderExpanded":"_folder_open","languageIds":{"git":"_file_git"},"light":{"folderExpanded":"_folder_open","folder":"_folder_light","folderNames":{"node_modules":"_file_nodejs",".git":"_file_git",".github":"_file_github",".gulp":"_file_gulp","bower_components":"_file_bower","build":"_folder_light_build","dist":"_folder_light_build"},"folderNamesExpanded":{"node_modules":"_file_nodejs",".git":"_file_git",".github":"_file_github",".gulp":"_file_gulp","bower_components":"_file_bower","build":"_folder_light_build","dist":"_folder_light_build"}},"folderNames":{"node_modules":"_file_nodejs",".git":"_file_git",".github":"_file_github",".gulp":"_file_gulp","bower_components":"_file_bower","build":"_folder_dark_build","dist":"_folder_dark_build"},"folderNamesExpanded":{"node_modules":"_file_nodejs",".git":"_file_git",".github":"_file_github",".gulp":"_file_gulp","bower_components":"_file_bower","build":"_folder_open_build","dist":"_folder_open_build"}} \ No newline at end of file