material-icon-theme 4.22.0 → 4.23.1

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 (84) hide show
  1. package/.eslintrc.json +51 -51
  2. package/.github/workflows/build.yml +45 -45
  3. package/.github/workflows/color-check.yml +22 -22
  4. package/.github/workflows/release.yml +73 -73
  5. package/.vscodeignore +21 -21
  6. package/CHANGELOG.md +1292 -1267
  7. package/README.md +199 -199
  8. package/icons/craco.svg +45 -0
  9. package/icons/folder-changesets-open.svg +5 -0
  10. package/icons/folder-changesets.svg +2 -0
  11. package/icons/folder-decorators-open.svg +2 -2
  12. package/icons/folder-decorators.svg +5 -5
  13. package/icons/folder-supabase-open.svg +5 -5
  14. package/icons/folder-supabase.svg +2 -2
  15. package/icons/sonarcloud.svg +4 -4
  16. package/icons/stylable.svg +10 -10
  17. package/icons/supabase.svg +4 -4
  18. package/icons/vitest.svg +6 -0
  19. package/images/contributors.png +0 -0
  20. package/images/fileIcons.png +0 -0
  21. package/images/folderIcons.png +0 -0
  22. package/package.json +252 -252
  23. package/package.nls.de.json +32 -32
  24. package/package.nls.es.json +29 -29
  25. package/package.nls.fr.json +29 -29
  26. package/package.nls.ja.json +32 -32
  27. package/package.nls.json +32 -32
  28. package/package.nls.nl.json +32 -32
  29. package/package.nls.pl.json +32 -32
  30. package/package.nls.pt-BR.json +29 -29
  31. package/package.nls.pt-PT.json +29 -29
  32. package/package.nls.ru.json +29 -29
  33. package/package.nls.zh-CN.json +29 -29
  34. package/package.nls.zh-TW.json +29 -29
  35. package/src/commands/activate.ts +28 -28
  36. package/src/commands/explorerArrows.ts +55 -55
  37. package/src/commands/folderColor.ts +96 -96
  38. package/src/commands/folders.ts +55 -55
  39. package/src/commands/grayscale.ts +55 -55
  40. package/src/commands/iconPacks.ts +64 -64
  41. package/src/commands/index.ts +30 -30
  42. package/src/commands/opacity.ts +46 -46
  43. package/src/commands/saturation.ts +46 -46
  44. package/src/extension.ts +37 -37
  45. package/src/helpers/customIcons.ts +8 -8
  46. package/src/helpers/index.ts +88 -88
  47. package/src/i18n/index.ts +78 -78
  48. package/src/i18n/lang-de.ts +43 -43
  49. package/src/i18n/lang-en.ts +43 -43
  50. package/src/i18n/lang-es.ts +43 -43
  51. package/src/i18n/lang-fr.ts +43 -43
  52. package/src/i18n/lang-ja.ts +43 -43
  53. package/src/i18n/lang-nl.ts +43 -43
  54. package/src/i18n/lang-pl.ts +43 -43
  55. package/src/i18n/lang-pt-br.ts +43 -43
  56. package/src/i18n/lang-pt-pt.ts +43 -43
  57. package/src/i18n/lang-ru.ts +43 -43
  58. package/src/i18n/lang-uk.ts +43 -43
  59. package/src/i18n/lang-zh-cn.ts +43 -43
  60. package/src/i18n/lang-zh-tw.ts +43 -43
  61. package/src/icons/fileIcons.ts +2197 -2159
  62. package/src/icons/folderIcons.ts +806 -804
  63. package/src/icons/generator/folderGenerator.ts +340 -340
  64. package/src/icons/generator/iconOpacity.ts +111 -111
  65. package/src/icons/generator/iconSaturation.ts +140 -140
  66. package/src/icons/generator/jsonGenerator.ts +191 -191
  67. package/src/icons/languageIcons.ts +141 -141
  68. package/src/models/i18n/translation.ts +41 -41
  69. package/src/models/iconConfiguration.ts +37 -37
  70. package/src/models/icons/iconJsonOptions.ts +21 -21
  71. package/src/models/index.ts +3 -3
  72. package/src/scripts/contributors/index.ts +138 -138
  73. package/src/scripts/helpers/screenshots.ts +32 -32
  74. package/src/scripts/icons/checks/checkIconAvailability.ts +215 -215
  75. package/src/scripts/icons/checks/checkIconConflicts.ts +152 -152
  76. package/src/scripts/icons/checks/checkIconUsage.ts +137 -137
  77. package/src/scripts/icons/checks/index.ts +7 -7
  78. package/src/scripts/preview/index.ts +40 -40
  79. package/src/scripts/preview/preview.ts +163 -163
  80. package/src/test/runTest.ts +26 -26
  81. package/src/test/spec/i18n/i18n.spec.ts +54 -54
  82. package/src/test/spec/icons/fileIcons.spec.ts +250 -250
  83. package/src/test/spec/icons/folderIcons.spec.ts +418 -418
  84. package/src/test/spec/icons/languageIcons.spec.ts +184 -184
@@ -1,250 +1,250 @@
1
- import { deepStrictEqual } from 'assert';
2
- import merge from 'lodash.merge';
3
- import {
4
- getDefaultIconOptions,
5
- loadFileIconDefinitions,
6
- } from '../../../icons/index';
7
- import { FileIcons, IconConfiguration, IconPack } from '../../../models/index';
8
-
9
- describe('file icons', () => {
10
- let expectedConfig: IconConfiguration;
11
-
12
- beforeEach(() => {
13
- expectedConfig = merge({}, new IconConfiguration(), {
14
- options: getDefaultIconOptions(),
15
- });
16
- });
17
-
18
- it('should configure icon definitions', () => {
19
- const fileIcons: FileIcons = {
20
- defaultIcon: { name: 'file' },
21
- icons: [
22
- {
23
- name: 'angular',
24
- fileNames: ['.angular-cli.json', 'angular-cli.json'],
25
- enabledFor: [IconPack.Angular, IconPack.Ngrx],
26
- },
27
- {
28
- name: 'javascript',
29
- fileNames: ['filename.js'],
30
- fileExtensions: ['js'],
31
- },
32
- ],
33
- };
34
- const options = getDefaultIconOptions();
35
- const iconConfig = merge({}, new IconConfiguration(), { options });
36
- const iconDefinitions = loadFileIconDefinitions(
37
- fileIcons,
38
- iconConfig,
39
- options
40
- );
41
-
42
- expectedConfig.iconDefinitions = {
43
- angular: {
44
- iconPath: './../icons/angular.svg',
45
- },
46
- javascript: {
47
- iconPath: './../icons/javascript.svg',
48
- },
49
- file: {
50
- iconPath: './../icons/file.svg',
51
- },
52
- };
53
- expectedConfig.file = 'file';
54
- expectedConfig.fileExtensions = {
55
- js: 'javascript',
56
- };
57
- expectedConfig.fileNames = {
58
- '.angular-cli.json': 'angular',
59
- 'angular-cli.json': 'angular',
60
- 'filename.js': 'javascript',
61
- };
62
-
63
- deepStrictEqual(iconDefinitions, expectedConfig);
64
- });
65
-
66
- it('should disable icon packs', () => {
67
- const fileIcons: FileIcons = {
68
- defaultIcon: { name: 'file' },
69
- icons: [
70
- {
71
- name: 'angular',
72
- fileNames: ['.angular-cli.json', 'angular-cli.json'],
73
- enabledFor: [IconPack.Ngrx],
74
- },
75
- {
76
- name: 'javascript',
77
- fileNames: ['filename.js'],
78
- fileExtensions: ['js'],
79
- },
80
- ],
81
- };
82
-
83
- const options = getDefaultIconOptions();
84
- options.activeIconPack = '';
85
- const iconConfig = merge({}, new IconConfiguration(), { options });
86
- const iconDefinitions = loadFileIconDefinitions(
87
- fileIcons,
88
- iconConfig,
89
- options
90
- );
91
-
92
- expectedConfig.iconDefinitions = {
93
- file: {
94
- iconPath: './../icons/file.svg',
95
- },
96
- javascript: {
97
- iconPath: './../icons/javascript.svg',
98
- },
99
- };
100
- expectedConfig.file = 'file';
101
- expectedConfig.fileExtensions = {
102
- js: 'javascript',
103
- };
104
- expectedConfig.fileNames = {
105
- 'filename.js': 'javascript',
106
- };
107
-
108
- // disable default icon pack by using empty string
109
- expectedConfig.options!.activeIconPack = '';
110
-
111
- deepStrictEqual(iconDefinitions, expectedConfig);
112
- });
113
-
114
- it('should configure custom icon associations', () => {
115
- const fileIcons: FileIcons = {
116
- defaultIcon: { name: 'file' },
117
- icons: [
118
- {
119
- name: 'angular',
120
- fileNames: ['.angular-cli.json', 'angular-cli.json'],
121
- },
122
- {
123
- name: 'javascript',
124
- fileNames: ['filename.js'],
125
- fileExtensions: ['js'],
126
- },
127
- ],
128
- };
129
- const options = getDefaultIconOptions();
130
- options.files.associations = {
131
- '*.sample.ts': 'angular',
132
- 'sample.js': 'javascript',
133
- };
134
- const iconConfig = merge({}, new IconConfiguration(), { options });
135
- const iconDefinitions = loadFileIconDefinitions(
136
- fileIcons,
137
- iconConfig,
138
- options
139
- );
140
-
141
- expectedConfig.iconDefinitions = {
142
- file: {
143
- iconPath: './../icons/file.svg',
144
- },
145
- javascript: {
146
- iconPath: './../icons/javascript.svg',
147
- },
148
- angular: {
149
- iconPath: './../icons/angular.svg',
150
- },
151
- };
152
- expectedConfig.file = 'file';
153
- expectedConfig.fileExtensions = {
154
- js: 'javascript',
155
- 'sample.ts': 'angular',
156
- };
157
- expectedConfig.fileNames = {
158
- '.angular-cli.json': 'angular',
159
- 'angular-cli.json': 'angular',
160
- 'sample.js': 'javascript',
161
- 'filename.js': 'javascript',
162
- };
163
- expectedConfig.options!.files!.associations = {
164
- '*.sample.ts': 'angular',
165
- 'sample.js': 'javascript',
166
- };
167
-
168
- deepStrictEqual(iconDefinitions, expectedConfig);
169
- });
170
-
171
- it('should configure language icons for light and high contrast', () => {
172
- const fileIcons: FileIcons = {
173
- defaultIcon: { name: 'file', light: true, highContrast: true },
174
- icons: [
175
- {
176
- name: 'angular',
177
- fileNames: ['.angular-cli.json', 'angular-cli.json'],
178
- enabledFor: [IconPack.Angular, IconPack.Ngrx],
179
- },
180
- {
181
- name: 'javascript',
182
- fileNames: ['filename.js'],
183
- fileExtensions: ['js'],
184
- light: true,
185
- highContrast: true,
186
- },
187
- ],
188
- };
189
- const options = getDefaultIconOptions();
190
- const iconConfig = merge({}, new IconConfiguration(), { options });
191
- const iconDefinitions = loadFileIconDefinitions(
192
- fileIcons,
193
- iconConfig,
194
- options
195
- );
196
- /* eslint-disable camelcase */
197
- expectedConfig.iconDefinitions = {
198
- file: {
199
- iconPath: './../icons/file.svg',
200
- },
201
- file_light: {
202
- iconPath: './../icons/file_light.svg',
203
- },
204
- file_highContrast: {
205
- iconPath: './../icons/file_highContrast.svg',
206
- },
207
- javascript: {
208
- iconPath: './../icons/javascript.svg',
209
- },
210
- javascript_light: {
211
- iconPath: './../icons/javascript_light.svg',
212
- },
213
- javascript_highContrast: {
214
- iconPath: './../icons/javascript_highContrast.svg',
215
- },
216
- angular: {
217
- iconPath: './../icons/angular.svg',
218
- },
219
- };
220
- expectedConfig.file = 'file';
221
- expectedConfig.fileExtensions = {
222
- js: 'javascript',
223
- };
224
- expectedConfig.light = {
225
- file: 'file_light',
226
- fileExtensions: {
227
- js: 'javascript_light',
228
- },
229
- fileNames: {
230
- 'filename.js': 'javascript_light',
231
- },
232
- };
233
- expectedConfig.highContrast = {
234
- file: 'file_highContrast',
235
- fileExtensions: {
236
- js: 'javascript_highContrast',
237
- },
238
- fileNames: {
239
- 'filename.js': 'javascript_highContrast',
240
- },
241
- };
242
- expectedConfig.fileNames = {
243
- '.angular-cli.json': 'angular',
244
- 'angular-cli.json': 'angular',
245
- 'filename.js': 'javascript',
246
- };
247
- /* eslint-enable camelcase */
248
- deepStrictEqual(iconDefinitions, expectedConfig);
249
- });
250
- });
1
+ import { deepStrictEqual } from 'assert';
2
+ import merge from 'lodash.merge';
3
+ import {
4
+ getDefaultIconOptions,
5
+ loadFileIconDefinitions,
6
+ } from '../../../icons/index';
7
+ import { FileIcons, IconConfiguration, IconPack } from '../../../models/index';
8
+
9
+ describe('file icons', () => {
10
+ let expectedConfig: IconConfiguration;
11
+
12
+ beforeEach(() => {
13
+ expectedConfig = merge({}, new IconConfiguration(), {
14
+ options: getDefaultIconOptions(),
15
+ });
16
+ });
17
+
18
+ it('should configure icon definitions', () => {
19
+ const fileIcons: FileIcons = {
20
+ defaultIcon: { name: 'file' },
21
+ icons: [
22
+ {
23
+ name: 'angular',
24
+ fileNames: ['.angular-cli.json', 'angular-cli.json'],
25
+ enabledFor: [IconPack.Angular, IconPack.Ngrx],
26
+ },
27
+ {
28
+ name: 'javascript',
29
+ fileNames: ['filename.js'],
30
+ fileExtensions: ['js'],
31
+ },
32
+ ],
33
+ };
34
+ const options = getDefaultIconOptions();
35
+ const iconConfig = merge({}, new IconConfiguration(), { options });
36
+ const iconDefinitions = loadFileIconDefinitions(
37
+ fileIcons,
38
+ iconConfig,
39
+ options
40
+ );
41
+
42
+ expectedConfig.iconDefinitions = {
43
+ angular: {
44
+ iconPath: './../icons/angular.svg',
45
+ },
46
+ javascript: {
47
+ iconPath: './../icons/javascript.svg',
48
+ },
49
+ file: {
50
+ iconPath: './../icons/file.svg',
51
+ },
52
+ };
53
+ expectedConfig.file = 'file';
54
+ expectedConfig.fileExtensions = {
55
+ js: 'javascript',
56
+ };
57
+ expectedConfig.fileNames = {
58
+ '.angular-cli.json': 'angular',
59
+ 'angular-cli.json': 'angular',
60
+ 'filename.js': 'javascript',
61
+ };
62
+
63
+ deepStrictEqual(iconDefinitions, expectedConfig);
64
+ });
65
+
66
+ it('should disable icon packs', () => {
67
+ const fileIcons: FileIcons = {
68
+ defaultIcon: { name: 'file' },
69
+ icons: [
70
+ {
71
+ name: 'angular',
72
+ fileNames: ['.angular-cli.json', 'angular-cli.json'],
73
+ enabledFor: [IconPack.Ngrx],
74
+ },
75
+ {
76
+ name: 'javascript',
77
+ fileNames: ['filename.js'],
78
+ fileExtensions: ['js'],
79
+ },
80
+ ],
81
+ };
82
+
83
+ const options = getDefaultIconOptions();
84
+ options.activeIconPack = '';
85
+ const iconConfig = merge({}, new IconConfiguration(), { options });
86
+ const iconDefinitions = loadFileIconDefinitions(
87
+ fileIcons,
88
+ iconConfig,
89
+ options
90
+ );
91
+
92
+ expectedConfig.iconDefinitions = {
93
+ file: {
94
+ iconPath: './../icons/file.svg',
95
+ },
96
+ javascript: {
97
+ iconPath: './../icons/javascript.svg',
98
+ },
99
+ };
100
+ expectedConfig.file = 'file';
101
+ expectedConfig.fileExtensions = {
102
+ js: 'javascript',
103
+ };
104
+ expectedConfig.fileNames = {
105
+ 'filename.js': 'javascript',
106
+ };
107
+
108
+ // disable default icon pack by using empty string
109
+ expectedConfig.options!.activeIconPack = '';
110
+
111
+ deepStrictEqual(iconDefinitions, expectedConfig);
112
+ });
113
+
114
+ it('should configure custom icon associations', () => {
115
+ const fileIcons: FileIcons = {
116
+ defaultIcon: { name: 'file' },
117
+ icons: [
118
+ {
119
+ name: 'angular',
120
+ fileNames: ['.angular-cli.json', 'angular-cli.json'],
121
+ },
122
+ {
123
+ name: 'javascript',
124
+ fileNames: ['filename.js'],
125
+ fileExtensions: ['js'],
126
+ },
127
+ ],
128
+ };
129
+ const options = getDefaultIconOptions();
130
+ options.files.associations = {
131
+ '*.sample.ts': 'angular',
132
+ 'sample.js': 'javascript',
133
+ };
134
+ const iconConfig = merge({}, new IconConfiguration(), { options });
135
+ const iconDefinitions = loadFileIconDefinitions(
136
+ fileIcons,
137
+ iconConfig,
138
+ options
139
+ );
140
+
141
+ expectedConfig.iconDefinitions = {
142
+ file: {
143
+ iconPath: './../icons/file.svg',
144
+ },
145
+ javascript: {
146
+ iconPath: './../icons/javascript.svg',
147
+ },
148
+ angular: {
149
+ iconPath: './../icons/angular.svg',
150
+ },
151
+ };
152
+ expectedConfig.file = 'file';
153
+ expectedConfig.fileExtensions = {
154
+ js: 'javascript',
155
+ 'sample.ts': 'angular',
156
+ };
157
+ expectedConfig.fileNames = {
158
+ '.angular-cli.json': 'angular',
159
+ 'angular-cli.json': 'angular',
160
+ 'sample.js': 'javascript',
161
+ 'filename.js': 'javascript',
162
+ };
163
+ expectedConfig.options!.files!.associations = {
164
+ '*.sample.ts': 'angular',
165
+ 'sample.js': 'javascript',
166
+ };
167
+
168
+ deepStrictEqual(iconDefinitions, expectedConfig);
169
+ });
170
+
171
+ it('should configure language icons for light and high contrast', () => {
172
+ const fileIcons: FileIcons = {
173
+ defaultIcon: { name: 'file', light: true, highContrast: true },
174
+ icons: [
175
+ {
176
+ name: 'angular',
177
+ fileNames: ['.angular-cli.json', 'angular-cli.json'],
178
+ enabledFor: [IconPack.Angular, IconPack.Ngrx],
179
+ },
180
+ {
181
+ name: 'javascript',
182
+ fileNames: ['filename.js'],
183
+ fileExtensions: ['js'],
184
+ light: true,
185
+ highContrast: true,
186
+ },
187
+ ],
188
+ };
189
+ const options = getDefaultIconOptions();
190
+ const iconConfig = merge({}, new IconConfiguration(), { options });
191
+ const iconDefinitions = loadFileIconDefinitions(
192
+ fileIcons,
193
+ iconConfig,
194
+ options
195
+ );
196
+ /* eslint-disable camelcase */
197
+ expectedConfig.iconDefinitions = {
198
+ file: {
199
+ iconPath: './../icons/file.svg',
200
+ },
201
+ file_light: {
202
+ iconPath: './../icons/file_light.svg',
203
+ },
204
+ file_highContrast: {
205
+ iconPath: './../icons/file_highContrast.svg',
206
+ },
207
+ javascript: {
208
+ iconPath: './../icons/javascript.svg',
209
+ },
210
+ javascript_light: {
211
+ iconPath: './../icons/javascript_light.svg',
212
+ },
213
+ javascript_highContrast: {
214
+ iconPath: './../icons/javascript_highContrast.svg',
215
+ },
216
+ angular: {
217
+ iconPath: './../icons/angular.svg',
218
+ },
219
+ };
220
+ expectedConfig.file = 'file';
221
+ expectedConfig.fileExtensions = {
222
+ js: 'javascript',
223
+ };
224
+ expectedConfig.light = {
225
+ file: 'file_light',
226
+ fileExtensions: {
227
+ js: 'javascript_light',
228
+ },
229
+ fileNames: {
230
+ 'filename.js': 'javascript_light',
231
+ },
232
+ };
233
+ expectedConfig.highContrast = {
234
+ file: 'file_highContrast',
235
+ fileExtensions: {
236
+ js: 'javascript_highContrast',
237
+ },
238
+ fileNames: {
239
+ 'filename.js': 'javascript_highContrast',
240
+ },
241
+ };
242
+ expectedConfig.fileNames = {
243
+ '.angular-cli.json': 'angular',
244
+ 'angular-cli.json': 'angular',
245
+ 'filename.js': 'javascript',
246
+ };
247
+ /* eslint-enable camelcase */
248
+ deepStrictEqual(iconDefinitions, expectedConfig);
249
+ });
250
+ });