diff --git a/fileicons/dace-hollow.svg b/fileicons/dace-hollow.svg
new file mode 100644
index 0000000..556db14
--- /dev/null
+++ b/fileicons/dace-hollow.svg
@@ -0,0 +1,15 @@
+
+
+
diff --git a/fileicons/sdfg-icon-theme.json b/fileicons/sdfg-icon-theme.json
new file mode 100644
index 0000000..9fc6b43
--- /dev/null
+++ b/fileicons/sdfg-icon-theme.json
@@ -0,0 +1,2038 @@
+{
+ "information_for_contributors": [
+ "This file has been generated from data in https://github.com/jesseweed/seti-ui",
+ "- icon definitions: https://github.com/jesseweed/seti-ui/blob/master/styles/_fonts/seti.less",
+ "- icon colors: https://github.com/jesseweed/seti-ui/blob/master/styles/ui-variables.less",
+ "- file associations: https://github.com/jesseweed/seti-ui/blob/master/styles/components/icons/mapping.less",
+ "If you want to provide a fix or improvement, please create a pull request against the jesseweed/seti-ui repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "fonts": [
+ {
+ "id": "seti",
+ "src": [
+ {
+ "path": "./seti.woff",
+ "format": "woff"
+ }
+ ],
+ "weight": "normal",
+ "style": "normal",
+ "size": "150%"
+ }
+ ],
+ "iconDefinitions": {
+ "_sdfg_file": {
+ "iconPath": "./sdfg.svg"
+ },
+ "_R_light": {
+ "fontCharacter": "\\E001",
+ "fontColor": "#498ba7"
+ },
+ "_R": {
+ "fontCharacter": "\\E001",
+ "fontColor": "#519aba"
+ },
+ "_argdown_light": {
+ "fontCharacter": "\\E003",
+ "fontColor": "#498ba7"
+ },
+ "_argdown": {
+ "fontCharacter": "\\E003",
+ "fontColor": "#519aba"
+ },
+ "_asm_light": {
+ "fontCharacter": "\\E004",
+ "fontColor": "#b8383d"
+ },
+ "_asm": {
+ "fontCharacter": "\\E004",
+ "fontColor": "#cc3e44"
+ },
+ "_audio_light": {
+ "fontCharacter": "\\E005",
+ "fontColor": "#9068b0"
+ },
+ "_audio": {
+ "fontCharacter": "\\E005",
+ "fontColor": "#a074c4"
+ },
+ "_babel_light": {
+ "fontCharacter": "\\E006",
+ "fontColor": "#b7b73b"
+ },
+ "_babel": {
+ "fontCharacter": "\\E006",
+ "fontColor": "#cbcb41"
+ },
+ "_bower_light": {
+ "fontCharacter": "\\E007",
+ "fontColor": "#cc6d2e"
+ },
+ "_bower": {
+ "fontCharacter": "\\E007",
+ "fontColor": "#e37933"
+ },
+ "_bsl_light": {
+ "fontCharacter": "\\E008",
+ "fontColor": "#b8383d"
+ },
+ "_bsl": {
+ "fontCharacter": "\\E008",
+ "fontColor": "#cc3e44"
+ },
+ "_c_light": {
+ "fontCharacter": "\\E00A",
+ "fontColor": "#498ba7"
+ },
+ "_c": {
+ "fontCharacter": "\\E00A",
+ "fontColor": "#519aba"
+ },
+ "_c-sharp_light": {
+ "fontCharacter": "\\E009",
+ "fontColor": "#498ba7"
+ },
+ "_c-sharp": {
+ "fontCharacter": "\\E009",
+ "fontColor": "#519aba"
+ },
+ "_c_1_light": {
+ "fontCharacter": "\\E00A",
+ "fontColor": "#9068b0"
+ },
+ "_c_1": {
+ "fontCharacter": "\\E00A",
+ "fontColor": "#a074c4"
+ },
+ "_c_2_light": {
+ "fontCharacter": "\\E00A",
+ "fontColor": "#b7b73b"
+ },
+ "_c_2": {
+ "fontCharacter": "\\E00A",
+ "fontColor": "#cbcb41"
+ },
+ "_cake_light": {
+ "fontCharacter": "\\E00B",
+ "fontColor": "#b8383d"
+ },
+ "_cake": {
+ "fontCharacter": "\\E00B",
+ "fontColor": "#cc3e44"
+ },
+ "_cake_php_light": {
+ "fontCharacter": "\\E00C",
+ "fontColor": "#b8383d"
+ },
+ "_cake_php": {
+ "fontCharacter": "\\E00C",
+ "fontColor": "#cc3e44"
+ },
+ "_clock_light": {
+ "fontCharacter": "\\E010",
+ "fontColor": "#498ba7"
+ },
+ "_clock": {
+ "fontCharacter": "\\E010",
+ "fontColor": "#519aba"
+ },
+ "_clock_1_light": {
+ "fontCharacter": "\\E010",
+ "fontColor": "#627379"
+ },
+ "_clock_1": {
+ "fontCharacter": "\\E010",
+ "fontColor": "#6d8086"
+ },
+ "_clojure_light": {
+ "fontCharacter": "\\E011",
+ "fontColor": "#7fae42"
+ },
+ "_clojure": {
+ "fontCharacter": "\\E011",
+ "fontColor": "#8dc149"
+ },
+ "_clojure_1_light": {
+ "fontCharacter": "\\E011",
+ "fontColor": "#498ba7"
+ },
+ "_clojure_1": {
+ "fontCharacter": "\\E011",
+ "fontColor": "#519aba"
+ },
+ "_code-climate_light": {
+ "fontCharacter": "\\E012",
+ "fontColor": "#7fae42"
+ },
+ "_code-climate": {
+ "fontCharacter": "\\E012",
+ "fontColor": "#8dc149"
+ },
+ "_code-search_light": {
+ "fontCharacter": "\\E013",
+ "fontColor": "#9068b0"
+ },
+ "_code-search": {
+ "fontCharacter": "\\E013",
+ "fontColor": "#a074c4"
+ },
+ "_coffee_light": {
+ "fontCharacter": "\\E014",
+ "fontColor": "#b7b73b"
+ },
+ "_coffee": {
+ "fontCharacter": "\\E014",
+ "fontColor": "#cbcb41"
+ },
+ "_coldfusion_light": {
+ "fontCharacter": "\\E016",
+ "fontColor": "#498ba7"
+ },
+ "_coldfusion": {
+ "fontCharacter": "\\E016",
+ "fontColor": "#519aba"
+ },
+ "_config_light": {
+ "fontCharacter": "\\E017",
+ "fontColor": "#627379"
+ },
+ "_config": {
+ "fontCharacter": "\\E017",
+ "fontColor": "#6d8086"
+ },
+ "_cpp_light": {
+ "fontCharacter": "\\E018",
+ "fontColor": "#498ba7"
+ },
+ "_cpp": {
+ "fontCharacter": "\\E018",
+ "fontColor": "#519aba"
+ },
+ "_cpp_1_light": {
+ "fontCharacter": "\\E018",
+ "fontColor": "#9068b0"
+ },
+ "_cpp_1": {
+ "fontCharacter": "\\E018",
+ "fontColor": "#a074c4"
+ },
+ "_cpp_2_light": {
+ "fontCharacter": "\\E018",
+ "fontColor": "#b7b73b"
+ },
+ "_cpp_2": {
+ "fontCharacter": "\\E018",
+ "fontColor": "#cbcb41"
+ },
+ "_crystal_light": {
+ "fontCharacter": "\\E019",
+ "fontColor": "#bfc2c1"
+ },
+ "_crystal": {
+ "fontCharacter": "\\E019",
+ "fontColor": "#d4d7d6"
+ },
+ "_crystal_embedded_light": {
+ "fontCharacter": "\\E01A",
+ "fontColor": "#bfc2c1"
+ },
+ "_crystal_embedded": {
+ "fontCharacter": "\\E01A",
+ "fontColor": "#d4d7d6"
+ },
+ "_css_light": {
+ "fontCharacter": "\\E01B",
+ "fontColor": "#498ba7"
+ },
+ "_css": {
+ "fontCharacter": "\\E01B",
+ "fontColor": "#519aba"
+ },
+ "_csv_light": {
+ "fontCharacter": "\\E01C",
+ "fontColor": "#7fae42"
+ },
+ "_csv": {
+ "fontCharacter": "\\E01C",
+ "fontColor": "#8dc149"
+ },
+ "_d_light": {
+ "fontCharacter": "\\E01D",
+ "fontColor": "#b8383d"
+ },
+ "_d": {
+ "fontCharacter": "\\E01D",
+ "fontColor": "#cc3e44"
+ },
+ "_dart_light": {
+ "fontCharacter": "\\E01E",
+ "fontColor": "#498ba7"
+ },
+ "_dart": {
+ "fontCharacter": "\\E01E",
+ "fontColor": "#519aba"
+ },
+ "_db_light": {
+ "fontCharacter": "\\E01F",
+ "fontColor": "#dd4b78"
+ },
+ "_db": {
+ "fontCharacter": "\\E01F",
+ "fontColor": "#f55385"
+ },
+ "_default_light": {
+ "fontCharacter": "\\E020",
+ "fontColor": "#bfc2c1"
+ },
+ "_default": {
+ "fontCharacter": "\\E020",
+ "fontColor": "#d4d7d6"
+ },
+ "_docker_light": {
+ "fontCharacter": "\\E022",
+ "fontColor": "#498ba7"
+ },
+ "_docker": {
+ "fontCharacter": "\\E022",
+ "fontColor": "#519aba"
+ },
+ "_docker_1_light": {
+ "fontCharacter": "\\E022",
+ "fontColor": "#455155"
+ },
+ "_docker_1": {
+ "fontCharacter": "\\E022",
+ "fontColor": "#4d5a5e"
+ },
+ "_docker_2_light": {
+ "fontCharacter": "\\E022",
+ "fontColor": "#7fae42"
+ },
+ "_docker_2": {
+ "fontCharacter": "\\E022",
+ "fontColor": "#8dc149"
+ },
+ "_docker_3_light": {
+ "fontCharacter": "\\E022",
+ "fontColor": "#dd4b78"
+ },
+ "_docker_3": {
+ "fontCharacter": "\\E022",
+ "fontColor": "#f55385"
+ },
+ "_ejs_light": {
+ "fontCharacter": "\\E024",
+ "fontColor": "#b7b73b"
+ },
+ "_ejs": {
+ "fontCharacter": "\\E024",
+ "fontColor": "#cbcb41"
+ },
+ "_elixir_light": {
+ "fontCharacter": "\\E025",
+ "fontColor": "#9068b0"
+ },
+ "_elixir": {
+ "fontCharacter": "\\E025",
+ "fontColor": "#a074c4"
+ },
+ "_elixir_script_light": {
+ "fontCharacter": "\\E026",
+ "fontColor": "#9068b0"
+ },
+ "_elixir_script": {
+ "fontCharacter": "\\E026",
+ "fontColor": "#a074c4"
+ },
+ "_elm_light": {
+ "fontCharacter": "\\E027",
+ "fontColor": "#498ba7"
+ },
+ "_elm": {
+ "fontCharacter": "\\E027",
+ "fontColor": "#519aba"
+ },
+ "_eslint_light": {
+ "fontCharacter": "\\E029",
+ "fontColor": "#9068b0"
+ },
+ "_eslint": {
+ "fontCharacter": "\\E029",
+ "fontColor": "#a074c4"
+ },
+ "_eslint_1_light": {
+ "fontCharacter": "\\E029",
+ "fontColor": "#455155"
+ },
+ "_eslint_1": {
+ "fontCharacter": "\\E029",
+ "fontColor": "#4d5a5e"
+ },
+ "_ethereum_light": {
+ "fontCharacter": "\\E02A",
+ "fontColor": "#498ba7"
+ },
+ "_ethereum": {
+ "fontCharacter": "\\E02A",
+ "fontColor": "#519aba"
+ },
+ "_f-sharp_light": {
+ "fontCharacter": "\\E02B",
+ "fontColor": "#498ba7"
+ },
+ "_f-sharp": {
+ "fontCharacter": "\\E02B",
+ "fontColor": "#519aba"
+ },
+ "_favicon_light": {
+ "fontCharacter": "\\E02C",
+ "fontColor": "#b7b73b"
+ },
+ "_favicon": {
+ "fontCharacter": "\\E02C",
+ "fontColor": "#cbcb41"
+ },
+ "_firebase_light": {
+ "fontCharacter": "\\E02D",
+ "fontColor": "#cc6d2e"
+ },
+ "_firebase": {
+ "fontCharacter": "\\E02D",
+ "fontColor": "#e37933"
+ },
+ "_firefox_light": {
+ "fontCharacter": "\\E02E",
+ "fontColor": "#cc6d2e"
+ },
+ "_firefox": {
+ "fontCharacter": "\\E02E",
+ "fontColor": "#e37933"
+ },
+ "_font_light": {
+ "fontCharacter": "\\E030",
+ "fontColor": "#b8383d"
+ },
+ "_font": {
+ "fontCharacter": "\\E030",
+ "fontColor": "#cc3e44"
+ },
+ "_git_light": {
+ "fontCharacter": "\\E031",
+ "fontColor": "#3b4b52"
+ },
+ "_git": {
+ "fontCharacter": "\\E031",
+ "fontColor": "#41535b"
+ },
+ "_go_light": {
+ "fontCharacter": "\\E035",
+ "fontColor": "#498ba7"
+ },
+ "_go": {
+ "fontCharacter": "\\E035",
+ "fontColor": "#519aba"
+ },
+ "_go2_light": {
+ "fontCharacter": "\\E036",
+ "fontColor": "#498ba7"
+ },
+ "_go2": {
+ "fontCharacter": "\\E036",
+ "fontColor": "#519aba"
+ },
+ "_gradle_light": {
+ "fontCharacter": "\\E037",
+ "fontColor": "#7fae42"
+ },
+ "_gradle": {
+ "fontCharacter": "\\E037",
+ "fontColor": "#8dc149"
+ },
+ "_grails_light": {
+ "fontCharacter": "\\E038",
+ "fontColor": "#7fae42"
+ },
+ "_grails": {
+ "fontCharacter": "\\E038",
+ "fontColor": "#8dc149"
+ },
+ "_graphql_light": {
+ "fontCharacter": "\\E039",
+ "fontColor": "#dd4b78"
+ },
+ "_graphql": {
+ "fontCharacter": "\\E039",
+ "fontColor": "#f55385"
+ },
+ "_grunt_light": {
+ "fontCharacter": "\\E03A",
+ "fontColor": "#cc6d2e"
+ },
+ "_grunt": {
+ "fontCharacter": "\\E03A",
+ "fontColor": "#e37933"
+ },
+ "_gulp_light": {
+ "fontCharacter": "\\E03B",
+ "fontColor": "#b8383d"
+ },
+ "_gulp": {
+ "fontCharacter": "\\E03B",
+ "fontColor": "#cc3e44"
+ },
+ "_haml_light": {
+ "fontCharacter": "\\E03D",
+ "fontColor": "#b8383d"
+ },
+ "_haml": {
+ "fontCharacter": "\\E03D",
+ "fontColor": "#cc3e44"
+ },
+ "_happenings_light": {
+ "fontCharacter": "\\E03E",
+ "fontColor": "#498ba7"
+ },
+ "_happenings": {
+ "fontCharacter": "\\E03E",
+ "fontColor": "#519aba"
+ },
+ "_haskell_light": {
+ "fontCharacter": "\\E03F",
+ "fontColor": "#9068b0"
+ },
+ "_haskell": {
+ "fontCharacter": "\\E03F",
+ "fontColor": "#a074c4"
+ },
+ "_haxe_light": {
+ "fontCharacter": "\\E040",
+ "fontColor": "#cc6d2e"
+ },
+ "_haxe": {
+ "fontCharacter": "\\E040",
+ "fontColor": "#e37933"
+ },
+ "_haxe_1_light": {
+ "fontCharacter": "\\E040",
+ "fontColor": "#b7b73b"
+ },
+ "_haxe_1": {
+ "fontCharacter": "\\E040",
+ "fontColor": "#cbcb41"
+ },
+ "_haxe_2_light": {
+ "fontCharacter": "\\E040",
+ "fontColor": "#498ba7"
+ },
+ "_haxe_2": {
+ "fontCharacter": "\\E040",
+ "fontColor": "#519aba"
+ },
+ "_haxe_3_light": {
+ "fontCharacter": "\\E040",
+ "fontColor": "#9068b0"
+ },
+ "_haxe_3": {
+ "fontCharacter": "\\E040",
+ "fontColor": "#a074c4"
+ },
+ "_heroku_light": {
+ "fontCharacter": "\\E041",
+ "fontColor": "#9068b0"
+ },
+ "_heroku": {
+ "fontCharacter": "\\E041",
+ "fontColor": "#a074c4"
+ },
+ "_hex_light": {
+ "fontCharacter": "\\E042",
+ "fontColor": "#b8383d"
+ },
+ "_hex": {
+ "fontCharacter": "\\E042",
+ "fontColor": "#cc3e44"
+ },
+ "_html_light": {
+ "fontCharacter": "\\E043",
+ "fontColor": "#498ba7"
+ },
+ "_html": {
+ "fontCharacter": "\\E043",
+ "fontColor": "#519aba"
+ },
+ "_html_1_light": {
+ "fontCharacter": "\\E043",
+ "fontColor": "#7fae42"
+ },
+ "_html_1": {
+ "fontCharacter": "\\E043",
+ "fontColor": "#8dc149"
+ },
+ "_html_2_light": {
+ "fontCharacter": "\\E043",
+ "fontColor": "#b7b73b"
+ },
+ "_html_2": {
+ "fontCharacter": "\\E043",
+ "fontColor": "#cbcb41"
+ },
+ "_html_3_light": {
+ "fontCharacter": "\\E043",
+ "fontColor": "#cc6d2e"
+ },
+ "_html_3": {
+ "fontCharacter": "\\E043",
+ "fontColor": "#e37933"
+ },
+ "_html_erb_light": {
+ "fontCharacter": "\\E044",
+ "fontColor": "#b8383d"
+ },
+ "_html_erb": {
+ "fontCharacter": "\\E044",
+ "fontColor": "#cc3e44"
+ },
+ "_ignored_light": {
+ "fontCharacter": "\\E045",
+ "fontColor": "#3b4b52"
+ },
+ "_ignored": {
+ "fontCharacter": "\\E045",
+ "fontColor": "#41535b"
+ },
+ "_illustrator_light": {
+ "fontCharacter": "\\E046",
+ "fontColor": "#b7b73b"
+ },
+ "_illustrator": {
+ "fontCharacter": "\\E046",
+ "fontColor": "#cbcb41"
+ },
+ "_image_light": {
+ "fontCharacter": "\\E047",
+ "fontColor": "#9068b0"
+ },
+ "_image": {
+ "fontCharacter": "\\E047",
+ "fontColor": "#a074c4"
+ },
+ "_info_light": {
+ "fontCharacter": "\\E048",
+ "fontColor": "#498ba7"
+ },
+ "_info": {
+ "fontCharacter": "\\E048",
+ "fontColor": "#519aba"
+ },
+ "_ionic_light": {
+ "fontCharacter": "\\E049",
+ "fontColor": "#498ba7"
+ },
+ "_ionic": {
+ "fontCharacter": "\\E049",
+ "fontColor": "#519aba"
+ },
+ "_jade_light": {
+ "fontCharacter": "\\E04A",
+ "fontColor": "#b8383d"
+ },
+ "_jade": {
+ "fontCharacter": "\\E04A",
+ "fontColor": "#cc3e44"
+ },
+ "_java_light": {
+ "fontCharacter": "\\E04B",
+ "fontColor": "#b8383d"
+ },
+ "_java": {
+ "fontCharacter": "\\E04B",
+ "fontColor": "#cc3e44"
+ },
+ "_javascript_light": {
+ "fontCharacter": "\\E04C",
+ "fontColor": "#b7b73b"
+ },
+ "_javascript": {
+ "fontCharacter": "\\E04C",
+ "fontColor": "#cbcb41"
+ },
+ "_javascript_1_light": {
+ "fontCharacter": "\\E04C",
+ "fontColor": "#cc6d2e"
+ },
+ "_javascript_1": {
+ "fontCharacter": "\\E04C",
+ "fontColor": "#e37933"
+ },
+ "_javascript_2_light": {
+ "fontCharacter": "\\E04C",
+ "fontColor": "#498ba7"
+ },
+ "_javascript_2": {
+ "fontCharacter": "\\E04C",
+ "fontColor": "#519aba"
+ },
+ "_jenkins_light": {
+ "fontCharacter": "\\E04D",
+ "fontColor": "#b8383d"
+ },
+ "_jenkins": {
+ "fontCharacter": "\\E04D",
+ "fontColor": "#cc3e44"
+ },
+ "_jinja_light": {
+ "fontCharacter": "\\E04E",
+ "fontColor": "#b8383d"
+ },
+ "_jinja": {
+ "fontCharacter": "\\E04E",
+ "fontColor": "#cc3e44"
+ },
+ "_json_light": {
+ "fontCharacter": "\\E050",
+ "fontColor": "#b7b73b"
+ },
+ "_json": {
+ "fontCharacter": "\\E050",
+ "fontColor": "#cbcb41"
+ },
+ "_json_1_light": {
+ "fontCharacter": "\\E050",
+ "fontColor": "#7fae42"
+ },
+ "_json_1": {
+ "fontCharacter": "\\E050",
+ "fontColor": "#8dc149"
+ },
+ "_julia_light": {
+ "fontCharacter": "\\E051",
+ "fontColor": "#9068b0"
+ },
+ "_julia": {
+ "fontCharacter": "\\E051",
+ "fontColor": "#a074c4"
+ },
+ "_karma_light": {
+ "fontCharacter": "\\E052",
+ "fontColor": "#7fae42"
+ },
+ "_karma": {
+ "fontCharacter": "\\E052",
+ "fontColor": "#8dc149"
+ },
+ "_kotlin_light": {
+ "fontCharacter": "\\E053",
+ "fontColor": "#cc6d2e"
+ },
+ "_kotlin": {
+ "fontCharacter": "\\E053",
+ "fontColor": "#e37933"
+ },
+ "_less_light": {
+ "fontCharacter": "\\E054",
+ "fontColor": "#498ba7"
+ },
+ "_less": {
+ "fontCharacter": "\\E054",
+ "fontColor": "#519aba"
+ },
+ "_license_light": {
+ "fontCharacter": "\\E055",
+ "fontColor": "#b7b73b"
+ },
+ "_license": {
+ "fontCharacter": "\\E055",
+ "fontColor": "#cbcb41"
+ },
+ "_license_1_light": {
+ "fontCharacter": "\\E055",
+ "fontColor": "#cc6d2e"
+ },
+ "_license_1": {
+ "fontCharacter": "\\E055",
+ "fontColor": "#e37933"
+ },
+ "_license_2_light": {
+ "fontCharacter": "\\E055",
+ "fontColor": "#b8383d"
+ },
+ "_license_2": {
+ "fontCharacter": "\\E055",
+ "fontColor": "#cc3e44"
+ },
+ "_liquid_light": {
+ "fontCharacter": "\\E056",
+ "fontColor": "#7fae42"
+ },
+ "_liquid": {
+ "fontCharacter": "\\E056",
+ "fontColor": "#8dc149"
+ },
+ "_livescript_light": {
+ "fontCharacter": "\\E057",
+ "fontColor": "#498ba7"
+ },
+ "_livescript": {
+ "fontCharacter": "\\E057",
+ "fontColor": "#519aba"
+ },
+ "_lock_light": {
+ "fontCharacter": "\\E058",
+ "fontColor": "#7fae42"
+ },
+ "_lock": {
+ "fontCharacter": "\\E058",
+ "fontColor": "#8dc149"
+ },
+ "_lua_light": {
+ "fontCharacter": "\\E059",
+ "fontColor": "#498ba7"
+ },
+ "_lua": {
+ "fontCharacter": "\\E059",
+ "fontColor": "#519aba"
+ },
+ "_makefile_light": {
+ "fontCharacter": "\\E05A",
+ "fontColor": "#cc6d2e"
+ },
+ "_makefile": {
+ "fontCharacter": "\\E05A",
+ "fontColor": "#e37933"
+ },
+ "_makefile_1_light": {
+ "fontCharacter": "\\E05A",
+ "fontColor": "#9068b0"
+ },
+ "_makefile_1": {
+ "fontCharacter": "\\E05A",
+ "fontColor": "#a074c4"
+ },
+ "_makefile_2_light": {
+ "fontCharacter": "\\E05A",
+ "fontColor": "#627379"
+ },
+ "_makefile_2": {
+ "fontCharacter": "\\E05A",
+ "fontColor": "#6d8086"
+ },
+ "_makefile_3_light": {
+ "fontCharacter": "\\E05A",
+ "fontColor": "#498ba7"
+ },
+ "_makefile_3": {
+ "fontCharacter": "\\E05A",
+ "fontColor": "#519aba"
+ },
+ "_markdown_light": {
+ "fontCharacter": "\\E05B",
+ "fontColor": "#498ba7"
+ },
+ "_markdown": {
+ "fontCharacter": "\\E05B",
+ "fontColor": "#519aba"
+ },
+ "_maven_light": {
+ "fontCharacter": "\\E05C",
+ "fontColor": "#b8383d"
+ },
+ "_maven": {
+ "fontCharacter": "\\E05C",
+ "fontColor": "#cc3e44"
+ },
+ "_mdo_light": {
+ "fontCharacter": "\\E05D",
+ "fontColor": "#b8383d"
+ },
+ "_mdo": {
+ "fontCharacter": "\\E05D",
+ "fontColor": "#cc3e44"
+ },
+ "_mustache_light": {
+ "fontCharacter": "\\E05E",
+ "fontColor": "#cc6d2e"
+ },
+ "_mustache": {
+ "fontCharacter": "\\E05E",
+ "fontColor": "#e37933"
+ },
+ "_npm_light": {
+ "fontCharacter": "\\E060",
+ "fontColor": "#3b4b52"
+ },
+ "_npm": {
+ "fontCharacter": "\\E060",
+ "fontColor": "#41535b"
+ },
+ "_npm_1_light": {
+ "fontCharacter": "\\E060",
+ "fontColor": "#b8383d"
+ },
+ "_npm_1": {
+ "fontCharacter": "\\E060",
+ "fontColor": "#cc3e44"
+ },
+ "_npm_ignored_light": {
+ "fontCharacter": "\\E061",
+ "fontColor": "#3b4b52"
+ },
+ "_npm_ignored": {
+ "fontCharacter": "\\E061",
+ "fontColor": "#41535b"
+ },
+ "_nunjucks_light": {
+ "fontCharacter": "\\E062",
+ "fontColor": "#7fae42"
+ },
+ "_nunjucks": {
+ "fontCharacter": "\\E062",
+ "fontColor": "#8dc149"
+ },
+ "_ocaml_light": {
+ "fontCharacter": "\\E063",
+ "fontColor": "#cc6d2e"
+ },
+ "_ocaml": {
+ "fontCharacter": "\\E063",
+ "fontColor": "#e37933"
+ },
+ "_odata_light": {
+ "fontCharacter": "\\E064",
+ "fontColor": "#cc6d2e"
+ },
+ "_odata": {
+ "fontCharacter": "\\E064",
+ "fontColor": "#e37933"
+ },
+ "_pddl_light": {
+ "fontCharacter": "\\E065",
+ "fontColor": "#9068b0"
+ },
+ "_pddl": {
+ "fontCharacter": "\\E065",
+ "fontColor": "#a074c4"
+ },
+ "_pdf_light": {
+ "fontCharacter": "\\E066",
+ "fontColor": "#b8383d"
+ },
+ "_pdf": {
+ "fontCharacter": "\\E066",
+ "fontColor": "#cc3e44"
+ },
+ "_perl_light": {
+ "fontCharacter": "\\E067",
+ "fontColor": "#498ba7"
+ },
+ "_perl": {
+ "fontCharacter": "\\E067",
+ "fontColor": "#519aba"
+ },
+ "_photoshop_light": {
+ "fontCharacter": "\\E068",
+ "fontColor": "#498ba7"
+ },
+ "_photoshop": {
+ "fontCharacter": "\\E068",
+ "fontColor": "#519aba"
+ },
+ "_php_light": {
+ "fontCharacter": "\\E069",
+ "fontColor": "#9068b0"
+ },
+ "_php": {
+ "fontCharacter": "\\E069",
+ "fontColor": "#a074c4"
+ },
+ "_plan_light": {
+ "fontCharacter": "\\E06A",
+ "fontColor": "#7fae42"
+ },
+ "_plan": {
+ "fontCharacter": "\\E06A",
+ "fontColor": "#8dc149"
+ },
+ "_platformio_light": {
+ "fontCharacter": "\\E06B",
+ "fontColor": "#cc6d2e"
+ },
+ "_platformio": {
+ "fontCharacter": "\\E06B",
+ "fontColor": "#e37933"
+ },
+ "_powershell_light": {
+ "fontCharacter": "\\E06C",
+ "fontColor": "#498ba7"
+ },
+ "_powershell": {
+ "fontCharacter": "\\E06C",
+ "fontColor": "#519aba"
+ },
+ "_prolog_light": {
+ "fontCharacter": "\\E06E",
+ "fontColor": "#cc6d2e"
+ },
+ "_prolog": {
+ "fontCharacter": "\\E06E",
+ "fontColor": "#e37933"
+ },
+ "_pug_light": {
+ "fontCharacter": "\\E06F",
+ "fontColor": "#b8383d"
+ },
+ "_pug": {
+ "fontCharacter": "\\E06F",
+ "fontColor": "#cc3e44"
+ },
+ "_puppet_light": {
+ "fontCharacter": "\\E070",
+ "fontColor": "#b7b73b"
+ },
+ "_puppet": {
+ "fontCharacter": "\\E070",
+ "fontColor": "#cbcb41"
+ },
+ "_python_light": {
+ "fontCharacter": "\\E071",
+ "fontColor": "#498ba7"
+ },
+ "_python": {
+ "fontCharacter": "\\E071",
+ "fontColor": "#519aba"
+ },
+ "_react_light": {
+ "fontCharacter": "\\E073",
+ "fontColor": "#498ba7"
+ },
+ "_react": {
+ "fontCharacter": "\\E073",
+ "fontColor": "#519aba"
+ },
+ "_react_1_light": {
+ "fontCharacter": "\\E073",
+ "fontColor": "#cc6d2e"
+ },
+ "_react_1": {
+ "fontCharacter": "\\E073",
+ "fontColor": "#e37933"
+ },
+ "_react_2_light": {
+ "fontCharacter": "\\E073",
+ "fontColor": "#b7b73b"
+ },
+ "_react_2": {
+ "fontCharacter": "\\E073",
+ "fontColor": "#cbcb41"
+ },
+ "_reasonml_light": {
+ "fontCharacter": "\\E074",
+ "fontColor": "#b8383d"
+ },
+ "_reasonml": {
+ "fontCharacter": "\\E074",
+ "fontColor": "#cc3e44"
+ },
+ "_rmd_light": {
+ "fontColor": "#498ba7"
+ },
+ "_rmd": {
+ "fontColor": "#519aba"
+ },
+ "_rollup_light": {
+ "fontCharacter": "\\E075",
+ "fontColor": "#b8383d"
+ },
+ "_rollup": {
+ "fontCharacter": "\\E075",
+ "fontColor": "#cc3e44"
+ },
+ "_ruby_light": {
+ "fontCharacter": "\\E076",
+ "fontColor": "#b8383d"
+ },
+ "_ruby": {
+ "fontCharacter": "\\E076",
+ "fontColor": "#cc3e44"
+ },
+ "_rust_light": {
+ "fontCharacter": "\\E077",
+ "fontColor": "#627379"
+ },
+ "_rust": {
+ "fontCharacter": "\\E077",
+ "fontColor": "#6d8086"
+ },
+ "_salesforce_light": {
+ "fontCharacter": "\\E078",
+ "fontColor": "#498ba7"
+ },
+ "_salesforce": {
+ "fontCharacter": "\\E078",
+ "fontColor": "#519aba"
+ },
+ "_sass_light": {
+ "fontCharacter": "\\E079",
+ "fontColor": "#dd4b78"
+ },
+ "_sass": {
+ "fontCharacter": "\\E079",
+ "fontColor": "#f55385"
+ },
+ "_sbt_light": {
+ "fontCharacter": "\\E07A",
+ "fontColor": "#498ba7"
+ },
+ "_sbt": {
+ "fontCharacter": "\\E07A",
+ "fontColor": "#519aba"
+ },
+ "_scala_light": {
+ "fontCharacter": "\\E07B",
+ "fontColor": "#b8383d"
+ },
+ "_scala": {
+ "fontCharacter": "\\E07B",
+ "fontColor": "#cc3e44"
+ },
+ "_shell_light": {
+ "fontCharacter": "\\E07E",
+ "fontColor": "#455155"
+ },
+ "_shell": {
+ "fontCharacter": "\\E07E",
+ "fontColor": "#4d5a5e"
+ },
+ "_slim_light": {
+ "fontCharacter": "\\E07F",
+ "fontColor": "#cc6d2e"
+ },
+ "_slim": {
+ "fontCharacter": "\\E07F",
+ "fontColor": "#e37933"
+ },
+ "_smarty_light": {
+ "fontCharacter": "\\E080",
+ "fontColor": "#b7b73b"
+ },
+ "_smarty": {
+ "fontCharacter": "\\E080",
+ "fontColor": "#cbcb41"
+ },
+ "_spring_light": {
+ "fontCharacter": "\\E081",
+ "fontColor": "#7fae42"
+ },
+ "_spring": {
+ "fontCharacter": "\\E081",
+ "fontColor": "#8dc149"
+ },
+ "_stylelint_light": {
+ "fontCharacter": "\\E082",
+ "fontColor": "#bfc2c1"
+ },
+ "_stylelint": {
+ "fontCharacter": "\\E082",
+ "fontColor": "#d4d7d6"
+ },
+ "_stylelint_1_light": {
+ "fontCharacter": "\\E082",
+ "fontColor": "#455155"
+ },
+ "_stylelint_1": {
+ "fontCharacter": "\\E082",
+ "fontColor": "#4d5a5e"
+ },
+ "_stylus_light": {
+ "fontCharacter": "\\E083",
+ "fontColor": "#7fae42"
+ },
+ "_stylus": {
+ "fontCharacter": "\\E083",
+ "fontColor": "#8dc149"
+ },
+ "_sublime_light": {
+ "fontCharacter": "\\E084",
+ "fontColor": "#cc6d2e"
+ },
+ "_sublime": {
+ "fontCharacter": "\\E084",
+ "fontColor": "#e37933"
+ },
+ "_svg_light": {
+ "fontCharacter": "\\E085",
+ "fontColor": "#9068b0"
+ },
+ "_svg": {
+ "fontCharacter": "\\E085",
+ "fontColor": "#a074c4"
+ },
+ "_svg_1_light": {
+ "fontCharacter": "\\E085",
+ "fontColor": "#498ba7"
+ },
+ "_svg_1": {
+ "fontCharacter": "\\E085",
+ "fontColor": "#519aba"
+ },
+ "_swift_light": {
+ "fontCharacter": "\\E086",
+ "fontColor": "#cc6d2e"
+ },
+ "_swift": {
+ "fontCharacter": "\\E086",
+ "fontColor": "#e37933"
+ },
+ "_terraform_light": {
+ "fontCharacter": "\\E087",
+ "fontColor": "#9068b0"
+ },
+ "_terraform": {
+ "fontCharacter": "\\E087",
+ "fontColor": "#a074c4"
+ },
+ "_tex_light": {
+ "fontCharacter": "\\E088",
+ "fontColor": "#498ba7"
+ },
+ "_tex": {
+ "fontCharacter": "\\E088",
+ "fontColor": "#519aba"
+ },
+ "_tex_1_light": {
+ "fontCharacter": "\\E088",
+ "fontColor": "#b7b73b"
+ },
+ "_tex_1": {
+ "fontCharacter": "\\E088",
+ "fontColor": "#cbcb41"
+ },
+ "_tex_2_light": {
+ "fontCharacter": "\\E088",
+ "fontColor": "#cc6d2e"
+ },
+ "_tex_2": {
+ "fontCharacter": "\\E088",
+ "fontColor": "#e37933"
+ },
+ "_tex_3_light": {
+ "fontCharacter": "\\E088",
+ "fontColor": "#bfc2c1"
+ },
+ "_tex_3": {
+ "fontCharacter": "\\E088",
+ "fontColor": "#d4d7d6"
+ },
+ "_todo": {
+ "fontCharacter": "\\E08A"
+ },
+ "_tsconfig_light": {
+ "fontCharacter": "\\E08B",
+ "fontColor": "#498ba7"
+ },
+ "_tsconfig": {
+ "fontCharacter": "\\E08B",
+ "fontColor": "#519aba"
+ },
+ "_twig_light": {
+ "fontCharacter": "\\E08C",
+ "fontColor": "#7fae42"
+ },
+ "_twig": {
+ "fontCharacter": "\\E08C",
+ "fontColor": "#8dc149"
+ },
+ "_typescript_light": {
+ "fontCharacter": "\\E08D",
+ "fontColor": "#498ba7"
+ },
+ "_typescript": {
+ "fontCharacter": "\\E08D",
+ "fontColor": "#519aba"
+ },
+ "_typescript_1_light": {
+ "fontCharacter": "\\E08D",
+ "fontColor": "#b7b73b"
+ },
+ "_typescript_1": {
+ "fontCharacter": "\\E08D",
+ "fontColor": "#cbcb41"
+ },
+ "_vala_light": {
+ "fontCharacter": "\\E08E",
+ "fontColor": "#627379"
+ },
+ "_vala": {
+ "fontCharacter": "\\E08E",
+ "fontColor": "#6d8086"
+ },
+ "_video_light": {
+ "fontCharacter": "\\E08F",
+ "fontColor": "#dd4b78"
+ },
+ "_video": {
+ "fontCharacter": "\\E08F",
+ "fontColor": "#f55385"
+ },
+ "_vue_light": {
+ "fontCharacter": "\\E090",
+ "fontColor": "#7fae42"
+ },
+ "_vue": {
+ "fontCharacter": "\\E090",
+ "fontColor": "#8dc149"
+ },
+ "_wasm_light": {
+ "fontCharacter": "\\E091",
+ "fontColor": "#9068b0"
+ },
+ "_wasm": {
+ "fontCharacter": "\\E091",
+ "fontColor": "#a074c4"
+ },
+ "_wat_light": {
+ "fontCharacter": "\\E092",
+ "fontColor": "#9068b0"
+ },
+ "_wat": {
+ "fontCharacter": "\\E092",
+ "fontColor": "#a074c4"
+ },
+ "_webpack_light": {
+ "fontCharacter": "\\E093",
+ "fontColor": "#498ba7"
+ },
+ "_webpack": {
+ "fontCharacter": "\\E093",
+ "fontColor": "#519aba"
+ },
+ "_wgt_light": {
+ "fontCharacter": "\\E094",
+ "fontColor": "#498ba7"
+ },
+ "_wgt": {
+ "fontCharacter": "\\E094",
+ "fontColor": "#519aba"
+ },
+ "_windows_light": {
+ "fontCharacter": "\\E095",
+ "fontColor": "#498ba7"
+ },
+ "_windows": {
+ "fontCharacter": "\\E095",
+ "fontColor": "#519aba"
+ },
+ "_word_light": {
+ "fontCharacter": "\\E096",
+ "fontColor": "#498ba7"
+ },
+ "_word": {
+ "fontCharacter": "\\E096",
+ "fontColor": "#519aba"
+ },
+ "_xls_light": {
+ "fontCharacter": "\\E097",
+ "fontColor": "#7fae42"
+ },
+ "_xls": {
+ "fontCharacter": "\\E097",
+ "fontColor": "#8dc149"
+ },
+ "_xml_light": {
+ "fontCharacter": "\\E098",
+ "fontColor": "#cc6d2e"
+ },
+ "_xml": {
+ "fontCharacter": "\\E098",
+ "fontColor": "#e37933"
+ },
+ "_yarn_light": {
+ "fontCharacter": "\\E099",
+ "fontColor": "#498ba7"
+ },
+ "_yarn": {
+ "fontCharacter": "\\E099",
+ "fontColor": "#519aba"
+ },
+ "_yml_light": {
+ "fontCharacter": "\\E09A",
+ "fontColor": "#9068b0"
+ },
+ "_yml": {
+ "fontCharacter": "\\E09A",
+ "fontColor": "#a074c4"
+ },
+ "_zip_light": {
+ "fontCharacter": "\\E09B",
+ "fontColor": "#b8383d"
+ },
+ "_zip": {
+ "fontCharacter": "\\E09B",
+ "fontColor": "#cc3e44"
+ },
+ "_zip_1_light": {
+ "fontCharacter": "\\E09B",
+ "fontColor": "#627379"
+ },
+ "_zip_1": {
+ "fontCharacter": "\\E09B",
+ "fontColor": "#6d8086"
+ }
+ },
+ "file": "_default",
+ "fileExtensions": {
+ "sdfg": "_sdfg_file",
+ "bsl": "_bsl",
+ "mdo": "_mdo",
+ "asm": "_asm",
+ "s": "_asm",
+ "h": "_c_1",
+ "aspx": "_html",
+ "ascx": "_html_1",
+ "asax": "_html_2",
+ "master": "_html_2",
+ "hh": "_cpp_1",
+ "hpp": "_cpp_1",
+ "hxx": "_cpp_1",
+ "edn": "_clojure_1",
+ "cfc": "_coldfusion",
+ "cfm": "_coldfusion",
+ "litcoffee": "_coffee",
+ "config": "_config",
+ "cfg": "_config",
+ "conf": "_config",
+ "cr": "_crystal",
+ "ecr": "_crystal_embedded",
+ "slang": "_crystal_embedded",
+ "cson": "_json",
+ "css.map": "_css",
+ "sss": "_css",
+ "csv": "_csv",
+ "xls": "_xls",
+ "xlsx": "_xls",
+ "cake": "_cake",
+ "ctp": "_cake_php",
+ "d": "_d",
+ "doc": "_word",
+ "docx": "_word",
+ "ejs": "_ejs",
+ "ex": "_elixir",
+ "exs": "_elixir_script",
+ "elm": "_elm",
+ "ico": "_favicon",
+ "gitignore": "_git",
+ "gitconfig": "_git",
+ "gitkeep": "_git",
+ "gitattributes": "_git",
+ "gitmodules": "_git",
+ "slide": "_go",
+ "article": "_go",
+ "gradle": "_gradle",
+ "gsp": "_grails",
+ "gql": "_graphql",
+ "graphql": "_graphql",
+ "haml": "_haml",
+ "hs": "_haskell",
+ "lhs": "_haskell",
+ "hx": "_haxe",
+ "hxs": "_haxe_1",
+ "hxp": "_haxe_2",
+ "hxml": "_haxe_3",
+ "class": "_java",
+ "classpath": "_java",
+ "properties": "_java",
+ "js.map": "_javascript",
+ "spec.js": "_javascript_1",
+ "test.js": "_javascript_1",
+ "es": "_javascript",
+ "es5": "_javascript",
+ "es7": "_javascript",
+ "jinja": "_jinja",
+ "jinja2": "_jinja",
+ "jl": "_julia",
+ "kt": "_kotlin",
+ "kts": "_kotlin",
+ "dart": "_dart",
+ "liquid": "_liquid",
+ "ls": "_livescript",
+ "argdown": "_argdown",
+ "ad": "_argdown",
+ "mustache": "_mustache",
+ "stache": "_mustache",
+ "njk": "_nunjucks",
+ "nunjucks": "_nunjucks",
+ "nunjs": "_nunjucks",
+ "nunj": "_nunjucks",
+ "njs": "_nunjucks",
+ "nj": "_nunjucks",
+ "npm-debug.log": "_npm",
+ "npmignore": "_npm_1",
+ "npmrc": "_npm_1",
+ "ml": "_ocaml",
+ "mli": "_ocaml",
+ "cmx": "_ocaml",
+ "cmxa": "_ocaml",
+ "odata": "_odata",
+ "php.inc": "_php",
+ "pddl": "_pddl",
+ "plan": "_plan",
+ "happenings": "_happenings",
+ "pug": "_pug",
+ "pp": "_puppet",
+ "epp": "_puppet",
+ "spec.jsx": "_react_1",
+ "test.jsx": "_react_1",
+ "cjsx": "_react",
+ "spec.tsx": "_react_2",
+ "test.tsx": "_react_2",
+ "re": "_reasonml",
+ "r": "_R",
+ "rmd": "_rmd",
+ "erb": "_html_erb",
+ "erb.html": "_html_erb",
+ "html.erb": "_html_erb",
+ "sass": "_sass",
+ "springbeans": "_spring",
+ "slim": "_slim",
+ "smarty.tpl": "_smarty",
+ "sbt": "_sbt",
+ "scala": "_scala",
+ "sol": "_ethereum",
+ "styl": "_stylus",
+ "tf": "_terraform",
+ "tf.json": "_terraform",
+ "tfvars": "_terraform",
+ "tex": "_tex",
+ "sty": "_tex_1",
+ "dtx": "_tex_2",
+ "ins": "_tex_3",
+ "toml": "_config",
+ "twig": "_twig",
+ "spec.ts": "_typescript_1",
+ "test.ts": "_typescript_1",
+ "vala": "_vala",
+ "vapi": "_vala",
+ "vue": "_vue",
+ "wasm": "_wasm",
+ "wat": "_wat",
+ "pro": "_prolog",
+ "jar": "_zip",
+ "zip": "_zip_1",
+ "wgt": "_wgt",
+ "ai": "_illustrator",
+ "psd": "_photoshop",
+ "pdf": "_pdf",
+ "eot": "_font",
+ "ttf": "_font",
+ "woff": "_font",
+ "woff2": "_font",
+ "gif": "_image",
+ "jpg": "_image",
+ "jpeg": "_image",
+ "png": "_image",
+ "pxm": "_image",
+ "svg": "_svg",
+ "svgx": "_image",
+ "sublime-project": "_sublime",
+ "sublime-workspace": "_sublime",
+ "component": "_salesforce",
+ "cls": "_salesforce",
+ "fish": "_shell",
+ "mov": "_video",
+ "ogv": "_video",
+ "webm": "_video",
+ "avi": "_video",
+ "mpg": "_video",
+ "mp4": "_video",
+ "mp3": "_audio",
+ "ogg": "_audio",
+ "wav": "_audio",
+ "flac": "_audio",
+ "3ds": "_svg_1",
+ "3dm": "_svg_1",
+ "stl": "_svg_1",
+ "obj": "_svg_1",
+ "dae": "_svg_1",
+ "babelrc": "_babel",
+ "babelrc.js": "_babel",
+ "babelrc.cjs": "_babel",
+ "bowerrc": "_bower",
+ "dockerignore": "_docker_1",
+ "codeclimate.yml": "_code-climate",
+ "eslintrc": "_eslint",
+ "eslintrc.js": "_eslint",
+ "eslintrc.yaml": "_eslint",
+ "eslintrc.yml": "_eslint",
+ "eslintrc.json": "_eslint",
+ "eslintignore": "_eslint_1",
+ "firebaserc": "_firebase",
+ "jshintrc": "_javascript_2",
+ "jscsrc": "_javascript_2",
+ "stylelintrc": "_stylelint",
+ "stylelintrc.json": "_stylelint",
+ "stylelintrc.yaml": "_stylelint",
+ "stylelintrc.yml": "_stylelint",
+ "stylelintrc.js": "_stylelint",
+ "stylelintignore": "_stylelint_1",
+ "direnv": "_config",
+ "env": "_config",
+ "static": "_config",
+ "editorconfig": "_config",
+ "slugignore": "_config",
+ "tmp": "_clock_1",
+ "htaccess": "_config",
+ "key": "_lock",
+ "cert": "_lock",
+ "ds_store": "_ignored"
+ },
+ "fileNames": {
+ "mix": "_hex",
+ "karma.conf.js": "_karma",
+ "karma.conf.coffee": "_karma",
+ "readme.md": "_info",
+ "changelog.md": "_clock",
+ "changelog": "_clock",
+ "changes.md": "_clock",
+ "version.md": "_clock",
+ "version": "_clock",
+ "mvnw": "_maven",
+ "swagger.json": "_json_1",
+ "swagger.yml": "_json_1",
+ "swagger.yaml": "_json_1",
+ "mime.types": "_config",
+ "jenkinsfile": "_jenkins",
+ "babel.config.js": "_babel",
+ "babel.config.json": "_babel",
+ "babel.config.cjs": "_babel",
+ "bower.json": "_bower",
+ "docker-healthcheck": "_docker_2",
+ "docker-compose.yml": "_docker_3",
+ "docker-compose.yaml": "_docker_3",
+ "docker-compose.override.yml": "_docker_3",
+ "docker-compose.override.yaml": "_docker_3",
+ "firebase.json": "_firebase",
+ "geckodriver": "_firefox",
+ "gruntfile.js": "_grunt",
+ "gruntfile.babel.js": "_grunt",
+ "gruntfile.coffee": "_grunt",
+ "gulpfile": "_gulp",
+ "gulpfile.js": "_gulp",
+ "ionic.config.json": "_ionic",
+ "ionic.project": "_ionic",
+ "platformio.ini": "_platformio",
+ "rollup.config.js": "_rollup",
+ "sass-lint.yml": "_sass",
+ "stylelint.config.js": "_stylelint",
+ "yarn.clean": "_yarn",
+ "yarn.lock": "_yarn",
+ "webpack.config.js": "_webpack",
+ "webpack.config.build.js": "_webpack",
+ "webpack.common.js": "_webpack",
+ "webpack.dev.js": "_webpack",
+ "webpack.prod.js": "_webpack",
+ "license": "_license",
+ "licence": "_license",
+ "copying": "_license",
+ "compiling": "_license_1",
+ "contributing": "_license_2",
+ "qmakefile": "_makefile_1",
+ "omakefile": "_makefile_2",
+ "cmakelists.txt": "_makefile_3",
+ "procfile": "_heroku",
+ "todo": "_todo",
+ "npm-debug.log": "_npm_ignored"
+ },
+ "languageIds": {
+ "bat": "_windows",
+ "clojure": "_clojure",
+ "coffeescript": "_coffee",
+ "jsonc": "_json",
+ "c": "_c",
+ "cpp": "_cpp",
+ "csharp": "_c-sharp",
+ "css": "_css",
+ "dockerfile": "_docker",
+ "fsharp": "_f-sharp",
+ "go": "_go2",
+ "groovy": "_grails",
+ "handlebars": "_mustache",
+ "html": "_html_3",
+ "java": "_java",
+ "javascriptreact": "_react",
+ "javascript": "_javascript",
+ "json": "_json",
+ "less": "_less",
+ "lua": "_lua",
+ "makefile": "_makefile",
+ "markdown": "_markdown",
+ "objective-c": "_c_2",
+ "objective-cpp": "_cpp_2",
+ "perl": "_perl",
+ "php": "_php",
+ "powershell": "_powershell",
+ "jade": "_jade",
+ "python": "_python",
+ "r": "_R",
+ "razor": "_html",
+ "ruby": "_ruby",
+ "rust": "_rust",
+ "scss": "_sass",
+ "search-result": "_code-search",
+ "shellscript": "_shell",
+ "sql": "_db",
+ "swift": "_swift",
+ "typescript": "_typescript",
+ "typescriptreact": "_react",
+ "xml": "_xml",
+ "yaml": "_yml",
+ "argdown": "_argdown",
+ "elm": "_elm",
+ "ocaml": "_ocaml",
+ "nunjucks": "_nunjucks",
+ "mustache": "_mustache",
+ "erb": "_html_erb",
+ "terraform": "_terraform",
+ "vue": "_vue",
+ "sass": "_sass",
+ "kotlin": "_kotlin",
+ "jinja": "_jinja",
+ "haxe": "_haxe",
+ "haskell": "_haskell",
+ "gradle": "_gradle",
+ "elixir": "_elixir",
+ "haml": "_haml",
+ "stylus": "_stylus",
+ "vala": "_vala",
+ "todo": "_todo",
+ "postcss": "_css",
+ "django-html": "_html_3"
+ },
+ "light": {
+ "file": "_default_light",
+ "fileExtensions": {
+ "bsl": "_bsl_light",
+ "mdo": "_mdo_light",
+ "asm": "_asm_light",
+ "s": "_asm_light",
+ "h": "_c_1_light",
+ "aspx": "_html_light",
+ "ascx": "_html_1_light",
+ "asax": "_html_2_light",
+ "master": "_html_2_light",
+ "hh": "_cpp_1_light",
+ "hpp": "_cpp_1_light",
+ "hxx": "_cpp_1_light",
+ "edn": "_clojure_1_light",
+ "cfc": "_coldfusion_light",
+ "cfm": "_coldfusion_light",
+ "litcoffee": "_coffee_light",
+ "config": "_config_light",
+ "cfg": "_config_light",
+ "conf": "_config_light",
+ "cr": "_crystal_light",
+ "ecr": "_crystal_embedded_light",
+ "slang": "_crystal_embedded_light",
+ "cson": "_json_light",
+ "css.map": "_css_light",
+ "sss": "_css_light",
+ "csv": "_csv_light",
+ "xls": "_xls_light",
+ "xlsx": "_xls_light",
+ "cake": "_cake_light",
+ "ctp": "_cake_php_light",
+ "d": "_d_light",
+ "doc": "_word_light",
+ "docx": "_word_light",
+ "ejs": "_ejs_light",
+ "ex": "_elixir_light",
+ "exs": "_elixir_script_light",
+ "elm": "_elm_light",
+ "ico": "_favicon_light",
+ "gitignore": "_git_light",
+ "gitconfig": "_git_light",
+ "gitkeep": "_git_light",
+ "gitattributes": "_git_light",
+ "gitmodules": "_git_light",
+ "slide": "_go_light",
+ "article": "_go_light",
+ "gradle": "_gradle_light",
+ "gsp": "_grails_light",
+ "gql": "_graphql_light",
+ "graphql": "_graphql_light",
+ "haml": "_haml_light",
+ "hs": "_haskell_light",
+ "lhs": "_haskell_light",
+ "hx": "_haxe_light",
+ "hxs": "_haxe_1_light",
+ "hxp": "_haxe_2_light",
+ "hxml": "_haxe_3_light",
+ "class": "_java_light",
+ "classpath": "_java_light",
+ "properties": "_java_light",
+ "js.map": "_javascript_light",
+ "spec.js": "_javascript_1_light",
+ "test.js": "_javascript_1_light",
+ "es": "_javascript_light",
+ "es5": "_javascript_light",
+ "es7": "_javascript_light",
+ "jinja": "_jinja_light",
+ "jinja2": "_jinja_light",
+ "jl": "_julia_light",
+ "kt": "_kotlin_light",
+ "kts": "_kotlin_light",
+ "dart": "_dart_light",
+ "liquid": "_liquid_light",
+ "ls": "_livescript_light",
+ "argdown": "_argdown_light",
+ "ad": "_argdown_light",
+ "mustache": "_mustache_light",
+ "stache": "_mustache_light",
+ "njk": "_nunjucks_light",
+ "nunjucks": "_nunjucks_light",
+ "nunjs": "_nunjucks_light",
+ "nunj": "_nunjucks_light",
+ "njs": "_nunjucks_light",
+ "nj": "_nunjucks_light",
+ "npm-debug.log": "_npm_light",
+ "npmignore": "_npm_1_light",
+ "npmrc": "_npm_1_light",
+ "ml": "_ocaml_light",
+ "mli": "_ocaml_light",
+ "cmx": "_ocaml_light",
+ "cmxa": "_ocaml_light",
+ "odata": "_odata_light",
+ "php.inc": "_php_light",
+ "pddl": "_pddl_light",
+ "plan": "_plan_light",
+ "happenings": "_happenings_light",
+ "pug": "_pug_light",
+ "pp": "_puppet_light",
+ "epp": "_puppet_light",
+ "spec.jsx": "_react_1_light",
+ "test.jsx": "_react_1_light",
+ "cjsx": "_react_light",
+ "spec.tsx": "_react_2_light",
+ "test.tsx": "_react_2_light",
+ "re": "_reasonml_light",
+ "r": "_R_light",
+ "rmd": "_rmd_light",
+ "erb": "_html_erb_light",
+ "erb.html": "_html_erb_light",
+ "html.erb": "_html_erb_light",
+ "sass": "_sass_light",
+ "springbeans": "_spring_light",
+ "slim": "_slim_light",
+ "smarty.tpl": "_smarty_light",
+ "sbt": "_sbt_light",
+ "scala": "_scala_light",
+ "sol": "_ethereum_light",
+ "styl": "_stylus_light",
+ "tf": "_terraform_light",
+ "tf.json": "_terraform_light",
+ "tfvars": "_terraform_light",
+ "tex": "_tex_light",
+ "sty": "_tex_1_light",
+ "dtx": "_tex_2_light",
+ "ins": "_tex_3_light",
+ "toml": "_config_light",
+ "twig": "_twig_light",
+ "spec.ts": "_typescript_1_light",
+ "test.ts": "_typescript_1_light",
+ "vala": "_vala_light",
+ "vapi": "_vala_light",
+ "vue": "_vue_light",
+ "wasm": "_wasm_light",
+ "wat": "_wat_light",
+ "pro": "_prolog_light",
+ "jar": "_zip_light",
+ "zip": "_zip_1_light",
+ "wgt": "_wgt_light",
+ "ai": "_illustrator_light",
+ "psd": "_photoshop_light",
+ "pdf": "_pdf_light",
+ "eot": "_font_light",
+ "ttf": "_font_light",
+ "woff": "_font_light",
+ "woff2": "_font_light",
+ "gif": "_image_light",
+ "jpg": "_image_light",
+ "jpeg": "_image_light",
+ "png": "_image_light",
+ "pxm": "_image_light",
+ "svg": "_svg_light",
+ "svgx": "_image_light",
+ "sublime-project": "_sublime_light",
+ "sublime-workspace": "_sublime_light",
+ "component": "_salesforce_light",
+ "cls": "_salesforce_light",
+ "fish": "_shell_light",
+ "mov": "_video_light",
+ "ogv": "_video_light",
+ "webm": "_video_light",
+ "avi": "_video_light",
+ "mpg": "_video_light",
+ "mp4": "_video_light",
+ "mp3": "_audio_light",
+ "ogg": "_audio_light",
+ "wav": "_audio_light",
+ "flac": "_audio_light",
+ "3ds": "_svg_1_light",
+ "3dm": "_svg_1_light",
+ "stl": "_svg_1_light",
+ "obj": "_svg_1_light",
+ "dae": "_svg_1_light",
+ "babelrc": "_babel_light",
+ "babelrc.js": "_babel_light",
+ "babelrc.cjs": "_babel_light",
+ "bowerrc": "_bower_light",
+ "dockerignore": "_docker_1_light",
+ "codeclimate.yml": "_code-climate_light",
+ "eslintrc": "_eslint_light",
+ "eslintrc.js": "_eslint_light",
+ "eslintrc.yaml": "_eslint_light",
+ "eslintrc.yml": "_eslint_light",
+ "eslintrc.json": "_eslint_light",
+ "eslintignore": "_eslint_1_light",
+ "firebaserc": "_firebase_light",
+ "jshintrc": "_javascript_2_light",
+ "jscsrc": "_javascript_2_light",
+ "stylelintrc": "_stylelint_light",
+ "stylelintrc.json": "_stylelint_light",
+ "stylelintrc.yaml": "_stylelint_light",
+ "stylelintrc.yml": "_stylelint_light",
+ "stylelintrc.js": "_stylelint_light",
+ "stylelintignore": "_stylelint_1_light",
+ "direnv": "_config_light",
+ "env": "_config_light",
+ "static": "_config_light",
+ "editorconfig": "_config_light",
+ "slugignore": "_config_light",
+ "tmp": "_clock_1_light",
+ "htaccess": "_config_light",
+ "key": "_lock_light",
+ "cert": "_lock_light",
+ "ds_store": "_ignored_light"
+ },
+ "languageIds": {
+ "bat": "_windows_light",
+ "clojure": "_clojure_light",
+ "coffeescript": "_coffee_light",
+ "jsonc": "_json_light",
+ "c": "_c_light",
+ "cpp": "_cpp_light",
+ "csharp": "_c-sharp_light",
+ "css": "_css_light",
+ "dockerfile": "_docker_light",
+ "fsharp": "_f-sharp_light",
+ "go": "_go2_light",
+ "groovy": "_grails_light",
+ "handlebars": "_mustache_light",
+ "html": "_html_3_light",
+ "java": "_java_light",
+ "javascriptreact": "_react_light",
+ "javascript": "_javascript_light",
+ "json": "_json_light",
+ "less": "_less_light",
+ "lua": "_lua_light",
+ "makefile": "_makefile_light",
+ "markdown": "_markdown_light",
+ "objective-c": "_c_2_light",
+ "objective-cpp": "_cpp_2_light",
+ "perl": "_perl_light",
+ "php": "_php_light",
+ "powershell": "_powershell_light",
+ "jade": "_jade_light",
+ "python": "_python_light",
+ "r": "_R_light",
+ "razor": "_html_light",
+ "ruby": "_ruby_light",
+ "rust": "_rust_light",
+ "scss": "_sass_light",
+ "search-result": "_code-search_light",
+ "shellscript": "_shell_light",
+ "sql": "_db_light",
+ "swift": "_swift_light",
+ "typescript": "_typescript_light",
+ "typescriptreact": "_react_light",
+ "xml": "_xml_light",
+ "yaml": "_yml_light",
+ "argdown": "_argdown_light",
+ "elm": "_elm_light",
+ "ocaml": "_ocaml_light",
+ "nunjucks": "_nunjucks_light",
+ "mustache": "_mustache_light",
+ "erb": "_html_erb_light",
+ "terraform": "_terraform_light",
+ "vue": "_vue_light",
+ "sass": "_sass_light",
+ "kotlin": "_kotlin_light",
+ "jinja": "_jinja_light",
+ "haxe": "_haxe_light",
+ "haskell": "_haskell_light",
+ "gradle": "_gradle_light",
+ "elixir": "_elixir_light",
+ "haml": "_haml_light",
+ "stylus": "_stylus_light",
+ "vala": "_vala_light",
+ "postcss": "_css_light",
+ "django-html": "_html_3_light"
+ },
+ "fileNames": {
+ "mix": "_hex_light",
+ "karma.conf.js": "_karma_light",
+ "karma.conf.coffee": "_karma_light",
+ "readme.md": "_info_light",
+ "changelog.md": "_clock_light",
+ "changelog": "_clock_light",
+ "changes.md": "_clock_light",
+ "version.md": "_clock_light",
+ "version": "_clock_light",
+ "mvnw": "_maven_light",
+ "swagger.json": "_json_1_light",
+ "swagger.yml": "_json_1_light",
+ "swagger.yaml": "_json_1_light",
+ "mime.types": "_config_light",
+ "jenkinsfile": "_jenkins_light",
+ "babel.config.js": "_babel_light",
+ "babel.config.json": "_babel_light",
+ "babel.config.cjs": "_babel_light",
+ "bower.json": "_bower_light",
+ "docker-healthcheck": "_docker_2_light",
+ "docker-compose.yml": "_docker_3_light",
+ "docker-compose.yaml": "_docker_3_light",
+ "docker-compose.override.yml": "_docker_3_light",
+ "docker-compose.override.yaml": "_docker_3_light",
+ "firebase.json": "_firebase_light",
+ "geckodriver": "_firefox_light",
+ "gruntfile.js": "_grunt_light",
+ "gruntfile.babel.js": "_grunt_light",
+ "gruntfile.coffee": "_grunt_light",
+ "gulpfile": "_gulp_light",
+ "gulpfile.js": "_gulp_light",
+ "ionic.config.json": "_ionic_light",
+ "ionic.project": "_ionic_light",
+ "platformio.ini": "_platformio_light",
+ "rollup.config.js": "_rollup_light",
+ "sass-lint.yml": "_sass_light",
+ "stylelint.config.js": "_stylelint_light",
+ "yarn.clean": "_yarn_light",
+ "yarn.lock": "_yarn_light",
+ "webpack.config.js": "_webpack_light",
+ "webpack.config.build.js": "_webpack_light",
+ "webpack.common.js": "_webpack_light",
+ "webpack.dev.js": "_webpack_light",
+ "webpack.prod.js": "_webpack_light",
+ "license": "_license_light",
+ "licence": "_license_light",
+ "copying": "_license_light",
+ "compiling": "_license_1_light",
+ "contributing": "_license_2_light",
+ "qmakefile": "_makefile_1_light",
+ "omakefile": "_makefile_2_light",
+ "cmakelists.txt": "_makefile_3_light",
+ "procfile": "_heroku_light",
+ "npm-debug.log": "_npm_ignored_light"
+ }
+ },
+ "version": "https://github.com/jesseweed/seti-ui/commit/8f22764c37feb7f706465f5186132111a2401b6b"
+}
\ No newline at end of file
diff --git a/fileicons/sdfg.svg b/fileicons/sdfg.svg
new file mode 100644
index 0000000..e3f3e0f
--- /dev/null
+++ b/fileicons/sdfg.svg
@@ -0,0 +1,17 @@
+
+
+
diff --git a/fileicons/seti.woff b/fileicons/seti.woff
new file mode 100644
index 0000000..b4b8366
Binary files /dev/null and b/fileicons/seti.woff differ
diff --git a/media/renderer.js b/media/renderer.js
index a21c42b..ec16a96 100644
--- a/media/renderer.js
+++ b/media/renderer.js
@@ -24,11 +24,11 @@ class CanvasManager {
this._destroying = false;
- this.scale_origin = {x: 0, y: 0};
+ this.scale_origin = { x: 0, y: 0 };
this.contention = 0;
- this._svg = document.createElementNS("http://www.w3.org/2000/svg",'svg');
+ this._svg = document.createElementNS("http://www.w3.org/2000/svg", 'svg');
this.user_transform = this._svg.createSVGMatrix();
@@ -40,8 +40,8 @@ class CanvasManager {
}
svgPoint(x, y) {
- let pt = this._svg.createSVGPoint();
- pt.x=x; pt.y=y;
+ let pt = this._svg.createSVGPoint();
+ pt.x = x; pt.y = y;
return pt;
}
@@ -61,7 +61,7 @@ class CanvasManager {
This is made for "easy" transforms and does not support saving/restoring
*/
- let svg = document.createElementNS("http://www.w3.org/2000/svg",'svg');
+ let svg = document.createElementNS("http://www.w3.org/2000/svg", 'svg');
this.ctx._custom_transform_matrix = svg.createSVGMatrix();
// Save/Restore is not supported.
@@ -70,50 +70,50 @@ class CanvasManager {
};
let _ctx = this.ctx;
let scale_func = _ctx.scale;
- _ctx.scale = function(sx,sy) {
- _ctx._custom_transform_matrix = _ctx._custom_transform_matrix.scaleNonUniform(sx,sy);
+ _ctx.scale = function (sx, sy) {
+ _ctx._custom_transform_matrix = _ctx._custom_transform_matrix.scaleNonUniform(sx, sy);
checker();
return scale_func.call(_ctx, sx, sy);
};
let translate_func = _ctx.translate;
- _ctx.translate = function(sx,sy) {
- _ctx._custom_transform_matrix = _ctx._custom_transform_matrix.translate(sx,sy);
+ _ctx.translate = function (sx, sy) {
+ _ctx._custom_transform_matrix = _ctx._custom_transform_matrix.translate(sx, sy);
checker();
return translate_func.call(_ctx, sx, sy);
};
let rotate_func = _ctx.rotate;
- _ctx.rotate = function(r) {
+ _ctx.rotate = function (r) {
_ctx._custom_transform_matrix = _ctx._custom_transform_matrix.rotate(r * 180.0 / Math.PI);
checker();
return rotate_func.call(_ctx, r);
};
let transform_func = _ctx.scale;
- _ctx.transform = function(a,b,c,d,e,f){
- let m2 = svg.createSVGMatrix();
- m2.a=a; m2.b=b; m2.c=c; m2.d=d; m2.e=e; m2.f=f;
+ _ctx.transform = function (a, b, c, d, e, f) {
+ let m2 = svg.createSVGMatrix();
+ m2.a = a; m2.b = b; m2.c = c; m2.d = d; m2.e = e; m2.f = f;
_ctx._custom_transform_matrix = _ctx._custom_transform_matrix.multiply(m2);
checker();
- return transform_func.call(_ctx,a,b,c,d,e,f);
- };
+ return transform_func.call(_ctx, a, b, c, d, e, f);
+ };
let setTransform_func = _ctx.setTransform;
- _ctx.setTransform = function(a,b,c,d,e,f){
- _ctx._custom_transform_matrix.a = a;
- _ctx._custom_transform_matrix.b = b;
- _ctx._custom_transform_matrix.c = c;
- _ctx._custom_transform_matrix.d = d;
- _ctx._custom_transform_matrix.e = e;
+ _ctx.setTransform = function (a, b, c, d, e, f) {
+ _ctx._custom_transform_matrix.a = a;
+ _ctx._custom_transform_matrix.b = b;
+ _ctx._custom_transform_matrix.c = c;
+ _ctx._custom_transform_matrix.d = d;
+ _ctx._custom_transform_matrix.e = e;
_ctx._custom_transform_matrix.f = f;
checker();
- return setTransform_func.call(_ctx,a,b,c,d,e,f);
- };
+ return setTransform_func.call(_ctx, a, b, c, d, e, f);
+ };
- _ctx.custom_inverseTransformMultiply = function(x,y){
- let pt = svg.createSVGPoint();
- pt.x=x; pt.y=y;
+ _ctx.custom_inverseTransformMultiply = function (x, y) {
+ let pt = svg.createSVGPoint();
+ pt.x = x; pt.y = y;
checker();
- return pt.matrixTransform(_ctx._custom_transform_matrix.inverse());
- }
+ return pt.matrixTransform(_ctx._custom_transform_matrix.inverse());
+ }
}
destroy() {
@@ -123,7 +123,7 @@ class CanvasManager {
addDrawable(obj) {
this.drawables.push(obj);
- this.indices.push({"c": CanvasManager.counter(), "d": obj});
+ this.indices.push({ "c": CanvasManager.counter(), "d": obj });
}
removeDrawable(drawable) {
@@ -131,16 +131,16 @@ class CanvasManager {
}
clearDrawables() {
- for(let x of this.drawables) {
+ for (let x of this.drawables) {
x.destroy();
}
this.drawables = [];
this.indices = [];
}
- scale(diff, x=0, y=0) {
+ scale(diff, x = 0, y = 0) {
this.stopAnimation();
- if(this.request_scale || this.contention > 0) {
+ if (this.request_scale || this.contention > 0) {
return;
}
this.contention++;
@@ -155,7 +155,7 @@ class CanvasManager {
this.user_transform = this.user_transform.scale(sv, sv, 1, 0, 0, 0);
this.scalef *= sv;
this.user_transform = this.user_transform.translate(-pt.x, -pt.y);
-
+
this.contention--;
}
@@ -172,31 +172,31 @@ class CanvasManager {
if (rect.width > rect.height) {
scale = canvas_w / rect.width;
tx = -rect.x;
- ty = -rect.y - (rect.height/2) + (canvas_h / scale / 2);
+ ty = -rect.y - (rect.height / 2) + (canvas_h / scale / 2);
// Now other dimension does not fit, scale it as well
if (rect.height * scale > canvas_h) {
scale = canvas_h / rect.height;
- tx = -rect.x - (rect.width/2) + (canvas_w / scale / 2);
+ tx = -rect.x - (rect.width / 2) + (canvas_w / scale / 2);
ty = -rect.y;
}
} else {
scale = canvas_h / rect.height;
- tx = -rect.x - (rect.width/2) + (canvas_w / scale / 2);
+ tx = -rect.x - (rect.width / 2) + (canvas_w / scale / 2);
ty = -rect.y;
-
+
// Now other dimension does not fit, scale it as well
if (rect.width * scale > canvas_w) {
scale = canvas_w / rect.width;
tx = -rect.x;
- ty = -rect.y - (rect.height/2) + (canvas_h / scale / 2);
+ ty = -rect.y - (rect.height / 2) + (canvas_h / scale / 2);
}
}
// Uniform scaling
this.user_transform = this.user_transform.scale(scale, scale, 1, 0, 0, 0);
this.user_transform = this.user_transform.translate(tx, ty);
- this.scale_origin = {x: 0, y: 0};
+ this.scale_origin = { x: 0, y: 0 };
this.scalef = 1.0;
}
@@ -215,7 +215,7 @@ class CanvasManager {
* @param {*} state_parent_list List of parent elements to SDFG states
*/
translate_element(el, old_mousepos, new_mousepos, entire_graph, sdfg_list,
- state_parent_list) {
+ state_parent_list) {
this.stopAnimation();
// Edges connected to the moving element
@@ -285,14 +285,14 @@ class CanvasManager {
new_mousepos.x <= parent_left_border) {
dx = min_x - el.points[1].x;
} else if (target_x >= max_x ||
- new_mousepos.x >= parent_rigth_border) {
+ new_mousepos.x >= parent_rigth_border) {
dx = max_x - el.points[1].x;
}
if (target_y <= min_y ||
new_mousepos.y <= parent_top_border) {
dy = min_y - el.points[1].y;
} else if (target_y >= max_y ||
- new_mousepos.y >= parent_bottom_border) {
+ new_mousepos.y >= parent_bottom_border) {
dy = max_y - el.points[1].y;
}
} else {
@@ -302,14 +302,14 @@ class CanvasManager {
new_mousepos.x <= parent_left_border) {
dx = min_x - el.x;
} else if (target_x >= max_x ||
- new_mousepos.x >= parent_rigth_border) {
+ new_mousepos.x >= parent_rigth_border) {
dx = max_x - el.x;
}
if (target_y <= min_y ||
new_mousepos.y <= parent_top_border) {
dy = min_y - el.y;
} else if (target_y >= max_y ||
- new_mousepos.y >= parent_bottom_border) {
+ new_mousepos.y >= parent_bottom_border) {
dy = max_y - el.y;
}
}
@@ -426,7 +426,7 @@ class CanvasManager {
}
draw(now = null) {
- if(this._destroying)
+ if (this._destroying)
return;
let dt = now - this.prev_time;
@@ -435,7 +435,7 @@ class CanvasManager {
if (now)
this.prev_time = now;
- if(this.contention > 0) return;
+ if (this.contention > 0) return;
this.contention += 1;
let ctx = this.ctx;
@@ -443,9 +443,11 @@ class CanvasManager {
ctx.save();
ctx.setTransform(1, 0, 0, 1, 0, 0);
ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);
+ ctx.fillStyle = this.renderer.bgcolor;
+ ctx.fillRect(0, 0, ctx.canvas.width, ctx.canvas.height);
ctx.restore();
- if(this.request_scale && this.contention == 1) {
+ if (this.request_scale && this.contention == 1) {
// Reset the translation
this.applyUserTransform();
this.request_scale = false;
@@ -469,9 +471,9 @@ class CanvasManager {
}
function getQuadraticAngle(t, sx, sy, cp1x, cp1y, ex, ey) {
- let dx = 2*(1-t)*(cp1x-sx) + 2*t*(ex-cp1x);
- let dy = 2*(1-t)*(cp1y-sy) + 2*t*(ey-cp1y);
- return -Math.atan2(dx, dy) + 0.5*Math.PI;
+ let dx = 2 * (1 - t) * (cp1x - sx) + 2 * t * (ex - cp1x);
+ let dy = 2 * (1 - t) * (cp1y - sy) + 2 * t * (ey - cp1y);
+ return -Math.atan2(dx, dy) + 0.5 * Math.PI;
}
function calculateBoundingBox(g) {
@@ -491,13 +493,13 @@ function calculateBoundingBox(g) {
}
function boundingBox(elements) {
- let bb = {x1: null, y1: null, x2: null, y2: null};
+ let bb = { x1: null, y1: null, x2: null, y2: null };
elements.forEach(function (v) {
let topleft = v.topleft();
if (bb.x1 === null || topleft.x < bb.x1) bb.x1 = topleft.x;
if (bb.y1 === null || topleft.y < bb.y1) bb.y1 = topleft.y;
-
+
let x2 = v.x + v.width / 2.0;
let y2 = v.y + v.height / 2.0;
@@ -505,7 +507,7 @@ function boundingBox(elements) {
if (bb.y2 === null || y2 > bb.y2) bb.y2 = y2;
});
- return {x: bb.x1, y: bb.y1, width: bb.x2 - bb.x1, height: bb.y2 - bb.y1};
+ return { x: bb.x1, y: bb.y1, width: bb.x2 - bb.x1, height: bb.y2 - bb.y1 };
}
function calculateEdgeBoundingBox(edge) {
@@ -523,8 +525,10 @@ function calculateEdgeBoundingBox(edge) {
bb.y2 = p.y > bb.y2 ? p.y : bb.y2;
});
- bb = {'x': bb.x1, 'y': bb.y1, 'width': (bb.x2 - bb.x1),
- 'height': (bb.y2 - bb.y1)};
+ bb = {
+ 'x': bb.x1, 'y': bb.y1, 'width': (bb.x2 - bb.x1),
+ 'height': (bb.y2 - bb.y1)
+ };
if (bb.width <= 5) {
bb.width = 10;
bb.x -= 5;
@@ -541,14 +545,14 @@ function calculateNodeSize(sdfg_state, node, ctx) {
let inconnsize = 2 * LINEHEIGHT * node.attributes.layout.in_connectors.length - LINEHEIGHT;
let outconnsize = 2 * LINEHEIGHT * node.attributes.layout.out_connectors.length - LINEHEIGHT;
let maxwidth = Math.max(labelsize, inconnsize, outconnsize);
- let maxheight = 2*LINEHEIGHT;
- maxheight += 4*LINEHEIGHT;
+ let maxheight = 2 * LINEHEIGHT;
+ maxheight += 4 * LINEHEIGHT;
let size = { width: maxwidth, height: maxheight }
// add something to the size based on the shape of the node
if (node.type === "AccessNode") {
- size.height -= 4*LINEHEIGHT;
+ size.height -= 4 * LINEHEIGHT;
size.width += size.height;
}
else if (node.type.endsWith("Entry")) {
@@ -572,7 +576,7 @@ function calculateNodeSize(sdfg_state, node, ctx) {
size.height /= 1.75;
}
else if (node.type === "Reduce") {
- size.height -= 4*LINEHEIGHT;
+ size.height -= 4 * LINEHEIGHT;
size.width *= 2;
size.height = size.width / 3.0;
}
@@ -584,7 +588,7 @@ function calculateNodeSize(sdfg_state, node, ctx) {
// Layout SDFG elements (states, nodes, scopes, nested SDFGs)
function relayout_sdfg(ctx, sdfg, sdfg_list, state_parent_list) {
- let STATE_MARGIN = 4*LINEHEIGHT;
+ let STATE_MARGIN = 4 * LINEHEIGHT;
// Layout the SDFG as a dagre graph
let g = new dagre.graphlib.Graph();
@@ -606,11 +610,13 @@ function relayout_sdfg(ctx, sdfg, sdfg_list, state_parent_list) {
state_parent_list);
stateinfo = calculateBoundingBox(state_g);
}
- stateinfo.width += 2*STATE_MARGIN;
- stateinfo.height += 2*STATE_MARGIN;
- g.setNode(state.id, new State({state: state,
- layout: stateinfo,
- graph: state_g}, state.id, sdfg));
+ stateinfo.width += 2 * STATE_MARGIN;
+ stateinfo.height += 2 * STATE_MARGIN;
+ g.setNode(state.id, new State({
+ state: state,
+ layout: stateinfo,
+ graph: state_g
+ }, state.id, sdfg));
});
sdfg.edges.forEach((edge, id) => {
@@ -655,8 +661,10 @@ function relayout_sdfg(ctx, sdfg, sdfg_list, state_parent_list) {
let state = g.node(sid);
let topleft = state.topleft();
- offset_state(s, state, {x: topleft.x + STATE_MARGIN,
- y: topleft.y + STATE_MARGIN});
+ offset_state(s, state, {
+ x: topleft.x + STATE_MARGIN,
+ y: topleft.y + STATE_MARGIN
+ });
});
let bb = calculateBoundingBox(g);
@@ -671,10 +679,10 @@ function relayout_sdfg(ctx, sdfg, sdfg_list, state_parent_list) {
function relayout_state(ctx, sdfg_state, sdfg, sdfg_list, state_parent_list) {
// layout the state as a dagre graph
- let g = new dagre.graphlib.Graph({multigraph: true});
+ let g = new dagre.graphlib.Graph({ multigraph: true });
// Set an object for the graph label
- g.setGraph({ranksep: 30});
+ g.setGraph({ ranksep: 30 });
g.setDefaultEdgeLabel(function (u, v) { return {}; });
@@ -708,12 +716,12 @@ function relayout_state(ctx, sdfg_state, sdfg, sdfg_list, state_parent_list) {
if (node.type === "NestedSDFG") {
nested_g = relayout_sdfg(ctx, node.attributes.sdfg, sdfg_list, state_parent_list);
let sdfginfo = calculateBoundingBox(nested_g);
- node.attributes.layout.width = sdfginfo.width + 2*LINEHEIGHT;
- node.attributes.layout.height = sdfginfo.height + 2*LINEHEIGHT;
+ node.attributes.layout.width = sdfginfo.width + 2 * LINEHEIGHT;
+ node.attributes.layout.height = sdfginfo.height + 2 * LINEHEIGHT;
}
// Dynamically create node type
- let obj = new SDFGElements[node.type]({node: node, graph: nested_g}, node.id, sdfg, sdfg_state.id);
+ let obj = new SDFGElements[node.type]({ node: node, graph: nested_g }, node.id, sdfg, sdfg_state.id);
// If it's a nested SDFG, we need to record the node as all of its
// state's parent node
@@ -723,7 +731,7 @@ function relayout_state(ctx, sdfg_state, sdfg, sdfg_list, state_parent_list) {
// Add input connectors
let i = 0;
for (let cname of node.attributes.layout.in_connectors) {
- let conn = new Connector({name: cname}, i, sdfg, node.id);
+ let conn = new Connector({ name: cname }, i, sdfg, node.id);
obj.in_connectors.push(conn);
i += 1;
}
@@ -731,7 +739,7 @@ function relayout_state(ctx, sdfg_state, sdfg, sdfg_list, state_parent_list) {
// Add output connectors -- if collapsed, uses exit node connectors
i = 0;
for (let cname of node.attributes.layout.out_connectors) {
- let conn = new Connector({name: cname}, i, sdfg, node.id);
+ let conn = new Connector({ name: cname }, i, sdfg, node.id);
obj.out_connectors.push(conn);
i += 1;
}
@@ -766,26 +774,26 @@ function relayout_state(ctx, sdfg_state, sdfg, sdfg_list, state_parent_list) {
// Layout connectors and nested SDFGs
- sdfg_state.nodes.forEach(function (node, id) {
+ sdfg_state.nodes.forEach(function (node, id) {
let gnode = g.node(id);
if (!gnode) return;
let topleft = gnode.topleft();
-
+
// Offset nested SDFG
if (node.type === "NestedSDFG") {
offset_sdfg(node.attributes.sdfg, gnode.data.graph, {
- x: topleft.x + LINEHEIGHT,
+ x: topleft.x + LINEHEIGHT,
y: topleft.y + LINEHEIGHT
});
}
// Connector management
- let SPACING = LINEHEIGHT;
+ let SPACING = LINEHEIGHT;
let iconn_length = (LINEHEIGHT + SPACING) * node.attributes.layout.in_connectors.length - SPACING;
let oconn_length = (LINEHEIGHT + SPACING) * node.attributes.layout.out_connectors.length - SPACING;
- let iconn_x = gnode.x - iconn_length / 2.0 + LINEHEIGHT/2.0;
- let oconn_x = gnode.x - oconn_length / 2.0 + LINEHEIGHT/2.0;
-
+ let iconn_x = gnode.x - iconn_length / 2.0 + LINEHEIGHT / 2.0;
+ let oconn_x = gnode.x - oconn_length / 2.0 + LINEHEIGHT / 2.0;
+
for (let c of gnode.in_connectors) {
c.width = LINEHEIGHT;
c.height = LINEHEIGHT;
@@ -834,7 +842,7 @@ function relayout_state(ctx, sdfg_state, sdfg, sdfg_list, state_parent_list) {
if (dst_conn !== null)
gedge.points[n] = dagre.util.intersectRect(dst_conn, gedge.points[0]);
- if (gedge.points.length == 3 && gedge.points[0].x == gedge.points[n].x)
+ if (gedge.points.length == 3 && gedge.points[0].x == gedge.points[n].x)
gedge.points = [gedge.points[0], gedge.points[n]];
let bb = calculateEdgeBoundingBox(gedge);
@@ -904,13 +912,14 @@ class SDFGRenderer {
}
view_settings() {
- return {inclusive_ranges: this.inclusive_ranges};
+ return { inclusive_ranges: this.inclusive_ranges };
}
// Initializes the DOM
init_elements() {
this.canvas = document.createElement('canvas');
+ this.canvas.style = 'background-color: inherit';
this.container.append(this.canvas);
// Add buttons
@@ -937,13 +946,13 @@ class SDFGRenderer {
cmenu.addOption("Save view as PDF", x => that.save_as_pdf());
cmenu.addOption("Save all as PDF", x => that.save_as_pdf(true));
}
- cmenu.addCheckableOption("Inclusive ranges", that.inclusive_ranges, (x, checked) => {that.inclusive_ranges = checked;});
+ cmenu.addCheckableOption("Inclusive ranges", that.inclusive_ranges, (x, checked) => { that.inclusive_ranges = checked; });
that.menu = cmenu;
that.menu.show(rect.left, rect.bottom);
};
d.title = 'Menu';
this.toolbar.appendChild(d);
- } catch (ex) {}
+ } catch (ex) { }
// Zoom to fit
d = document.createElement('button');
@@ -1004,8 +1013,9 @@ class SDFGRenderer {
// Resize event for container
let observer = new MutationObserver((mutations) => { this.onresize(); this.draw_async(); });
observer.observe(this.container, { attributes: true });
- // Also listen to resize events coming from the window
- window.addEventListener('resize', () => { this.onresize(); this.draw_async(); });
+
+ // Set inherited properties
+ this.bgcolor = window.getComputedStyle(this.canvas).backgroundColor;
// Create the initial SDFG layout
this.relayout();
@@ -1040,7 +1050,7 @@ class SDFGRenderer {
// Mouse handler event types
for (let evtype of ['mousedown', 'mousemove', 'mouseup', 'touchstart', 'touchmove', 'touchend',
- 'wheel', 'click', 'dblclick', 'contextmenu']) {
+ 'wheel', 'click', 'dblclick', 'contextmenu']) {
canvas.addEventListener(evtype, x => {
let cancelled = this.on_mouse_event(x, comp_x, comp_y, evtype);
if (cancelled)
@@ -1052,11 +1062,10 @@ class SDFGRenderer {
}
onresize() {
- // Set canvas background and size
- this.canvas.style.backgroundColor = "#ffffff";
+ // Set canvas size
this.canvas.style.width = '99%';
this.canvas.style.height = '99%';
- this.canvas.width = this.canvas.offsetWidth;
+ this.canvas.width = this.canvas.offsetWidth;
this.canvas.height = this.canvas.offsetHeight;
}
@@ -1072,10 +1081,10 @@ class SDFGRenderer {
// Change translation and scale such that the chosen elements
// (or entire graph if null) is in view
- zoom_to_view(elements=null) {
+ zoom_to_view(elements = null) {
if (!elements || elements.length == 0)
elements = this.graph.nodes().map(x => this.graph.node(x));
-
+
let bb = boundingBox(elements);
this.canvas_manager.set_view(bb);
@@ -1124,12 +1133,12 @@ class SDFGRenderer {
blobStream;
canvas2pdf.PdfContext;
return true;
- } catch(e) {
+ } catch (e) {
return false;
}
}
- save_as_pdf(save_all=false) {
+ save_as_pdf(save_all = false) {
let stream = blobStream();
// Compute document size
@@ -1180,7 +1189,7 @@ class SDFGRenderer {
let endy = this.canvas_manager.mapPixelToCoordsY(this.canvas.height);
let curw = endx - curx, curh = endy - cury;
- this.visible_rect = {x: curx, y: cury, w: curw, h: curh};
+ this.visible_rect = { x: curx, y: cury, w: curw, h: curh };
this.on_pre_draw();
@@ -1194,18 +1203,20 @@ class SDFGRenderer {
on_post_draw() {
try {
this.ctx.end();
- } catch (ex) {}
-
+ } catch (ex) { }
+
if (this.tooltip) {
let br = this.canvas.getBoundingClientRect();
- let pos = {x: this.realmousepos.x - br.x,
- y: this.realmousepos.y - br.y};
+ let pos = {
+ x: this.realmousepos.x - br.x,
+ y: this.realmousepos.y - br.y
+ };
// Clear style and contents
this.tooltip_container.style = '';
this.tooltip_container.innerHTML = '';
this.tooltip_container.style.display = 'block';
-
+
// Invoke custom container
this.tooltip(this.tooltip_container);
@@ -1241,10 +1252,10 @@ class SDFGRenderer {
g.nodes().forEach(state_id => {
let state = g.node(state_id);
if (!state) return;
-
+
if (state.intersect(x, y, w, h)) {
// States
- func('states', {sdfg: sdfg_name, id: state_id}, state);
+ func('states', { sdfg: sdfg_name, id: state_id }, state);
if (state.data.state.attributes.is_collapsed)
return;
@@ -1256,7 +1267,7 @@ class SDFGRenderer {
let node = ng.node(node_id);
if (node.intersect(x, y, w, h)) {
// Selected nodes
- func('nodes', {sdfg: sdfg_name, state: state_id, id: node_id}, node);
+ func('nodes', { sdfg: sdfg_name, state: state_id, id: node_id }, node);
// If nested SDFG, traverse recursively
if (node.data.node.type === "NestedSDFG")
@@ -1265,13 +1276,17 @@ class SDFGRenderer {
// Connectors
node.in_connectors.forEach((c, i) => {
if (c.intersect(x, y, w, h))
- func('connectors', {sdfg: sdfg_name, state: state_id, node: node_id,
- connector: i, conntype: "in"}, c);
+ func('connectors', {
+ sdfg: sdfg_name, state: state_id, node: node_id,
+ connector: i, conntype: "in"
+ }, c);
});
node.out_connectors.forEach((c, i) => {
if (c.intersect(x, y, w, h))
- func('connectors', {sdfg: sdfg_name, state: state_id, node: node_id,
- connector: i, conntype: "out"}, c);
+ func('connectors', {
+ sdfg: sdfg_name, state: state_id, node: node_id,
+ connector: i, conntype: "out"
+ }, c);
});
});
@@ -1279,7 +1294,7 @@ class SDFGRenderer {
ng.edges().forEach(edge_id => {
let edge = ng.edge(edge_id);
if (edge.intersect(x, y, w, h)) {
- func('edges', {sdfg: sdfg_name, state: state_id, id: edge.id}, edge);
+ func('edges', { sdfg: sdfg_name, state: state_id, id: edge.id }, edge);
}
});
}
@@ -1289,7 +1304,7 @@ class SDFGRenderer {
g.edges().forEach(isedge_id => {
let isedge = g.edge(isedge_id);
if (isedge.intersect(x, y, w, h)) {
- func('isedges', {sdfg: sdfg_name, id: isedge.id}, isedge);
+ func('isedges', { sdfg: sdfg_name, id: isedge.id }, isedge);
}
});
}
@@ -1303,11 +1318,11 @@ class SDFGRenderer {
function traverse_recursive(sdfg) {
sdfg.nodes.forEach((state, state_id) => {
// States
- func('states', {sdfg: sdfg, id: state_id}, state);
+ func('states', { sdfg: sdfg, id: state_id }, state);
state.nodes.forEach((node, node_id) => {
// Nodes
- func('nodes', {sdfg: sdfg, state: state_id, id: node_id}, node);
+ func('nodes', { sdfg: sdfg, state: state_id, id: node_id }, node);
// If nested SDFG, traverse recursively
if (node.type === "NestedSDFG")
@@ -1316,13 +1331,13 @@ class SDFGRenderer {
// Edges
state.edges.forEach((edge, edge_id) => {
- func('edges', {sdfg: sdfg, state: state_id, id: edge_id}, edge);
+ func('edges', { sdfg: sdfg, state: state_id, id: edge_id }, edge);
});
});
// Selected inter-state edges
sdfg.edges.forEach((isedge, isedge_id) => {
- func('isedges', {sdfg: sdfg, id: isedge_id}, isedge);
+ func('isedges', { sdfg: sdfg, id: isedge_id }, isedge);
});
}
@@ -1338,7 +1353,7 @@ class SDFGRenderer {
if (!state) return;
// States
- func('states', {sdfg: sdfg_name, id: state_id}, state, state.intersect(x, y, w, h));
+ func('states', { sdfg: sdfg_name, id: state_id }, state, state.intersect(x, y, w, h));
if (state.data.state.attributes.is_collapsed)
return;
@@ -1349,7 +1364,7 @@ class SDFGRenderer {
ng.nodes().forEach(node_id => {
let node = ng.node(node_id);
// Selected nodes
- func('nodes', {sdfg: sdfg_name, state: state_id, id: node_id}, node, node.intersect(x, y, w, h));
+ func('nodes', { sdfg: sdfg_name, state: state_id, id: node_id }, node, node.intersect(x, y, w, h));
// If nested SDFG, traverse recursively
if (node.data.node.type === "NestedSDFG")
@@ -1357,26 +1372,30 @@ class SDFGRenderer {
// Connectors
node.in_connectors.forEach((c, i) => {
- func('connectors', {sdfg: sdfg_name, state: state_id, node: node_id,
- connector: i, conntype: "in"}, c, c.intersect(x, y, w, h));
+ func('connectors', {
+ sdfg: sdfg_name, state: state_id, node: node_id,
+ connector: i, conntype: "in"
+ }, c, c.intersect(x, y, w, h));
});
node.out_connectors.forEach((c, i) => {
- func('connectors', {sdfg: sdfg_name, state: state_id, node: node_id,
- connector: i, conntype: "out"}, c, c.intersect(x, y, w, h));
+ func('connectors', {
+ sdfg: sdfg_name, state: state_id, node: node_id,
+ connector: i, conntype: "out"
+ }, c, c.intersect(x, y, w, h));
});
});
// Selected edges
ng.edges().forEach(edge_id => {
let edge = ng.edge(edge_id);
- func('edges', {sdfg: sdfg_name, state: state_id, id: edge.id}, edge, edge.intersect(x, y, w, h));
+ func('edges', { sdfg: sdfg_name, state: state_id, id: edge.id }, edge, edge.intersect(x, y, w, h));
});
});
// Selected inter-state edges
g.edges().forEach(isedge_id => {
let isedge = g.edge(isedge_id);
- func('isedges', {sdfg: sdfg_name, id: isedge.id}, isedge, isedge.intersect(x, y, w, h));
+ func('isedges', { sdfg: sdfg_name, id: isedge.id }, isedge, isedge.intersect(x, y, w, h));
});
}
@@ -1423,7 +1442,7 @@ class SDFGRenderer {
};
}
- on_mouse_event(event, comp_x_func, comp_y_func, evtype="click") {
+ on_mouse_event(event, comp_x_func, comp_y_func, evtype = "click") {
let dirty = false; // Whether to redraw at the end
if (evtype === "mousedown" || evtype === "touchstart") {
@@ -1439,8 +1458,8 @@ class SDFGRenderer {
} else if (evtype === "mousemove") {
// Calculate the change in mouse position in canvas coordinates
let old_mousepos = this.mousepos;
- this.mousepos = {x: comp_x_func(event), y: comp_y_func(event)};
- this.realmousepos = {x: event.clientX, y: event.clientY};
+ this.mousepos = { x: comp_x_func(event), y: comp_y_func(event) };
+ this.realmousepos = { x: event.clientX, y: event.clientY };
if (this.drag_start && event.buttons & 1) {
// Only accept the primary mouse button as dragging source
@@ -1487,7 +1506,7 @@ class SDFGRenderer {
this.drag_start = event;
} else if (event.touches.length == 1) { // Move/drag
this.canvas_manager.translate(event.touches[0].clientX - this.drag_start.touches[0].clientX,
- event.touches[0].clientY - this.drag_start.touches[0].clientY);
+ event.touches[0].clientY - this.drag_start.touches[0].clientY);
this.drag_start = event;
// Mark for redraw
@@ -1510,10 +1529,10 @@ class SDFGRenderer {
// First, translate according to movement of center point
this.canvas_manager.translate(newCenter[0] - oldCenter[0],
- newCenter[1] - oldCenter[1]);
+ newCenter[1] - oldCenter[1]);
// Then scale
this.canvas_manager.scale(currentDistance / initialDistance,
- newCenter[0], newCenter[1]);
+ newCenter[0], newCenter[1]);
this.drag_start = event;
@@ -1543,7 +1562,7 @@ class SDFGRenderer {
let elements = elements_under_cursor.elements;
let total_elements = elements_under_cursor.total_elements;
let foreground_elem = elements_under_cursor.foreground_elem;
-
+
// Change mouse cursor accordingly
if (total_elements > 0) {
if (this.move_mode && this.drag_start)
@@ -1563,7 +1582,7 @@ class SDFGRenderer {
this.for_all_elements(this.mousepos.x, this.mousepos.y, 0, 0, (type, e, obj, intersected) => {
if (intersected && obj.stroke_color === null)
obj.stroke_color = 'green';
- else if(!intersected && obj.stroke_color === 'green')
+ else if (!intersected && obj.stroke_color === 'green')
obj.stroke_color = null;
});
@@ -1597,8 +1616,8 @@ class SDFGRenderer {
}
if (this.external_mouse_handler)
- dirty |= this.external_mouse_handler(evtype, event, {x: comp_x_func(event), y: comp_y_func(event)}, elements,
- this, foreground_elem);
+ dirty |= this.external_mouse_handler(evtype, event, { x: comp_x_func(event), y: comp_y_func(event) }, elements,
+ this, foreground_elem);
if (dirty)
this.draw_async();
diff --git a/package-lock.json b/package-lock.json
index adb779e..a223ed4 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,6 @@
{
"name": "sdfv",
- "version": "0.1.2",
+ "version": "0.1.3",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@@ -84,9 +84,9 @@
"dev": true
},
"@types/vscode": {
- "version": "1.45.0",
- "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.45.0.tgz",
- "integrity": "sha512-b0Gyir7sPBCqiKLygAhn/AYVfzWD+SMPkWltBrIuPEyTOxSU1wVApWY/FcxYO2EWTRacoubTl4+gvZf86RkecA==",
+ "version": "1.45.1",
+ "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.45.1.tgz",
+ "integrity": "sha512-0NO9qrrEJBO8FsqHCrFMgR2suKnwCsKBWvRSb2OzH5gs4i3QO5AhEMQYrSzDbU/wLPt7N617/rN9lPY213gmwg==",
"dev": true
},
"@typescript-eslint/eslint-plugin": {
diff --git a/package.json b/package.json
index e3d0b3e..afd470b 100644
--- a/package.json
+++ b/package.json
@@ -34,6 +34,13 @@
],
"priority": "default"
}
+ ],
+ "iconThemes": [
+ {
+ "id": "sdfgicon",
+ "label": "Seti + SDFG Extension",
+ "path": "./fileicons/sdfg-icon-theme.json"
+ }
]
},
"scripts": {
@@ -48,7 +55,7 @@
"@types/glob": "^7.1.1",
"@types/mocha": "^7.0.1",
"@types/node": "^12.12.39",
- "@types/vscode": "^1.45.0",
+ "@types/vscode": "^1.45.1",
"@typescript-eslint/eslint-plugin": "^2.33.0",
"@typescript-eslint/parser": "^2.33.0",
"eslint": "^6.8.0",
@@ -58,4 +65,4 @@
"vscode-test": "^1.3.0"
},
"dependencies": {}
-}
+}
\ No newline at end of file
diff --git a/src/sdfg_viewer.ts b/src/sdfg_viewer.ts
index e9cd10f..8f88f5b 100644
--- a/src/sdfg_viewer.ts
+++ b/src/sdfg_viewer.ts
@@ -74,7 +74,7 @@ export class SdfgViewerProvider implements vscode.CustomTextEditorProvider {
* @returns HTML to be displayed
*/
private getHtml(webview: vscode.Webview,
- document: vscode.TextDocument): string {
+ document: vscode.TextDocument): string {
// Load the base HTML we want to display in the webview/editor.
const fpBaseHtml: vscode.Uri = vscode.Uri.file(path.join(
this.context.extensionPath, 'media', 'sdfv_base_layout.html'