@lvce-editor/static-server 0.40.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1859) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +3 -0
  3. package/package.json +21 -0
  4. package/src/parts/Assert/Assert.js +1 -0
  5. package/src/parts/CachingHeaders/CachingHeaders.js +3 -0
  6. package/src/parts/CompatServerResponse/CompatServerResponse.js +10 -0
  7. package/src/parts/CrossOriginEmbedderPolicy/CrossOriginEmbedderPolicy.js +1 -0
  8. package/src/parts/CrossOriginResourcePolicy/CrossOriginResourcePolicy.js +1 -0
  9. package/src/parts/GetHeaders/GetHeaders.js +21 -0
  10. package/src/parts/GetMimeType/GetMimeType.js +30 -0
  11. package/src/parts/HandleMessageFromParent/HandleMessageFromParent.js +15 -0
  12. package/src/parts/HandleUncaughtExceptionMonitor/HandleUncaughtExceptionMonitor.js +3 -0
  13. package/src/parts/HttpHeader/HttpHeader.js +9 -0
  14. package/src/parts/HttpServerResponse/HttpServerResponse.js +17 -0
  15. package/src/parts/HttpServerResponseStream/HttpServerResponseStream.js +24 -0
  16. package/src/parts/HttpStatusCode/HttpStatusCode.js +5 -0
  17. package/src/parts/Main/Main.js +10 -0
  18. package/src/parts/MimeType/MimeType.js +37 -0
  19. package/src/parts/PipelineResponse/PipelineResponse.js +5 -0
  20. package/src/parts/Root/Root.js +6 -0
  21. package/src/parts/SetHeaders/SetHeaders.js +5 -0
  22. package/src/parts/Static/Static.js +4 -0
  23. package/src/static-server.js +3 -0
  24. package/static/c76328b/config/colorTheme.json +98 -0
  25. package/static/c76328b/config/defaultSettings.json +58 -0
  26. package/static/c76328b/config/fileMap.json +16 -0
  27. package/static/c76328b/config/webExtensions.json +1 -0
  28. package/static/c76328b/css/App.css +2881 -0
  29. package/static/c76328b/css/parts/Animation.css +9 -0
  30. package/static/c76328b/css/parts/DebugButtons.css +22 -0
  31. package/static/c76328b/css/parts/DebugValue.css +24 -0
  32. package/static/c76328b/css/parts/E2eTest.css +48 -0
  33. package/static/c76328b/css/parts/E2eTests.css +30 -0
  34. package/static/c76328b/css/parts/EditorHover.css +6 -0
  35. package/static/c76328b/css/parts/EditorMessage.css +23 -0
  36. package/static/c76328b/css/parts/ImagePreview.css +33 -0
  37. package/static/c76328b/css/parts/InlineDiffEditor.css +27 -0
  38. package/static/c76328b/css/parts/Key.css +12 -0
  39. package/static/c76328b/css/parts/KeyBindingsHeader.css +36 -0
  40. package/static/c76328b/css/parts/KeyBindingsTable.css +51 -0
  41. package/static/c76328b/css/parts/Markdown.css +701 -0
  42. package/static/c76328b/css/parts/Progress.css +5 -0
  43. package/static/c76328b/css/parts/SearchToggleButton.css +16 -0
  44. package/static/c76328b/css/parts/Select.css +11 -0
  45. package/static/c76328b/css/parts/ViewletAbout.css +9 -0
  46. package/static/c76328b/css/parts/ViewletBrowserViewOverview.css +4 -0
  47. package/static/c76328b/css/parts/ViewletDebugConsole.css +16 -0
  48. package/static/c76328b/css/parts/ViewletDefineKeyBinding.css +21 -0
  49. package/static/c76328b/css/parts/ViewletDialog.css +150 -0
  50. package/static/c76328b/css/parts/ViewletDiffEditor.css +31 -0
  51. package/static/c76328b/css/parts/ViewletEditorWidgetError.css +9 -0
  52. package/static/c76328b/css/parts/ViewletExtensionDetail.css +79 -0
  53. package/static/c76328b/css/parts/ViewletExtensions.css +185 -0
  54. package/static/c76328b/css/parts/ViewletKeyBindings.css +34 -0
  55. package/static/c76328b/css/parts/ViewletMedia.css +23 -0
  56. package/static/c76328b/css/parts/ViewletOutput.css +17 -0
  57. package/static/c76328b/css/parts/ViewletPanel.css +23 -0
  58. package/static/c76328b/css/parts/ViewletPanelTabs.css +35 -0
  59. package/static/c76328b/css/parts/ViewletPdf.css +49 -0
  60. package/static/c76328b/css/parts/ViewletProblems.css +95 -0
  61. package/static/c76328b/css/parts/ViewletReferences.css +22 -0
  62. package/static/c76328b/css/parts/ViewletRunAndDebug.css +87 -0
  63. package/static/c76328b/css/parts/ViewletScreenCapture.css +3 -0
  64. package/static/c76328b/css/parts/ViewletSearch.css +34 -0
  65. package/static/c76328b/css/parts/ViewletSimpleBrowser.css +21 -0
  66. package/static/c76328b/css/parts/ViewletSourceControl.css +67 -0
  67. package/static/c76328b/css/parts/ViewletStorage.css +21 -0
  68. package/static/c76328b/css/parts/ViewletTerminal.css +10 -0
  69. package/static/c76328b/css/parts/ViewletTerminalTabs.css +31 -0
  70. package/static/c76328b/extensions/builtin.language-basics-bat/README.md +14 -0
  71. package/static/c76328b/extensions/builtin.language-basics-bat/extension.json +12 -0
  72. package/static/c76328b/extensions/builtin.language-basics-bat/languageConfiguration.json +17 -0
  73. package/static/c76328b/extensions/builtin.language-basics-bat/src/tokenizeBat.js +33 -0
  74. package/static/c76328b/extensions/builtin.language-basics-c/README.md +14 -0
  75. package/static/c76328b/extensions/builtin.language-basics-c/extension.json +12 -0
  76. package/static/c76328b/extensions/builtin.language-basics-c/src/tokenizeC.js +211 -0
  77. package/static/c76328b/extensions/builtin.language-basics-coffeescript/README.md +14 -0
  78. package/static/c76328b/extensions/builtin.language-basics-coffeescript/extension.json +12 -0
  79. package/static/c76328b/extensions/builtin.language-basics-coffeescript/src/tokenizeCoffeeScript.js +257 -0
  80. package/static/c76328b/extensions/builtin.language-basics-cpp/README.md +14 -0
  81. package/static/c76328b/extensions/builtin.language-basics-cpp/extension.json +32 -0
  82. package/static/c76328b/extensions/builtin.language-basics-cpp/languageConfiguration.json +5 -0
  83. package/static/c76328b/extensions/builtin.language-basics-cpp/src/tokenizeCpp.js +321 -0
  84. package/static/c76328b/extensions/builtin.language-basics-cson/README.md +16 -0
  85. package/static/c76328b/extensions/builtin.language-basics-cson/extension.json +13 -0
  86. package/static/c76328b/extensions/builtin.language-basics-cson/languageConfiguration.json +21 -0
  87. package/static/c76328b/extensions/builtin.language-basics-cson/src/tokenizeCson.js +207 -0
  88. package/static/c76328b/extensions/builtin.language-basics-css/README.md +16 -0
  89. package/static/c76328b/extensions/builtin.language-basics-css/extension.json +13 -0
  90. package/static/c76328b/extensions/builtin.language-basics-css/languageConfiguration.json +21 -0
  91. package/static/c76328b/extensions/builtin.language-basics-css/src/tokenizeCss.js +691 -0
  92. package/static/c76328b/extensions/builtin.language-basics-dart/README.md +14 -0
  93. package/static/c76328b/extensions/builtin.language-basics-dart/extension.json +12 -0
  94. package/static/c76328b/extensions/builtin.language-basics-dart/src/tokenizeDart.js +139 -0
  95. package/static/c76328b/extensions/builtin.language-basics-desktop/README.md +14 -0
  96. package/static/c76328b/extensions/builtin.language-basics-desktop/extension.json +12 -0
  97. package/static/c76328b/extensions/builtin.language-basics-desktop/src/tokenizeDesktop.js +166 -0
  98. package/static/c76328b/extensions/builtin.language-basics-docker/README.md +14 -0
  99. package/static/c76328b/extensions/builtin.language-basics-docker/extension.json +24 -0
  100. package/static/c76328b/extensions/builtin.language-basics-docker/src/tokenizeDockerfile.js +131 -0
  101. package/static/c76328b/extensions/builtin.language-basics-dotenv/README.md +14 -0
  102. package/static/c76328b/extensions/builtin.language-basics-dotenv/extension.json +26 -0
  103. package/static/c76328b/extensions/builtin.language-basics-dotenv/src/tokenizeDotenv.js +341 -0
  104. package/static/c76328b/extensions/builtin.language-basics-editorconfig/README.md +14 -0
  105. package/static/c76328b/extensions/builtin.language-basics-editorconfig/extension.json +12 -0
  106. package/static/c76328b/extensions/builtin.language-basics-editorconfig/src/tokenizeEditorConfig.js +173 -0
  107. package/static/c76328b/extensions/builtin.language-basics-elixir/README.md +14 -0
  108. package/static/c76328b/extensions/builtin.language-basics-elixir/extension.json +12 -0
  109. package/static/c76328b/extensions/builtin.language-basics-elixir/src/tokenizeElixir.js +180 -0
  110. package/static/c76328b/extensions/builtin.language-basics-elm/README.md +14 -0
  111. package/static/c76328b/extensions/builtin.language-basics-elm/extension.json +12 -0
  112. package/static/c76328b/extensions/builtin.language-basics-elm/src/tokenizeElm.js +301 -0
  113. package/static/c76328b/extensions/builtin.language-basics-gitattributes/README.md +14 -0
  114. package/static/c76328b/extensions/builtin.language-basics-gitattributes/extension.json +12 -0
  115. package/static/c76328b/extensions/builtin.language-basics-gitattributes/src/tokenizeGitAttributes.js +159 -0
  116. package/static/c76328b/extensions/builtin.language-basics-gn/README.md +14 -0
  117. package/static/c76328b/extensions/builtin.language-basics-gn/extension.json +12 -0
  118. package/static/c76328b/extensions/builtin.language-basics-gn/src/tokenizeGn.js +178 -0
  119. package/static/c76328b/extensions/builtin.language-basics-go/README.md +14 -0
  120. package/static/c76328b/extensions/builtin.language-basics-go/extension.json +13 -0
  121. package/static/c76328b/extensions/builtin.language-basics-go/src/tokenizeGo.js +295 -0
  122. package/static/c76328b/extensions/builtin.language-basics-graphql/README.md +14 -0
  123. package/static/c76328b/extensions/builtin.language-basics-graphql/extension.json +12 -0
  124. package/static/c76328b/extensions/builtin.language-basics-graphql/src/tokenizeGraphql.js +452 -0
  125. package/static/c76328b/extensions/builtin.language-basics-html/README.md +14 -0
  126. package/static/c76328b/extensions/builtin.language-basics-html/extension.json +13 -0
  127. package/static/c76328b/extensions/builtin.language-basics-html/languageConfiguration.json +66 -0
  128. package/static/c76328b/extensions/builtin.language-basics-html/src/tokenizeHtml.js +557 -0
  129. package/static/c76328b/extensions/builtin.language-basics-java/README.md +14 -0
  130. package/static/c76328b/extensions/builtin.language-basics-java/extension.json +13 -0
  131. package/static/c76328b/extensions/builtin.language-basics-java/languageConfiguration.json +31 -0
  132. package/static/c76328b/extensions/builtin.language-basics-java/src/tokenizeJava.js +284 -0
  133. package/static/c76328b/extensions/builtin.language-basics-javascript/README.md +14 -0
  134. package/static/c76328b/extensions/builtin.language-basics-javascript/extension.json +14 -0
  135. package/static/c76328b/extensions/builtin.language-basics-javascript/languageConfiguration.json +40 -0
  136. package/static/c76328b/extensions/builtin.language-basics-javascript/src/tokenizeJavaScript.js +619 -0
  137. package/static/c76328b/extensions/builtin.language-basics-json/README.md +14 -0
  138. package/static/c76328b/extensions/builtin.language-basics-json/extension.json +60 -0
  139. package/static/c76328b/extensions/builtin.language-basics-json/src/tokenizeJson.js +362 -0
  140. package/static/c76328b/extensions/builtin.language-basics-json5/README.md +16 -0
  141. package/static/c76328b/extensions/builtin.language-basics-json5/extension.json +12 -0
  142. package/static/c76328b/extensions/builtin.language-basics-json5/src/tokenizeJson5.js +346 -0
  143. package/static/c76328b/extensions/builtin.language-basics-jsx/README.md +14 -0
  144. package/static/c76328b/extensions/builtin.language-basics-jsx/extension.json +13 -0
  145. package/static/c76328b/extensions/builtin.language-basics-jsx/src/tokenizeJsx.js +661 -0
  146. package/static/c76328b/extensions/builtin.language-basics-julia/README.md +18 -0
  147. package/static/c76328b/extensions/builtin.language-basics-julia/extension.json +12 -0
  148. package/static/c76328b/extensions/builtin.language-basics-julia/src/tokenizeJulia.js +181 -0
  149. package/static/c76328b/extensions/builtin.language-basics-kotlin/README.md +14 -0
  150. package/static/c76328b/extensions/builtin.language-basics-kotlin/extension.json +12 -0
  151. package/static/c76328b/extensions/builtin.language-basics-kotlin/src/tokenizeKotlin.js +274 -0
  152. package/static/c76328b/extensions/builtin.language-basics-less/LICENSE +21 -0
  153. package/static/c76328b/extensions/builtin.language-basics-less/README.md +14 -0
  154. package/static/c76328b/extensions/builtin.language-basics-less/extension.json +12 -0
  155. package/static/c76328b/extensions/builtin.language-basics-less/languageConfiguration.json +17 -0
  156. package/static/c76328b/extensions/builtin.language-basics-less/src/tokenizeLess.js +612 -0
  157. package/static/c76328b/extensions/builtin.language-basics-markdown/README.md +14 -0
  158. package/static/c76328b/extensions/builtin.language-basics-markdown/extension.json +12 -0
  159. package/static/c76328b/extensions/builtin.language-basics-markdown/src/tokenizeMarkdown.js +471 -0
  160. package/static/c76328b/extensions/builtin.language-basics-mdx/README.md +14 -0
  161. package/static/c76328b/extensions/builtin.language-basics-mdx/extension.json +12 -0
  162. package/static/c76328b/extensions/builtin.language-basics-mdx/src/tokenizeMdx.js +395 -0
  163. package/static/c76328b/extensions/builtin.language-basics-nix/README.md +16 -0
  164. package/static/c76328b/extensions/builtin.language-basics-nix/extension.json +13 -0
  165. package/static/c76328b/extensions/builtin.language-basics-nix/languageConfiguration.json +21 -0
  166. package/static/c76328b/extensions/builtin.language-basics-nix/src/tokenizeNix.js +224 -0
  167. package/static/c76328b/extensions/builtin.language-basics-nvmrc/README.md +14 -0
  168. package/static/c76328b/extensions/builtin.language-basics-nvmrc/extension.json +12 -0
  169. package/static/c76328b/extensions/builtin.language-basics-nvmrc/src/tokenizeNvmrc.js +30 -0
  170. package/static/c76328b/extensions/builtin.language-basics-perl/README.md +14 -0
  171. package/static/c76328b/extensions/builtin.language-basics-perl/extension.json +13 -0
  172. package/static/c76328b/extensions/builtin.language-basics-perl/src/tokenizePerl.js +200 -0
  173. package/static/c76328b/extensions/builtin.language-basics-plaintext/README.md +14 -0
  174. package/static/c76328b/extensions/builtin.language-basics-plaintext/extension.json +12 -0
  175. package/static/c76328b/extensions/builtin.language-basics-plaintext/src/tokenizePlaintext.js +28 -0
  176. package/static/c76328b/extensions/builtin.language-basics-powershell/README.md +14 -0
  177. package/static/c76328b/extensions/builtin.language-basics-powershell/extension.json +12 -0
  178. package/static/c76328b/extensions/builtin.language-basics-powershell/src/tokenizePowershell.js +141 -0
  179. package/static/c76328b/extensions/builtin.language-basics-python/README.md +14 -0
  180. package/static/c76328b/extensions/builtin.language-basics-python/extension.json +15 -0
  181. package/static/c76328b/extensions/builtin.language-basics-python/languageConfiguration.json +5 -0
  182. package/static/c76328b/extensions/builtin.language-basics-python/src/tokenizePython.js +326 -0
  183. package/static/c76328b/extensions/builtin.language-basics-r/README.md +14 -0
  184. package/static/c76328b/extensions/builtin.language-basics-r/extension.json +12 -0
  185. package/static/c76328b/extensions/builtin.language-basics-r/src/tokenizeR.js +71 -0
  186. package/static/c76328b/extensions/builtin.language-basics-ruby/README.md +14 -0
  187. package/static/c76328b/extensions/builtin.language-basics-ruby/extension.json +48 -0
  188. package/static/c76328b/extensions/builtin.language-basics-ruby/src/tokenizeRuby.js +248 -0
  189. package/static/c76328b/extensions/builtin.language-basics-rust/LICENSE +21 -0
  190. package/static/c76328b/extensions/builtin.language-basics-rust/README.md +14 -0
  191. package/static/c76328b/extensions/builtin.language-basics-rust/extension.json +12 -0
  192. package/static/c76328b/extensions/builtin.language-basics-rust/languageConfiguration.json +17 -0
  193. package/static/c76328b/extensions/builtin.language-basics-rust/src/tokenizeRust.js +205 -0
  194. package/static/c76328b/extensions/builtin.language-basics-scss/README.md +14 -0
  195. package/static/c76328b/extensions/builtin.language-basics-scss/extension.json +12 -0
  196. package/static/c76328b/extensions/builtin.language-basics-scss/languageConfiguration.json +17 -0
  197. package/static/c76328b/extensions/builtin.language-basics-scss/src/tokenizeScss.js +683 -0
  198. package/static/c76328b/extensions/builtin.language-basics-shellscript/README.md +14 -0
  199. package/static/c76328b/extensions/builtin.language-basics-shellscript/extension.json +56 -0
  200. package/static/c76328b/extensions/builtin.language-basics-shellscript/src/tokenizeShellScript.js +572 -0
  201. package/static/c76328b/extensions/builtin.language-basics-svelte/README.md +14 -0
  202. package/static/c76328b/extensions/builtin.language-basics-svelte/extension.json +13 -0
  203. package/static/c76328b/extensions/builtin.language-basics-svelte/src/tokenizeSvelte.js +428 -0
  204. package/static/c76328b/extensions/builtin.language-basics-terraform/README.md +16 -0
  205. package/static/c76328b/extensions/builtin.language-basics-terraform/extension.json +13 -0
  206. package/static/c76328b/extensions/builtin.language-basics-terraform/src/tokenizeTerraform.js +243 -0
  207. package/static/c76328b/extensions/builtin.language-basics-toml/README.md +14 -0
  208. package/static/c76328b/extensions/builtin.language-basics-toml/extension.json +14 -0
  209. package/static/c76328b/extensions/builtin.language-basics-toml/src/tokenizeToml.js +299 -0
  210. package/static/c76328b/extensions/builtin.language-basics-typescript/README.md +16 -0
  211. package/static/c76328b/extensions/builtin.language-basics-typescript/extension.json +17 -0
  212. package/static/c76328b/extensions/builtin.language-basics-typescript/src/tokenizeTypeScript.js +1683 -0
  213. package/static/c76328b/extensions/builtin.language-basics-vue/README.md +14 -0
  214. package/static/c76328b/extensions/builtin.language-basics-vue/extension.json +13 -0
  215. package/static/c76328b/extensions/builtin.language-basics-vue/src/tokenizeVue.js +481 -0
  216. package/static/c76328b/extensions/builtin.language-basics-wgsl/README.md +16 -0
  217. package/static/c76328b/extensions/builtin.language-basics-wgsl/extension.json +13 -0
  218. package/static/c76328b/extensions/builtin.language-basics-wgsl/languageConfiguration.json +21 -0
  219. package/static/c76328b/extensions/builtin.language-basics-wgsl/src/tokenizeWgsl.js +226 -0
  220. package/static/c76328b/extensions/builtin.language-basics-xml/README.md +14 -0
  221. package/static/c76328b/extensions/builtin.language-basics-xml/extension.json +85 -0
  222. package/static/c76328b/extensions/builtin.language-basics-xml/src/tokenizeXml.js +328 -0
  223. package/static/c76328b/extensions/builtin.language-basics-yaml/README.md +14 -0
  224. package/static/c76328b/extensions/builtin.language-basics-yaml/extension.json +13 -0
  225. package/static/c76328b/extensions/builtin.language-basics-yaml/src/tokenizeYaml.js +405 -0
  226. package/static/c76328b/extensions/builtin.theme-atom-one-dark/README.md +11 -0
  227. package/static/c76328b/extensions/builtin.theme-atom-one-dark/color-theme.json +235 -0
  228. package/static/c76328b/extensions/builtin.theme-atom-one-dark/extension.json +12 -0
  229. package/static/c76328b/extensions/builtin.theme-atom-one-dark/images/demo.png +0 -0
  230. package/static/c76328b/extensions/builtin.theme-ayu/README.md +11 -0
  231. package/static/c76328b/extensions/builtin.theme-ayu/color-theme.json +234 -0
  232. package/static/c76328b/extensions/builtin.theme-ayu/extension.json +12 -0
  233. package/static/c76328b/extensions/builtin.theme-cobalt2/README.md +20 -0
  234. package/static/c76328b/extensions/builtin.theme-cobalt2/color-theme.json +208 -0
  235. package/static/c76328b/extensions/builtin.theme-cobalt2/extension.json +13 -0
  236. package/static/c76328b/extensions/builtin.theme-cobalt2/images/demo.png +0 -0
  237. package/static/c76328b/extensions/builtin.theme-cobalt2/images/logo.png +0 -0
  238. package/static/c76328b/extensions/builtin.theme-gruvbox/README.md +20 -0
  239. package/static/c76328b/extensions/builtin.theme-gruvbox/color-theme.json +217 -0
  240. package/static/c76328b/extensions/builtin.theme-gruvbox/extension.json +12 -0
  241. package/static/c76328b/extensions/builtin.theme-high-contrast/README.md +9 -0
  242. package/static/c76328b/extensions/builtin.theme-high-contrast/color-theme.json +86 -0
  243. package/static/c76328b/extensions/builtin.theme-high-contrast/extension.json +11 -0
  244. package/static/c76328b/extensions/builtin.theme-material/README.md +9 -0
  245. package/static/c76328b/extensions/builtin.theme-material/color-theme.json +183 -0
  246. package/static/c76328b/extensions/builtin.theme-material/extension.json +12 -0
  247. package/static/c76328b/extensions/builtin.theme-monokai/README.md +10 -0
  248. package/static/c76328b/extensions/builtin.theme-monokai/color-theme.json +151 -0
  249. package/static/c76328b/extensions/builtin.theme-monokai/extension.json +11 -0
  250. package/static/c76328b/extensions/builtin.theme-noctis-uva/README.md +11 -0
  251. package/static/c76328b/extensions/builtin.theme-noctis-uva/color-theme.json +211 -0
  252. package/static/c76328b/extensions/builtin.theme-noctis-uva/extension.json +12 -0
  253. package/static/c76328b/extensions/builtin.theme-noctis-uva/images/demo.png +0 -0
  254. package/static/c76328b/extensions/builtin.theme-palenight/README.md +11 -0
  255. package/static/c76328b/extensions/builtin.theme-palenight/color-theme.json +209 -0
  256. package/static/c76328b/extensions/builtin.theme-palenight/extension.json +12 -0
  257. package/static/c76328b/extensions/builtin.theme-palenight/images/demo.png +0 -0
  258. package/static/c76328b/extensions/builtin.theme-slime/README.md +5 -0
  259. package/static/c76328b/extensions/builtin.theme-slime/color-theme.json +298 -0
  260. package/static/c76328b/extensions/builtin.theme-slime/extension.json +13 -0
  261. package/static/c76328b/extensions/builtin.theme-slime/icon.png +0 -0
  262. package/static/c76328b/extensions/builtin.vscode-icons/README.md +20 -0
  263. package/static/c76328b/extensions/builtin.vscode-icons/extension.json +13 -0
  264. package/static/c76328b/extensions/builtin.vscode-icons/icon-theme.json +4151 -0
  265. package/static/c76328b/extensions/builtin.vscode-icons/icon.png +0 -0
  266. package/static/c76328b/file-icons/default_file.svg +1 -0
  267. package/static/c76328b/file-icons/default_folder.svg +1 -0
  268. package/static/c76328b/file-icons/default_folder_opened.svg +1 -0
  269. package/static/c76328b/file-icons/default_root_folder.svg +1 -0
  270. package/static/c76328b/file-icons/default_root_folder_opened.svg +1 -0
  271. package/static/c76328b/file-icons/file_type_access.svg +1 -0
  272. package/static/c76328b/file-icons/file_type_access2.svg +1 -0
  273. package/static/c76328b/file-icons/file_type_actionscript.svg +1 -0
  274. package/static/c76328b/file-icons/file_type_actionscript2.svg +1 -0
  275. package/static/c76328b/file-icons/file_type_ada.svg +1 -0
  276. package/static/c76328b/file-icons/file_type_advpl.svg +1 -0
  277. package/static/c76328b/file-icons/file_type_affectscript.svg +1 -0
  278. package/static/c76328b/file-icons/file_type_affinitydesigner.svg +1 -0
  279. package/static/c76328b/file-icons/file_type_affinityphoto.svg +1 -0
  280. package/static/c76328b/file-icons/file_type_affinitypublisher.svg +1 -0
  281. package/static/c76328b/file-icons/file_type_ai.svg +1 -0
  282. package/static/c76328b/file-icons/file_type_ai2.svg +1 -0
  283. package/static/c76328b/file-icons/file_type_al.svg +1 -0
  284. package/static/c76328b/file-icons/file_type_al_dal.svg +1 -0
  285. package/static/c76328b/file-icons/file_type_allcontributors.svg +1 -0
  286. package/static/c76328b/file-icons/file_type_angular.svg +1 -0
  287. package/static/c76328b/file-icons/file_type_ansible.svg +1 -0
  288. package/static/c76328b/file-icons/file_type_antlr.svg +1 -0
  289. package/static/c76328b/file-icons/file_type_anyscript.svg +1 -0
  290. package/static/c76328b/file-icons/file_type_apache.svg +1 -0
  291. package/static/c76328b/file-icons/file_type_apex.svg +1 -0
  292. package/static/c76328b/file-icons/file_type_api_extractor.svg +1 -0
  293. package/static/c76328b/file-icons/file_type_apib.svg +1 -0
  294. package/static/c76328b/file-icons/file_type_apib2.svg +1 -0
  295. package/static/c76328b/file-icons/file_type_apl.svg +1 -0
  296. package/static/c76328b/file-icons/file_type_applescript.svg +1 -0
  297. package/static/c76328b/file-icons/file_type_appscript.svg +1 -0
  298. package/static/c76328b/file-icons/file_type_appsemble.svg +1 -0
  299. package/static/c76328b/file-icons/file_type_appveyor.svg +1 -0
  300. package/static/c76328b/file-icons/file_type_arduino.svg +1 -0
  301. package/static/c76328b/file-icons/file_type_asciidoc.svg +1 -0
  302. package/static/c76328b/file-icons/file_type_asp.svg +1 -0
  303. package/static/c76328b/file-icons/file_type_aspx.svg +1 -0
  304. package/static/c76328b/file-icons/file_type_assembly.svg +1 -0
  305. package/static/c76328b/file-icons/file_type_astro.svg +1 -0
  306. package/static/c76328b/file-icons/file_type_astroconfig.svg +1 -0
  307. package/static/c76328b/file-icons/file_type_atom.svg +1 -0
  308. package/static/c76328b/file-icons/file_type_ats.svg +1 -0
  309. package/static/c76328b/file-icons/file_type_audio.svg +1 -0
  310. package/static/c76328b/file-icons/file_type_aurelia.svg +1 -0
  311. package/static/c76328b/file-icons/file_type_autohotkey.svg +1 -0
  312. package/static/c76328b/file-icons/file_type_autoit.svg +1 -0
  313. package/static/c76328b/file-icons/file_type_avif.svg +1 -0
  314. package/static/c76328b/file-icons/file_type_avro.svg +1 -0
  315. package/static/c76328b/file-icons/file_type_awk.svg +1 -0
  316. package/static/c76328b/file-icons/file_type_aws.svg +1 -0
  317. package/static/c76328b/file-icons/file_type_azure.svg +1 -0
  318. package/static/c76328b/file-icons/file_type_azurepipelines.svg +1 -0
  319. package/static/c76328b/file-icons/file_type_babel.svg +1 -0
  320. package/static/c76328b/file-icons/file_type_babel2.svg +1 -0
  321. package/static/c76328b/file-icons/file_type_ballerina.svg +1 -0
  322. package/static/c76328b/file-icons/file_type_bat.svg +1 -0
  323. package/static/c76328b/file-icons/file_type_bats.svg +1 -0
  324. package/static/c76328b/file-icons/file_type_bazaar.svg +1 -0
  325. package/static/c76328b/file-icons/file_type_bazel.svg +1 -0
  326. package/static/c76328b/file-icons/file_type_bazel_ignore.svg +1 -0
  327. package/static/c76328b/file-icons/file_type_bazel_version.svg +1 -0
  328. package/static/c76328b/file-icons/file_type_befunge.svg +1 -0
  329. package/static/c76328b/file-icons/file_type_bicep.svg +1 -0
  330. package/static/c76328b/file-icons/file_type_biml.svg +1 -0
  331. package/static/c76328b/file-icons/file_type_binary.svg +1 -0
  332. package/static/c76328b/file-icons/file_type_biome.svg +1 -0
  333. package/static/c76328b/file-icons/file_type_bitbucketpipeline.svg +1 -0
  334. package/static/c76328b/file-icons/file_type_bithound.svg +1 -0
  335. package/static/c76328b/file-icons/file_type_blade.svg +1 -0
  336. package/static/c76328b/file-icons/file_type_blitzbasic.svg +1 -0
  337. package/static/c76328b/file-icons/file_type_bolt.svg +1 -0
  338. package/static/c76328b/file-icons/file_type_bosque.svg +1 -0
  339. package/static/c76328b/file-icons/file_type_bower.svg +1 -0
  340. package/static/c76328b/file-icons/file_type_bower2.svg +1 -0
  341. package/static/c76328b/file-icons/file_type_browserslist.svg +1 -0
  342. package/static/c76328b/file-icons/file_type_bruno.svg +1 -0
  343. package/static/c76328b/file-icons/file_type_buckbuild.svg +1 -0
  344. package/static/c76328b/file-icons/file_type_buf.svg +1 -0
  345. package/static/c76328b/file-icons/file_type_bun.svg +1 -0
  346. package/static/c76328b/file-icons/file_type_bundlemon.svg +1 -0
  347. package/static/c76328b/file-icons/file_type_bundler.svg +1 -0
  348. package/static/c76328b/file-icons/file_type_bunfig.svg +1 -0
  349. package/static/c76328b/file-icons/file_type_c.svg +1 -0
  350. package/static/c76328b/file-icons/file_type_c2.svg +1 -0
  351. package/static/c76328b/file-icons/file_type_c3.svg +1 -0
  352. package/static/c76328b/file-icons/file_type_c_al.svg +1 -0
  353. package/static/c76328b/file-icons/file_type_cabal.svg +1 -0
  354. package/static/c76328b/file-icons/file_type_caddy.svg +1 -0
  355. package/static/c76328b/file-icons/file_type_cake.svg +1 -0
  356. package/static/c76328b/file-icons/file_type_cakephp.svg +1 -0
  357. package/static/c76328b/file-icons/file_type_capacitor.svg +1 -0
  358. package/static/c76328b/file-icons/file_type_cargo.svg +1 -0
  359. package/static/c76328b/file-icons/file_type_casc.svg +1 -0
  360. package/static/c76328b/file-icons/file_type_cddl.svg +1 -0
  361. package/static/c76328b/file-icons/file_type_cert.svg +1 -0
  362. package/static/c76328b/file-icons/file_type_ceylon.svg +1 -0
  363. package/static/c76328b/file-icons/file_type_cf.svg +1 -0
  364. package/static/c76328b/file-icons/file_type_cf2.svg +1 -0
  365. package/static/c76328b/file-icons/file_type_cfc.svg +1 -0
  366. package/static/c76328b/file-icons/file_type_cfc2.svg +1 -0
  367. package/static/c76328b/file-icons/file_type_cfm.svg +1 -0
  368. package/static/c76328b/file-icons/file_type_cfm2.svg +1 -0
  369. package/static/c76328b/file-icons/file_type_cheader.svg +1 -0
  370. package/static/c76328b/file-icons/file_type_chef.svg +1 -0
  371. package/static/c76328b/file-icons/file_type_chef_cookbook.svg +1 -0
  372. package/static/c76328b/file-icons/file_type_circleci.svg +1 -0
  373. package/static/c76328b/file-icons/file_type_class.svg +1 -0
  374. package/static/c76328b/file-icons/file_type_clojure.svg +1 -0
  375. package/static/c76328b/file-icons/file_type_clojurescript.svg +1 -0
  376. package/static/c76328b/file-icons/file_type_cloudfoundry.svg +1 -0
  377. package/static/c76328b/file-icons/file_type_cmake.svg +1 -0
  378. package/static/c76328b/file-icons/file_type_cobol.svg +1 -0
  379. package/static/c76328b/file-icons/file_type_codacy.svg +1 -0
  380. package/static/c76328b/file-icons/file_type_codeclimate.svg +1 -0
  381. package/static/c76328b/file-icons/file_type_codecov.svg +1 -0
  382. package/static/c76328b/file-icons/file_type_codekit.svg +1 -0
  383. package/static/c76328b/file-icons/file_type_codeowners.svg +1 -0
  384. package/static/c76328b/file-icons/file_type_codeql.svg +1 -0
  385. package/static/c76328b/file-icons/file_type_coderabbit.svg +1 -0
  386. package/static/c76328b/file-icons/file_type_coffeelint.svg +1 -0
  387. package/static/c76328b/file-icons/file_type_coffeescript.svg +1 -0
  388. package/static/c76328b/file-icons/file_type_commitizen.svg +1 -0
  389. package/static/c76328b/file-icons/file_type_commitlint.svg +1 -0
  390. package/static/c76328b/file-icons/file_type_compass.svg +1 -0
  391. package/static/c76328b/file-icons/file_type_composer.svg +1 -0
  392. package/static/c76328b/file-icons/file_type_conan.svg +1 -0
  393. package/static/c76328b/file-icons/file_type_conda.svg +1 -0
  394. package/static/c76328b/file-icons/file_type_config.svg +1 -0
  395. package/static/c76328b/file-icons/file_type_confluence.svg +1 -0
  396. package/static/c76328b/file-icons/file_type_coverage.svg +1 -0
  397. package/static/c76328b/file-icons/file_type_coveralls.svg +1 -0
  398. package/static/c76328b/file-icons/file_type_cpp.svg +1 -0
  399. package/static/c76328b/file-icons/file_type_cpp2.svg +1 -0
  400. package/static/c76328b/file-icons/file_type_cpp3.svg +1 -0
  401. package/static/c76328b/file-icons/file_type_cppheader.svg +1 -0
  402. package/static/c76328b/file-icons/file_type_crowdin.svg +1 -0
  403. package/static/c76328b/file-icons/file_type_crystal.svg +1 -0
  404. package/static/c76328b/file-icons/file_type_csharp.svg +1 -0
  405. package/static/c76328b/file-icons/file_type_csharp2.svg +1 -0
  406. package/static/c76328b/file-icons/file_type_cspell.svg +1 -0
  407. package/static/c76328b/file-icons/file_type_csproj.svg +1 -0
  408. package/static/c76328b/file-icons/file_type_css.svg +1 -0
  409. package/static/c76328b/file-icons/file_type_csscomb.svg +1 -0
  410. package/static/c76328b/file-icons/file_type_csslint.svg +1 -0
  411. package/static/c76328b/file-icons/file_type_cssmap.svg +1 -0
  412. package/static/c76328b/file-icons/file_type_cucumber.svg +1 -0
  413. package/static/c76328b/file-icons/file_type_cuda.svg +1 -0
  414. package/static/c76328b/file-icons/file_type_cvs.svg +1 -0
  415. package/static/c76328b/file-icons/file_type_cypress.svg +1 -0
  416. package/static/c76328b/file-icons/file_type_cypress_spec.svg +1 -0
  417. package/static/c76328b/file-icons/file_type_cython.svg +1 -0
  418. package/static/c76328b/file-icons/file_type_dal.svg +1 -0
  419. package/static/c76328b/file-icons/file_type_darcs.svg +1 -0
  420. package/static/c76328b/file-icons/file_type_dartlang.svg +1 -0
  421. package/static/c76328b/file-icons/file_type_dartlang_generated.svg +1 -0
  422. package/static/c76328b/file-icons/file_type_dartlang_ignore.svg +1 -0
  423. package/static/c76328b/file-icons/file_type_datadog.svg +1 -0
  424. package/static/c76328b/file-icons/file_type_db.svg +1 -0
  425. package/static/c76328b/file-icons/file_type_debian.svg +1 -0
  426. package/static/c76328b/file-icons/file_type_delphi.svg +1 -0
  427. package/static/c76328b/file-icons/file_type_deno.svg +1 -0
  428. package/static/c76328b/file-icons/file_type_denoify.svg +1 -0
  429. package/static/c76328b/file-icons/file_type_dependabot.svg +1 -0
  430. package/static/c76328b/file-icons/file_type_dependencies.svg +1 -0
  431. package/static/c76328b/file-icons/file_type_devcontainer.svg +1 -0
  432. package/static/c76328b/file-icons/file_type_dhall.svg +1 -0
  433. package/static/c76328b/file-icons/file_type_diff.svg +1 -0
  434. package/static/c76328b/file-icons/file_type_django.svg +1 -0
  435. package/static/c76328b/file-icons/file_type_dlang.svg +1 -0
  436. package/static/c76328b/file-icons/file_type_docker.svg +1 -0
  437. package/static/c76328b/file-icons/file_type_docker2.svg +1 -0
  438. package/static/c76328b/file-icons/file_type_dockertest.svg +1 -0
  439. package/static/c76328b/file-icons/file_type_dockertest2.svg +1 -0
  440. package/static/c76328b/file-icons/file_type_docpad.svg +1 -0
  441. package/static/c76328b/file-icons/file_type_docz.svg +1 -0
  442. package/static/c76328b/file-icons/file_type_dojo.svg +1 -0
  443. package/static/c76328b/file-icons/file_type_doppler.svg +1 -0
  444. package/static/c76328b/file-icons/file_type_dotenv.svg +1 -0
  445. package/static/c76328b/file-icons/file_type_dotjs.svg +1 -0
  446. package/static/c76328b/file-icons/file_type_doxygen.svg +1 -0
  447. package/static/c76328b/file-icons/file_type_drawio.svg +1 -0
  448. package/static/c76328b/file-icons/file_type_drone.svg +1 -0
  449. package/static/c76328b/file-icons/file_type_drools.svg +1 -0
  450. package/static/c76328b/file-icons/file_type_dtd.svg +1 -0
  451. package/static/c76328b/file-icons/file_type_dustjs.svg +1 -0
  452. package/static/c76328b/file-icons/file_type_dvc.svg +1 -0
  453. package/static/c76328b/file-icons/file_type_dylan.svg +1 -0
  454. package/static/c76328b/file-icons/file_type_earthly.svg +1 -0
  455. package/static/c76328b/file-icons/file_type_eas-metadata.svg +1 -0
  456. package/static/c76328b/file-icons/file_type_edge.svg +1 -0
  457. package/static/c76328b/file-icons/file_type_edge2.svg +1 -0
  458. package/static/c76328b/file-icons/file_type_editorconfig.svg +1 -0
  459. package/static/c76328b/file-icons/file_type_eex.svg +1 -0
  460. package/static/c76328b/file-icons/file_type_ejs.svg +1 -0
  461. package/static/c76328b/file-icons/file_type_elastic.svg +1 -0
  462. package/static/c76328b/file-icons/file_type_elasticbeanstalk.svg +1 -0
  463. package/static/c76328b/file-icons/file_type_eleventy.svg +1 -0
  464. package/static/c76328b/file-icons/file_type_eleventy2.svg +1 -0
  465. package/static/c76328b/file-icons/file_type_elixir.svg +1 -0
  466. package/static/c76328b/file-icons/file_type_elm.svg +1 -0
  467. package/static/c76328b/file-icons/file_type_elm2.svg +1 -0
  468. package/static/c76328b/file-icons/file_type_emacs.svg +1 -0
  469. package/static/c76328b/file-icons/file_type_ember.svg +1 -0
  470. package/static/c76328b/file-icons/file_type_ensime.svg +1 -0
  471. package/static/c76328b/file-icons/file_type_eps.svg +1 -0
  472. package/static/c76328b/file-icons/file_type_erb.svg +1 -0
  473. package/static/c76328b/file-icons/file_type_erlang.svg +1 -0
  474. package/static/c76328b/file-icons/file_type_erlang2.svg +1 -0
  475. package/static/c76328b/file-icons/file_type_esbuild.svg +1 -0
  476. package/static/c76328b/file-icons/file_type_eslint.svg +1 -0
  477. package/static/c76328b/file-icons/file_type_eslint2.svg +1 -0
  478. package/static/c76328b/file-icons/file_type_esphome.svg +1 -0
  479. package/static/c76328b/file-icons/file_type_excalidraw.svg +1 -0
  480. package/static/c76328b/file-icons/file_type_excel.svg +1 -0
  481. package/static/c76328b/file-icons/file_type_excel2.svg +1 -0
  482. package/static/c76328b/file-icons/file_type_expo.svg +1 -0
  483. package/static/c76328b/file-icons/file_type_falcon.svg +1 -0
  484. package/static/c76328b/file-icons/file_type_fantasticon.svg +1 -0
  485. package/static/c76328b/file-icons/file_type_fauna.svg +1 -0
  486. package/static/c76328b/file-icons/file_type_favicon.svg +1 -0
  487. package/static/c76328b/file-icons/file_type_fbx.svg +1 -0
  488. package/static/c76328b/file-icons/file_type_firebase.svg +1 -0
  489. package/static/c76328b/file-icons/file_type_firebasehosting.svg +1 -0
  490. package/static/c76328b/file-icons/file_type_firestore.svg +1 -0
  491. package/static/c76328b/file-icons/file_type_fitbit.svg +1 -0
  492. package/static/c76328b/file-icons/file_type_fla.svg +1 -0
  493. package/static/c76328b/file-icons/file_type_flareact.svg +1 -0
  494. package/static/c76328b/file-icons/file_type_flash.svg +1 -0
  495. package/static/c76328b/file-icons/file_type_floobits.svg +1 -0
  496. package/static/c76328b/file-icons/file_type_flow.svg +1 -0
  497. package/static/c76328b/file-icons/file_type_flutter.svg +1 -0
  498. package/static/c76328b/file-icons/file_type_flutter_package.svg +1 -0
  499. package/static/c76328b/file-icons/file_type_font.svg +1 -0
  500. package/static/c76328b/file-icons/file_type_formkit.svg +1 -0
  501. package/static/c76328b/file-icons/file_type_fortran.svg +1 -0
  502. package/static/c76328b/file-icons/file_type_fossa.svg +1 -0
  503. package/static/c76328b/file-icons/file_type_fossil.svg +1 -0
  504. package/static/c76328b/file-icons/file_type_freemarker.svg +1 -0
  505. package/static/c76328b/file-icons/file_type_frontcommerce.svg +1 -0
  506. package/static/c76328b/file-icons/file_type_fsharp.svg +1 -0
  507. package/static/c76328b/file-icons/file_type_fsharp2.svg +1 -0
  508. package/static/c76328b/file-icons/file_type_fsproj.svg +1 -0
  509. package/static/c76328b/file-icons/file_type_fthtml.svg +1 -0
  510. package/static/c76328b/file-icons/file_type_funding.svg +1 -0
  511. package/static/c76328b/file-icons/file_type_fusebox.svg +1 -0
  512. package/static/c76328b/file-icons/file_type_galen.svg +1 -0
  513. package/static/c76328b/file-icons/file_type_galen2.svg +1 -0
  514. package/static/c76328b/file-icons/file_type_gamemaker.svg +1 -0
  515. package/static/c76328b/file-icons/file_type_gamemaker2.svg +1 -0
  516. package/static/c76328b/file-icons/file_type_gamemaker81.svg +1 -0
  517. package/static/c76328b/file-icons/file_type_gatsby.svg +1 -0
  518. package/static/c76328b/file-icons/file_type_gcloud.svg +1 -0
  519. package/static/c76328b/file-icons/file_type_gcode.svg +1 -0
  520. package/static/c76328b/file-icons/file_type_gdscript.svg +1 -0
  521. package/static/c76328b/file-icons/file_type_genstat.svg +1 -0
  522. package/static/c76328b/file-icons/file_type_git.svg +1 -0
  523. package/static/c76328b/file-icons/file_type_git2.svg +1 -0
  524. package/static/c76328b/file-icons/file_type_gitlab.svg +1 -0
  525. package/static/c76328b/file-icons/file_type_gitpod.svg +1 -0
  526. package/static/c76328b/file-icons/file_type_gleam.svg +1 -0
  527. package/static/c76328b/file-icons/file_type_gleamconfig.svg +1 -0
  528. package/static/c76328b/file-icons/file_type_glide.svg +1 -0
  529. package/static/c76328b/file-icons/file_type_glitter.svg +1 -0
  530. package/static/c76328b/file-icons/file_type_glsl.svg +1 -0
  531. package/static/c76328b/file-icons/file_type_glyphs.svg +1 -0
  532. package/static/c76328b/file-icons/file_type_gnu.svg +1 -0
  533. package/static/c76328b/file-icons/file_type_gnuplot.svg +1 -0
  534. package/static/c76328b/file-icons/file_type_go.svg +1 -0
  535. package/static/c76328b/file-icons/file_type_go_aqua.svg +1 -0
  536. package/static/c76328b/file-icons/file_type_go_black.svg +1 -0
  537. package/static/c76328b/file-icons/file_type_go_fuchsia.svg +1 -0
  538. package/static/c76328b/file-icons/file_type_go_gopher.svg +1 -0
  539. package/static/c76328b/file-icons/file_type_go_lightblue.svg +1 -0
  540. package/static/c76328b/file-icons/file_type_go_package.svg +1 -0
  541. package/static/c76328b/file-icons/file_type_go_white.svg +1 -0
  542. package/static/c76328b/file-icons/file_type_go_work.svg +1 -0
  543. package/static/c76328b/file-icons/file_type_go_yellow.svg +1 -0
  544. package/static/c76328b/file-icons/file_type_goctl.svg +1 -0
  545. package/static/c76328b/file-icons/file_type_godot.svg +1 -0
  546. package/static/c76328b/file-icons/file_type_gpg.svg +1 -0
  547. package/static/c76328b/file-icons/file_type_gradle.svg +1 -0
  548. package/static/c76328b/file-icons/file_type_gradle2.svg +1 -0
  549. package/static/c76328b/file-icons/file_type_grain.svg +1 -0
  550. package/static/c76328b/file-icons/file_type_graphql.svg +1 -0
  551. package/static/c76328b/file-icons/file_type_graphql_config.svg +1 -0
  552. package/static/c76328b/file-icons/file_type_graphviz.svg +1 -0
  553. package/static/c76328b/file-icons/file_type_greenkeeper.svg +1 -0
  554. package/static/c76328b/file-icons/file_type_gridsome.svg +1 -0
  555. package/static/c76328b/file-icons/file_type_groovy.svg +1 -0
  556. package/static/c76328b/file-icons/file_type_groovy2.svg +1 -0
  557. package/static/c76328b/file-icons/file_type_grunt.svg +1 -0
  558. package/static/c76328b/file-icons/file_type_gulp.svg +1 -0
  559. package/static/c76328b/file-icons/file_type_haml.svg +1 -0
  560. package/static/c76328b/file-icons/file_type_handlebars.svg +1 -0
  561. package/static/c76328b/file-icons/file_type_handlebars2.svg +1 -0
  562. package/static/c76328b/file-icons/file_type_harbour.svg +1 -0
  563. package/static/c76328b/file-icons/file_type_hardhat.svg +1 -0
  564. package/static/c76328b/file-icons/file_type_hashicorp.svg +1 -0
  565. package/static/c76328b/file-icons/file_type_haskell.svg +1 -0
  566. package/static/c76328b/file-icons/file_type_haskell2.svg +1 -0
  567. package/static/c76328b/file-icons/file_type_haxe.svg +1 -0
  568. package/static/c76328b/file-icons/file_type_haxecheckstyle.svg +1 -0
  569. package/static/c76328b/file-icons/file_type_haxedevelop.svg +1 -0
  570. package/static/c76328b/file-icons/file_type_helix.svg +1 -0
  571. package/static/c76328b/file-icons/file_type_helm.svg +1 -0
  572. package/static/c76328b/file-icons/file_type_hjson.svg +1 -0
  573. package/static/c76328b/file-icons/file_type_hlsl.svg +1 -0
  574. package/static/c76328b/file-icons/file_type_homeassistant.svg +1 -0
  575. package/static/c76328b/file-icons/file_type_horusec.svg +1 -0
  576. package/static/c76328b/file-icons/file_type_host.svg +1 -0
  577. package/static/c76328b/file-icons/file_type_html.svg +1 -0
  578. package/static/c76328b/file-icons/file_type_htmlhint.svg +1 -0
  579. package/static/c76328b/file-icons/file_type_htmlvalidate.svg +1 -0
  580. package/static/c76328b/file-icons/file_type_http.svg +1 -0
  581. package/static/c76328b/file-icons/file_type_hunspell.svg +1 -0
  582. package/static/c76328b/file-icons/file_type_husky.svg +1 -0
  583. package/static/c76328b/file-icons/file_type_hy.svg +1 -0
  584. package/static/c76328b/file-icons/file_type_hygen.svg +1 -0
  585. package/static/c76328b/file-icons/file_type_hypr.svg +1 -0
  586. package/static/c76328b/file-icons/file_type_icl.svg +1 -0
  587. package/static/c76328b/file-icons/file_type_idris.svg +1 -0
  588. package/static/c76328b/file-icons/file_type_idrisbin.svg +1 -0
  589. package/static/c76328b/file-icons/file_type_idrispkg.svg +1 -0
  590. package/static/c76328b/file-icons/file_type_image.svg +1 -0
  591. package/static/c76328b/file-icons/file_type_imba.svg +1 -0
  592. package/static/c76328b/file-icons/file_type_inc.svg +1 -0
  593. package/static/c76328b/file-icons/file_type_infopath.svg +1 -0
  594. package/static/c76328b/file-icons/file_type_informix.svg +1 -0
  595. package/static/c76328b/file-icons/file_type_ini.svg +1 -0
  596. package/static/c76328b/file-icons/file_type_ink.svg +1 -0
  597. package/static/c76328b/file-icons/file_type_innosetup.svg +1 -0
  598. package/static/c76328b/file-icons/file_type_io.svg +1 -0
  599. package/static/c76328b/file-icons/file_type_iodine.svg +1 -0
  600. package/static/c76328b/file-icons/file_type_ionic.svg +1 -0
  601. package/static/c76328b/file-icons/file_type_jake.svg +1 -0
  602. package/static/c76328b/file-icons/file_type_janet.svg +1 -0
  603. package/static/c76328b/file-icons/file_type_jar.svg +1 -0
  604. package/static/c76328b/file-icons/file_type_jasmine.svg +1 -0
  605. package/static/c76328b/file-icons/file_type_java.svg +1 -0
  606. package/static/c76328b/file-icons/file_type_jbuilder.svg +1 -0
  607. package/static/c76328b/file-icons/file_type_jekyll.svg +1 -0
  608. package/static/c76328b/file-icons/file_type_jenkins.svg +1 -0
  609. package/static/c76328b/file-icons/file_type_jest.svg +1 -0
  610. package/static/c76328b/file-icons/file_type_jest_snapshot.svg +1 -0
  611. package/static/c76328b/file-icons/file_type_jinja.svg +1 -0
  612. package/static/c76328b/file-icons/file_type_jpm.svg +1 -0
  613. package/static/c76328b/file-icons/file_type_js.svg +1 -0
  614. package/static/c76328b/file-icons/file_type_js_official.svg +1 -0
  615. package/static/c76328b/file-icons/file_type_jsbeautify.svg +1 -0
  616. package/static/c76328b/file-icons/file_type_jsconfig.svg +1 -0
  617. package/static/c76328b/file-icons/file_type_jscpd.svg +1 -0
  618. package/static/c76328b/file-icons/file_type_jshint.svg +1 -0
  619. package/static/c76328b/file-icons/file_type_jsmap.svg +1 -0
  620. package/static/c76328b/file-icons/file_type_json.svg +1 -0
  621. package/static/c76328b/file-icons/file_type_json2.svg +1 -0
  622. package/static/c76328b/file-icons/file_type_json5.svg +1 -0
  623. package/static/c76328b/file-icons/file_type_json_official.svg +1 -0
  624. package/static/c76328b/file-icons/file_type_json_schema.svg +1 -0
  625. package/static/c76328b/file-icons/file_type_jsonld.svg +1 -0
  626. package/static/c76328b/file-icons/file_type_jsonnet.svg +1 -0
  627. package/static/c76328b/file-icons/file_type_jsp.svg +1 -0
  628. package/static/c76328b/file-icons/file_type_jss.svg +1 -0
  629. package/static/c76328b/file-icons/file_type_juice.svg +1 -0
  630. package/static/c76328b/file-icons/file_type_julia.svg +1 -0
  631. package/static/c76328b/file-icons/file_type_julia2.svg +1 -0
  632. package/static/c76328b/file-icons/file_type_jupyter.svg +1 -0
  633. package/static/c76328b/file-icons/file_type_k.svg +1 -0
  634. package/static/c76328b/file-icons/file_type_karma.svg +1 -0
  635. package/static/c76328b/file-icons/file_type_key.svg +1 -0
  636. package/static/c76328b/file-icons/file_type_kitchenci.svg +1 -0
  637. package/static/c76328b/file-icons/file_type_kite.svg +1 -0
  638. package/static/c76328b/file-icons/file_type_kivy.svg +1 -0
  639. package/static/c76328b/file-icons/file_type_knip.svg +1 -0
  640. package/static/c76328b/file-icons/file_type_kos.svg +1 -0
  641. package/static/c76328b/file-icons/file_type_kotlin.svg +1 -0
  642. package/static/c76328b/file-icons/file_type_kusto.svg +1 -0
  643. package/static/c76328b/file-icons/file_type_latino.svg +1 -0
  644. package/static/c76328b/file-icons/file_type_layout.svg +1 -0
  645. package/static/c76328b/file-icons/file_type_lerna.svg +1 -0
  646. package/static/c76328b/file-icons/file_type_less.svg +1 -0
  647. package/static/c76328b/file-icons/file_type_lex.svg +1 -0
  648. package/static/c76328b/file-icons/file_type_liara.svg +1 -0
  649. package/static/c76328b/file-icons/file_type_libreoffice_base.svg +1 -0
  650. package/static/c76328b/file-icons/file_type_libreoffice_calc.svg +1 -0
  651. package/static/c76328b/file-icons/file_type_libreoffice_draw.svg +1 -0
  652. package/static/c76328b/file-icons/file_type_libreoffice_impress.svg +1 -0
  653. package/static/c76328b/file-icons/file_type_libreoffice_math.svg +1 -0
  654. package/static/c76328b/file-icons/file_type_libreoffice_writer.svg +1 -0
  655. package/static/c76328b/file-icons/file_type_license.svg +1 -0
  656. package/static/c76328b/file-icons/file_type_licensebat.svg +1 -0
  657. package/static/c76328b/file-icons/file_type_light_actionscript2.svg +1 -0
  658. package/static/c76328b/file-icons/file_type_light_ada.svg +1 -0
  659. package/static/c76328b/file-icons/file_type_light_apl.svg +1 -0
  660. package/static/c76328b/file-icons/file_type_light_astro.svg +1 -0
  661. package/static/c76328b/file-icons/file_type_light_astroconfig.svg +1 -0
  662. package/static/c76328b/file-icons/file_type_light_babel.svg +1 -0
  663. package/static/c76328b/file-icons/file_type_light_babel2.svg +1 -0
  664. package/static/c76328b/file-icons/file_type_light_cabal.svg +1 -0
  665. package/static/c76328b/file-icons/file_type_light_circleci.svg +1 -0
  666. package/static/c76328b/file-icons/file_type_light_cloudfoundry.svg +1 -0
  667. package/static/c76328b/file-icons/file_type_light_codacy.svg +1 -0
  668. package/static/c76328b/file-icons/file_type_light_codeclimate.svg +1 -0
  669. package/static/c76328b/file-icons/file_type_light_codeowners.svg +1 -0
  670. package/static/c76328b/file-icons/file_type_light_config.svg +1 -0
  671. package/static/c76328b/file-icons/file_type_light_crystal.svg +1 -0
  672. package/static/c76328b/file-icons/file_type_light_cypress.svg +1 -0
  673. package/static/c76328b/file-icons/file_type_light_cypress_spec.svg +1 -0
  674. package/static/c76328b/file-icons/file_type_light_db.svg +1 -0
  675. package/static/c76328b/file-icons/file_type_light_deno.svg +1 -0
  676. package/static/c76328b/file-icons/file_type_light_dhall.svg +1 -0
  677. package/static/c76328b/file-icons/file_type_light_docpad.svg +1 -0
  678. package/static/c76328b/file-icons/file_type_light_drone.svg +1 -0
  679. package/static/c76328b/file-icons/file_type_light_eas-metadata.svg +1 -0
  680. package/static/c76328b/file-icons/file_type_light_eleventy.svg +1 -0
  681. package/static/c76328b/file-icons/file_type_light_eleventy2.svg +1 -0
  682. package/static/c76328b/file-icons/file_type_light_esphome.svg +1 -0
  683. package/static/c76328b/file-icons/file_type_light_expo.svg +1 -0
  684. package/static/c76328b/file-icons/file_type_light_firebasehosting.svg +1 -0
  685. package/static/c76328b/file-icons/file_type_light_fla.svg +1 -0
  686. package/static/c76328b/file-icons/file_type_light_font.svg +1 -0
  687. package/static/c76328b/file-icons/file_type_light_gamemaker2.svg +1 -0
  688. package/static/c76328b/file-icons/file_type_light_gradle.svg +1 -0
  689. package/static/c76328b/file-icons/file_type_light_hashicorp.svg +1 -0
  690. package/static/c76328b/file-icons/file_type_light_hjson.svg +1 -0
  691. package/static/c76328b/file-icons/file_type_light_ini.svg +1 -0
  692. package/static/c76328b/file-icons/file_type_light_io.svg +1 -0
  693. package/static/c76328b/file-icons/file_type_light_js.svg +1 -0
  694. package/static/c76328b/file-icons/file_type_light_jsconfig.svg +1 -0
  695. package/static/c76328b/file-icons/file_type_light_jsmap.svg +1 -0
  696. package/static/c76328b/file-icons/file_type_light_json.svg +1 -0
  697. package/static/c76328b/file-icons/file_type_light_json5.svg +1 -0
  698. package/static/c76328b/file-icons/file_type_light_json_schema.svg +1 -0
  699. package/static/c76328b/file-icons/file_type_light_jsonld.svg +1 -0
  700. package/static/c76328b/file-icons/file_type_light_kite.svg +1 -0
  701. package/static/c76328b/file-icons/file_type_light_lerna.svg +1 -0
  702. package/static/c76328b/file-icons/file_type_light_mailing.svg +1 -0
  703. package/static/c76328b/file-icons/file_type_light_mdx-components.svg +1 -0
  704. package/static/c76328b/file-icons/file_type_light_mdx.svg +1 -0
  705. package/static/c76328b/file-icons/file_type_light_mlang.svg +1 -0
  706. package/static/c76328b/file-icons/file_type_light_mustache.svg +1 -0
  707. package/static/c76328b/file-icons/file_type_light_netlify.svg +1 -0
  708. package/static/c76328b/file-icons/file_type_light_next.svg +1 -0
  709. package/static/c76328b/file-icons/file_type_light_nim.svg +1 -0
  710. package/static/c76328b/file-icons/file_type_light_nx.svg +1 -0
  711. package/static/c76328b/file-icons/file_type_light_objidconfig.svg +1 -0
  712. package/static/c76328b/file-icons/file_type_light_openHAB.svg +1 -0
  713. package/static/c76328b/file-icons/file_type_light_pcl.svg +1 -0
  714. package/static/c76328b/file-icons/file_type_light_pnpm.svg +1 -0
  715. package/static/c76328b/file-icons/file_type_light_prettier.svg +1 -0
  716. package/static/c76328b/file-icons/file_type_light_prisma.svg +1 -0
  717. package/static/c76328b/file-icons/file_type_light_purescript.svg +1 -0
  718. package/static/c76328b/file-icons/file_type_light_quasar.svg +1 -0
  719. package/static/c76328b/file-icons/file_type_light_raku.svg +1 -0
  720. package/static/c76328b/file-icons/file_type_light_razzle.svg +1 -0
  721. package/static/c76328b/file-icons/file_type_light_rehype.svg +1 -0
  722. package/static/c76328b/file-icons/file_type_light_remark.svg +1 -0
  723. package/static/c76328b/file-icons/file_type_light_replit.svg +1 -0
  724. package/static/c76328b/file-icons/file_type_light_retext.svg +1 -0
  725. package/static/c76328b/file-icons/file_type_light_rome.svg +1 -0
  726. package/static/c76328b/file-icons/file_type_light_rubocop.svg +1 -0
  727. package/static/c76328b/file-icons/file_type_light_rust.svg +1 -0
  728. package/static/c76328b/file-icons/file_type_light_rust_toolchain.svg +1 -0
  729. package/static/c76328b/file-icons/file_type_light_safetensors.svg +1 -0
  730. package/static/c76328b/file-icons/file_type_light_shaderlab.svg +1 -0
  731. package/static/c76328b/file-icons/file_type_light_solidity.svg +1 -0
  732. package/static/c76328b/file-icons/file_type_light_spin.svg +1 -0
  733. package/static/c76328b/file-icons/file_type_light_stylelint.svg +1 -0
  734. package/static/c76328b/file-icons/file_type_light_stylus.svg +1 -0
  735. package/static/c76328b/file-icons/file_type_light_symfony.svg +1 -0
  736. package/static/c76328b/file-icons/file_type_light_systemd.svg +1 -0
  737. package/static/c76328b/file-icons/file_type_light_systemverilog.svg +1 -0
  738. package/static/c76328b/file-icons/file_type_light_testcafe.svg +1 -0
  739. package/static/c76328b/file-icons/file_type_light_testjs.svg +1 -0
  740. package/static/c76328b/file-icons/file_type_light_tex.svg +1 -0
  741. package/static/c76328b/file-icons/file_type_light_tm.svg +1 -0
  742. package/static/c76328b/file-icons/file_type_light_tmux.svg +1 -0
  743. package/static/c76328b/file-icons/file_type_light_todo.svg +1 -0
  744. package/static/c76328b/file-icons/file_type_light_toit.svg +1 -0
  745. package/static/c76328b/file-icons/file_type_light_toml.svg +1 -0
  746. package/static/c76328b/file-icons/file_type_light_tree.svg +1 -0
  747. package/static/c76328b/file-icons/file_type_light_turbo.svg +1 -0
  748. package/static/c76328b/file-icons/file_type_light_unibeautify.svg +1 -0
  749. package/static/c76328b/file-icons/file_type_light_vash.svg +1 -0
  750. package/static/c76328b/file-icons/file_type_light_vercel.svg +1 -0
  751. package/static/c76328b/file-icons/file_type_light_vsix.svg +1 -0
  752. package/static/c76328b/file-icons/file_type_light_vsixmanifest.svg +1 -0
  753. package/static/c76328b/file-icons/file_type_light_xfl.svg +1 -0
  754. package/static/c76328b/file-icons/file_type_light_xorg.svg +1 -0
  755. package/static/c76328b/file-icons/file_type_light_yaml.svg +1 -0
  756. package/static/c76328b/file-icons/file_type_light_zeit.svg +1 -0
  757. package/static/c76328b/file-icons/file_type_lighthouse.svg +1 -0
  758. package/static/c76328b/file-icons/file_type_lilypond.svg +1 -0
  759. package/static/c76328b/file-icons/file_type_lime.svg +1 -0
  760. package/static/c76328b/file-icons/file_type_lintstagedrc.svg +1 -0
  761. package/static/c76328b/file-icons/file_type_liquid.svg +1 -0
  762. package/static/c76328b/file-icons/file_type_lisp.svg +1 -0
  763. package/static/c76328b/file-icons/file_type_livescript.svg +1 -0
  764. package/static/c76328b/file-icons/file_type_lnk.svg +1 -0
  765. package/static/c76328b/file-icons/file_type_locale.svg +1 -0
  766. package/static/c76328b/file-icons/file_type_log.svg +1 -0
  767. package/static/c76328b/file-icons/file_type_lolcode.svg +1 -0
  768. package/static/c76328b/file-icons/file_type_lsl.svg +1 -0
  769. package/static/c76328b/file-icons/file_type_lua.svg +1 -0
  770. package/static/c76328b/file-icons/file_type_luau.svg +1 -0
  771. package/static/c76328b/file-icons/file_type_lync.svg +1 -0
  772. package/static/c76328b/file-icons/file_type_mailing.svg +1 -0
  773. package/static/c76328b/file-icons/file_type_makefile.svg +1 -0
  774. package/static/c76328b/file-icons/file_type_manifest.svg +1 -0
  775. package/static/c76328b/file-icons/file_type_manifest_bak.svg +1 -0
  776. package/static/c76328b/file-icons/file_type_manifest_skip.svg +1 -0
  777. package/static/c76328b/file-icons/file_type_map.svg +1 -0
  778. package/static/c76328b/file-icons/file_type_mariadb.svg +1 -0
  779. package/static/c76328b/file-icons/file_type_markdown.svg +1 -0
  780. package/static/c76328b/file-icons/file_type_markdownlint.svg +1 -0
  781. package/static/c76328b/file-icons/file_type_markdownlint_ignore.svg +1 -0
  782. package/static/c76328b/file-icons/file_type_marko.svg +1 -0
  783. package/static/c76328b/file-icons/file_type_markojs.svg +1 -0
  784. package/static/c76328b/file-icons/file_type_master-co.svg +1 -0
  785. package/static/c76328b/file-icons/file_type_matlab.svg +1 -0
  786. package/static/c76328b/file-icons/file_type_maven.svg +1 -0
  787. package/static/c76328b/file-icons/file_type_maxscript.svg +1 -0
  788. package/static/c76328b/file-icons/file_type_maya.svg +1 -0
  789. package/static/c76328b/file-icons/file_type_mdx-components.svg +1 -0
  790. package/static/c76328b/file-icons/file_type_mdx.svg +1 -0
  791. package/static/c76328b/file-icons/file_type_mediawiki.svg +1 -0
  792. package/static/c76328b/file-icons/file_type_mercurial.svg +1 -0
  793. package/static/c76328b/file-icons/file_type_mermaid.svg +1 -0
  794. package/static/c76328b/file-icons/file_type_meson.svg +1 -0
  795. package/static/c76328b/file-icons/file_type_meteor.svg +1 -0
  796. package/static/c76328b/file-icons/file_type_mivascript.svg +1 -0
  797. package/static/c76328b/file-icons/file_type_mjml.svg +1 -0
  798. package/static/c76328b/file-icons/file_type_mlang.svg +1 -0
  799. package/static/c76328b/file-icons/file_type_mocha.svg +1 -0
  800. package/static/c76328b/file-icons/file_type_modernizr.svg +1 -0
  801. package/static/c76328b/file-icons/file_type_mojo.svg +1 -0
  802. package/static/c76328b/file-icons/file_type_mojolicious.svg +1 -0
  803. package/static/c76328b/file-icons/file_type_moleculer.svg +1 -0
  804. package/static/c76328b/file-icons/file_type_mondoo.svg +1 -0
  805. package/static/c76328b/file-icons/file_type_mongo.svg +1 -0
  806. package/static/c76328b/file-icons/file_type_monotone.svg +1 -0
  807. package/static/c76328b/file-icons/file_type_motif.svg +1 -0
  808. package/static/c76328b/file-icons/file_type_mson.svg +1 -0
  809. package/static/c76328b/file-icons/file_type_mustache.svg +1 -0
  810. package/static/c76328b/file-icons/file_type_mvt.svg +1 -0
  811. package/static/c76328b/file-icons/file_type_mvtcss.svg +1 -0
  812. package/static/c76328b/file-icons/file_type_mvtjs.svg +1 -0
  813. package/static/c76328b/file-icons/file_type_mysql.svg +1 -0
  814. package/static/c76328b/file-icons/file_type_ndst.svg +1 -0
  815. package/static/c76328b/file-icons/file_type_nearly.svg +1 -0
  816. package/static/c76328b/file-icons/file_type_nest_adapter_js.svg +1 -0
  817. package/static/c76328b/file-icons/file_type_nest_adapter_ts.svg +1 -0
  818. package/static/c76328b/file-icons/file_type_nest_controller_js.svg +1 -0
  819. package/static/c76328b/file-icons/file_type_nest_controller_ts.svg +1 -0
  820. package/static/c76328b/file-icons/file_type_nest_decorator_js.svg +1 -0
  821. package/static/c76328b/file-icons/file_type_nest_decorator_ts.svg +1 -0
  822. package/static/c76328b/file-icons/file_type_nest_filter_js.svg +1 -0
  823. package/static/c76328b/file-icons/file_type_nest_filter_ts.svg +1 -0
  824. package/static/c76328b/file-icons/file_type_nest_gateway_js.svg +1 -0
  825. package/static/c76328b/file-icons/file_type_nest_gateway_ts.svg +1 -0
  826. package/static/c76328b/file-icons/file_type_nest_guard_js.svg +1 -0
  827. package/static/c76328b/file-icons/file_type_nest_guard_ts.svg +1 -0
  828. package/static/c76328b/file-icons/file_type_nest_interceptor_js.svg +1 -0
  829. package/static/c76328b/file-icons/file_type_nest_interceptor_ts.svg +1 -0
  830. package/static/c76328b/file-icons/file_type_nest_middleware_js.svg +1 -0
  831. package/static/c76328b/file-icons/file_type_nest_middleware_ts.svg +1 -0
  832. package/static/c76328b/file-icons/file_type_nest_module_js.svg +1 -0
  833. package/static/c76328b/file-icons/file_type_nest_module_ts.svg +1 -0
  834. package/static/c76328b/file-icons/file_type_nest_pipe_js.svg +1 -0
  835. package/static/c76328b/file-icons/file_type_nest_pipe_ts.svg +1 -0
  836. package/static/c76328b/file-icons/file_type_nest_service_js.svg +1 -0
  837. package/static/c76328b/file-icons/file_type_nest_service_ts.svg +1 -0
  838. package/static/c76328b/file-icons/file_type_nestjs.svg +1 -0
  839. package/static/c76328b/file-icons/file_type_netlify.svg +1 -0
  840. package/static/c76328b/file-icons/file_type_next.svg +1 -0
  841. package/static/c76328b/file-icons/file_type_nextflow.svg +1 -0
  842. package/static/c76328b/file-icons/file_type_ng_component_css.svg +1 -0
  843. package/static/c76328b/file-icons/file_type_ng_component_dart.svg +1 -0
  844. package/static/c76328b/file-icons/file_type_ng_component_html.svg +1 -0
  845. package/static/c76328b/file-icons/file_type_ng_component_js.svg +1 -0
  846. package/static/c76328b/file-icons/file_type_ng_component_js2.svg +1 -0
  847. package/static/c76328b/file-icons/file_type_ng_component_less.svg +1 -0
  848. package/static/c76328b/file-icons/file_type_ng_component_sass.svg +1 -0
  849. package/static/c76328b/file-icons/file_type_ng_component_scss.svg +1 -0
  850. package/static/c76328b/file-icons/file_type_ng_component_ts.svg +1 -0
  851. package/static/c76328b/file-icons/file_type_ng_component_ts2.svg +1 -0
  852. package/static/c76328b/file-icons/file_type_ng_controller_js.svg +1 -0
  853. package/static/c76328b/file-icons/file_type_ng_controller_ts.svg +1 -0
  854. package/static/c76328b/file-icons/file_type_ng_directive_dart.svg +1 -0
  855. package/static/c76328b/file-icons/file_type_ng_directive_js.svg +1 -0
  856. package/static/c76328b/file-icons/file_type_ng_directive_js2.svg +1 -0
  857. package/static/c76328b/file-icons/file_type_ng_directive_ts.svg +1 -0
  858. package/static/c76328b/file-icons/file_type_ng_directive_ts2.svg +1 -0
  859. package/static/c76328b/file-icons/file_type_ng_guard_dart.svg +1 -0
  860. package/static/c76328b/file-icons/file_type_ng_guard_js.svg +1 -0
  861. package/static/c76328b/file-icons/file_type_ng_guard_ts.svg +1 -0
  862. package/static/c76328b/file-icons/file_type_ng_interceptor_dart.svg +1 -0
  863. package/static/c76328b/file-icons/file_type_ng_interceptor_js.svg +1 -0
  864. package/static/c76328b/file-icons/file_type_ng_interceptor_ts.svg +1 -0
  865. package/static/c76328b/file-icons/file_type_ng_module_dart.svg +1 -0
  866. package/static/c76328b/file-icons/file_type_ng_module_js.svg +1 -0
  867. package/static/c76328b/file-icons/file_type_ng_module_js2.svg +1 -0
  868. package/static/c76328b/file-icons/file_type_ng_module_ts.svg +1 -0
  869. package/static/c76328b/file-icons/file_type_ng_module_ts2.svg +1 -0
  870. package/static/c76328b/file-icons/file_type_ng_pipe_dart.svg +1 -0
  871. package/static/c76328b/file-icons/file_type_ng_pipe_js.svg +1 -0
  872. package/static/c76328b/file-icons/file_type_ng_pipe_js2.svg +1 -0
  873. package/static/c76328b/file-icons/file_type_ng_pipe_ts.svg +1 -0
  874. package/static/c76328b/file-icons/file_type_ng_pipe_ts2.svg +1 -0
  875. package/static/c76328b/file-icons/file_type_ng_routing_dart.svg +1 -0
  876. package/static/c76328b/file-icons/file_type_ng_routing_js.svg +1 -0
  877. package/static/c76328b/file-icons/file_type_ng_routing_js2.svg +1 -0
  878. package/static/c76328b/file-icons/file_type_ng_routing_ts.svg +1 -0
  879. package/static/c76328b/file-icons/file_type_ng_routing_ts2.svg +1 -0
  880. package/static/c76328b/file-icons/file_type_ng_service_dart.svg +1 -0
  881. package/static/c76328b/file-icons/file_type_ng_service_js.svg +1 -0
  882. package/static/c76328b/file-icons/file_type_ng_service_js2.svg +1 -0
  883. package/static/c76328b/file-icons/file_type_ng_service_ts.svg +1 -0
  884. package/static/c76328b/file-icons/file_type_ng_service_ts2.svg +1 -0
  885. package/static/c76328b/file-icons/file_type_ng_smart_component_dart.svg +1 -0
  886. package/static/c76328b/file-icons/file_type_ng_smart_component_js.svg +1 -0
  887. package/static/c76328b/file-icons/file_type_ng_smart_component_js2.svg +1 -0
  888. package/static/c76328b/file-icons/file_type_ng_smart_component_ts.svg +1 -0
  889. package/static/c76328b/file-icons/file_type_ng_smart_component_ts2.svg +1 -0
  890. package/static/c76328b/file-icons/file_type_ng_tailwind.svg +1 -0
  891. package/static/c76328b/file-icons/file_type_nginx.svg +1 -0
  892. package/static/c76328b/file-icons/file_type_nim.svg +1 -0
  893. package/static/c76328b/file-icons/file_type_nimble.svg +1 -0
  894. package/static/c76328b/file-icons/file_type_ninja.svg +1 -0
  895. package/static/c76328b/file-icons/file_type_nix.svg +1 -0
  896. package/static/c76328b/file-icons/file_type_njsproj.svg +1 -0
  897. package/static/c76328b/file-icons/file_type_noc.svg +1 -0
  898. package/static/c76328b/file-icons/file_type_node.svg +1 -0
  899. package/static/c76328b/file-icons/file_type_node2.svg +1 -0
  900. package/static/c76328b/file-icons/file_type_nodemon.svg +1 -0
  901. package/static/c76328b/file-icons/file_type_npm.svg +1 -0
  902. package/static/c76328b/file-icons/file_type_nsi.svg +1 -0
  903. package/static/c76328b/file-icons/file_type_nsri-integrity.svg +1 -0
  904. package/static/c76328b/file-icons/file_type_nsri.svg +1 -0
  905. package/static/c76328b/file-icons/file_type_nuget.svg +1 -0
  906. package/static/c76328b/file-icons/file_type_numpy.svg +1 -0
  907. package/static/c76328b/file-icons/file_type_nunjucks.svg +1 -0
  908. package/static/c76328b/file-icons/file_type_nuxt.svg +1 -0
  909. package/static/c76328b/file-icons/file_type_nx.svg +1 -0
  910. package/static/c76328b/file-icons/file_type_nyc.svg +1 -0
  911. package/static/c76328b/file-icons/file_type_objectivec.svg +1 -0
  912. package/static/c76328b/file-icons/file_type_objectivecpp.svg +1 -0
  913. package/static/c76328b/file-icons/file_type_objidconfig.svg +1 -0
  914. package/static/c76328b/file-icons/file_type_ocaml.svg +1 -0
  915. package/static/c76328b/file-icons/file_type_ocaml_intf.svg +1 -0
  916. package/static/c76328b/file-icons/file_type_ogone.svg +1 -0
  917. package/static/c76328b/file-icons/file_type_onenote.svg +1 -0
  918. package/static/c76328b/file-icons/file_type_openHAB.svg +1 -0
  919. package/static/c76328b/file-icons/file_type_opencl.svg +1 -0
  920. package/static/c76328b/file-icons/file_type_openscad.svg +1 -0
  921. package/static/c76328b/file-icons/file_type_org.svg +1 -0
  922. package/static/c76328b/file-icons/file_type_outlook.svg +1 -0
  923. package/static/c76328b/file-icons/file_type_ovpn.svg +1 -0
  924. package/static/c76328b/file-icons/file_type_package.svg +1 -0
  925. package/static/c76328b/file-icons/file_type_paket.svg +1 -0
  926. package/static/c76328b/file-icons/file_type_pandacss.svg +1 -0
  927. package/static/c76328b/file-icons/file_type_patch.svg +1 -0
  928. package/static/c76328b/file-icons/file_type_pcl.svg +1 -0
  929. package/static/c76328b/file-icons/file_type_pddl.svg +1 -0
  930. package/static/c76328b/file-icons/file_type_pddl_happenings.svg +1 -0
  931. package/static/c76328b/file-icons/file_type_pddl_plan.svg +1 -0
  932. package/static/c76328b/file-icons/file_type_pdf.svg +1 -0
  933. package/static/c76328b/file-icons/file_type_pdf2.svg +1 -0
  934. package/static/c76328b/file-icons/file_type_pdm.svg +1 -0
  935. package/static/c76328b/file-icons/file_type_peeky.svg +1 -0
  936. package/static/c76328b/file-icons/file_type_perl.svg +1 -0
  937. package/static/c76328b/file-icons/file_type_perl2.svg +1 -0
  938. package/static/c76328b/file-icons/file_type_perl6.svg +1 -0
  939. package/static/c76328b/file-icons/file_type_pgsql.svg +1 -0
  940. package/static/c76328b/file-icons/file_type_photoshop.svg +1 -0
  941. package/static/c76328b/file-icons/file_type_photoshop2.svg +1 -0
  942. package/static/c76328b/file-icons/file_type_php.svg +1 -0
  943. package/static/c76328b/file-icons/file_type_php2.svg +1 -0
  944. package/static/c76328b/file-icons/file_type_php3.svg +1 -0
  945. package/static/c76328b/file-icons/file_type_phpcsfixer.svg +1 -0
  946. package/static/c76328b/file-icons/file_type_phpstan.svg +1 -0
  947. package/static/c76328b/file-icons/file_type_phpunit.svg +1 -0
  948. package/static/c76328b/file-icons/file_type_phraseapp.svg +1 -0
  949. package/static/c76328b/file-icons/file_type_pine.svg +1 -0
  950. package/static/c76328b/file-icons/file_type_pip.svg +1 -0
  951. package/static/c76328b/file-icons/file_type_pipeline.svg +1 -0
  952. package/static/c76328b/file-icons/file_type_plantuml.svg +1 -0
  953. package/static/c76328b/file-icons/file_type_platformio.svg +1 -0
  954. package/static/c76328b/file-icons/file_type_playwright.svg +1 -0
  955. package/static/c76328b/file-icons/file_type_plsql.svg +1 -0
  956. package/static/c76328b/file-icons/file_type_plsql_package.svg +1 -0
  957. package/static/c76328b/file-icons/file_type_plsql_package_body.svg +1 -0
  958. package/static/c76328b/file-icons/file_type_plsql_package_header.svg +1 -0
  959. package/static/c76328b/file-icons/file_type_plsql_package_spec.svg +1 -0
  960. package/static/c76328b/file-icons/file_type_pm2.svg +1 -0
  961. package/static/c76328b/file-icons/file_type_pnpm.svg +1 -0
  962. package/static/c76328b/file-icons/file_type_poedit.svg +1 -0
  963. package/static/c76328b/file-icons/file_type_poetry.svg +1 -0
  964. package/static/c76328b/file-icons/file_type_polymer.svg +1 -0
  965. package/static/c76328b/file-icons/file_type_pony.svg +1 -0
  966. package/static/c76328b/file-icons/file_type_postcss.svg +1 -0
  967. package/static/c76328b/file-icons/file_type_postcssconfig.svg +1 -0
  968. package/static/c76328b/file-icons/file_type_postman.svg +1 -0
  969. package/static/c76328b/file-icons/file_type_powerpoint.svg +1 -0
  970. package/static/c76328b/file-icons/file_type_powerpoint2.svg +1 -0
  971. package/static/c76328b/file-icons/file_type_powershell.svg +1 -0
  972. package/static/c76328b/file-icons/file_type_powershell2.svg +1 -0
  973. package/static/c76328b/file-icons/file_type_powershell_format.svg +1 -0
  974. package/static/c76328b/file-icons/file_type_powershell_psd.svg +1 -0
  975. package/static/c76328b/file-icons/file_type_powershell_psd2.svg +1 -0
  976. package/static/c76328b/file-icons/file_type_powershell_psm.svg +1 -0
  977. package/static/c76328b/file-icons/file_type_powershell_psm2.svg +1 -0
  978. package/static/c76328b/file-icons/file_type_powershell_types.svg +1 -0
  979. package/static/c76328b/file-icons/file_type_preact.svg +1 -0
  980. package/static/c76328b/file-icons/file_type_precommit.svg +1 -0
  981. package/static/c76328b/file-icons/file_type_prettier.svg +1 -0
  982. package/static/c76328b/file-icons/file_type_prisma.svg +1 -0
  983. package/static/c76328b/file-icons/file_type_processinglang.svg +1 -0
  984. package/static/c76328b/file-icons/file_type_procfile.svg +1 -0
  985. package/static/c76328b/file-icons/file_type_progress.svg +1 -0
  986. package/static/c76328b/file-icons/file_type_prolog.svg +1 -0
  987. package/static/c76328b/file-icons/file_type_prometheus.svg +1 -0
  988. package/static/c76328b/file-icons/file_type_protobuf.svg +1 -0
  989. package/static/c76328b/file-icons/file_type_protractor.svg +1 -0
  990. package/static/c76328b/file-icons/file_type_publiccode.svg +1 -0
  991. package/static/c76328b/file-icons/file_type_publisher.svg +1 -0
  992. package/static/c76328b/file-icons/file_type_pug.svg +1 -0
  993. package/static/c76328b/file-icons/file_type_pulumi.svg +1 -0
  994. package/static/c76328b/file-icons/file_type_puppet.svg +1 -0
  995. package/static/c76328b/file-icons/file_type_purescript.svg +1 -0
  996. package/static/c76328b/file-icons/file_type_pyenv.svg +1 -0
  997. package/static/c76328b/file-icons/file_type_pyret.svg +1 -0
  998. package/static/c76328b/file-icons/file_type_pyscript.svg +1 -0
  999. package/static/c76328b/file-icons/file_type_python.svg +1 -0
  1000. package/static/c76328b/file-icons/file_type_pythowo.svg +1 -0
  1001. package/static/c76328b/file-icons/file_type_pytyped.svg +1 -0
  1002. package/static/c76328b/file-icons/file_type_pyup.svg +1 -0
  1003. package/static/c76328b/file-icons/file_type_q.svg +1 -0
  1004. package/static/c76328b/file-icons/file_type_qbs.svg +1 -0
  1005. package/static/c76328b/file-icons/file_type_qlikview.svg +1 -0
  1006. package/static/c76328b/file-icons/file_type_qml.svg +1 -0
  1007. package/static/c76328b/file-icons/file_type_qmldir.svg +1 -0
  1008. package/static/c76328b/file-icons/file_type_qsharp.svg +1 -0
  1009. package/static/c76328b/file-icons/file_type_quasar.svg +1 -0
  1010. package/static/c76328b/file-icons/file_type_r.svg +1 -0
  1011. package/static/c76328b/file-icons/file_type_ra_syntax_tree.svg +1 -0
  1012. package/static/c76328b/file-icons/file_type_racket.svg +1 -0
  1013. package/static/c76328b/file-icons/file_type_rails.svg +1 -0
  1014. package/static/c76328b/file-icons/file_type_rake.svg +1 -0
  1015. package/static/c76328b/file-icons/file_type_raku.svg +1 -0
  1016. package/static/c76328b/file-icons/file_type_raml.svg +1 -0
  1017. package/static/c76328b/file-icons/file_type_razor.svg +1 -0
  1018. package/static/c76328b/file-icons/file_type_razzle.svg +1 -0
  1019. package/static/c76328b/file-icons/file_type_reactjs.svg +1 -0
  1020. package/static/c76328b/file-icons/file_type_reacttemplate.svg +1 -0
  1021. package/static/c76328b/file-icons/file_type_reactts.svg +1 -0
  1022. package/static/c76328b/file-icons/file_type_reason.svg +1 -0
  1023. package/static/c76328b/file-icons/file_type_red.svg +1 -0
  1024. package/static/c76328b/file-icons/file_type_registry.svg +1 -0
  1025. package/static/c76328b/file-icons/file_type_rego.svg +1 -0
  1026. package/static/c76328b/file-icons/file_type_rehype.svg +1 -0
  1027. package/static/c76328b/file-icons/file_type_remark.svg +1 -0
  1028. package/static/c76328b/file-icons/file_type_renovate.svg +1 -0
  1029. package/static/c76328b/file-icons/file_type_replit.svg +1 -0
  1030. package/static/c76328b/file-icons/file_type_rescript.svg +1 -0
  1031. package/static/c76328b/file-icons/file_type_rest.svg +1 -0
  1032. package/static/c76328b/file-icons/file_type_retext.svg +1 -0
  1033. package/static/c76328b/file-icons/file_type_rexx.svg +1 -0
  1034. package/static/c76328b/file-icons/file_type_riot.svg +1 -0
  1035. package/static/c76328b/file-icons/file_type_rmd.svg +1 -0
  1036. package/static/c76328b/file-icons/file_type_rnc.svg +1 -0
  1037. package/static/c76328b/file-icons/file_type_robotframework.svg +1 -0
  1038. package/static/c76328b/file-icons/file_type_robots.svg +1 -0
  1039. package/static/c76328b/file-icons/file_type_rollup.svg +1 -0
  1040. package/static/c76328b/file-icons/file_type_rome.svg +1 -0
  1041. package/static/c76328b/file-icons/file_type_ron.svg +1 -0
  1042. package/static/c76328b/file-icons/file_type_rproj.svg +1 -0
  1043. package/static/c76328b/file-icons/file_type_rspec.svg +1 -0
  1044. package/static/c76328b/file-icons/file_type_rss.svg +1 -0
  1045. package/static/c76328b/file-icons/file_type_rubocop.svg +1 -0
  1046. package/static/c76328b/file-icons/file_type_ruby.svg +1 -0
  1047. package/static/c76328b/file-icons/file_type_rust.svg +1 -0
  1048. package/static/c76328b/file-icons/file_type_rust_toolchain.svg +1 -0
  1049. package/static/c76328b/file-icons/file_type_s-lang.svg +1 -0
  1050. package/static/c76328b/file-icons/file_type_safetensors.svg +1 -0
  1051. package/static/c76328b/file-icons/file_type_sails.svg +1 -0
  1052. package/static/c76328b/file-icons/file_type_saltstack.svg +1 -0
  1053. package/static/c76328b/file-icons/file_type_san.svg +1 -0
  1054. package/static/c76328b/file-icons/file_type_sapphire_framework_cli.svg +1 -0
  1055. package/static/c76328b/file-icons/file_type_sas.svg +1 -0
  1056. package/static/c76328b/file-icons/file_type_sass.svg +1 -0
  1057. package/static/c76328b/file-icons/file_type_sbt.svg +1 -0
  1058. package/static/c76328b/file-icons/file_type_scala.svg +1 -0
  1059. package/static/c76328b/file-icons/file_type_scilab.svg +1 -0
  1060. package/static/c76328b/file-icons/file_type_script.svg +1 -0
  1061. package/static/c76328b/file-icons/file_type_scss.svg +1 -0
  1062. package/static/c76328b/file-icons/file_type_scss2.svg +1 -0
  1063. package/static/c76328b/file-icons/file_type_sdlang.svg +1 -0
  1064. package/static/c76328b/file-icons/file_type_search_result.svg +1 -0
  1065. package/static/c76328b/file-icons/file_type_sentry.svg +1 -0
  1066. package/static/c76328b/file-icons/file_type_sequelize.svg +1 -0
  1067. package/static/c76328b/file-icons/file_type_serverless.svg +1 -0
  1068. package/static/c76328b/file-icons/file_type_shaderlab.svg +1 -0
  1069. package/static/c76328b/file-icons/file_type_shell.svg +1 -0
  1070. package/static/c76328b/file-icons/file_type_shellcheck.svg +1 -0
  1071. package/static/c76328b/file-icons/file_type_shuttle.svg +1 -0
  1072. package/static/c76328b/file-icons/file_type_silverstripe.svg +1 -0
  1073. package/static/c76328b/file-icons/file_type_sino.svg +1 -0
  1074. package/static/c76328b/file-icons/file_type_siyuan.svg +1 -0
  1075. package/static/c76328b/file-icons/file_type_sketch.svg +1 -0
  1076. package/static/c76328b/file-icons/file_type_skipper.svg +1 -0
  1077. package/static/c76328b/file-icons/file_type_slang.svg +1 -0
  1078. package/static/c76328b/file-icons/file_type_slashup.svg +1 -0
  1079. package/static/c76328b/file-icons/file_type_slice.svg +1 -0
  1080. package/static/c76328b/file-icons/file_type_slim.svg +1 -0
  1081. package/static/c76328b/file-icons/file_type_slint.svg +1 -0
  1082. package/static/c76328b/file-icons/file_type_sln.svg +1 -0
  1083. package/static/c76328b/file-icons/file_type_sln2.svg +1 -0
  1084. package/static/c76328b/file-icons/file_type_smarty.svg +1 -0
  1085. package/static/c76328b/file-icons/file_type_snakemake.svg +1 -0
  1086. package/static/c76328b/file-icons/file_type_snapcraft.svg +1 -0
  1087. package/static/c76328b/file-icons/file_type_snaplet.svg +1 -0
  1088. package/static/c76328b/file-icons/file_type_snort.svg +1 -0
  1089. package/static/c76328b/file-icons/file_type_snyk.svg +1 -0
  1090. package/static/c76328b/file-icons/file_type_solidarity.svg +1 -0
  1091. package/static/c76328b/file-icons/file_type_solidity.svg +1 -0
  1092. package/static/c76328b/file-icons/file_type_source.svg +1 -0
  1093. package/static/c76328b/file-icons/file_type_spacengine.svg +1 -0
  1094. package/static/c76328b/file-icons/file_type_sparql.svg +1 -0
  1095. package/static/c76328b/file-icons/file_type_spin.svg +1 -0
  1096. package/static/c76328b/file-icons/file_type_sqf.svg +1 -0
  1097. package/static/c76328b/file-icons/file_type_sql.svg +1 -0
  1098. package/static/c76328b/file-icons/file_type_sqlite.svg +1 -0
  1099. package/static/c76328b/file-icons/file_type_squirrel.svg +1 -0
  1100. package/static/c76328b/file-icons/file_type_sss.svg +1 -0
  1101. package/static/c76328b/file-icons/file_type_sst.svg +1 -0
  1102. package/static/c76328b/file-icons/file_type_stan.svg +1 -0
  1103. package/static/c76328b/file-icons/file_type_stata.svg +1 -0
  1104. package/static/c76328b/file-icons/file_type_stencil.svg +1 -0
  1105. package/static/c76328b/file-icons/file_type_storyboard.svg +1 -0
  1106. package/static/c76328b/file-icons/file_type_storybook.svg +1 -0
  1107. package/static/c76328b/file-icons/file_type_stryker.svg +1 -0
  1108. package/static/c76328b/file-icons/file_type_stylable.svg +1 -0
  1109. package/static/c76328b/file-icons/file_type_style.svg +1 -0
  1110. package/static/c76328b/file-icons/file_type_styled.svg +1 -0
  1111. package/static/c76328b/file-icons/file_type_stylelint.svg +1 -0
  1112. package/static/c76328b/file-icons/file_type_stylish_haskell.svg +1 -0
  1113. package/static/c76328b/file-icons/file_type_stylus.svg +1 -0
  1114. package/static/c76328b/file-icons/file_type_sublime.svg +1 -0
  1115. package/static/c76328b/file-icons/file_type_subversion.svg +1 -0
  1116. package/static/c76328b/file-icons/file_type_svelte.svg +1 -0
  1117. package/static/c76328b/file-icons/file_type_svelteconfig.svg +1 -0
  1118. package/static/c76328b/file-icons/file_type_svg.svg +1 -0
  1119. package/static/c76328b/file-icons/file_type_svgo.svg +1 -0
  1120. package/static/c76328b/file-icons/file_type_swagger.svg +1 -0
  1121. package/static/c76328b/file-icons/file_type_swc.svg +1 -0
  1122. package/static/c76328b/file-icons/file_type_swift.svg +1 -0
  1123. package/static/c76328b/file-icons/file_type_swig.svg +1 -0
  1124. package/static/c76328b/file-icons/file_type_symfony.svg +1 -0
  1125. package/static/c76328b/file-icons/file_type_systemd.svg +1 -0
  1126. package/static/c76328b/file-icons/file_type_systemverilog.svg +1 -0
  1127. package/static/c76328b/file-icons/file_type_t4tt.svg +1 -0
  1128. package/static/c76328b/file-icons/file_type_tailwind.svg +1 -0
  1129. package/static/c76328b/file-icons/file_type_tamagui.svg +1 -0
  1130. package/static/c76328b/file-icons/file_type_taskfile.svg +1 -0
  1131. package/static/c76328b/file-icons/file_type_tauri.svg +1 -0
  1132. package/static/c76328b/file-icons/file_type_tcl.svg +1 -0
  1133. package/static/c76328b/file-icons/file_type_teal.svg +1 -0
  1134. package/static/c76328b/file-icons/file_type_templ.svg +1 -0
  1135. package/static/c76328b/file-icons/file_type_tera.svg +1 -0
  1136. package/static/c76328b/file-icons/file_type_terraform.svg +1 -0
  1137. package/static/c76328b/file-icons/file_type_test.svg +1 -0
  1138. package/static/c76328b/file-icons/file_type_testcafe.svg +1 -0
  1139. package/static/c76328b/file-icons/file_type_testjs.svg +1 -0
  1140. package/static/c76328b/file-icons/file_type_testplane.svg +1 -0
  1141. package/static/c76328b/file-icons/file_type_testts.svg +1 -0
  1142. package/static/c76328b/file-icons/file_type_tex.svg +1 -0
  1143. package/static/c76328b/file-icons/file_type_text.svg +1 -0
  1144. package/static/c76328b/file-icons/file_type_textile.svg +1 -0
  1145. package/static/c76328b/file-icons/file_type_tfs.svg +1 -0
  1146. package/static/c76328b/file-icons/file_type_tiltfile.svg +1 -0
  1147. package/static/c76328b/file-icons/file_type_tm.svg +1 -0
  1148. package/static/c76328b/file-icons/file_type_tmux.svg +1 -0
  1149. package/static/c76328b/file-icons/file_type_todo.svg +1 -0
  1150. package/static/c76328b/file-icons/file_type_toit.svg +1 -0
  1151. package/static/c76328b/file-icons/file_type_toml.svg +1 -0
  1152. package/static/c76328b/file-icons/file_type_tox.svg +1 -0
  1153. package/static/c76328b/file-icons/file_type_travis.svg +1 -0
  1154. package/static/c76328b/file-icons/file_type_tree.svg +1 -0
  1155. package/static/c76328b/file-icons/file_type_tres.svg +1 -0
  1156. package/static/c76328b/file-icons/file_type_truffle.svg +1 -0
  1157. package/static/c76328b/file-icons/file_type_trunk.svg +1 -0
  1158. package/static/c76328b/file-icons/file_type_tsbuildinfo.svg +1 -0
  1159. package/static/c76328b/file-icons/file_type_tscn.svg +1 -0
  1160. package/static/c76328b/file-icons/file_type_tsconfig.svg +1 -0
  1161. package/static/c76328b/file-icons/file_type_tsconfig_official.svg +1 -0
  1162. package/static/c76328b/file-icons/file_type_tslint.svg +1 -0
  1163. package/static/c76328b/file-icons/file_type_tt.svg +1 -0
  1164. package/static/c76328b/file-icons/file_type_ttcn.svg +1 -0
  1165. package/static/c76328b/file-icons/file_type_tuc.svg +1 -0
  1166. package/static/c76328b/file-icons/file_type_turbo.svg +1 -0
  1167. package/static/c76328b/file-icons/file_type_twig.svg +1 -0
  1168. package/static/c76328b/file-icons/file_type_typedoc.svg +1 -0
  1169. package/static/c76328b/file-icons/file_type_typescript.svg +1 -0
  1170. package/static/c76328b/file-icons/file_type_typescript_official.svg +1 -0
  1171. package/static/c76328b/file-icons/file_type_typescriptdef.svg +1 -0
  1172. package/static/c76328b/file-icons/file_type_typescriptdef_official.svg +1 -0
  1173. package/static/c76328b/file-icons/file_type_typo3.svg +1 -0
  1174. package/static/c76328b/file-icons/file_type_uiua.svg +1 -0
  1175. package/static/c76328b/file-icons/file_type_unibeautify.svg +1 -0
  1176. package/static/c76328b/file-icons/file_type_unison.svg +1 -0
  1177. package/static/c76328b/file-icons/file_type_unlicense.svg +1 -0
  1178. package/static/c76328b/file-icons/file_type_unocss.svg +1 -0
  1179. package/static/c76328b/file-icons/file_type_vagrant.svg +1 -0
  1180. package/static/c76328b/file-icons/file_type_vala.svg +1 -0
  1181. package/static/c76328b/file-icons/file_type_vanilla_extract.svg +1 -0
  1182. package/static/c76328b/file-icons/file_type_vapi.svg +1 -0
  1183. package/static/c76328b/file-icons/file_type_vapor.svg +1 -0
  1184. package/static/c76328b/file-icons/file_type_vash.svg +1 -0
  1185. package/static/c76328b/file-icons/file_type_vb.svg +1 -0
  1186. package/static/c76328b/file-icons/file_type_vba.svg +1 -0
  1187. package/static/c76328b/file-icons/file_type_vbhtml.svg +1 -0
  1188. package/static/c76328b/file-icons/file_type_vbproj.svg +1 -0
  1189. package/static/c76328b/file-icons/file_type_vcxproj.svg +1 -0
  1190. package/static/c76328b/file-icons/file_type_velocity.svg +1 -0
  1191. package/static/c76328b/file-icons/file_type_vento.svg +1 -0
  1192. package/static/c76328b/file-icons/file_type_vercel.svg +1 -0
  1193. package/static/c76328b/file-icons/file_type_verilog.svg +1 -0
  1194. package/static/c76328b/file-icons/file_type_vhdl.svg +1 -0
  1195. package/static/c76328b/file-icons/file_type_video.svg +1 -0
  1196. package/static/c76328b/file-icons/file_type_view.svg +1 -0
  1197. package/static/c76328b/file-icons/file_type_vim.svg +1 -0
  1198. package/static/c76328b/file-icons/file_type_vite.svg +1 -0
  1199. package/static/c76328b/file-icons/file_type_vitest.svg +1 -0
  1200. package/static/c76328b/file-icons/file_type_vlang.svg +1 -0
  1201. package/static/c76328b/file-icons/file_type_volt.svg +1 -0
  1202. package/static/c76328b/file-icons/file_type_vscode-insiders.svg +1 -0
  1203. package/static/c76328b/file-icons/file_type_vscode.svg +1 -0
  1204. package/static/c76328b/file-icons/file_type_vscode2.svg +1 -0
  1205. package/static/c76328b/file-icons/file_type_vscode3.svg +1 -0
  1206. package/static/c76328b/file-icons/file_type_vscode_test.svg +1 -0
  1207. package/static/c76328b/file-icons/file_type_vsix.svg +1 -0
  1208. package/static/c76328b/file-icons/file_type_vsixmanifest.svg +1 -0
  1209. package/static/c76328b/file-icons/file_type_vue.svg +1 -0
  1210. package/static/c76328b/file-icons/file_type_vueconfig.svg +1 -0
  1211. package/static/c76328b/file-icons/file_type_vyper.svg +1 -0
  1212. package/static/c76328b/file-icons/file_type_wallaby.svg +1 -0
  1213. package/static/c76328b/file-icons/file_type_wally.svg +1 -0
  1214. package/static/c76328b/file-icons/file_type_wasm.svg +1 -0
  1215. package/static/c76328b/file-icons/file_type_watchmanconfig.svg +1 -0
  1216. package/static/c76328b/file-icons/file_type_wdio.svg +1 -0
  1217. package/static/c76328b/file-icons/file_type_webpack.svg +1 -0
  1218. package/static/c76328b/file-icons/file_type_wenyan.svg +1 -0
  1219. package/static/c76328b/file-icons/file_type_wercker.svg +1 -0
  1220. package/static/c76328b/file-icons/file_type_wgsl.svg +1 -0
  1221. package/static/c76328b/file-icons/file_type_wikitext.svg +1 -0
  1222. package/static/c76328b/file-icons/file_type_windi.svg +1 -0
  1223. package/static/c76328b/file-icons/file_type_wit.svg +1 -0
  1224. package/static/c76328b/file-icons/file_type_wolfram.svg +1 -0
  1225. package/static/c76328b/file-icons/file_type_word.svg +1 -0
  1226. package/static/c76328b/file-icons/file_type_word2.svg +1 -0
  1227. package/static/c76328b/file-icons/file_type_wpml.svg +1 -0
  1228. package/static/c76328b/file-icons/file_type_wurst.svg +1 -0
  1229. package/static/c76328b/file-icons/file_type_wxml.svg +1 -0
  1230. package/static/c76328b/file-icons/file_type_wxss.svg +1 -0
  1231. package/static/c76328b/file-icons/file_type_wxt.svg +1 -0
  1232. package/static/c76328b/file-icons/file_type_xcode.svg +1 -0
  1233. package/static/c76328b/file-icons/file_type_xfl.svg +1 -0
  1234. package/static/c76328b/file-icons/file_type_xib.svg +1 -0
  1235. package/static/c76328b/file-icons/file_type_xliff.svg +1 -0
  1236. package/static/c76328b/file-icons/file_type_xmake.svg +1 -0
  1237. package/static/c76328b/file-icons/file_type_xml.svg +1 -0
  1238. package/static/c76328b/file-icons/file_type_xo.svg +1 -0
  1239. package/static/c76328b/file-icons/file_type_xorg.svg +1 -0
  1240. package/static/c76328b/file-icons/file_type_xquery.svg +1 -0
  1241. package/static/c76328b/file-icons/file_type_xsl.svg +1 -0
  1242. package/static/c76328b/file-icons/file_type_yacc.svg +1 -0
  1243. package/static/c76328b/file-icons/file_type_yaml.svg +1 -0
  1244. package/static/c76328b/file-icons/file_type_yamllint.svg +1 -0
  1245. package/static/c76328b/file-icons/file_type_yandex.svg +1 -0
  1246. package/static/c76328b/file-icons/file_type_yang.svg +1 -0
  1247. package/static/c76328b/file-icons/file_type_yarn.svg +1 -0
  1248. package/static/c76328b/file-icons/file_type_yeoman.svg +1 -0
  1249. package/static/c76328b/file-icons/file_type_zeit.svg +1 -0
  1250. package/static/c76328b/file-icons/file_type_zig.svg +1 -0
  1251. package/static/c76328b/file-icons/file_type_zip.svg +1 -0
  1252. package/static/c76328b/file-icons/file_type_zip2.svg +1 -0
  1253. package/static/c76328b/file-icons/folder_type_android.svg +1 -0
  1254. package/static/c76328b/file-icons/folder_type_android_opened.svg +1 -0
  1255. package/static/c76328b/file-icons/folder_type_api.svg +1 -0
  1256. package/static/c76328b/file-icons/folder_type_api_opened.svg +1 -0
  1257. package/static/c76328b/file-icons/folder_type_app.svg +1 -0
  1258. package/static/c76328b/file-icons/folder_type_app_opened.svg +1 -0
  1259. package/static/c76328b/file-icons/folder_type_arangodb.svg +1 -0
  1260. package/static/c76328b/file-icons/folder_type_arangodb_opened.svg +1 -0
  1261. package/static/c76328b/file-icons/folder_type_asset.svg +1 -0
  1262. package/static/c76328b/file-icons/folder_type_asset_opened.svg +1 -0
  1263. package/static/c76328b/file-icons/folder_type_audio.svg +1 -0
  1264. package/static/c76328b/file-icons/folder_type_audio_opened.svg +1 -0
  1265. package/static/c76328b/file-icons/folder_type_aurelia.svg +1 -0
  1266. package/static/c76328b/file-icons/folder_type_aurelia_opened.svg +1 -0
  1267. package/static/c76328b/file-icons/folder_type_aws.svg +1 -0
  1268. package/static/c76328b/file-icons/folder_type_aws_opened.svg +1 -0
  1269. package/static/c76328b/file-icons/folder_type_azure.svg +1 -0
  1270. package/static/c76328b/file-icons/folder_type_azure_opened.svg +1 -0
  1271. package/static/c76328b/file-icons/folder_type_azurepipelines.svg +1 -0
  1272. package/static/c76328b/file-icons/folder_type_azurepipelines_opened.svg +1 -0
  1273. package/static/c76328b/file-icons/folder_type_binary.svg +1 -0
  1274. package/static/c76328b/file-icons/folder_type_binary_opened.svg +1 -0
  1275. package/static/c76328b/file-icons/folder_type_bloc.svg +1 -0
  1276. package/static/c76328b/file-icons/folder_type_bloc_opened.svg +1 -0
  1277. package/static/c76328b/file-icons/folder_type_blueprint.svg +1 -0
  1278. package/static/c76328b/file-icons/folder_type_blueprint_opened.svg +1 -0
  1279. package/static/c76328b/file-icons/folder_type_bot.svg +1 -0
  1280. package/static/c76328b/file-icons/folder_type_bot_opened.svg +1 -0
  1281. package/static/c76328b/file-icons/folder_type_bower.svg +1 -0
  1282. package/static/c76328b/file-icons/folder_type_bower_opened.svg +1 -0
  1283. package/static/c76328b/file-icons/folder_type_buildkite.svg +1 -0
  1284. package/static/c76328b/file-icons/folder_type_buildkite_opened.svg +1 -0
  1285. package/static/c76328b/file-icons/folder_type_cake.svg +1 -0
  1286. package/static/c76328b/file-icons/folder_type_cake_opened.svg +1 -0
  1287. package/static/c76328b/file-icons/folder_type_certificate.svg +1 -0
  1288. package/static/c76328b/file-icons/folder_type_certificate_opened.svg +1 -0
  1289. package/static/c76328b/file-icons/folder_type_changesets.svg +1 -0
  1290. package/static/c76328b/file-icons/folder_type_changesets_opened.svg +1 -0
  1291. package/static/c76328b/file-icons/folder_type_chef.svg +1 -0
  1292. package/static/c76328b/file-icons/folder_type_chef_opened.svg +1 -0
  1293. package/static/c76328b/file-icons/folder_type_circleci.svg +1 -0
  1294. package/static/c76328b/file-icons/folder_type_circleci_opened.svg +1 -0
  1295. package/static/c76328b/file-icons/folder_type_cli.svg +1 -0
  1296. package/static/c76328b/file-icons/folder_type_cli_opened.svg +1 -0
  1297. package/static/c76328b/file-icons/folder_type_client.svg +1 -0
  1298. package/static/c76328b/file-icons/folder_type_client_opened.svg +1 -0
  1299. package/static/c76328b/file-icons/folder_type_cmake.svg +1 -0
  1300. package/static/c76328b/file-icons/folder_type_cmake_opened.svg +1 -0
  1301. package/static/c76328b/file-icons/folder_type_common.svg +1 -0
  1302. package/static/c76328b/file-icons/folder_type_common_opened.svg +1 -0
  1303. package/static/c76328b/file-icons/folder_type_component.svg +1 -0
  1304. package/static/c76328b/file-icons/folder_type_component_opened.svg +1 -0
  1305. package/static/c76328b/file-icons/folder_type_composer.svg +1 -0
  1306. package/static/c76328b/file-icons/folder_type_composer_opened.svg +1 -0
  1307. package/static/c76328b/file-icons/folder_type_config.svg +1 -0
  1308. package/static/c76328b/file-icons/folder_type_config_opened.svg +1 -0
  1309. package/static/c76328b/file-icons/folder_type_controller.svg +1 -0
  1310. package/static/c76328b/file-icons/folder_type_controller_opened.svg +1 -0
  1311. package/static/c76328b/file-icons/folder_type_coverage.svg +1 -0
  1312. package/static/c76328b/file-icons/folder_type_coverage_opened.svg +1 -0
  1313. package/static/c76328b/file-icons/folder_type_css.svg +1 -0
  1314. package/static/c76328b/file-icons/folder_type_css_opened.svg +1 -0
  1315. package/static/c76328b/file-icons/folder_type_cubit.svg +1 -0
  1316. package/static/c76328b/file-icons/folder_type_cubit_opened.svg +1 -0
  1317. package/static/c76328b/file-icons/folder_type_cypress.svg +1 -0
  1318. package/static/c76328b/file-icons/folder_type_cypress_opened.svg +1 -0
  1319. package/static/c76328b/file-icons/folder_type_dapr.svg +1 -0
  1320. package/static/c76328b/file-icons/folder_type_dapr_opened.svg +1 -0
  1321. package/static/c76328b/file-icons/folder_type_datadog.svg +1 -0
  1322. package/static/c76328b/file-icons/folder_type_datadog_opened.svg +1 -0
  1323. package/static/c76328b/file-icons/folder_type_db.svg +1 -0
  1324. package/static/c76328b/file-icons/folder_type_db_opened.svg +1 -0
  1325. package/static/c76328b/file-icons/folder_type_debian.svg +1 -0
  1326. package/static/c76328b/file-icons/folder_type_debian_opened.svg +1 -0
  1327. package/static/c76328b/file-icons/folder_type_dependabot.svg +1 -0
  1328. package/static/c76328b/file-icons/folder_type_dependabot_opened.svg +1 -0
  1329. package/static/c76328b/file-icons/folder_type_devcontainer.svg +1 -0
  1330. package/static/c76328b/file-icons/folder_type_devcontainer_opened.svg +1 -0
  1331. package/static/c76328b/file-icons/folder_type_dist.svg +1 -0
  1332. package/static/c76328b/file-icons/folder_type_dist_opened.svg +1 -0
  1333. package/static/c76328b/file-icons/folder_type_docker.svg +1 -0
  1334. package/static/c76328b/file-icons/folder_type_docker_opened.svg +1 -0
  1335. package/static/c76328b/file-icons/folder_type_docs.svg +1 -0
  1336. package/static/c76328b/file-icons/folder_type_docs_opened.svg +1 -0
  1337. package/static/c76328b/file-icons/folder_type_e2e.svg +1 -0
  1338. package/static/c76328b/file-icons/folder_type_e2e_opened.svg +1 -0
  1339. package/static/c76328b/file-icons/folder_type_elasticbeanstalk.svg +1 -0
  1340. package/static/c76328b/file-icons/folder_type_elasticbeanstalk_opened.svg +1 -0
  1341. package/static/c76328b/file-icons/folder_type_electron.svg +1 -0
  1342. package/static/c76328b/file-icons/folder_type_electron_opened.svg +1 -0
  1343. package/static/c76328b/file-icons/folder_type_expo.svg +1 -0
  1344. package/static/c76328b/file-icons/folder_type_expo_opened.svg +1 -0
  1345. package/static/c76328b/file-icons/folder_type_favicon.svg +1 -0
  1346. package/static/c76328b/file-icons/folder_type_favicon_opened.svg +1 -0
  1347. package/static/c76328b/file-icons/folder_type_flow.svg +1 -0
  1348. package/static/c76328b/file-icons/folder_type_flow_opened.svg +1 -0
  1349. package/static/c76328b/file-icons/folder_type_fonts.svg +1 -0
  1350. package/static/c76328b/file-icons/folder_type_fonts_opened.svg +1 -0
  1351. package/static/c76328b/file-icons/folder_type_frontcommerce.svg +1 -0
  1352. package/static/c76328b/file-icons/folder_type_frontcommerce_opened.svg +1 -0
  1353. package/static/c76328b/file-icons/folder_type_gcp.svg +1 -0
  1354. package/static/c76328b/file-icons/folder_type_gcp_opened.svg +1 -0
  1355. package/static/c76328b/file-icons/folder_type_git.svg +1 -0
  1356. package/static/c76328b/file-icons/folder_type_git_opened.svg +1 -0
  1357. package/static/c76328b/file-icons/folder_type_github.svg +1 -0
  1358. package/static/c76328b/file-icons/folder_type_github_opened.svg +1 -0
  1359. package/static/c76328b/file-icons/folder_type_gitlab.svg +1 -0
  1360. package/static/c76328b/file-icons/folder_type_gitlab_opened.svg +1 -0
  1361. package/static/c76328b/file-icons/folder_type_gradle.svg +1 -0
  1362. package/static/c76328b/file-icons/folder_type_gradle_opened.svg +1 -0
  1363. package/static/c76328b/file-icons/folder_type_graphql.svg +1 -0
  1364. package/static/c76328b/file-icons/folder_type_graphql_opened.svg +1 -0
  1365. package/static/c76328b/file-icons/folder_type_grunt.svg +1 -0
  1366. package/static/c76328b/file-icons/folder_type_grunt_opened.svg +1 -0
  1367. package/static/c76328b/file-icons/folder_type_gulp.svg +1 -0
  1368. package/static/c76328b/file-icons/folder_type_gulp_opened.svg +1 -0
  1369. package/static/c76328b/file-icons/folder_type_haxelib.svg +1 -0
  1370. package/static/c76328b/file-icons/folder_type_haxelib_opened.svg +1 -0
  1371. package/static/c76328b/file-icons/folder_type_helper.svg +1 -0
  1372. package/static/c76328b/file-icons/folder_type_helper_opened.svg +1 -0
  1373. package/static/c76328b/file-icons/folder_type_hook.svg +1 -0
  1374. package/static/c76328b/file-icons/folder_type_hook_opened.svg +1 -0
  1375. package/static/c76328b/file-icons/folder_type_husky.svg +1 -0
  1376. package/static/c76328b/file-icons/folder_type_husky_opened.svg +1 -0
  1377. package/static/c76328b/file-icons/folder_type_idea.svg +1 -0
  1378. package/static/c76328b/file-icons/folder_type_idea_opened.svg +1 -0
  1379. package/static/c76328b/file-icons/folder_type_images.svg +1 -0
  1380. package/static/c76328b/file-icons/folder_type_images_opened.svg +1 -0
  1381. package/static/c76328b/file-icons/folder_type_include.svg +1 -0
  1382. package/static/c76328b/file-icons/folder_type_include_opened.svg +1 -0
  1383. package/static/c76328b/file-icons/folder_type_interfaces.svg +1 -0
  1384. package/static/c76328b/file-icons/folder_type_interfaces_opened.svg +1 -0
  1385. package/static/c76328b/file-icons/folder_type_ios.svg +1 -0
  1386. package/static/c76328b/file-icons/folder_type_ios_opened.svg +1 -0
  1387. package/static/c76328b/file-icons/folder_type_js.svg +1 -0
  1388. package/static/c76328b/file-icons/folder_type_js_opened.svg +1 -0
  1389. package/static/c76328b/file-icons/folder_type_json.svg +1 -0
  1390. package/static/c76328b/file-icons/folder_type_json_official.svg +1 -0
  1391. package/static/c76328b/file-icons/folder_type_json_official_opened.svg +1 -0
  1392. package/static/c76328b/file-icons/folder_type_json_opened.svg +1 -0
  1393. package/static/c76328b/file-icons/folder_type_kubernetes.svg +1 -0
  1394. package/static/c76328b/file-icons/folder_type_kubernetes_opened.svg +1 -0
  1395. package/static/c76328b/file-icons/folder_type_less.svg +1 -0
  1396. package/static/c76328b/file-icons/folder_type_less_opened.svg +1 -0
  1397. package/static/c76328b/file-icons/folder_type_library.svg +1 -0
  1398. package/static/c76328b/file-icons/folder_type_library_opened.svg +1 -0
  1399. package/static/c76328b/file-icons/folder_type_light_cypress.svg +1 -0
  1400. package/static/c76328b/file-icons/folder_type_light_cypress_opened.svg +1 -0
  1401. package/static/c76328b/file-icons/folder_type_light_electron.svg +1 -0
  1402. package/static/c76328b/file-icons/folder_type_light_electron_opened.svg +1 -0
  1403. package/static/c76328b/file-icons/folder_type_light_expo.svg +1 -0
  1404. package/static/c76328b/file-icons/folder_type_light_expo_opened.svg +1 -0
  1405. package/static/c76328b/file-icons/folder_type_light_fonts.svg +1 -0
  1406. package/static/c76328b/file-icons/folder_type_light_fonts_opened.svg +1 -0
  1407. package/static/c76328b/file-icons/folder_type_light_gradle.svg +1 -0
  1408. package/static/c76328b/file-icons/folder_type_light_gradle_opened.svg +1 -0
  1409. package/static/c76328b/file-icons/folder_type_light_meteor.svg +1 -0
  1410. package/static/c76328b/file-icons/folder_type_light_meteor_opened.svg +1 -0
  1411. package/static/c76328b/file-icons/folder_type_light_mysql.svg +1 -0
  1412. package/static/c76328b/file-icons/folder_type_light_mysql_opened.svg +1 -0
  1413. package/static/c76328b/file-icons/folder_type_light_node.svg +1 -0
  1414. package/static/c76328b/file-icons/folder_type_light_node_opened.svg +1 -0
  1415. package/static/c76328b/file-icons/folder_type_light_redux.svg +1 -0
  1416. package/static/c76328b/file-icons/folder_type_light_redux_opened.svg +1 -0
  1417. package/static/c76328b/file-icons/folder_type_light_sass.svg +1 -0
  1418. package/static/c76328b/file-icons/folder_type_light_sass_opened.svg +1 -0
  1419. package/static/c76328b/file-icons/folder_type_linux.svg +1 -0
  1420. package/static/c76328b/file-icons/folder_type_linux_opened.svg +1 -0
  1421. package/static/c76328b/file-icons/folder_type_locale.svg +1 -0
  1422. package/static/c76328b/file-icons/folder_type_locale_opened.svg +1 -0
  1423. package/static/c76328b/file-icons/folder_type_log.svg +1 -0
  1424. package/static/c76328b/file-icons/folder_type_log_opened.svg +1 -0
  1425. package/static/c76328b/file-icons/folder_type_macos.svg +1 -0
  1426. package/static/c76328b/file-icons/folder_type_macos_opened.svg +1 -0
  1427. package/static/c76328b/file-icons/folder_type_mariadb.svg +1 -0
  1428. package/static/c76328b/file-icons/folder_type_mariadb_opened.svg +1 -0
  1429. package/static/c76328b/file-icons/folder_type_maven.svg +1 -0
  1430. package/static/c76328b/file-icons/folder_type_maven_opened.svg +1 -0
  1431. package/static/c76328b/file-icons/folder_type_mediawiki.svg +1 -0
  1432. package/static/c76328b/file-icons/folder_type_mediawiki_opened.svg +1 -0
  1433. package/static/c76328b/file-icons/folder_type_memcached.svg +1 -0
  1434. package/static/c76328b/file-icons/folder_type_memcached_opened.svg +1 -0
  1435. package/static/c76328b/file-icons/folder_type_meteor.svg +1 -0
  1436. package/static/c76328b/file-icons/folder_type_meteor_opened.svg +1 -0
  1437. package/static/c76328b/file-icons/folder_type_middleware.svg +1 -0
  1438. package/static/c76328b/file-icons/folder_type_middleware_opened.svg +1 -0
  1439. package/static/c76328b/file-icons/folder_type_minikube.svg +1 -0
  1440. package/static/c76328b/file-icons/folder_type_minikube_opened.svg +1 -0
  1441. package/static/c76328b/file-icons/folder_type_mjml.svg +1 -0
  1442. package/static/c76328b/file-icons/folder_type_mjml_opened.svg +1 -0
  1443. package/static/c76328b/file-icons/folder_type_mock.svg +1 -0
  1444. package/static/c76328b/file-icons/folder_type_mock_opened.svg +1 -0
  1445. package/static/c76328b/file-icons/folder_type_model.svg +1 -0
  1446. package/static/c76328b/file-icons/folder_type_model_opened.svg +1 -0
  1447. package/static/c76328b/file-icons/folder_type_module.svg +1 -0
  1448. package/static/c76328b/file-icons/folder_type_module_opened.svg +1 -0
  1449. package/static/c76328b/file-icons/folder_type_mojo.svg +1 -0
  1450. package/static/c76328b/file-icons/folder_type_mojo_opened.svg +1 -0
  1451. package/static/c76328b/file-icons/folder_type_mongodb.svg +1 -0
  1452. package/static/c76328b/file-icons/folder_type_mongodb_opened.svg +1 -0
  1453. package/static/c76328b/file-icons/folder_type_mysql.svg +1 -0
  1454. package/static/c76328b/file-icons/folder_type_mysql_opened.svg +1 -0
  1455. package/static/c76328b/file-icons/folder_type_next.svg +1 -0
  1456. package/static/c76328b/file-icons/folder_type_next_opened.svg +1 -0
  1457. package/static/c76328b/file-icons/folder_type_nginx.svg +1 -0
  1458. package/static/c76328b/file-icons/folder_type_nginx_opened.svg +1 -0
  1459. package/static/c76328b/file-icons/folder_type_nix.svg +1 -0
  1460. package/static/c76328b/file-icons/folder_type_nix_opened.svg +1 -0
  1461. package/static/c76328b/file-icons/folder_type_node.svg +1 -0
  1462. package/static/c76328b/file-icons/folder_type_node_opened.svg +1 -0
  1463. package/static/c76328b/file-icons/folder_type_notebooks.svg +1 -0
  1464. package/static/c76328b/file-icons/folder_type_notebooks_opened.svg +1 -0
  1465. package/static/c76328b/file-icons/folder_type_notification.svg +1 -0
  1466. package/static/c76328b/file-icons/folder_type_notification_opened.svg +1 -0
  1467. package/static/c76328b/file-icons/folder_type_nuget.svg +1 -0
  1468. package/static/c76328b/file-icons/folder_type_nuget_opened.svg +1 -0
  1469. package/static/c76328b/file-icons/folder_type_nuxt.svg +1 -0
  1470. package/static/c76328b/file-icons/folder_type_nuxt_opened.svg +1 -0
  1471. package/static/c76328b/file-icons/folder_type_package.svg +1 -0
  1472. package/static/c76328b/file-icons/folder_type_package_opened.svg +1 -0
  1473. package/static/c76328b/file-icons/folder_type_paket.svg +1 -0
  1474. package/static/c76328b/file-icons/folder_type_paket_opened.svg +1 -0
  1475. package/static/c76328b/file-icons/folder_type_php.svg +1 -0
  1476. package/static/c76328b/file-icons/folder_type_php_opened.svg +1 -0
  1477. package/static/c76328b/file-icons/folder_type_platformio.svg +1 -0
  1478. package/static/c76328b/file-icons/folder_type_platformio_opened.svg +1 -0
  1479. package/static/c76328b/file-icons/folder_type_plugin.svg +1 -0
  1480. package/static/c76328b/file-icons/folder_type_plugin_opened.svg +1 -0
  1481. package/static/c76328b/file-icons/folder_type_prisma.svg +1 -0
  1482. package/static/c76328b/file-icons/folder_type_prisma_opened.svg +1 -0
  1483. package/static/c76328b/file-icons/folder_type_private.svg +1 -0
  1484. package/static/c76328b/file-icons/folder_type_private_opened.svg +1 -0
  1485. package/static/c76328b/file-icons/folder_type_public.svg +1 -0
  1486. package/static/c76328b/file-icons/folder_type_public_opened.svg +1 -0
  1487. package/static/c76328b/file-icons/folder_type_python.svg +1 -0
  1488. package/static/c76328b/file-icons/folder_type_python_opened.svg +1 -0
  1489. package/static/c76328b/file-icons/folder_type_ravendb.svg +1 -0
  1490. package/static/c76328b/file-icons/folder_type_ravendb_opened.svg +1 -0
  1491. package/static/c76328b/file-icons/folder_type_redis.svg +1 -0
  1492. package/static/c76328b/file-icons/folder_type_redis_opened.svg +1 -0
  1493. package/static/c76328b/file-icons/folder_type_redux.svg +1 -0
  1494. package/static/c76328b/file-icons/folder_type_redux_opened.svg +1 -0
  1495. package/static/c76328b/file-icons/folder_type_route.svg +1 -0
  1496. package/static/c76328b/file-icons/folder_type_route_opened.svg +1 -0
  1497. package/static/c76328b/file-icons/folder_type_sass.svg +1 -0
  1498. package/static/c76328b/file-icons/folder_type_sass_opened.svg +1 -0
  1499. package/static/c76328b/file-icons/folder_type_script.svg +1 -0
  1500. package/static/c76328b/file-icons/folder_type_script_opened.svg +1 -0
  1501. package/static/c76328b/file-icons/folder_type_server.svg +1 -0
  1502. package/static/c76328b/file-icons/folder_type_server_opened.svg +1 -0
  1503. package/static/c76328b/file-icons/folder_type_services.svg +1 -0
  1504. package/static/c76328b/file-icons/folder_type_services_opened.svg +1 -0
  1505. package/static/c76328b/file-icons/folder_type_shared.svg +1 -0
  1506. package/static/c76328b/file-icons/folder_type_shared_opened.svg +1 -0
  1507. package/static/c76328b/file-icons/folder_type_snaplet.svg +1 -0
  1508. package/static/c76328b/file-icons/folder_type_snaplet_opened.svg +1 -0
  1509. package/static/c76328b/file-icons/folder_type_spin.svg +1 -0
  1510. package/static/c76328b/file-icons/folder_type_spin_opened.svg +1 -0
  1511. package/static/c76328b/file-icons/folder_type_src.svg +1 -0
  1512. package/static/c76328b/file-icons/folder_type_src_opened.svg +1 -0
  1513. package/static/c76328b/file-icons/folder_type_sso.svg +1 -0
  1514. package/static/c76328b/file-icons/folder_type_sso_opened.svg +1 -0
  1515. package/static/c76328b/file-icons/folder_type_story.svg +1 -0
  1516. package/static/c76328b/file-icons/folder_type_story_opened.svg +1 -0
  1517. package/static/c76328b/file-icons/folder_type_style.svg +1 -0
  1518. package/static/c76328b/file-icons/folder_type_style_opened.svg +1 -0
  1519. package/static/c76328b/file-icons/folder_type_supabase.svg +1 -0
  1520. package/static/c76328b/file-icons/folder_type_supabase_opened.svg +1 -0
  1521. package/static/c76328b/file-icons/folder_type_svelte.svg +1 -0
  1522. package/static/c76328b/file-icons/folder_type_svelte_opened.svg +1 -0
  1523. package/static/c76328b/file-icons/folder_type_tauri.svg +1 -0
  1524. package/static/c76328b/file-icons/folder_type_tauri_opened.svg +1 -0
  1525. package/static/c76328b/file-icons/folder_type_temp.svg +1 -0
  1526. package/static/c76328b/file-icons/folder_type_temp_opened.svg +1 -0
  1527. package/static/c76328b/file-icons/folder_type_template.svg +1 -0
  1528. package/static/c76328b/file-icons/folder_type_template_opened.svg +1 -0
  1529. package/static/c76328b/file-icons/folder_type_test.svg +1 -0
  1530. package/static/c76328b/file-icons/folder_type_test_opened.svg +1 -0
  1531. package/static/c76328b/file-icons/folder_type_theme.svg +1 -0
  1532. package/static/c76328b/file-icons/folder_type_theme_opened.svg +1 -0
  1533. package/static/c76328b/file-icons/folder_type_tools.svg +1 -0
  1534. package/static/c76328b/file-icons/folder_type_tools_opened.svg +1 -0
  1535. package/static/c76328b/file-icons/folder_type_travis.svg +1 -0
  1536. package/static/c76328b/file-icons/folder_type_travis_opened.svg +1 -0
  1537. package/static/c76328b/file-icons/folder_type_trunk.svg +1 -0
  1538. package/static/c76328b/file-icons/folder_type_trunk_opened.svg +1 -0
  1539. package/static/c76328b/file-icons/folder_type_turbo.svg +1 -0
  1540. package/static/c76328b/file-icons/folder_type_turbo_opened.svg +1 -0
  1541. package/static/c76328b/file-icons/folder_type_typescript.svg +1 -0
  1542. package/static/c76328b/file-icons/folder_type_typescript_opened.svg +1 -0
  1543. package/static/c76328b/file-icons/folder_type_typings.svg +1 -0
  1544. package/static/c76328b/file-icons/folder_type_typings2.svg +1 -0
  1545. package/static/c76328b/file-icons/folder_type_typings2_opened.svg +1 -0
  1546. package/static/c76328b/file-icons/folder_type_typings_opened.svg +1 -0
  1547. package/static/c76328b/file-icons/folder_type_vagrant.svg +1 -0
  1548. package/static/c76328b/file-icons/folder_type_vagrant_opened.svg +1 -0
  1549. package/static/c76328b/file-icons/folder_type_vercel.svg +1 -0
  1550. package/static/c76328b/file-icons/folder_type_vercel_opened.svg +1 -0
  1551. package/static/c76328b/file-icons/folder_type_video.svg +1 -0
  1552. package/static/c76328b/file-icons/folder_type_video_opened.svg +1 -0
  1553. package/static/c76328b/file-icons/folder_type_view.svg +1 -0
  1554. package/static/c76328b/file-icons/folder_type_view_opened.svg +1 -0
  1555. package/static/c76328b/file-icons/folder_type_vs.svg +1 -0
  1556. package/static/c76328b/file-icons/folder_type_vs2.svg +1 -0
  1557. package/static/c76328b/file-icons/folder_type_vs2_opened.svg +1 -0
  1558. package/static/c76328b/file-icons/folder_type_vs_opened.svg +1 -0
  1559. package/static/c76328b/file-icons/folder_type_vscode.svg +1 -0
  1560. package/static/c76328b/file-icons/folder_type_vscode2.svg +1 -0
  1561. package/static/c76328b/file-icons/folder_type_vscode2_opened.svg +1 -0
  1562. package/static/c76328b/file-icons/folder_type_vscode3.svg +1 -0
  1563. package/static/c76328b/file-icons/folder_type_vscode3_opened.svg +1 -0
  1564. package/static/c76328b/file-icons/folder_type_vscode_opened.svg +1 -0
  1565. package/static/c76328b/file-icons/folder_type_vscode_test.svg +1 -0
  1566. package/static/c76328b/file-icons/folder_type_vscode_test2.svg +1 -0
  1567. package/static/c76328b/file-icons/folder_type_vscode_test2_opened.svg +1 -0
  1568. package/static/c76328b/file-icons/folder_type_vscode_test3.svg +1 -0
  1569. package/static/c76328b/file-icons/folder_type_vscode_test3_opened.svg +1 -0
  1570. package/static/c76328b/file-icons/folder_type_vscode_test_opened.svg +1 -0
  1571. package/static/c76328b/file-icons/folder_type_webpack.svg +1 -0
  1572. package/static/c76328b/file-icons/folder_type_webpack_opened.svg +1 -0
  1573. package/static/c76328b/file-icons/folder_type_windows.svg +1 -0
  1574. package/static/c76328b/file-icons/folder_type_windows_opened.svg +1 -0
  1575. package/static/c76328b/file-icons/folder_type_wit.svg +1 -0
  1576. package/static/c76328b/file-icons/folder_type_wit_opened.svg +1 -0
  1577. package/static/c76328b/file-icons/folder_type_www.svg +1 -0
  1578. package/static/c76328b/file-icons/folder_type_www_opened.svg +1 -0
  1579. package/static/c76328b/file-icons/folder_type_yarn.svg +1 -0
  1580. package/static/c76328b/file-icons/folder_type_yarn_opened.svg +1 -0
  1581. package/static/c76328b/fonts/FiraCode-VariableFont.ttf +0 -0
  1582. package/static/c76328b/icons/add.svg +1 -0
  1583. package/static/c76328b/icons/arrow-down.svg +3 -0
  1584. package/static/c76328b/icons/arrow-left.svg +3 -0
  1585. package/static/c76328b/icons/arrow-right.svg +3 -0
  1586. package/static/c76328b/icons/arrow-up.svg +3 -0
  1587. package/static/c76328b/icons/blank.svg +1 -0
  1588. package/static/c76328b/icons/book.svg +1 -0
  1589. package/static/c76328b/icons/case-sensitive.svg +1 -0
  1590. package/static/c76328b/icons/check.svg +1 -0
  1591. package/static/c76328b/icons/chevron-down.svg +1 -0
  1592. package/static/c76328b/icons/chevron-left.svg +1 -0
  1593. package/static/c76328b/icons/chevron-right.svg +3 -0
  1594. package/static/c76328b/icons/chevron-up.svg +1 -0
  1595. package/static/c76328b/icons/chrome-close.svg +3 -0
  1596. package/static/c76328b/icons/chrome-maximize.svg +3 -0
  1597. package/static/c76328b/icons/chrome-minimize.svg +3 -0
  1598. package/static/c76328b/icons/chrome-restore.svg +1 -0
  1599. package/static/c76328b/icons/circle-filled.svg +1 -0
  1600. package/static/c76328b/icons/clear-all.svg +1 -0
  1601. package/static/c76328b/icons/close.svg +1 -0
  1602. package/static/c76328b/icons/cloud.svg +1 -0
  1603. package/static/c76328b/icons/collapse-all.svg +1 -0
  1604. package/static/c76328b/icons/debug-all.svg +1 -0
  1605. package/static/c76328b/icons/debug-alt-2.svg +3 -0
  1606. package/static/c76328b/icons/debug-alt-small.svg +1 -0
  1607. package/static/c76328b/icons/debug-alt.svg +1 -0
  1608. package/static/c76328b/icons/debug-breakpoint-conditional-unverified.svg +1 -0
  1609. package/static/c76328b/icons/debug-breakpoint-conditional.svg +1 -0
  1610. package/static/c76328b/icons/debug-breakpoint-data-unverified.svg +1 -0
  1611. package/static/c76328b/icons/debug-breakpoint-data.svg +1 -0
  1612. package/static/c76328b/icons/debug-breakpoint-function-unverified.svg +1 -0
  1613. package/static/c76328b/icons/debug-breakpoint-function.svg +1 -0
  1614. package/static/c76328b/icons/debug-breakpoint-log-unverified.svg +1 -0
  1615. package/static/c76328b/icons/debug-breakpoint-log.svg +1 -0
  1616. package/static/c76328b/icons/debug-breakpoint-unsupported.svg +1 -0
  1617. package/static/c76328b/icons/debug-console.svg +1 -0
  1618. package/static/c76328b/icons/debug-continue-small.svg +1 -0
  1619. package/static/c76328b/icons/debug-continue.svg +1 -0
  1620. package/static/c76328b/icons/debug-coverage.svg +1 -0
  1621. package/static/c76328b/icons/debug-disconnect.svg +1 -0
  1622. package/static/c76328b/icons/debug-line-by-line.svg +1 -0
  1623. package/static/c76328b/icons/debug-pause.svg +1 -0
  1624. package/static/c76328b/icons/debug-rerun.svg +1 -0
  1625. package/static/c76328b/icons/debug-restart-frame.svg +1 -0
  1626. package/static/c76328b/icons/debug-restart.svg +1 -0
  1627. package/static/c76328b/icons/debug-reverse-continue.svg +1 -0
  1628. package/static/c76328b/icons/debug-stackframe-active.svg +1 -0
  1629. package/static/c76328b/icons/debug-stackframe.svg +1 -0
  1630. package/static/c76328b/icons/debug-start.svg +1 -0
  1631. package/static/c76328b/icons/debug-step-back.svg +1 -0
  1632. package/static/c76328b/icons/debug-step-into.svg +1 -0
  1633. package/static/c76328b/icons/debug-step-out.svg +1 -0
  1634. package/static/c76328b/icons/debug-step-over.svg +1 -0
  1635. package/static/c76328b/icons/debug-stop.svg +1 -0
  1636. package/static/c76328b/icons/debug.svg +1 -0
  1637. package/static/c76328b/icons/discard.svg +1 -0
  1638. package/static/c76328b/icons/edit.svg +1 -0
  1639. package/static/c76328b/icons/ellipsis.svg +5 -0
  1640. package/static/c76328b/icons/error.svg +1 -0
  1641. package/static/c76328b/icons/exclude.svg +1 -0
  1642. package/static/c76328b/icons/extensionDefaultIcon.png +0 -0
  1643. package/static/c76328b/icons/extensions.svg +3 -0
  1644. package/static/c76328b/icons/files.svg +3 -0
  1645. package/static/c76328b/icons/filter.svg +1 -0
  1646. package/static/c76328b/icons/go-to-file.svg +1 -0
  1647. package/static/c76328b/icons/icon-close.svg +3 -0
  1648. package/static/c76328b/icons/icon-source-control.svg +3 -0
  1649. package/static/c76328b/icons/icon-sync.svg +1 -0
  1650. package/static/c76328b/icons/icon.png +0 -0
  1651. package/static/c76328b/icons/icon.svg +3 -0
  1652. package/static/c76328b/icons/info.svg +1 -0
  1653. package/static/c76328b/icons/language-icon.svg +1 -0
  1654. package/static/c76328b/icons/link-external.svg +1 -0
  1655. package/static/c76328b/icons/list-flat.svg +1 -0
  1656. package/static/c76328b/icons/list-tree.svg +1 -0
  1657. package/static/c76328b/icons/new-file.svg +1 -0
  1658. package/static/c76328b/icons/new-folder.svg +1 -0
  1659. package/static/c76328b/icons/newline.svg +1 -0
  1660. package/static/c76328b/icons/open-preview.svg +1 -0
  1661. package/static/c76328b/icons/play.svg +1 -0
  1662. package/static/c76328b/icons/preserve-case.svg +1 -0
  1663. package/static/c76328b/icons/progress.svg +1 -0
  1664. package/static/c76328b/icons/pwa-icon-192.png +0 -0
  1665. package/static/c76328b/icons/pwa-icon-512.png +0 -0
  1666. package/static/c76328b/icons/record-keys.svg +1 -0
  1667. package/static/c76328b/icons/refresh.svg +1 -0
  1668. package/static/c76328b/icons/regex.svg +1 -0
  1669. package/static/c76328b/icons/remove.svg +1 -0
  1670. package/static/c76328b/icons/replace-all.svg +1 -0
  1671. package/static/c76328b/icons/replace.svg +1 -0
  1672. package/static/c76328b/icons/run-all.svg +1 -0
  1673. package/static/c76328b/icons/search.svg +3 -0
  1674. package/static/c76328b/icons/settings-gear.svg +3 -0
  1675. package/static/c76328b/icons/source-control.svg +3 -0
  1676. package/static/c76328b/icons/split-horizontal.svg +1 -0
  1677. package/static/c76328b/icons/squiggly-error.svg +1 -0
  1678. package/static/c76328b/icons/squiggly-warning.svg +1 -0
  1679. package/static/c76328b/icons/symbol-array.svg +3 -0
  1680. package/static/c76328b/icons/symbol-boolean.svg +3 -0
  1681. package/static/c76328b/icons/symbol-class.svg +3 -0
  1682. package/static/c76328b/icons/symbol-color.svg +3 -0
  1683. package/static/c76328b/icons/symbol-constant.svg +4 -0
  1684. package/static/c76328b/icons/symbol-enum-member.svg +3 -0
  1685. package/static/c76328b/icons/symbol-enum.svg +3 -0
  1686. package/static/c76328b/icons/symbol-event.svg +3 -0
  1687. package/static/c76328b/icons/symbol-field.svg +3 -0
  1688. package/static/c76328b/icons/symbol-file.svg +3 -0
  1689. package/static/c76328b/icons/symbol-interface.svg +3 -0
  1690. package/static/c76328b/icons/symbol-key.svg +3 -0
  1691. package/static/c76328b/icons/symbol-keyword.svg +3 -0
  1692. package/static/c76328b/icons/symbol-method.svg +3 -0
  1693. package/static/c76328b/icons/symbol-misc.svg +3 -0
  1694. package/static/c76328b/icons/symbol-namespace.svg +3 -0
  1695. package/static/c76328b/icons/symbol-numeric.svg +3 -0
  1696. package/static/c76328b/icons/symbol-operator.svg +3 -0
  1697. package/static/c76328b/icons/symbol-parameter.svg +3 -0
  1698. package/static/c76328b/icons/symbol-property.svg +3 -0
  1699. package/static/c76328b/icons/symbol-ruler.svg +3 -0
  1700. package/static/c76328b/icons/symbol-snippet.svg +3 -0
  1701. package/static/c76328b/icons/symbol-string.svg +3 -0
  1702. package/static/c76328b/icons/symbol-structure.svg +3 -0
  1703. package/static/c76328b/icons/symbol-variable.svg +3 -0
  1704. package/static/c76328b/icons/tag.svg +1 -0
  1705. package/static/c76328b/icons/terminal-bash.svg +1 -0
  1706. package/static/c76328b/icons/terminal.svg +1 -0
  1707. package/static/c76328b/icons/theme-icon.png +0 -0
  1708. package/static/c76328b/icons/trash.svg +1 -0
  1709. package/static/c76328b/icons/triangle-down.svg +1 -0
  1710. package/static/c76328b/icons/triangle-left.svg +1 -0
  1711. package/static/c76328b/icons/triangle-right.svg +1 -0
  1712. package/static/c76328b/icons/triangle-up.svg +1 -0
  1713. package/static/c76328b/icons/warning.svg +1 -0
  1714. package/static/c76328b/icons/whole-word.svg +1 -0
  1715. package/static/c76328b/icons/zoom-in.svg +1 -0
  1716. package/static/c76328b/icons/zoom-out.svg +1 -0
  1717. package/static/c76328b/js/babel-parser.js +14154 -0
  1718. package/static/c76328b/js/blob-util.js +149 -0
  1719. package/static/c76328b/js/idb/async-iterators.js +56 -0
  1720. package/static/c76328b/js/idb/index.js +99 -0
  1721. package/static/c76328b/js/idb/with-async-ittr.js +4 -0
  1722. package/static/c76328b/js/idb/wrap-idb-value.js +190 -0
  1723. package/static/c76328b/js/js-base64.js +296 -0
  1724. package/static/c76328b/js/ky.js +489 -0
  1725. package/static/c76328b/js/lvce-editor-import-script.js +5 -0
  1726. package/static/c76328b/js/lvce-editor-ipc.js +735 -0
  1727. package/static/c76328b/js/lvce-editor-json-rpc.js +383 -0
  1728. package/static/c76328b/js/lvce-editor-verror.js +55 -0
  1729. package/static/c76328b/js/marked.js +1990 -0
  1730. package/static/c76328b/js/p-min-delay.js +7 -0
  1731. package/static/c76328b/js/pretty-bytes.js +94 -0
  1732. package/static/c76328b/js/preview-injected.js +101 -0
  1733. package/static/c76328b/js/yoctodelay.js +2 -0
  1734. package/static/c76328b/lib-css/termterm.css +39 -0
  1735. package/static/c76328b/manifest.json +26 -0
  1736. package/static/c76328b/packages/about-view-worker/dist/aboutWorkerMain.js +1556 -0
  1737. package/static/c76328b/packages/diff-worker/dist/diffWorkerMain.js +886 -0
  1738. package/static/c76328b/packages/editor-worker/dist/editorWorkerMain.js +11885 -0
  1739. package/static/c76328b/packages/embeds-worker/dist/embedsWorkerMain.js +1067 -0
  1740. package/static/c76328b/packages/embeds-worker/dist/embedsWorkerMain.js.map +1 -0
  1741. package/static/c76328b/packages/embeds-worker/src/embedsWorkerMain.ts +3 -0
  1742. package/static/c76328b/packages/embeds-worker/src/parts/Assert/Assert.ts +94 -0
  1743. package/static/c76328b/packages/embeds-worker/src/parts/AssertionError/AssertionError.ts +6 -0
  1744. package/static/c76328b/packages/embeds-worker/src/parts/Callback/Callback.ts +1 -0
  1745. package/static/c76328b/packages/embeds-worker/src/parts/Command/Command.ts +10 -0
  1746. package/static/c76328b/packages/embeds-worker/src/parts/CommandMap/CommandMap.ts +26 -0
  1747. package/static/c76328b/packages/embeds-worker/src/parts/CommandState/CommandState.ts +17 -0
  1748. package/static/c76328b/packages/embeds-worker/src/parts/ElectronWebContentsView/ElectronWebContentsView.ts +117 -0
  1749. package/static/c76328b/packages/embeds-worker/src/parts/EmbedsProcess/EmbedsProcess.ts +25 -0
  1750. package/static/c76328b/packages/embeds-worker/src/parts/Exit/Exit.ts +3 -0
  1751. package/static/c76328b/packages/embeds-worker/src/parts/GetPortTuple/GetPortTuple.ts +4 -0
  1752. package/static/c76328b/packages/embeds-worker/src/parts/HandleIpc/HandleIpc.ts +35 -0
  1753. package/static/c76328b/packages/embeds-worker/src/parts/IpcChild/IpcChild.ts +13 -0
  1754. package/static/c76328b/packages/embeds-worker/src/parts/IpcChildModule/IpcChildModule.ts +14 -0
  1755. package/static/c76328b/packages/embeds-worker/src/parts/IpcChildType/IpcChildType.ts +14 -0
  1756. package/static/c76328b/packages/embeds-worker/src/parts/IpcId/IpcId.ts +4 -0
  1757. package/static/c76328b/packages/embeds-worker/src/parts/IpcParent/IpcParent.ts +7 -0
  1758. package/static/c76328b/packages/embeds-worker/src/parts/IpcParentWithElectronMessagePort/IpcParentWithElectronMessagePort.ts +39 -0
  1759. package/static/c76328b/packages/embeds-worker/src/parts/IpcState/IpcState.ts +14 -0
  1760. package/static/c76328b/packages/embeds-worker/src/parts/JsonRpc/JsonRpc.ts +2 -0
  1761. package/static/c76328b/packages/embeds-worker/src/parts/LaunchEmbedsProcessIpc/LaunchEmbedsProcessIpc.ts +10 -0
  1762. package/static/c76328b/packages/embeds-worker/src/parts/Listen/Listen.ts +13 -0
  1763. package/static/c76328b/packages/embeds-worker/src/parts/LoadErrorCode/LoadErrorCode.ts +3 -0
  1764. package/static/c76328b/packages/embeds-worker/src/parts/Main/Main.ts +5 -0
  1765. package/static/c76328b/packages/embeds-worker/src/parts/ProcessName/ProcessName.ts +1 -0
  1766. package/static/c76328b/packages/embeds-worker/src/parts/Rpc/Rpc.ts +21 -0
  1767. package/static/c76328b/packages/explorer-worker/dist/explorerViewWorkerMain.js +3385 -0
  1768. package/static/c76328b/packages/extension-detail-view-worker/dist/extensionDetailViewWorkerMain.js +4178 -0
  1769. package/static/c76328b/packages/extension-host-sub-worker/dist/extensionHostSubWorkerMain.js +989 -0
  1770. package/static/c76328b/packages/extension-host-sub-worker/dist/extensionHostSubWorkerMain.js.map +1 -0
  1771. package/static/c76328b/packages/extension-host-sub-worker/src/extensionHostSubWorkerMain.js +3 -0
  1772. package/static/c76328b/packages/extension-host-sub-worker/src/parts/Ajax/Ajax.js +14 -0
  1773. package/static/c76328b/packages/extension-host-sub-worker/src/parts/Assert/Assert.js +71 -0
  1774. package/static/c76328b/packages/extension-host-sub-worker/src/parts/AssetDir/AssetDir.js +16 -0
  1775. package/static/c76328b/packages/extension-host-sub-worker/src/parts/Callback/Callback.js +42 -0
  1776. package/static/c76328b/packages/extension-host-sub-worker/src/parts/Character/Character.js +11 -0
  1777. package/static/c76328b/packages/extension-host-sub-worker/src/parts/CleanImportError/CleanImportError.js +20 -0
  1778. package/static/c76328b/packages/extension-host-sub-worker/src/parts/CodeFrameColumns/CodeFrameColumns.js +126 -0
  1779. package/static/c76328b/packages/extension-host-sub-worker/src/parts/Command/Command.js +10 -0
  1780. package/static/c76328b/packages/extension-host-sub-worker/src/parts/CommandMap/CommandMap.js +5 -0
  1781. package/static/c76328b/packages/extension-host-sub-worker/src/parts/CommandState/CommandState.js +17 -0
  1782. package/static/c76328b/packages/extension-host-sub-worker/src/parts/ErrorType/ErrorType.js +4 -0
  1783. package/static/c76328b/packages/extension-host-sub-worker/src/parts/GetData/GetData.js +3 -0
  1784. package/static/c76328b/packages/extension-host-sub-worker/src/parts/GetErrorConstructor/GetErrorConstructor.js +28 -0
  1785. package/static/c76328b/packages/extension-host-sub-worker/src/parts/GetErrorResponse/GetErrorResponse.js +33 -0
  1786. package/static/c76328b/packages/extension-host-sub-worker/src/parts/GetModulesErrorStack/GetModulesErrorStack.js +49 -0
  1787. package/static/c76328b/packages/extension-host-sub-worker/src/parts/GetNewLineIndex/GetNewLineIndex.js +9 -0
  1788. package/static/c76328b/packages/extension-host-sub-worker/src/parts/GetResponse/GetResponse.js +11 -0
  1789. package/static/c76328b/packages/extension-host-sub-worker/src/parts/GetSuccessResponse/GetSuccessResponse.js +9 -0
  1790. package/static/c76328b/packages/extension-host-sub-worker/src/parts/HandleIpc/HandleIpc.js +12 -0
  1791. package/static/c76328b/packages/extension-host-sub-worker/src/parts/HandleJsonRpcMessage/HandleJsonRpcMessage.js +10 -0
  1792. package/static/c76328b/packages/extension-host-sub-worker/src/parts/Id/Id.js +7 -0
  1793. package/static/c76328b/packages/extension-host-sub-worker/src/parts/ImportScript/ImportScript.js +12 -0
  1794. package/static/c76328b/packages/extension-host-sub-worker/src/parts/IpcChild/IpcChild.js +8 -0
  1795. package/static/c76328b/packages/extension-host-sub-worker/src/parts/IpcChildModule/IpcChildModule.js +12 -0
  1796. package/static/c76328b/packages/extension-host-sub-worker/src/parts/IpcChildType/IpcChildType.js +18 -0
  1797. package/static/c76328b/packages/extension-host-sub-worker/src/parts/IpcChildWithMessagePort/IpcChildWithMessagePort.js +24 -0
  1798. package/static/c76328b/packages/extension-host-sub-worker/src/parts/IpcChildWithModuleWorker/IpcChildWithModuleWorker.js +40 -0
  1799. package/static/c76328b/packages/extension-host-sub-worker/src/parts/IpcChildWithModuleWorkerAndMessagePort/IpcChildWithModuleWorkerAndMessagePort.js +54 -0
  1800. package/static/c76328b/packages/extension-host-sub-worker/src/parts/IpcError/IpcError.js +6 -0
  1801. package/static/c76328b/packages/extension-host-sub-worker/src/parts/JoinLines/JoinLines.js +3 -0
  1802. package/static/c76328b/packages/extension-host-sub-worker/src/parts/JsonRpc/JsonRpc.js +16 -0
  1803. package/static/c76328b/packages/extension-host-sub-worker/src/parts/JsonRpcError/JsonRpcError.js +6 -0
  1804. package/static/c76328b/packages/extension-host-sub-worker/src/parts/JsonRpcErrorCode/JsonRpcErrorCode.js +2 -0
  1805. package/static/c76328b/packages/extension-host-sub-worker/src/parts/JsonRpcEvent/JsonRpcEvent.js +9 -0
  1806. package/static/c76328b/packages/extension-host-sub-worker/src/parts/JsonRpcRequest/JsonRpcRequest.js +16 -0
  1807. package/static/c76328b/packages/extension-host-sub-worker/src/parts/JsonRpcVersion/JsonRpcVersion.js +1 -0
  1808. package/static/c76328b/packages/extension-host-sub-worker/src/parts/Listen/Listen.js +19 -0
  1809. package/static/c76328b/packages/extension-host-sub-worker/src/parts/LoadFile/LoadFile.js +14 -0
  1810. package/static/c76328b/packages/extension-host-sub-worker/src/parts/LoadKy/LoadKy.js +11 -0
  1811. package/static/c76328b/packages/extension-host-sub-worker/src/parts/Main/Main.js +5 -0
  1812. package/static/c76328b/packages/extension-host-sub-worker/src/parts/MergeStacks/MergeStacks.js +20 -0
  1813. package/static/c76328b/packages/extension-host-sub-worker/src/parts/NormalizeErrorLine/NormalizeErrorLine.js +9 -0
  1814. package/static/c76328b/packages/extension-host-sub-worker/src/parts/Platform/Platform.js +19 -0
  1815. package/static/c76328b/packages/extension-host-sub-worker/src/parts/PlatformType/PlatformType.js +5 -0
  1816. package/static/c76328b/packages/extension-host-sub-worker/src/parts/PrettyError/PrettyError.js +139 -0
  1817. package/static/c76328b/packages/extension-host-sub-worker/src/parts/PrintPrettyError/PrintPrettyError.js +3 -0
  1818. package/static/c76328b/packages/extension-host-sub-worker/src/parts/ProcessName/ProcessName.js +1 -0
  1819. package/static/c76328b/packages/extension-host-sub-worker/src/parts/RestoreJsonRpcError/RestoreJsonRpcError.js +78 -0
  1820. package/static/c76328b/packages/extension-host-sub-worker/src/parts/SplitLines/SplitLines.js +11 -0
  1821. package/static/c76328b/packages/extension-host-sub-worker/src/parts/UnwrapJsonRpcResult/UnwrapJsonRpcResult.js +13 -0
  1822. package/static/c76328b/packages/extension-host-sub-worker/src/parts/VError/VError.js +27 -0
  1823. package/static/c76328b/packages/extension-host-sub-worker/src/parts/WaitForFirstMessage/WaitForFirstMessage.js +13 -0
  1824. package/static/c76328b/packages/extension-host-worker/dist/extensionHostWorkerMain.js +3813 -0
  1825. package/static/c76328b/packages/extension-search-view-worker/dist/extensionSearchViewWorkerMain.js +1468 -0
  1826. package/static/c76328b/packages/file-search-worker/dist/fileSearchWorkerMain.js +1835 -0
  1827. package/static/c76328b/packages/iframe-worker/dist/iframeWorkerMain.js +1349 -0
  1828. package/static/c76328b/packages/keybindings-view-worker/dist/keyBindingsViewWorkerMain.js +1915 -0
  1829. package/static/c76328b/packages/renderer-process/LICENSE +21 -0
  1830. package/static/c76328b/packages/renderer-process/README.md +1 -0
  1831. package/static/c76328b/packages/renderer-process/dist/rendererProcessMain.js +11834 -0
  1832. package/static/c76328b/packages/renderer-process/package.json +27 -0
  1833. package/static/c76328b/packages/renderer-worker/dist/rendererWorkerMain.js +38528 -0
  1834. package/static/c76328b/packages/syntax-highlighting-worker/dist/syntaxHighlightingWorkerMain.js +1109 -0
  1835. package/static/c76328b/packages/terminal-worker/dist/terminalWorkerMain.js +2971 -0
  1836. package/static/c76328b/packages/test-worker/dist/testWorkerMain.js +2140 -0
  1837. package/static/c76328b/packages/text-search-worker/dist/textSearchWorkerMain.js +4272 -0
  1838. package/static/c76328b/playground/languages/index.cpp +22 -0
  1839. package/static/c76328b/playground/languages/index.css +19 -0
  1840. package/static/c76328b/playground/languages/index.csv +3 -0
  1841. package/static/c76328b/playground/languages/index.dart +3 -0
  1842. package/static/c76328b/playground/languages/index.env +1 -0
  1843. package/static/c76328b/playground/languages/index.ex +8 -0
  1844. package/static/c76328b/playground/languages/index.html +1 -0
  1845. package/static/c76328b/playground/languages/index.java +5 -0
  1846. package/static/c76328b/playground/languages/index.jl +14 -0
  1847. package/static/c76328b/playground/languages/index.js +3 -0
  1848. package/static/c76328b/playground/languages/index.json +3 -0
  1849. package/static/c76328b/playground/languages/index.kt +3 -0
  1850. package/static/c76328b/playground/languages/index.pl +11 -0
  1851. package/static/c76328b/playground/languages/index.py +25 -0
  1852. package/static/c76328b/playground/languages/index.ts +3 -0
  1853. package/static/c76328b/playground/languages/scrolling.txt +100 -0
  1854. package/static/c76328b/playground/languages/tsconfig.json +24 -0
  1855. package/static/c76328b/playground/sample-folder/a.txt +0 -0
  1856. package/static/c76328b/playground/sample-folder/b.txt +0 -0
  1857. package/static/c76328b/playground/sample-folder/c.txt +0 -0
  1858. package/static/favicon.ico +0 -0
  1859. package/static/index.html +14 -0
@@ -0,0 +1,4272 @@
1
+ const normalizeLine$1 = line => {
2
+ if (line.startsWith('Error: ')) {
3
+ return line.slice('Error: '.length);
4
+ }
5
+ if (line.startsWith('VError: ')) {
6
+ return line.slice('VError: '.length);
7
+ }
8
+ return line;
9
+ };
10
+ const getCombinedMessage$1 = (error, message) => {
11
+ const stringifiedError = normalizeLine$1(`${error}`);
12
+ if (message) {
13
+ return `${message}: ${stringifiedError}`;
14
+ }
15
+ return stringifiedError;
16
+ };
17
+ const NewLine$3 = '\n';
18
+ const getNewLineIndex$2 = (string, startIndex = undefined) => {
19
+ return string.indexOf(NewLine$3, startIndex);
20
+ };
21
+ const mergeStacks$1 = (parent, child) => {
22
+ if (!child) {
23
+ return parent;
24
+ }
25
+ const parentNewLineIndex = getNewLineIndex$2(parent);
26
+ const childNewLineIndex = getNewLineIndex$2(child);
27
+ if (childNewLineIndex === -1) {
28
+ return parent;
29
+ }
30
+ const parentFirstLine = parent.slice(0, parentNewLineIndex);
31
+ const childRest = child.slice(childNewLineIndex);
32
+ const childFirstLine = normalizeLine$1(child.slice(0, childNewLineIndex));
33
+ if (parentFirstLine.includes(childFirstLine)) {
34
+ return parentFirstLine + childRest;
35
+ }
36
+ return child;
37
+ };
38
+ let VError$1 = class VError extends Error {
39
+ constructor(error, message) {
40
+ const combinedMessage = getCombinedMessage$1(error, message);
41
+ super(combinedMessage);
42
+ this.name = 'VError';
43
+ if (error instanceof Error) {
44
+ this.stack = mergeStacks$1(this.stack, error.stack);
45
+ }
46
+ if (error.codeFrame) {
47
+ // @ts-ignore
48
+ this.codeFrame = error.codeFrame;
49
+ }
50
+ if (error.code) {
51
+ // @ts-ignore
52
+ this.code = error.code;
53
+ }
54
+ }
55
+ };
56
+
57
+ class AssertionError extends Error {
58
+ constructor(message) {
59
+ super(message);
60
+ this.name = 'AssertionError';
61
+ }
62
+ }
63
+ const getType = value => {
64
+ switch (typeof value) {
65
+ case 'number':
66
+ return 'number';
67
+ case 'function':
68
+ return 'function';
69
+ case 'string':
70
+ return 'string';
71
+ case 'object':
72
+ if (value === null) {
73
+ return 'null';
74
+ }
75
+ if (Array.isArray(value)) {
76
+ return 'array';
77
+ }
78
+ return 'object';
79
+ case 'boolean':
80
+ return 'boolean';
81
+ default:
82
+ return 'unknown';
83
+ }
84
+ };
85
+ const object = value => {
86
+ const type = getType(value);
87
+ if (type !== 'object') {
88
+ throw new AssertionError('expected value to be of type object');
89
+ }
90
+ };
91
+ const number = value => {
92
+ const type = getType(value);
93
+ if (type !== 'number') {
94
+ throw new AssertionError('expected value to be of type number');
95
+ }
96
+ };
97
+ const array = value => {
98
+ const type = getType(value);
99
+ if (type !== 'array') {
100
+ throw new AssertionError('expected value to be of type array');
101
+ }
102
+ };
103
+ const string = value => {
104
+ const type = getType(value);
105
+ if (type !== 'string') {
106
+ throw new AssertionError('expected value to be of type string');
107
+ }
108
+ };
109
+
110
+ const Two = '2.0';
111
+ const create$4 = (method, params) => {
112
+ return {
113
+ jsonrpc: Two,
114
+ method,
115
+ params
116
+ };
117
+ };
118
+ const state$4 = {
119
+ callbacks: Object.create(null)
120
+ };
121
+ const set$1 = (id, fn) => {
122
+ state$4.callbacks[id] = fn;
123
+ };
124
+ const get$1 = id => {
125
+ return state$4.callbacks[id];
126
+ };
127
+ const remove$1 = id => {
128
+ delete state$4.callbacks[id];
129
+ };
130
+ let id = 0;
131
+ const create$3$1 = () => {
132
+ return ++id;
133
+ };
134
+ const warn = (...args) => {
135
+ console.warn(...args);
136
+ };
137
+ const registerPromise = () => {
138
+ const id = create$3$1();
139
+ const {
140
+ resolve,
141
+ promise
142
+ } = Promise.withResolvers();
143
+ set$1(id, resolve);
144
+ return {
145
+ id,
146
+ promise
147
+ };
148
+ };
149
+ const resolve = (id, response) => {
150
+ const fn = get$1(id);
151
+ if (!fn) {
152
+ console.log(response);
153
+ warn(`callback ${id} may already be disposed`);
154
+ return;
155
+ }
156
+ fn(response);
157
+ remove$1(id);
158
+ };
159
+ const create$2$2 = (method, params) => {
160
+ const {
161
+ id,
162
+ promise
163
+ } = registerPromise();
164
+ const message = {
165
+ jsonrpc: Two,
166
+ method,
167
+ params,
168
+ id
169
+ };
170
+ return {
171
+ message,
172
+ promise
173
+ };
174
+ };
175
+ class JsonRpcError extends Error {
176
+ constructor(message) {
177
+ super(message);
178
+ this.name = 'JsonRpcError';
179
+ }
180
+ }
181
+ const NewLine$2 = '\n';
182
+ const DomException = 'DOMException';
183
+ const ReferenceError$1 = 'ReferenceError';
184
+ const SyntaxError$1 = 'SyntaxError';
185
+ const TypeError$1 = 'TypeError';
186
+ const getErrorConstructor = (message, type) => {
187
+ if (type) {
188
+ switch (type) {
189
+ case DomException:
190
+ return DOMException;
191
+ case TypeError$1:
192
+ return TypeError;
193
+ case SyntaxError$1:
194
+ return SyntaxError;
195
+ case ReferenceError$1:
196
+ return ReferenceError;
197
+ default:
198
+ return Error;
199
+ }
200
+ }
201
+ if (message.startsWith('TypeError: ')) {
202
+ return TypeError;
203
+ }
204
+ if (message.startsWith('SyntaxError: ')) {
205
+ return SyntaxError;
206
+ }
207
+ if (message.startsWith('ReferenceError: ')) {
208
+ return ReferenceError;
209
+ }
210
+ return Error;
211
+ };
212
+ const constructError = (message, type, name) => {
213
+ const ErrorConstructor = getErrorConstructor(message, type);
214
+ if (ErrorConstructor === DOMException && name) {
215
+ return new ErrorConstructor(message, name);
216
+ }
217
+ if (ErrorConstructor === Error) {
218
+ const error = new Error(message);
219
+ if (name && name !== 'VError') {
220
+ error.name = name;
221
+ }
222
+ return error;
223
+ }
224
+ return new ErrorConstructor(message);
225
+ };
226
+ const getNewLineIndex$1 = (string, startIndex = undefined) => {
227
+ return string.indexOf(NewLine$2, startIndex);
228
+ };
229
+ const getParentStack = error => {
230
+ let parentStack = error.stack || error.data || error.message || '';
231
+ if (parentStack.startsWith(' at')) {
232
+ parentStack = error.message + NewLine$2 + parentStack;
233
+ }
234
+ return parentStack;
235
+ };
236
+ const joinLines$1 = lines => {
237
+ return lines.join(NewLine$2);
238
+ };
239
+ const MethodNotFound = -32601;
240
+ const Custom = -32001;
241
+ const splitLines$2 = lines => {
242
+ return lines.split(NewLine$2);
243
+ };
244
+ const restoreJsonRpcError = error => {
245
+ if (error && error instanceof Error) {
246
+ return error;
247
+ }
248
+ const currentStack = joinLines$1(splitLines$2(new Error().stack || '').slice(1));
249
+ if (error && error.code && error.code === MethodNotFound) {
250
+ const restoredError = new JsonRpcError(error.message);
251
+ const parentStack = getParentStack(error);
252
+ restoredError.stack = parentStack + NewLine$2 + currentStack;
253
+ return restoredError;
254
+ }
255
+ if (error && error.message) {
256
+ const restoredError = constructError(error.message, error.type, error.name);
257
+ if (error.data) {
258
+ if (error.data.stack && error.data.type && error.message) {
259
+ restoredError.stack = error.data.type + ': ' + error.message + NewLine$2 + error.data.stack + NewLine$2 + currentStack;
260
+ } else if (error.data.stack) {
261
+ restoredError.stack = error.data.stack;
262
+ }
263
+ if (error.data.codeFrame) {
264
+ // @ts-ignore
265
+ restoredError.codeFrame = error.data.codeFrame;
266
+ }
267
+ if (error.data.code) {
268
+ // @ts-ignore
269
+ restoredError.code = error.data.code;
270
+ }
271
+ if (error.data.type) {
272
+ // @ts-ignore
273
+ restoredError.name = error.data.type;
274
+ }
275
+ } else {
276
+ if (error.stack) {
277
+ const lowerStack = restoredError.stack || '';
278
+ // @ts-ignore
279
+ const indexNewLine = getNewLineIndex$1(lowerStack);
280
+ const parentStack = getParentStack(error);
281
+ // @ts-ignore
282
+ restoredError.stack = parentStack + lowerStack.slice(indexNewLine);
283
+ }
284
+ if (error.codeFrame) {
285
+ // @ts-ignore
286
+ restoredError.codeFrame = error.codeFrame;
287
+ }
288
+ }
289
+ return restoredError;
290
+ }
291
+ if (typeof error === 'string') {
292
+ return new Error(`JsonRpc Error: ${error}`);
293
+ }
294
+ return new Error(`JsonRpc Error: ${error}`);
295
+ };
296
+ const unwrapJsonRpcResult = responseMessage => {
297
+ if ('error' in responseMessage) {
298
+ const restoredError = restoreJsonRpcError(responseMessage.error);
299
+ throw restoredError;
300
+ }
301
+ if ('result' in responseMessage) {
302
+ return responseMessage.result;
303
+ }
304
+ throw new JsonRpcError('unexpected response message');
305
+ };
306
+ const E_COMMAND_NOT_FOUND = 'E_COMMAND_NOT_FOUND';
307
+ const getErrorType = prettyError => {
308
+ if (prettyError && prettyError.type) {
309
+ return prettyError.type;
310
+ }
311
+ if (prettyError && prettyError.constructor && prettyError.constructor.name) {
312
+ return prettyError.constructor.name;
313
+ }
314
+ return undefined;
315
+ };
316
+ const getErrorProperty = (error, prettyError) => {
317
+ if (error && error.code === E_COMMAND_NOT_FOUND) {
318
+ return {
319
+ code: MethodNotFound,
320
+ message: error.message,
321
+ data: error.stack
322
+ };
323
+ }
324
+ return {
325
+ code: Custom,
326
+ message: prettyError.message,
327
+ data: {
328
+ stack: prettyError.stack,
329
+ codeFrame: prettyError.codeFrame,
330
+ type: getErrorType(prettyError),
331
+ code: prettyError.code,
332
+ name: prettyError.name
333
+ }
334
+ };
335
+ };
336
+ const create$1$2 = (message, error) => {
337
+ return {
338
+ jsonrpc: Two,
339
+ id: message.id,
340
+ error
341
+ };
342
+ };
343
+ const getErrorResponse = (message, error, preparePrettyError, logError) => {
344
+ const prettyError = preparePrettyError(error);
345
+ logError(error, prettyError);
346
+ const errorProperty = getErrorProperty(error, prettyError);
347
+ return create$1$2(message, errorProperty);
348
+ };
349
+ const create$6 = (message, result) => {
350
+ return {
351
+ jsonrpc: Two,
352
+ id: message.id,
353
+ result: result ?? null
354
+ };
355
+ };
356
+ const getSuccessResponse = (message, result) => {
357
+ const resultProperty = result ?? null;
358
+ return create$6(message, resultProperty);
359
+ };
360
+ const getResponse = async (message, ipc, execute, preparePrettyError, logError, requiresSocket) => {
361
+ try {
362
+ const result = requiresSocket(message.method) ? await execute(message.method, ipc, ...message.params) : await execute(message.method, ...message.params);
363
+ return getSuccessResponse(message, result);
364
+ } catch (error) {
365
+ return getErrorResponse(message, error, preparePrettyError, logError);
366
+ }
367
+ };
368
+ const defaultPreparePrettyError = error => {
369
+ return error;
370
+ };
371
+ const defaultLogError = () => {
372
+ // ignore
373
+ };
374
+ const defaultRequiresSocket = () => {
375
+ return false;
376
+ };
377
+ const defaultResolve = resolve;
378
+
379
+ // TODO maybe remove this in v6 or v7, only accept options object to simplify the code
380
+ const normalizeParams = args => {
381
+ if (args.length === 1) {
382
+ const options = args[0];
383
+ return {
384
+ ipc: options.ipc,
385
+ message: options.message,
386
+ execute: options.execute,
387
+ resolve: options.resolve || defaultResolve,
388
+ preparePrettyError: options.preparePrettyError || defaultPreparePrettyError,
389
+ logError: options.logError || defaultLogError,
390
+ requiresSocket: options.requiresSocket || defaultRequiresSocket
391
+ };
392
+ }
393
+ return {
394
+ ipc: args[0],
395
+ message: args[1],
396
+ execute: args[2],
397
+ resolve: args[3],
398
+ preparePrettyError: args[4],
399
+ logError: args[5],
400
+ requiresSocket: args[6]
401
+ };
402
+ };
403
+ const handleJsonRpcMessage = async (...args) => {
404
+ const options = normalizeParams(args);
405
+ const {
406
+ message,
407
+ ipc,
408
+ execute,
409
+ resolve,
410
+ preparePrettyError,
411
+ logError,
412
+ requiresSocket
413
+ } = options;
414
+ if ('id' in message) {
415
+ if ('method' in message) {
416
+ const response = await getResponse(message, ipc, execute, preparePrettyError, logError, requiresSocket);
417
+ try {
418
+ ipc.send(response);
419
+ } catch (error) {
420
+ const errorResponse = getErrorResponse(message, error, preparePrettyError, logError);
421
+ ipc.send(errorResponse);
422
+ }
423
+ return;
424
+ }
425
+ resolve(message.id, message);
426
+ return;
427
+ }
428
+ if ('method' in message) {
429
+ await getResponse(message, ipc, execute, preparePrettyError, logError, requiresSocket);
430
+ return;
431
+ }
432
+ throw new JsonRpcError('unexpected message');
433
+ };
434
+ const invokeHelper = async (ipc, method, params, useSendAndTransfer) => {
435
+ const {
436
+ message,
437
+ promise
438
+ } = create$2$2(method, params);
439
+ if (useSendAndTransfer && ipc.sendAndTransfer) {
440
+ ipc.sendAndTransfer(message);
441
+ } else {
442
+ ipc.send(message);
443
+ }
444
+ const responseMessage = await promise;
445
+ return unwrapJsonRpcResult(responseMessage);
446
+ };
447
+ const send = (transport, method, ...params) => {
448
+ const message = create$4(method, params);
449
+ transport.send(message);
450
+ };
451
+ const invoke$3 = (ipc, method, ...params) => {
452
+ return invokeHelper(ipc, method, params, false);
453
+ };
454
+ const invokeAndTransfer$1 = (ipc, method, ...params) => {
455
+ return invokeHelper(ipc, method, params, true);
456
+ };
457
+
458
+ const commands = Object.create(null);
459
+ const register = commandMap => {
460
+ Object.assign(commands, commandMap);
461
+ };
462
+ const getCommand = key => {
463
+ return commands[key];
464
+ };
465
+ const execute = (command, ...args) => {
466
+ const fn = getCommand(command);
467
+ if (!fn) {
468
+ throw new Error(`command not found ${command}`);
469
+ }
470
+ return fn(...args);
471
+ };
472
+
473
+ const getData$1 = event => {
474
+ return event.data;
475
+ };
476
+ const attachEvents = that => {
477
+ const handleMessage = (...args) => {
478
+ const data = that.getData(...args);
479
+ that.dispatchEvent(new MessageEvent('message', {
480
+ data
481
+ }));
482
+ };
483
+ that.onMessage(handleMessage);
484
+ const handleClose = event => {
485
+ that.dispatchEvent(new Event('close'));
486
+ };
487
+ that.onClose(handleClose);
488
+ };
489
+ class Ipc extends EventTarget {
490
+ constructor(rawIpc) {
491
+ super();
492
+ this._rawIpc = rawIpc;
493
+ attachEvents(this);
494
+ }
495
+ }
496
+ const readyMessage = 'ready';
497
+ const walkValue = (value, transferrables, isTransferrable) => {
498
+ if (!value) {
499
+ return;
500
+ }
501
+ if (isTransferrable(value)) {
502
+ transferrables.push(value);
503
+ return;
504
+ }
505
+ if (Array.isArray(value)) {
506
+ for (const item of value) {
507
+ walkValue(item, transferrables, isTransferrable);
508
+ }
509
+ return;
510
+ }
511
+ if (typeof value === 'object') {
512
+ for (const property of Object.values(value)) {
513
+ walkValue(property, transferrables, isTransferrable);
514
+ }
515
+ return;
516
+ }
517
+ };
518
+ const isMessagePort = value => {
519
+ return value && value instanceof MessagePort;
520
+ };
521
+ const isMessagePortMain = value => {
522
+ return value && value.constructor && value.constructor.name === 'MessagePortMain';
523
+ };
524
+ const isOffscreenCanvas = value => {
525
+ return typeof OffscreenCanvas !== 'undefined' && value instanceof OffscreenCanvas;
526
+ };
527
+ const isInstanceOf = (value, constructorName) => {
528
+ return value?.constructor?.name === constructorName;
529
+ };
530
+ const isSocket = value => {
531
+ return isInstanceOf(value, 'Socket');
532
+ };
533
+ const transferrables = [isMessagePort, isMessagePortMain, isOffscreenCanvas, isSocket];
534
+ const isTransferrable = value => {
535
+ for (const fn of transferrables) {
536
+ if (fn(value)) {
537
+ return true;
538
+ }
539
+ }
540
+ return false;
541
+ };
542
+ const getTransferrables = value => {
543
+ const transferrables = [];
544
+ walkValue(value, transferrables, isTransferrable);
545
+ return transferrables;
546
+ };
547
+ const listen$2 = () => {
548
+ // @ts-ignore
549
+ if (typeof WorkerGlobalScope === 'undefined') {
550
+ throw new TypeError('module is not in web worker scope');
551
+ }
552
+ return globalThis;
553
+ };
554
+ const signal$2 = global => {
555
+ global.postMessage(readyMessage);
556
+ };
557
+ class IpcChildWithModuleWorker extends Ipc {
558
+ getData(event) {
559
+ return getData$1(event);
560
+ }
561
+ send(message) {
562
+ // @ts-ignore
563
+ this._rawIpc.postMessage(message);
564
+ }
565
+ sendAndTransfer(message) {
566
+ const transfer = getTransferrables(message);
567
+ // @ts-ignore
568
+ this._rawIpc.postMessage(message, transfer);
569
+ }
570
+ dispose() {
571
+ // ignore
572
+ }
573
+ onClose(callback) {
574
+ // ignore
575
+ }
576
+ onMessage(callback) {
577
+ this._rawIpc.addEventListener('message', callback);
578
+ }
579
+ }
580
+ const wrap$5 = global => {
581
+ return new IpcChildWithModuleWorker(global);
582
+ };
583
+ const E_INCOMPATIBLE_NATIVE_MODULE = 'E_INCOMPATIBLE_NATIVE_MODULE';
584
+ const E_MODULES_NOT_SUPPORTED_IN_ELECTRON = 'E_MODULES_NOT_SUPPORTED_IN_ELECTRON';
585
+ const ERR_MODULE_NOT_FOUND = 'ERR_MODULE_NOT_FOUND';
586
+ const NewLine$1 = '\n';
587
+ const joinLines = lines => {
588
+ return lines.join(NewLine$1);
589
+ };
590
+ const splitLines$1 = lines => {
591
+ return lines.split(NewLine$1);
592
+ };
593
+ const isModuleNotFoundMessage = line => {
594
+ return line.includes('[ERR_MODULE_NOT_FOUND]');
595
+ };
596
+ const getModuleNotFoundError = stderr => {
597
+ const lines = splitLines$1(stderr);
598
+ const messageIndex = lines.findIndex(isModuleNotFoundMessage);
599
+ const message = lines[messageIndex];
600
+ return {
601
+ message,
602
+ code: ERR_MODULE_NOT_FOUND
603
+ };
604
+ };
605
+ const RE_NATIVE_MODULE_ERROR = /^innerError Error: Cannot find module '.*.node'/;
606
+ const RE_NATIVE_MODULE_ERROR_2 = /was compiled against a different Node.js version/;
607
+ const RE_MESSAGE_CODE_BLOCK_START = /^Error: The module '.*'$/;
608
+ const RE_MESSAGE_CODE_BLOCK_END = /^\s* at/;
609
+ const RE_AT = /^\s+at/;
610
+ const RE_AT_PROMISE_INDEX = /^\s*at async Promise.all \(index \d+\)$/;
611
+ const isUnhelpfulNativeModuleError = stderr => {
612
+ return RE_NATIVE_MODULE_ERROR.test(stderr) && RE_NATIVE_MODULE_ERROR_2.test(stderr);
613
+ };
614
+ const isMessageCodeBlockStartIndex = line => {
615
+ return RE_MESSAGE_CODE_BLOCK_START.test(line);
616
+ };
617
+ const isMessageCodeBlockEndIndex = line => {
618
+ return RE_MESSAGE_CODE_BLOCK_END.test(line);
619
+ };
620
+ const getMessageCodeBlock = stderr => {
621
+ const lines = splitLines$1(stderr);
622
+ const startIndex = lines.findIndex(isMessageCodeBlockStartIndex);
623
+ const endIndex = startIndex + lines.slice(startIndex).findIndex(isMessageCodeBlockEndIndex, startIndex);
624
+ const relevantLines = lines.slice(startIndex, endIndex);
625
+ const relevantMessage = relevantLines.join(' ').slice('Error: '.length);
626
+ return relevantMessage;
627
+ };
628
+ const getNativeModuleErrorMessage = stderr => {
629
+ const message = getMessageCodeBlock(stderr);
630
+ return {
631
+ message: `Incompatible native node module: ${message}`,
632
+ code: E_INCOMPATIBLE_NATIVE_MODULE
633
+ };
634
+ };
635
+ const isModulesSyntaxError = stderr => {
636
+ if (!stderr) {
637
+ return false;
638
+ }
639
+ return stderr.includes('SyntaxError: Cannot use import statement outside a module');
640
+ };
641
+ const getModuleSyntaxError = () => {
642
+ return {
643
+ message: `ES Modules are not supported in electron`,
644
+ code: E_MODULES_NOT_SUPPORTED_IN_ELECTRON
645
+ };
646
+ };
647
+ const isModuleNotFoundError = stderr => {
648
+ if (!stderr) {
649
+ return false;
650
+ }
651
+ return stderr.includes('ERR_MODULE_NOT_FOUND');
652
+ };
653
+ const isNormalStackLine = line => {
654
+ return RE_AT.test(line) && !RE_AT_PROMISE_INDEX.test(line);
655
+ };
656
+ const getDetails = lines => {
657
+ const index = lines.findIndex(isNormalStackLine);
658
+ if (index === -1) {
659
+ return {
660
+ actualMessage: joinLines(lines),
661
+ rest: []
662
+ };
663
+ }
664
+ let lastIndex = index - 1;
665
+ while (++lastIndex < lines.length) {
666
+ if (!isNormalStackLine(lines[lastIndex])) {
667
+ break;
668
+ }
669
+ }
670
+ return {
671
+ actualMessage: lines[index - 1],
672
+ rest: lines.slice(index, lastIndex)
673
+ };
674
+ };
675
+ const getHelpfulChildProcessError = (stdout, stderr) => {
676
+ if (isUnhelpfulNativeModuleError(stderr)) {
677
+ return getNativeModuleErrorMessage(stderr);
678
+ }
679
+ if (isModulesSyntaxError(stderr)) {
680
+ return getModuleSyntaxError();
681
+ }
682
+ if (isModuleNotFoundError(stderr)) {
683
+ return getModuleNotFoundError(stderr);
684
+ }
685
+ const lines = splitLines$1(stderr);
686
+ const {
687
+ actualMessage,
688
+ rest
689
+ } = getDetails(lines);
690
+ return {
691
+ message: `${actualMessage}`,
692
+ code: '',
693
+ stack: rest
694
+ };
695
+ };
696
+ const normalizeLine = line => {
697
+ if (line.startsWith('Error: ')) {
698
+ return line.slice('Error: '.length);
699
+ }
700
+ if (line.startsWith('VError: ')) {
701
+ return line.slice('VError: '.length);
702
+ }
703
+ return line;
704
+ };
705
+ const getCombinedMessage = (error, message) => {
706
+ const stringifiedError = normalizeLine(`${error}`);
707
+ if (message) {
708
+ return `${message}: ${stringifiedError}`;
709
+ }
710
+ return stringifiedError;
711
+ };
712
+ const NewLine = '\n';
713
+ const getNewLineIndex = (string, startIndex = undefined) => {
714
+ return string.indexOf(NewLine, startIndex);
715
+ };
716
+ const mergeStacks = (parent, child) => {
717
+ if (!child) {
718
+ return parent;
719
+ }
720
+ const parentNewLineIndex = getNewLineIndex(parent);
721
+ const childNewLineIndex = getNewLineIndex(child);
722
+ if (childNewLineIndex === -1) {
723
+ return parent;
724
+ }
725
+ const parentFirstLine = parent.slice(0, parentNewLineIndex);
726
+ const childRest = child.slice(childNewLineIndex);
727
+ const childFirstLine = normalizeLine(child.slice(0, childNewLineIndex));
728
+ if (parentFirstLine.includes(childFirstLine)) {
729
+ return parentFirstLine + childRest;
730
+ }
731
+ return child;
732
+ };
733
+ class VError extends Error {
734
+ constructor(error, message) {
735
+ const combinedMessage = getCombinedMessage(error, message);
736
+ super(combinedMessage);
737
+ this.name = 'VError';
738
+ if (error instanceof Error) {
739
+ this.stack = mergeStacks(this.stack, error.stack);
740
+ }
741
+ if (error.codeFrame) {
742
+ // @ts-ignore
743
+ this.codeFrame = error.codeFrame;
744
+ }
745
+ if (error.code) {
746
+ // @ts-ignore
747
+ this.code = error.code;
748
+ }
749
+ }
750
+ }
751
+ class IpcError extends VError {
752
+ // @ts-ignore
753
+ constructor(betterMessage, stdout = '', stderr = '') {
754
+ if (stdout || stderr) {
755
+ // @ts-ignore
756
+ const {
757
+ message,
758
+ code,
759
+ stack
760
+ } = getHelpfulChildProcessError(stdout, stderr);
761
+ const cause = new Error(message);
762
+ // @ts-ignore
763
+ cause.code = code;
764
+ cause.stack = stack;
765
+ super(cause, betterMessage);
766
+ } else {
767
+ super(betterMessage);
768
+ }
769
+ // @ts-ignore
770
+ this.name = 'IpcError';
771
+ // @ts-ignore
772
+ this.stdout = stdout;
773
+ // @ts-ignore
774
+ this.stderr = stderr;
775
+ }
776
+ }
777
+ const withResolvers = () => {
778
+ let _resolve;
779
+ const promise = new Promise(resolve => {
780
+ _resolve = resolve;
781
+ });
782
+ return {
783
+ resolve: _resolve,
784
+ promise
785
+ };
786
+ };
787
+ const waitForFirstMessage = async port => {
788
+ const {
789
+ resolve,
790
+ promise
791
+ } = withResolvers();
792
+ port.addEventListener('message', resolve, {
793
+ once: true
794
+ });
795
+ const event = await promise;
796
+ // @ts-ignore
797
+ return event.data;
798
+ };
799
+ const listen$1$1 = async () => {
800
+ const parentIpcRaw = listen$2();
801
+ signal$2(parentIpcRaw);
802
+ const parentIpc = wrap$5(parentIpcRaw);
803
+ const firstMessage = await waitForFirstMessage(parentIpc);
804
+ if (firstMessage.method !== 'initialize') {
805
+ throw new IpcError('unexpected first message');
806
+ }
807
+ const type = firstMessage.params[0];
808
+ if (type === 'message-port') {
809
+ parentIpc.send({
810
+ jsonrpc: '2.0',
811
+ id: firstMessage.id,
812
+ result: null
813
+ });
814
+ parentIpc.dispose();
815
+ const port = firstMessage.params[1];
816
+ return port;
817
+ }
818
+ return globalThis;
819
+ };
820
+ class IpcChildWithModuleWorkerAndMessagePort extends Ipc {
821
+ constructor(port) {
822
+ super(port);
823
+ }
824
+ getData(event) {
825
+ return getData$1(event);
826
+ }
827
+ send(message) {
828
+ this._rawIpc.postMessage(message);
829
+ }
830
+ sendAndTransfer(message) {
831
+ const transfer = getTransferrables(message);
832
+ this._rawIpc.postMessage(message, transfer);
833
+ }
834
+ dispose() {
835
+ if (this._rawIpc.close) {
836
+ this._rawIpc.close();
837
+ }
838
+ }
839
+ onClose(callback) {
840
+ // ignore
841
+ }
842
+ onMessage(callback) {
843
+ this._rawIpc.addEventListener('message', callback);
844
+ this._rawIpc.start();
845
+ }
846
+ }
847
+ const wrap$4 = port => {
848
+ return new IpcChildWithModuleWorkerAndMessagePort(port);
849
+ };
850
+ const IpcChildWithModuleWorkerAndMessagePort$1 = {
851
+ __proto__: null,
852
+ listen: listen$1$1,
853
+ wrap: wrap$4
854
+ };
855
+ const Message$1 = 3;
856
+ const addListener = (emitter, type, callback) => {
857
+ if ('addEventListener' in emitter) {
858
+ emitter.addEventListener(type, callback);
859
+ } else {
860
+ emitter.on(type, callback);
861
+ }
862
+ };
863
+ const removeListener = (emitter, type, callback) => {
864
+ if ('removeEventListener' in emitter) {
865
+ emitter.removeEventListener(type, callback);
866
+ } else {
867
+ emitter.off(type, callback);
868
+ }
869
+ };
870
+ const getFirstEvent = (eventEmitter, eventMap) => {
871
+ const {
872
+ resolve,
873
+ promise
874
+ } = withResolvers();
875
+ const listenerMap = Object.create(null);
876
+ const cleanup = value => {
877
+ for (const event of Object.keys(eventMap)) {
878
+ removeListener(eventEmitter, event, listenerMap[event]);
879
+ }
880
+ resolve(value);
881
+ };
882
+ for (const [event, type] of Object.entries(eventMap)) {
883
+ const listener = event => {
884
+ cleanup({
885
+ type,
886
+ event
887
+ });
888
+ };
889
+ addListener(eventEmitter, event, listener);
890
+ listenerMap[event] = listener;
891
+ }
892
+ return promise;
893
+ };
894
+ const create$2$1 = async ({
895
+ messagePort,
896
+ isMessagePortOpen
897
+ }) => {
898
+ if (!isMessagePort(messagePort)) {
899
+ throw new IpcError('port must be of type MessagePort');
900
+ }
901
+ if (isMessagePortOpen) {
902
+ return messagePort;
903
+ }
904
+ const eventPromise = getFirstEvent(messagePort, {
905
+ message: Message$1
906
+ });
907
+ messagePort.start();
908
+ const event = await eventPromise;
909
+ // @ts-ignore
910
+ if (event.data !== readyMessage) {
911
+ throw new IpcError('unexpected first message');
912
+ }
913
+ return messagePort;
914
+ };
915
+ const signal = messagePort => {
916
+ messagePort.start();
917
+ };
918
+ class IpcParentWithMessagePort extends Ipc {
919
+ constructor(port) {
920
+ super(port);
921
+ }
922
+ getData = getData$1;
923
+ send(message) {
924
+ this._rawIpc.postMessage(message);
925
+ }
926
+ sendAndTransfer(message) {
927
+ throw new Error('not implemented');
928
+ }
929
+ dispose() {
930
+ this._rawIpc.close();
931
+ }
932
+ onMessage(callback) {
933
+ this._rawIpc.addEventListener('message', callback);
934
+ }
935
+ onClose(callback) {}
936
+ }
937
+ const wrap$2 = messagePort => {
938
+ return new IpcParentWithMessagePort(messagePort);
939
+ };
940
+ const IpcParentWithMessagePort$1 = {
941
+ __proto__: null,
942
+ create: create$2$1,
943
+ signal,
944
+ wrap: wrap$2
945
+ };
946
+ const Open = 1;
947
+ const Close = 2;
948
+ const stringifyCompact = value => {
949
+ return JSON.stringify(value);
950
+ };
951
+ const parse = content => {
952
+ if (content === 'undefined') {
953
+ return null;
954
+ }
955
+ try {
956
+ return JSON.parse(content);
957
+ } catch (error) {
958
+ throw new VError(error, 'failed to parse json');
959
+ }
960
+ };
961
+ const waitForWebSocketToBeOpen = webSocket => {
962
+ return getFirstEvent(webSocket, {
963
+ open: Open,
964
+ close: Close
965
+ });
966
+ };
967
+ const create$3 = async ({
968
+ webSocket
969
+ }) => {
970
+ const firstWebSocketEvent = await waitForWebSocketToBeOpen(webSocket);
971
+ // @ts-ignore
972
+ if (firstWebSocketEvent.type === Close) {
973
+ throw new IpcError('Websocket connection was immediately closed');
974
+ }
975
+ return webSocket;
976
+ };
977
+ class IpcParentWithWebSocket extends Ipc {
978
+ getData(event) {
979
+ return parse(event.data);
980
+ }
981
+ send(message) {
982
+ this._rawIpc.send(stringifyCompact(message));
983
+ }
984
+ sendAndTransfer(message) {
985
+ throw new Error('sendAndTransfer not supported');
986
+ }
987
+ dispose() {
988
+ this._rawIpc.close();
989
+ }
990
+ onClose(callback) {
991
+ this._rawIpc.addEventListener('close', callback);
992
+ }
993
+ onMessage(callback) {
994
+ this._rawIpc.addEventListener('message', callback);
995
+ }
996
+ }
997
+ const wrap$1 = webSocket => {
998
+ return new IpcParentWithWebSocket(webSocket);
999
+ };
1000
+ const IpcParentWithWebSocket$1 = {
1001
+ __proto__: null,
1002
+ create: create$3,
1003
+ wrap: wrap$1
1004
+ };
1005
+
1006
+ const createRpc = ipc => {
1007
+ const rpc = {
1008
+ /**
1009
+ * @deprecated
1010
+ */
1011
+ send(method, ...params) {
1012
+ send(ipc, method, ...params);
1013
+ },
1014
+ invoke(method, ...params) {
1015
+ return invoke$3(ipc, method, ...params);
1016
+ },
1017
+ invokeAndTransfer(method, ...params) {
1018
+ return invokeAndTransfer$1(ipc, method, ...params);
1019
+ }
1020
+ };
1021
+ return rpc;
1022
+ };
1023
+ const requiresSocket = () => {
1024
+ return false;
1025
+ };
1026
+ const preparePrettyError = error => {
1027
+ return error;
1028
+ };
1029
+ const logError = () => {
1030
+ // handled by renderer worker
1031
+ };
1032
+ const handleMessage = event => {
1033
+ return handleJsonRpcMessage(event.target, event.data, execute, resolve, preparePrettyError, logError, requiresSocket);
1034
+ };
1035
+ const handleIpc = ipc => {
1036
+ if ('addEventListener' in ipc) {
1037
+ ipc.addEventListener('message', handleMessage);
1038
+ } else if ('on' in ipc) {
1039
+ // deprecated
1040
+ ipc.on('message', handleMessage);
1041
+ }
1042
+ };
1043
+ const listen$1 = async (module, options) => {
1044
+ const rawIpc = await module.listen(options);
1045
+ if (module.signal) {
1046
+ module.signal(rawIpc);
1047
+ }
1048
+ const ipc = module.wrap(rawIpc);
1049
+ return ipc;
1050
+ };
1051
+ const create$5 = async ({
1052
+ commandMap,
1053
+ messagePort,
1054
+ isMessagePortOpen
1055
+ }) => {
1056
+ // TODO create a commandMap per rpc instance
1057
+ register(commandMap);
1058
+ const rawIpc = await IpcParentWithMessagePort$1.create({
1059
+ messagePort,
1060
+ isMessagePortOpen
1061
+ });
1062
+ const ipc = IpcParentWithMessagePort$1.wrap(rawIpc);
1063
+ handleIpc(ipc);
1064
+ const rpc = createRpc(ipc);
1065
+ return rpc;
1066
+ };
1067
+ const MessagePortRpcParent = {
1068
+ __proto__: null,
1069
+ create: create$5
1070
+ };
1071
+ const create$1$1 = async ({
1072
+ commandMap,
1073
+ webSocket
1074
+ }) => {
1075
+ // TODO create a commandMap per rpc instance
1076
+ register(commandMap);
1077
+ const rawIpc = await IpcParentWithWebSocket$1.create({
1078
+ webSocket
1079
+ });
1080
+ const ipc = IpcParentWithWebSocket$1.wrap(rawIpc);
1081
+ handleIpc(ipc);
1082
+ const rpc = createRpc(ipc);
1083
+ return rpc;
1084
+ };
1085
+ const WebSocketRpcParent = {
1086
+ __proto__: null,
1087
+ create: create$1$1
1088
+ };
1089
+ const create$2 = async ({
1090
+ commandMap
1091
+ }) => {
1092
+ // TODO create a commandMap per rpc instance
1093
+ register(commandMap);
1094
+ const ipc = await listen$1(IpcChildWithModuleWorkerAndMessagePort$1);
1095
+ handleIpc(ipc);
1096
+ const rpc = createRpc(ipc);
1097
+ return rpc;
1098
+ };
1099
+ const WebWorkerRpcClient = {
1100
+ __proto__: null,
1101
+ create: create$2
1102
+ };
1103
+
1104
+ const Empty$1 = 0;
1105
+ const FocusIgnoreFiles = 1012;
1106
+ const FocusSearch = 1013;
1107
+ const FocusSearchExcludeInput = 1008;
1108
+ const FocusSearchIncludeInput = 1007;
1109
+ const FocusSearchInput = 21;
1110
+ const FocusSearchMatchCase = 32;
1111
+ const FocusSearchOpenEditors = 1011;
1112
+ const FocusSearchPreserveCase = 36;
1113
+ const FocusSearchRegex = 33;
1114
+ const FocusSearchReplaceAll = 35;
1115
+ const FocusSearchReplaceInput = 31;
1116
+ const FocusSearchResults = 22;
1117
+ const FocusSearchWholeWord = 34;
1118
+ const FocusToggleDetails = 1010;
1119
+ const FocusToggleReplace = 1020;
1120
+
1121
+ const User = 1;
1122
+ const Script = 2;
1123
+
1124
+ const clearSearchResults$1 = state => {
1125
+ return {
1126
+ ...state,
1127
+ value: '',
1128
+ items: [],
1129
+ minLineY: 0,
1130
+ maxLineY: 0,
1131
+ message: '',
1132
+ focus: FocusSearchInput,
1133
+ focusSource: Script
1134
+ };
1135
+ };
1136
+
1137
+ const state$3 = {
1138
+ rpc: undefined
1139
+ };
1140
+ const invoke$2 = (method, ...params) => {
1141
+ const rpc = state$3.rpc;
1142
+ // @ts-ignore
1143
+ return rpc.invoke(method, ...params);
1144
+ };
1145
+ const invokeAndTransfer = (method, ...params) => {
1146
+ const rpc = state$3.rpc;
1147
+ // @ts-ignore
1148
+ return rpc.invokeAndTransfer(method, ...params);
1149
+ };
1150
+ const setRpc = rpc => {
1151
+ state$3.rpc = rpc;
1152
+ };
1153
+
1154
+ const copy = async state => {
1155
+ const {
1156
+ items,
1157
+ listFocusedIndex
1158
+ } = state;
1159
+ if (listFocusedIndex === -1) {
1160
+ return state;
1161
+ }
1162
+ const item = items[listFocusedIndex];
1163
+ await invoke$2('ClipBoard.writeText', item.text);
1164
+ return state;
1165
+ };
1166
+
1167
+ const minimumSliderSize = 20;
1168
+
1169
+ const states = Object.create(null);
1170
+ const get = uid => {
1171
+ return states[uid];
1172
+ };
1173
+ const set = (uid, oldState, newState) => {
1174
+ states[uid] = {
1175
+ oldState,
1176
+ newState
1177
+ };
1178
+ };
1179
+
1180
+ const create$1 = ({
1181
+ itemHeight,
1182
+ headerHeight = 0,
1183
+ minimumSliderSize = 20
1184
+ }) => {
1185
+ return {
1186
+ deltaY: 0,
1187
+ minLineY: 0,
1188
+ maxLineY: 0,
1189
+ finalDeltaY: 0,
1190
+ itemHeight,
1191
+ headerHeight,
1192
+ items: [],
1193
+ listItems: [],
1194
+ minimumSliderSize,
1195
+ focusedIndex: -1,
1196
+ touchOffsetY: 0,
1197
+ touchTimeStamp: 0,
1198
+ touchDifference: 0,
1199
+ scrollBarHeight: 0,
1200
+ scrollBarActive: false
1201
+ };
1202
+ };
1203
+
1204
+ const create = (uid, x, y, width, height, workspacePath, assetDir, itemHeight, value = '', replacement = '', platform) => {
1205
+ const state = {
1206
+ uid,
1207
+ searchResults: [],
1208
+ stats: {},
1209
+ searchId: -1,
1210
+ value,
1211
+ disposed: false,
1212
+ fileCount: 0,
1213
+ x,
1214
+ y,
1215
+ width,
1216
+ height,
1217
+ ...create$1({
1218
+ itemHeight: itemHeight || 22,
1219
+ minimumSliderSize: minimumSliderSize,
1220
+ headerHeight: 61 // TODO
1221
+ }),
1222
+ threads: 0,
1223
+ replacement,
1224
+ matchCount: 0,
1225
+ listFocused: false,
1226
+ listFocusedIndex: -1,
1227
+ inputSource: User,
1228
+ workspacePath: workspacePath,
1229
+ includeValue: '',
1230
+ excludeValue: '',
1231
+ focus: Empty$1,
1232
+ loaded: false,
1233
+ message: '',
1234
+ collapsedPaths: [],
1235
+ icons: [],
1236
+ assetDir,
1237
+ deltaY: 0,
1238
+ finalDeltaY: 0,
1239
+ focused: false,
1240
+ focusedIndex: -1,
1241
+ handleOffset: 0,
1242
+ focusSource: User,
1243
+ flags: 0,
1244
+ platform
1245
+ };
1246
+ set(uid, state, state);
1247
+ return state;
1248
+ };
1249
+
1250
+ // based on https://github.com/microsoft/vscode/blob/c0769274fa136b45799edeccc0d0a2f645b75caf/src/vs/base/common/arrays.ts#L625 (License MIT)
1251
+
1252
+ const insertInto = (array, start, newItems) => {
1253
+ const originalLength = array.length;
1254
+ const newItemsLength = newItems.length;
1255
+ array.length = originalLength + newItemsLength;
1256
+ // Move the items after the start index, start from the end so that we don't overwrite any value.
1257
+ for (let i = originalLength - 1; i >= start; i--) {
1258
+ array[i + newItemsLength] = array[i];
1259
+ }
1260
+ for (let i = 0; i < newItemsLength; i++) {
1261
+ array[i + start] = newItems[i];
1262
+ }
1263
+ };
1264
+ const push = (array, newItems) => {
1265
+ insertInto(array, array.length, newItems);
1266
+ };
1267
+ const isLastIndex = (array, index) => {
1268
+ return index === array.length - 1;
1269
+ };
1270
+ const lastIndex = array => {
1271
+ return array.length - 1;
1272
+ };
1273
+ const remove = (array, index, deleteCount) => {
1274
+ return array.toSpliced(index, deleteCount);
1275
+ };
1276
+ const fromAsync = async asyncIterable => {
1277
+ const children = [];
1278
+ for await (const value of asyncIterable) {
1279
+ children.push(value);
1280
+ }
1281
+ return children;
1282
+ };
1283
+
1284
+ const emptyObject = {};
1285
+ const RE_PLACEHOLDER = /\{(PH\d+)\}/g;
1286
+ const i18nString = (key, placeholders = emptyObject) => {
1287
+ if (placeholders === emptyObject) {
1288
+ return key;
1289
+ }
1290
+ const replacer = (match, rest) => {
1291
+ return placeholders[rest];
1292
+ };
1293
+ return key.replaceAll(RE_PLACEHOLDER, replacer);
1294
+ };
1295
+
1296
+ /**
1297
+ * @enum {string}
1298
+ */
1299
+ const UiStrings = {
1300
+ ClearSearchResults: 'Clear Search Results',
1301
+ CollapseAll: 'Collapse All',
1302
+ ConfirmReplaceAll: 'Replace All?',
1303
+ ConfirmReplaceManyOccurrencesInManyFiles: "Replace {PH1} occurrences across {PH2} files with '{PH3}'",
1304
+ ConfirmReplaceManyOccurrencesInManyFilesNoValue: 'Replace {PH1} occurrences across {PH2} files',
1305
+ ConfirmReplaceManyOccurrencesInOneFile: "Replace {PH1} occurrences across 1 file with '{PH2}'",
1306
+ ConfirmReplaceManyOccurrencesInOneFileNoValue: 'Replace {PH1} occurrences across 1 file',
1307
+ ConfirmReplaceOneOccurrenceInOneFile: "Replace 1 occurrence across 1 file with '{PH1}'",
1308
+ ConfirmReplaceOneOccurrenceInOneFileNoValue: 'Replace 1 occurrence across 1 file',
1309
+ CopyPath: 'Copy Path',
1310
+ Dismiss: 'Dismiss',
1311
+ ManyResultsInManyFiles: '{PH1} results in {PH2} files',
1312
+ ManyResultsInOneFile: '{PH1} results in 1 file',
1313
+ MatchCase: 'Match Case',
1314
+ MatchWholeWord: 'Match Whole Word',
1315
+ NoResults: 'No results found',
1316
+ Oneresult: '1 result in 1 file',
1317
+ OpenNewSearchEditor: 'Open New Search Editor',
1318
+ PreserveCase: 'Preserve Case',
1319
+ Refresh: 'Refresh',
1320
+ Replace: 'Replace',
1321
+ ReplaceAll: 'Replace All',
1322
+ ReplacedManyOccurrencesInManyFiles: "Replaced {PH1} occurrences across {PH2} files with '{PH3}'",
1323
+ ReplacedManyOccurrencesInOneFile: "Replaced {PH1} occurrences across 1 file with '{PH2}'",
1324
+ ReplacedOneOccurrenceInOneFile: "Replaced 1 occurrence across 1 file with '{PH1}'",
1325
+ ToggleReplace: 'Toggle Replace',
1326
+ UseRegularExpression: 'Use Regular Expression',
1327
+ ViewAsTree: 'View as Tree',
1328
+ FilesToInclude: 'Files to Include',
1329
+ FilesToExclude: 'Files to Exclude',
1330
+ ToggleSearchDetails: 'Toggle Search Details',
1331
+ SearchOnlyOpenEditors: 'Search Only Open Editors',
1332
+ UseExcludeSettings: 'Use Exclude Settings'
1333
+ };
1334
+ const noResults = () => {
1335
+ return i18nString(UiStrings.NoResults);
1336
+ };
1337
+ const oneResult = () => {
1338
+ return i18nString(UiStrings.Oneresult);
1339
+ };
1340
+ const toggleReplace$1 = () => {
1341
+ return i18nString(UiStrings.ToggleReplace);
1342
+ };
1343
+ const matchCase = () => {
1344
+ return i18nString(UiStrings.MatchCase);
1345
+ };
1346
+ const preserveCase = () => {
1347
+ return i18nString(UiStrings.PreserveCase);
1348
+ };
1349
+ const matchWholeWord = () => {
1350
+ return i18nString(UiStrings.MatchWholeWord);
1351
+ };
1352
+ const toggleSearchDetails = () => {
1353
+ return i18nString(UiStrings.ToggleSearchDetails);
1354
+ };
1355
+ const useRegularExpression = () => {
1356
+ return i18nString(UiStrings.UseRegularExpression);
1357
+ };
1358
+ const manyResultsInOneFile = resultCount => {
1359
+ return i18nString(UiStrings.ManyResultsInOneFile, {
1360
+ PH1: resultCount
1361
+ });
1362
+ };
1363
+ const manyResultsInManyFiles = (resultCount, fileResultCount) => {
1364
+ return i18nString(UiStrings.ManyResultsInManyFiles, {
1365
+ PH1: resultCount,
1366
+ PH2: fileResultCount
1367
+ });
1368
+ };
1369
+ const confirmReplaceOneOccurrenceInOneFile = replacement => {
1370
+ return i18nString(UiStrings.ConfirmReplaceOneOccurrenceInOneFile, {
1371
+ PH1: replacement
1372
+ });
1373
+ };
1374
+ const confirmReplaceOneOccurrenceInOneFileNoValue = () => {
1375
+ return i18nString(UiStrings.ConfirmReplaceOneOccurrenceInOneFileNoValue);
1376
+ };
1377
+ const confirmReplaceManyOccurrencesInOneFile = (matchCount, replacement) => {
1378
+ return i18nString(UiStrings.ConfirmReplaceManyOccurrencesInOneFile, {
1379
+ PH1: matchCount,
1380
+ PH2: replacement
1381
+ });
1382
+ };
1383
+ const confirmReplaceManyOccurrencesInOneFileNoValue = matchCount => {
1384
+ return i18nString(UiStrings.ConfirmReplaceManyOccurrencesInOneFileNoValue, {
1385
+ PH1: matchCount
1386
+ });
1387
+ };
1388
+ const confirmReplaceManyOccurrencesInManyFiles = (matchCount, fileCount, replacement) => {
1389
+ return i18nString(UiStrings.ConfirmReplaceManyOccurrencesInManyFiles, {
1390
+ PH1: matchCount,
1391
+ PH2: fileCount,
1392
+ PH3: replacement
1393
+ });
1394
+ };
1395
+ const confirmReplaceManyOccurrencesInManyFilesNoValue = (matchCount, fileCount) => {
1396
+ return i18nString(UiStrings.ConfirmReplaceManyOccurrencesInManyFilesNoValue, {
1397
+ PH1: matchCount,
1398
+ PH2: fileCount
1399
+ });
1400
+ };
1401
+ const replaceAll$1 = () => {
1402
+ return i18nString(UiStrings.ReplaceAll);
1403
+ };
1404
+ const replace = () => {
1405
+ return i18nString(UiStrings.Replace);
1406
+ };
1407
+ const refresh$1 = () => {
1408
+ return i18nString(UiStrings.Refresh);
1409
+ };
1410
+ const clearSearchResults = () => {
1411
+ return i18nString(UiStrings.ClearSearchResults);
1412
+ };
1413
+ const openNewSearchEditor = () => {
1414
+ return i18nString(UiStrings.OpenNewSearchEditor);
1415
+ };
1416
+ const viewAsTree = () => {
1417
+ return i18nString(UiStrings.ViewAsTree);
1418
+ };
1419
+ const collapseAll = () => {
1420
+ return i18nString(UiStrings.CollapseAll);
1421
+ };
1422
+ const filesToInclude = () => {
1423
+ return i18nString(UiStrings.FilesToInclude);
1424
+ };
1425
+ const filesToExclude = () => {
1426
+ return i18nString(UiStrings.FilesToExclude);
1427
+ };
1428
+ const searchOnlyOpenEditors = () => {
1429
+ return i18nString(UiStrings.SearchOnlyOpenEditors);
1430
+ };
1431
+ const useExcludeSettings = () => {
1432
+ return i18nString(UiStrings.UseExcludeSettings);
1433
+ };
1434
+
1435
+ const getStatusMessage = (resultCount, fileResultCount) => {
1436
+ if (resultCount === 0) {
1437
+ return noResults();
1438
+ }
1439
+ if (resultCount === 1) {
1440
+ return oneResult();
1441
+ }
1442
+ if (fileResultCount === 1) {
1443
+ return manyResultsInOneFile(resultCount);
1444
+ }
1445
+ return manyResultsInManyFiles(resultCount, fileResultCount);
1446
+ };
1447
+
1448
+ const File$1 = 1;
1449
+ const Match = 2;
1450
+
1451
+ const getSetSize = (items, index) => {
1452
+ let setSize = 0;
1453
+ for (let i = index + 1; i < items.length; i++) {
1454
+ if (items[i].type === File$1) {
1455
+ break;
1456
+ }
1457
+ setSize++;
1458
+ }
1459
+ return setSize;
1460
+ };
1461
+ const getRemoveIndicesFile = (items, item, index, matchCount, fileCount) => {
1462
+ const setSize = getSetSize(items, index);
1463
+ return {
1464
+ startIndex: index,
1465
+ removeCount: setSize + 1,
1466
+ newFocusedIndex: index + setSize + 1 < items.length ? index : index - 1,
1467
+ newFileCount: fileCount - 1,
1468
+ newMatchCount: matchCount - setSize
1469
+ };
1470
+ };
1471
+ const getRemoveIndicesMatch = (items, index, matchCount, fileCount) => {
1472
+ for (let i = index; i >= 0; i--) {
1473
+ if (items[i].type === File$1) {
1474
+ const setSize = getSetSize(items, i);
1475
+ if (setSize === 1) {
1476
+ return {
1477
+ startIndex: i,
1478
+ removeCount: 2,
1479
+ newFocusedIndex: i - 1,
1480
+ newFileCount: fileCount - 1,
1481
+ newMatchCount: matchCount - 1
1482
+ };
1483
+ }
1484
+ return {
1485
+ startIndex: index,
1486
+ removeCount: 1,
1487
+ newFocusedIndex: index,
1488
+ newFileCount: fileCount,
1489
+ newMatchCount: matchCount - 1
1490
+ };
1491
+ }
1492
+ }
1493
+ throw new Error('could not compute indices to remove');
1494
+ };
1495
+ const getRemoveIndices = (items, index, matchCount, fileCount) => {
1496
+ const item = items[index];
1497
+ switch (item.type) {
1498
+ case File$1:
1499
+ return getRemoveIndicesFile(items, item, index, matchCount, fileCount);
1500
+ case Match:
1501
+ return getRemoveIndicesMatch(items, index, matchCount, fileCount);
1502
+ default:
1503
+ throw new Error('unknown search result type');
1504
+ }
1505
+ };
1506
+ const removeItemFromItems = (items, index, matchCount, fileCount) => {
1507
+ const {
1508
+ startIndex,
1509
+ removeCount,
1510
+ newFocusedIndex,
1511
+ newFileCount,
1512
+ newMatchCount
1513
+ } = getRemoveIndices(items, index, matchCount, fileCount);
1514
+ const newItems = remove(items, startIndex, removeCount);
1515
+ return {
1516
+ newItems,
1517
+ newFocusedIndex,
1518
+ newFileCount,
1519
+ newMatchCount
1520
+ };
1521
+ };
1522
+ const getNewMinMax = (newItemsLength, minLineY, maxLineY, deltaY, itemHeight) => {
1523
+ if (maxLineY > newItemsLength) {
1524
+ const diff = maxLineY - minLineY;
1525
+ const newMinLineY = Math.max(newItemsLength - diff, 0);
1526
+ const newDeltaY = newMinLineY * itemHeight;
1527
+ return {
1528
+ newDeltaY,
1529
+ newMinLineY,
1530
+ newMaxLineY: newItemsLength
1531
+ };
1532
+ }
1533
+ return {
1534
+ newDeltaY: deltaY,
1535
+ newMinLineY: minLineY,
1536
+ newMaxLineY: maxLineY
1537
+ };
1538
+ };
1539
+ const dismissItem = state => {
1540
+ const {
1541
+ items,
1542
+ listFocusedIndex,
1543
+ fileCount,
1544
+ matchCount,
1545
+ minLineY,
1546
+ maxLineY,
1547
+ deltaY,
1548
+ itemHeight
1549
+ } = state;
1550
+ if (listFocusedIndex === -1) {
1551
+ return state;
1552
+ }
1553
+ const {
1554
+ newItems,
1555
+ newFocusedIndex,
1556
+ newMatchCount,
1557
+ newFileCount
1558
+ } = removeItemFromItems(items, listFocusedIndex, matchCount, fileCount);
1559
+ const message = getStatusMessage(newMatchCount, newFileCount);
1560
+ const {
1561
+ newMinLineY,
1562
+ newMaxLineY,
1563
+ newDeltaY
1564
+ } = getNewMinMax(newItems.length, minLineY, maxLineY, deltaY, itemHeight);
1565
+ return {
1566
+ ...state,
1567
+ items: newItems,
1568
+ listFocusedIndex: newFocusedIndex,
1569
+ message,
1570
+ matchCount: newMatchCount,
1571
+ fileCount: newFileCount,
1572
+ minLineY: newMinLineY,
1573
+ maxLineY: newMaxLineY,
1574
+ deltaY: newDeltaY
1575
+ };
1576
+ };
1577
+
1578
+ const focusMatchCase$1 = state => {
1579
+ return {
1580
+ ...state,
1581
+ focus: FocusSearchMatchCase
1582
+ };
1583
+ };
1584
+
1585
+ const PreserveCase$1 = 1 << 0; // 1
1586
+ const UseRegularExpression$1 = 1 << 1; // 2
1587
+ const ReplaceExpanded = 1 << 2; // 4
1588
+ const MatchWholeWord$1 = 1 << 3; // 8
1589
+ const MatchCase$1 = 1 << 4; // 16
1590
+ const DetailsExpanded = 1 << 5; // 32
1591
+ const OpenEditors = 1 << 6; // 64
1592
+ const UseIgnoreFiles = 1 << 7; // 128
1593
+
1594
+ const hasPreserveCase = flags => {
1595
+ return (flags & PreserveCase$1) === PreserveCase$1;
1596
+ };
1597
+ const hasUseRegularExpression = flags => {
1598
+ return (flags & UseRegularExpression$1) === UseRegularExpression$1;
1599
+ };
1600
+ const hasReplaceExpanded = flags => {
1601
+ return (flags & ReplaceExpanded) === ReplaceExpanded;
1602
+ };
1603
+ const hasMatchWholeWord = flags => {
1604
+ return (flags & MatchWholeWord$1) === MatchWholeWord$1;
1605
+ };
1606
+ const hasMatchCase = flags => {
1607
+ return (flags & MatchCase$1) === MatchCase$1;
1608
+ };
1609
+ const hasDetailsExpanded = flags => {
1610
+ return (flags & DetailsExpanded) === DetailsExpanded;
1611
+ };
1612
+
1613
+ const getNextFocus = (focus, flags) => {
1614
+ switch (focus) {
1615
+ case FocusToggleReplace:
1616
+ return FocusSearchInput;
1617
+ case FocusSearchInput:
1618
+ if (flags & ReplaceExpanded) {
1619
+ return FocusSearchReplaceInput;
1620
+ }
1621
+ return FocusSearchMatchCase;
1622
+ case FocusSearchMatchCase:
1623
+ return FocusSearchWholeWord;
1624
+ case FocusSearchWholeWord:
1625
+ return FocusSearchRegex;
1626
+ case FocusSearchRegex:
1627
+ if (flags & ReplaceExpanded) {
1628
+ return FocusSearchPreserveCase;
1629
+ }
1630
+ return FocusToggleDetails;
1631
+ case FocusSearchReplaceInput:
1632
+ return FocusSearchMatchCase;
1633
+ case FocusSearchPreserveCase:
1634
+ return FocusSearchReplaceAll;
1635
+ case FocusSearchReplaceAll:
1636
+ return FocusToggleDetails;
1637
+ case FocusSearchIncludeInput:
1638
+ return FocusSearchOpenEditors;
1639
+ case FocusSearchOpenEditors:
1640
+ return FocusSearchExcludeInput;
1641
+ case FocusSearchExcludeInput:
1642
+ return FocusIgnoreFiles;
1643
+ case FocusToggleDetails:
1644
+ return FocusSearchIncludeInput;
1645
+ default:
1646
+ return focus;
1647
+ }
1648
+ };
1649
+
1650
+ const focusNextInput = state => {
1651
+ const nextFocus = getNextFocus(state.focus, state.flags);
1652
+ return {
1653
+ ...state,
1654
+ focus: nextFocus,
1655
+ focusSource: Script
1656
+ };
1657
+ };
1658
+
1659
+ const getPreviousFocus = (focus, flags) => {
1660
+ switch (focus) {
1661
+ case FocusSearchInput:
1662
+ return FocusToggleReplace;
1663
+ case FocusSearchMatchCase:
1664
+ if (flags & ReplaceExpanded) {
1665
+ return FocusSearchReplaceInput;
1666
+ }
1667
+ return FocusSearchInput;
1668
+ case FocusSearchWholeWord:
1669
+ return FocusSearchMatchCase;
1670
+ case FocusSearchRegex:
1671
+ return FocusSearchWholeWord;
1672
+ case FocusSearchPreserveCase:
1673
+ return FocusSearchRegex;
1674
+ case FocusSearchReplaceInput:
1675
+ return FocusSearchInput;
1676
+ case FocusSearchReplaceAll:
1677
+ return FocusSearchPreserveCase;
1678
+ case FocusToggleDetails:
1679
+ if (flags & ReplaceExpanded) {
1680
+ return FocusSearchReplaceAll;
1681
+ }
1682
+ return FocusSearchRegex;
1683
+ case FocusSearchOpenEditors:
1684
+ return FocusSearchIncludeInput;
1685
+ case FocusSearchExcludeInput:
1686
+ return FocusSearchOpenEditors;
1687
+ case FocusIgnoreFiles:
1688
+ return FocusSearchExcludeInput;
1689
+ case FocusSearchIncludeInput:
1690
+ return FocusToggleDetails;
1691
+ default:
1692
+ return focus;
1693
+ }
1694
+ };
1695
+
1696
+ const focusPreviousInput = state => {
1697
+ const previousFocus = getPreviousFocus(state.focus, state.flags);
1698
+ return {
1699
+ ...state,
1700
+ focus: previousFocus,
1701
+ focusSource: Script
1702
+ };
1703
+ };
1704
+
1705
+ const focusReplaceValue$1 = state => {
1706
+ return {
1707
+ ...state,
1708
+ focus: FocusSearchReplaceInput,
1709
+ focusSource: Script
1710
+ };
1711
+ };
1712
+
1713
+ const focusSearchValue$1 = state => {
1714
+ return {
1715
+ ...state,
1716
+ focus: FocusSearchInput
1717
+ };
1718
+ };
1719
+
1720
+ const focusSearchValueNext = state => {
1721
+ if (hasReplaceExpanded(state.flags)) {
1722
+ return focusReplaceValue$1(state);
1723
+ }
1724
+ return focusMatchCase$1(state);
1725
+ };
1726
+
1727
+ const CheckBox = 'checkbox';
1728
+ const None = 'none';
1729
+ const Status = 'status';
1730
+ const Tree = 'tree';
1731
+ const TreeItem$1 = 'treeitem';
1732
+ const ToolBar = 'toolbar';
1733
+ const Button$2 = 'button';
1734
+
1735
+ const Actions = 'Actions';
1736
+ const Badge = 'Badge';
1737
+ const Chevron = 'Chevron';
1738
+ const CloseMaskIcon = 'MaskIcon MaskIconClose';
1739
+ const Empty = '';
1740
+ const FileIcon = 'FileIcon';
1741
+ const FocusOutline = 'FocusOutline';
1742
+ const Grow = 'Grow';
1743
+ const Highlight = 'Highlight';
1744
+ const HighlightDeleted = 'HighlightDeleted';
1745
+ const HighlightInserted = 'HighlightInserted';
1746
+ const IconButton = 'IconButton';
1747
+ const Label = 'Label';
1748
+ const List = 'List';
1749
+ const MaskIcon = 'MaskIcon';
1750
+ const MaskIconBook = 'MaskIconBook';
1751
+ const MaskIconCaseSensitive = 'MaskIconCaseSensitive';
1752
+ const MaskIconChevronDown = 'MaskIconChevronDown';
1753
+ const MaskIconChevronRight = 'MaskIconChevronRight';
1754
+ const MaskIconEllipsis = 'MaskIconEllipsis';
1755
+ const MaskIconExclude = 'MaskIconExclude';
1756
+ const MaskIconPreserveCase = 'MaskIconPreserveCase';
1757
+ const MaskIconRegex = 'MaskIconRegex';
1758
+ const MaskIconReplaceAll = 'MaskIconReplaceAll';
1759
+ const MaskIconWholeWord = 'MaskIconWholeWord';
1760
+ const MultilineInputBox = 'MultilineInputBox';
1761
+ const Search$1 = 'Search';
1762
+ const SearchField = 'SearchField';
1763
+ const SearchFieldButton = 'SearchFieldButton';
1764
+ const SearchFieldButtonChecked = 'SearchFieldButtonChecked';
1765
+ const SearchFieldButtons = 'SearchFieldButtons';
1766
+ const SearchFieldContainer = 'SearchFieldContainer';
1767
+ const SearchHeader = 'SearchHeader';
1768
+ const SearchHeaderDetails = 'SearchHeaderDetails';
1769
+ const SearchHeaderDetailsExpanded = 'SearchHeaderDetailsExpanded';
1770
+ const SearchHeaderDetailsExpandedTop = 'SearchHeaderDetailsExpandedTop';
1771
+ const SearchHeaderDetailsHeading = 'SearchHeaderDetailsHeading';
1772
+ const SearchHeaderTop = 'SearchHeaderTop';
1773
+ const SearchHeaderTopRight = 'SearchHeaderTopRight';
1774
+ const SearchRemove = 'SearchRemove';
1775
+ const SearchToggleButton = 'SearchToggleButton';
1776
+ const SearchToggleButtonExpanded = 'SearchToggleButtonExpanded';
1777
+ const SourceControlBadge = 'SourceControlBadge';
1778
+ const ToggleDetails = 'ToggleDetails';
1779
+ const TreeItem = 'TreeItem';
1780
+ const TreeItemActive = 'TreeItemActive';
1781
+ const Viewlet = 'Viewlet';
1782
+ const ViewletSearchMessage = 'ViewletSearchMessage';
1783
+
1784
+ const Button$1 = 1;
1785
+
1786
+ const Button = 1;
1787
+ const Del = 21;
1788
+ const Div = 4;
1789
+ const H4 = 24;
1790
+ const Img = 17;
1791
+ const Ins = 20;
1792
+ const Span = 8;
1793
+ const Text = 12;
1794
+ const TextArea = 62;
1795
+
1796
+ const mergeClassNames = (...classNames) => {
1797
+ return classNames.filter(Boolean).join(' ');
1798
+ };
1799
+
1800
+ const getIconVirtualDom = (icon, type = Div) => {
1801
+ return {
1802
+ type,
1803
+ className: mergeClassNames(MaskIcon, `MaskIcon${icon}`),
1804
+ role: None,
1805
+ childCount: 0
1806
+ };
1807
+ };
1808
+
1809
+ const getActionButtonVirtualDom = action => {
1810
+ const {
1811
+ id,
1812
+ icon,
1813
+ command
1814
+ } = action;
1815
+ return [{
1816
+ type: Button,
1817
+ className: IconButton,
1818
+ title: id,
1819
+ 'data-command': command,
1820
+ childCount: 1
1821
+ }, getIconVirtualDom(icon)];
1822
+ };
1823
+
1824
+ const getActionVirtualDom = action => {
1825
+ switch (action.type) {
1826
+ case Button$1:
1827
+ return getActionButtonVirtualDom(action);
1828
+ default:
1829
+ return [];
1830
+ }
1831
+ };
1832
+
1833
+ const getActionsVirtualDom = actions => {
1834
+ return [{
1835
+ type: Div,
1836
+ className: Actions,
1837
+ role: ToolBar,
1838
+ childCount: actions.length
1839
+ }, ...actions.flatMap(getActionVirtualDom)];
1840
+ };
1841
+
1842
+ const getFlags = uid => {
1843
+ const {
1844
+ newState
1845
+ } = get(uid);
1846
+ return newState.flags;
1847
+ };
1848
+
1849
+ const getFocus = uid => {
1850
+ const {
1851
+ newState
1852
+ } = get(uid);
1853
+ return newState.focus;
1854
+ };
1855
+
1856
+ const Tab = 2;
1857
+ const Enter = 3;
1858
+ const End = 255;
1859
+ const Home = 12;
1860
+ const UpArrow = 14;
1861
+ const DownArrow = 16;
1862
+ const Delete = 18;
1863
+ const KeyC = 31;
1864
+
1865
+ const CtrlCmd = 1 << 11 >>> 0;
1866
+ const Shift = 1 << 10 >>> 0;
1867
+ const Alt = 1 << 9 >>> 0;
1868
+
1869
+ const getKeyBindings = () => {
1870
+ return [{
1871
+ key: CtrlCmd | Alt | Enter,
1872
+ command: 'Search.replaceAll',
1873
+ when: FocusSearch
1874
+ }, {
1875
+ key: Tab,
1876
+ command: 'Search.focusNextInput',
1877
+ when: FocusSearch
1878
+ }, {
1879
+ key: Shift | Tab,
1880
+ command: 'Search.focusPreviousInput',
1881
+ when: FocusSearch
1882
+ }, {
1883
+ key: DownArrow,
1884
+ command: 'Search.focusNext',
1885
+ when: FocusSearchResults
1886
+ }, {
1887
+ key: UpArrow,
1888
+ command: 'Search.focusPrevious',
1889
+ when: FocusSearchResults
1890
+ }, {
1891
+ key: Delete,
1892
+ command: 'Search.dismissItem',
1893
+ when: FocusSearchResults
1894
+ }, {
1895
+ key: Home,
1896
+ command: 'Search.focusFirst',
1897
+ when: FocusSearchResults
1898
+ }, {
1899
+ key: End,
1900
+ command: 'Search.focusLast',
1901
+ when: FocusSearchResults
1902
+ }, {
1903
+ key: CtrlCmd | KeyC,
1904
+ command: 'Search.copy',
1905
+ when: FocusSearchResults
1906
+ }, {
1907
+ key: Enter,
1908
+ command: 'Search.submit',
1909
+ when: FocusSearchInput
1910
+ }, {
1911
+ key: Enter,
1912
+ command: 'Search.submit',
1913
+ when: FocusSearchReplaceInput
1914
+ }];
1915
+ };
1916
+
1917
+ const ClearAll = 'ClearAll';
1918
+ const CollapseAll = 'CollapseAll';
1919
+ const ListFlat = 'ListFlat';
1920
+ const NewFile = 'NewFile';
1921
+ const Refresh = 'Refresh';
1922
+
1923
+ const getActions = () => {
1924
+ return [{
1925
+ type: Button$1,
1926
+ id: refresh$1(),
1927
+ icon: Refresh,
1928
+ command: 'refresh'
1929
+ }, {
1930
+ type: Button$1,
1931
+ id: clearSearchResults(),
1932
+ icon: ClearAll,
1933
+ command: 'clearSearchResults'
1934
+ }, {
1935
+ type: Button$1,
1936
+ id: openNewSearchEditor(),
1937
+ icon: NewFile,
1938
+ command: ''
1939
+ }, {
1940
+ type: Button$1,
1941
+ id: viewAsTree(),
1942
+ icon: ListFlat,
1943
+ command: ''
1944
+ }, {
1945
+ type: Button$1,
1946
+ id: collapseAll(),
1947
+ icon: CollapseAll,
1948
+ command: ''
1949
+ }];
1950
+ };
1951
+
1952
+ // TODO this should be in FileSystem module
1953
+ const pathBaseName = path => {
1954
+ return path.slice(path.lastIndexOf('/') + 1);
1955
+ };
1956
+ const getAbsolutePath = relativePath => {
1957
+ if (relativePath.startsWith('./')) {
1958
+ return `/${relativePath.slice(2)}`; // TODO support windows paths
1959
+ }
1960
+ return `/${relativePath}`; // TODO support windows paths
1961
+ };
1962
+
1963
+ const getDisplayResult = (result, fileIcons, fileIconIndex, itemHeight, i, setSize, searchTermLength, replacement, focusedIndex) => {
1964
+ const {
1965
+ type,
1966
+ text,
1967
+ lineNumber,
1968
+ start
1969
+ } = result;
1970
+ const posInSet = i + 1;
1971
+ const top = i * itemHeight;
1972
+ const focused = i === focusedIndex;
1973
+ switch (type) {
1974
+ case File$1:
1975
+ const path = text;
1976
+ const absolutePath = getAbsolutePath(path);
1977
+ const baseName = pathBaseName(path);
1978
+ return {
1979
+ title: absolutePath,
1980
+ type: File$1,
1981
+ text: baseName,
1982
+ icon: fileIcons[fileIconIndex],
1983
+ posInSet,
1984
+ setSize,
1985
+ top,
1986
+ lineNumber,
1987
+ matchStart: 0,
1988
+ matchLength: 0,
1989
+ replacement: '',
1990
+ depth: 0,
1991
+ matchCount: 0,
1992
+ focused
1993
+ };
1994
+ case Match:
1995
+ return {
1996
+ title: text,
1997
+ type: Match,
1998
+ text: text,
1999
+ icon: '',
2000
+ posInSet,
2001
+ setSize,
2002
+ top,
2003
+ lineNumber,
2004
+ matchStart: start,
2005
+ matchLength: searchTermLength,
2006
+ replacement,
2007
+ depth: 1,
2008
+ matchCount: 0,
2009
+ focused
2010
+ };
2011
+ default:
2012
+ throw new Error('unexpected search result type');
2013
+ }
2014
+ };
2015
+
2016
+ const getDisplayResults = (results, itemHeight, resultCount, searchTerm, minLineY, maxLineY, replacement, fileIcons, focusedIndex) => {
2017
+ const displayResults = [];
2018
+ const setSize = resultCount;
2019
+ const searchTermLength = searchTerm.length;
2020
+ let fileResult = {
2021
+ matchCount: 0
2022
+ };
2023
+ let fileIconIndex = 0;
2024
+ for (let i = minLineY; i < maxLineY; i++) {
2025
+ const result = results[i];
2026
+ const displayResult = getDisplayResult(result, fileIcons, fileIconIndex, itemHeight, i, setSize, searchTermLength, replacement, focusedIndex);
2027
+ displayResults.push(displayResult);
2028
+ if (result.type === File$1) {
2029
+ fileResult = displayResult;
2030
+ fileIconIndex++;
2031
+ } else {
2032
+ fileResult.matchCount++;
2033
+ }
2034
+ }
2035
+ return displayResults;
2036
+ };
2037
+
2038
+ const HandleClick = 'handleClick';
2039
+ const HandleHeaderClick = 'handleHeaderClick';
2040
+ const HandleHeaderFocusIn = 'handleHeaderFocusIn';
2041
+ const HandleListBlur = 'handleListBlur';
2042
+
2043
+ const getSearchDetailsToggleVirtualDom = () => {
2044
+ return [{
2045
+ type: Div,
2046
+ className: ToggleDetails,
2047
+ role: Button$2,
2048
+ tabIndex: 0,
2049
+ ariaLabel: toggleSearchDetails(),
2050
+ title: toggleSearchDetails(),
2051
+ childCount: 1
2052
+ }, {
2053
+ type: Div,
2054
+ className: mergeClassNames(MaskIcon, MaskIconEllipsis),
2055
+ childCount: 0
2056
+ }];
2057
+ };
2058
+
2059
+ const text = data => {
2060
+ return {
2061
+ type: Text,
2062
+ text: data,
2063
+ childCount: 0
2064
+ };
2065
+ };
2066
+
2067
+ const getSearchMessageVirtualDom = message => {
2068
+ return [{
2069
+ type: Div,
2070
+ className: ViewletSearchMessage,
2071
+ role: Status,
2072
+ tabIndex: 0,
2073
+ childCount: 1
2074
+ }, text(message)];
2075
+ };
2076
+
2077
+ const getSearchHeaderDetailsCollapsedVirtualDom = message => {
2078
+ return [{
2079
+ type: Div,
2080
+ className: SearchHeaderDetails,
2081
+ childCount: 2
2082
+ }, ...getSearchMessageVirtualDom(message), ...getSearchDetailsToggleVirtualDom()];
2083
+ };
2084
+
2085
+ const getSearchFieldButtonVirtualDom = button => {
2086
+ const {
2087
+ icon,
2088
+ checked,
2089
+ title
2090
+ } = button;
2091
+ return [{
2092
+ type: Div,
2093
+ className: mergeClassNames(SearchFieldButton, checked ? SearchFieldButtonChecked : ''),
2094
+ title,
2095
+ role: CheckBox,
2096
+ ariaChecked: checked,
2097
+ tabIndex: 0,
2098
+ childCount: 1
2099
+ }, {
2100
+ type: Div,
2101
+ className: mergeClassNames(MaskIcon, icon),
2102
+ childCount: 0
2103
+ }];
2104
+ };
2105
+
2106
+ const getOutSideButtonsDom = outsideButtons => {
2107
+ if (outsideButtons.length === 0) {
2108
+ return {
2109
+ preNodes: [],
2110
+ postNodes: []
2111
+ };
2112
+ }
2113
+ return {
2114
+ preNodes: [{
2115
+ type: Div,
2116
+ className: SearchFieldContainer,
2117
+ role: None,
2118
+ childCount: 1 + outsideButtons.length
2119
+ }],
2120
+ postNodes: outsideButtons.flatMap(getSearchFieldButtonVirtualDom)
2121
+ };
2122
+ };
2123
+ const getSearchFieldVirtualDom = (name, placeholder, onInput, insideButtons, outsideButtons, onFocus = '') => {
2124
+ const {
2125
+ preNodes,
2126
+ postNodes
2127
+ } = getOutSideButtonsDom(outsideButtons);
2128
+ const dom = [...preNodes, {
2129
+ type: Div,
2130
+ className: SearchField,
2131
+ role: None,
2132
+ childCount: 2
2133
+ }, {
2134
+ type: TextArea,
2135
+ className: MultilineInputBox,
2136
+ spellcheck: false,
2137
+ autocapitalize: 'off',
2138
+ autocorrect: 'off',
2139
+ placeholder,
2140
+ name,
2141
+ onInput,
2142
+ onFocus,
2143
+ childCount: 0
2144
+ }, {
2145
+ type: Div,
2146
+ className: SearchFieldButtons,
2147
+ childCount: insideButtons.length
2148
+ }, ...insideButtons.flatMap(getSearchFieldButtonVirtualDom), ...postNodes];
2149
+ return dom;
2150
+ };
2151
+
2152
+ const FilesToExclude = 'FilesToExclude';
2153
+ const FilesToInclude = 'FilesToInclude';
2154
+ const MatchCase = 'MatchCase';
2155
+ const MatchWholeWord = 'MatchWholeWord';
2156
+ const PreserveCase = 'PreserveCase';
2157
+ const ReplaceAll = 'ReplaceAll';
2158
+ const ReplaceValue = 'ReplaceValue';
2159
+ const SearchOnlyOpenEditors = 'SearchOnlyOpenEditors';
2160
+ const SearchValue = 'SearchValue';
2161
+ const ToggleReplace = 'ToggleReplace';
2162
+ const ToggleSearchDetails = 'ToggleSearchDetails';
2163
+ const UseExcludeSettings = 'UseExcludeSettings';
2164
+ const UseRegularExpression = 'UseRegularExpression';
2165
+
2166
+ const getSearchHeaderDetailsExpandedVirtualDom = (flags, message) => {
2167
+ const includeButtons = [{
2168
+ icon: MaskIconBook,
2169
+ title: searchOnlyOpenEditors(),
2170
+ command: 'searchOnlyOpenEditors',
2171
+ checked: Boolean(flags & OpenEditors),
2172
+ name: SearchOnlyOpenEditors
2173
+ }];
2174
+ const excludeButtons = [{
2175
+ icon: MaskIconExclude,
2176
+ title: useExcludeSettings(),
2177
+ command: 'toggleUseExcludeSettings',
2178
+ checked: Boolean(flags & UseIgnoreFiles),
2179
+ name: UseExcludeSettings
2180
+ }];
2181
+ return [{
2182
+ type: Div,
2183
+ className: SearchHeaderDetailsExpanded,
2184
+ childCount: 5
2185
+ }, {
2186
+ type: Div,
2187
+ className: SearchHeaderDetailsExpandedTop,
2188
+ childCount: 2
2189
+ }, ...getSearchDetailsToggleVirtualDom(), {
2190
+ type: H4,
2191
+ className: SearchHeaderDetailsHeading,
2192
+ childCount: 1
2193
+ }, text(filesToInclude()), ...getSearchFieldVirtualDom(FilesToInclude, 'Include', 'handleIncludeInput', includeButtons, []), {
2194
+ type: H4,
2195
+ className: SearchHeaderDetailsHeading,
2196
+ childCount: 1
2197
+ }, text(filesToExclude()), ...getSearchFieldVirtualDom(FilesToExclude, 'Exclude', 'handleExcludeInput', excludeButtons, []), ...getSearchMessageVirtualDom(message)];
2198
+ };
2199
+
2200
+ const getSearchHeaderDetailsVirtualDom = (flags, message) => {
2201
+ if (flags & DetailsExpanded) {
2202
+ return getSearchHeaderDetailsExpandedVirtualDom(flags, message);
2203
+ }
2204
+ return getSearchHeaderDetailsCollapsedVirtualDom(message);
2205
+ };
2206
+
2207
+ const getSearchToggleVirtualDom = flags => {
2208
+ return [{
2209
+ type: Button,
2210
+ className: mergeClassNames(IconButton, SearchToggleButton, hasReplaceExpanded(flags) ? SearchToggleButtonExpanded : ''),
2211
+ title: toggleReplace$1(),
2212
+ ariaLabel: toggleReplace$1(),
2213
+ ariaExpanded: hasReplaceExpanded(flags),
2214
+ childCount: 1,
2215
+ 'data-command': 'toggleReplace'
2216
+ }, {
2217
+ type: Div,
2218
+ className: mergeClassNames(MaskIcon, hasReplaceExpanded(flags) ? MaskIconChevronDown : MaskIconChevronRight),
2219
+ childCount: 0
2220
+ }];
2221
+ };
2222
+
2223
+ const getSearchHeaderTopVirtualDom = flags => {
2224
+ const dom = [{
2225
+ type: Div,
2226
+ className: SearchHeaderTop,
2227
+ role: None,
2228
+ childCount: 2
2229
+ }, ...getSearchToggleVirtualDom(flags), {
2230
+ type: Div,
2231
+ className: SearchHeaderTopRight,
2232
+ role: None,
2233
+ childCount: hasReplaceExpanded(flags) ? 2 : 1
2234
+ }, ...getSearchFieldVirtualDom(SearchValue, 'Search', 'handleInput', [{
2235
+ icon: MaskIconCaseSensitive,
2236
+ checked: hasMatchCase(flags),
2237
+ title: matchCase(),
2238
+ name: MatchCase
2239
+ }, {
2240
+ icon: MaskIconWholeWord,
2241
+ checked: hasMatchWholeWord(flags),
2242
+ title: matchWholeWord(),
2243
+ name: MatchWholeWord
2244
+ }, {
2245
+ icon: MaskIconRegex,
2246
+ checked: hasUseRegularExpression(flags),
2247
+ title: useRegularExpression(),
2248
+ name: UseRegularExpression
2249
+ }], [])];
2250
+ if (hasReplaceExpanded(flags)) {
2251
+ dom.push(...getSearchFieldVirtualDom(ReplaceValue, 'Replace', 'handleReplaceInput', [{
2252
+ icon: MaskIconPreserveCase,
2253
+ checked: hasPreserveCase(flags),
2254
+ title: preserveCase(),
2255
+ name: PreserveCase
2256
+ }], [{
2257
+ icon: MaskIconReplaceAll,
2258
+ checked: false,
2259
+ title: replaceAll$1(),
2260
+ name: ReplaceAll
2261
+ }]));
2262
+ }
2263
+ return dom;
2264
+ };
2265
+
2266
+ const getSearchHeaderVirtualDom = (flags, message) => {
2267
+ const dom = [{
2268
+ type: Div,
2269
+ className: SearchHeader,
2270
+ role: None,
2271
+ childCount: 2,
2272
+ onClick: HandleHeaderClick,
2273
+ onFocusIn: HandleHeaderFocusIn
2274
+ }, ...getSearchHeaderTopVirtualDom(flags), ...getSearchHeaderDetailsVirtualDom(flags, message)];
2275
+ return dom;
2276
+ };
2277
+
2278
+ const getBadgeVirtualDom = (className, count) => {
2279
+ return [{
2280
+ type: Div,
2281
+ className: mergeClassNames(Badge, className),
2282
+ childCount: 1
2283
+ }, text(`${count}`)];
2284
+ };
2285
+
2286
+ const chevronDownVirtualDom = {
2287
+ type: Div,
2288
+ className: mergeClassNames(Chevron, MaskIconChevronDown),
2289
+ childCount: 0
2290
+ };
2291
+ ({
2292
+ type: Div,
2293
+ className: mergeClassNames(Chevron, MaskIconChevronRight),
2294
+ childCount: 0
2295
+ });
2296
+
2297
+ const getFileIconVirtualDom = icon => {
2298
+ return {
2299
+ type: Img,
2300
+ className: FileIcon,
2301
+ src: icon,
2302
+ role: None,
2303
+ childCount: 0
2304
+ };
2305
+ };
2306
+
2307
+ const deleted = {
2308
+ type: Del,
2309
+ className: HighlightDeleted,
2310
+ childCount: 1
2311
+ };
2312
+ const inserted = {
2313
+ type: Ins,
2314
+ className: HighlightInserted,
2315
+ childCount: 1
2316
+ };
2317
+ const highlighted = {
2318
+ type: Span,
2319
+ className: Highlight,
2320
+ childCount: 1
2321
+ };
2322
+ const label1 = {
2323
+ type: Div,
2324
+ className: mergeClassNames(Label, Grow),
2325
+ childCount: 1
2326
+ };
2327
+ const label3 = {
2328
+ ...label1,
2329
+ childCount: 3
2330
+ };
2331
+ const label4 = {
2332
+ ...label1,
2333
+ childCount: 4
2334
+ };
2335
+ const getLabelVirtualDom = (displayText, matchLength, matchStart, replacement) => {
2336
+ if (matchLength) {
2337
+ const before = displayText.slice(0, matchStart);
2338
+ const highlight = displayText.slice(matchStart, matchStart + matchLength);
2339
+ const after = displayText.slice(matchStart + matchLength);
2340
+ if (replacement) {
2341
+ return [label4, text(before), deleted, text(highlight), inserted, text(replacement), text(after)];
2342
+ }
2343
+ return [label3, text(before), highlighted, text(highlight), text(after)];
2344
+ }
2345
+ return [label1, text(displayText)];
2346
+ };
2347
+
2348
+ const PaddingRight = '12px';
2349
+
2350
+ const getSearchResultVirtualDom = rowInfo => {
2351
+ const {
2352
+ type,
2353
+ matchStart,
2354
+ matchLength,
2355
+ text: displayText,
2356
+ title,
2357
+ icon,
2358
+ setSize,
2359
+ posInSet,
2360
+ depth,
2361
+ replacement,
2362
+ matchCount,
2363
+ focused
2364
+ } = rowInfo;
2365
+ const treeItem = {
2366
+ type: Div,
2367
+ role: TreeItem$1,
2368
+ className: TreeItem,
2369
+ title,
2370
+ ariaSetSize: setSize,
2371
+ ariaLevel: depth,
2372
+ ariaPosInSet: posInSet,
2373
+ ariaLabel: title,
2374
+ ariaDescription: '',
2375
+ childCount: 1,
2376
+ paddingLeft: `${Number(depth) + 1}rem`,
2377
+ // TODO use classname and dynamic css
2378
+ paddingRight: PaddingRight
2379
+ };
2380
+ if (focused) {
2381
+ treeItem.className += ' ' + TreeItemActive;
2382
+ }
2383
+ switch (type) {
2384
+ case File$1:
2385
+ treeItem.ariaExpanded = 'true';
2386
+ break;
2387
+ }
2388
+ const dom = [];
2389
+ dom.push(treeItem);
2390
+ if (type === File$1) {
2391
+ treeItem.childCount += 2;
2392
+ dom.push(chevronDownVirtualDom, getFileIconVirtualDom(icon));
2393
+ }
2394
+ dom.push(...getLabelVirtualDom(displayText, matchLength, matchStart, replacement));
2395
+ if (matchCount) {
2396
+ treeItem.childCount++;
2397
+ dom.push(...getBadgeVirtualDom(SourceControlBadge, matchCount));
2398
+ }
2399
+ treeItem.childCount++;
2400
+ dom.push({
2401
+ type: Div,
2402
+ className: SearchRemove,
2403
+ childCount: 1
2404
+ }, {
2405
+ type: Div,
2406
+ className: CloseMaskIcon,
2407
+ childCount: 0
2408
+ });
2409
+ return dom;
2410
+ };
2411
+
2412
+ const getSearchResultsVirtualDom = (visibleItems, focusOutline) => {
2413
+ return [{
2414
+ type: Div,
2415
+ className: mergeClassNames(Viewlet, List, focusOutline ? FocusOutline : Empty),
2416
+ role: Tree,
2417
+ tabIndex: 0,
2418
+ childCount: visibleItems.length,
2419
+ onClick: HandleClick,
2420
+ onBlur: HandleListBlur
2421
+ }, ...visibleItems.flatMap(getSearchResultVirtualDom)];
2422
+ };
2423
+
2424
+ const getSearchVirtualDom = (visibleItems, flags, message, focusOutline) => {
2425
+ const dom = [{
2426
+ type: Div,
2427
+ className: mergeClassNames(Viewlet, Search$1),
2428
+ childCount: 2
2429
+ }, ...getSearchHeaderVirtualDom(flags, message), ...getSearchResultsVirtualDom(visibleItems, focusOutline)];
2430
+ return dom;
2431
+ };
2432
+
2433
+ const handleError = error => {
2434
+ console.error(`[text-search-worker] ${error}`);
2435
+ };
2436
+
2437
+ const getFileIcons = async files => {
2438
+ // TODO cache file icons
2439
+ const promises = [];
2440
+ for (const file of files) {
2441
+ if (file.type === Match) {
2442
+ continue;
2443
+ }
2444
+ promises.push(invoke$2('IconTheme.getFileIcon', {
2445
+ name: file.text
2446
+ }));
2447
+ }
2448
+ const icons = await Promise.all(promises);
2449
+ return icons;
2450
+ };
2451
+
2452
+ // TODO optimize this function to return the minimum number
2453
+ // of visible items needed, e.g. when not scrolled 5 items with
2454
+ // 20px fill 100px but when scrolled 6 items are needed
2455
+ const getNumberOfVisibleItems = (listHeight, itemHeight) => {
2456
+ return Math.ceil(listHeight / itemHeight) + 1;
2457
+ };
2458
+
2459
+ const getTextSearchResultCounts = results => {
2460
+ let resultCount = 0;
2461
+ let fileCount = 0;
2462
+ for (const result of results) {
2463
+ switch (result.type) {
2464
+ case File$1:
2465
+ fileCount++;
2466
+ break;
2467
+ case Match:
2468
+ resultCount++;
2469
+ break;
2470
+ }
2471
+ }
2472
+ return {
2473
+ fileCount,
2474
+ resultCount
2475
+ };
2476
+ };
2477
+
2478
+ const EmptyString = '';
2479
+
2480
+ const isEmptyString = string => {
2481
+ return string === EmptyString;
2482
+ };
2483
+
2484
+ const getScrollBarSize = (size, contentSize, minimumSliderSize) => {
2485
+ if (size >= contentSize) {
2486
+ return 0;
2487
+ }
2488
+ return Math.max(Math.round(size ** 2 / contentSize), minimumSliderSize);
2489
+ };
2490
+ const getScrollBarOffset = (delta, finalDelta, size, scrollBarSize) => {
2491
+ const scrollBarOffset = delta / finalDelta * (size - scrollBarSize);
2492
+ return scrollBarOffset;
2493
+ };
2494
+ const getScrollBarY = getScrollBarOffset;
2495
+ const getNewDeltaPercent = (height, scrollBarHeight, relativeY) => {
2496
+ const halfScrollBarHeight = scrollBarHeight / 2;
2497
+ if (relativeY <= halfScrollBarHeight) {
2498
+ // clicked at top
2499
+ return {
2500
+ percent: 0,
2501
+ handleOffset: relativeY
2502
+ };
2503
+ }
2504
+ if (relativeY <= height - halfScrollBarHeight) {
2505
+ // clicked in middle
2506
+ return {
2507
+ percent: (relativeY - halfScrollBarHeight) / (height - scrollBarHeight),
2508
+ handleOffset: halfScrollBarHeight
2509
+ };
2510
+ }
2511
+ // clicked at bottom
2512
+ return {
2513
+ percent: 1,
2514
+ handleOffset: scrollBarHeight - height + relativeY
2515
+ };
2516
+ };
2517
+
2518
+ const RE_PROTOCOL = /^([a-z-\d]+):\/\//;
2519
+ const getProtocol$1 = uri => {
2520
+ const protocolMatch = uri.match(RE_PROTOCOL);
2521
+ if (protocolMatch) {
2522
+ return protocolMatch[1];
2523
+ }
2524
+ return '';
2525
+ };
2526
+
2527
+ const textSearch$5 = async (scheme, root, query) => {
2528
+ string(scheme);
2529
+ string(query);
2530
+ const result = await invoke$2('ExtensionHostTextSearch.executeTextSearchProvider', scheme, query);
2531
+ return result;
2532
+ };
2533
+
2534
+ const getJson = async url => {
2535
+ try {
2536
+ const response = await fetch(url);
2537
+ if (!response.ok) {
2538
+ throw new Error(response.statusText);
2539
+ }
2540
+ const json = await response.json();
2541
+ return json;
2542
+ } catch (error) {
2543
+ throw new VError$1(error, `Failed to get json`);
2544
+ }
2545
+ };
2546
+
2547
+ const getText = async url => {
2548
+ try {
2549
+ const response = await fetch(url);
2550
+ if (!response.ok) {
2551
+ throw new Error(response.statusText);
2552
+ }
2553
+ const text = await response.text();
2554
+ return text;
2555
+ } catch (error) {
2556
+ throw new VError$1(error, `Failed to get text`);
2557
+ }
2558
+ };
2559
+
2560
+ const splitLines = lines => {
2561
+ return lines.split('\n');
2562
+ };
2563
+
2564
+ const textSearchInText = (file, content, query) => {
2565
+ const results = [];
2566
+ const lines = splitLines(content);
2567
+ for (let i = 0; i < lines.length; i++) {
2568
+ const line = lines[i];
2569
+ const index = line.indexOf(query);
2570
+ if (index !== -1) {
2571
+ results.push({
2572
+ type: Match,
2573
+ text: line,
2574
+ start: index,
2575
+ end: index + query.length,
2576
+ lineNumber: i
2577
+ });
2578
+ }
2579
+ }
2580
+ if (results.length > 0) {
2581
+ results.unshift({
2582
+ type: File$1,
2583
+ text: file,
2584
+ start: 0,
2585
+ end: 0,
2586
+ lineNumber: 0
2587
+ });
2588
+ }
2589
+ return results;
2590
+ };
2591
+
2592
+ const textSearch$4 = async (scheme, root, query, options, assetDir) => {
2593
+ string(scheme);
2594
+ string(root);
2595
+ string(query);
2596
+ const fetchUri = `${assetDir}/config/fileMap.json`;
2597
+ const fileList = await getJson(fetchUri);
2598
+ const allResults = [];
2599
+ const relativeRoot = root.slice('fetch://'.length);
2600
+ for (const uri of fileList) {
2601
+ const fetchUri = `${assetDir}${uri}`;
2602
+ const content = await getText(fetchUri);
2603
+ const relativeUri = uri.slice(relativeRoot.length + 1);
2604
+ const results = textSearchInText(relativeUri, content, query);
2605
+ allResults.push(...results);
2606
+ }
2607
+ return allResults;
2608
+ };
2609
+
2610
+ class FileNotFoundError extends Error {
2611
+ constructor(message) {
2612
+ super(message);
2613
+ this.name = 'FileNotFoundError';
2614
+ }
2615
+ }
2616
+
2617
+ const Directory = 'directory';
2618
+ const File = 'file';
2619
+
2620
+ const getChildHandles$1 = async handle => {
2621
+ object(handle);
2622
+ // @ts-ignore
2623
+ const childHandles = handle.values();
2624
+ const handles = await fromAsync(childHandles);
2625
+ return handles;
2626
+ };
2627
+
2628
+ const getChildHandles = async handle => {
2629
+ try {
2630
+ return await getChildHandles$1(handle);
2631
+ } catch (error) {
2632
+ throw new VError$1(error, 'failed to get child handles');
2633
+ }
2634
+ };
2635
+
2636
+ const dirname = (pathSeparator, path) => {
2637
+ const index = path.lastIndexOf(pathSeparator);
2638
+ if (index === -1) {
2639
+ return path;
2640
+ }
2641
+ return path.slice(0, index);
2642
+ };
2643
+
2644
+ const instanceOfAny = (object, constructors) => constructors.some(c => object instanceof c);
2645
+ let idbProxyableTypes;
2646
+ let cursorAdvanceMethods;
2647
+ // This is a function to prevent it throwing up in node environments.
2648
+ function getIdbProxyableTypes() {
2649
+ return idbProxyableTypes || (idbProxyableTypes = [IDBDatabase, IDBObjectStore, IDBIndex, IDBCursor, IDBTransaction]);
2650
+ }
2651
+ // This is a function to prevent it throwing up in node environments.
2652
+ function getCursorAdvanceMethods() {
2653
+ return cursorAdvanceMethods || (cursorAdvanceMethods = [IDBCursor.prototype.advance, IDBCursor.prototype.continue, IDBCursor.prototype.continuePrimaryKey]);
2654
+ }
2655
+ const transactionDoneMap = new WeakMap();
2656
+ const transformCache = new WeakMap();
2657
+ const reverseTransformCache = new WeakMap();
2658
+ function promisifyRequest(request) {
2659
+ const promise = new Promise((resolve, reject) => {
2660
+ const unlisten = () => {
2661
+ request.removeEventListener('success', success);
2662
+ request.removeEventListener('error', error);
2663
+ };
2664
+ const success = () => {
2665
+ resolve(wrap(request.result));
2666
+ unlisten();
2667
+ };
2668
+ const error = () => {
2669
+ reject(request.error);
2670
+ unlisten();
2671
+ };
2672
+ request.addEventListener('success', success);
2673
+ request.addEventListener('error', error);
2674
+ });
2675
+ // This mapping exists in reverseTransformCache but doesn't doesn't exist in transformCache. This
2676
+ // is because we create many promises from a single IDBRequest.
2677
+ reverseTransformCache.set(promise, request);
2678
+ return promise;
2679
+ }
2680
+ function cacheDonePromiseForTransaction(tx) {
2681
+ // Early bail if we've already created a done promise for this transaction.
2682
+ if (transactionDoneMap.has(tx)) return;
2683
+ const done = new Promise((resolve, reject) => {
2684
+ const unlisten = () => {
2685
+ tx.removeEventListener('complete', complete);
2686
+ tx.removeEventListener('error', error);
2687
+ tx.removeEventListener('abort', error);
2688
+ };
2689
+ const complete = () => {
2690
+ resolve();
2691
+ unlisten();
2692
+ };
2693
+ const error = () => {
2694
+ reject(tx.error || new DOMException('AbortError', 'AbortError'));
2695
+ unlisten();
2696
+ };
2697
+ tx.addEventListener('complete', complete);
2698
+ tx.addEventListener('error', error);
2699
+ tx.addEventListener('abort', error);
2700
+ });
2701
+ // Cache it for later retrieval.
2702
+ transactionDoneMap.set(tx, done);
2703
+ }
2704
+ let idbProxyTraps = {
2705
+ get(target, prop, receiver) {
2706
+ if (target instanceof IDBTransaction) {
2707
+ // Special handling for transaction.done.
2708
+ if (prop === 'done') return transactionDoneMap.get(target);
2709
+ // Make tx.store return the only store in the transaction, or undefined if there are many.
2710
+ if (prop === 'store') {
2711
+ return receiver.objectStoreNames[1] ? undefined : receiver.objectStore(receiver.objectStoreNames[0]);
2712
+ }
2713
+ }
2714
+ // Else transform whatever we get back.
2715
+ return wrap(target[prop]);
2716
+ },
2717
+ set(target, prop, value) {
2718
+ target[prop] = value;
2719
+ return true;
2720
+ },
2721
+ has(target, prop) {
2722
+ if (target instanceof IDBTransaction && (prop === 'done' || prop === 'store')) {
2723
+ return true;
2724
+ }
2725
+ return prop in target;
2726
+ }
2727
+ };
2728
+ function replaceTraps(callback) {
2729
+ idbProxyTraps = callback(idbProxyTraps);
2730
+ }
2731
+ function wrapFunction(func) {
2732
+ // Due to expected object equality (which is enforced by the caching in `wrap`), we
2733
+ // only create one new func per func.
2734
+ // Cursor methods are special, as the behaviour is a little more different to standard IDB. In
2735
+ // IDB, you advance the cursor and wait for a new 'success' on the IDBRequest that gave you the
2736
+ // cursor. It's kinda like a promise that can resolve with many values. That doesn't make sense
2737
+ // with real promises, so each advance methods returns a new promise for the cursor object, or
2738
+ // undefined if the end of the cursor has been reached.
2739
+ if (getCursorAdvanceMethods().includes(func)) {
2740
+ return function (...args) {
2741
+ // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use
2742
+ // the original object.
2743
+ func.apply(unwrap(this), args);
2744
+ return wrap(this.request);
2745
+ };
2746
+ }
2747
+ return function (...args) {
2748
+ // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use
2749
+ // the original object.
2750
+ return wrap(func.apply(unwrap(this), args));
2751
+ };
2752
+ }
2753
+ function transformCachableValue(value) {
2754
+ if (typeof value === 'function') return wrapFunction(value);
2755
+ // This doesn't return, it just creates a 'done' promise for the transaction,
2756
+ // which is later returned for transaction.done (see idbObjectHandler).
2757
+ if (value instanceof IDBTransaction) cacheDonePromiseForTransaction(value);
2758
+ if (instanceOfAny(value, getIdbProxyableTypes())) return new Proxy(value, idbProxyTraps);
2759
+ // Return the same value back if we're not going to transform it.
2760
+ return value;
2761
+ }
2762
+ function wrap(value) {
2763
+ // We sometimes generate multiple promises from a single IDBRequest (eg when cursoring), because
2764
+ // IDB is weird and a single IDBRequest can yield many responses, so these can't be cached.
2765
+ if (value instanceof IDBRequest) return promisifyRequest(value);
2766
+ // If we've already transformed this value before, reuse the transformed value.
2767
+ // This is faster, but it also provides object equality.
2768
+ if (transformCache.has(value)) return transformCache.get(value);
2769
+ const newValue = transformCachableValue(value);
2770
+ // Not all types are transformed.
2771
+ // These may be primitive types, so they can't be WeakMap keys.
2772
+ if (newValue !== value) {
2773
+ transformCache.set(value, newValue);
2774
+ reverseTransformCache.set(newValue, value);
2775
+ }
2776
+ return newValue;
2777
+ }
2778
+ const unwrap = value => reverseTransformCache.get(value);
2779
+
2780
+ /**
2781
+ * Open a database.
2782
+ *
2783
+ * @param name Name of the database.
2784
+ * @param version Schema version.
2785
+ * @param callbacks Additional callbacks.
2786
+ */
2787
+ function openDB(name, version, {
2788
+ blocked,
2789
+ upgrade,
2790
+ blocking,
2791
+ terminated
2792
+ } = {}) {
2793
+ const request = indexedDB.open(name, version);
2794
+ const openPromise = wrap(request);
2795
+ if (upgrade) {
2796
+ request.addEventListener('upgradeneeded', event => {
2797
+ upgrade(wrap(request.result), event.oldVersion, event.newVersion, wrap(request.transaction), event);
2798
+ });
2799
+ }
2800
+ if (blocked) {
2801
+ request.addEventListener('blocked', event => blocked(
2802
+ // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405
2803
+ event.oldVersion, event.newVersion, event));
2804
+ }
2805
+ openPromise.then(db => {
2806
+ if (terminated) db.addEventListener('close', () => terminated());
2807
+ if (blocking) {
2808
+ db.addEventListener('versionchange', event => blocking(event.oldVersion, event.newVersion, event));
2809
+ }
2810
+ }).catch(() => {});
2811
+ return openPromise;
2812
+ }
2813
+ const readMethods = ['get', 'getKey', 'getAll', 'getAllKeys', 'count'];
2814
+ const writeMethods = ['put', 'add', 'delete', 'clear'];
2815
+ const cachedMethods = new Map();
2816
+ function getMethod(target, prop) {
2817
+ if (!(target instanceof IDBDatabase && !(prop in target) && typeof prop === 'string')) {
2818
+ return;
2819
+ }
2820
+ if (cachedMethods.get(prop)) return cachedMethods.get(prop);
2821
+ const targetFuncName = prop.replace(/FromIndex$/, '');
2822
+ const useIndex = prop !== targetFuncName;
2823
+ const isWrite = writeMethods.includes(targetFuncName);
2824
+ if (
2825
+ // Bail if the target doesn't exist on the target. Eg, getAll isn't in Edge.
2826
+ !(targetFuncName in (useIndex ? IDBIndex : IDBObjectStore).prototype) || !(isWrite || readMethods.includes(targetFuncName))) {
2827
+ return;
2828
+ }
2829
+ const method = async function (storeName, ...args) {
2830
+ // isWrite ? 'readwrite' : undefined gzipps better, but fails in Edge :(
2831
+ const tx = this.transaction(storeName, isWrite ? 'readwrite' : 'readonly');
2832
+ let target = tx.store;
2833
+ if (useIndex) target = target.index(args.shift());
2834
+ // Must reject if op rejects.
2835
+ // If it's a write operation, must reject if tx.done rejects.
2836
+ // Must reject with op rejection first.
2837
+ // Must resolve with op value.
2838
+ // Must handle both promises (no unhandled rejections)
2839
+ return (await Promise.all([target[targetFuncName](...args), isWrite && tx.done]))[0];
2840
+ };
2841
+ cachedMethods.set(prop, method);
2842
+ return method;
2843
+ }
2844
+ replaceTraps(oldTraps => ({
2845
+ ...oldTraps,
2846
+ get: (target, prop, receiver) => getMethod(target, prop) || oldTraps.get(target, prop, receiver),
2847
+ has: (target, prop) => !!getMethod(target, prop) || oldTraps.has(target, prop)
2848
+ }));
2849
+ const advanceMethodProps = ['continue', 'continuePrimaryKey', 'advance'];
2850
+ const methodMap = {};
2851
+ const advanceResults = new WeakMap();
2852
+ const ittrProxiedCursorToOriginalProxy = new WeakMap();
2853
+ const cursorIteratorTraps = {
2854
+ get(target, prop) {
2855
+ if (!advanceMethodProps.includes(prop)) return target[prop];
2856
+ let cachedFunc = methodMap[prop];
2857
+ if (!cachedFunc) {
2858
+ cachedFunc = methodMap[prop] = function (...args) {
2859
+ advanceResults.set(this, ittrProxiedCursorToOriginalProxy.get(this)[prop](...args));
2860
+ };
2861
+ }
2862
+ return cachedFunc;
2863
+ }
2864
+ };
2865
+ async function* iterate(...args) {
2866
+ // tslint:disable-next-line:no-this-assignment
2867
+ let cursor = this;
2868
+ if (!(cursor instanceof IDBCursor)) {
2869
+ cursor = await cursor.openCursor(...args);
2870
+ }
2871
+ if (!cursor) return;
2872
+ cursor = cursor;
2873
+ const proxiedCursor = new Proxy(cursor, cursorIteratorTraps);
2874
+ ittrProxiedCursorToOriginalProxy.set(proxiedCursor, cursor);
2875
+ // Map this double-proxy back to the original, so other cursor methods work.
2876
+ reverseTransformCache.set(proxiedCursor, unwrap(cursor));
2877
+ while (cursor) {
2878
+ yield proxiedCursor;
2879
+ // If one of the advancing methods was not called, call continue().
2880
+ cursor = await (advanceResults.get(proxiedCursor) || cursor.continue());
2881
+ advanceResults.delete(proxiedCursor);
2882
+ }
2883
+ }
2884
+ function isIteratorProp(target, prop) {
2885
+ return prop === Symbol.asyncIterator && instanceOfAny(target, [IDBIndex, IDBObjectStore, IDBCursor]) || prop === 'iterate' && instanceOfAny(target, [IDBIndex, IDBObjectStore]);
2886
+ }
2887
+ replaceTraps(oldTraps => ({
2888
+ ...oldTraps,
2889
+ get(target, prop, receiver) {
2890
+ if (isIteratorProp(target, prop)) return iterate;
2891
+ return oldTraps.get(target, prop, receiver);
2892
+ },
2893
+ has(target, prop) {
2894
+ return isIteratorProp(target, prop) || oldTraps.has(target, prop);
2895
+ }
2896
+ }));
2897
+
2898
+ const state$2 = {
2899
+ databases: Object.create(null),
2900
+ eventId: 0,
2901
+ dbVersion: 1,
2902
+ cachedDb: undefined
2903
+ };
2904
+
2905
+ // TODO high memory usage in idb because of transactionDoneMap
2906
+
2907
+ const getHandleDb = async () => {
2908
+ // @ts-ignore
2909
+ const db = await openDB('handle', state$2.dbVersion, {
2910
+ async upgrade(db) {
2911
+ if (!db.objectStoreNames.contains('file-handles-store')) {
2912
+ await db.createObjectStore('file-handles-store', {});
2913
+ }
2914
+ }
2915
+ });
2916
+ return db;
2917
+ };
2918
+ const getHandle$1 = async uri => {
2919
+ const handleDb = await getHandleDb();
2920
+ const handle = await handleDb.get('file-handles-store', uri);
2921
+ return handle;
2922
+ };
2923
+
2924
+ const getHandle = async uri => {
2925
+ try {
2926
+ // TODO retrieve handle from state or from indexeddb
2927
+ // TODO if not found, throw error
2928
+ const handle = await getHandle$1(uri);
2929
+ return handle;
2930
+ } catch (error) {
2931
+ throw new VError$1(error, 'Failed to get handle');
2932
+ }
2933
+ };
2934
+
2935
+ const getDirectoryHandle = async uri => {
2936
+ const handle = await getHandle(uri);
2937
+ if (handle) {
2938
+ return handle;
2939
+ }
2940
+ const dirname$1 = dirname('/', uri);
2941
+ if (uri === dirname$1) {
2942
+ return undefined;
2943
+ }
2944
+ return getDirectoryHandle(dirname$1);
2945
+ };
2946
+
2947
+ const NotReadableError = 'NotReadableError';
2948
+
2949
+ const isNotReadableError = error => {
2950
+ return error && error.name === NotReadableError;
2951
+ };
2952
+
2953
+ const getFile = handle => {
2954
+ return handle.getFile();
2955
+ };
2956
+
2957
+ const textSearchInFile = async (all, handle, absolutePath, query) => {
2958
+ try {
2959
+ const file = await getFile(handle);
2960
+ const content = await file.text();
2961
+ const results = textSearchInText(absolutePath, content, query);
2962
+ push(all, results);
2963
+ } catch (error) {
2964
+ if (isNotReadableError(error)) {
2965
+ // ignore
2966
+ return;
2967
+ }
2968
+ throw error;
2969
+ }
2970
+ };
2971
+
2972
+ const textSearchRecursively = async (all, parent, handle, query) => {
2973
+ const childHandles = await getChildHandles(handle);
2974
+ const promises = [];
2975
+ for (const childHandle of childHandles) {
2976
+ const absolutePath = parent + '/' + childHandle.name;
2977
+ switch (childHandle.kind) {
2978
+ case Directory:
2979
+ promises.push(textSearchRecursively(all, absolutePath, childHandle, query));
2980
+ break;
2981
+ case File:
2982
+ // @ts-ignore
2983
+ promises.push(textSearchInFile(all, childHandle, absolutePath, query));
2984
+ break;
2985
+ }
2986
+ }
2987
+ await Promise.all(promises);
2988
+ };
2989
+ const textSearch$3 = async (scheme, root, query) => {
2990
+ string(scheme);
2991
+ string(root);
2992
+ string(query);
2993
+ const relativeRoot = root.slice('html://'.length);
2994
+ const handle = await getDirectoryHandle(relativeRoot);
2995
+ if (!handle) {
2996
+ throw new FileNotFoundError(`Folder not found: ${relativeRoot}`);
2997
+ }
2998
+ const all = [];
2999
+ await textSearchRecursively(all, '', handle, query);
3000
+ return all;
3001
+ };
3002
+
3003
+ const getRipGrepArgs = ({
3004
+ threads,
3005
+ isCaseSensitive,
3006
+ searchString,
3007
+ useRegularExpression
3008
+ }) => {
3009
+ const ripGrepArgs = ['--hidden', '--no-require-git', '--smart-case', '--stats', '--json'];
3010
+ ripGrepArgs.push('--threads', `${threads}`);
3011
+ if (isCaseSensitive) {
3012
+ ripGrepArgs.push('--case-sensitive');
3013
+ } else {
3014
+ ripGrepArgs.push('--ignore-case');
3015
+ }
3016
+ if (useRegularExpression) {
3017
+ ripGrepArgs.push('--regexp', searchString);
3018
+ } else {
3019
+ ripGrepArgs.push('--fixed-strings');
3020
+ ripGrepArgs.push('--');
3021
+ ripGrepArgs.push(searchString);
3022
+ }
3023
+ ripGrepArgs.push('.');
3024
+ return ripGrepArgs;
3025
+ };
3026
+
3027
+ const Electron = 2;
3028
+ const Remote = 3;
3029
+
3030
+ const Https = 'https:';
3031
+ const Ws = 'ws:';
3032
+ const Wss = 'wss:';
3033
+
3034
+ const getWebSocketProtocol = locationProtocol => {
3035
+ return locationProtocol === Https ? Wss : Ws;
3036
+ };
3037
+
3038
+ const getWebSocketUrl = (type, host, locationProtocol) => {
3039
+ const wsProtocol = getWebSocketProtocol(locationProtocol);
3040
+ return `${wsProtocol}//${host}/websocket/${type}`;
3041
+ };
3042
+
3043
+ const getHost = () => {
3044
+ return location.host;
3045
+ };
3046
+ const getProtocol = () => {
3047
+ return location.protocol;
3048
+ };
3049
+
3050
+ const launchSearchProcess = async () => {
3051
+ const host = getHost();
3052
+ const protocol = getProtocol();
3053
+ const wsUrl = getWebSocketUrl('search-process', host, protocol);
3054
+ const webSocket = new WebSocket(wsUrl);
3055
+ const rpc = await WebSocketRpcParent.create({
3056
+ webSocket,
3057
+ commandMap: {}
3058
+ });
3059
+ return rpc;
3060
+ };
3061
+
3062
+ const state$1 = {
3063
+ rpc: undefined
3064
+ };
3065
+ const getOrCreate$1 = () => {
3066
+ if (!state$1.rpc) {
3067
+ // @ts-ignore
3068
+ state$1.rpc = launchSearchProcess();
3069
+ }
3070
+ return state$1.rpc;
3071
+ };
3072
+
3073
+ const invoke$1 = async (method, ...params) => {
3074
+ const rpc = await getOrCreate$1();
3075
+ return rpc.invoke(method, ...params);
3076
+ };
3077
+
3078
+ const getPortTuple = () => {
3079
+ const {
3080
+ port1,
3081
+ port2
3082
+ } = new MessageChannel();
3083
+ return {
3084
+ port1,
3085
+ port2
3086
+ };
3087
+ };
3088
+
3089
+ const launchSearchProcessElectron = async () => {
3090
+ const {
3091
+ port1,
3092
+ port2
3093
+ } = getPortTuple();
3094
+ const rpcPromise = MessagePortRpcParent.create({
3095
+ messagePort: port2,
3096
+ commandMap: {},
3097
+ isMessagePortOpen: true
3098
+ });
3099
+ await invokeAndTransfer('SendMessagePortToElectron.sendMessagePortToElectron', port1, 'HandleMessagePortForSearchProcess.handleMessagePortForSearchProcess');
3100
+ port2.start();
3101
+ const rpc = await rpcPromise;
3102
+ return rpc;
3103
+ };
3104
+
3105
+ const state = {
3106
+ rpc: undefined
3107
+ };
3108
+ const getOrCreate = () => {
3109
+ if (!state.rpc) {
3110
+ // @ts-ignore
3111
+ state.rpc = launchSearchProcessElectron();
3112
+ }
3113
+ return state.rpc;
3114
+ };
3115
+
3116
+ const invoke = async (method, ...params) => {
3117
+ const rpc = await getOrCreate();
3118
+ return rpc.invoke(method, ...params);
3119
+ };
3120
+
3121
+ const textSearch$2 = async (scheme, root, query, options, assetDir, platform) => {
3122
+ const ripGrepArgs = getRipGrepArgs({
3123
+ ...options,
3124
+ searchString: query
3125
+ });
3126
+ const actualOptions = {
3127
+ ripGrepArgs,
3128
+ searchDir: root
3129
+ };
3130
+ if (platform === Remote) {
3131
+ const result = await invoke$1('TextSearch.search', actualOptions);
3132
+ // TODO api is weird
3133
+ return result.results;
3134
+ }
3135
+ if (platform === Electron) {
3136
+ const result = await invoke('TextSearch.search', actualOptions);
3137
+ return result.results;
3138
+ }
3139
+ const results = await invoke$2('SearchProcess.invoke', 'TextSearch.search', actualOptions);
3140
+ // TODO api is weird
3141
+ return results.results;
3142
+ };
3143
+
3144
+ const textSearch$1 = (scheme, root, query) => {
3145
+ // TODO ask renderer worker for files
3146
+ const entries = Object.entries({});
3147
+ const results = [];
3148
+ for (const [key, value] of entries) {
3149
+ // @ts-ignore
3150
+ if (value.includes(query)) {
3151
+ results.push([key, [{
3152
+ absoluteOffset: 0,
3153
+ preview: value
3154
+ }]]);
3155
+ }
3156
+ }
3157
+ return results;
3158
+ };
3159
+
3160
+ const getProvider = scheme => {
3161
+ switch (scheme) {
3162
+ case '':
3163
+ return textSearch$2;
3164
+ case 'web':
3165
+ return textSearch$1;
3166
+ case 'fetch':
3167
+ return textSearch$4;
3168
+ case 'html':
3169
+ return textSearch$3;
3170
+ default:
3171
+ return textSearch$5;
3172
+ }
3173
+ };
3174
+
3175
+ const textSearch = async (root, query, options, assetDir, platform) => {
3176
+ string(root);
3177
+ string(query);
3178
+ const scheme = getProtocol$1(root);
3179
+ const provider = getProvider(scheme);
3180
+ const results = await provider(scheme, root, query, options, assetDir, platform);
3181
+ return results;
3182
+ };
3183
+
3184
+ const handleUpdate = async (state, update) => {
3185
+ const partialNewState = {
3186
+ ...state,
3187
+ ...update
3188
+ };
3189
+ try {
3190
+ const {
3191
+ height,
3192
+ itemHeight,
3193
+ minimumSliderSize,
3194
+ headerHeight,
3195
+ flags,
3196
+ value,
3197
+ threads
3198
+ } = partialNewState;
3199
+ if (isEmptyString(value)) {
3200
+ return {
3201
+ ...partialNewState,
3202
+ minLineY: 0,
3203
+ maxLineY: 0,
3204
+ deltaY: 0,
3205
+ items: [],
3206
+ listItems: [],
3207
+ matchCount: 0,
3208
+ message: '',
3209
+ loaded: true
3210
+ };
3211
+ }
3212
+ const root = state.workspacePath;
3213
+ const results = await textSearch(root, value, {
3214
+ threads,
3215
+ isCaseSensitive: hasMatchCase(flags),
3216
+ useRegularExpression: hasUseRegularExpression(flags)
3217
+ }, state.assetDir, state.platform);
3218
+ if (!Array.isArray(results)) {
3219
+ throw new TypeError('results must be of type array');
3220
+ }
3221
+ const {
3222
+ fileCount,
3223
+ resultCount
3224
+ } = getTextSearchResultCounts(results);
3225
+ const message = getStatusMessage(resultCount, fileCount);
3226
+ const total = results.length;
3227
+ const contentHeight = total * itemHeight;
3228
+ const listHeight = height - headerHeight;
3229
+ const scrollBarHeight = getScrollBarSize(height, contentHeight, minimumSliderSize);
3230
+ const numberOfVisible = getNumberOfVisibleItems(listHeight, itemHeight);
3231
+ const maxLineY = Math.min(numberOfVisible, total);
3232
+ const finalDeltaY = Math.max(contentHeight - listHeight, 0);
3233
+ const visible = results.slice(0, maxLineY);
3234
+ const icons = await getFileIcons(visible);
3235
+ return {
3236
+ ...partialNewState,
3237
+ minLineY: 0,
3238
+ deltaY: 0,
3239
+ value,
3240
+ items: results,
3241
+ listItems: results,
3242
+ message,
3243
+ maxLineY: maxLineY,
3244
+ scrollBarHeight,
3245
+ finalDeltaY,
3246
+ threads,
3247
+ fileCount,
3248
+ matchCount: resultCount,
3249
+ loaded: true,
3250
+ icons
3251
+ };
3252
+ } catch (error) {
3253
+ handleError(error);
3254
+ return {
3255
+ ...partialNewState,
3256
+ message: `${error}`,
3257
+ items: [],
3258
+ listItems: [],
3259
+ matchCount: 0,
3260
+ fileCount: 0,
3261
+ minLineY: 0,
3262
+ maxLineY: 0
3263
+ };
3264
+ }
3265
+ };
3266
+
3267
+ const handleExcludeInput = (state, value, inputSource = Script) => {
3268
+ return handleUpdate(state, {
3269
+ excludeValue: value,
3270
+ inputSource
3271
+ });
3272
+ };
3273
+
3274
+ const handleIconThemeChange = async state => {
3275
+ const {
3276
+ items,
3277
+ minLineY,
3278
+ maxLineY
3279
+ } = state;
3280
+ const visibleItems = items.slice(minLineY, maxLineY);
3281
+ const icons = await getFileIcons(visibleItems);
3282
+ return {
3283
+ ...state,
3284
+ icons
3285
+ };
3286
+ };
3287
+
3288
+ const handleIncludeInput = (state, includeValue) => {
3289
+ return {
3290
+ ...state,
3291
+ includeValue,
3292
+ focusSource: User
3293
+ };
3294
+ };
3295
+
3296
+ const handleInput = (state, value, inputSource = Script) => {
3297
+ return handleUpdate(state, {
3298
+ value,
3299
+ inputSource
3300
+ });
3301
+ };
3302
+
3303
+ const handleListBlur = state => {
3304
+ return state;
3305
+ };
3306
+
3307
+ const handleReplaceInput = (state, value, inputSource = Script) => {
3308
+ return handleUpdate(state, {
3309
+ replacement: value,
3310
+ inputSource
3311
+ });
3312
+ };
3313
+
3314
+ const getInputHandler = name => {
3315
+ switch (name) {
3316
+ case 'search-value':
3317
+ return handleInput;
3318
+ case 'replacement-value':
3319
+ return handleReplaceInput;
3320
+ case 'files-to-exclude-value':
3321
+ return handleExcludeInput;
3322
+ default:
3323
+ throw new Error(`unknown input handler: ${name}`);
3324
+ }
3325
+ };
3326
+
3327
+ const handleSharedInput = (state, name, value, inputSource = Script) => {
3328
+ const fn = getInputHandler(name);
3329
+ return fn(state, value, inputSource);
3330
+ };
3331
+
3332
+ const first = () => {
3333
+ return 0;
3334
+ };
3335
+ const last = items => {
3336
+ return items.length - 1;
3337
+ };
3338
+ const next = (items, index) => {
3339
+ return (index + 1) % items.length;
3340
+ };
3341
+ const previous = (items, index) => {
3342
+ return index === 0 ? items.length - 1 : index - 1;
3343
+ };
3344
+
3345
+ const focusIndexScrollUp = (state, index, listHeight, itemHeight, itemsLength) => {
3346
+ const newMinLineY = index;
3347
+ const fittingItems = getNumberOfVisibleItems(listHeight, itemHeight);
3348
+ const newMaxLineY = Math.min(newMinLineY + fittingItems, itemsLength);
3349
+ const newDeltaY = newMinLineY * itemHeight;
3350
+ return {
3351
+ ...state,
3352
+ focusedIndex: index,
3353
+ minLineY: newMinLineY,
3354
+ maxLineY: newMaxLineY,
3355
+ focused: true,
3356
+ deltaY: newDeltaY
3357
+ };
3358
+ };
3359
+ const focusIndexScrollDown = (state, index, listHeight, itemHeight, itemsLength) => {
3360
+ const newMaxLineY = Math.min(index + 1, itemsLength);
3361
+ const fittingItems = getNumberOfVisibleItems(listHeight, itemHeight);
3362
+ const newMinLineY = Math.max(newMaxLineY - fittingItems, 0);
3363
+ const newDeltaY = itemsLength < fittingItems ? 0 : newMinLineY * itemHeight - listHeight % itemHeight + itemHeight;
3364
+ return {
3365
+ ...state,
3366
+ focusedIndex: index,
3367
+ minLineY: newMinLineY,
3368
+ maxLineY: newMaxLineY,
3369
+ focused: true,
3370
+ deltaY: newDeltaY
3371
+ };
3372
+ };
3373
+ const focusIndex = (state, index) => {
3374
+ const {
3375
+ itemHeight,
3376
+ minLineY,
3377
+ maxLineY,
3378
+ headerHeight,
3379
+ height,
3380
+ items
3381
+ } = state;
3382
+ const itemsLength = items.length;
3383
+ if (itemsLength === 0) {
3384
+ return state;
3385
+ }
3386
+ number(itemHeight);
3387
+ if (index === -1) {
3388
+ return {
3389
+ ...state,
3390
+ focusedIndex: -1,
3391
+ focused: true
3392
+ };
3393
+ }
3394
+ const listHeight = height - headerHeight;
3395
+ if (index < minLineY + 1) {
3396
+ return focusIndexScrollUp(state, index, listHeight, itemHeight, itemsLength);
3397
+ }
3398
+ if (index >= maxLineY - 1) {
3399
+ return focusIndexScrollDown(state, index, listHeight, itemHeight, itemsLength);
3400
+ }
3401
+ return {
3402
+ ...state,
3403
+ focusedIndex: index,
3404
+ focused: true
3405
+ };
3406
+ };
3407
+
3408
+ const focusFirst = state => {
3409
+ const firstIndex = first();
3410
+ return focusIndex(state, firstIndex);
3411
+ };
3412
+
3413
+ const focusLast = state => {
3414
+ const {
3415
+ items
3416
+ } = state;
3417
+ const lastIndex = last(items);
3418
+ return focusIndex(state, lastIndex);
3419
+ };
3420
+
3421
+ const focusNext = state => {
3422
+ const {
3423
+ focusedIndex,
3424
+ items
3425
+ } = state;
3426
+ const nextIndex = next(items, focusedIndex);
3427
+ return focusIndex(state, nextIndex);
3428
+ };
3429
+
3430
+ const focusNextPage = state => {
3431
+ const {
3432
+ focusedIndex,
3433
+ items,
3434
+ maxLineY,
3435
+ minLineY
3436
+ } = state;
3437
+ if (isLastIndex(items, focusedIndex)) {
3438
+ return state;
3439
+ }
3440
+ const indexNextPage = Math.min(maxLineY + (maxLineY - minLineY) - 2, lastIndex(items));
3441
+ return focusIndex(state, indexNextPage);
3442
+ };
3443
+
3444
+ const focusPrevious = state => {
3445
+ const {
3446
+ focusedIndex,
3447
+ items
3448
+ } = state;
3449
+ if (focusedIndex === 0 || focusedIndex === -1) {
3450
+ return state;
3451
+ }
3452
+ const previousIndex = previous(items, focusedIndex);
3453
+ return focusIndex(state, previousIndex);
3454
+ };
3455
+
3456
+ const focusPreviousPage = state => {
3457
+ const {
3458
+ focusedIndex,
3459
+ minLineY,
3460
+ maxLineY
3461
+ } = state;
3462
+ if (focusedIndex === 0 || focusedIndex === -1) {
3463
+ return state;
3464
+ }
3465
+ const indexPreviousPage = Math.max(minLineY - (maxLineY - minLineY) + 1, 0);
3466
+ return focusIndex(state, indexPreviousPage);
3467
+ };
3468
+
3469
+ const getListIndex = (eventX, eventY, x, y, deltaY, itemHeight, topHeight) => {
3470
+ const relativeY = eventY - y - topHeight + deltaY;
3471
+ const index = Math.floor(relativeY / itemHeight);
3472
+ return index;
3473
+ };
3474
+
3475
+ const getTopHeight = flags => {
3476
+ if (flags & ReplaceExpanded && flags & DetailsExpanded) {
3477
+ return 190;
3478
+ }
3479
+ if (flags & DetailsExpanded) {
3480
+ return 158;
3481
+ }
3482
+ if (flags & ReplaceExpanded) {
3483
+ return 93;
3484
+ }
3485
+ return 61;
3486
+ };
3487
+
3488
+ const getFilteredResults = (results, collapsedPaths) => {
3489
+ if (collapsedPaths.length === 0) {
3490
+ return results;
3491
+ }
3492
+ const filteredResults = [];
3493
+ let isExcluded = false;
3494
+ for (const result of results) {
3495
+ if (result.type === File$1) {
3496
+ if (collapsedPaths.includes(result.text)) {
3497
+ isExcluded = true;
3498
+ } else {
3499
+ isExcluded = false;
3500
+ }
3501
+ }
3502
+ if (!isExcluded) {
3503
+ filteredResults.push(result);
3504
+ }
3505
+ }
3506
+ return filteredResults;
3507
+ };
3508
+
3509
+ const selectIndexFile = (state, searchResult, index) => {
3510
+ const {
3511
+ collapsedPaths,
3512
+ items,
3513
+ maxLineY
3514
+ } = state;
3515
+ const path = getAbsolutePath(searchResult.text);
3516
+ string(path);
3517
+ const pathWithDot = `.${path}`;
3518
+ const newCollapsedPaths = [...collapsedPaths, path, pathWithDot];
3519
+ const filteredResults = getFilteredResults(items, collapsedPaths);
3520
+ const newMaxLineY = Math.min(maxLineY, filteredResults.length);
3521
+ return {
3522
+ ...state,
3523
+ collapsedPaths: newCollapsedPaths,
3524
+ listFocusedIndex: index,
3525
+ listFocused: true,
3526
+ listItems: filteredResults,
3527
+ maxLineY: newMaxLineY
3528
+ };
3529
+ };
3530
+
3531
+ const openUri = async (path, focus = true, props = {}) => {
3532
+ await invoke$2(/* Main.openUri */'Main.openUri', /* uri */path, /* focus */focus, props);
3533
+ };
3534
+
3535
+ const getFileIndex = (items, index) => {
3536
+ for (let i = index; i >= 0; i--) {
3537
+ const item = items[i];
3538
+ if (item.type === File$1) {
3539
+ return i;
3540
+ }
3541
+ }
3542
+ return -1;
3543
+ };
3544
+ const selectIndexPreview = async (state, searchResult, index) => {
3545
+ const {
3546
+ items
3547
+ } = state;
3548
+ const fileIndex = getFileIndex(items, index);
3549
+ if (fileIndex === -1) {
3550
+ throw new Error('Search result is missing file');
3551
+ }
3552
+ const {
3553
+ lineNumber
3554
+ } = searchResult;
3555
+ const fileResult = items[fileIndex];
3556
+ const path = getAbsolutePath(fileResult.text);
3557
+ string(path);
3558
+ await openUri(path, true, {
3559
+ selections: new Uint32Array([lineNumber, 0, lineNumber, 0])
3560
+ });
3561
+ return {
3562
+ ...state,
3563
+ listFocusedIndex: index,
3564
+ listFocused: false
3565
+ };
3566
+ };
3567
+
3568
+ const selectIndex = async (state, index) => {
3569
+ if (index === -1) {
3570
+ return {
3571
+ ...state,
3572
+ listFocused: true,
3573
+ listFocusedIndex: -1
3574
+ };
3575
+ }
3576
+ const {
3577
+ items
3578
+ } = state;
3579
+ const searchResult = items[index];
3580
+ switch (searchResult.type) {
3581
+ case File$1:
3582
+ return selectIndexFile(state, searchResult, index);
3583
+ case Match:
3584
+ return selectIndexPreview(state, searchResult, index);
3585
+ default:
3586
+ throw new Error(`unexpected search result type ${searchResult.type}`);
3587
+ }
3588
+ };
3589
+
3590
+ const handleClickAt = (state, eventX, eventY) => {
3591
+ const {
3592
+ x,
3593
+ y,
3594
+ itemHeight,
3595
+ deltaY,
3596
+ flags
3597
+ } = state;
3598
+ const topHeight = getTopHeight(flags);
3599
+ const index = getListIndex(eventX, eventY, x, y, deltaY, itemHeight, topHeight);
3600
+ return selectIndex(state, index);
3601
+ };
3602
+
3603
+ const handleScrollBarCaptureLost = state => {
3604
+ return {
3605
+ ...state,
3606
+ scrollBarActive: false
3607
+ };
3608
+ };
3609
+
3610
+ const clamp = (num, min, max) => {
3611
+ return Math.min(Math.max(num, min), max);
3612
+ };
3613
+
3614
+ const setDeltaY = (state, value) => {
3615
+ object(state);
3616
+ number(value);
3617
+ const {
3618
+ itemHeight,
3619
+ finalDeltaY,
3620
+ deltaY,
3621
+ height,
3622
+ headerHeight
3623
+ } = state;
3624
+ const listHeight = height - headerHeight;
3625
+ const newDeltaY = clamp(value, 0, finalDeltaY);
3626
+ if (deltaY === newDeltaY) {
3627
+ return state;
3628
+ }
3629
+ // TODO when it only moves by one px, extensions don't need to be rerendered, only negative margin
3630
+ const minLineY = Math.floor(newDeltaY / itemHeight);
3631
+ const maxLineY = minLineY + getNumberOfVisibleItems(listHeight, itemHeight);
3632
+ return {
3633
+ ...state,
3634
+ deltaY: newDeltaY,
3635
+ minLineY,
3636
+ maxLineY
3637
+ };
3638
+ };
3639
+
3640
+ const handleScrollBarClick = (state, eventY) => {
3641
+ const {
3642
+ y,
3643
+ deltaY,
3644
+ headerHeight,
3645
+ finalDeltaY,
3646
+ scrollBarHeight,
3647
+ height
3648
+ } = state;
3649
+ const contentHeight = height - headerHeight;
3650
+ const relativeY = eventY - y - headerHeight;
3651
+ const currentScrollBarY = getScrollBarY(deltaY, finalDeltaY, contentHeight, scrollBarHeight);
3652
+ const diff = relativeY - currentScrollBarY;
3653
+ if (diff >= 0 && diff < scrollBarHeight) {
3654
+ return {
3655
+ ...state,
3656
+ handleOffset: diff,
3657
+ scrollBarActive: true
3658
+ };
3659
+ }
3660
+ const {
3661
+ percent,
3662
+ handleOffset
3663
+ } = getNewDeltaPercent(contentHeight, scrollBarHeight, relativeY);
3664
+ const newDeltaY = percent * finalDeltaY;
3665
+ return {
3666
+ ...setDeltaY(state, newDeltaY),
3667
+ handleOffset,
3668
+ scrollBarActive: true
3669
+ };
3670
+ };
3671
+
3672
+ const getNewPercent = (contentHeight, scrollBarHeight, relativeY) => {
3673
+ if (relativeY <= contentHeight - scrollBarHeight / 2) {
3674
+ // clicked in middle
3675
+ return relativeY / (contentHeight - scrollBarHeight);
3676
+ }
3677
+ // clicked at bottom
3678
+ return 1;
3679
+ };
3680
+ const handleScrollBarMove = (state, eventY) => {
3681
+ const {
3682
+ y,
3683
+ headerHeight,
3684
+ handleOffset,
3685
+ finalDeltaY,
3686
+ height,
3687
+ scrollBarHeight
3688
+ } = state;
3689
+ const relativeY = eventY - y - headerHeight - handleOffset;
3690
+ const contentHeight = height - headerHeight;
3691
+ const newPercent = getNewPercent(contentHeight, scrollBarHeight, relativeY);
3692
+ const newDeltaY = newPercent * finalDeltaY;
3693
+ return setDeltaY(state, newDeltaY);
3694
+ };
3695
+
3696
+ const handleWheel = (state, deltaMode, deltaY) => {
3697
+ number(deltaMode);
3698
+ number(deltaY);
3699
+ return setDeltaY(state, state.deltaY + deltaY);
3700
+ };
3701
+
3702
+ const getSavedValue = savedState => {
3703
+ if (savedState && typeof savedState === 'object' && 'value' in savedState && typeof savedState.value === 'string') {
3704
+ return savedState.value;
3705
+ }
3706
+ return '';
3707
+ };
3708
+ const getSavedReplacement = savedState => {
3709
+ if (savedState && typeof savedState === 'object' && 'replacement' in savedState && typeof savedState.replacement === 'string') {
3710
+ return savedState.replacement;
3711
+ }
3712
+ return '';
3713
+ };
3714
+ const getSavedFlags = savedState => {
3715
+ if (savedState && typeof savedState === 'object' && 'flags' in savedState && typeof savedState.flags === 'number') {
3716
+ return savedState.flags;
3717
+ }
3718
+ return 0;
3719
+ };
3720
+ const getSavedIncludeValue = savedState => {
3721
+ if (savedState && typeof savedState === 'object' && 'includeValue' in savedState && typeof savedState.includeValue === 'string') {
3722
+ return savedState.includeValue;
3723
+ }
3724
+ return '';
3725
+ };
3726
+ const getSavedExcludeValue = savedState => {
3727
+ if (savedState && typeof savedState === 'object' && 'excludeValue' in savedState && typeof savedState.excludeValue === 'string') {
3728
+ return savedState.excludeValue;
3729
+ }
3730
+ return '';
3731
+ };
3732
+ const restoreState = savedState => {
3733
+ return {
3734
+ savedValue: getSavedValue(savedState),
3735
+ replacement: getSavedReplacement(savedState),
3736
+ savedCollapsedPaths: [],
3737
+ threads: 1,
3738
+ flags: getSavedFlags(savedState),
3739
+ includeValue: getSavedIncludeValue(savedState),
3740
+ excludeValue: getSavedExcludeValue(savedState)
3741
+ };
3742
+ };
3743
+
3744
+ const loadContent = async (state, savedState) => {
3745
+ const {
3746
+ savedValue,
3747
+ savedCollapsedPaths,
3748
+ threads,
3749
+ replacement,
3750
+ flags,
3751
+ includeValue,
3752
+ excludeValue
3753
+ } = restoreState(savedState);
3754
+ if (savedValue) {
3755
+ return handleUpdate(state, {
3756
+ value: savedValue,
3757
+ threads,
3758
+ inputSource: Script,
3759
+ collapsedPaths: savedCollapsedPaths,
3760
+ replacement,
3761
+ flags,
3762
+ includeValue,
3763
+ excludeValue
3764
+ });
3765
+ }
3766
+ return {
3767
+ ...state,
3768
+ threads,
3769
+ flags,
3770
+ loaded: true
3771
+ };
3772
+ };
3773
+
3774
+ const refresh = state => {
3775
+ return handleUpdate(state, {});
3776
+ };
3777
+
3778
+ const getFocusSelector = focusKey => {
3779
+ switch (focusKey) {
3780
+ case FocusSearchInput:
3781
+ return SearchValue;
3782
+ case FocusSearchReplaceInput:
3783
+ return ReplaceValue;
3784
+ case FocusToggleDetails:
3785
+ return ToggleSearchDetails;
3786
+ case FocusSearchMatchCase:
3787
+ return MatchCase;
3788
+ case FocusSearchPreserveCase:
3789
+ return PreserveCase;
3790
+ case FocusSearchRegex:
3791
+ return UseRegularExpression;
3792
+ case FocusSearchIncludeInput:
3793
+ return FilesToInclude;
3794
+ case FocusSearchExcludeInput:
3795
+ return FilesToExclude;
3796
+ case FocusSearchWholeWord:
3797
+ return MatchWholeWord;
3798
+ case FocusSearchReplaceAll:
3799
+ return ReplaceAll;
3800
+ case FocusSearchOpenEditors:
3801
+ return SearchOnlyOpenEditors;
3802
+ case FocusIgnoreFiles:
3803
+ return UseExcludeSettings;
3804
+ case FocusToggleReplace:
3805
+ return ToggleReplace;
3806
+ default:
3807
+ return '';
3808
+ }
3809
+ };
3810
+
3811
+ const renderItems = {
3812
+ isEqual(oldState, newState) {
3813
+ return oldState.items === newState.items && oldState.minLineY === newState.minLineY && oldState.maxLineY === newState.maxLineY && oldState.replacement === newState.replacement && oldState.flags === newState.flags && oldState.message === newState.message && oldState.loaded === newState.loaded && oldState.collapsedPaths === newState.collapsedPaths && oldState.listFocusedIndex === newState.listFocusedIndex && oldState.listFocused === newState.listFocused && oldState.icons === newState.icons;
3814
+ },
3815
+ apply(oldState, newState) {
3816
+ const displayResults = getDisplayResults(newState.listItems, newState.itemHeight, newState.fileCount, newState.value, newState.minLineY, newState.maxLineY, newState.replacement, newState.icons, newState.listFocusedIndex);
3817
+ const focusOutline = newState.listFocused && newState.listFocusedIndex === -1;
3818
+ const dom = getSearchVirtualDom(displayResults, newState.flags, newState.message, focusOutline);
3819
+ return ['Viewlet.setDom2', newState.uid, dom];
3820
+ }
3821
+ };
3822
+ const renderFocus = {
3823
+ isEqual(oldState, newState) {
3824
+ return oldState.focus === newState.focus || newState.focusSource === User;
3825
+ },
3826
+ apply(oldState, newState) {
3827
+ const name = newState.focusSource === User ? '' : getFocusSelector(newState.focus);
3828
+ return ['Viewlet.focusElementByName', name];
3829
+ }
3830
+ };
3831
+ const renderValue = {
3832
+ isEqual(oldState, newState) {
3833
+ return oldState.value === newState.value || newState.inputSource === User;
3834
+ },
3835
+ apply(oldState, newState) {
3836
+ return ['Viewlet.send', newState.uid, 'setValue', newState.value, '[name="search-value"]'];
3837
+ }
3838
+ };
3839
+ const renderReplacement = {
3840
+ isEqual(oldState, newState) {
3841
+ return oldState.replacement === newState.replacement || newState.inputSource === User;
3842
+ },
3843
+ apply(oldState, newState) {
3844
+ const selector = getFocusSelector(FocusSearchReplaceInput);
3845
+ return ['Viewlet.send', newState.uid, 'setValue', newState.replacement, selector];
3846
+ }
3847
+ };
3848
+ const renderIncludeValue = {
3849
+ isEqual(oldState, newState) {
3850
+ return oldState.includeValue === newState.includeValue || newState.inputSource === User;
3851
+ },
3852
+ apply(oldState, newState) {
3853
+ const selector = getFocusSelector(FocusSearchIncludeInput);
3854
+ return ['Viewlet.send', newState.uid, 'setValue', newState.includeValue, selector];
3855
+ }
3856
+ };
3857
+ const renderExcludeValue = {
3858
+ isEqual(oldState, newState) {
3859
+ return oldState.excludeValue === newState.excludeValue || newState.inputSource === User;
3860
+ },
3861
+ apply(oldState, newState) {
3862
+ const selector = getFocusSelector(FocusSearchExcludeInput);
3863
+ return ['Viewlet.send', newState.uid, 'setValue', newState.excludeValue, selector];
3864
+ }
3865
+ };
3866
+ const render = [renderItems, renderValue, renderIncludeValue, renderExcludeValue, renderReplacement, renderFocus];
3867
+ const doRender = uid => {
3868
+ const {
3869
+ oldState,
3870
+ newState
3871
+ } = get(uid);
3872
+ const commands = [];
3873
+ for (const fn of render) {
3874
+ if (!fn.isEqual(oldState, newState)) {
3875
+ commands.push(fn.apply(oldState, newState));
3876
+ }
3877
+ }
3878
+ return commands;
3879
+ };
3880
+
3881
+ const getBulkReplacementEdits = (workspacePath, matches) => {
3882
+ string(workspacePath);
3883
+ array(matches);
3884
+ const files = [];
3885
+ const ranges = [];
3886
+ let currentRanges = [];
3887
+ for (const match of matches) {
3888
+ const {
3889
+ type,
3890
+ text
3891
+ } = match;
3892
+ switch (type) {
3893
+ case File$1:
3894
+ ranges.push(currentRanges.length);
3895
+ push(ranges, currentRanges);
3896
+ const absolutePath = `${workspacePath}/${text.slice(2)}`;
3897
+ files.push(absolutePath);
3898
+ currentRanges = [];
3899
+ break;
3900
+ case Match:
3901
+ currentRanges.push(match.lineNumber - 1, match.matchStart, match.lineNumber - 1, match.matchStart + match.matchLength);
3902
+ break;
3903
+ }
3904
+ }
3905
+ ranges.push(currentRanges.length);
3906
+ push(ranges, currentRanges);
3907
+ return {
3908
+ files,
3909
+ ranges: ranges.slice(1)
3910
+ };
3911
+ };
3912
+
3913
+ const replaceAll = async state => {
3914
+ const {
3915
+ workspacePath,
3916
+ items,
3917
+ replacement
3918
+ } = state;
3919
+ const {
3920
+ files,
3921
+ ranges
3922
+ } = getBulkReplacementEdits(workspacePath, items);
3923
+ await invoke$2('BulkReplacement.applyBulkReplacement', files, ranges, replacement);
3924
+ return state;
3925
+ };
3926
+
3927
+ const getReplaceAllConfirmText = (matchCount, fileCount, replacement) => {
3928
+ if (matchCount === 1) {
3929
+ if (replacement) {
3930
+ return confirmReplaceOneOccurrenceInOneFile(replacement);
3931
+ }
3932
+ return confirmReplaceOneOccurrenceInOneFileNoValue();
3933
+ }
3934
+ if (fileCount === 1) {
3935
+ if (replacement) {
3936
+ return confirmReplaceManyOccurrencesInOneFile(matchCount, replacement);
3937
+ }
3938
+ return confirmReplaceManyOccurrencesInOneFileNoValue(matchCount);
3939
+ }
3940
+ if (replacement) {
3941
+ return confirmReplaceManyOccurrencesInManyFiles(matchCount, fileCount, replacement);
3942
+ }
3943
+ return confirmReplaceManyOccurrencesInManyFilesNoValue(matchCount, fileCount);
3944
+ };
3945
+
3946
+ const replaceAllAndPrompt = async (workspacePath, items, replacement, matchCount, fileCount) => {
3947
+ string(workspacePath);
3948
+ array(items);
3949
+ string(replacement);
3950
+ number(matchCount);
3951
+ number(fileCount);
3952
+ const confirmTitle = replaceAll$1();
3953
+ const confirmAccept = replace();
3954
+ const confirmText = getReplaceAllConfirmText(matchCount, fileCount, replacement);
3955
+ const shouldReplace = await invoke$2('ConfirmPrompt.prompt', confirmText, {
3956
+ title: confirmTitle,
3957
+ confirmMessage: confirmAccept
3958
+ });
3959
+ if (!shouldReplace) {
3960
+ return false;
3961
+ }
3962
+ // TODO
3963
+ // await TextSearchReplaceAll.replaceAll(workspacePath, items, replacement)
3964
+ return true;
3965
+ };
3966
+
3967
+ const saveState = uid => {
3968
+ const {
3969
+ newState
3970
+ } = get(uid);
3971
+ const {
3972
+ value,
3973
+ replacement,
3974
+ flags,
3975
+ includeValue,
3976
+ excludeValue
3977
+ } = newState;
3978
+ return {
3979
+ value,
3980
+ replacement,
3981
+ flags,
3982
+ includeValue,
3983
+ excludeValue
3984
+ };
3985
+ };
3986
+
3987
+ const focusElement = (state, focusKey) => {
3988
+ return {
3989
+ ...state,
3990
+ focus: focusKey,
3991
+ focusSource: Script
3992
+ };
3993
+ };
3994
+
3995
+ const setFocus = async focusKey => {
3996
+ await invoke$2('Focus.setFocus', focusKey);
3997
+ };
3998
+
3999
+ const getSearchFocusKey = key => {
4000
+ switch (key) {
4001
+ case SearchValue:
4002
+ return FocusSearchInput;
4003
+ case ReplaceValue:
4004
+ return FocusSearchReplaceInput;
4005
+ case MatchCase:
4006
+ return FocusSearchMatchCase;
4007
+ case MatchWholeWord:
4008
+ return FocusSearchWholeWord;
4009
+ case UseRegularExpression:
4010
+ return FocusSearchRegex;
4011
+ case ReplaceAll:
4012
+ return FocusSearchReplaceAll;
4013
+ case PreserveCase:
4014
+ return FocusSearchPreserveCase;
4015
+ case ToggleSearchDetails:
4016
+ return FocusToggleDetails;
4017
+ case FilesToInclude:
4018
+ return FocusSearchIncludeInput;
4019
+ case FilesToExclude:
4020
+ return FocusSearchExcludeInput;
4021
+ case SearchOnlyOpenEditors:
4022
+ return FocusSearchOpenEditors;
4023
+ case UseExcludeSettings:
4024
+ return FocusIgnoreFiles;
4025
+ default:
4026
+ return Empty$1;
4027
+ }
4028
+ };
4029
+
4030
+ const focusSearchValue = state => {
4031
+ return focusElement(state, FocusSearchInput);
4032
+ };
4033
+ const focusMatchCasePrevious = state => {
4034
+ if (hasReplaceExpanded(state.flags)) {
4035
+ return focusReplaceValue(state);
4036
+ }
4037
+ return focusSearchValue(state);
4038
+ };
4039
+ const focusReplaceValuePrevious = state => {
4040
+ return focusSearchValue(state);
4041
+ };
4042
+ const focusReplaceValueNext = state => {
4043
+ return focusMatchCase(state);
4044
+ };
4045
+ const focusRegexNext = state => {
4046
+ return focusPreserveCase(state);
4047
+ };
4048
+ const focusPreserveCasePrevious = state => {
4049
+ return focusRegex(state);
4050
+ };
4051
+ const focusReplaceValue = state => {
4052
+ return focusElement(state, FocusSearchReplaceInput);
4053
+ };
4054
+ const focusMatchCase = state => {
4055
+ return focusElement(state, FocusSearchMatchCase);
4056
+ };
4057
+ const focusPreserveCase = state => {
4058
+ return focusElement(state, FocusSearchPreserveCase);
4059
+ };
4060
+ const focusMatchWholeWord = state => {
4061
+ return focusElement(state, FocusSearchWholeWord);
4062
+ };
4063
+ const focusRegex = state => {
4064
+ return focusElement(state, FocusSearchRegex);
4065
+ };
4066
+ const focusReplaceAll = state => {
4067
+ return focusElement(state, FocusSearchReplaceAll);
4068
+ };
4069
+ const handleFocusIn = (state, key) => {
4070
+ const focusKey = getSearchFocusKey(key);
4071
+ if (state.focus === focusKey) {
4072
+ return state;
4073
+ }
4074
+ void setFocus(FocusSearch);
4075
+ return {
4076
+ ...state,
4077
+ focus: focusKey,
4078
+ focusSource: User
4079
+ };
4080
+ };
4081
+
4082
+ const submit = state => {
4083
+ return handleUpdate(state, {
4084
+ value: state.value,
4085
+ inputSource: User
4086
+ });
4087
+ };
4088
+
4089
+ const toggleSearchFlag = (state, flag) => {
4090
+ return {
4091
+ ...state,
4092
+ flags: state.flags ^ flag
4093
+ };
4094
+ };
4095
+
4096
+ const collapseDetails = state => {
4097
+ return {
4098
+ ...toggleSearchFlag(state, DetailsExpanded),
4099
+ focus: FocusSearchInput,
4100
+ focusSource: Script
4101
+ };
4102
+ };
4103
+
4104
+ const expandDetails = state => {
4105
+ return {
4106
+ ...toggleSearchFlag(state, DetailsExpanded),
4107
+ focus: FocusSearchIncludeInput,
4108
+ focusSource: Script
4109
+ };
4110
+ };
4111
+
4112
+ const toggleDetailsExpanded = state => {
4113
+ if (hasDetailsExpanded(state.flags)) {
4114
+ return collapseDetails(state);
4115
+ }
4116
+ return expandDetails(state);
4117
+ };
4118
+
4119
+ const toggleMatchCase = state => {
4120
+ return toggleSearchFlag(state, MatchCase$1);
4121
+ };
4122
+
4123
+ const toggleMatchWholeWord = state => {
4124
+ return toggleSearchFlag(state, MatchWholeWord$1);
4125
+ };
4126
+
4127
+ const toggleOpenEditors = state => {
4128
+ return toggleSearchFlag(state, OpenEditors);
4129
+ };
4130
+
4131
+ const togglePreserveCase = state => {
4132
+ return toggleSearchFlag(state, PreserveCase$1);
4133
+ };
4134
+
4135
+ const toggleReplace = state => {
4136
+ return toggleSearchFlag(state, ReplaceExpanded);
4137
+ };
4138
+
4139
+ const toggleUseIgnoreFiles = state => {
4140
+ return toggleSearchFlag(state, UseIgnoreFiles);
4141
+ };
4142
+
4143
+ const toggleUseRegularExpression = state => {
4144
+ return toggleSearchFlag(state, UseRegularExpression$1);
4145
+ };
4146
+
4147
+ const Keyboard = -1;
4148
+
4149
+ const show = async (x, y, id, ...args) => {
4150
+ // TODO ask renderer worker to show context menu
4151
+ number(x);
4152
+ number(y);
4153
+ number(id);
4154
+ // TODO
4155
+ await invoke$2('ContextMenu.show', x, y, id, ...args);
4156
+ };
4157
+
4158
+ const Search = 18;
4159
+
4160
+ const handleContextMenuKeyboard = async state => {
4161
+ const x = state.x; // TODO
4162
+ const y = state.y; // TODO
4163
+ await show(x, y, Search);
4164
+ return state;
4165
+ };
4166
+
4167
+ const handleContextMenuMouseAt = async (state, x, y) => {
4168
+ await show(x, y, Search);
4169
+ return state;
4170
+ };
4171
+
4172
+ const handleContextMenu = (state, button, x, y) => {
4173
+ switch (button) {
4174
+ case Keyboard:
4175
+ return handleContextMenuKeyboard(state);
4176
+ default:
4177
+ return handleContextMenuMouseAt(state, x, y);
4178
+ }
4179
+ };
4180
+
4181
+ const wrapCommand = fn => {
4182
+ const wrapped = async (uid, ...args) => {
4183
+ const {
4184
+ newState
4185
+ } = get(uid);
4186
+ const newerState = await fn(newState, ...args);
4187
+ set(uid, newState, newerState);
4188
+ };
4189
+ return wrapped;
4190
+ };
4191
+
4192
+ const commandMap = {
4193
+ 'TextSearch.clearSearchResults': wrapCommand(clearSearchResults$1),
4194
+ 'TextSearch.copy': wrapCommand(copy),
4195
+ 'TextSearch.dismissItem': wrapCommand(dismissItem),
4196
+ 'TextSearch.focusFirst': wrapCommand(focusFirst),
4197
+ 'TextSearch.focusIndex': wrapCommand(focusIndex),
4198
+ 'TextSearch.focusLast': wrapCommand(focusLast),
4199
+ 'TextSearch.focusMatchCase': wrapCommand(focusMatchCase$1),
4200
+ 'TextSearch.focusMatchCasePrevious': wrapCommand(focusMatchCasePrevious),
4201
+ 'TextSearch.focusMatchWholeWord': wrapCommand(focusMatchWholeWord),
4202
+ 'TextSearch.focusNext': wrapCommand(focusNext),
4203
+ 'TextSearch.focusNextInput': wrapCommand(focusNextInput),
4204
+ 'TextSearch.focusNextPage': wrapCommand(focusNextPage),
4205
+ 'TextSearch.focusPreserveCase': wrapCommand(focusPreserveCase),
4206
+ 'TextSearch.focusPreserveCasePrevious': wrapCommand(focusPreserveCasePrevious),
4207
+ 'TextSearch.focusPrevious': wrapCommand(focusPrevious),
4208
+ 'TextSearch.focusPreviousInput': wrapCommand(focusPreviousInput),
4209
+ 'TextSearch.focusPreviousPage': wrapCommand(focusPreviousPage),
4210
+ 'TextSearch.focusRegex': wrapCommand(focusRegex),
4211
+ 'TextSearch.focusRegexNext': wrapCommand(focusRegexNext),
4212
+ 'TextSearch.focusReplaceAll': wrapCommand(focusReplaceAll),
4213
+ 'TextSearch.focusReplaceValue': wrapCommand(focusReplaceValue$1),
4214
+ 'TextSearch.focusReplaceValueNext': wrapCommand(focusReplaceValueNext),
4215
+ 'TextSearch.focusReplaceValuePrevious': wrapCommand(focusReplaceValuePrevious),
4216
+ 'TextSearch.focusSearchValue': wrapCommand(focusSearchValue$1),
4217
+ 'TextSearch.focusSearchValueNext': wrapCommand(focusSearchValueNext),
4218
+ 'TextSearch.getActions': wrapCommand(getActions),
4219
+ 'TextSearch.getActionsVirtualDom': wrapCommand(getActionsVirtualDom),
4220
+ 'TextSearch.getSearchDisplayResults': wrapCommand(getDisplayResults),
4221
+ 'TextSearch.getVirtualDom': wrapCommand(getSearchVirtualDom),
4222
+ 'TextSearch.handleClickAt': wrapCommand(handleClickAt),
4223
+ 'TextSearch.handleContextMenu': wrapCommand(handleContextMenu),
4224
+ 'TextSearch.handleExcludeInput': wrapCommand(handleExcludeInput),
4225
+ 'TextSearch.handleFocusIn': wrapCommand(handleFocusIn),
4226
+ 'TextSearch.handleIconThemeChange': wrapCommand(handleIconThemeChange),
4227
+ 'TextSearch.handleIncludeInput': wrapCommand(handleIncludeInput),
4228
+ 'TextSearch.handleInput': wrapCommand(handleInput),
4229
+ 'TextSearch.handleListBlur': wrapCommand(handleListBlur),
4230
+ 'TextSearch.handleReplaceInput': wrapCommand(handleReplaceInput),
4231
+ 'TextSearch.handleScrollBarCaptureLost': wrapCommand(handleScrollBarCaptureLost),
4232
+ 'TextSearch.handleScrollBarClick': wrapCommand(handleScrollBarClick),
4233
+ 'TextSearch.handleScrollBarMove': wrapCommand(handleScrollBarMove),
4234
+ 'TextSearch.handleSharedInput': wrapCommand(handleSharedInput),
4235
+ 'TextSearch.handleWheel': wrapCommand(handleWheel),
4236
+ 'TextSearch.launchSearchProcess': wrapCommand(launchSearchProcess),
4237
+ 'TextSearch.loadContent': wrapCommand(loadContent),
4238
+ 'TextSearch.refresh': wrapCommand(refresh),
4239
+ 'TextSearch.replaceAll': wrapCommand(replaceAll),
4240
+ 'TextSearch.replaceAllAndPrompt': wrapCommand(replaceAllAndPrompt),
4241
+ 'TextSearch.submit': wrapCommand(submit),
4242
+ 'TextSearch.toggleMatchCase': wrapCommand(toggleMatchCase),
4243
+ 'TextSearch.toggleMatchWholeWord': wrapCommand(toggleMatchWholeWord),
4244
+ 'TextSearch.toggleOpenEditors': wrapCommand(toggleOpenEditors),
4245
+ 'TextSearch.togglePreserveCase': wrapCommand(togglePreserveCase),
4246
+ 'TextSearch.toggleReplace': wrapCommand(toggleReplace),
4247
+ 'TextSearch.toggleSearchDetails': wrapCommand(toggleDetailsExpanded),
4248
+ 'TextSearch.toggleUseIgnoreFiles': wrapCommand(toggleUseIgnoreFiles),
4249
+ 'TextSearch.toggleUseRegularExpression': wrapCommand(toggleUseRegularExpression),
4250
+ // not wrapped
4251
+ 'TextSearch.create': create,
4252
+ 'TextSearch.getFlags': getFlags,
4253
+ 'TextSearch.getFocus': getFocus,
4254
+ 'TextSearch.getKeyBindings': getKeyBindings,
4255
+ 'TextSearch.render': doRender,
4256
+ 'TextSearch.saveState': saveState,
4257
+ // TODO needed?
4258
+ 'TextSearch.textSearch': textSearch
4259
+ };
4260
+
4261
+ const listen = async () => {
4262
+ const rpc = await WebWorkerRpcClient.create({
4263
+ commandMap: commandMap
4264
+ });
4265
+ setRpc(rpc);
4266
+ };
4267
+
4268
+ const main = async () => {
4269
+ await listen();
4270
+ };
4271
+
4272
+ main();