material-icon-theme 4.14.0 → 4.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (185) hide show
  1. package/.eslintrc.json +51 -51
  2. package/.github/FUNDING.yml +3 -3
  3. package/.github/ISSUE_TEMPLATE/bug_report.md +34 -34
  4. package/.github/ISSUE_TEMPLATE/icon_request.md +27 -27
  5. package/.github/workflows/build.yml +45 -45
  6. package/.github/workflows/color-check.yml +22 -22
  7. package/.github/workflows/release.yml +73 -73
  8. package/.prettierrc +7 -7
  9. package/.vscode/extensions.json +3 -3
  10. package/.vscode/launch.json +43 -43
  11. package/.vscode/settings.json +14 -14
  12. package/.vscode/tasks.json +32 -32
  13. package/.vscodeignore +20 -20
  14. package/CHANGELOG.md +1135 -1101
  15. package/CONTRIBUTING.md +62 -62
  16. package/LICENSE.md +8 -8
  17. package/README.md +209 -209
  18. package/build/web-extension.webpack.config.js +62 -62
  19. package/build/webpack.config.js +39 -39
  20. package/changelog.config.json +4 -4
  21. package/icons/astyle.svg +4 -4
  22. package/icons/blitz.svg +4 -4
  23. package/icons/cypress.svg +4 -4
  24. package/icons/dependabot.svg +4 -4
  25. package/icons/dinophp.svg +16 -16
  26. package/icons/figma.svg +10 -10
  27. package/icons/folder-angular-open.svg +2 -2
  28. package/icons/folder-angular.svg +2 -2
  29. package/icons/folder-cypress-open.svg +5 -5
  30. package/icons/folder-cypress.svg +5 -5
  31. package/icons/folder-java-open.svg +2 -2
  32. package/icons/folder-java.svg +2 -2
  33. package/icons/folder-next-open.svg +2 -2
  34. package/icons/folder-next.svg +2 -2
  35. package/icons/folder-queue-open.svg +2 -2
  36. package/icons/folder-queue.svg +2 -2
  37. package/icons/folder-resolver-open.svg +2 -2
  38. package/icons/folder-resolver.svg +2 -2
  39. package/icons/folder-serverless-open.svg +5 -5
  40. package/icons/folder-serverless.svg +5 -5
  41. package/icons/folder-target-open.svg +2 -2
  42. package/icons/folder-target.svg +2 -2
  43. package/icons/folder-unity-open.svg +2 -0
  44. package/icons/folder-unity.svg +2 -0
  45. package/icons/folder-vercel-open.svg +4 -4
  46. package/icons/folder-vercel.svg +4 -4
  47. package/icons/gleam.svg +4 -4
  48. package/icons/gridsome.svg +4 -4
  49. package/icons/hardhat.svg +3 -3
  50. package/icons/lighthouse.svg +2 -2
  51. package/icons/ndst.svg +7 -7
  52. package/icons/next.svg +3 -3
  53. package/icons/next_light.svg +2 -2
  54. package/icons/odin.svg +6 -6
  55. package/icons/parcel.svg +4 -4
  56. package/icons/playwright.svg +7 -7
  57. package/icons/pnpm.svg +9 -9
  58. package/icons/pnpm_light.svg +7 -7
  59. package/icons/poetry.svg +1 -0
  60. package/icons/processing.svg +10 -1
  61. package/icons/remix.svg +4 -4
  62. package/icons/remix_light.svg +4 -4
  63. package/icons/rome.svg +5 -5
  64. package/icons/serverless.svg +4 -4
  65. package/icons/siyuan.svg +9 -9
  66. package/icons/steadybit.svg +1 -0
  67. package/icons/svgr.svg +4 -4
  68. package/icons/tauri.svg +9 -9
  69. package/icons/template.svg +4 -4
  70. package/icons/tobi.svg +4 -4
  71. package/icons/tobimake.svg +14 -14
  72. package/icons/turborepo.svg +12 -0
  73. package/icons/turborepo_light.svg +12 -0
  74. package/images/contributors.png +0 -0
  75. package/images/fileIcons.png +0 -0
  76. package/images/folderIcons.png +0 -0
  77. package/logo.svg +21 -21
  78. package/material-colors.yml +257 -257
  79. package/package.json +264 -264
  80. package/package.nls.de.json +35 -35
  81. package/package.nls.es.json +32 -32
  82. package/package.nls.fr.json +32 -32
  83. package/package.nls.ja.json +35 -35
  84. package/package.nls.json +35 -35
  85. package/package.nls.nl.json +35 -35
  86. package/package.nls.pl.json +35 -35
  87. package/package.nls.pt-BR.json +32 -32
  88. package/package.nls.pt-PT.json +32 -32
  89. package/package.nls.ru.json +32 -32
  90. package/package.nls.zh-CN.json +32 -32
  91. package/package.nls.zh-TW.json +32 -32
  92. package/src/commands/activate.ts +26 -26
  93. package/src/commands/explorerArrows.ts +55 -55
  94. package/src/commands/folderColor.ts +96 -96
  95. package/src/commands/folders.ts +55 -55
  96. package/src/commands/grayscale.ts +55 -55
  97. package/src/commands/iconPacks.ts +68 -68
  98. package/src/commands/index.ts +30 -30
  99. package/src/commands/opacity.ts +46 -46
  100. package/src/commands/restoreConfig.ts +14 -14
  101. package/src/commands/saturation.ts +46 -46
  102. package/src/extension.ts +35 -35
  103. package/src/helpers/changeDetection.ts +68 -68
  104. package/src/helpers/customIcons.ts +8 -8
  105. package/src/helpers/fileConfig.ts +37 -37
  106. package/src/helpers/index.ts +100 -100
  107. package/src/helpers/objects.ts +58 -58
  108. package/src/helpers/types.ts +7 -7
  109. package/src/helpers/versioning.ts +73 -73
  110. package/src/i18n/index.ts +78 -78
  111. package/src/i18n/lang-de.ts +54 -54
  112. package/src/i18n/lang-en.ts +53 -53
  113. package/src/i18n/lang-es.ts +53 -53
  114. package/src/i18n/lang-fr.ts +53 -53
  115. package/src/i18n/lang-ja.ts +54 -54
  116. package/src/i18n/lang-nl.ts +54 -54
  117. package/src/i18n/lang-pl.ts +52 -52
  118. package/src/i18n/lang-pt-br.ts +53 -53
  119. package/src/i18n/lang-pt-pt.ts +53 -53
  120. package/src/i18n/lang-ru.ts +52 -52
  121. package/src/i18n/lang-uk.ts +54 -54
  122. package/src/i18n/lang-zh-cn.ts +52 -52
  123. package/src/i18n/lang-zh-tw.ts +52 -52
  124. package/src/icons/fileIcons.ts +1854 -1782
  125. package/src/icons/folderIcons.ts +754 -711
  126. package/src/icons/generator/constants.ts +29 -29
  127. package/src/icons/generator/fileGenerator.ts +216 -216
  128. package/src/icons/generator/folderGenerator.ts +340 -340
  129. package/src/icons/generator/iconOpacity.ts +111 -111
  130. package/src/icons/generator/iconSaturation.ts +140 -140
  131. package/src/icons/generator/index.ts +7 -7
  132. package/src/icons/generator/jsonGenerator.ts +187 -187
  133. package/src/icons/generator/languageGenerator.ts +127 -127
  134. package/src/icons/index.ts +4 -4
  135. package/src/icons/languageIcons.ts +134 -134
  136. package/src/messages/outdated.ts +33 -33
  137. package/src/messages/reload.ts +32 -32
  138. package/src/messages/start.ts +12 -12
  139. package/src/messages/update.ts +48 -48
  140. package/src/messages/welcome.ts +47 -47
  141. package/src/models/helpers/index.ts +1 -1
  142. package/src/models/helpers/themeStatus.ts +5 -5
  143. package/src/models/i18n/index.ts +1 -1
  144. package/src/models/i18n/translation.ts +50 -50
  145. package/src/models/iconConfiguration.ts +37 -37
  146. package/src/models/icons/defaultIcon.ts +16 -16
  147. package/src/models/icons/files/fileIcon.ts +49 -49
  148. package/src/models/icons/files/fileTypes.ts +14 -14
  149. package/src/models/icons/files/index.ts +2 -2
  150. package/src/models/icons/folders/folderIcon.ts +34 -34
  151. package/src/models/icons/folders/folderTheme.ts +23 -23
  152. package/src/models/icons/folders/index.ts +2 -2
  153. package/src/models/icons/iconJsonOptions.ts +23 -23
  154. package/src/models/icons/iconPack.ts +12 -12
  155. package/src/models/icons/index.ts +6 -6
  156. package/src/models/icons/languages/index.ts +1 -1
  157. package/src/models/icons/languages/languageIdentifier.ts +26 -26
  158. package/src/models/index.ts +4 -4
  159. package/src/models/scripts/contributors/contributor.ts +22 -22
  160. package/src/models/scripts/contributors/contributorsConfig.ts +10 -10
  161. package/src/scripts/contributors/contributors.css +24 -24
  162. package/src/scripts/contributors/index.ts +138 -138
  163. package/src/scripts/helpers/painter.ts +5 -5
  164. package/src/scripts/helpers/screenshots.ts +32 -32
  165. package/src/scripts/helpers/similarity.ts +47 -47
  166. package/src/scripts/helpers/titleCase.ts +7 -7
  167. package/src/scripts/icons/checks/checkIconAvailability.ts +215 -215
  168. package/src/scripts/icons/checks/checkIconConflicts.ts +154 -154
  169. package/src/scripts/icons/checks/checkIconUsage.ts +141 -141
  170. package/src/scripts/icons/checks/index.ts +7 -7
  171. package/src/scripts/icons/generateJson.ts +11 -11
  172. package/src/scripts/preview/index.ts +40 -40
  173. package/src/scripts/preview/preview.ts +165 -165
  174. package/src/scripts/preview/style.css +48 -48
  175. package/src/test/runTest.ts +26 -26
  176. package/src/test/spec/i18n/i18n.spec.ts +61 -61
  177. package/src/test/spec/icons/fileIcons.spec.ts +250 -250
  178. package/src/test/spec/icons/folderIcons.spec.ts +418 -418
  179. package/src/test/spec/icons/languageIcons.spec.ts +184 -184
  180. package/src/test/spec/index.ts +36 -36
  181. package/src/web/extension.ts +10 -10
  182. package/svgo.config.js +11 -11
  183. package/tsconfig.json +23 -23
  184. package/.github/workflows/greetings.yml +0 -17
  185. package/icons/processing_light.svg +0 -1
@@ -1,40 +1,40 @@
1
- import { fileIcons } from './../../icons/fileIcons';
2
- import { folderIcons } from './../../icons/folderIcons';
3
- import { languageIcons } from './../../icons/languageIcons';
4
- import { generatePreview } from './preview';
5
-
6
- const filterDuplicates = (icons: string[]) => {
7
- return [...new Set(icons)];
8
- };
9
-
10
- const basicFileIcons = filterDuplicates(
11
- fileIcons.icons
12
- .map((i) => i.name)
13
- // merge language icons
14
- .concat(languageIcons.map((i) => i.icon.name))
15
- ).map((i) => ({ iconName: i, label: i }));
16
-
17
- const folderThemes = filterDuplicates(
18
- folderIcons
19
- .map((theme) => {
20
- const folders = [];
21
- if (theme.icons && theme.icons.length > 0) {
22
- folders.push(...theme.icons.map((i) => i.name));
23
- }
24
- return [...folders];
25
- })
26
- .reduce((a, b) => a.concat(b))
27
- ).map((i) => ({ iconName: i, label: i.replace('folder-', '') }));
28
-
29
- generatePreview('fileIcons', basicFileIcons, 5, [
30
- 'virtual',
31
- 'powerpoint',
32
- 'word',
33
- 'credits',
34
- ]);
35
- generatePreview('folderIcons', folderThemes, 5, [
36
- 'folder-aurelia',
37
- 'folder-phpmailer',
38
- 'folder-syntax',
39
- 'folder-ansible',
40
- ]);
1
+ import { fileIcons } from './../../icons/fileIcons';
2
+ import { folderIcons } from './../../icons/folderIcons';
3
+ import { languageIcons } from './../../icons/languageIcons';
4
+ import { generatePreview } from './preview';
5
+
6
+ const filterDuplicates = (icons: string[]) => {
7
+ return [...new Set(icons)];
8
+ };
9
+
10
+ const basicFileIcons = filterDuplicates(
11
+ fileIcons.icons
12
+ .map((i) => i.name)
13
+ // merge language icons
14
+ .concat(languageIcons.map((i) => i.icon.name))
15
+ ).map((i) => ({ iconName: i, label: i }));
16
+
17
+ const folderThemes = filterDuplicates(
18
+ folderIcons
19
+ .map((theme) => {
20
+ const folders = [];
21
+ if (theme.icons && theme.icons.length > 0) {
22
+ folders.push(...theme.icons.map((i) => i.name));
23
+ }
24
+ return [...folders];
25
+ })
26
+ .reduce((a, b) => a.concat(b))
27
+ ).map((i) => ({ iconName: i, label: i.replace('folder-', '') }));
28
+
29
+ generatePreview('fileIcons', basicFileIcons, 5, [
30
+ 'virtual',
31
+ 'powerpoint',
32
+ 'word',
33
+ 'credits',
34
+ ]);
35
+ generatePreview('folderIcons', folderThemes, 5, [
36
+ 'folder-aurelia',
37
+ 'folder-phpmailer',
38
+ 'folder-syntax',
39
+ 'folder-ansible',
40
+ ]);
@@ -1,165 +1,165 @@
1
- import * as fs from 'fs';
2
- import * as path from 'path';
3
- import { createScreenshot } from '../helpers/screenshots';
4
- import * as painter from './../helpers/painter';
5
- import { toTitleCase } from './../helpers/titleCase';
6
-
7
- const htmlDoctype = '<!DOCTYPE html>';
8
- const cssFilePath = path.join('style.css');
9
- const styling = `<link rel="stylesheet" href="${cssFilePath}">`;
10
-
11
- const createHTMLTableHeadRow = (amount: number) => {
12
- const pair = `
13
- <th class="icon">Icon</th>
14
- <th class="iconName">Name</th>
15
- `;
16
- const columns = [...Array(amount)].map(() => pair).join('');
17
- return `
18
- <tr>
19
- ${columns}
20
- </tr>
21
- `;
22
- };
23
-
24
- const createHTMLTableBodyRows = (items: IconDefinition[][]) => {
25
- let rows = '';
26
- items.forEach((row) => {
27
- const columns = row
28
- .map(
29
- (icon) => `
30
- <td class="icon">
31
- <img src="./../../../icons/${icon.iconName}.svg" alt="${
32
- icon.label
33
- }">
34
- </td>
35
- <td class="iconName">${toTitleCase(icon.label)}</td>
36
- `
37
- )
38
- .join('');
39
- const tableRow = `
40
- <tr>
41
- ${columns}
42
- </tr>
43
- `;
44
- rows = rows + tableRow;
45
- });
46
- return rows;
47
- };
48
-
49
- const createHTMLTable = (headRow: string, bodyRows: string) => `
50
- <table>
51
- ${headRow}
52
- ${bodyRows}
53
- </table>
54
- `;
55
-
56
- const createPreviewTable = (icons: IconDefinition[][], size: number) => {
57
- const table =
58
- htmlDoctype +
59
- styling +
60
- createHTMLTable(
61
- createHTMLTableHeadRow(size),
62
- createHTMLTableBodyRows(icons)
63
- );
64
- return table;
65
- };
66
-
67
- const savePreview = (
68
- fileName: string,
69
- size: number,
70
- icons: IconDefinition[][]
71
- ) => {
72
- const filePath = path.join(__dirname, fileName + '.html');
73
-
74
- // write the html file with the icon table
75
- fs.writeFileSync(filePath, createPreviewTable(icons, size));
76
-
77
- // create the image
78
- createScreenshot(filePath, fileName)
79
- .then(() => {
80
- console.log(
81
- '> Material Icon Theme:',
82
- painter.green(`Successfully created ${fileName} preview image!`)
83
- );
84
- })
85
- .catch(() => {
86
- throw Error(
87
- painter.red(`Error while creating ${fileName} preview image`)
88
- );
89
- });
90
- };
91
-
92
- const getIconDefinitionsMatrix = (
93
- icons: IconDefinition[],
94
- size: number,
95
- excluded: string[] = []
96
- ): IconDefinition[][] => {
97
- const iconList = icons.sort((a, b) => a.label.localeCompare(b.label));
98
- trimIconListToSize(iconList, size, excluded);
99
-
100
- // list for the columns with the icons
101
- const matrix: IconDefinition[][] = [];
102
-
103
- // calculate the amount of icons per column
104
- const itemsPerColumn = Math.floor(iconList.length / size);
105
-
106
- // create the columns with the icons
107
- let counter = 0;
108
- for (let c = 0; c < itemsPerColumn; c++) {
109
- matrix[c] = [];
110
- }
111
- for (let s = 0; s < size; s++) {
112
- for (let i = 0; i < itemsPerColumn; i++) {
113
- matrix[i][s] = iconList[counter];
114
- counter++;
115
- }
116
- }
117
-
118
- return matrix;
119
- };
120
-
121
- /**
122
- * Function that generates the preview image for specific icons.
123
- * @param name name of the preview
124
- * @param icons icons for the preview
125
- * @param size amount of table columns
126
- * @param trimmableIcons List of icons that can possibly be trimmed
127
- */
128
- export const generatePreview = (
129
- name: string,
130
- icons: IconDefinition[],
131
- size: number,
132
- trimmableIcons: string[] = []
133
- ) => {
134
- savePreview(
135
- name,
136
- size,
137
- getIconDefinitionsMatrix(icons, size, trimmableIcons)
138
- );
139
- };
140
-
141
- interface IconDefinition {
142
- iconName: string;
143
- label: string;
144
- }
145
-
146
- /**
147
- * Trim the list of icons into the matrix
148
- * @param iconList List of icons
149
- * @param size Amount of columns
150
- * @param trimmableIcons List of icons that can possibly be trimmed
151
- */
152
- const trimIconListToSize = (
153
- iconList: IconDefinition[],
154
- size: number,
155
- trimmableIcons: string[]
156
- ) => {
157
- while (iconList.length % size !== 0) {
158
- iconList.splice(
159
- iconList.findIndex(
160
- (i) => i.iconName === trimmableIcons[iconList.length % size]
161
- ),
162
- 1
163
- );
164
- }
165
- };
1
+ import * as fs from 'fs';
2
+ import * as path from 'path';
3
+ import { createScreenshot } from '../helpers/screenshots';
4
+ import * as painter from './../helpers/painter';
5
+ import { toTitleCase } from './../helpers/titleCase';
6
+
7
+ const htmlDoctype = '<!DOCTYPE html>';
8
+ const cssFilePath = path.join('style.css');
9
+ const styling = `<link rel="stylesheet" href="${cssFilePath}">`;
10
+
11
+ const createHTMLTableHeadRow = (amount: number) => {
12
+ const pair = `
13
+ <th class="icon">Icon</th>
14
+ <th class="iconName">Name</th>
15
+ `;
16
+ const columns = [...Array(amount)].map(() => pair).join('');
17
+ return `
18
+ <tr>
19
+ ${columns}
20
+ </tr>
21
+ `;
22
+ };
23
+
24
+ const createHTMLTableBodyRows = (items: IconDefinition[][]) => {
25
+ let rows = '';
26
+ items.forEach((row) => {
27
+ const columns = row
28
+ .map(
29
+ (icon) => `
30
+ <td class="icon">
31
+ <img src="./../../../icons/${icon.iconName}.svg" alt="${
32
+ icon.label
33
+ }">
34
+ </td>
35
+ <td class="iconName">${toTitleCase(icon.label)}</td>
36
+ `
37
+ )
38
+ .join('');
39
+ const tableRow = `
40
+ <tr>
41
+ ${columns}
42
+ </tr>
43
+ `;
44
+ rows = rows + tableRow;
45
+ });
46
+ return rows;
47
+ };
48
+
49
+ const createHTMLTable = (headRow: string, bodyRows: string) => `
50
+ <table>
51
+ ${headRow}
52
+ ${bodyRows}
53
+ </table>
54
+ `;
55
+
56
+ const createPreviewTable = (icons: IconDefinition[][], size: number) => {
57
+ const table =
58
+ htmlDoctype +
59
+ styling +
60
+ createHTMLTable(
61
+ createHTMLTableHeadRow(size),
62
+ createHTMLTableBodyRows(icons)
63
+ );
64
+ return table;
65
+ };
66
+
67
+ const savePreview = (
68
+ fileName: string,
69
+ size: number,
70
+ icons: IconDefinition[][]
71
+ ) => {
72
+ const filePath = path.join(__dirname, fileName + '.html');
73
+
74
+ // write the html file with the icon table
75
+ fs.writeFileSync(filePath, createPreviewTable(icons, size));
76
+
77
+ // create the image
78
+ createScreenshot(filePath, fileName)
79
+ .then(() => {
80
+ console.log(
81
+ '> Material Icon Theme:',
82
+ painter.green(`Successfully created ${fileName} preview image!`)
83
+ );
84
+ })
85
+ .catch(() => {
86
+ throw Error(
87
+ painter.red(`Error while creating ${fileName} preview image`)
88
+ );
89
+ });
90
+ };
91
+
92
+ const getIconDefinitionsMatrix = (
93
+ icons: IconDefinition[],
94
+ size: number,
95
+ excluded: string[] = []
96
+ ): IconDefinition[][] => {
97
+ const iconList = icons.sort((a, b) => a.label.localeCompare(b.label));
98
+ trimIconListToSize(iconList, size, excluded);
99
+
100
+ // list for the columns with the icons
101
+ const matrix: IconDefinition[][] = [];
102
+
103
+ // calculate the amount of icons per column
104
+ const itemsPerColumn = Math.floor(iconList.length / size);
105
+
106
+ // create the columns with the icons
107
+ let counter = 0;
108
+ for (let c = 0; c < itemsPerColumn; c++) {
109
+ matrix[c] = [];
110
+ }
111
+ for (let s = 0; s < size; s++) {
112
+ for (let i = 0; i < itemsPerColumn; i++) {
113
+ matrix[i][s] = iconList[counter];
114
+ counter++;
115
+ }
116
+ }
117
+
118
+ return matrix;
119
+ };
120
+
121
+ /**
122
+ * Function that generates the preview image for specific icons.
123
+ * @param name name of the preview
124
+ * @param icons icons for the preview
125
+ * @param size amount of table columns
126
+ * @param trimmableIcons List of icons that can possibly be trimmed
127
+ */
128
+ export const generatePreview = (
129
+ name: string,
130
+ icons: IconDefinition[],
131
+ size: number,
132
+ trimmableIcons: string[] = []
133
+ ) => {
134
+ savePreview(
135
+ name,
136
+ size,
137
+ getIconDefinitionsMatrix(icons, size, trimmableIcons)
138
+ );
139
+ };
140
+
141
+ interface IconDefinition {
142
+ iconName: string;
143
+ label: string;
144
+ }
145
+
146
+ /**
147
+ * Trim the list of icons into the matrix
148
+ * @param iconList List of icons
149
+ * @param size Amount of columns
150
+ * @param trimmableIcons List of icons that can possibly be trimmed
151
+ */
152
+ const trimIconListToSize = (
153
+ iconList: IconDefinition[],
154
+ size: number,
155
+ trimmableIcons: string[]
156
+ ) => {
157
+ while (iconList.length % size !== 0) {
158
+ iconList.splice(
159
+ iconList.findIndex(
160
+ (i) => i.iconName === trimmableIcons[iconList.length % size]
161
+ ),
162
+ 1
163
+ );
164
+ }
165
+ };
@@ -1,48 +1,48 @@
1
- :root {
2
- --main-bg-color: #1e1e1e;
3
- }
4
-
5
- body {
6
- margin: 0;
7
- padding: 0;
8
- }
9
-
10
- table {
11
- font-family: arial, sans-serif;
12
- border-collapse: collapse;
13
- width: 100%;
14
- background: var(--main-bg-color);
15
- color: rgb(250, 250, 250);
16
- font-size: 1rem;
17
- }
18
-
19
- td,
20
- th {
21
- border: 0px solid #dddddd;
22
- text-align: left;
23
- padding: 8px;
24
- }
25
-
26
- tr:last-child {
27
- border-bottom: 0.5rem solid var(--main-bg-color);
28
- }
29
-
30
- tr:first-child {
31
- border-top: 0.5rem solid var(--main-bg-color);
32
- border-bottom: 0.5rem solid var(--main-bg-color);
33
- }
34
-
35
- .icon {
36
- width: 2rem;
37
- text-align: center;
38
- padding: 0.5rem 1rem 0.5rem 1rem;
39
- }
40
-
41
- .iconName {
42
- min-width: 9rem;
43
- }
44
-
45
- img {
46
- width: 30px;
47
- height: auto;
48
- }
1
+ :root {
2
+ --main-bg-color: #1e1e1e;
3
+ }
4
+
5
+ body {
6
+ margin: 0;
7
+ padding: 0;
8
+ }
9
+
10
+ table {
11
+ font-family: arial, sans-serif;
12
+ border-collapse: collapse;
13
+ width: 100%;
14
+ background: var(--main-bg-color);
15
+ color: rgb(250, 250, 250);
16
+ font-size: 1rem;
17
+ }
18
+
19
+ td,
20
+ th {
21
+ border: 0px solid #dddddd;
22
+ text-align: left;
23
+ padding: 8px;
24
+ }
25
+
26
+ tr:last-child {
27
+ border-bottom: 0.5rem solid var(--main-bg-color);
28
+ }
29
+
30
+ tr:first-child {
31
+ border-top: 0.5rem solid var(--main-bg-color);
32
+ border-bottom: 0.5rem solid var(--main-bg-color);
33
+ }
34
+
35
+ .icon {
36
+ width: 2rem;
37
+ text-align: center;
38
+ padding: 0.5rem 1rem 0.5rem 1rem;
39
+ }
40
+
41
+ .iconName {
42
+ min-width: 9rem;
43
+ }
44
+
45
+ img {
46
+ width: 30px;
47
+ height: auto;
48
+ }
@@ -1,26 +1,26 @@
1
- import * as path from 'path';
2
- import { runTests } from 'vscode-test';
3
-
4
- const main = async () => {
5
- try {
6
- // The folder containing the Extension Manifest package.json
7
- // Passed to `--extensionDevelopmentPath`
8
- const extensionDevelopmentPath = path.resolve(__dirname, '../../');
9
-
10
- // The path to the extension test script
11
- // Passed to --extensionTestsPath
12
- const extensionTestsPath = path.resolve(__dirname, './spec/index');
13
-
14
- // Download VS Code, unzip it and run the integration test
15
- await runTests({
16
- extensionDevelopmentPath,
17
- extensionTestsPath,
18
- launchArgs: ['--disable-gpu', '--disable-workspace-trust'],
19
- });
20
- } catch (err) {
21
- console.error('Failed to run tests');
22
- process.exit(1);
23
- }
24
- };
25
-
26
- main();
1
+ import * as path from 'path';
2
+ import { runTests } from 'vscode-test';
3
+
4
+ const main = async () => {
5
+ try {
6
+ // The folder containing the Extension Manifest package.json
7
+ // Passed to `--extensionDevelopmentPath`
8
+ const extensionDevelopmentPath = path.resolve(__dirname, '../../');
9
+
10
+ // The path to the extension test script
11
+ // Passed to --extensionTestsPath
12
+ const extensionTestsPath = path.resolve(__dirname, './spec/index');
13
+
14
+ // Download VS Code, unzip it and run the integration test
15
+ await runTests({
16
+ extensionDevelopmentPath,
17
+ extensionTestsPath,
18
+ launchArgs: ['--disable-gpu', '--disable-workspace-trust'],
19
+ });
20
+ } catch (err) {
21
+ console.error('Failed to run tests');
22
+ process.exit(1);
23
+ }
24
+ };
25
+
26
+ main();
@@ -1,61 +1,61 @@
1
- import * as assert from 'assert';
2
- import { getObjectPropertyValue } from '../../../helpers/objects';
3
- import * as i18n from '../../../i18n';
4
- import { Translation } from '../../../models';
5
-
6
- describe('i18n', () => {
7
- it('should initialize translations', () => {
8
- return i18n.initTranslations();
9
- });
10
-
11
- it('should translate key', () => {
12
- assert.equal(
13
- i18n.getTranslationValue('activate', { activate: 'b' } as Translation),
14
- 'b'
15
- );
16
- });
17
-
18
- it('should return undefined if translation is not defined', () => {
19
- assert.equal(
20
- i18n.getTranslationValue(
21
- 'activate',
22
- {} as Translation,
23
- {} as Translation
24
- ),
25
- undefined
26
- );
27
- });
28
-
29
- it('should use fallback if translation is not defined', () => {
30
- assert.equal(
31
- i18n.getTranslationValue(
32
- 'activate',
33
- {} as Translation,
34
- { activate: 'fb' } as Translation
35
- ),
36
- 'fb'
37
- );
38
- });
39
-
40
- it('should get the correct translation value of the translation object', () => {
41
- const translation = {
42
- a: {
43
- b: {
44
- c: 'c',
45
- },
46
- },
47
- };
48
- assert.equal(getObjectPropertyValue(translation, 'a.b.c'), 'c');
49
- });
50
-
51
- it('should use placeholder in translation', () => {
52
- assert.equal(
53
- i18n.replace('%0 with placeholder', 'test'),
54
- 'test with placeholder'
55
- );
56
- assert.equal(
57
- i18n.replace('%0 with %1', 'test', 'placeholder'),
58
- 'test with placeholder'
59
- );
60
- });
61
- });
1
+ import * as assert from 'assert';
2
+ import { getObjectPropertyValue } from '../../../helpers/objects';
3
+ import * as i18n from '../../../i18n';
4
+ import { Translation } from '../../../models';
5
+
6
+ describe('i18n', () => {
7
+ it('should initialize translations', () => {
8
+ return i18n.initTranslations();
9
+ });
10
+
11
+ it('should translate key', () => {
12
+ assert.equal(
13
+ i18n.getTranslationValue('activate', { activate: 'b' } as Translation),
14
+ 'b'
15
+ );
16
+ });
17
+
18
+ it('should return undefined if translation is not defined', () => {
19
+ assert.equal(
20
+ i18n.getTranslationValue(
21
+ 'activate',
22
+ {} as Translation,
23
+ {} as Translation
24
+ ),
25
+ undefined
26
+ );
27
+ });
28
+
29
+ it('should use fallback if translation is not defined', () => {
30
+ assert.equal(
31
+ i18n.getTranslationValue(
32
+ 'activate',
33
+ {} as Translation,
34
+ { activate: 'fb' } as Translation
35
+ ),
36
+ 'fb'
37
+ );
38
+ });
39
+
40
+ it('should get the correct translation value of the translation object', () => {
41
+ const translation = {
42
+ a: {
43
+ b: {
44
+ c: 'c',
45
+ },
46
+ },
47
+ };
48
+ assert.equal(getObjectPropertyValue(translation, 'a.b.c'), 'c');
49
+ });
50
+
51
+ it('should use placeholder in translation', () => {
52
+ assert.equal(
53
+ i18n.replace('%0 with placeholder', 'test'),
54
+ 'test with placeholder'
55
+ );
56
+ assert.equal(
57
+ i18n.replace('%0 with %1', 'test', 'placeholder'),
58
+ 'test with placeholder'
59
+ );
60
+ });
61
+ });