material-icon-theme 3.7.1 → 4.15.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 (920) hide show
  1. package/.eslintignore +1 -0
  2. package/.eslintrc.json +51 -0
  3. package/.github/FUNDING.yml +3 -0
  4. package/.github/ISSUE_TEMPLATE/bug_report.md +34 -0
  5. package/.github/ISSUE_TEMPLATE/icon_request.md +27 -0
  6. package/.github/workflows/build.yml +45 -0
  7. package/.github/workflows/color-check.yml +22 -0
  8. package/.github/workflows/release.yml +73 -0
  9. package/.prettierrc +7 -0
  10. package/.vscode/extensions.json +3 -0
  11. package/.vscode/launch.json +43 -37
  12. package/.vscode/settings.json +14 -9
  13. package/.vscode/tasks.json +32 -20
  14. package/.vscodeignore +21 -19
  15. package/CHANGELOG.md +1125 -723
  16. package/CONTRIBUTING.md +62 -47
  17. package/LICENSE.md +8 -8
  18. package/README.md +209 -149
  19. package/build/web-extension.webpack.config.js +62 -0
  20. package/build/webpack.config.js +39 -0
  21. package/changelog.config.json +4 -0
  22. package/icons/3d.svg +1 -1
  23. package/icons/abc.svg +1 -0
  24. package/icons/actionscript.svg +1 -3
  25. package/icons/ada.svg +1 -0
  26. package/icons/adonis.svg +1 -0
  27. package/icons/advpl_include.svg +1 -0
  28. package/icons/advpl_prw.svg +1 -0
  29. package/icons/advpl_ptm.svg +1 -0
  30. package/icons/advpl_tlpp.svg +1 -0
  31. package/icons/android.svg +1 -1
  32. package/icons/angular-component.svg +1 -3
  33. package/icons/angular-directive.svg +1 -3
  34. package/icons/angular-guard.svg +1 -3
  35. package/icons/angular-pipe.svg +1 -3
  36. package/icons/angular-resolver.svg +1 -3
  37. package/icons/angular-service.svg +1 -3
  38. package/icons/angular.svg +1 -3
  39. package/icons/apiblueprint.svg +1 -5
  40. package/icons/apollo.svg +1 -0
  41. package/icons/applescript.svg +1 -3
  42. package/icons/appveyor.svg +1 -5
  43. package/icons/arduino.svg +1 -1
  44. package/icons/asciidoc.svg +1 -1
  45. package/icons/assembly.svg +1 -4
  46. package/icons/astro.svg +1 -0
  47. package/icons/astyle.svg +4 -0
  48. package/icons/audio.svg +1 -4
  49. package/icons/aurelia.svg +1 -107
  50. package/icons/authors.svg +1 -1
  51. package/icons/autohotkey.svg +1 -3
  52. package/icons/autoit.svg +1 -21
  53. package/icons/azure-pipelines.svg +1 -1
  54. package/icons/azure.svg +1 -1
  55. package/icons/babel.svg +1 -1
  56. package/icons/ballerina.svg +1 -1
  57. package/icons/bazel.svg +1 -1
  58. package/icons/bicep.svg +1 -0
  59. package/icons/bitbucket.svg +1 -1
  60. package/icons/bithound.svg +1 -1
  61. package/icons/blink.svg +1 -4
  62. package/icons/blink_light.svg +1 -4
  63. package/icons/blitz.svg +4 -0
  64. package/icons/bower.svg +1 -1
  65. package/icons/brainfuck.svg +1 -0
  66. package/icons/browserlist.svg +1 -6
  67. package/icons/browserlist_light.svg +1 -7
  68. package/icons/buck.svg +1 -0
  69. package/icons/bucklescript.svg +1 -3
  70. package/icons/buildkite.svg +1 -1
  71. package/icons/c.svg +1 -1
  72. package/icons/cabal.svg +1 -8
  73. package/icons/cake.svg +1 -1
  74. package/icons/capacitor.svg +1 -0
  75. package/icons/certificate.svg +1 -3
  76. package/icons/changelog.svg +1 -1
  77. package/icons/chess.svg +1 -0
  78. package/icons/chess_light.svg +1 -0
  79. package/icons/circleci.svg +1 -14
  80. package/icons/circleci_light.svg +1 -14
  81. package/icons/clojure.svg +1 -1
  82. package/icons/cloudfoundry.svg +1 -24
  83. package/icons/cmake.svg +1 -7
  84. package/icons/coala.svg +1 -0
  85. package/icons/cobol.svg +1 -0
  86. package/icons/coconut.svg +1 -0
  87. package/icons/code-climate.svg +1 -4
  88. package/icons/code-climate_light.svg +1 -4
  89. package/icons/codecov.svg +1 -0
  90. package/icons/codeowners.svg +1 -0
  91. package/icons/coffee.svg +1 -3
  92. package/icons/coldfusion.svg +1 -7
  93. package/icons/command.svg +1 -0
  94. package/icons/commitlint.svg +1 -0
  95. package/icons/conduct.svg +1 -4
  96. package/icons/console.svg +1 -3
  97. package/icons/contributing.svg +1 -4
  98. package/icons/cpp.svg +1 -1
  99. package/icons/credits.svg +1 -3
  100. package/icons/crystal.svg +1 -4
  101. package/icons/crystal_light.svg +1 -4
  102. package/icons/csharp.svg +1 -3
  103. package/icons/css-map.svg +1 -1
  104. package/icons/css.svg +1 -3
  105. package/icons/cucumber.svg +1 -4
  106. package/icons/cuda.svg +1 -4
  107. package/icons/cypress.svg +4 -0
  108. package/icons/d.svg +1 -1
  109. package/icons/dart.svg +1 -9
  110. package/icons/database.svg +1 -1
  111. package/icons/denizenscript.svg +1 -0
  112. package/icons/dependabot.svg +4 -0
  113. package/icons/dhall.svg +1 -0
  114. package/icons/diff.svg +1 -1
  115. package/icons/dinophp.svg +16 -0
  116. package/icons/disc.svg +1 -0
  117. package/icons/django.svg +1 -1
  118. package/icons/docker.svg +1 -4
  119. package/icons/document.svg +1 -3
  120. package/icons/dotjs.svg +1 -8
  121. package/icons/drawio.svg +1 -0
  122. package/icons/drone.svg +1 -6
  123. package/icons/drone_light.svg +1 -6
  124. package/icons/dune.svg +1 -0
  125. package/icons/edge.svg +1 -1
  126. package/icons/editorconfig.svg +1 -9
  127. package/icons/ejs.svg +1 -7
  128. package/icons/elixir.svg +1 -1
  129. package/icons/elm.svg +1 -1
  130. package/icons/email.svg +1 -3
  131. package/icons/ember.svg +1 -0
  132. package/icons/erlang.svg +1 -5
  133. package/icons/eslint.svg +1 -3
  134. package/icons/exe.svg +1 -3
  135. package/icons/fastlane.svg +1 -1
  136. package/icons/favicon.svg +1 -3
  137. package/icons/figma.svg +10 -0
  138. package/icons/file.svg +1 -3
  139. package/icons/firebase.svg +1 -9
  140. package/icons/flash.svg +1 -12
  141. package/icons/flow.svg +1 -7
  142. package/icons/folder-admin-open.svg +1 -0
  143. package/icons/folder-admin.svg +1 -0
  144. package/icons/folder-android-open.svg +1 -1
  145. package/icons/folder-android.svg +1 -1
  146. package/icons/folder-angular-open.svg +2 -0
  147. package/icons/folder-angular.svg +2 -0
  148. package/icons/folder-animation-open.svg +1 -1
  149. package/icons/folder-animation.svg +1 -1
  150. package/icons/folder-ansible-open.svg +1 -1
  151. package/icons/folder-ansible.svg +1 -1
  152. package/icons/folder-api-open.svg +1 -4
  153. package/icons/folder-api.svg +1 -4
  154. package/icons/folder-apollo-open.svg +1 -0
  155. package/icons/folder-apollo.svg +1 -0
  156. package/icons/folder-app-open.svg +1 -1
  157. package/icons/folder-app.svg +1 -1
  158. package/icons/folder-archive-open.svg +1 -1
  159. package/icons/folder-archive.svg +1 -1
  160. package/icons/folder-audio-open.svg +1 -2
  161. package/icons/folder-audio.svg +1 -2
  162. package/icons/folder-aurelia-open.svg +1 -2
  163. package/icons/folder-aurelia.svg +1 -2
  164. package/icons/folder-aws-open.svg +1 -2
  165. package/icons/folder-aws.svg +1 -2
  166. package/icons/folder-azure-pipelines-open.svg +1 -0
  167. package/icons/folder-azure-pipelines.svg +1 -0
  168. package/icons/folder-base-open.svg +1 -0
  169. package/icons/folder-base.svg +1 -0
  170. package/icons/folder-batch-open.svg +1 -1
  171. package/icons/folder-batch.svg +1 -1
  172. package/icons/folder-benchmark-open.svg +1 -1
  173. package/icons/folder-benchmark.svg +1 -1
  174. package/icons/folder-bower-open.svg +1 -2
  175. package/icons/folder-bower.svg +1 -2
  176. package/icons/folder-cart-open.svg +1 -0
  177. package/icons/folder-cart.svg +1 -0
  178. package/icons/folder-ci-open.svg +1 -1
  179. package/icons/folder-ci.svg +1 -1
  180. package/icons/folder-circleci-open.svg +1 -2
  181. package/icons/folder-circleci.svg +1 -1
  182. package/icons/folder-class-open.svg +1 -1
  183. package/icons/folder-class.svg +1 -1
  184. package/icons/folder-client-open.svg +1 -1
  185. package/icons/folder-client.svg +1 -1
  186. package/icons/folder-cluster-open.svg +1 -8
  187. package/icons/folder-cluster.svg +1 -8
  188. package/icons/folder-cobol-open.svg +1 -0
  189. package/icons/folder-cobol.svg +1 -0
  190. package/icons/folder-command-open.svg +1 -4
  191. package/icons/folder-command.svg +1 -4
  192. package/icons/folder-components-open.svg +1 -2
  193. package/icons/folder-components.svg +1 -2
  194. package/icons/folder-config-open.svg +1 -2
  195. package/icons/folder-config.svg +1 -2
  196. package/icons/folder-connection-open.svg +1 -0
  197. package/icons/folder-connection.svg +1 -0
  198. package/icons/folder-constant-open.svg +1 -1
  199. package/icons/folder-constant.svg +1 -1
  200. package/icons/folder-container-open.svg +1 -1
  201. package/icons/folder-container.svg +1 -1
  202. package/icons/folder-content-open.svg +1 -1
  203. package/icons/folder-content.svg +1 -1
  204. package/icons/folder-context-open.svg +1 -0
  205. package/icons/folder-context.svg +1 -0
  206. package/icons/folder-contract-open.svg +1 -0
  207. package/icons/folder-contract.svg +1 -0
  208. package/icons/folder-controller-open.svg +1 -1
  209. package/icons/folder-controller.svg +1 -1
  210. package/icons/folder-core-open.svg +1 -1
  211. package/icons/folder-core.svg +1 -1
  212. package/icons/folder-coverage-open.svg +1 -1
  213. package/icons/folder-coverage.svg +1 -1
  214. package/icons/folder-css-open.svg +1 -2
  215. package/icons/folder-css.svg +1 -2
  216. package/icons/folder-custom-open.svg +1 -1
  217. package/icons/folder-custom.svg +1 -1
  218. package/icons/folder-cypress-open.svg +5 -0
  219. package/icons/folder-cypress.svg +5 -0
  220. package/icons/folder-database-open.svg +1 -2
  221. package/icons/folder-database.svg +1 -2
  222. package/icons/folder-debug-open.svg +1 -1
  223. package/icons/folder-debug.svg +1 -1
  224. package/icons/folder-delta-open.svg +1 -4
  225. package/icons/folder-delta.svg +1 -4
  226. package/icons/folder-dist-open.svg +1 -2
  227. package/icons/folder-dist.svg +1 -2
  228. package/icons/folder-docker-open.svg +1 -2
  229. package/icons/folder-docker.svg +1 -5
  230. package/icons/folder-docs-open.svg +1 -2
  231. package/icons/folder-docs.svg +1 -2
  232. package/icons/folder-download-open.svg +1 -1
  233. package/icons/folder-download.svg +1 -1
  234. package/icons/folder-dump-open.svg +1 -1
  235. package/icons/folder-dump.svg +1 -1
  236. package/icons/folder-environment-open.svg +1 -1
  237. package/icons/folder-environment.svg +1 -1
  238. package/icons/folder-error-open.svg +1 -0
  239. package/icons/folder-error.svg +1 -0
  240. package/icons/folder-event-open.svg +1 -0
  241. package/icons/folder-event.svg +1 -0
  242. package/icons/folder-examples-open.svg +1 -1
  243. package/icons/folder-examples.svg +1 -1
  244. package/icons/folder-expo-open.svg +1 -1
  245. package/icons/folder-expo.svg +1 -4
  246. package/icons/folder-export-open.svg +1 -1
  247. package/icons/folder-export.svg +1 -5
  248. package/icons/folder-fastlane-open.svg +1 -1
  249. package/icons/folder-fastlane.svg +1 -1
  250. package/icons/folder-firebase-open.svg +1 -0
  251. package/icons/folder-firebase.svg +1 -0
  252. package/icons/folder-flow-open.svg +1 -1
  253. package/icons/folder-flow.svg +1 -1
  254. package/icons/folder-font-open.svg +1 -1
  255. package/icons/folder-font.svg +1 -1
  256. package/icons/folder-functions-open.svg +1 -1
  257. package/icons/folder-functions.svg +1 -1
  258. package/icons/folder-generator-open.svg +1 -1
  259. package/icons/folder-generator.svg +1 -1
  260. package/icons/folder-git-open.svg +1 -1
  261. package/icons/folder-git.svg +1 -1
  262. package/icons/folder-github-open.svg +1 -2
  263. package/icons/folder-github.svg +1 -2
  264. package/icons/folder-gitlab-open.svg +1 -2
  265. package/icons/folder-gitlab.svg +1 -2
  266. package/icons/folder-global-open.svg +1 -2
  267. package/icons/folder-global.svg +1 -2
  268. package/icons/folder-gradle-open.svg +1 -2
  269. package/icons/folder-gradle.svg +1 -2
  270. package/icons/folder-graphql-open.svg +1 -1
  271. package/icons/folder-graphql.svg +1 -1
  272. package/icons/folder-guard-open.svg +1 -1
  273. package/icons/folder-guard.svg +1 -1
  274. package/icons/folder-gulp-open.svg +1 -0
  275. package/icons/folder-gulp.svg +1 -0
  276. package/icons/folder-helper-open.svg +1 -1
  277. package/icons/folder-helper.svg +1 -1
  278. package/icons/folder-home-open.svg +1 -0
  279. package/icons/folder-home.svg +1 -0
  280. package/icons/folder-hook-open.svg +1 -1
  281. package/icons/folder-hook.svg +1 -1
  282. package/icons/folder-husky-open.svg +1 -0
  283. package/icons/folder-husky.svg +1 -0
  284. package/icons/folder-i18n-open.svg +1 -2
  285. package/icons/folder-i18n.svg +1 -2
  286. package/icons/folder-images-open.svg +1 -2
  287. package/icons/folder-images.svg +1 -2
  288. package/icons/folder-import-open.svg +1 -1
  289. package/icons/folder-import.svg +1 -1
  290. package/icons/folder-include-open.svg +1 -2
  291. package/icons/folder-include.svg +1 -2
  292. package/icons/folder-intellij-open.svg +1 -0
  293. package/icons/folder-intellij-open_light.svg +1 -0
  294. package/icons/folder-intellij.svg +1 -0
  295. package/icons/folder-intellij_light.svg +1 -0
  296. package/icons/folder-interface-open.svg +1 -0
  297. package/icons/folder-interface.svg +1 -0
  298. package/icons/folder-ios-open.svg +1 -1
  299. package/icons/folder-ios.svg +1 -1
  300. package/icons/folder-java-open.svg +2 -0
  301. package/icons/folder-java.svg +2 -0
  302. package/icons/folder-javascript-open.svg +1 -2
  303. package/icons/folder-javascript.svg +1 -2
  304. package/icons/folder-jinja-open.svg +1 -2
  305. package/icons/folder-jinja-open_light.svg +1 -2
  306. package/icons/folder-jinja.svg +1 -2
  307. package/icons/folder-jinja_light.svg +1 -2
  308. package/icons/folder-job-open.svg +1 -1
  309. package/icons/folder-job.svg +1 -1
  310. package/icons/folder-json-open.svg +1 -0
  311. package/icons/folder-json.svg +1 -0
  312. package/icons/folder-keys-open.svg +1 -1
  313. package/icons/folder-keys.svg +1 -1
  314. package/icons/folder-kubernetes-open.svg +1 -1
  315. package/icons/folder-kubernetes.svg +1 -5
  316. package/icons/folder-layout-open.svg +1 -1
  317. package/icons/folder-layout.svg +1 -1
  318. package/icons/folder-less-open.svg +1 -1
  319. package/icons/folder-less.svg +1 -1
  320. package/icons/folder-lib-open.svg +1 -2
  321. package/icons/folder-lib.svg +1 -2
  322. package/icons/folder-log-open.svg +1 -2
  323. package/icons/folder-log.svg +1 -2
  324. package/icons/folder-mail-open.svg +1 -1
  325. package/icons/folder-mail.svg +1 -1
  326. package/icons/folder-mappings-open.svg +1 -1
  327. package/icons/folder-mappings.svg +1 -1
  328. package/icons/folder-markdown-open.svg +1 -2
  329. package/icons/folder-markdown.svg +1 -2
  330. package/icons/folder-messages-open.svg +1 -1
  331. package/icons/folder-messages.svg +1 -1
  332. package/icons/folder-meta-open.svg +1 -1
  333. package/icons/folder-meta.svg +1 -1
  334. package/icons/folder-middleware-open.svg +1 -1
  335. package/icons/folder-middleware.svg +1 -1
  336. package/icons/folder-mjml-open.svg +1 -0
  337. package/icons/folder-mjml.svg +1 -0
  338. package/icons/folder-mobile-open.svg +1 -0
  339. package/icons/folder-mobile.svg +1 -0
  340. package/icons/folder-mock-open.svg +1 -1
  341. package/icons/folder-mock.svg +1 -1
  342. package/icons/folder-next-open.svg +2 -0
  343. package/icons/folder-next.svg +2 -0
  344. package/icons/folder-ngrx-actions-open.svg +1 -2
  345. package/icons/folder-ngrx-actions.svg +1 -2
  346. package/icons/folder-ngrx-effects-open.svg +1 -2
  347. package/icons/folder-ngrx-effects.svg +1 -2
  348. package/icons/folder-ngrx-entities-open.svg +1 -2
  349. package/icons/folder-ngrx-entities.svg +1 -2
  350. package/icons/folder-ngrx-reducer-open.svg +1 -2
  351. package/icons/folder-ngrx-reducer.svg +1 -2
  352. package/icons/folder-ngrx-selectors-open.svg +1 -0
  353. package/icons/folder-ngrx-selectors.svg +1 -0
  354. package/icons/folder-ngrx-state-open.svg +1 -1
  355. package/icons/folder-ngrx-state.svg +1 -1
  356. package/icons/folder-ngrx-store-open.svg +1 -1
  357. package/icons/folder-ngrx-store.svg +1 -1
  358. package/icons/folder-node-open.svg +1 -1
  359. package/icons/folder-node.svg +1 -1
  360. package/icons/folder-nuxt-open.svg +1 -0
  361. package/icons/folder-nuxt.svg +1 -0
  362. package/icons/folder-other-open.svg +1 -1
  363. package/icons/folder-other.svg +1 -1
  364. package/icons/folder-packages-open.svg +1 -1
  365. package/icons/folder-packages.svg +1 -1
  366. package/icons/folder-php-open.svg +1 -2
  367. package/icons/folder-php.svg +1 -2
  368. package/icons/folder-phpmailer-open.svg +1 -2
  369. package/icons/folder-phpmailer.svg +1 -2
  370. package/icons/folder-pipe-open.svg +1 -1
  371. package/icons/folder-pipe.svg +1 -1
  372. package/icons/folder-plugin-open.svg +1 -1
  373. package/icons/folder-plugin.svg +1 -1
  374. package/icons/folder-prisma-open.svg +1 -1
  375. package/icons/folder-prisma.svg +1 -1
  376. package/icons/folder-private-open.svg +1 -1
  377. package/icons/folder-private.svg +1 -1
  378. package/icons/folder-project-open.svg +1 -0
  379. package/icons/folder-project.svg +1 -0
  380. package/icons/folder-public-open.svg +1 -2
  381. package/icons/folder-public.svg +1 -2
  382. package/icons/folder-python-open.svg +1 -1
  383. package/icons/folder-python.svg +1 -1
  384. package/icons/folder-quasar-open.svg +1 -0
  385. package/icons/folder-quasar.svg +1 -0
  386. package/icons/folder-queue-open.svg +2 -0
  387. package/icons/folder-queue.svg +2 -0
  388. package/icons/folder-react-components-open.svg +1 -2
  389. package/icons/folder-react-components.svg +1 -2
  390. package/icons/folder-redux-actions-open.svg +1 -1
  391. package/icons/folder-redux-actions.svg +1 -1
  392. package/icons/folder-redux-reducer-open.svg +1 -2
  393. package/icons/folder-redux-reducer.svg +1 -2
  394. package/icons/folder-redux-selector-open.svg +1 -0
  395. package/icons/folder-redux-selector.svg +1 -0
  396. package/icons/folder-redux-store-open.svg +1 -2
  397. package/icons/folder-redux-store.svg +1 -2
  398. package/icons/folder-resolver-open.svg +2 -0
  399. package/icons/folder-resolver.svg +2 -0
  400. package/icons/folder-resource-open.svg +1 -2
  401. package/icons/folder-resource.svg +1 -2
  402. package/icons/folder-review-open.svg +1 -1
  403. package/icons/folder-review.svg +1 -1
  404. package/icons/folder-routes-open.svg +1 -1
  405. package/icons/folder-routes.svg +1 -1
  406. package/icons/folder-rules-open.svg +1 -1
  407. package/icons/folder-rules.svg +1 -1
  408. package/icons/folder-sass-open.svg +1 -1
  409. package/icons/folder-sass.svg +1 -1
  410. package/icons/folder-scala-open.svg +1 -0
  411. package/icons/folder-scala.svg +1 -0
  412. package/icons/folder-scripts-open.svg +1 -2
  413. package/icons/folder-scripts.svg +1 -2
  414. package/icons/folder-secure-open.svg +1 -1
  415. package/icons/folder-secure.svg +1 -1
  416. package/icons/folder-server-open.svg +1 -1
  417. package/icons/folder-server.svg +1 -1
  418. package/icons/folder-serverless-open.svg +5 -1
  419. package/icons/folder-serverless.svg +5 -1
  420. package/icons/folder-shared-open.svg +1 -1
  421. package/icons/folder-shared.svg +1 -1
  422. package/icons/folder-src-open.svg +1 -2
  423. package/icons/folder-src.svg +1 -2
  424. package/icons/folder-stack-open.svg +1 -1
  425. package/icons/folder-stack.svg +1 -1
  426. package/icons/folder-stencil-open.svg +1 -0
  427. package/icons/folder-stencil.svg +1 -0
  428. package/icons/folder-storybook-open.svg +1 -0
  429. package/icons/folder-storybook.svg +1 -0
  430. package/icons/folder-stylus-open.svg +1 -1
  431. package/icons/folder-stylus.svg +1 -1
  432. package/icons/folder-sublime-open.svg +1 -2
  433. package/icons/folder-sublime.svg +1 -2
  434. package/icons/folder-svelte-open.svg +1 -0
  435. package/icons/folder-svelte.svg +1 -0
  436. package/icons/folder-svg-open.svg +1 -1
  437. package/icons/folder-svg.svg +1 -1
  438. package/icons/folder-syntax-open.svg +1 -1
  439. package/icons/folder-syntax.svg +1 -1
  440. package/icons/folder-target-open.svg +2 -0
  441. package/icons/folder-target.svg +2 -0
  442. package/icons/folder-tasks-open.svg +1 -1
  443. package/icons/folder-tasks.svg +1 -1
  444. package/icons/folder-temp-open.svg +1 -2
  445. package/icons/folder-temp.svg +1 -2
  446. package/icons/folder-template-open.svg +1 -1
  447. package/icons/folder-template.svg +1 -1
  448. package/icons/folder-terraform-open.svg +1 -0
  449. package/icons/folder-terraform.svg +1 -0
  450. package/icons/folder-test-open.svg +1 -1
  451. package/icons/folder-test.svg +1 -1
  452. package/icons/folder-theme-open.svg +1 -2
  453. package/icons/folder-theme.svg +1 -2
  454. package/icons/folder-tools-open.svg +1 -1
  455. package/icons/folder-tools.svg +1 -1
  456. package/icons/folder-typescript-open.svg +1 -1
  457. package/icons/folder-typescript.svg +1 -1
  458. package/icons/folder-unity-open.svg +2 -0
  459. package/icons/folder-unity.svg +2 -0
  460. package/icons/folder-update-open.svg +1 -0
  461. package/icons/folder-update.svg +1 -0
  462. package/icons/folder-upload-open.svg +1 -1
  463. package/icons/folder-upload.svg +1 -1
  464. package/icons/folder-utils-open.svg +1 -1
  465. package/icons/folder-utils.svg +1 -1
  466. package/icons/folder-vercel-open.svg +4 -0
  467. package/icons/folder-vercel.svg +4 -0
  468. package/icons/folder-video-open.svg +1 -2
  469. package/icons/folder-video.svg +1 -2
  470. package/icons/folder-views-open.svg +1 -1
  471. package/icons/folder-views.svg +1 -1
  472. package/icons/folder-vm-open.svg +1 -1
  473. package/icons/folder-vm.svg +1 -1
  474. package/icons/folder-vscode-open.svg +1 -2
  475. package/icons/folder-vscode.svg +1 -2
  476. package/icons/folder-vue-directives-open.svg +1 -0
  477. package/icons/folder-vue-directives.svg +1 -0
  478. package/icons/folder-vue-open.svg +1 -1
  479. package/icons/folder-vue.svg +1 -1
  480. package/icons/folder-vuepress-open.svg +1 -0
  481. package/icons/folder-vuepress.svg +1 -0
  482. package/icons/folder-vuex-store-open.svg +1 -1
  483. package/icons/folder-vuex-store.svg +1 -1
  484. package/icons/folder-wakatime-open.svg +1 -2
  485. package/icons/folder-wakatime.svg +1 -2
  486. package/icons/folder-webpack-open.svg +1 -2
  487. package/icons/folder-webpack.svg +1 -2
  488. package/icons/folder-wordpress-open.svg +1 -2
  489. package/icons/folder-wordpress.svg +1 -1
  490. package/icons/folder-yarn-open.svg +1 -0
  491. package/icons/folder-yarn.svg +1 -0
  492. package/icons/font.svg +1 -3
  493. package/icons/forth.svg +1 -0
  494. package/icons/fortran.svg +1 -0
  495. package/icons/foxpro.svg +1 -1
  496. package/icons/fsharp.svg +1 -7
  497. package/icons/fusebox.svg +1 -20
  498. package/icons/gatsby.svg +1 -5
  499. package/icons/gcp.svg +1 -0
  500. package/icons/gemfile.svg +1 -1
  501. package/icons/gemini.svg +1 -0
  502. package/icons/git.svg +1 -4
  503. package/icons/gitlab.svg +1 -43
  504. package/icons/gitpod.svg +1 -0
  505. package/icons/gleam.svg +4 -0
  506. package/icons/go-mod.svg +1 -0
  507. package/icons/go.svg +1 -8
  508. package/icons/go_gopher.svg +1 -25
  509. package/icons/godot-assets.svg +1 -1
  510. package/icons/godot.svg +1 -1
  511. package/icons/gradle.svg +1 -3
  512. package/icons/grain.svg +1 -0
  513. package/icons/graphcool.svg +1 -6
  514. package/icons/graphql.svg +1 -11
  515. package/icons/gridsome.svg +4 -0
  516. package/icons/groovy.svg +1 -3
  517. package/icons/grunt.svg +1 -1
  518. package/icons/gulp.svg +1 -3
  519. package/icons/h.svg +1 -6
  520. package/icons/hack.svg +1 -2
  521. package/icons/haml.svg +1 -5
  522. package/icons/handlebars.svg +1 -3
  523. package/icons/hardhat.svg +4 -0
  524. package/icons/haskell.svg +1 -8
  525. package/icons/haxe.svg +1 -17
  526. package/icons/hcl.svg +1 -1
  527. package/icons/hcl_light.svg +1 -1
  528. package/icons/helm.svg +1 -1
  529. package/icons/heroku.svg +1 -1
  530. package/icons/hex.svg +1 -0
  531. package/icons/horusec.svg +1 -0
  532. package/icons/hpp.svg +1 -7
  533. package/icons/html.svg +1 -3
  534. package/icons/http.svg +1 -3
  535. package/icons/husky.svg +1 -0
  536. package/icons/i18n.svg +1 -1
  537. package/icons/idris.svg +1 -0
  538. package/icons/image.svg +1 -3
  539. package/icons/imba.svg +1 -0
  540. package/icons/ionic.svg +1 -1
  541. package/icons/istanbul.svg +1 -1
  542. package/icons/jar.svg +1 -0
  543. package/icons/java.svg +1 -3
  544. package/icons/javaclass.svg +1 -0
  545. package/icons/javascript-map.svg +1 -6
  546. package/icons/javascript.svg +1 -3
  547. package/icons/jenkins.svg +1 -1
  548. package/icons/jest.svg +1 -1
  549. package/icons/jinja.svg +1 -17
  550. package/icons/jinja_light.svg +1 -17
  551. package/icons/jsconfig.svg +1 -0
  552. package/icons/json.svg +1 -1
  553. package/icons/julia.svg +1 -9
  554. package/icons/jupyter.svg +1 -1
  555. package/icons/karma.svg +1 -8
  556. package/icons/key.svg +1 -3
  557. package/icons/kivy.svg +1 -9
  558. package/icons/kl.svg +1 -8
  559. package/icons/kotlin.svg +1 -14
  560. package/icons/kusto.svg +1 -0
  561. package/icons/laravel.svg +1 -5
  562. package/icons/lerna.svg +1 -0
  563. package/icons/less.svg +1 -1
  564. package/icons/lib.svg +1 -3
  565. package/icons/lighthouse.svg +3 -0
  566. package/icons/lilypond.svg +1 -0
  567. package/icons/liquid.svg +1 -0
  568. package/icons/lisp.svg +1 -0
  569. package/icons/livescript.svg +1 -18
  570. package/icons/lock.svg +1 -3
  571. package/icons/log.svg +1 -4
  572. package/icons/lolcode.svg +1 -0
  573. package/icons/lua.svg +1 -7
  574. package/icons/makefile.svg +1 -1
  575. package/icons/markdown.svg +1 -3
  576. package/icons/markojs.svg +1 -12
  577. package/icons/mathematica.svg +1 -3
  578. package/icons/matlab.svg +1 -8
  579. package/icons/maven.svg +1 -0
  580. package/icons/mdx.svg +1 -1
  581. package/icons/merlin.svg +1 -5
  582. package/icons/meson.svg +1 -0
  583. package/icons/minecraft.svg +1 -0
  584. package/icons/mint.svg +1 -1
  585. package/icons/mjml.svg +1 -4
  586. package/icons/mocha.svg +1 -2
  587. package/icons/modernizr.svg +1 -0
  588. package/icons/moonscript.svg +1 -0
  589. package/icons/mxml.svg +1 -3
  590. package/icons/ndst.svg +7 -0
  591. package/icons/nest-controller.svg +1 -0
  592. package/icons/nest-decorator.svg +1 -0
  593. package/icons/nest-filter.svg +1 -0
  594. package/icons/nest-gateway.svg +1 -0
  595. package/icons/nest-guard.svg +1 -0
  596. package/icons/nest-middleware.svg +1 -0
  597. package/icons/nest-module.svg +1 -0
  598. package/icons/nest-pipe.svg +1 -0
  599. package/icons/nest-resolver.svg +1 -0
  600. package/icons/nest-service.svg +1 -0
  601. package/icons/nest.svg +1 -0
  602. package/icons/netlify.svg +1 -0
  603. package/icons/next.svg +3 -0
  604. package/icons/next_light.svg +3 -0
  605. package/icons/nginx.svg +1 -0
  606. package/icons/ngrx-actions.svg +1 -4
  607. package/icons/ngrx-effects.svg +1 -4
  608. package/icons/ngrx-entity.svg +1 -4
  609. package/icons/ngrx-reducer.svg +1 -4
  610. package/icons/ngrx-selectors.svg +1 -0
  611. package/icons/ngrx-state.svg +1 -4
  612. package/icons/nim.svg +1 -1
  613. package/icons/nix.svg +1 -6
  614. package/icons/nodejs.svg +1 -3
  615. package/icons/nodejs_alt.svg +1 -1
  616. package/icons/nodemon.svg +1 -7
  617. package/icons/npm.svg +1 -8
  618. package/icons/nrwl.svg +1 -0
  619. package/icons/nuget.svg +1 -0
  620. package/icons/nunjucks.svg +1 -3
  621. package/icons/nuxt.svg +1 -0
  622. package/icons/nuxt_light.svg +1 -0
  623. package/icons/ocaml.svg +1 -1
  624. package/icons/odin.svg +6 -0
  625. package/icons/opa.svg +1 -0
  626. package/icons/opam.svg +1 -0
  627. package/icons/parcel.svg +4 -0
  628. package/icons/pascal.svg +1 -0
  629. package/icons/pawn.svg +1 -0
  630. package/icons/pdf.svg +1 -1
  631. package/icons/percy.svg +1 -0
  632. package/icons/perl.svg +1 -3
  633. package/icons/php-cs-fixer.svg +1 -0
  634. package/icons/php.svg +1 -1
  635. package/icons/php_elephant.svg +1 -4
  636. package/icons/php_elephant_pink.svg +1 -0
  637. package/icons/phpunit.svg +1 -0
  638. package/icons/pipeline.svg +1 -0
  639. package/icons/playwright.svg +7 -0
  640. package/icons/pnpm.svg +9 -0
  641. package/icons/pnpm_light.svg +7 -0
  642. package/icons/poetry.svg +1 -0
  643. package/icons/postcss.svg +1 -9
  644. package/icons/posthtml.svg +1 -0
  645. package/icons/powerpoint.svg +1 -3
  646. package/icons/powershell.svg +1 -1
  647. package/icons/prettier.svg +1 -35
  648. package/icons/prisma.svg +1 -1
  649. package/icons/processing.svg +10 -5
  650. package/icons/prolog.svg +1 -0
  651. package/icons/proto.svg +1 -0
  652. package/icons/protractor.svg +1 -1
  653. package/icons/pug.svg +1 -22
  654. package/icons/puppet.svg +1 -13
  655. package/icons/purescript.svg +1 -1
  656. package/icons/python-misc.svg +1 -1
  657. package/icons/python.svg +1 -8
  658. package/icons/qsharp.svg +1 -0
  659. package/icons/quasar.svg +1 -0
  660. package/icons/r.svg +1 -4
  661. package/icons/racket.svg +1 -1
  662. package/icons/raml.svg +1 -1
  663. package/icons/razor.svg +1 -1
  664. package/icons/react.svg +1 -3
  665. package/icons/react_ts.svg +1 -1
  666. package/icons/readme.svg +1 -3
  667. package/icons/reason.svg +1 -3
  668. package/icons/red.svg +1 -8
  669. package/icons/redux-action.svg +1 -1
  670. package/icons/redux-reducer.svg +1 -1
  671. package/icons/redux-selector.svg +1 -0
  672. package/icons/redux-store.svg +1 -1
  673. package/icons/remix.svg +4 -0
  674. package/icons/remix_light.svg +4 -0
  675. package/icons/renovate.svg +1 -0
  676. package/icons/replit.svg +1 -0
  677. package/icons/rescript.svg +1 -0
  678. package/icons/restql.svg +1 -60
  679. package/icons/riot.svg +1 -3
  680. package/icons/roadmap.svg +1 -0
  681. package/icons/robot.svg +1 -1
  682. package/icons/robots.svg +1 -0
  683. package/icons/rollup.svg +1 -50
  684. package/icons/rome.svg +5 -0
  685. package/icons/routing.svg +1 -3
  686. package/icons/rubocop.svg +1 -0
  687. package/icons/rubocop_light.svg +1 -0
  688. package/icons/ruby.svg +1 -3
  689. package/icons/rust.svg +1 -3
  690. package/icons/salesforce.svg +1 -0
  691. package/icons/san.svg +1 -1
  692. package/icons/sas.svg +1 -0
  693. package/icons/sass.svg +1 -1
  694. package/icons/sbt.svg +1 -6
  695. package/icons/scala.svg +1 -1
  696. package/icons/scheme.svg +1 -1
  697. package/icons/search.svg +1 -0
  698. package/icons/semantic-release.svg +1 -1
  699. package/icons/semantic-release_light.svg +1 -1
  700. package/icons/sentry.svg +1 -0
  701. package/icons/sequelize.svg +1 -31
  702. package/icons/serverless.svg +4 -0
  703. package/icons/settings.svg +1 -3
  704. package/icons/shaderlab.svg +1 -3
  705. package/icons/silverstripe.svg +1 -0
  706. package/icons/siyuan.svg +9 -0
  707. package/icons/sketch.svg +1 -0
  708. package/icons/slim.svg +1 -4
  709. package/icons/slug.svg +1 -0
  710. package/icons/smarty.svg +1 -3
  711. package/icons/sml.svg +1 -0
  712. package/icons/snowpack.svg +1 -0
  713. package/icons/snowpack_light.svg +1 -0
  714. package/icons/snyk.svg +1 -23
  715. package/icons/solidity.svg +1 -7
  716. package/icons/steadybit.svg +1 -0
  717. package/icons/stencil.svg +1 -1
  718. package/icons/stitches.svg +1 -0
  719. package/icons/stitches_light.svg +1 -0
  720. package/icons/storybook.svg +1 -1
  721. package/icons/stryker.svg +1 -0
  722. package/icons/stylelint.svg +1 -12
  723. package/icons/stylelint_light.svg +1 -12
  724. package/icons/stylus.svg +1 -1
  725. package/icons/sublime.svg +1 -1
  726. package/icons/svelte.svg +1 -0
  727. package/icons/svg.svg +1 -1
  728. package/icons/svgo.svg +1 -0
  729. package/icons/svgr.svg +4 -0
  730. package/icons/swc.svg +1 -12
  731. package/icons/swift.svg +1 -1
  732. package/icons/table.svg +1 -3
  733. package/icons/tailwindcss.svg +1 -1
  734. package/icons/tauri.svg +9 -0
  735. package/icons/tcl.svg +1 -0
  736. package/icons/teal.svg +1 -0
  737. package/icons/template.svg +4 -0
  738. package/icons/terraform.svg +1 -12
  739. package/icons/test-js.svg +1 -1
  740. package/icons/test-jsx.svg +1 -4
  741. package/icons/test-ts.svg +1 -1
  742. package/icons/tex.svg +1 -1
  743. package/icons/textlint.svg +1 -0
  744. package/icons/tilt.svg +1 -0
  745. package/icons/tobi.svg +4 -0
  746. package/icons/tobimake.svg +14 -0
  747. package/icons/todo.svg +1 -1
  748. package/icons/travis.svg +1 -13
  749. package/icons/tsconfig.svg +1 -0
  750. package/icons/tune.svg +1 -7
  751. package/icons/turborepo.svg +12 -0
  752. package/icons/turborepo_light.svg +12 -0
  753. package/icons/twig.svg +1 -3
  754. package/icons/twine.svg +1 -0
  755. package/icons/typescript-def.svg +1 -6
  756. package/icons/typescript.svg +1 -3
  757. package/icons/uml.svg +1 -0
  758. package/icons/uml_light.svg +1 -0
  759. package/icons/url.svg +1 -3
  760. package/icons/vagrant.svg +1 -1
  761. package/icons/vala.svg +1 -0
  762. package/icons/velocity.svg +1 -1
  763. package/icons/vercel.svg +1 -0
  764. package/icons/vercel_light.svg +1 -0
  765. package/icons/verilog.svg +1 -3
  766. package/icons/vfl.svg +1 -16
  767. package/icons/video.svg +1 -4
  768. package/icons/vim.svg +1 -0
  769. package/icons/virtual.svg +1 -1
  770. package/icons/visualstudio.svg +1 -4
  771. package/icons/vite.svg +1 -0
  772. package/icons/vlang.svg +1 -0
  773. package/icons/vscode.svg +1 -9
  774. package/icons/vue-config.svg +1 -1
  775. package/icons/vue.svg +1 -1
  776. package/icons/vuex-store.svg +1 -1
  777. package/icons/wakatime.svg +1 -21
  778. package/icons/wakatime_light.svg +1 -21
  779. package/icons/wallaby.svg +1 -1
  780. package/icons/watchman.svg +1 -4
  781. package/icons/webassembly.svg +1 -1
  782. package/icons/webhint.svg +1 -5
  783. package/icons/webpack.svg +1 -6
  784. package/icons/wepy.svg +1 -1
  785. package/icons/windicss.svg +1 -0
  786. package/icons/wolframlanguage.svg +1 -13
  787. package/icons/word.svg +1 -3
  788. package/icons/xaml.svg +1 -3
  789. package/icons/xml.svg +1 -4
  790. package/icons/yaml.svg +1 -1
  791. package/icons/yang.svg +1 -1
  792. package/icons/yarn.svg +1 -3
  793. package/icons/zig.svg +1 -0
  794. package/icons/zip.svg +1 -3
  795. package/images/bloop.png +0 -0
  796. package/images/contributors.png +0 -0
  797. package/images/fileIcons.png +0 -0
  798. package/images/folderIcons.png +0 -0
  799. package/images/stepsize.png +0 -0
  800. package/logo.svg +21 -21
  801. package/material-colors.yml +257 -0
  802. package/package.json +264 -220
  803. package/package.nls.de.json +35 -34
  804. package/package.nls.es.json +32 -31
  805. package/package.nls.fr.json +32 -31
  806. package/package.nls.ja.json +35 -0
  807. package/package.nls.json +35 -34
  808. package/package.nls.nl.json +35 -0
  809. package/package.nls.pl.json +35 -0
  810. package/package.nls.pt-BR.json +32 -31
  811. package/package.nls.pt-PT.json +32 -31
  812. package/package.nls.ru.json +32 -31
  813. package/package.nls.zh-CN.json +32 -31
  814. package/package.nls.zh-TW.json +32 -0
  815. package/src/commands/activate.ts +26 -30
  816. package/src/commands/explorerArrows.ts +55 -0
  817. package/src/commands/folderColor.ts +96 -88
  818. package/src/commands/folders.ts +55 -41
  819. package/src/commands/grayscale.ts +55 -54
  820. package/src/commands/iconPacks.ts +68 -65
  821. package/src/commands/index.ts +30 -27
  822. package/src/commands/opacity.ts +46 -47
  823. package/src/commands/restoreConfig.ts +14 -14
  824. package/src/commands/saturation.ts +46 -47
  825. package/src/extension.ts +35 -35
  826. package/src/helpers/changeDetection.ts +68 -58
  827. package/src/helpers/customIcons.ts +8 -0
  828. package/src/helpers/fileConfig.ts +37 -0
  829. package/src/helpers/index.ts +100 -87
  830. package/src/helpers/objects.ts +58 -55
  831. package/src/helpers/types.ts +7 -0
  832. package/src/helpers/versioning.ts +73 -58
  833. package/src/i18n/index.ts +78 -82
  834. package/src/i18n/lang-de.ts +54 -43
  835. package/src/i18n/lang-en.ts +53 -52
  836. package/src/i18n/lang-es.ts +53 -43
  837. package/src/i18n/lang-fr.ts +53 -43
  838. package/src/i18n/lang-ja.ts +54 -0
  839. package/src/i18n/lang-nl.ts +54 -0
  840. package/src/i18n/lang-pl.ts +52 -0
  841. package/src/i18n/lang-pt-br.ts +53 -43
  842. package/src/i18n/lang-pt-pt.ts +53 -43
  843. package/src/i18n/lang-ru.ts +52 -43
  844. package/src/i18n/lang-uk.ts +54 -22
  845. package/src/i18n/lang-zh-cn.ts +52 -43
  846. package/src/i18n/lang-zh-tw.ts +52 -0
  847. package/src/icons/fileIcons.ts +1836 -784
  848. package/src/icons/folderIcons.ts +750 -183
  849. package/src/icons/generator/constants.ts +29 -29
  850. package/src/icons/generator/fileGenerator.ts +216 -116
  851. package/src/icons/generator/folderGenerator.ts +340 -182
  852. package/src/icons/generator/iconOpacity.ts +111 -89
  853. package/src/icons/generator/iconSaturation.ts +140 -118
  854. package/src/icons/generator/index.ts +7 -7
  855. package/src/icons/generator/jsonGenerator.ts +187 -98
  856. package/src/icons/generator/languageGenerator.ts +127 -67
  857. package/src/icons/index.ts +4 -4
  858. package/src/icons/languageIcons.ts +134 -74
  859. package/src/messages/outdated.ts +33 -24
  860. package/src/messages/reload.ts +32 -32
  861. package/src/messages/start.ts +12 -13
  862. package/src/messages/update.ts +48 -48
  863. package/src/messages/welcome.ts +47 -47
  864. package/src/models/helpers/index.ts +1 -0
  865. package/src/models/helpers/themeStatus.ts +5 -0
  866. package/src/models/i18n/index.ts +1 -1
  867. package/src/models/i18n/translation.ts +50 -50
  868. package/src/models/iconConfiguration.ts +37 -37
  869. package/src/models/icons/defaultIcon.ts +16 -16
  870. package/src/models/icons/files/fileIcon.ts +49 -40
  871. package/src/models/icons/files/fileTypes.ts +14 -14
  872. package/src/models/icons/files/index.ts +2 -2
  873. package/src/models/icons/folders/folderIcon.ts +34 -34
  874. package/src/models/icons/folders/folderTheme.ts +23 -23
  875. package/src/models/icons/folders/index.ts +2 -2
  876. package/src/models/icons/iconJsonOptions.ts +23 -23
  877. package/src/models/icons/iconPack.ts +12 -11
  878. package/src/models/icons/index.ts +6 -6
  879. package/src/models/icons/languages/index.ts +1 -1
  880. package/src/models/icons/languages/languageIdentifier.ts +26 -26
  881. package/src/models/index.ts +4 -4
  882. package/src/models/scripts/contributors/contributor.ts +22 -0
  883. package/src/models/scripts/contributors/contributorsConfig.ts +10 -0
  884. package/src/scripts/contributors/contributors.css +24 -0
  885. package/src/scripts/contributors/index.ts +138 -0
  886. package/src/scripts/helpers/painter.ts +5 -5
  887. package/src/scripts/helpers/screenshots.ts +32 -0
  888. package/src/scripts/helpers/similarity.ts +47 -42
  889. package/src/scripts/helpers/titleCase.ts +7 -4
  890. package/src/scripts/icons/checks/checkIconAvailability.ts +215 -151
  891. package/src/scripts/icons/checks/checkIconConflicts.ts +154 -115
  892. package/src/scripts/icons/checks/checkIconUsage.ts +141 -110
  893. package/src/scripts/icons/checks/index.ts +7 -7
  894. package/src/scripts/icons/generateJson.ts +11 -10
  895. package/src/scripts/preview/index.ts +40 -24
  896. package/src/scripts/preview/preview.ts +165 -112
  897. package/src/scripts/preview/style.css +48 -43
  898. package/src/test/runTest.ts +26 -0
  899. package/src/test/spec/i18n/i18n.spec.ts +61 -0
  900. package/src/test/spec/icons/fileIcons.spec.ts +250 -0
  901. package/src/test/spec/icons/folderIcons.spec.ts +418 -0
  902. package/src/test/spec/icons/languageIcons.spec.ts +184 -0
  903. package/src/test/spec/index.ts +36 -0
  904. package/src/web/extension.ts +10 -0
  905. package/svgo.config.js +12 -0
  906. package/tsconfig.json +23 -20
  907. package/.travis.yml +0 -20
  908. package/appveyor.yml +0 -24
  909. package/icons/processing_light.svg +0 -5
  910. package/icons/stencil_light.svg +0 -1
  911. package/src/commands/folderArrows.ts +0 -60
  912. package/src/models/advancedWorkspaceConfiguration.ts +0 -7
  913. package/src/scripts/preview/screenshots.ts +0 -28
  914. package/src/test/i18n/i18n.test.ts +0 -37
  915. package/src/test/icons/fileIcons.test.ts +0 -185
  916. package/src/test/icons/folderIcons.test.ts +0 -356
  917. package/src/test/icons/languageIcons.test.ts +0 -138
  918. package/src/test/index.ts +0 -23
  919. package/tslint.json +0 -104
  920. package/webpack.config.js +0 -40
@@ -0,0 +1,37 @@
1
+ import { getDefaultIconOptions } from '../icons';
2
+ import { IconJsonOptions } from '../models';
3
+
4
+ /**
5
+ * Generate a config hashed string that is appended to each icon file name.
6
+ * @param config Icon Configuration object
7
+ */
8
+ export const getFileConfigHash = (options: IconJsonOptions): string => {
9
+ try {
10
+ const defaults = getDefaultIconOptions();
11
+ let fileConfigString = '';
12
+ if (
13
+ options.saturation !== defaults.saturation ||
14
+ options.opacity !== defaults.opacity ||
15
+ options.folders?.color !== defaults.folders.color
16
+ ) {
17
+ fileConfigString += `~${getHash(JSON.stringify(options))}`;
18
+ }
19
+ return fileConfigString;
20
+ } catch (error) {
21
+ console.error(error);
22
+ return '';
23
+ }
24
+ };
25
+
26
+ const getHash = (value: string) => {
27
+ let hash = 0;
28
+ let chr = 0;
29
+
30
+ if (value.length === 0) return hash;
31
+ for (let i = 0; i < value.length; i++) {
32
+ chr = value.charCodeAt(i);
33
+ hash = (hash << 5) - hash + chr;
34
+ hash |= 0; // Convert to 32bit integer
35
+ }
36
+ return hash;
37
+ };
@@ -1,87 +1,100 @@
1
- import * as fs from 'fs';
2
- import * as path from 'path';
3
- import * as vscode from 'vscode';
4
- import { iconJsonName } from '../icons/index';
5
- import { AdvancedWorkspaceConfiguration } from '../models';
6
- import { IconConfiguration } from '../models/index';
7
- import * as reloadMessages from './../messages/reload';
8
-
9
- /** Get configuration of vs code. */
10
- export const getConfig = (section?: string) => {
11
- return vscode.workspace.getConfiguration(section) as AdvancedWorkspaceConfiguration;
12
- };
13
-
14
- /** Get list of configuration entries of package.json */
15
- export const getConfigProperties = (): { [config: string]: any } => {
16
- return vscode.extensions.getExtension('PKief.material-icon-theme').packageJSON.contributes.configuration.properties;
17
- };
18
-
19
- /** Update configuration of vs code. */
20
- export const setConfig = (section: string, value: any, global: boolean = false) => {
21
- return getConfig().update(section, value, global);
22
- };
23
-
24
- export const getThemeConfig = (section: string) => {
25
- return getConfig('material-icon-theme').inspect(section);
26
- };
27
-
28
- /** Is a folder opened? */
29
- export const hasWorkspace = (): boolean => {
30
- return vscode.workspace.rootPath !== undefined;
31
- };
32
-
33
- /** Set the config of the theme. */
34
- export const setThemeConfig = (section: string, value: any, global: boolean = false) => {
35
- return getConfig('material-icon-theme').update(section, value, global);
36
- };
37
-
38
- /**
39
- * Is the theme already activated in the editor configuration?
40
- * @param{boolean} global false by default
41
- */
42
- export const isThemeActivated = (global: boolean = false): boolean => {
43
- return global ? getConfig().inspect('workbench.iconTheme').globalValue === 'material-icon-theme'
44
- : getConfig().inspect('workbench.iconTheme').workspaceValue === 'material-icon-theme';
45
- };
46
-
47
- /** Is the theme not visible for the user? */
48
- export const isThemeNotVisible = (): boolean => {
49
- const config = getConfig().inspect('workbench.iconTheme');
50
- return (!isThemeActivated(true) && config.workspaceValue === undefined) || // no workspace and not global
51
- (!isThemeActivated() && config.workspaceValue !== undefined);
52
- };
53
-
54
- /** Return the path of the extension in the file system. */
55
- export const getExtensionPath = () => vscode.extensions.getExtension('PKief.material-icon-theme').extensionPath;
56
-
57
- /** Get the configuration of the icons as JSON Object */
58
- export const getMaterialIconsJSON = (): IconConfiguration => {
59
- const iconJSONPath = path.join(getExtensionPath(), 'dist', iconJsonName);
60
-
61
- try {
62
- const data = fs.readFileSync(iconJSONPath, 'utf8');
63
- return JSON.parse(data);
64
- } catch (error) {
65
- console.error(error);
66
- return undefined;
67
- }
68
- };
69
-
70
- /** Reload vs code window */
71
- export const promptToReload = () => {
72
- return reloadMessages.showConfirmToReloadMessage().then(result => {
73
- if (result) reloadWindow();
74
- });
75
- };
76
-
77
- const reloadWindow = () => {
78
- return vscode.commands.executeCommand('workbench.action.reloadWindow');
79
- };
80
-
81
- /** Capitalize the first letter of a string */
82
- export const capitalizeFirstLetter = (name: string): string => name.charAt(0).toUpperCase() + name.slice(1);
83
-
84
- /** TitleCase all words in a string */
85
- export const toTitleCase = (str) => {
86
- return str.replace(/\w\S*/g, (txt) => { return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase(); });
87
- };
1
+ import * as fs from 'fs';
2
+ import * as path from 'path';
3
+ import * as vscode from 'vscode';
4
+ import { iconJsonName } from '../icons/index';
5
+ import { IconConfiguration } from '../models/index';
6
+ import * as reloadMessages from './../messages/reload';
7
+
8
+ /** Get configuration of vs code. */
9
+ export const getConfig = (section?: string) => {
10
+ return vscode.workspace.getConfiguration(section);
11
+ };
12
+
13
+ /** Get list of configuration entries of package.json */
14
+ export const getConfigProperties = (): { [config: string]: unknown } => {
15
+ return vscode.extensions.getExtension('PKief.material-icon-theme')
16
+ ?.packageJSON?.contributes?.configuration?.properties;
17
+ };
18
+
19
+ /** Update configuration of vs code. */
20
+ export const setConfig = (
21
+ section: string,
22
+ value: any,
23
+ global: boolean = false
24
+ ) => {
25
+ return getConfig().update(section, value, global);
26
+ };
27
+
28
+ export const getThemeConfig = (section: string) => {
29
+ return getConfig('material-icon-theme').inspect(section);
30
+ };
31
+
32
+ /** Set the config of the theme. */
33
+ export const setThemeConfig = (
34
+ section: string,
35
+ value: any,
36
+ global: boolean = false
37
+ ) => {
38
+ return getConfig('material-icon-theme').update(section, value, global);
39
+ };
40
+
41
+ /**
42
+ * Checks if the theme is the active icon theme
43
+ * @param{boolean} global false by default
44
+ */
45
+ export const isThemeActivated = (global: boolean = false): boolean => {
46
+ return global
47
+ ? getConfig().inspect('workbench.iconTheme')?.globalValue ===
48
+ 'material-icon-theme'
49
+ : getConfig().inspect('workbench.iconTheme')?.workspaceValue ===
50
+ 'material-icon-theme';
51
+ };
52
+
53
+ /** Checks if the theme is not the active icon theme */
54
+ export const isThemeNotVisible = (): boolean => {
55
+ const config = getConfig().inspect('workbench.iconTheme');
56
+ return (
57
+ (!isThemeActivated(true) && !config?.workspaceValue) || // no workspace and not global
58
+ (!isThemeActivated() && !!config?.workspaceValue)
59
+ );
60
+ };
61
+
62
+ /** Return the path of the extension in the file system. */
63
+ export const getExtensionPath = () =>
64
+ vscode.extensions.getExtension('PKief.material-icon-theme')?.extensionPath ??
65
+ '';
66
+
67
+ /** Get the configuration of the icons as JSON Object */
68
+ export const getMaterialIconsJSON = (): IconConfiguration => {
69
+ const iconJSONPath = path.join(getExtensionPath(), 'dist', iconJsonName);
70
+
71
+ try {
72
+ const data = fs.readFileSync(iconJSONPath, 'utf8');
73
+ return JSON.parse(data);
74
+ } catch (error) {
75
+ console.error(error);
76
+ return {};
77
+ }
78
+ };
79
+
80
+ /** Reload vs code window */
81
+ export const promptToReload = async () => {
82
+ const result = await reloadMessages.showConfirmToReloadMessage();
83
+ if (result) reloadWindow();
84
+ };
85
+
86
+ const reloadWindow = () => {
87
+ return vscode.commands.executeCommand('workbench.action.reloadWindow');
88
+ };
89
+
90
+ /** Capitalize the first letter of a string */
91
+ export const capitalizeFirstLetter = (name: string): string =>
92
+ name.charAt(0).toUpperCase() + name.slice(1);
93
+
94
+ /** TitleCase all words in a string */
95
+ export const toTitleCase = (value: string) => {
96
+ return value.replace(
97
+ /\w\S*/g,
98
+ (text) => text.charAt(0).toUpperCase() + text.substr(1).toLowerCase()
99
+ );
100
+ };
@@ -1,55 +1,58 @@
1
- /**
2
- * Get the nested properties of an object
3
- * This solution is lighter than the lodash get-version and works fine for the translations.
4
- * Source: http://stackoverflow.com/a/6491621/6942210
5
- */
6
- export const getObjectPropertyValue = (obj: Object, path: string) => {
7
- // convert indexes to properties
8
- path = path.replace(/\[(\w+)\]/g, '.$1');
9
-
10
- // strip a leading dot
11
- path = path.replace(/^\./, '');
12
-
13
- // separate paths in array
14
- let pathArray = path.split('.');
15
-
16
- /** Avoid errors in the getValue function. */
17
- const isObject = (object) => {
18
- return object === Object(object);
19
- };
20
-
21
- for (let i = 0; i < pathArray.length; ++i) {
22
- let k = pathArray[i];
23
- if (isObject(obj) && k in obj) {
24
- obj = obj[k];
25
- } else {
26
- return;
27
- }
28
- }
29
- return obj;
30
- };
31
-
32
- /**
33
- * Set a value for a nested object property.
34
- * @param obj Object
35
- * @param path Properties as string e.g. `'a.b.c'`
36
- * @param value Value to be set for the given property
37
- * Source: https://stackoverflow.com/a/13719799/6942210
38
- */
39
- export const setObjectPropertyValue = (obj: Object, path, value) => {
40
- if (typeof path === 'string') {
41
- path = path.split('.');
42
- }
43
-
44
- if (path.length > 1) {
45
- let e = path.shift();
46
- setObjectPropertyValue(obj[e] =
47
- Object.prototype.toString.call(obj[e]) === '[object Object]'
48
- ? obj[e]
49
- : {},
50
- path,
51
- value);
52
- } else {
53
- obj[path[0]] = value;
54
- }
55
- };
1
+ /**
2
+ * Get the nested properties of an object.
3
+ * This solution is lighter than the lodash get-version.
4
+ * Source: http://stackoverflow.com/a/6491621/6942210
5
+ */
6
+ export const getObjectPropertyValue = (obj: Object, path: string) => {
7
+ const pathArray = path
8
+ .replace(/\[(\w+)\]/g, '.$1') // convert indexes to properties
9
+ .replace(/^\./, '') // strip a leading dot
10
+ .split('.'); // separate paths in array
11
+
12
+ /** Avoid errors in the getValue function. */
13
+ const isObject = (object: unknown) => {
14
+ return object === Object(object);
15
+ };
16
+ let result = JSON.parse(JSON.stringify(obj));
17
+
18
+ for (let i = 0; i < pathArray.length; ++i) {
19
+ const k = pathArray[i];
20
+ if (isObject(result) && k in result) {
21
+ result = result[k];
22
+ } else {
23
+ return;
24
+ }
25
+ }
26
+ return result;
27
+ };
28
+
29
+ /**
30
+ * Set a value for a nested object property.
31
+ * @param obj Object
32
+ * @param path Properties as string e.g. `'a.b.c'`
33
+ * @param value Value to be set for the given property
34
+ * Source: https://stackoverflow.com/a/13719799/6942210
35
+ */
36
+ export const setObjectPropertyValue = (
37
+ obj: { [key: string]: any },
38
+ path: string | string[],
39
+ value: any
40
+ ) => {
41
+ if (typeof path === 'string') {
42
+ path = path.split('.');
43
+ }
44
+
45
+ if (path.length > 1) {
46
+ const e = path.shift() ?? '';
47
+ setObjectPropertyValue(
48
+ (obj[e] =
49
+ Object.prototype.toString.call(obj[e]) === '[object Object]'
50
+ ? obj[e]
51
+ : {}),
52
+ path,
53
+ value
54
+ );
55
+ } else {
56
+ obj[path[0]] = value;
57
+ }
58
+ };
@@ -0,0 +1,7 @@
1
+ export type RequireAtLeastOne<T, Keys extends keyof T = keyof T> = Pick<
2
+ T,
3
+ Exclude<keyof T, Keys>
4
+ > &
5
+ {
6
+ [K in Keys]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<Keys, K>>>;
7
+ }[Keys];
@@ -1,58 +1,73 @@
1
- import * as semver from 'semver';
2
- import * as vscode from 'vscode';
3
- import * as helpers from './index';
4
-
5
- export enum ThemeStatus {
6
- neverUsedBefore,
7
- updated,
8
- current
9
- }
10
-
11
- /** Check the current status of the theme */
12
- export const checkThemeStatus = async (state: vscode.Memento) => {
13
- try {
14
- // get the version from the state
15
- const stateVersion = state.get('material-icon-theme.version');
16
- const packageVersion = getCurrentExtensionVersion();
17
-
18
- // check if the theme was used before
19
- if (stateVersion === undefined) {
20
- await updateExtensionVersionInMemento(state);
21
- return themeIsAlreadyActivated() ? ThemeStatus.updated : ThemeStatus.neverUsedBefore;
22
- }
23
- // compare the version in the state with the package version
24
- else if (semver.lt(stateVersion, packageVersion)) {
25
- await updateExtensionVersionInMemento(state);
26
- return ThemeStatus.updated;
27
- }
28
- else {
29
- return ThemeStatus.current;
30
- }
31
- }
32
- catch (error) {
33
- console.error(error);
34
- }
35
- };
36
-
37
- /** Check if the theme was used before */
38
- const themeIsAlreadyActivated = () => {
39
- return helpers.isThemeActivated() || helpers.isThemeActivated(true);
40
- };
41
-
42
- /** Update the version number to the current version in the memento. */
43
- const updateExtensionVersionInMemento = (state: vscode.Memento) => {
44
- return state.update('material-icon-theme.version', getCurrentExtensionVersion());
45
- };
46
-
47
- /** Get the current version of the extension */
48
- const getCurrentExtensionVersion = (): string => {
49
- return vscode.extensions.getExtension('PKief.material-icon-theme').packageJSON.version;
50
- };
51
-
52
- /**
53
- * Check if the current version of VS Code
54
- * supports new features.
55
- */
56
- export const checkVersionSupport = (supportedVersion: string): boolean => {
57
- return !semver.lt(vscode.version, supportedVersion);
58
- };
1
+ import { extensions, Memento, workspace } from 'vscode';
2
+ import { isThemeActivated } from '.';
3
+ import { ThemeStatus } from '../models/helpers/themeStatus';
4
+
5
+ /** Get configuration of vs code. */
6
+ export const getConfig = (section?: string) => {
7
+ return workspace.getConfiguration(section);
8
+ };
9
+
10
+ export const versionKey = 'material-icon-theme.version';
11
+
12
+ /**
13
+ * Check the current status of the theme
14
+ * @param state Global state of context (Memento API)
15
+ */
16
+ export const checkThemeStatus = async (
17
+ state: Memento
18
+ ): Promise<ThemeStatus> => {
19
+ try {
20
+ // get the version from the state
21
+ const stateVersion = state.get(versionKey);
22
+ const packageVersion = getCurrentExtensionVersion();
23
+
24
+ // check if the theme was used before
25
+ if (stateVersion === undefined || typeof stateVersion !== 'string') {
26
+ await updateExtensionVersionInMemento(state);
27
+ return themeIsAlreadyActivated()
28
+ ? ThemeStatus.updated
29
+ : ThemeStatus.neverUsedBefore;
30
+ }
31
+ // compare the version in the state with the package version
32
+ else if (packageVersion && isGreaterVersion(packageVersion, stateVersion)) {
33
+ await updateExtensionVersionInMemento(state);
34
+ return ThemeStatus.updated;
35
+ } else {
36
+ return ThemeStatus.current;
37
+ }
38
+ } catch (error) {
39
+ console.error(error);
40
+ return ThemeStatus.current;
41
+ }
42
+ };
43
+
44
+ /**
45
+ * Compares two version numbers (e.g. 1.0.0 with 1.0.1)
46
+ * @param a version b
47
+ * @param b version a
48
+ * @returns true if version `a` is greater than version `b`
49
+ */
50
+ const isGreaterVersion = (a: string, b: string): boolean => {
51
+ return (
52
+ a.localeCompare(b, undefined, { numeric: true, sensitivity: 'base' }) === 1
53
+ );
54
+ };
55
+
56
+ /** Check if the theme was used before */
57
+ const themeIsAlreadyActivated = () => {
58
+ return isThemeActivated() || isThemeActivated(true);
59
+ };
60
+
61
+ /** Update the version number to the current version in the memento. */
62
+ const updateExtensionVersionInMemento = (state: Memento) => {
63
+ const currentVersion = getCurrentExtensionVersion();
64
+ if (currentVersion) {
65
+ return state.update(versionKey, currentVersion);
66
+ }
67
+ };
68
+
69
+ /** Get the current version of the extension */
70
+ const getCurrentExtensionVersion = (): string | undefined => {
71
+ return extensions.getExtension('PKief.material-icon-theme')?.packageJSON
72
+ .version;
73
+ };
package/src/i18n/index.ts CHANGED
@@ -1,82 +1,78 @@
1
- import * as vscode from 'vscode';
2
- import { getObjectPropertyValue } from '../helpers/objects';
3
-
4
- // Get current language of the vs code workspace
5
- export const getCurrentLanguage = (): string =>
6
- vscode.env.language;
7
-
8
- let currentTranslation;
9
- let fallbackTranslation; // default: en
10
- const PLACEHOLDER = '%';
11
-
12
- /** Initialize the translations */
13
- export const initTranslations = async () => {
14
- try {
15
- currentTranslation = await loadTranslation(getCurrentLanguage());
16
- fallbackTranslation = await loadTranslation('en');
17
- }
18
- catch (error) {
19
- console.error(error);
20
- }
21
- };
22
-
23
- /** Load the required translation */
24
- const loadTranslation = async (language: string) => {
25
- try {
26
- return await getTranslationObject(language);
27
- } catch (error) {
28
- console.error(error);
29
- return await getTranslationObject('en');
30
- }
31
- };
32
-
33
- /** Get the translation object of the separated translation files */
34
- const getTranslationObject = async (language: string) => {
35
- try {
36
- const lang = await import(/* webpackMode: "eager" */ `./lang-${language}`);
37
- return lang.translation;
38
- }
39
- catch (error) {
40
- console.error(error);
41
- }
42
- };
43
-
44
- /**
45
- * We look up the matching translation in the translation files.
46
- * If we cannot find a matching key in the file we use the fallback.
47
- * With optional parameters you can configure both the translations
48
- * and the fallback (required for testing purposes).
49
- * */
50
- export const getTranslationValue = (key: string, translations = currentTranslation, fallback = fallbackTranslation) => {
51
- return getObjectPropertyValue(translations, key) ?
52
- getObjectPropertyValue(translations, key) :
53
- getObjectPropertyValue(fallback, key) ?
54
- getObjectPropertyValue(fallback, key) : undefined;
55
- };
56
-
57
- /**
58
- * The instant method is required for the translate pipe.
59
- * It helps to translate a word instantly.
60
- */
61
- export const translate = (key: string, words?: string | string[]) => {
62
- const translation = <string>getTranslationValue(key);
63
-
64
- if (!words) return translation;
65
- return replace(translation, words);
66
- };
67
-
68
- /**
69
- * The replace function will replace the current placeholder with the
70
- * data parameter from the translation. You can give it one or more optional
71
- * parameters ('words').
72
- */
73
- export const replace = (value: string = '', words: string | string[]) => {
74
- let translation: string = value;
75
-
76
- const values: string[] = [].concat(words);
77
- values.forEach((e, i) => {
78
- translation = translation.replace(PLACEHOLDER.concat(<any>i), e);
79
- });
80
-
81
- return translation;
82
- };
1
+ import * as vscode from 'vscode';
2
+ import { getObjectPropertyValue } from '../helpers/objects';
3
+ import { Translation } from '../models';
4
+
5
+ // Get current language of the vs code workspace
6
+ export const getCurrentLanguage = (): string => vscode.env.language;
7
+
8
+ let currentTranslation: Translation;
9
+ let fallbackTranslation: Translation;
10
+
11
+ const placeholder = '%';
12
+
13
+ /** Initialize the translations */
14
+ export const initTranslations = async () => {
15
+ try {
16
+ currentTranslation = await loadTranslation(getCurrentLanguage());
17
+ fallbackTranslation = await loadTranslation('en');
18
+ } catch (error) {
19
+ console.error(error);
20
+ }
21
+ };
22
+
23
+ /** Load the required translation */
24
+ const loadTranslation = async (language: string) => {
25
+ try {
26
+ return await getTranslationObject(language);
27
+ } catch (error) {
28
+ return await getTranslationObject('en');
29
+ }
30
+ };
31
+
32
+ /** Get the translation object of the separated translation files */
33
+ const getTranslationObject = async (language: string): Promise<Translation> => {
34
+ const lang = await import(/* webpackMode: "eager" */ `./lang-${language}`);
35
+ return lang.translation as Translation;
36
+ };
37
+
38
+ /**
39
+ * We look up the matching translation in the translation files.
40
+ * If we cannot find a matching key in the file we use the fallback.
41
+ * With optional parameters you can configure both the translations
42
+ * and the fallback (required for testing purposes).
43
+ * */
44
+ export const getTranslationValue = (
45
+ key: string,
46
+ translations = currentTranslation,
47
+ fallback = fallbackTranslation
48
+ ): string | undefined => {
49
+ return (
50
+ getObjectPropertyValue(translations, key) ??
51
+ getObjectPropertyValue(fallback, key)
52
+ );
53
+ };
54
+
55
+ /**
56
+ * The instant method is required for the translate pipe.
57
+ * It helps to translate a word instantly.
58
+ */
59
+ export const translate = (key: string, ...variables: string[]): string => {
60
+ const translation = getTranslationValue(key);
61
+
62
+ if (variables.length === 0) return translation ?? key;
63
+ return replace(translation, ...variables);
64
+ };
65
+
66
+ /**
67
+ * The replace function will replace the current placeholder with the
68
+ * data parameter from the translation. You can give it one or more optional
69
+ * parameters ('variables').
70
+ */
71
+ export const replace = (value: string = '', ...variables: string[]) => {
72
+ let translation: string = value;
73
+ variables.forEach((variable, i) => {
74
+ translation = translation.replace(`${placeholder}${i}`, variable);
75
+ });
76
+
77
+ return translation;
78
+ };