@lizardbyte/shared-web 2026.314.32913 → 2026.811.210538

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 (484) hide show
  1. package/README.md +36 -8
  2. package/dist/crowdin-rustdoc-css.css +3 -0
  3. package/dist/crowdin-rustdoc-css.css.map +1 -0
  4. package/dist/crowdin-rustdoc-css.js +0 -0
  5. package/dist/crowdin.js +1 -1
  6. package/dist/crowdin.js.map +1 -1
  7. package/dist/format-number.js +1 -1
  8. package/dist/format-number.js.map +1 -1
  9. package/dist/language-icons/AL.svg +1 -0
  10. package/dist/language-icons/ANTLR.svg +1 -0
  11. package/dist/language-icons/API Blueprint.svg +1 -0
  12. package/dist/language-icons/APL.svg +1 -0
  13. package/dist/language-icons/ASP.NET.svg +1 -0
  14. package/dist/language-icons/ATS.svg +1 -0
  15. package/dist/language-icons/ActionScript.svg +1 -0
  16. package/dist/language-icons/Ada.svg +1 -0
  17. package/dist/language-icons/ApacheConf.svg +1 -0
  18. package/dist/language-icons/Apex.svg +1 -0
  19. package/dist/language-icons/AppleScript.svg +1 -0
  20. package/dist/language-icons/Assembly.svg +1 -0
  21. package/dist/language-icons/Astro.svg +1 -0
  22. package/dist/language-icons/AutoHotkey.svg +1 -0
  23. package/dist/language-icons/AutoIt.svg +1 -0
  24. package/dist/language-icons/Avro IDL.svg +1 -0
  25. package/dist/language-icons/Awk.svg +1 -0
  26. package/dist/language-icons/Ballerina.svg +1 -0
  27. package/dist/language-icons/Batchfile.svg +1 -0
  28. package/dist/language-icons/Befunge.svg +1 -0
  29. package/dist/language-icons/Bicep.svg +1 -0
  30. package/dist/language-icons/Blade.svg +1 -0
  31. package/dist/language-icons/BlitzBasic.svg +1 -0
  32. package/dist/language-icons/Browserslist.svg +1 -0
  33. package/dist/language-icons/C#.svg +1 -0
  34. package/dist/language-icons/C++.svg +1 -0
  35. package/dist/language-icons/C.svg +1 -0
  36. package/dist/language-icons/CMake.svg +1 -0
  37. package/dist/language-icons/COBOL.svg +1 -0
  38. package/dist/language-icons/CSS.svg +1 -0
  39. package/dist/language-icons/Cabal Config.svg +1 -0
  40. package/dist/language-icons/Carbon.svg +63 -0
  41. package/dist/language-icons/Ceylon.svg +1 -0
  42. package/dist/language-icons/Clojure.svg +1 -0
  43. package/dist/language-icons/Cloud Firestore Security Rules.svg +1 -0
  44. package/dist/language-icons/CodeQL.svg +1 -0
  45. package/dist/language-icons/CoffeeScript.svg +1 -0
  46. package/dist/language-icons/ColdFusion CFC.svg +1 -0
  47. package/dist/language-icons/ColdFusion.svg +1 -0
  48. package/dist/language-icons/Crystal.svg +1 -0
  49. package/dist/language-icons/Cuda.svg +1 -0
  50. package/dist/language-icons/Cython.svg +1 -0
  51. package/dist/language-icons/D.svg +1 -0
  52. package/dist/language-icons/Darcs Patch.svg +1 -0
  53. package/dist/language-icons/Dart.svg +1 -0
  54. package/dist/language-icons/Diff.svg +1 -0
  55. package/dist/language-icons/Dockerfile.svg +1 -0
  56. package/dist/language-icons/Dylan.svg +1 -0
  57. package/dist/language-icons/EJS.svg +1 -0
  58. package/dist/language-icons/EditorConfig.svg +1 -0
  59. package/dist/language-icons/Elixir.svg +1 -0
  60. package/dist/language-icons/Elm.svg +1 -0
  61. package/dist/language-icons/Emacs Lisp.svg +1 -0
  62. package/dist/language-icons/EmberScript.svg +1 -0
  63. package/dist/language-icons/Erlang.svg +1 -0
  64. package/dist/language-icons/F#.svg +1 -0
  65. package/dist/language-icons/Fortran.svg +1 -0
  66. package/dist/language-icons/FreeMarker.svg +1 -0
  67. package/dist/language-icons/G-code.svg +1 -0
  68. package/dist/language-icons/GLSL.svg +1 -0
  69. package/dist/language-icons/Game Maker Language.svg +1 -0
  70. package/dist/language-icons/Gherkin.svg +1 -0
  71. package/dist/language-icons/Git Attributes.svg +1 -0
  72. package/dist/language-icons/Git Config.svg +1 -0
  73. package/dist/language-icons/Glyph.svg +1 -0
  74. package/dist/language-icons/Gnuplot.svg +1 -0
  75. package/dist/language-icons/Go Checksums.svg +1 -0
  76. package/dist/language-icons/Go Module.svg +1 -0
  77. package/dist/language-icons/Go.svg +1 -0
  78. package/dist/language-icons/Gradle.svg +1 -0
  79. package/dist/language-icons/GraphQL.svg +1 -0
  80. package/dist/language-icons/Graphviz (DOT).svg +1 -0
  81. package/dist/language-icons/Groovy.svg +1 -0
  82. package/dist/language-icons/HLSL.svg +1 -0
  83. package/dist/language-icons/HTML+EEX.svg +1 -0
  84. package/dist/language-icons/HTML+ERB.svg +1 -0
  85. package/dist/language-icons/HTML+Razor.svg +1 -0
  86. package/dist/language-icons/HTML.svg +1 -0
  87. package/dist/language-icons/HTTP.svg +1 -0
  88. package/dist/language-icons/Haml.svg +1 -0
  89. package/dist/language-icons/Handlebars.svg +1 -0
  90. package/dist/language-icons/Harbour.svg +1 -0
  91. package/dist/language-icons/Haskell.svg +1 -0
  92. package/dist/language-icons/Haxe.svg +1 -0
  93. package/dist/language-icons/Hy.svg +1 -0
  94. package/dist/language-icons/INI.svg +1 -0
  95. package/dist/language-icons/Idris.svg +1 -0
  96. package/dist/language-icons/Inno Setup.svg +1 -0
  97. package/dist/language-icons/Io.svg +1 -0
  98. package/dist/language-icons/JSON.svg +1 -0
  99. package/dist/language-icons/JSON5.svg +1 -0
  100. package/dist/language-icons/JSONLD.svg +1 -0
  101. package/dist/language-icons/Janet.svg +1 -0
  102. package/dist/language-icons/Jasmin.svg +1 -0
  103. package/dist/language-icons/Java.svg +1 -0
  104. package/dist/language-icons/JavaScript+ERB.svg +1 -0
  105. package/dist/language-icons/JavaScript.svg +1 -0
  106. package/dist/language-icons/Jest Snapshot.svg +1 -0
  107. package/dist/language-icons/Jinja.svg +1 -0
  108. package/dist/language-icons/Jsonnet.svg +1 -0
  109. package/dist/language-icons/Julia.svg +1 -0
  110. package/dist/language-icons/Jupyter Notebook.svg +1 -0
  111. package/dist/language-icons/Kotlin.svg +1 -0
  112. package/dist/language-icons/Kusto.svg +1 -0
  113. package/dist/language-icons/LICENSE +395 -0
  114. package/dist/language-icons/LOLCODE.svg +1 -0
  115. package/dist/language-icons/LSL.svg +1 -0
  116. package/dist/language-icons/Less.svg +1 -0
  117. package/dist/language-icons/Lex.svg +1 -0
  118. package/dist/language-icons/Liquid.svg +1 -0
  119. package/dist/language-icons/LiveScript.svg +1 -0
  120. package/dist/language-icons/Lua.svg +1 -0
  121. package/dist/language-icons/MATLAB.svg +1 -0
  122. package/dist/language-icons/MAXScript.svg +1 -0
  123. package/dist/language-icons/Makefile.svg +1 -0
  124. package/dist/language-icons/Markdown.svg +1 -0
  125. package/dist/language-icons/Marko.svg +1 -0
  126. package/dist/language-icons/Mathematica.svg +1 -0
  127. package/dist/language-icons/Maven POM.svg +1 -0
  128. package/dist/language-icons/Meson.svg +1 -0
  129. package/dist/language-icons/Microsoft Visual Studio Solution.svg +1 -0
  130. package/dist/language-icons/Mustache.svg +1 -0
  131. package/dist/language-icons/NPM Config.svg +1 -0
  132. package/dist/language-icons/NSIS.svg +1 -0
  133. package/dist/language-icons/Nearley.svg +1 -0
  134. package/dist/language-icons/NetLinx+ERB.svg +1 -0
  135. package/dist/language-icons/Nginx.svg +1 -0
  136. package/dist/language-icons/Nim.svg +1 -0
  137. package/dist/language-icons/Ninja.svg +1 -0
  138. package/dist/language-icons/Nix.svg +1 -0
  139. package/dist/language-icons/NumPy.svg +1 -0
  140. package/dist/language-icons/Nunjucks.svg +1 -0
  141. package/dist/language-icons/OCaml.svg +1 -0
  142. package/dist/language-icons/Objective-C++.svg +1 -0
  143. package/dist/language-icons/Objective-C.svg +1 -0
  144. package/dist/language-icons/OpenCL.svg +1 -0
  145. package/dist/language-icons/OpenSCAD.svg +1 -0
  146. package/dist/language-icons/Org.svg +1 -0
  147. package/dist/language-icons/PHP.svg +1 -0
  148. package/dist/language-icons/PLSQL.svg +1 -0
  149. package/dist/language-icons/Pascal.svg +52 -0
  150. package/dist/language-icons/Perl.svg +1 -0
  151. package/dist/language-icons/PlantUML.svg +1 -0
  152. package/dist/language-icons/Pony.svg +1 -0
  153. package/dist/language-icons/PostCSS.svg +1 -0
  154. package/dist/language-icons/PostScript.svg +1 -0
  155. package/dist/language-icons/PowerShell.svg +1 -0
  156. package/dist/language-icons/Prisma.svg +1 -0
  157. package/dist/language-icons/Processing.svg +1 -0
  158. package/dist/language-icons/Procfile.svg +1 -0
  159. package/dist/language-icons/Prolog.svg +1 -0
  160. package/dist/language-icons/Protocol Buffer.svg +1 -0
  161. package/dist/language-icons/Pug.svg +1 -0
  162. package/dist/language-icons/Puppet.svg +1 -0
  163. package/dist/language-icons/PureScript.svg +1 -0
  164. package/dist/language-icons/Python.svg +1 -0
  165. package/dist/language-icons/Q#.svg +1 -0
  166. package/dist/language-icons/QML.svg +1 -0
  167. package/dist/language-icons/QMake.svg +1 -0
  168. package/dist/language-icons/R.svg +1 -0
  169. package/dist/language-icons/RAML.svg +1 -0
  170. package/dist/language-icons/README.md +8 -0
  171. package/dist/language-icons/REXX.svg +1 -0
  172. package/dist/language-icons/RMarkdown.svg +1 -0
  173. package/dist/language-icons/Racket.svg +1 -0
  174. package/dist/language-icons/Raku.svg +1 -0
  175. package/dist/language-icons/ReScript.svg +1 -0
  176. package/dist/language-icons/Reason.svg +1 -0
  177. package/dist/language-icons/Red.svg +1 -0
  178. package/dist/language-icons/Riot.svg +1 -0
  179. package/dist/language-icons/RobotFramework.svg +1 -0
  180. package/dist/language-icons/Ruby.svg +1 -0
  181. package/dist/language-icons/Rust.svg +1 -0
  182. package/dist/language-icons/SAS.svg +1 -0
  183. package/dist/language-icons/SCSS.svg +1 -0
  184. package/dist/language-icons/SPARQL.svg +1 -0
  185. package/dist/language-icons/SQF.svg +1 -0
  186. package/dist/language-icons/SQL.svg +1 -0
  187. package/dist/language-icons/SVG.svg +1 -0
  188. package/dist/language-icons/SWIG.svg +1 -0
  189. package/dist/language-icons/SaltStack.svg +1 -0
  190. package/dist/language-icons/Sass.svg +1 -0
  191. package/dist/language-icons/Scala.svg +1 -0
  192. package/dist/language-icons/Scilab.svg +1 -0
  193. package/dist/language-icons/ShaderLab.svg +1 -0
  194. package/dist/language-icons/Shell.svg +1 -0
  195. package/dist/language-icons/Slice.svg +1 -0
  196. package/dist/language-icons/Slim.svg +1 -0
  197. package/dist/language-icons/Smarty.svg +1 -0
  198. package/dist/language-icons/Solidity.svg +1 -0
  199. package/dist/language-icons/Squirrel.svg +1 -0
  200. package/dist/language-icons/Stan.svg +1 -0
  201. package/dist/language-icons/Stata.svg +1 -0
  202. package/dist/language-icons/Stylus.svg +1 -0
  203. package/dist/language-icons/SugarSS.svg +1 -0
  204. package/dist/language-icons/Svelte.svg +1 -0
  205. package/dist/language-icons/Swift.svg +1 -0
  206. package/dist/language-icons/SystemVerilog.svg +1 -0
  207. package/dist/language-icons/TOML.svg +1 -0
  208. package/dist/language-icons/Tcl.svg +1 -0
  209. package/dist/language-icons/TeX.svg +1 -0
  210. package/dist/language-icons/Text.svg +1 -0
  211. package/dist/language-icons/Textile.svg +1 -0
  212. package/dist/language-icons/Twig.svg +1 -0
  213. package/dist/language-icons/TypeScript.svg +1 -0
  214. package/dist/language-icons/V.svg +1 -0
  215. package/dist/language-icons/VBA.svg +1 -0
  216. package/dist/language-icons/VBScript.svg +1 -0
  217. package/dist/language-icons/VHDL.svg +1 -0
  218. package/dist/language-icons/Vala.svg +1 -0
  219. package/dist/language-icons/Velocity Template Language.svg +1 -0
  220. package/dist/language-icons/Verilog.svg +1 -0
  221. package/dist/language-icons/Vim script.svg +1 -0
  222. package/dist/language-icons/Volt.svg +1 -0
  223. package/dist/language-icons/Vue.svg +1 -0
  224. package/dist/language-icons/WebAssembly.svg +1 -0
  225. package/dist/language-icons/Wikitext.svg +1 -0
  226. package/dist/language-icons/Windows Registry Entries.svg +1 -0
  227. package/dist/language-icons/XML.svg +1 -0
  228. package/dist/language-icons/XQuery.svg +1 -0
  229. package/dist/language-icons/XSLT.svg +1 -0
  230. package/dist/language-icons/YAML.svg +1 -0
  231. package/dist/language-icons/YANG.svg +1 -0
  232. package/dist/language-icons/Yacc.svg +1 -0
  233. package/dist/language-icons/Zig.svg +1 -0
  234. package/dist/language-icons/kvlang.svg +1 -0
  235. package/dist/language-icons/q.svg +1 -0
  236. package/dist/language-icons/reStructuredText.svg +1 -0
  237. package/dist/language-icons/robots.txt.svg +1 -0
  238. package/dist/language-icons/url.svg +1 -0
  239. package/dist/levenshtein-distance.js +1 -1
  240. package/dist/levenshtein-distance.js.map +1 -1
  241. package/dist/load-script.js +1 -1
  242. package/dist/load-script.js.map +1 -1
  243. package/dist/ranking-sorter.js +1 -1
  244. package/dist/ranking-sorter.js.map +1 -1
  245. package/dist/sleep.js +1 -1
  246. package/dist/sleep.js.map +1 -1
  247. package/package.json +32 -24
  248. package/src/css/crowdin-rustdoc.scss +30 -0
  249. package/src/js/crowdin-rustdoc-css.js +1 -0
  250. package/src/js/crowdin.js +207 -21
  251. package/src/language-icons/AL.svg +1 -0
  252. package/src/language-icons/ANTLR.svg +1 -0
  253. package/src/language-icons/API Blueprint.svg +1 -0
  254. package/src/language-icons/APL.svg +1 -0
  255. package/src/language-icons/ASP.NET.svg +1 -0
  256. package/src/language-icons/ATS.svg +1 -0
  257. package/src/language-icons/ActionScript.svg +1 -0
  258. package/src/language-icons/Ada.svg +1 -0
  259. package/src/language-icons/ApacheConf.svg +1 -0
  260. package/src/language-icons/Apex.svg +1 -0
  261. package/src/language-icons/AppleScript.svg +1 -0
  262. package/src/language-icons/Assembly.svg +1 -0
  263. package/src/language-icons/Astro.svg +1 -0
  264. package/src/language-icons/AutoHotkey.svg +1 -0
  265. package/src/language-icons/AutoIt.svg +1 -0
  266. package/src/language-icons/Avro IDL.svg +1 -0
  267. package/src/language-icons/Awk.svg +1 -0
  268. package/src/language-icons/Ballerina.svg +1 -0
  269. package/src/language-icons/Batchfile.svg +1 -0
  270. package/src/language-icons/Befunge.svg +1 -0
  271. package/src/language-icons/Bicep.svg +1 -0
  272. package/src/language-icons/Blade.svg +1 -0
  273. package/src/language-icons/BlitzBasic.svg +1 -0
  274. package/src/language-icons/Browserslist.svg +1 -0
  275. package/src/language-icons/C#.svg +1 -0
  276. package/src/language-icons/C++.svg +1 -0
  277. package/src/language-icons/C.svg +1 -0
  278. package/src/language-icons/CMake.svg +1 -0
  279. package/src/language-icons/COBOL.svg +1 -0
  280. package/src/language-icons/CSS.svg +1 -0
  281. package/src/language-icons/Cabal Config.svg +1 -0
  282. package/src/language-icons/Carbon.svg +63 -0
  283. package/src/language-icons/Ceylon.svg +1 -0
  284. package/src/language-icons/Clojure.svg +1 -0
  285. package/src/language-icons/Cloud Firestore Security Rules.svg +1 -0
  286. package/src/language-icons/CodeQL.svg +1 -0
  287. package/src/language-icons/CoffeeScript.svg +1 -0
  288. package/src/language-icons/ColdFusion CFC.svg +1 -0
  289. package/src/language-icons/ColdFusion.svg +1 -0
  290. package/src/language-icons/Crystal.svg +1 -0
  291. package/src/language-icons/Cuda.svg +1 -0
  292. package/src/language-icons/Cython.svg +1 -0
  293. package/src/language-icons/D.svg +1 -0
  294. package/src/language-icons/Darcs Patch.svg +1 -0
  295. package/src/language-icons/Dart.svg +1 -0
  296. package/src/language-icons/Diff.svg +1 -0
  297. package/src/language-icons/Dockerfile.svg +1 -0
  298. package/src/language-icons/Dylan.svg +1 -0
  299. package/src/language-icons/EJS.svg +1 -0
  300. package/src/language-icons/EditorConfig.svg +1 -0
  301. package/src/language-icons/Elixir.svg +1 -0
  302. package/src/language-icons/Elm.svg +1 -0
  303. package/src/language-icons/Emacs Lisp.svg +1 -0
  304. package/src/language-icons/EmberScript.svg +1 -0
  305. package/src/language-icons/Erlang.svg +1 -0
  306. package/src/language-icons/F#.svg +1 -0
  307. package/src/language-icons/Fortran.svg +1 -0
  308. package/src/language-icons/FreeMarker.svg +1 -0
  309. package/src/language-icons/G-code.svg +1 -0
  310. package/src/language-icons/GLSL.svg +1 -0
  311. package/src/language-icons/Game Maker Language.svg +1 -0
  312. package/src/language-icons/Gherkin.svg +1 -0
  313. package/src/language-icons/Git Attributes.svg +1 -0
  314. package/src/language-icons/Git Config.svg +1 -0
  315. package/src/language-icons/Glyph.svg +1 -0
  316. package/src/language-icons/Gnuplot.svg +1 -0
  317. package/src/language-icons/Go Checksums.svg +1 -0
  318. package/src/language-icons/Go Module.svg +1 -0
  319. package/src/language-icons/Go.svg +1 -0
  320. package/src/language-icons/Gradle.svg +1 -0
  321. package/src/language-icons/GraphQL.svg +1 -0
  322. package/src/language-icons/Graphviz (DOT).svg +1 -0
  323. package/src/language-icons/Groovy.svg +1 -0
  324. package/src/language-icons/HLSL.svg +1 -0
  325. package/src/language-icons/HTML+EEX.svg +1 -0
  326. package/src/language-icons/HTML+ERB.svg +1 -0
  327. package/src/language-icons/HTML+Razor.svg +1 -0
  328. package/src/language-icons/HTML.svg +1 -0
  329. package/src/language-icons/HTTP.svg +1 -0
  330. package/src/language-icons/Haml.svg +1 -0
  331. package/src/language-icons/Handlebars.svg +1 -0
  332. package/src/language-icons/Harbour.svg +1 -0
  333. package/src/language-icons/Haskell.svg +1 -0
  334. package/src/language-icons/Haxe.svg +1 -0
  335. package/src/language-icons/Hy.svg +1 -0
  336. package/src/language-icons/INI.svg +1 -0
  337. package/src/language-icons/Idris.svg +1 -0
  338. package/src/language-icons/Inno Setup.svg +1 -0
  339. package/src/language-icons/Io.svg +1 -0
  340. package/src/language-icons/JSON.svg +1 -0
  341. package/src/language-icons/JSON5.svg +1 -0
  342. package/src/language-icons/JSONLD.svg +1 -0
  343. package/src/language-icons/Janet.svg +1 -0
  344. package/src/language-icons/Jasmin.svg +1 -0
  345. package/src/language-icons/Java.svg +1 -0
  346. package/src/language-icons/JavaScript+ERB.svg +1 -0
  347. package/src/language-icons/JavaScript.svg +1 -0
  348. package/src/language-icons/Jest Snapshot.svg +1 -0
  349. package/src/language-icons/Jinja.svg +1 -0
  350. package/src/language-icons/Jsonnet.svg +1 -0
  351. package/src/language-icons/Julia.svg +1 -0
  352. package/src/language-icons/Jupyter Notebook.svg +1 -0
  353. package/src/language-icons/Kotlin.svg +1 -0
  354. package/src/language-icons/Kusto.svg +1 -0
  355. package/src/language-icons/LICENSE +395 -0
  356. package/src/language-icons/LOLCODE.svg +1 -0
  357. package/src/language-icons/LSL.svg +1 -0
  358. package/src/language-icons/Less.svg +1 -0
  359. package/src/language-icons/Lex.svg +1 -0
  360. package/src/language-icons/Liquid.svg +1 -0
  361. package/src/language-icons/LiveScript.svg +1 -0
  362. package/src/language-icons/Lua.svg +1 -0
  363. package/src/language-icons/MATLAB.svg +1 -0
  364. package/src/language-icons/MAXScript.svg +1 -0
  365. package/src/language-icons/Makefile.svg +1 -0
  366. package/src/language-icons/Markdown.svg +1 -0
  367. package/src/language-icons/Marko.svg +1 -0
  368. package/src/language-icons/Mathematica.svg +1 -0
  369. package/src/language-icons/Maven POM.svg +1 -0
  370. package/src/language-icons/Meson.svg +1 -0
  371. package/src/language-icons/Microsoft Visual Studio Solution.svg +1 -0
  372. package/src/language-icons/Mustache.svg +1 -0
  373. package/src/language-icons/NPM Config.svg +1 -0
  374. package/src/language-icons/NSIS.svg +1 -0
  375. package/src/language-icons/Nearley.svg +1 -0
  376. package/src/language-icons/NetLinx+ERB.svg +1 -0
  377. package/src/language-icons/Nginx.svg +1 -0
  378. package/src/language-icons/Nim.svg +1 -0
  379. package/src/language-icons/Ninja.svg +1 -0
  380. package/src/language-icons/Nix.svg +1 -0
  381. package/src/language-icons/NumPy.svg +1 -0
  382. package/src/language-icons/Nunjucks.svg +1 -0
  383. package/src/language-icons/OCaml.svg +1 -0
  384. package/src/language-icons/Objective-C++.svg +1 -0
  385. package/src/language-icons/Objective-C.svg +1 -0
  386. package/src/language-icons/OpenCL.svg +1 -0
  387. package/src/language-icons/OpenSCAD.svg +1 -0
  388. package/src/language-icons/Org.svg +1 -0
  389. package/src/language-icons/PHP.svg +1 -0
  390. package/src/language-icons/PLSQL.svg +1 -0
  391. package/src/language-icons/Pascal.svg +52 -0
  392. package/src/language-icons/Perl.svg +1 -0
  393. package/src/language-icons/PlantUML.svg +1 -0
  394. package/src/language-icons/Pony.svg +1 -0
  395. package/src/language-icons/PostCSS.svg +1 -0
  396. package/src/language-icons/PostScript.svg +1 -0
  397. package/src/language-icons/PowerShell.svg +1 -0
  398. package/src/language-icons/Prisma.svg +1 -0
  399. package/src/language-icons/Processing.svg +1 -0
  400. package/src/language-icons/Procfile.svg +1 -0
  401. package/src/language-icons/Prolog.svg +1 -0
  402. package/src/language-icons/Protocol Buffer.svg +1 -0
  403. package/src/language-icons/Pug.svg +1 -0
  404. package/src/language-icons/Puppet.svg +1 -0
  405. package/src/language-icons/PureScript.svg +1 -0
  406. package/src/language-icons/Python.svg +1 -0
  407. package/src/language-icons/Q#.svg +1 -0
  408. package/src/language-icons/QML.svg +1 -0
  409. package/src/language-icons/QMake.svg +1 -0
  410. package/src/language-icons/R.svg +1 -0
  411. package/src/language-icons/RAML.svg +1 -0
  412. package/src/language-icons/README.md +8 -0
  413. package/src/language-icons/REXX.svg +1 -0
  414. package/src/language-icons/RMarkdown.svg +1 -0
  415. package/src/language-icons/Racket.svg +1 -0
  416. package/src/language-icons/Raku.svg +1 -0
  417. package/src/language-icons/ReScript.svg +1 -0
  418. package/src/language-icons/Reason.svg +1 -0
  419. package/src/language-icons/Red.svg +1 -0
  420. package/src/language-icons/Riot.svg +1 -0
  421. package/src/language-icons/RobotFramework.svg +1 -0
  422. package/src/language-icons/Ruby.svg +1 -0
  423. package/src/language-icons/Rust.svg +1 -0
  424. package/src/language-icons/SAS.svg +1 -0
  425. package/src/language-icons/SCSS.svg +1 -0
  426. package/src/language-icons/SPARQL.svg +1 -0
  427. package/src/language-icons/SQF.svg +1 -0
  428. package/src/language-icons/SQL.svg +1 -0
  429. package/src/language-icons/SVG.svg +1 -0
  430. package/src/language-icons/SWIG.svg +1 -0
  431. package/src/language-icons/SaltStack.svg +1 -0
  432. package/src/language-icons/Sass.svg +1 -0
  433. package/src/language-icons/Scala.svg +1 -0
  434. package/src/language-icons/Scilab.svg +1 -0
  435. package/src/language-icons/ShaderLab.svg +1 -0
  436. package/src/language-icons/Shell.svg +1 -0
  437. package/src/language-icons/Slice.svg +1 -0
  438. package/src/language-icons/Slim.svg +1 -0
  439. package/src/language-icons/Smarty.svg +1 -0
  440. package/src/language-icons/Solidity.svg +1 -0
  441. package/src/language-icons/Squirrel.svg +1 -0
  442. package/src/language-icons/Stan.svg +1 -0
  443. package/src/language-icons/Stata.svg +1 -0
  444. package/src/language-icons/Stylus.svg +1 -0
  445. package/src/language-icons/SugarSS.svg +1 -0
  446. package/src/language-icons/Svelte.svg +1 -0
  447. package/src/language-icons/Swift.svg +1 -0
  448. package/src/language-icons/SystemVerilog.svg +1 -0
  449. package/src/language-icons/TOML.svg +1 -0
  450. package/src/language-icons/Tcl.svg +1 -0
  451. package/src/language-icons/TeX.svg +1 -0
  452. package/src/language-icons/Text.svg +1 -0
  453. package/src/language-icons/Textile.svg +1 -0
  454. package/src/language-icons/Twig.svg +1 -0
  455. package/src/language-icons/TypeScript.svg +1 -0
  456. package/src/language-icons/V.svg +1 -0
  457. package/src/language-icons/VBA.svg +1 -0
  458. package/src/language-icons/VBScript.svg +1 -0
  459. package/src/language-icons/VHDL.svg +1 -0
  460. package/src/language-icons/Vala.svg +1 -0
  461. package/src/language-icons/Velocity Template Language.svg +1 -0
  462. package/src/language-icons/Verilog.svg +1 -0
  463. package/src/language-icons/Vim script.svg +1 -0
  464. package/src/language-icons/Volt.svg +1 -0
  465. package/src/language-icons/Vue.svg +1 -0
  466. package/src/language-icons/WebAssembly.svg +1 -0
  467. package/src/language-icons/Wikitext.svg +1 -0
  468. package/src/language-icons/Windows Registry Entries.svg +1 -0
  469. package/src/language-icons/XML.svg +1 -0
  470. package/src/language-icons/XQuery.svg +1 -0
  471. package/src/language-icons/XSLT.svg +1 -0
  472. package/src/language-icons/YAML.svg +1 -0
  473. package/src/language-icons/YANG.svg +1 -0
  474. package/src/language-icons/Yacc.svg +1 -0
  475. package/src/language-icons/Zig.svg +1 -0
  476. package/src/language-icons/kvlang.svg +1 -0
  477. package/src/language-icons/q.svg +1 -0
  478. package/src/language-icons/reStructuredText.svg +1 -0
  479. package/src/language-icons/robots.txt.svg +1 -0
  480. package/src/language-icons/url.svg +1 -0
  481. package/tests/crowdin.test.js +226 -2
  482. package/tests/global-exposure.test.js +31 -0
  483. package/tests/load-script.test.js +22 -0
  484. package/tests/sleep.test.js +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"levenshtein-distance.js","mappings":"mBAMA,SAASA,EAAoBC,EAAGC,GAC5B,GAAiB,IAAbD,EAAEE,OAAc,OAAOD,EAAEC,OAC7B,GAAiB,IAAbD,EAAEC,OAAc,OAAOF,EAAEE,OAE7B,IAGIC,EAMAC,EATAC,EAAS,GAIb,IAAKF,EAAI,EAAGA,GAAKF,EAAEC,OAAQC,IACvBE,EAAOF,GAAK,CAACA,GAKjB,IAAKC,EAAI,EAAGA,GAAKJ,EAAEE,OAAQE,IACvBC,EAAO,GAAGD,GAAKA,EAInB,IAAKD,EAAI,EAAGA,GAAKF,EAAEC,OAAQC,IACvB,IAAKC,EAAI,EAAGA,GAAKJ,EAAEE,OAAQE,IACnBH,EAAEK,OAAOH,EAAI,KAAOH,EAAEM,OAAOF,EAAI,GACjCC,EAAOF,GAAGC,GAAKC,EAAOF,EAAI,GAAGC,EAAI,GAEjCC,EAAOF,GAAGC,GAAKG,KAAKC,IAAIH,EAAOF,EAAI,GAAGC,EAAI,GAAK,EAC3CG,KAAKC,IAAIH,EAAOF,GAAGC,EAAI,GAAK,EACxBC,EAAOF,EAAI,GAAGC,GAAK,IAMvC,OAA2E,KAAnE,EAAKC,EAAOJ,EAAEC,QAAQF,EAAEE,QAAUK,KAAKE,IAAIT,EAAEE,OAAQD,EAAEC,QACnE,MAG0BQ,IAAtBC,WAAWC,SACXD,WAAWZ,oBAAsBA,GAGrCc,EAAOC,QAAUf,C,GC7CbgB,EAA2B,CAAC,GAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBP,IAAjBQ,EACH,OAAOA,EAAaJ,QAGrB,IAAID,EAASE,EAAyBE,GAAY,CAGjDH,QAAS,CAAC,GAOX,OAHAK,EAAoBF,GAAUJ,EAAQA,EAAOC,QAASE,GAG/CH,EAAOC,OACf,CCnB0BE,CAAoB,G","sources":["webpack://@lizardbyte/shared-web/./src/js/levenshtein-distance.js","webpack://@lizardbyte/shared-web/webpack/bootstrap","webpack://@lizardbyte/shared-web/webpack/startup"],"sourcesContent":["/**\n * Calculate the levenshtein distance between two strings.\n * @param {string} a - The first string to compare.\n * @param {string} b - The second string to compare.\n * @returns {number|*} - The percentage of the levenshtein distance.\n */\nfunction levenshteinDistance(a, b) {\n if (a.length === 0) return b.length;\n if (b.length === 0) return a.length;\n\n let matrix = [];\n\n // increment along the first column of each row\n let i;\n for (i = 0; i <= b.length; i++) {\n matrix[i] = [i];\n }\n\n // increment each column in the first row\n let j;\n for (j = 0; j <= a.length; j++) {\n matrix[0][j] = j;\n }\n\n // Fill in the rest of the matrix\n for (i = 1; i <= b.length; i++) {\n for (j = 1; j <= a.length; j++) {\n if (b.charAt(i - 1) === a.charAt(j - 1)) {\n matrix[i][j] = matrix[i - 1][j - 1];\n } else {\n matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, // substitution\n Math.min(matrix[i][j - 1] + 1, // insertion\n matrix[i - 1][j] + 1)); // deletion\n }\n }\n }\n\n // return the percentage of the levenshtein distance\n return (1 - (matrix[b.length][a.length] / Math.max(a.length, b.length))) * 100\n}\n\n// Expose to the global scope\nif (globalThis.window !== undefined) {\n globalThis.levenshteinDistance = levenshteinDistance;\n}\n\nmodule.exports = levenshteinDistance;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(83);\n"],"names":["levenshteinDistance","a","b","length","i","j","matrix","charAt","Math","min","max","undefined","globalThis","window","module","exports","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__"],"sourceRoot":""}
1
+ {"version":3,"file":"levenshtein-distance.js","mappings":"mBAMA,SAASA,EAAoBC,EAAGC,GAC5B,GAAiB,IAAbD,EAAEE,OAAc,OAAOD,EAAEC,OAC7B,GAAiB,IAAbD,EAAEC,OAAc,OAAOF,EAAEE,OAE7B,IAGIC,EAMAC,EATAC,EAAS,GAIb,IAAKF,EAAI,EAAGA,GAAKF,EAAEC,OAAQC,IACvBE,EAAOF,GAAK,CAACA,GAKjB,IAAKC,EAAI,EAAGA,GAAKJ,EAAEE,OAAQE,IACvBC,EAAO,GAAGD,GAAKA,EAInB,IAAKD,EAAI,EAAGA,GAAKF,EAAEC,OAAQC,IACvB,IAAKC,EAAI,EAAGA,GAAKJ,EAAEE,OAAQE,IACnBH,EAAEK,OAAOH,EAAI,KAAOH,EAAEM,OAAOF,EAAI,GACjCC,EAAOF,GAAGC,GAAKC,EAAOF,EAAI,GAAGC,EAAI,GAEjCC,EAAOF,GAAGC,GAAKG,KAAKC,IAAIH,EAAOF,EAAI,GAAGC,EAAI,GAAK,EAC3CG,KAAKC,IAAIH,EAAOF,GAAGC,EAAI,GAAK,EACxBC,EAAOF,EAAI,GAAGC,GAAK,IAMvC,OAA2E,KAAnE,EAAKC,EAAOJ,EAAEC,QAAQF,EAAEE,QAAUK,KAAKE,IAAIT,EAAEE,OAAQD,EAAEC,QACnE,MAG0BQ,IAAtBC,WAAWC,SACXD,WAAWZ,oBAAsBA,GAGrCc,EAAOC,QAAUf,IC7CjB,MAAAgB,EAAA,IAGA,SAAAC,EAAAC,GAEA,MAAAC,EAAAH,EAAAE,GACA,QAAAP,IAAAQ,EACA,OAAAA,EAAAJ,QAGA,MAAAD,EAAAE,EAAAE,GAAA,CAGAH,QAAA,IAOA,OAHAK,EAAAF,GAAAJ,EAAAA,EAAAC,QAAAE,GAGAH,EAAAC,OACA,CCnBAE,CAAA","sources":["webpack://@lizardbyte/shared-web/./src/js/levenshtein-distance.js","webpack://@lizardbyte/shared-web/webpack/bootstrap","webpack://@lizardbyte/shared-web/webpack/startup"],"sourcesContent":["/**\n * Calculate the levenshtein distance between two strings.\n * @param {string} a - The first string to compare.\n * @param {string} b - The second string to compare.\n * @returns {number|*} - The percentage of the levenshtein distance.\n */\nfunction levenshteinDistance(a, b) {\n if (a.length === 0) return b.length;\n if (b.length === 0) return a.length;\n\n let matrix = [];\n\n // increment along the first column of each row\n let i;\n for (i = 0; i <= b.length; i++) {\n matrix[i] = [i];\n }\n\n // increment each column in the first row\n let j;\n for (j = 0; j <= a.length; j++) {\n matrix[0][j] = j;\n }\n\n // Fill in the rest of the matrix\n for (i = 1; i <= b.length; i++) {\n for (j = 1; j <= a.length; j++) {\n if (b.charAt(i - 1) === a.charAt(j - 1)) {\n matrix[i][j] = matrix[i - 1][j - 1];\n } else {\n matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, // substitution\n Math.min(matrix[i][j - 1] + 1, // insertion\n matrix[i - 1][j] + 1)); // deletion\n }\n }\n }\n\n // return the percentage of the levenshtein distance\n return (1 - (matrix[b.length][a.length] / Math.max(a.length, b.length))) * 100\n}\n\n// Expose to the global scope\nif (globalThis.window !== undefined) {\n globalThis.levenshteinDistance = levenshteinDistance;\n}\n\nmodule.exports = levenshteinDistance;\n","// The module cache\nconst __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tconst cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tconst module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nlet __webpack_exports__ = __webpack_require__(83);\n"],"names":["levenshteinDistance","a","b","length","i","j","matrix","charAt","Math","min","max","undefined","globalThis","window","module","exports","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- (()=>{var o={836(o){function r(o,r){var n=document.createElement("script");n.src=o,n.async=!0,n.onload=function(){r&&r(null,n)},n.onerror=function(){r&&r(new Error("Failed to load script: ".concat(o)))},document.head.appendChild(n)}void 0!==globalThis.window&&(globalThis.loadScript=r),o.exports=r}},r={};!function n(t){var e=r[t];if(void 0!==e)return e.exports;var a=r[t]={exports:{}};return o[t](a,a.exports,n),a.exports}(836)})();
1
+ (()=>{var o={836(o){function r(o,r){const t=document.createElement("script");t.src=o,t.async=!0,t.onload=()=>{r&&r(null,t)},t.onerror=()=>{r&&r(new Error(`Failed to load script: ${o}`))},document.head.appendChild(t)}void 0!==globalThis.window&&(globalThis.loadScript=r),o.exports=r}};const r={};!function t(n){const e=r[n];if(void 0!==e)return e.exports;const s=r[n]={exports:{}};return o[n](s,s.exports,t),s.exports}(836)})();
2
2
  //# sourceMappingURL=load-script.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"load-script.js","mappings":"oBAKA,SAASA,EAAWC,EAAKC,GACrB,IAAMC,EAASC,SAASC,cAAc,UACtCF,EAAOG,IAAML,EACbE,EAAOI,OAAQ,EAEfJ,EAAOK,OAAS,WACRN,GAAUA,EAAS,KAAMC,EACjC,EAEAA,EAAOM,QAAU,WACTP,GAAUA,EAAS,IAAIQ,MAAM,0BAADC,OAA2BV,IAC/D,EAEAG,SAASQ,KAAKC,YAAYV,EAC9B,MAG0BW,IAAtBC,WAAWC,SACXD,WAAWf,WAAaA,GAG5BiB,EAAOC,QAAUlB,C,GCzBbmB,EAA2B,CAAC,GAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBP,IAAjBQ,EACH,OAAOA,EAAaJ,QAGrB,IAAID,EAASE,EAAyBE,GAAY,CAGjDH,QAAS,CAAC,GAOX,OAHAK,EAAoBF,GAAUJ,EAAQA,EAAOC,QAASE,GAG/CH,EAAOC,OACf,CCnB0BE,CAAoB,I","sources":["webpack://@lizardbyte/shared-web/./src/js/load-script.js","webpack://@lizardbyte/shared-web/webpack/bootstrap","webpack://@lizardbyte/shared-web/webpack/startup"],"sourcesContent":["/**\n * Load a script asynchronously, and add it to the DOM. Optionally, call a callback when the script has loaded.\n * @param {string} url The URL of the script to load.\n * @param {Function} callback An optional callback to call when the script has loaded.\n */\nfunction loadScript(url, callback) {\n const script = document.createElement('script');\n script.src = url;\n script.async = true;\n\n script.onload = () => {\n if (callback) callback(null, script);\n };\n\n script.onerror = () => {\n if (callback) callback(new Error(`Failed to load script: ${url}`));\n };\n\n document.head.appendChild(script);\n}\n\n// Expose to the global scope\nif (globalThis.window !== undefined) {\n globalThis.loadScript = loadScript;\n}\n\nmodule.exports = loadScript;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(836);\n"],"names":["loadScript","url","callback","script","document","createElement","src","async","onload","onerror","Error","concat","head","appendChild","undefined","globalThis","window","module","exports","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__"],"sourceRoot":""}
1
+ {"version":3,"file":"load-script.js","mappings":"oBAKA,SAASA,EAAWC,EAAKC,GACrB,MAAMC,EAASC,SAASC,cAAc,UACtCF,EAAOG,IAAML,EACbE,EAAOI,OAAQ,EAEfJ,EAAOK,OAAS,KACRN,GAAUA,EAAS,KAAMC,IAGjCA,EAAOM,QAAU,KACTP,GAAUA,EAAS,IAAIQ,MAAM,0BAA0BT,OAG/DG,SAASO,KAAKC,YAAYT,EAC9B,MAG0BU,IAAtBC,WAAWC,SACXD,WAAWd,WAAaA,GAG5BgB,EAAOC,QAAUjB,ICzBjB,MAAAkB,EAAA,IAGA,SAAAC,EAAAC,GAEA,MAAAC,EAAAH,EAAAE,GACA,QAAAP,IAAAQ,EACA,OAAAA,EAAAJ,QAGA,MAAAD,EAAAE,EAAAE,GAAA,CAGAH,QAAA,IAOA,OAHAK,EAAAF,GAAAJ,EAAAA,EAAAC,QAAAE,GAGAH,EAAAC,OACA,CCnBAE,CAAA","sources":["webpack://@lizardbyte/shared-web/./src/js/load-script.js","webpack://@lizardbyte/shared-web/webpack/bootstrap","webpack://@lizardbyte/shared-web/webpack/startup"],"sourcesContent":["/**\n * Load a script asynchronously, and add it to the DOM. Optionally, call a callback when the script has loaded.\n * @param {string} url The URL of the script to load.\n * @param {Function} callback An optional callback to call when the script has loaded.\n */\nfunction loadScript(url, callback) {\n const script = document.createElement('script');\n script.src = url;\n script.async = true;\n\n script.onload = () => {\n if (callback) callback(null, script);\n };\n\n script.onerror = () => {\n if (callback) callback(new Error(`Failed to load script: ${url}`));\n };\n\n document.head.appendChild(script);\n}\n\n// Expose to the global scope\nif (globalThis.window !== undefined) {\n globalThis.loadScript = loadScript;\n}\n\nmodule.exports = loadScript;\n","// The module cache\nconst __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tconst cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tconst module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nlet __webpack_exports__ = __webpack_require__(836);\n"],"names":["loadScript","url","callback","script","document","createElement","src","async","onload","onerror","Error","head","appendChild","undefined","globalThis","window","module","exports","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- (()=>{var r={76(r){function o(r,o){return function(n,t){return n[r]>t[r]?-1:n[r]<t[r]||n[o]>t[o]?1:n[o]<t[o]?-1:0}}void 0!==globalThis.window&&(globalThis.rankingSorter=o),r.exports=o}},o={};!function n(t){var e=o[t];if(void 0!==e)return e.exports;var i=o[t]={exports:{}};return r[t](i,i.exports,n),i.exports}(76)})();
1
+ (()=>{var o={76(o){function r(o,r){return function(n,t){return n[o]>t[o]?-1:n[o]<t[o]||n[r]>t[r]?1:n[r]<t[r]?-1:0}}void 0!==globalThis.window&&(globalThis.rankingSorter=r),o.exports=r}};const r={};!function n(t){const e=r[t];if(void 0!==e)return e.exports;const i=r[t]={exports:{}};return o[t](i,i.exports,n),i.exports}(76)})();
2
2
  //# sourceMappingURL=ranking-sorter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ranking-sorter.js","mappings":"mBAMA,SAASA,EAAcC,EAAUC,GAC7B,OAAO,SAASC,EAAGC,GACf,OAAID,EAAEF,GAAYG,EAAEH,IACR,EACDE,EAAEF,GAAYG,EAAEH,IAEhBE,EAAED,GAAaE,EAAEF,GADjB,EAGAC,EAAED,GAAaE,EAAEF,IAChB,EAED,CAEf,CACJ,MAG0BG,IAAtBC,WAAWC,SACXD,WAAWN,cAAgBA,GAG/BQ,EAAOC,QAAUT,C,GC1BbU,EAA2B,CAAC,GAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBP,IAAjBQ,EACH,OAAOA,EAAaJ,QAGrB,IAAID,EAASE,EAAyBE,GAAY,CAGjDH,QAAS,CAAC,GAOX,OAHAK,EAAoBF,GAAUJ,EAAQA,EAAOC,QAASE,GAG/CH,EAAOC,OACf,CCnB0BE,CAAoB,G","sources":["webpack://@lizardbyte/shared-web/./src/js/ranking-sorter.js","webpack://@lizardbyte/shared-web/webpack/bootstrap","webpack://@lizardbyte/shared-web/webpack/startup"],"sourcesContent":["/**\n * Sorts an array of objects by two keys in descending order.\n * @param {string} firstKey The primary key to sort by.\n * @param {string} secondKey The secondary key to sort by, in case the first key is equal.\n * @returns {Function} The sorting function that returns a number.\n */\nfunction rankingSorter(firstKey, secondKey) {\n return function(a, b) {\n if (a[firstKey] > b[firstKey]) {\n return -1;\n } else if (a[firstKey] < b[firstKey]) {\n return 1;\n } else if (a[secondKey] > b[secondKey]) {\n return 1;\n } else if (a[secondKey] < b[secondKey]) {\n return -1;\n } else {\n return 0;\n }\n }\n}\n\n// Expose to the global scope\nif (globalThis.window !== undefined) {\n globalThis.rankingSorter = rankingSorter;\n}\n\nmodule.exports = rankingSorter;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(76);\n"],"names":["rankingSorter","firstKey","secondKey","a","b","undefined","globalThis","window","module","exports","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__"],"sourceRoot":""}
1
+ {"version":3,"file":"ranking-sorter.js","mappings":"mBAMA,SAASA,EAAcC,EAAUC,GAC7B,OAAO,SAASC,EAAGC,GACf,OAAID,EAAEF,GAAYG,EAAEH,IACR,EACDE,EAAEF,GAAYG,EAAEH,IAEhBE,EAAED,GAAaE,EAAEF,GADjB,EAGAC,EAAED,GAAaE,EAAEF,IAChB,EAED,CAEf,CACJ,MAG0BG,IAAtBC,WAAWC,SACXD,WAAWN,cAAgBA,GAG/BQ,EAAOC,QAAUT,IC1BjB,MAAAU,EAAA,IAGA,SAAAC,EAAAC,GAEA,MAAAC,EAAAH,EAAAE,GACA,QAAAP,IAAAQ,EACA,OAAAA,EAAAJ,QAGA,MAAAD,EAAAE,EAAAE,GAAA,CAGAH,QAAA,IAOA,OAHAK,EAAAF,GAAAJ,EAAAA,EAAAC,QAAAE,GAGAH,EAAAC,OACA,CCnBAE,CAAA","sources":["webpack://@lizardbyte/shared-web/./src/js/ranking-sorter.js","webpack://@lizardbyte/shared-web/webpack/bootstrap","webpack://@lizardbyte/shared-web/webpack/startup"],"sourcesContent":["/**\n * Sorts an array of objects by two keys in descending order.\n * @param {string} firstKey The primary key to sort by.\n * @param {string} secondKey The secondary key to sort by, in case the first key is equal.\n * @returns {Function} The sorting function that returns a number.\n */\nfunction rankingSorter(firstKey, secondKey) {\n return function(a, b) {\n if (a[firstKey] > b[firstKey]) {\n return -1;\n } else if (a[firstKey] < b[firstKey]) {\n return 1;\n } else if (a[secondKey] > b[secondKey]) {\n return 1;\n } else if (a[secondKey] < b[secondKey]) {\n return -1;\n } else {\n return 0;\n }\n }\n}\n\n// Expose to the global scope\nif (globalThis.window !== undefined) {\n globalThis.rankingSorter = rankingSorter;\n}\n\nmodule.exports = rankingSorter;\n","// The module cache\nconst __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tconst cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tconst module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nlet __webpack_exports__ = __webpack_require__(76);\n"],"names":["rankingSorter","firstKey","secondKey","a","b","undefined","globalThis","window","module","exports","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__"],"sourceRoot":""}
package/dist/sleep.js CHANGED
@@ -1,2 +1,2 @@
1
- (()=>{var r={399(r){function e(r){return new Promise(function(e){return setTimeout(e,r)})}void 0!==globalThis.window&&(globalThis.sleep=e),r.exports=e}},e={};!function o(t){var n=e[t];if(void 0!==n)return n.exports;var i=e[t]={exports:{}};return r[t](i,i.exports,o),i.exports}(399)})();
1
+ (()=>{var o={399(o){function t(o){return new Promise(t=>setTimeout(t,o))}void 0!==globalThis.window&&(globalThis.sleep=t),o.exports=t}};const t={};!function e(r){const s=t[r];if(void 0!==s)return s.exports;const n=t[r]={exports:{}};return o[r](n,n.exports,e),n.exports}(399)})();
2
2
  //# sourceMappingURL=sleep.js.map
package/dist/sleep.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"sleep.js","mappings":"oBAKA,SAASA,EAAMC,GACX,OAAO,IAAIC,QAAQ,SAAAC,GAAO,OAAIC,WAAWD,EAASF,EAAG,EACzD,MAG0BI,IAAtBC,WAAWC,SACXD,WAAWN,MAAQA,GAGvBQ,EAAOC,QAAUT,C,GCbbU,EAA2B,CAAC,GAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBP,IAAjBQ,EACH,OAAOA,EAAaJ,QAGrB,IAAID,EAASE,EAAyBE,GAAY,CAGjDH,QAAS,CAAC,GAOX,OAHAK,EAAoBF,GAAUJ,EAAQA,EAAOC,QAASE,GAG/CH,EAAOC,OACf,CCnB0BE,CAAoB,I","sources":["webpack://@lizardbyte/shared-web/./src/js/sleep.js","webpack://@lizardbyte/shared-web/webpack/bootstrap","webpack://@lizardbyte/shared-web/webpack/startup"],"sourcesContent":["/**\n * Sleep for a given amount of time.\n * @param {number} ms The time to sleep in milliseconds.\n * @returns {Promise<unknown>} A promise that resolves after the given time.\n */\nfunction sleep(ms) {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n\n// Expose to the global scope\nif (globalThis.window !== undefined) {\n globalThis.sleep = sleep;\n}\n\nmodule.exports = sleep;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(399);\n"],"names":["sleep","ms","Promise","resolve","setTimeout","undefined","globalThis","window","module","exports","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__"],"sourceRoot":""}
1
+ {"version":3,"file":"sleep.js","mappings":"oBAKA,SAASA,EAAMC,GACX,OAAO,IAAIC,QAAQC,GAAWC,WAAWD,EAASF,GACtD,MAG0BI,IAAtBC,WAAWC,SACXD,WAAWN,MAAQA,GAGvBQ,EAAOC,QAAUT,ICbjB,MAAAU,EAAA,IAGA,SAAAC,EAAAC,GAEA,MAAAC,EAAAH,EAAAE,GACA,QAAAP,IAAAQ,EACA,OAAAA,EAAAJ,QAGA,MAAAD,EAAAE,EAAAE,GAAA,CAGAH,QAAA,IAOA,OAHAK,EAAAF,GAAAJ,EAAAA,EAAAC,QAAAE,GAGAH,EAAAC,OACA,CCnBAE,CAAA","sources":["webpack://@lizardbyte/shared-web/./src/js/sleep.js","webpack://@lizardbyte/shared-web/webpack/bootstrap","webpack://@lizardbyte/shared-web/webpack/startup"],"sourcesContent":["/**\n * Sleep for a given amount of time.\n * @param {number} ms The time to sleep in milliseconds.\n * @returns {Promise<unknown>} A promise that resolves after the given time.\n */\nfunction sleep(ms) {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n\n// Expose to the global scope\nif (globalThis.window !== undefined) {\n globalThis.sleep = sleep;\n}\n\nmodule.exports = sleep;\n","// The module cache\nconst __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tconst cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tconst module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nlet __webpack_exports__ = __webpack_require__(399);\n"],"names":["sleep","ms","Promise","resolve","setTimeout","undefined","globalThis","window","module","exports","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__"],"sourceRoot":""}
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "type": "git",
5
5
  "url": "git+https://github.com/LizardByte/shared-web.git"
6
6
  },
7
- "version": "2026.314.32913",
7
+ "version": "2026.811.210538",
8
8
  "description": "Shared web assets for LizardByte projects",
9
9
  "license": "AGPL-3.0-only",
10
10
  "funding": "https://app.lizardbyte.dev",
@@ -20,47 +20,55 @@
20
20
  "README.md"
21
21
  ],
22
22
  "dependencies": {
23
- "@fortawesome/fontawesome-free": "7.2.0",
24
23
  "bootstrap": "5.3.8"
25
24
  },
26
25
  "devDependencies": {
27
- "@babel/core": "7.29.0",
28
- "@babel/preset-env": "7.29.0",
29
- "@codecov/webpack-plugin": "1.9.1",
26
+ "@babel/core": "8.0.1",
27
+ "@babel/preset-env": "8.0.2",
28
+ "@codecov/webpack-plugin": "2.0.1",
30
29
  "@eslint/js": "10.0.1",
31
- "@jest/globals": "30.3.0",
30
+ "@jest/globals": "30.4.1",
32
31
  "babel-loader": "10.1.1",
33
- "clean-jsdoc-theme": "4.3.0",
32
+ "clean-jsdoc-theme": "5.1.1",
34
33
  "cross-env": "10.1.0",
35
34
  "css-loader": "7.1.4",
36
- "eslint": "10.0.3",
37
- "eslint-plugin-jest": "29.15.0",
38
- "globals": "17.4.0",
39
- "jest": "30.3.0",
40
- "jest-environment-jsdom": "30.3.0",
41
- "jest-junit": "16.0.0",
35
+ "eslint": "10.8.1",
36
+ "eslint-plugin-jest": "29.16.0",
37
+ "globals": "17.9.0",
38
+ "jest": "30.4.2",
39
+ "jest-environment-jsdom": "30.4.1",
40
+ "jest-junit": "17.0.0",
42
41
  "jsdoc": "4.0.5",
43
- "mini-css-extract-plugin": "2.10.1",
42
+ "mini-css-extract-plugin": "2.10.2",
44
43
  "node-fetch": "3.3.2",
45
- "npm-run-all": "4.1.5",
46
- "postcss": "8.5.8",
44
+ "npm-run-all2": "9.0.3",
45
+ "postcss": "8.5.26",
47
46
  "postcss-loader": "8.2.1",
48
- "postcss-preset-env": "11.2.0",
49
- "sass": "1.98.0",
50
- "sass-loader": "16.0.7",
51
- "webpack": "5.105.4",
52
- "webpack-cli": "7.0.0",
53
- "webpack-dev-server": "5.2.3"
47
+ "postcss-preset-env": "11.3.2",
48
+ "sass": "1.102.0",
49
+ "sass-loader": "17.0.0",
50
+ "webpack": "5.109.2",
51
+ "webpack-cli": "7.2.2",
52
+ "webpack-dev-server": "6.0.0"
54
53
  },
55
54
  "jest": {
56
55
  "collectCoverageFrom": [
57
- "src/**/*.{js,jsx}"
56
+ "src/**/*.{js,jsx}",
57
+ "!src/js/*-css.js"
58
58
  ],
59
+ "coverageThreshold": {
60
+ "global": {
61
+ "branches": 100,
62
+ "functions": 100,
63
+ "lines": 100,
64
+ "statements": 100
65
+ }
66
+ },
59
67
  "testEnvironment": "jsdom"
60
68
  },
61
69
  "scripts": {
62
70
  "build": "cross-env NODE_ENV=production webpack",
63
- "generate-docs": "jsdoc --configure jsdoc.json --verbose",
71
+ "generate-docs": "jsdoc --configure jsdoc.config.js --verbose",
64
72
  "start": "webpack serve",
65
73
  "test": "npm-run-all test:unit test:report test:lint",
66
74
  "test:unit": "jest --coverage",
@@ -0,0 +1,30 @@
1
+ #crowdin-language-picker.rustdoc-crowdin-picker {
2
+ margin: 1rem;
3
+ width: calc(100% - 2rem);
4
+ }
5
+
6
+ #crowdin-language-picker.rustdoc-crowdin-picker .cr-picker-button {
7
+ box-sizing: border-box;
8
+ width: 100%;
9
+ }
10
+
11
+ #crowdin-language-picker .cr-picker-button,
12
+ #crowdin-language-picker .cr-picker-submenu {
13
+ background-color: var(--sidebar-background-color, var(--main-background-color, #ffffff)) !important;
14
+ border: 1px solid var(--border-color, #dddddd) !important;
15
+ color: var(--main-color, #111111) !important;
16
+ }
17
+
18
+ #crowdin-language-picker .cr-picker-button:hover,
19
+ #crowdin-language-picker .cr-picker-submenu > a:hover {
20
+ background-color: var(--main-color, #111111) !important;
21
+ color: var(--main-background-color, #ffffff) !important;
22
+ }
23
+
24
+ #crowdin-language-picker .cr-picker-submenu > a {
25
+ color: var(--main-color, #111111) !important;
26
+ }
27
+
28
+ #crowdin-language-picker .cr-picker-submenu > a.cr-selected {
29
+ color: var(--link-color, #3873ad) !important;
30
+ }
@@ -0,0 +1 @@
1
+ import "../css/crowdin-rustdoc.scss";
package/src/js/crowdin.js CHANGED
@@ -8,7 +8,146 @@ const loadScript = require('./load-script');
8
8
  * Structure mirrors https://distributions.crowdin.net/<hash>/… exactly.
9
9
  * @type {string}
10
10
  */
11
- const CROWDIN_DIST_MIRROR = 'https://cdn.jsdelivr.net/gh/LizardByte/shared-web@crowdin-dist';
11
+ const CROWDIN_DIST_MIRROR = 'https://cdn.jsdelivr.net/gh/LizardByte/i18n@dist';
12
+ const CROWDIN_PLATFORM_STYLING_MAX_ATTEMPTS = 100;
13
+ const CROWDIN_PLATFORM_STYLING_RETRY_DELAY_MS = 50;
14
+ const CROWDIN_INLINE_ELEMENT_SELECTOR = [
15
+ 'a',
16
+ 'abbr',
17
+ 'b',
18
+ 'cite',
19
+ 'code',
20
+ 'del',
21
+ 'em',
22
+ 'i',
23
+ 'ins',
24
+ 'kbd',
25
+ 'mark',
26
+ 'q',
27
+ 's',
28
+ 'samp',
29
+ 'small',
30
+ 'span',
31
+ 'strong',
32
+ 'sub',
33
+ 'sup',
34
+ 'time',
35
+ 'u',
36
+ 'var',
37
+ ].join(',');
38
+
39
+ /**
40
+ * Records whitespace that separates text from inline elements before Crowdin translates the page.
41
+ * @returns {Array<{
42
+ * node: Text,
43
+ * leading: boolean,
44
+ * trailing: boolean,
45
+ * previousInline: Element|null,
46
+ * nextInline: Element|null,
47
+ * whitespaceOnly: boolean
48
+ * }>} Recorded text-node boundaries.
49
+ */
50
+ function _captureCrowdinWhitespaceBoundaries() {
51
+ const boundaries = [];
52
+ const walker = document.createTreeWalker(document.body, globalThis.NodeFilter.SHOW_TEXT);
53
+ let node = walker.nextNode();
54
+
55
+ while (node !== null) {
56
+ const previousIsInline = node.previousSibling instanceof globalThis.Element &&
57
+ node.previousSibling.matches(CROWDIN_INLINE_ELEMENT_SELECTOR);
58
+ const nextIsInline = node.nextSibling instanceof globalThis.Element &&
59
+ node.nextSibling.matches(CROWDIN_INLINE_ELEMENT_SELECTOR);
60
+ const leading = previousIsInline && /^\s/.test(node.data);
61
+ const trailing = nextIsInline && /\s$/.test(node.data);
62
+
63
+ if (leading || trailing) {
64
+ boundaries.push({
65
+ node,
66
+ leading,
67
+ trailing,
68
+ previousInline: previousIsInline ? node.previousSibling : null,
69
+ nextInline: nextIsInline ? node.nextSibling : null,
70
+ whitespaceOnly: /^\s*$/.test(node.data),
71
+ });
72
+ }
73
+
74
+ node = walker.nextNode();
75
+ }
76
+
77
+ return boundaries;
78
+ }
79
+
80
+ /**
81
+ * Finds the current text node for a boundary after Crowdin changes the DOM.
82
+ * @param {Object} boundary Recorded whitespace boundary.
83
+ * @returns {Text|null} Current or recreated text node.
84
+ */
85
+ function _resolveCrowdinWhitespaceNode(boundary) {
86
+ if (boundary.node.isConnected) return boundary.node;
87
+
88
+ const previousReplacement = boundary.previousInline?.nextSibling;
89
+ if (previousReplacement instanceof globalThis.Text && previousReplacement.isConnected) {
90
+ boundary.node = previousReplacement;
91
+ return boundary.node;
92
+ }
93
+ const nextReplacement = boundary.nextInline?.previousSibling;
94
+ if (nextReplacement instanceof globalThis.Text && nextReplacement.isConnected) {
95
+ boundary.node = nextReplacement;
96
+ return boundary.node;
97
+ }
98
+ if (!boundary.whitespaceOnly) return null;
99
+
100
+ const replacement = document.createTextNode('');
101
+ if (boundary.previousInline?.isConnected) {
102
+ boundary.previousInline.after(replacement);
103
+ } else if (boundary.nextInline?.isConnected) {
104
+ boundary.nextInline.before(replacement);
105
+ } else {
106
+ return null;
107
+ }
108
+
109
+ boundary.node = replacement;
110
+ return boundary.node;
111
+ }
112
+
113
+ /**
114
+ * Restores whitespace that Crowdin removed from translated text-node boundaries.
115
+ * @param {Array<Object>} boundaries Recorded text-node boundaries.
116
+ */
117
+ function _restoreCrowdinWhitespaceBoundaries(boundaries) {
118
+ boundaries.forEach((boundary) => {
119
+ const node = _resolveCrowdinWhitespaceNode(boundary);
120
+ if (node === null) return;
121
+
122
+ if (boundary.leading && !/^\s/.test(node.data)) {
123
+ node.data = ' ' + node.data;
124
+ }
125
+ if (boundary.trailing && !/\s$/.test(node.data)) {
126
+ node.data += ' ';
127
+ }
128
+ });
129
+ }
130
+
131
+ /**
132
+ * Creates the Website Translator callback and observes later translation mutations.
133
+ * @param {Array<Object>} boundaries Recorded text-node boundaries.
134
+ * @returns {Function} Website Translator callback.
135
+ */
136
+ function _createCrowdinTranslationCallback(boundaries) {
137
+ const translationObserver = new globalThis.MutationObserver(restoreAndObserve);
138
+
139
+ function restoreAndObserve() {
140
+ translationObserver.disconnect();
141
+ _restoreCrowdinWhitespaceBoundaries(boundaries);
142
+ translationObserver.observe(document.body, {
143
+ characterData: true,
144
+ childList: true,
145
+ subtree: true,
146
+ });
147
+ }
148
+
149
+ return restoreAndObserve;
150
+ }
12
151
 
13
152
  /**
14
153
  * Monkey-patches globalThis.fetch to redirect Crowdin distribution requests to
@@ -46,10 +185,69 @@ function _installCrowdinFetchInterceptor() {
46
185
  };
47
186
  }
48
187
 
188
+ /**
189
+ * Re-attempts platform styling while Crowdin inserts the language picker.
190
+ * @param {string} platform - UI platform ('sphinx' or 'rustdoc').
191
+ * @param {number} attempt - Current retry count.
192
+ */
193
+ function _retryCrowdinPlatformStyling(platform, attempt) {
194
+ if (attempt >= CROWDIN_PLATFORM_STYLING_MAX_ATTEMPTS) {
195
+ return;
196
+ }
197
+
198
+ globalThis.setTimeout(function() {
199
+ _applyCrowdinPlatformStyling(platform, attempt + 1);
200
+ }, CROWDIN_PLATFORM_STYLING_RETRY_DELAY_MS);
201
+ }
202
+
203
+ /**
204
+ * Applies platform-specific placement after the Crowdin picker exists.
205
+ * @param {string} platform - UI platform ('sphinx' or 'rustdoc').
206
+ * @param {number} attempt - Current retry count.
207
+ */
208
+ function _applyCrowdinPlatformStyling(platform, attempt = 0) {
209
+ const container = document.getElementById('crowdin-language-picker');
210
+
211
+ if (platform === 'sphinx') {
212
+ const button = document.getElementsByClassName('cr-picker-button')[0];
213
+ const sidebar = document.getElementsByClassName('sidebar-sticky')[0];
214
+
215
+ if (container === null || button === undefined || sidebar === undefined) {
216
+ _retryCrowdinPlatformStyling(platform, attempt);
217
+ return;
218
+ }
219
+
220
+ container.classList.remove('cr-position-bottom-left');
221
+ container.style.width = button.offsetWidth + 10 + 'px';
222
+ container.style.position = 'relative';
223
+ container.style.left = '10px';
224
+ container.style.bottom = '10px';
225
+
226
+ // move button to related pages
227
+ sidebar.appendChild(container);
228
+ return;
229
+ }
230
+
231
+ const sidebar = document.querySelector('.sidebar .sidebar-elems') || document.querySelector('.sidebar');
232
+
233
+ if (container === null || sidebar === null) {
234
+ _retryCrowdinPlatformStyling(platform, attempt);
235
+ return;
236
+ }
237
+
238
+ container.classList.remove('cr-position-bottom-left');
239
+ container.classList.add('rustdoc-crowdin-picker');
240
+ container.style.position = 'static';
241
+ container.style.left = 'auto';
242
+ container.style.bottom = 'auto';
243
+
244
+ sidebar.appendChild(container);
245
+ }
246
+
49
247
  /**
50
248
  * Initializes Crowdin translation widget based on project and UI platform.
51
249
  * @param {string} project - Project name ('LizardByte' or 'LizardByte-docs').
52
- * @param {string|null} platform - UI platform ('sphinx', or null).
250
+ * @param {string|null} platform - UI platform ('sphinx', 'rustdoc', or null).
53
251
  */
54
252
  function initCrowdIn(project = 'LizardByte', platform = null) {
55
253
  // Input validation
@@ -57,8 +255,8 @@ function initCrowdIn(project = 'LizardByte', platform = null) {
57
255
  console.error('Invalid project. Must be "LizardByte" or "LizardByte-docs"');
58
256
  return;
59
257
  }
60
- if (!['sphinx', null].includes(platform)) {
61
- console.error('Invalid UI. Must be "sphinx", or null');
258
+ if (!['sphinx', 'rustdoc', null].includes(platform)) {
259
+ console.error('Invalid UI. Must be "sphinx", "rustdoc", or null');
62
260
  return;
63
261
  }
64
262
 
@@ -110,8 +308,11 @@ function initCrowdIn(project = 'LizardByte', platform = null) {
110
308
  let currentBaseUrl = globalThis.location.origin;
111
309
 
112
310
  // Initialize Crowdin translator
311
+ const whitespaceBoundaries = _captureCrowdinWhitespaceBoundaries();
312
+
113
313
  globalThis.proxyTranslator.init({
114
314
  baseUrl: currentBaseUrl,
315
+ callback: _createCrowdinTranslationCallback(whitespaceBoundaries),
115
316
  distribution: projectSettings[project].distribution,
116
317
  defaultLanguage: "en",
117
318
  languageTitles: languageTitles,
@@ -127,27 +328,12 @@ function initCrowdIn(project = 'LizardByte', platform = null) {
127
328
  return;
128
329
  }
129
330
 
130
- const container = document.getElementById('crowdin-language-picker');
131
- const button = document.getElementsByClassName('cr-picker-button')[0];
132
-
133
- if (platform === 'sphinx') {
134
- container.classList.remove('cr-position-bottom-left')
135
- container.style.width = button.offsetWidth + 10 + 'px';
136
- container.style.position = 'relative';
137
- container.style.left = '10px';
138
- container.style.bottom = '10px';
139
-
140
- // get rst versions
141
- const sidebar = document.getElementsByClassName('sidebar-sticky')[0];
142
-
143
- // move button to related pages
144
- sidebar.appendChild(container);
145
- }
331
+ _applyCrowdinPlatformStyling(platform);
146
332
  });
147
333
  }
148
334
 
149
335
  // Expose to the global scope
150
- if (typeof globalThis !== 'undefined' && globalThis.window !== undefined) {
336
+ if (globalThis.window !== undefined) {
151
337
  globalThis.initCrowdIn = initCrowdIn;
152
338
  }
153
339
 
@@ -0,0 +1 @@
1
+ <svg width="32px" height="32px" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><title>file_type_al</title><path d="M11.616,7.986A1.559,1.559,0,0,0,10.16,7H10.1a1.558,1.558,0,0,0-1.456.986L2,25H5.806l1.015-2.834h6.621L14.457,25h3.8ZM7.944,18.956l2.188-6.111,2.188,6.116Z" style="fill:#2ea98e"/><path d="M23.829,21.671V7.129H20.3V22.747A2.346,2.346,0,0,0,22.57,25H30V21.672Z" style="fill:#2ea98e"/></svg>
@@ -0,0 +1 @@
1
+ <svg width="32px" height="32px" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><title>file_type_antlr</title><path d="M14.177,7.278a2.08,2.08,0,0,1,3.041-.8A3.571,3.571,0,0,1,18.2,8.022c1.356,3.122,2.9,6.165,4.119,9.345.645,1.5,1.429,2.938,1.994,4.468a1.455,1.455,0,0,1-2.258,1.376c-2.8-1.572-5.628-3.094-8.385-4.731,2.009.008,4.018-.008,6.025.013a19.707,19.707,0,0,0-1.288-2.918c-.781-1.858-1.6-3.7-2.358-5.565a9.783,9.783,0,0,0-1.032,2.125c-1.3,3.182-2.87,6.241-4.136,9.435-.281.59-.424,1.344-1.035,1.69a1.447,1.447,0,0,1-2.094-.738c-.241-.61.151-1.2.382-1.743.779-1.725,1.645-3.413,2.283-5.2C11.65,12.8,12.916,10.041,14.177,7.278Z" style="fill:#fefefe"/><path d="M13.817,2.2A13.923,13.923,0,0,1,29.526,12.549a13.733,13.733,0,0,1-2.082,11.519A14.074,14.074,0,0,1,7.738,27.293a13.852,13.852,0,0,1-5.615-9.483A14.152,14.152,0,0,1,3.451,9.85,13.961,13.961,0,0,1,13.817,2.2m.359,5.08c-1.261,2.762-2.526,5.525-3.762,8.3-.638,1.786-1.5,3.473-2.283,5.2-.231.542-.623,1.133-.382,1.743a1.447,1.447,0,0,0,2.094.738c.61-.347.753-1.1,1.035-1.69,1.266-3.194,2.833-6.253,4.136-9.435a9.783,9.783,0,0,1,1.032-2.125c.756,1.868,1.577,3.707,2.358,5.565a19.707,19.707,0,0,1,1.288,2.918c-2.007-.02-4.016-.005-6.025-.013,2.757,1.637,5.588,3.159,8.385,4.731a1.455,1.455,0,0,0,2.258-1.376c-.565-1.529-1.349-2.971-1.994-4.468-1.22-3.179-2.762-6.223-4.119-9.345a3.571,3.571,0,0,0-.982-1.544A2.08,2.08,0,0,0,14.177,7.278Z" style="fill:#e44a32"/></svg>
@@ -0,0 +1 @@
1
+ <svg width="32px" height="32px" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><title>file_type_apib</title><path d="M18.053,12.267l4.76,7.467.373.56,1.12-.653-.373-.56-4.76-7.467L18.8,10.96l-1.12.653.373.653Zm-5.227-.747-4.76,7.467-.373.56,1.12.653.373-.467,4.76-7.467.373-.56L13.2,10.96l-.373.56Z" style="fill:#a0b3c1"/><path d="M16,13.107A4.979,4.979,0,0,0,20.947,8.16,5.061,5.061,0,0,0,16,3.12a4.979,4.979,0,0,0-4.947,4.947A5.061,5.061,0,0,0,16,13.107ZM16,11.8a3.644,3.644,0,0,1-3.64-3.64,3.64,3.64,0,1,1,7.28,0A3.644,3.644,0,0,1,16,11.8Z" style="fill:#a0b3c1"/><path d="M25.053,28.88a4.947,4.947,0,1,0-4.947-4.947A4.979,4.979,0,0,0,25.053,28.88Zm0-1.307a3.644,3.644,0,0,1-3.64-3.64,3.64,3.64,0,1,1,7.28,0A3.644,3.644,0,0,1,25.053,27.573Z" style="fill:#a0b3c1"/><path d="M6.947,28.88a4.947,4.947,0,1,0,0-9.893,4.947,4.947,0,1,0,0,9.893Zm0-1.307a3.644,3.644,0,0,1-3.64-3.64,3.706,3.706,0,0,1,3.64-3.64,3.706,3.706,0,0,1,3.64,3.64A3.644,3.644,0,0,1,6.947,27.573Z" style="fill:#a0b3c1"/><circle cx="6.947" cy="23.933" r="1.68" style="fill:#5e9cff"/></svg>
@@ -0,0 +1 @@
1
+ <svg width="32px" height="32px" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><title>file_type_apl</title><path d="M30,28.275,16,2,2,28.275H14.162V30h3.676V28.275ZM17.838,24.826V13.161l6.215,11.665Zm-9.891,0,6.215-11.665V24.826Z" style="fill:#d2d2d2"/></svg>
@@ -0,0 +1 @@
1
+ <svg width="32px" height="32px" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><title>file_type_aspx</title><polygon points="22.75 2 6.35 2 6.35 30 29.65 30 29.65 9 22.75 2" style="fill:#c5c5c5"/><polygon points="27.35 27.7 8.75 27.7 8.75 4.3 20.45 4.3 20.45 11.3 27.45 11.3 27.45 27.7 27.35 27.7" style="fill:#f5f5f5"/><path d="M12.1,30.994A11.094,11.094,0,1,1,23.194,19.9,11.106,11.106,0,0,1,12.1,30.994Zm0-20.3A9.2,9.2,0,1,0,21.3,19.9,9.216,9.216,0,0,0,12.1,10.7Z" style="fill:#33a9dc"/><rect x="2.099" y="19.455" width="20.003" height="0.89" style="fill:#33a9dc;stroke:#33a9dc;stroke-miterlimit:10"/><path d="M12.325,15.763a31.93,31.93,0,0,1-8.484-1.11l.242-.807a31.374,31.374,0,0,0,15.992,0l.239.807A28.076,28.076,0,0,1,12.325,15.763Z" style="fill:#33a9dc;stroke:#33a9dc;stroke-miterlimit:10"/><path d="M4.1,25.724l-.239-.807a31.652,31.652,0,0,1,16.472,0l-.242.807A31.38,31.38,0,0,0,4.1,25.724Z" style="fill:#33a9dc;stroke:#33a9dc;stroke-miterlimit:10"/><path d="M8.536,29.055A25.438,25.438,0,0,1,8,10.608l.776.331a24.558,24.558,0,0,0,.533,17.783Z" style="fill:#33a9dc;stroke:#33a9dc;stroke-miterlimit:10"/><path d="M15.6,29.055l-.776-.333a24.559,24.559,0,0,0,.531-17.783l.776-.331A25.443,25.443,0,0,1,15.6,29.055Z" style="fill:#33a9dc;stroke:#33a9dc;stroke-miterlimit:10"/><rect x="11.655" y="9.898" width="0.889" height="20.371" style="fill:#33a9dc;stroke:#33a9dc;stroke-miterlimit:10"/></svg>
@@ -0,0 +1 @@
1
+ <svg width="32px" height="32px" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><title>file_type_ats</title><path d="M30,14.74v.49a.736.736,0,0,0,0,.49v.56a.736.736,0,0,0,0,.49v.56a15.66,15.66,0,0,1-.373,2.332,14.127,14.127,0,0,1-8.8,9.59,10.293,10.293,0,0,1-3.471.713A.141.141,0,0,0,17.26,30H16.7a.386.386,0,0,0-.35,0h-.7a.546.546,0,0,0-.42,0h-.56a14.528,14.528,0,0,1-2.366-.383,14.269,14.269,0,0,1-6.051-3.426A14.048,14.048,0,0,1,2.593,20.4a9.879,9.879,0,0,1-.558-2.9c0-.057.011-.117-.035-.165v-.56a.923.923,0,0,0,0-.56v-.42a.923.923,0,0,0,0-.56v-.56a12.974,12.974,0,0,1,.454-2.637A14.035,14.035,0,0,1,9.572,3.444a13.708,13.708,0,0,1,3.719-1.292c.456-.09.923-.065,1.379-.152h.56a1.521,1.521,0,0,0,.512.035h.645c.15-.016.307.036.453-.035h.42c.434.071.879.047,1.311.129a14.125,14.125,0,0,1,10.7,9.076,10.4,10.4,0,0,1,.7,3.37C29.966,14.632,29.955,14.692,30,14.74Z" style="fill:#fefe5f"/><path d="M10.2,17.448c-.133.05-.165.185-.23.286-1.316,2.049-2.634,4.1-3.937,6.155-.154.244-.263.245-.479.094-.42-.293-.848-.579-1.294-.83-.259-.145-.272-.251-.114-.5,1.939-3.007,3.863-6.023,5.8-9.029a.785.785,0,0,0,.1-.748,5.583,5.583,0,0,0-.482-1.12,1.121,1.121,0,0,0-1.4-.542,5.4,5.4,0,0,0-1.889,1.169c-.275.233-.54.481-.794.737-.133.135-.215.158-.358.007-.408-.433-.832-.85-1.253-1.27-.09-.09-.156-.154-.027-.278a10.267,10.267,0,0,1,3.391-2.42,3.388,3.388,0,0,1,4.336,1.582,8.088,8.088,0,0,1,.954,4.418,19.625,19.625,0,0,0,.179,4.67,4.31,4.31,0,0,0,.12.473,1.9,1.9,0,0,0,2.124,1.573q5.965,0,11.932-.007c.332,0,.406.1.391.405-.025.5-.023,1,0,1.5.013.273-.065.347-.342.346-2.3-.012-4.6-.007-6.894-.007H14.9A4.159,4.159,0,0,1,11.861,23a5.207,5.207,0,0,1-1.389-2.917,14.4,14.4,0,0,1-.225-2.435C10.247,17.583,10.278,17.507,10.2,17.448Z" style="fill:#fe0000"/><path d="M26.708,13.593c0-.276-.086-.322-.336-.32-1.482.012-2.963.006-4.445.006-.832,0-.822,0-.832-.825,0-.238.049-.313.3-.31,1.365.013,2.73,0,4.095.011.229,0,.323-.032.316-.294-.02-.746-.014-1.493,0-2.239,0-.2-.03-.278-.26-.278q-5.337.014-10.675,0c-.251,0-.276.094-.273.3.01.734.015,1.47,0,2.2-.006.242.052.311.3.308,1.2-.014,2.4-.006,3.605-.006.8,0,.789,0,.8.816.006.272-.078.321-.33.319-1.645-.012-3.29,0-4.935-.012-.269,0-.351.059-.349.342q.018,3.481,0,6.965c0,.259.06.328.324.327,2.065-.012,4.13-.007,6.195-.007s4.107,0,6.16.005c.241,0,.34-.028.338-.313Q26.688,17.093,26.708,13.593ZM19.043,18.1c-.548-.011-1.1,0-1.643,0s-1.1-.007-1.644,0c-.185,0-.266-.032-.26-.243.016-.512.015-1.026,0-1.538-.006-.207.068-.25.26-.248q1.643.012,3.287,0c.192,0,.265.043.259.249-.014.512-.015,1.026,0,1.538C19.31,18.074,19.228,18.107,19.043,18.1ZM24.9,16.339c-.017.5-.013,1,0,1.5,0,.185-.026.265-.24.263-1.107-.011-2.215-.008-3.322,0-.165,0-.251-.02-.245-.222.015-.524.013-1.049,0-1.573,0-.188.06-.237.24-.233.56.01,1.119,0,1.679,0,.536,0,1.072.009,1.608,0C24.831,16.069,24.912,16.112,24.9,16.339Z" style="fill:#0000fe"/></svg>
@@ -0,0 +1 @@
1
+ <svg width="32px" height="32px" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><title>file_type_actionscript</title><path d="M2,15.281c1.918,0,2.11-1.055,2.11-1.918a17.119,17.119,0,0,0-.192-2.205,18.723,18.723,0,0,1-.192-2.205c0-2.4,1.63-3.452,3.836-3.452h.575V6.938H7.658c-1.534,0-2.11.767-2.11,2.205a14.412,14.412,0,0,0,.192,1.918,14.306,14.306,0,0,1,.192,2.014c0,1.726-.671,2.493-1.918,2.877v.1c1.151.288,1.918,1.151,1.918,2.877a14.306,14.306,0,0,1-.192,2.014,13,13,0,0,0-.192,1.918c0,1.438.575,2.3,2.11,2.3h.479V26.6H7.562c-2.205,0-3.836-.959-3.836-3.644a18.723,18.723,0,0,1,.192-2.205,15.68,15.68,0,0,0,.192-2.11c0-.863-.288-1.918-2.11-1.918Z" style="fill:#c41718"/><path d="M9.479,18.062,8.233,21.8H6.6L10.63,9.911h1.822L16.479,21.8H14.945L13.7,18.062Zm3.932-1.151L12.26,13.459a9.364,9.364,0,0,1-.575-2.205h0c-.192.671-.384,1.438-.575,2.11L9.959,16.815h3.452Z" style="fill:#c41718"/><path d="M17.918,19.979a5.941,5.941,0,0,0,2.781.767c1.534,0,2.493-.863,2.493-2.014s-.671-1.726-2.205-2.4c-1.918-.671-3.164-1.726-3.164-3.356,0-1.822,1.534-3.26,3.836-3.26a5.135,5.135,0,0,1,2.589.575l-.384,1.247a5.519,5.519,0,0,0-2.3-.479c-1.63,0-2.205.959-2.205,1.822,0,1.151.767,1.63,2.4,2.3,2.014.767,3.068,1.726,3.068,3.452,0,1.822-1.342,3.452-4.123,3.452a5.807,5.807,0,0,1-3.068-.767Z" style="fill:#c41718"/><path d="M30,16.623c-1.918,0-2.11,1.151-2.11,1.918a15.68,15.68,0,0,0,.192,2.11,15.738,15.738,0,0,1,.192,2.205c0,2.685-1.63,3.644-3.836,3.644h-.575V25.062h.479c1.438,0,2.11-.863,2.11-2.3a13,13,0,0,0-.192-1.918,14.306,14.306,0,0,1-.192-2.014c0-1.726.767-2.589,1.918-2.877v-.1c-1.151-.288-1.918-1.151-1.918-2.877a14.306,14.306,0,0,1,.192-2.014,13,13,0,0,0,.192-1.918c0-1.438-.575-2.205-2.11-2.3h-.479V5.4h.575c2.205,0,3.836,1.055,3.836,3.452a17.119,17.119,0,0,1-.192,2.205,17.119,17.119,0,0,0-.192,2.205c0,.959.288,1.918,2.11,1.918Z" style="fill:#c41718"/></svg>
@@ -0,0 +1 @@
1
+ <svg width="32px" height="32px" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><title>file_type_ada</title><path d="M24.554,20.075c.209.27,1.356.961,1.37,1.246a6.921,6.921,0,0,0-1.4-.324c-.468-.142-.951-.293-1.412-.48a9.2,9.2,0,0,1-2.375-1.3A3.146,3.146,0,0,1,19.3,16.75a1.722,1.722,0,0,1,1.767-1.822,3.584,3.584,0,0,1,1.593.321c.146.066,1.31.606,1.256.809a5.5,5.5,0,0,0-1.41-.112c-.649.244-.4.828-.168,1.311a7.877,7.877,0,0,0,1.078,1.554C23.58,19.005,24.3,20.082,24.554,20.075Z" style="fill:#0f23c3"/><path d="M24.141,16.276c.128-.59.819-1.384,1.344-.773a4.2,4.2,0,0,1,.578,1.918c.12.656.2,1.327.261,1.982.038.379.34,1.794.123,2.075a23.24,23.24,0,0,1-2.922-2.838,3.763,3.763,0,0,1-.925-1.7C22.5,15.867,23.479,16.21,24.141,16.276Z" style="fill:#1a1978"/><path d="M26.3,17.781c.141-.732-.406-2.592-1.067-2.949a.06.06,0,0,0,.044-.007c-.156-.444-1.359,1.116-1.228,1.174-.316-.138.774-1.984.988-2.16.7-.578,1.372-.086,1.845.543a6.036,6.036,0,0,1,.733,4.434,4.5,4.5,0,0,1-.421,1.312c-.1.22-.45,1.1-.682,1.174A14.754,14.754,0,0,0,26.3,17.781Z" style="fill:#0f23c3"/><path d="M3.687,8.4c.179-.188-.041-1.527.324-1.548.262-.015.553,1.741.627,1.968a9.2,9.2,0,0,0,1.127,2.329,7.529,7.529,0,0,0,4.016,2.978,4.55,4.55,0,0,0,2.366.2c.931-.208,1.82-.577,2.757-.765,1.35-.27,3.342-.352,4.438.647.7.641.376.76.043,1.421a2.445,2.445,0,0,0,.178,2.562c.235.342,1.033.827.675,1.094-.567.424-1.277-.452-1.636-.776-1.4-1.264-2.711-1.313-4.492-1.074a8.987,8.987,0,0,1-4.883-.708A9.469,9.469,0,0,1,3.687,8.4Z" style="fill:#d2d2d2"/><path d="M19.941,30a3.615,3.615,0,0,1-2.325-.817c.469-.092,1.021.025,1.508-.044a9.7,9.7,0,0,0,1.754-.43A10.537,10.537,0,0,0,23.9,27.155a6.55,6.55,0,0,0,2.757-5.214c.149-.088.316,1.034.319,1.091a5.789,5.789,0,0,1-.19,1.727,6.867,6.867,0,0,1-1.423,2.774A7.286,7.286,0,0,1,19.941,30Z" style="fill:#d2d2d2"/><path d="M18.962,19.109a5.76,5.76,0,0,1-2.05.859,13.38,13.38,0,0,1-2.224.549,8.861,8.861,0,0,1-4.435-.51,9.939,9.939,0,0,1-3.849-2.4C6.052,17.24,4.3,15.19,4.856,14.557c.248-.282.875.846,1,.992a5,5,0,0,0,1.357,1.11,10.917,10.917,0,0,0,4.035,1.456,6.693,6.693,0,0,0,2.34-.094,12.743,12.743,0,0,1,1.694-.485,4,4,0,0,1,2.113.457C17.739,18.163,18.918,18.736,18.962,19.109Z" style="fill:#d2d2d2"/><path d="M28.313,15.078a19.277,19.277,0,0,1-.453,3.774c-.176-.242.016-1.47,0-1.792a6.032,6.032,0,0,0-.384-2.087A4.925,4.925,0,0,0,26.1,13.312a14.728,14.728,0,0,1-1.27-1.536c-1.837-2.382-3.245-5.211-2.9-8.3.034-.308.069-1.448.411-1.445.152,0,.266,1.561.29,1.718a12.527,12.527,0,0,0,1.224,4.116c.67,1.222,1.947,2.023,2.825,3.1A6.579,6.579,0,0,1,28.313,15.078Z" style="fill:#d2d2d2"/><path d="M15.7,26.935a10.845,10.845,0,0,0,6.436-.687,6.941,6.941,0,0,0,4.278-4.418c.319.2-.048,1.529-.128,1.781a5.726,5.726,0,0,1-1.01,1.813,8.933,8.933,0,0,1-3.257,2.514C20.316,28.71,16.357,29.59,15.7,26.935Z" style="fill:#d2d2d2"/><path d="M19.151,19.376c.367,2.107-2.957,3.124-4.478,3.213-1.859.11-4.929-.292-6.06-2.031-.673-1.035.781-.09,1.188.058a8.663,8.663,0,0,0,3.06.5,11.6,11.6,0,0,0,3.305-.5,13.725,13.725,0,0,0,1.533-.576C18,19.908,18.823,19.349,19.151,19.376Z" style="fill:#d2d2d2"/><path d="M24.142,23.46c.4-.945-1.883-1.578-2.445-1.858a4.857,4.857,0,0,1-1.315-.867c-.181-.181-.872-.92-.807-1.219a4.912,4.912,0,0,1,1.087-.175,5.93,5.93,0,0,1,.855.588,10.323,10.323,0,0,0,.964.5A15.615,15.615,0,0,0,24.6,21.2c.308.09,1.549.208,1.727.428C26.287,21.924,24.357,23.649,24.142,23.46Z" style="fill:#d2d2d2"/><path d="M26.1,22.172c.265.43-1.08,1.831-1.363,2.105a9.34,9.34,0,0,1-2.566,1.728,7.748,7.748,0,0,1-2.56.753c-.679.058-1.966-.124-2.141-.979a6.951,6.951,0,0,1,1.177-.086c.462-.059.921-.149,1.376-.246a13.065,13.065,0,0,0,2.184-.645,11.506,11.506,0,0,0,2.084-1.11,10.872,10.872,0,0,0,1.078-.822C25.474,22.781,25.986,22.168,26.1,22.172Z" style="fill:#d2d2d2"/><path d="M18.758,11.965c-.1-1.308,2.612-1.3,3.271-1.092a5.976,5.976,0,0,1,2.982,2.475c-1.082.8-2.449.094-3.3-.654a4.324,4.324,0,0,0-1.481-1.029C19.421,11.4,19.412,11.759,18.758,11.965Z" style="fill:#d2d2d2"/><path d="M25.783,13.341c-.444-.029-.316.071-.647-.212-.358-.307-.614-.795-.945-1.141-.534-.558-1.242-.895-1.723-1.485a7.269,7.269,0,0,1-1.624-4.848c.018-1.489.407.187.551.675a12.276,12.276,0,0,0,1.126,2.708,46.055,46.055,0,0,0,3.4,4.321C25.882,13.361,25.824,13.338,25.783,13.341Z" style="fill:#d2d2d2"/><path d="M20.068,14.756c.033-.625-.911-.792-1.211-1.42-.164-.343-.211-.569.029-.7.082-.045.383.012.5-.02.271-.076.335-.273.581-.4A1.193,1.193,0,0,1,21.6,13.237,1.821,1.821,0,0,1,20.068,14.756Z" style="fill:#d2d2d2"/><path d="M20.5,14.745a1.931,1.931,0,0,0,1.323-1.7c.524.139.928.658,1.521.771a2.584,2.584,0,0,0,1.029-.017c.207-.045.54-.274.721-.259-.033.163-.464.546-.565.717a4.242,4.242,0,0,0-.388.9c-.229.741-.061.739-.709.311a4.284,4.284,0,0,0-1.957-.72C21.209,14.722,20.594,14.767,20.5,14.745Z" style="fill:#d2d2d2"/><path d="M19.905,20.734a2.008,2.008,0,0,1-1.4,1.712c-.205.091-2.018.733-2.032.348-.007-.2,1.624-.954,1.809-1.11a3.355,3.355,0,0,0,.867-1.071c.055-.112.232-.925.271-.943C19.644,19.564,19.908,20.6,19.905,20.734Z" style="fill:#d2d2d2"/><path d="M11.373,12.532a10.625,10.625,0,0,1,3.71-.914,10.282,10.282,0,0,1,1.865.024c.366.039,1.469.054,1.74.343a.255.255,0,0,1-.273.173c-.037.077.251.371.3.425-.034.034-1.445-.4-1.572-.424a10.632,10.632,0,0,0-2.282-.134,16,16,0,0,0-1.841.194A6.224,6.224,0,0,1,11.373,12.532Z" style="fill:#d2d2d2"/><path d="M22.512,10.731a1.888,1.888,0,0,1-1.517-.6c-.247-.349-.737-1.692-.385-2.021.209-.2.384.662.484.846A10.822,10.822,0,0,0,22.512,10.731Z" style="fill:#d2d2d2"/><path d="M27.788,19.2a19.212,19.212,0,0,1-.749,3.313c-.173-.077-.275-.778-.562-.95a4.07,4.07,0,0,0,.76-1.154C27.389,20.107,27.54,19.363,27.788,19.2Z" style="fill:#d2d2d2"/><path d="M19.981,11.843c-.132.268-.932,1.1-1.118.481C18.756,11.968,19.739,11.483,19.981,11.843Zm-.747.45c.228.006.012-.248.012-.266C19.245,11.984,18.878,12.293,19.234,12.293Z" style="fill:#d2d2d2"/></svg>
@@ -0,0 +1 @@
1
+ <svg width="32px" height="32px" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><linearGradient id="a" x1="-5602.682" y1="768.541" x2="-5598.727" y2="763.917" gradientTransform="matrix(0.423, -0.906, -0.906, -0.423, 3082.853, -4748.551)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#f69923"/><stop offset="0.312" stop-color="#f79a23"/><stop offset="0.838" stop-color="#e97826"/></linearGradient><linearGradient id="b" x1="-5631.952" y1="769.052" x2="-5603.737" y2="769.052" gradientTransform="matrix(0.423, -0.906, -0.906, -0.423, 3082.853, -4748.551)" gradientUnits="userSpaceOnUse"><stop offset="0.323" stop-color="#9e2064"/><stop offset="0.63" stop-color="#c92037"/><stop offset="0.751" stop-color="#cd2335"/><stop offset="1" stop-color="#e97826"/></linearGradient><linearGradient id="c" x1="-5628.546" y1="766.221" x2="-5611.733" y2="766.221" gradientTransform="matrix(0.423, -0.906, -0.906, -0.423, 3082.853, -4748.551)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#282662"/><stop offset="0.095" stop-color="#662e8d"/><stop offset="0.788" stop-color="#9f2064"/><stop offset="0.949" stop-color="#cd2032"/></linearGradient><linearGradient id="d" x1="-5630.367" y1="769.316" x2="-5602.152" y2="769.316" xlink:href="#b"/><linearGradient id="e" x1="-5628.31" y1="768.933" x2="-5613.482" y2="768.933" xlink:href="#c"/><linearGradient id="f" x1="-5630.367" y1="766.394" x2="-5602.152" y2="766.394" xlink:href="#b"/><linearGradient id="g" x1="-5632.118" y1="766.539" x2="-5603.902" y2="766.539" xlink:href="#b"/><linearGradient id="h" x1="-5630.367" y1="765.526" x2="-5602.152" y2="765.526" xlink:href="#b"/><linearGradient id="i" x1="-5630.367" y1="765.625" x2="-5602.152" y2="765.625" xlink:href="#b"/><linearGradient id="j" x1="-5614.516" y1="765.645" x2="-5608.28" y2="765.645" xlink:href="#b"/></defs><title>file_type_apache</title><path d="M19.993,2.133a10.267,10.267,0,0,0-2.04,2.056l.8,1.51a19.733,19.733,0,0,1,1.708-2.144c.044-.049.068-.072.068-.072l-.068.072a17.865,17.865,0,0,0-1.6,2.174,30.1,30.1,0,0,0,3.111-.385,3.288,3.288,0,0,0-.3-2.5S20.9,1.6,19.993,2.133Z" style="fill:url(#a)"/><path d="M18.638,10.749l.018,0-.115.013-.021.009Z" style="fill:none"/><path d="M17.821,13.455c-.066.015-.132.026-.2.036C17.689,13.481,17.756,13.469,17.821,13.455Z" style="fill:none"/><path d="M12.27,19.524c.009-.023.017-.045.025-.068q.264-.7.523-1.357.291-.741.575-1.436.3-.733.59-1.418.305-.718.6-1.384.24-.542.474-1.049.078-.169.155-.335.153-.329.3-.645.138-.291.274-.57c.03-.062.06-.123.09-.185l.015-.03-.1.011-.078-.154c-.007.015-.015.03-.023.045q-.211.418-.417.845-.119.246-.238.495-.328.689-.645,1.389T13.766,15.1q-.3.7-.594,1.4t-.567,1.387q-.289.72-.562,1.426-.062.159-.123.318-.219.569-.426,1.124l.123.243.11-.012.012-.033Q12.008,20.216,12.27,19.524Z" style="fill:none"/><path d="M17.57,13.5Z" style="fill:none"/><path d="M17.305,14.818l-.315.055h0l.161-.025C17.2,14.839,17.253,14.829,17.305,14.818Z" style="fill:#be202e"/><path d="M17.305,14.818l-.315.055h0l.161-.025C17.2,14.839,17.253,14.829,17.305,14.818Z" style="fill:#be202e;opacity:0.3499999940395355;isolation:isolate"/><path d="M17.573,13.5h0l.05-.007c.068-.01.135-.022.2-.036l-.248.042Z" style="fill:#be202e"/><path d="M17.573,13.5h0l.05-.007c.068-.01.135-.022.2-.036l-.248.042Z" style="fill:#be202e;opacity:0.3499999940395355;isolation:isolate"/><path d="M16.394,9.6q.365-.682.739-1.332.388-.674.784-1.305l.046-.075q.392-.62.79-1.191l-.8-1.51-.182.225c-.231.288-.47.6-.716.925-.277.37-.562.764-.851,1.179-.267.383-.538.784-.809,1.2-.231.353-.462.717-.692,1.09l-.026.042L15.718,10.9Q16.052,10.244,16.394,9.6Z" style="fill:url(#b)"/><path d="M11.651,21.192q-.207.568-.415,1.159l-.006.017-.059.167c-.093.266-.175.5-.361,1.049a2.107,2.107,0,0,1,.786.926,1.68,1.68,0,0,0-.544-1.154,3.621,3.621,0,0,0,3.489-1.42,2.791,2.791,0,0,0,.165-.313,1.451,1.451,0,0,1-1.4.513l0,0,0,0a4.059,4.059,0,0,0,2.046-1.672c.111-.178.218-.372.328-.587a3.3,3.3,0,0,1-3.109,1.01l-.842.092C11.7,21.05,11.677,21.121,11.651,21.192Z" style="fill:url(#c)"/><path d="M12.044,19.306q.273-.706.562-1.426.276-.69.567-1.387t.594-1.4q.308-.711.629-1.419t.645-1.389q.118-.248.238-.495.207-.426.417-.845c.007-.015.015-.03.023-.045L14.677,8.847l-.051.083c-.242.4-.484.8-.721,1.216s-.475.844-.7,1.276q-.291.547-.568,1.1l-.11.225c-.227.467-.432.918-.617,1.352q-.315.737-.556,1.406c-.107.293-.2.576-.292.847-.073.232-.142.464-.208.7q-.234.818-.4,1.631L11.5,20.748q.208-.554.426-1.124Z" style="fill:url(#d)"/><path d="M10.435,18.755a16.07,16.07,0,0,0-.272,1.974c0,.023,0,.046-.005.069a4.15,4.15,0,0,0-1.2-1.029,5.825,5.825,0,0,1,1.172,2.693,2.642,2.642,0,0,1-1.325-.226,2.662,2.662,0,0,0,1.13.686,3.247,3.247,0,0,0-1.571.783,3.359,3.359,0,0,1,1.861-.342C9.51,25.389,8.793,27.626,8.076,30a.625.625,0,0,0,.425-.413c.128-.43.976-3.251,2.306-6.959l.115-.318.032-.089q.211-.583.437-1.19l.1-.277,0-.005L10.45,18.684C10.445,18.707,10.439,18.731,10.435,18.755Z" style="fill:url(#e)"/><path d="M15.88,11.078l-.09.185q-.135.279-.274.57-.15.315-.3.645c-.052.111-.1.222-.155.335q-.234.508-.474,1.049-.3.666-.6,1.384-.291.685-.59,1.418-.284.7-.575,1.436-.259.661-.523,1.357c-.009.023-.017.045-.025.068q-.262.693-.529,1.422l-.012.033.842-.092-.05-.009a6,6,0,0,0,3.21-1.807,7.984,7.984,0,0,0,1.1-1.524,13.139,13.139,0,0,0,.706-1.467c.195-.472.382-.982.562-1.536a3.053,3.053,0,0,1-.788.274c-.051.011-.1.021-.156.03s-.107.018-.161.025h0a3.668,3.668,0,0,0,1.962-1.913,3.344,3.344,0,0,1-1.13.495c-.066.015-.132.026-.2.036l-.05.007h0a3.821,3.821,0,0,0,.839-.469c.051-.038.1-.078.148-.12.073-.063.142-.129.208-.2.042-.044.083-.09.123-.138a3.27,3.27,0,0,0,.263-.362c.025-.04.05-.08.074-.122.031-.06.061-.119.09-.178.131-.264.236-.5.319-.706.042-.1.078-.2.109-.288.013-.035.025-.07.036-.1.033-.1.06-.187.081-.265a2.605,2.605,0,0,0,.062-.275h0a1.01,1.01,0,0,1-.109.075,3.965,3.965,0,0,1-1.162.4l.773-.085-.773.085-.018,0-.119.019.021-.009-2.645.29Z" style="fill:url(#f)"/><path d="M18.858,5.73c-.235.361-.492.771-.768,1.236l-.044.074q-.358.6-.759,1.327-.346.626-.719,1.347-.326.629-.672,1.336l2.645-.29A3.216,3.216,0,0,0,19.99,9.62c.089-.128.178-.262.267-.4.272-.424.538-.891.776-1.355a14.074,14.074,0,0,0,.588-1.294,6.8,6.8,0,0,0,.233-.7c.048-.184.086-.358.115-.524A30.152,30.152,0,0,1,18.858,5.73Z" style="fill:url(#g)"/><path d="M17.149,14.848c-.053.009-.107.018-.161.025h0C17.042,14.866,17.1,14.857,17.149,14.848Z" style="fill:#be202e"/><path d="M17.149,14.848c-.053.009-.107.018-.161.025h0C17.042,14.866,17.1,14.857,17.149,14.848Z" style="fill:#be202e;opacity:0.3499999940395355;isolation:isolate"/><path d="M17.149,14.848c-.053.009-.107.018-.161.025h0C17.042,14.866,17.1,14.857,17.149,14.848Z" style="fill:url(#h)"/><path d="M17.57,13.5l.05-.007-.05.007Z" style="fill:#be202e"/><path d="M17.57,13.5l.05-.007-.05.007Z" style="fill:#be202e;opacity:0.3499999940395355;isolation:isolate"/><path d="M17.57,13.5l.05-.007-.05.007Z" style="fill:url(#i)"/><path d="M17.572,13.5h0Z" style="fill:#be202e"/><path d="M17.572,13.5h0Z" style="fill:#be202e;opacity:0.3499999940395355;isolation:isolate"/><path d="M17.572,13.5h0Z" style="fill:url(#j)"/></svg>
@@ -0,0 +1 @@
1
+ <svg width="32px" height="32px" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><title>file_type_apex</title><path d="M13.652,8.338A4.906,4.906,0,0,1,17.2,6.814a4.957,4.957,0,0,1,4.32,2.56,5.972,5.972,0,0,1,2.442-.519,6.089,6.089,0,1,1-1.189,12.06,4.412,4.412,0,0,1-5.782,1.816A5.034,5.034,0,0,1,7.634,22.5a4.646,4.646,0,0,1-.96.1,4.732,4.732,0,0,1-2.337-8.812,5.438,5.438,0,0,1,9.315-5.453" style="fill:#0f9bd7"/><path d="M25.376,30.966h-.561a4.658,4.658,0,0,1-1.284-.137,1.9,1.9,0,0,1-.818-.482,1.726,1.726,0,0,1-.455-.843,6.77,6.77,0,0,1-.106-1.413,5.889,5.889,0,0,0-.084-1.33,1,1,0,0,0-.3-.544,1.223,1.223,0,0,0-.66-.179l-.236-.014V24.145l.236-.014a1.482,1.482,0,0,0,.549-.1.706.706,0,0,0,.273-.264,1.394,1.394,0,0,0,.181-.529,6.683,6.683,0,0,0,.044-.939,8.132,8.132,0,0,1,.112-1.643,1.7,1.7,0,0,1,.448-.841,2.144,2.144,0,0,1,.906-.492,4.514,4.514,0,0,1,1.2-.116h.561v1.9h-.25a2.589,2.589,0,0,0-.743.056.284.284,0,0,0-.148.117.839.839,0,0,0-.054.386q0,.372-.053,1.413a3.74,3.74,0,0,1-.166,1.009,1.945,1.945,0,0,1-.693,1,2.01,2.01,0,0,1,.7,1.044,4.627,4.627,0,0,1,.163,1.079c.027.657.041,1.074.041,1.256a.871.871,0,0,0,.057.408A.343.343,0,0,0,24.4,29a2.382,2.382,0,0,0,.728.06h.25Z" style="fill:#fff"/><path d="M21.118,25.788V24.382a1.752,1.752,0,0,0,.645-.129.936.936,0,0,0,.375-.354,1.621,1.621,0,0,0,.217-.624A6.88,6.88,0,0,0,22.4,22.3a8,8,0,0,1,.105-1.585,1.456,1.456,0,0,1,.381-.721,1.9,1.9,0,0,1,.8-.431,4.336,4.336,0,0,1,1.125-.105h.311v1.4a2.876,2.876,0,0,0-.835.073.53.53,0,0,0-.272.223,1.079,1.079,0,0,0-.088.513q0,.369-.053,1.4a3.531,3.531,0,0,1-.152.94,1.918,1.918,0,0,1-.313.595,2.47,2.47,0,0,1-.583.486,2.045,2.045,0,0,1,.565.466,1.869,1.869,0,0,1,.337.647,4.41,4.41,0,0,1,.152,1.02q.041.973.041,1.242a1.1,1.1,0,0,0,.094.539.584.584,0,0,0,.284.231,2.649,2.649,0,0,0,.823.079v1.406h-.311A4.474,4.474,0,0,1,23.6,30.59a1.644,1.644,0,0,1-.712-.419,1.478,1.478,0,0,1-.39-.724,6.621,6.621,0,0,1-.1-1.356,6.374,6.374,0,0,0-.094-1.4,1.232,1.232,0,0,0-.39-.671A1.431,1.431,0,0,0,21.118,25.788Z" style="fill:#0072a0"/><path d="M27.011,30.966H26.45V29.059h.25A2.329,2.329,0,0,0,27.426,29a.323.323,0,0,0,.165-.127.812.812,0,0,0,.058-.379q0-.36.05-1.375a3.725,3.725,0,0,1,.173-1.047,2.223,2.223,0,0,1,.387-.7,2.145,2.145,0,0,1,.3-.292,2.141,2.141,0,0,1-.4-.4,2.612,2.612,0,0,1-.421-1.092,17.525,17.525,0,0,1-.1-1.841,1.357,1.357,0,0,0-.053-.479c-.008-.016-.031-.062-.136-.106a2.524,2.524,0,0,0-.757-.06h-.25V19.2h.561a4.793,4.793,0,0,1,1.283.133,1.841,1.841,0,0,1,.818.485,1.781,1.781,0,0,1,.453.843,6.6,6.6,0,0,1,.109,1.414,6.359,6.359,0,0,0,.079,1.336.992.992,0,0,0,.3.537,1.226,1.226,0,0,0,.664.18l.236.014v1.879l-.236.014a1.482,1.482,0,0,0-.549.1.686.686,0,0,0-.27.262,1.484,1.484,0,0,0-.186.534,6.743,6.743,0,0,0-.043.931,8.383,8.383,0,0,1-.108,1.644,1.694,1.694,0,0,1-.446.846,2.143,2.143,0,0,1-.913.492A4.5,4.5,0,0,1,27.011,30.966Z" style="fill:#fff"/><path d="M30.708,25.788a1.752,1.752,0,0,0-.645.129.918.918,0,0,0-.372.354,1.725,1.725,0,0,0-.22.624,6.82,6.82,0,0,0-.047.973,8.27,8.27,0,0,1-.1,1.588,1.439,1.439,0,0,1-.378.724,1.9,1.9,0,0,1-.809.431,4.336,4.336,0,0,1-1.125.105H26.7V29.31a2.652,2.652,0,0,0,.82-.079A.572.572,0,0,0,27.8,29,1.05,1.05,0,0,0,27.9,28.5q0-.357.05-1.365a3.53,3.53,0,0,1,.158-.976,1.976,1.976,0,0,1,.343-.621A2.038,2.038,0,0,1,29,25.085a2.416,2.416,0,0,1-.633-.551,2.339,2.339,0,0,1-.375-.984,17.564,17.564,0,0,1-.094-1.8,1.571,1.571,0,0,0-.079-.586.487.487,0,0,0-.264-.226,2.8,2.8,0,0,0-.853-.079v-1.4h.311a4.576,4.576,0,0,1,1.213.123,1.587,1.587,0,0,1,.709.419,1.529,1.529,0,0,1,.39.727,6.436,6.436,0,0,1,.1,1.356,6.842,6.842,0,0,0,.088,1.4,1.223,1.223,0,0,0,.393.671,1.447,1.447,0,0,0,.8.231Z" style="fill:#0072a0"/></svg>
@@ -0,0 +1 @@
1
+ <svg width="32px" height="32px" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><title>file_type_applescript</title><path d="M17.181,4.437A5.993,5.993,0,0,1,21.579,2a5.979,5.979,0,0,1-1.447,4.476,4.729,4.729,0,0,1-4.17,1.961A5.2,5.2,0,0,1,17.181,4.437Z" style="fill:#a8c2ab"/><path d="M16.2,10.034c.946,0,2.7-1.3,4.989-1.3a6.249,6.249,0,0,1,5.484,2.8,6.08,6.08,0,0,0-3.028,5.3,6.235,6.235,0,0,0,3.772,5.7s-2.637,7.422-6.2,7.422c-1.636,0-2.908-1.1-4.631-1.1-1.757,0-3.5,1.144-4.635,1.144C8.7,30,4.587,22.959,4.587,17.3c0-5.568,3.478-8.489,6.74-8.489C13.448,8.811,15.093,10.034,16.2,10.034Z" style="fill:#a8c2ab"/></svg>
@@ -0,0 +1 @@
1
+ <svg width="32px" height="32px" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><linearGradient id="a" x1="836.63" y1="36.205" x2="843.802" y2="14.48" gradientTransform="translate(525.922 30.249) rotate(180) scale(0.607 0.607)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#fff" stop-opacity="0"/><stop offset="1" stop-color="#fff" stop-opacity="0.275"/></linearGradient></defs><title>file_type_assembly</title><path d="M16,2c-1.246,3.056-2,5.057-3.391,8.022A21.884,21.884,0,0,0,16.2,13.156a14.858,14.858,0,0,1-4-2.283C10.43,14.579,7.646,19.855,2,30c5.186-2.994,9.012-4.648,12.691-4.966V24.2h-.834v-.837h.834V24.2h1.675V22.521H14.691v-.834h-.834V20.013h.834v-.834h1.675v.834H17.2v.837h-.837v-.837H14.691v1.675h1.675v.834H17.2V24.2h-.837v.783c3.98.1,8.006,1.772,13.634,5.021-.863-1.589-1.636-3.021-2.372-4.385a25.526,25.526,0,0,0-4.833-3.333A14.436,14.436,0,0,1,26.65,23.8C19.17,9.872,18.565,8.02,16,2ZM10.511,19.179h1.671v.834h.837v5.021h-.837V22.521H10.511v2.512H9.673V20.013h.837Zm0,.834v1.675h1.671V20.013Zm7.526-.834h.837v.834h.837v.837h.834v-.837h.837v-.834h.837v5.855h-.837V20.85h-.837v.837h-.834V20.85h-.837v4.184h-.837Z" style="fill:#0000bf"/><path d="M23.881,18.642c-6.069-8.237-7.476-14.876-7.832-16.461A175.217,175.217,0,0,0,23.881,18.642Z" style="fill:#fff;fill-opacity:0.165680468082428"/><path d="M16.051,2.12,15.6,3.227c-.159.391-.311.765-.461,1.131s-.3.724-.448,1.077-.3.7-.448,1.053-.3.706-.465,1.066-.329.729-.506,1.111-.362.778-.561,1.193c-.028.057-.061.123-.089.181A21.872,21.872,0,0,0,16.2,13.156a14.879,14.879,0,0,1-3.989-2.276l-.14.287c-.065.133-.144.283-.212.42l-.106.219c-.878,1.793-2.006,3.984-3.524,6.822,3.551-2,7.381-4.887,14.338-2.4-.349-.661-.67-1.28-.971-1.863s-.581-1.128-.841-1.644-.5-1-.725-1.463-.433-.9-.629-1.313-.38-.818-.554-1.2-.339-.754-.5-1.118S18.047,6.9,17.9,6.546s-.291-.709-.434-1.066c-.036-.091-.073-.186-.109-.277C16.949,4.247,16.536,3.258,16.051,2.12Z" style="fill:url(#a)"/></svg>
@@ -0,0 +1 @@
1
+ <svg width="32px" height="32px" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><title>file_type_astro</title><path d="M5.9,18.847a7.507,7.507,0,0,0-.572,2.624,3.265,3.265,0,0,0,.551,1.553,7.427,7.427,0,0,0,2.093,1.681L13.1,28.119A7.332,7.332,0,0,0,15.2,29.287a3.239,3.239,0,0,0,1.5,0,7.381,7.381,0,0,0,2.117-1.16L24,24.711a7.512,7.512,0,0,0,2.117-1.688,3.241,3.241,0,0,0,.55-1.563,7.515,7.515,0,0,0-.587-2.643L21.547,4.551a3.973,3.973,0,0,0-.54-1.3,1.733,1.733,0,0,0-.7-.51,3.972,3.972,0,0,0-1.4-.122H13.005a3.932,3.932,0,0,0-1.4.125,1.713,1.713,0,0,0-.7.512,3.94,3.94,0,0,0-.535,1.3L5.9,18.848Zm13.24-13.2a3.329,3.329,0,0,1,.441,1.093l3.892,12.784a16.168,16.168,0,0,0-4.653-1.573L16.291,9.391a.331.331,0,0,0-.513-.169.323.323,0,0,0-.119.169l-2.5,8.557a16.14,16.14,0,0,0-4.674,1.579L12.393,6.743a3.281,3.281,0,0,1,.442-1.094,1.458,1.458,0,0,1,.582-.43,3.31,3.31,0,0,1,1.175-.1h2.793a3.314,3.314,0,0,1,1.176.1,1.454,1.454,0,0,1,.583.432ZM16.127,21.06a5.551,5.551,0,0,0,3.4-.923,2.8,2.8,0,0,1-.207,2.182A3.938,3.938,0,0,1,17.773,23.8c-.674.428-1.254.8-1.254,1.787a2.079,2.079,0,0,0,.209.914,2.49,2.49,0,0,1-1.535-2.3v-.061c0-.683,0-1.524-.962-1.524a1.028,1.028,0,0,0-.391.077,1.021,1.021,0,0,0-.552.551,1.03,1.03,0,0,0-.079.391,3.769,3.769,0,0,1-.988-2.644,4.206,4.206,0,0,1,.175-1.248c.4.757,1.92,1.32,3.731,1.32Z" style="fill:#ff5d01;fill-rule:evenodd"/></svg>
@@ -0,0 +1 @@
1
+ <svg width="32px" height="32px" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><linearGradient id="a" x1="54.604" y1="168.388" x2="54.604" y2="194.885" gradientTransform="translate(-38.604 -165.636)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#d8d8d8"/><stop offset="1" stop-color="#a3a3a3"/></linearGradient><linearGradient id="b" x1="68.756" y1="209.152" x2="91.638" y2="209.152" gradientTransform="translate(-50.601 -159.449) scale(0.832 0.837)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#d7d7d7"/><stop offset="0.5" stop-color="#e7e7e7"/><stop offset="1" stop-color="#d7d7d7"/></linearGradient></defs><title>file_type_autohotkey</title><rect x="2" y="2.824" width="28" height="26.353" rx="3.088" ry="3.088" style="fill:url(#a)"/><path d="M26.856,29.181H5.144A3.148,3.148,0,0,1,2,26.037V5.963A3.148,3.148,0,0,1,5.144,2.819H26.856A3.148,3.148,0,0,1,30,5.963V26.037A3.148,3.148,0,0,1,26.856,29.181ZM5.144,2.963a3,3,0,0,0-3,3h0V26.037a3,3,0,0,0,3,3H26.856a3,3,0,0,0,3-3V5.963a3,3,0,0,0-3-3Z" style="fill:#8d8d8d"/><rect x="4.313" y="4.641" width="23.169" height="21.94" rx="2.571" ry="2.571" style="fill:url(#b)"/><path d="M24.911,26.641H6.884A2.634,2.634,0,0,1,4.253,24.01V7.212A2.634,2.634,0,0,1,6.884,4.581H24.911a2.634,2.634,0,0,1,2.631,2.631v16.8A2.634,2.634,0,0,1,24.911,26.641ZM6.884,4.7A2.514,2.514,0,0,0,4.373,7.212v16.8a2.514,2.514,0,0,0,2.511,2.511H24.911a2.514,2.514,0,0,0,2.511-2.511V7.212A2.514,2.514,0,0,0,24.911,4.7Z" style="fill:#f8f8f8"/><path d="M6.145,23.9l2.343-6.1h.87l2.5,6.1h-.92l-.712-1.848H7.673L7,23.9ZM7.9,21.4H9.974l-.637-1.7q-.291-.77-.433-1.265A7.776,7.776,0,0,1,8.576,19.6Z"/><path d="M13.607,23.9V17.8h.807v2.5h3.171V17.8h.807v6.1h-.807V21.021h-3.17V23.9Z"/><path d="M20.478,23.9V17.8h.807v3.025l3.03-3.025h1.094L22.85,20.267,25.522,23.9H24.456l-2.172-3.088-1,.974V23.9Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg width="32px" height="32px" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><title>file_type_autoit</title><circle cx="16" cy="16" r="12.551" style="fill:#5d83ac"/><path d="M2,16A14,14,0,1,1,16,30,14,14,0,0,1,2,16ZM16,4.789A11.211,11.211,0,1,0,27.211,16,11.211,11.211,0,0,0,16,4.789Z" style="fill:#f0f0f0"/><path d="M24.576,20.156l-6.4-9.264a3.131,3.131,0,0,0-.819-.819,2.36,2.36,0,0,0-2.442.023,3.543,3.543,0,0,0-.812.8L7.533,20.156h3.752l4.808-6.8,1.838,2.71q.26.368.544.789t.5.7q-.368-.031-.865-.031h-3.53l-1.914,2.634Z" style="fill:#f0f0f0"/></svg>