@lvce-editor/static-server 0.49.12 → 0.49.13

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