@lvce-editor/static-server 0.49.12 → 0.49.14

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