@lvce-editor/server 0.11.1 → 0.11.2

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 (1164) hide show
  1. package/ThirdPartyNotices.txt +2 -2
  2. package/package.json +2 -3
  3. package/static/{be11bf8 → 96d5271}/config/builtinCommands.json +0 -0
  4. package/static/{be11bf8 → 96d5271}/config/colorTheme.json +0 -0
  5. package/static/{be11bf8 → 96d5271}/config/defaultKeyBindings.json +0 -0
  6. package/static/{be11bf8 → 96d5271}/config/defaultSettings.json +0 -0
  7. package/static/{be11bf8 → 96d5271}/config/fileMap.json +0 -0
  8. package/static/{be11bf8 → 96d5271}/config/webExtensions.json +0 -0
  9. package/static/{be11bf8 → 96d5271}/css/App.css +39 -39
  10. package/static/{be11bf8 → 96d5271}/css/parts/Animation.css +0 -0
  11. package/static/{be11bf8 → 96d5271}/css/parts/EditorHover.css +0 -0
  12. package/static/{be11bf8 → 96d5271}/css/parts/EditorTabs.css +1 -1
  13. package/static/{be11bf8 → 96d5271}/css/parts/Highlight.css +0 -0
  14. package/static/{be11bf8 → 96d5271}/css/parts/IconButton.css +0 -0
  15. package/static/{be11bf8 → 96d5271}/css/parts/ImagePreview.css +0 -0
  16. package/static/{be11bf8 → 96d5271}/css/parts/InputBox.css +0 -0
  17. package/static/{be11bf8 → 96d5271}/css/parts/Label.css +0 -0
  18. package/static/{be11bf8 → 96d5271}/css/parts/Markdown.css +0 -0
  19. package/static/{be11bf8 → 96d5271}/css/parts/MaskIcon.css +0 -0
  20. package/static/{be11bf8 → 96d5271}/css/parts/ViewletActivityBar.css +0 -0
  21. package/static/{be11bf8 → 96d5271}/css/parts/ViewletAudio.css +0 -0
  22. package/static/{be11bf8 → 96d5271}/css/parts/ViewletDebugConsole.css +0 -0
  23. package/static/{be11bf8 → 96d5271}/css/parts/ViewletEditor.css +0 -0
  24. package/static/{be11bf8 → 96d5271}/css/parts/ViewletEditorCompletion.css +0 -0
  25. package/static/{be11bf8 → 96d5271}/css/parts/ViewletEditorImage.css +0 -0
  26. package/static/{be11bf8 → 96d5271}/css/parts/ViewletExplorer.css +0 -0
  27. package/static/{be11bf8 → 96d5271}/css/parts/ViewletExtensionDetail.css +0 -0
  28. package/static/{be11bf8 → 96d5271}/css/parts/ViewletExtensions.css +0 -0
  29. package/static/{be11bf8 → 96d5271}/css/parts/ViewletFindWidget.css +0 -0
  30. package/static/{be11bf8 → 96d5271}/css/parts/ViewletKeyBindings.css +0 -0
  31. package/static/{be11bf8 → 96d5271}/css/parts/ViewletList.css +0 -0
  32. package/static/{be11bf8 → 96d5271}/css/parts/ViewletMain.css +0 -0
  33. package/static/{be11bf8 → 96d5271}/css/parts/ViewletOutput.css +0 -0
  34. package/static/{be11bf8 → 96d5271}/css/parts/ViewletPanel.css +0 -0
  35. package/static/{be11bf8 → 96d5271}/css/parts/ViewletPdf.css +0 -0
  36. package/static/{be11bf8 → 96d5271}/css/parts/ViewletProblems.css +0 -0
  37. package/static/{be11bf8 → 96d5271}/css/parts/ViewletQuickPick.css +0 -0
  38. package/static/{be11bf8 → 96d5271}/css/parts/ViewletReferences.css +0 -0
  39. package/static/{be11bf8 → 96d5271}/css/parts/ViewletRunAndDebug.css +0 -0
  40. package/static/{be11bf8 → 96d5271}/css/parts/ViewletSearch.css +0 -0
  41. package/static/{be11bf8 → 96d5271}/css/parts/ViewletSideBar.css +0 -0
  42. package/static/{be11bf8 → 96d5271}/css/parts/ViewletSimpleBrowser.css +0 -0
  43. package/static/{be11bf8 → 96d5271}/css/parts/ViewletSourceControl.css +0 -0
  44. package/static/{be11bf8 → 96d5271}/css/parts/ViewletStatusBar.css +0 -0
  45. package/static/{be11bf8 → 96d5271}/css/parts/ViewletTerminal.css +0 -0
  46. package/static/{be11bf8 → 96d5271}/css/parts/ViewletTitleBar.css +0 -0
  47. package/static/{be11bf8 → 96d5271}/css/parts/ViewletTitleBarButtons.css +3 -3
  48. package/static/{be11bf8 → 96d5271}/css/parts/ViewletTitleBarMenuBar.css +0 -0
  49. package/static/{be11bf8 → 96d5271}/fonts/FiraCode-VariableFont.ttf +0 -0
  50. package/static/{be11bf8 → 96d5271}/icons/arrow-down.svg +0 -0
  51. package/static/{be11bf8 → 96d5271}/icons/arrow-left.svg +0 -0
  52. package/static/{be11bf8 → 96d5271}/icons/arrow-right.svg +0 -0
  53. package/static/{be11bf8 → 96d5271}/icons/arrow-up.svg +0 -0
  54. package/static/{be11bf8 → 96d5271}/icons/check.svg +0 -0
  55. package/static/{be11bf8 → 96d5271}/icons/chevron-down.svg +0 -0
  56. package/static/{be11bf8 → 96d5271}/icons/chevron-left.svg +0 -0
  57. package/static/{be11bf8 → 96d5271}/icons/chevron-right.svg +0 -0
  58. package/static/{be11bf8 → 96d5271}/icons/chevron-up.svg +0 -0
  59. package/static/{be11bf8 → 96d5271}/icons/chrome-close.svg +0 -0
  60. package/static/{be11bf8 → 96d5271}/icons/chrome-maximize.svg +0 -0
  61. package/static/{be11bf8 → 96d5271}/icons/chrome-minimize.svg +0 -0
  62. package/static/{be11bf8 → 96d5271}/icons/close.svg +0 -0
  63. package/static/{be11bf8 → 96d5271}/icons/debug-alt-2.svg +0 -0
  64. package/static/{be11bf8 → 96d5271}/icons/ellipsis.svg +0 -0
  65. package/static/{be11bf8 → 96d5271}/icons/extensionDefaultIcon.png +0 -0
  66. package/static/{be11bf8 → 96d5271}/icons/extensions.svg +0 -0
  67. package/static/{be11bf8 → 96d5271}/icons/files.svg +0 -0
  68. package/static/{be11bf8 → 96d5271}/icons/icon-close.svg +0 -0
  69. package/static/{be11bf8 → 96d5271}/icons/icon-source-control.svg +0 -0
  70. package/static/{be11bf8 → 96d5271}/icons/icon-sync.svg +0 -0
  71. package/static/{be11bf8 → 96d5271}/icons/icon.png +0 -0
  72. package/static/{be11bf8 → 96d5271}/icons/language-icon.svg +0 -0
  73. package/static/{be11bf8 → 96d5271}/icons/link-external.svg +0 -0
  74. package/static/{be11bf8 → 96d5271}/icons/pwa-icon-192.png +0 -0
  75. package/static/{be11bf8 → 96d5271}/icons/pwa-icon-512.png +0 -0
  76. package/static/{be11bf8 → 96d5271}/icons/refresh.svg +0 -0
  77. package/static/{be11bf8 → 96d5271}/icons/search.svg +0 -0
  78. package/static/{be11bf8 → 96d5271}/icons/settings-gear.svg +0 -0
  79. package/static/{be11bf8 → 96d5271}/icons/source-control.svg +0 -0
  80. package/static/{be11bf8 → 96d5271}/icons/symbol-array.svg +0 -0
  81. package/static/{be11bf8 → 96d5271}/icons/symbol-boolean.svg +0 -0
  82. package/static/{be11bf8 → 96d5271}/icons/symbol-class.svg +0 -0
  83. package/static/{be11bf8 → 96d5271}/icons/symbol-color.svg +0 -0
  84. package/static/{be11bf8 → 96d5271}/icons/symbol-constant.svg +0 -0
  85. package/static/{be11bf8 → 96d5271}/icons/symbol-enum-member.svg +0 -0
  86. package/static/{be11bf8 → 96d5271}/icons/symbol-enum.svg +0 -0
  87. package/static/{be11bf8 → 96d5271}/icons/symbol-event.svg +0 -0
  88. package/static/{be11bf8 → 96d5271}/icons/symbol-field.svg +0 -0
  89. package/static/{be11bf8 → 96d5271}/icons/symbol-file.svg +0 -0
  90. package/static/{be11bf8 → 96d5271}/icons/symbol-interface.svg +0 -0
  91. package/static/{be11bf8 → 96d5271}/icons/symbol-key.svg +0 -0
  92. package/static/{be11bf8 → 96d5271}/icons/symbol-keyword.svg +0 -0
  93. package/static/{be11bf8 → 96d5271}/icons/symbol-method.svg +0 -0
  94. package/static/{be11bf8 → 96d5271}/icons/symbol-misc.svg +0 -0
  95. package/static/{be11bf8 → 96d5271}/icons/symbol-namespace.svg +0 -0
  96. package/static/{be11bf8 → 96d5271}/icons/symbol-numeric.svg +0 -0
  97. package/static/{be11bf8 → 96d5271}/icons/symbol-operator.svg +0 -0
  98. package/static/{be11bf8 → 96d5271}/icons/symbol-parameter.svg +0 -0
  99. package/static/{be11bf8 → 96d5271}/icons/symbol-property.svg +0 -0
  100. package/static/{be11bf8 → 96d5271}/icons/symbol-ruler.svg +0 -0
  101. package/static/{be11bf8 → 96d5271}/icons/symbol-snippet.svg +0 -0
  102. package/static/{be11bf8 → 96d5271}/icons/symbol-string.svg +0 -0
  103. package/static/{be11bf8 → 96d5271}/icons/symbol-structure.svg +0 -0
  104. package/static/{be11bf8 → 96d5271}/icons/symbol-variable.svg +0 -0
  105. package/static/{be11bf8 → 96d5271}/icons/theme-icon.png +0 -0
  106. package/static/{be11bf8 → 96d5271}/icons/zoom-in.svg +0 -0
  107. package/static/{be11bf8 → 96d5271}/icons/zoom-out.svg +0 -0
  108. package/static/{be11bf8 → 96d5271}/packages/extension-host-worker/dist/extensionHostWorkerMain.js +0 -0
  109. package/static/{be11bf8 → 96d5271}/packages/extension-host-worker/dist/extensionHostWorkerMain.js.map +0 -0
  110. package/static/{be11bf8 → 96d5271}/packages/extension-host-worker/src/extensionHostWorkerMain.js +0 -0
  111. package/static/{be11bf8 → 96d5271}/packages/extension-host-worker/src/parts/Api/Api.js +0 -0
  112. package/static/{be11bf8 → 96d5271}/packages/extension-host-worker/src/parts/Assert/Assert.js +0 -0
  113. package/static/{be11bf8 → 96d5271}/packages/extension-host-worker/src/parts/Callback/Callback.js +0 -0
  114. package/static/{be11bf8 → 96d5271}/packages/extension-host-worker/src/parts/Command/Command.js +0 -0
  115. package/static/{be11bf8 → 96d5271}/packages/extension-host-worker/src/parts/Errors/Errors.js +0 -0
  116. package/static/{be11bf8 → 96d5271}/packages/extension-host-worker/src/parts/ExtensionHostBraceCompletion/ExtensionHostBraceCompletion.js +0 -0
  117. package/static/{be11bf8 → 96d5271}/packages/extension-host-worker/src/parts/ExtensionHostCommand/ExtensionHostCommand.js +0 -0
  118. package/static/{be11bf8 → 96d5271}/packages/extension-host-worker/src/parts/ExtensionHostCompletion/ExtensionHostCompletion.js +0 -0
  119. package/static/{be11bf8 → 96d5271}/packages/extension-host-worker/src/parts/ExtensionHostConfiguration/ExtensionHostConfiguration.js +0 -0
  120. package/static/{be11bf8 → 96d5271}/packages/extension-host-worker/src/parts/ExtensionHostDefinition/ExtensionHostDefinition.js +0 -0
  121. package/static/{be11bf8 → 96d5271}/packages/extension-host-worker/src/parts/ExtensionHostEnv/ExtensionHostEnv.js +0 -0
  122. package/static/{be11bf8 → 96d5271}/packages/extension-host-worker/src/parts/ExtensionHostExec/ExtensionHostExec.js +0 -0
  123. package/static/{be11bf8 → 96d5271}/packages/extension-host-worker/src/parts/ExtensionHostExtension/ExtensionHostExtension.js +0 -0
  124. package/static/{be11bf8 → 96d5271}/packages/extension-host-worker/src/parts/ExtensionHostFormatting/ExtensionHostFormatting.js +0 -0
  125. package/static/{be11bf8 → 96d5271}/packages/extension-host-worker/src/parts/ExtensionHostHelperProcess/ExtensionHostHelperProcess.js +0 -0
  126. package/static/{be11bf8 → 96d5271}/packages/extension-host-worker/src/parts/ExtensionHostHelperProcessIpc/ExtensionHostHelperProcessIpc.js +0 -0
  127. package/static/{be11bf8 → 96d5271}/packages/extension-host-worker/src/parts/ExtensionHostHelperProcessIpcType/ExtensionHostHelperProcessIpcType.js +0 -0
  128. package/static/{be11bf8 → 96d5271}/packages/extension-host-worker/src/parts/ExtensionHostHelperProcessRpc/ExtensionHostHelperProcessRpc.js +0 -0
  129. package/static/{be11bf8 → 96d5271}/packages/extension-host-worker/src/parts/ExtensionHostImplementation/ExtensionHostImplementation.js +0 -0
  130. package/static/{be11bf8 → 96d5271}/packages/extension-host-worker/src/parts/ExtensionHostMockExec/ExtensionHostMockExec.js +0 -0
  131. package/static/{be11bf8 → 96d5271}/packages/extension-host-worker/src/parts/ExtensionHostNotification/ExtensionHostNotification.js +0 -0
  132. package/static/{be11bf8 → 96d5271}/packages/extension-host-worker/src/parts/ExtensionHostReference/ExtensionHostReference.js +0 -0
  133. package/static/{be11bf8 → 96d5271}/packages/extension-host-worker/src/parts/ExtensionHostSourceControl/ExtensionHostSourceControl.js +0 -0
  134. package/static/{be11bf8 → 96d5271}/packages/extension-host-worker/src/parts/ExtensionHostTabCompletion/ExtensionHostTabCompletion.js +0 -0
  135. package/static/{be11bf8 → 96d5271}/packages/extension-host-worker/src/parts/ExtensionHostTextDocument/ExtensionHostTextDocument.js +0 -0
  136. package/static/{be11bf8 → 96d5271}/packages/extension-host-worker/src/parts/ExtensionHostTextSearch/ExtensionHostTextSearch.js +0 -0
  137. package/static/{be11bf8 → 96d5271}/packages/extension-host-worker/src/parts/ExtensionHostTypeDefinition/ExtensionHostTypeDefinition.js +0 -0
  138. package/static/{be11bf8 → 96d5271}/packages/extension-host-worker/src/parts/ExtensionHostWorkspace/ExtensionHostWorkspace.js +0 -0
  139. package/static/{be11bf8 → 96d5271}/packages/extension-host-worker/src/parts/FunctionFromString/FunctionFromString.js +0 -0
  140. package/static/{be11bf8 → 96d5271}/packages/extension-host-worker/src/parts/Id/Id.js +0 -0
  141. package/static/{be11bf8 → 96d5271}/packages/extension-host-worker/src/parts/IpcChild/IpcChild.js +0 -0
  142. package/static/{be11bf8 → 96d5271}/packages/extension-host-worker/src/parts/IpcChild/IpcChildWithMessagePort.js +0 -0
  143. package/static/{be11bf8 → 96d5271}/packages/extension-host-worker/src/parts/IpcChild/IpcChildWithModuleWorker.js +0 -0
  144. package/static/{be11bf8 → 96d5271}/packages/extension-host-worker/src/parts/IpcChild/IpcChildWithReferencePort.js +0 -0
  145. package/static/{be11bf8 → 96d5271}/packages/extension-host-worker/src/parts/IpcParent/IpcParent.js +0 -0
  146. package/static/{be11bf8 → 96d5271}/packages/extension-host-worker/src/parts/IpcParent/IpcParentWithElectronMessagePort.js +0 -0
  147. package/static/{be11bf8 → 96d5271}/packages/extension-host-worker/src/parts/IpcParent/IpcParentWithWebSocket.js +0 -0
  148. package/static/{be11bf8 → 96d5271}/packages/extension-host-worker/src/parts/IpcParentType/IpcParentType.js +0 -0
  149. package/static/{be11bf8 → 96d5271}/packages/extension-host-worker/src/parts/JsonRpcErrorCode/JsonRpcErrorCode.js +0 -0
  150. package/static/{be11bf8 → 96d5271}/packages/extension-host-worker/src/parts/JsonRpcVersion/JsonRpcVersion.js +0 -0
  151. package/static/{be11bf8 → 96d5271}/packages/extension-host-worker/src/parts/NameAnonymousFunction/NameAnonymousFunction.js +0 -0
  152. package/static/{be11bf8 → 96d5271}/packages/extension-host-worker/src/parts/Registry/Registry.js +0 -0
  153. package/static/{be11bf8 → 96d5271}/packages/extension-host-worker/src/parts/Rpc/Rpc.js +0 -0
  154. package/static/{be11bf8 → 96d5271}/packages/extension-host-worker/src/parts/VError/VError.js +0 -0
  155. package/static/{be11bf8 → 96d5271}/packages/extension-host-worker/src/parts/Validation/Validation.js +0 -0
  156. package/static/{be11bf8 → 96d5271}/packages/extension-host-worker/src/parts/WebSocketProtocol/WebSocketProtocol.js +0 -0
  157. package/static/{be11bf8 → 96d5271}/packages/renderer-process/dist/rendererProcessMain.js +1 -1
  158. package/static/{be11bf8 → 96d5271}/packages/renderer-process/dist/rendererProcessMain.js.map +1 -1
  159. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ActivityBarItemFlags/ActivityBarItemFlags.js +0 -0
  160. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/AriaAlert/AriaAlert.js +0 -0
  161. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/AriaRoles/AriaRoles.js +0 -0
  162. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Assert/Assert.js +0 -0
  163. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Audio/Audio.ipc.js +0 -0
  164. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Audio/Audio.js +0 -0
  165. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/BackDrop/BackDrop.js +0 -0
  166. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Callback/Callback.js +0 -0
  167. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ClipBoard/ClipBoard.ipc.js +0 -0
  168. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ClipBoard/ClipBoard.js +0 -0
  169. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Command/Command.js +0 -0
  170. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Context/Context.js +0 -0
  171. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Css/Css.ipc.js +0 -0
  172. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Css/Css.js +0 -0
  173. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Developer/Developer.ipc.js +0 -0
  174. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Developer/Developer.js +0 -0
  175. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Dialog/Dialog.ipc.js +0 -0
  176. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Dialog/Dialog.js +0 -0
  177. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/DirentType/DirentType.js +0 -0
  178. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Download/Download.ipc.js +0 -0
  179. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Download/Download.js +0 -0
  180. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Editor/Editor.js +0 -0
  181. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Editor/EditorEvents.js +0 -0
  182. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Editor/EditorHelper.js +0 -0
  183. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Editor/LayerCursor.js +0 -0
  184. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Editor/LayerDecoration2.js +0 -0
  185. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Editor/LayerDiagnostics.js +0 -0
  186. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Editor/LayerLineNumbers.js +0 -0
  187. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Editor/LayerMarker.js +0 -0
  188. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Editor/LayerScreenReader.js +0 -0
  189. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Editor/LayerScrollBar.js +0 -0
  190. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Editor/LayerSelections.js +0 -0
  191. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Editor/LayerText.js +0 -0
  192. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/EditorError/EditorError.ipc.js +0 -0
  193. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/EditorError/EditorError.js +0 -0
  194. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/EditorGroup/EditorGroup.js +0 -0
  195. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/EditorHover/EditorHover.ipc.js +0 -0
  196. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/EditorHover/EditorHover.js +0 -0
  197. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/EditorRename/EditorRename.ipc.js +0 -0
  198. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/EditorRename/EditorRename.js +0 -0
  199. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/EditorTab/EditorTab.js +0 -0
  200. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ElementTagMap/ElementTagMap.js +0 -0
  201. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ElementTags/ElementTags.js +0 -0
  202. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Errors/JsonRpcError.js +0 -0
  203. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Eval/Eval.ipc.js +0 -0
  204. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Eval/Eval.js +0 -0
  205. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/FilePicker/FilePicker.ipc.js +0 -0
  206. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/FilePicker/FilePicker.js +0 -0
  207. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/FileSystemHandle/FileSystemHandle.ipc.js +0 -0
  208. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/FileSystemHandle/FileSystemHandle.js +0 -0
  209. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Focus/Focus.js +0 -0
  210. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Icon/Icon.js +0 -0
  211. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/IconButton/IconButton.js +0 -0
  212. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ImagePreview/ImagePreview.ipc.js +0 -0
  213. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ImagePreview/ImagePreview.js +0 -0
  214. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/InitData/InitData.ipc.js +0 -0
  215. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/InitData/InitData.js +0 -0
  216. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/InputBox/InputBox.js +0 -0
  217. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/InputEventType/InputEventType.js +0 -0
  218. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/IpcClient/IpcClient.js +0 -0
  219. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/IpcParent/IpcParent.js +0 -0
  220. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/IpcParent/IpcParentWithMessagePort.js +0 -0
  221. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/IpcParent/IpcParentWithModuleWorker.js +0 -0
  222. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/IpcParent/IpcParentWithReferencePort.js +0 -0
  223. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/JsonRpcVersion/JsonRpcVersion.js +0 -0
  224. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/KeyBindings/KeyBindings.ipc.js +0 -0
  225. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/KeyBindings/KeyBindings.js +0 -0
  226. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Label/Label.js +0 -0
  227. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Layout/Layout.ipc.js +0 -0
  228. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Layout/Layout.js +0 -0
  229. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Location/Location.ipc.js +0 -0
  230. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Location/Location.js +0 -0
  231. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/MaskIcon/MaskIcon.js +0 -0
  232. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/MenuEntryId/MenuEntryId.js +0 -0
  233. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/MenuItem/MenuItem.js +0 -0
  234. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/MenuItemFlags/MenuItemFlags.js +0 -0
  235. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Meta/Meta.ipc.js +0 -0
  236. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Meta/Meta.js +0 -0
  237. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ModifierKey/ModifierKey.js +0 -0
  238. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Module/Module.js +0 -0
  239. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ModuleId/ModuleId.js +0 -0
  240. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ModuleMap/ModuleMap.js +0 -0
  241. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/MouseEventType/MouseEventType.js +0 -0
  242. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Notification/Notification.ipc.js +0 -0
  243. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Notification/Notification.js +0 -0
  244. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/OffscreenCanvas/OffscreenCanvas.ipc.js +0 -0
  245. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/OffscreenCanvas/OffscreenCanvas.js +0 -0
  246. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/OldMenu/Menu.ipc.js +0 -0
  247. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/OldMenu/Menu.js +0 -0
  248. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/OldMenu/Menu2.js +0 -0
  249. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Open/Open.ipc.js +0 -0
  250. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Open/Open.js +0 -0
  251. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Performance/Performance.ipc.js +0 -0
  252. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Performance/Performance.js +0 -0
  253. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Platform/Platform.js +2 -2
  254. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/PlatformType/PlatformType.js +0 -0
  255. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Renderer/Renderer.js +0 -0
  256. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Renderer/RendererExtension.js +0 -0
  257. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Renderer/RendererQuickPick.js +0 -0
  258. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Renderer/RendererSearchResult.js +0 -0
  259. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Renderer/RendererSuggestWidget.js +0 -0
  260. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Renderer/RendererTree.js +0 -0
  261. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/RendererWorker/RendererWorker.js +0 -0
  262. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/SanitizeHtml/SanitizeHtml.ipc.js +0 -0
  263. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/SanitizeHtml/SanitizeHtml.js +0 -0
  264. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ServiceWorker/ServiceWorker.ipc.js +0 -0
  265. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ServiceWorker/ServiceWorker.js +0 -0
  266. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Terminal/Terminal.ipc.js +0 -0
  267. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Terminal/Terminal.js +0 -0
  268. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/TestFrameWork/ConditionErrors.js +0 -0
  269. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/TestFrameWork/ElementActions.js +0 -0
  270. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/TestFrameWork/HtmlElements.js +0 -0
  271. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/TestFrameWork/KeyBoardActions.js +0 -0
  272. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/TestFrameWork/MultiElementConditions.js +0 -0
  273. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/TestFrameWork/QuerySelector.js +0 -0
  274. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/TestFrameWork/SingleElementConditions.js +0 -0
  275. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/TestFrameWork/TestFrameWork.ipc.js +0 -0
  276. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/TestFrameWork/TestFrameWork.js +0 -0
  277. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Viewlet/ExplorerModel.js +0 -0
  278. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Viewlet/TreeProviderJson.js +0 -0
  279. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Viewlet/TreeProviderNpm.js +0 -0
  280. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Viewlet/TreeView.js +0 -0
  281. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Viewlet/TreeView2.js +0 -0
  282. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Viewlet/TreeViewClass.js +0 -0
  283. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Viewlet/TreeViewNumber.js +0 -0
  284. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Viewlet/Viewlet.ipc.js +0 -0
  285. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Viewlet/Viewlet.js +0 -0
  286. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Viewlet/ViewletList.js +0 -0
  287. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletActivityBar/ViewletActivityBar.js +0 -0
  288. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletActivityBar/ViewletActivityBarEvents.js +0 -0
  289. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletAudio/ViewletAudio.js +0 -0
  290. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletAudio/ViewletAudioEvents.js +0 -0
  291. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletClock/ViewletClock.js +0 -0
  292. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletDebugConsole/ViewletDebugConsole.js +0 -0
  293. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletEditorCompletion/ViewletEditorCompletion.js +0 -0
  294. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletEditorCompletion/ViewletEditorCompletionEvents.js +0 -0
  295. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletEditorImage/ViewletEditorImage.js +0 -0
  296. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletEditorImage/ViewletEditorImageEvents.js +0 -0
  297. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletEditorPlainText/ViewletEditorPlainText.js +0 -0
  298. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletEditorPlainText/ViewletOutputEvents.js +0 -0
  299. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletEditorText/ViewletEditorText.js +0 -0
  300. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletEmpty/ViewletEmpty.js +0 -0
  301. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletExplorer/ViewletExplorer.js +0 -0
  302. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletExplorer/ViewletExplorerEvents.js +0 -0
  303. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletExtensionDetail/ViewletExtensionDetail.js +0 -0
  304. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletExtensionDetail/ViewletExtensionDetailEvents.js +0 -0
  305. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletExtensions/ViewletExtensions.js +0 -0
  306. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletExtensions/ViewletExtensionsEvents.js +0 -0
  307. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletFindWidget/ViewletFindWidget.js +0 -0
  308. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletFindWidget/ViewletFindWidgetEvents.js +0 -0
  309. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletIframe/ViewletIframe.js +0 -0
  310. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletImplementations/ViewletImplementations.js +0 -0
  311. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletKeyBindings/ViewletKeyBindings.js +0 -0
  312. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletKeyBindings/ViewletKeyBindingsEvents.js +0 -0
  313. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletLayout/ViewletLayout.js +0 -0
  314. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletLayout/ViewletLayoutEvents.js +0 -0
  315. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletLocations/ViewletLocations.js +0 -0
  316. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletMain/ViewletMain.js +0 -0
  317. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletMain/ViewletMainEvents.js +0 -0
  318. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletModule/ViewletModule.js +0 -0
  319. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletModuleId/ViewletModuleId.js +0 -0
  320. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletOutput/ViewletOutput.js +0 -0
  321. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletOutput/ViewletOutputEvents.js +0 -0
  322. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletPanel/ViewletPanel.js +0 -0
  323. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletPanel/ViewletPanelEvents.js +0 -0
  324. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletPdf/ViewletPdf.js +0 -0
  325. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletPdf/ViewletPdfEvents.js +0 -0
  326. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletProblems/ViewletProblems.js +0 -0
  327. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletProblems/ViewletProblemsEvents.js +0 -0
  328. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletQuickPick/ViewletQuickPick.js +0 -0
  329. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletQuickPick/ViewletQuickPickEvents.js +0 -0
  330. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletReferences/ViewletReferences.js +0 -0
  331. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletRunAndDebug/ViewletRunAndDebug.js +0 -0
  332. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletRunAndDebug/ViewletRunAndDebugEvents.js +0 -0
  333. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletSash/ViewletSash.js +0 -0
  334. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletSash/ViewletSashEvents.js +0 -0
  335. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletScrollable/ViewletScrollable.js +0 -0
  336. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletSearch/ViewletSearch.js +0 -0
  337. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletSearch/ViewletSearchEvents.js +0 -0
  338. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletSideBar/ViewletSideBar.js +0 -0
  339. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletSimpleBrowser/ViewletSimpleBrowser.js +0 -0
  340. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletSimpleBrowser/ViewletSimpleBrowserEvents.js +0 -0
  341. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletSizable/ViewletSizable.js +0 -0
  342. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletSize/ViewletSize.js +0 -0
  343. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletSizeClassName/ViewletSizeClassName.js +0 -0
  344. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletSizeMap/ViewletSizeMap.js +0 -0
  345. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletSourceControl/ViewletSourceControl.js +0 -0
  346. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletStatusBar/ViewletStatusBar.js +0 -0
  347. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletTerminal/ViewletTerminal.js +0 -0
  348. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletTerminal/ViewletTerminalEvents.js +0 -0
  349. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletTitleBar/ViewletTitleBar.js +0 -0
  350. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletTitleBar/ViewletTitleBarEvents.js +0 -0
  351. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletTitleBarButtons/ViewletTitleBarButtons.js +0 -0
  352. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletTitleBarButtons/ViewletTitleBarButtonsEvents.js +0 -0
  353. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBar.js +0 -0
  354. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarEvents.js +0 -0
  355. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/VirtualDom/VirtualDom.js +0 -0
  356. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/VirtualDomElement/VirtualDomElement.js +0 -0
  357. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/VirtualDomElements/VirtualDomElements.js +0 -0
  358. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/WebStorage/WebStorage.ipc.js +0 -0
  359. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/WebStorage/WebStorage.js +0 -0
  360. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/WebStorageType/WebStorageType.js +0 -0
  361. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/WheelEventType/WheelEventType.js +0 -0
  362. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Widget/Widget.js +0 -0
  363. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/WidgetManager/WidgetManager.js +0 -0
  364. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Window/Window.ipc.js +0 -0
  365. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/parts/Window/Window.js +0 -0
  366. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/rendererProcessMain.js +0 -0
  367. package/static/{be11bf8 → 96d5271}/packages/renderer-process/src/shared/findIndex.js +0 -0
  368. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/dist/rendererWorkerMain.js +43 -269
  369. package/static/96d5271/packages/renderer-worker/dist/rendererWorkerMain.js.map +7 -0
  370. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ActivityBarItemFlags/ActivityBarItemFlags.js +0 -0
  371. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Ajax/Ajax.ipc.js +0 -0
  372. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Ajax/Ajax.js +0 -0
  373. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Arrays/Arrays.js +0 -0
  374. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Assert/Assert.js +0 -0
  375. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Audio/Audio.ipc.js +0 -0
  376. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Audio/Audio.js +0 -0
  377. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/BackgroundTabs/BackgroundTabs.js +0 -0
  378. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Base64/Base64.ipc.js +0 -0
  379. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Base64/Base64.js +0 -0
  380. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/BeforeInput/BeforeInput.js +0 -0
  381. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Blob/Blob.ipc.js +0 -0
  382. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Blob/Blob.js +0 -0
  383. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/BlobSrc/BlobSrc.js +0 -0
  384. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/BrowserErrorTypes/BrowserErrorTypes.js +0 -0
  385. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/CacheStorage/CacheStorage.ipc.js +0 -0
  386. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/CacheStorage/CacheStorage.js +0 -0
  387. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Callback/Callback.ipc.js +0 -0
  388. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Callback/Callback.js +0 -0
  389. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Chrome/Chrome.ipc.js +0 -0
  390. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Chrome/Chrome.js +0 -0
  391. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ChromeExtension/ChromeExtension.ipc.js +0 -0
  392. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ChromeExtension/ChromeExtension.js +0 -0
  393. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ChromeExtensionType/ChromeExtensionType.js +0 -0
  394. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ChromeExtensionUrl/ChromeExtensionUrl.js +0 -0
  395. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Clamp/Clamp.js +0 -0
  396. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ClipBoard/ClipBoard.ipc.js +0 -0
  397. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ClipBoard/ClipBoard.js +0 -0
  398. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/CodeFrameColumns/CodeFrameColumns.js +0 -0
  399. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ColorPicker/ColorPicker.ipc.js +0 -0
  400. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ColorPicker/ColorPicker.js +0 -0
  401. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ColorTheme/Color.js +0 -0
  402. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ColorTheme/ColorTheme.ipc.js +0 -0
  403. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ColorTheme/ColorTheme.js +0 -0
  404. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ColorThemeFromJson/ColorThemeFromJson.ipc.js +0 -0
  405. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ColorThemeFromJson/ColorThemeFromJson.js +0 -0
  406. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Command/Command.js +0 -0
  407. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Compare/Compare.js +0 -0
  408. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Completions/Completions.js +0 -0
  409. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ContentTracing/ContentTracing.ipc.js +0 -0
  410. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ContentTracing/ContentTracing.js +0 -0
  411. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Context/ContextImpl.js +0 -0
  412. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ContextMenu/ContextMenu.ipc.js +0 -0
  413. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ContextMenu/ContextMenu.js +0 -0
  414. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ContextMenu/ContextMenuBrowser.js +0 -0
  415. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ContextMenu/ContextMenuElectron.js +0 -0
  416. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Css/Css.js +0 -0
  417. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/DefaultIcon/DefaultIcon.js +0 -0
  418. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Developer/Developer.ipc.js +0 -0
  419. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Developer/Developer.js +0 -0
  420. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Diagnostics/Diagnostics.js +0 -0
  421. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Dialog/Dialog.ipc.js +0 -0
  422. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Dialog/Dialog.js +0 -0
  423. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/DiffDom/DiffDom.js +0 -0
  424. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/DirentType/DirentType.js +0 -0
  425. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/DomMatrix/DomMatrix.js +0 -0
  426. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Download/Download.ipc.js +0 -0
  427. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Download/Download.js +0 -0
  428. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditOrigin/EditOrigin.js +0 -0
  429. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Editor/Editor.js +2 -15
  430. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Editor/EditorCursor.js +0 -0
  431. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Editor/EditorScrolling.js +0 -0
  432. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Editor/EditorSelection.js +0 -0
  433. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Editor/EditorText.js +0 -0
  434. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandApplyEdit.js +0 -0
  435. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandBlur.js +0 -0
  436. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandBraceCompletion.js +0 -0
  437. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCancelSelection.js +0 -0
  438. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCompletion.js +0 -0
  439. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandComposition.js +0 -0
  440. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCopy.js +0 -0
  441. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCopyLineDown.js +0 -0
  442. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCopyLineUp.js +0 -0
  443. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCursorCharacterLeft.js +0 -0
  444. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCursorCharacterRight.js +0 -0
  445. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCursorDown.js +0 -0
  446. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCursorEnd.js +0 -0
  447. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCursorHome.js +0 -0
  448. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCursorHorizontalLeft.js +0 -0
  449. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCursorHorizontalRight.js +0 -0
  450. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCursorSet.js +0 -0
  451. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCursorUp.js +0 -0
  452. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCursorVertical.js +0 -0
  453. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCursorWordLeft.js +0 -0
  454. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCursorWordPartLeft.js +0 -0
  455. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCursorWordPartRight.js +0 -0
  456. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCursorWordRight.js +0 -0
  457. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandCut.js +0 -0
  458. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandDeleteAllLeft.js +0 -0
  459. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandDeleteAllRight.js +0 -0
  460. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandDeleteCharacterLeft.js +0 -0
  461. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandDeleteCharacterRight.js +0 -0
  462. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandDeleteHorizontal.js +0 -0
  463. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandDeleteHorizontalLeft.js +0 -0
  464. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandDeleteHorizontalRight.js +0 -0
  465. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandDeleteSelection.js +0 -0
  466. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandDeleteWordLeft.js +0 -0
  467. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandDeleteWordPartLeft.js +0 -0
  468. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandDeleteWordPartRight.js +0 -0
  469. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandDeleteWordRight.js +0 -0
  470. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandDelta.js +0 -0
  471. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandFormat.js +0 -0
  472. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandGetPositionLeft.js +0 -0
  473. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandGetPositionRight.js +0 -0
  474. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandGetSelectionFromNativeRange.js +0 -0
  475. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandGetWordAt.js +0 -0
  476. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandGoTo.js +0 -0
  477. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandGoToDefinition.js +0 -0
  478. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandGoToTypeDefinition.js +0 -0
  479. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandHandleContextMenu.js +0 -0
  480. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandHandleDoubleClick.js +0 -0
  481. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandHandleMouseMove.js +0 -0
  482. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandHandleMouseMoveWithAltKey.js +0 -0
  483. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandHandleNativeBeforeInputFromContentEditable.js +0 -0
  484. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandHandleNativeSelectionChange.js +0 -0
  485. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandHandleScrollBarMove.js +0 -0
  486. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandHandleScrollBarPointerDown.js +0 -0
  487. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandHandleSingleClick.js +0 -0
  488. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandHandleTab.js +0 -0
  489. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandHandleTouchEnd.js +0 -0
  490. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandHandleTouchMove.js +0 -0
  491. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandHandleTouchStart.js +0 -0
  492. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandHandleTripleClick.js +0 -0
  493. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandHandleWheel.js +0 -0
  494. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandIndent.js +0 -0
  495. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandIndentLess.js +0 -0
  496. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandIndentMore.js +0 -0
  497. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandIndentSelection.js +0 -0
  498. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandInsertLineBreak.js +0 -0
  499. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandMoveLineDown.js +0 -0
  500. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandMoveLineUp.js +0 -0
  501. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandMoveRectangleSelection.js +0 -0
  502. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandMoveRectangleSelectionPx.js +0 -0
  503. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandMoveSelection.js +0 -0
  504. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandMoveSelectionPx.js +0 -0
  505. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandOpenFind.js +0 -0
  506. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandPaste.js +0 -0
  507. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandPasteText.js +0 -0
  508. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandPosition.js +0 -0
  509. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandReplaceRange.js +0 -0
  510. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandReplaceSelection.js +0 -0
  511. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSave.js +0 -0
  512. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSelectAll.js +0 -0
  513. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSelectAllLeft.js +0 -0
  514. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSelectAllOccurrences.js +0 -0
  515. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSelectAllRight.js +0 -0
  516. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSelectCharacterLeft.js +0 -0
  517. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSelectCharacterRight.js +0 -0
  518. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSelectDown.js +0 -0
  519. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSelectHorizontalLeft.js +0 -0
  520. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSelectHorizontalRight.js +0 -0
  521. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSelectInsideString.js +0 -0
  522. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSelectLine.js +0 -0
  523. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSelectNextOccurrence.js +0 -0
  524. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSelectPreviousOccurrence.js +0 -0
  525. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSelectUp.js +0 -0
  526. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSelectWord.js +0 -0
  527. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSelectWordLeft.js +0 -0
  528. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSelectWordRight.js +0 -0
  529. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSelection.js +0 -0
  530. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSetDecorations.js +0 -0
  531. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSetDeltaY.js +0 -0
  532. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSetLanguageId.js +0 -0
  533. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSetSelections.js +0 -0
  534. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandShowMessage.js +0 -0
  535. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSnippet.js +0 -0
  536. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandSortLinesAscending.js +0 -0
  537. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandTabCompletion.js +0 -0
  538. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandToggleBlockComment.js +0 -0
  539. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandToggleComment.js +0 -0
  540. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandToggleLineComment.js +0 -0
  541. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandType.js +0 -0
  542. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandUndo.js +0 -0
  543. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorCommandUnindent.js +0 -0
  544. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCommand/EditorIndent.js +0 -0
  545. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCompletionMap/EditorCompletionMap.js +0 -0
  546. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorCompletionType/EditorCompletionType.js +0 -0
  547. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorDiagnostics/EditorDiagnostics.ipc.js +0 -0
  548. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorDiagnostics/EditorDiagnostics.js +0 -0
  549. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorError/EditorError.ipc.js +0 -0
  550. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorError/EditorError.js +0 -0
  551. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorRename/EditorRename.ipc.js +0 -0
  552. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorRename/EditorRename.js +0 -0
  553. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EditorSelection/EditorSelection.js +0 -0
  554. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ElectronApp/ElectronApp.ipc.js +0 -0
  555. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ElectronApp/ElectronApp.js +0 -0
  556. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ElectronBrowserView/ElectronBrowserView.ipc.js +0 -0
  557. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ElectronBrowserView/ElectronBrowserView.js +0 -0
  558. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ElectronBrowserViewFunctions/ElectronBrowserViewFunctions.js +0 -0
  559. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ElectronBrowserViewQuickPick/ElectronBrowserViewQuickPick.js +0 -0
  560. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ElectronClipBoard/ElectronClipBoard.ipc.js +0 -0
  561. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ElectronClipBoard/ElectronClipBoard.js +0 -0
  562. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ElectronContentTracing/ElectronContentTracing.js +0 -0
  563. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ElectronDeveloper/ElectronDeveloper.js +0 -0
  564. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ElectronDialog/ElectronDialog.js +0 -0
  565. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ElectronMenu/ElectronMenu.ipc.js +0 -0
  566. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ElectronMenu/ElectronMenu.js +0 -0
  567. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ElectronMenuItemFlags/ElectronMenuItemFlags.js +0 -0
  568. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ElectronNetLog/ElectronNetLog.js +0 -0
  569. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ElectronPowerSaveBlocker/ElectronPowerSaveBlocker.js +0 -0
  570. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ElectronProcess/ElectronProcess.js +0 -0
  571. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ElectronSafeStorage/ElectronSafeStorage.js +0 -0
  572. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ElectronShell/ElectronShell.js +0 -0
  573. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ElectronWindow/ElectronWindow.ipc.js +0 -0
  574. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ElectronWindow/ElectronWindow.js +0 -0
  575. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ElectronWindowAbout/ElectronWindowAbout.js +0 -0
  576. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ElectronWindowProcessExplorer/ElectronWindowProcessExplorer.js +0 -0
  577. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/EncodingType/EncodingType.js +0 -0
  578. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ErrorCodes/ErrorCodes.js +0 -0
  579. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ErrorHandling/ErrorHandling.ipc.js +0 -0
  580. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ErrorHandling/ErrorHandling.js +0 -0
  581. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Errors/CancelationError.js +0 -0
  582. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Errors/Errors.js +0 -0
  583. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Eval/Eval.ipc.js +0 -0
  584. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Eval/Eval.js +0 -0
  585. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ExplorerEditingType/ExplorerEditingType.js +0 -0
  586. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ExtensionDisplay/ExtensionDisplay.js +0 -0
  587. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ExtensionFilterParameter/ExtensionFilterParameter.js +0 -0
  588. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostBraceCompletion.js +0 -0
  589. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostClosingTagCompletion.js +0 -0
  590. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostCommands.js +0 -0
  591. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostCompletion.js +0 -0
  592. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostCore.ipc.js +0 -0
  593. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostCore.js +0 -0
  594. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostDefinition.js +0 -0
  595. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostDiagnostic.js +0 -0
  596. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostEditor.js +0 -0
  597. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostFileSystem.js +0 -0
  598. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostFormatting.js +0 -0
  599. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostHover.js +0 -0
  600. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostImplementation.js +0 -0
  601. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostLanguages.js +0 -0
  602. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostLanguagesNode.js +0 -0
  603. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostLanguagesWeb.js +0 -0
  604. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostOutput.js +0 -0
  605. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostQuickPick.js +0 -0
  606. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostReference.js +0 -0
  607. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostRename.js +0 -0
  608. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostSemanticTokens.js +0 -0
  609. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostShared.js +0 -0
  610. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostSourceControl.js +0 -0
  611. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostStatusBarItems.js +0 -0
  612. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostTabCompletion.js +0 -0
  613. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostTextDocument.js +0 -0
  614. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostTextSearch.js +0 -0
  615. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ExtensionHost/ExtensionHostTypeDefinition.js +0 -0
  616. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ExtensionHost/shared.js +0 -0
  617. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ExtensionHostActivationEvent/ExtensionHostActivationEvent.js +0 -0
  618. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ExtensionHostIpc/ExtensionHostIpc.js +0 -0
  619. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ExtensionHostManagement/ExtensionHostManagement.js +0 -0
  620. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ExtensionHostManagement/ExtensionHostManagementBrowser.js +0 -0
  621. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ExtensionHostManagement/ExtensionHostManagementElectron.js +0 -0
  622. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ExtensionHostManagement/ExtensionHostManagementNode.js +0 -0
  623. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ExtensionHostManagement/ExtensionHostManagementShared.js +0 -0
  624. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ExtensionHostRpc/ExtensionHostRpc.js +0 -0
  625. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ExtensionManagement/ExtensionManagement.js +0 -0
  626. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ExtensionManifestStatus/ExtensionManifestStatus.js +0 -0
  627. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ExtensionMarketplace/ExtensionMarketplace.js +0 -0
  628. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ExtensionMeta/ExtensionMeta.ipc.js +0 -0
  629. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ExtensionMeta/ExtensionMeta.js +0 -0
  630. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ExtensionStatus/ExtensionStatus.js +0 -0
  631. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Extensions/Extensions.ipc.js +0 -0
  632. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Extensions/Extensions.js +0 -0
  633. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ExtensionsSomething/ExtensionsSomething.js +0 -0
  634. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/FileHandleEditMode/FileHandleEditMode.js +0 -0
  635. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/FileHandlePermissionType/FileHandlePermissionType.js +0 -0
  636. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/FileHandleType/FileHandleType.js +0 -0
  637. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/FileHandleTypeMap/FileHandleTypeMap.js +0 -0
  638. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/FilePicker/FilePicker.ipc.js +0 -0
  639. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/FilePicker/FilePicker.js +0 -0
  640. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/FileSystem/FileSystem.ipc.js +0 -0
  641. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/FileSystem/FileSystem.js +0 -0
  642. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/FileSystem/FileSystemApp.js +0 -0
  643. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/FileSystem/FileSystemAppMemoryUsage.js +0 -0
  644. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/FileSystem/FileSystemAppRecentlyOpened.js +0 -0
  645. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/FileSystem/FileSystemAppSession.js +0 -0
  646. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/FileSystem/FileSystemAppSettings.js +0 -0
  647. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/FileSystem/FileSystemAppShared.js +0 -0
  648. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/FileSystem/FileSystemAppStartupPerformance.js +0 -0
  649. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/FileSystem/FileSystemData.js +0 -0
  650. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/FileSystem/FileSystemDisk.js +0 -0
  651. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/FileSystem/FileSystemFetch.js +0 -0
  652. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/FileSystem/FileSystemGitHub.js +0 -0
  653. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/FileSystem/FileSystemHtml.js +0 -0
  654. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/FileSystem/FileSystemMemory.js +0 -0
  655. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/FileSystem/FileSystemWeb.js +0 -0
  656. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/FileSystemHandle/FileSystemHandle.js +0 -0
  657. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/FileSystemHandlePermission/FileSystemHandlePermission.js +0 -0
  658. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/FileSystemProtocol/FileSystemProtocol.js +0 -0
  659. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/FilterCompletionItems/FilterCompletionItems.js +0 -0
  660. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/FilterKeyBindings/FilterKeyBindings.js +0 -0
  661. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Focus/Focus.js +0 -0
  662. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Format/Format.ipc.js +0 -0
  663. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Format/Format.js +0 -0
  664. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/FuzzySearch/FuzzySearch.js +0 -0
  665. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/FuzzySearch/FuzzySearchMrAleph.js +0 -0
  666. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/GitHubDirentType/GitHubDirentType.js +0 -0
  667. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/GitHubRestApi/GitHubRestApi.js +0 -0
  668. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/GlobalEventBus/GlobalEventBus.js +0 -0
  669. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Height/Height.js +0 -0
  670. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Highlight/Highlight.js +0 -0
  671. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/History/History.js +0 -0
  672. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/I18NString/I18NString.js +0 -0
  673. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Icon/Icon.js +0 -0
  674. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/IconTheme/IconTheme.ipc.js +0 -0
  675. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/IconTheme/IconTheme.js +0 -0
  676. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Id/Id.js +0 -0
  677. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/IframeSrc/IframeSrc.js +0 -0
  678. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ImagePreview/ImagePreview.ipc.js +0 -0
  679. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ImagePreview/ImagePreview.js +0 -0
  680. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ImportScript/ImportScript.js +0 -0
  681. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/IndexedDb/IndexedDb.ipc.js +0 -0
  682. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/IndexedDb/IndexedDb.js +0 -0
  683. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/InitData/InitData.js +0 -0
  684. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/InputEventType/InputEventType.js +0 -0
  685. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/IpcChild/IpcChild.js +0 -0
  686. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/IpcChild/IpcChildWithMessagePort.js +0 -0
  687. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/IpcChild/IpcChildWithModuleWorker.js +0 -0
  688. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/IpcChild/IpcChildWithReferencePort.js +0 -0
  689. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/IpcChildType/IpcChildType.js +0 -0
  690. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/IpcParent/IpcParent.js +0 -0
  691. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/IpcParent/IpcParentWithElectron.js +0 -0
  692. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/IpcParent/IpcParentWithMessagePort.js +0 -0
  693. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/IpcParent/IpcParentWithModuleWorker.js +0 -0
  694. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/IpcParent/IpcParentWithReferencePort.js +0 -0
  695. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/IpcParent/IpcParentWithWebSocket.js +0 -0
  696. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/IpcParentType/IpcParentType.js +0 -0
  697. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Json/Json.js +0 -0
  698. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/JsonRpc/JsonRpc.js +0 -0
  699. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/JsonRpcErrorCode/JsonRpcErrorCode.js +0 -0
  700. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/JsonRpcVersion/JsonRpcVersion.js +0 -0
  701. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/KeyBindings/KeyBindings.ipc.js +0 -0
  702. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/KeyBindings/KeyBindings.js +0 -0
  703. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/KeyBindingsInitial/KeyBindingsInitial.ipc.js +0 -0
  704. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/KeyBindingsInitial/KeyBindingsInitial.js +0 -0
  705. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/LanguageFeatures/LanguageFeatures.js +0 -0
  706. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Languages/Languages.js +0 -0
  707. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/LazyCommand/LazyCommand.js +0 -0
  708. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/LifeCycle/LifeCycle.js +0 -0
  709. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/LifeCyclePhase/LifeCyclePhase.js +0 -0
  710. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/List/List.js +0 -0
  711. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Listener/Listener.ipc.js +0 -0
  712. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Listener/Listener.js +0 -0
  713. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/LocalStorage/LocalStorage.ipc.js +0 -0
  714. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/LocalStorage/LocalStorage.js +0 -0
  715. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Location/Location.js +0 -0
  716. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Main/Main.js +0 -0
  717. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Main/MainCloseActiveEditor.js +0 -0
  718. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Main/MainCloseAllEditors.js +0 -0
  719. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Main/MainCloseEditorsToTheLeft.js +0 -0
  720. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Main/MainCloseEditorsToTheRight.js +0 -0
  721. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Main/MainFocusFirst.js +0 -0
  722. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Main/MainFocusIndex.js +0 -0
  723. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Main/MainFocusLast.js +0 -0
  724. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Main/MainFocusNext.js +0 -0
  725. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Main/MainFocusPrevious.js +0 -0
  726. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Markdown/Markdown.js +0 -0
  727. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Menu/Menu.ipc.js +0 -0
  728. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Menu/Menu.js +0 -0
  729. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/MenuCore/MenuCore.js +0 -0
  730. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/MenuEntries/MenuEntries.js +0 -0
  731. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/MenuEntriesActivityBar/MenuEntriesActivityBar.js +0 -0
  732. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/MenuEntriesActivityBarAdditionalViews/MenuEntriesActivityBarAdditionalViews.js +0 -0
  733. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/MenuEntriesEdit/MenuEntriesEdit.js +0 -0
  734. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/MenuEntriesEditor/MenuEntriesEditor.js +0 -0
  735. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/MenuEntriesEditorImage/MenuEntriesEditorImage.js +0 -0
  736. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/MenuEntriesExplorer/MenuEntriesExplorer.js +0 -0
  737. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/MenuEntriesExplorer/MenuEntriesExplorerFile.js +0 -0
  738. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/MenuEntriesExplorer/MenuEntriesExplorerFolder.js +0 -0
  739. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/MenuEntriesExtensionDetailReadme/MenuEntriesExtensionDetailReadme.js +0 -0
  740. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/MenuEntriesFile/MenuEntriesFile.js +0 -0
  741. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/MenuEntriesGo/MenuEntriesGo.js +0 -0
  742. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/MenuEntriesHelp/MenuEntriesHelp.js +0 -0
  743. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/MenuEntriesManageExtension/MenuEntriesManageExtension.js +0 -0
  744. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/MenuEntriesOpenRecent/MenuEntriesOpenRecent.js +0 -0
  745. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/MenuEntriesRun/MenuEntriesRun.js +0 -0
  746. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/MenuEntriesSearch/MenuEntriesSearch.js +0 -0
  747. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/MenuEntriesSelection/MenuEntriesSelection.js +0 -0
  748. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/MenuEntriesSettings/MenuEntriesSettings.js +0 -0
  749. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/MenuEntriesSimpleBrowser/MenuEntriesSimpleBrowser.js +0 -0
  750. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/MenuEntriesTab/MenuEntriesTab.js +0 -0
  751. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/MenuEntriesTerminal/MenuEntriesTerminal.js +0 -0
  752. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/MenuEntriesTitleBar/MenuEntriesTitleBar.js +0 -0
  753. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/MenuEntriesTitleBar/MenuEntriesTitleBarRemote.js +0 -0
  754. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/MenuEntriesTitleBar/MenuEntriesTitleBarWeb.js +0 -0
  755. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/MenuEntriesView/MenuEntriesView.js +0 -0
  756. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/MenuEntryId/MenuEntryId.js +0 -0
  757. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/MenuItemFlags/MenuItemFlags.js +0 -0
  758. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Meta/Meta.js +0 -0
  759. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Mime/Mime.ipc.js +0 -0
  760. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Mime/Mime.js +0 -0
  761. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/MimeTypes/MimeTypes.js +0 -0
  762. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/MimeTypes/MimeTypes.json +0 -0
  763. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ModifierKey/ModifierKey.js +0 -0
  764. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Module/Module.js +0 -0
  765. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ModuleId/ModuleId.js +0 -0
  766. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ModuleMap/ModuleMap.js +0 -0
  767. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/NameAnonymousFunction/NameAnonymousFunction.js +0 -0
  768. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Navigation/Navigation.ipc.js +0 -0
  769. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Navigation/Navigation.js +0 -0
  770. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/NestedError/NestedError.js +0 -0
  771. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Notification/Notification.ipc.js +0 -0
  772. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Notification/Notification.js +0 -0
  773. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/OffscreenCanvas/OffscreenCanvas.js +0 -0
  774. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Open/Open.ipc.js +0 -0
  775. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Open/Open.js +0 -0
  776. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/OpenNativeFolder/OpenNativeFolder.ipc.js +0 -0
  777. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/OpenNativeFolder/OpenNativeFolder.js +0 -0
  778. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ParseExtensionSearchValue/ParseExtensionSearchValue.js +0 -0
  779. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ParseKeyBindings/ParseKeyBindings.js +0 -0
  780. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Path/Path.js +0 -0
  781. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/PathSeparatorType/PathSeparatorType.js +0 -0
  782. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/PdfWorker/PdfWorker.js +0 -0
  783. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/PdfWorkerFunctions/PdfWorkerFunctions.js +0 -0
  784. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/PdfWorkerIpc/PdfWorkerIpc.js +0 -0
  785. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Performance/Performance.js +0 -0
  786. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/PersistentFileHandle/PersistentFileHandle.ipc.js +0 -0
  787. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/PersistentFileHandle/PersistentFileHandle.js +0 -0
  788. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Platform/Platform.js +2 -2
  789. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/PlatformType/PlatformType.js +0 -0
  790. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Preferences/Preferences.ipc.js +0 -0
  791. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Preferences/Preferences.js +0 -0
  792. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/PrettyBytes/PrettyBytes.js +0 -0
  793. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ProcessExplorer/ProcessExplorer.js +0 -0
  794. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ProcessExplorer/ProcessExplorerElectron.js +0 -0
  795. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ProcessExplorer/ProcessExplorerRemote.js +0 -0
  796. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ProcessExplorer/ProcessExplorerWeb.js +0 -0
  797. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/PromiseStatus/PromiseStatus.js +0 -0
  798. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Protocol/Protocol.js +0 -0
  799. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/QuickPIckPrefix/QuickPickPrefix.js +0 -0
  800. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/QuickPickEntries/QuickPickEntries.js +0 -0
  801. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/QuickPickEntriesColorTheme/QuickPickEntriesColorTheme.js +0 -0
  802. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/QuickPickEntriesCommand/QuickPickEntriesCommand.js +0 -0
  803. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/QuickPickEntriesEverything/QuickPickEntriesEverything.js +0 -0
  804. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/QuickPickEntriesFile/QuickPickEntriesFile.js +0 -0
  805. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/QuickPickEntriesGoToLine/QuickPickEntriesGoToLine.js +0 -0
  806. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/QuickPickEntriesNoop/QuickPickNoop.js +0 -0
  807. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/QuickPickEntriesNumber/QuickPickEntriesNumber.js +0 -0
  808. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/QuickPickEntriesOpenRecent/QuickPickEntriesOpenRecent.js +0 -0
  809. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/QuickPickEntriesSymbol/QuickPickEntriesSymbol.js +0 -0
  810. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/QuickPickEntriesView/QuickPickEntriesView.js +0 -0
  811. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/QuickPickEntriesWorkspaceSymbol/QuickPickEntriesWorkspaceSymbol.js +0 -0
  812. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/QuickPickEntryId/QuickPickEntryId.js +0 -0
  813. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/QuickPickReturnValue/QuickPickReturnValue.js +0 -0
  814. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/RecentlyOpened/RecentlyOpened.ipc.js +0 -0
  815. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/RecentlyOpened/RecentlyOpened.js +0 -0
  816. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/RendererProcess/RendererProcess.js +0 -0
  817. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/SafeTokenizeLine/SafeTokenizeLine.js +0 -0
  818. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/SanitizeHtml/SanitizeHtml.js +0 -0
  819. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/SashDirectionType/SashDirectionType.js +0 -0
  820. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/SashType/SashType.js +0 -0
  821. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/SaveState/SaveState.ipc.js +0 -0
  822. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/SaveState/SaveState.js +0 -0
  823. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ScrollBarFunctions/ScrollBarFunctions.js +0 -0
  824. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/SearchExtensions/SearchExtensions.js +0 -0
  825. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/SearchExtensionsLocal/SearchExtensionsLocal.js +0 -0
  826. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/SearchExtensionsMarketplace/SearchExtensionsMarketplace.js +0 -0
  827. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/SearchFile/SearchFile.js +0 -0
  828. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/SearchFileMemfs/SearchFileMemfs.js +0 -0
  829. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/SearchFileRemote/SearchFileRemote.js +0 -0
  830. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/SearchFileWeb/SearchFileWeb.js +0 -0
  831. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/SearchFileWithFetch/SearchFileWithFetch.js +0 -0
  832. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/SearchResultType/SearchResultType.js +0 -0
  833. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ServiceWorker/ServiceWorker.ipc.js +0 -0
  834. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ServiceWorker/ServiceWorker.js +0 -0
  835. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/SessionReplay/SessionReplay.ipc.js +0 -0
  836. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/SessionReplay/SessionReplay.js +0 -0
  837. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/SessionStorage/SessionStorage.ipc.js +0 -0
  838. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/SessionStorage/SessionStorage.js +0 -0
  839. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/SharedProcess/SharedProcess.js +0 -0
  840. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/SharedProcessIpc/SharedProcessIpc.js +0 -0
  841. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/SideBarLocationType/SideBarLocationType.js +0 -0
  842. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/SourceControl/SourceControl.ipc.js +0 -0
  843. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/SourceControl/SourceControl.js +0 -0
  844. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/SplitLines/SplitLines.js +0 -0
  845. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Storage/Storage.js +0 -0
  846. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/SyntaxHighlightingWorker/SyntaxHighlightingWorker.js +0 -0
  847. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/TabCompletion/TabCompletion.js +0 -0
  848. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Test/Test.ipc.js +0 -0
  849. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Test/Test.js +0 -0
  850. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/TestFrameWork/Locator.js +0 -0
  851. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/TestFrameWork/TestFrameWork.js +0 -0
  852. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponent.js +0 -0
  853. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponentBaseUrl.js +0 -0
  854. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponentCommand.js +0 -0
  855. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponentContextMenu.js +0 -0
  856. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponentEditor.js +0 -0
  857. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponentEval.js +0 -0
  858. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponentExplorer.js +0 -0
  859. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponentExtension.js +0 -0
  860. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponentFileSystem.js +0 -0
  861. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponentFindWidget.js +0 -0
  862. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponentIconTheme.js +0 -0
  863. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponentKeyBoard.js +0 -0
  864. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponentMain.js +0 -0
  865. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponentPlatform.js +0 -0
  866. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponentQuickPick.js +0 -0
  867. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponentSearch.js +0 -0
  868. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponentSettings.js +0 -0
  869. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponentSideBar.js +0 -0
  870. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponentTitleBarMenuBar.js +0 -0
  871. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameWorkComponentWorkspace.js +0 -0
  872. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/TestFrameWorkComponent/TestFrameworkComponentActivityBar.js +0 -0
  873. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/TestState/TestState.js +0 -0
  874. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/TextDocument/TextDocument.js +0 -0
  875. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/TextDocumentEditType/TextDocumentEditType.js +0 -0
  876. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/TextDocumentSearch/TextDocumentSearch.js +0 -0
  877. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/TextSearch/TextSearch.js +0 -0
  878. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/TextSearch/TextSearchExtension.js +0 -0
  879. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/TextSearch/TextSearchNode.js +0 -0
  880. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/TextSearch/TextSearchWeb.js +0 -0
  881. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/TextSegmenter/TextSegmenter.js +0 -0
  882. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Timeout/Timeout.js +0 -0
  883. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Timers/Timers.js +0 -0
  884. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Timestamp/Timestamp.js +0 -0
  885. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/TitleBarButtons/TitleBarButtons.js +0 -0
  886. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/TitleBarMenuBarEntries/TitleBarMenuBarEntries.js +0 -0
  887. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Tokenizer/TokenizePlainText.js +0 -0
  888. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Tokenizer/Tokenizer.js +0 -0
  889. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Url/Url.ipc.js +0 -0
  890. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Url/Url.js +0 -0
  891. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/VError/VError.js +0 -0
  892. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Viewlet/Viewlet.ipc.js +0 -0
  893. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Viewlet/Viewlet.js +0 -0
  894. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Viewlet/ViewletElectron.js +0 -0
  895. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Viewlet/ViewletExtension.js +0 -0
  896. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Viewlet/ViewletExtensionsHeader.js +0 -0
  897. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Viewlet/ViewletExtensionsList.js +0 -0
  898. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletActivityBar/ViewletActivityBar.ipc.js +0 -0
  899. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletActivityBar/ViewletActivityBar.js +2 -11
  900. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletActivityBar/ViewletActivityBarFocus.js +0 -0
  901. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletActivityBar/ViewletActivityBarFocusFirst.js +0 -0
  902. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletActivityBar/ViewletActivityBarFocusIndex.js +0 -0
  903. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletActivityBar/ViewletActivityBarFocusLast.js +0 -0
  904. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletActivityBar/ViewletActivityBarFocusNext.js +0 -0
  905. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletActivityBar/ViewletActivityBarFocusPrevious.js +0 -0
  906. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletActivityBar/ViewletActivityBarHandleClick.js +0 -0
  907. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletActivityBar/ViewletActivityBarSelectCurrent.js +0 -0
  908. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletAudio/ViewletAudio.ipc.js +0 -0
  909. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletAudio/ViewletAudio.js +1 -8
  910. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletClock/ViewletClock.ipc.js +0 -0
  911. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletClock/ViewletClock.js +0 -0
  912. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletContextMenu/ViewletContextMenu.js +0 -0
  913. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletCounter/ViewletCounter.ipc.js +0 -0
  914. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletCounter/ViewletCounter.js +1 -6
  915. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletDebugConsole/ViewletDebugConsole.ipc.js +0 -0
  916. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletDebugConsole/ViewletDebugConsole.js +0 -0
  917. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletEditorCompletion/ViewletEditorCompletion.ipc.js +0 -0
  918. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletEditorCompletion/ViewletEditorCompletion.js +1 -11
  919. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletEditorCompletion/ViewletEditorCompletionSelectIndex.js +0 -0
  920. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletEditorImage/ViewletEditorImage.ipc.js +0 -0
  921. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletEditorImage/ViewletEditorImage.js +3 -18
  922. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletEditorImage/ViewletEditorImageCopyImage.js +0 -0
  923. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletEditorImage/ViewletEditorImageCopyPath.js +0 -0
  924. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletEditorImage/ViewletEditorImageHandleContextMenu.js +0 -0
  925. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletEditorPlainText/ViewletEditorPlainText.ipc.js +0 -0
  926. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletEditorPlainText/ViewletEditorPlainText.js +1 -6
  927. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletEditorText/ViewletEditorText.ipc.js +0 -0
  928. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletEditorText/ViewletEditorText.js +0 -0
  929. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletEmpty/ViewletEmpty.js +0 -0
  930. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorer.ipc.js +0 -0
  931. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorer.js +2 -22
  932. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerExpandRecursively.js +0 -0
  933. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerFocus.js +0 -0
  934. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerFocusFirst.js +0 -0
  935. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerFocusIndex.js +0 -0
  936. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerFocusLast.js +0 -0
  937. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerFocusNext.js +0 -0
  938. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerFocusNone.js +0 -0
  939. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerFocusPrevious.js +0 -0
  940. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerHandleContextMenuKeyboard.js +0 -0
  941. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerHandleContextMenuMouseAt.js +0 -0
  942. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerHandleDragOver.js +0 -0
  943. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerHandleDrop.js +0 -0
  944. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerHandleDropIndex.js +0 -0
  945. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerHandleDropRoot.js +0 -0
  946. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerHandleDropRootDefault.js +0 -0
  947. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerHandleDropRootElectron.js +0 -0
  948. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerHandlePaste.js +0 -0
  949. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerShared.js +0 -0
  950. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletExplorer/ViewletExplorerUpdateRoot.js +0 -0
  951. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletExtensionDetail/ViewletExtensionDetail.ipc.js +0 -0
  952. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletExtensionDetail/ViewletExtensionDetail.js +1 -12
  953. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletExtensionDetail/ViewletExtensionDetailHandleReadmeContextMenu.js +0 -0
  954. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletExtensions/ViewletExtensions.ipc.js +0 -0
  955. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletExtensions/ViewletExtensions.js +2 -22
  956. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletExtensions/ViewletExtensionsHandleClick.js +0 -0
  957. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletExtensions/ViewletExtensionsHandleClickCurrent.js +0 -0
  958. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletExtensions/ViewletExtensionsHandleClickCurrentButKeepFocus.js +0 -0
  959. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletExtensions/ViewletExtensionsShared.js +0 -0
  960. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletFindWidget/ViewletFindWidget.ipc.js +0 -0
  961. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletFindWidget/ViewletFindWidget.js +2 -12
  962. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletIframe/ViewletIframe.ipc.js +0 -0
  963. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletIframe/ViewletIframe.js +1 -6
  964. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletImplementations/ViewletImplementations.ipc.js +0 -0
  965. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletImplementations/ViewletImplementations.js +0 -0
  966. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletKeyBindings/ViewletKeyBindings.ipc.js +0 -0
  967. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletKeyBindings/ViewletKeyBindings.js +0 -0
  968. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletKeyBindings/ViewletKeyBindingsRender.js +2 -14
  969. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletLayout/ViewletLayout.ipc.js +0 -0
  970. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletLayout/ViewletLayout.js +0 -0
  971. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletList/ViewletList.ipc.js +0 -0
  972. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletList/ViewletList.js +0 -0
  973. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletLocations/ViewletLocations.ipc.js +0 -0
  974. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletLocations/ViewletLocations.js +0 -0
  975. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletMain/ViewletMain.ipc.js +0 -0
  976. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletMain/ViewletMain.js +0 -0
  977. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletManager/ViewletManager.js +12 -13
  978. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletMap/ViewletMap.js +0 -0
  979. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletModule/ViewletModule.js +0 -0
  980. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletModuleId/ViewletModuleId.js +0 -0
  981. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletNoop/ViewletNoop.ipc.js +0 -0
  982. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletNoop/ViewletNoop.js +0 -0
  983. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletOutput/ViewletOutput.ipc.js +0 -0
  984. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletOutput/ViewletOutput.js +0 -0
  985. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletPanel/ViewletPanel.ipc.js +0 -0
  986. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletPanel/ViewletPanel.js +1 -8
  987. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletPdf/ViewletPdf.ipc.js +0 -0
  988. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletPdf/ViewletPdf.js +0 -0
  989. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletPdf/ViewletPdfFocusPage.js +0 -0
  990. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletPdf/ViewletPdfNext.js +0 -0
  991. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletPdf/ViewletPdfPrevious.js +0 -0
  992. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletPdf/ViewletPdfPrint.js +0 -0
  993. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletPdf/ViewletPdfZoomIn.js +0 -0
  994. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletPdf/ViewletPdfZoomOut.js +0 -0
  995. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletProblems/ViewletProblems.ipc.js +0 -0
  996. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletProblems/ViewletProblems.js +2 -14
  997. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletQuickPick/ViewletQuickPick.ipc.js +0 -0
  998. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletQuickPick/ViewletQuickPick.js +3 -19
  999. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletQuickPick/ViewletQuickPickFocusFirst.js +0 -0
  1000. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletQuickPick/ViewletQuickPickFocusIndex.js +0 -0
  1001. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletQuickPick/ViewletQuickPickFocusLast.js +0 -0
  1002. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletQuickPick/ViewletQuickPickFocusNext.js +0 -0
  1003. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletQuickPick/ViewletQuickPickFocusPrevious.js +0 -0
  1004. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletQuickPick/quickpickRender.js +0 -0
  1005. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletQuickPickElectron/ViewletQuickPickElectron.ipc.js +0 -0
  1006. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletQuickPickElectron/ViewletQuickPickElectron.js +0 -0
  1007. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletReferences/ViewletReferences.ipc.js +0 -0
  1008. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletReferences/ViewletReferences.js +0 -0
  1009. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletRunAndDebug/ViewletRunAndDebug.ipc.js +0 -0
  1010. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletRunAndDebug/ViewletRunAndDebug.js +0 -0
  1011. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletSearch/ViewletSearch.ipc.js +0 -0
  1012. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletSearch/ViewletSearch.js +4 -28
  1013. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletSideBar/ViewletSideBar.ipc.js +0 -0
  1014. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletSideBar/ViewletSideBar.js +0 -0
  1015. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletSimpleBrowser/ViewletSimpleBrowser.ipc.js +0 -0
  1016. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletSimpleBrowser/ViewletSimpleBrowser.js +2 -14
  1017. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletSimpleBrowser/ViewletSimpleBrowserBackward.js +0 -0
  1018. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletSimpleBrowser/ViewletSimpleBrowserCancelNavigation.js +0 -0
  1019. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletSimpleBrowser/ViewletSimpleBrowserCopyImage.js +0 -0
  1020. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletSimpleBrowser/ViewletSimpleBrowserForward.js +0 -0
  1021. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletSimpleBrowser/ViewletSimpleBrowserHandleContextMenu.js +0 -0
  1022. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletSimpleBrowser/ViewletSimpleBrowserInspectElement.js +0 -0
  1023. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletSimpleBrowser/ViewletSimpleBrowserOpenBackgroundTab.js +0 -0
  1024. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletSimpleBrowser/ViewletSimpleBrowserOpenDevtools.js +0 -0
  1025. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletSimpleBrowser/ViewletSimpleBrowserOpenExternal.js +0 -0
  1026. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletSimpleBrowser/ViewletSimpleBrowserReload.js +0 -0
  1027. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletSize/ViewletSize.js +0 -0
  1028. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletSourceControl/ViewletSourceControl.ipc.js +0 -0
  1029. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletSourceControl/ViewletSourceControl.js +1 -8
  1030. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletStates/ViewletStates.js +0 -0
  1031. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletStatusBar/ViewletStatusBar.ipc.js +0 -0
  1032. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletStatusBar/ViewletStatusBar.js +0 -0
  1033. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTerminal/ViewletTerminal.ipc.js +0 -0
  1034. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTerminal/ViewletTerminal.js +0 -0
  1035. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBar/ViewletTitleBar.ipc.js +0 -0
  1036. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBar/ViewletTitleBar.js +0 -0
  1037. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBarButtons/ViewletTitleBarButtons.ipc.js +0 -0
  1038. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBarButtons/ViewletTitleBarButtons.js +0 -2
  1039. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBarButtons/ViewletTitleBarButtonsHandleClickClose.js +0 -0
  1040. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBarButtons/ViewletTitleBarButtonsHandleClickMinimize.js +0 -0
  1041. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBarButtons/ViewletTitleBarButtonsHandleClickToggleMaximize.js +0 -0
  1042. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBar.ipc.js +0 -0
  1043. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBar.js +1 -11
  1044. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarCloseMenu.js +0 -0
  1045. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarCloseOneMenu.js +0 -0
  1046. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarFocus.js +0 -0
  1047. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarFocusFirst.js +0 -0
  1048. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarFocusIndex.js +0 -0
  1049. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarFocusLast.js +0 -0
  1050. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarFocusNext.js +0 -0
  1051. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarFocusPrevious.js +0 -0
  1052. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyArrowDown.js +0 -0
  1053. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyArrowDownMenuClosed.js +0 -0
  1054. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyArrowDownMenuOpen.js +0 -0
  1055. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyArrowLeft.js +0 -0
  1056. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyArrowLeftMenuClosed.js +0 -0
  1057. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyArrowLeftMenuOpen.js +0 -0
  1058. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyArrowRight.js +0 -0
  1059. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyArrowRightMenuClosed.js +0 -0
  1060. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyArrowRightMenuOpen.js +0 -0
  1061. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyArrowUp.js +0 -0
  1062. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyArrowUpMenuClosed.js +0 -0
  1063. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyArrowUpMenuOpen.js +0 -0
  1064. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyEnd.js +0 -0
  1065. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyEndMenuClosed.js +0 -0
  1066. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyEndMenuOpen.js +0 -0
  1067. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyEnter.js +0 -0
  1068. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyEnterMenuClosed.js +0 -0
  1069. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyEnterMenuOpen.js +0 -0
  1070. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyEscape.js +0 -0
  1071. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyEscapeMenuClosed.js +0 -0
  1072. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyEscapeMenuOpen.js +0 -0
  1073. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyHome.js +0 -0
  1074. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyHomeMenuClosed.js +0 -0
  1075. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyHomeMenuOpen.js +0 -0
  1076. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeySpace.js +0 -0
  1077. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeySpaceMenuClosed.js +0 -0
  1078. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeySpaceMenuOpen.js +0 -0
  1079. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleMenuMouseDown.js +0 -0
  1080. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleMenuMouseOver.js +0 -0
  1081. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleMouseOver.js +0 -0
  1082. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleMouseOverMenuClosed.js +0 -0
  1083. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleMouseOverMenuOpen.js +0 -0
  1084. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarIfElse.js +0 -0
  1085. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarNoop.js +0 -0
  1086. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarOpenMenu.js +0 -0
  1087. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarOpenMenuAtIndex.js +0 -0
  1088. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarSelectIndexNone.js +0 -0
  1089. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarSelectIndexRestoreFocus.js +0 -0
  1090. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarSelectIndexSubMenu.js +0 -0
  1091. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarToggleIndex.js +0 -0
  1092. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarToggleMenu.js +0 -0
  1093. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTodoList/ViewletTodoList.ipc.js +0 -0
  1094. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/ViewletTodoList/ViewletTodoList.js +1 -8
  1095. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/VirtualDomElements/VirtualDomElements.js +0 -0
  1096. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/VirtualDomHelpers/VirtualDomHelpers.js +0 -0
  1097. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/VirtualList/VirtualList.ipc.js +0 -0
  1098. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/VirtualList/VirtualList.js +0 -0
  1099. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/VirtualList/VirtualListFocusFirst.js +0 -0
  1100. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/VirtualList/VirtualListFocusIndex.js +0 -0
  1101. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/VirtualList/VirtualListFocusLast.js +0 -0
  1102. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/VirtualList/VirtualListFocusNext.js +0 -0
  1103. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/VirtualList/VirtualListFocusNextPage.js +0 -0
  1104. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/VirtualList/VirtualListFocusPrevious.js +0 -0
  1105. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/VirtualList/VirtualListFocusPreviousPage.js +0 -0
  1106. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/VirtualList/VirtualListHandleScrollBarClick.js +0 -0
  1107. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/VirtualList/VirtualListHandleScrollBarMove.js +0 -0
  1108. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/VirtualList/VirtualListHandleTouchEnd.js +0 -0
  1109. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/VirtualList/VirtualListHandleTouchMove.js +0 -0
  1110. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/VirtualList/VirtualListHandleTouchStart.js +0 -0
  1111. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/VirtualList/VirtualListHandleWheel.js +0 -0
  1112. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/VirtualList/VirtualListSetDeltaY.js +0 -0
  1113. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/WebSocket/WebSocket.js +0 -0
  1114. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/WebSocket/WebSocketNew.js +0 -0
  1115. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/WebSocketProtocol/WebSocketProtocol.js +0 -0
  1116. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/WebStorage/WebStorage.js +0 -0
  1117. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/WebStorageType/WebStorageType.js +0 -0
  1118. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/WheelEvent/WheelEvent.js +0 -0
  1119. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Window/Window.ipc.js +0 -0
  1120. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Window/Window.js +0 -0
  1121. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Workbench/Workbench.ipc.js +0 -0
  1122. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Workbench/Workbench.js +0 -0
  1123. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Worker/Worker.js +0 -0
  1124. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Workspace/Workspace.ipc.js +0 -0
  1125. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/parts/Workspace/Workspace.js +0 -0
  1126. package/static/{be11bf8 → 96d5271}/packages/renderer-worker/src/rendererWorkerMain.js +0 -0
  1127. package/static/{be11bf8 → 96d5271}/playground/.gitkeep +0 -0
  1128. package/static/{be11bf8 → 96d5271}/playground/languages/index.cpp +0 -0
  1129. package/static/{be11bf8 → 96d5271}/playground/languages/index.css +0 -0
  1130. package/static/{be11bf8 → 96d5271}/playground/languages/index.dart +0 -0
  1131. package/static/{be11bf8 → 96d5271}/playground/languages/index.env +0 -0
  1132. package/static/{be11bf8 → 96d5271}/playground/languages/index.ex +0 -0
  1133. package/static/{be11bf8 → 96d5271}/playground/languages/index.html +0 -0
  1134. package/static/{be11bf8 → 96d5271}/playground/languages/index.java +0 -0
  1135. package/static/{be11bf8 → 96d5271}/playground/languages/index.jl +0 -0
  1136. package/static/{be11bf8 → 96d5271}/playground/languages/index.js +0 -0
  1137. package/static/{be11bf8 → 96d5271}/playground/languages/index.kt +0 -0
  1138. package/static/{be11bf8 → 96d5271}/playground/languages/index.pl +0 -0
  1139. package/static/{be11bf8 → 96d5271}/playground/languages/index.py +0 -0
  1140. package/static/{be11bf8 → 96d5271}/playground/languages/index.ts +0 -0
  1141. package/static/{be11bf8 → 96d5271}/playground/languages/scrolling.txt +0 -0
  1142. package/static/{be11bf8 → 96d5271}/playground/sample-folder/a.txt +0 -0
  1143. package/static/{be11bf8 → 96d5271}/playground/sample-folder/b.txt +0 -0
  1144. package/static/{be11bf8 → 96d5271}/playground/sample-folder/c.txt +0 -0
  1145. package/static/{be11bf8 → 96d5271}/sounds/bell.oga +0 -0
  1146. package/static/{be11bf8 → 96d5271}/static/js/blob-util.js +0 -0
  1147. package/static/{be11bf8 → 96d5271}/static/js/dompurify.js +0 -0
  1148. package/static/{be11bf8 → 96d5271}/static/js/idb/async-iterators.js +0 -0
  1149. package/static/{be11bf8 → 96d5271}/static/js/idb/index.js +0 -0
  1150. package/static/{be11bf8 → 96d5271}/static/js/idb/with-async-ittr.js +0 -0
  1151. package/static/{be11bf8 → 96d5271}/static/js/idb/wrap-idb-value.js +0 -0
  1152. package/static/{be11bf8 → 96d5271}/static/js/js-base64.js +0 -0
  1153. package/static/{be11bf8 → 96d5271}/static/js/ky.js +0 -0
  1154. package/static/{be11bf8 → 96d5271}/static/js/marked.js +0 -0
  1155. package/static/{be11bf8 → 96d5271}/static/js/p-min-delay.js +0 -0
  1156. package/static/{be11bf8 → 96d5271}/static/js/pdfjs/pdf.js +0 -0
  1157. package/static/{be11bf8 → 96d5271}/static/js/pdfjs/pdf.worker.js +0 -0
  1158. package/static/{be11bf8 → 96d5271}/static/js/pretty-bytes.js +0 -0
  1159. package/static/{be11bf8 → 96d5271}/static/js/termterm.js +0 -0
  1160. package/static/{be11bf8 → 96d5271}/static/js/yoctodelay.js +0 -0
  1161. package/static/index.html +5 -5
  1162. package/static/manifest.json +2 -2
  1163. package/static/serviceWorker.js +1 -1
  1164. package/static/be11bf8/packages/renderer-worker/dist/rendererWorkerMain.js.map +0 -7
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/parts/ModuleId/ModuleId.js", "../static/js/ky.js", "../src/parts/VError/VError.js", "../src/parts/Assert/Assert.js", "../src/parts/Ajax/Ajax.js", "../src/parts/Ajax/Ajax.ipc.js", "../src/parts/Id/Id.js", "../src/parts/Callback/Callback.js", "../src/parts/Errors/Errors.js", "../src/parts/IpcChildType/IpcChildType.js", "../src/parts/IpcChild/IpcChildWithMessagePort.js", "../src/parts/IpcChild/IpcChildWithModuleWorker.js", "../src/parts/IpcChild/IpcChildWithReferencePort.js", "../src/parts/IpcChild/IpcChild.js", "../src/parts/JsonRpcVersion/JsonRpcVersion.js", "../src/parts/RendererProcess/RendererProcess.js", "../src/parts/Audio/Audio.js", "../src/parts/Audio/Audio.ipc.js", "../static/js/js-base64.js", "../src/parts/Base64/Base64.js", "../src/parts/Base64/Base64.ipc.js", "../static/js/blob-util.js", "../src/parts/Blob/Blob.js", "../src/parts/Blob/Blob.ipc.js", "../src/parts/IpcParentType/IpcParentType.js", "../src/parts/JsonRpc/JsonRpc.js", "../src/parts/PlatformType/PlatformType.js", "../src/parts/IpcParent/IpcParentWithElectron.js", "../src/parts/IpcParent/IpcParentWithMessagePort.js", "../src/parts/IpcParent/IpcParentWithModuleWorker.js", "../src/parts/IpcParent/IpcParentWithReferencePort.js", "../src/parts/Protocol/Protocol.js", "../src/parts/WebSocketProtocol/WebSocketProtocol.js", "../src/parts/IpcParent/IpcParentWithWebSocket.js", "../src/parts/IpcParent/IpcParent.js", "../src/parts/SharedProcessIpc/SharedProcessIpc.js", "../src/parts/SharedProcess/SharedProcess.js", "../src/parts/Platform/Platform.js", "../src/parts/CacheStorage/CacheStorage.js", "../src/parts/CacheStorage/CacheStorage.ipc.js", "../src/parts/Callback/Callback.ipc.js", "../src/parts/Chrome/Chrome.js", "../src/parts/Chrome/Chrome.ipc.js", "../src/parts/ChromeExtensionUrl/ChromeExtensionUrl.js", "../src/parts/ChromeExtension/ChromeExtension.js", "../src/parts/ChromeExtension/ChromeExtension.ipc.js", "../src/parts/ClipBoard/ClipBoard.js", "../src/parts/ClipBoard/ClipBoard.ipc.js", "../src/parts/ColorPicker/ColorPicker.js", "../src/parts/ColorPicker/ColorPicker.ipc.js", "../src/parts/ColorTheme/ColorTheme.ipc.js", "../src/parts/ColorThemeFromJson/ColorThemeFromJson.js", "../src/parts/ColorThemeFromJson/ColorThemeFromJson.ipc.js", "../src/parts/JsonRpcErrorCode/JsonRpcErrorCode.js", "../src/parts/ElectronProcess/ElectronProcess.js", "../src/parts/ElectronContentTracing/ElectronContentTracing.js", "../src/parts/ElectronShell/ElectronShell.js", "../src/parts/OpenNativeFolder/OpenNativeFolder.js", "../src/parts/ContentTracing/ContentTracing.js", "../src/parts/ContentTracing/ContentTracing.ipc.js", "../src/parts/ExtensionManifestStatus/ExtensionManifestStatus.js", "../src/parts/ErrorCodes/ErrorCodes.js", "../src/parts/CodeFrameColumns/CodeFrameColumns.js", "../src/parts/ExtensionHost/ExtensionHostLanguagesNode.js", "../src/parts/ExtensionHost/ExtensionHostLanguagesWeb.js", "../src/parts/ExtensionHost/ExtensionHostLanguages.js", "../src/parts/GlobalEventBus/GlobalEventBus.js", "../src/parts/SplitLines/SplitLines.js", "../src/parts/Languages/Languages.js", "../src/parts/ExtensionMeta/ExtensionMeta.js", "../src/parts/Arrays/Arrays.js", "../src/parts/TextDocument/TextDocument.js", "../src/parts/ViewletStates/ViewletStates.js", "../src/parts/Location/Location.js", "../src/parts/ElectronApp/ElectronApp.js", "../src/parts/ElectronWindow/ElectronWindow.js", "../src/parts/Window/Window.js", "../src/parts/PathSeparatorType/PathSeparatorType.js", "../src/parts/Workspace/Workspace.js", "../src/parts/ExtensionHostManagement/ExtensionHostManagementBrowser.js", "../src/parts/ExtensionHostManagement/ExtensionHostManagementElectron.js", "../src/parts/ExtensionHostManagement/ExtensionHostManagementNode.js", "../src/parts/ExtensionHostIpc/ExtensionHostIpc.js", "../src/parts/ExtensionHostRpc/ExtensionHostRpc.js", "../src/parts/ExtensionHostManagement/ExtensionHostManagementShared.js", "../src/parts/ExtensionHostManagement/ExtensionHostManagement.js", "../src/parts/ExtensionHost/ExtensionHostShared.js", "../src/parts/ExtensionHost/ExtensionHostFileSystem.js", "../src/parts/FileSystemProtocol/FileSystemProtocol.js", "../src/parts/FileSystem/FileSystemAppStartupPerformance.js", "../src/parts/FileSystem/FileSystemAppMemoryUsage.js", "../src/parts/Json/Json.js", "../src/parts/WebStorage/WebStorage.js", "../src/parts/WebStorageType/WebStorageType.js", "../src/parts/LocalStorage/LocalStorage.js", "../src/parts/FileSystem/FileSystemAppShared.js", "../src/parts/FileSystem/FileSystemAppSettings.js", "../src/parts/FileSystem/FileSystemAppRecentlyOpened.js", "../src/parts/ErrorHandling/ErrorHandling.js", "../static/js/idb/wrap-idb-value.js", "../static/js/idb/index.js", "../static/js/idb/async-iterators.js", "../static/js/idb/with-async-ittr.js", "../src/parts/IndexedDb/IndexedDb.js", "../src/parts/Timestamp/Timestamp.js", "../src/parts/SessionReplay/SessionReplay.js", "../src/parts/FileSystem/FileSystemAppSession.js", "../src/parts/FileSystem/FileSystemApp.js", "../src/parts/FileSystem/FileSystemData.js", "../src/parts/FileSystem/FileSystemDisk.js", "../src/parts/DirentType/DirentType.js", "../src/parts/FileSystem/FileSystemFetch.js", "../src/parts/GitHubDirentType/GitHubDirentType.js", "../src/parts/GitHubRestApi/GitHubRestApi.js", "../src/parts/FileSystem/FileSystemGitHub.js", "../src/parts/BrowserErrorTypes/BrowserErrorTypes.js", "../src/parts/FileHandleEditMode/FileHandleEditMode.js", "../src/parts/FileHandlePermissionType/FileHandlePermissionType.js", "../src/parts/FileSystemHandle/FileSystemHandle.js", "../src/parts/FileSystemHandlePermission/FileSystemHandlePermission.js", "../src/parts/Path/Path.js", "../src/parts/PersistentFileHandle/PersistentFileHandle.js", "../src/parts/FileHandleType/FileHandleType.js", "../src/parts/FileHandleTypeMap/FileHandleTypeMap.js", "../src/parts/FileSystem/FileSystemHtml.js", "../src/parts/FileSystem/FileSystemMemory.js", "../src/parts/FileSystem/FileSystemWeb.js", "../src/parts/EncodingType/EncodingType.js", "../src/parts/FileSystem/FileSystem.js", "../src/parts/Preferences/Preferences.js", "../src/parts/ElectronMenuItemFlags/ElectronMenuItemFlags.js", "../src/parts/MenuEntryId/MenuEntryId.js", "../src/parts/I18NString/I18NString.js", "../src/parts/MenuItemFlags/MenuItemFlags.js", "../src/parts/SideBarLocationType/SideBarLocationType.js", "../src/parts/ViewletModuleId/ViewletModuleId.js", "../src/parts/MenuEntriesActivityBar/MenuEntriesActivityBar.js", "../src/parts/MenuEntriesEdit/MenuEntriesEdit.js", "../src/parts/MenuEntriesEditor/MenuEntriesEditor.js", "../src/parts/ElectronBrowserView/ElectronBrowserView.js", "../src/parts/Css/Css.js", "../src/parts/Errors/CancelationError.js", "../src/parts/NameAnonymousFunction/NameAnonymousFunction.js", "../src/parts/SessionStorage/SessionStorage.js", "../src/parts/SaveState/SaveState.js", "../src/parts/ViewletManager/ViewletManager.js", "../src/parts/ExplorerEditingType/ExplorerEditingType.js", "../src/parts/DefaultIcon/DefaultIcon.js", "../src/parts/IconTheme/IconTheme.js", "../src/parts/PromiseStatus/PromiseStatus.js", "../src/parts/ViewletExplorer/ViewletExplorerFocusIndex.js", "../src/parts/Compare/Compare.js", "../src/parts/ViewletExplorer/ViewletExplorerShared.js", "../src/parts/Height/Height.js", "../src/parts/ViewletExplorer/ViewletExplorer.js", "../src/parts/ViewletExplorer/ViewletExplorerExpandRecursively.js", "../src/parts/ViewletExplorer/ViewletExplorerFocus.js", "../src/parts/ViewletExplorer/ViewletExplorerFocusFirst.js", "../src/parts/ViewletExplorer/ViewletExplorerFocusLast.js", "../src/parts/ViewletExplorer/ViewletExplorerFocusNext.js", "../src/parts/ViewletExplorer/ViewletExplorerFocusNone.js", "../src/parts/ViewletExplorer/ViewletExplorerFocusPrevious.js", "../src/parts/ViewletExplorer/ViewletExplorerHandleContextMenuKeyboard.js", "../src/parts/ViewletExplorer/ViewletExplorerHandleContextMenuMouseAt.js", "../src/parts/ViewletExplorer/ViewletExplorerHandleDragOver.js", "../src/parts/ViewletExplorer/ViewletExplorerHandleDropRootElectron.js", "../src/parts/ViewletExplorer/ViewletExplorerHandleDropRootDefault.js", "../src/parts/ViewletExplorer/ViewletExplorerHandleDropRoot.js", "../src/parts/ViewletExplorer/ViewletExplorerHandleDropIndex.js", "../src/parts/ViewletExplorer/ViewletExplorerHandleDrop.js", "../src/parts/ViewletExplorer/ViewletExplorerUpdateRoot.js", "../src/parts/ViewletExplorer/ViewletExplorerHandlePaste.js", "../src/parts/ViewletExplorer/ViewletExplorer.ipc.js", "../src/parts/ViewletRunAndDebug/ViewletRunAndDebug.js", "../src/parts/ViewletRunAndDebug/ViewletRunAndDebug.ipc.js", "../src/parts/ScrollBarFunctions/ScrollBarFunctions.js", "../src/parts/SearchResultType/SearchResultType.js", "../src/parts/TextSearch/TextSearchNode.js", "../src/parts/TextSearch/TextSearchWeb.js", "../src/parts/ExtensionHost/ExtensionHostTextSearch.js", "../src/parts/TextSearch/TextSearchExtension.js", "../src/parts/TextSearch/TextSearch.js", "../src/parts/VirtualList/VirtualList.js", "../src/parts/ViewletSearch/ViewletSearch.js", "../src/parts/VirtualList/VirtualListFocusIndex.js", "../src/parts/VirtualList/VirtualListFocusFirst.js", "../src/parts/VirtualList/VirtualListFocusLast.js", "../src/parts/VirtualList/VirtualListFocusNext.js", "../src/parts/VirtualList/VirtualListFocusNextPage.js", "../src/parts/VirtualList/VirtualListFocusPrevious.js", "../src/parts/VirtualList/VirtualListFocusPreviousPage.js", "../src/parts/Timeout/Timeout.js", "../src/parts/Clamp/Clamp.js", "../src/parts/VirtualList/VirtualListSetDeltaY.js", "../src/parts/VirtualList/VirtualListHandleTouchEnd.js", "../src/parts/VirtualList/VirtualListHandleTouchMove.js", "../src/parts/VirtualList/VirtualListHandleTouchStart.js", "../src/parts/VirtualList/VirtualListHandleWheel.js", "../src/parts/VirtualList/VirtualListHandleScrollBarMove.js", "../src/parts/VirtualList/VirtualListHandleScrollBarClick.js", "../src/parts/VirtualList/VirtualList.ipc.js", "../src/parts/ViewletSearch/ViewletSearch.ipc.js", "../src/parts/ExtensionHost/ExtensionHostSourceControl.js", "../src/parts/ViewletSourceControl/ViewletSourceControl.js", "../src/parts/ViewletSourceControl/ViewletSourceControl.ipc.js", "../src/parts/ViewletTerminal/ViewletTerminal.js", "../src/parts/ViewletTerminal/ViewletTerminal.ipc.js", "../src/parts/ViewletDebugConsole/ViewletDebugConsole.js", "../src/parts/ViewletDebugConsole/ViewletDebugConsole.ipc.js", "../src/parts/ExtensionManagement/ExtensionManagement.js", "../src/parts/ExtensionFilterParameter/ExtensionFilterParameter.js", "../src/parts/ParseExtensionSearchValue/ParseExtensionSearchValue.js", "../src/parts/Icon/Icon.js", "../src/parts/ExtensionDisplay/ExtensionDisplay.js", "../src/parts/SearchExtensionsLocal/SearchExtensionsLocal.js", "../src/parts/SearchExtensions/SearchExtensions.js", "../src/parts/ViewletSize/ViewletSize.js", "../src/parts/ViewletExtensions/ViewletExtensionsShared.js", "../src/parts/ViewletExtensions/ViewletExtensions.js", "../src/parts/ViewletExtensions/ViewletExtensionsHandleClick.js", "../src/parts/ViewletExtensions/ViewletExtensionsHandleClickCurrent.js", "../src/parts/ViewletExtensions/ViewletExtensionsHandleClickCurrentButKeepFocus.js", "../src/parts/ViewletExtensions/ViewletExtensions.ipc.js", "../src/parts/ExtensionHost/ExtensionHostCore.js", "../src/parts/ExtensionHost/ExtensionHostOutput.js", "../src/parts/ViewletOutput/ViewletOutput.js", "../src/parts/ViewletOutput/ViewletOutput.ipc.js", "../src/parts/ExtensionHostActivationEvent/ExtensionHostActivationEvent.js", "../src/parts/ExtensionHost/ExtensionHostEditor.js", "../src/parts/ExtensionHost/ExtensionHostDiagnostic.js", "../src/parts/Diagnostics/Diagnostics.js", "../src/parts/ViewletProblems/ViewletProblems.js", "../src/parts/ViewletProblems/ViewletProblems.ipc.js", "../src/parts/ViewletNoop/ViewletNoop.js", "../src/parts/ViewletNoop/ViewletNoop.ipc.js", "../src/parts/Tokenizer/TokenizePlainText.js", "../src/parts/Tokenizer/Tokenizer.js", "../src/parts/Editor/EditorCursor.js", "../src/parts/Editor/EditorScrolling.js", "../src/parts/EditorSelection/EditorSelection.js", "../src/parts/Editor/EditorSelection.js", "../src/parts/SafeTokenizeLine/SafeTokenizeLine.js", "../src/parts/Editor/EditorText.js", "../src/parts/Editor/Editor.js", "../src/parts/ExtensionHost/ExtensionHostSemanticTokens.js", "../src/parts/EditorCommand/EditorCommandSetLanguageId.js", "../src/parts/ViewletEditorText/ViewletEditorText.js", "../src/parts/EditorCommand/EditorCommandApplyEdit.js", "../src/parts/EditorCommand/EditorCommandBlur.js", "../src/parts/EditOrigin/EditOrigin.js", "../src/parts/ExtensionHost/ExtensionHostBraceCompletion.js", "../src/parts/EditorCommand/EditorCommandReplaceSelection.js", "../src/parts/EditorCommand/EditorCommandPosition.js", "../src/parts/EditorCommand/EditorCommandShowMessage.js", "../src/parts/EditorCommand/EditorCommandBraceCompletion.js", "../src/parts/EditorCommand/EditorCommandCancelSelection.js", "../src/parts/EditorCommand/EditorCommandHandleContextMenu.js", "../src/parts/EditorCommand/EditorCommandCopyLineDown.js", "../src/parts/EditorCommand/EditorCommandCopyLineUp.js", "../src/parts/EditorCommand/EditorCommandGetPositionLeft.js", "../src/parts/EditorCommand/EditorCommandCursorHorizontalLeft.js", "../src/parts/TextSegmenter/TextSegmenter.js", "../src/parts/EditorCommand/EditorCommandDelta.js", "../src/parts/EditorCommand/EditorCommandCursorCharacterLeft.js", "../src/parts/EditorCommand/EditorCommandGetPositionRight.js", "../src/parts/EditorCommand/EditorCommandCursorHorizontalRight.js", "../src/parts/EditorCommand/EditorCommandCursorCharacterRight.js", "../src/parts/EditorCommand/EditorCommandCursorDown.js", "../src/parts/EditorCommand/EditorCommandCursorEnd.js", "../src/parts/EditorCommand/EditorCommandCursorHome.js", "../src/parts/EditorCommand/EditorCommandCursorSet.js", "../src/parts/EditorCommand/EditorCommandCursorVertical.js", "../src/parts/EditorCommand/EditorCommandCursorUp.js", "../src/parts/EditorCommand/EditorCommandCursorWordLeft.js", "../src/parts/EditorCommand/EditorCommandCursorWordPartLeft.js", "../src/parts/EditorCommand/EditorCommandCursorWordPartRight.js", "../src/parts/EditorCommand/EditorCommandCursorWordRight.js", "../src/parts/EditorCommand/EditorCommandCut.js", "../src/parts/EditorCommand/EditorCommandDeleteHorizontalLeft.js", "../src/parts/EditorCommand/EditorCommandDeleteAllLeft.js", "../src/parts/EditorCommand/EditorCommandDeleteHorizontalRight.js", "../src/parts/EditorCommand/EditorCommandDeleteAllRight.js", "../src/parts/EditorCommand/EditorCommandDeleteCharacterLeft.js", "../src/parts/EditorCommand/EditorCommandDeleteCharacterRight.js", "../src/parts/EditorCommand/EditorCommandDeleteWordLeft.js", "../src/parts/EditorCommand/EditorCommandDeleteWordPartLeft.js", "../src/parts/EditorCommand/EditorCommandDeleteWordPartRight.js", "../src/parts/EditorCommand/EditorCommandDeleteWordRight.js", "../src/parts/FuzzySearch/FuzzySearchMrAleph.js", "../src/parts/FuzzySearch/FuzzySearch.js", "../src/parts/EditorCommand/EditorCommandCompletion.js", "../src/parts/EditorCommand/EditorCommandComposition.js", "../src/parts/EditorCommand/EditorCommandCopy.js", "../src/parts/EditorCommand/EditorCommandOpenFind.js", "../src/parts/EditorCommand/EditorCommandSetSelections.js", "../src/parts/ExtensionHost/ExtensionHostFormatting.js", "../src/parts/Format/Format.js", "../src/parts/EditorCommand/EditorCommandFormat.js", "../src/parts/ExtensionHost/ExtensionHostDefinition.js", "../src/parts/EditorCommand/EditorCommandGetWordAt.js", "../src/parts/EditorCommand/EditorCommandGoTo.js", "../src/parts/EditorCommand/EditorCommandGoToDefinition.js", "../src/parts/ExtensionHost/ExtensionHostTypeDefinition.js", "../src/parts/EditorCommand/EditorCommandGoToTypeDefinition.js", "../src/parts/EditorCommand/EditorCommandGetSelectionFromNativeRange.js", "../src/parts/EditorCommand/EditorCommandHandleNativeBeforeInputFromContentEditable.js", "../src/parts/EditorCommand/EditorCommandSelectWord.js", "../src/parts/EditorCommand/EditorCommandHandleDoubleClick.js", "../src/parts/ExtensionHost/ExtensionHostHover.js", "../src/parts/EditorCommand/EditorCommandHandleMouseMove.js", "../src/parts/EditorCommand/EditorCommandHandleMouseMoveWithAltKey.js", "../src/parts/EditorCommand/EditorCommandHandleNativeSelectionChange.js", "../src/parts/EditorCommand/EditorCommandHandleScrollBarPointerDown.js", "../src/parts/EditorCommand/EditorCommandHandleScrollBarMove.js", "../src/parts/ModifierKey/ModifierKey.js", "../src/parts/EditorCommand/EditorCommandMoveSelection.js", "../src/parts/EditorCommand/EditorCommandHandleSingleClick.js", "../src/parts/ExtensionHost/ExtensionHostTabCompletion.js", "../src/parts/TabCompletion/TabCompletion.js", "../src/parts/EditorCommand/EditorCommandSnippet.js", "../src/parts/EditorCommand/EditorCommandTabCompletion.js", "../src/parts/ExtensionHost/ExtensionHostClosingTagCompletion.js", "../src/parts/EditorCommand/EditorCommandType.js", "../src/parts/EditorCommand/EditorCommandIndentMore.js", "../src/parts/EditorCommand/EditorCommandHandleTab.js", "../src/parts/EditorCommand/EditorCommandHandleTouchStart.js", "../src/parts/EditorCommand/EditorCommandHandleTouchEnd.js", "../src/parts/EditorCommand/EditorCommandSetDeltaY.js", "../src/parts/EditorCommand/EditorCommandHandleTouchMove.js", "../src/parts/EditorCommand/EditorCommandSelectLine.js", "../src/parts/EditorCommand/EditorCommandHandleTripleClick.js", "../src/parts/EditorCommand/EditorCommandIndentLess.js", "../src/parts/EditorCommand/EditorCommandInsertLineBreak.js", "../src/parts/EditorCommand/EditorCommandMoveLineDown.js", "../src/parts/EditorCommand/EditorCommandMoveLineUp.js", "../src/parts/EditorCommand/EditorCommandMoveRectangleSelection.js", "../src/parts/EditorCommand/EditorCommandMoveRectangleSelectionPx.js", "../src/parts/EditorCommand/EditorCommandMoveSelectionPx.js", "../src/parts/EditorCommand/EditorCommandPasteText.js", "../src/parts/EditorCommand/EditorCommandPaste.js", "../src/parts/EditorCommand/EditorCommandSave.js", "../src/parts/EditorCommand/EditorCommandSelectAll.js", "../src/parts/EditorCommand/EditorCommandSelectAllOccurrences.js", "../src/parts/EditorCommand/EditorCommandSelectHorizontalLeft.js", "../src/parts/EditorCommand/EditorCommandSelectCharacterLeft.js", "../src/parts/EditorCommand/EditorCommandSelectHorizontalRight.js", "../src/parts/EditorCommand/EditorCommandSelectCharacterRight.js", "../src/parts/EditorCommand/EditorCommandSelectDown.js", "../src/parts/EditorCommand/EditorCommandSelectInsideString.js", "../src/parts/EditorCommand/EditorCommandSelectNextOccurrence.js", "../src/parts/EditorCommand/EditorCommandSelectUp.js", "../src/parts/EditorCommand/EditorCommandSelectWordLeft.js", "../src/parts/EditorCommand/EditorCommandSelectWordRight.js", "../src/parts/EditorCommand/EditorCommandSetDecorations.js", "../src/parts/EditorCommand/EditorCommandSortLinesAscending.js", "../src/parts/EditorCommand/EditorCommandToggleBlockComment.js", "../src/parts/EditorCommand/EditorCommandToggleLineComment.js", "../src/parts/EditorCommand/EditorCommandToggleComment.js", "../src/parts/EditorCommand/EditorCommandUndo.js", "../src/parts/EditorCommand/EditorCommandUnindent.js", "../src/parts/ViewletEditorText/ViewletEditorText.ipc.js", "../src/parts/ViewletEditorPlainText/ViewletEditorPlainText.js", "../src/parts/ViewletEditorPlainText/ViewletEditorPlainText.ipc.js", "../src/parts/BlobSrc/BlobSrc.js", "../src/parts/DomMatrix/DomMatrix.js", "../src/parts/WheelEvent/WheelEvent.js", "../src/parts/ViewletEditorImage/ViewletEditorImage.js", "../src/parts/ViewletEditorImage/ViewletEditorImageCopyImage.js", "../src/parts/ViewletEditorImage/ViewletEditorImageCopyPath.js", "../src/parts/ViewletEditorImage/ViewletEditorImageHandleContextMenu.js", "../src/parts/ViewletEditorImage/ViewletEditorImage.ipc.js", "../src/parts/ViewletClock/ViewletClock.js", "../src/parts/ViewletClock/ViewletClock.ipc.js", "../src/parts/ActivityBarItemFlags/ActivityBarItemFlags.js", "../src/parts/ViewletActivityBar/ViewletActivityBarFocusIndex.js", "../src/parts/ViewletActivityBar/ViewletActivityBar.js", "../src/parts/ViewletActivityBar/ViewletActivityBarFocus.js", "../src/parts/ViewletActivityBar/ViewletActivityBarFocusFirst.js", "../src/parts/ViewletActivityBar/ViewletActivityBarFocusLast.js", "../src/parts/ViewletActivityBar/ViewletActivityBarFocusNext.js", "../src/parts/ViewletActivityBar/ViewletActivityBarFocusPrevious.js", "../src/parts/ViewletActivityBar/ViewletActivityBarHandleClick.js", "../src/parts/ViewletActivityBar/ViewletActivityBarSelectCurrent.js", "../src/parts/ViewletActivityBar/ViewletActivityBar.ipc.js", "../src/parts/ViewletPanel/ViewletPanel.js", "../src/parts/ViewletPanel/ViewletPanel.ipc.js", "../src/parts/ViewletSideBar/ViewletSideBar.js", "../src/parts/ViewletSideBar/ViewletSideBar.ipc.js", "../src/parts/ViewletTitleBar/ViewletTitleBar.js", "../src/parts/ViewletTitleBar/ViewletTitleBar.ipc.js", "../src/parts/Listener/Listener.js", "../src/parts/ExtensionHost/ExtensionHostStatusBarItems.js", "../src/parts/ViewletStatusBar/ViewletStatusBar.js", "../src/parts/ViewletStatusBar/ViewletStatusBar.ipc.js", "../src/parts/BackgroundTabs/BackgroundTabs.js", "../src/parts/LifeCyclePhase/LifeCyclePhase.js", "../src/parts/LifeCycle/LifeCycle.js", "../src/parts/ViewletMap/ViewletMap.js", "../src/parts/ViewletMain/ViewletMain.js", "../src/parts/ViewletMain/ViewletMain.ipc.js", "../src/parts/ExtensionHost/ExtensionHostCompletion.js", "../src/parts/Completions/Completions.js", "../src/parts/EditorCompletionType/EditorCompletionType.js", "../src/parts/EditorCompletionMap/EditorCompletionMap.js", "../src/parts/FilterCompletionItems/FilterCompletionItems.js", "../src/parts/ViewletEditorCompletion/ViewletEditorCompletion.js", "../src/parts/ViewletEditorCompletion/ViewletEditorCompletionSelectIndex.js", "../src/parts/ViewletEditorCompletion/ViewletEditorCompletion.ipc.js", "../src/parts/ExtensionHost/ExtensionHostReference.js", "../src/parts/ViewletLocations/ViewletLocations.js", "../src/parts/ViewletReferences/ViewletReferences.js", "../src/parts/ViewletReferences/ViewletReferences.ipc.js", "../src/parts/ExtensionHost/ExtensionHostImplementation.js", "../src/parts/ViewletImplementations/ViewletImplementations.js", "../src/parts/ViewletImplementations/ViewletImplementations.ipc.js", "../src/parts/InputEventType/InputEventType.js", "../src/parts/BeforeInput/BeforeInput.js", "../src/parts/QuickPickEntryId/QuickPickEntryId.js", "../src/parts/QuickPickReturnValue/QuickPickReturnValue.js", "../src/parts/QuickPickEntriesNoop/QuickPickNoop.js", "../src/parts/QuickPIckPrefix/QuickPickPrefix.js", "../src/parts/ExtensionHost/ExtensionHostCommands.js", "../src/parts/QuickPickEntriesCommand/QuickPickEntriesCommand.js", "../src/parts/QuickPickEntriesSymbol/QuickPickEntriesSymbol.js", "../src/parts/QuickPickEntriesWorkspaceSymbol/QuickPickEntriesWorkspaceSymbol.js", "../src/parts/QuickPickEntriesGoToLine/QuickPickEntriesGoToLine.js", "../src/parts/QuickPickEntriesView/QuickPickEntriesView.js", "../src/parts/SearchFileWeb/SearchFileWeb.js", "../src/parts/SearchFileMemfs/SearchFileMemfs.js", "../src/parts/SearchFileWithFetch/SearchFileWithFetch.js", "../src/parts/SearchFileRemote/SearchFileRemote.js", "../src/parts/SearchFile/SearchFile.js", "../src/parts/QuickPickEntriesFile/QuickPickEntriesFile.js", "../src/parts/QuickPickEntriesEverything/QuickPickEntriesEverything.js", "../src/parts/QuickPickEntriesNumber/QuickPickEntriesNumber.js", "../src/parts/QuickPickEntriesOpenRecent/QuickPickEntriesOpenRecent.js", "../src/parts/QuickPickEntriesColorTheme/QuickPickEntriesColorTheme.js", "../src/parts/QuickPickEntries/QuickPickEntries.js", "../src/parts/ViewletQuickPick/ViewletQuickPick.js", "../src/parts/ViewletQuickPick/ViewletQuickPickFocusIndex.js", "../src/parts/ViewletQuickPick/ViewletQuickPickFocusFirst.js", "../src/parts/ViewletQuickPick/ViewletQuickPickFocusLast.js", "../src/parts/ViewletQuickPick/ViewletQuickPickFocusNext.js", "../src/parts/ViewletQuickPick/ViewletQuickPickFocusPrevious.js", "../src/parts/ViewletQuickPick/ViewletQuickPick.ipc.js", "../src/parts/FilterKeyBindings/FilterKeyBindings.js", "../src/parts/KeyBindingsInitial/KeyBindingsInitial.js", "../src/parts/ParseKeyBindings/ParseKeyBindings.js", "../src/parts/VirtualDomElements/VirtualDomElements.js", "../src/parts/VirtualDomHelpers/VirtualDomHelpers.js", "../src/parts/ViewletKeyBindings/ViewletKeyBindingsRender.js", "../src/parts/ViewletKeyBindings/ViewletKeyBindings.js", "../src/parts/ViewletKeyBindings/ViewletKeyBindings.ipc.js", "../src/parts/TextDocumentSearch/TextDocumentSearch.js", "../src/parts/ViewletFindWidget/ViewletFindWidget.js", "../src/parts/ViewletFindWidget/ViewletFindWidget.ipc.js", "../static/js/marked.js", "../src/parts/Markdown/Markdown.js", "../src/parts/SanitizeHtml/SanitizeHtml.js", "../src/parts/ViewletExtensionDetail/ViewletExtensionDetail.js", "../src/parts/ViewletExtensionDetail/ViewletExtensionDetailHandleReadmeContextMenu.js", "../src/parts/ViewletExtensionDetail/ViewletExtensionDetail.ipc.js", "../src/parts/TitleBarButtons/TitleBarButtons.js", "../src/parts/ViewletTitleBarButtons/ViewletTitleBarButtons.js", "../src/parts/ViewletTitleBarButtons/ViewletTitleBarButtonsHandleClickClose.js", "../src/parts/ViewletTitleBarButtons/ViewletTitleBarButtonsHandleClickMinimize.js", "../src/parts/ViewletTitleBarButtons/ViewletTitleBarButtonsHandleClickToggleMaximize.js", "../src/parts/ViewletTitleBarButtons/ViewletTitleBarButtons.ipc.js", "../src/parts/TitleBarMenuBarEntries/TitleBarMenuBarEntries.js", "../src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBar.js", "../src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarCloseMenu.js", "../src/parts/Menu/Menu.js", "../src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarOpenMenuAtIndex.js", "../src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarFocusIndex.js", "../src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarFocusFirst.js", "../src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarFocus.js", "../src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarFocusLast.js", "../src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarFocusNext.js", "../src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarFocusPrevious.js", "../src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarOpenMenu.js", "../src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyArrowDownMenuClosed.js", "../src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyArrowDownMenuOpen.js", "../src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarIfElse.js", "../src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyArrowDown.js", "../src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyArrowLeftMenuClosed.js", "../src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarCloseOneMenu.js", "../src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyArrowLeftMenuOpen.js", "../src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyArrowLeft.js", "../src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyArrowRightMenuClosed.js", "../src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyArrowRightMenuOpen.js", "../src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyArrowRight.js", "../src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarNoop.js", "../src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyArrowUpMenuClosed.js", "../src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyArrowUpMenuOpen.js", "../src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyArrowUp.js", "../src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyEndMenuClosed.js", "../src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyEndMenuOpen.js", "../src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyEnd.js", "../src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyEnterMenuClosed.js", "../src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyEnterMenuOpen.js", "../src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyEnter.js", "../src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyEscapeMenuClosed.js", "../src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyEscapeMenuOpen.js", "../src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyEscape.js", "../src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyHomeMenuClosed.js", "../src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyHomeMenuOpen.js", "../src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeyHome.js", "../src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeySpaceMenuClosed.js", "../src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeySpaceMenuOpen.js", "../src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleKeySpace.js", "../src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarSelectIndexNone.js", "../src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarSelectIndexRestoreFocus.js", "../src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarSelectIndexSubMenu.js", "../src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleMenuMouseDown.js", "../src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleMenuMouseOver.js", "../src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleMouseOverMenuClosed.js", "../src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleMouseOverMenuOpen.js", "../src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarHandleMouseOver.js", "../src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarToggleIndex.js", "../src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBarToggleMenu.js", "../src/parts/ViewletTitleBarMenuBar/ViewletTitleBarMenuBar.ipc.js", "../src/parts/SashType/SashType.js", "../src/parts/SashDirectionType/SashDirectionType.js", "../src/parts/ViewletLayout/ViewletLayout.js", "../src/parts/ViewletLayout/ViewletLayout.ipc.js", "../src/parts/ElectronBrowserViewFunctions/ElectronBrowserViewFunctions.js", "../src/parts/IframeSrc/IframeSrc.js", "../src/parts/KeyBindings/KeyBindings.js", "../src/parts/ViewletSimpleBrowser/ViewletSimpleBrowser.js", "../src/parts/ViewletSimpleBrowser/ViewletSimpleBrowserOpenExternal.js", "../src/parts/ViewletSimpleBrowser/ViewletSimpleBrowserOpenBackgroundTab.js", "../src/parts/ViewletSimpleBrowser/ViewletSimpleBrowserHandleContextMenu.js", "../src/parts/ViewletSimpleBrowser/ViewletSimpleBrowserInspectElement.js", "../src/parts/ViewletSimpleBrowser/ViewletSimpleBrowserCopyImage.js", "../src/parts/ViewletSimpleBrowser/ViewletSimpleBrowserBackward.js", "../src/parts/ViewletSimpleBrowser/ViewletSimpleBrowserForward.js", "../src/parts/ViewletSimpleBrowser/ViewletSimpleBrowserOpenDevtools.js", "../src/parts/ViewletSimpleBrowser/ViewletSimpleBrowserReload.js", "../src/parts/ViewletSimpleBrowser/ViewletSimpleBrowserCancelNavigation.js", "../src/parts/ViewletSimpleBrowser/ViewletSimpleBrowser.ipc.js", "../src/parts/OffscreenCanvas/OffscreenCanvas.js", "../src/parts/PdfWorkerIpc/PdfWorkerIpc.js", "../src/parts/PdfWorker/PdfWorker.js", "../src/parts/PdfWorkerFunctions/PdfWorkerFunctions.js", "../src/parts/ViewletPdf/ViewletPdf.js", "../src/parts/ViewletPdf/ViewletPdfFocusPage.js", "../src/parts/ViewletPdf/ViewletPdfPrevious.js", "../src/parts/ViewletPdf/ViewletPdfNext.js", "../src/parts/ViewletPdf/ViewletPdfZoomIn.js", "../src/parts/ViewletPdf/ViewletPdfZoomOut.js", "../src/parts/ViewletPdf/ViewletPdfPrint.js", "../src/parts/ViewletPdf/ViewletPdf.ipc.js", "../src/parts/ViewletAudio/ViewletAudio.js", "../src/parts/ViewletAudio/ViewletAudio.ipc.js", "../src/parts/ViewletModule/ViewletModule.js", "../src/parts/ElectronBrowserViewQuickPick/ElectronBrowserViewQuickPick.js", "../src/parts/Viewlet/ViewletElectron.js", "../src/parts/Viewlet/Viewlet.js", "../src/parts/MenuEntriesExplorer/MenuEntriesExplorer.js", "../src/parts/MenuEntriesFile/MenuEntriesFile.js", "../src/parts/MenuEntriesGo/MenuEntriesGo.js", "../src/parts/MenuEntriesHelp/MenuEntriesHelp.js", "../src/parts/MenuEntriesManageExtension/MenuEntriesManageExtension.js", "../src/parts/MenuEntriesOpenRecent/MenuEntriesOpenRecent.js", "../src/parts/MenuEntriesRun/MenuEntriesRun.js", "../src/parts/MenuEntriesSelection/MenuEntriesSelection.js", "../src/parts/MenuEntriesSettings/MenuEntriesSettings.js", "../src/parts/MenuEntriesTab/MenuEntriesTab.js", "../src/parts/MenuEntriesTerminal/MenuEntriesTerminal.js", "../src/parts/MenuEntriesTitleBar/MenuEntriesTitleBarWeb.js", "../src/parts/MenuEntriesTitleBar/MenuEntriesTitleBarRemote.js", "../src/parts/MenuEntriesTitleBar/MenuEntriesTitleBar.js", "../src/parts/MenuEntriesView/MenuEntriesView.js", "../src/parts/MenuEntriesActivityBarAdditionalViews/MenuEntriesActivityBarAdditionalViews.js", "../src/parts/MenuEntriesSearch/MenuEntriesSearch.js", "../src/parts/MenuEntriesEditorImage/MenuEntriesEditorImage.js", "../src/parts/MenuEntriesExtensionDetailReadme/MenuEntriesExtensionDetailReadme.js", "../src/parts/MenuEntriesSimpleBrowser/MenuEntriesSimpleBrowser.js", "../src/parts/MenuEntries/MenuEntries.js", "../src/parts/ElectronMenu/ElectronMenu.js", "../src/parts/ContextMenu/ContextMenuElectron.js", "../src/parts/ContextMenu/ContextMenuBrowser.js", "../src/parts/ContextMenu/ContextMenu.js", "../src/parts/ContextMenu/ContextMenu.ipc.js", "../src/parts/ElectronDeveloper/ElectronDeveloper.js", "../static/js/pretty-bytes.js", "../src/parts/PrettyBytes/PrettyBytes.js", "../src/parts/ElectronWindowProcessExplorer/ElectronWindowProcessExplorer.js", "../src/parts/ProcessExplorer/ProcessExplorerElectron.js", "../src/parts/ProcessExplorer/ProcessExplorerRemote.js", "../src/parts/ProcessExplorer/ProcessExplorerWeb.js", "../src/parts/ProcessExplorer/ProcessExplorer.js", "../src/parts/Developer/Developer.js", "../src/parts/Developer/Developer.ipc.js", "../src/parts/ElectronDialog/ElectronDialog.js", "../src/parts/ElectronWindowAbout/ElectronWindowAbout.js", "../src/parts/Dialog/Dialog.js", "../src/parts/Dialog/Dialog.ipc.js", "../src/parts/Url/Url.js", "../src/parts/Download/Download.js", "../src/parts/Download/Download.ipc.js", "../src/parts/EditorDiagnostics/EditorDiagnostics.js", "../src/parts/EditorDiagnostics/EditorDiagnostics.ipc.js", "../src/parts/EditorError/EditorError.js", "../src/parts/EditorError/EditorError.ipc.js", "../src/parts/ExtensionHost/ExtensionHostRename.js", "../src/parts/EditorRename/EditorRename.js", "../src/parts/EditorRename/EditorRename.ipc.js", "../src/parts/ElectronApp/ElectronApp.ipc.js", "../src/parts/ElectronBrowserView/ElectronBrowserView.ipc.js", "../src/parts/ElectronClipBoard/ElectronClipBoard.js", "../src/parts/ElectronClipBoard/ElectronClipBoard.ipc.js", "../src/parts/ElectronMenu/ElectronMenu.ipc.js", "../src/parts/ElectronWindow/ElectronWindow.ipc.js", "../src/parts/ErrorHandling/ErrorHandling.ipc.js", "../src/parts/Eval/Eval.js", "../src/parts/Eval/Eval.ipc.js", "../src/parts/ExtensionHost/ExtensionHostCore.ipc.js", "../src/parts/ExtensionMeta/ExtensionMeta.ipc.js", "../src/parts/Extensions/Extensions.js", "../src/parts/Extensions/Extensions.ipc.js", "../src/parts/FilePicker/FilePicker.js", "../src/parts/FilePicker/FilePicker.ipc.js", "../src/parts/FileSystem/FileSystem.ipc.js", "../src/parts/Format/Format.ipc.js", "../src/parts/IconTheme/IconTheme.ipc.js", "../src/parts/ImagePreview/ImagePreview.js", "../src/parts/ImagePreview/ImagePreview.ipc.js", "../src/parts/IndexedDb/IndexedDb.ipc.js", "../src/parts/KeyBindings/KeyBindings.ipc.js", "../src/parts/KeyBindingsInitial/KeyBindingsInitial.ipc.js", "../src/parts/Listener/Listener.ipc.js", "../src/parts/LocalStorage/LocalStorage.ipc.js", "../src/parts/Menu/Menu.ipc.js", "../src/parts/MimeTypes/MimeTypes.js", "../src/parts/Mime/Mime.js", "../src/parts/Mime/Mime.ipc.js", "../src/parts/Navigation/Navigation.js", "../src/parts/Navigation/Navigation.ipc.js", "../src/parts/Notification/Notification.js", "../src/parts/Notification/Notification.ipc.js", "../src/parts/Open/Open.js", "../src/parts/Open/Open.ipc.js", "../src/parts/OpenNativeFolder/OpenNativeFolder.ipc.js", "../src/parts/PersistentFileHandle/PersistentFileHandle.ipc.js", "../src/parts/Preferences/Preferences.ipc.js", "../src/parts/RecentlyOpened/RecentlyOpened.js", "../src/parts/RecentlyOpened/RecentlyOpened.ipc.js", "../src/parts/SaveState/SaveState.ipc.js", "../src/parts/ServiceWorker/ServiceWorker.js", "../src/parts/ServiceWorker/ServiceWorker.ipc.js", "../src/parts/SessionReplay/SessionReplay.ipc.js", "../src/parts/SessionStorage/SessionStorage.ipc.js", "../src/parts/ImportScript/ImportScript.js", "../src/parts/TestState/TestState.js", "../src/parts/TestFrameWork/Locator.js", "../src/parts/TestFrameWork/TestFrameWork.js", "../src/parts/TestFrameWorkComponent/TestFrameworkComponentActivityBar.js", "../src/parts/TestFrameWorkComponent/TestFrameWorkComponentCommand.js", "../src/parts/TestFrameWorkComponent/TestFrameWorkComponentContextMenu.js", "../src/parts/TestFrameWorkComponent/TestFrameWorkComponentEditor.js", "../src/parts/TestFrameWorkComponent/TestFrameWorkComponentFindWidget.js", "../src/parts/TestFrameWorkComponent/TestFrameWorkComponentEval.js", "../src/parts/TestFrameWorkComponent/TestFrameWorkComponentExplorer.js", "../src/parts/TestFrameWorkComponent/TestFrameWorkComponentExtension.js", "../src/parts/TestFrameWorkComponent/TestFrameWorkComponentFileSystem.js", "../src/parts/TestFrameWorkComponent/TestFrameWorkComponentKeyBoard.js", "../src/parts/TestFrameWorkComponent/TestFrameWorkComponentMain.js", "../src/parts/TestFrameWorkComponent/TestFrameWorkComponentPlatform.js", "../src/parts/TestFrameWorkComponent/TestFrameWorkComponentQuickPick.js", "../src/parts/TestFrameWorkComponent/TestFrameWorkComponentSearch.js", "../src/parts/TestFrameWorkComponent/TestFrameWorkComponentSettings.js", "../src/parts/TestFrameWorkComponent/TestFrameWorkComponentSideBar.js", "../src/parts/TestFrameWorkComponent/TestFrameWorkComponentTitleBarMenuBar.js", "../src/parts/TestFrameWorkComponent/TestFrameWorkComponentWorkspace.js", "../src/parts/TestFrameWorkComponent/TestFrameWorkComponentIconTheme.js", "../src/parts/TestFrameWorkComponent/TestFrameWorkComponentBaseUrl.js", "../src/parts/TestFrameWorkComponent/TestFrameWorkComponent.js", "../src/parts/Test/Test.js", "../src/parts/Test/Test.ipc.js", "../src/parts/Url/Url.ipc.js", "../src/parts/Viewlet/Viewlet.ipc.js", "../src/parts/Window/Window.ipc.js", "../src/parts/Workbench/Workbench.ipc.js", "../src/parts/Workspace/Workspace.ipc.js", "../src/parts/Module/Module.js", "../src/parts/ModuleMap/ModuleMap.js", "../src/parts/Command/Command.js", "../src/parts/Meta/Meta.js", "../src/parts/ColorTheme/ColorTheme.js", "../src/parts/InitData/InitData.js", "../src/parts/Performance/Performance.js", "../src/parts/Workbench/Workbench.js", "../src/rendererWorkerMain.js"],
4
+ "sourcesContent": ["// TODO rename to widgetFind and group together with other widgets (contextMenu, hover, tooltip)\nexport const Ajax = 1\nexport const Audio = 2\nexport const Base64 = 3\nexport const Blob = 4\nexport const CacheStorage = 5\nexport const Callback = 6\nexport const ClipBoard = 7\nexport const ColorPicker = 8\nexport const ColorTheme = 9\nexport const ColorThemeFromJson = 10\nexport const ContextMenu = 11\nexport const Developer = 12\nexport const Dialog = 13\nexport const Download = 14\nexport const EditorDiagnostics = 15\nexport const EditorError = 16\nexport const EditorRename = 17\nexport const ErrorHandling = 18\nexport const ExtensionHostCode = 19\nexport const ExtensionMeta = 20\nexport const Extensions = 21\nexport const FileSystem = 22\nexport const Format = 23\nexport const IconTheme = 24\nexport const ImagePreview = 25\nexport const KeyBindings = 26\nexport const KeyBindingsInitial = 27\nexport const Layout = 28\nexport const Listener = 29\nexport const LocalStorage = 30\nexport const Menu = 31\nexport const Navigatiom = 32\nexport const Notification = 33\nexport const Open = 34\nexport const Preferences = 35\nexport const QuickPick = 36\nexport const RecentlyOpened = 37\nexport const SaveState = 38\nexport const ServiceWorker = 39\nexport const SessionReplay = 40\nexport const SessionStorage = 41\nexport const Test = 42\nexport const TestFramework = 43\nexport const TestFrameworkComponent = 44\nexport const Viewlet = 45\nexport const Window = 46\nexport const Workbench = 47\nexport const Workspace = 48\nexport const ContentTracing = 49\nexport const OpenNativeFolder = 50\nexport const ElectronWindow = 51\nexport const Url = 52\nexport const Mime = 53\nexport const Eval = 54\nexport const FilePicker = 55\nexport const PersistentFileHandle = 56\nexport const IndexedDb = 57\nexport const Chrome = 58\nexport const ElectronBrowserView = 59\nexport const ChromeExtension = 60\nexport const ElectronApp = 61\nexport const ElectronMenu = 62\nexport const ElectronClipBoard = 63\n", "class HTTPError extends Error {\n constructor(response, request, options) {\n const code = response.status || response.status === 0 ? response.status : \"\";\n const title = response.statusText || \"\";\n const status = `${code} ${title}`.trim();\n const reason = status ? `status code ${status}` : \"an unknown error\";\n super(`Request failed with ${reason}`);\n Object.defineProperty(this, \"response\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"request\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"options\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.name = \"HTTPError\";\n this.response = response;\n this.request = request;\n this.options = options;\n }\n}\nclass TimeoutError extends Error {\n constructor(request) {\n super(\"Request timed out\");\n Object.defineProperty(this, \"request\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.name = \"TimeoutError\";\n this.request = request;\n }\n}\nconst isObject = (value) => value !== null && typeof value === \"object\";\nconst validateAndMerge = (...sources) => {\n for (const source of sources) {\n if ((!isObject(source) || Array.isArray(source)) && typeof source !== \"undefined\") {\n throw new TypeError(\"The `options` argument must be an object\");\n }\n }\n return deepMerge({}, ...sources);\n};\nconst mergeHeaders = (source1 = {}, source2 = {}) => {\n const result = new globalThis.Headers(source1);\n const isHeadersInstance = source2 instanceof globalThis.Headers;\n const source = new globalThis.Headers(source2);\n for (const [key, value] of source.entries()) {\n if (isHeadersInstance && value === \"undefined\" || value === void 0) {\n result.delete(key);\n } else {\n result.set(key, value);\n }\n }\n return result;\n};\nconst deepMerge = (...sources) => {\n let returnValue = {};\n let headers = {};\n for (const source of sources) {\n if (Array.isArray(source)) {\n if (!Array.isArray(returnValue)) {\n returnValue = [];\n }\n returnValue = [...returnValue, ...source];\n } else if (isObject(source)) {\n for (let [key, value] of Object.entries(source)) {\n if (isObject(value) && key in returnValue) {\n value = deepMerge(returnValue[key], value);\n }\n returnValue = {...returnValue, [key]: value};\n }\n if (isObject(source.headers)) {\n headers = mergeHeaders(headers, source.headers);\n returnValue.headers = headers;\n }\n }\n }\n return returnValue;\n};\nconst supportsStreams = (() => {\n let duplexAccessed = false;\n let hasContentType = false;\n const supportsReadableStream = typeof globalThis.ReadableStream === \"function\";\n if (supportsReadableStream) {\n hasContentType = new globalThis.Request(\"https://a.com\", {\n body: new globalThis.ReadableStream(),\n method: \"POST\",\n get duplex() {\n duplexAccessed = true;\n return \"half\";\n }\n }).headers.has(\"Content-Type\");\n }\n return duplexAccessed && !hasContentType;\n})();\nconst supportsAbortController = typeof globalThis.AbortController === \"function\";\nconst supportsFormData = typeof globalThis.FormData === \"function\";\nconst requestMethods = [\"get\", \"post\", \"put\", \"patch\", \"head\", \"delete\"];\nconst responseTypes = {\n json: \"application/json\",\n text: \"text/*\",\n formData: \"multipart/form-data\",\n arrayBuffer: \"*/*\",\n blob: \"*/*\"\n};\nconst maxSafeTimeout = 2147483647;\nconst stop = Symbol(\"stop\");\nconst normalizeRequestMethod = (input) => requestMethods.includes(input) ? input.toUpperCase() : input;\nconst retryMethods = [\"get\", \"put\", \"head\", \"delete\", \"options\", \"trace\"];\nconst retryStatusCodes = [408, 413, 429, 500, 502, 503, 504];\nconst retryAfterStatusCodes = [413, 429, 503];\nconst defaultRetryOptions = {\n limit: 2,\n methods: retryMethods,\n statusCodes: retryStatusCodes,\n afterStatusCodes: retryAfterStatusCodes,\n maxRetryAfter: Number.POSITIVE_INFINITY\n};\nconst normalizeRetryOptions = (retry = {}) => {\n if (typeof retry === \"number\") {\n return {\n ...defaultRetryOptions,\n limit: retry\n };\n }\n if (retry.methods && !Array.isArray(retry.methods)) {\n throw new Error(\"retry.methods must be an array\");\n }\n if (retry.statusCodes && !Array.isArray(retry.statusCodes)) {\n throw new Error(\"retry.statusCodes must be an array\");\n }\n return {\n ...defaultRetryOptions,\n ...retry,\n afterStatusCodes: retryAfterStatusCodes\n };\n};\nconst timeout = async (request, abortController, options) => new Promise((resolve, reject) => {\n const timeoutId = setTimeout(() => {\n if (abortController) {\n abortController.abort();\n }\n reject(new TimeoutError(request));\n }, options.timeout);\n void options.fetch(request).then(resolve).catch(reject).then(() => {\n clearTimeout(timeoutId);\n });\n});\nconst delay = async (ms) => new Promise((resolve) => {\n setTimeout(resolve, ms);\n});\nclass Ky {\n constructor(input, options = {}) {\n var _a, _b, _c;\n Object.defineProperty(this, \"request\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"abortController\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_retryCount\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"_input\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_options\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this._input = input;\n this._options = {\n credentials: this._input.credentials || \"same-origin\",\n ...options,\n headers: mergeHeaders(this._input.headers, options.headers),\n hooks: deepMerge({\n beforeRequest: [],\n beforeRetry: [],\n beforeError: [],\n afterResponse: []\n }, options.hooks),\n method: normalizeRequestMethod((_a = options.method) != null ? _a : this._input.method),\n prefixUrl: String(options.prefixUrl || \"\"),\n retry: normalizeRetryOptions(options.retry),\n throwHttpErrors: options.throwHttpErrors !== false,\n timeout: typeof options.timeout === \"undefined\" ? 1e4 : options.timeout,\n fetch: (_b = options.fetch) != null ? _b : globalThis.fetch.bind(globalThis)\n };\n if (typeof this._input !== \"string\" && !(this._input instanceof URL || this._input instanceof globalThis.Request)) {\n throw new TypeError(\"`input` must be a string, URL, or Request\");\n }\n if (this._options.prefixUrl && typeof this._input === \"string\") {\n if (this._input.startsWith(\"/\")) {\n throw new Error(\"`input` must not begin with a slash when using `prefixUrl`\");\n }\n if (!this._options.prefixUrl.endsWith(\"/\")) {\n this._options.prefixUrl += \"/\";\n }\n this._input = this._options.prefixUrl + this._input;\n }\n if (supportsAbortController) {\n this.abortController = new globalThis.AbortController();\n if (this._options.signal) {\n this._options.signal.addEventListener(\"abort\", () => {\n this.abortController.abort();\n });\n }\n this._options.signal = this.abortController.signal;\n }\n this.request = new globalThis.Request(this._input, this._options);\n if (supportsStreams) {\n this.request.duplex = \"half\";\n }\n if (this._options.searchParams) {\n const textSearchParams = typeof this._options.searchParams === \"string\" ? this._options.searchParams.replace(/^\\?/, \"\") : new URLSearchParams(this._options.searchParams).toString();\n const searchParams = \"?\" + textSearchParams;\n const url = this.request.url.replace(/(?:\\?.*?)?(?=#|$)/, searchParams);\n if ((supportsFormData && this._options.body instanceof globalThis.FormData || this._options.body instanceof URLSearchParams) && !(this._options.headers && this._options.headers[\"content-type\"])) {\n this.request.headers.delete(\"content-type\");\n }\n this.request = new globalThis.Request(new globalThis.Request(url, this.request), this._options);\n }\n if (this._options.json !== void 0) {\n this._options.body = JSON.stringify(this._options.json);\n this.request.headers.set(\"content-type\", (_c = this._options.headers.get(\"content-type\")) != null ? _c : \"application/json\");\n this.request = new globalThis.Request(this.request, {body: this._options.body});\n }\n }\n static create(input, options) {\n const ky2 = new Ky(input, options);\n const fn = async () => {\n if (ky2._options.timeout > maxSafeTimeout) {\n throw new RangeError(`The \\`timeout\\` option cannot be greater than ${maxSafeTimeout}`);\n }\n await Promise.resolve();\n let response = await ky2._fetch();\n for (const hook of ky2._options.hooks.afterResponse) {\n const modifiedResponse = await hook(ky2.request, ky2._options, ky2._decorateResponse(response.clone()));\n if (modifiedResponse instanceof globalThis.Response) {\n response = modifiedResponse;\n }\n }\n ky2._decorateResponse(response);\n if (!response.ok && ky2._options.throwHttpErrors) {\n let error = new HTTPError(response, ky2.request, ky2._options);\n for (const hook of ky2._options.hooks.beforeError) {\n error = await hook(error);\n }\n throw error;\n }\n if (ky2._options.onDownloadProgress) {\n if (typeof ky2._options.onDownloadProgress !== \"function\") {\n throw new TypeError(\"The `onDownloadProgress` option must be a function\");\n }\n if (!supportsStreams) {\n throw new Error(\"Streams are not supported in your environment. `ReadableStream` is missing.\");\n }\n return ky2._stream(response.clone(), ky2._options.onDownloadProgress);\n }\n return response;\n };\n const isRetriableMethod = ky2._options.retry.methods.includes(ky2.request.method.toLowerCase());\n const result = isRetriableMethod ? ky2._retry(fn) : fn();\n for (const [type, mimeType] of Object.entries(responseTypes)) {\n result[type] = async () => {\n ky2.request.headers.set(\"accept\", ky2.request.headers.get(\"accept\") || mimeType);\n const awaitedResult = await result;\n const response = awaitedResult.clone();\n if (type === \"json\") {\n if (response.status === 204) {\n return \"\";\n }\n if (options.parseJson) {\n return options.parseJson(await response.text());\n }\n }\n return response[type]();\n };\n }\n return result;\n }\n _calculateRetryDelay(error) {\n this._retryCount++;\n if (this._retryCount < this._options.retry.limit && !(error instanceof TimeoutError)) {\n if (error instanceof HTTPError) {\n if (!this._options.retry.statusCodes.includes(error.response.status)) {\n return 0;\n }\n const retryAfter = error.response.headers.get(\"Retry-After\");\n if (retryAfter && this._options.retry.afterStatusCodes.includes(error.response.status)) {\n let after = Number(retryAfter);\n if (Number.isNaN(after)) {\n after = Date.parse(retryAfter) - Date.now();\n } else {\n after *= 1e3;\n }\n if (typeof this._options.retry.maxRetryAfter !== \"undefined\" && after > this._options.retry.maxRetryAfter) {\n return 0;\n }\n return after;\n }\n if (error.response.status === 413) {\n return 0;\n }\n }\n const BACKOFF_FACTOR = 0.3;\n return BACKOFF_FACTOR * 2 ** (this._retryCount - 1) * 1e3;\n }\n return 0;\n }\n _decorateResponse(response) {\n if (this._options.parseJson) {\n response.json = async () => this._options.parseJson(await response.text());\n }\n return response;\n }\n async _retry(fn) {\n try {\n return await fn();\n } catch (error) {\n const ms = Math.min(this._calculateRetryDelay(error), maxSafeTimeout);\n if (ms !== 0 && this._retryCount > 0) {\n await delay(ms);\n for (const hook of this._options.hooks.beforeRetry) {\n const hookResult = await hook({\n request: this.request,\n options: this._options,\n error,\n retryCount: this._retryCount\n });\n if (hookResult === stop) {\n return;\n }\n }\n return this._retry(fn);\n }\n throw error;\n }\n }\n async _fetch() {\n for (const hook of this._options.hooks.beforeRequest) {\n const result = await hook(this.request, this._options);\n if (result instanceof Request) {\n this.request = result;\n break;\n }\n if (result instanceof Response) {\n return result;\n }\n }\n if (this._options.timeout === false) {\n return this._options.fetch(this.request.clone());\n }\n return timeout(this.request.clone(), this.abortController, this._options);\n }\n _stream(response, onDownloadProgress) {\n const totalBytes = Number(response.headers.get(\"content-length\")) || 0;\n let transferredBytes = 0;\n if (response.status === 204) {\n if (onDownloadProgress) {\n onDownloadProgress({percent: 1, totalBytes, transferredBytes}, new Uint8Array());\n }\n return new globalThis.Response(null, {\n status: response.status,\n statusText: response.statusText,\n headers: response.headers\n });\n }\n return new globalThis.Response(new globalThis.ReadableStream({\n async start(controller) {\n const reader = response.body.getReader();\n if (onDownloadProgress) {\n onDownloadProgress({percent: 0, transferredBytes: 0, totalBytes}, new Uint8Array());\n }\n async function read() {\n const {done, value} = await reader.read();\n if (done) {\n controller.close();\n return;\n }\n if (onDownloadProgress) {\n transferredBytes += value.byteLength;\n const percent = totalBytes === 0 ? 0 : transferredBytes / totalBytes;\n onDownloadProgress({percent, transferredBytes, totalBytes}, value);\n }\n controller.enqueue(value);\n await read();\n }\n await read();\n }\n }), {\n status: response.status,\n statusText: response.statusText,\n headers: response.headers\n });\n }\n}\n/*! MIT License \u00A9 Sindre Sorhus */\nconst createInstance = (defaults) => {\n const ky2 = (input, options) => Ky.create(input, validateAndMerge(defaults, options));\n for (const method of requestMethods) {\n ky2[method] = (input, options) => Ky.create(input, validateAndMerge(defaults, options, {method}));\n }\n ky2.create = (newDefaults) => createInstance(validateAndMerge(newDefaults));\n ky2.extend = (newDefaults) => createInstance(validateAndMerge(defaults, newDefaults));\n ky2.stop = stop;\n return ky2;\n};\nconst ky = createInstance();\nexport default ky;\nexport {HTTPError, TimeoutError};\n", "const getCombinedMessage = (error, message) => {\n if (message) {\n return `${message}: ${error}`\n }\n return `${error}`\n}\n\nconst mergeStacks = (parent, child) => {\n if (!child) {\n return parent\n }\n const parentNewLineIndex = parent.indexOf('\\n')\n const childNewLineIndex = child.indexOf('\\n')\n const parentFirstLine = parent.slice(0, parentNewLineIndex)\n const childRest = child.slice(childNewLineIndex)\n return parentFirstLine + childRest\n}\n\nexport class VError extends Error {\n constructor(error, message) {\n const combinedMessage = getCombinedMessage(error, message)\n super(combinedMessage)\n this.name = 'VError'\n if (error instanceof Error) {\n this.stack = mergeStacks(this.stack, error.stack)\n }\n }\n}\n", "// TODO treeshake out this whole module in production\n\nconst getType = (value) => {\n switch (typeof value) {\n case 'number':\n return 'number'\n case 'function':\n return 'function'\n case 'string':\n return 'string'\n case 'object':\n if (value === null) {\n return 'null'\n }\n if (Array.isArray(value)) {\n return 'array'\n }\n if (value instanceof Uint32Array) {\n return 'uint32array'\n }\n return 'object'\n case 'boolean':\n return 'boolean'\n default:\n return 'unknown'\n }\n}\n\nexport const object = (value) => {\n const type = getType(value)\n if (type !== 'object') {\n throw new Error('expected value to be of type object')\n }\n}\n\nexport const number = (value) => {\n const type = getType(value)\n if (type !== 'number') {\n throw new Error('expected value to be of type number')\n }\n if (isNaN(value)) {\n throw new Error('value is NaN')\n }\n}\n\nexport const array = (value) => {\n const type = getType(value)\n if (type !== 'array') {\n throw new Error('expected value to be of type array')\n }\n}\n\nexport const string = (value) => {\n const type = getType(value)\n if (type !== 'string') {\n throw new Error('expected value to be of type string')\n }\n}\n\nexport const null_ = (value) => {\n const type = getType(value)\n if (type !== 'null') {\n throw new Error('expected value to be of type null')\n }\n}\n\nexport const boolean = (value) => {\n const type = getType(value)\n if (type !== 'boolean') {\n throw new Error('expected value to be of type boolean')\n }\n}\n\nexport const fn = (value) => {\n const type = getType(value)\n if (type !== 'function') {\n throw new Error('expected value to be of type function')\n }\n}\n\nexport const uint32array = (value) => {\n const type = getType(value)\n if (type !== 'uint32array') {\n throw new Error('expected value to be of type uint32array')\n }\n}\n", "import ky, { HTTPError } from '../../../static/js/ky.js'\nimport { VError } from '../VError/VError.js'\nimport * as Assert from '../Assert/Assert.js'\n\nexport const getJson = async (url, options = {}) => {\n try {\n Assert.string(url)\n // cannot use ky(url).json() because it sets \"accept: application/json\"\n // which doesn't work with preload, see\n // https://stackoverflow.com/questions/41655955/why-are-preload-link-not-working-for-json-requests#answer-48645748\n const response = await ky(url, options)\n return response.json()\n } catch (error) {\n if (\n error &&\n error instanceof TypeError &&\n error.message === 'Failed to fetch'\n ) {\n throw new VError(\n `Failed to request json from \"${url}\". Make sure that the server is running and has CORS enabled`\n )\n }\n if (error && error instanceof HTTPError) {\n let json\n try {\n json = await error.response.json()\n } catch {\n throw error\n }\n if (json && json.message) {\n throw new VError(\n `Failed to request json from \"${url}\": ${json.message}`\n )\n }\n }\n // @ts-ignore\n error.message = `Failed to request json from \"${url}\": ${error.message}`\n throw error\n }\n}\n\nexport const getJsonLocal = (url) => {\n return getJson(url, {\n mode: 'no-cors',\n })\n}\n\nexport const getText = async (url, options = {}) => {\n try {\n return await ky(url, options).text()\n } catch (error) {\n if (\n error &&\n error instanceof TypeError &&\n error.message === 'Failed to fetch'\n ) {\n throw new VError(\n error,\n `Failed to request text from \"${url}\". Make sure that the server is running and has CORS enabled`\n )\n }\n throw new VError(error, `Failed to request text from \"${url}\"`)\n }\n}\n\nexport const getBlob = async (url, options = {}) => {\n try {\n return await ky(url, options).blob()\n } catch (error) {\n throw new VError(error, `Failed to request blob from \"${url}\"`)\n }\n}\n", "import * as Ajax from './Ajax.js'\n\n// TODO only use Ajax module via ipc -> that way is is always lazyloaded\n\nexport const name = 'Ajax'\n\nexport const Commands = {\n getBlob: Ajax.getBlob,\n getJson: Ajax.getJson,\n getText: Ajax.getText,\n}\n", "export const state = {\n id: 0,\n}\n\nexport const create = () => {\n return ++state.id\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as Id from '../Id/Id.js'\n\nexport const state = {\n callbacks: Object.create(null),\n onceListeners: new Set(),\n}\n\nexport const register = (resolve, reject) => {\n const id = Id.create()\n state.callbacks[id] = {\n resolve,\n reject,\n }\n return id\n}\n\nexport const unregister = (id) => {\n delete state.callbacks[id]\n}\n\n// TODO merge resolve and resolveEmpty\nexport const resolve = (id, args) => {\n Assert.number(id)\n if (!(id in state.callbacks)) {\n console.log(args)\n console.warn(`callback ${id} may already be disposed`)\n return\n }\n state.callbacks[id].resolve(args)\n delete state.callbacks[id]\n}\n\nexport const resolveEmpty = (id) => {\n if (!(id in state.callbacks)) {\n console.warn(`callback ${id} may already be disposed`)\n return\n }\n state.callbacks[id].resolve()\n}\n\nexport const reject = (id, error) => {\n Assert.number(id)\n if (!(id in state.callbacks)) {\n console.warn(`callback ${id} may already be disposed`)\n return\n }\n state.callbacks[id].reject(error)\n delete state.callbacks[id]\n}\n\nexport const isAllEmpty = () => {\n return (\n Object.keys(state.callbacks).length === 0 && state.onceListeners.size === 0\n )\n}\n", "export class JsonRpcError extends Error {\n constructor(message) {\n super(message)\n this.name = 'JsonRpcError'\n }\n}\n", "export const MessagePort = 1\nexport const ModuleWorker = 2\nexport const ReferencePort = 3\n\nexport const Auto = () => {\n if (globalThis.acceptPort) {\n return MessagePort\n }\n if (globalThis.acceptReferencePort) {\n return ReferencePort\n }\n return ModuleWorker\n}\n", "export const listen = () => {\n const messageChannel = new MessageChannel()\n const { port1, port2 } = messageChannel\n globalThis.acceptPort(port2)\n return {\n send(message) {\n port1.postMessage(message)\n },\n sendAndTransfer(message, transferables) {\n port1.postMessage(message, transferables)\n },\n get onmessage() {\n return port1.onmessage\n },\n set onmessage(listener) {\n port1.onmessage = listener\n },\n }\n}\n", "export const listen = () => {\n const postMessageFn = globalThis.postMessage\n postMessageFn('ready')\n return {\n send(message) {\n postMessageFn(message)\n },\n sendAndTransfer(message, transferables) {\n postMessageFn(message, transferables)\n },\n get onmessage() {\n return onmessage\n },\n set onmessage(listener) {\n onmessage = listener\n },\n }\n}\n", "export const listen = () => {\n const referencePort = {\n onmessage(message, transferables) {},\n postMessage() {},\n }\n // TODO get rid of extra data wrapper\n globalThis.acceptReferencePort(referencePort)\n return {\n send(message) {\n referencePort.onmessage({ data: message })\n },\n sendAndTransfer({ data: message }, transferables) {\n referencePort.onmessage(message, transferables)\n },\n get onmessage() {\n // TODO\n return null\n },\n set onmessage(listener) {\n // TODO\n },\n }\n}\n", "import * as IpcChildType from '../IpcChildType/IpcChildType.js'\n\nconst getModule = (method) => {\n switch (method) {\n case IpcChildType.MessagePort:\n return import('./IpcChildWithMessagePort.js')\n case IpcChildType.ModuleWorker:\n return import('./IpcChildWithModuleWorker.js')\n case IpcChildType.ReferencePort:\n return import('./IpcChildWithReferencePort.js')\n default:\n throw new Error('unexpected ipc type')\n }\n}\n\nexport const listen = async ({ method }) => {\n const module = await getModule(method)\n return module.listen()\n}\n", "export const Two = '2.0'\n", "/* istanbul ignore file */\nimport * as Callback from '../Callback/Callback.js'\nimport * as Command from '../Command/Command.js'\nimport { JsonRpcError } from '../Errors/Errors.js'\nimport * as IpcChild from '../IpcChild/IpcChild.js'\nimport * as IpcChildType from '../IpcChildType/IpcChildType.js'\nimport * as JsonRpcVersion from '../JsonRpcVersion/JsonRpcVersion.js'\n\nexport const state = {\n pendingMessages: [],\n /**\n * @type {any}\n */\n ipc: undefined,\n}\n\nconst handleMessageFromRendererProcess = async (event) => {\n const message = event.data\n if (typeof message === 'string') {\n console.warn(`unexpected message from renderer process: ${message}`)\n return\n }\n if (message.id) {\n if ('method' in message) {\n try {\n const result = await Command.execute(message.method, ...message.params)\n state.ipc.send({\n jsonrpc: JsonRpcVersion.Two,\n id: message.id,\n result,\n })\n return\n } catch (error) {\n state.ipc.send({\n jsonrpc: JsonRpcVersion.Two,\n id: message.id,\n error,\n })\n return\n }\n }\n Callback.resolve(message.id, message)\n return\n }\n await Command.execute(message.method, ...message.params)\n}\n\nconst getIpc = () => {\n return IpcChild.listen({ method: IpcChildType.Auto() })\n}\n\nexport const listen = async () => {\n console.assert(state.pendingMessages.length === 0)\n const ipc = await getIpc()\n ipc.onmessage = handleMessageFromRendererProcess\n state.ipc = ipc\n}\n\n/**\n * @deprecated use invoke instead\n * @param {*} message\n */\nexport const send = (message) => {\n state.ipc.send(message)\n}\n\nconst deserializeError = (serializedError) => {\n const error = new Error()\n if (serializedError && serializedError.message) {\n error.message = serializedError.message\n }\n if (serializedError && serializedError.stack) {\n error.stack = serializedError.stack\n }\n return error\n}\n\nconst combineStacks = (upperStack, lowerStack) => {\n const indexNewLine = lowerStack.indexOf('\\n')\n return upperStack + lowerStack.slice(indexNewLine)\n}\n\nclass RendererProcessError extends Error {\n constructor(serializedError) {\n const deserializedError = deserializeError(serializedError)\n super(deserializedError.message)\n if (this.stack) {\n this.stack = combineStacks(deserializedError.stack, this.stack)\n }\n }\n}\n\nexport const invoke = async (method, ...parameters) => {\n const responseMessage = await new Promise((resolve, reject) => {\n const callbackId = Callback.register(resolve, reject)\n if (!state.ipc) {\n reject(new Error('ipc not active'))\n return\n }\n state.ipc.send({\n jsonrpc: JsonRpcVersion.Two,\n method,\n params: parameters,\n id: callbackId,\n })\n })\n if ('error' in responseMessage) {\n throw new RendererProcessError(responseMessage.error)\n }\n if ('result' in responseMessage) {\n return responseMessage.result\n }\n new JsonRpcError('unexpected message from renderer process')\n}\n\nexport const sendAndTransfer = (message, transferables) => {\n state.ipc.sendAndTransfer(message, transferables)\n}\n", "import * as RendererProcess from '../RendererProcess/RendererProcess.js'\n\nexport const playBell = async () => {\n const src = '/sounds/bell.oga'\n await RendererProcess.invoke(/* Audio.play */ 3211, /* src */ src)\n}\n", "import * as Audio from './Audio.js'\n\nexport const name = 'Audio'\n\nexport const Commands = {\n playBell: Audio.playBell,\n}\n", "/**\n * base64.ts\n *\n * Licensed under the BSD 3-Clause License.\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * References:\n * http://en.wikipedia.org/wiki/Base64\n *\n * @author Dan Kogai (https://github.com/dankogai)\n */\nconst version = '3.7.2';\n/**\n * @deprecated use lowercase `version`.\n */\nconst VERSION = version;\nconst _hasatob = typeof atob === 'function';\nconst _hasbtoa = typeof btoa === 'function';\nconst _hasBuffer = typeof Buffer === 'function';\nconst _TD = typeof TextDecoder === 'function' ? new TextDecoder() : undefined;\nconst _TE = typeof TextEncoder === 'function' ? new TextEncoder() : undefined;\nconst b64ch = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\nconst b64chs = Array.prototype.slice.call(b64ch);\nconst b64tab = ((a) => {\n let tab = {};\n a.forEach((c, i) => tab[c] = i);\n return tab;\n})(b64chs);\nconst b64re = /^(?:[A-Za-z\\d+\\/]{4})*?(?:[A-Za-z\\d+\\/]{2}(?:==)?|[A-Za-z\\d+\\/]{3}=?)?$/;\nconst _fromCC = String.fromCharCode.bind(String);\nconst _U8Afrom = typeof Uint8Array.from === 'function'\n ? Uint8Array.from.bind(Uint8Array)\n : (it, fn = (x) => x) => new Uint8Array(Array.prototype.slice.call(it, 0).map(fn));\nconst _mkUriSafe = (src) => src\n .replace(/=/g, '').replace(/[+\\/]/g, (m0) => m0 == '+' ? '-' : '_');\nconst _tidyB64 = (s) => s.replace(/[^A-Za-z0-9\\+\\/]/g, '');\n/**\n * polyfill version of `btoa`\n */\nconst btoaPolyfill = (bin) => {\n // console.log('polyfilled');\n let u32, c0, c1, c2, asc = '';\n const pad = bin.length % 3;\n for (let i = 0; i < bin.length;) {\n if ((c0 = bin.charCodeAt(i++)) > 255 ||\n (c1 = bin.charCodeAt(i++)) > 255 ||\n (c2 = bin.charCodeAt(i++)) > 255)\n throw new TypeError('invalid character found');\n u32 = (c0 << 16) | (c1 << 8) | c2;\n asc += b64chs[u32 >> 18 & 63]\n + b64chs[u32 >> 12 & 63]\n + b64chs[u32 >> 6 & 63]\n + b64chs[u32 & 63];\n }\n return pad ? asc.slice(0, pad - 3) + \"===\".substring(pad) : asc;\n};\n/**\n * does what `window.btoa` of web browsers do.\n * @param {String} bin binary string\n * @returns {string} Base64-encoded string\n */\nconst _btoa = _hasbtoa ? (bin) => btoa(bin)\n : _hasBuffer ? (bin) => Buffer.from(bin, 'binary').toString('base64')\n : btoaPolyfill;\nconst _fromUint8Array = _hasBuffer\n ? (u8a) => Buffer.from(u8a).toString('base64')\n : (u8a) => {\n // cf. https://stackoverflow.com/questions/12710001/how-to-convert-uint8-array-to-base64-encoded-string/12713326#12713326\n const maxargs = 0x1000;\n let strs = [];\n for (let i = 0, l = u8a.length; i < l; i += maxargs) {\n strs.push(_fromCC.apply(null, u8a.subarray(i, i + maxargs)));\n }\n return _btoa(strs.join(''));\n };\n/**\n * converts a Uint8Array to a Base64 string.\n * @param {boolean} [urlsafe] URL-and-filename-safe a la RFC4648 \u00A75\n * @returns {string} Base64 string\n */\nconst fromUint8Array = (u8a, urlsafe = false) => urlsafe ? _mkUriSafe(_fromUint8Array(u8a)) : _fromUint8Array(u8a);\n// This trick is found broken https://github.com/dankogai/js-base64/issues/130\n// const utob = (src: string) => unescape(encodeURIComponent(src));\n// reverting good old fationed regexp\nconst cb_utob = (c) => {\n if (c.length < 2) {\n var cc = c.charCodeAt(0);\n return cc < 0x80 ? c\n : cc < 0x800 ? (_fromCC(0xc0 | (cc >>> 6))\n + _fromCC(0x80 | (cc & 0x3f)))\n : (_fromCC(0xe0 | ((cc >>> 12) & 0x0f))\n + _fromCC(0x80 | ((cc >>> 6) & 0x3f))\n + _fromCC(0x80 | (cc & 0x3f)));\n }\n else {\n var cc = 0x10000\n + (c.charCodeAt(0) - 0xD800) * 0x400\n + (c.charCodeAt(1) - 0xDC00);\n return (_fromCC(0xf0 | ((cc >>> 18) & 0x07))\n + _fromCC(0x80 | ((cc >>> 12) & 0x3f))\n + _fromCC(0x80 | ((cc >>> 6) & 0x3f))\n + _fromCC(0x80 | (cc & 0x3f)));\n }\n};\nconst re_utob = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFFF]|[^\\x00-\\x7F]/g;\n/**\n * @deprecated should have been internal use only.\n * @param {string} src UTF-8 string\n * @returns {string} UTF-16 string\n */\nconst utob = (u) => u.replace(re_utob, cb_utob);\n//\nconst _encode = _hasBuffer\n ? (s) => Buffer.from(s, 'utf8').toString('base64')\n : _TE\n ? (s) => _fromUint8Array(_TE.encode(s))\n : (s) => _btoa(utob(s));\n/**\n * converts a UTF-8-encoded string to a Base64 string.\n * @param {boolean} [urlsafe] if `true` make the result URL-safe\n * @returns {string} Base64 string\n */\nconst encode = (src, urlsafe = false) => urlsafe\n ? _mkUriSafe(_encode(src))\n : _encode(src);\n/**\n * converts a UTF-8-encoded string to URL-safe Base64 RFC4648 \u00A75.\n * @returns {string} Base64 string\n */\nconst encodeURI = (src) => encode(src, true);\n// This trick is found broken https://github.com/dankogai/js-base64/issues/130\n// const btou = (src: string) => decodeURIComponent(escape(src));\n// reverting good old fationed regexp\nconst re_btou = /[\\xC0-\\xDF][\\x80-\\xBF]|[\\xE0-\\xEF][\\x80-\\xBF]{2}|[\\xF0-\\xF7][\\x80-\\xBF]{3}/g;\nconst cb_btou = (cccc) => {\n switch (cccc.length) {\n case 4:\n var cp = ((0x07 & cccc.charCodeAt(0)) << 18)\n | ((0x3f & cccc.charCodeAt(1)) << 12)\n | ((0x3f & cccc.charCodeAt(2)) << 6)\n | (0x3f & cccc.charCodeAt(3)), offset = cp - 0x10000;\n return (_fromCC((offset >>> 10) + 0xD800)\n + _fromCC((offset & 0x3FF) + 0xDC00));\n case 3:\n return _fromCC(((0x0f & cccc.charCodeAt(0)) << 12)\n | ((0x3f & cccc.charCodeAt(1)) << 6)\n | (0x3f & cccc.charCodeAt(2)));\n default:\n return _fromCC(((0x1f & cccc.charCodeAt(0)) << 6)\n | (0x3f & cccc.charCodeAt(1)));\n }\n};\n/**\n * @deprecated should have been internal use only.\n * @param {string} src UTF-16 string\n * @returns {string} UTF-8 string\n */\nconst btou = (b) => b.replace(re_btou, cb_btou);\n/**\n * polyfill version of `atob`\n */\nconst atobPolyfill = (asc) => {\n // console.log('polyfilled');\n asc = asc.replace(/\\s+/g, '');\n if (!b64re.test(asc))\n throw new TypeError('malformed base64.');\n asc += '=='.slice(2 - (asc.length & 3));\n let u24, bin = '', r1, r2;\n for (let i = 0; i < asc.length;) {\n u24 = b64tab[asc.charAt(i++)] << 18\n | b64tab[asc.charAt(i++)] << 12\n | (r1 = b64tab[asc.charAt(i++)]) << 6\n | (r2 = b64tab[asc.charAt(i++)]);\n bin += r1 === 64 ? _fromCC(u24 >> 16 & 255)\n : r2 === 64 ? _fromCC(u24 >> 16 & 255, u24 >> 8 & 255)\n : _fromCC(u24 >> 16 & 255, u24 >> 8 & 255, u24 & 255);\n }\n return bin;\n};\n/**\n * does what `window.atob` of web browsers do.\n * @param {String} asc Base64-encoded string\n * @returns {string} binary string\n */\nconst _atob = _hasatob ? (asc) => atob(_tidyB64(asc))\n : _hasBuffer ? (asc) => Buffer.from(asc, 'base64').toString('binary')\n : atobPolyfill;\n//\nconst _toUint8Array = _hasBuffer\n ? (a) => _U8Afrom(Buffer.from(a, 'base64'))\n : (a) => _U8Afrom(_atob(a), c => c.charCodeAt(0));\n/**\n * converts a Base64 string to a Uint8Array.\n */\nconst toUint8Array = (a) => _toUint8Array(_unURI(a));\n//\nconst _decode = _hasBuffer\n ? (a) => Buffer.from(a, 'base64').toString('utf8')\n : _TD\n ? (a) => _TD.decode(_toUint8Array(a))\n : (a) => btou(_atob(a));\nconst _unURI = (a) => _tidyB64(a.replace(/[-_]/g, (m0) => m0 == '-' ? '+' : '/'));\n/**\n * converts a Base64 string to a UTF-8 string.\n * @param {String} src Base64 string. Both normal and URL-safe are supported\n * @returns {string} UTF-8 string\n */\nconst decode = (src) => _decode(_unURI(src));\n/**\n * check if a value is a valid Base64 string\n * @param {String} src a value to check\n */\nconst isValid = (src) => {\n if (typeof src !== 'string')\n return false;\n const s = src.replace(/\\s+/g, '').replace(/={0,2}$/, '');\n return !/[^\\s0-9a-zA-Z\\+/]/.test(s) || !/[^\\s0-9a-zA-Z\\-_]/.test(s);\n};\n//\nconst _noEnum = (v) => {\n return {\n value: v, enumerable: false, writable: true, configurable: true\n };\n};\n/**\n * extend String.prototype with relevant methods\n */\nconst extendString = function () {\n const _add = (name, body) => Object.defineProperty(String.prototype, name, _noEnum(body));\n _add('fromBase64', function () { return decode(this); });\n _add('toBase64', function (urlsafe) { return encode(this, urlsafe); });\n _add('toBase64URI', function () { return encode(this, true); });\n _add('toBase64URL', function () { return encode(this, true); });\n _add('toUint8Array', function () { return toUint8Array(this); });\n};\n/**\n * extend Uint8Array.prototype with relevant methods\n */\nconst extendUint8Array = function () {\n const _add = (name, body) => Object.defineProperty(Uint8Array.prototype, name, _noEnum(body));\n _add('toBase64', function (urlsafe) { return fromUint8Array(this, urlsafe); });\n _add('toBase64URI', function () { return fromUint8Array(this, true); });\n _add('toBase64URL', function () { return fromUint8Array(this, true); });\n};\n/**\n * extend Builtin prototypes with relevant methods\n */\nconst extendBuiltins = () => {\n extendString();\n extendUint8Array();\n};\nconst gBase64 = {\n version: version,\n VERSION: VERSION,\n atob: _atob,\n atobPolyfill: atobPolyfill,\n btoa: _btoa,\n btoaPolyfill: btoaPolyfill,\n fromBase64: decode,\n toBase64: encode,\n encode: encode,\n encodeURI: encodeURI,\n encodeURL: encodeURI,\n utob: utob,\n btou: btou,\n decode: decode,\n isValid: isValid,\n fromUint8Array: fromUint8Array,\n toUint8Array: toUint8Array,\n extendString: extendString,\n extendUint8Array: extendUint8Array,\n extendBuiltins: extendBuiltins,\n};\n// makecjs:CUT //\nexport { version };\nexport { VERSION };\nexport { _atob as atob };\nexport { atobPolyfill };\nexport { _btoa as btoa };\nexport { btoaPolyfill };\nexport { decode as fromBase64 };\nexport { encode as toBase64 };\nexport { utob };\nexport { encode };\nexport { encodeURI };\nexport { encodeURI as encodeURL };\nexport { btou };\nexport { decode };\nexport { isValid };\nexport { fromUint8Array };\nexport { toUint8Array };\nexport { extendString };\nexport { extendUint8Array };\nexport { extendBuiltins };\n// and finally,\nexport { gBase64 as Base64 };\n", "import * as JsBase64 from '../../../static/js/js-base64.js'\n\nexport const decode = (encoded) => {\n const decoded = JsBase64.decode(encoded)\n return decoded\n}\n\n// TODO figure out if btoa could be a faster alternative to this\nexport const encode = (content) => {\n const encoded = JsBase64.encode(content)\n return encoded\n}\n", "import * as Base64 from './Base64.js'\n\nexport const name = 'Base64'\n\nexport const Commands = {\n decode: Base64.decode,\n encode: Base64.encode,\n}\n", "function loadImage(src, crossOrigin) {\n return new Promise(function(resolve, reject) {\n var img = new Image();\n if (crossOrigin) {\n img.crossOrigin = crossOrigin;\n }\n img.onload = function() {\n resolve(img);\n };\n img.onerror = reject;\n img.src = src;\n });\n}\nfunction imgToCanvas(img) {\n var canvas = document.createElement(\"canvas\");\n canvas.width = img.width;\n canvas.height = img.height;\n var context = canvas.getContext(\"2d\");\n context.drawImage(img, 0, 0, img.width, img.height, 0, 0, img.width, img.height);\n return canvas;\n}\nfunction createBlob(parts, properties) {\n parts = parts || [];\n properties = properties || {};\n if (typeof properties === \"string\") {\n properties = {type: properties};\n }\n try {\n return new Blob(parts, properties);\n } catch (e) {\n if (e.name !== \"TypeError\") {\n throw e;\n }\n var Builder = typeof BlobBuilder !== \"undefined\" ? BlobBuilder : typeof MSBlobBuilder !== \"undefined\" ? MSBlobBuilder : typeof MozBlobBuilder !== \"undefined\" ? MozBlobBuilder : WebKitBlobBuilder;\n var builder = new Builder();\n for (var i = 0; i < parts.length; i += 1) {\n builder.append(parts[i]);\n }\n return builder.getBlob(properties.type);\n }\n}\nfunction createObjectURL(blob) {\n return (typeof URL !== \"undefined\" ? URL : webkitURL).createObjectURL(blob);\n}\nfunction revokeObjectURL(url) {\n return (typeof URL !== \"undefined\" ? URL : webkitURL).revokeObjectURL(url);\n}\nfunction blobToBinaryString(blob) {\n return new Promise(function(resolve, reject) {\n var reader = new FileReader();\n var hasBinaryString = typeof reader.readAsBinaryString === \"function\";\n reader.onloadend = function() {\n var result = reader.result || \"\";\n if (hasBinaryString) {\n return resolve(result);\n }\n resolve(arrayBufferToBinaryString(result));\n };\n reader.onerror = reject;\n if (hasBinaryString) {\n reader.readAsBinaryString(blob);\n } else {\n reader.readAsArrayBuffer(blob);\n }\n });\n}\nfunction base64StringToBlob(base64, type) {\n var parts = [binaryStringToArrayBuffer(atob(base64))];\n return type ? createBlob(parts, {type}) : createBlob(parts);\n}\nfunction binaryStringToBlob(binary, type) {\n return base64StringToBlob(btoa(binary), type);\n}\nfunction blobToBase64String(blob) {\n return blobToBinaryString(blob).then(btoa);\n}\nfunction dataURLToBlob(dataURL) {\n var type = dataURL.match(/data:([^;]+)/)[1];\n var base64 = dataURL.replace(/^[^,]+,/, \"\");\n var buff = binaryStringToArrayBuffer(atob(base64));\n return createBlob([buff], {type});\n}\nfunction blobToDataURL(blob) {\n return blobToBase64String(blob).then(function(base64String) {\n return \"data:\" + blob.type + \";base64,\" + base64String;\n });\n}\nfunction imgSrcToDataURL(src, type, crossOrigin, quality) {\n type = type || \"image/png\";\n return loadImage(src, crossOrigin).then(imgToCanvas).then(function(canvas) {\n return canvas.toDataURL(type, quality);\n });\n}\nfunction canvasToBlob(canvas, type, quality) {\n if (typeof canvas.toBlob === \"function\") {\n return new Promise(function(resolve) {\n canvas.toBlob(resolve, type, quality);\n });\n }\n return Promise.resolve(dataURLToBlob(canvas.toDataURL(type, quality)));\n}\nfunction imgSrcToBlob(src, type, crossOrigin, quality) {\n type = type || \"image/png\";\n return loadImage(src, crossOrigin).then(imgToCanvas).then(function(canvas) {\n return canvasToBlob(canvas, type, quality);\n });\n}\nfunction arrayBufferToBlob(buffer, type) {\n return createBlob([buffer], type);\n}\nfunction blobToArrayBuffer(blob) {\n return new Promise(function(resolve, reject) {\n var reader = new FileReader();\n reader.onloadend = function() {\n var result = reader.result || new ArrayBuffer(0);\n resolve(result);\n };\n reader.onerror = reject;\n reader.readAsArrayBuffer(blob);\n });\n}\nfunction arrayBufferToBinaryString(buffer) {\n var binary = \"\";\n var bytes = new Uint8Array(buffer);\n var length = bytes.byteLength;\n var i = -1;\n while (++i < length) {\n binary += String.fromCharCode(bytes[i]);\n }\n return binary;\n}\nfunction binaryStringToArrayBuffer(binary) {\n var length = binary.length;\n var buf = new ArrayBuffer(length);\n var arr = new Uint8Array(buf);\n var i = -1;\n while (++i < length) {\n arr[i] = binary.charCodeAt(i);\n }\n return buf;\n}\nexport {arrayBufferToBinaryString, arrayBufferToBlob, base64StringToBlob, binaryStringToArrayBuffer, binaryStringToBlob, blobToArrayBuffer, blobToBase64String, blobToBinaryString, blobToDataURL, canvasToBlob, createBlob, createObjectURL, dataURLToBlob, imgSrcToBlob, imgSrcToDataURL, revokeObjectURL};\nexport default null;\n", "import * as BlobUtil from '../../../static/js/blob-util.js'\nimport { VError } from '../VError/VError.js'\n\nconst normalizeError = (error) => {\n if (\n error &&\n error instanceof ProgressEvent &&\n error.target &&\n // @ts-ignore\n error.target.error\n ) {\n // @ts-ignore\n return error.target.error\n }\n return error\n}\n\nexport const base64StringToBlob = (base64String) => {\n try {\n return BlobUtil.base64StringToBlob(base64String)\n } catch (error) {\n const normalizedError = normalizeError(error)\n throw new VError(normalizedError, `Failed to convert base64 string to blob`)\n }\n}\n\nexport const binaryStringToBlob = async (string, type) => {\n try {\n return await BlobUtil.binaryStringToBlob(string, type)\n } catch (error) {\n const normalizedError = normalizeError(error)\n throw new VError(normalizedError, `Failed to convert binary string to blob`)\n }\n}\n\nexport const blobToBinaryString = async (blob) => {\n try {\n return await BlobUtil.blobToBinaryString(blob)\n } catch (error) {\n const normalizedError = normalizeError(error)\n throw new VError(normalizedError, `Failed to convert blob to binary string`)\n }\n}\n", "import * as Blob from './Blob.js'\n\nexport const name = 'Blob'\n\nexport const Commands = {\n base64StringToBlob: Blob.base64StringToBlob,\n binaryStringToBlob: Blob.binaryStringToBlob,\n blobToBinaryString: Blob.blobToBinaryString,\n}\n", "export const ElectronMessagePort = 1\nexport const MessagePort = 2\nexport const ModuleWorker = 3\nexport const ReferencePort = 4\nexport const WebSocket = 5\n", "import * as Callback from '../Callback/Callback.js'\nimport * as JsonRpcVersion from '../JsonRpcVersion/JsonRpcVersion.js'\n\nexport const send = (transport, method, ...parameters) => {\n transport.send({\n jsonrpc: JsonRpcVersion.Two,\n method,\n params: parameters,\n })\n}\n\nexport const invoke = (transport, method, ...parameters) => {\n return new Promise((resolve, reject) => {\n // TODO use one map instead of two\n const callbackId = Callback.register(resolve, reject)\n transport.send({\n jsonrpc: JsonRpcVersion.Two,\n method,\n params: parameters,\n id: callbackId,\n })\n })\n}\n", "export const Web = 'web'\n\nexport const Electron = 'electron'\n\nexport const Remote = 'remote'\n", "import * as RendererProcess from '../RendererProcess/RendererProcess.js'\nimport * as Assert from '../Assert/Assert.js'\n\nexport const create = async (options) => {\n const type = options.type\n Assert.string(type)\n const originalOnMessage = RendererProcess.state.ipc.onmessage\n const port = await new Promise((resolve, reject) => {\n RendererProcess.state.ipc.onmessage = (event) => {\n if (event.data === 'port') {\n const port = event.ports[0]\n resolve(port)\n } else {\n originalOnMessage(event)\n }\n }\n RendererProcess.state.ipc.send({ method: 'get-port', params: [type] })\n })\n RendererProcess.state.ipc.onmessage = originalOnMessage\n let handleMessage\n return {\n get onmessage() {\n return handleMessage\n },\n set onmessage(listener) {\n if (listener) {\n handleMessage = (event) => {\n // TODO why are some events not instance of message event?\n if (event instanceof MessageEvent) {\n listener(event.data)\n } else {\n listener(event)\n }\n }\n } else {\n handleMessage = null\n }\n port.onmessage = handleMessage\n },\n send(message) {\n port.postMessage(message)\n },\n _port: port,\n }\n}\n", "import * as Assert from '../Assert/Assert.js'\n\nexport const create = async ({ url }) => {\n Assert.string(url)\n const port = await new Promise((resolve) => {\n globalThis.acceptPort = resolve\n import(url)\n })\n delete globalThis.acceptPort\n let handleMessage\n return {\n get onmessage() {\n return port.onmessage\n },\n set onmessage(listener) {\n if (listener) {\n handleMessage = (event) => {\n // TODO why are some events not instance of message event?\n if (event instanceof MessageEvent) {\n const message = event.data\n listener(message)\n } else {\n listener(event)\n }\n }\n } else {\n handleMessage = null\n }\n port.onmessage = handleMessage\n },\n send(message) {\n port.postMessage(message)\n },\n sendAndTransfer(message, transfer) {\n port.postMessage(message, transfer)\n },\n }\n}\n", "const getDisplayName = (name) => {\n if (!name) {\n return '<unknown> worker'\n }\n if (name.endsWith('Worker')) {\n return name.toLowerCase()\n }\n return `${name} worker`\n}\n\nconst tryToGetActualErrorMessage = async ({ url, name }) => {\n const displayName = getDisplayName(name)\n try {\n await import(url)\n return `Failed to start ${displayName}: Unknown Error`\n } catch (error) {\n if (\n error &&\n error instanceof Error &&\n error.message.startsWith('Failed to fetch dynamically imported module')\n ) {\n try {\n const response = await fetch(url)\n switch (response.status) {\n case 404:\n return `Failed to start ${displayName}: Not found (404)`\n default:\n return `Failed to start ${displayName}: Unknown Network Error`\n }\n } catch {\n return `Failed to start ${displayName}: Unknown Network Error`\n }\n }\n return `Failed to start ${displayName}: ${error}`\n }\n}\n\nconst isFirefoxError = (message) => {\n return [\n 'SyntaxError: import declarations may only appear at top level of a module',\n 'SyntaxError: export declarations may only appear at top level of a module',\n ].includes(message)\n}\n\nexport const create = async ({ url, name }) => {\n try {\n const worker = new Worker(url, {\n type: 'module',\n name,\n })\n await new Promise((resolve, reject) => {\n const cleanup = () => {\n worker.onmessage = null\n worker.onerror = null\n }\n const handleFirstMessage = (event) => {\n cleanup()\n if (event.data === 'ready') {\n resolve(undefined)\n } else {\n reject(new Error('unexpected first message from worker'))\n }\n }\n const handleFirstError = async (event) => {\n cleanup()\n if (isFirefoxError(event.message)) {\n event.preventDefault()\n reject(new Error('module workers are not supported in firefox'))\n } else {\n const actualErrorMessage = await tryToGetActualErrorMessage({\n url,\n name,\n })\n reject(new Error(actualErrorMessage))\n }\n }\n worker.onmessage = handleFirstMessage\n worker.onerror = handleFirstError\n })\n let handleMessage\n\n return {\n get onmessage() {\n return handleMessage\n },\n set onmessage(listener) {\n if (listener) {\n handleMessage = (event) => {\n // TODO why are some events not instance of message event?\n if (event instanceof MessageEvent) {\n const message = event.data\n listener(message, event)\n } else {\n listener(event)\n }\n }\n } else {\n handleMessage = null\n }\n worker.onmessage = handleMessage\n },\n send(message) {\n worker.postMessage(message)\n },\n sendAndTransfer(message, transfer) {\n worker.postMessage(message, transfer)\n },\n }\n } catch (error) {\n if (\n error &&\n error instanceof Error &&\n error.message === 'module workers are not supported in firefox'\n ) {\n const IpcParentWithMessagePort = await import(\n './IpcParentWithMessagePort.js'\n )\n return IpcParentWithMessagePort.create({ url })\n }\n throw error\n }\n}\n", "export const create = async ({ url }) => {\n const referencePort = await new Promise((resolve) => {\n globalThis.acceptReferencePort = resolve\n import(url)\n })\n delete globalThis.acceptReferencePort\n let handleMessage\n return {\n get onmessage() {\n return handleMessage\n },\n set onmessage(listener) {\n if (listener) {\n handleMessage = (event) => {\n // TODO why are some events not instance of message event?\n if (event instanceof MessageEvent) {\n const message = event.data\n listener(message)\n } else {\n listener(event)\n }\n }\n } else {\n handleMessage = null\n }\n referencePort.onmessage = handleMessage\n },\n send(message) {\n referencePort.postMessage(message)\n },\n }\n}\n", "export const Http = 'http:'\nexport const Https = 'https:'\nexport const Ws = 'ws:'\nexport const Wss = 'wss:'\nexport const Blob = 'blob:'\nexport const File = 'file:'\n", "import * as Protocol from '../Protocol/Protocol.js'\n\nexport const getWebSocketProtocol = () => {\n return location.protocol === Protocol.Https ? Protocol.Wss : Protocol.Ws\n}\n", "import * as WebSocketProtocol from '../WebSocketProtocol/WebSocketProtocol.js'\n\nconst getWsUrl = () => {\n const wsProtocol = WebSocketProtocol.getWebSocketProtocol()\n return `${wsProtocol}//${location.host}`\n}\n\nexport const create = ({ protocol }) => {\n // TODO replace this during build\n const wsUrl = getWsUrl()\n const webSocket = new WebSocket(wsUrl, [protocol])\n const pendingMessages = []\n webSocket.onopen = () => {\n ipc.send = (message) => {\n const stringifiedMessage = JSON.stringify(message)\n webSocket.send(stringifiedMessage)\n }\n for (const message of pendingMessages) {\n ipc.send(message)\n }\n pendingMessages.length = 0\n }\n let handleMessage\n const ipc = {\n get onmessage() {\n return handleMessage\n },\n set onmessage(listener) {\n if (listener) {\n handleMessage = (event) => {\n // TODO why are some events not instance of message event?\n if (event instanceof MessageEvent) {\n const message = JSON.parse(event.data)\n listener(message)\n } else {\n listener(event)\n }\n }\n } else {\n handleMessage = null\n }\n webSocket.onmessage = handleMessage\n },\n send(message) {\n pendingMessages.push(message)\n },\n }\n return ipc\n}\n", "import * as IpcParentType from '../IpcParentType/IpcParentType.js'\n\nconst getModule = (method) => {\n switch (method) {\n case IpcParentType.ElectronMessagePort:\n return import('./IpcParentWithElectron.js')\n case IpcParentType.MessagePort:\n return import('./IpcParentWithMessagePort.js')\n case IpcParentType.ModuleWorker:\n return import('./IpcParentWithModuleWorker.js')\n case IpcParentType.ReferencePort:\n return import('./IpcParentWithReferencePort.js')\n case IpcParentType.WebSocket:\n return import('./IpcParentWithWebSocket.js')\n default:\n throw new Error('unexpected ipc type')\n }\n}\n\nexport const create = async ({ method, ...options }) => {\n const module = await getModule(method)\n return module.create(options)\n}\n", "import * as IpcParent from '../IpcParent/IpcParent.js'\n\nexport const listen = (method) => {\n return IpcParent.create({\n method,\n type: 'shared-process',\n name: 'Shared Process',\n protocol: 'lvce.shared-process',\n })\n}\n", "/* istanbul ignore file */\nimport * as Callback from '../Callback/Callback.js'\nimport * as Command from '../Command/Command.js'\nimport * as IpcParentType from '../IpcParentType/IpcParentType.js'\nimport * as JsonRpc from '../JsonRpc/JsonRpc.js'\nimport * as JsonRpcVersion from '../JsonRpcVersion/JsonRpcVersion.js'\nimport * as PlatformType from '../PlatformType/PlatformType.js'\nimport * as SharedProcessIpc from '../SharedProcessIpc/SharedProcessIpc.js'\n\n// TODO duplicate code with platform module\n/**\n * @returns {'electron'|'remote'|'web'|'test'}\n */\nconst getPlatform = () => {\n // @ts-ignore\n if (typeof PLATFORM !== 'undefined') {\n // @ts-ignore\n return PLATFORM\n }\n if (typeof process !== 'undefined' && process.env.NODE_ENV === 'test') {\n return 'test'\n }\n if (typeof location !== 'undefined' && location.search === '?web') {\n return PlatformType.Web\n }\n if (\n typeof location !== 'undefined' &&\n location.search.includes('platform=electron')\n ) {\n return PlatformType.Electron\n }\n return PlatformType.Remote\n}\n\nconst platform = getPlatform() // TODO tree-shake this out in production\n\nconst constructError = (message) => {\n if (message.startsWith('Error: ')) {\n return new Error(message.slice('Error: '.length))\n }\n if (message.startsWith('TypeError: ')) {\n return new TypeError(message.slice('TypeError: '.length))\n }\n if (message.startsWith('SyntaxError: ')) {\n return new SyntaxError(message.slice('SyntaxError: '.length))\n }\n return new Error(message)\n}\n\nconst preparePrettyError = (rawError) => {\n const error = constructError(rawError.message)\n if (rawError.data && rawError.data.stack) {\n // @ts-ignore\n error.originalStack = rawError.data.stack\n }\n if (rawError.data && rawError.data.codeFrame) {\n // @ts-ignore\n error.originalCodeFrame = rawError.data.codeFrame\n }\n if (rawError.data && rawError.data.category) {\n // @ts-ignore\n error.category = rawError.data.category\n }\n if (rawError.data && rawError.data.code) {\n // @ts-ignore\n error.code = rawError.data.code\n }\n if (rawError.data && rawError.data.stderr) {\n // @ts-ignore\n error.stderr = rawError.data.stderr\n }\n return error\n}\n\nexport const state = {\n /**\n * @type {any}\n */\n ipc: undefined,\n}\n\nexport const handleMessageFromSharedProcess = async (message) => {\n if (message.method) {\n const result = await Command.execute(message.method, ...message.params)\n if (message.id) {\n state.send({\n jsonrpc: JsonRpcVersion.Two,\n id: message.id,\n result,\n })\n }\n } else {\n Callback.resolve(message.id, message)\n }\n}\n\nconst getIpcMethod = () => {\n switch (platform) {\n case 'web':\n case 'remote':\n return IpcParentType.WebSocket\n case 'electron':\n return IpcParentType.ElectronMessagePort\n default:\n throw new Error('unsupported platform')\n }\n}\n\nexport const listen = async () => {\n const ipcMethod = await getIpcMethod()\n const ipc = await SharedProcessIpc.listen(ipcMethod)\n ipc.onmessage = handleMessageFromSharedProcess\n state.ipc = ipc\n}\n\nexport const send = (method, ...params) => {\n if (platform === 'web') {\n console.warn('SharedProcess is not available on web')\n return\n }\n JsonRpc.send(state.ipc, method, ...params)\n}\n\nexport const invoke = async (method, ...params) => {\n if (platform === 'web') {\n console.warn('SharedProcess is not available on web')\n return\n }\n const responseMessage = await JsonRpc.invoke(state.ipc, method, ...params)\n if (responseMessage.error) {\n const prettyError = preparePrettyError(responseMessage.error)\n throw prettyError\n }\n return responseMessage.result\n}\n\nexport const dispose = () => {\n state.dispose()\n}\n\n// TODO when shared process crashes / connection is lost: reconnect or show notification\n", "import * as SharedProcess from '../SharedProcess/SharedProcess.js'\nimport * as PlatformType from '../PlatformType/PlatformType.js'\n/* istanbul ignore file */\n\n// TODO this should always be completely tree shaken out during build, maybe need to be marked as @__Pure for terser to work\n\n// TODO treeshake this function out when targeting electron\n\nexport const isMobileOrTablet = () => {\n if (typeof process !== 'undefined' && process.env.NODE_ENV === 'test') {\n return false\n }\n // @ts-ignore\n const userAgentData = navigator.userAgentData\n if (userAgentData && 'mobile' in userAgentData) {\n userAgentData.mobile\n }\n return false\n}\n\nconst getIsChrome = () => {\n if (typeof navigator === 'undefined') {\n return false\n }\n if (\n // @ts-ignore\n navigator.userAgentData &&\n // @ts-ignore\n navigator.userAgentData.brands\n ) {\n // @ts-ignore\n return navigator.userAgentData.brands.includes('Chromium')\n }\n return false\n}\n\nexport const isChrome = getIsChrome()\n\nconst getIsFirefox = () => {\n if (typeof navigator === 'undefined') {\n return false\n }\n if (\n // @ts-ignore\n navigator.userAgentData &&\n // @ts-ignore\n navigator.userAgentData.brands\n ) {\n // @ts-ignore\n return navigator.userAgentData.brands.includes('Firefox')\n }\n return navigator.userAgent.toLowerCase().indexOf('firefox') > -1\n}\n\nexport const isFirefox = getIsFirefox()\n\nexport const getExtensionsPath = () => {\n return SharedProcess.invoke(\n /* Platform.getExtensionsPath */ 'Platform.getExtensionsPath'\n )\n}\n\nexport const getBuiltinExtensionsPath = () => {\n return SharedProcess.invoke(\n /* Platform.getBuiltinExtensionsPath */ 'Platform.getBuiltinExtensionsPath'\n )\n}\n\nexport const getDisabledExtensionsPath = () => {\n return SharedProcess.invoke(\n /* Platform.getDisabledExtensionsPath */ 'Platform.getDisabledExtensionsPath'\n )\n}\n\nexport const getCachedExtensionsPath = () => {\n return SharedProcess.invoke(\n /* Platform.getCachedExtensionsPath */ 'Platform.getCachedExtensionsPath'\n )\n}\n\nexport const getMarketPlaceUrl = () => {\n // TODO this should be configurable via settings\n // TODO in web this should be static\n return SharedProcess.invoke(\n /* Platform.getMarketPlaceUrl */ 'Platform.getMarketplaceUrl'\n )\n}\n\nexport const getLogsDir = () => {\n return SharedProcess.invoke(/* Platform.getLogsDir */ 'Platform.getLogsDir')\n}\n\nexport const getDownloadDir = () => {\n return SharedProcess.invoke(\n /* Platform.getDownloadDir */ 'Platform.getDownloadDir'\n )\n}\n\nexport const getUserSettingsPath = () => {\n if (platform === PlatformType.Web) {\n return 'settings'\n }\n return SharedProcess.invoke(\n /* Platform.getUserSettingsPath */ 'Platform.getUserSettingsPath'\n )\n}\n\n/**\n * @returns {'electron'|'remote'|'web'|'test'}\n */\nconst getPlatform = () => {\n // @ts-ignore\n if (typeof PLATFORM !== 'undefined') {\n // @ts-ignore\n return PLATFORM\n }\n if (typeof process !== 'undefined' && process.env.NODE_ENV === 'test') {\n return 'test'\n }\n if (typeof location !== 'undefined' && location.search === '?web') {\n return PlatformType.Web\n }\n if (\n typeof location !== 'undefined' &&\n location.search.includes('platform=electron')\n ) {\n return PlatformType.Electron\n }\n return PlatformType.Remote\n}\n\nexport const platform = 'remote'\n\nexport const getAssetDir = () => {\n // @ts-ignore\n if (typeof '/96d5271' !== 'undefined') {\n // @ts-ignore\n return '/96d5271'\n }\n if (platform === PlatformType.Electron) {\n return '../../../../..'\n }\n return ''\n}\n\nexport const getRecentlyOpenedPath = () => {\n if (platform === PlatformType.Web) {\n return 'recently-opened'\n }\n return SharedProcess.invoke(\n /* Platform.getRecentlyOpenedPath */ 'Platform.getRecentlyOpenedPath'\n )\n}\n\nexport const getConfigPath = () => {\n return SharedProcess.invoke(\n /* Platform.getConfigDir */ 'Platform.getConfigDir'\n )\n}\n\nexport const getCachePath = () => {\n return SharedProcess.invoke(/* Platform.getCacheDir */ 'Platform.getCacheDir')\n}\n\nexport const getExtensionHostWorkerUrl = () => {\n const assetDir = getAssetDir()\n return `${assetDir}/packages/extension-host-worker/dist/extensionHostWorkerMain.js`\n}\n\nexport const getWebExtensionsUrl = () => {\n const assetDir = getAssetDir()\n return `${assetDir}/config/webExtensions.json`\n}\n\nexport const getGithubApiUrl = () => {\n return `https://api.github.com`\n}\n\nexport const getCacheName = () => {\n return 'lvce-runtime'\n}\n\nconst getTestPathRemote = () => {\n return SharedProcess.invoke(/* Platform.getTestPath */ 'Platform.getTestPath')\n}\n\nconst getTestPathWeb = () => {\n return '/packages/extension-host-worker-tests'\n}\n\nexport const getTestPath = () => {\n switch (platform) {\n case PlatformType.Electron:\n case PlatformType.Remote:\n return getTestPathRemote()\n case PlatformType.Web:\n return getTestPathWeb()\n }\n}\n\nexport const getNodePath = () => {\n if (platform === PlatformType.Web) {\n throw new Error('not implemented in web')\n }\n return SharedProcess.invoke(/* Platform.getNodePath */ 'Platform.getNodePath')\n}\n\nexport const getTmpDir = () => {\n if (platform === PlatformType.Web) {\n throw new Error('not implemented in web')\n }\n return SharedProcess.invoke(/* Platform.getTmpDir */ 'Platform.getTmpDir')\n}\n\nexport const browserViewZindexWorkaroundEnabled = true\n", "import * as Platform from '../Platform/Platform.js'\nimport { VError } from '../VError/VError.js'\n\nconst shouldIgnoreError = (error) => {\n // Firefox throws dom exception in private mode\n return (\n error &&\n error instanceof DOMException &&\n error.message === 'The operation is insecure.'\n )\n}\n\n// TODO when caches is not defined -> should return undefined\n\nconst getCache = async () => {\n const cacheName = Platform.getCacheName()\n return await caches.open(cacheName)\n}\n\nconst getResponse = async (key) => {\n if (typeof caches === 'undefined') {\n return undefined\n }\n if (Platform.platform === 'electron' && key.startsWith('/')) {\n // workaround for custom protocol not working with cache storage\n key = 'https://example.com' + key\n }\n const cache = await getCache()\n const response = await cache.match(key)\n return response\n}\n\nexport const getJson = async (key) => {\n try {\n const response = await getResponse(key)\n if (!response) {\n return undefined\n }\n const json = await response.json()\n return json\n } catch (error) {\n if (shouldIgnoreError(error)) {\n return undefined\n }\n throw new VError(error, `Failed to get json from cache \"${key}\"`)\n }\n}\n\nexport const getTextFromCache = async (key) => {\n try {\n const response = await getResponse(key)\n if (!response) {\n return undefined\n }\n const text = await response.text()\n return text\n } catch (error) {\n if (shouldIgnoreError(error)) {\n return undefined\n }\n throw new VError(error, `Failed to get text from cache \"${key}\"`)\n }\n}\n\nconst setResponse = async (key, value, contentType) => {\n if (typeof caches === 'undefined') {\n return\n }\n // TODO cache the cache (maybe)\n if (\n Platform.platform === 'electron' && // workaround for custom protocol not working with cache storage\n key.startsWith('/')\n ) {\n key = 'https://example.com' + key\n }\n if (typeof value !== 'string') {\n console.warn(`invalid value ${value}`)\n return\n }\n const cacheName = Platform.getCacheName()\n const cache = await caches.open(cacheName)\n await cache.put(\n key,\n new Response(value, {\n headers: new Headers({\n 'Content-Type': contentType,\n 'Content-Length': `${value.length}`,\n }),\n })\n )\n}\n\nexport const setText = async (key, value, contentType) => {\n try {\n await setResponse(key, value, contentType)\n } catch (error) {\n if (shouldIgnoreError(error)) {\n return undefined\n }\n throw new VError(error, `Failed to put item into cache \"${key}\"`)\n }\n}\n\nexport const setJson = async (key, value) => {\n try {\n await setResponse(key, JSON.stringify(value), 'application/json')\n } catch (error) {\n if (shouldIgnoreError(error)) {\n return\n }\n throw new VError(error, `Failed to put json into cache \"${key}\"`)\n }\n}\n\nexport const clearCache = async () => {\n if (typeof caches === 'undefined') {\n return\n }\n try {\n const cacheName = Platform.getCacheName()\n await caches.delete(cacheName)\n } catch (error) {\n if (shouldIgnoreError(error)) {\n return\n }\n throw new VError(error, 'Failed to clear cache')\n }\n}\n", "import * as CacheStorage from './CacheStorage.js'\n\n// TODO only use CacheStorage module via ipc -> that way is is always lazyloaded\n\nexport const name = 'CacheStorage'\n\nexport const Commands = {\n clearCache: CacheStorage.clearCache,\n getJson: CacheStorage.getJson,\n setJson: CacheStorage.setJson,\n}\n", "import * as Callback from './Callback.js'\n\nexport const name = 'Callback'\n\nexport const Commands = {\n reject: Callback.reject,\n resolve: Callback.resolve,\n}\n", "import * as Platform from '../Platform/Platform.js'\nimport * as PlatformType from '../PlatformType/PlatformType.js'\nimport * as Command from '../Command/Command.js'\n\nexport const minimize = () => {\n switch (Platform.platform) {\n case PlatformType.Electron:\n return Command.execute('ElectronWindow.minimize')\n default:\n throw new Error('not implemented')\n }\n}\n\nexport const maximize = () => {\n switch (Platform.platform) {\n case PlatformType.Electron:\n return Command.execute('ElectronWindow.maximize')\n default:\n throw new Error('not implemented')\n }\n}\n\nexport const unmaximize = () => {\n switch (Platform.platform) {\n case PlatformType.Electron:\n return Command.execute('ElectronWindow.unmaximize')\n default:\n throw new Error('not implemented')\n }\n}\n\nexport const close = () => {\n switch (Platform.platform) {\n case PlatformType.Electron:\n return Command.execute('ElectronWindow.close')\n default:\n throw new Error('not implemented')\n }\n}\n\nexport const exit = () => {\n switch (Platform.platform) {\n case PlatformType.Electron:\n return Command.execute('ElectronApp.exit')\n default:\n throw new Error('not implemented')\n }\n}\n\nexport const openNew = () => {\n switch (Platform.platform) {\n case PlatformType.Electron:\n return Command.execute('ElectronWindow.openNew')\n default:\n throw new Error('not implemented')\n }\n}\n\nexport const zoomIn = () => {\n switch (Platform.platform) {\n case PlatformType.Electron:\n return Command.execute('ElectronWindow.zoomIn')\n default:\n throw new Error('not implemented')\n }\n}\n\nexport const zoomOut = () => {\n switch (Platform.platform) {\n case PlatformType.Electron:\n return Command.execute('ElectronWindow.zoomOut')\n default:\n throw new Error('not implemented')\n }\n}\n", "import * as Chrome from './Chrome.js'\n\nexport const Commands = {\n 'Chrome.close': Chrome.close,\n 'Chrome.exit': Chrome.exit,\n 'Chrome.maximize': Chrome.maximize,\n 'Chrome.minimize': Chrome.minimize,\n 'Chrome.unmaximize': Chrome.unmaximize,\n}\n", "export const getUrl = (name) => {\n switch (name) {\n default:\n throw new Error(`not yet supported: ${name}`)\n }\n}\n", "import * as SharedProcess from '../SharedProcess/SharedProcess.js'\nimport * as ChromeExtensionUrl from '../ChromeExtensionUrl/ChromeExtensionUrl.js'\n\nexport const install = async (name) => {\n const url = ChromeExtensionUrl.getUrl(name)\n return SharedProcess.invoke('ChromeExtension.install', name, url)\n}\n\nexport const uninstall = (name) => {\n return SharedProcess.invoke('ChromeExtension.uninstall', name)\n}\n", "import * as ChromeExtension from './ChromeExtension.js'\n\nexport const Commands = {\n 'ChromeExtension.install': ChromeExtension.install,\n 'ChromeExtension.uninstall': ChromeExtension.uninstall,\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as Platform from '../Platform/Platform.js'\nimport * as PlatformType from '../PlatformType/PlatformType.js'\nimport * as RendererProcess from '../RendererProcess/RendererProcess.js'\nimport * as SharedProcess from '../SharedProcess/SharedProcess.js'\nimport { VError } from '../VError/VError.js'\n\nexport const readText = async () => {\n try {\n return await RendererProcess.invoke('ClipBoard.readText')\n } catch (error) {\n // @ts-ignore\n if (error.message === 'Read permission denied.') {\n throw new VError(\n 'Failed to read text from clipboard: The Browser disallowed reading from clipboard'\n )\n }\n if (\n // @ts-ignore\n error.message === 'navigator.clipboard.readText is not a function'\n ) {\n throw new VError(\n 'Failed to read text from clipboard: The Clipboard Api is not available in Firefox'\n )\n }\n throw new VError(error, 'Failed to read text from clipboard')\n }\n}\n\nexport const writeText = async (text) => {\n try {\n Assert.string(text)\n await RendererProcess.invoke('ClipBoard.writeText', /* text */ text)\n } catch (error) {\n throw new VError(error, 'Failed to write text to clipboard')\n }\n}\n\nexport const writeNativeFiles = async (type, files) => {\n try {\n if (Platform.platform === PlatformType.Web) {\n throw new Error('not supported')\n }\n await SharedProcess.invoke(\n /* command */ 'ClipBoard.writeFiles',\n /* type */ type,\n /* files */ files\n )\n } catch (error) {\n throw new VError(error, 'Failed to write files to native clipboard')\n }\n}\n\nexport const readNativeFiles = async () => {\n try {\n if (Platform.platform === PlatformType.Web) {\n throw new Error('not supported')\n }\n return await SharedProcess.invoke(/* command */ 'ClipBoard.readFiles')\n } catch (error) {\n throw new VError(error, 'Failed to read files from native clipboard')\n }\n}\n\nexport const writeImage = async (blob) => {\n try {\n return await RendererProcess.invoke('ClipBoard.writeImage', blob)\n } catch (error) {\n throw new VError(error, 'Failed to write image to clipboard')\n }\n}\n\nexport const execCopy = async () => {\n try {\n return await RendererProcess.invoke('ClipBoard.execCopy')\n } catch (error) {\n throw new VError(error, 'Failed to copy selected text')\n }\n}\n", "import * as ClipBoard from './ClipBoard.js'\n\nexport const name = 'ClipBoard'\n\nexport const Commands = {\n execCopy: ClipBoard.execCopy,\n readNativeFiles: ClipBoard.readNativeFiles,\n readText: ClipBoard.readText,\n writeImage: ClipBoard.writeImage,\n writeNativeFiles: ClipBoard.writeNativeFiles,\n writeText: ClipBoard.writeText,\n}\n", "export const open = () => {\n console.log('TODO open color picker')\n}\n\nexport const close = () => {\n console.log('TODO close color picker')\n}\n", "import * as ColorPicker from './ColorPicker.js'\n\nexport const name = 'ColorPicker'\n\nexport const Commands = {\n close: ColorPicker.close,\n open: ColorPicker.open,\n}\n", "import * as ColorTheme from './ColorTheme.js'\n\nexport const name = 'ColorTheme'\n\nexport const Commands = {\n hydrate: ColorTheme.hydrate,\n reload: ColorTheme.reload,\n setColorTheme: ColorTheme.setColorTheme,\n}\n", "const rgba = (r, g, b, a) => {\n r = Math.min(255, Math.max(0, r)) | 0\n g = Math.min(255, Math.max(0, g)) | 0\n b = Math.min(255, Math.max(0, b)) | 0\n return {\n r,\n g,\n b,\n a,\n }\n}\n\nconst darken = () => {}\n\nconst lighten = () => {}\n\nconst transparent = (color, factor) => {\n return color\n}\n\nconst isValidHexColor = (value) => {\n return true\n}\n\nconst toColorRule = ([key, value]) => {\n return ` --${key}: ${value};`\n}\n\nconst toTokenColorRule = (tokenColor) => {\n return `.Token.${tokenColor.name} { color: ${tokenColor.foreground} }`\n}\n\nexport const createColorThemeFromJson = (colorThemeId, colorThemeJson) => {\n if (!colorThemeJson) {\n console.warn(\n `color theme json for \"${colorThemeId}\" is empty: \"${colorThemeJson}\"`\n )\n return ''\n }\n if (typeof colorThemeJson !== 'object') {\n console.warn(\n `color theme json for \"${colorThemeId}\" cannot be converted to css: \"${colorThemeJson}\"`\n )\n return ''\n }\n if (Array.isArray(colorThemeJson)) {\n console.warn(\n `color theme json for \"${colorThemeId}\" cannot be converted to css, it must be of type object but was of type array`\n )\n return ''\n }\n const colors = colorThemeJson.colors\n if (!colors) {\n return ''\n }\n if (!colors.ActivityBarInactiveForeground) {\n // TODO don't assign, avoid mutation\n colors.ActivityBarInactiveForeground = transparent(\n colors.ActivityBarForeground,\n 0.4\n )\n }\n const colorRules = Object.entries(colors).map(toColorRule)\n const tokenColors = colorThemeJson.tokenColors || []\n const tokenColorRules = tokenColors.map(toTokenColorRule)\n const extraRules = []\n if (colors.ContrastBorder) {\n extraRules.push(\n `#ActivityBar, #SideBar {\n border-left: 1px solid var(--ContrastBorder);\n}`,\n `#Panel {\n border-top: 1px solid var(--ContrastBorder);\n}`,\n `#StatusBar {\n border-top: 1px solid var(--ContrastBorder);\n}`,\n `.ActivityBarItemBadge {\n border: 1px solid var(--ContrastBorder);\n}`,\n `#QuickPick {\n border: 1px solid var(--ContrastBorder);\n}`\n )\n }\n const colorThemeCss = `:root {\\n${colorRules.join(\n '\\n'\n )}\\n}\\n\\n${tokenColorRules.join('\\n')}\\n\\n${extraRules.join('\\n')}`\n return colorThemeCss\n}\n\n// for (let i = 0; i < 10000; i++) {\n// createColorThemeFromJson({\n// type: 'dark',\n// colors: {\n// ActivityBarBackground: 'rgb(40, 46, 47)',\n// ActivityBarForeground: '#878f8c',\n// ActivityBarActiveBackground: '#1f2727',\n\n// EditorBackGround: '#1e2324',\n// EditorScrollBarBackground: 'rgba(57, 71, 71, 0.6)',\n// EditorCursorBackground: '#a8df5a',\n\n// ListActiveSelectionBackground: '#515f59',\n// ListActiveSelectionForeground: '#ffffff',\n// ListHoverBackground: '#405c5033',\n// ListHoverForeground: '#e0e0e0',\n// ListInactiveSelectionBackground: '#3b474280',\n\n// MainBackground: '#1e2324',\n\n// PanelBackground: '#1b2020',\n// PanelBorderTopColor: 'rgba(128, 128, 128, 0.35)',\n\n// SideBarBackground: '#1b2020',\n\n// StatusBarBackground: 'rgb(40, 46, 47)',\n// StatusBarBorderTopColor: '#222222',\n\n// TabActiveBackground: '#24292a',\n// TabInactiveBackground: '#282e2f',\n\n// TitleBarBackground: 'rgb(40, 46, 47)',\n// TitleBarBorderBottomColor: '#222',\n// TitleBarColor: '#cccccc',\n// TitleBarColorInactive: 'rgba(204, 204, 204, 0.6)',\n// },\n// }) //?.\n// }\n", "import * as ColorThemeFromJson from './ColorThemeFromJson.js'\n\n// prettier-ignore\nexport const Commands = {\n 'ColorThemeFromJson.createColorThemeFromJson': ColorThemeFromJson.createColorThemeFromJson\n}\n", "export const MethodNotFound = -32601\n", "import * as Callback from '../Callback/Callback.js'\nimport * as Command from '../Command/Command.js'\nimport { JsonRpcError } from '../Errors/Errors.js'\nimport * as IpcParent from '../IpcParent/IpcParent.js'\nimport * as IpcParentType from '../IpcParentType/IpcParentType.js'\nimport * as JsonRpc from '../JsonRpc/JsonRpc.js'\nimport * as JsonRpcErrorCode from '../JsonRpcErrorCode/JsonRpcErrorCode.js'\n\nexport const state = {\n /**\n * @type {any}\n */\n ipc: undefined,\n}\n\nconst createIpc = async () => {\n return IpcParent.create({\n method: IpcParentType.ElectronMessagePort,\n type: 'electron-process',\n })\n}\n\nconst handleMessage = async (message) => {\n if ('id' in message) {\n Callback.resolve(message.id, message)\n } else if ('method' in message) {\n await Command.execute(message.method, ...message.params)\n }\n}\n\n// TODO race condition\nconst getIpc = async () => {\n if (!state.ipc) {\n const ipc = await createIpc()\n ipc.onmessage = handleMessage\n state.ipc = ipc\n }\n return state.ipc\n}\n\nconst restoreError = (error) => {\n if (error instanceof Error) {\n return error\n }\n if (error.code && error.code === JsonRpcErrorCode.MethodNotFound) {\n console.log('create json rpc error')\n const restoredError = new JsonRpcError(error.message)\n restoredError.stack = error.stack\n return restoredError\n }\n const restoredError = new Error(error.message)\n if (error.data) {\n if (error.data.stack) {\n restoredError.stack = error.data.stack\n }\n if (error.data.codeFrame) {\n // @ts-ignore\n restoredError.codeFrame = error.data.codeFrame\n }\n }\n return restoredError\n}\n\nexport const invoke = async (method, ...params) => {\n const ipc = await getIpc()\n const response = await JsonRpc.invoke(ipc, method, ...params)\n if ('result' in response) {\n return response.result\n }\n if ('error' in response) {\n const restoredError = restoreError(response.error)\n throw restoredError\n }\n throw new Error('unexpected response')\n}\n", "import * as ElectronProcess from '../ElectronProcess/ElectronProcess.js'\n\nexport const startRecording = (options) => {\n return ElectronProcess.invoke(\n 'ElectronContentTracing.startRecording',\n options\n )\n}\n\n/**\n * @returns {Promise<string>}\n */\nexport const stopRecording = () => {\n return ElectronProcess.invoke('ElectronContentTracing.stopRecording')\n}\n", "import * as ElectronProcess from '../ElectronProcess/ElectronProcess.js'\n\nexport const showItemInFolder = async (fullPath) => {\n await ElectronProcess.invoke('ElectronShell.showItemInFolder', fullPath)\n}\n\nexport const beep = async () => {\n await ElectronProcess.invoke('ElectronShell.beep')\n}\n\nexport const openExternal = async (url) => {\n await ElectronProcess.invoke('ElectronShell.openExternal', url)\n}\n", "import * as SharedProcess from '../SharedProcess/SharedProcess.js'\nimport * as RendererProcess from '../RendererProcess/RendererProcess.js'\nimport { VError } from '../VError/VError.js'\nimport * as Platform from '../Platform/Platform.js'\nimport * as PlatformType from '../PlatformType/PlatformType.js'\nimport * as ElectronShell from '../ElectronShell/ElectronShell.js'\n\nconst openNativeFolderWeb = (absolutePath) => {\n throw new Error('not implemented')\n}\n\nconst openNativeFolderRemote = async (absolutePath) => {\n try {\n await SharedProcess.invoke(\n /* Native.openFolder */ 'Native.openFolder',\n /* path */ absolutePath\n )\n } catch (error) {\n throw new VError(error, `Failed to open folder ${absolutePath}`)\n }\n}\n\nconst openNativeFolderElectron = async (absolutePath) => {\n await ElectronShell.showItemInFolder(absolutePath)\n}\n\nexport const openNativeFolder = async (absolutePath) => {\n switch (Platform.platform) {\n case PlatformType.Web:\n return openNativeFolderWeb(absolutePath)\n case PlatformType.Remote:\n return openNativeFolderRemote(absolutePath)\n case PlatformType.Electron:\n return openNativeFolderElectron(absolutePath)\n default:\n return\n }\n}\n", "import * as ElectronContentTracing from '../ElectronContentTracing/ElectronContentTracing.js'\nimport * as Platform from '../Platform/Platform.js'\nimport * as PlatformType from '../PlatformType/PlatformType.js'\nimport * as OpenNativeFolder from '../OpenNativeFolder/OpenNativeFolder.js'\n\nexport const start = async () => {\n if (Platform.platform !== PlatformType.Electron) {\n throw new Error('content tracing is only supported in electron')\n }\n await ElectronContentTracing.startRecording({\n included_categories: ['*'],\n })\n}\n\nexport const stop = async () => {\n if (Platform.platform !== PlatformType.Electron) {\n throw new Error('content tracing is only supported in electron')\n }\n const path = await ElectronContentTracing.stopRecording()\n await OpenNativeFolder.openNativeFolder(path)\n // console.log({ path })\n}\n", "import * as Tracing from './ContentTracing.js'\n\nexport const name = 'ContentTracing'\n\nexport const Commands = {\n start: Tracing.start,\n stop: Tracing.stop,\n}\n", "export const Resolved = 'resolved'\n\nexport const Rejected = 'rejected'\n", "export const ENOENT = 'ENOENT'\n\nexport const EXDEV = 'EXDEV'\n\nexport const EEXIST = 'EEXIST'\n\nexport const ENOTDIR = 'ENOTDIR'\n\nexport const E_MANIFEST_NOT_FOUND = 'E_MANIFEST_NOT_FOUND'\n", "// based on https://github.com/babel/babel/blob/6be6e04f396f03feace4431f709564a8d842163a/packages/babel-code-frame/src/index.ts (License MIT)\n\n/**\n * RegExp to test for newlines in terminal.\n */\n\nconst NEWLINE = /\\n/\n\n/**\n * Extract what lines should be marked and highlighted.\n */\nconst getMarkerLines = (loc, source, opts) => {\n const startLoc = {\n column: 0,\n line: -1,\n ...loc.start,\n }\n const endLoc = {\n ...startLoc,\n ...loc.end,\n }\n const { linesAbove = 2, linesBelow = 3 } = opts || {}\n const startLine = startLoc.line\n const startColumn = startLoc.column\n const endLine = endLoc.line\n const endColumn = endLoc.column\n\n let start = Math.max(startLine - (linesAbove + 1), 0)\n let end = Math.min(source.length, endLine + linesBelow)\n\n if (startLine === -1) {\n start = 0\n }\n\n if (endLine === -1) {\n end = source.length\n }\n\n const lineDiff = endLine - startLine\n const markerLines = {}\n\n if (lineDiff) {\n for (let i = 0; i <= lineDiff; i++) {\n const lineNumber = i + startLine\n\n if (!startColumn) {\n markerLines[lineNumber] = true\n } else if (i === 0) {\n const sourceLength = source[lineNumber - 1].length\n\n markerLines[lineNumber] = [startColumn, sourceLength - startColumn + 1]\n } else if (i === lineDiff) {\n markerLines[lineNumber] = [0, endColumn]\n } else {\n const sourceLength = source[lineNumber - i].length\n\n markerLines[lineNumber] = [0, sourceLength]\n }\n }\n } else {\n if (startColumn === endColumn) {\n if (startColumn) {\n markerLines[startLine] = [startColumn, 0]\n } else {\n markerLines[startLine] = true\n }\n } else {\n markerLines[startLine] = [startColumn, endColumn - startColumn]\n }\n }\n\n return { start, end, markerLines }\n}\n\nexport const create = (rawLines, loc, opts = {}) => {\n const lines = rawLines.split(NEWLINE)\n const { start, end, markerLines } = getMarkerLines(loc, lines, opts)\n const hasColumns = loc.start && typeof loc.start.column === 'number'\n\n const numberMaxWidth = String(end).length\n\n let frame = rawLines\n .split(NEWLINE, end)\n .slice(start, end)\n .map((line, index) => {\n const number = start + 1 + index\n const paddedNumber = ` ${number}`.slice(-numberMaxWidth)\n const gutter = ` ${paddedNumber} |`\n const hasMarker = markerLines[number]\n const lastMarkerLine = !markerLines[number + 1]\n if (hasMarker) {\n let markerLine = ''\n if (Array.isArray(hasMarker)) {\n const markerSpacing = line\n .slice(0, Math.max(hasMarker[0] - 1, 0))\n .replace(/[^\\t]/g, ' ')\n const numberOfMarkers = hasMarker[1] || 1\n\n markerLine = [\n '\\n ',\n gutter.replace(/\\d/g, ' '),\n ' ',\n markerSpacing,\n '^'.repeat(numberOfMarkers),\n ].join('')\n\n if (lastMarkerLine && opts.message) {\n markerLine += ' ' + opts.message\n }\n }\n return [\n '>',\n gutter,\n line.length > 0 ? ` ${line}` : '',\n markerLine,\n ].join('')\n } else {\n return ` ${gutter}${line.length > 0 ? ` ${line}` : ''}`\n }\n })\n .join('\\n')\n\n if (opts.message && !hasColumns) {\n frame = `${' '.repeat(numberMaxWidth + 1)}${opts.message}\\n${frame}`\n }\n\n return frame\n}\n", "import * as SharedProcess from '../SharedProcess/SharedProcess.js'\n\nexport const getLanguages = async () => {\n // TODO handle error\n const languages = await SharedProcess.invoke(\n /* ExtensionHost.getLanguages */ 'ExtensionHost.getLanguages'\n )\n return languages\n}\n\nexport const getLanguageConfiguration = async (languageId) => {\n const languageConfiguration = await SharedProcess.invoke(\n /* ExtensionHost.getLanguageConfiguration */ 'ExtensionHost.getLanguageConfiguration',\n /* languageId */ languageId\n )\n return languageConfiguration\n}\n", "import * as Command from '../Command/Command.js'\nimport * as Platform from '../Platform/Platform.js'\n\nexport const getLanguages = async () => {\n const assetDir = Platform.getAssetDir()\n const url = `${assetDir}/config/languages.json`\n // TODO handle error ?\n return Command.execute(/* Ajax.getJson */ 'Ajax.getJson', /* url */ url)\n}\n\nexport const getLanguageConfiguration = async (languageId) => {\n console.warn('get language configuration not yet supported on web')\n}\n", "import * as Platform from '../Platform/Platform.js'\nimport * as PlatformType from '../PlatformType/PlatformType.js'\nimport { VError } from '../VError/VError.js'\nimport * as ExtensionHostLanguagesNode from './ExtensionHostLanguagesNode.js'\nimport * as ExtensionHostLanguagesWeb from './ExtensionHostLanguagesWeb.js'\n\nexport const getLanguages = async () => {\n try {\n switch (Platform.platform) {\n case PlatformType.Web:\n return await ExtensionHostLanguagesWeb.getLanguages()\n default:\n return await ExtensionHostLanguagesNode.getLanguages()\n }\n } catch (error) {\n throw new VError(error, `Failed to load languages`)\n }\n}\n\nexport const getLanguageConfiguration = async (languageId) => {\n try {\n switch (Platform.platform) {\n case PlatformType.Web:\n return await ExtensionHostLanguagesWeb.getLanguageConfiguration(\n languageId\n )\n default:\n return await ExtensionHostLanguagesNode.getLanguageConfiguration(\n languageId\n )\n }\n } catch (error) {\n throw new VError(error, `Failed to load language configuration`)\n }\n}\n", "// TODO global event bus is probably a bad idea\n// cons:\n// 1. it is not typesafe\n// 2. dependencies are unclear\n//\n// pros\n// 1. it decouples event emitter (e.g. Editor creation) from other module (Document syncing when editor was created)\n\nexport const state = {\n listenerMap: Object.create(null),\n}\n\nexport const emitEvent = async (event, ...args) => {\n const listeners = state.listenerMap[event] || []\n for (const listener of listeners) {\n await listener(...args)\n }\n}\n\nexport const addListener = (event, fn) => {\n state.listenerMap[event] ||= []\n if (state.listenerMap[event].includes(fn)) {\n return\n }\n state.listenerMap[event].push(fn)\n}\n\nexport const removeListener = (event, fn) => {\n const listeners = state.listenerMap[event]\n if (!listeners) {\n console.info(\n `[info] listener for event ${event} is not registered and cannot be unregistered`\n )\n return\n }\n const index = listeners.indexOf(fn)\n listeners.splice(index, 1)\n if (listeners.length === 0) {\n delete state.listenerMap[event]\n }\n}\n", "export const splitLines = (lines) => {\n return lines.split('\\n')\n}\n", "// TODO merge all of this with extension host languages module\n\nimport * as Assert from '../Assert/Assert.js'\nimport * as CodeFrameColumns from '../CodeFrameColumns/CodeFrameColumns.js'\nimport * as ExtensionHostLanguages from '../ExtensionHost/ExtensionHostLanguages.js'\nimport * as GlobalEventBus from '../GlobalEventBus/GlobalEventBus.js'\nimport * as SplitLines from '../SplitLines/SplitLines.js'\n\nexport const state = {\n loadState: false,\n isHydrating: false,\n fileNameMap: Object.create(null),\n extensionMap: Object.create(null),\n tokenizerMap: Object.create(null),\n /**\n * @type {any[]}\n */\n firstLines: [],\n /**\n * @type {string[]}\n */\n hasWarned: [],\n}\n\nexport const getLanguageId = (fileName) => {\n Assert.string(fileName)\n // TODO this is inefficient for icon theme, as file extension is computed twice\n const extensionIndex = fileName.lastIndexOf('.')\n const extension = fileName.slice(extensionIndex)\n const extensionLower = extension.toLowerCase()\n const { extensionMap, fileNameMap } = state\n if (extensionMap[extensionLower]) {\n return extensionMap[extensionLower]\n }\n const fileNameLower = fileName.toLowerCase()\n const secondExtensionIndex = fileName.lastIndexOf('.', extensionIndex - 1)\n const secondExtension = fileName.slice(secondExtensionIndex)\n if (secondExtensionIndex !== -1 && extensionMap[secondExtension]) {\n return extensionMap[secondExtension]\n }\n if (fileNameMap[fileNameLower]) {\n return fileNameMap[fileNameLower]\n }\n return 'unknown'\n}\n\nexport const getLanguageIdByFirstLine = (firstLine) => {\n for (const { regex, languageId } of state.firstLines) {\n const actualRegex = new RegExp(regex)\n if (actualRegex.test(firstLine)) {\n return languageId\n }\n }\n return 'unknown'\n}\n\nexport const getTokenizeFunctionPath = (languageId) => {\n // TODO what if language.tokenize is not of type string? -> handle error gracefully\n return state.tokenizerMap[languageId] || ''\n}\n\nexport const hydrate = async () => {\n state.isHydrating = true\n // TODO handle error\n // TODO main parts should have nothing todo with shared process -> only sub components\n const languages = await ExtensionHostLanguages.getLanguages()\n // TODO avoid side effect here, but how?\n await addLanguages(languages)\n state.loaded = true\n}\n\n// TODO make contribution points not rely on globals and side effects\nconst contributionPointFileExtensions = {\n key: 'fileExtensions',\n handle(value, languageId) {\n if (value) {\n console.warn(\n `[renderer-worker] unsupported property \"fileExtensions\" for language ${languageId}, use the property \"extensions\" instead`\n )\n }\n },\n}\n\nconst contributionPointFileNames = {\n key: 'fileNames',\n handle(value, languageId) {\n if (value && Array.isArray(value)) {\n for (const fileName of value) {\n if (typeof fileName === 'string') {\n const fileNameLower = fileName.toLowerCase()\n state.fileNameMap[fileNameLower] = languageId\n } else {\n console.warn(\n `[renderer-worker] language.fileNames for ${languageId} should be an array of strings but includes ${typeof fileName}`\n )\n }\n }\n state.fileNameMap\n }\n },\n}\n\nconst contributionPointFirstLine = {\n key: 'firstLine',\n handle(value, languageId) {\n state.firstLines.push({ regex: value, languageId })\n },\n}\n\nconst warnFileNames = (languageId, language) => {\n if (state.hasWarned.includes(languageId)) {\n return\n }\n state.hasWarned.push(languageId)\n const code = JSON.stringify(language, null, 2)\n const lines = SplitLines.splitLines(code)\n let rowIndex = 0\n let columnIndex = 0\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i]\n const fileNamesIndex = line.indexOf('filenames')\n if (fileNamesIndex !== -1) {\n rowIndex = i\n columnIndex = fileNamesIndex\n break\n }\n }\n const codeFrame = CodeFrameColumns.create(code, {\n start: {\n line: rowIndex + 1,\n column: columnIndex + 1,\n },\n end: {\n line: rowIndex + 1,\n column: columnIndex + 'filenames'.length + 1,\n },\n })\n console.warn(\n `Please use \"fileNames\" instead of \"filenames\" for language ${languageId}\n${codeFrame}\n`\n )\n}\n\nconst contributionPointFileNamesLower = {\n key: 'filenames',\n handle(value, languageId, language) {\n warnFileNames(languageId, language)\n contributionPointFileNames.handle(value, languageId)\n },\n}\n\nconst contributionPointExtensions = {\n key: 'extensions',\n handle(value, languageId) {\n if (value && Array.isArray(value)) {\n for (const extension of value) {\n if (typeof extension === 'string') {\n state.extensionMap[extension] = languageId\n } else {\n console.warn(\n `[renderer-worker] language.extensions for ${languageId} should be an array of strings but includes ${typeof extension}`\n )\n }\n }\n }\n },\n}\n\nconst contributionPointTokenize = {\n key: 'tokenize',\n handle(value, languageId) {\n if (value) {\n state.tokenizerMap[languageId] = value\n }\n },\n}\n\nconst contributionPoints = [\n contributionPointFileExtensions,\n contributionPointExtensions,\n contributionPointFileNames,\n contributionPointFileNamesLower,\n contributionPointTokenize,\n contributionPointFirstLine,\n]\n\nexport const addLanguage = (language) => {\n const languageId = language.id\n if (!languageId) {\n console.warn(`[renderer-worker] language is missing id`, language)\n return\n }\n // TODO could use object destructuing here\n // TODO maybe map the other way around from language keys to contribution points\n for (const contributionPoint of contributionPoints) {\n const value = language[contributionPoint.key]\n if (value) {\n contributionPoint.handle(value, languageId, language)\n }\n }\n}\n\nexport const addLanguages = async (languages) => {\n for (const language of languages) {\n addLanguage(language)\n }\n await GlobalEventBus.emitEvent('languages.changed')\n}\n\nexport const hasLoaded = () => {\n return state.loaded\n}\n\nexport const waitForLoad = async () => {\n // if (state.isHydrating) {\n await new Promise((resolve) => {\n const handleLanguageChange = (editor, languageId) => {\n resolve(undefined)\n }\n // TODO remove event listener when promise is resolved\n // TODO what if this event is never emitted (e.g. languages fail to load)\n GlobalEventBus.addListener('languages.changed', handleLanguageChange)\n })\n // } else {\n // await hydrate()\n // }\n}\n\nexport const getLanguageConfiguration = async (editor) => {\n if (!hasLoaded()) {\n throw new Error(\n 'languages must be loaded before requesting language configuration'\n )\n }\n editor.languageId = getLanguageId(editor.uri)\n const languageConfiguration = ExtensionHostLanguages.getLanguageConfiguration(\n editor.languageId\n )\n return languageConfiguration\n}\n", "import * as Command from '../Command/Command.js'\nimport * as ExtensionManifestStatus from '../ExtensionManifestStatus/ExtensionManifestStatus.js'\nimport * as ErrorCodes from '../ErrorCodes/ErrorCodes.js'\nimport * as Languages from '../Languages/Languages.js'\nimport * as Platform from '../Platform/Platform.js'\nimport * as PlatformType from '../PlatformType/PlatformType.js'\nimport * as SharedProcess from '../SharedProcess/SharedProcess.js'\nimport { VError } from '../VError/VError.js'\n\nexport const state = {\n /**\n * @type {any[]}\n */\n webExtensions: [],\n}\n\nconst getId = (path) => {\n const slashIndex = path.lastIndexOf('/')\n return path.slice(slashIndex + 1)\n}\n\nconst getWebExtensionManifest = async (path) => {\n try {\n const manifestPath = `${path}/extension.json`\n const manifest = await Command.execute(\n /* Ajax.getJson */ 'Ajax.getJson',\n /* url */ manifestPath\n )\n return {\n ...manifest,\n path,\n }\n } catch (error) {\n const id = getId(path)\n throw new VError(error, `Failed to load extension manifest for ${id}`)\n }\n}\n\nexport const addWebExtension = async (path) => {\n const manifest = await getWebExtensionManifest(path)\n // TODO avoid side effect here\n if (manifest.languages) {\n for (const language of manifest.languages) {\n if (language.tokenize) {\n language.tokenize = manifest.path + '/' + language.tokenize\n }\n }\n }\n manifest.status = ExtensionManifestStatus.Resolved\n state.webExtensions.push(manifest)\n if (manifest.languages) {\n // TODO handle case when languages is not of type array\n await Languages.addLanguages(manifest.languages)\n }\n}\n\nconst getSharedProcessExtensions = () => {\n return SharedProcess.invoke(\n /* ExtensionManagement.getExtensions */ 'ExtensionManagement.getExtensions'\n )\n}\n\nconst getStaticWebExtensions = () => {\n const webExtensionsUrl = Platform.getWebExtensionsUrl()\n return Command.execute('Ajax.getJson', webExtensionsUrl)\n}\n\nconst getWebExtensionsWeb = async () => {\n const staticWebExtensions = await getStaticWebExtensions()\n return [...staticWebExtensions, ...state.webExtensions]\n}\n\nconst isWebExtension = (extension) => {\n return extension && typeof extension.browser === 'string'\n}\n\nconst getWebExtensionsDefault = async () => {\n const staticWebExtensions = await getStaticWebExtensions()\n const sharedProcessExtensions = await getSharedProcessExtensions()\n const sharedProcessWebExtensions =\n sharedProcessExtensions.filter(isWebExtension)\n return [\n ...staticWebExtensions,\n sharedProcessWebExtensions,\n ...state.webExtensions,\n ]\n}\n\nconst getWebExtensions = async () => {\n try {\n switch (Platform.platform) {\n case PlatformType.Web:\n return getWebExtensionsWeb()\n default:\n return getWebExtensionsDefault()\n }\n } catch {\n return state.webExtensions\n }\n}\n\n// TODO status fulfilled should be handled as resolved\nexport const organizeExtensions = (extensions) => {\n const rejected = []\n const resolved = []\n for (const extension of extensions) {\n switch (extension.status) {\n case ExtensionManifestStatus.Resolved:\n resolved.push(extension)\n break\n case ExtensionManifestStatus.Rejected:\n rejected.push(extension)\n break\n default:\n resolved.push(extension)\n break\n }\n }\n return {\n resolved,\n rejected,\n }\n}\n\nexport const filterByMatchingEvent = (extensions, event) => {\n const extensionsToActivate = []\n for (const extension of extensions) {\n // TODO handle error when extension.activation is not of type array (null or number or ...)\n if (extension.activation && extension.activation.includes(event)) {\n extensionsToActivate.push(extension)\n }\n }\n return extensionsToActivate\n}\n\nconst getCodeFrameFromError = (error) => {\n if (error && error.jse_cause && error.jse_cause.codeFrame) {\n return error.jse_cause.codeFrame\n }\n return ''\n}\n\nconst getOriginalStackFromError = (error) => {\n if (error && error.originalStack) {\n return error.originalStack\n }\n return ''\n}\n\nconst handleRejectedExtension = async (extension) => {\n const { reason } = extension\n const { message, code } = reason\n if (code === ErrorCodes.E_MANIFEST_NOT_FOUND || code === ErrorCodes.ENOTDIR) {\n return\n }\n const codeFrame = getCodeFrameFromError(reason)\n const stack = getOriginalStackFromError(reason)\n await Command.execute(\n /* Dialog.showMessage */ 'Dialog.showMessage',\n /* error */ { message, codeFrame, stack }\n )\n}\n\nexport const handleRejectedExtensions = async (extensions) => {\n for (const extension of extensions) {\n await handleRejectedExtension(extension)\n }\n}\n\nexport const getExtensions = async () => {\n if (Platform.platform === PlatformType.Web) {\n const webExtensions = await getWebExtensions()\n return webExtensions\n }\n if (Platform.platform === PlatformType.Remote) {\n const webExtensions = await getWebExtensions()\n const sharedProcessExtensions = await getSharedProcessExtensions()\n return [...sharedProcessExtensions, ...webExtensions]\n }\n const extensions = await getSharedProcessExtensions()\n return extensions\n}\n\nexport const addNodeExtension = async (path) => {\n // TODO add support for dynamically loading node extensions\n // e.g. for testing multiple extensions\n throw new Error('not implemented')\n}\n", "// based on https://github.com/microsoft/vscode/blob/c0769274fa136b45799edeccc0d0a2f645b75caf/src/vs/base/common/arrays.ts#L625 (License MIT)\n\nexport const insertInto = (array, start, newItems) => {\n const originalLength = array.length\n const newItemsLength = newItems.length\n array.length = originalLength + newItemsLength\n // Move the items after the start index, start from the end so that we don't overwrite any value.\n for (let i = originalLength - 1; i >= start; i--) {\n array[i + newItemsLength] = array[i]\n }\n\n for (let i = 0; i < newItemsLength; i++) {\n array[i + start] = newItems[i]\n }\n}\n\n/**\n * Alternative to the native Array.splice method, it\n * can only support limited number of items due to the maximum call stack size limit.\n */\nexport const splice = (array, start, deleteCount, newItems) => {\n const result = array.splice(start, deleteCount)\n insertInto(array, start, newItems)\n return result\n}\n\nexport const last = (array) => {\n return array[array.length - 1]\n}\n\nexport const first = (array) => {\n return array[0]\n}\n\n// TODO use this function more often\nexport const firstIndex = (array) => {\n return 0\n}\n\n// TODO use this function more often\nexport const lastIndex = (array) => {\n return array.length - 1\n}\n\nexport const fromAsync = async (asyncIterable) => {\n const children = []\n for await (const value of asyncIterable) {\n children.push(value)\n }\n return children\n}\n\nexport const findObjectIndex = (array, key, value) => {\n for (let i = 0; i < array.length; i++) {\n const element = array[i]\n if (element[key] === value) {\n return i\n }\n }\n return -1\n}\n\nexport const isLastIndex = (array, index) => {\n return index === array.length - 1\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as Arrays from '../Arrays/Arrays.js'\nimport * as SplitLines from '../SplitLines/SplitLines.js'\n\nexport const create = (text) => {\n const lines = SplitLines.splitLines(text)\n const state = {\n lines,\n }\n // TODO send to shared process somehow\n return state\n}\n\n// TODO have function for single edit (most common, avoid one array)\nexport const applyEdits = (textDocument, changes) => {\n Assert.object(textDocument)\n Assert.array(changes)\n // TODO don't copy all lines (can be expensive, e.g. 10000 lines = 10000 * 64bit = 64kB on every keystroke)\n const newLines = [...textDocument.lines]\n for (const change of changes) {\n const startRowIndex = change.start.rowIndex\n const endRowIndex = change.end.rowIndex\n const startColumnIndex = change.start.columnIndex\n const endColumnIndex = change.end.columnIndex\n const inserted = change.inserted\n const deleted = change.deleted\n Assert.number(startRowIndex)\n Assert.number(endRowIndex)\n Assert.number(startColumnIndex)\n Assert.number(endColumnIndex)\n Assert.array(inserted)\n Assert.array(deleted)\n if (startRowIndex === endRowIndex) {\n if (inserted.length === 0) {\n const line = newLines[startRowIndex]\n const before = line.slice(0, startColumnIndex)\n const after = line.slice(endColumnIndex)\n newLines[startRowIndex] = before + after\n } else if (inserted.length === 1) {\n const line = newLines[startRowIndex]\n let before = line.slice(0, startColumnIndex)\n if (startColumnIndex > line.length) {\n before += ' '.repeat(startColumnIndex - line.length)\n }\n const after = line.slice(endColumnIndex)\n const text = inserted[0]\n newLines[startRowIndex] = before + text + after\n } else {\n const line = newLines[startRowIndex]\n const before = line.slice(0, startColumnIndex) + inserted[0]\n const after = inserted.at(-1) + line.slice(endColumnIndex)\n Arrays.splice(newLines, startRowIndex, deleted.length, [\n before,\n ...inserted.slice(1, -1),\n after,\n ])\n // TODO only do this once after all edits, not inside loop\n textDocument.maxLineY = Math.min(\n textDocument.numberOfVisibleLines,\n newLines.length\n )\n }\n } else {\n if (inserted.length === 1) {\n const before =\n newLines[startRowIndex].slice(0, startColumnIndex) + inserted[0]\n const after =\n endRowIndex >= newLines.length\n ? ''\n : newLines[endRowIndex].slice(endColumnIndex)\n Arrays.splice(newLines, startRowIndex, deleted.length, [before + after])\n } else {\n const before =\n newLines[startRowIndex].slice(0, startColumnIndex) + inserted[0]\n const middle = inserted.slice(1, -1)\n const after =\n inserted.at(-1) +\n (endRowIndex >= newLines.length\n ? ''\n : newLines[endRowIndex].slice(endColumnIndex))\n Arrays.splice(newLines, startRowIndex, deleted.length, [\n before,\n ...middle,\n after,\n ])\n }\n // TODO only do this once after all edits, not inside loop\n textDocument.maxLineY = Math.min(\n textDocument.numberOfVisibleLines,\n textDocument.lines.length\n )\n }\n }\n return newLines\n}\n\nexport const getLine = (textDocument, index) => {\n return textDocument.lines[index]\n}\n\nexport const getLineLength = (textDocument, index) => {\n return textDocument.lines[index].length\n}\n\nexport const getText = (state) => {\n return state.lines.join('\\n')\n}\nconst RE_WHITESPACE = /^\\s+/\n\n// TODO this doesn't belong here\nexport const getIndent = (line) => {\n const whitespaceMatch = line.match(RE_WHITESPACE)\n if (!whitespaceMatch) {\n return ''\n }\n return whitespaceMatch[0]\n}\n\n// TDOO this doesn;t belong here\nexport const getSelectionText = (textDocument, range) => {\n Assert.object(textDocument)\n // console.log(range)\n // console.log(textDocument)\n const startRowIndex = range.start.rowIndex\n const startColumnIndex = range.start.columnIndex\n const endRowIndex = Math.min(\n range.end.rowIndex,\n textDocument.lines.length - 1\n )\n const endColumnIndex = range.end.columnIndex\n\n if (startRowIndex === endRowIndex) {\n // console.log(startRowIndex)\n // console.log(textDocument.lines)\n return [\n textDocument.lines[startRowIndex].slice(startColumnIndex, endColumnIndex),\n ]\n }\n const selectedLines = [\n textDocument.lines[startRowIndex].slice(startColumnIndex),\n ...textDocument.lines.slice(startRowIndex + 1, endRowIndex),\n textDocument.lines[endRowIndex].slice(0, endColumnIndex),\n ]\n return selectedLines\n}\n\nexport const offsetAt = (\n textDocument,\n positionRowIndex,\n positionColumnIndex\n) => {\n Assert.object(textDocument)\n Assert.number(positionRowIndex)\n Assert.number(positionColumnIndex)\n let offset = 0\n let rowIndex = 0\n const lines = textDocument.lines\n const max = Math.min(positionRowIndex, textDocument.lines.length)\n while (rowIndex < max) {\n offset += lines[rowIndex].length + 1\n rowIndex++\n }\n offset += positionColumnIndex\n return offset\n}\n\nexport const positionAt = (textDocument, offset) => {\n // console.log({ textDocument, offset })\n let rowIndex = 0\n let columnIndex = 0\n let currentOffset = 0\n while (rowIndex < textDocument.lines.length && currentOffset < offset) {\n textDocument\n currentOffset += textDocument.lines[rowIndex].length + 1\n rowIndex++\n }\n\n if (currentOffset > offset) {\n rowIndex\n rowIndex--\n currentOffset -= textDocument.lines[rowIndex].length + 1\n columnIndex = offset - currentOffset\n } else {\n columnIndex = currentOffset - offset\n }\n currentOffset\n offset\n // for (let i = 0; i < textDocument.lines.length; i++) {\n // if(currentOffset)\n // }\n // TODO\n return {\n rowIndex,\n columnIndex,\n }\n}\n", "import * as Assert from '../Assert/Assert.js'\n\nexport const state = {\n instances: Object.create(null),\n /**\n * @type {any}\n */\n focusedInstance: undefined,\n}\n\nexport const set = (key, value) => {\n Assert.object(value)\n Assert.object(value.factory)\n Assert.object(value.state)\n state.instances[key] = value\n}\n\nexport const getInstance = (key) => {\n return state.instances[key]\n}\n\nexport const hasInstance = (key) => {\n return key in state.instances\n}\n\nexport const remove = (key) => {\n delete state.instances[key]\n}\n\nexport const dispose = async (key) => {\n const instance = state.instances[key]\n delete state.instances[key]\n if (instance.factory.dispose) {\n await instance.factory.dispose(instance.state)\n }\n}\n\nexport const getAllInstances = () => {\n return state.instances\n}\n\nexport const getState = (key) => {\n const instance = getInstance(key)\n if (!instance) {\n throw new Error(`instance not found ${key}`)\n }\n return instance.state\n}\n\nexport const setState = (key, newState) => {\n Assert.string(key)\n Assert.object(newState)\n const instance = getInstance(key)\n instance.state = newState\n}\n\nexport const reset = () => {\n state.instances = Object.create(null)\n}\n\nexport const getFocusedInstance = () => {\n return state.focusedInstance\n}\n\nexport const setFocusedInstance = (state, instance) => {\n state.focusedIndex = instance\n}\n", "import * as RendererProcess from '../RendererProcess/RendererProcess.js'\n\nexport const getPathName = () => {\n return RendererProcess.invoke(\n /* Location.getPathName */ 'Location.getPathName'\n )\n}\n\nexport const getHref = () => {\n return RendererProcess.invoke(/* Location.getHref */ 'Location.getHref')\n}\n\nexport const setPathName = (pathName) => {\n return RendererProcess.invoke(\n /* Location.setPathName */ 'Location.setPathName',\n /* pathName */ pathName\n )\n}\n\nexport const hydrate = () => {\n return RendererProcess.invoke(/* Location.hydrate */ 'Location.hydrate')\n}\n", "import * as ElectronProcess from '../ElectronProcess/ElectronProcess.js'\n\nexport const exit = async () => {\n await ElectronProcess.invoke('App.exit')\n}\n", "import * as ElectronProcess from '../ElectronProcess/ElectronProcess.js'\n\nexport const reload = () => {\n return ElectronProcess.invoke('ElectronWindow.reload')\n}\n\nexport const minimize = () => {\n return ElectronProcess.invoke('ElectronWindow.minimize')\n}\n\nexport const unmaximize = () => {\n return ElectronProcess.invoke('ElectronWindow.unmaximize')\n}\n\nexport const maximize = () => {\n return ElectronProcess.invoke('ElectronWindow.maximize')\n}\n\nexport const close = () => {\n return ElectronProcess.invoke('ElectronWindow.close')\n}\n\nexport const openNew = (url) => {\n return ElectronProcess.invoke('AppWindow.openNew', url)\n}\n\nexport const toggleDevtools = () => {\n return ElectronProcess.invoke('ElectronWindow.toggleDevtools')\n}\n\nexport const zoomIn = () => {\n return ElectronProcess.invoke('ElectronWindow.zoomIn')\n}\n\nexport const zoomOut = () => {\n return ElectronProcess.invoke('ElectronWindow.zoomOut')\n}\n\nexport const focus = () => {\n return ElectronProcess.invoke('ElectronWindow.focus')\n}\n", "import * as ElectronApp from '../ElectronApp/ElectronApp.js'\nimport * as ElectronWindow from '../ElectronWindow/ElectronWindow.js'\nimport * as Platform from '../Platform/Platform.js'\nimport * as RendererProcess from '../RendererProcess/RendererProcess.js'\nimport * as PlatformType from '../PlatformType/PlatformType.js'\n\nconst reloadWeb = () => {\n return RendererProcess.invoke('Window.reload')\n}\n\nconst reloadRemote = () => {\n return RendererProcess.invoke('Window.reload')\n}\n\nconst reloadElectron = async () => {\n return ElectronWindow.reload()\n}\n\nexport const reload = () => {\n switch (Platform.platform) {\n case PlatformType.Web:\n return reloadWeb()\n case PlatformType.Remote:\n return reloadRemote()\n case PlatformType.Electron:\n return reloadElectron()\n default:\n return\n }\n}\n\nexport const setTitle = async (title) => {\n await RendererProcess.invoke(\n /* Window.setTitle */ 'Window.setTitle',\n /* title */ title\n )\n}\n", "export const Slash = '/'\n", "import * as Assert from '../Assert/Assert.js'\nimport * as Command from '../Command/Command.js'\nimport * as FileSystem from '../FileSystem/FileSystem.js'\nimport * as GlobalEventBus from '../GlobalEventBus/GlobalEventBus.js'\nimport * as Location from '../Location/Location.js'\nimport * as Platform from '../Platform/Platform.js'\nimport * as SharedProcess from '../SharedProcess/SharedProcess.js'\nimport * as Window from '../Window/Window.js'\nimport * as PlatformType from '../PlatformType/PlatformType.js'\nimport * as PathSeparatorType from '../PathSeparatorType/PathSeparatorType.js'\nimport * as Preferences from '../Preferences/Preferences.js'\n\nexport const state = {\n workspacePath: '',\n homeDir: '',\n pathSeparator: '',\n workspaceUri: '',\n source: '',\n href: '',\n isTest: false,\n}\n\n/**\n * @param {string|undefined} path\n */\nexport const setPath = async (path) => {\n Assert.string(path)\n // TODO not in electron\n const pathSeparator = await FileSystem.getPathSeparator(path)\n // @ts-ignore\n state.workspacePath = path\n // @ts-ignore\n state.workspaceUri = path\n state.pathSeparator = pathSeparator\n await onWorkspaceChange()\n}\n\nexport const setUri = async (uri) => {\n const path = uri.slice('file://'.length)\n state.workspacePath = path\n state.workspaceUri = uri\n await onWorkspaceChange()\n}\n\nconst getResolvedRootFromSharedProcess = async () => {\n const resolvedRoot = await SharedProcess.invoke(\n /* Workspace.resolveRoot */ 'Workspace.resolveRoot'\n )\n return resolvedRoot\n}\n\nconst isValid = (resolvedRoot) => {\n return (\n resolvedRoot &&\n typeof resolvedRoot.path === 'string' &&\n typeof resolvedRoot.uri === 'string' &&\n typeof resolvedRoot.homeDir === 'string' &&\n typeof resolvedRoot.pathSeparator === 'string'\n )\n}\n\nconst getResolveRootFromSessionStorage = async () => {\n const resolvedRoot = await Command.execute(\n /* SessionStorage.getJson */ 'SessionStorage.getJson',\n /* key */ 'workspace'\n )\n if (!isValid(resolvedRoot)) {\n return undefined\n }\n return resolvedRoot\n}\n\nexport const isTest = () => {\n return state.isTest\n}\n\nconst getResolvedRootFromRendererProcess = async (href) => {\n const url = new URL(href)\n if (href.includes('tests/')) {\n state.isTest = true\n return {\n path: href,\n homeDir: '',\n pathSeparator: PathSeparatorType.Slash,\n source: 'test',\n }\n }\n if (url.pathname.startsWith('/github')) {\n const path = `github://${url.pathname.slice('/github'.length + 1)}`\n return {\n path,\n homeDir: '',\n pathSeparator: PathSeparatorType.Slash,\n source: 'renderer-process',\n }\n }\n\n if (Platform.platform === 'web') {\n const defaultWorkspace = Preferences.get('workspace.defaultWorkspace')\n const resolvedRoot = {\n path: defaultWorkspace,\n homeDir: '',\n pathSeparator: PathSeparatorType.Slash,\n source: 'renderer-process',\n }\n return resolvedRoot\n }\n const resolvedRootFromSessionStorage =\n await getResolveRootFromSessionStorage()\n if (resolvedRootFromSessionStorage) {\n return resolvedRootFromSessionStorage\n }\n\n return undefined\n}\n\nconst getResolvedRootRemote = async (href) => {\n const resolvedRootFromRendererProcess =\n await getResolvedRootFromRendererProcess(href)\n if (resolvedRootFromRendererProcess) {\n return resolvedRootFromRendererProcess\n }\n return getResolvedRootFromSharedProcess()\n}\n\nconst getResolvedRoot = async (href) => {\n switch (Platform.platform) {\n case PlatformType.Web:\n return getResolvedRootFromRendererProcess(href)\n default:\n return getResolvedRootRemote(href)\n }\n}\n\nconst getTitle = (workspacePath) => {\n const pathSeparator = state.pathSeparator\n return workspacePath.slice(workspacePath.lastIndexOf(pathSeparator) + 1)\n}\n\nconst getPathName = (workspacePath) => {\n if (workspacePath.startsWith('github://')) {\n return '/github/' + workspacePath.slice('github://'.length)\n }\n return ''\n}\n\nconst onWorkspaceChange = async () => {\n const title = getTitle(state.workspacePath)\n await Window.setTitle(title)\n if (Platform.platform === 'web' || Platform.platform === 'remote') {\n const pathName = getPathName(state.workspacePath)\n await Location.setPathName(pathName)\n }\n await GlobalEventBus.emitEvent('workspace.change', state.workspacePath)\n}\n\nexport const hydrate = async ({ href }) => {\n if (state.workspacePath) {\n return\n }\n const resolvedRoot = await getResolvedRoot(href)\n if (state.isTest) {\n return\n }\n if (state.workspacePath) {\n return\n }\n // TODO why is this if statement here?\n if (state.homeDir !== resolvedRoot.homeDir) {\n state.homeDir = resolvedRoot.homeDir\n }\n if (!FileSystem.canBeRestored(resolvedRoot.path)) {\n return\n }\n // TODO how to check that path from renderer process is valid?\n // TODO also need to check whether it is a folder or file\n state.workspacePath = resolvedRoot.path\n state.homeDir = resolvedRoot.homeDir\n state.pathSeparator = resolvedRoot.pathSeparator\n state.workspaceUri = resolvedRoot.uri\n state.source = resolvedRoot.source\n await onWorkspaceChange()\n}\n\n/**\n * @deprecated use getWorkspaceUri instead\n * @returns\n */\nexport const getWorkspacePath = () => {\n return state.workspacePath\n}\n\nexport const getWorkspaceUri = () => {\n return state.workspaceUri\n}\n\nexport const getHomeDir = () => {\n return state.homeDir\n}\n\n// TODO this should be in FileSystem module\nexport const pathBaseName = (path) => {\n return path.slice(path.lastIndexOf('/') + 1)\n}\n\n// TODO this should be in FileSystem module\nexport const pathDirName = (path) => {\n const pathSeparator = state.pathSeparator\n return path.slice(0, path.lastIndexOf(pathSeparator))\n}\n\nexport const getAbsolutePath = (relativePath) => {\n if (relativePath.startsWith('./')) {\n return `${state.workspacePath}/${relativePath.slice(2)}` // TODO support windows paths\n }\n return `${state.workspacePath}/${relativePath}` // TODO support windows paths\n}\n", "import * as IpcParentType from '../IpcParentType/IpcParentType.js'\n\nexport const name = 'webExtensionHost'\n\nexport const ipc = IpcParentType.ModuleWorker\n\nexport const canActivate = (extension) => {\n return typeof extension.browser === 'string'\n}\n\nexport const create = () => {\n return {\n // Completion\n executeCompletionProvider:\n ExtensionHostCompletion.executeCompletionProvider,\n\n // Definition\n executeDefinitionProvider() {},\n\n // File system\n readDirWithFileTypes() {},\n\n // Type Definition\n executeTypeDefinitionProvider() {},\n }\n}\n", "import * as IpcParentType from '../IpcParentType/IpcParentType.js'\n\nexport const name = 'nodeExtensionHost'\n\nexport const ipc = IpcParentType.ElectronMessagePort\n\nexport const canActivate = (extension) => {\n return typeof extension.main === 'string'\n}\n", "import * as IpcParentType from '../IpcParentType/IpcParentType.js'\n\nexport const name = 'nodeExtensionHost'\n\nexport const ipc = IpcParentType.WebSocket\n\nexport const canActivate = (extension) => {\n return typeof extension.main === 'string'\n}\n", "import * as IpcParent from '../IpcParent/IpcParent.js'\nimport * as Platform from '../Platform/Platform.js'\n\nexport const listen = (method) => {\n return IpcParent.create({\n method,\n type: 'extension-host',\n name: 'Extension Host',\n url: Platform.getExtensionHostWorkerUrl(),\n })\n}\n", "import * as Callback from '../Callback/Callback.js'\nimport { JsonRpcError } from '../Errors/Errors.js'\nimport * as JsonRpc from '../JsonRpc/JsonRpc.js'\nimport * as JsonRpcErrorCode from '../JsonRpcErrorCode/JsonRpcErrorCode.js'\n\nconst isResultMessage = (message) => {\n return 'result' in message\n}\n\nconst isErrorMessage = (message) => {\n return 'error' in message\n}\n\nconst restoreError = (error) => {\n if (error instanceof Error) {\n return error\n }\n if (error.code && error.code === JsonRpcErrorCode.MethodNotFound) {\n const restoredError = new JsonRpcError(error.message)\n restoredError.stack = error.stack\n return restoredError\n }\n const restoredError = new Error(error.message)\n if (error.data) {\n if (error.data.stack) {\n restoredError.stack = error.data.stack\n }\n if (error.data.codeFrame) {\n // @ts-ignore\n restoredError.codeFrame = error.data.codeFrame\n }\n }\n return restoredError\n}\n\nconst handleMessageResult = (message) => {\n Callback.resolve(message.id, message.result)\n}\n\nconst handleMessageError = (message) => {\n const restoredError = restoreError(message.error)\n Callback.reject(message.id, restoredError)\n}\n\nconst handleMessageMethod = async (message, event) => {\n if (message.method === 'ElectronMessagePort.create') {\n const IpcParentWithElectron = await import(\n '../IpcParent/IpcParentWithElectron.js'\n )\n const ipc = await IpcParentWithElectron.create({\n type: 'extension-host-helper-process',\n })\n event.target.postMessage(\n {\n jsonrpc: '2.0',\n id: message.id,\n result: ipc._port,\n },\n [ipc._port]\n )\n console.log({ ipc, event, target: event.target })\n }\n}\n\nconst handleMessage = (message, event) => {\n if (message.id) {\n if (isResultMessage(message)) {\n handleMessageResult(message)\n } else if (isErrorMessage(message)) {\n handleMessageError(message)\n } else if ('method' in message) {\n handleMessageMethod(message, event)\n } else {\n throw new JsonRpcError('unexpected message type')\n }\n } else {\n throw new JsonRpcError('unexpected message type')\n }\n}\n\nexport const listen = (ipc) => {\n // TODO maybe pass handleMessage as paramter to make code more functional\n ipc.onmessage = handleMessage\n return {\n invoke(method, ...params) {\n return JsonRpc.invoke(ipc, method, ...params)\n },\n }\n}\n", "import * as ExtensionHostIpc from '../ExtensionHostIpc/ExtensionHostIpc.js'\nimport * as ExtensionHostRpc from '../ExtensionHostRpc/ExtensionHostRpc.js'\n\n/**\n * @enum {number}\n */\nconst ExtensionHostState = {\n Off: 0,\n Loading: 1,\n Running: 2,\n Error: 3,\n}\n\nexport const state = {\n extensionPromiseCache: Object.create(null),\n extensionHosts: Object.create(null),\n pendingIpcs: Object.create(null),\n}\n\nconst toActivatableExtension = (extension) => {\n return {\n path: extension.path,\n id: extension.id,\n main: extension.main,\n }\n}\n\n// const startExtensionHost = async (type) => {\n// return ExtensionHostIpc.listen(ExtensionHostIpc.Methods.SharedProcess)\n// }\n\nexport const startExtensionHost = async (name, ipcType) => {\n const exisingIpcPromise = state.pendingIpcs[name]\n if (exisingIpcPromise) {\n const ipc = await exisingIpcPromise\n return {\n name: ipcType,\n ipc,\n }\n }\n if (state.extensionHosts[name]) {\n return state.extensionHosts[name]\n }\n const promise = ExtensionHostIpc.listen(ipcType).then(ExtensionHostRpc.listen)\n state.pendingIpcs[name] = promise\n const ipc = await promise\n delete state.pendingIpcs[name]\n state.extensionHosts[name] = {\n state: ExtensionHostState.Running,\n ipc,\n name: ipcType,\n }\n return state.extensionHosts[name]\n}\n\nexport const stopExtensionHost = async (key) => {\n const existingExtensionHost = state.extensionHosts[key]\n if (existingExtensionHost) {\n switch (existingExtensionHost.state) {\n case ExtensionHostState.Off:\n throw new Error('extension host cannot be off')\n case ExtensionHostState.Loading:\n case ExtensionHostState.Error:\n existingExtensionHost.ipc.dispose()\n break\n default:\n throw new Error('invalid extension host state')\n }\n }\n}\n\nexport const canActivate = (manager, extensions) => {\n return extensions.some(manager.canActivate)\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as ExtensionMeta from '../ExtensionMeta/ExtensionMeta.js'\nimport * as GlobalEventBus from '../GlobalEventBus/GlobalEventBus.js'\nimport * as Platform from '../Platform/Platform.js'\nimport * as PlatformType from '../PlatformType/PlatformType.js'\nimport * as TextDocument from '../TextDocument/TextDocument.js'\nimport * as ViewletStates from '../ViewletStates/ViewletStates.js'\nimport * as Workspace from '../Workspace/Workspace.js'\nimport * as ExtensionHostManagementBrowser from './ExtensionHostManagementBrowser.js'\nimport * as ExtensionHostManagementElectron from './ExtensionHostManagementElectron.js'\nimport * as ExtensionHostManagementNode from './ExtensionHostManagementNode.js'\nimport * as ExtensionHostManagementShared from './ExtensionHostManagementShared.js'\n\nexport const state = {\n /**\n * @type {any[]}\n */\n extensionHosts: [],\n cachedActivationEvents: Object.create(null),\n}\n\nconst getExtensionHostManagementTypes = () => {\n const platform = Platform.platform\n switch (platform) {\n case PlatformType.Web:\n return [ExtensionHostManagementBrowser]\n case PlatformType.Remote:\n return [ExtensionHostManagementBrowser, ExtensionHostManagementNode]\n case PlatformType.Electron:\n return [ExtensionHostManagementBrowser, ExtensionHostManagementElectron]\n default:\n throw new Error('unsupported platform')\n }\n}\n\nconst getManagersWithExtensionsToActivate = (\n extensionHostManagers,\n extensions\n) => {\n const managersToActivate = []\n for (const manager of extensionHostManagers) {\n const toActivate = []\n for (const extension of extensions) {\n if (manager.canActivate(extension)) {\n toActivate.push(extension)\n }\n }\n if (toActivate.length > 0) {\n managersToActivate.push({ manager, toActivate })\n }\n }\n return managersToActivate\n}\n\nconst startSynching = async (extensionHost) => {\n const handleEditorCreate = (editor) => {\n const text = TextDocument.getText(editor)\n return extensionHost.ipc.invoke(\n 'ExtensionHostTextDocument.syncFull',\n editor.uri,\n editor.id,\n editor.languageId,\n text\n )\n }\n GlobalEventBus.addListener('editor.create', handleEditorCreate)\n\n const handleEditorChange = (editor, changes) => {\n return extensionHost.ipc.invoke(\n 'ExtensionHostTextDocument.syncIncremental',\n editor.id,\n changes\n )\n }\n GlobalEventBus.addListener('editor.change', handleEditorChange)\n\n const handleEditorLanguageChange = (editor) => {\n return extensionHost.ipc.invoke(\n 'ExtensionHostTextDocument.setLanguageId',\n editor.id,\n editor.languageId\n )\n }\n\n GlobalEventBus.addListener(\n 'editor.languageChange',\n handleEditorLanguageChange\n )\n\n const handleWorkspaceChange = async (workspacePath) => {\n await extensionHost.ipc.invoke('Workspace.setWorkspacePath', workspacePath)\n if (Workspace.state.mockExec) {\n await extensionHost.ipc.invoke(\n 'ExtensionHostMockExec.mockExec',\n `${Workspace.state.mockExec}`\n )\n }\n }\n\n const handlePreferencesChange = () => {\n return extensionHost.ipc.invoke('Configuration.configurationChanged')\n }\n\n GlobalEventBus.addListener('workspace.change', handleWorkspaceChange)\n GlobalEventBus.addListener('preferences.changed', handlePreferencesChange)\n\n const instances = ViewletStates.getAllInstances()\n const editorInstance = instances.EditorText\n if (editorInstance) {\n await handleEditorCreate(editorInstance.state)\n }\n await handleWorkspaceChange(Workspace.state.workspacePath, Workspace.isTest())\n}\n\nconst actuallyActivateByEvent = async (event) => {\n // TODO should not query extensions multiple times\n const extensions = await ExtensionMeta.getExtensions()\n const { resolved, rejected } = ExtensionMeta.organizeExtensions(extensions)\n // TODO if many (more than two?) extensions cannot be loaded,\n // it shouldn't should that many error messages\n await ExtensionMeta.handleRejectedExtensions(rejected)\n const extensionsToActivate = ExtensionMeta.filterByMatchingEvent(\n resolved,\n event\n )\n // TODO how to handle when multiple reference providers are registered for nodejs and webworker extension host?\n // what happens when all of them / some of them throw error?\n // what happens when some of them take very long to activate?\n\n const extensionHostManagerTypes = getExtensionHostManagementTypes()\n const extensionHostsWithExtensions = getManagersWithExtensionsToActivate(\n extensionHostManagerTypes,\n extensionsToActivate\n )\n const extensionHosts = []\n for (const managerWithExtensions of extensionHostsWithExtensions) {\n const extensionHost =\n await ExtensionHostManagementShared.startExtensionHost(\n managerWithExtensions.manager.name,\n managerWithExtensions.manager.ipc\n )\n // TODO register text document change listener and sync text documents\n await startSynching(extensionHost)\n Assert.object(extensionHost)\n for (const extension of managerWithExtensions.toActivate) {\n // TODO tell extension host to activate extension\n await extensionHost.ipc.invoke(\n 'ExtensionHostExtension.enableExtension',\n extension\n )\n }\n extensionHosts.push(extensionHost)\n }\n\n state.extensionHosts = extensionHosts\n\n // TODO support querying completion items from multiple extension hosts\n // e.g. completion items from node extension host and word based completions from web worker extension host\n return extensionHosts\n}\n\n// TODO add tests for this\nexport const activateByEvent = async (event) => {\n Assert.string(event)\n if (!(event in state.cachedActivationEvents)) {\n state.cachedActivationEvents[event] = actuallyActivateByEvent(event)\n }\n return state.cachedActivationEvents[event]\n}\n\nexport const getExtensionHosts = () => {\n return state.extensionHosts\n}\n", "import * as ExtensionHostManagement from '../ExtensionHostManagement/ExtensionHostManagement.js'\n\nexport const executeProviders = async ({\n event,\n method,\n params,\n noProviderFoundMessage = 'No provider found',\n noProviderFoundResult,\n combineResults,\n}) => {\n const extensionHosts = await ExtensionHostManagement.activateByEvent(event)\n if (extensionHosts.length === 0) {\n return noProviderFoundResult ?? undefined\n }\n const promises = []\n for (const extensionHost of extensionHosts) {\n promises.push(extensionHost.ipc.invoke(method, ...params))\n }\n const results = await Promise.all(promises)\n const combinedResult = combineResults(results)\n return combinedResult\n}\n\nexport const executeProvider = async ({\n event,\n method,\n params,\n noProviderFoundMessage,\n}) => {\n const extensionHosts = await ExtensionHostManagement.activateByEvent(event)\n if (extensionHosts.length === 0) {\n throw new Error(noProviderFoundMessage)\n }\n const promises = []\n for (const extensionHost of extensionHosts) {\n promises.push(extensionHost.ipc.invoke(method, ...params))\n }\n const results = await Promise.all(promises)\n return results[0]\n}\n\nexport const execute = async ({ method, params }) => {\n const extensionHosts = ExtensionHostManagement.getExtensionHosts()\n for (const extensionHost of extensionHosts) {\n const result = await extensionHost.ipc.invoke(method, ...params)\n }\n}\n", "import * as ExtensionHostShared from './ExtensionHostShared.js'\n\nexport const readFile = (protocol, path) => {\n // TODO there shouldn't be multiple file system providers for the same protocol\n return ExtensionHostShared.executeProvider({\n event: `onFileSystem:${protocol}`,\n method: 'ExtensionHostFileSystem.readFile',\n params: [protocol, path],\n noProviderFoundMessage: 'no file system provider found',\n })\n}\n\nexport const remove = (protocol, path) => {\n return ExtensionHostShared.executeProvider({\n event: `onFileSystem:${protocol}`,\n method: 'ExtensionHostFileSystem.remove',\n params: [protocol, path],\n noProviderFoundMessage: 'no file system provider found',\n })\n}\n\n/**\n *\n * @param {string} protocol\n * @param {string} oldPath\n * @param {string} newPath\n */\nexport const rename = (protocol, oldPath, newPath) => {\n return ExtensionHostShared.executeProvider({\n event: `onFileSystem:${protocol}`,\n method: 'ExtensionHostFileSystem.rename',\n params: [protocol, oldPath, newPath],\n noProviderFoundMessage: 'no file system provider found',\n })\n}\n\nexport const mkdir = (protocol, path) => {\n return ExtensionHostShared.executeProvider({\n event: `onFileSystem:${protocol}`,\n method: 'ExtensionHostFileSystem.mkdir',\n params: [protocol, path],\n noProviderFoundMessage: 'no file system provider found',\n })\n}\n\nexport const createFile = (protocol, path) => {\n return ExtensionHostShared.executeProvider({\n event: `onFileSystem:${protocol}`,\n method: 'ExtensionHostFileSystem.writeFile',\n params: [protocol, path, ''],\n noProviderFoundMessage: 'no file system provider found',\n })\n}\n\nexport const createFolder = (protocol, path) => {\n return ExtensionHostShared.executeProvider({\n event: `onFileSystem:${protocol}`,\n method: 'ExtensionHostFileSystem.createFolder',\n params: [protocol, path],\n noProviderFoundMessage: 'no file system provider found',\n })\n}\n\nexport const writeFile = (protocol, path, content) => {\n return ExtensionHostShared.executeProvider({\n event: `onFileSystem:${protocol}`,\n method: 'ExtensionHostFileSystem.writeFile',\n params: [protocol, path, content],\n noProviderFoundMessage: 'no file system provider found',\n })\n}\n\nexport const readDirWithFileTypes = (protocol, path) => {\n return ExtensionHostShared.executeProvider({\n event: `onFileSystem:${protocol}`,\n method: 'ExtensionHostFileSystem.readDirWithFileTypes',\n params: [protocol, path],\n noProviderFoundMessage: 'no file system provider found',\n })\n}\n\nexport const getPathSeparator = (protocol) => {\n return ExtensionHostShared.executeProvider({\n event: `onFileSystem:${protocol}`,\n method: 'ExtensionHostFileSystem.getPathSeparator',\n params: [protocol],\n noProviderFoundMessage: 'no file system provider found',\n })\n}\n", "export const App = 'app'\n\nexport const GitHub = 'github'\n\nexport const Web = 'web'\n\nexport const Data = 'data'\n\nexport const Memfs = 'memfs'\n\nexport const Html = 'html'\n\nexport const ExtensionHost = 'extension-host'\n\nexport const Fetch = 'fetch'\n", "import * as Command from '../Command/Command.js'\n\nexport const readFile = () => {\n return Command.execute(\n /* Developer.getStartupPerformanceContent */ 'Developer.getStartupPerformanceContent'\n )\n}\n\nexport const writeFile = () => {\n throw new Error('not implemented')\n}\n", "import * as Command from '../Command/Command.js'\n\nexport const readFile = () => {\n return Command.execute('Developer.getMemoryUsageContent')\n}\n\nexport const writeFile = () => {\n throw new Error('not implemened')\n}\n", "import { VError } from '../VError/VError.js'\n\nexport const stringify = (value) => {\n return JSON.stringify(value, null, 2) + '\\n'\n}\n\nexport const parse = (content) => {\n // TODO use better json parse to throw more helpful error messages if json is invalid\n try {\n return JSON.parse(content)\n } catch (error) {\n throw new VError(error, 'failed to parse json')\n }\n}\n", "import * as RendererProcess from '../RendererProcess/RendererProcess.js'\nimport * as Json from '../Json/Json.js'\n\nexport const clear = async (storageType) => {\n await RendererProcess.invoke(\n /* WebStorage.clear */ 'WebStorage.clear',\n /* StorageType */ storageType\n )\n}\n\nexport const getText = async (storageType, key) => {\n const item = await RendererProcess.invoke(\n /* WebStorage.getItem */ 'WebStorage.getItem',\n /* storageType */ storageType,\n /* key */ key\n )\n return item || ''\n}\n\nexport const getJson = async (storageType, key) => {\n const item = await getText(storageType, key)\n if (!item) {\n return undefined\n }\n try {\n return Json.parse(item)\n } catch {\n return undefined\n }\n}\n\nexport const setText = async (storageType, key, value) => {\n await RendererProcess.invoke(\n /* WebStorage.setItem */ 'WebStorage.setItem',\n /* storageType */ storageType,\n /* key */ key,\n /* value */ value\n )\n}\n\nexport const setJson = async (storageType, key, value) => {\n const stringifiedValue = Json.stringify(value)\n await setText(storageType, key, stringifiedValue)\n}\n", "export const LocalStorage = 1\n\nexport const SessionStorage = 2\n", "import * as WebStorage from '../WebStorage/WebStorage.js'\nimport * as WebStorageType from '../WebStorageType/WebStorageType.js'\n\nexport const clear = () => {\n return WebStorage.clear(WebStorageType.LocalStorage)\n}\n\nexport const getText = (key) => {\n return WebStorage.getText(WebStorageType.LocalStorage, key)\n}\n\nexport const getJson = (key) => {\n return WebStorage.getJson(WebStorageType.LocalStorage, key)\n}\n\nexport const setText = (key, value) => {\n return WebStorage.setText(WebStorageType.LocalStorage, key, value)\n}\n\nexport const setJson = (key, value) => {\n return WebStorage.setJson(WebStorageType.LocalStorage, key, value)\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as Command from '../Command/Command.js'\nimport * as ErrorCodes from '../ErrorCodes/ErrorCodes.js'\nimport * as LocalStorage from '../LocalStorage/LocalStorage.js'\nimport * as Platform from '../Platform/Platform.js'\nimport * as PlatformType from '../PlatformType/PlatformType.js'\nimport * as Workspace from '../Workspace/Workspace.js'\nimport * as FileSystem from './FileSystem.js'\n\nexport const readFileInternal = async (getPath, defaultContent = '') => {\n const path = await getPath()\n Assert.string(path)\n if (Platform.platform === PlatformType.Web) {\n const settingsJsonContent = await LocalStorage.getText(path)\n if (settingsJsonContent) {\n return settingsJsonContent\n }\n const assetDir = Platform.getAssetDir()\n const url = `${assetDir}/config/defaultSettings.json`\n return Command.execute(/* Ajax.getText */ 'Ajax.getText', /* url */ url)\n }\n // TODO handle enoent and other errors gracefully\n try {\n const userSettingsContent = await FileSystem.readFile(path)\n return userSettingsContent\n } catch (error) {\n // @ts-ignore\n if (error && error.code === ErrorCodes.ENOENT) {\n const dirname = Workspace.pathDirName(path)\n await FileSystem.mkdir(dirname)\n await FileSystem.writeFile(path, defaultContent)\n return defaultContent\n }\n throw error\n }\n}\n\nexport const writeFileInternal = async (getPath, content) => {\n const path = await getPath()\n Assert.string(path)\n if (Platform.platform === PlatformType.Web) {\n await Command.execute(\n /* LocalStorage.setText */ 'LocalStorage.setText',\n /* key */ path,\n /* value */ content\n )\n return\n }\n // TODO handle enoent and other errors gracefully\n try {\n await FileSystem.writeFile(path, content)\n } catch (error) {\n // TODO error should just have enoent code that could be checked\n\n // @ts-ignore\n if (error && error.code === ErrorCodes.ENOENT) {\n try {\n const dirname = Workspace.pathDirName(path)\n await FileSystem.mkdir(dirname)\n await FileSystem.writeFile(path, content)\n } catch (error) {\n // @ts-ignore\n error.message = `Failed to write ${path}: ${error.message}`\n throw error\n }\n } else {\n // @ts-ignore\n error.message = `Failed to write ${path}: ${error.message}`\n throw error\n }\n }\n}\n", "import * as Platform from '../Platform/Platform.js'\nimport * as FileSystemAppShared from './FileSystemAppShared.js'\n\nconst defaultContent = '{}'\n\nexport const readFile = () => {\n return FileSystemAppShared.readFileInternal(\n Platform.getUserSettingsPath,\n defaultContent\n )\n}\n\nexport const writeFile = (content) => {\n return FileSystemAppShared.writeFileInternal(\n Platform.getUserSettingsPath,\n content\n )\n}\n\nexport const readJson = () => {}\n\nexport const writeJson = (json) => {}\n", "import * as Platform from '../Platform/Platform.js'\nimport * as FileSystemAppShared from './FileSystemAppShared.js'\n\nexport const writeFile = (content) => {\n return FileSystemAppShared.writeFileInternal(\n Platform.getRecentlyOpenedPath,\n content\n )\n}\n\nexport const readFile = () => {\n return FileSystemAppShared.readFileInternal(Platform.getRecentlyOpenedPath)\n}\n", "import * as Command from '../Command/Command.js'\n\n// TODO use https://github.com/stack-tools-js/stack-tools to print error\n\nconst enhanceErrorMessage = (error) => {\n if (!error) {\n return {\n message: `Error: ${error}`,\n stack: undefined,\n codeFrame: undefined,\n }\n }\n let message = `${error}`\n while (error.cause) {\n error = error.cause\n message += `: ${error}`\n }\n return {\n message,\n stack: error.originalStack,\n codeFrame: error.originalCodeFrame,\n category: error.category,\n stderr: error.stderr,\n }\n}\n\n// const getErrorMessage = (error) => {\n// let message = ``\n// if (error && error.message) {\n// message += error.message\n// }\n// if (error && error.stack) {\n// message += `\\n${error.stack}`\n// }\n// if (error && error.cause) {\n// message += getErrorMessage(error.cause)\n// }\n// return message\n// }\n\n// const printError = (error) => {\n// const message = getErrorMessage(error)\n// console.error(message)\n// }\n\nexport const printError = (error) => {\n if (error && error.message && error.codeFrame) {\n console.error(`${error.message}\\n\\n${error.codeFrame}\\n\\n${error.stack}`)\n } else {\n console.error(error)\n if (error && error.cause) {\n console.error('caused by')\n printError(error.cause)\n }\n }\n}\n\nexport const state = {\n /**\n * @type {string[]}\n */\n seenWarnings: [],\n}\n\nexport const handleError = async (error) => {\n try {\n printError(error)\n const enhancedErrorMessage = enhanceErrorMessage(error)\n await Command.execute(\n /* Notification.create */ 'Notification.create',\n /* type */ 'error',\n /* text */ enhancedErrorMessage.message\n )\n } catch {\n // ignore\n }\n}\n\nexport const showErrorDialog = async (error) => {\n try {\n const enhancedErrorMessage = enhanceErrorMessage(error)\n await Command.execute(\n /* Dialog.showMessage */ 'Dialog.showMessage',\n /* message */ enhancedErrorMessage\n )\n } catch {\n // ignore\n }\n}\n\nexport const warn = (...args) => {\n const stringified = JSON.stringify(args)\n if (state.seenWarnings.includes(stringified)) {\n return\n }\n state.seenWarnings.push(stringified)\n console.warn(...args)\n}\n\n/**\n * @param {PromiseRejectionEvent} event\n */\nexport const handleUnhandledRejection = async (event) => {\n try {\n event.preventDefault()\n await handleError(event.reason)\n } catch {\n console.error(event.reason)\n }\n}\n\n/**\n * @param {ErrorEvent} event\n */\nexport const handleUnhandledError = async (event) => {\n try {\n event.preventDefault()\n await handleError(event.error)\n } catch {\n console.error(event.error)\n }\n}\n", "const instanceOfAny = (object, constructors) => constructors.some((c) => object instanceof c);\n\nlet idbProxyableTypes;\nlet cursorAdvanceMethods;\n// This is a function to prevent it throwing up in node environments.\nfunction getIdbProxyableTypes() {\n return (idbProxyableTypes ||\n (idbProxyableTypes = [\n IDBDatabase,\n IDBObjectStore,\n IDBIndex,\n IDBCursor,\n IDBTransaction,\n ]));\n}\n// This is a function to prevent it throwing up in node environments.\nfunction getCursorAdvanceMethods() {\n return (cursorAdvanceMethods ||\n (cursorAdvanceMethods = [\n IDBCursor.prototype.advance,\n IDBCursor.prototype.continue,\n IDBCursor.prototype.continuePrimaryKey,\n ]));\n}\nconst cursorRequestMap = new WeakMap();\nconst transactionDoneMap = new WeakMap();\nconst transactionStoreNamesMap = new WeakMap();\nconst transformCache = new WeakMap();\nconst reverseTransformCache = new WeakMap();\nfunction promisifyRequest(request) {\n const promise = new Promise((resolve, reject) => {\n const unlisten = () => {\n request.removeEventListener('success', success);\n request.removeEventListener('error', error);\n };\n const success = () => {\n resolve(wrap(request.result));\n unlisten();\n };\n const error = () => {\n reject(request.error);\n unlisten();\n };\n request.addEventListener('success', success);\n request.addEventListener('error', error);\n });\n promise\n .then((value) => {\n // Since cursoring reuses the IDBRequest (*sigh*), we cache it for later retrieval\n // (see wrapFunction).\n if (value instanceof IDBCursor) {\n cursorRequestMap.set(value, request);\n }\n // Catching to avoid \"Uncaught Promise exceptions\"\n })\n .catch(() => { });\n // This mapping exists in reverseTransformCache but doesn't doesn't exist in transformCache. This\n // is because we create many promises from a single IDBRequest.\n reverseTransformCache.set(promise, request);\n return promise;\n}\nfunction cacheDonePromiseForTransaction(tx) {\n // Early bail if we've already created a done promise for this transaction.\n if (transactionDoneMap.has(tx))\n return;\n const done = new Promise((resolve, reject) => {\n const unlisten = () => {\n tx.removeEventListener('complete', complete);\n tx.removeEventListener('error', error);\n tx.removeEventListener('abort', error);\n };\n const complete = () => {\n resolve();\n unlisten();\n };\n const error = () => {\n reject(tx.error || new DOMException('AbortError', 'AbortError'));\n unlisten();\n };\n tx.addEventListener('complete', complete);\n tx.addEventListener('error', error);\n tx.addEventListener('abort', error);\n });\n // Cache it for later retrieval.\n transactionDoneMap.set(tx, done);\n}\nlet idbProxyTraps = {\n get(target, prop, receiver) {\n if (target instanceof IDBTransaction) {\n // Special handling for transaction.done.\n if (prop === 'done')\n return transactionDoneMap.get(target);\n // Polyfill for objectStoreNames because of Edge.\n if (prop === 'objectStoreNames') {\n return target.objectStoreNames || transactionStoreNamesMap.get(target);\n }\n // Make tx.store return the only store in the transaction, or undefined if there are many.\n if (prop === 'store') {\n return receiver.objectStoreNames[1]\n ? undefined\n : receiver.objectStore(receiver.objectStoreNames[0]);\n }\n }\n // Else transform whatever we get back.\n return wrap(target[prop]);\n },\n set(target, prop, value) {\n target[prop] = value;\n return true;\n },\n has(target, prop) {\n if (target instanceof IDBTransaction &&\n (prop === 'done' || prop === 'store')) {\n return true;\n }\n return prop in target;\n },\n};\nfunction replaceTraps(callback) {\n idbProxyTraps = callback(idbProxyTraps);\n}\nfunction wrapFunction(func) {\n // Due to expected object equality (which is enforced by the caching in `wrap`), we\n // only create one new func per func.\n // Edge doesn't support objectStoreNames (booo), so we polyfill it here.\n if (func === IDBDatabase.prototype.transaction &&\n !('objectStoreNames' in IDBTransaction.prototype)) {\n return function (storeNames, ...args) {\n const tx = func.call(unwrap(this), storeNames, ...args);\n transactionStoreNamesMap.set(tx, storeNames.sort ? storeNames.sort() : [storeNames]);\n return wrap(tx);\n };\n }\n // Cursor methods are special, as the behaviour is a little more different to standard IDB. In\n // IDB, you advance the cursor and wait for a new 'success' on the IDBRequest that gave you the\n // cursor. It's kinda like a promise that can resolve with many values. That doesn't make sense\n // with real promises, so each advance methods returns a new promise for the cursor object, or\n // undefined if the end of the cursor has been reached.\n if (getCursorAdvanceMethods().includes(func)) {\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n func.apply(unwrap(this), args);\n return wrap(cursorRequestMap.get(this));\n };\n }\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n return wrap(func.apply(unwrap(this), args));\n };\n}\nfunction transformCachableValue(value) {\n if (typeof value === 'function')\n return wrapFunction(value);\n // This doesn't return, it just creates a 'done' promise for the transaction,\n // which is later returned for transaction.done (see idbObjectHandler).\n if (value instanceof IDBTransaction)\n cacheDonePromiseForTransaction(value);\n if (instanceOfAny(value, getIdbProxyableTypes()))\n return new Proxy(value, idbProxyTraps);\n // Return the same value back if we're not going to transform it.\n return value;\n}\nfunction wrap(value) {\n // We sometimes generate multiple promises from a single IDBRequest (eg when cursoring), because\n // IDB is weird and a single IDBRequest can yield many responses, so these can't be cached.\n if (value instanceof IDBRequest)\n return promisifyRequest(value);\n // If we've already transformed this value before, reuse the transformed value.\n // This is faster, but it also provides object equality.\n if (transformCache.has(value))\n return transformCache.get(value);\n const newValue = transformCachableValue(value);\n // Not all types are transformed.\n // These may be primitive types, so they can't be WeakMap keys.\n if (newValue !== value) {\n transformCache.set(value, newValue);\n reverseTransformCache.set(newValue, value);\n }\n return newValue;\n}\nconst unwrap = (value) => reverseTransformCache.get(value);\n\nexport { reverseTransformCache as a, instanceOfAny as i, replaceTraps as r, unwrap as u, wrap as w };\n", "import { w as wrap, r as replaceTraps } from './wrap-idb-value.js';\nexport { u as unwrap, w as wrap } from './wrap-idb-value.js';\n\n/**\n * Open a database.\n *\n * @param name Name of the database.\n * @param version Schema version.\n * @param callbacks Additional callbacks.\n */\nfunction openDB(name, version, { blocked, upgrade, blocking, terminated } = {}) {\n const request = indexedDB.open(name, version);\n const openPromise = wrap(request);\n if (upgrade) {\n request.addEventListener('upgradeneeded', (event) => {\n upgrade(wrap(request.result), event.oldVersion, event.newVersion, wrap(request.transaction));\n });\n }\n if (blocked)\n request.addEventListener('blocked', () => blocked());\n openPromise\n .then((db) => {\n if (terminated)\n db.addEventListener('close', () => terminated());\n if (blocking)\n db.addEventListener('versionchange', () => blocking());\n })\n .catch(() => { });\n return openPromise;\n}\n/**\n * Delete a database.\n *\n * @param name Name of the database.\n */\nfunction deleteDB(name, { blocked } = {}) {\n const request = indexedDB.deleteDatabase(name);\n if (blocked)\n request.addEventListener('blocked', () => blocked());\n return wrap(request).then(() => undefined);\n}\n\nconst readMethods = ['get', 'getKey', 'getAll', 'getAllKeys', 'count'];\nconst writeMethods = ['put', 'add', 'delete', 'clear'];\nconst cachedMethods = new Map();\nfunction getMethod(target, prop) {\n if (!(target instanceof IDBDatabase &&\n !(prop in target) &&\n typeof prop === 'string')) {\n return;\n }\n if (cachedMethods.get(prop))\n return cachedMethods.get(prop);\n const targetFuncName = prop.replace(/FromIndex$/, '');\n const useIndex = prop !== targetFuncName;\n const isWrite = writeMethods.includes(targetFuncName);\n if (\n // Bail if the target doesn't exist on the target. Eg, getAll isn't in Edge.\n !(targetFuncName in (useIndex ? IDBIndex : IDBObjectStore).prototype) ||\n !(isWrite || readMethods.includes(targetFuncName))) {\n return;\n }\n const method = async function (storeName, ...args) {\n // isWrite ? 'readwrite' : undefined gzipps better, but fails in Edge :(\n const tx = this.transaction(storeName, isWrite ? 'readwrite' : 'readonly');\n let target = tx.store;\n if (useIndex)\n target = target.index(args.shift());\n // Must reject if op rejects.\n // If it's a write operation, must reject if tx.done rejects.\n // Must reject with op rejection first.\n // Must resolve with op value.\n // Must handle both promises (no unhandled rejections)\n return (await Promise.all([\n target[targetFuncName](...args),\n isWrite && tx.done,\n ]))[0];\n };\n cachedMethods.set(prop, method);\n return method;\n}\nreplaceTraps((oldTraps) => ({\n ...oldTraps,\n get: (target, prop, receiver) => getMethod(target, prop) || oldTraps.get(target, prop, receiver),\n has: (target, prop) => !!getMethod(target, prop) || oldTraps.has(target, prop),\n}));\n\nexport { deleteDB, openDB };\n", "import { r as replaceTraps, i as instanceOfAny, a as reverseTransformCache, u as unwrap } from './wrap-idb-value.js';\n\nconst advanceMethodProps = ['continue', 'continuePrimaryKey', 'advance'];\nconst methodMap = {};\nconst advanceResults = new WeakMap();\nconst ittrProxiedCursorToOriginalProxy = new WeakMap();\nconst cursorIteratorTraps = {\n get(target, prop) {\n if (!advanceMethodProps.includes(prop))\n return target[prop];\n let cachedFunc = methodMap[prop];\n if (!cachedFunc) {\n cachedFunc = methodMap[prop] = function (...args) {\n advanceResults.set(this, ittrProxiedCursorToOriginalProxy.get(this)[prop](...args));\n };\n }\n return cachedFunc;\n },\n};\nasync function* iterate(...args) {\n // tslint:disable-next-line:no-this-assignment\n let cursor = this;\n if (!(cursor instanceof IDBCursor)) {\n cursor = await cursor.openCursor(...args);\n }\n if (!cursor)\n return;\n cursor = cursor;\n const proxiedCursor = new Proxy(cursor, cursorIteratorTraps);\n ittrProxiedCursorToOriginalProxy.set(proxiedCursor, cursor);\n // Map this double-proxy back to the original, so other cursor methods work.\n reverseTransformCache.set(proxiedCursor, unwrap(cursor));\n while (cursor) {\n yield proxiedCursor;\n // If one of the advancing methods was not called, call continue().\n cursor = await (advanceResults.get(proxiedCursor) || cursor.continue());\n advanceResults.delete(proxiedCursor);\n }\n}\nfunction isIteratorProp(target, prop) {\n return ((prop === Symbol.asyncIterator &&\n instanceOfAny(target, [IDBIndex, IDBObjectStore, IDBCursor])) ||\n (prop === 'iterate' && instanceOfAny(target, [IDBIndex, IDBObjectStore])));\n}\nreplaceTraps((oldTraps) => ({\n ...oldTraps,\n get(target, prop, receiver) {\n if (isIteratorProp(target, prop))\n return iterate;\n return oldTraps.get(target, prop, receiver);\n },\n has(target, prop) {\n return isIteratorProp(target, prop) || oldTraps.has(target, prop);\n },\n}));\n", "export * from './index.js';\nimport './async-iterators.js';\n", "// TODO high memory usage in idb because of transactionDoneMap\n\nimport { openDB } from '../../../static/js/idb/with-async-ittr.js'\nimport { VError } from '../VError/VError.js'\n\nexport const state = {\n databases: Object.create(null),\n eventId: 0,\n dbVersion: 1,\n /**\n * @type {any}\n */\n cachedDb: undefined,\n}\n\nconst getDb = async () => {\n // @ts-ignore\n const db = await openDB('session', state.dbVersion, {\n async upgrade(db, oldVersion) {\n if (!db.objectStoreNames.contains('session')) {\n const objectStore = await db.createObjectStore('session', {\n autoIncrement: true,\n })\n objectStore.createIndex('sessionId', 'sessionId', { unique: false })\n }\n },\n })\n return db\n}\n\nconst getDbMemoized = async () => {\n if (!state.cachedDb) {\n state.cachedDb = await getDb()\n }\n return state.cachedDb\n}\n\nexport const saveValue = async (storeId, value) => {\n try {\n const db = await getDbMemoized()\n await db.add('session', value)\n } catch (error) {\n // @ts-ignore\n if (error && error.name === `DataCloneError`) {\n // TODO\n return\n }\n throw new VError(error, 'Failed to save value to indexed db')\n }\n}\n\nexport const getValues = async (storeId) => {\n try {\n const db = await getDbMemoized()\n const tx = db.transaction(storeId, 'readwrite')\n const [objects] = await Promise.all([tx.store.getAll(), tx.done])\n console.log({ objects })\n return objects\n } catch (error) {\n throw new VError(error, 'Failed to get values from indexed db')\n }\n}\n\nexport const getValuesByIndexName = async (storeId, indexName, only) => {\n const db = await getDbMemoized()\n const transaction = db.transaction(storeId)\n const index = transaction.store.index(indexName)\n const iterator = index.iterate(only)\n const objects = []\n for await (const cursor of iterator) {\n objects.push(cursor.value)\n }\n return objects\n}\n\nconst getHandleDb = async () => {\n // @ts-ignore\n const db = await openDB('handle', state.dbVersion, {\n async upgrade(db, oldVersion) {\n if (!db.objectStoreNames.contains('file-handles-store')) {\n const objectStore = await db.createObjectStore('file-handles-store', {})\n }\n },\n })\n return db\n}\n\nexport const addHandle = async (uri, handle) => {\n const handleDb = await getHandleDb()\n await handleDb.put('file-handles-store', handle, uri)\n}\n\nexport const getHandle = async (uri) => {\n const handleDb = await getHandleDb()\n const handle = await handleDb.get('file-handles-store', uri)\n return handle\n}\n", "export const now = () => {\n return performance.now()\n}\n", "import * as Command from '../Command/Command.js'\nimport * as ErrorHandling from '../ErrorHandling/ErrorHandling.js'\nimport * as IndexedDb from '../IndexedDb/IndexedDb.js'\nimport * as Location from '../Location/Location.js'\nimport * as RendererProcess from '../RendererProcess/RendererProcess.js'\nimport * as SharedProcess from '../SharedProcess/SharedProcess.js'\nimport * as Assert from '../Assert/Assert.js'\nimport { VError } from '../VError/VError.js'\nimport * as Json from '../Json/Json.js'\nimport * as Timestamp from '../Timestamp/Timestamp.js'\n\nexport const state = {\n sessionId: '',\n}\n\nconst getSessionId = () => {\n if (!state.sessionId) {\n state.sessionId = `session-${new Date().toISOString()}`\n }\n return state.sessionId\n}\n\nexport const handleMessage = async (source, timestamp, message) => {\n try {\n const sessionId = getSessionId()\n await IndexedDb.saveValue(sessionId, {\n source,\n timestamp,\n sessionId,\n ...message,\n })\n } catch (error) {\n console.error(error)\n // @ts-ignore\n if (error.cause) {\n // @ts-ignore\n console.error(error.cause)\n }\n // await ErrorHandling.handleError(error)\n }\n}\n\nconst addSearchParam = (href, key, value) => {\n const parsedUrl = new URL(href)\n parsedUrl.searchParams.set('replayId', state.sessionId)\n return parsedUrl.toString()\n}\n\nexport const replayCurrentSession = async () => {\n if (!state.sessionId) {\n throw new VError(`session replay is disabled in settings`)\n }\n // TODO\n // 1. read commands from indexeddb\n // 2. open new window\n // 3. replay ui with commands from indexeddb\n\n const href = await Location.getHref()\n const replayUrl = addSearchParam(href, 'replayId', state.sessionId)\n await Command.execute('Open.openUrl', /* url */ replayUrl)\n}\n\nexport const getSessionContent = async () => {\n const sessionId = state.sessionId\n const events = await getEvents(sessionId)\n return Json.stringify(events)\n}\n\nconst DONT_REPLAY = new Set(['Open.openUrl', 'Download.downloadFile'])\n\nexport const replaySession = async (sessionId) => {\n const events = await getEvents(sessionId)\n const originalIpc = RendererProcess.state.ipc\n const originalSend = originalIpc.send\n const originalOnMessage = originalIpc.onmessage\n const wrappedSend = () => {}\n const wrappedOnMessage = async (event) => {\n const data = event.data\n if (typeof data === 'string') {\n return\n }\n if ('result' in data) {\n callbacks[data.id].resolve(data.result)\n } else if ('error' in data) {\n callbacks[data.id].reject(data.error)\n } else if ('method' in data) {\n switch (data.method) {\n case 'TitleBar.handleTitleBarButtonClickClose':\n RendererProcess.state.ipc.onmessage = originalOnMessage\n RendererProcess.state.ipc.send = originalSend\n await Command.execute('ElectronWindow.close')\n RendererProcess.state.ipc.onmessage = wrappedOnMessage\n RendererProcess.state.ipc.send = wrappedSend\n break\n case 'TitleBar.handleTitleBarButtonClickMinimize':\n RendererProcess.state.ipc.onmessage = originalOnMessage\n RendererProcess.state.ipc.send = originalSend\n await Command.execute('ElectronWindow.minimize')\n RendererProcess.state.ipc.onmessage = wrappedOnMessage\n RendererProcess.state.ipc.send = wrappedSend\n break\n case 'TitleBar.handleTitleBarButtonClickToggleMaximize':\n RendererProcess.state.ipc.onmessage = originalOnMessage\n RendererProcess.state.ipc.send = originalSend\n await Command.execute('ElectronWindow.maximize')\n RendererProcess.state.ipc.onmessage = wrappedOnMessage\n RendererProcess.state.ipc.send = wrappedSend\n break\n default:\n break\n }\n } else {\n throw new Error('unexpected message from renderer worker')\n }\n }\n RendererProcess.state.ipc.send = wrappedSend\n RendererProcess.state.ipc.onmessage = wrappedOnMessage\n const callbacks = Object.create(null)\n const invoke = (event) => {\n return new Promise((resolve, reject) => {\n callbacks[event.id] = { resolve, reject }\n originalSend(event)\n })\n }\n let now = 0\n for (const event of events) {\n if (\n event.source === 'to-renderer-process' &&\n !DONT_REPLAY.has(event.method)\n ) {\n // console.log(event.timestamp)\n const timeDifference = event.timestamp - now\n await new Promise((resolve, reject) => {\n setTimeout(resolve, timeDifference)\n })\n await invoke(event)\n now = event.timestamp\n }\n // if (event.source === 'from-renderer-process') {\n // console.log(event)\n // }\n }\n // console.log({ events })\n}\n\nexport const getEvents = async (sessionId) => {\n try {\n const timestamp = Timestamp.now()\n const events = await IndexedDb.getValuesByIndexName(\n 'session',\n 'sessionId',\n sessionId\n )\n return events\n } catch (error) {\n throw new VError(error, `failed to get session replay events`)\n }\n}\n\nexport const downloadSession = async () => {\n try {\n const sessionId = getSessionId()\n const events = await getEvents(sessionId)\n const fileName = `${sessionId}.json`\n await Command.execute(\n /* Download.downloadJson */ 'Download.downloadJson',\n /* json */ events,\n /* fileName */ fileName\n )\n } catch (error) {\n throw new VError(error, 'Failed to download session')\n }\n}\n\nconst wrapIpc = (ipc, name, getData) => {\n if (!ipc) {\n return\n }\n Assert.object(ipc)\n Assert.string(name)\n Assert.fn(getData)\n const nameFrom = `from-${name}`\n const nameTo = `to-${name}`\n const wrappedIpc = {\n async send(message) {\n ipc.send(message)\n const timestamp = Timestamp.now()\n await handleMessage(nameTo, timestamp, message)\n },\n sendAndTransfer(message, transferables) {\n ipc.sendAndTransfer(message, transferables)\n },\n get onmessage() {\n return ipc.onmessage\n },\n set onmessage(listener) {\n ipc.onmessage = listener\n },\n }\n const originalOnMessage = wrappedIpc.onmessage\n wrappedIpc.onmessage = async (event) => {\n const message = getData(event)\n const timestamp = Timestamp.now()\n await originalOnMessage(event)\n await handleMessage(nameFrom, timestamp, message)\n }\n return wrappedIpc\n}\n\nexport const startRecording = () => {\n RendererProcess.state.ipc = wrapIpc(\n RendererProcess.state.ipc,\n 'renderer-process',\n (event) => event.data\n )\n SharedProcess.state.ipc = wrapIpc(\n SharedProcess.state.ipc,\n 'shared-process',\n (event) => event\n )\n}\n\nexport const openSession = async () => {\n await Command.execute(\n /* Main.openUri */ 'Main.openUri',\n /* uri */ 'app://session.json'\n )\n}\n", "import * as SessionReplay from '../SessionReplay/SessionReplay.js'\n\nexport const writeFile = (content) => {\n throw new Error('not allowed')\n}\n\nexport const readFile = async () => {\n const content = await SessionReplay.getSessionContent()\n return content\n}\n", "import * as PathSeparatorType from '../PathSeparatorType/PathSeparatorType.js'\n\nexport const name = 'App'\n\nconst getModule = (uri) => {\n switch (uri) {\n case 'startup-performance':\n return import('./FileSystemAppStartupPerformance.js')\n case 'memory-usage':\n return import('./FileSystemAppMemoryUsage.js')\n case 'settings.json':\n return import('./FileSystemAppSettings.js')\n case 'recently-opened.json':\n return import('./FileSystemAppRecentlyOpened.js')\n case 'session.json':\n return import('./FileSystemAppSession.js')\n default:\n throw new Error(`unsupported file: ${uri}`)\n }\n}\n\nexport const readFile = async (uri) => {\n const module = await getModule(uri)\n return module.readFile()\n}\n\nexport const writeFile = async (uri, content) => {\n const module = await getModule(uri)\n return module.writeFile(content)\n}\n\nexport const readDirWithFileTypes = () => {\n return []\n}\n\nexport const rename = async (oldUri, newUri) => {\n throw new Error('not allowed')\n}\n\nexport const remove = async (path) => {\n throw new Error('not allowed')\n}\n\nexport const mkdir = async (path) => {\n throw new Error('not allowed')\n}\n\nexport const getPathSeparator = () => {\n return PathSeparatorType.Slash\n}\n\nexport const canBeRestored = true\n", "export const name = 'Data'\n\nexport const copy = (source, target) => {\n throw new Error('not implemented')\n}\n\nexport const readFile = (path) => {\n return path.slice('data://'.length + 3)\n}\n\nexport const remove = (path) => {\n throw new Error('not implemented')\n}\n\nexport const rename = (oldUri, newUri) => {\n throw new Error('not implemented')\n}\n\nexport const mkdir = (path) => {\n throw new Error('not implemented')\n}\n\nexport const writeFile = async (path, content) => {\n throw new Error('not implemented')\n}\n\nexport const ensureFile = async () => {}\n\nexport const readDirWithFileTypes = (path) => {\n throw new Error('not implemented')\n}\n\nexport const getBlobUrl = (path) => {\n throw new Error('not implemented')\n}\n\nexport const getPathSeparator = () => {\n throw new Error('not implemented')\n}\n", "import * as Platform from '../Platform/Platform.js'\nimport * as SharedProcess from '../SharedProcess/SharedProcess.js'\nimport * as PlatformType from '../PlatformType/PlatformType.js'\nimport * as PathSeparatorType from '../PathSeparatorType/PathSeparatorType.js'\n\nexport const name = 'Disk'\n\nexport const copy = (source, target) => {\n return SharedProcess.invoke(\n /* FileSystem.copy */ 'FileSystem.copy',\n /* source */ source,\n /* target */ target\n )\n}\n\nexport const readFile = (path, encoding) => {\n return SharedProcess.invoke(\n /* FileSystem.readFile */ 'FileSystem.readFile',\n /* path */ path,\n /* encoding */ encoding\n )\n}\n\nexport const remove = (path) => {\n return SharedProcess.invoke(\n /* FileSystem.remove */ 'FileSystem.remove',\n /* path */ path\n )\n}\n\nexport const rename = (oldUri, newUri) => {\n return SharedProcess.invoke(\n /* FileSystem.rename */ 'FileSystem.rename',\n /* oldPath */ oldUri,\n /* newPath */ newUri\n )\n}\n\nexport const mkdir = (path) => {\n return SharedProcess.invoke(\n /* FileSystem.mkdir */ 'FileSystem.mkdir',\n /* path */ path\n )\n}\n\nexport const writeFile = async (path, content, encoding) => {\n await SharedProcess.invoke(\n /* FileSystem.writeFile */ 'FileSystem.writeFile',\n /* path */ path,\n /* content */ content,\n /* encoding */ encoding\n )\n}\n\nexport const ensureFile = async () => {}\n\nexport const readDirWithFileTypes = (path) => {\n return SharedProcess.invoke(\n /* FileSystem.readDirWithFileTypes */ 'FileSystem.readDirWithFileTypes',\n /* path */ path\n )\n}\n\nexport const getBlobUrl = (path) => {\n return `/remote/${path}`\n}\n\nexport const getPathSeparator = () => {\n if (Platform.platform === PlatformType.Web) {\n return PathSeparatorType.Slash\n }\n return SharedProcess.invoke(\n /* FileSystem.getPathSeparator */ 'FileSystem.getPathSeparator'\n )\n}\n\nexport const getRealPath = (path) => {\n return SharedProcess.invoke(\n /* FileSystem.getRealPath */ 'FileSystem.getRealPath',\n /* path */ path\n )\n}\n\nexport const stat = (path) => {\n return SharedProcess.invoke(\n /* FileSystem.stat */ 'FileSystem.stat',\n /* path */ path\n )\n}\n\nexport const chmod = (path, permissions) => {\n return SharedProcess.invoke(\n /* FileSystem.stat */ 'FileSystem.chmod',\n /* path */ path,\n /* permissions */ permissions\n )\n}\n\nexport const canBeRestored = true\n", "export const BlockDevice = 1\nexport const CharacterDevice = 2\nexport const Directory = 3\nexport const DirectoryExpanded = 4\nexport const DirectoryExpanding = 5\nexport const File = 6\nexport const Socket = 7\nexport const Symlink = 8\nexport const SymLinkFile = 9\nexport const SymLinkFolder = 10\nexport const Unknown = 11\n", "import * as Command from '../Command/Command.js'\nimport * as PathSeparatorType from '../PathSeparatorType/PathSeparatorType.js'\nimport * as Platform from '../Platform/Platform.js'\nimport * as DirentType from '../DirentType/DirentType.js'\n\nexport const canBeRestored = true\n\nexport const name = 'Fetch'\n\nexport const state = {\n files: Object.create(null),\n}\n\nexport const readFile = async (uri) => {\n const assetDir = Platform.getAssetDir()\n const fetchUri = `${assetDir}${uri}`\n const text = await Command.execute('Ajax.getText', fetchUri)\n return text\n}\n\nexport const writeFile = (uri, content) => {\n throw new Error('not implemented')\n}\n\nexport const mkdir = (uri) => {\n throw new Error('not implemented')\n}\n\nexport const getPathSeparator = () => {\n return PathSeparatorType.Slash\n}\n\nexport const remove = (uri) => {\n throw new Error('not implemented')\n}\n\nexport const readDirWithFileTypes = async (uri) => {\n const assetDir = Platform.getAssetDir()\n const fetchUri = `${assetDir}/config/fileMap.json`\n const fileList = await Command.execute('Ajax.getJson', fetchUri)\n const dirents = []\n for (const fileUri of fileList) {\n if (fileUri.startsWith(uri)) {\n const rest = fileUri.slice(uri.length + 1)\n if (rest.includes('/')) {\n const name = rest.slice(0, rest.indexOf('/'))\n if (dirents.some((dirent) => dirent.name === name)) {\n continue\n }\n dirents.push({\n type: DirentType.Directory,\n name,\n })\n } else {\n dirents.push({\n type: DirentType.File,\n name: rest,\n })\n }\n }\n }\n return dirents\n}\n\nexport const chmod = (path, permissions) => {\n throw new Error('[memfs] chmod not implemented')\n}\n", "export const Tree = 'tree'\n\nexport const Blob = 'blob'\n", "// based on https://github.com/conwnet/github1s/blob/master/extensions/github1s/src/interfaces/github-api-rest.ts\n\nimport * as Command from '../Command/Command.js'\nimport * as Platform from '../Platform/Platform.js'\nimport * as PathSeparatorType from '../PathSeparatorType/PathSeparatorType.js'\n\nconst encodeFilePath = (filePath) => {\n return filePath\n .split(PathSeparatorType.Slash)\n .map((segment) => encodeURIComponent(segment))\n .join(PathSeparatorType.Slash)\n}\n\nexport const readGitHubFile = async (owner, repo, fileSha) => {\n return 'Not implemented'\n}\n\nexport const readGithubFileWithUrl = (githubUrl) => {\n return Command.execute(/* Ajax.getJson */ 'Ajax.getJson', /* url */ githubUrl)\n}\n\nexport const readFile = (owner, repo, path) => {\n const githubApiUrl = Platform.getGithubApiUrl()\n const url = `${githubApiUrl}/repos/${owner}/${repo}/contents/${path}`\n return Command.execute(/* Ajax.getJson */ 'Ajax.getJson', /* url */ url)\n}\n\nexport const readGitHubDirectory = (owner, repo, ref, path) => {\n const githubApiUrl = Platform.getGithubApiUrl()\n const url = `${githubApiUrl}/repos/${owner}/${repo}/git/trees/${ref}${encodeFilePath(\n path\n ).replace(/^\\//, ':')}`\n return Command.execute(/* Ajax.getJson */ 'Ajax.getJson', /* url */ url)\n}\n", "// based on https://github.com/conwnet/github1s/blob/master/extensions/github1s/src/interfaces/github-api-rest.ts\n\nimport * as Command from '../Command/Command.js'\nimport * as DirentType from '../DirentType/DirentType.js'\nimport * as GitHubDirentType from '../GitHubDirentType/GitHubDirentType.js'\nimport * as GitHubRestApi from '../GitHubRestApi/GitHubRestApi.js'\nimport * as PathSeparatorType from '../PathSeparatorType/PathSeparatorType.js'\n\nexport const name = 'GitHub'\n\nexport const state = {\n cache: Object.create(null),\n}\n\nconst getGitHubFile = async (path) => {\n const parts = path.split(PathSeparatorType.Slash)\n const [owner, repo, ...rest] = parts\n const relativePath = rest.join(PathSeparatorType.Slash) // TODO many times split/join a bit unnecessary\n const githubFile = await GitHubRestApi.readFile(owner, repo, relativePath)\n // TODO what if it is not a file but a folder?\n return githubFile\n}\n\nexport const readFile = async (path) => {\n const githubFile = await getGitHubFile(path)\n if (githubFile.encoding !== 'base64') {\n throw new Error('unsupported encoding')\n }\n return Command.execute(\n /* Base64.decode */ 'Base64.decode',\n /* encoded */ githubFile.content\n )\n}\n\nconst getType = (githubType) => {\n switch (githubType) {\n case GitHubDirentType.Tree:\n return DirentType.Directory\n case GitHubDirentType.Blob:\n return DirentType.File\n default:\n return DirentType.Unknown\n }\n}\n\nconst toDirent = (githubDirent) => {\n return {\n name: githubDirent.path,\n type: getType(githubDirent.type),\n }\n}\n\nconst toDirents = (githubResponse) => {\n return githubResponse.tree.map(toDirent)\n}\n\nexport const readDirWithFileTypes = async (path) => {\n const parts = path.split(PathSeparatorType.Slash)\n const [owner, repo, ...rest] = parts\n const relativePath =\n PathSeparatorType.Slash + rest.join(PathSeparatorType.Slash) // TODO many times split/join a bit unnecessary\n // TODO handle reading real directory\n const githubDirents = await GitHubRestApi.readGitHubDirectory(\n owner,\n repo,\n 'HEAD',\n relativePath\n )\n state.cache[path] = githubDirents\n const dirents = toDirents(githubDirents)\n return dirents\n}\n\nexport const getBlobUrl = async (path) => {\n const githubFile = await getGitHubFile(path)\n return githubFile.download_url\n}\n\nexport const getPathSeparator = () => {\n return PathSeparatorType.Slash\n}\n", "export const BrowserErrorNames = {\n NotAllowedError: 'NotAllowedError',\n UnknownError: 'UnknownError',\n}\n\nexport const isNotAllowedError = (error) => {\n return error && error.name === BrowserErrorNames.NotAllowedError\n}\n\n// export const isUserActivationError\n", "export const ReadWrite = 'readwrite'\n", "export const Granted = 'granted'\nexport const Prompt = 'prompt'\nexport const Denied = 'denied'\n", "import * as Arrays from '../Arrays/Arrays.js'\nimport * as Assert from '../Assert/Assert.js'\n\nexport const getFile = (handle) => {\n return handle.getFile()\n}\n\nexport const write = async (handle, content) => {\n const writable = await handle.createWritable()\n await writable.write(content)\n await writable.close()\n}\n\nexport const getChildHandles = async (handle) => {\n Assert.object(handle)\n const handles = await Arrays.fromAsync(handle.values())\n return handles\n}\n\nexport const getFileHandle = (handle, name) => {\n return handle.getFileHandle(name)\n}\n", "import * as RendererProcess from '../RendererProcess/RendererProcess.js'\n\nexport const requestPermission = async (handle, options) => {\n // query permission, but from renderer process\n // because handle.requestPermission is not implemented\n // in a worker, see https://github.com/WICG/file-system-access/issues/289\n const permissionTypeNow = await RendererProcess.invoke(\n 'FileSystemHandle.requestPermission',\n handle,\n options\n )\n return permissionTypeNow\n}\n\nexport const queryPermission = async (handle, options) => {\n return handle.queryPermission(options)\n}\n", "export const fileExtension = (uri) => {\n const extensionIndex = uri.lastIndexOf('.')\n const extension = uri.slice(extensionIndex)\n return extension\n}\n\nexport const join = (pathSeparator, ...parts) => {\n return parts.join(pathSeparator)\n}\n\nexport const dirname = (pathSeparator, path) => {\n const index = path.lastIndexOf(pathSeparator)\n if (index === -1) {\n return path\n }\n return path.slice(0, index)\n}\n\nexport const getBaseName = (pathSeparator, path) => {\n return path.slice(path.lastIndexOf(pathSeparator) + 1)\n}\n", "import * as Command from '../Command/Command.js'\nimport { VError } from '../VError/VError.js'\n\nexport const state = {\n handles: Object.create(null),\n}\n\nexport const addHandle = async (uri, handle) => {\n try {\n // TODO save handle in indexeddb\n state.handles[uri] = handle\n await Command.execute('IndexedDb.addHandle', uri, handle)\n } catch (error) {\n throw new VError(error, 'Failed to add handle')\n }\n}\n\nexport const addHandles = async (parentUri, childHandles) => {\n const promises = []\n for (const childHandle of childHandles) {\n const childUri = parentUri + '/' + childHandle.name\n if (childUri in state.handles) {\n continue\n }\n state.handles[childUri] = childHandle\n promises.push(addHandle(childUri, childHandle))\n }\n await Promise.all(promises)\n}\n\nexport const removeHandle = () => {\n // TODO remove handle from state and from indexeddb\n}\n\nexport const getHandle = async (uri) => {\n try {\n // TODO retrieve handle from state or from indexeddb\n // TODO if not found, throw error\n const handle = await Command.execute('IndexedDb.getHandle', uri)\n return handle\n } catch (error) {\n throw new VError(error, `Failed to get handle`)\n }\n}\n", "export const Directory = 'directory'\n\nexport const File = 'file'\n", "import * as FileHandleType from '../FileHandleType/FileHandleType.js'\nimport * as DirentType from '../DirentType/DirentType.js'\n\nexport const getDirentType = (fileHandleKind) => {\n switch (fileHandleKind) {\n case FileHandleType.Directory:\n return DirentType.Directory\n case FileHandleType.File:\n return DirentType.File\n default:\n return DirentType.Unknown\n }\n}\n", "import * as BrowserErrorTypes from '../BrowserErrorTypes/BrowserErrorTypes.js'\nimport * as FileHandleEditMode from '../FileHandleEditMode/FileHandleEditMode.js'\nimport * as FileHandlePermissionType from '../FileHandlePermissionType/FileHandlePermissionType.js'\nimport * as FileSystemHandle from '../FileSystemHandle/FileSystemHandle.js'\nimport * as FileSytemHandlePermission from '../FileSystemHandlePermission/FileSystemHandlePermission.js'\nimport * as Path from '../Path/Path.js'\nimport * as PersistentFileHandle from '../PersistentFileHandle/PersistentFileHandle.js'\nimport { VError } from '../VError/VError.js'\nimport * as FileHandleTypeMap from '../FileHandleTypeMap/FileHandleTypeMap.js'\n\nconst pathSeparator = '/'\n\nconst getDirent = (handle) => {\n const { name, kind } = handle\n const type = FileHandleTypeMap.getDirentType(kind)\n return {\n name,\n type,\n }\n}\n\nexport const getDirents = (handles) => {\n const dirents = handles.map(getDirent)\n return dirents\n}\n\nconst getChildHandlesFallbackPrompt = async (handle) => {\n // TODO cannot prompt without user activation, else error occurs\n // maybe need to show\n const permissionTypeNow = await FileSytemHandlePermission.requestPermission(\n handle,\n {\n mode: FileHandleEditMode.ReadWrite,\n }\n )\n switch (permissionTypeNow) {\n case FileHandlePermissionType.Granted:\n return FileSystemHandle.getChildHandles(handle)\n case FileHandlePermissionType.Prompt:\n case FileHandlePermissionType.Denied:\n // TODO maybe throw error in this case\n return []\n default:\n return []\n }\n}\n\nconst getChildHandlesFallback = async (handle) => {\n const permissionType = await FileSytemHandlePermission.queryPermission(\n handle,\n {\n mode: FileHandleEditMode.ReadWrite,\n }\n )\n switch (permissionType) {\n case FileHandlePermissionType.Granted:\n throw new VError(`invalid state`)\n case FileHandlePermissionType.Prompt:\n return await getChildHandlesFallbackPrompt(handle)\n case FileHandlePermissionType.Denied:\n return []\n default:\n return []\n }\n}\n\nconst getChildHandles = async (handle) => {\n try {\n return await FileSystemHandle.getChildHandles(handle)\n } catch (error) {\n if (BrowserErrorTypes.isNotAllowedError(error)) {\n return getChildHandlesFallback(handle)\n }\n throw new VError(error, `failed to get child handles`)\n }\n}\n\nexport const readDirWithFileTypes = async (uri) => {\n try {\n // TODO convert uri to file handle path, get file handle from indexeddb\n // if file handle does not exist, throw error\n const handle = await PersistentFileHandle.getHandle(uri)\n if (!handle) {\n throw new Error(`File system handle not found for ${uri}`)\n }\n const childHandles = await getChildHandles(handle)\n await PersistentFileHandle.addHandles(uri, childHandles)\n const dirents = getDirents(childHandles)\n return dirents\n } catch (error) {\n throw new VError(error, `failed to read directory`)\n }\n}\n\nconst getDirectoryHandle = async (uri) => {\n const handle = await PersistentFileHandle.getHandle(uri)\n if (handle) {\n return handle\n }\n const dirname = Path.dirname(pathSeparator, uri)\n if (uri === dirname) {\n return undefined\n }\n return getDirectoryHandle(dirname)\n}\n\nconst getFileHandle = async (uri) => {\n const handle = await PersistentFileHandle.getHandle(uri)\n if (handle) {\n return handle\n }\n const dirname = Path.dirname(pathSeparator, uri)\n const parentHandle = await getDirectoryHandle(dirname)\n if (!parentHandle) {\n return undefined\n }\n const baseName = Path.getBaseName(pathSeparator, uri)\n const fileHandle = FileSystemHandle.getFileHandle(parentHandle, baseName)\n return fileHandle\n}\n\nexport const readFile = async (uri) => {\n try {\n const handle = await getFileHandle(uri)\n if (!handle) {\n throw new VError(`File not found ${uri}`)\n }\n const file = await FileSystemHandle.getFile(handle)\n const text = await file.text()\n return text\n } catch (error) {\n throw new VError(error, `Failed to read file`)\n }\n}\n\nexport const writeFile = async (uri, content) => {\n try {\n const handle = await getFileHandle(uri)\n if (!handle) {\n throw new VError(`File not found ${uri}`)\n }\n await FileSystemHandle.write(handle, content)\n } catch (error) {\n throw new VError(error, `Failed to save file`)\n }\n}\n\nexport const getPathSeparator = () => {\n return pathSeparator\n}\n\n// not possible because FileHandle permissions are on preserved on reload\nexport const canBeRestored = false\n", "import * as DirentType from '../DirentType/DirentType.js'\nimport * as PathSeparatorType from '../PathSeparatorType/PathSeparatorType.js'\n\nexport const name = 'Memory'\n\nexport const state = {\n files: Object.create(null),\n}\n\nconst getDirent = (uri) => {\n return state.files[uri]\n}\n\nexport const readFile = (uri) => {\n const dirent = getDirent(uri)\n if (!dirent) {\n throw new Error(`File not found: ${uri}`)\n }\n if (dirent.type !== DirentType.File) {\n throw new Error('file is a directory')\n }\n return dirent.content\n}\n\nconst ensureParentDir = (uri) => {\n const startIndex = 0\n let endIndex = uri.indexOf(PathSeparatorType.Slash)\n while (endIndex >= 0) {\n const part = uri.slice(startIndex, endIndex + 1)\n state.files[part] = {\n type: DirentType.Directory,\n content: '',\n }\n endIndex = uri.indexOf(PathSeparatorType.Slash, endIndex + 1)\n }\n}\n\nexport const writeFile = (uri, content) => {\n const dirent = getDirent(uri)\n if (dirent) {\n dirent.content = content\n } else {\n ensureParentDir(uri)\n state.files[uri] = {\n type: DirentType.File,\n content,\n }\n }\n}\n\nexport const mkdir = (uri) => {\n if (!uri.endsWith(PathSeparatorType.Slash)) {\n uri += PathSeparatorType.Slash\n }\n ensureParentDir(uri)\n state.files[uri] = {\n type: DirentType.Directory,\n content: '',\n }\n}\n\nexport const getPathSeparator = () => {\n return PathSeparatorType.Slash\n}\n\nexport const remove = (uri) => {\n const toDelete = []\n for (const key of Object.keys(state.files)) {\n if (key.startsWith(uri)) {\n toDelete.push(key)\n }\n }\n for (const key of toDelete) {\n delete state.files[key]\n }\n}\n\nexport const readDirWithFileTypes = (uri) => {\n if (!uri.endsWith(PathSeparatorType.Slash)) {\n uri += PathSeparatorType.Slash\n }\n const dirents = []\n for (const [key, value] of Object.entries(state.files)) {\n if (key.startsWith(uri)) {\n switch (value.type) {\n case DirentType.Directory:\n if (\n !key.slice(0, -1).includes(PathSeparatorType.Slash, uri.length) &&\n key !== `${uri}/` &&\n key !== uri\n ) {\n dirents.push({\n type: value.type,\n name: key.slice(uri.length, -1),\n })\n }\n break\n case DirentType.File:\n if (!key.includes(PathSeparatorType.Slash, uri.length + 1)) {\n dirents.push({\n type: value.type,\n name: key.slice(uri.length),\n })\n }\n break\n default:\n break\n }\n }\n }\n return dirents\n}\n\nexport const chmod = (path, permissions) => {\n throw new Error('[memfs] chmod not implemented')\n}\n", "import * as DirentType from '../DirentType/DirentType.js'\nimport * as PathSeparatorType from '../PathSeparatorType/PathSeparatorType.js'\n\n// TODO when it rejects, it should throw a custom error,\n// FileSystemError\n\nexport const name = 'Web'\n\nexport const state = {\n watchers: Object.create(null),\n saveListeners: [],\n files: Object.create(null),\n}\n\nstate.files['/.gitkeep'] = ''\n\nstate.files['/languages/index.dart'] = `void main() {\n print('Hello, World!');\n}`\n\nstate.files['/languages/index.js'] = `const add = (a, b) => {\n return a + b;\n}`\n\nstate.files['/languages/scrolling.txt'] = `line 1\nline 2\nline 3\nline 4\nline 5\nline 6\nline 7\nline 8\nline 9\nline 10\nline 11\nline 12\nline 13\nline 14\nline 15\nline 16\nline 17\nline 18\nline 19\nline 20\nline 21\nline 22\nline 23\nline 24\nline 25\nline 26\nline 27\nline 28\nline 29\nline 30\nline 31\nline 32\nline 33\nline 34\nline 35\nline 36\nline 37\nline 38\nline 39\nline 40\nline 41\nline 42\nline 43\nline 44\nline 45\nline 46\nline 47\nline 48\nline 49\nline 50\nline 51\nline 52\nline 53\nline 54\nline 55\nline 56\nline 57\nline 58\nline 59\nline 60\nline 61\nline 62\nline 63\nline 64\nline 65\nline 66\nline 67\nline 68\nline 69\nline 70\nline 71\nline 72\nline 73\nline 74\nline 75\nline 76\nline 77\nline 78\nline 79\nline 80\nline 81\nline 82\nline 83\nline 84\nline 85\nline 86\nline 87\nline 88\nline 89\nline 90\nline 91\nline 92\nline 93\nline 94\nline 95\nline 96\nline 97\nline 98\nline 99\nline 100\n`\n\nstate.files['/languages/index.html'] = '<h1 class=\"abc\">hello world</h1>'\n\nstate.files['/languages/index.css'] = `h1 {\n font-size: 24px;\n}\n\n.Editor {\n width: 100%;\n height: 100%;\n background: var(--MainBackground);\n color: white;\n outline: none;\n border: none;\n font-family: 'Fira Code', monospace;\n position: relative;\n white-space: pre;\n font-size: 15px;\n letter-spacing: 0.5px;\n contain: strict;\n tab-size: 2;\n}\n`\n\nstate.files['/languages/index.ex'] = `defmodule RealWorld do\n @moduledoc \"\"\"\n RealWorld keeps the contexts that define your domain\n and business logic.\n Contexts are also responsible for managing your data, regardless\n if it comes from the database, an external API or others.\n \"\"\"\nend`\n\nstate.files['/languages/index.jl'] = `function mandelbrot(a)\nz = 0\nfor i=1:50\nz = z^2 + a\nend\nreturn z\nend\n\nfor y=1.0:-0.05:-1.0\nfor x=-2.0:0.0315:0.5\nabs(mandelbrot(complex(x, y))) < 2 ? print(\"*\") : print(\" \")\nend\nprintln()\nend`\n\nstate.files['/languages/index.pl'] = `#!/usr/bin/perl\n#\n# The traditional first program.\n\n# Strict and warnings are recommended.\nuse strict;\nuse warnings;\n\n# Print a message.\nprint \"Hello, World!\\n\";`\n\nstate.files['/languages/index.kt'] = `fun main(args : Array<String>) {\n println(\"Hello, World!\")\n}`\n\nstate.files['/languages/index.java'] = `class HelloWorld {\n public static void main(String[] args) {\n System.out.println(\"Hello, World!\");\n }\n}`\n\nstate.files['/languages/index.cpp'] = `using namespace std;\n\ntemplate <class ANYTYPE>\nvoid thing(int a, Blah other_thing, double c=10, ANYTYPE f) {\n return;\n}\n\nint operator^(double a, double b) {\n cout << \"testing\";\n return 0;\n}\n\nint main(char arg_num, char** vargs) {\n if ( 1 and 0 ) cout << \"this is the and operator\\n\";\n if ( true and (c > 1) ) cout << \"this is the and operator\\n\";\n if ((true) and (c > 1) ) cout << \"this is still the and operator\\n\";\n\n #error I should be able to write single quotes in here: Don't make errors\n}`\n\nstate.files['/languages/index.env'] = 'KEY=42'\n\nstate.files['/sample-folder/a.txt'] = ''\nstate.files['/sample-folder/b.txt'] = ''\nstate.files['/sample-folder/c.txt'] = ''\n\nconst getName = (path) => {\n return path.slice(path.lastIndexOf(PathSeparatorType.Slash) + 1)\n}\n\n// const getRelativePath = (path) => {\n// return path.slice('/workspace'.length)\n// }\n\nexport const readFile = async (path) => {\n const file = state.files[path]\n if (file === undefined) {\n throw new Error(`file not found ${path}`)\n }\n return file\n}\n\nexport const remove = async (path) => {\n throw new Error('not implemented')\n}\n\nexport const rename = async (oldPath, newPath) => {\n throw new Error('not implemented')\n}\n\nexport const mkdir = async (path) => {\n throw new Error('not implemented')\n}\n\nexport const createFile = async (path) => {\n throw new Error('not implemented')\n}\n\nexport const createFolder = async (path) => {\n throw new Error('not implemented')\n}\n\nexport const writeFile = async (path, content) => {\n state.files[path] = content\n}\n\nconst getDirent = (path, relativePath) => {\n const rest = path.slice(relativePath.length + 1)\n if (rest.includes(PathSeparatorType.Slash)) {\n return {\n type: DirentType.Directory,\n name: rest.slice(0, rest.indexOf(PathSeparatorType.Slash)),\n }\n }\n return {\n type: 'file',\n name: rest,\n }\n}\n\nexport const readDirWithFileTypes = (path) => {\n const dirents = []\n for (const key in state.files) {\n if (key.startsWith(path)) {\n const dirent = getDirent(key, path)\n if (!dirents.some((otherDirent) => otherDirent.name === dirent.name)) {\n dirents.push(dirent)\n }\n }\n }\n console.log({ path, dirents })\n return dirents\n}\n\nexport const watch = async (path) => {\n throw new Error('not implemented')\n}\n\nexport const unwatch = (id) => {\n throw new Error('not implemented')\n}\n\nexport const unwatchAll = () => {\n throw new Error('not implemented')\n}\n\n// TODO should be in main/textDocument\nexport const onDidSave = (listener) => {\n throw new Error('not implemented')\n}\n\nexport const getPathSeparator = () => {\n return PathSeparatorType.Slash\n}\n\nexport const canBeRestored = true\n", "export const Utf8 = 'utf8'\n\nexport const Binary = 'binary'\n", "// TODO file system providers should be lazy loaded (maybe)\n\nimport * as FileSystemExtensionHost from '../ExtensionHost/ExtensionHostFileSystem.js'\nimport * as FileSystemProtocol from '../FileSystemProtocol/FileSystemProtocol.js'\nimport * as FileSystemApp from './FileSystemApp.js'\nimport * as FileSystemData from './FileSystemData.js'\nimport * as FileSystemDisk from './FileSystemDisk.js'\nimport * as FileSystemFetch from './FileSystemFetch.js'\nimport * as FileSystemGitHub from './FileSystemGitHub.js'\nimport * as FileSystemHtml from './FileSystemHtml.js'\nimport * as FileSystemMemory from './FileSystemMemory.js'\nimport * as FileSystemWeb from './FileSystemWeb.js'\nimport * as EncodingType from '../EncodingType/EncodingType.js'\n\n// TODO when it rejects, it should throw a custom error,\n// FileSystemError\n\n// TODO lazyload different file system providers\n\nconst RE_PROTOCOL = /^([a-z]+):\\/\\//\n\nexport const getProtocol = (uri) => {\n const protocolMatch = uri.match(RE_PROTOCOL)\n if (protocolMatch) {\n return protocolMatch[1]\n }\n return ''\n}\n\nexport const state = {\n fileSystems: Object.create(null),\n}\n\n// TODO extension host should be able to register arbitrary protocols (except app, http, https, file, )\nstate.fileSystems[FileSystemProtocol.ExtensionHost] = FileSystemExtensionHost\nstate.fileSystems[FileSystemProtocol.App] = FileSystemApp\nstate.fileSystems[FileSystemProtocol.GitHub] = FileSystemGitHub\nstate.fileSystems[FileSystemProtocol.Web] = FileSystemWeb\nstate.fileSystems[FileSystemProtocol.Data] = FileSystemData\nstate.fileSystems[FileSystemProtocol.Memfs] = FileSystemMemory\nstate.fileSystems[FileSystemProtocol.Html] = FileSystemHtml\nstate.fileSystems[FileSystemProtocol.Fetch] = FileSystemFetch\n\nconst getFileSystem = (protocol) => {\n return state.fileSystems[protocol] || FileSystemDisk\n}\n\nconst PROTOCOL_POST_FIX_LENGTH = 3\n\nconst getPath = (protocol, uri) => {\n if (protocol === '') {\n return uri\n }\n return uri.slice(protocol.length + PROTOCOL_POST_FIX_LENGTH)\n}\n\nexport const readFile = (uri, encoding = EncodingType.Utf8) => {\n const protocol = getProtocol(uri)\n const path = getPath(protocol, uri)\n const fileSystem = getFileSystem(protocol)\n return fileSystem.readFile(path, encoding)\n}\n\nexport const remove = async (uri) => {\n const protocol = getProtocol(uri)\n const path = getPath(protocol, uri)\n const fileSystem = getFileSystem(protocol)\n await fileSystem.remove(path)\n}\n\nexport const rename = async (oldUri, newUri) => {\n const protocol = getProtocol(oldUri)\n const oldPath = getPath(protocol, oldUri)\n const newPath = getPath(protocol, newUri)\n const fileSystem = getFileSystem(protocol)\n await fileSystem.rename(oldPath, newPath)\n}\n\nexport const mkdir = async (uri) => {\n const protocol = getProtocol(uri)\n const path = getPath(protocol, uri)\n const fileSystem = getFileSystem(protocol)\n await fileSystem.mkdir(path)\n}\n\nexport const writeFile = async (uri, content, encoding = EncodingType.Utf8) => {\n const protocol = getProtocol(uri)\n const path = getPath(protocol, uri)\n const fileSystem = getFileSystem(protocol)\n await fileSystem.writeFile(path, content, encoding)\n}\n\nexport const createFile = (uri) => {\n return writeFile(uri, '')\n}\n\nexport const readDirWithFileTypes = (uri) => {\n const protocol = getProtocol(uri)\n const path = getPath(protocol, uri)\n const fileSystem = getFileSystem(protocol)\n return fileSystem.readDirWithFileTypes(path)\n}\n\nexport const unwatch = (id) => {\n throw new Error('not implemented')\n}\n\nexport const unwatchAll = () => {\n throw new Error('not implemented')\n}\n\nexport const getBlobUrl = (uri) => {\n const protocol = getProtocol(uri)\n const path = getPath(protocol, uri)\n const fileSystem = getFileSystem(protocol)\n return fileSystem.getBlobUrl(path)\n}\n\nexport const copy = (sourceUri, targetUri) => {\n // TODO what if it is not the same file system?\n const protocol = getProtocol(sourceUri)\n const fileSystem = getFileSystem(protocol)\n const sourcePath = getPath(protocol, sourceUri)\n const targetPath = getPath(protocol, targetUri)\n return fileSystem.copy(sourcePath, targetPath)\n}\n\nexport const getPathSeparator = (uri) => {\n const protocol = getProtocol(uri)\n const fileSystem = getFileSystem(protocol)\n return fileSystem.getPathSeparator(protocol)\n}\n\nexport const getRealPath = (uri) => {\n const protocol = getProtocol(uri)\n const path = getPath(protocol, uri)\n const fileSystem = getFileSystem(protocol)\n return fileSystem.getRealPath(path)\n}\n\nexport const stat = (uri) => {\n const protocol = getProtocol(uri)\n const path = getPath(protocol, uri)\n const fileSystem = getFileSystem(protocol)\n return fileSystem.stat(path)\n}\n\nexport const chmod = (uri, permissions) => {\n const protocol = getProtocol(uri)\n const path = getPath(protocol, uri)\n const fileSystem = getFileSystem(protocol)\n return fileSystem.chmod(path, permissions)\n}\n\nexport const canBeRestored = (uri) => {\n const protocol = getProtocol(uri)\n const fileSystem = getFileSystem(protocol)\n return fileSystem.canBeRestored\n}\n", "import * as Command from '../Command/Command.js'\nimport * as Platform from '../Platform/Platform.js'\nimport * as SharedProcess from '../SharedProcess/SharedProcess.js'\nimport * as FileSystem from '../FileSystem/FileSystem.js'\nimport * as Json from '../Json/Json.js'\nimport * as RendererProcess from '../RendererProcess/RendererProcess.js'\nimport * as GlobalEventBus from '../GlobalEventBus/GlobalEventBus.js'\nimport * as PlatformType from '../PlatformType/PlatformType.js'\n\nexport const state = Object.create(null)\n\nexport const openSettingsJson = async () => {\n await Command.execute(\n /* Main.openUri */ 'Main.openUri',\n /* uri */ 'app://settings.json'\n )\n}\n\nexport const openKeyBindingsJson = async () => {\n await Command.execute(\n /* Main.openUri */ 'Main.openUri',\n /* uri */ 'app://keyBindings.json'\n )\n}\n\n// TODO command for opening workspace settings\n\nconst getPreferencesJson = async () => {\n if (Platform.platform === PlatformType.Web) {\n const cachedPreferences = await Command.execute(\n /* LocalStorage.getJson */ 'LocalStorage.getJson',\n /* key */ 'settings'\n )\n if (cachedPreferences) {\n return cachedPreferences\n }\n const assetDir = Platform.getAssetDir()\n const url = `${assetDir}/config/defaultSettings.json`\n return Command.execute(/* Ajax.getJson */ 'Ajax.getJson', /* url */ url)\n }\n return SharedProcess.invoke(/* Preferences.getAll */ 'Preferences.getAll')\n}\n\nconst getPreferences = async () => {\n // TODO cache preferences, but they should not be stale\n const preferences = getPreferencesJson()\n return preferences\n}\n\nexport const hydrate = async () => {\n try {\n // TODO should configuration be together with all other preferences (e.g. selecting color theme code is not needed on startup)\n // TODO probably not all preferences need to be kept in memory\n const preferences = await getPreferences()\n Object.assign(state, preferences)\n\n const styles = []\n const fontSize = preferences['editor.fontSize']\n if (fontSize) {\n styles.push(` --EditorFontSize: ${fontSize}px;`)\n }\n const fontFamily = preferences['editor.fontFamily']\n if (fontFamily) {\n styles.push(` --EditorFontFamily: ${fontFamily};`)\n }\n const lineHeight = preferences['editor.lineHeight']\n if (lineHeight) {\n styles.push(` --EditorLineHeight: ${lineHeight}px;`)\n }\n const letterSpacing = preferences['editor.letterSpacing']\n if (letterSpacing) {\n styles.push(` --EditorLetterSpacing: ${letterSpacing}px;`)\n }\n const css = `:root {\n${styles.join('\\n')}\n}`\n // TODO make Css.setInlineStyle a separate module in renderer-worker\n await RendererProcess.invoke(\n /* Css.setInlineStyle */ 'Css.setInlineStyle',\n /* id */ 'Settings',\n /* css */ css\n )\n } catch (error) {\n console.error(error)\n }\n}\n\nexport const get = (key) => {\n return state[key]\n}\n\nexport const set = async (key, value) => {\n state[key] = value\n if (Platform.platform === 'web') {\n const preferences = { ...state, [key]: value }\n await Command.execute(\n /* LocalStorage.setJson */ 'LocalStorage.setJson',\n /* key */ 'preferences',\n /* value */ preferences\n )\n return\n }\n const content = Json.stringify(state)\n await FileSystem.writeFile('app://settings.json', content)\n}\n\nexport const update = async (settings) => {\n const newSettings = { ...state, ...settings }\n const content = Json.stringify(newSettings)\n await FileSystem.writeFile('app://settings.json', content)\n await GlobalEventBus.emitEvent('preferences.changed')\n}\n", "export const Separator = 'separator'\n", "export const ActivityBar = 1\n\nexport const Edit = 2\n\nexport const Editor = 3\n\nexport const Explorer = 4\n\nexport const File = 5\n\nexport const Go = 6\n\nexport const Help = 7\n\nexport const ManageExtension = 8\n\nexport const OpenRecent = 9\n\nexport const Run = 10\n\nexport const Selection = 11\n\nexport const Settings = 12\n\nexport const Tab = 13\n\nexport const Terminal = 14\n\nexport const TitleBar = 15\n\nexport const View = 16\n\nexport const ActivityBarAdditionalViews = 17\n\nexport const Search = 18\n\nexport const EditorImage = 19\n\nexport const ExtensionDetailReadme = 20\n\nexport const SimpleBrowser = 21\n", "const emptyObject = {}\n\nconst RE_PLACEHOLDER = /\\{(PH\\d+)\\}/g\n\n/**\n *\n * @param {string} key\n * @param {any} placeholders\n * @returns {string}\n */\nexport const i18nString = (key, placeholders = emptyObject) => {\n if (placeholders === emptyObject) {\n return key\n }\n const replacer = (match, rest) => {\n return placeholders[rest]\n }\n return key.replaceAll(RE_PLACEHOLDER, replacer)\n}\n", "export const Separator = 1\n\nexport const None = 0\n\nexport const SubMenu = 4\n\nexport const Checked = 2\n\nexport const Unchecked = 3\n\nexport const Disabled = 5\n\nexport const RestoreFocus = 6\n", "export const Left = 1\nexport const Right = 2\n", "export const ActivityBar = 'ActivityBar'\n\nexport const Clock = 'Clock'\n\nexport const Counter = 'Counter'\n\nexport const DebugConsole = 'Debug Console'\n\nexport const EditorCompletion = 'EditorCompletion'\n\nexport const EditorImage = 'EditorImage'\n\nexport const EditorPlainText = 'EditorPlainText'\n\nexport const EditorText = 'EditorText'\n\nexport const Explorer = 'Explorer'\n\nexport const ExtensionDetail = 'ExtensionDetail'\n\nexport const Extensions = 'Extensions'\n\nexport const FindWidget = 'FindWidget'\n\nexport const Iframe = 'Iframe'\n\nexport const Implementations = 'Implementations'\n\nexport const KeyBindings = 'KeyBindings'\n\nexport const Layout = 'Layout'\n\nexport const List = 'List'\n\nexport const Locations = 'Locations'\n\nexport const Main = 'Main'\n\nexport const None = ''\n\nexport const Noop = 'Noop'\n\nexport const Output = 'Output'\n\nexport const Panel = 'Panel'\n\nexport const Pdf = 'Pdf'\n\nexport const Problems = 'Problems'\n\nexport const QuickPick = 'QuickPick'\n\nexport const References = 'References'\n\nexport const RunAndDebug = 'Run And Debug'\n\nexport const Search = 'Search'\n\nexport const SideBar = 'SideBar'\n\nexport const SimpleBrowser = 'SimpleBrowser'\n\nexport const SourceControl = 'Source Control'\n\nexport const StatusBar = 'StatusBar'\n\nexport const Terminal = 'Terminal'\n\nexport const TitleBar = 'TitleBar'\n\nexport const TitleBarButtons = 'TitleBarButtons'\n\nexport const TitleBarMenuBar = 'TitleBarMenuBar'\n\nexport const TodoList = 'TodoList'\n\nexport const Audio = 'Audio'\n", "import * as I18nString from '../I18NString/I18NString.js'\nimport * as MenuItemFlags from '../MenuItemFlags/MenuItemFlags.js'\nimport * as SideBarLocationType from '../SideBarLocationType/SideBarLocationType.js'\nimport * as ViewletModuleId from '../ViewletModuleId/ViewletModuleId.js'\n\n/**\n * @enum {string}\n */\nexport const UiStrings = {\n Seperator: 'Separator',\n MoveSideBarLeft: 'Move Side Bar Left',\n MoveSideBarRight: 'Move Side Bar Right',\n HideActivityBar: 'Hide Activity Bar',\n}\n\nconst toContextMenuItem = (activityBarItem) => {\n return {\n label: activityBarItem.id,\n id: 8000, // TODO\n flags: activityBarItem.enabled\n ? MenuItemFlags.Checked\n : MenuItemFlags.Unchecked,\n }\n}\n\nconst menuEntryMoveSideBar = (sideBarLocation) => {\n switch (sideBarLocation) {\n case SideBarLocationType.Left:\n return {\n id: 'moveSideBarRight',\n label: I18nString.i18nString(UiStrings.MoveSideBarRight),\n flags: MenuItemFlags.None,\n command: 'Layout.moveSideBarRight',\n }\n case SideBarLocationType.Right:\n return {\n id: 'moveSideBarLeft',\n label: I18nString.i18nString(UiStrings.MoveSideBarLeft),\n flags: MenuItemFlags.None,\n command: 'Layout.moveSideBarLeft',\n }\n default:\n throw new Error('unexpected side bar location')\n }\n}\n\nexport const getMenuEntries = async (layoutState, activityBarState) => {\n const { activityBarItems } = activityBarState\n const { sideBarLocation } = layoutState\n return [\n ...activityBarItems.map(toContextMenuItem),\n {\n id: 'separator',\n label: I18nString.i18nString(UiStrings.Seperator),\n flags: MenuItemFlags.Separator,\n },\n menuEntryMoveSideBar(sideBarLocation),\n {\n id: 'hideActivityBar',\n label: I18nString.i18nString(UiStrings.HideActivityBar),\n flags: MenuItemFlags.None,\n command: /* Layout.hideActivityBar */ 'Layout.hideActivityBar',\n },\n ]\n}\n\nexport const inject = [ViewletModuleId.Layout, ViewletModuleId.ActivityBar]\n", "import * as I18nString from '../I18NString/I18NString.js'\nimport * as MenuItemFlags from '../MenuItemFlags/MenuItemFlags.js'\n\nexport const UiStrings = {\n Undo: 'Undo',\n Redo: 'Redo',\n Separator: 'Separator',\n Cut: 'Cut',\n Copy: 'Copy',\n Paste: 'Paste',\n ToggleLineComment: 'Toggle Line Comment',\n ToggleBlockComment: 'Toggle Block Comment',\n}\n\nexport const getMenuEntries = () => {\n return [\n {\n id: 'undo',\n label: I18nString.i18nString(UiStrings.Undo),\n flags: MenuItemFlags.Disabled,\n command: /* TODO */ -1,\n },\n {\n id: 'redo',\n label: I18nString.i18nString(UiStrings.Redo),\n flags: MenuItemFlags.Disabled,\n command: /* TODO */ -1,\n },\n {\n id: 'separator',\n label: I18nString.i18nString(UiStrings.Separator),\n flags: MenuItemFlags.Separator,\n command: /* TODO */ -1,\n },\n {\n id: 'cut',\n label: I18nString.i18nString(UiStrings.Cut),\n flags: MenuItemFlags.None,\n command: /* Editor.cut */ 'Editor.cut',\n },\n {\n id: 'copy',\n label: I18nString.i18nString(UiStrings.Copy),\n flags: MenuItemFlags.None,\n command: /* Editor.copy */ 'Editor.copy',\n },\n {\n id: 'paste',\n label: I18nString.i18nString(UiStrings.Paste),\n flags: MenuItemFlags.None,\n command: /* Editor.paste */ 'Editor.paste',\n },\n {\n id: 'separator',\n label: I18nString.i18nString(UiStrings.Separator),\n flags: MenuItemFlags.Separator,\n command: /* TODO */ -1,\n },\n {\n id: 'toggle-line-comment',\n label: I18nString.i18nString(UiStrings.ToggleLineComment),\n flags: MenuItemFlags.None,\n command: /* Editor.toggleLineComment */ 'Editor.toggleLineComment',\n },\n {\n id: 'toggle-block-comment',\n label: I18nString.i18nString(UiStrings.ToggleBlockComment),\n flags: MenuItemFlags.None,\n command: /* Editor.toggleBlockComment */ 'Editor.toggleBlockComment',\n },\n ]\n}\n", "import * as I18nString from '../I18NString/I18NString.js'\nimport * as MenuItemFlags from '../MenuItemFlags/MenuItemFlags.js'\n\n/**\n * @enum {string}\n */\nexport const UiStrings = {\n GoToTypeDefinition: 'Go To Type Definition',\n FindAllReferences: 'Find All References',\n FindAllImplementations: 'Find All Implementations',\n Cut: 'Cut',\n Copy: 'Copy',\n Paste: 'Paste',\n}\n\nexport const getMenuEntries = () => {\n return [\n {\n id: 'go-to-type-definition',\n label: I18nString.i18nString(UiStrings.GoToTypeDefinition),\n flags: MenuItemFlags.None,\n command: /* Editor.goToTypeDefinition */ 'Editor.goToTypeDefinition',\n },\n {\n id: 'find-all-references',\n label: I18nString.i18nString(UiStrings.FindAllReferences),\n flags: MenuItemFlags.None,\n command: /* ViewletSideBar.show */ 'SideBar.show',\n args: [/* id */ 'References', /* focus */ true],\n },\n {\n id: 'find-all-implementations',\n label: I18nString.i18nString(UiStrings.FindAllImplementations),\n flags: MenuItemFlags.None,\n command: /* ViewletSideBar.show */ 'SideBar.show',\n args: [/* id */ 'Implementations', /* focus */ true],\n },\n {\n id: 'cut',\n label: I18nString.i18nString(UiStrings.Cut),\n flags: MenuItemFlags.None,\n command: /* Editor.cut */ 'Editor.cut',\n },\n {\n id: 'copy',\n label: I18nString.i18nString(UiStrings.Copy),\n flags: MenuItemFlags.None,\n command: /* Editor.copy */ 'Editor.copy',\n },\n {\n id: 'paste',\n label: I18nString.i18nString(UiStrings.Paste),\n flags: MenuItemFlags.None,\n command: /* Editor.paste */ 'Editor.paste',\n },\n ]\n}\n", "import * as ElectronProcess from '../ElectronProcess/ElectronProcess.js'\n\nexport const state = {\n openCount: 0,\n}\n\nexport const createBrowserView = (restoreId, fallThroughKeyBindings) => {\n state.openCount++\n return ElectronProcess.invoke(\n 'ElectronBrowserView.createBrowserView',\n restoreId,\n fallThroughKeyBindings\n )\n}\n\nexport const disposeBrowserView = (id) => {\n state.openCount--\n return ElectronProcess.invoke('ElectronBrowserView.disposeBrowserView', id)\n}\n\nexport const getOpenCount = () => {\n return state.openCount\n}\n\nexport const isOpen = () => {\n return state.openCount > 0\n}\n", "import * as RendererProcess from '../RendererProcess/RendererProcess.js'\nimport * as Platform from '../Platform/Platform.js'\nimport { VError } from '../VError/VError.js'\n\nexport const setInlineStyle = async (id, css) => {\n await RendererProcess.invoke(\n /* Css.setInlineStyle */ 'Css.setInlineStyle',\n /* id */ id,\n /* css */ css\n )\n}\n\nexport const loadCssStyleSheet = async (css) => {\n try {\n const assetDir = Platform.getAssetDir()\n const url = `${assetDir}${css}`\n const response = await fetch(url)\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n const text = await response.text()\n await RendererProcess.invoke(\n /* Css.addCssStyleSheet */\n 'Css.addCssStyleSheet',\n /* text */ text\n )\n } catch (error) {\n throw new VError(error, `Failed to load css ${css}`)\n }\n}\n\nexport const loadCssStyleSheets = async (css) => {\n return Promise.all(css.map(loadCssStyleSheet))\n}\n", "export class CancelationError extends Error {\n constructor() {\n super('canceled')\n this.name = 'CancelationError'\n }\n}\n", "export const nameAnonymousFunction = (fn, name) => {\n Object.defineProperty(fn, 'name', {\n value: name,\n })\n}\n", "import * as WebStorage from '../WebStorage/WebStorage.js'\nimport * as WebStorageType from '../WebStorageType/WebStorageType.js'\n\nexport const clear = () => {\n return WebStorage.clear(WebStorageType.SessionStorage)\n}\n\nexport const getText = (key) => {\n return WebStorage.getText(WebStorageType.SessionStorage, key)\n}\n\nexport const getJson = (key) => {\n return WebStorage.getJson(WebStorageType.SessionStorage, key)\n}\n\nexport const setText = (key, value) => {\n return WebStorage.setText(WebStorageType.SessionStorage, key, value)\n}\n\nexport const setJson = (key, value) => {\n return WebStorage.setJson(WebStorageType.SessionStorage, key, value)\n}\n", "import * as LocalStorage from '../LocalStorage/LocalStorage.js'\nimport * as Preferences from '../Preferences/Preferences.js'\nimport * as RendererProcess from '../RendererProcess/RendererProcess.js'\nimport * as SessionStorage from '../SessionStorage/SessionStorage.js'\nimport * as ViewletStates from '../ViewletStates/ViewletStates.js'\nimport * as Workspace from '../Workspace/Workspace.js'\n\nconst serializeInstance = (instance) => {\n if (instance && instance.factory && instance.factory.saveState) {\n return instance.factory.saveState(instance.state)\n }\n return instance.state\n}\n\nconst mapObject = (object, fn) => {\n const mapFn = ([key, value]) => [key, fn(value)]\n return Object.fromEntries(Object.entries(object).map(mapFn))\n}\n\nconst getStateToSave = () => {\n const instances = ViewletStates.getAllInstances()\n const savedInstances = mapObject(instances, serializeInstance)\n return {\n instances: savedInstances,\n mainEditors: [],\n workspace: {\n path: Workspace.state.workspacePath,\n homeDir: Workspace.state.homeDir,\n pathSeparator: Workspace.state.pathSeparator,\n uri: Workspace.state.workspaceUri,\n },\n }\n}\n\nexport const handleVisibilityChange = async (visibilityState) => {\n if (Workspace.isTest()) {\n return\n }\n if (visibilityState === 'hidden') {\n const stateToSave = getStateToSave()\n await Promise.all([\n LocalStorage.setJson('stateToSave', stateToSave),\n SessionStorage.setJson('workspace', stateToSave.workspace),\n ])\n // console.log('[renderer worker] state was saved')\n }\n}\n\nexport const hydrate = async () => {\n // TODO should set up listener in renderer process\n if (!Preferences.get('workbench.saveStateOnVisibilityChange')) {\n console.info(\n '[info] not saving state on visibility change - disabled by settings'\n )\n return\n }\n await RendererProcess.invoke('Window.onVisibilityChange')\n}\n\nexport const getSavedState = () => {\n if (Workspace.isTest()) {\n return undefined\n }\n return LocalStorage.getJson('stateToSave')\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as Command from '../Command/Command.js'\nimport * as Css from '../Css/Css.js'\nimport { CancelationError } from '../Errors/CancelationError.js'\nimport * as GlobalEventBus from '../GlobalEventBus/GlobalEventBus.js'\nimport * as NameAnonymousFunction from '../NameAnonymousFunction/NameAnonymousFunction.js'\nimport * as RendererProcess from '../RendererProcess/RendererProcess.js'\nimport * as SaveState from '../SaveState/SaveState.js'\nimport * as ViewletStates from '../ViewletStates/ViewletStates.js'\n\nexport const state = {\n pendingModules: Object.create(null),\n}\n\nconst ViewletState = {\n Default: 0,\n ModuleLoaded: 1,\n ContentLoaded: 2,\n RendererProcessViewletLoaded: 3,\n ContentRendered: 4,\n Appended: 5,\n}\n\nconst kCreate = 'Viewlet.create'\nconst kAppend = 'Viewlet.append'\nconst kSendMultiple = 'Viewlet.sendMultiple'\nconst kLoadModule = 'Viewlet.loadModule'\nconst kLoad = 'Viewlet.load'\nconst kSetBounds = 'Viewlet.setBounds'\nconst kAppendViewlet = 'Viewlet.appendViewlet'\nconst kHandleError = 'Viewlet.handleError'\nconst kDispose = 'Viewlet.dispose'\n\n// TODO maybe wrapViewletCommand should accept module instead of id string\n// then check if instance.factory matches module -> only compare reference (int) instead of string\n// should be faster\nconst wrapViewletCommand = (id, fn) => {\n const wrappedViewletCommand = async (...args) => {\n // TODO get actual focused instance\n const activeInstance = ViewletStates.getInstance(id)\n if (!activeInstance) {\n console.info(\n `cannot execute viewlet command ${id}.${fn.name}: no active instance for ${id}`\n )\n return\n }\n if (activeInstance.factory && activeInstance.factory.hasFunctionalRender) {\n const oldState = activeInstance.state\n const newState = await fn(oldState, ...args)\n if (!newState) {\n console.log({ fn })\n }\n Assert.object(newState)\n // console.log({ fn, newState })\n if (oldState === newState) {\n return\n }\n const commands = render(activeInstance.factory, oldState, newState)\n ViewletStates.setState(id, newState)\n await RendererProcess.invoke(\n /* Viewlet.sendMultiple */ kSendMultiple,\n /* commands */ commands\n )\n } else {\n return fn(activeInstance.state, ...args)\n }\n }\n NameAnonymousFunction.nameAnonymousFunction(wrappedViewletCommand, fn.name)\n return wrappedViewletCommand\n}\n\nconst wrapViewletCommandWithSideEffect = (id, fn) => {\n const wrappedViewletCommand = async (...args) => {\n // TODO get actual focused instance\n const activeInstance = ViewletStates.getInstance(id)\n if (!activeInstance) {\n console.info(\n `cannot execute viewlet command ${id}.${fn.name}: no active instance for ${id}`\n )\n return\n }\n const oldState = activeInstance.state\n const { newState, commands } = await fn(oldState, ...args)\n Assert.object(newState)\n // console.log({ fn, newState })\n if (oldState !== newState) {\n commands.push(...render(activeInstance.factory, oldState, newState))\n ViewletStates.setState(id, newState)\n }\n await RendererProcess.invoke(\n /* Viewlet.sendMultiple */ kSendMultiple,\n /* commands */ commands\n )\n }\n NameAnonymousFunction.nameAnonymousFunction(wrappedViewletCommand, fn.name)\n return wrappedViewletCommand\n}\n\nconst wrapViewletCommandLazy = (id, key, importFn) => {\n const lazyCommand = async (...args) => {\n const module = await importFn()\n const fn = module[key]\n if (typeof fn !== 'function') {\n throw new Error(`${id}.${key} is not a function`)\n }\n const activeInstance = ViewletStates.getInstance(id)\n if (!activeInstance) {\n console.info(\n `cannot execute viewlet command ${id}.${fn.name}: no active instance for ${id}`\n )\n return\n }\n if (activeInstance.factory && activeInstance.factory.hasFunctionalRender) {\n const oldState = activeInstance.state\n const newState = await fn(oldState, ...args)\n if (!newState) {\n console.log({ fn })\n }\n Assert.object(newState)\n // console.log({ fn, newState })\n if (oldState === newState) {\n return\n }\n const commands = render(activeInstance.factory, oldState, newState)\n ViewletStates.setState(id, newState)\n await RendererProcess.invoke(\n /* Viewlet.sendMultiple */ kSendMultiple,\n /* commands */ commands\n )\n } else {\n return fn(activeInstance.state, ...args)\n }\n }\n NameAnonymousFunction.nameAnonymousFunction(lazyCommand, `${id}/lazy/${key}`)\n return lazyCommand\n}\n\n/**\n *\n * @param {()=>any} getModule\n * @returns\n */\nexport const create = (\n getModule,\n id,\n parentId,\n uri,\n left,\n top,\n width,\n height\n) => {\n Assert.fn(getModule)\n Assert.string(id)\n Assert.string(parentId)\n Assert.string(uri)\n Assert.number(left)\n Assert.number(top)\n Assert.number(width)\n Assert.number(height)\n return {\n type: 0,\n getModule,\n id,\n parentId,\n uri,\n left,\n top,\n width,\n height,\n }\n}\n\nconst getInstanceSavedState = (savedState, id) => {\n if (savedState && savedState.instances && savedState.instances[id]) {\n return savedState.instances[id]\n }\n return undefined\n}\n\nconst getRenderCommands = (module, oldState, newState, name = module.name) => {\n if (Array.isArray(module.render)) {\n const commands = []\n for (const item of module.render) {\n if (!item.isEqual(oldState, newState)) {\n const command = item.apply(oldState, newState)\n if (\n command[0] !== 'Viewlet.send' &&\n command[0] !== 'Viewlet.ariaAnnounce'\n ) {\n command.unshift('Viewlet.send', name)\n }\n commands.push(command)\n }\n }\n return commands\n }\n if (module.render) {\n console.log('else')\n return module.render(oldState, newState)\n }\n return []\n}\n\nconst registerWrappedCommand = (moduleName, key, wrappedCommand) => {\n if (key.startsWith(moduleName)) {\n Command.register(key, wrappedCommand)\n } else {\n // TODO rename editorText to editor\n if (moduleName === 'EditorText') {\n Command.register(`Editor.${key}`, wrappedCommand)\n } else {\n Command.register(`${moduleName}.${key}`, wrappedCommand)\n }\n }\n}\n\nconst maybeRegisterWrappedCommands = (module) => {\n if (module.Commands) {\n for (const [key, value] of Object.entries(module.Commands)) {\n const wrappedCommand = wrapViewletCommand(module.name, value)\n registerWrappedCommand(module.name, key, wrappedCommand)\n }\n }\n if (module.CommandsWithSideEffects) {\n for (const [key, value] of Object.entries(module.CommandsWithSideEffects)) {\n const wrappedCommand = wrapViewletCommandWithSideEffect(\n module.name,\n value\n )\n registerWrappedCommand(module.name, key, wrappedCommand)\n }\n }\n if (module.LazyCommands) {\n for (const [key, value] of Object.entries(module.LazyCommands)) {\n const wrappedCommand = wrapViewletCommandLazy(module.name, key, value)\n registerWrappedCommand(module.name, key, wrappedCommand)\n }\n }\n}\n\nconst maybeRegisterEvents = (module) => {\n if (module.Events) {\n // TODO remove event listeners when viewlet is disposed\n for (const [key, value] of Object.entries(module.Events)) {\n const handleUpdate = async () => {\n const instance = ViewletStates.getInstance(module.name)\n const newState = await value(instance.state)\n if (!newState) {\n throw new Error('newState must be defined')\n }\n if (!module.shouldApplyNewState(newState)) {\n console.log('[viewlet manager] return', newState)\n\n return\n }\n const commands = render(instance.factory, instance.state, newState)\n instance.state = newState\n await RendererProcess.invoke(\n /* Viewlet.sendMultiple */ kSendMultiple,\n /* commands */ commands\n )\n }\n GlobalEventBus.addListener(key, handleUpdate)\n }\n }\n}\n\nconst actuallyLoadModule = async (getModule, id) => {\n const module = await getModule(id)\n await RendererProcess.invoke(/* Viewlet.load */ kLoadModule, /* id */ id)\n if (module.Css) {\n // this is a memory leak but it is not too important\n // because javascript modules also cannot be unloaded\n if (Array.isArray(module.Css)) {\n await Css.loadCssStyleSheets(module.Css)\n } else {\n await Css.loadCssStyleSheet(module.Css)\n }\n }\n maybeRegisterWrappedCommands(module)\n maybeRegisterEvents(module)\n return module\n}\n\nconst loadModule = (getModule, id) => {\n if (!(id in state.pendingModules)) {\n state.pendingModules[id] = actuallyLoadModule(getModule, id)\n }\n return state.pendingModules[id]\n}\n\n// TODO add lots of unit tests for this\n\nexport const backgroundLoad = async ({\n getModule,\n id,\n left,\n top,\n width,\n height,\n props,\n}) => {\n const module = await loadModule(getModule, id)\n const viewletState = module.create(id, '', top, left, width, height)\n const { title, uri } = await module.backgroundLoadContent(viewletState, props)\n return {\n title,\n uri,\n }\n}\n/**\n *\n * @param {{getModule:()=>any, type:number, id:string, disposed:boolean }} viewlet\n * @returns\n */\nexport const load = async (\n viewlet,\n focus = false,\n restore = false,\n restoreState = undefined\n) => {\n // console.time(`load/${viewlet.id}`)\n if (viewlet.type !== 0) {\n console.log('viewlet must be empty')\n throw new Error('viewlet must be empty')\n }\n let state = ViewletState.Default\n let module\n try {\n viewlet.type = 1\n if (viewlet.disposed) {\n return\n }\n\n module = await loadModule(viewlet.getModule, viewlet.id)\n if (viewlet.disposed) {\n return\n }\n state = ViewletState.ModuleLoaded\n let left = viewlet.left\n let top = viewlet.top\n let width = viewlet.width\n let height = viewlet.height\n if (module.getPosition) {\n const position = module.getPosition()\n left = position.left\n top = position.top\n width = position.width\n height = position.height\n }\n\n const viewletState = module.create(\n viewlet.id,\n viewlet.uri,\n left,\n top,\n width,\n height\n )\n\n const oldVersion =\n viewletState.version === undefined ? undefined : ++viewletState.version\n let instanceSavedState\n if (restore) {\n const stateToSave = await SaveState.getSavedState()\n instanceSavedState = getInstanceSavedState(stateToSave, viewlet.id)\n } else if (restoreState) {\n instanceSavedState = restoreState\n }\n let newState = await module.loadContent(viewletState, instanceSavedState)\n if (\n (viewlet.visible === undefined || viewlet.visible === true) &&\n module.show\n ) {\n await module.show(newState)\n }\n const extraCommands = []\n\n if (module.getChildren) {\n const children = module.getChildren(newState)\n for (const child of children) {\n const childModule = await loadModule(viewlet.getModule, child.id)\n // TODO get position of child module\n const oldState = childModule.create(\n '',\n '',\n child.left,\n child.top,\n child.width,\n child.height\n )\n let instanceSavedState\n if (restore) {\n const stateToSave = await SaveState.getSavedState()\n instanceSavedState = getInstanceSavedState(stateToSave, child.id)\n } else if (restoreState) {\n instanceSavedState = restoreState\n }\n const newState = await childModule.loadContent(\n oldState,\n instanceSavedState\n )\n const childInstance = {\n state: newState,\n factory: childModule,\n }\n ViewletStates.set(childModule.name, childInstance)\n const commands = getRenderCommands(childModule, oldState, newState)\n extraCommands.push([kCreate, childModule.name])\n extraCommands.push(...commands)\n extraCommands.push([kAppend, viewlet.id, childModule.name])\n if (childModule.contentLoadedEffects) {\n await childModule.contentLoadedEffects(newState)\n }\n }\n }\n if (focus && module.focus) {\n newState = await module.focus(newState)\n }\n if (viewletState.version !== oldVersion) {\n newState = viewletState\n console.log('version mismatch')\n // TODO not sure if Object.assign is a good idea\n // Object.assign(viewletState, newState)\n }\n if (viewlet.disposed) {\n return\n }\n state = ViewletState.ContentLoaded\n if (viewlet.show === false) {\n } else {\n await RendererProcess.invoke(\n /* Viewlet.loadModule */ kLoadModule,\n /* id */ viewlet.id\n )\n }\n if (viewlet.disposed) {\n // TODO unload the module from renderer process\n return\n }\n // TODO race condition: viewlet state may have been updated again in the mean time\n state = ViewletState.RendererProcessViewletLoaded\n\n outer: if (module.shouldApplyNewState) {\n for (let i = 0; i < 2; i++) {\n if (module.shouldApplyNewState(newState)) {\n ViewletStates.set(viewlet.id, {\n state: newState,\n factory: module,\n })\n break outer\n }\n newState = await module.loadContent(viewletState)\n }\n throw new Error('viewlet could not be updated')\n } else {\n ViewletStates.set(viewlet.id, {\n state: newState,\n factory: module,\n })\n }\n const commands = [[kCreate, viewlet.id]]\n if (viewletState !== newState && module.contentLoaded) {\n const additionalExtraCommands = await module.contentLoaded(newState)\n Assert.array(additionalExtraCommands)\n commands.push(...additionalExtraCommands)\n }\n\n if (module.hasFunctionalRender) {\n const renderCommands = getRenderCommands(module, viewletState, newState)\n commands.push(...renderCommands)\n if (viewlet.show === false) {\n const allCommands = [\n ...commands,\n ...extraCommands,\n // ['Viewlet.show', viewlet.id],\n ]\n if (viewlet.setBounds !== false) {\n allCommands.splice(1, 0, [\n kSetBounds,\n viewlet.id,\n left,\n top,\n width,\n height,\n ])\n }\n if (module.contentLoadedEffects) {\n module.contentLoadedEffects(newState)\n }\n return allCommands\n }\n // console.log('else', viewlet.id, { commands })\n commands.push(...extraCommands)\n await RendererProcess.invoke(\n /* Viewlet.sendMultiple */ kSendMultiple,\n /* commands */ commands\n )\n }\n if (module.contentLoadedEffects) {\n module.contentLoadedEffects(newState)\n }\n if (viewlet.disposed) {\n // TODO unload the module from renderer process\n return\n }\n state = ViewletState.ContentRendered\n if (viewlet.parentId && viewlet.show !== false) {\n await RendererProcess.invoke(\n /* Viewlet.append */ kAppendViewlet,\n /* parentId */ viewlet.parentId,\n /* id */ viewlet.id,\n /* focus */ focus\n )\n }\n state = ViewletState.Appended\n\n if (viewlet.disposed) {\n // TODO unload the module from renderer process\n return\n }\n return commands\n } catch (error) {\n if (error && error instanceof CancelationError) {\n return\n }\n viewlet.type = 4\n console.error(error)\n try {\n if (module && module.handleError) {\n return await module.handleError(error)\n }\n const commands = []\n if (state < ViewletState.RendererProcessViewletLoaded) {\n await RendererProcess.invoke(\n /* Viewlet.loadModule */ kLoadModule,\n /* id */ viewlet.id\n )\n }\n commands.push([kCreate, viewlet.id, viewlet.parentId])\n commands.push([\n kSetBounds,\n viewlet.id,\n viewlet.left,\n viewlet.top,\n viewlet.width,\n viewlet.height,\n ])\n commands.push([\n /* viewlet.handleError */ kHandleError,\n /* id */ viewlet.id,\n /* parentId */ viewlet.parentId,\n /* message */ `${error}`,\n ])\n return commands\n } catch (error) {\n console.error(error)\n // this is really bad\n // probably can only show an alert at this point\n }\n }\n // console.timeEnd(`load/${viewlet.id}`)\n}\n\nexport const dispose = async (id) => {\n state[id].disposed = true\n delete Viewlet.state.instances[id]\n delete state[id]\n await RendererProcess.invoke(/* Viewlet.dispose */ kDispose, /* id */ id)\n}\n\nexport const mutate = async (id, fn) => {\n // TODO handle race conditions here\n const viewletState = state[id]\n await fn(state)\n}\n\nexport const render = (module, oldState, newState, name = module.name) => {\n return getRenderCommands(module, oldState, newState, name)\n}\n", "export const None = 0\n\nexport const CreateFile = 1\n\nexport const CreateFolder = 2\n\nexport const Rename = 3\n", "export const File = '_file'\n\nexport const Folder = '_folder'\n\nexport const FolderOpen = '_folder_open'\n\nexport const None = ''\n", "import * as Command from '../Command/Command.js'\nimport * as DefaultIcon from '../DefaultIcon/DefaultIcon.js'\nimport * as DirentType from '../DirentType/DirentType.js'\nimport * as Languages from '../Languages/Languages.js'\nimport * as Platform from '../Platform/Platform.js'\nimport * as PlatformType from '../PlatformType/PlatformType.js'\nimport * as Preferences from '../Preferences/Preferences.js'\nimport * as RendererProcess from '../RendererProcess/RendererProcess.js'\nimport * as SharedProcess from '../SharedProcess/SharedProcess.js'\nimport { VError } from '../VError/VError.js'\nimport * as Viewlet from '../Viewlet/Viewlet.js'\nimport * as ViewletStates from '../ViewletStates/ViewletStates.js'\nimport * as Workspace from '../Workspace/Workspace.js'\nimport * as ExtensionMeta from '../ExtensionMeta/ExtensionMeta.js'\n\nexport const state = {\n seenFiles: [],\n seenFolders: [],\n hasWarned: [],\n /**\n * @type{any}\n */\n iconTheme: undefined,\n}\n\nconst getIconThemeUrl = (iconThemeId) => {\n return `/extensions/builtin.${iconThemeId}/icon-theme.json`\n}\n\nconst getIconThemeJson = async (iconThemeId) => {\n if (Platform.platform === PlatformType.Web) {\n const url = getIconThemeUrl(iconThemeId)\n const json = await Command.execute(\n /* Ajax.getJson */ 'Ajax.getJson',\n /* url */ url\n )\n const assetDir = Platform.getAssetDir()\n return {\n json,\n extensionPath: `${assetDir}/extensions/builtin.${iconThemeId}`,\n }\n }\n for (const webExtension of ExtensionMeta.state.webExtensions) {\n if (webExtension.iconThemes) {\n for (const iconTheme of webExtension.iconThemes) {\n // TODO handle error when icon theme path is not of type string\n const iconThemeUrl = `${webExtension.path}/${iconTheme.path}`\n const json = await Command.execute('Ajax.getJson', iconThemeUrl)\n return {\n json,\n extensionPath: webExtension.path,\n }\n }\n }\n }\n return SharedProcess.invoke(\n /* ExtensionHost.getIconThemeJson */ 'ExtensionHost.getIconThemeJson',\n /* iconThemeId */ iconThemeId\n )\n}\n\nconst getExtension = (file) => {\n return file.slice(file.lastIndexOf('.') + 1).toLowerCase()\n}\n\nexport const getFileIcon = (file) => {\n const { iconTheme } = state\n const fileNameLower = file.name.toLowerCase()\n if (!iconTheme) {\n return ''\n }\n if (iconTheme.fileNames) {\n const fileNameIcon = iconTheme.fileNames[fileNameLower]\n if (fileNameIcon) {\n return fileNameIcon\n }\n }\n if (iconTheme.fileExtensions) {\n const extension = getExtension(fileNameLower)\n const extensionIcon = iconTheme.fileExtensions[extension]\n if (extensionIcon) {\n return extensionIcon\n }\n }\n if (iconTheme.languageIds) {\n const languageId = Languages.getLanguageId(fileNameLower)\n const languageIcon = iconTheme.languageIds[languageId]\n if (languageIcon) {\n return languageIcon\n }\n }\n return DefaultIcon.File\n}\n\nexport const getFolderIcon = (folder) => {\n const iconTheme = state.iconTheme\n // @ts-ignore\n if (!iconTheme || !iconTheme.folderNames) {\n return ''\n }\n const folderNameLower = folder.name.toLowerCase()\n // @ts-ignore\n const folderIcon = iconTheme.folderNames[folderNameLower]\n if (folderIcon) {\n return folderIcon\n }\n return DefaultIcon.Folder\n}\n\nconst getFolderIconExpanded = (folder) => {\n const iconTheme = state.iconTheme\n if (!iconTheme) {\n return ''\n }\n // @ts-ignore\n if (!iconTheme.folderNamesExpanded) {\n return DefaultIcon.FolderOpen\n }\n // @ts-ignore\n const folderName = iconTheme.folderNamesExpanded[folder.name.toLowerCase()]\n if (folderName) {\n return folderName\n }\n return DefaultIcon.FolderOpen\n}\n\nexport const getIcon = (dirent) => {\n switch (dirent.type) {\n case DirentType.File:\n case DirentType.SymLinkFile:\n return getFileIcon(dirent)\n case DirentType.Directory:\n case DirentType.SymLinkFolder:\n return getFolderIcon(dirent)\n case DirentType.DirectoryExpanded:\n return getFolderIconExpanded(dirent)\n case DirentType.Symlink:\n return DefaultIcon.File\n default:\n console.warn(`unsupported type ${dirent.type}`)\n return DefaultIcon.None\n }\n}\n\nconst getBackgroundUrl = (extensionPath, value) => {\n if (Platform.platform === PlatformType.Web) {\n return `${extensionPath}${value}`\n }\n if (extensionPath.startsWith('http://')) {\n return `${extensionPath}${value}`\n }\n // TODO what if the file in on linux and includes a backslash?\n if (extensionPath.includes('\\\\')) {\n const extensionUri = extensionPath.replaceAll('\\\\', '/')\n return `/remote/${extensionUri}/${value}`\n }\n return `/remote${extensionPath}/${value}`\n}\n\nconst getIconThemeCss2 = (iconTheme) => {\n const rules = []\n const iconDefinitions = iconTheme.json.iconDefinitions\n const extensionPath = iconTheme.extensionPath\n for (const [key, value] of Object.entries(iconDefinitions)) {\n const backgroundUrl = getBackgroundUrl(extensionPath, value)\n rules.push(`.Icon${key} { background-image: url(${backgroundUrl}) }`)\n }\n const rulesCss = rules.join('\\n')\n return rulesCss\n}\n\nexport const setIconTheme = async (iconThemeId) => {\n try {\n const iconTheme = await getIconThemeJson(iconThemeId)\n state.iconTheme = iconTheme.json\n state.extensionPath = iconTheme.extensionPath\n const iconThemeCss = getIconThemeCss2(iconTheme)\n\n const instances = ViewletStates.getAllInstances()\n // TODO have one recalculate style and one paint\n for (const [key, value] of Object.entries(instances)) {\n const { factory, state } = value\n if (factory.handleIconThemeChange) {\n const newState = factory.handleIconThemeChange(state)\n await Viewlet.setState(factory.name, newState)\n }\n }\n await RendererProcess.invoke(\n /* Css.setInlineStyle */ 'Css.setInlineStyle',\n /* id */ 'ContributedIconTheme',\n /* css */ iconThemeCss\n )\n } catch (error) {\n if (Workspace.isTest()) {\n // ignore\n } else {\n console.error(new VError(error, `Failed to load icon theme`))\n }\n }\n}\n\nexport const hydrate = async () => {\n // TODO icon theme css can be really large (3000+ lines)\n // and slow down recalculate style by 5x (e.g. rendering text in editor: 1.42ms normal, 7.42ms with icon theme)\n // icon theme should not slow down editor.\n // maybe set applied css only to actual used icons\n // for example, when a js file is in explorer, only generate the css for the js icon\n // that way there would be much less rules, but when a new file type appears (which should not happen often)\n // the css must be recalculated again\n // const iconThemeCss = await getIconThemeCss()\n // await RendererProcess.invoke(\n // /* Css.setInlineStyle */ 4551,\n // /* id */ 'ContributedIconTheme',\n // /* css */ iconThemeCss\n // )\n\n const iconThemeId = Preferences.get('icon-theme') || 'vscode-icons'\n await setIconTheme(iconThemeId)\n}\n", "export const Fulfilled = 'fulfilled'\n\nexport const Rejected = 'rejected'\n", "export const focusIndex = (state, index) => {\n const { minLineY, maxLineY } = state\n if (index < minLineY) {\n if (index < 0) {\n return {\n ...state,\n focusedIndex: index,\n focused: true,\n }\n }\n const diff = maxLineY - minLineY\n return {\n ...state,\n focusedIndex: index,\n focused: true,\n minLineY: index,\n maxLineY: index + diff,\n }\n }\n if (index >= maxLineY) {\n const diff = maxLineY - minLineY\n return {\n ...state,\n focusedIndex: index,\n focused: true,\n minLineY: index + 1 - diff,\n maxLineY: index + 1,\n }\n }\n return {\n ...state,\n focusedIndex: index,\n focused: true,\n }\n}\n", "export const compareString = (a, b) => {\n return a.localeCompare(b)\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as Compare from '../Compare/Compare.js'\nimport * as DirentType from '../DirentType/DirentType.js'\nimport * as FileSystem from '../FileSystem/FileSystem.js'\nimport * as ErrorCodes from '../ErrorCodes/ErrorCodes.js'\nimport * as IconTheme from '../IconTheme/IconTheme.js'\n\nexport const getIndexFromPosition = (state, x, y) => {\n const { top, itemHeight, items } = state\n const index = Math.floor((y - top) / itemHeight)\n if (index < 0) {\n return 0\n }\n if (index >= items.length) {\n return -1\n }\n return index\n}\n\nconst priorityMapFoldersFirst = {\n [DirentType.Directory]: 1,\n [DirentType.SymLinkFolder]: 1,\n [DirentType.File]: 0,\n [DirentType.SymLinkFile]: 0,\n [DirentType.Unknown]: 0,\n [DirentType.Socket]: 0,\n}\n\nconst compareDirentType = (direntA, direntB) => {\n return (\n priorityMapFoldersFirst[direntB.type] -\n priorityMapFoldersFirst[direntA.type]\n )\n}\n\nconst compareDirentName = (direntA, direntB) => {\n return Compare.compareString(direntA.name, direntB.name)\n}\n\nexport const compareDirent = (direntA, direntB) => {\n return (\n compareDirentType(direntA, direntB) || compareDirentName(direntA, direntB)\n )\n}\n\nconst toDisplayDirents = (\n root,\n pathSeparator,\n rawDirents,\n parentDirent,\n excluded\n) => {\n rawDirents.sort(compareDirent) // TODO maybe shouldn't mutate input argument, maybe sort after mapping\n // TODO figure out whether this uses too much memory (name,path -> redundant, depth could be computed on demand)\n const toDisplayDirent = (rawDirent, index) => {\n const path = parentDirent.path\n ? [parentDirent.path, rawDirent.name].join(pathSeparator)\n : [root, rawDirent.name].join(pathSeparator)\n return {\n name: rawDirent.name,\n posInSet: index + 1,\n setSize: rawDirents.length,\n depth: parentDirent.depth + 1,\n type: rawDirent.type,\n path, // TODO storing absolute path might be too costly, could also store relative path here\n icon: IconTheme.getIcon(rawDirent),\n }\n }\n const result = []\n let i = 0\n for (const rawDirent of rawDirents) {\n if (excluded.includes(rawDirent.name)) {\n continue\n }\n result.push(toDisplayDirent(rawDirent, i))\n i++\n }\n return result\n}\n\nexport const getParentStartIndex = (dirents, index) => {\n const dirent = dirents[index]\n let startIndex = index - 1\n while (startIndex >= 0 && dirents[startIndex].depth >= dirent.depth) {\n startIndex--\n }\n return startIndex\n}\n\nexport const getParentEndIndex = (dirents, index) => {\n const dirent = dirents[index]\n let endIndex = index + 1\n while (endIndex < dirents.length && dirents[endIndex].depth > dirent.depth) {\n endIndex++\n }\n return endIndex\n}\n\nconst isSymbolicLink = (dirent) => {\n return dirent.type === DirentType.Symlink\n}\n\nconst hasSymbolicLinks = (rawDirents) => {\n return rawDirents.some(isSymbolicLink)\n}\n\nconst getSymlinkType = (type) => {\n switch (type) {\n case DirentType.File:\n return DirentType.SymLinkFile\n case DirentType.Directory:\n return DirentType.SymLinkFolder\n default:\n return DirentType.Symlink\n }\n}\n// TODO maybe resolving of symbolic links should happen in shared process?\n// so that there is less code and less work in the frontend\nconst resolveSymbolicLink = async (uri, rawDirent) => {\n try {\n // TODO support windows paths\n const absolutePath = uri + '/' + rawDirent.name\n const type = await FileSystem.stat(absolutePath)\n const symLinkType = getSymlinkType(type)\n return {\n name: rawDirent.name,\n type: symLinkType,\n }\n } catch (error) {\n // @ts-ignore\n if (error && error.code === ErrorCodes.ENOENT) {\n return {\n name: rawDirent.name,\n type: DirentType.SymLinkFile,\n }\n }\n console.error(\n `Failed to resolve symbolic link for ${rawDirent.name}: ${error}`\n )\n return rawDirent\n }\n}\n\nconst resolveSymbolicLinks = async (uri, rawDirents) => {\n const resolvedDirents = []\n for (const rawDirent of rawDirents) {\n if (isSymbolicLink(rawDirent)) {\n const resolvedDirent = await resolveSymbolicLink(uri, rawDirent)\n resolvedDirents.push(resolvedDirent)\n } else {\n resolvedDirents.push(rawDirent)\n }\n }\n return resolvedDirents\n}\n\nexport const getChildDirentsRaw = async (uri) => {\n const rawDirents = await FileSystem.readDirWithFileTypes(uri)\n if (hasSymbolicLinks(rawDirents)) {\n return resolveSymbolicLinks(uri, rawDirents)\n }\n return rawDirents\n}\n\nexport const getChildDirents = async (\n root,\n pathSeparator,\n parentDirent,\n excluded = []\n) => {\n Assert.string(root)\n Assert.string(pathSeparator)\n Assert.object(parentDirent)\n // TODO use event/actor based code instead, this is impossible to cancel right now\n // also cancel updating when opening new folder\n // const dispose = state => state.pendingRequests.forEach(cancelRequest)\n // TODO should use FileSystem directly in this case because it is globally available anyway\n // and more typesafe than Command.execute\n // and more performant\n const uri = parentDirent.path\n const rawDirents = await getChildDirentsRaw(uri)\n const displayDirents = toDisplayDirents(\n root,\n pathSeparator,\n rawDirents,\n parentDirent,\n excluded\n )\n return displayDirents\n}\n\nexport const mergeDirents = (oldDirents, newDirents) => {\n const merged = []\n let oldIndex = 0\n for (const newDirent of newDirents) {\n merged.push(newDirent)\n for (let i = oldIndex; i < oldDirents.length; i++) {\n if (oldDirents[i].path === newDirent.path) {\n // TOOD copy children of old dirent\n oldIndex = i\n break\n }\n }\n }\n return merged\n}\n\nexport const getTopLevelDirents = (root, pathSeparator, excluded) => {\n if (!root) {\n return []\n }\n return getChildDirents(\n root,\n pathSeparator,\n {\n depth: 0,\n path: root,\n type: DirentType.Directory,\n },\n excluded\n )\n}\n", "export const ListItem = 22\n\nexport const ExtensionListItem = 62\n\nexport const ActivityBarItem = 48\n\nexport const MinimumSliderSize = 20\n\nexport const CompletionItem = 20\n", "import * as Assert from '../Assert/Assert.js'\nimport * as Command from '../Command/Command.js'\nimport * as DirentType from '../DirentType/DirentType.js'\nimport * as ErrorHandling from '../ErrorHandling/ErrorHandling.js'\nimport * as ExplorerEditingType from '../ExplorerEditingType/ExplorerEditingType.js'\nimport * as FileSystem from '../FileSystem/FileSystem.js'\nimport * as IconTheme from '../IconTheme/IconTheme.js'\nimport * as Path from '../Path/Path.js'\nimport * as PathSeparatorType from '../PathSeparatorType/PathSeparatorType.js'\nimport * as Preferences from '../Preferences/Preferences.js'\nimport * as PromiseStatus from '../PromiseStatus/PromiseStatus.js'\nimport * as Viewlet from '../Viewlet/Viewlet.js' // TODO should not import viewlet manager -> avoid cyclic dependency\nimport * as ViewletModuleId from '../ViewletModuleId/ViewletModuleId.js'\nimport * as Workspace from '../Workspace/Workspace.js'\nimport { focusIndex } from './ViewletExplorerFocusIndex.js'\nimport {\n compareDirent,\n getChildDirents,\n getChildDirentsRaw,\n getIndexFromPosition,\n getParentEndIndex,\n getParentStartIndex,\n getTopLevelDirents,\n} from './ViewletExplorerShared.js'\nimport * as Height from '../Height/Height.js'\n\n// TODO viewlet should only have create and refresh functions\n// every thing else can be in a separate module <viewlet>.lazy.js\n// and <viewlet>.ipc.js\n\n// viewlet: creating | refreshing | done | disposed\n// TODO recycle viewlets (maybe)\n\n// TODO instead of root string, there should be a root dirent\n\nexport const create = (id, uri, left, top, width, height) => {\n return {\n root: '',\n items: [],\n focusedIndex: -1,\n focused: false,\n hoverIndex: -1,\n top,\n left,\n height,\n deltaY: 0,\n minLineY: 0,\n maxLineY: 0,\n pathSeparator: PathSeparatorType.Slash,\n version: 0,\n editingIndex: -1,\n itemHeight: Height.ListItem,\n dropTargets: [],\n excluded: [],\n editingValue: '',\n editingType: ExplorerEditingType.None,\n }\n}\n\nconst getPathSeparator = (root) => {\n return FileSystem.getPathSeparator(root)\n}\n\nconst isExpandedDirectory = (dirent) => {\n return dirent.type === DirentType.DirectoryExpanded\n}\n\nconst getPath = (dirent) => {\n return dirent.path\n}\n\nconst getSavedChildDirents = (map, path, depth, excluded) => {\n const children = map[path]\n if (!children) {\n return []\n }\n const dirents = []\n children.sort(compareDirent)\n const visible = []\n for (const child of children) {\n if (excluded.includes(child.name)) {\n continue\n }\n visible.push(child)\n }\n const visibleLength = visible.length\n for (let i = 0; i < visibleLength; i++) {\n const child = visible[i]\n const { name, type } = child\n const childPath = path + '/' + name\n if (child.type === DirentType.Directory && childPath in map) {\n dirents.push({\n depth,\n posInSet: i + 1,\n setSize: visibleLength,\n icon: IconTheme.getFolderIcon({ name }),\n name,\n path: childPath,\n type: DirentType.DirectoryExpanded,\n })\n dirents.push(...getSavedChildDirents(map, childPath, depth + 1, excluded))\n } else {\n dirents.push({\n depth,\n posInSet: i + 1,\n setSize: visibleLength,\n icon: IconTheme.getIcon({ type, name }),\n name,\n path: childPath,\n type,\n })\n }\n }\n return dirents\n}\n\nconst createDirents = (\n root,\n expandedDirentPaths,\n expandedDirentChildren,\n excluded\n) => {\n const dirents = []\n const map = Object.create(null)\n for (let i = 0; i < expandedDirentPaths.length; i++) {\n const path = expandedDirentPaths[i]\n const children = expandedDirentChildren[i]\n if (children.status === PromiseStatus.Fulfilled) {\n map[path] = children.value\n }\n }\n dirents.push(...getSavedChildDirents(map, root, 1, excluded))\n return dirents\n}\n\nconst restoreExpandedState = async (\n savedState,\n root,\n pathSeparator,\n excluded\n) => {\n // TODO read all opened folders in parallel\n // ignore ENOENT errors\n // ignore ENOTDIR errors\n // merge all dirents\n // restore scroll location\n if (!savedState || !savedState.expandedPaths || savedState.root !== root) {\n return await getTopLevelDirents(root, pathSeparator, excluded)\n }\n const expandedDirentPaths = [root, ...savedState.expandedPaths]\n const expandedDirentChildren = await Promise.allSettled(\n expandedDirentPaths.map(getChildDirentsRaw)\n )\n if (expandedDirentChildren[0].status === 'rejected') {\n throw expandedDirentChildren[0].reason\n }\n const savedRoot = savedState.root\n const dirents = createDirents(\n savedRoot,\n expandedDirentPaths,\n expandedDirentChildren,\n excluded\n )\n return dirents\n}\n\nexport const saveState = (state) => {\n const { items, root, deltaY, minLineY, maxLineY } = state\n const expandedPaths = items.filter(isExpandedDirectory).map(getPath)\n return {\n expandedPaths,\n root,\n minLineY,\n maxLineY,\n deltaY,\n }\n}\n\nconst getExcluded = () => {\n const excludedObject = Preferences.get('files.exclude') || {}\n const excluded = []\n for (const [key, value] of Object.entries(excludedObject)) {\n if (value) {\n excluded.push(key)\n }\n }\n return excluded\n}\n\nexport const loadContent = async (state, savedState) => {\n const root = state.root || Workspace.state.workspacePath\n // TODO path separator could be restored from saved state\n const pathSeparator = await getPathSeparator(root) // TODO only load path separator once\n const excluded = getExcluded()\n const restoredDirents = await restoreExpandedState(\n savedState,\n root,\n pathSeparator,\n excluded\n )\n const { itemHeight, height } = state\n let minLineY = 0\n if (savedState && typeof savedState.minLineY === 'number') {\n minLineY = savedState.minLineY\n }\n let deltaY = 0\n if (savedState && typeof savedState.deltaY === 'number') {\n deltaY = savedState.deltaY\n }\n let maxLineY = Math.round(height / itemHeight)\n if (savedState && typeof savedState.maxLineY === 'number') {\n maxLineY = savedState.maxLineY\n }\n return {\n ...state,\n root,\n items: restoredDirents,\n minLineY,\n deltaY,\n maxLineY,\n pathSeparator,\n excluded,\n }\n}\n\nconst updateIcon = (dirent) => {\n return { ...dirent, icon: IconTheme.getIcon(dirent) }\n}\n\nexport const updateIcons = (state) => {\n const newDirents = state.items.map(updateIcon)\n return {\n ...state,\n items: newDirents,\n }\n}\n\nexport const handleLanguagesChanged = (state) => {\n return updateIcons(state)\n}\n\nexport const handleWorkspaceChange = async (state) => {\n const newRoot = Workspace.state.workspacePath\n const state1 = { ...state, root: newRoot }\n const newState = await loadContent(state1)\n return newState\n}\n\nexport const handleIconThemeChange = (state) => {\n return updateIcons(state)\n}\n\nconst getVisible = (state) => {\n return state.items.slice(state.minLineY, state.maxLineY)\n}\n\n// TODO rename dirents to items, then can use virtual list component directly\nexport const setDeltaY = (state, deltaY) => {\n const { itemHeight, height, items } = state\n if (deltaY < 0) {\n deltaY = 0\n } else if (deltaY > items.length * itemHeight - height) {\n deltaY = Math.max(items.length * itemHeight - height, 0)\n }\n if (state.deltaY === deltaY) {\n return state\n }\n const minLineY = Math.round(deltaY / itemHeight)\n const maxLineY = minLineY + Math.round(height / itemHeight)\n return {\n ...state,\n deltaY,\n minLineY,\n maxLineY,\n }\n}\n\nexport const handleWheel = (state, deltaY) => {\n return setDeltaY(state, state.deltaY + deltaY)\n}\n\nexport const getFocusedDirent = (state) => {\n const { focusedIndex, minLineY, items } = state\n const dirent = items[focusedIndex + minLineY]\n return dirent\n}\n\n// TODO support multiselection and removing multiple dirents\nexport const removeDirent = async (state) => {\n if (state.focusedIndex < 0) {\n return state\n }\n const dirent = getFocusedDirent(state)\n const absolutePath = dirent.path\n try {\n // TODO handle error\n await FileSystem.remove(absolutePath)\n } catch (error) {\n // TODO vscode shows error as alert (no stacktrace) and retry button\n // maybe should show alert as well, but where to put stacktrace?\n // on web should probably show notification (dialog)\n // ErrorHandling.handleError(error)\n await ErrorHandling.showErrorDialog(error)\n return\n }\n // TODO avoid state mutation\n const newVersion = ++state.version\n // TODO race condition\n // const newState = await loadContent(state)\n if (state.version !== newVersion || state.disposed) {\n return state\n }\n // TODO is it possible to make this more functional instead of mutating state?\n // maybe every function returns a new state?\n const index = state.items.indexOf(dirent)\n let deleteEnd = index + 1\n\n for (; deleteEnd < state.items.length; deleteEnd++) {\n if (state.items[deleteEnd].depth <= dirent.depth) {\n break\n }\n }\n const deleteCount = deleteEnd - index\n const newDirents = [...state.items]\n newDirents.splice(index, deleteCount)\n let indexToFocus = -1\n\n if (newDirents.length === 0) {\n indexToFocus = -1\n } else if (index < state.focusedIndex) {\n indexToFocus = state.focusedIndex - 1\n } else if (index === state.focusedIndex) {\n indexToFocus = Math.max(state.focusedIndex - 1, 0)\n } else {\n indexToFocus = Math.max(state.focusedIndex - 1, 0)\n }\n return {\n ...state,\n items: newDirents,\n focusedIndex: indexToFocus,\n }\n}\n\nexport const renameDirent = (state) => {\n const { focusedIndex, items } = state\n const item = items[focusedIndex]\n return {\n ...state,\n editingIndex: focusedIndex,\n editingType: ExplorerEditingType.Rename,\n editingValue: item.name,\n }\n}\n\n// TODO use posInSet and setSize properties to compute more effectively\n/**\n * @internal\n */\nexport const computeRenamedDirent = (dirents, index, newName) => {\n let startIndex = index\n let innerEndIndex = index + 1\n let insertIndex = -1\n let posInSet = -1\n const oldDirent = dirents[index]\n const newDirent = {\n ...oldDirent,\n name: newName,\n path: oldDirent.path.slice(0, -oldDirent.name.length) + newName,\n }\n const depth = newDirent.depth\n // TODO\n for (; startIndex >= 0; startIndex--) {\n const dirent = dirents[startIndex]\n if (dirent.depth > depth) {\n continue\n }\n if (dirent.depth < depth) {\n break\n }\n if (compareDirent(dirent, newDirent) === 1) {\n insertIndex = startIndex\n posInSet = dirent.posInSet\n // dirent.posInSet++\n } else {\n }\n }\n startIndex++\n for (; innerEndIndex < dirents.length; innerEndIndex++) {\n const dirent = dirents[innerEndIndex]\n if (dirent.depth <= depth) {\n break\n }\n dirent.path = newDirent.path + dirent.path.slice(oldDirent.path.length)\n }\n innerEndIndex--\n\n let endIndex = innerEndIndex + 1\n\n for (; endIndex < dirents.length; endIndex++) {\n const dirent = dirents[endIndex]\n if (dirent.depth > depth) {\n continue\n }\n if (dirent.depth < depth) {\n break\n }\n if (insertIndex === -1 && compareDirent(dirent, newDirent === -1)) {\n for (; endIndex < dirents.length; endIndex++) {\n const childDirent = dirents[endIndex]\n }\n insertIndex = endIndex\n posInSet = dirent.posInSet + 1\n }\n }\n endIndex--\n // console.log({endi /})\n\n for (let j = startIndex; j < index; j++) {\n const dirent = dirents[j]\n if (dirent.depth === depth) {\n dirent.posInSet++\n }\n }\n for (let j = index; j < endIndex; j++) {\n const dirent = dirents[j]\n if (dirent.depth === depth) {\n dirent.posInSet--\n }\n }\n\n // for (let j = startIndex; j < index; j++) {\n // const dirent = dirents[j]\n // dirent.posInSet++\n // }\n\n if (insertIndex === -1) {\n insertIndex = index\n return {\n focusedIndex: index,\n newDirents: [\n ...dirents.slice(0, index),\n newDirent,\n ...dirents.slice(index + 1),\n ],\n }\n }\n newDirent.posInSet = posInSet\n\n const newDirents = [...dirents]\n if (index < insertIndex) {\n insertIndex--\n }\n newDirents.splice(index, 1)\n newDirents.splice(insertIndex, 0, newDirent)\n\n return { newDirents, focusedIndex: insertIndex }\n}\n\nexport const acceptRename = async (state) => {\n const { editingIndex, editingValue, items, pathSeparator } = state\n const renamedDirent = items[editingIndex]\n try {\n // TODO this does not work with rename of nested file\n const oldAbsolutePath = renamedDirent.path\n const oldParentPath = Path.dirname(pathSeparator, oldAbsolutePath)\n const newAbsolutePath = [oldParentPath, editingValue].join(pathSeparator)\n await FileSystem.rename(oldAbsolutePath, newAbsolutePath)\n } catch (error) {\n await ErrorHandling.showErrorDialog(error)\n return state\n }\n const { newDirents, focusedIndex } = computeRenamedDirent(\n items,\n editingIndex,\n editingValue\n )\n // TODO move focused index\n state.items = newDirents\n return {\n ...state,\n editingIndex: -1,\n editingValue: '',\n focusedIndex,\n focused: true,\n }\n}\n\nexport const acceptEdit = (state) => {\n const { editingType } = state\n switch (editingType) {\n case ExplorerEditingType.CreateFile:\n return acceptCreate(state)\n case ExplorerEditingType.Rename:\n return acceptRename(state)\n default:\n return state\n }\n}\n\nexport const cancelEdit = (state) => {\n const { editingIndex } = state\n return {\n ...state,\n focusedIndex: editingIndex,\n focused: true,\n editingIndex: -1,\n editingValue: '',\n editingType: ExplorerEditingType.None,\n }\n}\n\nexport const copyRelativePath = async (state) => {\n const dirent = getFocusedDirent(state)\n const relativePath = dirent.path.slice(1)\n // TODO handle error\n await Command.execute(\n /* ClipBoard.writeText */ 'ClipBoard.writeText',\n /* text */ relativePath\n )\n return state\n}\n\nexport const copyPath = async (state) => {\n const dirent = getFocusedDirent(state)\n // TODO windows paths\n // TODO handle error\n const path = dirent.path\n await Command.execute(\n /* ClipBoard.writeText */ 'ClipBoard.writeText',\n /* text */ path\n )\n return state\n}\n\nconst getContaingingFolder = (root, dirents, focusedIndex, pathSeparator) => {\n if (focusedIndex < 0) {\n return root\n }\n const dirent = dirents[focusedIndex]\n const direntPath = dirent.path\n const direntParentPath = direntPath.slice(0, -(dirent.name.length + 1))\n const path = `${direntParentPath}`\n return path\n}\n\nexport const openContainingFolder = async (state) => {\n const { focusedIndex, root, items, pathSeparator } = state\n const path = getContaingingFolder(root, items, focusedIndex, pathSeparator)\n await Command.execute('OpenNativeFolder.openNativeFolder', /* path */ path)\n return state\n}\n\nconst newDirent = async (state, editingType) => {\n // TODO do it like vscode, select position between folders and files\n const { focusedIndex } = state\n const index = focusedIndex + 1\n if (focusedIndex >= 0) {\n const dirent = state.items[state.focusedIndex]\n if (dirent.type === DirentType.Directory) {\n // TODO handle error\n await handleClickDirectory(state, dirent, focusIndex)\n }\n }\n return {\n ...state,\n editingIndex: index,\n editingType,\n editingValue: '',\n }\n}\n\n// TODO much shared logic with newFolder\nexport const newFile = (state) => {\n return newDirent(state, ExplorerEditingType.CreateFile)\n}\n\nconst getParentFolder = (dirents, index, root) => {\n if (index < 0) {\n return root\n }\n return dirents[index].path\n}\n\nexport const updateEditingValue = (state, value) => {\n return {\n ...state,\n editingValue: value,\n }\n}\n\nconst acceptCreate = async (state) => {\n const { editingIndex, focusedIndex, editingValue, editingType } = state\n const newFileName = editingValue\n if (!newFileName) {\n // TODO show error message that file name must not be empty\n // below input box\n await ErrorHandling.showErrorDialog(\n new Error('file name must not be empty')\n )\n return state\n }\n const parentFolder = getParentFolder(state.items, focusedIndex, state.root)\n const absolutePath = [parentFolder, newFileName].join(state.pathSeparator)\n // TODO better handle error\n try {\n switch (editingType) {\n case ExplorerEditingType.CreateFile:\n await FileSystem.createFile(absolutePath)\n break\n case ExplorerEditingType.CreateFolder:\n await FileSystem.mkdir(absolutePath)\n break\n default:\n break\n }\n } catch (error) {\n await ErrorHandling.showErrorDialog(error)\n return state\n }\n const parentDirent =\n focusedIndex >= 0\n ? state.items[focusedIndex]\n : {\n depth: 0,\n path: state.root,\n }\n const depth = parentDirent.depth + 1\n const newDirent = {\n path: absolutePath,\n posInSet: -1,\n setSize: 1,\n depth,\n name: newFileName,\n type:\n editingType === ExplorerEditingType.CreateFile\n ? DirentType.File\n : DirentType.Directory,\n icon: '',\n }\n newDirent.icon = IconTheme.getIcon(newDirent)\n let insertIndex = state.focusedIndex\n let deltaPosInSet = 0\n let posInSet = 1\n let setSize = 1\n let i = Math.max(state.focusedIndex, -1) + 1\n for (; i < state.items.length; i++) {\n const dirent = state.items[i]\n if (dirent.depth !== depth) {\n break\n }\n const compareResult = compareDirent(dirent, newDirent)\n if (compareResult === 1) {\n insertIndex = i\n deltaPosInSet = 1\n } else {\n posInSet = dirent.posInSet + 1\n setSize = dirent.setSize + 1\n insertIndex = i\n }\n dirent.setSize++\n dirent.posInSet += deltaPosInSet\n }\n newDirent.setSize = setSize\n newDirent.posInSet = posInSet\n state.items.splice(insertIndex + 1, 0, newDirent)\n\n const newDirents = [...state.items]\n return {\n ...state,\n items: newDirents,\n editingIndex: -1,\n focusedIndex: editingIndex,\n }\n}\n\nexport const newFolder = (state) => {\n return newDirent(state, ExplorerEditingType.CreateFolder)\n}\n\nconst handleClickFile = async (state, dirent, index, keepFocus = false) => {\n await Command.execute(\n /* Main.openAbsolutePath */ 'Main.openUri',\n /* absolutePath */ dirent.path,\n /* focus */ !keepFocus\n )\n return {\n ...state,\n focusedIndex: index,\n focused: keepFocus,\n }\n}\n\nconst handleClickDirectory = async (state, dirent, index, keepFocus) => {\n dirent.type = DirentType.DirectoryExpanding\n // TODO handle error\n const dirents = await getChildDirents(state.root, state.pathSeparator, dirent)\n const state2 = Viewlet.getState('Explorer')\n if (!state2) {\n return state\n }\n // TODO use Viewlet.getState here and check if it exists\n const newIndex = state2.items.indexOf(dirent)\n // TODO if viewlet is disposed or root has changed, return\n if (newIndex === -1) {\n return state\n }\n // console.log(state.items[index] === dirent)\n const newDirents = [...state2.items]\n newDirents.splice(newIndex + 1, 0, ...dirents)\n dirent.type = DirentType.DirectoryExpanded\n dirent.icon = IconTheme.getIcon(dirent)\n const { height, itemHeight } = state2\n // TODO when focused index has changed while expanding, don't update it\n const maxLineY = Math.min(Math.ceil(height / itemHeight), newDirents.length)\n return {\n ...state,\n items: newDirents,\n focusedIndex: newIndex,\n focused: keepFocus,\n maxLineY,\n }\n}\n\nconst handleClickDirectoryExpanding = (state, dirent, index, keepFocus) => {\n dirent.type = DirentType.Directory\n dirent.icon = IconTheme.getIcon(dirent)\n return {\n ...state,\n focusedIndex: index,\n focused: keepFocus,\n }\n}\n\nconst handleClickDirectoryExpanded = (state, dirent, index, keepFocus) => {\n const { minLineY, maxLineY, itemHeight } = state\n dirent.type = DirentType.Directory\n dirent.icon = IconTheme.getIcon(dirent)\n const endIndex = getParentEndIndex(state.items, index)\n const removeCount = endIndex - index - 1\n // TODO race conditions and side effects are everywhere\n const newDirents = [...state.items]\n newDirents.splice(index + 1, removeCount)\n const newTotal = newDirents.length\n if (newTotal < maxLineY) {\n const visibleItems = Math.min(maxLineY - minLineY, newTotal)\n const newMaxLineY = Math.min(maxLineY, newTotal)\n const newMinLineY = newMaxLineY - visibleItems\n const deltaY = newMinLineY * itemHeight\n return {\n ...state,\n items: newDirents,\n focusedIndex: index,\n focused: keepFocus,\n minLineY: newMinLineY,\n maxLineY: newMaxLineY,\n deltaY,\n }\n }\n return {\n ...state,\n items: newDirents,\n focusedIndex: index,\n focused: keepFocus,\n }\n}\n\nexport const handleClick = (state, index, keepFocus = false) => {\n if (index === -1) {\n return focusIndex(state, -1)\n }\n const actualIndex = index + state.minLineY\n const dirent = state.items[actualIndex]\n if (!dirent) {\n console.warn(`[explorer] dirent at index ${actualIndex} not found`, state)\n return state\n }\n const { type } = dirent\n // TODO dirent type should be numeric\n switch (type) {\n case DirentType.File:\n case DirentType.SymLinkFile:\n return handleClickFile(state, dirent, actualIndex, keepFocus)\n // TODO decide on one name\n case DirentType.Directory:\n case DirentType.SymLinkFolder:\n return handleClickDirectory(state, dirent, actualIndex, keepFocus)\n case DirentType.DirectoryExpanding:\n return handleClickDirectoryExpanding(\n state,\n dirent,\n actualIndex,\n keepFocus\n )\n case DirentType.DirectoryExpanded:\n return handleClickDirectoryExpanded(state, dirent, actualIndex, keepFocus)\n case DirentType.Symlink:\n return handleClickSymLink(state, dirent, state.focusedIndex)\n default:\n throw new Error(`unsupported dirent type ${type}`)\n }\n}\n\nexport const handleClickAt = (state, x, y) => {\n const index = getIndexFromPosition(state, x, y)\n return handleClick(state, index)\n}\n\nexport const handleClickCurrent = (state) => {\n return handleClick(state, state.focusedIndex - state.minLineY)\n}\n\nexport const handleClickCurrentButKeepFocus = (state) => {\n return handleClick(\n state,\n state.focusedIndex - state.minLineY,\n /* keepFocus */ true\n )\n}\n\nexport const scrollUp = () => {}\n\nexport const scrollDown = () => {}\n// export const handleBlur=()=>{}\n\nconst handleClickSymLink = async (state, dirent, index) => {\n const realPath = await FileSystem.getRealPath(dirent.path)\n const type = await FileSystem.stat(realPath)\n switch (type) {\n case DirentType.File:\n return handleClickFile(state, dirent, index)\n default:\n throw new Error(`unsupported file type ${type}`)\n }\n}\n\nconst handleArrowRightDirectoryExpanded = (state, dirent) => {\n if (state.focusedIndex === state.items.length - 1) {\n return state\n }\n const nextDirent = state.items[state.focusedIndex + 1]\n if (nextDirent.depth === dirent.depth + 1) {\n return focusIndex(state, state.focusedIndex + 1)\n }\n}\n\nexport const handleArrowRight = async (state) => {\n if (state.focusedIndex === -1) {\n return state\n }\n const dirent = state.items[state.focusedIndex]\n switch (dirent.type) {\n case DirentType.File:\n case DirentType.SymLinkFile:\n return state\n case DirentType.Directory:\n case DirentType.SymLinkFolder:\n return handleClickDirectory(state, dirent, state.focusedIndex)\n case DirentType.DirectoryExpanded:\n return handleArrowRightDirectoryExpanded(state, dirent)\n case DirentType.Symlink:\n return handleClickSymLink(state, dirent, state.focusedIndex)\n default:\n throw new Error(`unsupported file type ${dirent.type}`)\n }\n}\n\nconst focusParentFolder = (state) => {\n const parentStartIndex = getParentStartIndex(state.items, state.focusedIndex)\n if (parentStartIndex === -1) {\n return state\n }\n return focusIndex(state, parentStartIndex)\n}\n\nexport const handleArrowLeft = (state) => {\n if (state.focusedIndex === -1) {\n return state\n }\n const dirent = state.items[state.focusedIndex]\n switch (dirent.type) {\n case DirentType.Directory:\n case DirentType.File:\n case DirentType.SymLinkFile:\n return focusParentFolder(state)\n case DirentType.DirectoryExpanded:\n return handleClickDirectoryExpanded(state, dirent, state.focusedIndex)\n default:\n // TODO handle expanding directory and cancel file system call to read child dirents\n return state\n }\n}\n\nexport const handleUpload = async (state, dirents) => {\n for (const dirent of dirents) {\n // TODO switch\n // TODO symlink might not be possible to be copied\n // TODO create folder if type is 2\n if (dirent.type === /* File */ 1) {\n // TODO reading text might be inefficient for binary files\n // but not sure how else to send them via jsonrpc\n const content = await dirent.file.text()\n const absolutePath = [state.root, dirent.file.name].join(\n state.pathSeparator\n )\n await FileSystem.writeFile(absolutePath, content)\n }\n }\n}\n\nconst cancelRequest = (state) => {}\n\nexport const dispose = (state) => {\n if (!state.pendingRequests) {\n return\n }\n for (const request of state.pendingRequests) {\n cancelRequest(request)\n }\n state.pendingRequests = []\n // if (state.lastFocusedWidget === context) {\n // state.lastFocusedWidget = undefined\n // }\n}\n\nconst IMAGE_EXTENSIONS = new Set([\n '.png',\n '.jpeg',\n '.jpg',\n '.gif',\n '.svg',\n '.ico',\n])\n\nconst getFileExtension = (file) => {\n return file.slice(file.lastIndexOf('.'))\n}\n\nconst isImage = (dirent) => {\n // TODO explorer state must be updated when changing folder\n // This is just a workaround\n if (!dirent) {\n return false\n }\n const fileExtension = getFileExtension(dirent.path)\n return IMAGE_EXTENSIONS.has(fileExtension)\n}\n\nexport const handleMouseEnter = async (state, index) => {\n const dirent = state.items[index]\n if (!isImage(dirent)) {\n // TODO preload content maybe when it is a long hover\n return state\n }\n const { top, itemHeight, left, root } = state\n const uri = `${root}${dirent.path}`\n const newTop = top + index * itemHeight\n const right = left\n await Command.execute(\n /* ImagePreview.show */ 9081,\n /* uri */ uri,\n /* top */ newTop,\n /* right */ right\n )\n}\n\n// TODO what happens when mouse leave and anther mouse enter event occur?\n// should update preview instead of closing and reopening\n\nexport const handleMouseLeave = async (state) => {\n // await Command.execute(/* ImagePreview.hide */ 9082)\n return state\n}\n\n// TODO on windows this would be different\nconst RE_PATH = /^\\/[a-z]+/\n\nconst isProbablyPath = (line) => {\n return RE_PATH.test(line)\n}\n\nconst getBaseName = (path, pathSeparator) => {\n return path.slice(path.lastIndexOf(pathSeparator) + 1)\n}\n\nexport const handleCopy = async (state) => {\n // TODO handle multiple files\n // TODO if not file is selected, what happens?\n const dirent = getFocusedDirent(state)\n if (!dirent) {\n console.info('[ViewletExplorer/handleCopy] no dirent selected')\n return\n }\n const absolutePath = dirent.path\n // TODO handle copy error gracefully\n const files = [absolutePath]\n await Command.execute(\n /* ClipBoard.writeNativeFiles */ 243,\n /* type */ 'copy',\n /* files */ files\n )\n}\n\nexport const hasFunctionalResize = true\n\nexport const resize = (state, dimensions) => {\n const { minLineY, itemHeight } = state\n const maxLineY = minLineY + Math.round(dimensions.height / itemHeight)\n return {\n ...state,\n ...dimensions,\n maxLineY,\n }\n}\n\nexport const expandAll = async (state) => {\n const { items, focusedIndex } = state\n if (focusedIndex === -1) {\n return state\n }\n const dirent = items[focusedIndex]\n const depth = dirent.depth\n const newDirents = [...items]\n // TODO fetch child dirents in parallel\n for (const dirent of newDirents) {\n if (dirent.depth === depth && dirent.type === DirentType.Directory) {\n // TODO expand\n // TODO avoid mutating state here\n dirent.type = DirentType.DirectoryExpanding\n // TODO handle error\n // TODO race condition\n const childDirents = await getChildDirents(\n state.root,\n state.pathSeparator,\n dirent\n )\n const newIndex = newDirents.indexOf(dirent)\n if (newIndex === -1) {\n continue\n }\n newDirents.splice(newIndex + 1, 0, ...childDirents)\n // TODO avoid mutating state here\n dirent.type = DirentType.DirectoryExpanded\n // await expand(state, dirent.index)\n }\n }\n return {\n ...state,\n items: newDirents,\n }\n}\n\nconst isTopLevel = (dirent) => {\n return dirent.depth === 1\n}\n\nconst toCollapsedDirent = (dirent) => {\n if (dirent.type === DirentType.DirectoryExpanded) {\n return {\n ...dirent,\n type: DirentType.Directory,\n }\n }\n return dirent\n}\n\nexport const collapseAll = (state) => {\n const { items } = state\n const newDirents = items.filter(isTopLevel).map(toCollapsedDirent)\n return {\n ...state,\n items: newDirents,\n }\n}\n\nexport const handleBlur = (state) => {\n // TODO when blur event occurs because of context menu, focused index should stay the same\n // but focus outline should be removed\n const { editingType } = state\n if (editingType !== ExplorerEditingType.None) {\n return state\n }\n return {\n ...state,\n focused: false,\n }\n}\n\nconst getIndex = (dirents, uri) => {\n for (let i = 0; i < dirents.length; i++) {\n const dirent = dirents[i]\n if (dirent.path === uri) {\n return i\n }\n }\n return -1\n}\n\nconst getPathParts = (root, uri, pathSeparator) => {\n const parts = []\n let index = root.length - 1\n let depth = 0\n while ((index = uri.indexOf('/', index + 1)) !== -1) {\n const partUri = uri.slice(0, index)\n parts.push({ path: partUri, depth: depth++, root, pathSeparator })\n }\n return parts\n}\n\nconst getPathPartsToReveal = (root, pathParts, dirents) => {\n for (let i = 0; i < pathParts.length; i++) {\n const pathPart = pathParts[i]\n const index = getIndex(dirents, pathPart.uri)\n if (index === -1) {\n continue\n }\n return pathParts.slice(i)\n }\n return pathParts\n}\n\nconst getPathPartChildren = (pathPart) => {\n const children = getChildDirents(\n pathPart.root,\n pathPart.pathSeparator,\n pathPart\n )\n return children\n}\n\nconst mergeVisibleWithHiddenItems = (visibleItems, hiddenItems) => {\n const hiddenItemRoot = hiddenItems[0].path\n const merged = [...hiddenItems]\n const seen = Object.create(null)\n const unique = []\n for (const item of merged) {\n if (seen[item.path]) {\n continue\n }\n seen[item.path] = true\n unique.push(item)\n }\n const ordered = []\n\n // depth one\n // let depth=1\n // while(true){\n // for(const item of unique){\n // if(item.depth===depth){\n // ordered.push(item)\n // }\n // }\n // break\n // }\n // const getChildren = (path) => {\n // const children = []\n // for (const item of unique) {\n // if (item.path.startsWith(path) && item.path !== path) {\n // ordered.push(item)\n // }\n // }\n // return children\n // }\n // for (const item of unique) {\n // for (const potentialChild of unique) {\n // if (\n // potentialChild.path.startsWith(item.path) &&\n // potentialChild.path !== item.path\n // ) {\n // ordered.push(potentialChild)\n // }\n // }\n // }\n // const refreshedRoots = Object.create(null)\n // for (const hiddenItem of hiddenItems) {\n // const parent = hiddenItem.path.slice(0, hiddenItem.path.lastIndexOf('/'))\n // refreshedRoots[parent] = true\n // }\n // const mergedDirents = []\n // for(const v)\n // console.log({ hiddenItems })\n // for (const visibleItem of visibleItems) {\n // console.log({ visibleItem, hiddenItemRoot, hiddenItems })\n // if (visibleItem.path === hiddenItemRoot) {\n // // TODO update aria posinset and aria setsize\n // mergedDirents.push(...hiddenItems)\n // } else {\n // for (const hiddenItem of hiddenItems) {\n // if (hiddenItem.path === visibleItem.path) {\n // continue\n // }\n // }\n // mergedDirents.push(visibleItem)\n // }\n // }\n\n return unique\n}\n\nconst orderDirents = (dirents) => {\n if (dirents.length === 0) {\n return dirents\n }\n // const parentMap = Object.create(null)\n // for(const dirent of dirents){\n // const parentPath = dirent.slice(0, dirent.lastIndexOf('/'))\n // parentMap[parentPath]||=[]\n // parentMap[parentPath].push(dirent)\n // }\n const withDeepChildren = (parent) => {\n const children = []\n for (const dirent of dirents) {\n if (\n dirent.depth === parent.depth + 1 &&\n dirent.path.startsWith(parent.path)\n ) {\n children.push(dirent, ...withDeepChildren(dirent))\n }\n }\n return [parent, ...children]\n }\n const topLevelDirents = dirents.filter(isTopLevel)\n\n const ordered = topLevelDirents.flatMap(withDeepChildren)\n return ordered\n}\n\nconst scrollInto = (index, minLineY, maxLineY) => {\n const diff = maxLineY - minLineY\n const smallerHalf = Math.floor(diff / 2)\n const largerHalf = diff - smallerHalf\n if (index < minLineY) {\n return {\n newMinLineY: index - smallerHalf,\n newMaxLineY: index + largerHalf,\n }\n }\n if (index >= maxLineY) {\n return {\n newMinLineY: index - smallerHalf,\n newMaxLineY: index + largerHalf,\n }\n }\n return {\n newMinLineY: minLineY,\n newMaxLineY: maxLineY,\n }\n}\n\n// TODO maybe just insert items into explorer and refresh whole explorer\nconst revealItemHidden = async (state, uri) => {\n const { root, pathSeparator, items, minLineY, maxLineY } = state\n const pathParts = getPathParts(root, uri, pathSeparator)\n const pathPartsToReveal = getPathPartsToReveal(root, pathParts, items)\n const pathPartsChildren = await Promise.all(\n pathPartsToReveal.map(getPathPartChildren)\n )\n const pathPartsChildrenFlat = pathPartsChildren.flat(1)\n const orderedPathParts = orderDirents(pathPartsChildrenFlat)\n const mergedDirents = mergeVisibleWithHiddenItems(items, orderedPathParts)\n const index = getIndex(mergedDirents, uri)\n if (index === -1) {\n throw new Error(`File not found in explorer ${uri}`)\n }\n const { newMinLineY, newMaxLineY } = scrollInto(index, minLineY, maxLineY)\n return {\n ...state,\n items: mergedDirents,\n focused: true,\n focusedIndex: index,\n minLineY: newMinLineY,\n maxLineY: newMaxLineY,\n }\n}\n\nconst revealItemVisible = (state, index) => {\n const { minLineY, maxLineY } = state\n const { newMinLineY, newMaxLineY } = scrollInto(index, minLineY, maxLineY)\n return {\n ...state,\n focused: true,\n focusedIndex: index,\n minLineY: newMinLineY,\n maxLineY: newMaxLineY,\n }\n}\n\nexport const revealItem = async (state, uri) => {\n Assert.object(state)\n Assert.string(uri)\n const { items } = state\n const index = getIndex(items, uri)\n if (index === -1) {\n return revealItemHidden(state, uri)\n }\n return revealItemVisible(state, index)\n}\n\nexport const shouldApplyNewState = (newState, fn) => {\n if (newState.root !== Workspace.state.workspacePath) {\n console.log(\n 'root does not match',\n `${newState.root} !== ${Workspace.state.workspacePath}`\n )\n return false\n }\n return true\n}\n\nexport const hasFunctionalRender = true\n\nconst renderItems = {\n isEqual(oldState, newState) {\n return (\n oldState.items === newState.items &&\n oldState.minLineY === newState.minLineY &&\n oldState.maxLineY === newState.maxLineY\n )\n },\n apply(oldState, newState) {\n const visibleDirents = getVisible(newState)\n return [/* method */ 'updateDirents', /* visibleDirents */ visibleDirents]\n },\n}\n\nconst renderFocusedIndex = {\n isEqual(oldState, newState) {\n return (\n oldState.focusedIndex === newState.focusedIndex &&\n oldState.focused === newState.focused\n )\n },\n apply(oldState, newState) {\n const oldFocusedIndex = oldState.focusedIndex - oldState.minLineY\n const newFocusedIndex = newState.focusedIndex - newState.minLineY\n return [\n /* method */ 'setFocusedIndex',\n /* oldindex */ oldFocusedIndex,\n /* newIndex */ newFocusedIndex,\n /* focused */ newState.focused,\n ]\n },\n}\n\nconst renderDropTargets = {\n isEqual(oldState, newState) {\n return oldState.dropTargets === newState.dropTargets\n },\n apply(oldState, newState) {\n return [\n /* method */ 'setDropTargets',\n /* oldDropTargets */ oldState.dropTargets,\n /* newDropTargets */ newState.dropTargets,\n ]\n },\n}\n\nconst renderEditingIndex = {\n isEqual(oldState, newState) {\n return oldState.editingIndex === newState.editingIndex\n },\n apply(oldState, newState) {\n const { editingIndex, focusedIndex, editingType, editingValue } = newState\n if (editingIndex === -1) {\n if (\n oldState.editingType === ExplorerEditingType.CreateFile ||\n oldState.editingType === ExplorerEditingType.CreateFolder\n ) {\n return [/* method */ 'hideEditBox', /* index */ oldState.editingIndex]\n }\n const dirent = newState.items[focusedIndex]\n return [\n /* method */ 'replaceEditBox',\n /* index */ oldState.editingIndex,\n /* dirent */ dirent,\n ]\n } else {\n if (\n oldState.editingType === ExplorerEditingType.CreateFile ||\n oldState.editingType === ExplorerEditingType.CreateFolder\n ) {\n return [\n /* method */ 'insertEditBox',\n /* index */ oldState.editingIndex,\n /* value */ editingValue,\n ]\n }\n return [\n /* method */ 'replaceWithEditBox',\n /* index */ editingIndex,\n /* value */ editingValue,\n ]\n }\n },\n}\n\nexport const render = [\n renderEditingIndex,\n renderItems,\n renderDropTargets,\n renderFocusedIndex,\n]\n", "import * as DirentType from '../DirentType/DirentType.js'\nimport { getChildDirents, getParentEndIndex } from './ViewletExplorerShared.js'\n\nconst makeExpanded = (dirent) => {\n if (dirent.type === DirentType.Directory) {\n return {\n ...dirent,\n type: DirentType.DirectoryExpanded,\n }\n }\n return dirent\n}\n\nexport const expandRecursively = async (state) => {\n const { items, focusedIndex, pathSeparator, root } = state\n const dirent =\n focusedIndex < 0\n ? {\n type: DirentType.Directory,\n path: root,\n depth: 0,\n }\n : items[focusedIndex]\n if (\n dirent.type !== DirentType.Directory &&\n dirent.type !== DirentType.DirectoryExpanding\n ) {\n return state\n }\n // TODO this is very inefficient\n const getChildDirentsRecursively = async (dirent) => {\n switch (dirent.type) {\n case DirentType.File:\n return [dirent]\n case DirentType.Directory:\n const childDirents = await getChildDirents(root, pathSeparator, dirent)\n const all = [makeExpanded(dirent)]\n for (const childDirent of childDirents) {\n const childAll = await getChildDirentsRecursively(childDirent)\n all.push(...childAll)\n }\n return all\n default:\n return []\n }\n }\n // TODO race condition: what if folder is being collapse while it is recursively expanding?\n // TODO race condition: what if folder is being deleted while it is recursively expanding?\n // TODO race condition: what if a new file/folder is created while the folder is recursively expanding?\n const childDirents = await getChildDirentsRecursively(dirent)\n const startIndex = focusedIndex\n if (focusedIndex >= 0) {\n const endIndex = getParentEndIndex(items, focusedIndex)\n const newDirents = [\n ...items.slice(0, startIndex),\n ...childDirents,\n ...items.slice(endIndex),\n ]\n return { ...state, items: newDirents }\n }\n return {\n ...state,\n items: childDirents.slice(1),\n }\n}\n", "export const focus = (state) => {\n if (state.focused) {\n return state\n }\n return {\n ...state,\n focused: true,\n }\n}\n", "import { focusIndex } from './ViewletExplorerFocusIndex.js'\n\nexport const focusFirst = (state) => {\n const { focusedIndex, items } = state\n if (items.length === 0 || focusedIndex === 0) {\n return state\n }\n return focusIndex(state, 0)\n}\n", "import { focusIndex } from './ViewletExplorerFocusIndex.js'\nimport * as Arrays from '../Arrays/Arrays.js'\n\nexport const focusLast = (state) => {\n const { focusedIndex, items } = state\n const lastIndex = Arrays.lastIndex(items)\n if (items.length === 0 || focusedIndex === lastIndex) {\n return state\n }\n return focusIndex(state, lastIndex)\n}\n", "import { focusIndex } from './ViewletExplorerFocusIndex.js'\nimport * as Arrays from '../Arrays/Arrays.js'\n\nexport const focusNext = (state) => {\n const { focusedIndex, items } = state\n if (focusedIndex === Arrays.lastIndex(items)) {\n return state\n }\n return focusIndex(state, focusedIndex + 1)\n}\n", "import { focusIndex } from './ViewletExplorerFocusIndex.js'\n\nexport const focusNone = (state) => {\n return focusIndex(state, -1)\n}\n", "import { focusIndex } from './ViewletExplorerFocusIndex.js'\nimport * as Arrays from '../Arrays/Arrays.js'\n\nexport const focusPrevious = (state) => {\n const { focusedIndex, items } = state\n switch (focusedIndex) {\n case -1:\n if (items.length === 0) {\n return state\n }\n return focusIndex(state, Arrays.lastIndex(items))\n case 0:\n return state\n default:\n return focusIndex(state, focusedIndex - 1)\n }\n}\n", "import * as Command from '../Command/Command.js'\nimport * as MenuEntryId from '../MenuEntryId/MenuEntryId.js'\n\nexport const handleContextMenuKeyboard = async (state) => {\n const { focusedIndex, left, top, minLineY, itemHeight } = state\n const x = left\n const y = top + (focusedIndex - minLineY + 1) * itemHeight\n await Command.execute(\n /* ContextMenu.show */ 'ContextMenu.show',\n /* x */ x,\n /* y */ y,\n /* id */ MenuEntryId.Explorer\n )\n return state\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as Command from '../Command/Command.js'\nimport { getIndexFromPosition } from './ViewletExplorerShared.js'\nimport * as MenuEntryId from '../MenuEntryId/MenuEntryId.js'\n\nexport const handleContextMenuMouseAt = async (state, x, y) => {\n Assert.number(x)\n Assert.number(y)\n const focusedIndex = getIndexFromPosition(state, x, y)\n await Command.execute(\n /* ContextMenu.show */ 'ContextMenu.show',\n /* x */ x,\n /* y */ y,\n /* id */ MenuEntryId.Explorer\n )\n return {\n ...state,\n focusedIndex,\n focused: false,\n }\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport { getIndexFromPosition } from './ViewletExplorerShared.js'\n\nconst isEqual = (a, b) => {\n if (a.length !== b.length) {\n return false\n }\n const length = a.length\n for (let i = 0; i < length; i++) {\n if (a[i] !== b[i]) {\n return false\n }\n }\n return true\n}\n\nexport const handleDragOver = (state, x, y) => {\n Assert.number(x)\n Assert.number(y)\n const { dropTargets } = state\n const index = getIndexFromPosition(state, x, y)\n const newDropTargets = [index]\n if (isEqual(dropTargets, newDropTargets)) {\n return state\n }\n return {\n ...state,\n dropTargets: newDropTargets,\n }\n}\n", "import * as FileSystem from '../FileSystem/FileSystem.js'\nimport * as Path from '../Path/Path.js'\nimport { getChildDirents } from './ViewletExplorerShared.js'\n\nconst mergeDirents = (oldDirents, newDirents) => {\n return newDirents\n}\n\n// TODO copy files in parallel\nconst copyFilesElectron = async (root, pathSeparator, files) => {\n for (const file of files) {\n const from = file.path\n const to = Path.join(pathSeparator, root, file.name)\n await FileSystem.copy(from, to)\n }\n}\n\nconst getMergedDirents = async (root, pathSeparator, dirents) => {\n const childDirents = await getChildDirents(root, pathSeparator, {\n path: root,\n depth: 0,\n })\n const mergedDirents = mergeDirents(dirents, childDirents)\n return mergedDirents\n}\n\nexport const handleDrop = async (state, files) => {\n const { root, pathSeparator, items } = state\n await copyFilesElectron(root, pathSeparator, files)\n const mergedDirents = await getMergedDirents(root, pathSeparator, items)\n return {\n ...state,\n items: mergedDirents,\n dropTargets: [],\n }\n}\n", "import * as Command from '../Command/Command.js'\nimport * as FileHandleType from '../FileHandleType/FileHandleType.js'\nimport * as FileSystem from '../FileSystem/FileSystem.js'\nimport * as Path from '../Path/Path.js'\nimport * as EncodingType from '../EncodingType/EncodingType.js'\nimport { getChildDirents } from './ViewletExplorerShared.js'\n\nconst mergeDirents = (oldDirents, newDirents) => {\n return newDirents\n}\n\nconst getMergedDirents = async (root, pathSeparator, dirents) => {\n const childDirents = await getChildDirents(root, pathSeparator, {\n path: root,\n depth: 0,\n })\n const mergedDirents = mergeDirents(dirents, childDirents)\n return mergedDirents\n}\n\nconst uploadFilesDefault = async (root, pathSeparator, files) => {\n if (files.length === 1) {\n const file = files[0]\n const { name, kind } = file\n if (kind === FileHandleType.Directory) {\n await Command.execute(\n 'PersistentFileHandle.addHandle',\n `html://${name}`,\n file\n )\n await Command.execute('Workspace.setPath', `html://${name}`)\n return true\n }\n }\n for (const file of files) {\n const { name, kind } = file\n if (kind === FileHandleType.Directory) {\n throw new Error('folder upload is not yet supported')\n }\n const content = await Command.execute('Blob.blobToBinaryString', file)\n const to = Path.join(pathSeparator, root, file.name)\n await FileSystem.writeFile(to, content, EncodingType.Binary)\n }\n return false\n}\n\nexport const handleDrop = async (state, files) => {\n const { root, pathSeparator, items } = state\n const handled = await uploadFilesDefault(root, pathSeparator, files)\n if (handled) {\n return state\n }\n const mergedDirents = await getMergedDirents(root, pathSeparator, items)\n return {\n ...state,\n items: mergedDirents,\n dropTargets: [],\n }\n}\n", "import * as Platform from '../Platform/Platform.js'\nimport * as PlatformType from '../PlatformType/PlatformType.js'\n\nconst getModule = () => {\n switch (Platform.platform) {\n case PlatformType.Electron:\n return import('./ViewletExplorerHandleDropRootElectron.js')\n default:\n return import('./ViewletExplorerHandleDropRootDefault.js')\n }\n}\n\nexport const handleDropRoot = async (state, files) => {\n const module = await getModule()\n return module.handleDrop(state, files)\n}\n", "import {\n getChildDirents,\n getParentStartIndex,\n} from './ViewletExplorerShared.js'\nimport * as DirentType from '../DirentType/DirentType.js'\nimport * as FileSystem from '../FileSystem/FileSystem.js'\nimport { handleDropRoot } from './ViewletExplorerHandleDropRoot.js'\n\nconst handleDropIntoFolder = async (state, dirent, index, files) => {\n const { pathSeparator, root, items } = state\n for (const file of files) {\n const from = file.path\n const to = dirent.path + pathSeparator + file.name\n await FileSystem.copy(from, to)\n }\n const childDirents = await getChildDirents(root, pathSeparator, dirent)\n // TODO merge with child dirents\n const middleDirents = []\n const startIndex = index + 1\n const endIndex = index + 2\n const mergedDirents = [\n ...items.slice(0, startIndex),\n ...childDirents,\n ...items.slice(endIndex),\n ]\n\n // const mergedDirents = mergeDirents(dirents, childDirents)\n return {\n ...state,\n items: mergedDirents,\n dropTargets: [],\n }\n}\n\nconst handleDropIntoFile = (state, dirent, index, files) => {\n const { items } = state\n const parentIndex = getParentStartIndex(items, index)\n if (parentIndex === -1) {\n return handleDropRoot(state, files)\n }\n return handleDropIndex(parentIndex)\n}\n\nexport const handleDropIndex = (state, index, files) => {\n const { items } = state\n const dirent = items[index]\n // TODO if it is a file, drop into the folder of the file\n // TODO if it is a folder, drop into the folder\n // TODO if it is a symlink, read symlink and determine if file can be dropped\n switch (dirent.type) {\n case DirentType.Directory:\n case DirentType.DirectoryExpanded:\n return handleDropIntoFolder(state, dirent, index, files)\n case DirentType.File:\n return handleDropIntoFile(state, dirent, index, files)\n default:\n return state\n }\n}\n", "import { VError } from '../VError/VError.js'\nimport { handleDropIndex } from './ViewletExplorerHandleDropIndex.js'\nimport { handleDropRoot } from './ViewletExplorerHandleDropRoot.js'\nimport { getIndexFromPosition } from './ViewletExplorerShared.js'\n\nexport const handleDrop = async (state, x, y, files) => {\n try {\n const index = getIndexFromPosition(state, x, y)\n switch (index) {\n case -1:\n return await handleDropRoot(state, files)\n default:\n return await handleDropIndex(state, index, files)\n }\n } catch (error) {\n throw new VError(error, `Failed to drop files`)\n }\n}\n", "import * as Viewlet from '../Viewlet/Viewlet.js'\nimport { getTopLevelDirents, mergeDirents } from './ViewletExplorerShared.js'\n\n// TODO add lots of tests for this\nexport const updateRoot = async () => {\n const state1 = Viewlet.getState('Explorer')\n if (state1.disposed) {\n return state1\n }\n // const file = nativeFiles.files[0]\n const topLevelDirents = await getTopLevelDirents(\n state1.root,\n state1.pathSeparator\n )\n const state2 = Viewlet.getState('Explorer')\n // TODO what if root changes while reading directories?\n if (state2.disposed || state2.root !== state1.root) {\n return state2\n }\n const newDirents = mergeDirents(state2.items, topLevelDirents)\n const state3 = {\n ...state2,\n items: newDirents,\n }\n return state3\n}\n", "import * as Command from '../Command/Command.js'\nimport * as FileSystem from '../FileSystem/FileSystem.js'\nimport { getBaseName } from '../Path/Path.js'\nimport * as Viewlet from '../Viewlet/Viewlet.js' // TODO should not import viewlet manager -> avoid cyclic dependency\nimport { updateRoot } from './ViewletExplorerUpdateRoot.js'\nimport * as Path from '../Path/Path.js'\n\nconst handlePasteNone = (state, nativeFiles) => {\n console.info('[ViewletExplorer/handlePaste] no paths detected')\n return state\n}\nconst handlePasteCopy = async (state, nativeFiles) => {\n // TODO handle pasting files into nested folder\n // TODO handle pasting files into symlink\n // TODO handle pasting files into broken symlink\n // TODO handle pasting files into hardlink\n // TODO what if folder is big and it takes a long time\n for (const source of nativeFiles.files) {\n const target = Path.join(\n state.pathSeperator,\n state.root,\n getBaseName(state.pathSeparator, source)\n )\n await FileSystem.copy(source, target)\n }\n const stateNow = Viewlet.getState('Explorer')\n if (stateNow.disposed) {\n return\n }\n // TODO only update folder at which level it changed\n return updateRoot()\n}\n\nconst handlePasteCut = async (state, nativeFiles) => {\n for (const source of nativeFiles.files) {\n const target = `${state.root}${state.pathSeparator}${getBaseName(\n state.pathSeparator,\n source\n )}`\n await FileSystem.rename(source, target)\n }\n return state\n}\n\nconst NativeFileTypes = {\n None: 'none',\n Copy: 'copy',\n Cut: 'cut',\n}\n\nexport const handlePaste = async (state) => {\n const nativeFiles = await Command.execute(\n /* ClipBoard.readNativeFiles */ 'ClipBoard.readNativeFiles'\n )\n // TODO detect cut/paste event, not sure if that is possible\n // TODO check that pasted folder is not a parent folder of opened folder\n // TODO support pasting multiple paths\n // TODO what happens when pasting multiple paths, but some of them error?\n // how many error messages should be shown? Should the operation be undone?\n // TODO what if it is a large folder and takes a long time to copy? Should show progress\n // TODO what if there is a permission error? Probably should show a modal to ask for permission\n // TODO if error is EEXISTS, just rename the copy (e.g. file-copy-1.txt, file-copy-2.txt)\n // TODO actual target should be selected folder\n // TODO but what if a file is currently selected? Then maybe the parent folder\n // TODO but will it work if the folder is a symlink?\n // TODO handle error gracefully when copy fails\n switch (nativeFiles.type) {\n case NativeFileTypes.None:\n return handlePasteNone(state, nativeFiles)\n case NativeFileTypes.Copy:\n return handlePasteCopy(state, nativeFiles)\n case NativeFileTypes.Cut:\n return handlePasteCut(state, nativeFiles)\n default:\n throw new Error(`unexpected native paste type: ${nativeFiles.type}`)\n }\n}\n", "import * as ViewletExplorer from './ViewletExplorer.js'\n\nexport const name = 'Explorer'\n\nexport const Events = {\n 'languages.changed': ViewletExplorer.handleLanguagesChanged,\n 'workspace.change': ViewletExplorer.handleWorkspaceChange,\n}\n\n// prettier-ignore\nexport const Commands = {\n acceptEdit: ViewletExplorer.acceptEdit,\n cancelEdit: ViewletExplorer.cancelEdit,\n collapseAll: ViewletExplorer.collapseAll,\n copyPath: ViewletExplorer.copyPath,\n copyRelativePath: ViewletExplorer.copyRelativePath,\n expandAll: ViewletExplorer.expandAll,\n getFocusedDirent: ViewletExplorer.getFocusedDirent,\n handleArrowLeft: ViewletExplorer.handleArrowLeft,\n handleArrowRight: ViewletExplorer.handleArrowRight,\n handleBlur: ViewletExplorer.handleBlur,\n handleClick: ViewletExplorer.handleClick,\n handleClickAt: ViewletExplorer.handleClickAt,\n handleClickCurrent: ViewletExplorer.handleClickCurrent,\n handleClickCurrentButKeepFocus: ViewletExplorer.handleClickCurrentButKeepFocus,\n handleCopy: ViewletExplorer.handleCopy,\n handleMouseEnter: ViewletExplorer.handleMouseEnter,\n handleMouseLeave: ViewletExplorer.handleMouseLeave,\n handleWheel: ViewletExplorer.handleWheel,\n newFile: ViewletExplorer.newFile,\n newFolder: ViewletExplorer.newFolder,\n openContainingFolder: ViewletExplorer.openContainingFolder,\n removeDirent: ViewletExplorer.removeDirent,\n rename: ViewletExplorer.renameDirent,\n renameDirent: ViewletExplorer.renameDirent,\n revealItem: ViewletExplorer.revealItem,\n scrollDown: ViewletExplorer.scrollDown,\n scrollUp: ViewletExplorer.scrollUp,\n setDeltaY: ViewletExplorer.setDeltaY,\n updateEditingValue: ViewletExplorer.updateEditingValue,\n}\n\n// prettier-ignore\nexport const LazyCommands = {\n expandRecursively: () => import('./ViewletExplorerExpandRecursively.js'),\n focus: () => import('./ViewletExplorerFocus.js'),\n focusFirst: () => import('./ViewletExplorerFocusFirst.js'),\n focusIndex: () => import('./ViewletExplorerFocusIndex.js'),\n focusLast: () => import('./ViewletExplorerFocusLast.js'),\n focusNext: () => import('./ViewletExplorerFocusNext.js'),\n focusNone: () => import('./ViewletExplorerFocusNone.js'),\n focusPrevious: () => import('./ViewletExplorerFocusPrevious.js'),\n handleContextMenuKeyboard: () => import('./ViewletExplorerHandleContextMenuKeyboard.js'),\n handleContextMenuMouseAt: ()=>import('./ViewletExplorerHandleContextMenuMouseAt.js'),\n handleDragOver: () => import('./ViewletExplorerHandleDragOver.js'),\n handleDrop: () => import('./ViewletExplorerHandleDrop.js'),\n handlePaste: () => import('./ViewletExplorerHandlePaste.js'),\n}\n\nexport const Css = ['/css/parts/ViewletExplorer.css', '/css/parts/Label.css']\n\nexport * from './ViewletExplorer.js'\n", "import * as ViewletModuleId from '../ViewletModuleId/ViewletModuleId.js'\n\nexport const create = (id) => {\n return {\n id,\n disposed: false,\n }\n}\n\nexport const loadContent = async (state) => {\n return state\n}\n\n// TODO make sure dispose is actually called\nexport const dispose = (state) => {\n return {\n ...state,\n disposed: true,\n }\n}\n\nexport const hasFunctionalRender = true\n\nexport const hasFunctionalResize = true\n\nexport const render = []\n\nexport const resize = (state, dimensions) => {\n return { ...state, ...dimensions }\n}\n", "export const name = 'Run And Debug'\nexport const Commands = {}\n\nexport const Css = '/css/parts/ViewletRunAndDebug.css'\n\nexport * from './ViewletRunAndDebug.js'\n", "/**\n *\n * @param {number} height\n * @param {number} contentHeight\n * @param {number} minimumSliderSize\n * @returns\n */\nexport const getScrollBarHeight = (\n height,\n contentHeight,\n minimumSliderSize\n) => {\n if (height > contentHeight) {\n return 0\n }\n return Math.max(Math.round(height ** 2 / contentHeight), minimumSliderSize)\n}\n\nexport const getScrollBarY = (deltaY, finalDeltaY, height, scrollBarHeight) => {\n const scrollBarY = (deltaY / finalDeltaY) * (height - scrollBarHeight)\n return scrollBarY\n}\n\nexport const getNewDeltaPercent = (height, scrollBarHeight, relativeY) => {\n const halfScrollBarHeight = scrollBarHeight / 2\n if (relativeY <= halfScrollBarHeight) {\n // clicked at top\n return {\n percent: 0,\n handleOffset: relativeY,\n }\n }\n if (relativeY <= height - halfScrollBarHeight) {\n // clicked in middle\n return {\n percent: (relativeY - halfScrollBarHeight) / (height - scrollBarHeight),\n handleOffset: halfScrollBarHeight,\n }\n }\n // clicked at bottom\n return {\n percent: 1,\n handleOffset: scrollBarHeight - height + relativeY,\n }\n}\n", "export const Preview = 1\n\nexport const File = 2\n", "import * as SharedProcess from '../SharedProcess/SharedProcess.js'\n\nexport const textSearch = async (scheme, root, query) => {\n const result = await SharedProcess.invoke(\n /* Search.search */ 'Search.search',\n /* folder */ root,\n /* searchTerm */ query\n )\n // TODO api is weird\n return result.results\n}\n", "import * as FileSystemWeb from '../FileSystem/FileSystemWeb.js'\n\nexport const textSearch = (scheme, root, query) => {\n const entries = Object.entries(FileSystemWeb.state.files)\n const results = []\n for (const [key, value] of entries) {\n if (value.includes(query)) {\n results.push([\n key,\n [\n {\n absoluteOffset: 0,\n preview: value,\n },\n ],\n ])\n }\n }\n return results\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as ExtensionHostShared from './ExtensionHostShared.js'\n\nconst combineResults = (results) => {\n return results[0]\n}\n\nexport const executeTextSearchProvider = async (scheme, query) => {\n const result = await ExtensionHostShared.executeProviders({\n event: `onTextSearch:${scheme}`,\n method: 'ExtensionHostTextSearch.executeTextSearchProvider',\n params: [scheme, query],\n noProviderFoundMessage: 'no text search providers found',\n noProviderFoundResult: [],\n combineResults,\n })\n Assert.array(result)\n console.log({ result })\n return result\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as ExtensionHostTextSearch from '../ExtensionHost/ExtensionHostTextSearch.js'\n\nexport const textSearch = async (scheme, root, query) => {\n Assert.string(scheme)\n Assert.string(query)\n const results = await ExtensionHostTextSearch.executeTextSearchProvider(\n scheme,\n query\n )\n return results\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as FileSystem from '../FileSystem/FileSystem.js'\n\nconst getProvider = (scheme) => {\n switch (scheme) {\n case '':\n return import('./TextSearchNode.js')\n case 'web':\n return import('./TextSearchWeb.js')\n default:\n return import('./TextSearchExtension.js')\n }\n}\n\nexport const textSearch = async (root, query) => {\n Assert.string(root)\n Assert.string(query)\n const scheme = FileSystem.getProtocol(root)\n const provider = await getProvider(scheme)\n const results = await provider.textSearch(scheme, root, query)\n return results\n}\n\nexport const cancel = async (searchId) => {\n // TODO\n // await SharedProcess.invoke(\n // /* Search.cancel */ 'Search.cancel',\n // /* searchId */ state.searchId\n // )\n}\n", "import * as Assert from '../Assert/Assert.js'\n\nexport const create = ({\n itemHeight,\n headerHeight = 0,\n minimumSliderSize = 20,\n}) => {\n return {\n deltaY: 0,\n minLineY: 0,\n maxLineY: 0,\n finalDeltaY: 0,\n itemHeight,\n headerHeight,\n items: [],\n minimumSliderSize,\n focusedIndex: -1,\n touchOffsetY: 0,\n touchTimeStamp: 0,\n touchDifference: 0,\n scrollBarHeight: 0,\n }\n}\n\nconst getListHeight = (height, headerHeight) => {\n if (headerHeight) {\n return height - headerHeight\n }\n return headerHeight\n}\n\nexport const setDeltaY = (state, deltaY) => {\n Assert.object(state)\n Assert.number(deltaY)\n const { itemHeight, items, height, headerHeight } = state\n const listHeight = getListHeight(height, headerHeight)\n const itemsLength = items.length\n if (deltaY < 0) {\n deltaY = 0\n } else if (deltaY > itemsLength * itemHeight - listHeight) {\n deltaY = Math.max(itemsLength * itemHeight - listHeight, 0)\n }\n if (state.deltaY === deltaY) {\n return state\n }\n const minLineY = Math.round(deltaY / itemHeight)\n const maxLineY = minLineY + Math.round(listHeight / itemHeight)\n Assert.number(minLineY)\n Assert.number(maxLineY)\n return {\n ...state,\n deltaY,\n minLineY,\n maxLineY,\n }\n}\n\nexport const handleWheel = (state, deltaY) => {\n Assert.object(state)\n Assert.number(deltaY)\n return setDeltaY(state, state.deltaY + deltaY)\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as Command from '../Command/Command.js'\nimport * as Compare from '../Compare/Compare.js'\nimport * as Height from '../Height/Height.js'\nimport * as I18nString from '../I18NString/I18NString.js'\nimport * as IconTheme from '../IconTheme/IconTheme.js'\nimport * as MenuEntryId from '../MenuEntryId/MenuEntryId.js'\nimport * as ScrollBarFunctions from '../ScrollBarFunctions/ScrollBarFunctions.js'\nimport * as SearchResultType from '../SearchResultType/SearchResultType.js'\nimport * as TextSearch from '../TextSearch/TextSearch.js'\nimport * as ViewletModuleId from '../ViewletModuleId/ViewletModuleId.js'\nimport * as VirtualList from '../VirtualList/VirtualList.js'\nimport * as Workspace from '../Workspace/Workspace.js'\n\n/**\n * @enum {string}\n */\nexport const UiStrings = {\n NoResults: 'No results found',\n Oneresult: 'Found 1 result in 1 file',\n ManyResultsInOneFile: `Found {PH1} results in 1 file`,\n ManyResultsInManyFiles: `Found {PH1} results in {PH2} files`,\n}\n\nexport const create = (id, uri, left, top, width, height) => {\n return {\n searchResults: [],\n stats: {},\n searchId: -1,\n value: '',\n disposed: false,\n fileCount: 0,\n left,\n top,\n width,\n height,\n ...VirtualList.create({\n itemHeight: Height.ListItem,\n minimumSliderSize: Height.MinimumSliderSize,\n headerHeight: 61, // TODO\n }),\n }\n}\n\nconst getSavedValue = (savedState) => {\n if (savedState && savedState.value) {\n return savedState.value\n }\n return ''\n}\n\nexport const saveState = (state) => {\n const { value } = state\n return {\n value,\n }\n}\n\nexport const loadContent = async (state, savedState) => {\n const savedValue = getSavedValue(savedState)\n if (savedValue) {\n return setValue(state, savedValue)\n }\n return state\n}\n\nconst getStatusMessage = (resultCount, fileResultCount) => {\n if (resultCount === 0) {\n return I18nString.i18nString(UiStrings.NoResults)\n }\n if (resultCount === 1) {\n return I18nString.i18nString(UiStrings.Oneresult)\n }\n if (fileResultCount === 1) {\n return I18nString.i18nString(UiStrings.ManyResultsInOneFile, {\n PH1: resultCount,\n })\n }\n return I18nString.i18nString(UiStrings.ManyResultsInManyFiles, {\n PH1: resultCount,\n PH2: fileResultCount,\n })\n}\n\nconst getResultCounts = (results) => {\n let resultCount = 0\n for (const result of results) {\n const [fileName, matches] = result\n resultCount += matches.length\n }\n return resultCount\n}\n\nexport const setValue = async (state, value) => {\n try {\n if (value === '') {\n return {\n ...state,\n value,\n minLineY: 0,\n maxLineY: 0,\n deltaY: 0,\n items: [],\n matchIndex: 0,\n matchCount: 0,\n message: '',\n }\n }\n const { height, itemHeight, minimumSliderSize, headerHeight } = state\n const root = Workspace.state.workspacePath\n const results = await TextSearch.textSearch(root, value)\n const resultCount = getResultCounts(results)\n const displayResults = toDisplayResults(\n results,\n itemHeight,\n resultCount,\n value\n )\n const fileResultCount = results.length\n const message = getStatusMessage(resultCount, fileResultCount)\n const total = displayResults.length\n const contentHeight = total * itemHeight\n const listHeight = height - headerHeight\n const scrollBarHeight = ScrollBarFunctions.getScrollBarHeight(\n height,\n contentHeight,\n minimumSliderSize\n )\n const numberOfVisible = Math.ceil(listHeight / itemHeight)\n const maxLineY = Math.min(numberOfVisible, total)\n const finalDeltaY = Math.max(contentHeight - listHeight, 0)\n return {\n ...state,\n value,\n items: displayResults,\n message,\n maxLineY: maxLineY,\n scrollBarHeight,\n finalDeltaY,\n }\n } catch (error) {\n return {\n ...state,\n message: `${error}`,\n value,\n }\n }\n}\n\nconst updateIcon = (item) => {\n switch (item.type) {\n case SearchResultType.File:\n return {\n ...item,\n icon: IconTheme.getFileIcon({ name: item.text }),\n }\n default:\n return item\n }\n}\n\nexport const handleIconThemeChange = (state) => {\n const { items } = state\n const newItems = items.map(updateIcon)\n return {\n ...state,\n items: newItems,\n }\n}\n\nexport const dispose = async (state) => {\n // TODO cancel pending search\n if (state.state === 'searching') {\n await TextSearch.cancel(state.searchId)\n }\n return {\n ...state,\n disposed: true,\n }\n}\n\nconst getPath = (result) => {\n return result[0]\n}\n\nconst getPreviews = (result) => {\n const previews = result[1]\n if (!Array.isArray(previews)) {\n throw new Error('previews must be of type array')\n }\n return previews\n}\n\nconst compareResults = (resultA, resultB) => {\n const pathA = getPath(resultA)\n const pathB = getPath(resultB)\n return Compare.compareString(pathA, pathB)\n}\n\nconst toDisplayResults = (results, itemHeight, resultCount, searchTerm) => {\n results.sort(compareResults)\n const displayResults = []\n let i = -1\n const setSize = resultCount\n for (const result of results) {\n i++\n const path = getPath(result)\n const previews = getPreviews(result)\n const absolutePath = Workspace.getAbsolutePath(path)\n const baseName = Workspace.pathBaseName(path)\n displayResults.push({\n title: absolutePath,\n type: SearchResultType.File,\n text: baseName,\n icon: IconTheme.getFileIcon({ name: baseName }),\n posInSet: i + 1,\n setSize,\n top: i * itemHeight,\n lineNumber: result.lineNumber,\n matchStart: 0,\n matchLength: 0,\n })\n for (const preview of previews) {\n i++\n displayResults.push({\n title: preview.preview,\n type: SearchResultType.Preview,\n text: preview.preview,\n icon: '',\n posInSet: i + 1,\n setSize,\n top: i * itemHeight,\n lineNumber: preview.lineNumber,\n matchStart: preview.preview.indexOf(searchTerm),\n matchLength: searchTerm.length,\n })\n }\n }\n return displayResults\n}\n// TODO implement virtual list, only send visible items to renderer process\n\n// TODO maybe rename to result.items and result.stats\n// TODO support streaming results\n// TODO support cancellation\n// TODO handle error\n// TODO use command.execute or use module directly?\n// TODO send results to renderer process\n// TODO use virtual list because there might be many results\n\nexport const handleInput = (state, value) => {\n return setValue(state, value)\n}\n\nconst getFileIndex = (items, index) => {\n console.log({ items })\n for (let i = index; i >= 0; i--) {\n const item = items[i]\n if (item.type === SearchResultType.File) {\n return i\n }\n }\n return -1\n}\n\nconst selectIndexFile = async (state, searchResult, index) => {\n const path = searchResult.title\n Assert.string(path)\n await Command.execute(/* Main.openUri */ 'Main.openUri', /* uri */ path)\n return state\n}\n\nconst selectIndexPreview = async (state, searchResult, index) => {\n const { items } = state\n const fileIndex = getFileIndex(items, index)\n if (fileIndex === -1) {\n throw new Error('Search result is missing file')\n }\n const { lineNumber } = searchResult\n // console.log({ searchResult })\n const fileResult = items[fileIndex]\n const path = fileResult.title\n Assert.string(path)\n await Command.execute(\n /* Main.openUri */ 'Main.openUri',\n /* uri */ path,\n /* focus */ true,\n {\n selections: new Uint32Array([lineNumber, 0, lineNumber, 0]),\n }\n )\n return state\n}\n\nexport const selectIndex = async (state, index) => {\n if (index === -1) {\n return state\n }\n const { items } = state\n const searchResult = items[index]\n switch (searchResult.type) {\n case SearchResultType.File:\n return selectIndexFile(state, searchResult, index)\n case SearchResultType.Preview:\n return selectIndexPreview(state, searchResult, index)\n default:\n throw new Error(`unexpected search result type ${searchResult.type}`)\n }\n}\n\nexport const handleContextMenuMouseAt = async (state, x, y) => {\n const index = 1\n await Command.execute(\n /* ContextMenu.show */ 'ContextMenu.show',\n /* x */ x,\n /* y */ y,\n /* id */ MenuEntryId.Search\n )\n return state\n}\n\nexport const handleContextMenuKeyboard = async (state) => {\n const index = 1\n const x = state.left // TODO\n const y = state.top // TODO\n await Command.execute(\n /* ContextMenu.show */ 'ContextMenu.show',\n /* x */ x,\n /* y */ y,\n /* id */ MenuEntryId.Search\n )\n return state\n}\n\nexport const handleClick = async (state, index) => {\n const { minLineY } = state\n const actualIndex = index + minLineY\n return selectIndex(state, actualIndex)\n}\n\nexport const hasFunctionalResize = true\n\nexport const resize = (state, dimensions) => {\n return {\n ...state,\n ...dimensions,\n }\n}\n\nexport const hasFunctionalRender = true\n\nconst getVisible = (state) => {\n const { minLineY, maxLineY, items } = state\n return items.slice(minLineY, maxLineY)\n}\n\nconst renderItems = {\n isEqual(oldState, newState) {\n return (\n oldState.items === newState.items &&\n oldState.minLineY === newState.minLineY &&\n oldState.maxLineY === newState.maxLineY\n )\n },\n apply(oldState, newState) {\n const visible = getVisible(newState)\n return [/* method */ 'setResults', /* results */ visible]\n },\n}\n\nconst renderScrollBar = {\n isEqual(oldState, newState) {\n return (\n oldState.negativeMargin === newState.negativeMargin &&\n oldState.deltaY === newState.deltaY &&\n oldState.height === newState.height &&\n oldState.finalDeltaY === newState.finalDeltaY\n )\n },\n apply(oldState, newState) {\n const scrollBarY = ScrollBarFunctions.getScrollBarY(\n newState.deltaY,\n newState.finalDeltaY,\n newState.height - newState.headerHeight,\n newState.scrollBarHeight\n )\n return [\n /* method */ 'setScrollBar',\n /* scrollBarY */ scrollBarY,\n /* scrollBarHeight */ newState.scrollBarHeight,\n ]\n },\n}\n\nconst renderHeight = {\n isEqual(oldState, newState) {\n return oldState.items.length === newState.items.length\n },\n apply(oldState, newState) {\n const { itemHeight } = newState\n const contentHeight = newState.items.length * itemHeight\n return [/* method */ 'setContentHeight', /* contentHeight */ contentHeight]\n },\n}\n\nconst renderMessage = {\n isEqual(oldState, newState) {\n return oldState.message === newState.message\n },\n apply(oldState, newState) {\n return [/* method */ 'setMessage', /* message */ newState.message]\n },\n}\n\nconst renderValue = {\n isEqual(oldState, newState) {\n return oldState.value === newState.value\n },\n apply(oldState, newState) {\n return [/* method */ 'setValue', /* value */ newState.value]\n },\n}\n\nconst renderNegativeMargin = {\n isEqual(oldState, newState) {\n return oldState.deltaY === newState.deltaY\n },\n apply(oldState, newState) {\n return [\n /* method */ 'setNegativeMargin',\n /* negativeMargin */ -newState.deltaY,\n ]\n },\n}\n\nexport const render = [\n renderItems,\n renderMessage,\n renderValue,\n renderScrollBar,\n renderHeight,\n renderNegativeMargin,\n]\n", "import * as Assert from '../Assert/Assert.js'\n\nexport const focusIndex = (state, index) => {\n const { itemHeight, minLineY, maxLineY, headerHeight, height, items } = state\n if (items.length === 0) {\n return state\n }\n Assert.number(itemHeight)\n if (index === -1) {\n return {\n ...state,\n focusedIndex: -1,\n focused: true,\n }\n }\n const listHeight = height - headerHeight\n if (index < minLineY + 1) {\n // scroll up\n const newMinLineY = index\n const newMaxLineY = newMinLineY + Math.ceil(listHeight / itemHeight)\n const newDeltaY = newMinLineY * itemHeight\n return {\n ...state,\n focusedIndex: index,\n minLineY: newMinLineY,\n maxLineY: newMaxLineY,\n focused: true,\n deltaY: newDeltaY,\n }\n }\n if (index >= maxLineY - 1) {\n // scroll down\n const newMaxLineY = index + 1\n const newMinLineY = newMaxLineY - Math.ceil(listHeight / itemHeight)\n const newDeltaY =\n newMinLineY * itemHeight - (listHeight % itemHeight) + itemHeight\n return {\n ...state,\n focusedIndex: index,\n minLineY: newMinLineY,\n maxLineY: newMaxLineY,\n focused: true,\n deltaY: newDeltaY,\n }\n }\n return {\n ...state,\n focusedIndex: index,\n focused: true,\n }\n}\n", "import { focusIndex } from './VirtualListFocusIndex.js'\n\nexport const focusFirst = (state) => {\n return focusIndex(state, 0)\n}\n", "import { focusIndex } from './VirtualListFocusIndex.js'\n\nexport const focusLast = (state) => {\n const { items } = state\n return focusIndex(state, items.length - 1)\n}\n", "import { focusFirst } from './VirtualListFocusFirst.js'\nimport { focusIndex } from './VirtualListFocusIndex.js'\n\nexport const focusNext = (state) => {\n const { focusedIndex, items } = state\n if (focusedIndex === items.length - 1) {\n return focusFirst(state)\n }\n return focusIndex(state, focusedIndex + 1)\n}\n", "import { focusIndex } from './VirtualListFocusIndex.js'\nimport * as Arrays from '../Arrays/Arrays.js'\n\nexport const focusNextPage = (state) => {\n const { focusedIndex, items, maxLineY, minLineY } = state\n if (Arrays.isLastIndex(items, focusedIndex)) {\n return state\n }\n const indexNextPage = Math.min(\n maxLineY + (maxLineY - minLineY) - 2,\n Arrays.lastIndex(items)\n )\n return focusIndex(state, indexNextPage)\n}\n", "import { focusIndex } from './VirtualListFocusIndex.js'\n\nexport const focusPrevious = (state) => {\n const { focusedIndex } = state\n if (focusedIndex === 0 || focusedIndex === -1) {\n return state\n }\n return focusIndex(state, focusedIndex - 1)\n}\n", "import { focusIndex } from './VirtualListFocusIndex.js'\n\nexport const focusPreviousPage = (state) => {\n const { focusedIndex, minLineY, maxLineY } = state\n if (focusedIndex === 0 || focusedIndex === -1) {\n return state\n }\n const indexPreviousPage = Math.max(minLineY - (maxLineY - minLineY) + 1, 0)\n return focusIndex(state, indexPreviousPage)\n}\n", "export const sleep = (duration) => {\n const promiseCallback = (resolve, reject) => {\n setTimeout(resolve, duration)\n }\n return new Promise(promiseCallback)\n}\n", "export const clamp = (num, min, max) => {\n return Math.min(Math.max(num, min), max)\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as Clamp from '../Clamp/Clamp.js'\n\nexport const setDeltaY = (state, value) => {\n Assert.object(state)\n Assert.number(value)\n const { itemHeight, finalDeltaY, deltaY, height, headerHeight } = state\n const listHeight = height - headerHeight\n const newDeltaY = Clamp.clamp(value, 0, finalDeltaY)\n if (deltaY === newDeltaY) {\n return state\n }\n // TODO when it only moves by one px, extensions don't need to be rerendered, only negative margin\n const minLineY = Math.floor(newDeltaY / itemHeight)\n const maxLineY = minLineY + Math.ceil(listHeight / itemHeight)\n return {\n ...state,\n deltaY: newDeltaY,\n minLineY,\n maxLineY,\n }\n}\n", "import * as Viewlet from '../Viewlet/Viewlet.js'\nimport * as ViewletStates from '../ViewletStates/ViewletStates.js'\nimport * as Timeout from '../Timeout/Timeout.js'\nimport { setDeltaY } from './VirtualListSetDeltaY.js'\n\nconst applyInertia = async (touchDifference) => {\n let inertia = touchDifference\n let i = 0\n while (Math.abs(inertia) > 1.5) {\n inertia /= 1.03\n await Timeout.sleep(10)\n const newState = ViewletStates.getState('Extensions')\n if (!newState) {\n break\n }\n const newDeltaY = newState.deltaY - inertia\n await Viewlet.setState('Extensions', setDeltaY(newState, newDeltaY))\n }\n}\n\nexport const handleTouchEnd = (state, touches) => {\n if (touches.length === 0) {\n return state\n }\n const { touchOffsetY, touchDifference } = state\n void applyInertia(touchDifference)\n // const touch = touches[0]\n // const newTouchOffsetY = touch.clientY\n // const diff = newTouchOffsetY - touchOffsetY\n // console.log({ touchDifference })\n // let inertia = touchDifference\n // let i = 0\n // while (Math.abs(inertia) > 1.5) {\n // console.log({ inertia })\n // inertia /= 1.03\n // await new Promise((r) => setTimeout(r, 10))\n // const newState = ViewletStates.getState('Extensions')\n // if (!newState) {\n // break\n // }\n // const newDeltaY = newState.deltaY - inertia\n // await Viewlet.setState('Extensions', setDeltaY(newState, newDeltaY))\n // }\n // console.log('return state')\n return state\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport { setDeltaY } from './VirtualListSetDeltaY.js'\n\nexport const handleTouchMove = (state, timeStamp, touches) => {\n Assert.number(timeStamp)\n Assert.array(touches)\n if (touches.length === 0) {\n return state\n }\n const { touchOffsetY, deltaY, touchTimeStamp } = state\n const touch = touches[0]\n const { clientY } = touch\n const newTouchOffsetY = clientY\n const touchDifference = newTouchOffsetY - touchOffsetY\n const newDeltaY = deltaY - touchDifference\n const timeDifference = timeStamp - touchTimeStamp\n return {\n ...setDeltaY(state, newDeltaY),\n touchOffsetY: newTouchOffsetY,\n touchDifference,\n }\n}\n", "import * as Assert from '../Assert/Assert.js'\n\nexport const handleTouchStart = (state, timeStamp, touches) => {\n Assert.number(timeStamp)\n Assert.array(touches)\n if (touches.length === 0) {\n return state\n }\n const touch = touches[0]\n const { clientY } = touch\n return {\n ...state,\n touchOffsetY: clientY,\n }\n}\n", "import { setDeltaY } from './VirtualListSetDeltaY.js'\n\nexport const handleWheel = (state, deltaY) => {\n return setDeltaY(state, state.deltaY + deltaY)\n}\n", "import { setDeltaY } from './VirtualListSetDeltaY.js'\n\nconst getNewPercent = (state, relativeY) => {\n if (relativeY <= state.height - state.scrollBarHeight / 2) {\n // clicked in middle\n return relativeY / (state.height - state.scrollBarHeight)\n }\n // clicked at bottom\n return 1\n}\n\nexport const handleScrollBarMove = (state, y) => {\n const { top, headerHeight, handleOffset, finalDeltaY } = state\n const relativeY = y - top - headerHeight - handleOffset\n const newPercent = getNewPercent(state, relativeY)\n const newDeltaY = newPercent * finalDeltaY\n return setDeltaY(state, newDeltaY)\n}\n", "import { setDeltaY } from './VirtualListSetDeltaY.js'\n\nconst getNewDeltaPercent = (state, relativeY) => {\n // TODO duplicate code with editor scrolling\n const { scrollBarHeight, height } = state\n if (relativeY <= scrollBarHeight / 2) {\n // clicked at top\n return 0\n }\n if (relativeY <= height - scrollBarHeight / 2) {\n // clicked in middle\n return (relativeY - scrollBarHeight / 2) / (height - scrollBarHeight)\n }\n // clicked at bottom\n return 1\n}\n\nexport const handleScrollBarClick = (state, y) => {\n const { top, headerHeight, finalDeltaY, scrollBarHeight } = state\n const relativeY = y - top - headerHeight\n const newPercent = getNewDeltaPercent(state, relativeY)\n const newDeltaY = newPercent * finalDeltaY\n\n return {\n ...setDeltaY(state, newDeltaY),\n handleOffset: scrollBarHeight / 2,\n }\n}\n", "export const LazyCommands = {\n focusFirst: () => import('./VirtualListFocusFirst.js'),\n focusIndex: () => import('./VirtualListFocusIndex.js'),\n focusLast: () => import('./VirtualListFocusLast.js'),\n focusNext: () => import('./VirtualListFocusNext.js'),\n focusNextPage: () => import('./VirtualListFocusNextPage.js'),\n focusPrevious: () => import('./VirtualListFocusPrevious.js'),\n focusPreviousPage: () => import('./VirtualListFocusPreviousPage.js'),\n handleTouchEnd: () => import('./VirtualListHandleTouchEnd.js'),\n handleTouchMove: () => import('./VirtualListHandleTouchMove.js'),\n handleTouchStart: () => import('./VirtualListHandleTouchStart.js'),\n handleWheel: () => import('./VirtualListHandleWheel.js'),\n handleScrollBarMove: () => import('./VirtualListHandleScrollBarMove.js'),\n handleScrollBarClick: () => import('./VirtualListHandleScrollBarClick.js'),\n}\n", "import * as ViewletSearch from './ViewletSearch.js'\nimport * as VirtualList from '../VirtualList/VirtualList.ipc.js'\n\nexport const name = 'Search'\n\n// prettier-ignore\nexport const Commands = {\n handleClick: ViewletSearch.handleClick,\n handleContextMenuKeyboard: ViewletSearch.handleContextMenuKeyboard,\n handleContextMenuMouseAt: ViewletSearch.handleContextMenuMouseAt,\n handleInput: ViewletSearch.handleInput,\n setValue: ViewletSearch.setValue,\n}\n\n// prettier-ignore\nexport const LazyCommands = {\n ...VirtualList.LazyCommands,\n}\n\nexport const Css = [\n '/css/parts/Highlight.css',\n '/css/parts/InputBox.css',\n '/css/parts/Label.css',\n '/css/parts/ViewletList.css',\n '/css/parts/ViewletSearch.css',\n]\n\nexport * from './ViewletSearch.js'\n", "import * as ExtensionHostShared from './ExtensionHostShared.js'\n\nexport const acceptInput = async (text) => {\n return ExtensionHostShared.executeProvider({\n event: 'onSourceControl',\n method: 'ExtensionHost.sourceControlAcceptInput',\n params: [text],\n noProviderFoundMessage: 'No source control provider found',\n })\n}\n\nexport const getChangedFiles = async () => {\n return ExtensionHostShared.executeProvider({\n event: 'onSourceControl',\n method: 'ExtensionHost.sourceControlGetChangedFiles',\n params: [],\n noProviderFoundMessage: 'No source control provider found',\n })\n}\n\nexport const getFileBefore = (path) => {\n return ExtensionHostShared.executeProvider({\n event: 'onSourceControl',\n method: 'ExtensionHost.sourceControlGetFileBefore',\n params: [path],\n noProviderFoundMessage: 'No source control provider found',\n })\n}\n", "import * as ExtensionHostSourceControl from '../ExtensionHost/ExtensionHostSourceControl.js'\nimport * as FileSystem from '../FileSystem/FileSystem.js'\nimport * as ViewletModuleId from '../ViewletModuleId/ViewletModuleId.js'\n\n// TODO when accept input is invoked multiple times, it should not lead to errors\n\nexport const create = () => {\n return {\n merge: [],\n index: [],\n untracked: [],\n workingTree: [],\n disposed: false,\n inputValue: '',\n }\n}\n\nexport const dispose = (state) => {\n return {\n ...state,\n disposed: true,\n }\n}\n\nexport const acceptInput = async (state, text) => {\n state.inputValue = text // TODO avoid side effect here\n await ExtensionHostSourceControl.acceptInput(text)\n return {\n ...state,\n inputValue: '',\n }\n}\n\nconst getChangedFiles = async () => {\n const changedFiles = await ExtensionHostSourceControl.getChangedFiles()\n return {\n index: [],\n merge: [],\n untracked: [],\n workingTree: changedFiles,\n gitRoot: '',\n }\n}\n\nexport const loadContent = async (state) => {\n const changedFiles = await getChangedFiles()\n return {\n ...state,\n index: changedFiles.index,\n merge: changedFiles.merge,\n untracked: changedFiles.untracked,\n workingTree: changedFiles.workingTree,\n gitRoot: changedFiles.gitRoot,\n }\n}\n\nexport const handleClick = async (state, index) => {\n const item = state.workingTree[index]\n const absolutePath = `${state.gitRoot}/${item.file}`\n // TODO handle error\n const [fileBefore, fileNow] = await Promise.all([\n ExtensionHostSourceControl.getFileBefore(item.file),\n FileSystem.readFile(absolutePath),\n ])\n const content = `before:\\n${fileBefore}\\n\\n\\nnow:\\n${fileNow}`\n // const content\n // await Main.openRawText(`diff://${absolutePath}`, content, 'plaintext')\n // await Main.openAbsolutePath(absolutePath)\n}\n\nexport const hasFunctionalResize = true\n\nexport const resize = (state, dimensions) => {\n return {\n ...state,\n ...dimensions,\n }\n}\n\nexport const hasFunctionalRender = true\n\nconst renderValue = {\n isEqual(oldState, newState) {\n return oldState.inputValue === newState.inputValue\n },\n apply(oldState, newState) {\n return [/* method */ 'setInputValue', /* value */ newState.inputValue]\n },\n}\n\nconst renderChangeFiles = {\n isEqual(oldState, newState) {\n return oldState.workingTree === newState.workingTree\n },\n apply(oldState, newState) {\n return [\n /* method */ 'setChangedFiles',\n /* changedFiles */ newState.workingTree,\n ]\n },\n}\n\nexport const render = [renderValue, renderChangeFiles]\n", "import * as ViewletSourceControl from './ViewletSourceControl.js'\n\nexport const name = 'Source Control'\n\n// prettier-ignore\nexport const Commands = {\n '6532': ViewletSourceControl.acceptInput\n}\n\nexport const Css = [\n '/css/parts/ViewletSourceControl.css',\n '/css/parts/InputBox.css',\n]\n\nexport * from './ViewletSourceControl.js'\n", "import * as SharedProcess from '../SharedProcess/SharedProcess.js'\nimport * as RendererProcess from '../RendererProcess/RendererProcess.js'\nimport * as Workspace from '../Workspace/Workspace.js'\nimport * as Id from '../Id/Id.js'\nimport * as ViewletModuleId from '../ViewletModuleId/ViewletModuleId.js'\n\n// TODO implement a functional terminal component, maybe using offscreencanvas\n\nexport const create = () => {\n return {\n disposed: false,\n id: 0,\n }\n}\n\nexport const loadContent = async (state) => {\n // TODO this should be async and open a pty\n return {\n ...state,\n id: Id.create(),\n }\n}\n\nexport const contentLoadedEffects = async (state) => {\n // TODO this should be invoke\n SharedProcess.send(\n /* createTerminal */ 'Terminal.create',\n /* id */ state.id,\n /* cwd */ Workspace.state.workspacePath\n )\n}\n\nexport const handleData = async (state, data) => {\n // Terminal.handleData(state, data)\n const parsedData = new Uint8Array(data.data)\n await RendererProcess.invoke(\n /* Viewlet.send */ 'Viewlet.send',\n /* id */ 'Terminal',\n /* method */ 'write',\n /* data */ parsedData\n )\n}\n\nexport const write = async (state, input) => {\n await SharedProcess.invoke(\n /* Terminal.write */ 'Terminal.write',\n /* id */ state.id,\n /* input */ input\n )\n}\n\nexport const dispose = (state) => {\n return {\n ...state,\n disposed: true,\n }\n}\n\nexport const resize = async (state, width, height) => {\n // TODO columnWidth etc. should be in renderer process\n const columnWidth = 8.43332\n const rowHeight = 14\n // const columns = Math.round(width / columnWidth)\n const columns = 7\n const rows = Math.round(height / rowHeight)\n await SharedProcess.invoke(\n /* Terminal.resize */ 'Terminal.resize',\n /* id */ state.id,\n /* columns */ columns,\n /* rows */ rows\n )\n\n // Terminal.resize(state, width, height)\n}\n\nexport const clear = async (state) => {\n await RendererProcess.invoke(\n /* ViewletTerminal.write */ 'Terminal.write',\n /* data */ new TextEncoder().encode('TODO clear terminal')\n )\n}\n", "import * as ViewletTerminal from './ViewletTerminal.js'\n\nexport const name = 'Terminal'\n\n// prettier-ignore\nexport const Commands = {\n clear: ViewletTerminal.clear,\n write: ViewletTerminal.write,\n}\n\nexport const Css = [\n '/css/parts/ViewletTerminal.css',\n '/static/lib-css/termterm.css',\n]\n\nexport * from './ViewletTerminal.js'\n", "import * as ViewletModuleId from '../ViewletModuleId/ViewletModuleId.js'\n\nexport const create = () => {\n return {\n disposed: false,\n }\n}\n\nexport const loadContent = async (state) => {\n return state\n}\n\nexport const dispose = (state) => {\n return {\n ...state,\n disposed: true,\n }\n}\n\nexport const hasFunctionalRender = true\n\nexport const render = []\n", "export const name = 'Debug Console'\n\nexport const Commands = {}\n\nexport const Css = '/css/parts/ViewletDebugConsole.css'\n\nexport * from './ViewletDebugConsole.js'\n", "import * as SharedProcess from '../SharedProcess/SharedProcess.js'\nimport * as ExtensionManifestStatus from '../ExtensionManifestStatus/ExtensionManifestStatus.js'\n\nexport const install = (id) => {\n return SharedProcess.invoke(\n /* ExtensionManagement.install */ 'ExtensionManagement.install',\n /* id */ id\n )\n}\n\nexport const uninstall = (id) => {\n return SharedProcess.invoke(\n /* ExtensionManagement.uninstall */ 'ExtensionManagement.uninstall',\n /* id */ id\n )\n}\n\nexport const disable = async (id) => {\n return SharedProcess.invoke(\n /* ExtensionManagement.disable */ 'ExtensionManagement.disable',\n /* id */ id\n )\n}\n\nexport const enable = async (id) => {\n return SharedProcess.invoke(\n /* ExtensionManagement.enable */ 'ExtensionManagement.enable',\n /* id */ id\n )\n}\n\nexport const getAllExtensions = async () => {\n return SharedProcess.invoke(\n /* ExtensionManagement.getAllExtensions */ 'ExtensionManagement.getAllExtensions'\n )\n}\n\nexport const getExtension = async (id) => {\n const allExtensions = await getAllExtensions()\n for (const extension of allExtensions) {\n if (extension.id === id) {\n return extension\n }\n }\n return undefined\n}\n\nconst isFulfilled = (result) => {\n return result.status === ExtensionManifestStatus.Resolved\n}\n\nconst getValue = (result) => {\n return result.value\n}\n\nexport const getWorkingExtensions = async () => {\n const allExtensions = await getAllExtensions()\n const fullFilledExtensions = allExtensions.filter(isFulfilled).map(getValue)\n}\n", "export const Installed = '@installed'\nexport const Enabled = '@enabled'\nexport const Disabled = '@disabled'\nexport const Builtin = '@builtin'\nexport const Sort = '@sort'\nexport const Id = '@id'\nexport const Outdated = '@outdated'\n", "import { VError } from '../VError/VError.js'\nimport * as ExtensionFilterParameter from '../ExtensionFilterParameter/ExtensionFilterParameter.js'\n\nconst RE_PARAM = /@\\w+/g\n\n// TODO test sorting and filtering\nexport const parseValue = (value) => {\n const parameters = Object.create(null)\n // TODO this is not very functional code (assignment)\n const replaced = value.replace(RE_PARAM, (match, by, order) => {\n if (match.startsWith(ExtensionFilterParameter.Installed)) {\n parameters.installed = true\n }\n if (match.startsWith(ExtensionFilterParameter.Enabled)) {\n parameters.enabled = true\n }\n if (match.startsWith(ExtensionFilterParameter.Disabled)) {\n parameters.disabled = true\n }\n if (match.startsWith(ExtensionFilterParameter.Builtin)) {\n parameters.builtin = true\n }\n if (match.startsWith(ExtensionFilterParameter.Sort)) {\n // TODO\n parameters.sort = 'installs'\n }\n if (match.startsWith(ExtensionFilterParameter.Id)) {\n // TODO\n parameters.id = 'abc'\n }\n if (match.startsWith(ExtensionFilterParameter.Outdated)) {\n parameters.outdated = true\n }\n return ''\n })\n const isLocal =\n parameters.enabled ||\n parameters.builtin ||\n parameters.disabled ||\n parameters.outdated ||\n parameters.installed\n return {\n query: replaced,\n ...parameters,\n isLocal,\n }\n}\n", "import * as Platform from '../Platform/Platform.js'\n\nconst assetDir = Platform.getAssetDir()\n\nexport const Close = `${assetDir}/icons/icon-close.svg`\nexport const DebugAlt2 = `${assetDir}/icons/debug-alt-2.svg`\nexport const Ellipsis = `${assetDir}/icons/ellipsis.svg`\nexport const ExtensionDefaultIcon = `${assetDir}/icons/extensionDefaultIcon.png`\nexport const EXtensionLanguageBasics = `${assetDir}/icons/language-icon.svg`\nexport const Extensions = `${assetDir}/icons/extensions.svg`\nexport const ExtensionTheme = `${assetDir}/icons/theme-icon.png`\nexport const Files = `${assetDir}/icons/files.svg`\nexport const NextMatch = `${assetDir}/icons/arrow-down.svg`\nexport const PreviousMatch = `${assetDir}/icons/arrow-up.svg`\nexport const Search = `${assetDir}/icons/search.svg`\nexport const SettingsGear = `${assetDir}/icons/settings-gear.svg`\nexport const SourceControl = `${assetDir}/icons/source-control.svg`\nexport const SymbolDefault = 'IconDefault'\nexport const SymbolFunction = `${assetDir}/icons/symbol-method.svg`\nexport const SymbolKeyword = `${assetDir}/icons/symbol-keyword.svg`\nexport const SymbolProperty = `${assetDir}/icons/symbol-property.svg`\nexport const SymbolValue = `${assetDir}/icons/symbol-enum.svg`\nexport const SymbolVariable = `${assetDir}/icons/symbol-variable.svg`\n", "import * as Icon from '../Icon/Icon.js'\nimport * as Platform from '../Platform/Platform.js'\n\nexport const getIcon = (extension) => {\n if (!extension) {\n return Icon.ExtensionDefaultIcon\n }\n if (!extension.path || !extension.icon) {\n if (extension.name && extension.name.startsWith('Language Basics')) {\n return Icon.EXtensionLanguageBasics\n }\n if (extension.name && extension.name.endsWith(' Theme')) {\n return Icon.ExtensionTheme\n }\n return Icon.ExtensionDefaultIcon\n }\n if (Platform.platform === 'remote') {\n return `/remote/${extension.path}/${extension.icon}` // TODO support windows paths\n }\n if (Platform.platform === 'electron') {\n return `/remote/${extension.path}/${extension.icon}` // TODO support windows paths\n }\n return ''\n}\n\nconst RE_PUBLISHER = /^[a-z\\d\\-]+/\n\n// TODO handle case when extension is of type number|array|null|string\nexport const getPublisher = (extension) => {\n if (!extension || !extension.id) {\n return 'n/a'\n }\n // TODO handle case when id is not of type string -> should not crash application\n const match = extension.id.match(RE_PUBLISHER)\n if (!match) {\n return 'n/a'\n }\n return match[0]\n}\n\nexport const getName = (extension) => {\n if (extension && extension.name) {\n return extension.name\n }\n if (extension && extension.id) {\n return extension.id\n }\n return 'n/a'\n}\n\nexport const getVersion = (extension) => {\n if (!extension || !extension.version) {\n return 'n/a'\n }\n return extension.version\n}\n\nexport const getDescription = (extension) => {\n if (!extension || !extension.description) {\n return 'n/a'\n }\n return extension.description\n}\n\nexport const getId = (extension) => {\n if (!extension || !extension.id) {\n return 'n/a'\n }\n return extension.id\n}\n", "import * as ExtensionDisplay from '../ExtensionDisplay/ExtensionDisplay.js'\n\nconst matchesParsedValue = (extension, parsedValue) => {\n if (extension && typeof extension.name === 'string') {\n return extension.name.toLowerCase().includes(parsedValue.query)\n }\n if (extension && typeof extension.id === 'string') {\n return extension.id.toLowerCase().includes(parsedValue.query)\n }\n return false\n}\n\nexport const getExtensions = async (extensions, parsedValue) => {\n const filteredExtensions = []\n for (const extension of extensions) {\n if (matchesParsedValue(extension, parsedValue)) {\n filteredExtensions.push({\n name: ExtensionDisplay.getName(extension),\n id: ExtensionDisplay.getId(extension),\n publisher: ExtensionDisplay.getPublisher(extension),\n icon: ExtensionDisplay.getIcon(extension),\n description: ExtensionDisplay.getDescription(extension),\n })\n }\n }\n return filteredExtensions\n}\n", "import * as ParseExtensionSearchValue from '../ParseExtensionSearchValue/ParseExtensionSearchValue.js'\nimport * as SearchExtensionsLocal from '../SearchExtensionsLocal/SearchExtensionsLocal.js'\nimport { VError } from '../VError/VError.js'\n\nexport const searchExtensions = async (extensions, value) => {\n try {\n const parsedValue = ParseExtensionSearchValue.parseValue(value)\n const filteredExtensions = await SearchExtensionsLocal.getExtensions(\n extensions,\n parsedValue\n )\n return filteredExtensions\n } catch (error) {\n throw new VError(error, `Failed to search for extensions`)\n }\n}\n", "export const None = 0\n\nexport const Small = 1\n\nexport const Normal = 2\n\nexport const Large = 3\n", "export const getListHeight = (state) => {\n const { height, headerHeight } = state\n return height - headerHeight\n}\n", "import * as Command from '../Command/Command.js'\nimport * as ErrorHandling from '../ErrorHandling/ErrorHandling.js'\nimport * as ExtensionManagement from '../ExtensionManagement/ExtensionManagement.js' // TODO use Command.execute instead\nimport * as Height from '../Height/Height.js'\nimport * as MenuEntryId from '../MenuEntryId/MenuEntryId.js'\nimport * as RendererProcess from '../RendererProcess/RendererProcess.js'\nimport * as ScrollBarFunctions from '../ScrollBarFunctions/ScrollBarFunctions.js'\nimport * as SearchExtensions from '../SearchExtensions/SearchExtensions.js'\nimport * as ViewletModuleId from '../ViewletModuleId/ViewletModuleId.js'\nimport * as ViewletSize from '../ViewletSize/ViewletSize.js'\nimport * as VirtualList from '../VirtualList/VirtualList.js'\nimport { getListHeight } from './ViewletExtensionsShared.js'\n\nconst SUGGESTIONS = [\n '@builtin',\n '@disabled',\n '@enabled',\n '@installed',\n '@outdated',\n '@sort:installs',\n '@id:',\n '@category',\n]\n\n// then state can be recycled by Viewlet when there is only a single ViewletExtensions instance\n\nexport const create = (id, uri, left, top, width, height) => {\n return {\n searchValue: '',\n suggestionState: /* Closed */ 0,\n disposed: false,\n width,\n height,\n handleOffset: 0,\n top,\n left,\n error: '',\n focused: false,\n size: ViewletSize.None,\n ...VirtualList.create({\n itemHeight: Height.ExtensionListItem,\n minimumSliderSize: Height.MinimumSliderSize,\n headerHeight: 35,\n }),\n allExtensions: [],\n }\n}\n\nconst getVisible = (state) => {\n const { minLineY, maxLineY, items, itemHeight } = state\n const setSize = items.length\n const visible = []\n for (let i = minLineY; i < maxLineY; i++) {\n const item = items[i]\n visible.push({ ...item, setSize, posInSet: i + 1, top: i * itemHeight })\n }\n return visible\n}\n\nconst getSize = (width) => {\n return width < 180 ? ViewletSize.Small : ViewletSize.Normal\n}\n\n// TODO debounce\nexport const handleInput = async (state, value) => {\n try {\n const { allExtensions, itemHeight, minimumSliderSize, height } = state\n // TODO cancel ongoing requests\n // TODO handle errors\n const items = await SearchExtensions.searchExtensions(allExtensions, value)\n const listHeight = getListHeight(state)\n const total = items.length\n const contentHeight = total * itemHeight\n const scrollBarHeight = ScrollBarFunctions.getScrollBarHeight(\n height,\n contentHeight,\n minimumSliderSize\n )\n const numberOfVisible = Math.ceil(listHeight / itemHeight)\n const maxLineY = Math.min(numberOfVisible, total)\n const finalDeltaY = Math.max(contentHeight - listHeight, 0)\n return {\n ...state,\n items,\n minLineY: 0,\n deltaY: 0,\n allExtensions,\n maxLineY,\n scrollBarHeight,\n finalDeltaY,\n }\n\n // TODO handle out of order responses (a bit complicated)\n // for now just assume everything comes back in order\n } catch (error) {\n ErrorHandling.printError(error)\n return {\n ...state,\n error: `${error}`,\n }\n }\n}\n\nexport const loadContent = async (state) => {\n const { width, searchValue } = state\n // TODO just get local extensions on demand (not when query string is already different)\n const allExtensions = await ExtensionManagement.getAllExtensions()\n const size = getSize(width)\n return handleInput({ ...state, allExtensions, size }, searchValue)\n // TODO get installed extensions from extension host\n // TODO just get local extensions on demand (not when query string is already different)\n}\n\nexport const dispose = () => {}\n\n// TODO lazyload this\n\n// TODO show error / warning when installment fails / times out\nexport const handleInstall = async (state, id) => {\n await RendererProcess.invoke(\n /* viewletSend */ 'Viewlet.send',\n /* id */ ViewletModuleId.Extensions,\n /* method */ 'setExtensionState',\n /* id */ id,\n /* state */ 'installing'\n )\n try {\n await ExtensionManagement.install(/* id */ id)\n } catch (error) {\n // TODO have multi send command\n await RendererProcess.invoke(\n /* viewletSend */ 'Viewlet.send',\n /* id */ ViewletModuleId.Extensions,\n /* method */ 'setExtensionState',\n /* id */ id,\n /* state */ 'uninstalled'\n )\n // TODO use command.execute\n ErrorHandling.handleError(error)\n return\n }\n await RendererProcess.invoke(\n /* viewletSend */ 'Viewlet.send',\n /* id */ ViewletModuleId.Extensions,\n /* method */ 'setExtensionState',\n /* id */ id,\n /* state */ 'installed'\n )\n}\n\n// TODO lazyload this\nexport const handleUninstall = async (state, id) => {\n await RendererProcess.invoke(\n /* viewletSend */ 'Viewlet.send',\n /* id */ ViewletModuleId.Extensions,\n /* method */ 'setExtensionState',\n /* id */ id,\n /* state */ 'uninstalling'\n )\n try {\n await ExtensionManagement.uninstall(id)\n } catch (error) {\n await RendererProcess.invoke(\n /* viewletSend */ 'Viewlet.send',\n /* id */ ViewletModuleId.Extensions,\n /* method */ 'setExtensionState',\n /* id */ id,\n /* state */ 'installed'\n )\n ErrorHandling.handleError(error)\n return\n }\n await RendererProcess.invoke(\n /* viewletSend */ 'Viewlet.send',\n /* id */ ViewletModuleId.Extensions,\n /* method */ 'setExtensionState',\n /* id */ id,\n /* state */ 'uninstalled'\n )\n}\n\n// TODO lazyload this\nexport const handleEnable = async (state, id) => {\n try {\n await ExtensionManagement.enable(id)\n } catch (error) {\n await RendererProcess.invoke(\n /* viewletSend */ 'Viewlet.send',\n /* id */ ViewletModuleId.Extensions,\n /* method */ 'setExtensionState',\n /* id */ id,\n /* state */ 'disabled'\n )\n ErrorHandling.handleError(error)\n return\n }\n await RendererProcess.invoke(\n /* viewletSend */ 'Viewlet.send',\n /* id */ ViewletModuleId.Extensions,\n /* method */ 'setExtensionState',\n /* id */ id,\n /* state */ 'enabled'\n )\n}\n\n// TODO lazyload this\nexport const handleDisable = async (state, id) => {\n try {\n await ExtensionManagement.disable(id)\n } catch (error) {\n console.error(error)\n ErrorHandling.handleError(error)\n return\n }\n await RendererProcess.invoke(\n /* viewletSend */ 'Viewlet.send',\n /* id */ ViewletModuleId.Extensions,\n /* method */ 'setExtensionState',\n /* id */ id,\n /* state */ 'disabled'\n )\n}\n\nconst handleContextMenuMouse = (state, x, y) => {}\n\nconst handleContextMenuIndex = (state, index) => {}\n\n// TODO pass index instead\nexport const handleContextMenu = async (state, x, y, index) => {\n await Command.execute(\n /* ContextMenu.show */ 'ContextMenu.show',\n /* x */ x,\n /* y */ y,\n /* id */ MenuEntryId.ManageExtension\n )\n return state\n}\n\nexport const openSuggest = async (state) => {\n const filteredSuggestions = SUGGESTIONS\n state.suggestionState = /* Open */ 1\n await RendererProcess.invoke(\n /* viewletSend */ 'Viewlet.send',\n /* id */ ViewletModuleId.Extensions,\n /* method */ 'openSuggest',\n /* suggestions */ filteredSuggestions\n )\n}\n\nexport const closeSuggest = async (state) => {\n state.suggestionState = /* Closed */ 0\n await RendererProcess.invoke(\n /* viewletSend */ 'Viewlet.send',\n /* id */ ViewletModuleId.Extensions,\n /* method */ 'closeSuggest'\n )\n}\n\nexport const toggleSuggest = async (state) => {\n switch (state.suggestionState) {\n case /* Closed */ 0:\n await openSuggest(state)\n break\n case /* Open */ 1:\n await closeSuggest(state)\n break\n default:\n break\n }\n}\n\nexport const handleBlur = (state) => {\n return {\n ...state,\n focused: false,\n }\n}\n\nexport const hasFunctionalResize = true\n\nexport const resize = (state, dimensions) => {\n const { itemHeight, minLineY } = state\n // TODO should just return new state, render function can take old state and new state and return render commands\n const listHeight = getListHeight({ ...state, ...dimensions })\n const maxLineY = minLineY + Math.ceil(listHeight / itemHeight)\n const size = getSize(dimensions.width)\n return {\n ...state,\n ...dimensions,\n maxLineY,\n size,\n }\n}\n\nexport const hasFunctionalRender = true\n\nconst renderExtensions = {\n isEqual(oldState, newState) {\n return (\n oldState.items === newState.items &&\n oldState.minLineY === newState.minLineY &&\n oldState.maxLineY === newState.maxLineY\n )\n },\n apply(oldState, newState) {\n // TODO render extensions incrementally when scrolling\n const visibleExtensions = getVisible(newState)\n return [\n /* method */ 'setExtensions',\n /* visibleExtensions */ visibleExtensions,\n ]\n },\n}\n\nconst renderHeight = {\n isEqual(oldState, newState) {\n return oldState.items.length === newState.items.length\n },\n apply(oldState, newState) {\n const { itemHeight } = newState\n const contentHeight = newState.items.length * itemHeight\n return [/* method */ 'setContentHeight', /* contentHeight */ contentHeight]\n },\n}\n\nconst renderNegativeMargin = {\n isEqual(oldState, newState) {\n return oldState.deltaY === newState.deltaY\n },\n apply(oldState, newState) {\n return [\n /* method */ 'setNegativeMargin',\n /* negativeMargin */ -newState.deltaY,\n ]\n },\n}\n\nconst renderFocusedIndex = {\n isEqual(oldState, newState) {\n return (\n oldState.focusedIndex === newState.focusedIndex &&\n oldState.minLineY === newState.minLineY\n )\n },\n apply(oldState, newState) {\n const oldFocusedIndex = oldState.focusedIndex - oldState.minLineY\n const newFocusedIndex = newState.focusedIndex - newState.minLineY\n return [\n /* method */ 'setFocusedIndex',\n /* oldFocusedIndex */ oldFocusedIndex,\n /* newFocusedIndex */ newFocusedIndex,\n /* focused */ newState.focused,\n ]\n },\n}\n\nconst renderScrollBar = {\n isEqual(oldState, newState) {\n return (\n oldState.negativeMargin === newState.negativeMargin &&\n oldState.deltaY === newState.deltaY &&\n oldState.height === newState.height &&\n oldState.finalDeltaY === newState.finalDeltaY\n )\n },\n apply(oldState, newState) {\n const scrollBarY = ScrollBarFunctions.getScrollBarY(\n newState.deltaY,\n newState.finalDeltaY,\n newState.height - newState.headerHeight,\n newState.scrollBarHeight\n )\n return [\n /* method */ 'setScrollBar',\n /* scrollBarY */ scrollBarY,\n /* scrollBarHeight */ newState.scrollBarHeight,\n ]\n },\n}\n\nconst renderError = {\n isEqual(oldState, newState) {\n return oldState.error === newState.error\n },\n apply(oldState, newState) {\n return [/* method */ 'setError', /* error */ newState.error]\n },\n}\n\nconst renderSize = {\n isEqual(oldState, newState) {\n return oldState.size === newState.size\n },\n apply(oldState, newState) {\n return [\n /* method */ 'setSize',\n /* oldSize */ oldState.size,\n /* newSize */ newState.size,\n ]\n },\n}\n\nexport const render = [\n renderHeight,\n renderFocusedIndex,\n renderScrollBar,\n renderNegativeMargin,\n renderExtensions,\n renderError,\n renderSize,\n]\n", "import { focusIndex } from '../VirtualList/VirtualListFocusIndex.js'\nimport * as Command from '../Command/Command.js'\n\nexport const handleClick = async (state, index) => {\n const { items, minLineY } = state\n const actualIndex = index + minLineY\n const extension = items[actualIndex]\n const uri = `extension-detail://${extension.id}`\n await Command.execute('Main.openUri', uri)\n return focusIndex(state, actualIndex)\n}\n", "import { handleClick } from './ViewletExtensionsHandleClick.js'\n\nexport const handleClickCurrent = (state) => {\n const { focusedIndex } = state\n return handleClick(state, focusedIndex)\n}\n", "import { handleClick } from './ViewletExtensionsHandleClick.js'\n\nexport const handleClickCurrentButKeepFocus = (state) => {\n const { focusedIndex } = state\n return handleClick(state, focusedIndex)\n}\n", "import * as ViewletExtensions from './ViewletExtensions.js'\nimport * as VirtualList from '../VirtualList/VirtualList.ipc.js'\n\nexport const name = 'Extensions'\n\n// prettier-ignore\nexport const Commands = {\n closeSuggest: ViewletExtensions.closeSuggest,\n handleContextMenu: ViewletExtensions.handleContextMenu,\n handleInput: ViewletExtensions.handleInput,\n handleInstall: ViewletExtensions.handleInstall,\n handleUninstall: ViewletExtensions.handleUninstall,\n openSuggest: ViewletExtensions.openSuggest,\n toggleSuggest: ViewletExtensions.toggleSuggest,\n}\n\n// prettier-ignore\nexport const LazyCommands = {\n handleClick: () => import('./ViewletExtensionsHandleClick.js'),\n handleClickCurrent: () => import('./ViewletExtensionsHandleClickCurrent.js'),\n handleClickCurrentButKeepFocus: () => import('./ViewletExtensionsHandleClickCurrentButKeepFocus.js'),\n ...VirtualList.LazyCommands\n}\n\nexport const Css = [\n '/css/parts/ViewletExtensions.css',\n '/css/parts/ViewletList.css',\n '/css/parts/InputBox.css',\n]\n\nexport * from './ViewletExtensions.js'\n", "import * as SharedProcess from '../SharedProcess/SharedProcess.js'\nimport * as Workspace from '../Workspace/Workspace.js'\nimport * as Assert from '../Assert/Assert.js'\nimport * as Command from '../Command/Command.js'\n\nexport const STATUS_OFF = 0\nexport const STATUS_LOADING = 1\nexport const STATUS_RUNNING = 2\nexport const STATUS_ERROR = 3\n\nexport const state = {\n status: STATUS_OFF, // TODO should be an enum state\n /**\n * @type {any[]}\n */\n readyCallbacks: [],\n seenEvents: [],\n extensionPromiseCache: Object.create(null),\n /**\n * @type {Promise<void>|undefined}\n */\n extensionHostPromise: undefined,\n\n /**\n * @type {any}\n */\n extensionHostWorker: undefined,\n /**\n * @type {any[]}\n */\n webExtensions: [],\n}\n\nexport const startNodeExtensionHost = async () => {\n switch (state.status) {\n case STATUS_LOADING:\n case STATUS_RUNNING:\n throw new Error('extension host is already starting')\n }\n state.status = STATUS_LOADING\n await SharedProcess.invoke(/* ExtensionHost.start */ 'ExtensionHost.start')\n state.status = STATUS_RUNNING\n for (const readyCallback of state.readyCallbacks) {\n readyCallback()\n }\n state.readyCallbacks = []\n // TODO handle error\n await SharedProcess.invoke(\n /* ExtensionHost.setWorkspaceRoot */ 'ExtensionHost.setWorkspaceRoot',\n /* root */ Workspace.getWorkspacePath()\n )\n}\n\nexport const startWebExtensionHost = async () => {\n const worker = new Worker(\n '/packages/extension-host-worker/src/extensionHostWorkerMain.js',\n {\n type: 'module',\n name: 'Extension Host',\n }\n )\n state.extensionHostWorker = worker\n}\n\nconst getWebExtensionManifest = async (path) => {\n const manifestPath = `${path}/extension.json`\n const manifest = await Command.execute(\n /* Ajax.getJson */ 'Ajax.getJson',\n /* url */ manifestPath\n )\n return {\n ...manifest,\n path,\n }\n}\n\nexport const loadWebExtension = async (path) => {\n Assert.object(state.extensionHostWorker)\n const manifest = await getWebExtensionManifest(path)\n state.webExtensions.push(manifest)\n // TODO use invoke\n // await new Promise((resolve) => {\n // setTimeout(resolve, 120)\n // })\n // state.extensionHostWorker.postMessage({\n // jsonrpc: '2.0',\n // method: 'Extension.activate',\n // params: [name],\n // })\n}\n\nexport const invoke = async (ipc, method, ...params) => {\n // for (const extensionHost of state.extensionHosts) {\n // }\n // console.log({ args })\n // return SharedProcess.invoke(...args)\n // TODO use JSON rpc here or ipc.invoke\n throw new Error('not implemented')\n}\n", "import * as Platform from '../Platform/Platform.js'\nimport * as ExtensionHost from '../ExtensionHost/ExtensionHostCore.js'\nimport * as PlatformType from '../PlatformType/PlatformType.js'\n\nexport const getOutputChannels = () => {\n if (Platform.platform === PlatformType.Web) {\n return []\n }\n return ExtensionHost.invoke(\n /* ExtensionHostOutput.getOutputChannels */ 'ExtensionHostOutput.getOutputChannels'\n )\n}\n", "import * as RendererProcess from '../RendererProcess/RendererProcess.js'\nimport * as SharedProcess from '../SharedProcess/SharedProcess.js'\nimport * as ExtensionHostOutputChannel from '../ExtensionHost/ExtensionHostOutput.js'\nimport * as ViewletModuleId from '../ViewletModuleId/ViewletModuleId.js'\n\nexport const create = () => {\n return {\n selectedIndex: -1,\n // TODO get list of outputChannels from extension host\n options: [],\n disposed: false,\n }\n}\n\nconst toExtensionHostOption = (outputChannel) => {\n return {\n name: outputChannel.id,\n file: outputChannel.path,\n }\n}\n\nexport const loadContent = async (state) => {\n // TODO get list of outputChannels from extension host\n\n const channels = await ExtensionHostOutputChannel.getOutputChannels()\n const options = [\n {\n name: 'Main',\n file: '/tmp/log-main.txt',\n },\n ...channels.map(toExtensionHostOption),\n ]\n const selectedIndex = 0\n // TODO duplicate send here\n await SharedProcess.invoke(\n /* OutputChannel.open */ 'OutputChannel.open',\n /* id */ 0,\n /* path */ options[selectedIndex].file\n )\n return {\n ...state,\n options,\n selectedIndex,\n }\n}\n\nexport const contentLoaded = async (state) => {\n return [\n [\n /* Viewlet.invoke */ 'Viewlet.send',\n /* id */ 'Output',\n /* method */ 'setOptions',\n /* options */ state.options,\n /* selectedOptionIndex */ state.selectedIndex,\n ],\n ]\n}\n\nexport const setOutputChannel = async (state, option) => {\n state.selectedOption = option\n // TODO race condition\n await RendererProcess.invoke(\n /* viewletSend */ 'Viewlet.send',\n /* id */ 'Output',\n /* method */ 'clear'\n )\n // TODO race condition\n // TODO should use invoke\n await SharedProcess.invoke(\n /* OutputChannel.open */ 'OutputChannel.open',\n /* id */ 'Output',\n /* path */ state.selectedOption\n )\n}\n\nexport const handleData = async (state, data) => {\n console.log({ handleData: data })\n await RendererProcess.invoke(\n /* Viewlet.invoke */ 'Viewlet.send',\n /* id */ 'Output',\n /* method */ 'append',\n /* data */ data\n )\n}\n\nexport const dispose = async (state) => {\n state.disposed = true\n // TODO close output channel in shared process\n await SharedProcess.invoke(\n /* OutputChannel.close */ 'OutputChannel.close',\n /* id */ 'Output'\n )\n}\n\nexport const openFindWidget = async (state) => {\n // TODO use command.execute instead\n // TODO no lazy import here\n}\n\nexport const closeFindWidget = async (state) => {}\n\nexport const handleError = (state, error) => {\n console.error(error)\n}\n\nexport const render = []\n", "export const name = 'Output'\n\nexport const Commands = {}\n\nexport const Css = '/css/parts/ViewletOutput.css'\n\nexport * from './ViewletOutput.js'\n", "export const OnRename = 'onRename'\n\nexport const OnCompletion = 'onCompletion'\n\nexport const OnBraceCompletion = 'onBraceCompletion'\n\nexport const OnDefinition = 'onDefinition'\n\nexport const OnFormatting = 'onFormatting'\n\nexport const OnDiagnostic = 'onDiagnostic'\n\nexport const OnFileSystem = 'onFileSystem'\n\nexport const OnHover = 'onHover'\n\nexport const OnReferences = 'onReferences'\n\nexport const OnSemanticTokens = 'onSemanticTokens'\n\nexport const OnSourceControl = 'onSourceControl'\n\nexport const OnStatusBarItem = 'onStatusBarItem'\n\nexport const OnTabCompletion = 'onTabCompletion'\n\nexport const OnTextSearch = 'onTextSearch'\n\nexport const OnTypeDefinition = 'onTypeDefinition'\n\nexport const OnImplementation = 'onImplementation'\n\nexport const OnClosingTag = 'onClosingTag'\n", "import * as ExtensionHostShared from './ExtensionHostShared.js'\n\n/**\n *\n * @param {any} param0\n * @returns\n */\nexport const execute = ({\n editor,\n args,\n event,\n method,\n combineResults,\n noProviderFoundMessage,\n noProviderFoundResult = undefined,\n}) => {\n return ExtensionHostShared.executeProviders({\n event: `${event}:${editor.languageId}`,\n method: method,\n params: [editor.id, ...args],\n noProviderFoundMessage,\n combineResults: combineResults,\n noProviderFoundResult,\n })\n}\n", "import * as ExtensionHostActivationEvent from '../ExtensionHostActivationEvent/ExtensionHostActivationEvent.js'\nimport * as ExtensionHostEditor from './ExtensionHostEditor.js'\n\nconst combineResults = (results) => {\n return results[0]\n}\n\nexport const executeDiagnosticProvider = (editor) => {\n return ExtensionHostEditor.execute({\n editor,\n event: ExtensionHostActivationEvent.OnDiagnostic,\n method: 'ExtensionHost.executeDiagnosticProvider',\n args: [],\n noProviderFoundMessage: 'no diagnostic provider found',\n noProviderResult: [],\n combineResults,\n })\n}\n", "import * as ViewletModuleId from '../ViewletModuleId/ViewletModuleId.js'\nimport * as ExtensionHostDiagnostic from '../ExtensionHost/ExtensionHostDiagnostic.js'\nimport * as ViewletStates from '../ViewletStates/ViewletStates.js'\n\nexport const getDiagnostics = async () => {\n const instance = ViewletStates.getInstance(ViewletModuleId.EditorText)\n if (!instance) {\n return []\n }\n const editor = instance.state\n const diagnostics = await ExtensionHostDiagnostic.executeDiagnosticProvider(\n editor\n )\n if (!diagnostics) {\n return []\n }\n return diagnostics\n}\n", "import * as Diagnostics from '../Diagnostics/Diagnostics.js'\nimport * as I18NString from '../I18NString/I18NString.js'\nimport * as ViewletModuleId from '../ViewletModuleId/ViewletModuleId.js'\n\n/**\n * @enum {string}\n */\nconst UiStrings = {\n NoProblemsDetected: 'No problems have been detected in the workspace.',\n ProblemsDetected: 'Some problems have been detected in the workspace.',\n}\n\nexport const create = () => {\n return {\n problems: [],\n disposed: false,\n focusedIndex: -2,\n message: '',\n }\n}\n\nconst toProblem = (diagnostic) => {\n const { message } = diagnostic\n return message\n}\n\nconst getMessage = (problems) => {\n if (problems.length === 0) {\n return I18NString.i18nString(UiStrings.NoProblemsDetected)\n }\n return I18NString.i18nString(UiStrings.ProblemsDetected)\n}\n\nexport const loadContent = async (state) => {\n const diagnostics = await Diagnostics.getDiagnostics()\n const problems = diagnostics.map(toProblem)\n const message = getMessage(problems)\n return {\n ...state,\n problems,\n message,\n }\n}\n\nexport const focusIndex = (state, index) => {\n return {\n ...state,\n focusedIndex: index,\n }\n}\n\nexport const dispose = (state) => {\n return {\n ...state,\n disposed: true,\n }\n}\n\nexport const hasFunctionalRender = true\n\nconst renderProblems = {\n isEqual(oldState, newState) {\n return oldState.problems === newState.problems\n },\n apply(oldState, newState) {\n return [/* method */ 'setProblems', /* problems */ newState.problems]\n },\n}\n\nconst renderFocusedIndex = {\n isEqual(oldState, newState) {\n return oldState.focusedIndex === newState.focusedIndex\n },\n apply(oldState, newState) {\n return [\n /* method */ 'setFocusedIndex',\n /* focusedIndex */ newState.focusedIndex,\n ]\n },\n}\n\nconst renderMessage = {\n isEqual(oldState, newState) {\n return oldState.message === newState.message\n },\n apply(oldState, newState) {\n return [/* method */ 'setMessage', /* focusedIndex */ newState.message]\n },\n}\n\nexport const render = [renderProblems, renderFocusedIndex, renderMessage]\n", "import * as ViewletProblems from './ViewletProblems.js'\n\nexport const name = 'Problems'\n\n// prettier-ignore\nexport const Commands = {\n focusIndex: ViewletProblems.focusIndex,\n}\n\nexport const Css = '/css/parts/ViewletProblems.css'\n\nexport * from './ViewletProblems.js'\n", "export const create = (id) => {\n return {\n disposed: false,\n }\n}\n\nexport const loadContent = async (state) => {\n console.log('noop')\n return state\n}\n\nexport const dispose = (state) => {\n return {\n ...state,\n disposed: true,\n }\n}\n", "export const Commands = {}\n\nexport * from './ViewletNoop.js'\n", "/**\n * @enum number\n */\nexport const State = {\n TopLevelContent: 1,\n}\n\n/**\n * @enum number\n */\nexport const TokenType = {\n Text: 1,\n}\n\nexport const TokenMap = {\n [TokenType.Text]: 'Text',\n}\n\nexport const initialLineState = {\n state: State.TopLevelContent,\n}\n\nexport const tokenizeLine = (line, lineState) => {\n return {\n tokens: [\n {\n length: line.length,\n type: TokenType.Text,\n },\n ],\n state: lineState.state,\n }\n}\n", "import * as Languages from '../Languages/Languages.js'\nimport * as GlobalEventBus from '../GlobalEventBus/GlobalEventBus.js'\nimport * as TokenizePlainText from './TokenizePlainText.js'\n\nexport const state = {\n tokenizers: Object.create(null),\n tokenizePaths: Object.create(null),\n listeners: [],\n pending: Object.create(null),\n}\n\nconst getTokenizePath = (languageId) => {\n const tokenizePath = Languages.getTokenizeFunctionPath(languageId)\n return tokenizePath\n}\n\n// TODO loadTokenizer should be invoked from renderer worker\nexport const loadTokenizer = async (languageId) => {\n if (languageId in state.tokenizers) {\n return\n }\n const tokenizePath = getTokenizePath(languageId)\n if (!tokenizePath) {\n return\n }\n try {\n // TODO check that tokenizer is valid\n // 1. tokenizeLine should be of type function\n // 2. getTokenClass should be of type function\n const tokenizer = await import(tokenizePath)\n if (typeof tokenizer.tokenizeLine !== 'function') {\n console.warn(\n `tokenizer.tokenizeLine should be a function in \"${tokenizePath}\"`\n )\n return\n }\n if (\n !tokenizer.TokenMap ||\n typeof tokenizer.TokenMap !== 'object' ||\n Array.isArray(tokenizer.TokenMap)\n ) {\n console.warn(\n `tokenizer.TokenMap should be an object in \"${tokenizePath}\"`\n )\n return\n }\n state.tokenizers[languageId] = tokenizer\n } catch (error) {\n state.tokenizers[languageId] = TokenizePlainText\n // TODO better error handling\n console.error(error)\n return\n }\n GlobalEventBus.emitEvent('tokenizer.changed', languageId)\n}\n\nexport const getTokenizer = (languageId) => {\n if (languageId in state.tokenizers) {\n return state.tokenizers[languageId]\n }\n if (languageId in state.pending) {\n return TokenizePlainText\n }\n return TokenizePlainText\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as GlobalEventBus from '../GlobalEventBus/GlobalEventBus.js'\nimport * as Platform from '../Platform/Platform.js'\n\nexport const applyEdits = (editor, cursor) => {\n // TODO multiple cursors\n console.assert(cursor)\n editor.cursor = cursor\n GlobalEventBus.emitEvent('editor.cursorChange', editor, cursor)\n}\n\nconst isInRange = (rowIndex, min, max) => {\n return rowIndex >= min && rowIndex <= max\n}\n\nconst getTokenIndex = (lineCache, endColumnIndex) => {\n if (!lineCache) {\n // throw new Error('no line cache found')\n return {\n index: -1,\n offset: -1,\n }\n }\n Assert.number(endColumnIndex)\n let offset = 0\n for (let i = 0; i < lineCache.tokens.length; i += 2) {\n const tokenLength = lineCache.tokens[i + 1]\n const newOffset = offset + tokenLength\n if (newOffset >= endColumnIndex) {\n return {\n index: i / 2,\n offset: endColumnIndex - offset,\n }\n }\n offset = newOffset\n }\n console.warn(`token at columnIndex ${endColumnIndex} not found`)\n return {\n index: -1,\n offset: -1,\n }\n}\n\nexport const getVisible = (editor) => {\n if (!editor.focused) {\n return []\n }\n if (Platform.isMobileOrTablet()) {\n const visibleCursors = []\n for (const selection of editor.selections) {\n if (isInRange(selection.end, editor.minLineY, editor.maxLineY)) {\n visibleCursors.push({\n rowIndex: selection.end.rowIndex - editor.minLineY,\n columnIndex: selection.end.columnIndex,\n })\n } else {\n }\n }\n return visibleCursors\n }\n // TODO could use uint16array here\n // TODO handle case when text segmenter not supported\n const visibleCursors = []\n const { selections, minLineY, maxLineY, rowHeight } = editor\n const selectionLength = selections.length\n for (let i = 0; i < selectionLength; i += 4) {\n const selectionStartRow = selections[i]\n const selectionStartColumn = selections[i + 1]\n const selectionEndRow = selections[i + 2]\n const selectionEndColumn = selections[i + 3]\n if (isInRange(selectionEndRow, minLineY, maxLineY)) {\n const lineCache = editor.lineCache[selectionEndRow + 1]\n if (!lineCache) {\n // console.log('line caches', editor, editor.lineCache)\n }\n const tokenIndex = getTokenIndex(lineCache, selectionEndColumn)\n // TODO maybe don't allocate object here, push numbers to flat array instead\n visibleCursors.push({\n top: (selectionEndRow - minLineY) * rowHeight,\n topIndex: selectionEndRow - minLineY,\n leftIndex: tokenIndex.index,\n remainingOffset: tokenIndex.offset,\n })\n }\n }\n return visibleCursors\n}\n", "import * as Clamp from '../Clamp/Clamp.js'\nimport * as ScrollingFunctions from '../ScrollBarFunctions/ScrollBarFunctions.js'\n\n// TODO this should be in a separate scrolling module\nexport const setDeltaY = (state, value) => {\n const {\n finalDeltaY,\n deltaY,\n numberOfVisibleLines,\n height,\n scrollBarHeight,\n itemHeight,\n } = state\n const newDeltaY = Clamp.clamp(value, 0, finalDeltaY)\n if (deltaY === newDeltaY) {\n return state\n }\n const newMinLineY = Math.floor(newDeltaY / itemHeight)\n const newMaxLineY = newMinLineY + numberOfVisibleLines\n const scrollBarY = ScrollingFunctions.getScrollBarY(\n newDeltaY,\n finalDeltaY,\n height,\n scrollBarHeight\n )\n return {\n ...state,\n minLineY: newMinLineY,\n maxLineY: newMaxLineY,\n deltaY: newDeltaY,\n scrollBarY,\n }\n}\n", "export const fromRange = (\n startRowIndex,\n startColumnIndex,\n endRowIndex,\n endColumnIndex\n) => {\n return new Uint32Array([\n startRowIndex,\n startColumnIndex,\n endRowIndex,\n endColumnIndex,\n ])\n}\n\nexport const fromRanges = (...items) => {\n return new Uint32Array(items.flat(1))\n}\n\nexport const fromPosition = (rowIndex, columnIndex) => {\n return fromRange(rowIndex, columnIndex, rowIndex, columnIndex)\n}\n\nexport const alloc = (length) => {\n return new Uint32Array(length)\n}\n\nexport const clone = (selections) => {\n return alloc(selections.length)\n}\n\nexport const map = (selections, fn) => {\n const newSelections = clone(selections)\n for (let i = 0; i < newSelections.length; i += 4) {\n const selectionStartRow = selections[i]\n const selectionStartColumn = selections[i + 1]\n const selectionEndRow = selections[i + 2]\n const selectionEndColumn = selections[i + 3]\n fn(\n newSelections,\n i,\n selectionStartRow,\n selectionStartColumn,\n selectionEndRow,\n selectionEndColumn\n )\n }\n return newSelections\n}\n\nexport const forEach = (selections, fn) => {\n for (let i = 0; i < selections.length; i += 4) {\n const selectionStartRow = selections[i]\n const selectionStartColumn = selections[i + 1]\n const selectionEndRow = selections[i + 2]\n const selectionEndColumn = selections[i + 3]\n fn(\n selectionStartRow,\n selectionStartColumn,\n selectionEndRow,\n selectionEndColumn\n )\n }\n}\n\nexport const moveRangeToPosition = (selections, i, rowIndex, columnIndex) => {\n selections[i] = selections[i + 2] = rowIndex\n selections[i + 1] = selections[i + 3] = columnIndex\n}\n\nexport const isEmpty = (\n selectionStartRow,\n selectionStartColumn,\n selectionEndRow,\n selectionEndColumn\n) => {\n return (\n selectionStartRow === selectionEndRow &&\n selectionStartColumn === selectionEndColumn\n )\n}\n\nconst isSelectionSingleLine = (\n selectionStartRow,\n selectionStartColumn,\n selectionEndRow,\n selectionEndColumn\n) => {\n return selectionStartRow === selectionEndRow\n}\n\nexport const isEverySelection = (selections, fn) => {\n for (let i = 0; i < selections.length; i += 4) {\n const selectionStartRow = selections[i]\n const selectionStartColumn = selections[i + 1]\n const selectionEndRow = selections[i + 2]\n const selectionEndColumn = selections[i + 3]\n if (\n !fn(\n selectionStartRow,\n selectionStartColumn,\n selectionEndRow,\n selectionEndColumn\n )\n ) {\n return false\n }\n }\n return true\n}\n\nexport const isEverySelectionEmpty = (selections) => {\n return isEverySelection(selections, isEmpty)\n}\n\nexport const isEverySelectionSingleLine = (selections) => {\n return isEverySelection(selections, isSelectionSingleLine)\n}\n\nexport const from = (array, getSelection) => {\n const newSelections = alloc(array.length * 4)\n let i = 0\n for (const item of array) {\n const { start, end } = getSelection(item)\n newSelections[i++] = start.rowIndex\n newSelections[i++] = start.columnIndex\n newSelections[i++] = end.rowIndex\n newSelections[i++] = end.columnIndex\n }\n return newSelections\n}\n\nexport const push = (\n selections,\n startRowIndex,\n startColumnIndex,\n endRowIndex,\n endColumnIndex\n) => {\n const oldLength = selections.length\n const newSelections = alloc(oldLength + 4)\n newSelections.set(selections)\n newSelections[oldLength + 1] = startRowIndex\n newSelections[oldLength + 2] = startColumnIndex\n newSelections[oldLength + 3] = endRowIndex\n newSelections[oldLength + 4] = endColumnIndex\n return newSelections\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as EditorSelection from '../EditorSelection/EditorSelection.js'\n\nconst getSelectionFromChange = (change) => {\n const { start, inserted, end } = change\n const startRowIndex = start.rowIndex\n const startColumnIndex = start.columnIndex\n const insertedLength = inserted.length\n if (insertedLength === 1) {\n const newPosition = {\n rowIndex: startRowIndex + insertedLength - 1,\n columnIndex: inserted.at(-1).length + startColumnIndex,\n }\n return {\n start: newPosition,\n end: newPosition,\n }\n }\n const newPosition = {\n rowIndex: startRowIndex + insertedLength - 1,\n columnIndex: inserted.at(-1).length,\n }\n return {\n start: newPosition,\n end: newPosition,\n }\n}\n\nexport const setSelections = (editor, selections) => {\n Assert.object(editor)\n Assert.uint32array(selections)\n return {\n ...editor,\n selections,\n }\n // editor.selections = selections\n // GlobalEventBus.emitEvent('editor.selectionChange', editor, selections)\n}\n\n// TODO maybe only accept sorted selection edits in the first place\n\n// TODO avoid allocating too many objects when creating new selection from changes\nexport const applyEdit = (editor, changes) => {\n Assert.object(editor)\n Assert.array(changes)\n const newSelections = EditorSelection.from(changes, getSelectionFromChange)\n // setSelections(editor, newSelections)\n return newSelections\n}\n\n// TODO visible selections could also be uint16array\n// [top1, left1, width1, height1, top2, left2, width2, height2...]\n\nexport const getVisible = (editor) => {\n const visibleSelections = []\n // // TODO binary search\n\n // // after\n const selections = editor.selections\n const minLineY = editor.minLineY\n const maxLineY = editor.maxLineY\n const rowHeight = editor.rowHeight\n const columnWidth = editor.columnWidth\n const lines = editor.lines\n for (let i = 0; i < selections.length; i += 4) {\n const selectionStartRow = selections[i]\n const selectionStartColumn = selections[i + 1]\n const selectionEndRow = selections[i + 2]\n const selectionEndColumn = selections[i + 3]\n\n if (selectionEndRow < minLineY) {\n continue\n }\n if (selectionStartRow > maxLineY) {\n break\n }\n if (\n EditorSelection.isEmpty(\n selectionStartRow,\n selectionStartColumn,\n selectionEndRow,\n selectionEndColumn\n )\n ) {\n continue\n }\n if (selectionStartRow === selectionEndRow) {\n visibleSelections.push(\n /* top */ (selectionStartRow - minLineY) * rowHeight,\n /* left */ selectionStartColumn * columnWidth,\n /* width */ (selectionEndColumn - selectionStartColumn) * columnWidth,\n /* height */ rowHeight\n )\n } else {\n if (selectionStartRow >= minLineY) {\n visibleSelections.push(\n /* top */ (selectionStartRow - minLineY) * rowHeight,\n /*left */ selectionStartColumn * columnWidth,\n /* width */ (lines[selectionStartRow].length - selectionStartColumn) *\n columnWidth,\n /* height */ rowHeight\n )\n }\n const iMin = Math.max(selectionStartRow + 1, minLineY)\n const iMax = Math.min(selectionEndRow, maxLineY)\n for (let i = iMin; i < iMax; i++) {\n visibleSelections.push(\n /* top */ (i - minLineY) * rowHeight,\n /* left */ 0,\n /* width */ lines[i].length * columnWidth,\n /* height */ rowHeight\n )\n }\n if (selectionEndRow <= maxLineY) {\n visibleSelections.push(\n /* top */ (selectionEndRow - minLineY) * rowHeight,\n /* left */ 0,\n /* width */ selectionEndColumn * columnWidth,\n /* height */ rowHeight\n )\n }\n }\n }\n return new Uint32Array(visibleSelections)\n}\n", "const flattenTokensArray = (tokens) => {\n const flattened = []\n for (const token of tokens) {\n flattened.push(token.type, token.length)\n }\n return flattened\n}\n/**\n *\n * @param {(line:string, lineState)=>any} tokenizeLine\n * @param {string} line\n * @param {any} lineStateAtStart\n * @param {boolean} hasArrayReturn\n * @returns\n */\nexport const safeTokenizeLine = (\n tokenizeLine,\n line,\n lineStateAtStart,\n hasArrayReturn\n) => {\n try {\n const lineState = tokenizeLine(line, lineStateAtStart)\n if (!lineState || !lineState.tokens || !lineState.state) {\n throw new Error('invalid tokenization result')\n }\n if (!hasArrayReturn) {\n // workaround for old tokenizers\n lineState.tokens = flattenTokensArray(lineState.tokens)\n }\n return lineState\n } catch (error) {\n console.error(error)\n return {\n tokens: [/* type */ 0, /* length */ line.length],\n lineState: lineStateAtStart,\n }\n }\n}\n", "import * as TextDocument from '../TextDocument/TextDocument.js'\nimport * as SafeTokenizeLine from '../SafeTokenizeLine/SafeTokenizeLine.js'\n\n// const getTokens = (editor) => {\n// const tokens = []\n// const lines = editor.lines\n// let lineState = editor.tokenizer.initialLineState\n// // TODO lineCache should probably only store endOfLineState\n// // because storing tokens could maybe result in high\n// // memory usage (e.g. 10000 lines * 10 tokens per line = 100 000 objects stored)\n// // on the other hand, scrolling should be really fast, and needlessly\n// // recomputing tokens would be a waste of cpu time and cause lots of garbage collection\n// const lineCache = editor.lineCache\n// // TODO only compute tokens in viewport\n// // console.log('minmax', editor.minLineY, editor.maxLineY)\n// // const cachedLineStates = Object.create(null)\n// // if(cachedLineStates[i])\n// const tokenizeLine = editor.tokenizer.tokenizeLine\n// for (let i = 0; i < lines.length; i++) {\n// if (lineCache[i]) {\n// // console.log('cached line')\n// tokens.push(lineCache[i].tokens)\n// continue\n// }\n// // TODO use TextDocument.getLine so that text document buffer implementation\n// // can be changed (e.g. vscode has piece tree, codemirror has something like chunked arrays / string[][])\n// const line = lines[i]\n// lineState = safeTokenizeLine(tokenizeLine, line, lineState)\n// const newTokens = lineState.tokens\n// lineCache[i] = lineState\n// tokens.push(newTokens)\n// }\n// return tokens\n// }\n\nconst getTokensFromCache = (result) => {\n return result.tokens\n}\n\n// TODO vscode has an interesting approach for tokenizing:\n// first, the viewport is tokenized from startLine to endLine\n// the first iteration might not be accurate because for example\n// there can be a open multiline comment at the start of the file\n// which is not taken into account for this first tokenization\n// but after some time (onIdle), the background tokenizer is invoked\n// that gives accurate results (but can take much longer since it\n// might need to parse from the start of the file)\n//\n// another approach would be to show plain text (non-highlighted)\n// when scrolling fast and the tokenizer is too slow to parse from\n// the start of the file\n//\n// the approach implemented below for tokenizing the viewport\n// is just to parse from the start of the file if necessary\n// that doesn't scale well for large files but it is simpler\n// to implement for now\n\n// TODO only send changed lines to renderer process instead of all lines in viewport\nconst getTokensViewport = (editor, startLineIndex, endLineIndex) => {\n const invalidStartIndex = editor.invalidStartIndex\n const lineCache = editor.lineCache\n const hasArrayReturn = editor.tokenizer.hasArrayReturn\n const tokenizeStartIndex = invalidStartIndex\n const tokenizeEndIndex =\n invalidStartIndex < endLineIndex ? endLineIndex : tokenizeStartIndex\n const tokenizeLine = editor.tokenizer.tokenizeLine\n for (let i = tokenizeStartIndex; i < tokenizeEndIndex; i++) {\n const lineState =\n i === 0 ? editor.tokenizer.initialLineState : editor.lineCache[i]\n const line = editor.lines[i]\n const result = SafeTokenizeLine.safeTokenizeLine(\n tokenizeLine,\n line,\n lineState,\n hasArrayReturn\n )\n\n // TODO if lineCacheEnd matches the one before, skip tokenizing lines after\n lineCache[i + 1] = result\n }\n editor.invalidStartIndex = Math.max(invalidStartIndex, tokenizeEndIndex)\n return lineCache\n .slice(startLineIndex + 1, endLineIndex + 1)\n .map(getTokensFromCache)\n}\n\nconst invalidateLine = (editor, index) => {\n editor.validLines[index] = false\n if (index < editor.invalidStartIndex) {\n editor.invalidStartIndex = index\n }\n}\n\nconst applyChangesToSyntaxHighlighting = (editor, changes) => {\n // TODO invalidate lines that are affected\n}\n\n// const getTokensIncremental = (editor, min, max) => {\n// const currentLength = editor.lineStateCache.length\n// const tokens = []\n// const lines = editor.lines\n// let lineState = editor.tokenizer.initialLineState\n// for (let i = currentLength; i < max; i++) {\n// const line = lines[i]\n// try {\n// lineState = editor.tokenizer.tokenizeLine(line, lineState)\n// if (!lineState || !lineState.tokens || !lineState.state) {\n// throw new Error('invalid tokenization result')\n// }\n// } catch (error) {\n// tokens.push([{ length: line.length, type: 0 }])\n// console.error(error)\n// // renderWithoutSyntaxHighlighting(state, firstRow, lastRow)\n// continue\n// }\n// const newTokens = lineState.tokens\n// tokens.push(newTokens)\n// }\n// return tokens\n// }\n\n// const getLineInfosIncremental = (editor, tokens, minLineY, maxLineY) => {\n// const result = []\n// const lines = editor.lines\n// const TokenMap = editor.tokenizer.TokenMap\n// for (let i = minLineY; i < maxLineY; i++) {\n// result.push(getLineInfo(lines[i], tokens[i], TokenMap))\n// }\n// return result\n// }\n\nconst getDecorationClassName = (type) => {\n switch (type) {\n case 2816:\n case 2817:\n case 2824:\n case 2825:\n case 2856:\n case 2857:\n case 3072:\n case 3073:\n case 3077:\n case 3088:\n return 'Function'\n case 1792:\n case 1793:\n return 'Parameter'\n case 512:\n case 513:\n case 769:\n case 1024:\n case 1536:\n case 1537:\n case 1544:\n case 1545:\n return 'Type'\n case 2048:\n case 2049:\n case 2056:\n case 2057:\n case 2064:\n case 2080:\n case 2081:\n case 2088:\n case 2089:\n case 2313:\n case 2560:\n case 2561:\n case 2569:\n case 2584:\n return 'VariableName'\n case 256:\n case 257:\n case 272:\n return 'Class'\n default:\n return `Unknown-${type}`\n }\n}\n\nconst getLineInfo = (line, tokens, decorations, TokenMap, lineOffset) => {\n let start = 0\n let end = 0\n const lineInfo = []\n let decorationIndex = 0\n for (; decorationIndex < decorations.length; decorationIndex += 3) {\n const decorationOffset = decorations[decorationIndex]\n if (decorationOffset >= lineOffset) {\n break\n }\n }\n\n // console.log({ tokens, decorations })\n for (let i = 0; i < tokens.length; i += 2) {\n const tokenType = tokens[i]\n const tokenLength = tokens[i + 1]\n const decorationOffset = decorations[decorationIndex]\n let extraClassName = ''\n if (\n decorationOffset !== undefined &&\n decorationOffset - lineOffset === start\n ) {\n const decorationLength = decorations[++decorationIndex]\n const decorationType = decorations[++decorationIndex]\n const decorationModifiers = decorations[++decorationIndex]\n // console.log('MATCHING DECORATION', {\n // decorationIndex,\n // decorationLength,\n // decorationType,\n // decorationModifiers,\n // })\n extraClassName = getDecorationClassName(decorationType)\n }\n\n end += tokenLength\n const text = line.slice(start, end)\n const className = `Token ${\n extraClassName || TokenMap[tokenType] || 'Unknown'\n }`\n lineInfo.push(text, className)\n start = end\n }\n return lineInfo\n}\n\n// TODO need lots of tests for this\nconst getLineInfosViewport = (\n editor,\n tokens,\n minLineY,\n maxLineY,\n minLineOffset\n) => {\n const result = []\n const { lines, tokenizer, decorations } = editor\n const { TokenMap } = tokenizer\n let offset = minLineOffset\n for (let i = minLineY; i < maxLineY; i++) {\n const line = lines[i]\n result.push(\n getLineInfo(line, tokens[i - minLineY], decorations, TokenMap, offset)\n )\n offset += line.length + 1\n }\n return result\n}\n\nexport const getVisible = (editor) => {\n // console.log({ editor })\n // TODO should separate rendering from business logic somehow\n // currently hard to test because need to mock editor height, top, left,\n // invalidStartIndex, lineCache, etc. just for testing editorType\n // editor.invalidStartIndex = changes[0].start.rowIndex\n const { minLineY, numberOfVisibleLines, lines } = editor\n const maxLineY = Math.min(minLineY + numberOfVisibleLines, lines.length)\n const tokens = getTokensViewport(editor, minLineY, maxLineY)\n const minLineOffset = TextDocument.offsetAt(editor, minLineY, 0)\n const textInfos = getLineInfosViewport(\n editor,\n tokens,\n minLineY,\n maxLineY,\n minLineOffset\n )\n return textInfos\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as GlobalEventBus from '../GlobalEventBus/GlobalEventBus.js'\nimport * as RendererProcess from '../RendererProcess/RendererProcess.js'\nimport * as ScrollBarFunctions from '../ScrollBarFunctions/ScrollBarFunctions.js'\nimport * as TextDocument from '../TextDocument/TextDocument.js'\nimport * as SplitLines from '../SplitLines/SplitLines.js'\nimport * as Tokenizer from '../Tokenizer/Tokenizer.js'\nimport * as EditorCursor from './EditorCursor.js'\nimport * as EditorScrolling from './EditorScrolling.js'\nimport * as EditorSelection from './EditorSelection.js'\nimport * as EditorText from './EditorText.js'\n\nconst MINIMUM_SLIDER_SIZE = 20\n\n// TODO\nexport const create = (id, uri, languageId, content) => {\n const tokenizer = Tokenizer.getTokenizer(languageId)\n\n // TODO flatten structure\n return {\n uri,\n languageId,\n lines: SplitLines.splitLines(content),\n // TODO cursor should be part of selection,\n // codemirror has selections: Selection[]\n // selectionIndex: number\n\n // TODO how to get the trigger characters here from extension host\n completionTriggerCharacters: [],\n primarySelectionIndex: 0,\n selections: new Uint32Array([0, 0, 0, 0]),\n id,\n tokenizer,\n deltaY: 0,\n minLineY: 0,\n maxLineY: 0,\n numberOfVisibleLines: 0,\n finalY: 0,\n finalDeltaY: 0,\n height: 0,\n top: 0,\n left: 0,\n columnWidth: 0,\n rowHeight: 0,\n fontSize: 0, // TODO find out if it is possible to use all numeric values for settings for efficiency, maybe settings could be an array\n letterSpacing: 0,\n scrollBarHeight: 0,\n undoStack: [],\n // TODO maybe put these into separate tokenization module\n lineCache: [],\n validLines: [],\n invalidStartIndex: 0,\n decorations: [],\n focused: false,\n /**\n * Offset at which scrollbar thumb has been clicked\n */\n handleOffset: 0,\n itemHeight: 20,\n }\n}\n\nexport const dispose = (id) => {\n // delete state.editors[id]\n}\n\nexport const renderText = (editor) => {\n Assert.object(editor)\n const textInfos = EditorText.getVisible(editor)\n RendererProcess.invoke(\n /* Viewlet.send */ 'Viewlet.send',\n /* id */ 'EditorText',\n /* method */ 'renderText',\n /* scrollBarY */ editor.scrollBarY,\n /* scrollBarHeight */ editor.scrollBarHeight,\n /* textInfos */ textInfos,\n /* fontSize */ editor.fontSize, // TODO only send these properties once on first render\n /* lineHeight */ editor.rowHeight,\n /* letterSpacing */ editor.letterSpacing\n )\n}\n\nexport const renderTextAndCursorAndSelectionsCommands = (editor) => {\n Assert.object(editor)\n const textInfos = EditorText.getVisible(editor)\n const cursorInfos = EditorCursor.getVisible(editor)\n const selectionInfos = EditorSelection.getVisible(editor)\n const scrollBarHeight = editor.scrollBarHeight\n const scrollBarY =\n (editor.deltaY / editor.finalDeltaY) *\n (editor.height - editor.scrollBarHeight)\n return [\n /* Viewlet.invoke */ 'Viewlet.send',\n /* id */ 'EditorText',\n /* method */ 'renderTextAndCursorsAndSelections',\n /* scrollBarY */ scrollBarY,\n /* scrollBarHeight */ scrollBarHeight,\n /* textInfos */ textInfos,\n /* cursorInfos */ cursorInfos,\n /* selectionInfos */ selectionInfos,\n ]\n}\n\nexport const renderTextAndCursorAndSelections = (editor) => {\n const commands = renderTextAndCursorAndSelectionsCommands(editor)\n RendererProcess.send(commands)\n}\n\nexport const setTokenizer = (editor, tokenizer) => {\n editor.tokenizer = Tokenizer.getTokenizer(editor.languageId)\n editor.invalidStartIndex = 0\n}\n\n// TODO\nexport const setDeltaYFixedValue = (editor, value) => {\n return EditorScrolling.setDeltaY(editor, value)\n // renderTextAndCursorAndSelections(editor)\n}\n\nexport const setDeltaY = (editor, value) => {\n return setDeltaYFixedValue(editor, editor.deltaY + value)\n}\n\nexport const scheduleSelections = (editor, selectionEdits) => {\n return EditorSelection.setSelections(editor, selectionEdits)\n // const cursorInfos = EditorCursor.getVisible(editor)\n // const selectionInfos = EditorSelection.getVisible(editor)\n // RendererProcess.send([\n // /* Viewlet.invoke */ 'Viewlet.send',\n // /* id */ 'EditorText',\n // /* method */ 'renderCursorsAndSelections',\n // /* cursorInfos */ cursorInfos,\n // /* selectionInfos */ selectionInfos,\n // ])\n}\n\nexport const scheduleSelectionsAndScrollPosition = (\n editor,\n selectionEdits,\n deltaY\n) => {\n const newEditor1 = EditorSelection.setSelections(editor, selectionEdits)\n const newEditor2 = EditorScrolling.setDeltaY(newEditor1, deltaY)\n return newEditor2\n // EditorScrolling.setDeltaY(editor, deltaY)\n // EditorSelection.setSelections(editor, selectionEdits)\n // const cursorInfos = EditorCursor.getVisible(editor)\n // const selectionInfos = EditorSelection.getVisible(editor)\n // const textInfos = EditorText.getVisible(editor)\n // // TODO scrollbar calculation duplicate code\n // const scrollBarY =\n // (editor.deltaY / editor.finalDeltaY) *\n // (editor.height - editor.scrollBarHeight)\n // const scrollBarHeight = editor.scrollBarHeight\n // RendererProcess.send([\n // /* Viewlet.invoke */ 'Viewlet.send',\n // /* id */ 'EditorText',\n // /* method */ 'renderTextAndCursorsAndSelections',\n // /* deltaY */ scrollBarY,\n // /* scrollBarHeight */ scrollBarHeight,\n // /* textInfos */ textInfos,\n // /* cursorInfos */ cursorInfos,\n // /* selectionInfos */ selectionInfos,\n // ])\n}\n\n/**\n *\n * @param {any} editor\n * @param {any[]} changes\n * @param {Uint32Array|undefined} selectionChanges\n * @returns\n */\nexport const scheduleDocumentAndCursorsSelections = (\n editor,\n changes,\n selectionChanges = undefined\n) => {\n Assert.object(editor)\n Assert.array(changes)\n if (changes.length === 0) {\n return editor\n }\n const newLines = TextDocument.applyEdits(editor, changes)\n const partialNewEditor = {\n ...editor,\n lines: newLines,\n }\n const newSelections =\n selectionChanges || EditorSelection.applyEdit(partialNewEditor, changes)\n // TODO should separate rendering from business logic somehow\n // currently hard to test because need to mock editor height, top, left,\n // invalidStartIndex, lineCache, etc. just for testing editorType\n const invalidStartIndex = Math.min(\n editor.invalidStartIndex,\n changes[0].start.rowIndex\n )\n\n // TODO maybe put undostack into indexeddb so that there is no memory leak in application\n // then clear old undostack from indexeddb after 3 days\n // TODO should push to undostack after rendering\n\n const newEditor = {\n ...partialNewEditor,\n lines: newLines,\n selections: newSelections,\n undoStack: [...editor.undoStack, changes],\n invalidStartIndex,\n }\n GlobalEventBus.emitEvent('editor.change', newEditor, changes)\n\n return newEditor\n}\n\nexport const scheduleDocumentAndCursorsSelectionIsUndo = (editor, changes) => {\n Assert.object(editor)\n Assert.array(changes)\n if (changes.length === 0) {\n return editor\n }\n const newLines = TextDocument.applyEdits(editor, changes)\n const partialNewEditor = {\n ...editor,\n lines: newLines,\n }\n const newSelections = EditorSelection.applyEdit(partialNewEditor, changes)\n const invalidStartIndex = Math.min(\n editor.invalidStartIndex,\n changes[0].start.rowIndex\n )\n const newEditor = {\n ...partialNewEditor,\n lines: newLines,\n selections: newSelections,\n // undoStack: [...editor.undoStack.slice(0, -2)],\n invalidStartIndex,\n }\n GlobalEventBus.emitEvent('editor.change', newEditor, changes)\n return newEditor\n}\n\nexport const scheduleDocument = async (editor, changes) => {\n // console.log('before')\n // console.log([...editor.lines])\n const newLines = TextDocument.applyEdits(editor, changes)\n // console.log('after')\n // console.log([...editor.lines])\n const invalidStartIndex = changes[0].start.rowIndex\n // if (editor.undoStack) {\n // editor.undoStack.push(changes)\n // }\n // const cursorInfos = EditorCursor.getVisible(editor)\n // const selectionInfos = EditorSelection.getVisible(editor)\n // const textInfos = EditorText.getVisible(editor)\n // TODO scrollbar calculation duplicate code\n // const scrollBarY =\n // (editor.deltaY / editor.finalDeltaY) *\n // (editor.height - editor.scrollBarHeight)\n // const scrollBarHeight = editor.scrollBarHeight\n\n const newEditor = {\n ...editor,\n undoStack: [...editor.undoStack, changes],\n lines: newLines,\n invalidStartIndex,\n }\n // TODO change event should be emitted after rendering\n GlobalEventBus.emitEvent('editor.change', editor, changes)\n return newEditor\n // RendererProcess.send([\n // /* Viewlet.invoke */ 'Viewlet.send',\n // /* id */ 'EditorText',\n // /* method */ 'renderTextAndCursorsAndSelections',\n // /* deltaY */ scrollBarY,\n // /* scrollBarHeight */ scrollBarHeight,\n // /* textInfos */ textInfos,\n // /* cursorInfos */ cursorInfos,\n // /* selectionInfos */ selectionInfos,\n // ])\n}\n\nexport const hasSelection = (editor) => {\n // TODO editor.selections should always be defined\n return editor.selections && editor.selections.length > 0\n}\n\nexport const setBounds = (editor, top, left, height, columnWidth) => {\n const { itemHeight } = editor\n const numberOfVisibleLines = Math.floor(height / itemHeight)\n const total = editor.lines.length\n const maxLineY = Math.min(numberOfVisibleLines, total)\n const finalY = Math.max(total - numberOfVisibleLines, 0)\n const finalDeltaY = finalY * itemHeight\n return {\n ...editor,\n top,\n left,\n height,\n columnWidth,\n numberOfVisibleLines,\n maxLineY,\n finalY,\n finalDeltaY,\n }\n}\n\nexport const setText = (editor, text) => {\n const lines = SplitLines.splitLines(text)\n const { itemHeight, numberOfVisibleLines } = editor\n const total = lines.length\n const maxLineY = Math.min(numberOfVisibleLines, total)\n const finalY = Math.max(total - numberOfVisibleLines, 0)\n const finalDeltaY = finalY * itemHeight\n const contentHeight = lines.length * editor.rowHeight\n const scrollBarHeight = ScrollBarFunctions.getScrollBarHeight(\n editor.height,\n contentHeight,\n MINIMUM_SLIDER_SIZE\n )\n return {\n ...editor,\n lines,\n maxLineY,\n finalY,\n finalDeltaY,\n scrollBarHeight,\n }\n}\n\nconst renderLines = {\n isEqual(oldState, newState) {\n return (\n oldState.lines === newState.lines &&\n oldState.tokenizer === newState.tokenizer &&\n oldState.minLineY === newState.minLineY &&\n oldState.decorations === newState.decorations\n )\n },\n apply(oldState, newState) {\n const textInfos = EditorText.getVisible(newState)\n return [/* method */ 'setText', /* textInfos */ textInfos]\n },\n}\n\nconst renderSelections = {\n isEqual(oldState, newState) {\n return (\n oldState.selections === newState.selections &&\n oldState.focused === newState.focused &&\n oldState.minLineY === newState.minLineY\n )\n },\n apply(oldState, newState) {\n const cursorInfos = EditorCursor.getVisible(newState)\n const selectionInfos = EditorSelection.getVisible(newState)\n return [\n /* method */ 'setSelections',\n /* cursorInfos */ cursorInfos,\n /* selectionInfos */ selectionInfos,\n ]\n },\n}\n\nconst renderScrollBar = {\n isEqual(oldState, newState) {\n return (\n oldState.deltaY === newState.deltaY &&\n oldState.scrollBarHeight === newState.scrollBarHeight\n )\n },\n apply(oldState, newState) {\n const scrollBarY = ScrollBarFunctions.getScrollBarY(\n newState.deltaY,\n newState.finalDeltaY,\n newState.height,\n newState.scrollBarHeight\n )\n return [\n /* method */ 'setScrollBar',\n /* scrollBarY */ scrollBarY,\n /* scrollBarHeight */ newState.scrollBarHeight,\n ]\n },\n}\n\nconst renderFocus = {\n isEqual(oldState, newState) {\n return oldState.focused === newState.focused\n },\n apply(oldState, newState) {\n if (!newState.focused) {\n return []\n }\n return [/* method */ 'focus']\n },\n}\n\nexport const render = [\n renderLines,\n renderSelections,\n renderScrollBar,\n renderFocus,\n]\n", "import * as ExtensionHostActivationEvent from '../ExtensionHostActivationEvent/ExtensionHostActivationEvent.js'\nimport * as ExtensionHostEditor from './ExtensionHostEditor.js'\n\nconst combineResults = (results) => {\n return results[0]\n}\n\nexport const executeSemanticTokenProvider = (editor) => {\n return ExtensionHostEditor.execute({\n editor,\n event: ExtensionHostActivationEvent.OnSemanticTokens,\n method: 'ExtensionHostSemanticTokens.executeSemanticTokenProvider',\n args: [],\n noProviderFoundMessage: 'No Semantic Token Provider found',\n combineResults,\n noProviderFoundResult: [],\n })\n}\n", "import * as Tokenizer from '../Tokenizer/Tokenizer.js'\nimport * as ViewletState from '../ViewletStates/ViewletStates.js'\n\nexport const setLanguageId = async (editor, languageId) => {\n // TODO only load tokenizer if not already loaded\n // if already loaded just set tokenizer and rerender text\n await Tokenizer.loadTokenizer(languageId)\n const tokenizer = Tokenizer.getTokenizer(languageId)\n if (tokenizer === editor.tokenizer) {\n return ViewletState.getState('EditorText')\n }\n // TODO update syntax highlighting\n // TODO get edits\n\n const latestEditor = ViewletState.getState('EditorText')\n\n return {\n ...latestEditor,\n languageId,\n invalidStartIndex: 0,\n tokenizer,\n }\n}\n", "import * as Command from '../Command/Command.js'\nimport * as Editor from '../Editor/Editor.js'\nimport * as ExtensionHostSemanticTokens from '../ExtensionHost/ExtensionHostSemanticTokens.js'\n// import * as ExtensionHostTextDocument from '../ExtensionHost/ExtensionHostTextDocument.js'\nimport * as EditorCommandSetLanguageId from '../EditorCommand/EditorCommandSetLanguageId.js'\nimport * as FileSystem from '../FileSystem/FileSystem.js'\nimport * as GlobalEventBus from '../GlobalEventBus/GlobalEventBus.js'\nimport * as Id from '../Id/Id.js'\nimport * as Languages from '../Languages/Languages.js'\nimport * as Preferences from '../Preferences/Preferences.js'\nimport * as Tokenizer from '../Tokenizer/Tokenizer.js'\nimport * as Viewlet from '../Viewlet/Viewlet.js'\nimport * as ViewletStates from '../ViewletStates/ViewletStates.js'\nimport * as Workspace from '../Workspace/Workspace.js'\nimport * as ViewletModuleId from '../ViewletModuleId/ViewletModuleId.js'\n\nconst COLUMN_WIDTH = 9 // TODO compute this automatically once\n\nconst getContent = async (uri) => {\n const content = await FileSystem.readFile(uri)\n return content ?? 'content could not be loaded'\n}\n\n// TODO how to connect this function with tokenizer?\nexport const handleTokenizeChange = () => {\n const instances = ViewletStates.getAllInstances()\n const instance = instances.EditorText\n if (!instance) {\n console.log('no text editor')\n return\n }\n const state = instance.state\n const tokenizer = Tokenizer.getTokenizer(state.languageId)\n const newState = {\n ...instance.state,\n tokenizer,\n }\n Viewlet.setState('EditorText', newState)\n}\n\n// TODO uri?\nexport const create = (id, uri, left, top, width, height) => {\n const instanceId = Id.create()\n const state = Editor.create(instanceId, uri, 'unknown', '')\n const newState = Editor.setBounds(state, top, left, height, COLUMN_WIDTH)\n const fileName = Workspace.pathBaseName(state.uri)\n const languageId = Languages.getLanguageId(fileName)\n return {\n ...newState,\n uri,\n rowHeight: 20,\n languageId,\n width,\n }\n}\n\nexport const saveState = (state) => {\n const { selections, focused, deltaY, minLineY } = state\n return {\n selections: [...Array.from(selections)],\n focused,\n deltaY,\n }\n}\n\nconst getSavedSelections = (savedState) => {\n if (savedState && savedState.selections) {\n return new Uint32Array(savedState.selections)\n }\n return new Uint32Array([0, 0, 0, 0])\n}\n\nconst getSavedFocus = (savedState) => {\n if (savedState && savedState.focused) {\n return true\n }\n return false\n}\n\nconst getSavedDeltaY = (savedState) => {\n if (savedState && savedState.deltaY) {\n return savedState.deltaY\n }\n return 0\n}\n\nconst getLanguageId = (state) => {\n const fileName = Workspace.pathBaseName(state.uri)\n const languageId = Languages.getLanguageId(fileName)\n if (languageId === 'unknown') {\n console.log('try to get language from content', state)\n const firstLine = state.lines[0] || ''\n const languageIdFromContent = Languages.getLanguageIdByFirstLine(firstLine)\n return languageIdFromContent\n }\n return languageId\n}\n\nconst kLineHeight = 'editor.lineHeight'\nconst kFontSize = 'editor.fontSize'\nconst kLetterSpacing = 'editor.letterSpacing'\n\nexport const loadContent = async (state, savedState) => {\n const { uri } = state\n const rowHeight = Preferences.get(kLineHeight) || 20\n const fontSize = Preferences.get(kFontSize) || 15 // TODO find out if it is possible to use all numeric values for settings for efficiency, maybe settings could be an array\n const letterSpacing = Preferences.get(kLetterSpacing) || 0.5\n const content = await getContent(uri)\n const newState1 = Editor.setText(state, content)\n const languageId = getLanguageId(newState1)\n const tokenizer = Tokenizer.getTokenizer(languageId)\n const savedSelections = getSavedSelections(savedState)\n const savedDeltaY = getSavedDeltaY(savedState)\n const newState2 = Editor.setDeltaYFixedValue(newState1, savedDeltaY)\n // const selections = new Uint32Array([10, 10, 10, 10])\n return {\n ...newState2,\n rowHeight,\n fontSize,\n letterSpacing,\n tokenizer,\n selections: savedSelections,\n deltaY: savedDeltaY,\n // selections,\n }\n}\n\nexport const contentLoaded = async (state) => {\n // Editor.renderText(state)\n return []\n}\n\nconst updateSemanticTokens = async (state) => {\n try {\n const newSemanticTokens =\n await ExtensionHostSemanticTokens.executeSemanticTokenProvider(state)\n await Command.execute(\n /* Editor.setDecorations */ 'Editor.setDecorations',\n /* decorations */ newSemanticTokens\n )\n // TODO apply semantic tokens to editor and rerender\n // TODO possibly overlay semantic tokens as decorations\n } catch (error) {\n if (\n error &&\n error instanceof Error &&\n error.message.startsWith(\n 'Failed to execute semantic token provider: VError: no semantic token provider found for'\n )\n ) {\n return\n }\n console.error(error)\n }\n}\n\nexport const handleEditorChange = async (editor, changes) => {\n // await ExtensionHostTextDocument.handleEditorChange(editor, changes)\n // TODO check if semantic highlighting is enabled in settings\n await updateSemanticTokens(editor)\n return editor\n}\n\nexport const contentLoadedEffects = async (state) => {\n // TODO dispose listener\n // TODO don't like side effect here, where to put it?\n // GlobalEventBus.addListener('languages.changed', handleLanguagesChanged)\n // GlobalEventBus.addListener('tokenizer.changed', handleTokenizeChange)\n // GlobalEventBus.addListener('editor.change', handleEditorChange)\n const newLanguageId = getLanguageId(state)\n await Command.execute(\n /* Editor.setLanguageId */ 'Editor.setLanguageId',\n /* languageId */ newLanguageId\n )\n // await ExtensionHostTextDocument.handleEditorCreate(state)\n // TODO check if semantic highlighting is enabled in settings\n await updateSemanticTokens(state)\n GlobalEventBus.emitEvent('editor.create', state)\n}\n\nexport const handleLanguagesChanged = (state) => {\n const newLanguageId = getLanguageId(state)\n return EditorCommandSetLanguageId.setLanguageId(state, newLanguageId)\n}\n\nexport const resize = (state, dimensions) => {\n const newState = Editor.setBounds(\n state,\n dimensions.top,\n dimensions.left,\n dimensions.height,\n state.columnWidth\n )\n const commands = [Editor.renderTextAndCursorAndSelectionsCommands(newState)]\n return {\n newState,\n commands,\n }\n}\n\nexport const hasFunctionalRender = true\n\nexport const render = Editor.render\n\nexport const focus = (state) => {\n return {\n ...state,\n focused: true,\n }\n}\n\nexport const shouldApplyNewState = (newState) => {\n return true\n}\n", "import * as Editor from '../Editor/Editor.js'\nimport * as Assert from '../Assert/Assert.js'\n\nexport const applyEdit = async (editor, changes) => {\n Assert.object(editor)\n Assert.array(changes)\n return Editor.scheduleDocumentAndCursorsSelections(editor, changes)\n}\n", "export const state = {\n blurListeners: [],\n}\n\nexport const blur = (editor) => {\n // for (const listener of state.blurListeners) {\n // listener(editor)\n // }\n // TODO save on blur\n // Command.execute(/* Main.save */ 89)\n return {\n ...editor,\n focused: false,\n }\n}\n\nexport const registerListener = (fn) => {\n state.blurListeners.push(fn)\n}\n\nexport const removeListener = (fn) => {\n state.blurListeners.splice(state.blurListeners.indexOf(fn), 1)\n}\n", "export const CompositionUpdate = 'compositionUpdate'\nexport const ContentEditableInput = 'contentEditableInput'\nexport const Delete = 'delete'\nexport const DeleteHorizontalRight = 'deleteHorizontalRight'\nexport const EditorPasteText = 'editorPasteText'\nexport const EditorSnippet = 'editorSnippet'\nexport const Format = 'format'\nexport const IndentLess = 'indentLess'\nexport const IndentMore = 'indentMore'\nexport const InsertLineBreak = 'insertLineBreak'\nexport const ToggleBlockComment = 'toggleBlockComment'\nexport const EditorType = 'editorType'\nexport const EditorCut = 'editorCut'\n", "import * as Assert from '../Assert/Assert.js'\nimport * as ExtensionHostActivationEvent from '../ExtensionHostActivationEvent/ExtensionHostActivationEvent.js'\nimport * as ExtensionHostEditor from './ExtensionHostEditor.js'\n\nconst combineResults = (results) => {\n return results[0]\n}\n\nexport const executeBraceCompletionProvider = (\n editor,\n offset,\n openingBrace\n) => {\n Assert.object(editor)\n Assert.number(offset)\n Assert.string(openingBrace)\n return ExtensionHostEditor.execute({\n event: ExtensionHostActivationEvent.OnBraceCompletion,\n method: 'ExtensionHostBraceCompletion.executeBraceCompletionProvider',\n editor,\n args: [offset, openingBrace],\n noProviderFoundMessage: 'no brace completion providers found',\n noProviderFoundResult: undefined,\n combineResults,\n })\n}\n", "import * as TextDocument from '../TextDocument/TextDocument.js'\n\nexport const editorReplaceSelections = (editor, replacement, origin) => {\n const changes = []\n const selections = editor.selections\n for (let i = 0; i < selections.length; i += 4) {\n const selectionStartRow = selections[i]\n const selectionStartColumn = selections[i + 1]\n const selectionEndRow = selections[i + 2]\n const selectionEndColumn = selections[i + 3]\n const start = {\n rowIndex: selectionStartRow,\n columnIndex: selectionStartColumn,\n }\n const end = {\n rowIndex: selectionEndRow,\n columnIndex: selectionEndColumn,\n }\n const selection = {\n start,\n end,\n }\n changes.push({\n start: start,\n end: end,\n inserted: replacement,\n deleted: TextDocument.getSelectionText(editor, selection),\n origin,\n })\n }\n return changes\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as Clamp from '../Clamp/Clamp.js'\n\nexport const at = (editor, x, y, offset) => {\n Assert.object(editor)\n Assert.number(x)\n Assert.number(y)\n Assert.number(offset)\n const { maxLineY } = editor\n const rowIndex = Clamp.clamp(\n Math.floor((y - editor.top + editor.deltaY) / editor.rowHeight),\n 0,\n maxLineY - 1\n )\n const columnIndex = offset\n return {\n rowIndex,\n columnIndex,\n }\n}\n\n/**\n * @deprecated this doesn't work for variable width characters (unicode/emoji).\n * Use position computation in renderer process instead\n *\n * @param {object} editor\n * @param {number} rowIndex\n * @param {number} columnIndex\n * @returns\n */\nexport const x = (editor, rowIndex, columnIndex) => {\n const x = columnIndex * editor.columnWidth + editor.left\n return x\n}\n\nexport const y = (editor, rowIndex, columnIndex) => {\n const y = (rowIndex + 1) * editor.rowHeight + editor.top\n return y\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as RendererProcess from '../RendererProcess/RendererProcess.js'\nimport * as EditorPosition from './EditorCommandPosition.js'\n\nexport const state = {\n timeout: -1,\n}\n\n/**\n *\n * @param {any} editor\n * @param {number} rowIndex\n * @param {number} columnIndex\n * @param {string} message\n * @param {boolean} isError\n * @returns\n */\nexport const editorShowMessage = async (\n editor,\n rowIndex,\n columnIndex,\n message,\n isError\n) => {\n Assert.object(editor)\n Assert.number(rowIndex)\n Assert.number(columnIndex)\n Assert.string(message)\n const x = EditorPosition.x(editor, rowIndex, columnIndex)\n const y = EditorPosition.y(editor, rowIndex, columnIndex)\n const displayErrorMessage = message\n await RendererProcess.invoke(\n /* Viewlet.send */ 'Viewlet.send',\n /* id */ 'EditorText',\n /* method */ 'showOverlayMessage',\n /* x */ x,\n /* y */ y,\n /* content */ displayErrorMessage\n )\n\n if (!isError) {\n const handleTimeout = () => {\n editorHideMessage(editor)\n }\n\n // TODO use wrapper timing module instead of this\n // @ts-ignore\n state.timeout = setTimeout(handleTimeout, 3_000)\n }\n return editor\n}\n\n/**\n *\n * @param {any} editor\n * @param {number} rowIndex\n * @param {number} columnIndex\n * @param {string} message\n * @returns\n */\nexport const showErrorMessage = (editor, rowIndex, columnIndex, message) => {\n return editorShowMessage(\n editor,\n rowIndex,\n columnIndex,\n message,\n /* isError */ true\n )\n}\n\nexport const editorHideMessage = async (editor) => {\n clearTimeout(state.timeout)\n state.timeout = -1\n await RendererProcess.invoke(\n /* Viewlet.send */ 'Viewlet.send',\n /* id */ 'EditorText',\n /* method */ 'hideOverlayMessage'\n )\n return editor\n}\n", "// import * as EditorCompletion from '../EditorCompletion/EditorCompletion.js'\nimport * as Editor from '../Editor/Editor.js'\nimport * as EditOrigin from '../EditOrigin/EditOrigin.js'\nimport * as ExtensionHostBraceCompletion from '../ExtensionHost/ExtensionHostBraceCompletion.js'\nimport * as TextDocument from '../TextDocument/TextDocument.js'\nimport { editorReplaceSelections } from './EditorCommandReplaceSelection.js'\nimport * as EditorShowMessage from './EditorCommandShowMessage.js'\n\nconst getErrorMessage = (error) => {\n return `${error}`\n}\n\nconst getMatchingClosingBrace = (brace) => {\n switch (brace) {\n case '{':\n return '}'\n case '(':\n return ')'\n case '[':\n return ']'\n default:\n return '???'\n }\n}\n\nexport const braceCompletion = async (editor, text) => {\n try {\n const offset = TextDocument.offsetAt(editor, editor.cursor)\n const result =\n await ExtensionHostBraceCompletion.executeBraceCompletionProvider(\n editor,\n offset,\n text\n )\n if (result) {\n const closingBrace = getMatchingClosingBrace(text)\n const insertText = text + closingBrace\n const changes = editorReplaceSelections(\n editor,\n [insertText],\n EditOrigin.EditorType\n )\n return Editor.scheduleDocumentAndCursorsSelections(editor, changes)\n }\n const changes = editorReplaceSelections(\n editor,\n [text],\n EditOrigin.EditorType\n )\n return Editor.scheduleDocumentAndCursorsSelections(editor, changes)\n } catch (error) {\n console.error(error)\n // TODO cursor should always be of type object\n const position = Array.isArray(editor.cursor)\n ? editor.cursor[0]\n : editor.cursor\n return EditorShowMessage.showErrorMessage(\n editor,\n position,\n getErrorMessage(error)\n )\n }\n}\n", "import * as Editor from '../Editor/Editor.js'\nimport * as EditorSelection from '../EditorSelection/EditorSelection.js'\n\nexport const cancelSelection = (editor) => {\n const selections = editor.selections\n if (\n selections.length === 4 &&\n selections[0] === selections[2] &&\n selections[1] === selections[3]\n ) {\n return editor\n }\n const newSelections = EditorSelection.alloc(4)\n EditorSelection.moveRangeToPosition(\n newSelections,\n 0,\n selections[0],\n selections[1]\n )\n return Editor.scheduleSelections(editor, newSelections)\n}\n", "import * as Command from '../Command/Command.js'\nimport * as MenuEntryId from '../MenuEntryId/MenuEntryId.js'\n\nexport const handleContextMenu = async (editor, x, y) => {\n await Command.execute(\n /* ContextMenu.show */ 'ContextMenu.show',\n /* x */ x,\n /* y */ y,\n /* id */ MenuEntryId.Editor\n )\n return editor\n}\n", "import * as TextDocument from '../TextDocument/TextDocument.js'\nimport * as Editor from '../Editor/Editor.js'\nimport * as Assert from '../Assert/Assert.js'\n// TODO handle multiline selection\n// TODO handle multiple cursors\n\nexport const copyLineDown = (editor) => {\n const selections = editor.selections\n const primarySelectionIndex = editor.primarySelectionIndex\n const rowIndex = selections[primarySelectionIndex]\n Assert.number(rowIndex)\n const position = {\n rowIndex,\n columnIndex: 0,\n }\n const changes = [\n {\n inserted: [TextDocument.getLine(editor, rowIndex), ''],\n deleted: [''],\n start: position,\n end: position,\n },\n ]\n return Editor.scheduleDocumentAndCursorsSelections(editor, changes)\n}\n", "import * as TextDocument from '../TextDocument/TextDocument.js'\nimport * as Editor from '../Editor/Editor.js'\n\nexport const copyLineUp = (editor) => {\n const rowIndex = editor.cursor.rowIndex\n const changes = [\n {\n start: editor.cursor,\n end: editor.cursor,\n inserted: [TextDocument.getLine(editor.textDocument, rowIndex), ''],\n deleted: [''],\n },\n ]\n Editor.scheduleDocumentAndCursorsSelections(editor, changes)\n}\n", "export const editorGetPositionLeft = (\n rowIndex,\n columnIndex,\n lines,\n getDelta\n) => {\n if (columnIndex === 0) {\n if (rowIndex === 0) {\n return { rowIndex: 0, columnIndex: 0 }\n }\n return {\n rowIndex: rowIndex - 1,\n columnIndex: lines[rowIndex - 1].length,\n }\n }\n const delta = getDelta(lines[rowIndex], columnIndex)\n return {\n rowIndex,\n columnIndex: columnIndex - delta,\n }\n}\n\nexport const moveToPositionEqual = (selections, i, rowIndex, columnIndex) => {\n selections[i] = rowIndex\n selections[i + 1] = columnIndex\n}\n\nexport const moveRangeToPosition = (selections, i, rowIndex, columnIndex) => {\n selections[i] = selections[i + 2] = rowIndex\n selections[i + 1] = selections[i + 3] = columnIndex\n}\n\nexport const moveToPositionLeft = (\n selections,\n i,\n rowIndex,\n columnIndex,\n lines,\n getDelta\n) => {\n if (columnIndex === 0) {\n if (rowIndex === 0) {\n selections[i] = 0\n selections[i + 1] = 0\n } else {\n selections[i] = rowIndex - 1\n selections[i + 1] = lines[rowIndex - 1].length\n }\n } else {\n const delta = getDelta(lines[rowIndex], columnIndex)\n selections[i] = rowIndex\n selections[i + 1] = columnIndex - delta\n }\n}\n", "import * as Editor from '../Editor/Editor.js'\nimport * as EditorGetPositionLeft from './EditorCommandGetPositionLeft.js'\n\nconst getNewSelections = (selections, lines, getDelta) => {\n const newSelections = new Uint32Array(selections.length)\n for (let i = 0; i < selections.length; i += 4) {\n const selectionStartRow = selections[i]\n const selectionStartColumn = selections[i + 1]\n const selectionEndRow = selections[i + 2]\n const selectionEndColumn = selections[i + 3]\n if (\n selectionStartRow === selectionEndRow &&\n selectionStartColumn === selectionEndColumn\n ) {\n if (selectionStartRow === 0 && selectionStartColumn === 0) {\n newSelections[i] = 0\n newSelections[i + 1] = 0\n newSelections[i + 2] = 0\n newSelections[i + 3] = 0\n } else {\n EditorGetPositionLeft.moveToPositionLeft(\n newSelections,\n i,\n selectionStartRow,\n selectionStartColumn,\n lines,\n getDelta\n )\n EditorGetPositionLeft.moveToPositionLeft(\n newSelections,\n i + 2,\n selectionStartRow,\n selectionStartColumn,\n lines,\n getDelta\n )\n }\n } else {\n EditorGetPositionLeft.moveRangeToPosition(\n newSelections,\n i,\n selections[i],\n selections[i + 1]\n )\n }\n }\n return newSelections\n}\n\nexport const editorCursorHorizontalLeft = (editor, getDelta) => {\n const lines = editor.lines\n const selections = editor.selections\n const newSelections = getNewSelections(selections, lines, getDelta)\n return Editor.scheduleSelections(editor, newSelections)\n}\n", "export const supported = () => {\n return 'Segmenter' in Intl\n}\n\nexport const create = () => {\n // @ts-ignore\n const segmenter = new Intl.Segmenter()\n return {\n at(line, index) {\n const segments = segmenter.segment(line)\n return segments.containing(index)\n },\n visualIndex(line, index) {\n const segments = segmenter.segment(line)\n let currentVisualIndex = 0\n for (const segment of segments) {\n if (segment.index >= index) {\n return currentVisualIndex\n }\n currentVisualIndex++\n }\n return currentVisualIndex\n },\n modelIndex(line, visualIndex) {\n const segments = segmenter.segment(line)\n let currentVisualIndex = 0\n for (const segment of segments) {\n if (currentVisualIndex >= visualIndex) {\n return segment.index\n }\n currentVisualIndex++\n }\n return line.length\n },\n }\n}\n", "import * as TextSegmenter from '../TextSegmenter/TextSegmenter.js'\n\nexport const characterLeft = (line, columnIndex) => {\n if (!TextSegmenter.supported()) {\n return 1\n }\n const segmenter = TextSegmenter.create()\n const last = segmenter.at(line, columnIndex - 1)\n return columnIndex - last.index\n}\n\nexport const characterRight = (line, columnIndex) => {\n if (!TextSegmenter.supported()) {\n return 1\n }\n const segmenter = TextSegmenter.create()\n const next = segmenter.at(line, columnIndex)\n return next.segment.length\n}\n\nconst isWhitespace = (char) => {\n return char === ' ' || char === '\\t'\n}\n\nexport const lineCharacterStart = (line, columnIndex) => {\n if (line.length === 0) {\n return 0\n }\n for (let i = 0; i < columnIndex; i++) {\n if (!isWhitespace(line[i])) {\n return columnIndex - i\n }\n }\n return columnIndex\n}\n\nexport const lineEnd = (line, columnIndex) => {\n return line.length - columnIndex\n}\n\nconst tryRegexArray = (partialLine, regexArray) => {\n for (const regex of regexArray) {\n const match = partialLine.match(regex)\n if (match) {\n return match[0].length\n }\n }\n return 1\n}\n\nconst RE_WORD_LEFT_1 = /(?<![A-Z])[A-Z]+\\s*$/\nconst RE_WORD_LEFT_2 = /[\\u00C0-\\u017F\\w\\-]+>?\\s*$/\nconst RE_WORD_LEFT_3 = /[a-zA-Z]+[^a-zA-Z\\d]+\\s*$/\nconst RE_WORD_LEFT_4 = /\\s+$/\nconst RE_WORD_LEFT_5 = /[^a-zA-Z\\d]+\\s*$/\nconst RE_WORD_LEFT = [\n RE_WORD_LEFT_1,\n RE_WORD_LEFT_2,\n RE_WORD_LEFT_3,\n RE_WORD_LEFT_4,\n RE_WORD_LEFT_5,\n]\n\nexport const wordLeft = (line, columnIndex) => {\n const partialLine = line.slice(0, columnIndex)\n return tryRegexArray(partialLine, RE_WORD_LEFT)\n}\n\nconst RE_WORD_RIGHT_1 = /^\\s*[\\u00C0-\\u017F\\w]+/i\nconst RE_WORD_RIGHT_2 = /^[^a-zA-Z\\d]+\\w*/\nconst RE_WORD_RIGHT = [RE_WORD_RIGHT_1, RE_WORD_RIGHT_2]\n\nexport const wordRight = (line, columnIndex) => {\n const partialLine = line.slice(columnIndex)\n return tryRegexArray(partialLine, RE_WORD_RIGHT)\n}\n\nconst RE_PARTIAL_WORD_LEFT_1 = /(?<![A-Z])[A-Z]{2}[a-z]+$/\nconst RE_PARTIAL_WORD_LEFT_2 = /(?=[A-Z]+)[A-Z][a-z]+$/\nconst RE_PARTIAL_WORD_LEFT_3 = /[A-Z]+[a-z]+\\d?\\s*$/\nconst RE_PARTIAL_WORD_LEFT_4 = /[A-Z]+\\d*\\s*$/\nconst RE_PARTIAL_WORD_LEFT_5 = /[a-z]+\\d*\\s*$/\nconst RE_PARTIAL_WORD_LEFT_6 = /[A-Z]*[a-z]+_+\\s*$/\nconst RE_PARTIAL_WORD_LEFT_7 = /(?<![A-Z])[A-Z]_+\\s*$/\nconst RE_PARTIAL_WORD_LEFT_8 = /[a-z]+\\s*$/\nconst RE_PARTIAL_WORD_LEFT_9 = /[^a-zA-Z\\d\\s]+\\s*$/\nconst RE_PARTIAL_WORD_LEFT = [\n RE_PARTIAL_WORD_LEFT_1,\n RE_PARTIAL_WORD_LEFT_2,\n RE_PARTIAL_WORD_LEFT_3,\n RE_PARTIAL_WORD_LEFT_4,\n RE_PARTIAL_WORD_LEFT_5,\n RE_PARTIAL_WORD_LEFT_6,\n RE_PARTIAL_WORD_LEFT_7,\n RE_PARTIAL_WORD_LEFT_8,\n RE_PARTIAL_WORD_LEFT_9,\n]\n\nexport const wordPartLeft = (line, columnIndex) => {\n const partialLine = line.slice(0, columnIndex)\n return tryRegexArray(partialLine, RE_PARTIAL_WORD_LEFT)\n}\n\nconst RE_PARTIAL_WORD_RIGHT_1 = /^\\s*[a-z]+\\d?/\nconst RE_PARTIAL_WORD_RIGHT_2 = /^\\s*[A-Z]{2}[a-z\\d]+/\nconst RE_PARTIAL_WORD_RIGHT_3 = /^\\s*[A-Z]+(?=[A-Z][a-z]+)/\nconst RE_PARTIAL_WORD_RIGHT_4 = /^\\s*[A-Z]+[a-z]*\\d*/\nconst RE_PARTIAL_WORD_RIGHT_5 = /^\\s*_+[a-z]*\\d?/\nconst RE_PARTIAL_WORD_RIGHT_6 = /^\\s*[^\\da-zA-Z\\s]+/\n// const RE_PARTIAL_WORD_RIGHT_6 = /^\\s*[A-Z][A-Z](?![A-Z])*/\n// const RE_PARTIAL_WORD_RIGHT_7 = /^\\s*[A-Z][A-Z][a-z]*/\n\nconst ARRAY_PARTIAL_WORD_RIGHT_1 = [\n RE_PARTIAL_WORD_RIGHT_1,\n // RE_PARTIAL_WORD_RIGHT_2,\n RE_PARTIAL_WORD_RIGHT_3,\n RE_PARTIAL_WORD_RIGHT_4,\n RE_PARTIAL_WORD_RIGHT_5,\n RE_PARTIAL_WORD_RIGHT_6,\n]\nconst ARRAY_PARTIAL_WORD_RIGHT_2 = [\n RE_PARTIAL_WORD_RIGHT_1,\n RE_PARTIAL_WORD_RIGHT_2,\n RE_PARTIAL_WORD_RIGHT_3,\n RE_PARTIAL_WORD_RIGHT_4,\n RE_PARTIAL_WORD_RIGHT_5,\n RE_PARTIAL_WORD_RIGHT_6,\n]\n\nconst RE_UPPERCASE = /[A-Z]/\n\nexport const wordPartRight = (line, columnIndex) => {\n const partialLine = line.slice(columnIndex)\n // line[columnIndex]//?\n if (RE_UPPERCASE.test(line[columnIndex - 1])) {\n return tryRegexArray(partialLine, ARRAY_PARTIAL_WORD_RIGHT_1)\n }\n return tryRegexArray(partialLine, ARRAY_PARTIAL_WORD_RIGHT_2)\n}\n\n// wordPartRight('\"command\": \"actions.find\"', 8) //?\n// 'DDa'.match(RE_PARTIAL_WORD_RIGHT_1) //?\n// wordPartRight('DDa', 0) //?\n// wordPartRight('DEBUGEntry', 3) //?\n\nexport const line = (line) => {}\n", "import * as EditorCursorHorizontalLeft from './EditorCommandCursorHorizontalLeft.js'\nimport * as EditorDelta from './EditorCommandDelta.js'\n\nexport const cursorCharacterLeft = (editor) => {\n return EditorCursorHorizontalLeft.editorCursorHorizontalLeft(\n editor,\n EditorDelta.characterLeft\n )\n}\n\nexport const cursorLeft = cursorCharacterLeft\n", "export const editorGetPositionRight = (position, lines, getDelta) => {\n const rowIndex = position.rowIndex\n const columnIndex = position.columnIndex\n if (columnIndex >= lines[rowIndex].length) {\n if (rowIndex >= lines.length) {\n return position\n }\n return {\n rowIndex: rowIndex + 1,\n columnIndex: 0,\n }\n }\n const delta = getDelta(lines[rowIndex], columnIndex)\n return {\n rowIndex,\n columnIndex: columnIndex + delta,\n }\n}\n\nexport const moveToPositionRight = (\n selections,\n i,\n rowIndex,\n columnIndex,\n lines,\n getDelta\n) => {\n const line = lines[rowIndex]\n if (columnIndex >= line.length) {\n selections[i] = selections[i + 2] = rowIndex + 1\n selections[i + 1] = selections[i + 3] = 0\n } else {\n const delta = getDelta(line, columnIndex)\n selections[i] = selections[i + 2] = rowIndex\n selections[i + 1] = selections[i + 3] = columnIndex + delta\n }\n}\n", "import * as Editor from '../Editor/Editor.js'\nimport * as EditorGetPositionRight from './EditorCommandGetPositionRight.js'\n\nconst getNewSelections = (selections, lines, getDelta) => {\n const newSelections = new Uint32Array(selections.length)\n for (let i = 0; i < selections.length; i += 4) {\n const selectionStartRow = selections[i]\n const selectionStartColumn = selections[i + 1]\n const selectionEndRow = selections[i + 2]\n const selectionEndColumn = selections[i + 3]\n if (\n selectionStartRow === selectionEndRow &&\n selectionStartColumn === selectionEndColumn\n ) {\n EditorGetPositionRight.moveToPositionRight(\n newSelections,\n i,\n selectionStartRow,\n selectionStartColumn,\n lines,\n getDelta\n )\n } else {\n newSelections[i] = newSelections[i + 2] = selectionEndRow\n newSelections[i + 1] = newSelections[i + 3] = selectionEndColumn\n }\n }\n return newSelections\n}\n\nexport const editorCursorHorizontalRight = (editor, getDelta) => {\n const { lines, selections } = editor\n const newSelections = getNewSelections(selections, lines, getDelta)\n return Editor.scheduleSelections(editor, newSelections)\n}\n", "import * as EditorCursorHorizontalRight from './EditorCommandCursorHorizontalRight.js'\nimport * as EditorDelta from './EditorCommandDelta.js'\n\nexport const cursorCharacterRight = (editor) => {\n return EditorCursorHorizontalRight.editorCursorHorizontalRight(\n editor,\n EditorDelta.characterRight\n )\n}\n\nexport const cursorRight = cursorCharacterRight\n", "import * as Editor from '../Editor/Editor.js'\nimport * as EditorSelection from '../EditorSelection/EditorSelection.js'\n\nconst moveSelectionDown = (\n selections,\n i,\n selectionStartRow,\n selectionStartColumn,\n selectionEndRow,\n selectionEndColumn\n) => {\n EditorSelection.moveRangeToPosition(\n selections,\n i,\n selectionEndRow + 1,\n selectionEndColumn\n )\n}\n\nconst getNewSelections = (selections) => {\n return EditorSelection.map(selections, moveSelectionDown)\n}\n\nexport const cursorDown = (editor) => {\n const selections = editor.selections\n const newSelections = getNewSelections(selections)\n return Editor.scheduleSelections(editor, newSelections)\n}\n", "import * as EditorCursorHorizontalRight from './EditorCommandCursorHorizontalRight.js'\nimport * as EditorDelta from './EditorCommandDelta.js'\n\nexport const cursorEnd = (editor) => {\n return EditorCursorHorizontalRight.editorCursorHorizontalRight(\n editor,\n EditorDelta.lineEnd\n )\n}\n", "import * as EditorCursorHorizontalLeft from './EditorCommandCursorHorizontalLeft.js'\nimport * as EditorDelta from './EditorCommandDelta.js'\n\nexport const cursorHome = (editor) => {\n return EditorCursorHorizontalLeft.editorCursorHorizontalLeft(\n editor,\n EditorDelta.lineCharacterStart\n )\n}\n", "import * as Editor from '../Editor/Editor.js'\nimport * as Assert from '../Assert/Assert.js'\nimport * as EditorSelection from '../EditorSelection/EditorSelection.js'\n\nexport const cursorSet = (editor, rowIndex, columnIndex) => {\n Assert.object(editor)\n Assert.number(rowIndex)\n Assert.number(columnIndex)\n const selectionEdits = EditorSelection.fromRange(\n rowIndex,\n columnIndex,\n rowIndex,\n columnIndex\n )\n return Editor.scheduleSelections(editor, selectionEdits)\n}\n", "import * as Editor from '../Editor/Editor.js'\nimport * as TextDocument from '../TextDocument/TextDocument.js'\nimport * as TextSegmenter from '../TextSegmenter/TextSegmenter.js'\nimport * as EditorSelection from '../EditorSelection/EditorSelection.js'\n\nconst editorCursorsVerticalWithIntlSegmenter = (\n editor,\n getPosition,\n getEdgePosition,\n delta\n) => {\n const edgePosition = getEdgePosition(editor)\n const moveSelection = (selection) => {\n const position = getPosition(selection)\n if (position.rowIndex === edgePosition.rowIndex) {\n return {\n start: edgePosition,\n end: edgePosition,\n }\n }\n\n const lineCurrent = TextDocument.getLine(editor, position.rowIndex)\n const lineOther = TextDocument.getLine(editor, position.rowIndex + delta)\n\n const segmenter = TextSegmenter.create()\n const lineCurrentVisualIndex = segmenter.visualIndex(\n lineCurrent,\n position.columnIndex\n )\n\n const lineOtherModelIndex = segmenter.modelIndex(\n lineOther,\n lineCurrentVisualIndex\n )\n\n const newPosition = {\n rowIndex: position.rowIndex + delta,\n columnIndex: lineOtherModelIndex,\n }\n return {\n start: newPosition,\n end: newPosition,\n }\n }\n const selectionEdits = editor.selections.map(moveSelection)\n return Editor.scheduleSelections(editor, selectionEdits)\n}\n\nconst moveSelectionWithoutIntlSegmenter = (\n selections,\n i,\n selectionStartRow,\n selectionStartColumn,\n selectionEndRow,\n selectionEndColumn\n) => {\n if (selectionStartRow === 0) {\n EditorSelection.moveRangeToPosition(selections, i, 0, 0)\n } else {\n EditorSelection.moveRangeToPosition(\n selections,\n i,\n selectionStartRow - 1,\n selectionStartColumn\n )\n }\n}\n\nconst getNewSelections = (selections) => {\n return EditorSelection.map(selections, moveSelectionWithoutIntlSegmenter)\n}\n\nexport const cursorVertical = (editor, getPosition, getEdgePosition, delta) => {\n // if (TextSegmenter.supported()) {\n // return editorCursorsVerticalWithIntlSegmenter(\n // editor,\n // getPosition,\n // getEdgePosition,\n // delta\n // )\n // }\n const selections = editor.selections\n const newSelections = getNewSelections(selections, delta)\n return Editor.scheduleSelections(editor, newSelections)\n}\n", "import * as EditorCursorVertical from './EditorCommandCursorVertical.js'\n\nconst getEdgePosition = (editor) => {\n return {\n rowIndex: 0,\n columnIndex: 0,\n }\n}\n\nconst getPosition = (selection) => {\n return selection.start\n}\n\nexport const cursorUp = (editor) => {\n return EditorCursorVertical.cursorVertical(\n editor,\n getPosition,\n getEdgePosition,\n -1\n )\n}\n", "import * as EditorCursorHorizontalLeft from './EditorCommandCursorHorizontalLeft.js'\nimport * as EditorDelta from './EditorCommandDelta.js'\n\n// TODO put all of these into editor -> also makes extracting editor into standalone npm package easier (no 20+ modules, just single ~10kB bundle)\n// also can share code between moveCursorWordRight moveCursoryWordLeft deleteCursorWordLeft\n\nexport const cursorWordLeft = (editor) => {\n return EditorCursorHorizontalLeft.editorCursorHorizontalLeft(\n editor,\n EditorDelta.wordLeft\n )\n}\n", "import * as EditorCursorHorizontalLeft from './EditorCommandCursorHorizontalLeft.js'\nimport * as EditorDelta from './EditorCommandDelta.js'\n\nexport const cursorWordPartLeft = (editor) => {\n return EditorCursorHorizontalLeft.editorCursorHorizontalLeft(\n editor,\n EditorDelta.wordPartLeft\n )\n}\n", "import * as EditorCursorHorizontalRight from './EditorCommandCursorHorizontalRight.js'\nimport * as EditorDelta from './EditorCommandDelta.js'\n\nexport const cursorWordPartRight = (editor) => {\n return EditorCursorHorizontalRight.editorCursorHorizontalRight(\n editor,\n EditorDelta.wordPartRight\n )\n}\n", "import * as EditorCursorHorizontalRight from './EditorCommandCursorHorizontalRight.js'\nimport * as EditorDelta from './EditorCommandDelta.js'\n\nexport const cursorWordRight = (editor) => {\n return EditorCursorHorizontalRight.editorCursorHorizontalRight(\n editor,\n EditorDelta.wordRight\n )\n}\n", "import * as Command from '../Command/Command.js'\nimport * as Editor from '../Editor/Editor.js'\nimport * as EditOrigin from '../EditOrigin/EditOrigin.js'\nimport { editorReplaceSelections } from './EditorCommandReplaceSelection.js'\n\nexport const cut = async (editor) => {\n const selection = editor.selections[0]\n if (selection.start === selection.end) {\n // TODO cut line where cursor is\n } else {\n // cut selection\n }\n const changes = editorReplaceSelections(editor, [''], EditOrigin.EditorCut)\n const text = changes[0].deleted.join('\\n')\n // TODO remove selected text from document\n await Command.execute(\n /* ClipBoard.writeText */ 'ClipBoard.writeText',\n /* text */ text\n )\n return Editor.scheduleDocumentAndCursorsSelections(editor, changes)\n}\n", "import * as Editor from '../Editor/Editor.js'\nimport * as TextDocument from '../TextDocument/TextDocument.js'\nimport { editorReplaceSelections } from './EditorCommandReplaceSelection.js'\nimport * as EditorGetPositionLeft from './EditorCommandGetPositionLeft.js'\nimport * as EditorSelection from '../EditorSelection/EditorSelection.js'\nimport * as EditOrigin from '../EditOrigin/EditOrigin.js'\n\n// TODO optimize this function by profiling and not allocating too many objects\nconst getChanges = (lines, selections, getDelta) => {\n const changes = []\n const deleteSelection = (\n selectionStartRow,\n selectionStartColumn,\n selectionEndRow,\n selectionEndColumn\n ) => {\n const positionLeft = EditorGetPositionLeft.editorGetPositionLeft(\n selectionStartRow,\n selectionStartColumn,\n lines,\n getDelta\n )\n const selectionEnd = {\n rowIndex: selectionEndRow,\n columnIndex: selectionEndColumn,\n }\n changes.push({\n start: positionLeft,\n end: selectionEnd,\n inserted: [''],\n deleted: TextDocument.getSelectionText(\n { lines },\n {\n start: positionLeft,\n end: selectionEnd,\n }\n ),\n origin: EditOrigin.Delete,\n })\n }\n EditorSelection.forEach(selections, deleteSelection)\n return changes\n}\n\nexport const editorDeleteHorizontalLeft = (editor, getDelta) => {\n const lines = editor.lines\n const selections = editor.selections\n if (EditorSelection.isEverySelectionEmpty(selections)) {\n const changes = getChanges(lines, selections, getDelta)\n return Editor.scheduleDocumentAndCursorsSelections(editor, changes)\n }\n const changes = editorReplaceSelections(editor, [''], EditOrigin.Delete)\n return Editor.scheduleDocumentAndCursorsSelections(editor, changes)\n}\n", "import * as EditorDeleteHorizontalLeft from './EditorCommandDeleteHorizontalLeft.js'\nimport * as EditorDelta from './EditorCommandDelta.js'\n\nexport const deleteAllLeft = (editor) => {\n return EditorDeleteHorizontalLeft.editorDeleteHorizontalLeft(\n editor,\n EditorDelta.lineCharacterStart\n )\n}\n", "import * as Editor from '../Editor/Editor.js'\nimport * as TextDocument from '../TextDocument/TextDocument.js'\nimport * as EditorGetPositionRight from './EditorCommandGetPositionRight.js'\nimport { editorReplaceSelections } from './EditorCommandReplaceSelection.js'\nimport * as EditorSelection from '../EditorSelection/EditorSelection.js'\nimport * as EditOrigin from '../EditOrigin/EditOrigin.js'\n\nconst getChanges = (editor, getDelta) => {\n const selections = editor.selections\n if (EditorSelection.isEverySelectionEmpty(selections)) {\n const changes = []\n const lines = editor.lines\n for (let i = 0; i < selections.length; i += 4) {\n const selectionStartRow = selections[i]\n const selectionStartColumn = selections[i + 1]\n const selectionEndRow = selections[i + 2]\n const selectionEndColumn = selections[i + 3]\n const start = {\n rowIndex: selectionStartRow,\n columnIndex: selectionStartColumn,\n }\n const positionRight = EditorGetPositionRight.editorGetPositionRight(\n start,\n lines,\n getDelta\n )\n changes.push({\n start: start,\n end: positionRight,\n inserted: [''],\n deleted: TextDocument.getSelectionText(editor, {\n start: start,\n end: positionRight,\n }),\n origin: EditOrigin.DeleteHorizontalRight,\n })\n }\n return changes\n }\n const changes = editorReplaceSelections(\n editor,\n [''],\n EditOrigin.DeleteHorizontalRight\n )\n return changes\n}\n\nexport const editorDeleteHorizontalRight = (editor, getDelta) => {\n const changes = getChanges(editor, getDelta)\n return Editor.scheduleDocumentAndCursorsSelections(editor, changes)\n}\n", "import * as EditorDeleteHorizontalRight from './EditorCommandDeleteHorizontalRight.js'\nimport * as EditorDelta from './EditorCommandDelta.js'\n\nexport const deleteAllRight = (editor) => {\n return EditorDeleteHorizontalRight.editorDeleteHorizontalRight(\n editor,\n EditorDelta.lineEnd\n )\n}\n", "import * as EditorDeleteHorizontalLeft from './EditorCommandDeleteHorizontalLeft.js'\nimport * as EditorDelta from './EditorCommandDelta.js'\n\nexport const deleteCharacterLeft = (editor) => {\n return EditorDeleteHorizontalLeft.editorDeleteHorizontalLeft(\n editor,\n EditorDelta.characterLeft\n )\n}\n\nexport const deleteLeft = deleteCharacterLeft\n", "import * as EditorDeleteHorizontalRight from './EditorCommandDeleteHorizontalRight.js'\nimport * as EditorDelta from './EditorCommandDelta.js'\n\nexport const deleteCharacterRight = (editor) => {\n return EditorDeleteHorizontalRight.editorDeleteHorizontalRight(\n editor,\n EditorDelta.characterRight\n )\n}\n\nexport const deleteRight = deleteCharacterRight\n", "import * as EditorDeleteHorizontalLeft from './EditorCommandDeleteHorizontalLeft.js'\nimport * as EditorDelta from './EditorCommandDelta.js'\n\nexport const deleteWordLeft = (editor) => {\n return EditorDeleteHorizontalLeft.editorDeleteHorizontalLeft(\n editor,\n EditorDelta.wordLeft\n )\n}\n", "import * as EditorDeleteHorizontalLeft from './EditorCommandDeleteHorizontalLeft.js'\nimport * as EditorDelta from './EditorCommandDelta.js'\n\nexport const deleteWordPartLeft = (editor) => {\n EditorDeleteHorizontalLeft.editorDeleteHorizontalLeft(\n editor,\n EditorDelta.wordPartLeft\n )\n}\n", "import * as EditorDeleteHorizontalRight from './EditorCommandDeleteHorizontalRight.js'\nimport * as EditorDelta from './EditorCommandDelta.js'\n\nexport const deleteWordPartRight = (editor) => {\n EditorDeleteHorizontalRight.editorDeleteHorizontalRight(\n editor,\n EditorDelta.wordPartRight\n )\n}\n", "import * as EditorDeleteHorizontalRight from './EditorCommandDeleteHorizontalRight.js'\nimport * as EditorDelta from './EditorCommandDelta.js'\n\nexport const editorDeleteWordRight = (editor) => {\n return EditorDeleteHorizontalRight.editorDeleteHorizontalRight(\n editor,\n EditorDelta.wordRight\n )\n}\n", "// based on https://github.com/bevacqua/fuzzysearch/blob/master/index.js\n\nexport const fuzzySearch = (needle, haystack) => {\n needle = needle.toLowerCase()\n haystack = haystack.toLowerCase()\n const hlen = haystack.length\n const nlen = needle.length\n if (nlen > hlen) {\n return false\n }\n if (nlen === hlen) {\n return needle === haystack\n }\n outer: for (let i = 0, j = 0; i < nlen; i++) {\n const nch = needle.charCodeAt(i)\n while (j < hlen) {\n if (haystack.charCodeAt(j++) === nch) {\n continue outer\n }\n }\n return false\n }\n return true\n}\n", "export { fuzzySearch } from './FuzzySearchMrAleph.js'\n", "import * as Assert from '../Assert/Assert.js'\nimport * as FuzzySearch from '../FuzzySearch/FuzzySearch.js'\nimport * as GlobalEventBus from '../GlobalEventBus/GlobalEventBus.js'\nimport * as RendererProcess from '../RendererProcess/RendererProcess.js'\nimport * as ViewletManager from '../ViewletManager/ViewletManager.js'\nimport * as Viewlet from '../Viewlet/Viewlet.js'\nimport * as EditorBlur from './EditorCommandBlur.js'\nimport * as EditorPosition from './EditorCommandPosition.js'\nimport * as ViewletState from '../ViewletStates/ViewletStates.js'\nimport * as ViewletModule from '../ViewletModule/ViewletModule.js'\n\nconst handleBlur = () => {\n close()\n}\n\n/**\n *\n * @param {string} line\n * @param {number} columnIndex\n * @returns\n */\nconst getLeadingWord = (line, columnIndex) => {\n console.log({ line })\n Assert.string(line)\n Assert.number(columnIndex)\n for (let i = columnIndex - 1; i >= 0; i--) {\n if (!RE_CHARACTER.test(line[i])) {\n console.log({ i, columnIndex })\n return line.slice(i + 1, columnIndex)\n }\n }\n return line.slice(0, columnIndex)\n}\n\nconst filterCompletionItems = (completionItems, leadingWord) => {\n const filterCompletionItem = (completionItem) => {\n const labelMatch = FuzzySearch.fuzzySearch(\n leadingWord,\n completionItem.label\n )\n return labelMatch\n }\n console.log({ completionItems, leadingWord })\n const filtered = completionItems.filter(filterCompletionItem)\n return filtered\n}\n\nconst handleSelectionChange = (editor, selectionChanges) => {\n const selection = selectionChanges[0]\n const end = selection.end\n if (end.rowIndex !== state.rowIndex) {\n close()\n return\n }\n const line = editor.lines[end.rowIndex]\n const leadingWord = getLeadingWord(line, end.columnIndex)\n const oldStart = state.columnIndex - state.leadingWord.length\n const newStart = end.columnIndex - leadingWord.length\n if (oldStart !== newStart) {\n close()\n return\n }\n // TODO move completions widget and filter\n\n // TODO this doesn't work for variable width characters (unicode/emoji)\n\n const filteredCompletionItems = filterCompletionItems(\n state.completionItems,\n leadingWord\n )\n state.filteredCompletionItems = filteredCompletionItems\n state.leadingWord = leadingWord\n console.log({ leadingWord })\n const x = EditorPosition.x(editor, editor.cursor)\n const y = EditorPosition.y(editor, editor.cursor)\n RendererProcess.invoke(\n /* Viewlet.send */ 'Viewlet.send',\n /* id */ 'EditorCompletion',\n /* method */ 'show',\n /* x */ x,\n /* y */ y,\n /* completionItems */ filteredCompletionItems,\n /* reason */ 1\n )\n}\n\nconst handleCursorChange = (anyEditor, cursorChange) => {\n console.log('cursor changed')\n}\n\n// TODO there are still race conditions in this function:\n// - when open is called twice, previous dom nodes can either be reused or the previous dom nodes must be disposed\n\nexport const openCompletion = async (editor, openingReason = 1) => {\n console.log('open editor completion')\n const viewlet = ViewletManager.create(\n ViewletModule.load,\n 'EditorCompletion',\n 'Widget',\n 'builtin://',\n 0,\n 0,\n 0,\n 0\n )\n\n await ViewletManager.load(viewlet)\n return editor\n\n // if (state.isOpened) {\n // // TODO filter\n // console.log('is already open')\n // return\n // }\n // const loadingDelay = Preferences.get('completions.loadingDelay')\n\n // console.log({ loadingDelay })\n // state.abortController.abort()\n // const abortController = new AbortController()\n // state.abortController = abortController\n // EditorBlur.registerListener(handleBlur) // TODO don't like side effect here\n\n // // TODO when editor is disposed, close completions\n\n // GlobalEventBus.addListener('editor.selectionChange', handleSelectionChange)\n // GlobalEventBus.addListener('editor.cursorChange', handleCursorChange)\n // state.isOpened = true\n // state.openingReason = openingReason\n // state.focusedIndex = 0\n // state.rowIndex = editor.cursor.rowIndex\n // state.columnIndex = editor.cursor.columnIndex\n // state.editor = editor\n // const line = editor.lines[editor.cursor.rowIndex]\n // state.leadingWord = getLeadingWord(line, editor.cursor.columnIndex)\n // // TODO race condition: when blur occurs before items arrive, should not show items\n // await RendererProcess.invoke(\n // /* Viewlet.load */ 3030,\n // /* id */ 'EditorCompletion'\n // )\n // if (abortController.signal.aborted) {\n // console.info('canceled')\n // return\n // }\n // await RendererProcess.invoke(\n // /* Viewlet.openWidget */ 3030,\n // /* id */ 'EditorCompletion'\n // )\n // if (abortController.signal.aborted) {\n // console.info('canceled')\n // return\n // }\n // state.loadingTimeout = setTimeout(showLoading, loadingDelay)\n // if (state.loadingTimeout !== -1) {\n // clearTimeout(state.loadingTimeout)\n // }\n // if (abortController.signal.aborted) {\n // console.info('canceled')\n // return\n // }\n // state.completionItems = newCompletionItems\n\n // const filteredCompletionItems = filterCompletionItems(\n // state.completionItems,\n // state.leadingWord\n // )\n // state.filteredCompletionItems = filteredCompletionItems\n\n // const x = EditorPosition.x(editor, editor.cursor)\n // const y = EditorPosition.y(editor, editor.cursor)\n // // TODO race condition: might already be dispose after each of these calls\n\n // if (newCompletionItems.length === 0 && state.openingReason === 0) {\n // return\n // }\n\n // await RendererProcess.invoke(\n // /* Viewlet.send */ 'Viewlet.send',\n // /* id */ 'EditorCompletion',\n // /* method */ 'show',\n // /* x */ x,\n // /* y */ y,\n // /* items */ filteredCompletionItems,\n // /* reason */ state.openingReason,\n // /* focusedIndex */ state.focusedIndex\n // )\n}\n\nexport const advance = (word) => {\n const includesWord = (completionItem) => {\n return completionItem.includes(word)\n }\n const filteredCompletions = state.completionItems.filter(includesWord)\n RendererProcess.invoke(\n /* EditorCompletion.open */ 836,\n /* items */ filteredCompletions,\n /* reason */ state.openingReason\n )\n}\n\n// export const onDidType = () => {}\n\n// TODO possible race condition\n// also should cancel when new open request comes in\n\nconst RE_CHARACTER = new RegExp(/^\\p{L}/, 'u')\n\nconst isCharacter = (text) => {\n return RE_CHARACTER.test(text)\n}\n\n// TODO trigger characters should be specific per language id\nconst isTriggerCharacter = (text) => {\n return text === '<' || text === '.'\n}\n\nexport const openFromType = async (editor, text) => {\n // if (isCharacter(text) || isTriggerCharacter(text)) {\n // await open(editor, 0)\n // } else if (state.isOpened) {\n // await close()\n // }\n return ViewletState.getState('EditorText')\n}\n\nexport const close = async (editor) => {\n EditorBlur.removeListener(handleBlur)\n GlobalEventBus.removeListener('editor.selectionChange', handleSelectionChange)\n GlobalEventBus.removeListener('editor.cursorChange', handleCursorChange)\n await Viewlet.dispose('EditorCompletion')\n return editor\n}\n", "import * as Editor from '../Editor/Editor.js'\nimport * as EditOrigin from '../EditOrigin/EditOrigin.js'\n\nexport const state = {\n isComposing: false,\n compositionText: '',\n}\n\nexport const compositionStart = (editor, event) => {\n state.isComposing = true\n return editor\n}\n\nconst getCompositionChanges = (selections, data) => {\n const changes = []\n for (let i = 0; i < selections.length; i += 4) {\n const selectionStartRow = selections[i]\n const selectionStartColumn = selections[i + 1]\n const selectionEndRow = selections[i + 2]\n const selectionEndColumn = selections[i + 3]\n const startColumnIndex = selectionStartColumn - state.compositionText.length\n changes.push({\n start: {\n rowIndex: selectionStartRow,\n columnIndex: startColumnIndex,\n },\n end: {\n rowIndex: selectionEndRow,\n columnIndex: selectionEndColumn,\n },\n inserted: [data],\n deleted: [state.compositionText],\n origin: EditOrigin.CompositionUpdate,\n })\n }\n return changes\n}\n\nexport const compositionUpdate = (editor, data) => {\n const selections = editor.selections\n const changes = getCompositionChanges(selections, data)\n state.compositionText = data\n return Editor.scheduleDocumentAndCursorsSelections(editor, changes)\n}\n\nexport const compositionEnd = (editor, data) => {\n const selections = editor.selections\n const changes = getCompositionChanges(selections, data)\n state.isComposing = false\n state.compositionText = ''\n return Editor.scheduleDocumentAndCursorsSelections(editor, changes)\n}\n", "import * as Command from '../Command/Command.js'\nimport * as TextDocument from '../TextDocument/TextDocument.js'\nimport * as Editor from '../Editor/Editor.js'\n\n// TODO add test\nexport const copy = async (editor) => {\n if (!Editor.hasSelection(editor)) {\n // TODO copy line where cursor is\n return editor\n }\n const selectionStartRowIndex = editor.selections[0]\n const selectionStartColumnIndex = editor.selections[1]\n const selectionEndRowIndex = editor.selections[2]\n const selectionEndColumnIndex = editor.selections[3]\n const range = {\n start: {\n rowIndex: selectionStartRowIndex,\n columnIndex: selectionStartColumnIndex,\n },\n end: {\n rowIndex: selectionEndRowIndex,\n columnIndex: selectionEndColumnIndex,\n },\n }\n const text = TextDocument.getSelectionText(editor, range).join('\\n')\n await Command.execute(\n /* ClipBoard.writeText */ 'ClipBoard.writeText',\n /* text */ text\n )\n return editor\n}\n", "import * as Viewlet from '../Viewlet/Viewlet.js'\nimport * as ViewletModuleId from '../ViewletModuleId/ViewletModuleId.js'\n\nexport const openFind = async (state) => {\n await Viewlet.openWidget(ViewletModuleId.FindWidget)\n return state\n}\n", "export const setSelections = (editor, selections) => {\n const { minLineY, maxLineY, rowHeight } = editor\n const startRowIndex = selections[0]\n if (startRowIndex < minLineY) {\n const deltaY = startRowIndex * rowHeight\n return {\n ...editor,\n minLineY: startRowIndex,\n maxLineY: startRowIndex + 1,\n selections,\n deltaY,\n }\n }\n if (startRowIndex > maxLineY) {\n const deltaY = startRowIndex * rowHeight\n return {\n ...editor,\n minLineY: startRowIndex,\n maxLineY: startRowIndex + 1,\n selections,\n deltaY,\n }\n }\n return {\n ...editor,\n selections,\n }\n}\n", "import * as ExtensionHostActivationEvent from '../ExtensionHostActivationEvent/ExtensionHostActivationEvent.js'\nimport * as ExtensionHostEditor from './ExtensionHostEditor.js'\n\nexport const executeFormattingProvider = (editor) => {\n return ExtensionHostEditor.execute({\n editor,\n event: ExtensionHostActivationEvent.OnFormatting,\n method: 'ExtensionHostFormatting.executeFormattingProvider',\n args: [],\n noProviderFoundMessage: 'No formatting provider found',\n combineResults(results) {\n return results[0]\n },\n })\n}\n", "import * as ExtensionHostFormatting from '../ExtensionHost/ExtensionHostFormatting.js'\n\n// TODO format should be executed in parallel with saving\n// -> fast save, no need to wait for formatting\n// -> fast formatting, no need to wait for save\n\n// TODO should format on save when closing/switching editor?\n\n// TODO format with cursor\n// TODO should be in editor folder\n\nexport const format = async (editor) => {\n const edits = await ExtensionHostFormatting.executeFormattingProvider(editor)\n return edits\n}\n", "import * as Editor from '../Editor/Editor.js'\nimport * as Format from '../Format/Format.js'\nimport * as TextDocument from '../TextDocument/TextDocument.js'\nimport * as EditOrigin from '../EditOrigin/EditOrigin.js'\nimport * as SplitLines from '../SplitLines/SplitLines.js'\nimport * as EditorShowMessage from './EditorCommandShowMessage.js'\n\nconst expectedErrorMessage = `Failed to execute formatting provider: FormattingError:`\n\nconst isFormattingError = (error) => {\n return (\n error &&\n error instanceof Error &&\n error.message.startsWith(expectedErrorMessage)\n )\n}\n\n// TODO also format with cursor\nexport const format = async (editor) => {\n try {\n const edits = await Format.format(editor)\n if (!Array.isArray(edits)) {\n console.warn('something is wrong with format on save', edits)\n return editor\n }\n if (edits.length === 0) {\n return editor\n }\n const { lines } = editor\n // TODO support multiple edits?\n const edit = edits[0]\n const start = TextDocument.positionAt(editor, edit.startOffset)\n const end = TextDocument.positionAt(editor, edit.endOffset)\n const documentEdits = [\n {\n start,\n end,\n inserted: SplitLines.splitLines(edit.inserted),\n deleted: lines,\n origin: EditOrigin.Format,\n },\n ]\n return Editor.scheduleDocumentAndCursorsSelections(editor, documentEdits)\n } catch (error) {\n if (isFormattingError(error)) {\n console.error(\n `Formatting Error:`,\n // @ts-ignore\n error.message.slice(expectedErrorMessage.length)\n )\n return editor\n }\n console.error(error)\n const displayErrorMessage = `${error}`\n await EditorShowMessage.editorShowMessage(\n editor,\n 0,\n 0,\n displayErrorMessage,\n true\n )\n return editor\n }\n}\n", "import * as ExtensionHostActivationEvent from '../ExtensionHostActivationEvent/ExtensionHostActivationEvent.js'\nimport * as ExtensionHostEditor from './ExtensionHostEditor.js'\n\nconst combineResults = (results) => {\n return results[0]\n}\n\nexport const executeDefinitionProvider = (editor, offset) => {\n return ExtensionHostEditor.execute({\n editor,\n event: ExtensionHostActivationEvent.OnDefinition,\n method: 'ExtensionHostDefinition.executeDefinitionProvider',\n args: [offset],\n noProviderFoundMessage: 'no definition provider found',\n combineResults,\n })\n}\n", "const RE_WORD_START = /^\\w+/\n\nconst RE_WORD_END = /\\w+$/\n\nexport const getWordAt = (editor, rowIndex, columnIndex) => {\n const line = editor.lines[rowIndex]\n const before = line.slice(0, columnIndex)\n const matchBefore = before.match(RE_WORD_END)\n const after = line.slice(columnIndex)\n const matchAfter = after.match(RE_WORD_START)\n let word = ''\n if (matchBefore) {\n word += matchBefore[0]\n }\n if (matchAfter) {\n word += matchAfter[0]\n }\n return {\n word,\n }\n}\n", "import * as Command from '../Command/Command.js'\nimport * as Editor from '../Editor/Editor.js'\nimport * as TextDocument from '../TextDocument/TextDocument.js'\nimport * as EditorShowMessage from './EditorCommandShowMessage.js'\nimport * as EditorGetWordAt from './EditorCommandGetWordAt.js'\n\nexport const goTo = async ({\n editor,\n getLocation,\n getNoLocationFoundMessage,\n getErrorMessage,\n isNoProviderFoundError,\n}) => {\n const rowIndex = editor.selections[0]\n const columnIndex = editor.selections[1]\n try {\n const definition = await getLocation(editor, rowIndex, columnIndex)\n // TODO if editor is already disposed at this point, do nothing\n if (!definition) {\n // TODO show popup that no definition was found\n // TODO if there was an error, show popup that go to definition resulted in an error\n const info = EditorGetWordAt.getWordAt(editor, rowIndex, columnIndex)\n const message = getNoLocationFoundMessage(info)\n return EditorShowMessage.editorShowMessage(\n editor,\n rowIndex,\n columnIndex,\n message,\n false\n )\n }\n if (\n typeof definition.uri !== 'string' ||\n typeof definition.startOffset !== 'number' ||\n typeof definition.endOffset !== 'number'\n ) {\n console.warn('invalid definition result', definition)\n return editor\n }\n\n if (definition.uri === editor.uri) {\n // TODO set cursor to the definition position\n const position = TextDocument.positionAt(editor, definition.startOffset)\n const selectionEdits = [\n {\n start: position,\n end: position,\n },\n ]\n return Editor.scheduleSelections(editor, selectionEdits)\n }\n // TODO if definition.file is not of type string, show a popup that definition.file must be of type string\n // TODO open file and scroll to that position and set cursor to that position\n\n await Command.execute(\n /* Main.openUri */ 'Main.openUri',\n /* uri */ definition.file\n )\n return editor\n } catch (error) {\n // TODO if editor is already disposed at this point, do nothing\n if (isNoProviderFoundError(error)) {\n const displayErrorMessage = getErrorMessage(error)\n await EditorShowMessage.editorShowMessage(\n editor,\n rowIndex,\n columnIndex,\n displayErrorMessage,\n false\n )\n return editor\n }\n console.error(error)\n const displayErrorMessage = getErrorMessage(error)\n await EditorShowMessage.editorShowMessage(\n editor,\n rowIndex,\n columnIndex,\n displayErrorMessage,\n true\n )\n return editor\n }\n}\n", "import * as ExtensionHostDefinition from '../ExtensionHost/ExtensionHostDefinition.js'\nimport * as I18nString from '../I18NString/I18NString.js'\nimport * as TextDocument from '../TextDocument/TextDocument.js'\nimport * as EditorGoTo from './EditorCommandGoTo.js'\n\n/**\n * @enum {string}\n */\nconst UiStrings = {\n NoDefinitionFound: 'No definition found',\n NoDefinitionFoundFor: `No definition found for '{PH1}'`,\n}\n\n// TODO race condition, check that editor hasn't been closed in the meantime\n\n// TODO in case of error should show message \"Definition Error: Cannot ready Property x of undefined\"\n\n// TODO show some kind of message maybe (\"No Definition found\")\n\n// TODO possible to do this with events/state machine instead of promises -> enables canceling operations / concurrent calls\n\n// TODO there are still race conditions in this function:\n// - when open is called twice, previous dom nodes can either be reused or the previous dom nodes must be disposed\n\nconst getLocation = async (editor, rowIndex, columnIndex) => {\n const offset = TextDocument.offsetAt(editor, rowIndex, columnIndex)\n const definition = await ExtensionHostDefinition.executeDefinitionProvider(\n editor,\n offset\n )\n return definition\n}\n\nconst getNoLocationFoundMessage = (info) => {\n if (info.word) {\n return I18nString.i18nString(UiStrings.NoDefinitionFoundFor, {\n PH1: info.word,\n })\n }\n return I18nString.i18nString(UiStrings.NoDefinitionFound)\n}\n\nconst getErrorMessage = (error) => {\n // if (\n // error &&\n // error.message &&\n // error.message.startsWith('Failed to execute definition provider: ')\n // ) {\n // return error.message.replace('Failed to execute definition provider: ', '')\n // }\n return `${error}`\n}\n\nconst isNoProviderFoundError = (error) => {\n return (\n error &&\n // @ts-ignore\n error.message &&\n // @ts-ignore\n error.message.startsWith(\n 'Failed to execute definition provider: No definition provider found'\n )\n )\n}\n\nexport const goToDefinition = (editor) => {\n return EditorGoTo.goTo({\n editor,\n getLocation,\n getNoLocationFoundMessage,\n getErrorMessage,\n isNoProviderFoundError,\n })\n}\n", "import * as ExtensionHostActivationEvent from '../ExtensionHostActivationEvent/ExtensionHostActivationEvent.js'\nimport * as ExtensionHostEditor from './ExtensionHostEditor.js'\n\nconst combineResults = (results) => {\n return results[0]\n}\n\nexport const executeTypeDefinitionProvider = (editor, offset) => {\n return ExtensionHostEditor.execute({\n editor,\n event: ExtensionHostActivationEvent.OnTypeDefinition,\n method: 'ExtensionHostTypeDefinition.executeTypeDefinitionProvider',\n args: [offset],\n noProviderFoundMessage: 'No type definition provider found',\n noProviderFoundResult: undefined,\n combineResults,\n })\n}\n", "import * as ExtensionHostTypeDefinition from '../ExtensionHost/ExtensionHostTypeDefinition.js'\nimport * as I18nString from '../I18NString/I18NString.js'\nimport * as TextDocument from '../TextDocument/TextDocument.js'\nimport * as EditorGoTo from './EditorCommandGoTo.js'\n\n// TODO duplicate code with editorCommandGoToDefinition\n// TODO race condition, check that editor hasn't been closed in the meantime\n\n// TODO in case of error should show message \"Definition Error: Cannot ready Property x of undefined\"\n\n// TODO show some kind of message maybe (\"No Definition found\")\n\n// TODO possible to do this with events/state machine instead of promises -> enables canceling operations / concurrent calls\n\n// TODO there are still race conditions in this function:\n// - when open is called twice, previous dom nodes can either be reused or the previous dom nodes must be disposed\n\nconst UiStrings = {\n NoTypeDefinitionFound: 'No type definition found',\n NoTypeDefinitionFoundFor: `No type definition found for '{PH1}'`,\n}\n\nconst getTypeDefinitionErrorMessage = (error) => {\n return `${error}`\n}\n\nconst getLocation = async (editor, rowIndex, columnIndex) => {\n const offset = TextDocument.offsetAt(editor, rowIndex, columnIndex)\n const definition =\n await ExtensionHostTypeDefinition.executeTypeDefinitionProvider(\n editor,\n offset\n )\n return definition\n}\n\nconst getNoLocationFoundMessage = (info) => {\n if (info.word) {\n return I18nString.i18nString(UiStrings.NoTypeDefinitionFoundFor, {\n PH1: info.word,\n })\n }\n return I18nString.i18nString(UiStrings.NoTypeDefinitionFound)\n}\n\nconst getErrorMessage = (error) => {\n // if (\n // error &&\n // error.message &&\n // error.message.startsWith('Failed to execute type definition provider: ')\n // ) {\n // return error.message.replace(\n // 'Failed to execute type definition provider: ',\n // ''\n // )\n // }\n return `${error}`\n}\n\nconst isNoProviderFoundError = (error) => {\n return (\n error &&\n // @ts-ignore\n error.message &&\n // @ts-ignore\n error.message.startsWith(\n 'Failed to execute type definition provider: No type definition provider found'\n )\n )\n}\n\nexport const goToTypeDefinition = (editor, explicit = true) => {\n return EditorGoTo.goTo({\n editor,\n getLocation,\n getNoLocationFoundMessage,\n isNoProviderFoundError,\n getErrorMessage,\n })\n}\n", "// TODO adjust relative position\nexport const getSelectionFromNativeRange = (editor, range) => {\n return new Uint32Array([\n range.startRowIndex,\n range.startColumnIndex,\n range.endRowIndex,\n range.endColumnIndex,\n ])\n}\n", "import * as Editor from '../Editor/Editor.js'\nimport * as TextDocument from '../TextDocument/TextDocument.js'\nimport * as EditOrigin from '../EditOrigin/EditOrigin.js'\nimport * as EditorGetSelectionFromNativeRange from './EditorCommandGetSelectionFromNativeRange.js'\n\nconst getChanges = (editor, data, range) => {\n const selection =\n EditorGetSelectionFromNativeRange.getSelectionFromNativeRange(editor, range)\n const selectionRange = {\n start: {\n rowIndex: selection[0],\n columnIndex: selection[1],\n },\n end: {\n rowIndex: selection[2],\n columnIndex: selection[3],\n },\n }\n const changes = [\n {\n start: selectionRange.start,\n end: selectionRange.end,\n inserted: [data],\n deleted: TextDocument.getSelectionText(editor, selectionRange),\n origin: EditOrigin.ContentEditableInput,\n },\n ]\n return changes\n}\n\nexport const handleBeforeInputFromContentEditable = (editor, data, range) => {\n const changes = getChanges(editor, data, range)\n return Editor.scheduleDocumentAndCursorsSelections(editor, changes)\n}\n", "import * as Editor from '../Editor/Editor.js'\nimport * as TextDocument from '../TextDocument/TextDocument.js'\n\n// match all words, including umlauts, see https://stackoverflow.com/questions/5436824/matching-accented-characters-with-javascript-regexes/#answer-11550799\nconst RE_WORD_START = /^[a-z\\u00C0-\\u017F\\d]+/i\nconst RE_WORD_END = /[a-z\\u00C0-\\u017F\\d]+$/i\n\nconst getNewSelections = (line, rowIndex, columnIndex) => {\n const before = line.slice(0, columnIndex)\n const after = line.slice(columnIndex)\n const beforeMatch = before.match(RE_WORD_END)\n const afterMatch = after.match(RE_WORD_START)\n const columnStart = columnIndex - (beforeMatch ? beforeMatch[0].length : 0)\n const columnEnd = columnIndex + (afterMatch ? afterMatch[0].length : 0)\n const newSelections = new Uint32Array([\n rowIndex,\n columnStart,\n rowIndex,\n columnEnd,\n ])\n return newSelections\n}\n\nexport const selectWord = (editor, rowIndex, columnIndex) => {\n const line = TextDocument.getLine(editor, rowIndex)\n const newSelections = getNewSelections(line, rowIndex, columnIndex)\n return Editor.scheduleSelections(editor, newSelections)\n}\n", "import * as EditorSelectWord from './EditorCommandSelectWord.js'\nimport * as EditorPosition from './EditorCommandPosition.js'\n\nexport const handleDoubleClick = (editor, x, y, offset) => {\n const position = EditorPosition.at(editor, x, y, offset)\n return EditorSelectWord.selectWord(\n editor,\n position.rowIndex,\n position.columnIndex\n )\n}\n", "import * as ExtensionHostActivationEvent from '../ExtensionHostActivationEvent/ExtensionHostActivationEvent.js'\nimport * as ExtensionHostEditor from './ExtensionHostEditor.js'\n\nconst combineResults = (results) => {\n return results[0]\n}\n\nexport const executeHoverProvider = (editor, offset) => {\n return ExtensionHostEditor.execute({\n event: ExtensionHostActivationEvent.OnHover,\n editor,\n method: 'ExtensionHostHover.execute',\n args: [offset],\n noProviderFoundMessage: 'No hover provider found',\n combineResults,\n })\n}\n", "import * as ExtensionHostHover from '../ExtensionHost/ExtensionHostHover.js'\nimport * as RendererProcess from '../RendererProcess/RendererProcess.js'\nimport * as TextDocument from '../TextDocument/TextDocument.js'\nimport * as EditorPosition from './EditorCommandPosition.js'\n\nconst getHover = async (editor, rowIndex, columnIndex) => {\n const offset = TextDocument.offsetAt(editor, rowIndex, columnIndex)\n const hover = await ExtensionHostHover.executeHoverProvider(editor, offset)\n return hover\n}\n\nconst showHover = async (editor, position) => {\n const hover = await getHover(editor, position.rowIndex, position.columnIndex)\n if (!hover) {\n console.log('no hover')\n return\n }\n\n RendererProcess.invoke(\n /* EditorHover.show */ 6216,\n /* x */ editor.left + position.columnIndex * editor.columnWidth,\n /* y */ editor.top + position.rowIndex * editor.rowHeight,\n /* hover */ hover\n )\n console.log({ hover })\n}\n\nexport const handleMouseMove = (editor, x, y) => {\n const position = EditorPosition.at(editor, x, y)\n // console.log(position)\n // showHover(editor, position)\n return editor\n}\n", "import * as EditorPosition from './EditorCommandPosition.js'\nimport * as Assert from '../Assert/Assert.js'\nimport * as ExtensionHostDefinition from '../ExtensionHost/ExtensionHostDefinition.js'\nimport * as TextDocument from '../TextDocument/TextDocument.js'\nimport * as RendererProcess from '../RendererProcess/RendererProcess.js'\n\nconst getTokenIndex = (tokens, offset) => {\n let currentOffset = 0\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i]\n currentOffset += token.length\n if (currentOffset >= offset) {\n return i\n }\n }\n return -1\n}\n\nexport const handleMouseMoveWithAltKey = async (editor, x, y, offset) => {\n Assert.object(editor)\n Assert.number(x)\n Assert.number(y)\n Assert.number(offset)\n const position = EditorPosition.at(editor, x, y, offset)\n const documentOffset = TextDocument.offsetAt(\n editor,\n position.rowIndex,\n position.columnIndex\n )\n try {\n const definition = await ExtensionHostDefinition.executeDefinitionProvider(\n editor,\n documentOffset\n )\n if (!definition) {\n return editor\n }\n\n // TODO make sure that editor is not disposed\n\n const definitionStartPosition = TextDocument.positionAt(\n editor,\n definition.startOffset\n )\n const definitionEndPosition = TextDocument.positionAt(\n editor,\n definition.endOffset\n )\n const definitionRelativeStartX = definitionStartPosition.columnIndex\n const definitionRelativeEndX = definitionEndPosition.columnIndex\n const definitionRelativeY =\n definitionStartPosition.rowIndex - editor.minLineY\n\n const lineTokenMap = editor.lineCache[definitionStartPosition.rowIndex + 1]\n console.log({ tokenMap: lineTokenMap })\n console.log({\n lineCache: editor.lineCache,\n rowIndex: definitionStartPosition.rowIndex,\n })\n if (!lineTokenMap) {\n return editor\n }\n const tokenIndex = getTokenIndex(\n lineTokenMap.tokens,\n definitionStartPosition.columnIndex\n )\n if (tokenIndex === -1) {\n return editor\n }\n console.log({ token: tokenIndex })\n // .tokens\n await RendererProcess.invoke(\n /* Viewlet.invoke */ 'Viewlet.send',\n /* id */ 'EditorText',\n /* method */ 'highlightAsLink',\n /* relativeY */ definitionRelativeY,\n /* tokenIndex */ tokenIndex\n )\n console.log({ definition })\n return editor\n } catch (error) {\n if (\n error &&\n error.message.startsWith(\n 'Failed to execute definition provider: No definition provider found'\n )\n ) {\n return editor\n }\n throw error\n }\n}\n", "import * as Editor from '../Editor/Editor.js'\nimport * as EditorGetSelectionFromNativeRange from './EditorCommandGetSelectionFromNativeRange.js'\n\nexport const editorHandleNativeSelectionChange = (editor, range) => {\n const selections =\n EditorGetSelectionFromNativeRange.getSelectionFromNativeRange(editor, range)\n return Editor.scheduleSelections(editor, selections)\n}\n", "import * as Editor from '../Editor/Editor.js'\nimport * as ScrollBarFunctions from '../ScrollBarFunctions/ScrollBarFunctions.js'\n\n// TODO scrollbar position can be in interval [0, editor.height - editor.scrollBarHeight]\n// when clicked at y <= editor.scrollbarHeight/2, position is set to zero\n// when clicked at y >= editor.height - editor.scrollBarHeight/2, position is set to (editor.height - scrollBarHeight/2)\n// when clicked at y > editor.height - editor.scrollBarHeight/2, position scrollbar at (y - scrollbarHeight/2)\n// additionally, when clicked on scrollbar, scrollbar position shouldn't move\n\nexport const handleScrollBarPointerDown = (state, y) => {\n const { top, deltaY, finalDeltaY, height, scrollBarHeight } = state\n const relativeY = y - top\n const currentScrollBarY = ScrollBarFunctions.getScrollBarY(\n deltaY,\n finalDeltaY,\n height,\n scrollBarHeight\n )\n const diff = relativeY - currentScrollBarY\n if (diff >= 0 && diff < scrollBarHeight) {\n return {\n ...state,\n handleOffset: diff,\n }\n }\n const { percent, handleOffset } = ScrollBarFunctions.getNewDeltaPercent(\n height,\n scrollBarHeight,\n relativeY\n )\n const newDeltaY = percent * finalDeltaY\n return {\n ...Editor.setDeltaYFixedValue(state, newDeltaY),\n handleOffset,\n }\n}\n", "import * as Editor from '../Editor/Editor.js'\n\nconst getNewPercent = (state, relativeY) => {\n const { height, scrollBarHeight } = state\n // if (relativeY <= editor.scrollBarHeight / 2) {\n // console.log('clicked at top')\n // // clicked at top\n // return 0\n // }\n if (relativeY <= height - scrollBarHeight / 2) {\n // clicked in middle\n return relativeY / (height - scrollBarHeight)\n }\n // clicked at bottom\n return 1\n}\n\nexport const handleScrollBarMove = (state, y) => {\n const { top, finalDeltaY, handleOffset } = state\n const relativeY = y - top - handleOffset\n const newPercent = getNewPercent(state, relativeY)\n const newDeltaY = newPercent * finalDeltaY\n return Editor.setDeltaYFixedValue(state, newDeltaY)\n}\n", "export const Ctrl = 'ctrl'\n\nexport const Alt = 'alt'\n\nexport const None = ''\n", "import * as Editor from '../Editor/Editor.js'\n\n// TODO not sure where this state should be\n// TODO maybe rename to selection anchor\nexport const state = {\n position: {\n rowIndex: 0,\n columnIndex: 0,\n },\n}\n\nconst compare = (positionA, positionB) => {\n if (positionA.rowIndex > positionB.rowIndex) {\n return 1\n }\n if (positionA.rowIndex === positionB.rowIndex) {\n if (positionA.columnIndex > positionB.columnIndex) {\n return 1\n }\n if (positionA.columnIndex < positionB.columnIndex) {\n return -1\n }\n return 0\n }\n return -1\n}\n\nconst editorMoveSelectionBackwards = (anchor, position) => {\n return new Uint32Array([\n position.rowIndex,\n position.columnIndex,\n anchor.rowIndex,\n anchor.columnIndex,\n ])\n}\n\nconst editorMoveSelectionEqual = (anchor, position) => {\n return new Uint32Array([\n position.rowIndex,\n position.columnIndex,\n position.rowIndex,\n position.columnIndex,\n ])\n}\n\nconst editorMoveSelectionForwards = (anchor, position) => {\n return new Uint32Array([\n anchor.rowIndex,\n anchor.columnIndex,\n position.rowIndex,\n position.columnIndex,\n ])\n}\n\nconst getNewSelections = (anchor, position) => {\n switch (compare(position, anchor)) {\n case -1:\n return editorMoveSelectionBackwards(anchor, position)\n case 0:\n return editorMoveSelectionEqual(anchor, position)\n case 1:\n return editorMoveSelectionForwards(anchor, position)\n default:\n throw new Error('unexpected comparison result')\n }\n}\n\nexport const editorMoveSelection = (editor, position) => {\n const anchor = state.position\n const newSelections = getNewSelections(anchor, position)\n // TODO if selection equals previous selection -> do nothing\n return Editor.scheduleSelections(editor, newSelections)\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as Editor from '../Editor/Editor.js'\nimport * as ModifierKey from '../ModifierKey/ModifierKey.js'\nimport * as EditorGoToDefinition from './EditorCommandGoToDefinition.js'\nimport * as EditorMoveSelection from './EditorCommandMoveSelection.js'\nimport * as EditorPosition from './EditorCommandPosition.js'\n\nconst handleSingleClickWithAlt = async (editor, position) => {\n // TODO rectangular selection with alt click,\n // but also go to definition with alt click\n const newEditor = await EditorGoToDefinition.goToDefinition(\n editor,\n position,\n /* explicit */ false\n )\n return newEditor\n}\n\nconst handleSingleClickWithCtrl = async (editor, position) => {\n const selections = editor.selections\n for (let i = 0; i < selections.length; i += 4) {\n const selectionStartRow = selections[i]\n const selectionStartColumn = selections[i + 1]\n const selectionEndRow = selections[i + 2]\n const selectionEndColumn = selections[i + 3]\n if (\n selectionStartRow === position.rowIndex &&\n selectionStartColumn === position.columnIndex &&\n selectionEndRow === position.rowIndex &&\n selectionEndColumn === position.columnIndex\n ) {\n // selection exists -> remove\n const newSelections = new Uint32Array(selections.length - 4)\n newSelections.set(selections.subarray(0, i), 0)\n newSelections.set(selections.subarray(i + 4), i)\n return Editor.scheduleSelections(editor, newSelections)\n }\n }\n // TODO selection does not exist -> add\n // TODO insert in order\n const newSelections = new Uint32Array(selections.length + 4)\n newSelections.set(selections, 0)\n const insertIndex = selections.length\n newSelections[insertIndex] = position.rowIndex\n newSelections[insertIndex + 1] = position.columnIndex\n newSelections[insertIndex + 2] = position.rowIndex\n newSelections[insertIndex + 3] = position.columnIndex\n return Editor.scheduleSelections(editor, newSelections)\n}\n\nconst handleSingleClickDefault = (editor, position) => {\n EditorMoveSelection.state.position = position\n return {\n ...editor,\n selections: new Uint32Array([\n position.rowIndex,\n position.columnIndex,\n position.rowIndex,\n position.columnIndex,\n ]),\n focused: true,\n }\n}\n\nconst getFn = (modifier) => {\n switch (modifier) {\n case ModifierKey.Alt:\n return handleSingleClickWithAlt\n case ModifierKey.Ctrl:\n return handleSingleClickWithCtrl\n default:\n return handleSingleClickDefault\n }\n}\n\nexport const handleSingleClick = (editor, modifier, x, y, offset) => {\n Assert.object(editor)\n Assert.string(modifier)\n Assert.number(x)\n Assert.number(y)\n Assert.number(offset)\n const position = EditorPosition.at(editor, x, y, offset)\n const fn = getFn(modifier)\n return fn(editor, position)\n}\n", "import * as ExtensionHostActivationEvent from '../ExtensionHostActivationEvent/ExtensionHostActivationEvent.js'\nimport * as ExtensionHostEditor from './ExtensionHostEditor.js'\n\nconst combineResults = (results) => {\n return results[0]\n}\n\nexport const executeTabCompletionProvider = (editor, offset) => {\n return ExtensionHostEditor.execute({\n editor,\n event: ExtensionHostActivationEvent.OnTabCompletion,\n method: 'ExtensionHost.executeTabCompletionProvider',\n args: [offset],\n noProviderFoundMessage: 'No tab completion provider found',\n combineResults,\n noProviderFoundResult: undefined,\n })\n}\n", "import * as ExtensionHostTabCompletion from '../ExtensionHost/ExtensionHostTabCompletion.js'\nimport * as TextDocument from '../TextDocument/TextDocument.js'\n\nexport const getTabCompletion = async (editor) => {\n const rowIndex = editor.selections[0]\n const columnIndex = editor.selections[1]\n const offset = TextDocument.offsetAt(editor, rowIndex, columnIndex)\n const tabCompletion =\n await ExtensionHostTabCompletion.executeTabCompletionProvider(\n editor,\n offset\n )\n return tabCompletion\n}\n", "import * as Editor from '../Editor/Editor.js'\nimport * as TextDocument from '../TextDocument/TextDocument.js'\nimport * as EditOrigin from '../EditOrigin/EditOrigin.js'\nimport * as SplitLines from '../SplitLines/SplitLines.js'\n\nconst getChanges = (lines, selections, snippet) => {\n // TODO verify that deleted fits in the line\n const insertedLines = SplitLines.splitLines(snippet.inserted)\n const changes = []\n const selectionChanges = []\n for (let i = 0; i < selections.length; i += 4) {\n const selectionStartRow = selections[i]\n const selectionStartColumn = selections[i + 1]\n const selectionEndRow = selections[i + 2]\n const selectionEndColumn = selections[i + 3]\n if (insertedLines.length > 1) {\n const line = TextDocument.getLine({ lines }, selectionStartRow)\n const indent = TextDocument.getIndent(line)\n const insertedLinesHere = [\n insertedLines[0],\n ...insertedLines.slice(1).map((line) => indent + line),\n ]\n const deleted = ['']\n changes.push({\n start: {\n rowIndex: selectionStartRow,\n columnIndex: selectionStartColumn - snippet.deleted,\n },\n end: {\n rowIndex: selectionEndRow,\n columnIndex: selectionEndColumn,\n },\n inserted: insertedLinesHere,\n deleted,\n origin: EditOrigin.EditorSnippet,\n })\n const lastInsertedLine = insertedLines.at(-1)\n selectionChanges.push(\n selectionEndRow + insertedLines.length - deleted.length,\n selectionEndColumn + lastInsertedLine.length,\n selectionEndRow + insertedLines.length - deleted.length,\n selectionEndColumn + lastInsertedLine.length\n )\n } else {\n const line = insertedLines[0]\n const placeholderIndex = line.indexOf('$0')\n if (placeholderIndex !== -1) {\n const inserted = line.replace('$0', '')\n const cursorColumnIndex = selectionEndColumn + 2\n selectionChanges.push(\n selectionStartRow,\n cursorColumnIndex,\n selectionStartRow,\n cursorColumnIndex\n )\n changes.push({\n start: {\n rowIndex: selectionStartRow,\n columnIndex: selectionStartColumn - snippet.deleted,\n },\n end: {\n rowIndex: selectionEndRow,\n columnIndex: selectionEndColumn,\n },\n inserted: [inserted],\n deleted: [''],\n origin: EditOrigin.EditorSnippet,\n })\n } else {\n const cursorColumnIndex = selectionStartColumn - snippet.deleted\n selectionChanges.push(\n selectionStartRow,\n cursorColumnIndex,\n selectionStartRow,\n cursorColumnIndex\n )\n changes.push({\n start: {\n rowIndex: selectionStartRow,\n columnIndex: selectionStartColumn - snippet.deleted,\n },\n end: {\n rowIndex: selectionEndRow,\n columnIndex: selectionEndColumn,\n },\n inserted: insertedLines,\n deleted: [''],\n origin: EditOrigin.EditorSnippet,\n })\n }\n }\n }\n return { changes, selectionChanges: new Uint32Array(selectionChanges) }\n}\n\n// const getIndent =\n// TODO rename to insertSnippet\n// TODO handle snippet tabstops and cursors $0 -> becomes cursor\nexport const editorSnippet = (editor, snippet) => {\n // TODO verify that deleted fits in the line\n const lines = editor.lines\n const selections = editor.selections\n const { changes, selectionChanges } = getChanges(lines, selections, snippet)\n return Editor.scheduleDocumentAndCursorsSelections(\n editor,\n changes,\n selectionChanges\n )\n}\n", "import * as ErrorHandling from '../ErrorHandling/ErrorHandling.js'\nimport * as TabCompletion from '../TabCompletion/TabCompletion.js'\nimport * as EditorShowMessage from './EditorCommandShowMessage.js'\nimport * as EditorSnippet from './EditorCommandSnippet.js'\n\nconst getErrorMessage = (error) => {\n return `${error}`\n}\n\nexport const tabCompletion = async (editor) => {\n try {\n // TODO race condition\n // TODO get tab completion for each cursor\n const tabCompletion = await TabCompletion.getTabCompletion(editor)\n if (!tabCompletion) {\n return editor\n }\n return EditorSnippet.editorSnippet(editor, tabCompletion)\n } catch (error) {\n ErrorHandling.printError(error)\n // TODO cursor should always be of type object\n const rowIndex = editor.selections[0]\n const columnIndex = editor.selections[1]\n return EditorShowMessage.showErrorMessage(\n editor,\n rowIndex,\n columnIndex,\n getErrorMessage(error)\n )\n }\n}\n", "import * as ExtensionHostActivationEvent from '../ExtensionHostActivationEvent/ExtensionHostActivationEvent.js'\nimport * as ExtensionHostEditor from './ExtensionHostEditor.js'\n\nconst combineResults = (results) => {\n return results[0]\n}\n\nexport const executeClosingTagProvider = (editor, offset, openingBrace) => {\n return ExtensionHostEditor.execute({\n editor,\n event: ExtensionHostActivationEvent.OnClosingTag,\n method: 'ExtensionHostClosingTag.executeClosingTagProvider',\n args: [offset, openingBrace],\n combineResults,\n noProviderFoundMessage: '',\n })\n}\n", "// import * as EditorCompletion from '../EditorCompletion/EditorCompletion.js'\nimport * as Editor from '../Editor/Editor.js'\nimport * as ExtensionHostBraceCompletion from '../ExtensionHost/ExtensionHostBraceCompletion.js'\nimport * as ExtensionHostClosingTag from '../ExtensionHost/ExtensionHostClosingTagCompletion.js'\nimport * as TextDocument from '../TextDocument/TextDocument.js'\nimport * as EditOrigin from '../EditOrigin/EditOrigin.js'\nimport { editorReplaceSelections } from './EditorCommandReplaceSelection.js'\n\nconst RE_CHARACTER = new RegExp(/^\\p{L}/, 'u')\n\nexport const state = {\n listeners: [],\n}\n\nconst getMatchingClosingBrace = (brace) => {\n switch (brace) {\n case '{':\n return '}'\n case '(':\n return ')'\n case '[':\n return ']'\n default:\n return '???'\n }\n}\n\nconst isBrace = (text) => {\n if (text.length !== 1) {\n return false\n }\n switch (text) {\n case '{':\n case '(':\n case '[':\n return true\n default:\n return false\n }\n}\n\nconst isSlash = (text) => {\n return text === '/'\n}\n\nconst editorTypeWithBraceCompletion = async (editor, text) => {\n const offset = TextDocument.offsetAt(editor, editor.cursor)\n const result =\n await ExtensionHostBraceCompletion.executeBraceCompletionProvider(\n editor,\n offset,\n text\n )\n console.log({ result })\n if (result) {\n const closingBrace = getMatchingClosingBrace(text)\n const insertText = text + closingBrace\n const changes = editorReplaceSelections(editor, [insertText], 'editorType')\n return Editor.scheduleDocumentAndCursorsSelections(editor, changes)\n }\n const changes = editorReplaceSelections(editor, [text], 'editorType')\n return Editor.scheduleDocumentAndCursorsSelections(editor, changes)\n}\n\nconst editorTypeWithSlashCompletion = async (editor, text) => {\n const offset = TextDocument.offsetAt(editor, editor.cursor)\n const result = await ExtensionHostClosingTag.executeClosingTagProvider(\n editor,\n offset,\n text\n )\n const changes = editorReplaceSelections(editor, [text], EditOrigin.EditorType)\n return Editor.scheduleDocumentAndCursorsSelections(editor, changes)\n}\n\n// TODO implement typing command without brace completion -> brace completion should be independent module\nexport const type = async (editor, text) => {\n // if (isBrace(text)) {\n // console.log('is brace')\n // return editorTypeWithBraceCompletion(editor, text)\n // }\n // if (isSlash(text)) {\n // return editorTypeWithSlashCompletion(editor, text)\n // }\n const changes = editorReplaceSelections(editor, [text], EditOrigin.EditorType)\n // // TODO trigger characters should be monomorph -> then skip this check\n // if (\n // editor.completionTriggerCharacters &&\n // editor.completionTriggerCharacters.includes(text)\n // ) {\n // Command.execute(/* EditorCompletion.openFromType */ 988)\n // }\n\n // TODO should editor type command know about editor completion? -> no\n // EditorCommandCompletion.openFromType(editor, text)\n return Editor.scheduleDocumentAndCursorsSelections(editor, changes)\n}\n\nexport const onDidType = (listener) => {\n state.listeners.push(listener)\n // TODO unregister\n}\n", "import * as Editor from '../Editor/Editor.js'\nimport * as EditOrigin from '../EditOrigin/EditOrigin.js'\n\nconst getChanges = (selections) => {\n const rowsToIndent = []\n for (let i = 0; i < selections.length; i += 4) {\n const selectionStartRow = selections[i]\n const selectionEndRow = selections[i + 2]\n for (let i = selectionStartRow; i <= selectionEndRow; i++) {\n rowsToIndent.push(i)\n }\n }\n const changes = []\n for (const rowToIndent of rowsToIndent) {\n changes.push({\n start: {\n rowIndex: rowToIndent,\n columnIndex: 0,\n },\n end: {\n rowIndex: rowToIndent,\n columnIndex: 0,\n },\n inserted: [' '],\n deleted: [''],\n origin: EditOrigin.IndentMore,\n })\n }\n return changes\n}\n\nexport const indentMore = (editor) => {\n const selections = editor.selections\n const changes = getChanges(selections)\n return Editor.scheduleDocumentAndCursorsSelections(editor, changes)\n}\n", "import * as EditorTabCompletion from './EditorCommandTabCompletion.js'\nimport * as EditorType from './EditorCommandType.js'\nimport * as EditorIndent from './EditorCommandIndentMore.js'\nimport * as EditorSelection from '../EditorSelection/EditorSelection.js'\n\n// TODO tab doesn't work well with configurable keybindings\nexport const handleTab = async (editor) => {\n if (EditorSelection.isEverySelectionEmpty(editor.selections)) {\n console.log('call tab completion')\n const applied = await EditorTabCompletion.tabCompletion(editor)\n if (applied !== editor) {\n return applied\n }\n // TODO have setting what should be inserted on tab\n return EditorType.type(editor, ' ')\n }\n return EditorIndent.indentMore(editor)\n}\n\n// const editor = {\n// textDocument: {\n// lines: ['line 1', 'line 2', 'line 3', 'line 4'],\n// },\n// cursor: {\n// rowIndex: 0,\n// columnIndex: 1,\n// },\n// selections: [\n// {\n// start: {\n// rowIndex: 1,\n// columnIndex: 1,\n// },\n// end: {\n// rowIndex: 2,\n// columnIndex: 2,\n// },\n// },\n// ],\n// }\n// const main = async () => {\n// await editorHandleTab(editor)\n// editor.lines //?\n// }\n\n// main()\n", "export const state = {\n touchOffsetY: 0,\n deltaY: 0,\n}\n\nexport const handleTouchStart = (editor, touchEvent) => {\n if (touchEvent.touches.length === 0) {\n return\n }\n const firstTouch = touchEvent.touches[0]\n state.touchOffsetY = firstTouch.y\n state.deltaY = editor.deltaY\n // const position = EditorPosition.at(editor, firstTouch.x, firstTouch.y)\n // EditorMoveSelection.state.position = position\n // state.date = Date.now()\n}\n", "import * as EditorPosition from './EditorCommandPosition.js'\nimport * as EditorHandleTouchStart from './EditorCommandHandleTouchStart.js'\nimport * as EditorSelectWord from './EditorCommandSelectWord.js'\nimport * as EditorCursorSet from './EditorCommandCursorSet.js'\nimport * as EditorMoveSelection from './EditorCommandMoveSelection.js'\n\nconst LONG_TOUCH_THRESHOLD = 150\n\nexport const handleTouchEnd = (editor, touchEvent) => {\n if (touchEvent.changedTouches.length === 0) {\n return\n }\n const firstTouch = touchEvent.changedTouches[0]\n const position = EditorPosition.at(editor, firstTouch.x, firstTouch.y)\n if (\n EditorMoveSelection.state.position.rowIndex === position.rowIndex &&\n EditorMoveSelection.state.position.columnIndex === position.columnIndex\n ) {\n if (Date.now() - EditorHandleTouchStart.state.date > LONG_TOUCH_THRESHOLD) {\n EditorSelectWord.selectWord(\n editor,\n position.rowIndex,\n position.columnIndex\n )\n } else {\n EditorCursorSet.cursorSet(editor, position)\n }\n } else {\n console.log('different position')\n }\n}\n", "import * as Editor from '../Editor/Editor.js'\n\nexport const setDeltaY = (editor, deltaY) => {\n return Editor.setDeltaY(editor, deltaY)\n}\n\nexport const setDeltaYFixedValue = (editor, deltaY) => {\n return Editor.setDeltaYFixedValue(editor, deltaY)\n}\n", "import * as EditorHandleTouchStart from './EditorCommandHandleTouchStart.js'\nimport * as EditorSetDeltaY from './EditorCommandSetDeltaY.js'\n\nexport const handleTouchMove = (editor, touchEvent) => {\n if (touchEvent.touches.length === 0) {\n return\n }\n const firstTouch = touchEvent.touches[0]\n const offsetY =\n EditorHandleTouchStart.state.deltaY +\n (EditorHandleTouchStart.state.touchOffsetY - firstTouch.y)\n EditorSetDeltaY.setDeltaYFixedValue(editor, offsetY)\n}\n", "import * as Editor from '../Editor/Editor.js'\nimport * as TextDocument from '../TextDocument/TextDocument.js'\n\nconst getNewSelections = (line, rowIndex) => {\n // TODO handle virtual space when columnIndex is greater than line length\n return new Uint32Array([rowIndex, 0, rowIndex, line.length])\n}\n\nexport const selectLine = (editor) => {\n const selections = editor.selections\n const rowIndex = selections[editor.primarySelectionIndex]\n const line = TextDocument.getLine(editor, rowIndex)\n const newSelections = getNewSelections(line, rowIndex)\n return Editor.scheduleSelections(editor, newSelections)\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as EditorSelectLine from './EditorCommandSelectLine.js'\n\n// TODO rowIndex and columnIndex should already be set because of singleClick which occurred before triple click\nexport const handleTripleClick = (editor, x, y, offset) => {\n Assert.object(editor)\n Assert.number(x)\n Assert.number(y)\n Assert.number(offset)\n return EditorSelectLine.selectLine(editor)\n}\n", "import * as Editor from '../Editor/Editor.js'\nimport * as EditOrigin from '../EditOrigin/EditOrigin.js'\n\nconst getChanges = (selections) => {\n const changes = []\n const rowsToIndentLess = []\n for (let i = 0; i < selections.length; i += 4) {\n const selectionStartRow = selections[i]\n const selectionEndRow = selections[i + 2]\n for (let i = selectionStartRow; i <= selectionEndRow; i++) {\n rowsToIndentLess.push(i)\n }\n }\n for (const rowToIndent of rowsToIndentLess) {\n changes.push({\n start: {\n rowIndex: rowToIndent,\n columnIndex: 0,\n },\n end: {\n rowIndex: rowToIndent,\n columnIndex: 2,\n },\n inserted: [''],\n deleted: [' '],\n origin: EditOrigin.IndentLess,\n })\n }\n return changes\n}\n\nexport const indentLess = (editor) => {\n const selections = editor.selections\n const changes = getChanges(selections)\n return Editor.scheduleDocumentAndCursorsSelections(editor, changes)\n}\n", "import * as Editor from '../Editor/Editor.js'\nimport * as EditOrigin from '../EditOrigin/EditOrigin.js'\nimport * as TextDocument from '../TextDocument/TextDocument.js'\n\nconst getChanges = (lines, selections) => {\n const changes = []\n for (let i = 0; i < selections.length; i += 4) {\n const selectionStartRow = selections[i]\n const selectionStartColumn = selections[i + 1]\n const selectionEndRow = selections[i + 2]\n const selectionEndColumn = selections[i + 3]\n const start = {\n rowIndex: selectionStartRow,\n columnIndex: selectionStartColumn,\n }\n const end = {\n rowIndex: selectionEndRow,\n columnIndex: selectionEndColumn,\n }\n const range = {\n start,\n end,\n }\n if (\n selectionStartRow === selectionEndRow &&\n selectionStartColumn === selectionEndColumn\n ) {\n const line = lines[selectionStartRow].slice(0, selectionStartColumn)\n const indent = TextDocument.getIndent(line)\n changes.push({\n start: start,\n end: end,\n inserted: ['', indent],\n deleted: TextDocument.getSelectionText({ lines }, range),\n origin: EditOrigin.InsertLineBreak,\n })\n } else {\n changes.push({\n start: start,\n end: end,\n inserted: ['', ''],\n deleted: TextDocument.getSelectionText({ lines }, range),\n origin: EditOrigin.InsertLineBreak,\n })\n }\n }\n return changes\n}\n\nexport const insertLineBreak = (editor) => {\n const lines = editor.lines\n const selections = editor.selections\n const changes = getChanges(lines, selections)\n return Editor.scheduleDocumentAndCursorsSelections(editor, changes)\n}\n", "import * as TextDocument from '../TextDocument/TextDocument.js'\nimport * as Editor from '../Editor/Editor.js'\n\n// TODO move cursor\n// TODO multiple cursors -> vscode removes multiple cursors\n// TODO with selection -> vscode moves whole selection\nexport const moveLineDown = (editor) => {\n const rowIndex = editor.cursor.rowIndex\n if (rowIndex === editor.lines.length - 1) {\n return\n }\n const documentEdits = [\n {\n type: /* splice */ 2,\n rowIndex: rowIndex,\n count: 2,\n newLines: [\n TextDocument.getLine(editor.textDocument, rowIndex + 1),\n TextDocument.getLine(editor.textDocument, rowIndex),\n ],\n },\n ]\n const cursorEdits = Editor.moveCursors(editor, (editor, cursor) => {\n return {\n rowIndex: cursor.rowIndex + 1,\n columnIndex: cursor.columnIndex,\n }\n })\n Editor.scheduleDocumentAndCursors(editor, documentEdits, cursorEdits)\n}\n", "import * as TextDocument from '../TextDocument/TextDocument.js'\nimport * as Editor from '../Editor/Editor.js'\n\n// TODO handle multiple cursors\nexport const moveLineUp = (editor) => {\n const rowIndex = editor.cursor.rowIndex\n if (rowIndex === 0) {\n return\n }\n const documentEdits = [\n {\n type: /* splice */ 2,\n rowIndex: rowIndex - 1,\n count: 2,\n newLines: [\n TextDocument.getLine(editor.textDocument, rowIndex),\n TextDocument.getLine(editor.textDocument, rowIndex - 1),\n ],\n },\n ]\n const cursorEdits = Editor.moveCursors(editor, (editor, cursor) => {\n return {\n // TODO handle bottom 0\n rowIndex: cursor.rowIndex - 1,\n columnIndex: cursor.columnIndex,\n }\n })\n Editor.scheduleDocumentAndCursors(editor, documentEdits, cursorEdits)\n}\n", "import * as Editor from '../Editor/Editor.js'\nimport * as EditorHandleClick from './EditorCommandHandleSingleClick.js'\nimport * as EditorMoveSelection from './EditorCommandMoveSelection.js'\n\nexport const moveRectangleSelection = (editor, position) => {\n const anchor = EditorMoveSelection.state.position\n const startRowIndex = anchor.rowIndex\n const startColumnIndex = anchor.columnIndex\n const endRowIndex = position.rowIndex\n const endColumnIndex = position.columnIndex\n const selectionEdits = []\n for (let i = startRowIndex; i <= endRowIndex; i++) {\n selectionEdits.push({\n start: {\n rowIndex: i,\n columnIndex: startColumnIndex,\n },\n end: {\n rowIndex: i,\n columnIndex: endColumnIndex,\n },\n })\n }\n const cursorEdits = [selectionEdits.at(-1).end]\n Editor.scheduleCursorsAndSelections(editor, cursorEdits, selectionEdits)\n}\n", "import * as EditorMoveRectangleSelection from './EditorCommandMoveRectangleSelection.js'\nimport * as EditorPosition from './EditorCommandPosition.js'\n\nexport const moveRectangleSelectionPx = (editor, x, y) => {\n const position = EditorPosition.at(editor, x, y)\n EditorMoveRectangleSelection.moveRectangleSelection(editor, position)\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as EditorMoveSelection from './EditorCommandMoveSelection.js'\nimport * as EditorPosition from './EditorCommandPosition.js'\n\nexport const moveSelectionPx = (editor, x, y, offset) => {\n Assert.object(editor)\n Assert.number(x)\n Assert.number(y)\n Assert.number(offset)\n const position = EditorPosition.at(editor, x, y, offset)\n return EditorMoveSelection.editorMoveSelection(editor, position)\n}\n", "import * as Editor from '../Editor/Editor.js'\nimport * as EditOrigin from '../EditOrigin/EditOrigin.js'\nimport * as SplitLines from '../SplitLines/SplitLines.js'\nimport { editorReplaceSelections } from './EditorCommandReplaceSelection.js'\n\nexport const pasteText = (editor, text) => {\n const insertedLines = SplitLines.splitLines(text)\n const changes = editorReplaceSelections(\n editor,\n insertedLines,\n EditOrigin.EditorPasteText\n )\n return Editor.scheduleDocumentAndCursorsSelections(editor, changes)\n}\n", "import * as Command from '../Command/Command.js'\nimport * as Assert from '../Assert/Assert.js'\nimport * as EditorPasteText from './EditorCommandPasteText.js'\n\nexport const paste = async (editor) => {\n const text = await Command.execute(\n /* ClipBoard.readText */ 'ClipBoard.readText'\n )\n Assert.string(text)\n return EditorPasteText.pasteText(editor, text)\n}\n", "import * as ErrorHandling from '../ErrorHandling/ErrorHandling.js'\nimport * as FileSystem from '../FileSystem/FileSystem.js'\nimport * as Preferences from '../Preferences/Preferences.js'\nimport * as TextDocument from '../TextDocument/TextDocument.js'\nimport { VError } from '../VError/VError.js'\nimport * as EditorFormat from './EditorCommandFormat.js'\n\nconst getFormatOnSave = () => {\n const value = Preferences.get('editor.formatOnSave')\n return Boolean(value)\n}\n\nconst getNewEditor = async (editor) => {\n const formatOnSave = getFormatOnSave()\n if (formatOnSave) {\n return EditorFormat.format(editor)\n }\n return editor\n}\n\nexport const save = async (editor) => {\n try {\n const uri = editor.uri\n const newEditor = await getNewEditor(editor)\n const content = TextDocument.getText(newEditor)\n await FileSystem.writeFile(uri, content)\n return newEditor\n } catch (error) {\n // @ts-ignore\n const betterError = new VError(error, `Failed to save file \"${editor.uri}\"`)\n await ErrorHandling.handleError(betterError)\n return\n }\n}\n", "import * as Editor from '../Editor/Editor.js'\nimport * as EditorSelection from '../EditorSelection/EditorSelection.js'\n\nexport const selectAll = (editor) => {\n const lines = editor.lines\n const startRowIndex = 0\n const startColumnIndex = 0\n const endRowIndex = lines.length\n const endColumnIndex = lines.at(-1).length\n const newSelections = EditorSelection.fromRange(\n startRowIndex,\n startColumnIndex,\n endRowIndex,\n endColumnIndex\n )\n return Editor.scheduleSelections(editor, newSelections)\n}\n", "import * as Editor from '../Editor/Editor.js'\n\n// TODO handle virtual space\n\nconst getNewSelectionsSingleLineWord = (lines, word) => {\n if (word.length === 0) {\n throw new Error('word length must be greater than zero')\n }\n const newSelections = []\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i]\n let columnIndex = -word.length\n while (\n (columnIndex = line.indexOf(word, columnIndex + word.length)) !== -1\n ) {\n newSelections.push(i, columnIndex, i, columnIndex + word.length)\n }\n }\n return new Uint32Array(newSelections)\n}\n\nconst isMultiLineMatch = (lines, rowIndex, wordParts) => {\n let j = 0\n if (!lines[rowIndex + j].endsWith(wordParts[j])) {\n return false\n }\n while (++j < wordParts.length - 1) {\n if (lines[rowIndex + j] !== wordParts[j]) {\n return false\n }\n }\n // j--\n if (!lines[rowIndex + j].startsWith(wordParts[j])) {\n lines[rowIndex + j] // ?\n rowIndex + j // ?\n\n return false\n }\n return true\n}\n\n// TODO this is very expensive, there might be a better algorithm for this\n// TODO if this matches the given selections, don't schedule selections/rerender\nconst getAllOccurrencesMultiLine = (lines, wordParts) => {\n const newSelections = []\n for (\n let rowIndex = 0;\n rowIndex < lines.length - wordParts.length + 1;\n rowIndex\n ) {\n lines\n rowIndex\n if (isMultiLineMatch(lines, rowIndex, wordParts)) {\n newSelections.push(\n rowIndex,\n lines[rowIndex].length - wordParts[0].length,\n rowIndex + wordParts.length - 1,\n wordParts.at(-1).length\n )\n rowIndex += wordParts.length - 1\n } else {\n rowIndex++\n }\n }\n return new Uint32Array(newSelections)\n}\n\n// TODO duplicate code with EditorSelectNextOccurrence\nconst RE_ALPHA_NUMERIC = /[a-zA-Z\\d]/\n\nconst isAlphaNumeric = (char) => {\n return RE_ALPHA_NUMERIC.test(char)\n}\n\nconst getWordStartIndex = (line, index) => {\n for (let i = index - 1; i >= 0; i--) {\n if (!isAlphaNumeric(line[i])) {\n return i + 1\n }\n }\n return 0\n}\n\nconst getWordEndIndex = (line, index) => {\n for (let i = index; i < line.length; i++) {\n if (!isAlphaNumeric(line[i])) {\n return i\n }\n }\n return line.length - 1\n}\n\nconst getWordMatchAtPosition = (lines, rowIndex, columnIndex) => {\n const line = lines[rowIndex]\n const start = getWordStartIndex(line, columnIndex)\n const end = getWordEndIndex(line, columnIndex)\n const word = line.slice(start, end)\n return {\n start,\n end,\n word,\n }\n}\n\nconst getNewSelections = (lines, selections) => {\n if (selections.length < 4) {\n throw new Error('selections must have at least one entry')\n }\n const firstSelectionIndex = 0\n const startRowIndex = selections[firstSelectionIndex]\n const startColumnIndex = selections[firstSelectionIndex + 1]\n const endRowIndex = selections[firstSelectionIndex + 2]\n const endColumnIndex = selections[firstSelectionIndex + 3]\n if (startRowIndex === endRowIndex) {\n if (startColumnIndex === endColumnIndex) {\n const wordMatch = getWordMatchAtPosition(\n lines,\n endRowIndex,\n endColumnIndex\n )\n if (wordMatch.start === wordMatch.end) {\n return selections\n }\n const newSelections = getNewSelectionsSingleLineWord(\n lines,\n wordMatch.word\n )\n return newSelections\n }\n const line = lines[startRowIndex]\n const word = line.slice(startColumnIndex, endColumnIndex)\n const newSelections = getNewSelectionsSingleLineWord(lines, word)\n return newSelections\n }\n const wordParts = []\n wordParts.push(lines[startRowIndex].slice(startColumnIndex))\n for (let i = startRowIndex + 1; i < endRowIndex - 1; i++) {\n wordParts.push(lines[i])\n }\n wordParts.push(lines[endRowIndex].slice(0, endColumnIndex))\n const newSelections = getAllOccurrencesMultiLine(lines, wordParts)\n return newSelections\n}\n\nexport const selectAllOccurrences = (editor) => {\n // when there are no selections -> first selection is word -> find all selection that include word\n const lines = editor.lines\n const selections = editor.selections\n const newSelections = getNewSelections(lines, selections)\n return Editor.scheduleSelections(editor, newSelections)\n}\n", "import * as Editor from '../Editor/Editor.js'\nimport * as EditorGetPositionLeft from './EditorCommandGetPositionLeft.js'\nimport * as EditorSelection from '../EditorSelection/EditorSelection.js'\n// TODO interleave cursors and selection\n// then loop over selections\n// apply edit\n// if new range is empty -> add cursor\n// else if new range is overlapping -> merge ranges\n// else add cursor and selection\n\nconst getNewSelections = (selections, lines, getDelta) => {\n const newSelections = EditorSelection.clone(selections)\n for (let i = 0; i < selections.length; i += 4) {\n const selectionStartRow = selections[i]\n const selectionStartColumn = selections[i + 1]\n const selectionEndRow = selections[i + 2]\n const selectionEndColumn = selections[i + 3]\n if (\n selectionStartRow === selectionEndRow &&\n selectionStartColumn === selectionEndColumn\n ) {\n EditorGetPositionLeft.moveToPositionLeft(\n newSelections,\n i,\n selectionStartRow,\n selectionStartColumn,\n lines,\n getDelta\n )\n EditorGetPositionLeft.moveToPositionEqual(\n newSelections,\n i + 2,\n selectionEndRow,\n selectionEndColumn\n )\n }\n }\n return newSelections\n}\n\nexport const editorSelectHorizontalLeft = (editor, getDelta) => {\n const lines = editor.lines\n const selections = editor.selections\n const newSelections = getNewSelections(selections, lines, getDelta)\n return Editor.scheduleSelections(editor, newSelections)\n}\n", "import * as EditorSelectHorizontalLeft from './EditorCommandSelectHorizontalLeft.js'\nimport * as EditorDelta from './EditorCommandDelta.js'\n\nexport const selectCharacterLeft = (editor) => {\n return EditorSelectHorizontalLeft.editorSelectHorizontalLeft(\n editor,\n EditorDelta.characterLeft\n )\n}\n", "import * as Editor from '../Editor/Editor.js'\n\nconst getNewSelections = (selections, lines, getDelta) => {\n const newSelections = new Uint32Array(selections.length)\n for (let i = 0; i < selections.length; i += 4) {\n const selectionStartRow = selections[i]\n const selectionStartColumn = selections[i + 1]\n const selectionEndRow = selections[i + 2]\n const selectionEndColumn = selections[i + 3]\n const line = lines[selectionEndRow]\n newSelections[i] = selectionStartRow\n newSelections[i + 1] = selectionStartColumn\n if (selectionEndColumn >= line.length) {\n newSelections[i + 2] = selectionEndRow + 1\n newSelections[i + 3] = 0\n } else {\n const delta = getDelta(line, selectionEndColumn)\n newSelections[i + 2] = selectionEndRow\n newSelections[i + 3] = selectionEndColumn + delta\n }\n }\n return newSelections\n}\n\nexport const editorSelectHorizontalRight = (editor, getDelta) => {\n const lines = editor.lines\n const selections = editor.selections\n const newSelections = getNewSelections(selections, lines, getDelta)\n return Editor.scheduleSelections(editor, newSelections)\n}\n", "import * as EditorSelectHorizontalRight from './EditorCommandSelectHorizontalRight.js'\nimport * as EditorDelta from './EditorCommandDelta.js'\n\nexport const selectCharacterRight = (editor) => {\n return EditorSelectHorizontalRight.editorSelectHorizontalRight(\n editor,\n EditorDelta.characterRight\n )\n}\n", "import * as Editor from '../Editor/Editor.js'\n\nconst getSelectUpChanges = (lines, selections) => {\n const max = lines.length - 1\n const newSelections = new Uint32Array(selections.length)\n for (let i = 0; i < selections.length; i += 4) {\n const selectionStartRow = selections[i]\n const selectionStartColumn = selections[i + 1]\n const selectionEndRow = selections[i + 2]\n const selectionEndColumn = selections[i + 3]\n newSelections[i] = selectionStartRow\n newSelections[i + 1] = selectionStartColumn\n newSelections[i + 2] = Math.min(selectionEndRow + 1, max)\n newSelections[i + 3] = selectionEndColumn\n }\n return newSelections\n}\n\nexport const selectDown = (editor) => {\n const { lines, selections } = editor\n const newSelections = getSelectUpChanges(lines, selections)\n return Editor.scheduleSelections(editor, newSelections)\n}\n", "import * as Editor from '../Editor/Editor.js'\n\nconst getNewSelections = (lines, selections) => {\n const newSelections = new Uint32Array(selections.length)\n for (let i = 0; i < selections.length; i += 4) {\n const selectionStartRow = selections[i]\n const selectionStartColumn = selections[i + 1]\n const selectionEndRow = selections[i + 2]\n const selectionEndColumn = selections[i + 3]\n if (\n selectionStartRow === selectionEndRow &&\n selectionStartColumn === selectionEndColumn\n ) {\n const rowIndex = selectionStartRow\n let startColumnIndex = selectionStartColumn\n let endColumnIndex = selectionEndColumn\n const line = lines[rowIndex]\n const quoteFound = false\n while (startColumnIndex > 0 && line[startColumnIndex] !== '\"') {\n startColumnIndex--\n }\n startColumnIndex++\n while (endColumnIndex < line.length && line[endColumnIndex] !== '\"') {\n endColumnIndex++\n }\n newSelections[i] = rowIndex\n newSelections[i + 1] = startColumnIndex\n newSelections[i + 2] = rowIndex\n newSelections[i + 3] = endColumnIndex\n } else {\n newSelections[i] = selectionStartRow\n newSelections[i + 1] = selectionStartColumn\n newSelections[i + 2] = selectionEndRow\n newSelections[i + 3] = selectionEndColumn\n }\n }\n return newSelections\n}\n\nexport const selectInsideString = (editor) => {\n const selections = editor.selections\n const lines = editor.lines\n const newSelections = getNewSelections(lines, selections)\n return Editor.scheduleSelections(editor, newSelections)\n}\n", "import * as Editor from '../Editor/Editor.js'\nimport * as TextDocument from '../TextDocument/TextDocument.js'\nimport * as EditorSelection from '../EditorSelection/EditorSelection.js'\n// TODO handle virtual space\n\n// TODO editors behave differently when selecting next occurrence, for example:\n\n// aaa\n// bbb 1\n// ccc\n// bbb 2\n// bbb 3\n// aaa\n// bbb 4\n// ccc\n\n// when clicking first at position 4 and then position 2,\n// - vscode selects next position 3 and refuses to select position 1\n// - atom also selects next position 3 and refuses to select position 1\n// - WebStorm also selects next position 3 and refuses to select position 1\n// - brackets (codemirror) selects position 3 and then selects position 1\n// - sublime selects next position 1, then next position 3\n\nconst isBetween = (value, min, max) => {\n return min <= value && value <= max\n}\n\nconst getSelectionEditsSingleLineWord = (lines, selections) => {\n const lastSelectionIndex = selections.length - 4\n const rowIndex = selections[lastSelectionIndex]\n const lastSelectionStartColumnIndex = selections[lastSelectionIndex + 1]\n const lastSelectionEndColumnIndex = selections[lastSelectionIndex + 3]\n const line = lines[rowIndex]\n const word = line.slice(\n lastSelectionStartColumnIndex,\n lastSelectionEndColumnIndex\n )\n const columnIndexAfter = line.indexOf(word, lastSelectionEndColumnIndex)\n if (columnIndexAfter !== -1) {\n const columnIndexAfterEnd = columnIndexAfter + word.length\n const revealRange = {\n start: {\n rowIndex,\n columnIndex: columnIndexAfter,\n },\n end: {\n rowIndex,\n columnIndex: columnIndexAfterEnd,\n },\n }\n const newSelections = EditorSelection.push(\n selections,\n rowIndex,\n columnIndexAfter,\n rowIndex,\n columnIndexAfterEnd\n )\n return {\n revealRange: newSelections.length - 4,\n selectionEdits: newSelections,\n }\n }\n for (let i = rowIndex + 1; i < lines.length; i++) {\n const line = lines[i]\n const columnIndex = line.indexOf(word)\n if (columnIndex !== -1) {\n const columnIndexEnd = columnIndex + word.length\n const newSelections = new Uint32Array(selections.length + 4)\n newSelections.set(selections, 0)\n const insertIndex = selections.length\n newSelections[insertIndex] = i\n newSelections[insertIndex + 1] = columnIndex\n newSelections[insertIndex + 2] = i\n newSelections[insertIndex + 3] = columnIndexEnd\n return {\n revealRange: newSelections.length - 4,\n selectionEdits: newSelections,\n }\n }\n }\n let selectionIndex = 0\n // TODO use text document search for this\n for (let i = 0; i <= rowIndex; i++) {\n const line = lines[i]\n let columnIndex = -word.length\n while (\n (columnIndex = line.indexOf(word, columnIndex + word.length)) !== -1\n ) {\n let startRowIndex = selections[selectionIndex]\n while (startRowIndex < i && selectionIndex < selections.length) {\n selectionIndex += 4\n startRowIndex = selections[selectionIndex]\n }\n if (startRowIndex === i) {\n let endColumnIndex = selections[selectionIndex + 3]\n while (\n endColumnIndex < columnIndex &&\n selectionIndex < selections.length\n ) {\n selectionIndex += 4\n endColumnIndex = selections[endColumnIndex + 3]\n }\n }\n startRowIndex = selections[selectionIndex]\n let startColumnIndex = selections[selectionIndex + 1]\n let endColumnIndex = selections[selectionIndex + 3]\n if (\n startRowIndex === i &&\n startColumnIndex <= columnIndex &&\n columnIndex <= endColumnIndex\n ) {\n continue\n }\n if (startRowIndex > i) {\n selectionIndex -= 4\n }\n const columnEndIndex = columnIndex + word.length\n const revealRange = {\n start: {\n rowIndex: i,\n columnIndex,\n },\n end: {\n rowIndex: i,\n columnIndex: columnEndIndex,\n },\n }\n selectionIndex += 4\n const newSelections = new Uint32Array(selections.length + 4)\n newSelections.set(selections.subarray(0, selectionIndex), 0)\n newSelections[selectionIndex] = i\n newSelections[selectionIndex + 1] = columnIndex\n newSelections[selectionIndex + 2] = i\n newSelections[selectionIndex + 3] = columnEndIndex\n newSelections.set(selections.subarray(selectionIndex), selectionIndex + 4)\n return {\n revealRange,\n selectionEdits: newSelections,\n }\n }\n }\n return undefined\n}\n\nconst RE_ALPHA_NUMERIC = /[a-zA-Z\\d]/\n\nconst isAlphaNumeric = (char) => {\n return RE_ALPHA_NUMERIC.test(char)\n}\n\nconst getWordStartIndex = (line, index) => {\n for (let i = index - 1; i >= 0; i--) {\n if (!isAlphaNumeric(line[i])) {\n return i + 1\n }\n }\n return 0\n}\n\nconst getWordEndIndex = (line, index) => {\n for (let i = index; i < line.length; i++) {\n if (!isAlphaNumeric(line[i])) {\n return i\n }\n }\n return line.length - 1\n}\n\nconst getWordMatchAtPosition = (lines, rowIndex, columnIndex) => {\n const line = lines[rowIndex]\n const index = columnIndex\n const start = getWordStartIndex(line, index)\n const end = getWordEndIndex(line, index)\n const word = line.slice(start, end)\n return {\n start,\n end,\n word,\n }\n}\n\nconst getSelectNextOccurrenceResult = (editor) => {\n const lines = editor.lines\n const selections = editor.selections\n if (EditorSelection.isEverySelectionEmpty(selections)) {\n const newSelections = new Uint32Array(selections.length)\n for (let i = 0; i < selections.length; i += 4) {\n const startRowIndex = selections[i]\n const startColumnIndex = selections[i + 1]\n const endRowIndex = selections[i + 2]\n const endColumnIndex = selections[i + 3]\n\n const wordMatch = getWordMatchAtPosition(\n lines,\n startRowIndex,\n startColumnIndex\n )\n wordMatch //?\n if (wordMatch.start === wordMatch.end) {\n newSelections[i] = startRowIndex\n newSelections[i + 1] = startColumnIndex\n newSelections[i + 2] = endRowIndex\n newSelections[i + 3] = endColumnIndex\n } else {\n newSelections[i] = startRowIndex\n newSelections[i + 1] = wordMatch.start\n newSelections[i + 2] = startRowIndex\n newSelections[i + 3] = wordMatch.end\n }\n }\n\n return {\n selectionEdits: newSelections,\n revealRange: newSelections.length - 4, // TODO should be primary selection\n }\n }\n\n if (EditorSelection.isEverySelectionSingleLine(editor.selections)) {\n return getSelectionEditsSingleLineWord(editor.lines, editor.selections)\n }\n return undefined\n}\n\nconst isRangeInViewPort = (minLineY, maxLineY, startRowIndex, endRowIndex) => {\n return startRowIndex >= minLineY && endRowIndex <= maxLineY\n}\n\n// TODO handle virtual space\nexport const selectNextOccurrence = (editor) => {\n const result = getSelectNextOccurrenceResult(editor)\n if (!result) {\n return editor\n }\n const revealRange = result.revealRange\n const selectionEdits = result.selectionEdits\n const revealRangeStartRowIndex = selectionEdits[revealRange]\n const revealRangeEndRowIndex = selectionEdits[revealRange + 2]\n if (\n isRangeInViewPort(\n editor.minLineY,\n editor.maxLineY,\n revealRangeStartRowIndex,\n revealRangeEndRowIndex\n )\n ) {\n return Editor.scheduleSelections(editor, selectionEdits)\n }\n // TODO what is this magic number 5?\n const deltaY = (revealRangeStartRowIndex - 5) * editor.rowHeight\n return Editor.scheduleSelectionsAndScrollPosition(\n editor,\n selectionEdits,\n deltaY\n )\n}\n", "import * as Editor from '../Editor/Editor.js'\n\nconst getSelectUpChanges = (lines, selections) => {\n const newSelections = new Uint32Array(selections.length)\n for (let i = 0; i < selections.length; i += 4) {\n const selectionStartRow = selections[i]\n const selectionStartColumn = selections[i + 1]\n const selectionEndRow = selections[i + 2]\n const selectionEndColumn = selections[i + 3]\n newSelections[i] = Math.max(selectionStartRow - 1, 0)\n newSelections[i + 1] = selectionStartColumn\n newSelections[i + 2] = selectionEndRow\n newSelections[i + 3] = selectionEndColumn\n }\n return newSelections\n}\n\nexport const selectUp = (editor) => {\n const { lines, selections } = editor\n const newSelections = getSelectUpChanges(lines, selections)\n return Editor.scheduleSelections(editor, newSelections)\n}\n", "import * as EditorSelectHorizontalLeft from './EditorCommandSelectHorizontalLeft.js'\nimport * as EditorDelta from './EditorCommandDelta.js'\n\nexport const selectWordLeft = (editor) => {\n return EditorSelectHorizontalLeft.editorSelectHorizontalLeft(\n editor,\n EditorDelta.wordLeft\n )\n}\n", "import * as EditorSelectHorizontalRight from './EditorCommandSelectHorizontalRight.js'\nimport * as EditorDelta from './EditorCommandDelta.js'\n\nexport const selectWordRight = (editor) => {\n return EditorSelectHorizontalRight.editorSelectHorizontalRight(\n editor,\n EditorDelta.wordRight\n )\n}\n", "export const setDecorations = (editor, decorations) => {\n return {\n ...editor,\n decorations,\n }\n}\n", "import * as Compare from '../Compare/Compare.js'\nimport * as Editor from '../Editor/Editor.js'\nimport * as TextDocument from '../TextDocument/TextDocument.js'\n\nconst getSortedLines = (lines) => {\n const newLines = [...lines]\n newLines.sort(Compare.compareString)\n return newLines\n}\n\nconst origin = 'sort-lines-ascending'\n\nconst getSortLinesAscendingChanges = (lines, selections) => {\n const startRowIndex = selections[0]\n const startColumnIndex = selections[1]\n const endRowIndex = selections[2]\n const endColumnIndex = selections[3]\n const startRow = lines[startRowIndex]\n const endRow = lines[endRowIndex]\n const changes = []\n for (let i = 0; i < selections.length; i += 4) {\n const selectionStartRow = selections[i]\n const selectionStartColumn = selections[i + 1]\n const selectionEndRow = selections[i + 2]\n const selectionEndColumn = selections[i + 3]\n const start = {\n rowIndex: selectionStartRow,\n columnIndex: selectionStartColumn,\n }\n const end = {\n rowIndex: selectionEndRow,\n columnIndex: selectionEndColumn,\n }\n const selection = {\n start,\n end,\n }\n const selectionLines = lines.slice(startRowIndex, endRowIndex + 1)\n const sortedSelectionLines = getSortedLines(selectionLines)\n changes.push({\n start: start,\n end: end,\n inserted: sortedSelectionLines,\n deleted: TextDocument.getSelectionText({ lines }, selection),\n origin,\n })\n }\n return changes\n}\n\nexport const sortLinesAscending = (editor) => {\n const { lines, selections } = editor\n const changes = getSortLinesAscendingChanges(lines, selections)\n return Editor.scheduleDocumentAndCursorsSelections(editor, changes)\n}\n", "import * as Languages from '../Languages/Languages.js'\nimport * as TextDocument from '../TextDocument/TextDocument.js'\nimport * as Editor from '../Editor/Editor.js'\nimport * as EditOrigin from '../EditOrigin/EditOrigin.js'\n\nconst RE_WHITESPACE_AT_START = /^\\s+/\nconst RE_WHITESPACE_AT_END = /\\s+$/\n\n// const blockComment = ['<!--', '-->']\n\nconst getBlockComment = async (editor) => {\n const languageConfiguration = await Languages.getLanguageConfiguration(editor)\n if (\n !languageConfiguration ||\n !languageConfiguration.comments ||\n !languageConfiguration.comments.blockComment\n ) {\n return undefined\n }\n return languageConfiguration.comments.blockComment\n}\n\nexport const toggleBlockComment = async (editor) => {\n const blockComment = await getBlockComment(editor)\n if (!blockComment) {\n return editor\n }\n const rowIndex = editor.selections[0]\n const columnIndex = editor.selections[1]\n const line = TextDocument.getLine(editor, rowIndex)\n const numberOfLines = editor.lines.length\n let endRowIndex = rowIndex\n let endColumnIndex = -1\n const blockCommentStart = blockComment[0]\n const blockCommentEnd = blockComment[1]\n while (endRowIndex < numberOfLines) {\n const line = TextDocument.getLine(editor, endRowIndex)\n endColumnIndex = line.indexOf(blockCommentEnd)\n if (endColumnIndex !== -1) {\n break\n }\n endRowIndex++\n }\n let startColumnIndex = -1\n let startRowIndex = rowIndex\n while (startRowIndex >= 0) {\n const line = TextDocument.getLine(editor, startRowIndex)\n startColumnIndex = line.indexOf(blockCommentStart)\n if (startColumnIndex !== -1) {\n break\n }\n startRowIndex--\n }\n const changes = []\n\n if (startColumnIndex !== -1 && endColumnIndex !== -1) {\n if (startRowIndex === endRowIndex) {\n const change1 = {\n start: {\n rowIndex,\n columnIndex: startColumnIndex,\n },\n end: {\n rowIndex,\n columnIndex: startColumnIndex + blockCommentStart.length,\n },\n inserted: [],\n deleted: [blockCommentStart],\n origin: EditOrigin.ToggleBlockComment,\n }\n const change2 = {\n start: {\n rowIndex,\n columnIndex: endColumnIndex - blockCommentStart.length,\n },\n end: {\n rowIndex,\n columnIndex:\n endColumnIndex - blockCommentStart.length + blockCommentEnd.length,\n },\n inserted: [],\n deleted: [blockCommentEnd],\n origin: EditOrigin.ToggleBlockComment,\n }\n changes.push(change1, change2)\n // Editor.moveCursors(editor, (editor, cursor) => {\n // let newColumnIndex = cursor.columnIndex - blockComment[0].length\n // if (cursor.columnIndex === endColumnIndex + blockComment[1].length) {\n // newColumnIndex -= blockComment[1].length\n // }\n // return {\n // rowIndex: cursor.rowIndex,\n // columnIndex: newColumnIndex,\n // }\n // })\n } else {\n const change1 = {\n start: {\n rowIndex: startRowIndex,\n columnIndex: startColumnIndex,\n },\n end: {\n rowIndex: startRowIndex,\n columnIndex: startColumnIndex + blockCommentStart.length,\n },\n inserted: [],\n deleted: [blockCommentStart],\n origin: EditOrigin.ToggleBlockComment,\n }\n const change2 = {\n start: {\n rowIndex: endRowIndex,\n columnIndex: endColumnIndex,\n },\n end: {\n rowIndex: endRowIndex,\n columnIndex: endColumnIndex + blockCommentEnd.length,\n },\n inserted: [],\n deleted: [blockCommentEnd],\n origin: EditOrigin.ToggleBlockComment,\n }\n changes.push(change1, change2)\n\n // const oldRow1 = TextDocument.getLine(editor, startRowIndex)\n // const newRow1 =\n // oldRow1.slice(0, startColumnIndex) +\n // oldRow1.slice(startColumnIndex + blockCommentStart.length)\n // const oldRow2 = TextDocument.getLine(editor, endRowIndex)\n // const newRow2 =\n // oldRow2.slice(0, endColumnIndex) +\n // oldRow2.slice(endColumnIndex + blockCommentEnd.length)\n // // TODO use applyEdit to have undo functionality\n // TextDocument.setLine(editor, startRowIndex, newRow1)\n // TextDocument.setLine(editor, endRowIndex, newRow2)\n }\n // TODO move cursors\n } else {\n const whitespaceAtStart = line.match(RE_WHITESPACE_AT_START)\n const whitespaceAtEnd = line.match(RE_WHITESPACE_AT_END)\n let startColumnIndex = 0\n let endColumnIndex = line.length\n if (whitespaceAtStart) {\n startColumnIndex += whitespaceAtStart[0].length\n }\n if (whitespaceAtEnd) {\n endColumnIndex -= whitespaceAtEnd[0].length\n }\n const change1 = {\n start: {\n rowIndex,\n columnIndex: startColumnIndex,\n },\n end: {\n rowIndex,\n columnIndex: startColumnIndex,\n },\n inserted: [blockCommentStart],\n deleted: [],\n origin: EditOrigin.ToggleBlockComment,\n }\n const change2 = {\n start: {\n rowIndex,\n columnIndex: endColumnIndex + blockCommentStart.length,\n },\n end: {\n rowIndex,\n columnIndex: endColumnIndex + blockCommentStart.length,\n },\n inserted: [blockCommentEnd],\n deleted: [],\n origin: EditOrigin.ToggleBlockComment,\n }\n changes.push(change1, change2)\n // TextDocument.setLine(\n // editor,\n // rowIndex,\n // line.slice(0, startColumnIndex) +\n // blockComment[0] +\n // line.slice(startColumnIndex, endColumnIndex) +\n // blockComment[1] +\n // line.slice(endColumnIndex)\n // )\n // Editor.moveCursors(editor, (editor, cursor) => {\n // let newColumnIndex = cursor.columnIndex + blockComment[0].length\n // if (cursor.columnIndex === endColumnIndex) {\n // newColumnIndex += blockComment[1].length\n // }\n // return {\n // rowIndex: cursor.rowIndex,\n // columnIndex: newColumnIndex,\n // }\n // })\n }\n // if (line.startsWith(blockComment[0]) && line.endsWith(blockComment[1])) {\n // lines[rowIndex] = line.slice(\n // blockComment[0].length,\n // line.length - blockComment[1].length\n // )\n // Editor.moveCursors((editor, cursor) => {\n // return {\n // rowIndex: cursor.rowIndex,\n // columnIndex: cursor.columnIndex - blockComment[0].length,\n // }\n // })\n // } else {\n // lines[rowIndex] = blockComment[0] + line + blockComment[1]\n // Editor.moveCursors((editor, cursor) => {\n // return {\n // rowIndex: cursor.rowIndex,\n // columnIndex: cursor.columnIndex + blockComment[0].length,\n // }\n // })\n // }\n // RendererProcess.invoke(/* setLines */ 2135, /* lines */ lines)\n\n return Editor.scheduleDocument(editor, changes)\n}\n", "import * as Editor from '../Editor/Editor.js'\nimport * as Languages from '../Languages/Languages.js'\nimport * as TextDocument from '../TextDocument/TextDocument.js'\n\n// TODO\nconst getLanguageAtPosition = (position) => {\n return 'html'\n}\n\nconst getLineComment = async (editor) => {\n const languageConfiguration = await Languages.getLanguageConfiguration(editor)\n if (\n !languageConfiguration ||\n !languageConfiguration.comments ||\n !languageConfiguration.comments.lineComment\n ) {\n return undefined\n }\n return languageConfiguration.comments.lineComment\n}\n\nconst getBlockComment = async (languageId) => {\n const languageConfiguration = await Languages.getLanguageConfiguration(\n languageId\n )\n if (\n !languageConfiguration ||\n !languageConfiguration.comments ||\n !languageConfiguration.comments.blockComment\n ) {\n return undefined\n }\n return languageConfiguration.comments.blockComment\n}\n\nconst RE_WHITESPACE_AT_START = /^\\s+/\n\nconst getLineCommentEdit = (rowIndex, line, lineComment) => {\n const whitespaceMatch = line.match(RE_WHITESPACE_AT_START)\n const index = whitespaceMatch ? whitespaceMatch[0] : 0\n if (line.slice(index).startsWith(lineComment)) {\n // TODO also check tab character\n if (line[index + lineComment.length] === ' ') {\n return {\n inserted: [''],\n deleted: [lineComment.length + 1],\n start: {\n rowIndex,\n columnIndex: index,\n },\n end: {\n rowIndex,\n columnIndex: index + lineComment.length + 1,\n },\n type: /* singleLineEdit */ 1,\n }\n }\n return {\n inserted: [''],\n deleted: [lineComment],\n start: {\n rowIndex,\n columnIndex: index,\n },\n end: {\n rowIndex,\n columnIndex: index + lineComment.length,\n },\n type: /* singleLineEdit */ 1,\n }\n }\n return {\n inserted: [`${lineComment} `],\n deleted: [],\n start: {\n rowIndex,\n columnIndex: index,\n },\n end: {\n rowIndex,\n columnIndex: index,\n },\n type: /* singleLineEdit */ 1,\n }\n}\n\nexport const editorToggleLineComment = async (editor) => {\n const lineComment = await getLineComment(editor)\n if (!lineComment) {\n return editor\n }\n // replaceSelections(editor, lineComment, 'editorToggleLineComment')\n const textDocument = editor\n const cursorRowIndex = editor.selections[0]\n const line = TextDocument.getLine(textDocument, cursorRowIndex)\n const documentEdits = [getLineCommentEdit(cursorRowIndex, line, lineComment)]\n // TODO cursor edits should be computed automatically from document edits\n // console.log({ documentEdits })\n // const cursorEdits = Editor.moveCursors(editor, (editor, cursor) => {\n // return cursor\n // })\n return Editor.scheduleDocumentAndCursorsSelections(editor, documentEdits)\n}\n", "import * as EditorToggleBlockComment from './EditorCommandToggleBlockComment.js'\nimport * as EditorToggleLineComment from './EditorCommandToggleLineComment.js'\nimport * as EditorShowMessage from './EditorCommandShowMessage.js'\n// TODO rename file\n// TODO when handle case when editor has selection\nexport const toggleComment = async (editor) => {\n try {\n const newEditor = await EditorToggleLineComment.editorToggleLineComment(\n editor\n )\n if (editor !== newEditor) {\n return newEditor\n }\n return EditorToggleBlockComment.toggleBlockComment(editor)\n } catch (error) {\n console.error(error)\n // TODO use correct position\n await EditorShowMessage.editorShowMessage(\n /* editor */ editor,\n /* rowIndex */ 0,\n /* columnIndex */ 0,\n /* message */ `${error}`,\n /* isError */ true\n )\n return editor\n }\n}\n", "import * as Editor from '../Editor/Editor.js'\n\nconst inverseChange = (edit) => {\n const endColumnIndex =\n edit.end.columnIndex - edit.deleted[0].length + edit.inserted[0].length\n return {\n start: edit.start,\n end: {\n rowIndex: edit.end.rowIndex,\n columnIndex: endColumnIndex,\n },\n inserted: edit.deleted,\n deleted: edit.inserted,\n }\n}\n\nexport const undo = (state) => {\n const { undoStack } = state\n if (undoStack.length === 0) {\n return state\n }\n // TODO avoid side effect?\n const last = undoStack.pop()\n const inverseChanges = last.map(inverseChange)\n return Editor.scheduleDocumentAndCursorsSelectionIsUndo(state, inverseChanges)\n}\n", "import * as Editor from '../Editor/Editor.js'\n\nconst INDENT = ' '\n\nexport const editorUnindent = (editor) => {\n if (Editor.hasSelection(editor)) {\n const documentEdits = []\n const cursorEdits = []\n const selectionEdits = []\n const canUnindentSelection = (selection) => {\n for (let i = selection.start.rowIndex; i <= selection.end.rowIndex; i++) {\n if (editor.lines[i].startsWith(INDENT)) {\n return true\n }\n }\n return false\n }\n // TODO replace check with flag that indicates whether change occurred\n // -> only iterate once over selection lines\n\n if (!editor.selections.some(canUnindentSelection)) {\n return\n }\n const indentLineMaybe = (rowIndex) => {\n if (editor.lines[rowIndex].startsWith(INDENT)) {\n documentEdits.push({\n type: /* singleLineEdit */ 1,\n rowIndex,\n columnIndex: INDENT.length,\n deleted: INDENT.length,\n inserted: '',\n })\n }\n }\n let previousRowIndex = -1\n for (const selection of editor.selections) {\n let startRowIndex = selection.start.rowIndex\n const endRowIndex = selection.end.rowIndex\n if (startRowIndex === previousRowIndex) {\n startRowIndex++\n }\n for (let i = startRowIndex; i <= endRowIndex; i++) {\n indentLineMaybe(i)\n }\n let start = selection.start\n let end = selection.end\n if (editor.lines[start.rowIndex].startsWith(INDENT)) {\n start = {\n rowIndex: start.rowIndex,\n columnIndex: Math.max(start.columnIndex - INDENT.length, 0),\n }\n }\n if (editor.lines[end.rowIndex].startsWith(INDENT)) {\n end = {\n rowIndex: end.rowIndex,\n columnIndex: Math.max(end.columnIndex - INDENT.length, 0),\n }\n }\n cursorEdits.push(end)\n selectionEdits.push({\n start,\n end,\n })\n previousRowIndex = endRowIndex\n }\n Editor.scheduleDocumentAndCursorsAndSelections(\n editor,\n documentEdits,\n cursorEdits,\n selectionEdits\n )\n return\n }\n const documentEdits = []\n const cursorEdits = []\n if (!editor.lines[editor.cursor.rowIndex].startsWith(INDENT)) {\n return\n }\n documentEdits.push({\n type: /* singleLineEdit */ 1,\n rowIndex: editor.cursor.rowIndex,\n inserted: '',\n columnIndex: 2,\n deleted: 2,\n })\n cursorEdits.push({\n rowIndex: editor.cursor.rowIndex,\n columnIndex: editor.cursor.columnIndex - 2,\n })\n Editor.scheduleDocumentAndCursors(editor, documentEdits, cursorEdits)\n}\n// const editor = {\n// textDocument: {\n// lines: [' line 1'],\n// },\n// cursor: {\n// rowIndex: 0,\n// columnIndex: 8,\n// },\n// selections: [\n// {\n// start: {\n// rowIndex: 0,\n// columnIndex: 0,\n// },\n// end: {\n// rowIndex: 0,\n// columnIndex: 8,\n// },\n// },\n// ],\n// tokenizer: TokenizePlainText,\n// }\n// editorUnindent(editor)\n\n// editor.lines //?\n", "import * as ViewletEditorText from './ViewletEditorText.js'\n\nexport const name = 'EditorText'\n\n// prettier-ignore\nexport const Commands = {\n // TODO command to set cursor position\n}\n\n// prettier-ignore\nexport const LazyCommands = {\n applyEdit: () => import('../EditorCommand/EditorCommandApplyEdit.js'),\n blur: () => import('../EditorCommand/EditorCommandBlur.js'),\n braceCompletion: () => import('../EditorCommand/EditorCommandBraceCompletion.js'),\n cancelSelection: () => import('../EditorCommand/EditorCommandCancelSelection.js'),\n contextMenu: () => import('../EditorCommand/EditorCommandHandleContextMenu.js'),\n copyLineDown: () => import('../EditorCommand/EditorCommandCopyLineDown.js'),\n copyLineUp: () => import('../EditorCommand/EditorCommandCopyLineUp.js'),\n cursorLeft: () => import('../EditorCommand/EditorCommandCursorCharacterLeft.js'),\n cursorCharacterLeft: () => import('../EditorCommand/EditorCommandCursorCharacterLeft.js'),\n cursorCharacterRight: () => import('../EditorCommand/EditorCommandCursorCharacterRight.js'),\n cursorRight: () => import('../EditorCommand/EditorCommandCursorCharacterRight.js'),\n cursorDown: () => import('../EditorCommand/EditorCommandCursorDown.js'),\n cursorEnd: () => import('../EditorCommand/EditorCommandCursorEnd.js'),\n cursorHome: () => import('../EditorCommand/EditorCommandCursorHome.js'),\n cursorSet: () => import('../EditorCommand/EditorCommandCursorSet.js'),\n cursorUp: () => import('../EditorCommand/EditorCommandCursorUp.js'),\n cursorWordLeft: () => import('../EditorCommand/EditorCommandCursorWordLeft.js'),\n cursorWordPartLeft: () => import('../EditorCommand/EditorCommandCursorWordPartLeft.js'),\n cursorWordPartRight: () => import('../EditorCommand/EditorCommandCursorWordPartRight.js'),\n cursorWordRight: () => import('../EditorCommand/EditorCommandCursorWordRight.js'),\n cut: () => import('../EditorCommand/EditorCommandCut.js'),\n deleteAllLeft: () => import('../EditorCommand/EditorCommandDeleteAllLeft.js'),\n deleteAllRight: () => import('../EditorCommand/EditorCommandDeleteAllRight.js'),\n deleteLeft: () => import('../EditorCommand/EditorCommandDeleteCharacterLeft.js'),\n deleteRight: () => import('../EditorCommand/EditorCommandDeleteCharacterRight.js'),\n deleteWordLeft: () => import('../EditorCommand/EditorCommandDeleteWordLeft.js'),\n deleteWordPartLeft: () => import('../EditorCommand/EditorCommandDeleteWordPartLeft.js'),\n deleteWordPartRight: () => import('../EditorCommand/EditorCommandDeleteWordPartRight.js'),\n deleteWordRight: () => import('../EditorCommand/EditorCommandDeleteWordRight.js'),\n openCompletion: () => import('../EditorCommand/EditorCommandCompletion.js'),\n compositionStart: () => import('../EditorCommand/EditorCommandComposition.js'),\n compositionUpdate: () => import('../EditorCommand/EditorCommandComposition.js'),\n compositionEnd: () => import('../EditorCommand/EditorCommandComposition.js'),\n copy: () => import('../EditorCommand/EditorCommandCopy.js'),\n openFind: () => import('../EditorCommand/EditorCommandOpenFind.js'),\n setSelections: () => import('../EditorCommand/EditorCommandSetSelections.js'),\n format: () => import('../EditorCommand/EditorCommandFormat.js'),\n goToDefinition: () => import('../EditorCommand/EditorCommandGoToDefinition.js'),\n goToTypeDefinition: () => import('../EditorCommand/EditorCommandGoToTypeDefinition.js'),\n handleBeforeInputFromContentEditable: () => import('../EditorCommand/EditorCommandHandleNativeBeforeInputFromContentEditable.js'),\n handleDoubleClick: () => import('../EditorCommand/EditorCommandHandleDoubleClick.js'),\n handleMouseMove: () => import('../EditorCommand/EditorCommandHandleMouseMove.js'),\n handleMouseMoveWithAltKey: () => import('../EditorCommand/EditorCommandHandleMouseMoveWithAltKey.js'),\n handleNativeSelectionChange: () => import('../EditorCommand/EditorCommandHandleNativeSelectionChange.js'),\n handleScrollBarClick: () => import('../EditorCommand/EditorCommandHandleScrollBarPointerDown.js'),\n handleScrollBarPointerDown: () => import('../EditorCommand/EditorCommandHandleScrollBarPointerDown.js'),\n handleScrollBarMove: () => import('../EditorCommand/EditorCommandHandleScrollBarMove.js'),\n handleSingleClick: () => import('../EditorCommand/EditorCommandHandleSingleClick.js'),\n handleTab: () => import('../EditorCommand/EditorCommandHandleTab.js'),\n handleTouchEnd: () => import('../EditorCommand/EditorCommandHandleTouchEnd.js'),\n handleTouchMove: () => import('../EditorCommand/EditorCommandHandleTouchMove.js'),\n handleTouchStart: () => import('../EditorCommand/EditorCommandHandleTouchStart.js'),\n handleTripleClick: () => import('../EditorCommand/EditorCommandHandleTripleClick.js'),\n indentLess: () => import('../EditorCommand/EditorCommandIndentLess.js'),\n indentMore: () => import('../EditorCommand/EditorCommandIndentMore.js'),\n insertLineBreak: () => import('../EditorCommand/EditorCommandInsertLineBreak.js'),\n moveLineDown: () => import('../EditorCommand/EditorCommandMoveLineDown.js'),\n moveLineUp: () => import('../EditorCommand/EditorCommandMoveLineUp.js'),\n moveRectangleSelection: () => import('../EditorCommand/EditorCommandMoveRectangleSelection.js'),\n moveRectangleSelectionPx: () => import('../EditorCommand/EditorCommandMoveRectangleSelectionPx.js'),\n moveSelection: () => import('../EditorCommand/EditorCommandMoveSelection.js'),\n moveSelectionPx: () => import('../EditorCommand/EditorCommandMoveSelectionPx.js'),\n paste: () => import('../EditorCommand/EditorCommandPaste.js'),\n pasteText: () => import('../EditorCommand/EditorCommandPasteText.js'),\n save: () => import('../EditorCommand/EditorCommandSave.js'),\n selectAll: () => import('../EditorCommand/EditorCommandSelectAll.js'),\n selectAllOccurrences: () => import('../EditorCommand/EditorCommandSelectAllOccurrences.js'),\n selectCharacterLeft: () => import('../EditorCommand/EditorCommandSelectCharacterLeft.js'),\n selectCharacterRight: () => import('../EditorCommand/EditorCommandSelectCharacterRight.js'),\n selectDown: () => import('../EditorCommand/EditorCommandSelectDown.js'),\n selectInsideString: () => import('../EditorCommand/EditorCommandSelectInsideString.js'),\n selectLine: () => import('../EditorCommand/EditorCommandSelectLine.js'),\n selectNextOccurrence: () => import('../EditorCommand/EditorCommandSelectNextOccurrence.js'),\n selectUp: () => import('../EditorCommand/EditorCommandSelectUp.js'),\n selectWord: () => import('../EditorCommand/EditorCommandSelectWord.js'),\n selectWordLeft: () => import('../EditorCommand/EditorCommandSelectWordLeft.js'),\n selectWordRight: () => import('../EditorCommand/EditorCommandSelectWordRight.js'),\n setDecorations: () => import('../EditorCommand/EditorCommandSetDecorations.js'),\n setDeltaY: () => import('../EditorCommand/EditorCommandSetDeltaY.js'),\n setLanguageId: () => import('../EditorCommand/EditorCommandSetLanguageId.js'),\n sortLinesAscending: () => import('../EditorCommand/EditorCommandSortLinesAscending.js'),\n tabCompletion: () => import('../EditorCommand/EditorCommandTabCompletion.js'),\n toggleBlockComment: () => import('../EditorCommand/EditorCommandToggleBlockComment.js'),\n toggleComment: () => import('../EditorCommand/EditorCommandToggleComment.js'),\n type: () => import('../EditorCommand/EditorCommandType.js'),\n undo: () => import('../EditorCommand/EditorCommandUndo.js'),\n unIndent: () => import('../EditorCommand/EditorCommandUnindent.js'),\n}\n\n// prettier-ignore\nexport const Events = {\n 'languages.changed': ViewletEditorText.handleLanguagesChanged,\n // 'editor.change': ViewletEditorText.handleEditorChange,\n // 'tokenizer.changed': ViewletEditorText.handleTokenizeChange,\n}\n\nexport const Css = '/css/parts/ViewletEditor.css'\n\nexport * from './ViewletEditorText.js'\n", "import * as FileSystem from '../FileSystem/FileSystem.js'\nimport * as ViewletModuleId from '../ViewletModuleId/ViewletModuleId.js'\n\nexport const create = (id, uri, left, top, width, height) => {\n return {\n content: 'abc',\n uri,\n disposed: false,\n }\n}\n\nexport const loadContent = async (state) => {\n const content = await FileSystem.readFile(state.uri)\n return {\n ...state,\n content,\n }\n}\n\nexport const dispose = (state) => {\n return {\n ...state,\n disposed: true,\n }\n}\n\nexport const hasFunctionalRender = true\n\nconst renderContent = {\n isEqual(oldState, newState) {\n return oldState.content === newState.content\n },\n apply(oldState, newState) {\n return [/* method */ 'setContent', /* content */ newState.content]\n },\n}\n\nexport const render = [renderContent]\n", "export const name = 'EditorPlainText'\n\nexport const Commands = {}\n\nexport * from './ViewletEditorPlainText.js'\n", "import * as Command from '../Command/Command.js'\nimport * as FileSystem from '../FileSystem/FileSystem.js'\nimport * as Procotol from '../Protocol/Protocol.js'\n\nconst getSrcRemote = (uri) => {\n const src = `/remote${uri}`\n return src\n}\n\nconst getSrcWithBlobUrl = async (uri) => {\n const content = await FileSystem.readFile(uri)\n const mimeType = await Command.execute('Mime.getMediaMimeType', uri)\n const blob = await Command.execute(\n 'Blob.binaryStringToBlob',\n content,\n mimeType\n )\n const dataUrl = await Command.execute('Url.createObjectUrl', blob)\n return dataUrl\n}\n\nconst canUseRemoteLoading = (uri) => {\n const protocol = FileSystem.getProtocol(uri)\n return protocol === ''\n}\n\nexport const getSrc = (uri) => {\n if (canUseRemoteLoading(uri)) {\n return getSrcRemote(uri)\n }\n return getSrcWithBlobUrl(uri)\n}\n\nexport const disposeSrc = async (src) => {\n if (src.startsWith(Procotol.Blob)) {\n await Command.execute('Url.revokeObjectUrl', src)\n }\n}\n", "export const create = (init = [1, 0, 0, 1, 0, 0]) => {\n return new DOMMatrix(init)\n}\n\nexport const scaleUp = (domMatrix, deltaScale) => {\n return new DOMMatrix([\n (domMatrix.a *= deltaScale),\n domMatrix.b,\n domMatrix.c,\n (domMatrix.d *= deltaScale),\n domMatrix.e,\n domMatrix.f,\n ])\n}\n\nexport const scaleDown = (domMatrix, deltaScale) => {\n return scaleUp(domMatrix, 1 / deltaScale)\n}\n\nexport const zoomInto = (domMatrix, zoomFactor, relativeX, relativeY) => {\n return new DOMMatrix()\n .translateSelf(relativeX, relativeY)\n .scaleSelf(zoomFactor)\n .translateSelf(-relativeX, -relativeY)\n .multiplySelf(domMatrix)\n}\n\n// workaround for browser bug\nexport const toString = (domMatrix) => {\n const { a, b, c, d, e, f } = domMatrix\n return `matrix(${a}, ${b}, ${c}, ${d}, ${e}, ${f})`\n}\n\nexport const move = (domMatrix, deltaX, deltaY) => {\n return new DOMMatrix([\n domMatrix.a,\n domMatrix.b,\n domMatrix.c,\n domMatrix.d,\n domMatrix.e + deltaX,\n domMatrix.f + deltaY,\n ])\n}\n", "import * as Platform from '../Platform/Platform.js'\n\nexport const normalizeDelta = (delta) => {\n if (Platform.isFirefox) {\n return delta * (52 / 114)\n }\n return delta\n}\n", "import * as Arrays from '../Arrays/Arrays.js'\nimport * as Assert from '../Assert/Assert.js'\nimport * as BlobSrc from '../BlobSrc/BlobSrc.js'\nimport * as Clamp from '../Clamp/Clamp.js'\nimport * as DomMatrix from '../DomMatrix/DomMatrix.js'\nimport * as ViewletModuleId from '../ViewletModuleId/ViewletModuleId.js'\nimport * as WheelEvent from '../WheelEvent/WheelEvent.js'\n\nexport const create = (id, uri, left, top, width, height) => {\n return {\n src: '',\n disposed: false,\n top,\n left,\n width,\n height,\n uri,\n domMatrix: DomMatrix.create(),\n pointerOffsetX: 0,\n pointerOffsetY: 0,\n minZoom: 0.1,\n maxZoom: 2 ** 15, // max value that doesn't result in degradation\n zoomFactor: 200,\n touchZoomFactor: 1.015,\n eventCache: [],\n previousDiff: 0,\n pointerDownCount: 0,\n }\n}\n\n// TODO revoke object url when disposed\nexport const loadContent = async (state, savedState) => {\n const { uri } = state\n const src = await BlobSrc.getSrc(uri)\n return {\n ...state,\n src,\n }\n}\n\nexport const dispose = async (state) => {\n const { src } = state\n await BlobSrc.disposeSrc(src)\n return {\n ...state,\n disposed: true,\n }\n}\n\nexport const handlePointerDown = (state, pointerId, x, y) => {\n Assert.object(state)\n Assert.number(x)\n Assert.number(y)\n const { eventCache, pointerDownCount } = state\n const newEventCache = [...eventCache, { pointerId, x, y }]\n const newPointerDownCount = pointerDownCount + 1\n return {\n ...state,\n pointerOffsetX: x,\n pointerOffsetY: y,\n eventCache: newEventCache,\n pointerDownCount: newPointerDownCount,\n }\n}\n\nconst distance = (point1, point2) => {\n const dx = point1.x - point2.x\n const dy = point1.y - point2.y\n return Math.hypot(dx + dy)\n}\n\nconst handleZoom = (state) => {\n const { domMatrix, eventCache, previousDiff, touchZoomFactor } = state\n const currentDiff = distance(eventCache[0], eventCache[1])\n if (previousDiff > 0) {\n if (currentDiff > previousDiff) {\n const newDomMatrix = DomMatrix.scaleUp(domMatrix, touchZoomFactor)\n return {\n ...state,\n previousDiff: currentDiff,\n domMatrix: newDomMatrix,\n }\n }\n if (currentDiff < previousDiff) {\n const newDomMatrix = DomMatrix.scaleDown(domMatrix, touchZoomFactor)\n return {\n ...state,\n previousDiff: currentDiff,\n domMatrix: newDomMatrix,\n }\n }\n }\n return state\n}\n\nconst handleMove = (state, x, y) => {\n const { pointerOffsetX, pointerOffsetY, domMatrix } = state\n const deltaX = x - pointerOffsetX\n const deltaY = y - pointerOffsetY\n const newDomMatrix = DomMatrix.move(domMatrix, deltaX, deltaY)\n return {\n ...state,\n pointerOffsetX: x,\n pointerOffsetY: y,\n domMatrix: newDomMatrix,\n }\n}\n\nexport const handlePointerMove = (state, pointerId, x, y) => {\n Assert.object(state)\n Assert.number(x)\n Assert.number(y)\n const { eventCache, pointerDownCount } = state\n if (pointerDownCount === 0) {\n return state\n }\n const index = Arrays.findObjectIndex(eventCache, 'pointerId', pointerId)\n // TODO avoid mutation\n eventCache[index] = { pointerId, x, y }\n if (eventCache.length === 2) {\n return handleZoom(state)\n }\n return handleMove(state, x, y)\n}\n\nconst removePointer = (eventCache, pointerId) => {\n const index = Arrays.findObjectIndex(eventCache, 'pointerId', pointerId)\n const newEventCache = [\n ...eventCache.slice(0, index),\n ...eventCache.slice(index + 1),\n ]\n return newEventCache\n}\n\nexport const handlePointerUp = (state, pointerId, x, y) => {\n const { eventCache, pointerDownCount } = state\n if (pointerDownCount === 0) {\n return state\n }\n const newEventCache = removePointer(eventCache, pointerId)\n const newPointerDownCount = pointerDownCount - 1\n return {\n ...state,\n eventCache: newEventCache,\n pointerDownCount: newPointerDownCount,\n }\n}\n\nconst getNewZoom = (zoom, currentZoomFactor, minZoom, maxZoom) => {\n const newZoom = zoom * currentZoomFactor\n return Clamp.clamp(newZoom, minZoom, maxZoom)\n}\n\nconst getCurrentZoomFactor = (zoomFactor, deltaY) => {\n // TODO use enum for direction\n const direction = deltaY < 0 ? 'up' : 'down'\n const normalizedDeltaY = 1 + Math.abs(deltaY) / zoomFactor\n const currentZoomFactor =\n direction === 'up' ? normalizedDeltaY : 1 / normalizedDeltaY\n return currentZoomFactor\n}\n\nexport const handleWheel = (state, x, y, deltaX, deltaY) => {\n if (deltaY === 0) {\n return state\n }\n const normalizedDeltaY = WheelEvent.normalizeDelta(deltaY)\n const { top, left } = state\n const relativeX = x - left\n const relativeY = y - top\n const { domMatrix, zoomFactor, minZoom, maxZoom } = state\n const currentZoomFactor = getCurrentZoomFactor(zoomFactor, normalizedDeltaY)\n const newDomMatrix = DomMatrix.zoomInto(\n domMatrix,\n currentZoomFactor,\n relativeX,\n relativeY\n )\n return {\n ...state,\n domMatrix: newDomMatrix,\n }\n}\n\nexport const hasFunctionalRender = true\n\nconst renderSrc = {\n isEqual(oldState, newState) {\n return oldState.src === newState.src\n },\n apply(oldState, newState) {\n return [/* method */ 'setSrc', /* src */ newState.src]\n },\n}\n\nconst renderTransform = {\n isEqual(oldState, newState) {\n return oldState.domMatrix === newState.domMatrix\n },\n apply(oldState, newState) {\n const transform = DomMatrix.toString(newState.domMatrix)\n return [/* method */ 'setTransform', /* transform */ transform]\n },\n}\n\nconst renderCursor = {\n isEqual(oldState, newState) {\n return oldState.eventCache.length === newState.eventCache.length\n },\n apply(oldState, newState) {\n const isDragging = newState.eventCache.length > 0\n return [/* method */ 'setDragging', /* isDragging */ isDragging]\n },\n}\n\nexport const render = [renderSrc, renderTransform, renderCursor]\n", "import * as Command from '../Command/Command.js'\n\nexport const copyImage = async (state) => {\n const blob = await Command.execute('Ajax.getBlob', state.src)\n await Command.execute('ClipBoard.writeImage', blob)\n return state\n}\n", "import * as Command from '../Command/Command.js'\n\nexport const copyPath = async (state) => {\n await Command.execute('ClipBoard.writeText', state.uri)\n return state\n}\n", "import * as Command from '../Command/Command.js'\nimport * as MenuEntryId from '../MenuEntryId/MenuEntryId.js'\n\nexport const handleContextMenu = async (state, x, y) => {\n await Command.execute(\n /* ContextMenu.show */ 'ContextMenu.show',\n /* x */ x,\n /* y */ y,\n /* id */ MenuEntryId.EditorImage\n )\n return state\n}\n", "import * as ViewletEditorImage from './ViewletEditorImage.js'\n\nexport const name = 'EditorImage'\n\n// prettier-ignore\nexport const Commands = {\n handlePointerDown: ViewletEditorImage.handlePointerDown,\n handlePointerMove: ViewletEditorImage.handlePointerMove,\n handlePointerUp: ViewletEditorImage.handlePointerUp,\n handleWheel: ViewletEditorImage.handleWheel,\n}\n\n// prettier-ignore\nexport const LazyCommands = {\n copyImage: () => import('./ViewletEditorImageCopyImage.js'),\n copyPath: () => import('./ViewletEditorImageCopyPath.js'),\n handleContextMenu: () => import('./ViewletEditorImageHandleContextMenu.js')\n}\n\nexport const Css = '/css/parts/ViewletEditorImage.css'\n\nexport * from './ViewletEditorImage.js'\n", "import * as RendererProcess from '../RendererProcess/RendererProcess.js'\nimport * as ViewletModuleId from '../ViewletModuleId/ViewletModuleId.js'\n\nexport const create = (id, uri, left, top, width, height) => {\n return {\n id,\n interval: -1,\n disposed: false,\n }\n}\n\nexport const loadContent = (state) => {\n const update = async () => {\n await RendererProcess.invoke(\n /* Viewlet.invoke */ 'Viewlet.send',\n /* id */ ViewletModuleId.Clock,\n /* method */ 'setTime',\n /* time */ Date.now()\n )\n }\n return {\n ...state,\n interval: setInterval(update, 1000),\n }\n}\n\n// TODO use contentLoadedEffects\n\nexport const dispose = (state) => {\n clearInterval(state.interval)\n state.interval = -1\n state.disposed = true\n}\n", "export const name = 'Clock'\n\nexport const Commands = {}\n\nexport * from './ViewletClock.js'\n", "export const Tab = 1\n\nexport const Button = 2\n", "export const focusIndex = (state, index) => {\n return {\n ...state,\n focusedIndex: index,\n focused: true,\n }\n}\n", "import * as ActivityBarItemFlags from '../ActivityBarItemFlags/ActivityBarItemFlags.js'\nimport * as Command from '../Command/Command.js'\nimport * as Height from '../Height/Height.js'\nimport * as I18nString from '../I18NString/I18NString.js'\nimport * as Icon from '../Icon/Icon.js'\nimport * as MenuEntryId from '../MenuEntryId/MenuEntryId.js'\nimport * as ViewletModuleId from '../ViewletModuleId/ViewletModuleId.js'\nimport * as ViewletStates from '../ViewletStates/ViewletStates.js'\nimport { focusIndex } from './ViewletActivityBarFocusIndex.js'\n\n/**\n * @enum {string}\n */\nconst UiStrings = {\n Explorer: 'Explorer',\n Search: 'Search',\n SourceControl: 'Source Control',\n RunAndDebug: 'Run and Debug',\n Extensions: 'Extensions',\n Settings: 'Settings',\n AdditionalViews: 'Additional Views',\n}\n\n// TODO rename viewlet parameter to something else (e.g. clicking settings opens context menu not settings viewlet)\n// TODO should just pass index\n// then if item is viewlet -> open viewlet\n// else if item is settings -> open settings\n\n// TODO this should be create\n// TODO unregister listeners when hidden\n\nconst getNumberOfVisibleItems = (state) => {\n const { height, itemHeight } = state\n const numberOfVisibleItemsTop = Math.floor(height / itemHeight)\n return numberOfVisibleItemsTop\n}\n\nexport const getHiddenItems = (state) => {\n const numberOfVisibleItems = getNumberOfVisibleItems(state)\n const items = state.activityBarItems\n if (numberOfVisibleItems >= items.length) {\n return []\n }\n return state.activityBarItems.slice(numberOfVisibleItems - 2, -1)\n}\n\nconst getVisibleActivityBarItems = (state) => {\n const numberOfVisibleItems = getNumberOfVisibleItems(state)\n const items = state.activityBarItems\n if (numberOfVisibleItems >= items.length) {\n return items\n }\n const showMoreItem = {\n id: 'Additional Views',\n title: I18nString.i18nString(UiStrings.AdditionalViews),\n icon: Icon.Ellipsis,\n enabled: true,\n flags: ActivityBarItemFlags.Button,\n keyShortCuts: '',\n }\n const visibleItems = [\n ...items.slice(0, numberOfVisibleItems - 2),\n showMoreItem,\n items.at(-1),\n ]\n return visibleItems\n}\n\nexport const create = (id, uri, left, top, width, height) => {\n return {\n // TODO declarative event api is good, but need to bind\n // listeners to state somehow\n // also the use of global event bus is not good\n // and this api is not strongly typed\n events: {\n 'SourceControl.changeBadgeCount': 8012,\n 'Layout.hideSideBar': 8014,\n 'SideBar.viewletChange': 8013,\n },\n activityBarItems: [],\n focusedIndex: -1,\n selectedIndex: -1,\n focused: false,\n left,\n top,\n width,\n height,\n itemHeight: Height.ActivityBarItem,\n }\n}\n\nconst getActivityBarItems = () => {\n return [\n // Top\n {\n id: ViewletModuleId.Explorer,\n title: I18nString.i18nString(UiStrings.Explorer),\n icon: Icon.Files,\n enabled: true,\n flags: ActivityBarItemFlags.Tab,\n keyShortcuts: 'Control+Shift+E',\n },\n {\n id: ViewletModuleId.Search,\n title: I18nString.i18nString(UiStrings.Search),\n icon: Icon.Search,\n enabled: true,\n flags: ActivityBarItemFlags.Tab,\n keyShortcuts: 'Control+Shift+F',\n },\n {\n id: ViewletModuleId.SourceControl,\n title: I18nString.i18nString(UiStrings.SourceControl),\n icon: Icon.SourceControl,\n enabled: true,\n flags: ActivityBarItemFlags.Tab,\n keyShortcuts: 'Control+Shift+G',\n },\n {\n id: ViewletModuleId.RunAndDebug,\n title: I18nString.i18nString(UiStrings.RunAndDebug),\n icon: Icon.DebugAlt2,\n enabled: true,\n flags: ActivityBarItemFlags.Tab,\n keyShortcuts: 'Control+Shift+D',\n },\n {\n id: ViewletModuleId.Extensions,\n title: I18nString.i18nString(UiStrings.Extensions),\n icon: Icon.Extensions,\n enabled: true,\n flags: ActivityBarItemFlags.Tab,\n keyShortcuts: 'Control+Shift+X',\n },\n // Bottom\n {\n id: 'Settings',\n title: I18nString.i18nString(UiStrings.Settings),\n icon: Icon.SettingsGear,\n enabled: true,\n flags: ActivityBarItemFlags.Button,\n keyShortcuts: '',\n },\n ]\n}\n\nexport const loadContent = async (state) => {\n const activityBarItems = getActivityBarItems()\n const sideBar = ViewletStates.getInstance('SideBar')\n const viewletId =\n sideBar && sideBar.state ? sideBar.state.currentViewletId : ''\n const selectedIndex = findIndex(activityBarItems, viewletId)\n return {\n ...state,\n selectedIndex,\n activityBarItems,\n }\n}\n\nconst findIndex = (activityBarItems, id) => {\n for (let i = 0; i < activityBarItems.length; i++) {\n if (activityBarItems[i].id === id) {\n return i\n }\n }\n return -1\n}\n\nexport const handleSideBarViewletChange = (state, id, ...args) => {\n const index = findIndex(state.activityBarItems, id)\n return {\n ...state,\n selectedIndex: index,\n }\n}\n\nexport const handleSideBarHidden = (state) => {\n return {\n ...state,\n focusedIndex: -1,\n selectedIndex: -1,\n }\n}\n\nexport const updateSourceControlCount = async (state, count) => {\n if (count === 0) {\n return\n }\n const index = state.activityBarItems.findIndex(\n (item) => item.id === 'Source Control'\n )\n if (index === -1) {\n return\n }\n return {\n ...state,\n badgeCount: count,\n }\n\n // TODO send count to renderer process (if activity bar is visible)\n}\n\nexport const toggleItem = (context, item) => {\n // const item = activityBarFindItem(id)\n}\n\nconst isEnabled = (activityBarItem) => {\n return activityBarItem.enabled\n}\n\nexport const toggleActivityBarItem = async (state, item) => {\n const activityBarItem = state.activityBarItems.find(\n (activityBarItem) => activityBarItem.id === item.label\n )\n activityBarItem.enabled = !activityBarItem.enabled\n return {\n ...state,\n items: state.activityBarItems.filter(isEnabled),\n }\n}\n\nexport const handleContextMenu = async (state, x, y) => {\n await Command.execute(\n /* ContextMenu.show */ 'ContextMenu.show',\n /* x */ x,\n /* y */ y,\n /* id */ MenuEntryId.ActivityBar\n )\n return state\n}\n\nexport const handleBlur = (state) => {\n return {\n ...state,\n focused: false,\n }\n}\n\nexport const focus = (state) => {\n const { focusedIndex } = state\n const indexToFocus = focusedIndex === -1 ? 0 : focusedIndex\n return focusIndex(state, indexToFocus)\n}\n\nexport const hasFunctionalResize = true\n\nexport const resize = (state, dimensions) => {\n return {\n ...state,\n ...dimensions,\n }\n}\n\nconst renderActivityBarItems = {\n isEqual(oldState, newState) {\n return (\n oldState.activityBarItems === newState.activityBarItems &&\n oldState.height === newState.height\n )\n },\n apply(oldState, newState) {\n const visibleItems = getVisibleActivityBarItems(newState)\n return [/* method */ 'setItems', /* items */ visibleItems]\n },\n}\n\nconst renderFocusedIndex = {\n isEqual(oldState, newState) {\n return (\n oldState.focusedIndex === newState.focusedIndex &&\n oldState.focused === newState.focused\n )\n },\n apply(oldState, newState) {\n return [\n /* method */ 'setFocusedIndex',\n /* unFocusIndex */ oldState.focusedIndex,\n /* focusIndex */ newState.focusedIndex,\n /* focused */ newState.focused,\n ]\n },\n}\n\nconst renderSelectedIndex = {\n isEqual(oldState, newState) {\n return oldState.selectedIndex === newState.selectedIndex\n },\n apply(oldState, newState) {\n return [\n /* method */ 'setSelectedIndex',\n /* oldIndex */ oldState.selectedIndex,\n /* newIndex */ newState.selectedIndex,\n ]\n },\n}\n\nexport const render = [\n renderActivityBarItems,\n renderFocusedIndex,\n renderSelectedIndex,\n]\n\nexport const hasFunctionalRender = true\n", "import { focusIndex } from './ViewletActivityBarFocusIndex.js'\n\nexport const focus = (state) => {\n const indexToFocus = state.focusedIndex === -1 ? 0 : state.focusedIndex\n return focusIndex(state, indexToFocus)\n}\n", "import { focusIndex } from './ViewletActivityBarFocusIndex.js'\n\nexport const focusFirst = (state) => {\n return focusIndex(state, 0)\n}\n", "import { focusIndex } from './ViewletActivityBarFocusIndex.js'\nimport * as Arrays from '../Arrays/Arrays.js'\n\nexport const focusLast = (state) => {\n return focusIndex(state, Arrays.lastIndex(state.activityBarItems))\n}\n", "import { focusIndex } from './ViewletActivityBarFocusIndex.js'\n\nexport const focusNext = (state) => {\n // TODO can never be -1 -> always set when sidebar changes\n if (state.focusedIndex === state.activityBarItems.length - 1) {\n return state\n }\n return focusIndex(state, state.focusedIndex + 1)\n}\n", "import { focusIndex } from './ViewletActivityBarFocusIndex.js'\n\nexport const focusPrevious = (state) => {\n if (state.focusedIndex === 0) {\n return state\n }\n return focusIndex(state, state.focusedIndex - 1)\n}\n", "import * as Command from '../Command/Command.js'\nimport * as MenuEntryId from '../MenuEntryId/MenuEntryId.js'\nimport * as ViewletStates from '../ViewletStates/ViewletStates.js'\nimport * as ViewletModuleId from '../ViewletModuleId/ViewletModuleId.js'\n\nconst handleClickSettings = async (state, x, y, viewletId) => {\n await Command.execute(\n /* ContextMenu.show */ 'ContextMenu.show',\n /* x */ x,\n /* y */ y,\n /* id */ MenuEntryId.Settings\n )\n return state\n}\n\nconst handleClickAdditionalViews = async (state, x, y, viewletId) => {\n await Command.execute(\n /* ContextMenu.show */ 'ContextMenu.show',\n /* x */ x,\n /* y */ y,\n /* id */ MenuEntryId.ActivityBarAdditionalViews\n )\n return state\n}\n\nconst handleClickOther = async (state, x, y, viewletId) => {\n console.log({ state })\n const layoutInstance = ViewletStates.getInstance(ViewletModuleId.Layout)\n const sideBarVisible = layoutInstance.factory.isSideBarVisible(\n layoutInstance.state\n )\n if (sideBarVisible) {\n const sideBarState = ViewletStates.getState(ViewletModuleId.SideBar)\n if (sideBarState.currentViewletId === viewletId) {\n await Command.execute('Layout.hideSideBar')\n } else {\n await Command.execute(\n /* SideBar.show */ 'SideBar.show',\n /* id */ viewletId\n )\n }\n } else {\n // TODO should show side bar with viewletId\n await Command.execute('Layout.showSideBar')\n }\n return state\n}\n\nexport const handleClick = async (state, index, x, y) => {\n const { activityBarItems } = state\n const viewletId = activityBarItems[index].id\n switch (viewletId) {\n case 'Settings':\n return handleClickSettings(state, x, y, viewletId)\n case 'Additional Views':\n return handleClickAdditionalViews(state, x, y, viewletId)\n default:\n return handleClickOther(state, x, y, viewletId)\n }\n}\n", "import { handleClick } from './ViewletActivityBarHandleClick.js'\n\nconst getPosition = (state, index) => {\n const { activityBarItems, top, left, height, itemHeight } = state\n if (index > activityBarItems.length - 2) {\n // at bottom\n return {\n x: left,\n y: top + height - (activityBarItems.length - 1 - index) * itemHeight,\n }\n }\n // at top\n return {\n x: left,\n y: top + index * itemHeight,\n }\n}\n\nexport const selectCurrent = (state) => {\n if (state.focusedIndex === -1) {\n return\n }\n const position = getPosition(state, state.focusedIndex)\n return handleClick(state, state.focusedIndex, position.x, position.y)\n}\n", "import * as ViewletActivityBar from './ViewletActivityBar.js'\n\nexport const name = 'ActivityBar'\n\n// prettier-ignore\nexport const Commands = {\n getHiddenItems: ViewletActivityBar.getHiddenItems,\n handleBlur: ViewletActivityBar.handleBlur,\n handleContextMenu: ViewletActivityBar.handleContextMenu,\n handleSideBarHidden: ViewletActivityBar.handleSideBarHidden,\n handleSideBarViewletChange: ViewletActivityBar.handleSideBarViewletChange,\n toggleItem: ViewletActivityBar.toggleItem,\n updateSourceControlCount: ViewletActivityBar.updateSourceControlCount,\n}\n\n// prettier-ignore\nexport const LazyCommands={\n focus: () => import('./ViewletActivityBarFocus.js'),\n focusFirst: () => import('./ViewletActivityBarFocusFirst.js'),\n focusIndex: () => import('./ViewletActivityBarFocusIndex.js'),\n focusLast: () => import('./ViewletActivityBarFocusLast.js'),\n focusNext: () => import('./ViewletActivityBarFocusNext.js'),\n focusPrevious: () => import('./ViewletActivityBarFocusPrevious.js'),\n selectCurrent: () => import('./ViewletActivityBarSelectCurrent.js'),\n handleClick: () => import('./ViewletActivityBarHandleClick.js'),\n}\n\nexport const Events = {\n 'SourceControl.changeBadgeCount': ViewletActivityBar.updateSourceControlCount,\n 'Layout.hideSideBar': ViewletActivityBar.handleSideBarHidden,\n 'SideBar.viewletChange': ViewletActivityBar.handleSideBarViewletChange,\n}\n\nexport const Css = [\n '/css/parts/ViewletActivityBar.css',\n '/css/parts/MaskIcon.css',\n]\n\nexport * from './ViewletActivityBar.js'\n", "import * as RendererProcess from '../RendererProcess/RendererProcess.js'\nimport * as ViewletManager from '../ViewletManager/ViewletManager.js'\nimport * as ViewletModule from '../ViewletModule/ViewletModule.js'\nimport * as ViewletModuleId from '../ViewletModuleId/ViewletModuleId.js'\nimport * as ViewletStates from '../ViewletStates/ViewletStates.js'\n\nexport const create = () => {\n return {\n currentViewletId: '',\n currentViewlet: undefined,\n views: [],\n disposed: false,\n focusedIndex: -1,\n selectedIndex: -1,\n }\n}\n\nconst getSavedViewletId = (savedState) => {\n if (savedState && savedState.currentViewletId) {\n return savedState.currentViewletId\n }\n return ViewletModuleId.Problems\n}\n\nexport const loadContent = (state, savedState) => {\n const savedViewletId = getSavedViewletId(savedState)\n const views = [\n ViewletModuleId.Problems,\n ViewletModuleId.Output,\n ViewletModuleId.DebugConsole,\n ViewletModuleId.Terminal,\n ]\n const selectedIndex = views.indexOf(savedViewletId)\n return {\n ...state,\n views,\n currentViewletId: savedViewletId,\n selectedIndex,\n }\n}\n\nconst getContentDimensions = (dimensions) => {\n return {\n left: dimensions.left,\n top: dimensions.top + 35,\n width: dimensions.width,\n height: dimensions.height - 35,\n }\n}\n\n// TODO\nexport const getChildren = (state) => {\n const { top, left, width, height, titleAreaHeight, currentViewletId } = state\n return [\n {\n id: currentViewletId,\n ...getContentDimensions(state),\n },\n ]\n}\n\nexport const dispose = (state) => {\n return {\n ...state,\n disposed: true,\n }\n}\n\n// TODO this function is a bit messy\n// TODO no default parameter -> monomorphism\nexport const openViewlet = async (state, id, focus = false) => {\n console.assert(typeof id === 'string')\n const { currentViewletId } = state\n state.currentViewletId = id\n console.log({ id })\n const childDimensions = getContentDimensions(state)\n const commands = await ViewletManager.load({\n getModule: ViewletModule.load,\n id,\n type: 0,\n // @ts-ignore\n uri: '',\n show: false,\n focus: false,\n setBounds: false,\n top: childDimensions.top,\n left: childDimensions.left,\n width: childDimensions.width,\n height: childDimensions.height,\n })\n if (commands) {\n commands.unshift(['Viewlet.dispose', currentViewletId])\n commands.push(['Viewlet.append', ViewletModuleId.Panel, id])\n await RendererProcess.invoke('Viewlet.sendMultiple', commands)\n }\n return { ...state }\n}\n\nexport const selectIndex = async (state, index) => {\n await openViewlet(state, state.views[index])\n return {\n ...state,\n selectedIndex: index,\n }\n}\n\nexport const hasFunctionalRender = true\n\nconst renderTabs = {\n isEqual(oldState, newState) {\n return oldState.views === newState.views\n },\n apply(oldState, newState) {\n return [/* method */ 'setTabs', /* tabs */ newState.views]\n },\n}\n\nconst renderSelectedIndex = {\n isEqual(oldState, newState) {\n return oldState.selectedIndex === newState.selectedIndex\n },\n apply(oldState, newState) {\n return [\n /* method */ 'setSelectedIndex',\n /* unFocusIndex */ oldState.selectedIndex,\n /* focusIndex */ newState.selectedIndex,\n ]\n },\n}\n\nexport const render = [renderTabs, renderSelectedIndex]\n\nexport const hasFunctionalResize = true\n\nexport const resize = (state, dimensions) => {\n return state\n}\n", "import * as ViewletPanel from '../ViewletPanel/ViewletPanel.js'\n\nexport const name = 'Panel'\n\n// prettier-ignore\nexport const Commands = {\n selectIndex: ViewletPanel.selectIndex\n}\n\nexport const Css = ['/css/parts/ViewletPanel.css', '/css/parts/IconButton.css']\n\nexport * from './ViewletPanel.js'\n", "import * as Command from '../Command/Command.js'\nimport * as RendererProcess from '../RendererProcess/RendererProcess.js'\nimport * as Viewlet from '../Viewlet/Viewlet.js'\nimport * as ViewletManager from '../ViewletManager/ViewletManager.js'\nimport * as ViewletModule from '../ViewletModule/ViewletModule.js'\nimport * as ViewletModuleId from '../ViewletModuleId/ViewletModuleId.js'\nimport * as ViewletStates from '../ViewletStates/ViewletStates.js'\n\nexport const create = (id, uri, left, top, width, height) => {\n return {\n currentViewletId: '',\n left,\n top,\n width,\n height,\n titleAreaHeight: 35,\n }\n}\n\nconst getSavedViewletId = (savedState) => {\n if (savedState && savedState.currentViewletId) {\n return savedState.currentViewletId\n }\n return ViewletModuleId.Explorer\n}\n\nexport const loadContent = (state, savedState) => {\n const savedViewletId = getSavedViewletId(savedState)\n return {\n ...state,\n currentViewletId: savedViewletId,\n }\n}\n\n// export const loadContentEffects = () => {\n// LifeCycle.once(LifeCycle.PHASE_TWELVE, hydrateLazy)\n// GlobalEventBus.addListener('Layout.hideSideBar', handleSideBarClose)\n// }\n\n/**\n *\n * @param {*} dimensions\n * @param {number} titleAreaHeight\n * @returns\n */\nconst getContentDimensions = (dimensions, titleAreaHeight) => {\n return {\n left: dimensions.left,\n top: dimensions.top + titleAreaHeight,\n width: dimensions.width,\n height: dimensions.height - titleAreaHeight,\n }\n}\n\n// TODO\nexport const getChildren = (state) => {\n const { top, left, width, height, titleAreaHeight, currentViewletId } = state\n return [\n {\n id: currentViewletId,\n ...getContentDimensions(state, titleAreaHeight),\n },\n ]\n}\n\n// TODO no default parameter -> monomorphism\nexport const openViewlet = async (state, id, focus = false) => {\n console.assert(typeof id === 'string')\n // if (state.currentViewletId) {\n // console.log('dispose current viewlet', state.currentViewletId)\n // Viewlet.dispose(state.currentViewletId)\n // }\n const { currentViewletId, titleAreaHeight } = state\n state.currentViewletId = id\n\n const childDimensions = getContentDimensions(state, titleAreaHeight)\n\n const commands = await ViewletManager.load({\n getModule: ViewletModule.load,\n id,\n type: 0,\n // @ts-ignore\n uri: '',\n show: false,\n focus: false,\n setBounds: false,\n top: childDimensions.top,\n left: childDimensions.left,\n width: childDimensions.width,\n height: childDimensions.height,\n })\n if (commands) {\n commands.unshift(['Viewlet.dispose', currentViewletId])\n commands.push(['Viewlet.append', ViewletModuleId.SideBar, id])\n const activityBar = ViewletStates.getInstance(ViewletModuleId.ActivityBar)\n if (activityBar) {\n const oldState = activityBar.state\n const newState = activityBar.factory.handleSideBarViewletChange(\n oldState,\n id\n )\n const extraCommands = ViewletManager.render(\n activityBar.factory,\n oldState,\n newState\n )\n activityBar.state = newState\n commands.push(...extraCommands)\n }\n await RendererProcess.invoke('Viewlet.sendMultiple', commands)\n }\n\n // // TODO race condition (check if disposed after created)\n // const viewlet = ViewletManager.create(\n // ViewletModule.load,\n // id,\n // 'SideBar',\n // 'builtin://',\n // childDimensions.left,\n // childDimensions.top,\n // childDimensions.width,\n // childDimensions.height\n // )\n\n // // TODO add keybinding to title\n // // @ts-ignore\n // await ViewletManager.load(viewlet, focus, /* restore */ true)\n return { ...state }\n}\n\nconst handleSideBarClose = (state) => {\n state.currentViewletId = ''\n}\n\nexport const dispose = (state) => {\n // state.currentViewletId = undefined\n}\n\nexport const openDefaultViewlet = async (state) => {\n await openViewlet(state, 'Explorer')\n}\n\nexport const close = (state) => {\n if (state.currentViewletId) {\n Viewlet.dispose(state.currentViewletId)\n }\n state.currentViewletId = undefined\n // RendererProcess.send([/* sideBarHide */ 5552, /* id */ id])\n}\n\nexport const resize = (state, dimensions) => {\n const { titleAreaHeight } = state\n const childDimensions = getContentDimensions(dimensions, titleAreaHeight)\n const commands = Viewlet.resize(state.currentViewletId, childDimensions)\n return {\n newState: {\n ...state,\n ...dimensions,\n },\n commands,\n }\n}\n\nexport const focus = async (state) => {\n const { currentViewletId } = state\n const currentViewlet = ViewletStates.getInstance(currentViewletId)\n if (!currentViewlet) {\n return state\n }\n await Command.execute(`${currentViewletId}.focus`)\n // if (!currentViewlet.factory.focus) {\n // throw new Error(`missing focus function for ${currentViewletId}`)\n // }\n // const newState = currentViewlet.factory.focus(currentViewlet.state)\n // const commands = ViewletManager.render(\n // currentViewlet.factory,\n // currentViewlet.state,\n // newState\n // )\n // currentViewlet.state = newState\n return state\n // console.log({ currentViewletId })\n}\n\nexport const hasFunctionalRender = true\n\nconst renderTitle = {\n isEqual(oldState, newState) {\n return false\n },\n apply(oldState, newState) {\n return [\n /* Viewlet.send */ 'Viewlet.send',\n /* id */ 'SideBar',\n /* method */ 'setTitle',\n /* name */ newState.currentViewletId,\n ]\n },\n}\n\nexport const render = [renderTitle]\n", "import * as ViewletSideBar from './ViewletSideBar.js'\n\nexport const name = 'SideBar'\n\n// prettier-ignore\nexport const Commands = {\n focus: ViewletSideBar.focus,\n openViewlet: ViewletSideBar.openViewlet,\n show: ViewletSideBar.openViewlet,\n}\n\nexport const Css = '/css/parts/ViewletSideBar.css'\n\nexport * from './ViewletSideBar.js'\n", "import * as ViewletModuleId from '../ViewletModuleId/ViewletModuleId.js'\n\nexport const create = (id, uri, top, left, width, height) => {\n return {\n disposed: false,\n top,\n left,\n width,\n height,\n }\n}\n\nexport const loadContent = (state) => {\n return state\n}\n\nexport const getChildren = (state) => {\n const children = []\n if (true) {\n children.push({\n id: ViewletModuleId.TitleBarMenuBar,\n })\n }\n if (true) {\n children.push({\n id: ViewletModuleId.TitleBarButtons,\n })\n }\n return children\n}\n\nexport const hasFunctionalRender = true\n\nexport const render = []\n\nexport const hasFunctionalResize = true\n\nexport const resize = (state) => {\n return state\n}\n", "export const name = 'TitleBar'\n\n// prettier-ignore\nexport const Commands = {\n}\n\nexport const Css = '/css/parts/ViewletTitleBar.css'\n\nexport * from './ViewletTitleBar.js'\n", "import * as Id from '../Id/Id.js'\nimport * as Assert from '../Assert/Assert.js'\n\nexport const state = Object.create(null)\n\nexport const register = (listener) => {\n const id = Id.create()\n state[id] = listener\n return id\n}\n\nexport const execute = (id, ...args) => {\n Assert.number(id)\n const listener = state[id]\n if (!listener) {\n console.warn(`listener with id ${id} not found`)\n return\n }\n return listener(...args)\n}\n\nexport const unregister = (id) => {\n delete state[id]\n}\n", "import * as Listener from '../Listener/Listener.js'\nimport * as ExtensionHostShared from './ExtensionHostShared.js'\n\nexport const state = {\n changeListeners: [],\n}\n\nconst getStatusBarItemsFromExtension = (extension) => {\n if (!extension.statusBarItems) {\n return []\n }\n return extension.statusBarItems\n}\n\nconst getStatusBarItemsFromExtensions = (extensions) => {\n return extensions.flatMap(getStatusBarItemsFromExtension)\n}\n\nconst combineResults = (results) => {\n return []\n}\n\nexport const getStatusBarItems = () => {\n return ExtensionHostShared.executeProviders({\n event: 'onStatusBarItem',\n method: 'ExtensionHost.getStatusBarItems',\n params: [],\n noProviderFoundMessage: 'No status bar item provider found',\n noProviderFoundResult: [],\n combineResults,\n })\n}\n\n// TODO add function to dispose listener\nexport const onChange = (listener) => {\n const id = Listener.register(listener)\n return ExtensionHostShared.execute({\n method: 'ExtensionHostStatusBar.registerChangeListener',\n params: [id],\n })\n}\n", "import * as ExtensionHostStatusBarItems from '../ExtensionHost/ExtensionHostStatusBarItems.js'\nimport * as ViewletModuleId from '../ViewletModuleId/ViewletModuleId.js'\n\nexport const create = () => {\n return {\n statusBarItemsLeft: [],\n statusBarItemsRight: [],\n }\n}\n\nconst toUiStatusBarItem = (extensionHostStatusBarItem) => {\n return {\n name: extensionHostStatusBarItem.id,\n text: extensionHostStatusBarItem.id,\n tooltip: '',\n command: -1,\n icon: extensionHostStatusBarItem.icon || '',\n }\n}\n\nconst toUiStatusBarItems = (statusBarItems) => {\n if (!statusBarItems) {\n return []\n }\n return statusBarItems.map(toUiStatusBarItems)\n}\n\nexport const loadContent = async (state) => {\n const extensionStatusBarItems =\n await ExtensionHostStatusBarItems.getStatusBarItems()\n\n const uiStatusBarItems = toUiStatusBarItems(extensionStatusBarItems)\n return {\n ...state,\n statusBarItemsLeft: [\n // {\n // name: 'RunTests',\n // text: 'Run Tests',\n // tooltip: '',\n // command: 909021,\n // },\n ...uiStatusBarItems,\n ],\n }\n}\n\nexport const updateStatusBarItems = async (state) => {\n const newState = await loadContent(state)\n return newState\n}\n\nexport const contentLoadedEffects = (state) => {\n // TODO dispose listener\n const handleChange = async () => {\n if (state.disposed) {\n return\n }\n await updateStatusBarItems(state)\n console.log('status bar items changed')\n }\n // maybe return cleanup function from here like react hooks\n ExtensionHostStatusBarItems.onChange(handleChange)\n}\n\nconst updateArray = (items, newItem) => {\n const index = getIndex(items, newItem)\n const before = items.slice(0, index)\n const after = items.slice(index + 1)\n return [...before, newItem, ...after]\n}\n\nexport const itemLeftCreate = (state, name, text, tooltip) => {\n const newItem = {\n name,\n text,\n tooltip,\n }\n const statusBarItemsLeft = [...state.statusBarItemsLeft, newItem]\n return {\n ...state,\n statusBarItemsLeft,\n }\n}\n\nconst getIndex = (items, item) => {\n for (let i = 0; i < items.length; i++) {\n if (items[i].name === item.name) {\n return i\n }\n }\n return -1\n}\n\nexport const itemLeftUpdate = (state, newItem) => {\n return {\n ...state,\n statusBarItemsLeft: updateArray(state.statusBarItemsLeft, newItem),\n }\n}\n\nexport const itemRightCreate = (state, newItem) => {\n const statusBarItemsRight = [...state.statusBarItemsRight, newItem]\n return {\n ...state,\n statusBarItemsRight,\n }\n}\n\nexport const itemRightUpdate = (state, newItem) => {\n return {\n ...state,\n statusBarItemsRight: updateArray(state.statusBarItemsRight, newItem),\n }\n}\n\nexport const handleClick = (name) => {\n // sendExtensionWorker([/* statusBarItemHandleClick */ 7657, /* name */ name])\n}\n\nexport const hasFunctionalResize = true\n\nexport const resize = (state, dimensions) => {\n return {\n ...state,\n ...dimensions,\n }\n}\n\nexport const hasFunctionalRender = true\n\nconst renderItems = {\n isEqual(oldState, newState) {\n return (\n oldState.statusBarItemsLeft === newState.statusBarItemsLeft &&\n oldState.statusBarItemsRight === newState.statusBarItemsRight\n )\n },\n apply(oldState, newState) {\n return [\n /* Viewlet.invoke */ 'Viewlet.send',\n /* id */ ViewletModuleId.StatusBar,\n /* method */ 'setItems',\n /* statusBarItemsLeft */ newState.statusBarItemsLeft,\n /* statusBarItemsRight */ newState.statusBarItemsRight,\n ]\n },\n}\n\nexport const render = [renderItems]\n", "import * as ViewletStatusBar from './ViewletStatusBar.js'\n\nexport const name = 'StatusBar'\n\n// prettier-ignore\nexport const Commands = {\n 'ViewletStatusBar.updateStatusBarItems': ViewletStatusBar.updateStatusBarItems\n}\n\nexport const Css = '/css/parts/ViewletStatusBar.css'\n\nexport * from './ViewletStatusBar.js'\n", "export const state = {\n backgroundTabs: Object.create(null),\n}\n\nexport const add = (uri, props) => {\n state.backgroundTabs[uri] = props\n}\n\nexport const has = (uri) => {\n return uri in state.backgroundTabs\n}\n\nexport const get = (uri) => {\n return state.backgroundTabs[uri]\n}\n", "export const Zero = 0\nexport const One = 1\nexport const Two = 2\nexport const Three = 3\nexport const Four = 4\nexport const Five = 5\nexport const Six = 6\nexport const Seven = 7\nexport const Eight = 8\nexport const Nine = 9\nexport const Ten = 10\nexport const Eleven = 11\nexport const Twelve = 12\nexport const Thirteen = 13\nexport const Fourteen = 14\nexport const Fifteen = 15\nexport const Sixteen = 16\nexport const SevenTeen = 17\n", "import * as LifeCyclePhase from '../LifeCyclePhase/LifeCyclePhase.js'\n\nexport const state = {\n listenerMap: Object.create(null),\n phase: LifeCyclePhase.Zero,\n}\n\nexport const once = (event, listener) => {\n if (state.phase >= event) {\n listener()\n } else {\n // TODO could also statically allocate listenermap at start as array[13]\n state.listenerMap[event] ||= []\n state.listenerMap[event].push(listener)\n }\n}\n\nexport const mark = (event) => {\n const listeners = state.listenerMap[event] || []\n for (const listener of listeners) {\n listener()\n }\n state.phase = event\n if (event === LifeCyclePhase.Twelve) {\n state.listenerMap = Object.create(null)\n }\n}\n", "import * as Path from '../Path/Path.js'\nimport * as ViewletModuleId from '../ViewletModuleId/ViewletModuleId.js'\n\nconst mapExtToEditorType = {\n '.png': ViewletModuleId.EditorImage,\n '.svg': ViewletModuleId.EditorImage,\n '.avif': ViewletModuleId.EditorImage,\n '.gif': ViewletModuleId.EditorImage,\n '.ico': ViewletModuleId.EditorImage,\n '.webp': ViewletModuleId.EditorImage,\n '.jpg': ViewletModuleId.EditorImage,\n '.jpeg': ViewletModuleId.EditorImage,\n '.pdf': ViewletModuleId.Pdf,\n '.mp3': ViewletModuleId.Audio,\n}\n\nexport const getId = (uri) => {\n const fileExtension = Path.fileExtension(uri)\n const type = mapExtToEditorType[fileExtension]\n if (type) {\n return type\n }\n if (uri === 'app://keybindings') {\n return ViewletModuleId.KeyBindings\n }\n if (uri.startsWith('extension-detail://')) {\n return ViewletModuleId.ExtensionDetail\n }\n if (uri.startsWith('simple-browser://')) {\n return ViewletModuleId.SimpleBrowser\n }\n return ViewletModuleId.EditorText\n}\n", "import * as Arrays from '../Arrays/Arrays.js'\nimport * as Assert from '../Assert/Assert.js'\nimport * as BackgroundTabs from '../BackgroundTabs/BackgroundTabs.js'\nimport * as Command from '../Command/Command.js'\nimport * as FileSystem from '../FileSystem/FileSystem.js'\nimport * as LifeCycle from '../LifeCycle/LifeCycle.js'\nimport * as LifeCyclePhase from '../LifeCyclePhase/LifeCyclePhase.js'\nimport * as MenuEntryId from '../MenuEntryId/MenuEntryId.js'\nimport * as RendererProcess from '../RendererProcess/RendererProcess.js'\nimport * as SharedProcess from '../SharedProcess/SharedProcess.js'\nimport * as Viewlet from '../Viewlet/Viewlet.js'\nimport * as ViewletManager from '../ViewletManager/ViewletManager.js'\nimport * as ViewletMap from '../ViewletMap/ViewletMap.js'\nimport * as ViewletModule from '../ViewletModule/ViewletModule.js'\nimport * as ViewletModuleId from '../ViewletModuleId/ViewletModuleId.js'\nimport * as ViewletStates from '../ViewletStates/ViewletStates.js'\nimport * as Workspace from '../Workspace/Workspace.js'\n\nconst COLUMN_WIDTH = 9 // TODO compute this automatically once\n\n// interface Editor {\n// readonly uri: string\n// readonly type: string\n// }\n\n// interface EditorLazy {\n// readonly type: 'lazy'\n// }\n\n// interface EditorText extends Editor {\n// readonly textDocument: TextDocument\n// readonly type: 'text'\n// }\n\n// interface EditorIframe extends Editor {\n// readonly srcdoc: string\n// readonly type: 'iframe'\n// }\n\n// interface EditorImage extends Editor {\n// readonly src: string\n// readonly type: 'image'\n// }\n\n// interface EditorVideo extends Editor {\n// readonly src: string\n// readonly type: 'video'\n// }\n\nconst canBeRestored = (editor) => {\n return typeof editor.uri === 'string' && FileSystem.canBeRestored(editor.uri)\n}\n\nconst getMainEditors = (state) => {\n if (!state) {\n return []\n }\n const { editors } = state\n if (!editors) {\n return []\n }\n // TODO check that type is string (else runtime error occurs and page is blank)\n return editors.filter(canBeRestored)\n}\n\nconst hydrateLazy = async () => {\n // TODO this should be in extension host\n await Command.execute(\n /* EditorDiagnostics.hydrate */ 'EditorDiagnostics.hydrate'\n )\n}\n\nexport const create = (id, uri, left, top, width, height) => {\n return {\n editors: [],\n activeIndex: -1,\n focusedIndex: -1,\n left,\n top,\n width,\n height,\n }\n}\n\n// const showEditor = async (uri, languageId, content) => {\n// if (state.activeEditor) {\n// // TODO duplicate code in if/else\n// // state.editors = [state.activeEditor]\n// // Editor.replaceOne(state.activeEditor, uri, languageId, content)\n// // TODO replace editor\n// } else {\n// // state.activeEditor = Editor.create(1, uri, languageId, content)\n// // state.editors = [state.activeEditor]\n// // Editor.openOne(state.activeEditor)\n// // TODO create editor group and new editor\n// }\n\n// // TODO send type of editor\n// // 1 normal\n// // 2 side by side (settings.json, git diff, preview)\n// // 3 image\n// // 4 video\n// // 5 iframe (maybe 3/4 could also be iframe)\n// // Editor.initialSync(state.activeEditor)\n\n// // TODO use idlecallback maybe (after 350ms or something)\n// // TODO maybe use indexeddb instead\n// // TODO store all open editors\n// // await Command.execute(/* LocalStorage.setJson */ 6901, 'Main.editors', [uri])\n// }\n\n// TODO there is also openEditor function\n\nconst getTabTitle = (uri) => {\n const homeDir = Workspace.getHomeDir()\n // TODO tree shake this out in web\n if (homeDir && uri.startsWith(homeDir)) {\n return `~${uri.slice(homeDir.length)}`\n }\n return uri\n}\n\nconst findEditorWithUri = (editors, uri) => {\n for (const [i, editor] of editors.entries()) {\n if (editor.uri === uri) {\n return i\n }\n }\n return -1\n}\n\nconst TAB_HEIGHT = 35\n\nconst getRestoredEditors = (savedState) => {\n if (Workspace.isTest()) {\n return []\n }\n const restoredEditors = getMainEditors(savedState)\n return restoredEditors\n}\n\nexport const saveState = (state) => {\n const { editors } = state\n return { editors }\n}\n\nexport const loadContent = (state, savedState) => {\n // TODO get restored editors from saved state\n const editors = getRestoredEditors(savedState)\n // @ts-ignore\n LifeCycle.once(LifeCyclePhase.Twelve, hydrateLazy)\n const activeIndex = editors.length > 0 ? 0 : -1\n return {\n ...state,\n editors,\n activeIndex,\n }\n}\n\nexport const getChildren = (state) => {\n const { editors } = state\n if (editors.length === 0) {\n return []\n }\n const editor = editors[0]\n return [\n // {\n // id: ViewletModuleId.MainTabs,\n // },\n ]\n}\n\n// TODO content loaded should return commands which\n// get picked up by viewletlayout and sent to renderer process\nexport const contentLoaded = async (state) => {\n if (state.editors.length === 0) {\n return []\n }\n const editor = Arrays.last(state.editors)\n const top = state.top + TAB_HEIGHT\n const left = state.left\n const width = state.width\n const height = state.height - TAB_HEIGHT\n const id = ViewletMap.getId(editor.uri)\n const tabLabel = Workspace.pathBaseName(editor.uri)\n const tabTitle = getTabTitle(editor.uri)\n const commands = [\n [\n /* Viewlet.send */ 'Viewlet.send',\n /* id */ ViewletModuleId.Main,\n /* method */ 'openViewlet',\n /* tabLabel */ tabLabel,\n /* tabTitle */ tabTitle,\n ],\n ]\n\n // // TODO race condition: Viewlet may have been resized before it has loaded\n // // @ts-ignore\n const extraCommands = await ViewletManager.load(\n {\n getModule: ViewletModule.load,\n id,\n // @ts-ignore\n parentId: ViewletModuleId.Main,\n uri: editor.uri,\n left,\n top,\n width,\n height,\n show: false,\n focus: false,\n type: 0,\n setBounds: false,\n visible: true,\n },\n /* focus */ false,\n /* restore */ true\n )\n commands.push(...extraCommands)\n commands.push(['Viewlet.appendViewlet', ViewletModuleId.Main, id])\n return commands\n}\n\nexport const openUri = async (state, uri, focus = true, options = {}) => {\n Assert.object(state)\n Assert.string(uri)\n const top = state.top + TAB_HEIGHT\n const left = state.left\n const width = state.width\n const height = state.height - TAB_HEIGHT\n const id = ViewletMap.getId(uri)\n\n for (const editor of state.editors) {\n if (editor.uri === uri) {\n console.log('found existing editor')\n // TODO if the editor is already open, nothing needs to be done\n const instance = ViewletManager.create(\n ViewletModule.load,\n id,\n ViewletModuleId.Main,\n uri,\n left,\n top,\n width,\n height\n )\n // @ts-ignore\n\n await ViewletManager.load(instance, focus, false, options)\n return state\n }\n }\n\n const instance = ViewletManager.create(\n ViewletModule.load,\n id,\n ViewletModuleId.Main,\n uri,\n left,\n top,\n width,\n height\n )\n const oldActiveIndex = state.activeIndex\n const temporaryUri = `tmp://${Math.random()}`\n state.editors.push({ uri: temporaryUri })\n state.activeIndex = state.editors.length - 1\n const tabLabel = Workspace.pathBaseName(uri)\n const tabTitle = getTabTitle(uri)\n await RendererProcess.invoke(\n /* Viewlet.send */ 'Viewlet.send',\n /* id */ ViewletModuleId.Main,\n /* method */ 'openViewlet',\n /* tabLabel */ tabLabel,\n /* tabTitle */ tabTitle,\n /* oldActiveIndex */ oldActiveIndex\n )\n // @ts-ignore\n await ViewletManager.load(instance, focus)\n if (!ViewletStates.hasInstance(id)) {\n return state\n }\n const actualUri = ViewletStates.getState(id).uri\n const index = state.editors.findIndex((editor) => editor.uri === temporaryUri)\n state.editors[index].uri = actualUri\n return state\n}\n\nexport const openBackgroundTab = async (state, initialUri, props) => {\n const id = ViewletMap.getId(initialUri)\n const tabLabel = 'Loading'\n const tabTitle = 'Loading'\n await RendererProcess.invoke(\n /* Viewlet.send */ 'Viewlet.send',\n /* id */ ViewletModuleId.Main,\n /* method */ 'openViewlet',\n /* tabLabel */ tabLabel,\n /* tabTitle */ tabTitle,\n /* oldActiveIndex */ -1,\n /* background */ true\n )\n const top = state.top + TAB_HEIGHT\n const left = state.left\n const width = state.width\n const height = state.height - TAB_HEIGHT\n const { title, uri } = await ViewletManager.backgroundLoad({\n getModule: ViewletModule.load,\n id,\n left,\n top,\n width,\n height,\n props,\n })\n\n state.editors.push({ uri })\n BackgroundTabs.add(uri, { uri, title, ...props })\n await RendererProcess.invoke('Viewlet.send', 'Main', 'updateTab', 1, title)\n // TODO update tab title with new title\n return state\n}\n\nconst executeEditorCommand = async (editor, commandId) => {\n const id = getId(editor)\n const actualId = id === 'EditorText' ? 'Editor' : id\n const fullCommandId = `${actualId}.${commandId}`\n await Command.execute(fullCommandId)\n}\n\nconst saveEditor = (editor) => {\n return executeEditorCommand(editor, 'save')\n}\n\nconst focusEditor = (editor) => {\n return executeEditorCommand(editor, 'focus')\n}\n\nexport const save = async (state) => {\n const { editors, activeIndex } = state\n if (activeIndex === -1) {\n return state\n }\n const editor = editors[activeIndex]\n await saveEditor(editor)\n // TODO handle different types of editors / custom editors / webviews\n // Command.execute(/* EditorSave.editorSave */ 'Editor.save')\n return state\n}\n\nexport const focus = async (state) => {\n const { editors, activeIndex } = state\n if (activeIndex === -1) {\n return state\n }\n const editor = editors[activeIndex]\n await focusEditor(editor)\n return state\n}\n\n// const getEditor = (uri) => {\n// const protocol = 'file://' + uri.slice(0, 0)\n// switch (protocol) {\n// case 'file://':\n// // TODO open normal editor\n// break\n// case 'performance://monitor':\n// return import('../EditorPerformance.js')\n// case 'performance://startup':\n// return import('../EditorPerformanceStartup.js')\n// default:\n// // ask extension host for custom editor\n// break\n// }\n// }\n\nexport const openEditorWithType = async (file) => {\n // TODO resolve custom editors from extension host\n // then open extension host custom editor or normal editor\n}\n\nexport const saveWithoutFormatting = async () => {\n console.warn('not implemented')\n}\n\nexport const handleDrop = async () => {\n console.log(['main drop'])\n const clipBoardText = await SharedProcess.invoke(\n /* ClipBoard.read */ 'ClipBoard.read'\n )\n console.log({ clipBoardText })\n}\n\nexport const closeActiveEditor = (state) => {\n const { editors, activeIndex } = state\n if (activeIndex === -1) {\n return state\n }\n return closeEditor(state, activeIndex)\n}\n\nconst getId = (editor) => {\n return ViewletMap.getId(editor.uri)\n}\n\nexport const closeAllEditors = async (state) => {\n RendererProcess.invoke(\n /* Viewlet.send */ 'Viewlet.send',\n /* id */ ViewletModuleId.Main,\n /* method */ 'dispose'\n )\n const ids = state.editors.map(getId)\n state.editors = []\n state.focusedIndex = -1\n state.selectedIndex = -1\n // TODO should call dispose method, but only in renderer-worker\n for (const id of ids) {\n await ViewletStates.dispose(id)\n }\n return state\n}\n\nexport const dispose = () => {}\n\nexport const closeEditor = async (state, index) => {\n if (state.editors.length === 1) {\n return closeAllEditors(state)\n }\n const top = state.top\n const left = state.left\n const width = state.width\n const height = state.height\n if (index === state.activeIndex) {\n const oldActiveIndex = state.activeIndex\n const oldEditor = state.editors[index]\n state.editors.splice(index, 1)\n const newActiveIndex = index === 0 ? index : index - 1\n const id = ViewletMap.getId(oldEditor.uri)\n Viewlet.dispose(id)\n state.activeIndex = newActiveIndex\n state.focusedIndex = newActiveIndex\n // const instance = Viewlet.create(id, 'uri', left, top, width, height)\n // TODO ideally content would load synchronously and there would be one layout and one paint for opening the new tab\n // except in the case where the content takes long (>100ms) to load, then it should show the tab\n // and for the content a loading spinner or (preferred) a progress bar\n // that it replaced with the actual content once it has been loaded\n // await instance.factory.refresh(instance.state, {\n // uri: previousEditor.uri,\n // top: instance.state.top,\n // left: instance.state.left,\n // height: instance.state.height,\n // columnWidth: COLUMN_WIDTH,\n // })\n await RendererProcess.invoke(\n /* Main.closeOneTab */ 'Main.closeOneTab',\n /* closeIndex */ oldActiveIndex,\n /* focusIndex */ newActiveIndex\n )\n return state\n }\n await RendererProcess.invoke(\n /* Viewlet.send */ 'Viewlet.send',\n /* id */ ViewletModuleId.Main,\n /* method */ 'closeOneTabOnly',\n /* closeIndex */ index\n )\n state.editors.splice(index, 1)\n if (index < state.activeIndex) {\n state.activeIndex--\n }\n state.focusedIndex = state.activeIndex\n\n // TODO just close the tab\n}\n\nexport const closeFocusedTab = (state) => {\n return closeEditor(state.focusedIndex)\n}\n\nexport const handleTabContextMenu = async (state, index, x, y) => {\n await Command.execute(\n /* ContextMenu.show */ 'ContextMenu.show',\n /* x */ x,\n /* y */ y,\n /* id */ MenuEntryId.Tab\n )\n return {\n ...state,\n focusedIndex: index,\n }\n}\n\nexport const focusIndex = async (state, index) => {\n if (index === state.activeIndex) {\n return state\n }\n const oldActiveIndex = state.activeIndex\n state.activeIndex = index\n\n const editor = state.editors[index]\n const top = state.top + TAB_HEIGHT\n const left = state.left\n const width = state.width\n const height = state.height - TAB_HEIGHT\n const id = ViewletMap.getId(editor.uri)\n\n const oldEditor = state.editors[oldActiveIndex]\n const oldId = ViewletMap.getId(oldEditor.uri)\n const oldInstance = ViewletStates.getInstance(oldId)\n\n const viewlet = ViewletManager.create(\n ViewletModule.load,\n id,\n ViewletModuleId.Main,\n editor.uri,\n left,\n top,\n width,\n height\n )\n\n // TODO race condition\n RendererProcess.invoke(\n /* Viewlet.send */ 'Viewlet.send',\n /* id */ ViewletModuleId.Main,\n /* method */ 'focusAnotherTab',\n /* unFocusIndex */ oldActiveIndex,\n /* focusIndex */ state.activeIndex\n )\n\n if (BackgroundTabs.has(editor.uri)) {\n console.log('has background true')\n const props = BackgroundTabs.get(editor.uri)\n // @ts-ignore\n await ViewletManager.load(viewlet, false, false, props)\n } else {\n console.log('has background false')\n // @ts-ignore\n await ViewletManager.load(viewlet)\n }\n\n if (oldInstance && oldInstance.factory.hide) {\n await oldInstance.factory.hide(oldInstance.state)\n BackgroundTabs.add(oldInstance.state.uri, oldInstance.state)\n }\n return state\n}\n\nexport const focusFirst = (state) => {\n return focusIndex(state, 0)\n}\n\nexport const focusLast = (state) => {\n return focusIndex(state, state.editors.length - 1)\n}\n\nexport const focusPrevious = (state) => {\n const previousIndex =\n state.activeIndex === 0 ? state.editors.length - 1 : state.activeIndex - 1\n return focusIndex(state, previousIndex)\n}\n\nexport const focusNext = (state) => {\n const nextIndex =\n state.activeIndex === state.editors.length - 1 ? 0 : state.activeIndex + 1\n return focusIndex(state, nextIndex)\n}\n\nexport const handleTabClick = (state, index) => {\n console.log('focus index', index)\n return focusIndex(state, index)\n}\n\nexport const closeOthers = async (state) => {\n if (state.focusedIndex === state.activeIndex) {\n // view is kept the same, only tabs are closed\n await RendererProcess.invoke(\n /* Viewlet.send */ 'Viewlet.send',\n /* id */ ViewletModuleId.Main,\n /* method */ 'closeOthers',\n /* keepIndex */ state.focusedIndex,\n /* focusIndex */ state.focusedIndex\n )\n } else {\n // view needs to be switched to focused index\n await RendererProcess.invoke(\n /* Viewlet.send */ 'Viewlet.send',\n /* id */ ViewletModuleId.Main,\n /* method */ 'closeOthers',\n /* keepIndex */ state.focusedIndex,\n /* focusIndex */ state.focusedIndex\n )\n }\n state.editors = [state.editors[state.focusedIndex]]\n state.activeIndex = 0\n state.focusedIndex = 0\n}\n\nexport const closeTabsRight = async (state) => {\n if (state.focusedIndex >= state.activeIndex) {\n // view is kept the same, only tabs are closed\n await RendererProcess.invoke(\n /* Viewlet.send */ 'Viewlet.send',\n /* id */ ViewletModuleId.Main,\n /* method */ 'closeTabsRight',\n /* index */ state.focusedIndex\n )\n } else {\n // view needs to be switched to focused index\n await RendererProcess.invoke(\n /* Viewlet.send */ 'Viewlet.send',\n /* id */ ViewletModuleId.Main,\n /* method */ 'closeTabsRight',\n /* index */ state.focusedIndex\n )\n }\n state.editors = state.editors.slice(0, state.focusedIndex + 1)\n state.activeIndex = state.focusedIndex\n}\n\nexport const closeTabsLeft = async (state) => {\n if (state.focusedIndex <= state.activeIndex) {\n // view is kept the same, only tabs are closed\n await RendererProcess.invoke(\n /* Viewlet.send */ 'Viewlet.send',\n /* id */ ViewletModuleId.Main,\n /* method */ 'closeTabsLeft',\n /* index */ state.focusedIndex\n )\n } else {\n // view needs to be switched to focused index\n await RendererProcess.invoke(\n /* Viewlet.send */ 'Viewlet.send',\n /* id */ ViewletModuleId.Main,\n /* method */ 'closeTabsLeft',\n /* index */ state.focusedIndex\n )\n }\n state.editors = state.editors.slice(state.focusedIndex)\n state.activeIndex = state.focusedIndex\n}\n\nexport const resize = (state, dimensions) => {\n const { editors } = state\n const top = dimensions.top + TAB_HEIGHT\n const left = dimensions.left\n const width = dimensions.width\n const height = dimensions.height - TAB_HEIGHT\n const childDimensions = {\n top,\n left,\n width,\n height,\n }\n const editor = editors[0]\n let commands = []\n if (editor) {\n const id = ViewletMap.getId(editor.uri)\n commands = Viewlet.resize(id, childDimensions)\n }\n return {\n newState: {\n ...state,\n ...dimensions,\n },\n commands,\n }\n}\n\nexport const hasFunctionalRender = true\n\nexport const render = []\n", "import * as ViewletMain from './ViewletMain.js'\n\nexport const name = 'Main'\n\n// prettier-ignore\nexport const Commands = {\n // 'Main.hydrate': ViewletMain.hydrate,\n closeActiveEditor: ViewletMain.closeActiveEditor,\n closeAllEditors: ViewletMain.closeAllEditors,\n closeEditor: ViewletMain.closeEditor,\n closeFocusedTab: ViewletMain.closeFocusedTab,\n closeOthers: ViewletMain.closeOthers,\n closeTabsLeft: ViewletMain.closeTabsLeft,\n closeTabsRight: ViewletMain.closeTabsRight,\n focus: ViewletMain.focus,\n focusFirst: ViewletMain.focusFirst,\n focusLast: ViewletMain.focusLast,\n focusNext: ViewletMain.focusNext,\n focusPrevious: ViewletMain.focusPrevious,\n handleDrop: ViewletMain.handleDrop,\n handleTabClick: ViewletMain.handleTabClick,\n handleTabContextMenu: ViewletMain.handleTabContextMenu,\n openBackgroundTab: ViewletMain.openBackgroundTab,\n openUri: ViewletMain.openUri,\n save: ViewletMain.save,\n}\n\nexport const Css = ['/css/parts/ViewletMain.css', '/css/parts/EditorTabs.css']\n\nexport * from './ViewletMain.js'\n", "import * as ExtensionHostActivationEvent from '../ExtensionHostActivationEvent/ExtensionHostActivationEvent.js'\nimport * as ExtensionHostEditor from './ExtensionHostEditor.js'\n\nconst combineResults = (results) => {\n return results[0] ?? []\n}\n\nexport const executeCompletionProvider = (editor, offset) => {\n return ExtensionHostEditor.execute({\n editor,\n event: ExtensionHostActivationEvent.OnCompletion,\n method: 'ExtensionHostCompletion.execute',\n args: [offset],\n noProviderFoundMessage: 'no completion provider found',\n noProviderFoundResult: [],\n combineResults,\n })\n}\n", "import * as ExtensionHostCompletion from '../ExtensionHost/ExtensionHostCompletion.js'\nimport * as TextDocument from '../TextDocument/TextDocument.js'\n\n// TODO possible to do this with events/state machine instead of promises -> enables canceling operations / concurrent calls\nexport const getCompletions = async (editor) => {\n const rowIndex = editor.selections[0]\n const columnIndex = editor.selections[1]\n // Editor.sync(editor)\n const offset = TextDocument.offsetAt(editor, rowIndex, columnIndex)\n const completions = await ExtensionHostCompletion.executeCompletionProvider(\n editor,\n offset\n )\n return completions\n}\n", "export const Property = 1\nexport const Value = 2\nexport const Function = 3\nexport const Variable = 4\nexport const Keyword = 5\nexport const Folder = 6\nexport const File = 7\n", "import * as EditorCompletionType from '../EditorCompletionType/EditorCompletionType.js'\nimport * as Icon from '../Icon/Icon.js'\n\nexport const getIcon = (item) => {\n switch (item.kind) {\n case EditorCompletionType.Property:\n return Icon.SymbolProperty\n case EditorCompletionType.Value:\n return Icon.SymbolValue\n case EditorCompletionType.Function:\n return Icon.SymbolFunction\n case EditorCompletionType.Variable:\n return Icon.SymbolVariable\n case EditorCompletionType.Keyword:\n return Icon.SymbolKeyword\n default:\n return Icon.SymbolDefault\n }\n}\n", "export const filterCompletionItems = (completionItems, word) => {\n const includesWord = (completionItem) => {\n return completionItem.label.includes(word)\n }\n const filteredCompletions = completionItems.filter(includesWord)\n return filteredCompletions\n}\n", "import * as Completions from '../Completions/Completions.js'\nimport * as EditorPosition from '../EditorCommand/EditorCommandPosition.js'\nimport * as EditorShowMessage from '../EditorCommand/EditorCommandShowMessage.js'\nimport * as EditorCompletionMap from '../EditorCompletionMap/EditorCompletionMap.js'\nimport * as FilterCompletionItems from '../FilterCompletionItems/FilterCompletionItems.js'\nimport * as Height from '../Height/Height.js'\nimport * as Viewlet from '../Viewlet/Viewlet.js'\nimport * as VirtualList from '../VirtualList/VirtualList.js'\nimport * as ViewletModuleId from '../ViewletModuleId/ViewletModuleId.js'\n\nexport const create = (id, uri, top, left, width, height) => {\n return {\n isOpened: false,\n openingReason: 0,\n editor: undefined,\n rowIndex: 0,\n columnIndex: 0,\n leadingWord: '',\n loadingTimeout: -1,\n unfilteredItems: [],\n left: 0,\n top: 0,\n width: 250,\n height: 150,\n ...VirtualList.create({\n headerHeight: 0,\n itemHeight: Height.CompletionItem,\n minimumSliderSize: Height.MinimumSliderSize,\n }),\n }\n}\n\nconst getEditor = () => {\n return Viewlet.getState('EditorText')\n}\n\nconst getLabel = (item) => {\n return item.label\n}\n\nconst getDisplayErrorMessage = (error) => {\n const message = `${error}`\n const errorPrefix = 'Error: '\n if (message.startsWith(errorPrefix)) {\n return message.slice(errorPrefix.length)\n }\n return message\n}\n\nexport const loadContent = async (state) => {\n const editor = getEditor()\n const unfilteredItems = await Completions.getCompletions(editor)\n const items = FilterCompletionItems.filterCompletionItems(unfilteredItems, '')\n const rowIndex = editor.selections[0]\n const columnIndex = editor.selections[1]\n const left = EditorPosition.x(editor, rowIndex, columnIndex)\n const top = EditorPosition.y(editor, rowIndex, columnIndex)\n const newMaxLineY = Math.min(items.length, 8)\n return {\n ...state,\n unfilteredItems,\n items,\n left,\n top,\n maxLineY: newMaxLineY,\n }\n}\n\nexport const handleError = async (error) => {\n const displayErrorMessage = getDisplayErrorMessage(error)\n const editor = getEditor()\n await EditorShowMessage.editorShowMessage(\n /* editor */ editor,\n /* rowIndex */ 0,\n /* columnIndex */ 0,\n /* message */ displayErrorMessage,\n /* isError */ true\n )\n}\n\nexport const loadingContent = () => {\n const editor = getEditor()\n const rowIndex = editor.selections[0]\n const columnIndex = editor.selections[1]\n const x = EditorPosition.x(editor, rowIndex, columnIndex)\n const y = EditorPosition.y(editor, rowIndex, columnIndex)\n const changes = [\n /* Viewlet.send */ 'Viewlet.send',\n /* id */ 'EditorCompletion',\n /* method */ 'showLoading',\n /* x */ x,\n /* y */ y,\n ]\n return changes\n}\n\nexport const handleSelectionChange = (state, selectionChanges) => {}\n\nexport const advance = (state, word) => {\n const filteredItems = FilterCompletionItems.filterCompletionItems(\n state.items,\n word\n )\n return {\n ...state,\n filteredItems,\n }\n}\n\nexport const dispose = (state) => {\n return {\n ...state,\n disposed: true,\n }\n}\n\nexport const hasFunctionalRender = true\n\nconst renderPosition = {\n isEqual(oldState, newState) {\n return oldState.x === newState.x && oldState.y === newState.y\n },\n apply(oldState, newState) {\n return [\n /* Viewlet.send */ 'Viewlet.send',\n /* id */ ViewletModuleId.EditorCompletion,\n /* method */ 'setPosition',\n /* x */ newState.x,\n /* y */ newState.y,\n ]\n },\n}\n\nconst getVisibleItems = (filteredItems, minLineY, maxLineY) => {\n const visibleItems = []\n for (let i = minLineY; i < maxLineY; i++) {\n const filteredItem = filteredItems[i]\n visibleItems.push({\n label: getLabel(filteredItem),\n icon: EditorCompletionMap.getIcon(filteredItem),\n })\n }\n return visibleItems\n}\n\nconst renderItems = {\n isEqual(oldState, newState) {\n return (\n oldState.items === newState.items &&\n oldState.minLineY === newState.minLineY &&\n oldState.maxLineY === newState.maxLineY\n )\n },\n apply(oldState, newState) {\n const visibleItems = getVisibleItems(\n newState.items,\n newState.minLineY,\n newState.maxLineY\n )\n return [/* method */ 'setItems', /* items */ visibleItems, /* reason */ 1]\n },\n}\n\nconst renderBounds = {\n isEqual(oldState, newState) {\n return (\n oldState.items === newState.items &&\n oldState.minLineY === newState.minLineY &&\n oldState.maxLineY === newState.maxLineY\n )\n },\n apply(oldState, newState) {\n const { left, top, width, height } = newState\n return [\n /* left */ left,\n /* top */ top,\n /* width */ width,\n /* height */ height,\n ]\n },\n}\n\nconst renderFocusedIndex = {\n isEqual(oldState, newState) {\n return oldState.focusedIndex === newState.focusedIndex\n },\n apply(oldState, newState) {\n return [\n /* method */ 'setFocusedIndex',\n /* oldFocusedIndex */ oldState.focusedIndex,\n /* newFocusedIndex */ newState.focusedIndex,\n ]\n },\n}\n\nexport const render = [\n renderItems,\n renderPosition,\n renderBounds,\n renderFocusedIndex,\n]\n\nexport * from '../VirtualList/VirtualList.js'\n", "import * as Command from '../Command/Command.js'\n\nconst getInsertSnippet = (word, leadingWord) => {\n if (word.startsWith(leadingWord)) {\n return word.slice(leadingWord.length)\n }\n return word\n}\n\nconst select = async (state, completionItem) => {\n const { leadingWord } = state\n const word = completionItem.label\n const snippet = getInsertSnippet(word, leadingWord)\n // TODO type and dispose commands should be sent to renderer process at the same time\n await Command.execute(/* Editor.type */ 'Editor.type', /* text */ snippet)\n return {\n ...state,\n disposed: true,\n }\n}\n\nexport const selectIndex = (state, index) => {\n const completionItem = state.filteredItems[index]\n return select(state, completionItem)\n}\n", "import * as ViewletEditorCompletion from './ViewletEditorCompletion.js'\nimport * as VirtualList from '../VirtualList/VirtualList.ipc.js'\n\nexport const name = 'EditorCompletion'\n\n// prettier-ignore\nexport const Commands = {\n // 'EditorCompletion.selectCurrent': Viewlet.wrapViewletCommand('EditorCompletion', ViewletEditorCompletion.selectCurrent),\n dispose: ViewletEditorCompletion.dispose,\n}\n\n// prettier-ignore\nexport const LazyCommands = {\n selectIndex: () => import('./ViewletEditorCompletionSelectIndex.js'),\n ...VirtualList.LazyCommands\n}\n\nexport const Css = '/css/parts/ViewletEditorCompletion.css'\n\nexport * from './ViewletEditorCompletion.js'\n", "import * as Assert from '../Assert/Assert.js'\nimport * as ExtensionHostActivationEvent from '../ExtensionHostActivationEvent/ExtensionHostActivationEvent.js'\nimport * as ExtensionHostEditor from './ExtensionHostEditor.js'\n\nconst combineResults = (results) => {\n return results[0]\n}\n\nexport const executeReferenceProvider = async (editor, offset) => {\n const result = await ExtensionHostEditor.execute({\n editor,\n event: ExtensionHostActivationEvent.OnReferences,\n method: 'ExtensionHostReferences.executeReferenceProvider',\n args: [offset],\n noProviderFoundMessage: 'no reference providers found',\n combineResults,\n noProviderFoundResult: [],\n })\n Assert.array(result)\n return result\n}\n", "import * as Command from '../Command/Command.js'\nimport * as I18nString from '../I18NString/I18NString.js'\nimport * as IconTheme from '../IconTheme/IconTheme.js'\nimport * as DirentType from '../DirentType/DirentType.js'\n\n/**\n * @enum {string}\n */\nconst UiStrings = {\n NoResults: 'No Results',\n OneResultInOneFile: '1 result in 1 file',\n ManyResultsInOneFile: '{PH1} results in 1 file',\n ManyResultsInManyFiles: '{PH1} results in {PH2} files',\n}\n\nexport const create = (id, uri) => {\n return {\n references: [],\n message: '',\n displayReferences: [],\n focusedIndex: -1,\n id,\n }\n}\n\nconst getMessage = (resultCount, fileCount) => {\n if (resultCount === 0) {\n return I18nString.i18nString(UiStrings.NoResults)\n }\n if (resultCount === 1 && fileCount === 1) {\n return I18nString.i18nString(UiStrings.OneResultInOneFile)\n }\n if (fileCount === 1) {\n return I18nString.i18nString(UiStrings.ManyResultsInOneFile, {\n PH1: resultCount,\n })\n }\n return I18nString.i18nString(UiStrings.ManyResultsInManyFiles, {\n PH1: resultCount,\n PH2: fileCount,\n })\n}\n\nconst getName = (uri) => {\n return uri.slice(uri.lastIndexOf('/') + 1)\n}\n\nconst getDisplayReferences = (references) => {\n const fileMap = Object.create(null)\n const displayReferences = []\n let current = {\n uri: '',\n startOffset: 0,\n endOffset: 0,\n lineText: '',\n }\n let outerPosInSet = 1\n let innerPosInSet = 1\n let fileCount = 0\n let index = 0\n for (const reference of references) {\n if (reference.uri === current.uri) {\n displayReferences.push({\n depth: 2,\n posInSet: innerPosInSet++,\n setSize: 1,\n type: 'leaf',\n uri: '',\n name: '',\n lineText: reference.lineText,\n index: index++,\n })\n } else {\n fileCount++\n current = reference\n innerPosInSet = 1\n const name = getName(reference.uri)\n displayReferences.push({\n depth: 1,\n posInSet: outerPosInSet++,\n setSize: 1,\n type: 'expanded',\n uri: reference.uri,\n name,\n lineText: '',\n icon: IconTheme.getIcon({\n type: DirentType.File,\n path: reference.uri,\n name,\n }),\n index: index++,\n })\n displayReferences.push({\n depth: 2,\n posInSet: innerPosInSet++,\n setSize: 1,\n type: 'leaf',\n uri: '',\n name: '',\n lineText: current.lineText,\n index: index++,\n })\n }\n }\n\n return {\n message: getMessage(references.length, fileCount),\n displayReferences,\n }\n}\n\n// TODO speed up this function by 130% by not running activation event (onReferences) again and again\n// e.g. (21ms activation event, 11ms getReferences) => (11ms getReferences)\nexport const loadContent = async (state, getReferences) => {\n const references = await getReferences()\n const { message, displayReferences } = getDisplayReferences(references)\n return {\n ...state,\n references,\n displayReferences,\n message,\n }\n}\n\nexport const dispose = (state) => {\n return {\n ...state,\n disposed: true,\n }\n}\n\nconst getUri = (state, index) => {\n for (let i = index; i >= 0; i--) {\n if (state.displayReferences[i].depth === 1) {\n return state.displayReferences[i].uri\n }\n }\n return ''\n}\n\nconst selectIndexLead = async (state, index) => {\n const uri = getUri(state, index)\n // TODO open file and jump to line\n await Command.execute(/* Main.openUri */ 'Main.openUri', /* uri */ uri)\n return {\n ...state,\n focusedIndex: index,\n }\n}\n\nconst selectIndexExpanded = (state, index) => {\n // TODO expand\n\n return { ...state, focusedIndex: index }\n}\n\nconst selectIndexCollapsed = (state, index) => {\n // TODO collapse\n\n return { ...state, focusedIndex: index }\n}\n\nexport const selectIndex = (state, index) => {\n const displayReference = state.displayReferences[index]\n switch (displayReference.type) {\n case 'leaf':\n return selectIndexLead(state, index)\n case 'expanded':\n return selectIndexExpanded(state, index)\n case 'collapsed':\n return selectIndexCollapsed(state, index)\n default:\n console.warn(displayReference)\n return state\n }\n}\n\nexport const focusIndex = (state, index) => {\n return {\n ...state,\n focusedIndex: index,\n }\n}\n\nexport const focusFirst = (state) => {\n if (state.displayReferences.length === 0) {\n return state\n }\n return focusIndex(state, 0)\n}\n\nexport const focusPrevious = (state) => {\n if (state.focusedIndex === 0 || state.focusedIndex === -1) {\n return state\n }\n return focusIndex(state, state.focusedIndex - 1)\n}\n\nexport const focusNext = (state) => {\n if (state.focusedIndex === state.displayReferences.length - 1) {\n return state\n }\n return focusIndex(state, state.focusedIndex + 1)\n}\n\nexport const focusLast = (state) => {\n if (state.focusedIndex === state.displayReferences.length - 1) {\n return state\n }\n return focusIndex(state, state.displayReferences.length - 1)\n}\n\nexport const selectCurrent = (state) => {\n if (state.focusedIndex === -1) {\n return state\n }\n return selectIndex(state, state.focusedIndex)\n}\n\nexport const hasFunctionalRender = true\n\nconst renderLocations = {\n isEqual(oldState, newState) {\n return oldState.displayReferences === newState.displayReferences\n },\n apply(oldState, newState) {\n return [\n /* Viewlet.invoke */ 'Viewlet.send',\n /* id */ newState.id,\n /* method */ 'setLocations',\n /* references */ newState.displayReferences,\n ]\n },\n}\n\nconst renderMessage = {\n isEqual(oldState, newState) {\n return oldState.message === newState.message\n },\n apply(oldState, newState) {\n return [\n /* Viewlet.invoke */ 'Viewlet.send',\n /* id */ newState.id,\n /* method */ 'setMessage',\n /* message */ newState.message,\n ]\n },\n}\n\nconst renderFocusedIndex = {\n isEqual(oldState, newState) {\n return oldState.focusedIndex === newState.focusedIndex\n },\n apply(oldState, newState) {\n return [\n /* Viewlet.invoke */ 'Viewlet.send',\n /* id */ newState.id,\n /* method */ 'setFocusedIndex',\n /* oldFocusedIndex */ oldState.focusedIndex,\n /* newFocusedIndex */ newState.focusedIndex,\n ]\n },\n}\n\nexport const render = [renderFocusedIndex, renderLocations, renderMessage]\n", "import * as ExtensionHostReferences from '../ExtensionHost/ExtensionHostReference.js'\nimport * as TextDocument from '../TextDocument/TextDocument.js'\nimport * as ViewletLocations from '../ViewletLocations/ViewletLocations.js'\nimport * as ViewletStates from '../ViewletStates/ViewletStates.js'\nimport * as ViewletModuleId from '../ViewletModuleId/ViewletModuleId.js'\n\nconst getReferences = async () => {\n const editor = ViewletStates.getState('EditorText')\n const rowIndex = editor.selections[0]\n const columnIndex = editor.selections[1]\n const offset = TextDocument.offsetAt(editor, rowIndex, columnIndex)\n const references = await ExtensionHostReferences.executeReferenceProvider(\n editor,\n offset\n )\n return references\n}\n\nexport const create = ViewletLocations.create\n\n// TODO speed up this function by 130% by not running activation event (onReferences) again and again\n// e.g. (21ms activation event, 11ms getReferences) => (11ms getReferences)\nexport const loadContent = async (state) => {\n return ViewletLocations.loadContent(state, getReferences)\n}\n\n// TODO side effect is not good here, find a way to call ViewletLocations\nexport const contentLoaded = (state) => {\n ViewletStates.set('Locations', {\n factory: ViewletLocations,\n state,\n })\n return []\n}\n\nexport const dispose = ViewletLocations.dispose\n\nexport const hasFunctionalRender = ViewletLocations.hasFunctionalRender\n\nexport const render = ViewletLocations.render\n", "export const name = 'References'\n\nexport const Commands = {}\n\nexport const Css = ['/css/parts/ViewletReferences.css']\n\nexport * from './ViewletReferences.js'\n", "import * as ExtensionHostActivationEvent from '../ExtensionHostActivationEvent/ExtensionHostActivationEvent.js'\nimport * as ExtensionHostEditor from './ExtensionHostEditor.js'\n\nconst combineResults = (results) => {\n return results[0]\n}\n\nexport const executeImplementationProvider = (editor, offset) => {\n return ExtensionHostEditor.execute({\n editor,\n event: ExtensionHostActivationEvent.OnImplementation,\n method: 'ExtensionHostImplementation.executeImplementationProvider',\n args: [offset],\n noProviderFoundMessage: 'No implementation provider found',\n combineResults,\n })\n}\n", "import * as ExtensionHostImplementation from '../ExtensionHost/ExtensionHostImplementation.js'\nimport * as TextDocument from '../TextDocument/TextDocument.js'\nimport * as ViewletLocations from '../ViewletLocations/ViewletLocations.js'\nimport * as ViewletModuleId from '../ViewletModuleId/ViewletModuleId.js'\nimport * as ViewletStates from '../ViewletStates/ViewletStates.js'\n\n// TODO speed up this function by 130% by not running activation event (onReferences) again and again\n// e.g. (21ms activation event, 11ms getReferences) => (11ms getReferences)\nconst getImplementations = async () => {\n const editor = ViewletStates.getState('EditorText')\n const rowIndex = editor.selections[0]\n const columnIndex = editor.selections[1]\n const offset = TextDocument.offsetAt(editor, rowIndex, columnIndex)\n const implementations =\n await ExtensionHostImplementation.executeImplementationProvider(\n editor,\n offset\n )\n console.log({ implementations })\n return implementations\n}\n\nexport const create = ViewletLocations.create\n\nexport const loadContent = async (state) => {\n return ViewletLocations.loadContent(state, getImplementations)\n}\n\nexport const contentLoaded = (state) => {\n ViewletStates.set('Locations', {\n factory: ViewletLocations,\n state,\n })\n return []\n}\n\nexport const dispose = ViewletLocations.dispose\n\nexport const hasFunctionalRender = ViewletLocations.hasFunctionalRender\n\nexport const render = ViewletLocations.render\n", "export const name = 'Implementations'\n\nexport const Commands = {}\n\nexport * from './ViewletImplementations.js'\n", "export const InsertText = 'insertText'\n\nexport const DeleteContentBackward = 'deleteContentBackward'\n\nexport const DeleteContentForward = 'deleteContentForward'\n\nexport const DeleteWordForward = 'deleteWordForward'\n\nexport const DeleteWordBackward = 'deleteWordBackward'\n\nexport const InsertLineBreak = 'insertLineBreak'\n\nexport const InsertCompositionText = 'insertCompositionText'\n", "import * as InputEventType from '../InputEventType/InputEventType.js'\n\nconst getNewValueInsertText = (value, selectionStart, selectionEnd, data) => {\n if (selectionStart === value.length) {\n const newValue = value + data\n return {\n newValue,\n cursorOffset: newValue.length,\n }\n }\n const before = value.slice(0, selectionStart)\n const after = value.slice(selectionEnd)\n const newValue = before + data + after\n return {\n newValue,\n cursorOffset: selectionStart + data.length,\n }\n}\n\nconst getNewValueDeleteContentBackward = (\n value,\n selectionStart,\n selectionEnd,\n data\n) => {\n const after = value.slice(selectionEnd)\n if (selectionStart === selectionEnd) {\n const before = value.slice(0, selectionStart - 1)\n const newValue = before + after\n return {\n newValue,\n cursorOffset: before.length,\n }\n }\n const before = value.slice(0, selectionStart)\n const newValue = before + after\n return {\n newValue,\n cursorOffset: selectionStart,\n }\n}\n\nconst RE_ALPHA_NUMERIC = /[a-z\\d]/i\n\nconst isAlphaNumeric = (character) => {\n return RE_ALPHA_NUMERIC.test(character)\n}\n\nconst getNewValueDeleteWordBackward = (\n value,\n selectionStart,\n selectionEnd,\n data\n) => {\n const after = value.slice(selectionEnd)\n if (selectionStart === selectionEnd) {\n let startIndex = Math.max(selectionStart - 1, 0)\n while (startIndex > 0 && isAlphaNumeric(value[startIndex])) {\n startIndex--\n }\n const before = value.slice(0, startIndex)\n const newValue = before + after\n return {\n newValue,\n cursorOffset: before.length,\n }\n }\n const before = value.slice(0, selectionStart)\n const newValue = before + after\n return {\n newValue,\n cursorOffset: selectionStart,\n }\n}\n\nconst getNewValueDeleteContentForward = (\n value,\n selectionStart,\n selectionEnd,\n data\n) => {\n const before = value.slice(0, selectionStart)\n if (selectionStart === selectionEnd) {\n const after = value.slice(selectionEnd + 1)\n const newValue = before + after\n return {\n newValue,\n cursorOffset: selectionStart,\n }\n }\n const after = value.slice(selectionEnd)\n const newValue = before + after\n return {\n newValue,\n cursorOffset: selectionStart,\n }\n}\n\nconst getNewValueDeleteWordForward = (\n value,\n selectionStart,\n selectionEnd,\n data\n) => {\n const before = value.slice(0, selectionStart)\n if (selectionStart === selectionEnd) {\n let startIndex = Math.min(selectionStart + 1, value.length - 1)\n while (startIndex < value.length && isAlphaNumeric(value[startIndex])) {\n startIndex++\n }\n const after = value.slice(startIndex)\n const newValue = before + after\n return {\n newValue,\n cursorOffset: before.length,\n }\n }\n const after = value.slice(selectionEnd)\n const newValue = before + after\n return {\n newValue,\n cursorOffset: selectionStart,\n }\n}\n\nconst getNewValueInsertCompositionText = (\n value,\n selectionStart,\n selectionEnd,\n data\n) => {\n return getNewValueInsertText(value, selectionStart, selectionEnd, data)\n}\n\nconst getNewValueInsertLineBreak = (\n value,\n selectionStart,\n selectionEnd,\n data\n) => {\n return {\n newValue: value,\n cursorOffset: selectionEnd,\n }\n}\n\nconst getFn = (inputType) => {\n switch (inputType) {\n case InputEventType.InsertText:\n return getNewValueInsertText\n case InputEventType.DeleteContentBackward:\n return getNewValueDeleteContentBackward\n case InputEventType.DeleteContentForward:\n return getNewValueDeleteContentForward\n case InputEventType.DeleteWordForward:\n return getNewValueDeleteWordForward\n case InputEventType.DeleteWordBackward:\n return getNewValueDeleteWordBackward\n case InputEventType.InsertLineBreak:\n return getNewValueInsertLineBreak\n case InputEventType.InsertCompositionText:\n return getNewValueInsertCompositionText\n default:\n throw new Error(`unsupported input type ${inputType}`)\n }\n}\n\nexport const getNewValue = (\n value,\n inputType,\n data,\n selectionStart,\n selectionEnd\n) => {\n const fn = getFn(inputType)\n return fn(value, selectionStart, selectionEnd, data)\n}\n", "export const CommandPalette = 'quickPick://commandPalette'\n\nexport const File = 'quickPick://file'\n\nexport const EveryThing = 'quickPick://everything'\n\nexport const Noop = 'quickPick://noop'\n\nexport const Number = 'quickPick://number'\n\nexport const Recent = 'quickPick://recent'\n\nexport const ColorTheme = 'quickPick://color-theme'\n\nexport const Symbol = 'quickPick://symbol'\n\nexport const View = 'quickPick://view'\n\nexport const WorkspaceSymbol = 'quickPick://workspace-symbol'\n", "export const Hide = 'hide'\n\nexport const KeepOpen = ''\n", "import * as QuickPickReturnValue from '../QuickPickReturnValue/QuickPickReturnValue.js'\n\n/**\n * @enum {string}\n */\nexport const UiStrings = {\n NoResults: 'No Results',\n}\n\nexport const name = 'noop'\n\nexport const getPlaceholder = () => {\n return ''\n}\n\nexport const getHelpEntries = () => {\n return []\n}\n\nexport const getNoResults = () => {\n return UiStrings.NoResults\n}\n\nexport const getPicks = async (value) => {\n return []\n}\n\nexport const selectPick = async (item) => {\n return {\n command: QuickPickReturnValue.Hide,\n }\n}\n\nexport const getFilterValue = (value) => {\n return value\n}\n", "export const Command = '>'\n\nexport const Symbol = '@'\n\nexport const WorkspaceSymbol = '#'\n\nexport const GoToLine = ':'\n\nexport const View = 'view '\n\nexport const None = ''\n", "import * as ExtensionHostShared from './ExtensionHostShared.js'\nimport * as ExtensionMeta from '../ExtensionMeta/ExtensionMeta.js'\n\nconst getCommandsFromExtension = (extension) => {\n if (!extension || !extension.commands) {\n return []\n }\n return extension.commands\n}\n\nconst getCommandsFromExtensions = (extensions) => {\n return extensions.flatMap(getCommandsFromExtension)\n}\n\nexport const getCommands = async () => {\n const extensions = await ExtensionMeta.getExtensions()\n const commands = getCommandsFromExtensions(extensions)\n return commands\n}\n\n// TODO add test for this\n// TODO add test for when this errors\n\nexport const executeCommand = (id) => {\n return ExtensionHostShared.executeProvider({\n event: `onCommand:${id}`,\n method: 'ExtensionHost.executeCommand',\n params: [id],\n noProviderFoundMessage: 'No command provider found',\n })\n}\n", "import * as Command from '../Command/Command.js'\nimport * as ErrorHandling from '../ErrorHandling/ErrorHandling.js'\nimport * as ExtensionHostCommands from '../ExtensionHost/ExtensionHostCommands.js'\nimport * as Platform from '../Platform/Platform.js'\nimport * as PlatformType from '../PlatformType/PlatformType.js'\nimport * as QuickPickReturnValue from '../QuickPickReturnValue/QuickPickReturnValue.js'\n\n/**\n * @enum {string}\n */\nexport const UiStrings = {\n TypeNameOfCommandToRun: 'Type the name of a command to run.',\n ShowAndRunCommands: 'Show And Run Commands',\n NoMatchingResults: 'No matching results',\n}\n\nexport const name = 'command'\n\nexport const getPlaceholder = () => {\n return UiStrings.TypeNameOfCommandToRun\n}\n\nexport const helpEntries = () => {\n return [\n {\n description: UiStrings.ShowAndRunCommands,\n category: 'global commands',\n },\n ]\n}\n\nexport const getLabel = () => {\n return ''\n}\n\nexport const getNoResults = () => {\n return {\n label: UiStrings.NoMatchingResults,\n }\n}\n\n// TODO combine Ajax with cache (specify strategy: cacheFirst, networkFirst)\nconst getBuiltinPicks = async () => {\n const assetDir = Platform.getAssetDir()\n const url = `${assetDir}/config/builtinCommands.json`\n const builtinPicks = await Command.execute(\n /* Ajax.getJson */ 'Ajax.getJson',\n /* url */ url\n )\n return builtinPicks\n}\n\nconst prefixIdWithExt = (item) => {\n if (!item.label) {\n ErrorHandling.warn('[QuickPick] item has missing label', item)\n }\n if (!item.id) {\n ErrorHandling.warn('[QuickPick] item has missing id', item)\n }\n return {\n ...item,\n id: `ext.${item.id}`,\n label: item.label || item.id,\n }\n}\n\nconst getExtensionPicks = async () => {\n try {\n // TODO don't call this every time\n const extensionPicks = await ExtensionHostCommands.getCommands()\n if (!extensionPicks) {\n return []\n }\n const mappedPicks = extensionPicks.map(prefixIdWithExt)\n return mappedPicks\n } catch (error) {\n console.error(`Failed to get extension picks: ${error}`)\n return []\n }\n}\n\n// TODO send strings to renderer process only once for next occurrence send uint16array of ids of strings\n\nexport const getPicks = async () => {\n if (Platform.platform === PlatformType.Web) {\n const builtinPicks = await getBuiltinPicks()\n return builtinPicks\n }\n const builtinPicks = await getBuiltinPicks()\n const extensionPicks = await getExtensionPicks()\n return [...builtinPicks, ...extensionPicks]\n}\n\nconst shouldHide = (item) => {\n if (item.id === 'Viewlet.openWidget' && item.args[0] === 'QuickPick') {\n return false\n }\n return true\n}\n\nconst selectPickBuiltin = async (item) => {\n const args = item.args || []\n // TODO ids should be all numbers for efficiency -> also directly can call command\n await Command.execute(item.id, ...args)\n if (shouldHide(item)) {\n return {\n command: QuickPickReturnValue.Hide,\n }\n }\n return {\n command: QuickPickReturnValue.KeepOpen,\n }\n}\n\nconst selectPickExtension = async (item) => {\n const id = item.id.slice(4) // TODO lots of string allocation with 'ext.' find a better way to separate builtin commands from extension commands\n try {\n await ExtensionHostCommands.executeCommand(id)\n } catch (error) {\n await ErrorHandling.showErrorDialog(error)\n }\n return {\n command: QuickPickReturnValue.Hide,\n }\n}\n\nexport const selectPick = (item) => {\n if (item.id.startsWith('ext.')) {\n return selectPickExtension(item)\n }\n return selectPickBuiltin(item)\n}\n\nexport const getFilterValue = (value) => {\n return value\n}\n", "import * as QuickPickReturnValue from '../QuickPickReturnValue/QuickPickReturnValue.js'\n\n/**\n * @enum {string}\n */\nexport const UiStrings = {\n NoSymbolFound: 'No symbol found',\n}\n\nexport const name = 'symbol'\n\nexport const getPlaceholder = () => {\n return ''\n}\n\nexport const getHelpEntries = () => {\n return []\n}\n\nexport const getNoResults = () => {\n return {\n label: UiStrings.NoSymbolFound,\n }\n}\n\nexport const getPicks = async () => {\n const picks = []\n return picks\n}\n\nexport const selectPick = async (item) => {\n return {\n command: QuickPickReturnValue.Hide,\n }\n}\n\nexport const getFilterValue = (value) => {\n return value\n}\n", "import * as QuickPickReturnValue from '../QuickPickReturnValue/QuickPickReturnValue.js'\n\n// import * as ViewService from '../ViewService/ViewService.js'\n\n/**\n * @enum {string}\n */\n\nexport const UiStrings = {\n NoWorkspaceSymbolsFound: 'no workspace symbols found',\n}\n\nexport const name = 'workspace-symbol'\n\nexport const getPlaceholder = () => {\n return ''\n}\n\nexport const getHelpEntries = () => {\n return []\n}\n\nexport const getNoResults = () => {\n return {\n label: UiStrings.NoWorkspaceSymbolsFound,\n }\n}\n\nexport const getPicks = async () => {\n const picks = []\n return picks\n}\n\nexport const selectPick = async (item) => {\n return {\n command: QuickPickReturnValue.Hide,\n }\n}\n\nexport const getFilterValue = (value) => {\n return value\n}\n", "import * as Command from '../Command/Command.js'\nimport * as QuickPickReturnValue from '../QuickPickReturnValue/QuickPickReturnValue.js'\n\nexport const name = 'goToLine'\n\nexport const getPlaceholder = () => {\n return ''\n}\n\nexport const getHelpEntries = () => {\n return []\n}\n\nexport const getNoResults = () => {\n return undefined\n}\n\nexport const getPicks = async () => {\n const picks = [\n {\n label: '1',\n },\n {\n label: '2',\n },\n {\n label: '3',\n },\n {\n label: '4',\n },\n {\n label: '5',\n },\n {\n label: '6',\n },\n ]\n return picks\n}\n\nexport const selectPick = async (item) => {\n const rowIndex = Number.parseInt(item.label)\n const position = {\n rowIndex,\n columnIndex: 5,\n }\n await Command.execute(\n /* EditorSetCursor.editorSetCursor */ 396,\n /* position */ position\n )\n // TODO put cursor onto that line\n return {\n command: QuickPickReturnValue.Hide,\n }\n}\n\nexport const getFilterValue = (value) => {\n return value\n}\n", "// TODO probably not needed\n\n/**\n * @enum {string}\n */\nexport const UiStrings = {\n TypeTheNameOfAViewToOpen:\n 'Type the name of a view, output channel or terminal to open.',\n}\n\nexport const getPlaceholder = () => {\n return UiStrings.TypeTheNameOfAViewToOpen\n}\n\nexport const getHelpEntries = () => {\n return undefined\n}\n\nconst toPick = (view) => ({\n label: view,\n})\n\nexport const getPicks = async () => {\n // const views = ViewService.getViews()\n // const picks = views.map(toPick)\n // return picks\n return []\n}\n\nexport const selectPick = async (item) => {\n // Command.execute(/* openView */ 549, /* viewName */ item.label)\n // return {\n // command: QuickPickReturnValue.Hide,\n // }\n}\n\nexport const getFilterValue = (value) => {\n return value\n}\n", "import * as FileSystemWeb from '../FileSystem/FileSystemWeb.js'\n\nconst removeLeadingSlash = (file) => {\n return file.slice(1)\n}\n\nexport const searchFile = async (path, value) => {\n const files = FileSystemWeb.state.files\n const keys = Object.keys(files).map(removeLeadingSlash)\n return keys\n}\n", "import * as FileSystemMemory from '../FileSystem/FileSystemMemory.js'\n\nexport const searchFile = async (path, value) => {\n const files = FileSystemMemory.state.files\n const keys = Object.keys(files)\n return keys\n}\n", "import * as Command from '../Command/Command.js'\nimport * as FileSystemProtocol from '../FileSystemProtocol/FileSystemProtocol.js'\nimport * as Platform from '../Platform/Platform.js'\nimport * as Workspace from '../Workspace/Workspace.js'\n\nconst removeLeadingSlash = (path) => {\n const workspacePath = Workspace.state.workspacePath\n return path.slice(workspacePath.length - FileSystemProtocol.Fetch.length - 2)\n}\n\nexport const searchFile = async (path, value) => {\n const assetDir = Platform.getAssetDir()\n const fetchUri = `${assetDir}/config/fileMap.json`\n const fileList = await Command.execute('Ajax.getJson', fetchUri)\n const result = fileList.map(removeLeadingSlash)\n return result\n}\n", "import * as SharedProcess from '../SharedProcess/SharedProcess.js'\n\nexport const searchFile = async (path, value) => {\n const files = await SharedProcess.invoke(\n /* SearchFile.searchFile */ 'SearchFile.searchFile',\n /* path */ path,\n /* searchTerm */ value\n )\n return files\n}\n", "import * as FileSystem from '../FileSystem/FileSystem.js'\nimport * as FileSystemProtocol from '../FileSystemProtocol/FileSystemProtocol.js'\n\nconst getModule = (protocol) => {\n switch (protocol) {\n case FileSystemProtocol.Web:\n return import('../SearchFileWeb/SearchFileWeb.js')\n case FileSystemProtocol.Memfs:\n return import('../SearchFileMemfs/SearchFileMemfs.js')\n case FileSystemProtocol.Fetch:\n return import('../SearchFileWithFetch/SearchFileWithFetch.js')\n default:\n return import('../SearchFileRemote/SearchFileRemote.js')\n }\n}\n\nexport const searchFile = async (path, value) => {\n const protocol = FileSystem.getProtocol(path)\n const module = await getModule(protocol)\n return module.searchFile(path, value)\n}\n", "import * as Command from '../Command/Command.js'\nimport * as IconTheme from '../IconTheme/IconTheme.js'\nimport * as SearchFile from '../SearchFile/SearchFile.js'\nimport * as Workspace from '../Workspace/Workspace.js'\nimport * as QuickPickReturnValue from '../QuickPickReturnValue/QuickPickReturnValue.js'\n\n/**\n * @enum {string}\n */\nconst UiStrings = {\n Files: 'Files',\n NoMatchingResults: 'No matching results',\n GoToFile: 'Go to file',\n}\n\nconst searchFile = async (path, value) => {\n const files = await SearchFile.searchFile(\n /* path */ path,\n /* searchTerm */ value\n )\n return files\n}\n\nconst getIcon = (file) => {\n const baseName = Workspace.pathBaseName(file)\n return IconTheme.getFileIcon({ name: baseName })\n}\n\nconst toPick = (file) => {\n const icon = getIcon(file)\n return {\n label: file,\n icon,\n }\n}\n\nexport const name = 'file'\n\nexport const getPlaceholder = () => {\n return ''\n}\n\nexport const getLabel = () => {\n return UiStrings.Files\n}\n\n// TODO help entries should not be here\nexport const getHelpEntries = () => {\n return [\n {\n description: UiStrings.GoToFile,\n category: 'global commands',\n },\n ]\n}\n\nexport const getNoResults = () => {\n return {\n label: UiStrings.NoMatchingResults,\n }\n}\n\nexport const getPicks = async (searchValue) => {\n const workspace = Workspace.state.workspacePath\n if (!workspace) {\n return []\n }\n const files = await searchFile(workspace, searchValue)\n const picks = files.map(toPick)\n return picks\n}\n\nexport const selectPick = async (item) => {\n const workspace = Workspace.state.workspacePath\n const absolutePath = `${workspace}/${item.label}`\n await Command.execute(\n /* Main.openUri */ 'Main.openUri',\n /* uri */ absolutePath\n )\n return {\n command: QuickPickReturnValue.Hide,\n }\n}\n\nexport const getFilterValue = (value) => {\n return value\n}\n", "import * as QuickPickNoop from '../QuickPickEntriesNoop/QuickPickNoop.js'\nimport * as QuickPickPrefix from '../QuickPIckPrefix/QuickPickPrefix.js'\n\n// TODO cache quick pick items -> don't send every time from renderer worker to renderer process\n// maybe cache by id opening commands -> has all commands cached\n// when filtering -> sends all indices (uint16Array) to renderer process instead of filtered/sorted command objects\n\nconst RECENT_PICKS_MAX_SIZE = 3\n\n// TODO avoid global variable\n\nexport const state = {\n // providerId: PROVIDER_NOOP,\n provider: QuickPickNoop,\n prefix: 'string-that-should-never-match-another-string',\n}\n\n/**\n * @type {string}\n */\nexport const name = 'everything'\n\nexport const getPlaceholder = () => {\n return state.provider.getPlaceholder()\n}\n\nexport const getLabel = () => {\n return ''\n}\n\nexport const getHelpEntries = () => {\n return state.provider.getHelpEntries()\n}\n\nexport const getNoResults = () => {\n return state.provider.getNoResults()\n}\n\nconst getPrefix = (value) => {\n if (value.startsWith(QuickPickPrefix.Command)) {\n return QuickPickPrefix.Command\n }\n if (value.startsWith(QuickPickPrefix.Symbol)) {\n return QuickPickPrefix.Symbol\n }\n if (value.startsWith(QuickPickPrefix.WorkspaceSymbol)) {\n return QuickPickPrefix.WorkspaceSymbol\n }\n if (value.startsWith(QuickPickPrefix.GoToLine)) {\n return QuickPickPrefix.GoToLine\n }\n if (value.startsWith(QuickPickPrefix.View)) {\n return QuickPickPrefix.View\n }\n return QuickPickPrefix.None\n}\n\nconst getQuickPickProvider = (prefix) => {\n // TODO could use enum for prefix\n // TODO could use regex to extract prefix\n // TODO or could check first letter char code (less comparisons)\n switch (prefix) {\n case QuickPickPrefix.Command:\n return import('../QuickPickEntriesCommand/QuickPickEntriesCommand.js')\n case QuickPickPrefix.Symbol:\n return import('../QuickPickEntriesSymbol/QuickPickEntriesSymbol.js')\n case QuickPickPrefix.WorkspaceSymbol:\n return import(\n '../QuickPickEntriesWorkspaceSymbol/QuickPickEntriesWorkspaceSymbol.js'\n )\n case QuickPickPrefix.GoToLine:\n return import('../QuickPickEntriesGoToLine/QuickPickEntriesGoToLine.js')\n case QuickPickPrefix.View:\n return import('../QuickPickEntriesView/QuickPickEntriesView.js')\n default:\n return import('../QuickPickEntriesFile/QuickPickEntriesFile.js')\n }\n}\n\nexport const getPicks = async (value) => {\n const prefix = getPrefix(value)\n // TODO race condition\n if (state.prefix !== prefix) {\n state.prefix = prefix\n // @ts-ignore\n state.provider = await getQuickPickProvider(prefix)\n }\n // TODO this line is a bit duplicated with getFilterValue\n const slicedValue = value.slice(prefix.length)\n const picks = await state.provider.getPicks(slicedValue)\n return picks\n}\n\nconst getPick = (state, index) => {\n // if (index < state.recentPicks.length) {\n // return state.recentPicks[index]\n // }\n // index -= state.recentPicks.length\n if (index < state.filteredPicks.length) {\n return state.filteredPicks[index]\n }\n console.warn('no pick matching index', index)\n}\n\nexport const selectPick = (item) => {\n const { provider } = state\n return provider.selectPick(item)\n}\n\nexport const openCommandPalette = () => {\n // show('>')\n}\n\nexport const openView = () => {\n // show('view ')\n}\n\nexport const getFilterValue = (value) => {\n return value.slice(state.prefix.length)\n}\n", "import * as QuickPickReturnValue from '../QuickPickReturnValue/QuickPickReturnValue.js'\n\n/**\n * @enum {string}\n */\nexport const UiStrings = {\n NoMatchingResults: 'No matching results',\n}\n\nexport const name = 'number'\n\nexport const getPlaceholder = () => {\n return ''\n}\n\nexport const getHelpEntries = () => {\n return []\n}\n\nexport const getNoResults = () => {\n return {\n label: UiStrings.NoMatchingResults,\n }\n}\n\nexport const getPicks = async () => {\n const picks = [\n {\n label: '1',\n },\n {\n label: '2',\n },\n {\n label: '3',\n },\n {\n label: '4',\n },\n {\n label: '5',\n },\n {\n label: '6',\n },\n {\n label: '7',\n },\n {\n label: '8',\n },\n {\n label: '9',\n },\n {\n label: '10',\n },\n ]\n return picks\n}\n\nexport const selectPick = async (item) => {\n return {\n command: QuickPickReturnValue.Hide,\n }\n}\n", "import * as Command from '../Command/Command.js'\nimport * as QuickPickReturnValue from '../QuickPickReturnValue/QuickPickReturnValue.js'\n\n/**\n * @enum {string}\n */\nexport const UiStrings = {\n SelectToOpen: 'Select to open',\n OpenRecent: 'Open Recent',\n NoRecentlyOpenedFoldersFound: 'No recently opened folders found',\n}\n\nconst getRecentlyOpened = () => {\n return Command.execute(\n /* RecentlyOpened.getRecentlyOpened */ 'RecentlyOpened.getRecentlyOpened'\n )\n}\n\nconst openWorkspaceFolder = (uri) => {\n return Command.execute(\n /* Workspace.setPath */ 'Workspace.setPath',\n /* path */ uri\n )\n}\n\nexport const getPlaceholder = () => {\n return UiStrings.SelectToOpen\n}\n\nexport const getLabel = () => {\n return UiStrings.OpenRecent\n}\n\nexport const getHelpEntries = () => {\n return []\n}\n\nexport const getNoResults = () => {\n return {\n label: UiStrings.NoRecentlyOpenedFoldersFound,\n }\n}\n\nconst toPick = (path) => {\n return {\n label: path,\n }\n}\n\n// TODO could also change api so that getPicks returns an array of anything\n// and the transformPick gets the label for each pick\n// This would make the code more module since the code for getting the picks\n// would be more independent of the specific data format of the quickpick provider\n\nexport const getPicks = async () => {\n const recentlyOpened = await getRecentlyOpened()\n return recentlyOpened.map(toPick)\n}\n\n// TODO selectPick should be independent of show/hide\nexport const selectPick = async (pick) => {\n const path = pick.label\n await openWorkspaceFolder(path)\n return {\n command: QuickPickReturnValue.Hide,\n }\n}\n\nexport const getFilterValue = (value) => {\n return value\n}\n", "import * as Command from '../Command/Command.js'\nimport * as Platform from '../Platform/Platform.js'\nimport * as PlatformType from '../PlatformType/PlatformType.js'\nimport * as QuickPickReturnValue from '../QuickPickReturnValue/QuickPickReturnValue.js'\nimport * as SharedProcess from '../SharedProcess/SharedProcess.js'\n\n/**\n * @enum {string}\n */\nexport const UiStrings = {\n NoMatchingColorThemesFound: 'No matching color themes found',\n SelectColorTheme: 'Select Color Theme',\n}\n\nconst getColorThemeNames = async () => {\n if (Platform.platform === PlatformType.Web) {\n const assetDir = Platform.getAssetDir()\n const url = `${assetDir}/config/themes.json`\n return Command.execute(/* Ajax.getJson */ 'Ajax.getJson', /* url */ url)\n }\n return SharedProcess.invoke(\n /* ExtensionHost.getColorThemeNames */ 'ExtensionHost.getColorThemeNames'\n )\n}\n\nconst setColorTheme = (id) => {\n return Command.execute(\n /* ColorTheme.setColorTheme */ 'ColorTheme.setColorTheme',\n /* colorThemeId */ id\n )\n}\n\nexport const getPlaceholder = () => {\n return UiStrings.SelectColorTheme\n}\n\nexport const getLabel = () => {\n return UiStrings.SelectColorTheme\n}\n\nconst toPick = (colorThemeName) => {\n return {\n label: colorThemeName,\n }\n}\n\nexport const getPickLabel = (colorThemeName) => {\n return colorThemeName\n}\n\nexport const getPicks = async (searchValue) => {\n const colorThemeNames = await getColorThemeNames()\n const picks = colorThemeNames.map(toPick)\n return picks\n}\n\nexport const selectPick = async (item) => {\n await setColorTheme(/* colorThemeId */ item.label)\n return {\n command: QuickPickReturnValue.Hide,\n }\n}\n\nexport const focusPick = async (item) => {\n console.log('focus pick', item)\n await setColorTheme(/* colorThemeId */ item.label)\n}\n\nexport const getFilterValue = (value) => {\n return value\n}\n\nexport const getNoResults = () => {\n return {\n label: UiStrings.NoMatchingColorThemesFound,\n }\n}\n", "import * as QuickPickEntryId from '../QuickPickEntryId/QuickPickEntryId.js'\n\n// prettier-ignore\nexport const load = (moduleId) => {\n switch (moduleId) {\n case QuickPickEntryId.CommandPalette:\n case QuickPickEntryId.File:\n case QuickPickEntryId.EveryThing:\n case QuickPickEntryId.WorkspaceSymbol:\n return import('../QuickPickEntriesEverything/QuickPickEntriesEverything.js')\n case QuickPickEntryId.Noop:\n return import('../QuickPickEntriesNoop/QuickPickNoop.js')\n case QuickPickEntryId.Number:\n return import('../QuickPickEntriesNumber/QuickPickEntriesNumber.js')\n case QuickPickEntryId.Recent:\n return import('../QuickPickEntriesOpenRecent/QuickPickEntriesOpenRecent.js')\n case QuickPickEntryId.ColorTheme:\n return import('../QuickPickEntriesColorTheme/QuickPickEntriesColorTheme.js')\n case QuickPickEntryId.Symbol:\n return import('../QuickPickEntriesSymbol/QuickPickEntriesSymbol.js')\n case QuickPickEntryId.View:\n return import('../QuickPickEntriesView/QuickPickEntriesView.js')\n default:\n throw new Error(`unknown module \"${moduleId}\"`)\n }\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as BeforeInput from '../BeforeInput/BeforeInput.js'\nimport * as FuzzySearch from '../FuzzySearch/FuzzySearch.js'\nimport * as QuickPickEntries from '../QuickPickEntries/QuickPickEntries.js'\nimport * as QuickPickEveryThing from '../QuickPickEntriesEverything/QuickPickEntriesEverything.js'\nimport * as Viewlet from '../Viewlet/Viewlet.js'\nimport * as QuickPickReturnValue from '../QuickPickReturnValue/QuickPickReturnValue.js'\nimport * as ViewletModuleId from '../ViewletModuleId/ViewletModuleId.js'\nimport * as Height from '../Height/Height.js'\nimport * as VirtualList from '../VirtualList/VirtualList.js'\n\n// TODO send open signal to renderer process before items are ready\n// that way user can already type while items are still loading\n\n// TODO cache quick pick items -> don't send every time from renderer worker to renderer process\n// maybe cache by id opening commands -> has all commands cached\n// when filtering -> sends all indices (uint16Array) to renderer process instead of filtered/sorted command objects\n\n// state:\n// 1. default\n// 2. creating (input is ready, but there are no items yet)\n// 3. finished\n\nconst QuickPickState = {\n Default: 0,\n Creating: 1,\n Finished: 2,\n}\n\nexport const create = (id, uri, top, left, width, height) => {\n return {\n state: QuickPickState.Default,\n picks: [],\n recentPicks: [],\n recentPickIds: new Map(), // TODO use object.create(null) instead\n versionId: 0,\n provider: QuickPickEveryThing, // TODO make this dynamic again\n warned: [],\n visiblePicks: [],\n maxVisibleItems: 10,\n uri,\n cursorOffset: 0,\n height: 300,\n top: 50,\n width: 600,\n ...VirtualList.create({\n itemHeight: Height.ListItem,\n headerHeight: 30,\n minimumSliderSize: Height.MinimumSliderSize,\n }),\n }\n}\n\n// TODO naming for provider.getNoResults is a bit weird\n\nconst filterPicks = (state, picks, exclude, value) => {\n // TODO every pick should have label\n const filterPick = (pick) => {\n if (exclude.has(pick.id)) {\n return false\n }\n if (!pick.label && !state.warned.includes(JSON.stringify(pick))) {\n console.warn('[QuickPick] item has missing label', pick)\n state.warned.push(JSON.stringify(pick))\n return false\n }\n const labelMatch = FuzzySearch.fuzzySearch(value, pick.label || pick.id)\n if (labelMatch) {\n return labelMatch\n }\n // TODO also filtering for aliases might be expensive\n // TODO maybe only filter for aliases if prefix is longer than 4-5 characters\n // otherwise both will be found anywayf\n // e.g. \"Relo\" matches \"Window Reload\" and \"Reload Window\"\n // But \"Reload Win\" only matches \"Reload Window\"\n if (pick.aliases) {\n for (const alias of pick.aliases) {\n if (FuzzySearch.fuzzySearch(value, alias)) {\n return true\n }\n }\n }\n return false\n }\n const items = picks.filter(filterPick)\n return items\n}\n\nconst getVisible = (items, minLineY, maxLineY) => {\n const visibleItems = []\n const setSize = items.length\n const max = Math.min(items.length, maxLineY)\n for (let i = minLineY; i < max; i++) {\n const item = items[i]\n visibleItems.push({\n label: item.label,\n icon: item.icon,\n posInSet: i + 1,\n setSize,\n })\n }\n return visibleItems\n}\n\nconst getFilteredItems = (state, picks, filterValue) => {\n Assert.object(state)\n Assert.array(picks)\n Assert.string(filterValue)\n const items = filterPicks(state, picks, state.recentPickIds, filterValue)\n return items\n // TODO avoid mutation\n // state.items = items\n // const slicedPicks = slicePicks(items)\n // return toDisplayPicks(slicedPicks)\n}\n\nconst getDefaultValue = (uri) => {\n switch (uri) {\n case 'quickPick://everything':\n return '>'\n default:\n return ''\n }\n}\n\nexport const loadContent = async (state) => {\n const uri = state.uri\n const value = getDefaultValue(uri)\n const provider = await QuickPickEntries.load(uri)\n const newPicks = await provider.getPicks(value)\n Assert.array(newPicks)\n // @ts-ignore\n const filterValue = provider.getFilterValue(value)\n const items = getFilteredItems(state, newPicks, filterValue)\n const placeholder = provider.getPlaceholder()\n // @ts-ignore\n const label = provider.getLabel()\n const minLineY = 0\n const maxLineY = Math.min(\n minLineY + state.maxVisibleItems,\n newPicks.length - 1\n )\n return {\n ...state,\n picks: newPicks,\n items,\n focusedIndex: 0,\n state: QuickPickState.Finished,\n minLineY,\n maxLineY,\n value,\n cursorOffset: value.length,\n provider,\n }\n}\n\nexport const dispose = (state) => {\n return state\n}\n\nexport const handleBlur = async (state) => {\n await Viewlet.closeWidget('QuickPick')\n return state\n}\n\nconst getPick = (items, index) => {\n Assert.array(items)\n Assert.number(index)\n // if (index < state.recentPicks.length) {\n // return state.recentPicks[index]\n // }\n // index -= state.recentPicks.length\n if (index < items.length) {\n return items[index]\n }\n console.warn('no pick matching index', index)\n}\n\nconst findLabelIndex = (items, label) => {\n for (let i = 0; i < items.length; i++) {\n if (items[i].label === label) {\n return i\n }\n }\n return -1\n}\n\nexport const selectItem = (state, label) => {\n Assert.string(label)\n const index = findLabelIndex(state.items, label)\n if (index === -1) {\n return state\n }\n return selectIndex(state, index)\n}\n\nexport const selectIndex = async (state, index, button = /* left */ 0) => {\n const { minLineY, provider, items } = state\n const actualIndex = index + minLineY\n const pick = getPick(items, actualIndex)\n const selectPickResult = await provider.selectPick(pick, actualIndex, button)\n Assert.object(selectPickResult)\n Assert.string(selectPickResult.command)\n const { command } = selectPickResult\n switch (command) {\n case QuickPickReturnValue.Hide:\n await Viewlet.closeWidget(ViewletModuleId.QuickPick)\n return state\n default:\n return state\n }\n\n // TODO recent picks should be per provider\n // if (!state.recentPickIds.has(pick.id)) {\n // state.recentPicks.unshift(pick)\n // state.recentPickIds.add(pick.id)\n // }\n // if (state.recentPicks.length > RECENT_PICKS_MAX_SIZE) {\n // const last = state.recentPicks.pop()\n // state.recentPickIds.delete(last.id)\n // }\n}\n\nexport const selectCurrentIndex = (state) => {\n return selectIndex(state, state.focusedIndex)\n}\n\n// TODO when user types letters -> no need to query provider again -> just filter existing results\nexport const handleInput = async (state, newValue, cursorOffset) => {\n if (state.value === newValue) {\n return state\n }\n const newPicks = await state.provider.getPicks(newValue)\n const filterValue = state.provider.getFilterValue(newValue)\n const items = getFilteredItems(state, newPicks, filterValue)\n const focusedIndex = items.length === 0 ? -1 : 0\n return {\n ...state,\n value: newValue,\n picks: newPicks,\n items,\n focusedIndex,\n cursorOffset,\n }\n}\n\nexport const handleBeforeInput = (\n state,\n inputType,\n data,\n selectionStart,\n selectionEnd\n) => {\n Assert.string(inputType)\n Assert.number(selectionStart)\n Assert.number(selectionEnd)\n const { value } = state\n const { newValue, cursorOffset } = BeforeInput.getNewValue(\n value,\n inputType,\n data,\n selectionStart,\n selectionEnd\n )\n return handleInput(state, newValue, cursorOffset)\n}\n\n// TODO use reactive Programming\n// https://angular-2-training-book.rangle.io/http/search_with_switchmap\n\n// searchField.valuesChanges.debounceTime(400).switchMap(term => search(term)).subscribe(result => {\n// sendRendererProcess(result)\n// })\n// merge(openStream, closeStream, updateStream).switchMap(state => {\n// switch(state){\n// case 'default':\n//\n// }\n//\n// })\n\nexport const handleClickAt = (state, x, y) => {\n const { top, headerHeight, itemHeight } = state\n const relativeY = y - top - headerHeight\n const index = Math.floor(relativeY / itemHeight)\n return selectIndex(state, index)\n}\n\nexport const hasFunctionalRender = true\n\nconst renderValue = {\n isEqual(oldState, newState) {\n return oldState.value === newState.value\n },\n apply(oldState, newState) {\n return [\n /* Viewlet.send */ 'Viewlet.send',\n /* id */ ViewletModuleId.QuickPick,\n /* method */ 'setValue',\n /* value */ newState.value,\n ]\n },\n}\n\nconst renderCursorOffset = {\n isEqual(oldState, newState) {\n oldState.cursorOffset === newState.cursorOffset ||\n newState.cursorOffset === newState.value.length\n },\n apply(oldState, newState) {\n return [\n /* Viewlet.send */ 'Viewlet.send',\n /* id */ ViewletModuleId.QuickPick,\n /* method */ 'setCursorOffset',\n /* cursorOffset */ newState.cursorOffset,\n ]\n },\n}\n\nconst getItemDomChanges = (oldState, newState) => {\n const oldItems = oldState.items\n const newItems = newState.items\n const length = oldItems.length\n const domChanges = []\n for (let i = 0; i < length; i++) {\n const oldItem = oldItems[i]\n const newItem = newItems[i]\n if (oldItem.icon && !newItem.icon) {\n domChanges.push({\n command: 'addIcon',\n icon: newItem.icon,\n index: i,\n })\n }\n }\n return domChanges\n}\n\nconst renderItems = {\n isEqual(oldState, newState) {\n return (\n oldState.items === newState.items &&\n oldState.minLineY === newState.minLineY &&\n oldState.maxLineY === newState.maxLineY\n )\n },\n apply(oldState, newState) {\n if (newState.items.length === 0) {\n return [/* method */ 'showNoResults']\n }\n const visibleItems = getVisible(\n newState.items,\n newState.minLineY,\n newState.maxLineY\n )\n return [/* method */ 'setVisiblePicks', /* visiblePicks */ visibleItems]\n },\n}\n\nconst renderFocusedIndex = {\n isEqual(oldState, newState) {\n return oldState.focusedIndex === newState.focusedIndex\n },\n apply(oldState, newState) {\n const oldFocusedIndex = oldState.focusedIndex - oldState.minLineY\n const newFocusedIndex = newState.focusedIndex - newState.minLineY\n return [\n /* method */ 'setFocusedIndex',\n /* oldFocusedIndex */ oldFocusedIndex,\n /* newFocusedIndex */ newFocusedIndex,\n ]\n },\n}\n\nconst renderHeight = {\n isEqual(oldState, newState) {\n return oldState.items.length === newState.items.length\n },\n apply(oldState, newState) {\n const maxLineY = Math.min(newState.maxLineY, newState.items.length)\n const itemCount = maxLineY - newState.minLineY\n const height = itemCount * newState.itemHeight\n return [/* method */ 'setItemsHeight', /* height */ height]\n },\n}\n\nexport const render = [\n renderItems,\n renderValue,\n renderCursorOffset,\n renderFocusedIndex,\n renderHeight,\n]\n\nexport * from '../VirtualList/VirtualList.js'\n", "export const focusIndex = async (state, index) => {\n const { provider, maxVisibleItems, items, minLineY, maxLineY } = state\n // TODO get types working\n // @ts-ignore\n if (provider.focusPick) {\n // @ts-ignore\n await provider.focusPick(items[index])\n }\n if (index < minLineY + 1) {\n const minLineY = index\n const maxLineY = Math.min(index + maxVisibleItems, items.length - 1)\n // TODO need to scroll up\n return {\n ...state,\n minLineY,\n maxLineY,\n focusedIndex: index,\n }\n }\n if (index >= maxLineY - 1) {\n // TODO need to scroll down\n const maxLineY = index + 1\n const minLineY = maxLineY - maxVisibleItems\n return {\n ...state,\n minLineY,\n maxLineY,\n focusedIndex: index,\n }\n }\n return {\n ...state,\n focusedIndex: index,\n }\n}\n", "import { focusIndex } from './ViewletQuickPickFocusIndex.js'\n\nexport const focusFirst = (state) => {\n return focusIndex(state, 0)\n}\n", "import { focusIndex } from './ViewletQuickPickFocusIndex.js'\n\nexport const focusLast = (state) => {\n return focusIndex(state, state.items.length - 1)\n}\n", "import { focusIndex } from './ViewletQuickPickFocusIndex.js'\n\nexport const focusNext = (state) => {\n const nextIndex = (state.focusedIndex + 1) % state.items.length\n return focusIndex(state, nextIndex)\n}\n", "import { focusIndex } from './ViewletQuickPickFocusIndex.js'\n\nexport const focusPrevious = (state) => {\n const previousIndex =\n state.focusedIndex === 0 ? state.items.length - 1 : state.focusedIndex - 1\n return focusIndex(state, previousIndex)\n}\n", "import * as ViewletQuickPick from './ViewletQuickPick.js'\n\nexport const name = 'QuickPick'\n\n// prettier-ignore\nexport const Commands = {\n handleBeforeInput: ViewletQuickPick.handleBeforeInput,\n handleBlur: ViewletQuickPick.handleBlur,\n handleClickAt: ViewletQuickPick.handleClickAt,\n handleInput: ViewletQuickPick.handleInput,\n handleWheel: ViewletQuickPick.handleWheel,\n selectCurrentIndex: ViewletQuickPick.selectCurrentIndex,\n selectIndex: ViewletQuickPick.selectIndex,\n selectItem: ViewletQuickPick.selectItem,\n}\n\n// prettier-ignore\nexport const LazyCommands = {\n focusFirst: () => import('./ViewletQuickPickFocusFirst.js'),\n focusIndex: () => import('./ViewletQuickPickFocusIndex.js'),\n focusLast: () => import('./ViewletQuickPickFocusLast.js'),\n focusNext: () => import('./ViewletQuickPickFocusNext.js'),\n focusPrevious: () => import('./ViewletQuickPickFocusPrevious.js'),\n}\n\nexport const Css = [\n '/css/parts/ViewletQuickPick.css',\n '/css/parts/InputBox.css',\n]\n\nexport * from './ViewletQuickPick.js'\n", "import * as FuzzySearch from '../FuzzySearch/FuzzySearch.js'\n\nexport const getFilteredKeyBindings = (keyBindings, value) => {\n const filteredKeyBindings = []\n for (const keyBinding of keyBindings) {\n const { command, key } = keyBinding\n if (\n FuzzySearch.fuzzySearch(value, command) ||\n FuzzySearch.fuzzySearch(value, key)\n ) {\n filteredKeyBindings.push(keyBinding)\n }\n }\n return filteredKeyBindings\n}\n", "import * as Command from '../Command/Command.js'\nimport * as Platform from '../Platform/Platform.js'\n\n// TODO extension key bindings\n\nexport const getKeyBindings = async () => {\n const assetDir = Platform.getAssetDir()\n const defaultKeyBindings = await Command.execute(\n /* Ajax.getJson */ 'Ajax.getJson',\n /* url */ `${assetDir}/config/defaultKeyBindings.json`\n )\n const actualKeyBindings = defaultKeyBindings\n const keyBindings = actualKeyBindings\n return keyBindings\n}\n", "const parseKey = (rawKey) => {\n const parts = rawKey.split('+')\n let isCtrl = false\n let isShift = false\n let key = ''\n for (const part of parts) {\n switch (part) {\n case 'shift':\n isShift = true\n break\n case 'ctrl':\n isCtrl = true\n default:\n key = part\n break\n }\n }\n return {\n key,\n isCtrl,\n isShift,\n }\n}\n\nconst parseKeyBinding = (keyBinding) => {\n return {\n ...keyBinding,\n rawKey: keyBinding.key,\n ...parseKey(keyBinding.key),\n }\n}\n\nexport const parseKeyBindings = (keyBindings) => {\n return keyBindings.map(parseKeyBinding)\n}\n", "export const Div = 1\nexport const H1 = 2\nexport const Kbd = 3\nexport const Table = 4\nexport const TBody = 5\nexport const Td = 6\nexport const Text = 7\nexport const Th = 8\nexport const THead = 9\nexport const Tr = 10\nexport const Input = 11\n", "import * as VirtualDomElements from '../VirtualDomElements/VirtualDomElements.js'\n\nexport const h = (type, props, childCount) => {\n return {\n type,\n props,\n childCount,\n }\n}\n\nexport const text = (data) => {\n return h(\n VirtualDomElements.Text,\n {\n text: data,\n },\n 0\n )\n}\n\nexport const div = (props, childCount) => {\n return h(VirtualDomElements.Div, props, childCount)\n}\n\nexport const tr = (props, childCount) => {\n return h(VirtualDomElements.Tr, props, childCount)\n}\n\nexport const kbd = (props, childCount) => {\n return h(VirtualDomElements.Kbd, props, childCount)\n}\n\nexport const td = (props, childCount) => {\n return h(VirtualDomElements.Td, props, childCount)\n}\n\nexport const input = (props, childCount) => {\n return h(VirtualDomElements.Input, props, childCount)\n}\n\nexport const thead = (props, childCount) => {\n return h(VirtualDomElements.THead, props, childCount)\n}\n\nexport const tbody = (props, childCount) => {\n return h(VirtualDomElements.TBody, props, childCount)\n}\n\nexport const th = (props, childCount) => {\n return h(VirtualDomElements.Th, props, childCount)\n}\n\nexport const table = (props, childCount) => {\n return h(VirtualDomElements.Table, props, childCount)\n}\n", "import {\n kbd,\n table,\n tbody,\n td,\n text,\n th,\n thead,\n tr,\n} from '../VirtualDomHelpers/VirtualDomHelpers.js'\nimport * as ScrollBarFunctions from '../ScrollBarFunctions/ScrollBarFunctions.js'\n\n/**\n * @enum {string}\n */\nconst ClassNames = {\n KeyBindingsTableRow: 'KeyBindingsTableRow',\n KeyBindingsTableCell: 'KeyBindingsTableCell',\n Key: 'Key',\n KeyBindingsTable: 'KeyBindingsTable',\n KeyBindingsTableHead: 'KeyBindingsTableHead',\n KeyBindingsTableBody: 'KeyBindingsTableBody',\n KeyBindingsHeader: 'KeyBindingsHeader',\n}\n\n/**\n * @enum {string}\n */\nconst UiStrings = {\n KeyBindings: 'KeyBindings',\n Command: 'Command',\n When: 'When',\n Key: 'Key',\n EmptyString: '',\n SearchKeyBindings: 'Search Key Bindings',\n}\n\nconst kbdDom = kbd(\n {\n className: ClassNames.Key,\n },\n 1\n)\n\n// TODO needing childCount variable everywhere can be error prone\nconst getKeyBindingCellChildren = (keyBinding) => {\n const children = []\n let childCount = 0\n if (keyBinding.isCtrl) {\n childCount += 2\n children.push(kbdDom, text('Ctrl'), text('+'))\n }\n if (keyBinding.isShift) {\n childCount += 2\n children.push(kbdDom, text('Shift'), text('+'))\n }\n childCount++\n children.push(kbdDom, text(keyBinding.key))\n return { children, childCount }\n}\n\nconst tableCellProps = {\n className: ClassNames.KeyBindingsTableCell,\n}\n\nconst tableCell = td(tableCellProps, 1)\n\nconst getRowClassName = (isEven, selected) => {\n let className = ''\n if (isEven) {\n className += 'KeyBindingsTableRowEven'\n } else {\n className += 'KeyBindingsTableRowOdd'\n }\n if (selected) {\n className += ' KeyBindingsTableRowSelected'\n }\n return className\n}\n\nconst getTableRowDom = (keyBinding) => {\n const { children, childCount } = getKeyBindingCellChildren(keyBinding)\n const { rowIndex, selected } = keyBinding\n const isEven = rowIndex % 2 === 0\n const className = getRowClassName(isEven, selected)\n return [\n tr(\n {\n ariaRowIndex: keyBinding.rowIndex,\n className,\n },\n 3\n ),\n tableCell,\n text(keyBinding.command),\n td(tableCellProps, childCount),\n ...children,\n tableCell,\n text(keyBinding.when || UiStrings.EmptyString),\n ]\n}\n\nconst tableHead = thead(\n {\n className: ClassNames.KeyBindingsTableHead,\n },\n 1\n)\n\nconst tableHeadRow = tr(\n {\n className: ClassNames.KeyBindingsTableRow,\n ariaRowIndex: 1,\n },\n 3\n)\n\nconst tableHeading = th(tableCellProps, 1)\n\nconst tableHeadDom = [\n tableHead,\n tableHeadRow,\n tableHeading,\n text(UiStrings.Command),\n tableHeading,\n text(UiStrings.Key),\n tableHeading,\n text(UiStrings.When),\n]\n\nconst getTableBodyDom = (displayKeyBindings) => {\n return [\n tbody(\n {\n className: ClassNames.KeyBindingsTableBody,\n },\n displayKeyBindings.length\n ),\n ...displayKeyBindings.flatMap(getTableRowDom),\n ]\n}\n\nconst getTableDom = (filteredKeyBindings, displayKeyBindings) => {\n const tableDom = [\n table(\n {\n className: ClassNames.KeyBindingsTable,\n ariaLabel: UiStrings.KeyBindings,\n ariaRowCount: filteredKeyBindings.length,\n },\n 2\n ),\n ...tableHeadDom,\n ...getTableBodyDom(displayKeyBindings),\n ]\n return tableDom\n}\n\nconst getVisible = (filteredKeyBindings, minLineY, maxLineY, selectedIndex) => {\n const visibleKeyBindings = []\n const slicedKeyBindings = filteredKeyBindings.slice(minLineY, maxLineY)\n for (let i = 0; i < slicedKeyBindings.length; i++) {\n const slicedKeyBinding = slicedKeyBindings[i]\n visibleKeyBindings.push({\n rowIndex: minLineY + i + 2,\n isCtrl: slicedKeyBinding.isCtrl,\n isShift: slicedKeyBinding.isShift,\n key: slicedKeyBinding.key,\n when: slicedKeyBinding.when,\n command: slicedKeyBinding.command,\n selected: i === selectedIndex,\n })\n }\n return visibleKeyBindings\n}\n\n// const getDom = () => {\n// return [\n// div({}, 2),\n// div({ className: ClassNames.KeyBindingsHeader }, 1),\n// input(\n// {\n// type: 'search',\n// placeholder: UiStrings.SearchKeyBindings,\n// on: {\n// input: 'ViewletKeyBindings.handleInput',\n// },\n// },\n// 0\n// ),\n// ]\n// }\n\nconst renderKeyBindings = {\n isEqual(oldState, newState) {\n return (\n oldState.filteredKeyBindings === newState.filteredKeyBindings &&\n oldState.minLineY === newState.minLineY &&\n oldState.maxLineY === newState.maxLineY &&\n oldState.selectedIndex === newState.selectedIndex &&\n oldState.focusedIndex === newState.focusedIndex\n )\n },\n apply(oldState, newState) {\n const { filteredKeyBindings, minLineY, maxLineY, selectedIndex } = newState\n const displayKeyBindings = getVisible(\n filteredKeyBindings,\n minLineY,\n maxLineY,\n selectedIndex\n )\n // TODO do dom diffing for faster incremental updates, e.g. when scrolling\n // console.time('tableDom')\n const tableDom = getTableDom(filteredKeyBindings, displayKeyBindings)\n // console.timeEnd('tableDom')\n // console.log({ tableDom })\n return [/* method */ 'setTableDom', /* tableDom */ tableDom]\n },\n}\n\nconst renderValue = {\n isEqual(oldState, newState) {\n return oldState.value === newState.value\n },\n apply(oldState, newState) {\n return [/* method */ 'setValue', /* setValue */ newState.value]\n },\n}\n\nconst renderNoResults = {\n isEqual(oldState, newState) {\n return (\n oldState.value === newState.value &&\n newState.filteredKeyBindings.length === 0\n )\n },\n apply(oldState, newState) {\n const message =\n newState.filteredKeyBindings.length === 0 ? 'No Results found' : ''\n return [\n /* Viewlet.ariaAnnounce */ 'Viewlet.ariaAnnounce',\n /* message */ message,\n ]\n },\n}\n\nconst renderScrollBar = {\n isEqual(oldState, newState) {\n return (\n oldState.negativeMargin === newState.negativeMargin &&\n oldState.deltaY === newState.deltaY &&\n oldState.height === newState.height &&\n oldState.finalDeltaY === newState.finalDeltaY\n )\n },\n apply(oldState, newState) {\n const scrollBarY = ScrollBarFunctions.getScrollBarY(\n newState.deltaY,\n newState.finalDeltaY,\n newState.height,\n newState.scrollBarHeight\n )\n return [\n /* method */ 'setScrollBar',\n /* scrollBarY */ scrollBarY,\n /* scrollBarHeight */ newState.scrollBarHeight,\n ]\n },\n}\n\nexport const render = [\n renderKeyBindings,\n renderValue,\n renderNoResults,\n renderScrollBar,\n]\n", "// Based on VS Code's KeyBindings Editor (License MIT):\n// see https://github.com/microsoft/vscode/blob/6a5e3aad96929a7d35e09ed8d22e87a72bd16ff6/src/vs/workbench/services/preferences/browser/keybindingsEditorModel.ts\n// see https://github.com/microsoft/vscode/blob/6a5e3aad96929a7d35e09ed8d22e87a72bd16ff6/src/vs/workbench/contrib/preferences/browser/keybindingsEditor.ts\n\nimport * as FilterKeyBindings from '../FilterKeyBindings/FilterKeyBindings.js'\nimport * as KeyBindingsInitial from '../KeyBindingsInitial/KeyBindingsInitial.js'\nimport * as ParseKeyBindings from '../ParseKeyBindings/ParseKeyBindings.js'\nimport * as ScrollBarFunctions from '../ScrollBarFunctions/ScrollBarFunctions.js'\nimport * as ViewletModuleId from '../ViewletModuleId/ViewletModuleId.js'\n\nexport const create = (id, uri, left, top, width, height) => {\n return {\n parsedKeyBindings: [],\n filteredKeyBindings: [],\n minLineY: 0,\n maxLineY: 0,\n maxVisibleItems: 0,\n rowHeight: 24,\n top,\n left,\n width,\n height,\n value: '',\n selectedIndex: -1,\n focusedIndex: -1,\n finalDeltaY: 0,\n deltaY: 0,\n uri,\n }\n}\n\nexport const saveState = (state) => {\n const { value } = state\n return {\n value,\n }\n}\n\nconst getSavedValue = (savedState) => {\n if (savedState && savedState.value) {\n return savedState.value\n }\n return ''\n}\n\nconst getMaxVisibleItems = (\n height,\n searchHeaderHeight,\n tableHeaderHeight,\n rowHeight\n) => {\n return Math.floor(\n (height - searchHeaderHeight - tableHeaderHeight) / rowHeight\n )\n}\n\nexport const loadContent = async (state, savedState) => {\n const { height, rowHeight } = state\n const keyBindings = await KeyBindingsInitial.getKeyBindings()\n const parsedKeyBindings = ParseKeyBindings.parseKeyBindings(keyBindings)\n const searchHeaderHeight = 50\n const tableHeaderHeight = 24\n const maxVisibleItems = getMaxVisibleItems(\n height,\n searchHeaderHeight,\n tableHeaderHeight,\n rowHeight\n )\n const savedValue = getSavedValue(savedState)\n const filteredKeyBindings = FilterKeyBindings.getFilteredKeyBindings(\n parsedKeyBindings,\n savedValue\n )\n const listHeight = height - searchHeaderHeight - tableHeaderHeight\n const contentHeight = 2121\n const scrollBarHeight = ScrollBarFunctions.getScrollBarHeight(\n listHeight,\n contentHeight,\n 10\n )\n const maxLineY = Math.min(filteredKeyBindings.length, maxVisibleItems)\n const finalDeltaY = Math.max(contentHeight - listHeight, 0)\n return {\n ...state,\n parsedKeyBindings,\n filteredKeyBindings,\n maxLineY,\n maxVisibleItems,\n value: savedValue,\n scrollBarHeight,\n finalDeltaY,\n }\n}\n\nexport const handleInput = (state, value) => {\n const { parsedKeyBindings, maxVisibleItems } = state\n const filteredKeyBindings = FilterKeyBindings.getFilteredKeyBindings(\n parsedKeyBindings,\n value\n )\n const maxLineY = Math.min(filteredKeyBindings.length, maxVisibleItems)\n return {\n ...state,\n value,\n filteredKeyBindings,\n maxLineY,\n }\n}\n\nexport const setDeltaY = (state, deltaY) => {\n const { maxVisibleItems, rowHeight, filteredKeyBindings } = state\n const tableHeight = maxVisibleItems * rowHeight\n const minDeltaY = 0\n const maxDeltaY = Math.max(\n filteredKeyBindings.length * rowHeight - tableHeight,\n 0\n )\n if (deltaY < minDeltaY) {\n deltaY = minDeltaY\n } else if (deltaY > maxDeltaY) {\n deltaY = Math.max(maxDeltaY)\n }\n const minLineY = Math.floor(deltaY / rowHeight)\n const maxLineY = minLineY + Math.round(tableHeight / rowHeight)\n return {\n ...state,\n deltaY,\n minLineY,\n maxLineY,\n }\n}\n\nexport const handleWheel = (state, deltaY) => {\n return setDeltaY(state, state.deltaY + deltaY)\n}\n\nexport const handleClick = (state, index) => {\n const { minLineY } = state\n const selectedIndex = minLineY + index\n return {\n ...state,\n focusedIndex: selectedIndex,\n selectedIndex,\n }\n}\n\nexport const hasFunctionalRender = true\n\nexport * from './ViewletKeyBindingsRender.js'\n", "import * as ViewletKeyBindings from './ViewletKeyBindings.js'\n\nexport const name = 'KeyBindings'\n\n// prettier-ignore\nexport const Commands = {\n handleClick:ViewletKeyBindings.handleClick,\n handleInput:ViewletKeyBindings.handleInput,\n handleWheel:ViewletKeyBindings.handleWheel,\n}\n\nexport const Css = '/css/parts/ViewletKeyBindings.css'\n\nexport * from './ViewletKeyBindings.js'\n", "export const findMatches = (lines, searchString) => {\n const { length } = lines\n const matches = []\n const searchStringLength = searchString.length\n for (let i = 0; i < length; i++) {\n const line = lines[i]\n let lastMatchIndex = -searchStringLength\n while (\n (lastMatchIndex = line.indexOf(\n searchString,\n lastMatchIndex + searchStringLength\n )) !== -1\n ) {\n matches.push(i, lastMatchIndex)\n }\n }\n return new Uint32Array(matches)\n}\n\nexport const findNextMatch = (lines, searchString, startRowIndex) => {\n const { length } = lines\n for (let i = startRowIndex; i < length; i++) {\n const line = lines[i]\n const index = line.indexOf(searchString)\n if (index !== -1) {\n return {\n rowIndex: i,\n columnIndex: index,\n }\n }\n }\n return {\n rowIndex: 0,\n columnIndex: 0,\n }\n}\n\nexport const findPreviousMatch = (lines, searchString, startRowIndex) => {\n for (let i = startRowIndex; i >= 0; i--) {\n const line = lines[i]\n const index = line.indexOf(searchString)\n if (index !== -1) {\n return {\n rowIndex: i,\n columnIndex: index,\n }\n }\n }\n return {\n rowIndex: 0,\n columnIndex: 0,\n }\n}\n", "import * as Command from '../Command/Command.js'\nimport * as I18nString from '../I18NString/I18NString.js'\nimport * as TextDocumentSearch from '../TextDocumentSearch/TextDocumentSearch.js'\nimport * as ViewletModuleId from '../ViewletModuleId/ViewletModuleId.js'\nimport * as ViewletStates from '../ViewletStates/ViewletStates.js'\n\n/**\n * @enum {string}\n */\nconst UiStrings = {\n MatchesFoundFor: `{PH1} of {PH2} found for {PH3}`,\n MatchOf: `{PH1} of {PH2}`,\n NoResults: 'No Results',\n}\n\nexport const create = () => {\n return {\n value: '',\n ariaAnnouncement: '',\n matches: new Uint32Array(),\n matchIndex: 0,\n matchCount: 0,\n }\n}\n\nexport const getPosition = () => {\n const editor = ViewletStates.getState('EditorText')\n if (!editor) {\n return {\n top: 0,\n left: 0,\n width: 0,\n height: 0,\n }\n }\n const width = 300\n const height = 30\n const paddingTop = 10\n const paddingRight = 20\n const left = editor.left + editor.width - width - paddingRight\n const top = editor.top + paddingTop\n return {\n top,\n left,\n width,\n height,\n }\n}\n\nconst getMatchCount = (matches) => {\n return matches.length / 2\n}\n\nexport const loadContent = (state) => {\n const editor = ViewletStates.getState('EditorText')\n if (!editor) {\n return state\n }\n const { selections, lines } = editor\n const startRowIndex = selections[0]\n const startColumnIndex = selections[1]\n const endRowIndex = selections[2]\n const endColumnIndex = selections[3]\n const line = lines[startRowIndex]\n const value = line.slice(startColumnIndex, endColumnIndex)\n const matches = TextDocumentSearch.findMatches(lines, value)\n const matchCount = getMatchCount(matches)\n return {\n ...state,\n value,\n matches,\n matchIndex: 0,\n matchCount,\n }\n}\n\nexport const handleInput = (state, value) => {\n // TODO get focused editor\n // highlight locations that match value\n const editor = ViewletStates.getState('EditorText')\n const { lines } = editor\n const matches = TextDocumentSearch.findMatches(lines, value)\n const matchCount = getMatchCount(matches)\n return {\n ...state,\n matches,\n matchIndex: 0,\n matchCount,\n value,\n }\n}\n\n// TODO this function should be synchronous\nexport const focusIndex = async (state, index) => {\n const { value, matches, matchIndex } = state\n if (index === matchIndex) {\n return state\n }\n // TODO find next match and highlight it\n const matchRowIndex = matches[index * 2]\n const matchColumnIndex = matches[index * 2 + 1]\n const newSelections = new Uint32Array([\n matchRowIndex,\n matchColumnIndex,\n matchRowIndex,\n matchColumnIndex + value.length,\n ])\n // TODO set selections synchronously and render input match index,\n // input value and new selections at the same time\n await Command.execute('Editor.setSelections', newSelections)\n return {\n ...state,\n matchIndex: index,\n }\n}\n\nexport const focusFirst = (state) => {\n return focusIndex(state, 0)\n}\n\nexport const focusLast = (state) => {\n const { matchCount } = state\n return focusIndex(state, matchCount - 1)\n}\n\nexport const focusNext = (state) => {\n const { matchIndex, matchCount } = state\n if (matchIndex === matchCount - 1) {\n return focusFirst(state)\n }\n return focusIndex(state, matchIndex + 1)\n}\n\nexport const focusPrevious = (state) => {\n const { matchIndex } = state\n if (matchIndex === 0) {\n return focusLast(state)\n }\n return focusIndex(state, matchIndex - 1)\n}\n\nexport const hasFunctionalRender = true\n\nconst renderValue = {\n isEqual(oldState, newState) {\n return oldState.value === newState.value\n },\n apply(oldState, newState) {\n return [\n /* Viewlet.invoke */ 'Viewlet.send',\n /* id */ ViewletModuleId.FindWidget,\n /* method */ 'setValue',\n /* value */ newState.value,\n ]\n },\n}\n\nconst getMatchCountText = (matchIndex, matchCount) => {\n if (matchCount === 0) {\n return I18nString.i18nString(UiStrings.NoResults)\n }\n return I18nString.i18nString(UiStrings.MatchOf, {\n PH1: matchIndex + 1,\n PH2: matchCount,\n })\n}\n\nconst renderMatchCount = {\n isEqual(oldState, newState) {\n return (\n oldState.matchIndex === newState.matchIndex &&\n oldState.matchCount === newState.matchCount\n )\n },\n apply(oldState, newState) {\n const matchCountText = getMatchCountText(\n newState.matchIndex,\n newState.matchCount\n )\n return [/* method */ 'setMatchCountText', /* value */ matchCountText]\n },\n}\n\nconst renderButtonsEnabled = {\n isEqual(oldState, newState) {\n return oldState.matchCount === newState.matchCount\n },\n apply(oldState, newState) {\n const enabled = newState.matchCount > 0\n return [/* method */ 'setButtonsEnabled', /* enabled */ enabled]\n },\n}\n\nconst getAriaLabel = (state) => {\n const { matchIndex, matchCount, value } = state\n return I18nString.i18nString(UiStrings.MatchesFoundFor, {\n PH1: matchIndex,\n PH2: matchCount,\n PH3: value,\n })\n}\n\nconst renderAriaAnnouncement = {\n isEqual(oldState, newState) {\n return (\n oldState.ariaAnnouncement === newState.ariaAnnouncement &&\n oldState.matchIndex === newState.matchIndex &&\n oldState.matchCount === newState.matchCount &&\n oldState.value === newState.value\n )\n },\n apply(oldState, newState) {\n const ariaLabel = getAriaLabel(newState)\n return [/* Viewlet.invoke */ 'Viewlet.ariaAnnounce', /* text */ ariaLabel]\n },\n}\n\nexport const render = [\n renderValue,\n renderMatchCount,\n renderAriaAnnouncement,\n renderButtonsEnabled,\n]\n", "import * as ViewletFindWidget from './ViewletFindWidget.js'\n\nexport const name = 'FindWidget'\n\n// prettier-ignore\nexport const Commands = {\n focusNext: ViewletFindWidget.focusNext,\n focusPrevious: ViewletFindWidget.focusPrevious,\n handleInput: ViewletFindWidget.handleInput,\n}\n\nexport const Css = [\n '/css/parts/ViewletFindWidget.css',\n '/css/parts/IconButton.css',\n '/css/parts/MaskIcon.css',\n '/css/parts/InputBox.css',\n]\n\nexport * from './ViewletFindWidget.js'\n", "function getDefaults() {\n return {\n async: false,\n baseUrl: null,\n breaks: false,\n extensions: null,\n gfm: true,\n headerIds: true,\n headerPrefix: \"\",\n highlight: null,\n langPrefix: \"language-\",\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartLists: false,\n smartypants: false,\n tokenizer: null,\n walkTokens: null,\n xhtml: false\n };\n}\nlet defaults = getDefaults();\nfunction changeDefaults(newDefaults) {\n defaults = newDefaults;\n}\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = /[&<>\"']/g;\nconst escapeTestNoEncode = /[<>\"']|&(?!#?\\w+;)/;\nconst escapeReplaceNoEncode = /[<>\"']|&(?!#?\\w+;)/g;\nconst escapeReplacements = {\n \"&\": \"&amp;\",\n \"<\": \"&lt;\",\n \">\": \"&gt;\",\n '\"': \"&quot;\",\n \"'\": \"&#39;\"\n};\nconst getEscapeReplacement = (ch) => escapeReplacements[ch];\nfunction escape(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n return html;\n}\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\nfunction unescape(html) {\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === \"colon\")\n return \":\";\n if (n.charAt(0) === \"#\") {\n return n.charAt(1) === \"x\" ? String.fromCharCode(parseInt(n.substring(2), 16)) : String.fromCharCode(+n.substring(1));\n }\n return \"\";\n });\n}\nconst caret = /(^|[^\\[])\\^/g;\nfunction edit(regex, opt) {\n regex = typeof regex === \"string\" ? regex : regex.source;\n opt = opt || \"\";\n const obj = {\n replace: (name, val) => {\n val = val.source || val;\n val = val.replace(caret, \"$1\");\n regex = regex.replace(name, val);\n return obj;\n },\n getRegex: () => {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n}\nconst nonWordAndColonTest = /[^\\w:]/g;\nconst originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\nfunction cleanUrl(sanitize, base, href) {\n if (sanitize) {\n let prot;\n try {\n prot = decodeURIComponent(unescape(href)).replace(nonWordAndColonTest, \"\").toLowerCase();\n } catch (e) {\n return null;\n }\n if (prot.indexOf(\"javascript:\") === 0 || prot.indexOf(\"vbscript:\") === 0 || prot.indexOf(\"data:\") === 0) {\n return null;\n }\n }\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n try {\n href = encodeURI(href).replace(/%25/g, \"%\");\n } catch (e) {\n return null;\n }\n return href;\n}\nconst baseUrls = {};\nconst justDomain = /^[^:]+:\\/*[^/]*$/;\nconst protocol = /^([^:]+:)[\\s\\S]*$/;\nconst domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\nfunction resolveUrl(base, href) {\n if (!baseUrls[\" \" + base]) {\n if (justDomain.test(base)) {\n baseUrls[\" \" + base] = base + \"/\";\n } else {\n baseUrls[\" \" + base] = rtrim(base, \"/\", true);\n }\n }\n base = baseUrls[\" \" + base];\n const relativeBase = base.indexOf(\":\") === -1;\n if (href.substring(0, 2) === \"//\") {\n if (relativeBase) {\n return href;\n }\n return base.replace(protocol, \"$1\") + href;\n } else if (href.charAt(0) === \"/\") {\n if (relativeBase) {\n return href;\n }\n return base.replace(domain, \"$1\") + href;\n } else {\n return base + href;\n }\n}\nconst noopTest = {exec: function noopTest2() {\n}};\nfunction merge(obj) {\n let i = 1, target, key;\n for (; i < arguments.length; i++) {\n target = arguments[i];\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n return obj;\n}\nfunction splitCells(tableRow, count) {\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false, curr = offset;\n while (--curr >= 0 && str[curr] === \"\\\\\")\n escaped = !escaped;\n if (escaped) {\n return \"|\";\n } else {\n return \" |\";\n }\n }), cells = row.split(/ \\|/);\n let i = 0;\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count)\n cells.push(\"\");\n }\n for (; i < cells.length; i++) {\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, \"|\");\n }\n return cells;\n}\nfunction rtrim(str, c, invert) {\n const l = str.length;\n if (l === 0) {\n return \"\";\n }\n let suffLen = 0;\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n return str.slice(0, l - suffLen);\n}\nfunction findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n const l = str.length;\n let level = 0, i = 0;\n for (; i < l; i++) {\n if (str[i] === \"\\\\\") {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\nfunction checkSanitizeDeprecation(opt) {\n if (opt && opt.sanitize && !opt.silent) {\n console.warn(\"marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options\");\n }\n}\nfunction repeatString(pattern, count) {\n if (count < 1) {\n return \"\";\n }\n let result = \"\";\n while (count > 1) {\n if (count & 1) {\n result += pattern;\n }\n count >>= 1;\n pattern += pattern;\n }\n return result + pattern;\n}\nfunction outputLink(cap, link, raw, lexer2) {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, \"$1\");\n if (cap[0].charAt(0) !== \"!\") {\n lexer2.state.inLink = true;\n const token = {\n type: \"link\",\n raw,\n href,\n title,\n text,\n tokens: lexer2.inlineTokens(text)\n };\n lexer2.state.inLink = false;\n return token;\n }\n return {\n type: \"image\",\n raw,\n href,\n title,\n text: escape(text)\n };\n}\nfunction indentCodeCompensation(raw, text) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n if (matchIndentToCode === null) {\n return text;\n }\n const indentToCode = matchIndentToCode[1];\n return text.split(\"\\n\").map((node) => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n const [indentInNode] = matchIndentInNode;\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n return node;\n }).join(\"\\n\");\n}\nclass Tokenizer {\n constructor(options2) {\n this.options = options2 || defaults;\n }\n space(src) {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: \"space\",\n raw: cap[0]\n };\n }\n }\n code(src) {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, \"\");\n return {\n type: \"code\",\n raw: cap[0],\n codeBlockStyle: \"indented\",\n text: !this.options.pedantic ? rtrim(text, \"\\n\") : text\n };\n }\n }\n fences(src) {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || \"\");\n return {\n type: \"code\",\n raw,\n lang: cap[2] ? cap[2].trim() : cap[2],\n text\n };\n }\n }\n heading(src) {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, \"#\");\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || / $/.test(trimmed)) {\n text = trimmed.trim();\n }\n }\n return {\n type: \"heading\",\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n hr(src) {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: \"hr\",\n raw: cap[0]\n };\n }\n }\n blockquote(src) {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ *>[ \\t]?/gm, \"\");\n return {\n type: \"blockquote\",\n raw: cap[0],\n tokens: this.lexer.blockTokens(text, []),\n text\n };\n }\n }\n list(src) {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let raw, istask, ischecked, indent, i, blankLine, endsWithBlankLine, line, nextLine, rawLine, itemContents, endEarly;\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n const list = {\n type: \"list\",\n raw: \"\",\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : \"\",\n loose: false,\n items: []\n };\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n if (this.options.pedantic) {\n bull = isordered ? bull : \"[*+-]\";\n }\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\t ][^\\\\n]*)?(?:\\\\n|$))`);\n while (src) {\n endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n if (this.rules.block.hr.test(src)) {\n break;\n }\n raw = cap[0];\n src = src.substring(raw.length);\n line = cap[2].split(\"\\n\", 1)[0];\n nextLine = src.split(\"\\n\", 1)[0];\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimLeft();\n } else {\n indent = cap[2].search(/[^ ]/);\n indent = indent > 4 ? 1 : indent;\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n blankLine = false;\n if (!line && /^ *$/.test(nextLine)) {\n raw += nextLine + \"\\n\";\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?: [^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n while (src) {\n rawLine = src.split(\"\\n\", 1)[0];\n line = rawLine;\n if (this.options.pedantic) {\n line = line.replace(/^ {1,4}(?=( {4})*[^ ])/g, \" \");\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (nextBulletRegex.test(line)) {\n break;\n }\n if (hrRegex.test(src)) {\n break;\n }\n if (line.search(/[^ ]/) >= indent || !line.trim()) {\n itemContents += \"\\n\" + line.slice(indent);\n } else if (!blankLine) {\n itemContents += \"\\n\" + line;\n } else {\n break;\n }\n if (!blankLine && !line.trim()) {\n blankLine = true;\n }\n raw += rawLine + \"\\n\";\n src = src.substring(rawLine.length + 1);\n }\n }\n if (!list.loose) {\n if (endsWithBlankLine) {\n list.loose = true;\n } else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== \"[ ] \";\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, \"\");\n }\n }\n list.items.push({\n type: \"list_item\",\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents\n });\n list.raw += raw;\n }\n list.items[list.items.length - 1].raw = raw.trimRight();\n list.items[list.items.length - 1].text = itemContents.trimRight();\n list.raw = list.raw.trimRight();\n const l = list.items.length;\n for (i = 0; i < l; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n const spacers = list.items[i].tokens.filter((t) => t.type === \"space\");\n const hasMultipleLineBreaks = spacers.every((t) => {\n const chars = t.raw.split(\"\");\n let lineBreaks = 0;\n for (const char of chars) {\n if (char === \"\\n\") {\n lineBreaks += 1;\n }\n if (lineBreaks > 1) {\n return true;\n }\n }\n return false;\n });\n if (!list.loose && spacers.length && hasMultipleLineBreaks) {\n list.loose = true;\n list.items[i].loose = true;\n }\n }\n return list;\n }\n }\n html(src) {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token = {\n type: \"html\",\n raw: cap[0],\n pre: !this.options.sanitizer && (cap[1] === \"pre\" || cap[1] === \"script\" || cap[1] === \"style\"),\n text: cap[0]\n };\n if (this.options.sanitize) {\n const text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);\n token.type = \"paragraph\";\n token.text = text;\n token.tokens = this.lexer.inline(text);\n }\n return token;\n }\n }\n def(src) {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n if (cap[3])\n cap[3] = cap[3].substring(1, cap[3].length - 1);\n const tag = cap[1].toLowerCase().replace(/\\s+/g, \" \");\n return {\n type: \"def\",\n tag,\n raw: cap[0],\n href: cap[2],\n title: cap[3]\n };\n }\n }\n table(src) {\n const cap = this.rules.block.table.exec(src);\n if (cap) {\n const item = {\n type: \"table\",\n header: splitCells(cap[1]).map((c) => {\n return {text: c};\n }),\n align: cap[2].replace(/^ *|\\| *$/g, \"\").split(/ *\\| */),\n rows: cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, \"\").split(\"\\n\") : []\n };\n if (item.header.length === item.align.length) {\n item.raw = cap[0];\n let l = item.align.length;\n let i, j, k, row;\n for (i = 0; i < l; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = \"right\";\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = \"center\";\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = \"left\";\n } else {\n item.align[i] = null;\n }\n }\n l = item.rows.length;\n for (i = 0; i < l; i++) {\n item.rows[i] = splitCells(item.rows[i], item.header.length).map((c) => {\n return {text: c};\n });\n }\n l = item.header.length;\n for (j = 0; j < l; j++) {\n item.header[j].tokens = this.lexer.inline(item.header[j].text);\n }\n l = item.rows.length;\n for (j = 0; j < l; j++) {\n row = item.rows[j];\n for (k = 0; k < row.length; k++) {\n row[k].tokens = this.lexer.inline(row[k].text);\n }\n }\n return item;\n }\n }\n }\n lheading(src) {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: \"heading\",\n raw: cap[0],\n depth: cap[2].charAt(0) === \"=\" ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n paragraph(src) {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === \"\\n\" ? cap[1].slice(0, -1) : cap[1];\n return {\n type: \"paragraph\",\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n text(src) {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: \"text\",\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n escape(src) {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: \"escape\",\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n }\n tag(src) {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^<a /i.test(cap[0])) {\n this.lexer.state.inLink = true;\n } else if (this.lexer.state.inLink && /^<\\/a>/i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n return {\n type: this.options.sanitize ? \"text\" : \"html\",\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n text: this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]) : cap[0]\n };\n }\n }\n link(src) {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^</.test(trimmedUrl)) {\n if (!/>$/.test(trimmedUrl)) {\n return;\n }\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), \"\\\\\");\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n const lastParenIndex = findClosingBracket(cap[2], \"()\");\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf(\"!\") === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = \"\";\n }\n }\n let href = cap[2];\n let title = \"\";\n if (this.options.pedantic) {\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n if (link) {\n href = link[1];\n title = link[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : \"\";\n }\n href = href.trim();\n if (/^</.test(href)) {\n if (this.options.pedantic && !/>$/.test(trimmedUrl)) {\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, \"$1\") : href,\n title: title ? title.replace(this.rules.inline._escapes, \"$1\") : title\n }, cap[0], this.lexer);\n }\n }\n reflink(src, links) {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src)) || (cap = this.rules.inline.nolink.exec(src))) {\n let link = (cap[2] || cap[1]).replace(/\\s+/g, \" \");\n link = links[link.toLowerCase()];\n if (!link || !link.href) {\n const text = cap[0].charAt(0);\n return {\n type: \"text\",\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n emStrong(src, maskedSrc, prevChar = \"\") {\n let match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match)\n return;\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u))\n return;\n const nextChar = match[1] || match[2] || \"\";\n if (!nextChar || nextChar && (prevChar === \"\" || this.rules.inline.punctuation.exec(prevChar))) {\n const lLength = match[0].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n const endReg = match[0][0] === \"*\" ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0;\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n if (!rDelim)\n continue;\n rLength = rDelim.length;\n if (match[3] || match[4]) {\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) {\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue;\n }\n }\n delimTotal -= rLength;\n if (delimTotal > 0)\n continue;\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n if (Math.min(lLength, rLength) % 2) {\n const text2 = src.slice(1, lLength + match.index + rLength);\n return {\n type: \"em\",\n raw: src.slice(0, lLength + match.index + rLength + 1),\n text: text2,\n tokens: this.lexer.inlineTokens(text2)\n };\n }\n const text = src.slice(2, lLength + match.index + rLength - 1);\n return {\n type: \"strong\",\n raw: src.slice(0, lLength + match.index + rLength + 1),\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n codespan(src) {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, \" \");\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: \"codespan\",\n raw: cap[0],\n text\n };\n }\n }\n br(src) {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: \"br\",\n raw: cap[0]\n };\n }\n }\n del(src) {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: \"del\",\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n autolink(src, mangle2) {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === \"@\") {\n text = escape(this.options.mangle ? mangle2(cap[1]) : cap[1]);\n href = \"mailto:\" + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n return {\n type: \"link\",\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: \"text\",\n raw: text,\n text\n }\n ]\n };\n }\n }\n url(src, mangle2) {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === \"@\") {\n text = escape(this.options.mangle ? mangle2(cap[0]) : cap[0]);\n href = \"mailto:\" + text;\n } else {\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === \"www.\") {\n href = \"http://\" + text;\n } else {\n href = text;\n }\n }\n return {\n type: \"link\",\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: \"text\",\n raw: text,\n text\n }\n ]\n };\n }\n }\n inlineText(src, smartypants2) {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]) : cap[0];\n } else {\n text = escape(this.options.smartypants ? smartypants2(cap[0]) : cap[0]);\n }\n return {\n type: \"text\",\n raw: cap[0],\n text\n };\n }\n }\n}\nconst block = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*\\n)|~{3,})([^\\n]*)\\n(?:|([\\s\\S]*?)\\n)(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n hr: /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/,\n html: \"^ {0,3}(?:<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)|comment[^\\\\n]*(\\\\n+|$)|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)|<![A-Z][\\\\s\\\\S]*?(?:>\\\\n*|$)|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>\\\\n*|$)|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)|</(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$))\",\n def: /^ {0,3}\\[(label)\\]: *(?:\\n *)?<?([^\\s>]+)>?(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,\n table: noopTest,\n lheading: /^([^\\n]+)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\nblock._label = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def).replace(\"label\", block._label).replace(\"title\", block._title).getRegex();\nblock.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nblock.listItemStart = edit(/^( *)(bull) */).replace(\"bull\", block.bullet).getRegex();\nblock.list = edit(block.list).replace(/bull/g, block.bullet).replace(\"hr\", \"\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))\").replace(\"def\", \"\\\\n+(?=\" + block.def.source + \")\").getRegex();\nblock._tag = \"address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul\";\nblock._comment = /<!--(?!-?>)[\\s\\S]*?(?:-->|$)/;\nblock.html = edit(block.html, \"i\").replace(\"comment\", block._comment).replace(\"tag\", block._tag).replace(\"attribute\", / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/).getRegex();\nblock.paragraph = edit(block._paragraph).replace(\"hr\", block.hr).replace(\"heading\", \" {0,3}#{1,6} \").replace(\"|lheading\", \"\").replace(\"|table\", \"\").replace(\"blockquote\", \" {0,3}>\").replace(\"fences\", \" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\", \" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\", \"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\", block._tag).getRegex();\nblock.blockquote = edit(block.blockquote).replace(\"paragraph\", block.paragraph).getRegex();\nblock.normal = merge({}, block);\nblock.gfm = merge({}, block.normal, {\n table: \"^ *([^\\\\n ].*\\\\|.*)\\\\n {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)(?:\\\\| *)?(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)\"\n});\nblock.gfm.table = edit(block.gfm.table).replace(\"hr\", block.hr).replace(\"heading\", \" {0,3}#{1,6} \").replace(\"blockquote\", \" {0,3}>\").replace(\"code\", \" {4}[^\\\\n]\").replace(\"fences\", \" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\", \" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\", \"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\", block._tag).getRegex();\nblock.gfm.paragraph = edit(block._paragraph).replace(\"hr\", block.hr).replace(\"heading\", \" {0,3}#{1,6} \").replace(\"|lheading\", \"\").replace(\"table\", block.gfm.table).replace(\"blockquote\", \" {0,3}>\").replace(\"fences\", \" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\", \" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\", \"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\", block._tag).getRegex();\nblock.pedantic = merge({}, block.normal, {\n html: edit(`^ *(?:comment *(?:\\\\n|\\\\s*$)|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\\\s[^'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))`).replace(\"comment\", block._comment).replace(/tag/g, \"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b\").getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest,\n paragraph: edit(block.normal._paragraph).replace(\"hr\", block.hr).replace(\"heading\", \" *#{1,6} *[^\\n]\").replace(\"lheading\", block.lheading).replace(\"blockquote\", \" {0,3}>\").replace(\"|fences\", \"\").replace(\"|list\", \"\").replace(\"|html\", \"\").getRegex()\n});\nconst inline = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: \"^comment|^</[a-zA-Z][\\\\w:-]*\\\\s*>|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>|^<\\\\?[\\\\s\\\\S]*?\\\\?>|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>\",\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(ref)\\]/,\n nolink: /^!?\\[(ref)\\](?:\\[\\])?/,\n reflinkSearch: \"reflink|nolink(?!\\\\()\",\n emStrong: {\n lDelim: /^(?:\\*+(?:([punct_])|[^\\s*]))|^_+(?:([punct*])|([^\\s_]))/,\n rDelimAst: /^[^_*]*?\\_\\_[^_*]*?\\*[^_*]*?(?=\\_\\_)|[^*]+(?=[^*])|[punct_](\\*+)(?=[\\s]|$)|[^punct*_\\s](\\*+)(?=[punct_\\s]|$)|[punct_\\s](\\*+)(?=[^punct*_\\s])|[\\s](\\*+)(?=[punct_])|[punct_](\\*+)(?=[punct_])|[^punct*_\\s](\\*+)(?=[^punct*_\\s])/,\n rDelimUnd: /^[^_*]*?\\*\\*[^_*]*?\\_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|[punct*](\\_+)(?=[\\s]|$)|[^punct*_\\s](\\_+)(?=[punct*\\s]|$)|[punct*\\s](\\_+)(?=[^punct*_\\s])|[\\s](\\_+)(?=[punct*])|[punct*](\\_+)(?=[punct*])/\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/,\n punctuation: /^([\\spunctuation])/\n};\ninline._punctuation = \"!\\\"#$%&'()+\\\\-.,/:;<=>?@\\\\[\\\\]`^{|}~\";\ninline.punctuation = edit(inline.punctuation).replace(/punctuation/g, inline._punctuation).getRegex();\ninline.blockSkip = /\\[[^\\]]*?\\]\\([^\\)]*?\\)|`[^`]*?`|<[^>]*?>/g;\ninline.escapedEmSt = /\\\\\\*|\\\\_/g;\ninline._comment = edit(block._comment).replace(\"(?:-->|$)\", \"-->\").getRegex();\ninline.emStrong.lDelim = edit(inline.emStrong.lDelim).replace(/punct/g, inline._punctuation).getRegex();\ninline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst, \"g\").replace(/punct/g, inline._punctuation).getRegex();\ninline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd, \"g\").replace(/punct/g, inline._punctuation).getRegex();\ninline._escapes = /\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/g;\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink).replace(\"scheme\", inline._scheme).replace(\"email\", inline._email).getRegex();\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\ninline.tag = edit(inline.tag).replace(\"comment\", inline._comment).replace(\"attribute\", inline._attribute).getRegex();\ninline._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\ninline._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\ninline.link = edit(inline.link).replace(\"label\", inline._label).replace(\"href\", inline._href).replace(\"title\", inline._title).getRegex();\ninline.reflink = edit(inline.reflink).replace(\"label\", inline._label).replace(\"ref\", block._label).getRegex();\ninline.nolink = edit(inline.nolink).replace(\"ref\", block._label).getRegex();\ninline.reflinkSearch = edit(inline.reflinkSearch, \"g\").replace(\"reflink\", inline.reflink).replace(\"nolink\", inline.nolink).getRegex();\ninline.normal = merge({}, inline);\ninline.pedantic = merge({}, inline.normal, {\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/).replace(\"label\", inline._label).getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/).replace(\"label\", inline._label).getRegex()\n});\ninline.gfm = merge({}, inline.normal, {\n escape: edit(inline.escape).replace(\"])\", \"~|])\").getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|https?:\\/\\/|ftp:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)))/\n});\ninline.gfm.url = edit(inline.gfm.url, \"i\").replace(\"email\", inline.gfm._extended_email).getRegex();\ninline.breaks = merge({}, inline.gfm, {\n br: edit(inline.br).replace(\"{2,}\", \"*\").getRegex(),\n text: edit(inline.gfm.text).replace(\"\\\\b_\", \"\\\\b_| {2,}\\\\n\").replace(/\\{2,\\}/g, \"*\").getRegex()\n});\nfunction smartypants(text) {\n return text.replace(/---/g, \"\\u2014\").replace(/--/g, \"\\u2013\").replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, \"$1\\u2018\").replace(/'/g, \"\\u2019\").replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, \"$1\\u201C\").replace(/\"/g, \"\\u201D\").replace(/\\.{3}/g, \"\\u2026\");\n}\nfunction mangle(text) {\n let out = \"\", i, ch;\n const l = text.length;\n for (i = 0; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = \"x\" + ch.toString(16);\n }\n out += \"&#\" + ch + \";\";\n }\n return out;\n}\nclass Lexer {\n constructor(options2) {\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options2 || defaults;\n this.options.tokenizer = this.options.tokenizer || new Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n const rules = {\n block: block.normal,\n inline: inline.normal\n };\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n static get rules() {\n return {\n block,\n inline\n };\n }\n static lex(src, options2) {\n const lexer2 = new Lexer(options2);\n return lexer2.lex(src);\n }\n static lexInline(src, options2) {\n const lexer2 = new Lexer(options2);\n return lexer2.inlineTokens(src);\n }\n lex(src) {\n src = src.replace(/\\r\\n|\\r/g, \"\\n\");\n this.blockTokens(src, this.tokens);\n let next;\n while (next = this.inlineQueue.shift()) {\n this.inlineTokens(next.src, next.tokens);\n }\n return this.tokens;\n }\n blockTokens(src, tokens = []) {\n if (this.options.pedantic) {\n src = src.replace(/\\t/g, \" \").replace(/^ +$/gm, \"\");\n } else {\n src = src.replace(/^( *)(\\t+)/gm, (_, leading, tabs) => {\n return leading + \" \".repeat(tabs.length);\n });\n }\n let token, lastToken, cutSrc, lastParagraphClipped;\n while (src) {\n if (this.options.extensions && this.options.extensions.block && this.options.extensions.block.some((extTokenizer) => {\n if (token = extTokenizer.call({lexer: this}, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n tokens[tokens.length - 1].raw += \"\\n\";\n } else {\n tokens.push(token);\n }\n continue;\n }\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === \"paragraph\" || lastToken.type === \"text\")) {\n lastToken.raw += \"\\n\" + token.raw;\n lastToken.text += \"\\n\" + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === \"paragraph\" || lastToken.type === \"text\")) {\n lastToken.raw += \"\\n\" + token.raw;\n lastToken.text += \"\\n\" + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach(function(getStartIndex) {\n tempStart = getStartIndex.call({lexer: this}, tempSrc);\n if (typeof tempStart === \"number\" && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === \"paragraph\") {\n lastToken.raw += \"\\n\" + token.raw;\n lastToken.text += \"\\n\" + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n lastParagraphClipped = cutSrc.length !== src.length;\n src = src.substring(token.raw.length);\n continue;\n }\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === \"text\") {\n lastToken.raw += \"\\n\" + token.raw;\n lastToken.text += \"\\n\" + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = \"Infinite loop on byte: \" + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n this.state.top = true;\n return tokens;\n }\n inline(src, tokens = []) {\n this.inlineQueue.push({src, tokens});\n return tokens;\n }\n inlineTokens(src, tokens = []) {\n let token, lastToken, cutSrc;\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf(\"[\") + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + \"[\" + repeatString(\"a\", match[0].length - 2) + \"]\" + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + \"[\" + repeatString(\"a\", match[0].length - 2) + \"]\" + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n while ((match = this.tokenizer.rules.inline.escapedEmSt.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + \"++\" + maskedSrc.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);\n }\n while (src) {\n if (!keepPrevChar) {\n prevChar = \"\";\n }\n keepPrevChar = false;\n if (this.options.extensions && this.options.extensions.inline && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({lexer: this}, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === \"text\" && lastToken.type === \"text\") {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === \"text\" && lastToken.type === \"text\") {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.autolink(src, mangle)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach(function(getStartIndex) {\n tempStart = getStartIndex.call({lexer: this}, tempSrc);\n if (typeof tempStart === \"number\" && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== \"_\") {\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === \"text\") {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = \"Infinite loop on byte: \" + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n return tokens;\n }\n}\nclass Renderer {\n constructor(options2) {\n this.options = options2 || defaults;\n }\n code(code, infostring, escaped) {\n const lang = (infostring || \"\").match(/\\S*/)[0];\n if (this.options.highlight) {\n const out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n code = code.replace(/\\n$/, \"\") + \"\\n\";\n if (!lang) {\n return \"<pre><code>\" + (escaped ? code : escape(code, true)) + \"</code></pre>\\n\";\n }\n return '<pre><code class=\"' + this.options.langPrefix + escape(lang, true) + '\">' + (escaped ? code : escape(code, true)) + \"</code></pre>\\n\";\n }\n blockquote(quote) {\n return `<blockquote>\n${quote}</blockquote>\n`;\n }\n html(html) {\n return html;\n }\n heading(text, level, raw, slugger) {\n if (this.options.headerIds) {\n const id = this.options.headerPrefix + slugger.slug(raw);\n return `<h${level} id=\"${id}\">${text}</h${level}>\n`;\n }\n return `<h${level}>${text}</h${level}>\n`;\n }\n hr() {\n return this.options.xhtml ? \"<hr/>\\n\" : \"<hr>\\n\";\n }\n list(body, ordered, start) {\n const type = ordered ? \"ol\" : \"ul\", startatt = ordered && start !== 1 ? ' start=\"' + start + '\"' : \"\";\n return \"<\" + type + startatt + \">\\n\" + body + \"</\" + type + \">\\n\";\n }\n listitem(text) {\n return `<li>${text}</li>\n`;\n }\n checkbox(checked) {\n return \"<input \" + (checked ? 'checked=\"\" ' : \"\") + 'disabled=\"\" type=\"checkbox\"' + (this.options.xhtml ? \" /\" : \"\") + \"> \";\n }\n paragraph(text) {\n return `<p>${text}</p>\n`;\n }\n table(header, body) {\n if (body)\n body = `<tbody>${body}</tbody>`;\n return \"<table>\\n<thead>\\n\" + header + \"</thead>\\n\" + body + \"</table>\\n\";\n }\n tablerow(content) {\n return `<tr>\n${content}</tr>\n`;\n }\n tablecell(content, flags) {\n const type = flags.header ? \"th\" : \"td\";\n const tag = flags.align ? `<${type} align=\"${flags.align}\">` : `<${type}>`;\n return tag + content + `</${type}>\n`;\n }\n strong(text) {\n return `<strong>${text}</strong>`;\n }\n em(text) {\n return `<em>${text}</em>`;\n }\n codespan(text) {\n return `<code>${text}</code>`;\n }\n br() {\n return this.options.xhtml ? \"<br/>\" : \"<br>\";\n }\n del(text) {\n return `<del>${text}</del>`;\n }\n link(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n if (href === null) {\n return text;\n }\n let out = '<a href=\"' + escape(href) + '\"';\n if (title) {\n out += ' title=\"' + title + '\"';\n }\n out += \">\" + text + \"</a>\";\n return out;\n }\n image(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n if (href === null) {\n return text;\n }\n let out = `<img src=\"${href}\" alt=\"${text}\"`;\n if (title) {\n out += ` title=\"${title}\"`;\n }\n out += this.options.xhtml ? \"/>\" : \">\";\n return out;\n }\n text(text) {\n return text;\n }\n}\nclass TextRenderer {\n strong(text) {\n return text;\n }\n em(text) {\n return text;\n }\n codespan(text) {\n return text;\n }\n del(text) {\n return text;\n }\n html(text) {\n return text;\n }\n text(text) {\n return text;\n }\n link(href, title, text) {\n return \"\" + text;\n }\n image(href, title, text) {\n return \"\" + text;\n }\n br() {\n return \"\";\n }\n}\nclass Slugger {\n constructor() {\n this.seen = {};\n }\n serialize(value) {\n return value.toLowerCase().trim().replace(/<[!\\/a-z].*?>/ig, \"\").replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, \"\").replace(/\\s/g, \"-\");\n }\n getNextSafeSlug(originalSlug, isDryRun) {\n let slug = originalSlug;\n let occurenceAccumulator = 0;\n if (this.seen.hasOwnProperty(slug)) {\n occurenceAccumulator = this.seen[originalSlug];\n do {\n occurenceAccumulator++;\n slug = originalSlug + \"-\" + occurenceAccumulator;\n } while (this.seen.hasOwnProperty(slug));\n }\n if (!isDryRun) {\n this.seen[originalSlug] = occurenceAccumulator;\n this.seen[slug] = 0;\n }\n return slug;\n }\n slug(value, options2 = {}) {\n const slug = this.serialize(value);\n return this.getNextSafeSlug(slug, options2.dryrun);\n }\n}\nclass Parser {\n constructor(options2) {\n this.options = options2 || defaults;\n this.options.renderer = this.options.renderer || new Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new TextRenderer();\n this.slugger = new Slugger();\n }\n static parse(tokens, options2) {\n const parser2 = new Parser(options2);\n return parser2.parse(tokens);\n }\n static parseInline(tokens, options2) {\n const parser2 = new Parser(options2);\n return parser2.parseInline(tokens);\n }\n parse(tokens, top = true) {\n let out = \"\", i, j, k, l2, l3, row, cell, header, body, token, ordered, start, loose, itemBody, item, checked, task, checkbox, ret;\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({parser: this}, token);\n if (ret !== false || ![\"space\", \"hr\", \"heading\", \"code\", \"table\", \"blockquote\", \"list\", \"html\", \"paragraph\", \"text\"].includes(token.type)) {\n out += ret || \"\";\n continue;\n }\n }\n switch (token.type) {\n case \"space\": {\n continue;\n }\n case \"hr\": {\n out += this.renderer.hr();\n continue;\n }\n case \"heading\": {\n out += this.renderer.heading(this.parseInline(token.tokens), token.depth, unescape(this.parseInline(token.tokens, this.textRenderer)), this.slugger);\n continue;\n }\n case \"code\": {\n out += this.renderer.code(token.text, token.lang, token.escaped);\n continue;\n }\n case \"table\": {\n header = \"\";\n cell = \"\";\n l2 = token.header.length;\n for (j = 0; j < l2; j++) {\n cell += this.renderer.tablecell(this.parseInline(token.header[j].tokens), {header: true, align: token.align[j]});\n }\n header += this.renderer.tablerow(cell);\n body = \"\";\n l2 = token.rows.length;\n for (j = 0; j < l2; j++) {\n row = token.rows[j];\n cell = \"\";\n l3 = row.length;\n for (k = 0; k < l3; k++) {\n cell += this.renderer.tablecell(this.parseInline(row[k].tokens), {header: false, align: token.align[k]});\n }\n body += this.renderer.tablerow(cell);\n }\n out += this.renderer.table(header, body);\n continue;\n }\n case \"blockquote\": {\n body = this.parse(token.tokens);\n out += this.renderer.blockquote(body);\n continue;\n }\n case \"list\": {\n ordered = token.ordered;\n start = token.start;\n loose = token.loose;\n l2 = token.items.length;\n body = \"\";\n for (j = 0; j < l2; j++) {\n item = token.items[j];\n checked = item.checked;\n task = item.task;\n itemBody = \"\";\n if (item.task) {\n checkbox = this.renderer.checkbox(checked);\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === \"paragraph\") {\n item.tokens[0].text = checkbox + \" \" + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === \"text\") {\n item.tokens[0].tokens[0].text = checkbox + \" \" + item.tokens[0].tokens[0].text;\n }\n } else {\n item.tokens.unshift({\n type: \"text\",\n text: checkbox\n });\n }\n } else {\n itemBody += checkbox;\n }\n }\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, checked);\n }\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case \"html\": {\n out += this.renderer.html(token.text);\n continue;\n }\n case \"paragraph\": {\n out += this.renderer.paragraph(this.parseInline(token.tokens));\n continue;\n }\n case \"text\": {\n body = token.tokens ? this.parseInline(token.tokens) : token.text;\n while (i + 1 < l && tokens[i + 1].type === \"text\") {\n token = tokens[++i];\n body += \"\\n\" + (token.tokens ? this.parseInline(token.tokens) : token.text);\n }\n out += top ? this.renderer.paragraph(body) : body;\n continue;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n parseInline(tokens, renderer) {\n renderer = renderer || this.renderer;\n let out = \"\", i, token, ret;\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({parser: this}, token);\n if (ret !== false || ![\"escape\", \"html\", \"link\", \"image\", \"strong\", \"em\", \"codespan\", \"br\", \"del\", \"text\"].includes(token.type)) {\n out += ret || \"\";\n continue;\n }\n }\n switch (token.type) {\n case \"escape\": {\n out += renderer.text(token.text);\n break;\n }\n case \"html\": {\n out += renderer.html(token.text);\n break;\n }\n case \"link\": {\n out += renderer.link(token.href, token.title, this.parseInline(token.tokens, renderer));\n break;\n }\n case \"image\": {\n out += renderer.image(token.href, token.title, token.text);\n break;\n }\n case \"strong\": {\n out += renderer.strong(this.parseInline(token.tokens, renderer));\n break;\n }\n case \"em\": {\n out += renderer.em(this.parseInline(token.tokens, renderer));\n break;\n }\n case \"codespan\": {\n out += renderer.codespan(token.text);\n break;\n }\n case \"br\": {\n out += renderer.br();\n break;\n }\n case \"del\": {\n out += renderer.del(this.parseInline(token.tokens, renderer));\n break;\n }\n case \"text\": {\n out += renderer.text(token.text);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\nfunction marked(src, opt, callback) {\n if (typeof src === \"undefined\" || src === null) {\n throw new Error(\"marked(): input parameter is undefined or null\");\n }\n if (typeof src !== \"string\") {\n throw new Error(\"marked(): input parameter is of type \" + Object.prototype.toString.call(src) + \", string expected\");\n }\n if (typeof opt === \"function\") {\n callback = opt;\n opt = null;\n }\n opt = merge({}, marked.defaults, opt || {});\n checkSanitizeDeprecation(opt);\n if (callback) {\n const highlight = opt.highlight;\n let tokens;\n try {\n tokens = Lexer.lex(src, opt);\n } catch (e) {\n return callback(e);\n }\n const done = function(err) {\n let out;\n if (!err) {\n try {\n if (opt.walkTokens) {\n marked.walkTokens(tokens, opt.walkTokens);\n }\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n }\n opt.highlight = highlight;\n return err ? callback(err) : callback(null, out);\n };\n if (!highlight || highlight.length < 3) {\n return done();\n }\n delete opt.highlight;\n if (!tokens.length)\n return done();\n let pending = 0;\n marked.walkTokens(tokens, function(token) {\n if (token.type === \"code\") {\n pending++;\n setTimeout(() => {\n highlight(token.text, token.lang, function(err, code) {\n if (err) {\n return done(err);\n }\n if (code != null && code !== token.text) {\n token.text = code;\n token.escaped = true;\n }\n pending--;\n if (pending === 0) {\n done();\n }\n });\n }, 0);\n }\n });\n if (pending === 0) {\n done();\n }\n return;\n }\n function onError(e) {\n e.message += \"\\nPlease report this to https://github.com/markedjs/marked.\";\n if (opt.silent) {\n return \"<p>An error occurred:</p><pre>\" + escape(e.message + \"\", true) + \"</pre>\";\n }\n throw e;\n }\n try {\n const tokens = Lexer.lex(src, opt);\n if (opt.walkTokens) {\n if (opt.async) {\n return Promise.all(marked.walkTokens(tokens, opt.walkTokens)).then(() => {\n return Parser.parse(tokens, opt);\n }).catch(onError);\n }\n marked.walkTokens(tokens, opt.walkTokens);\n }\n return Parser.parse(tokens, opt);\n } catch (e) {\n onError(e);\n }\n}\nmarked.options = marked.setOptions = function(opt) {\n merge(marked.defaults, opt);\n changeDefaults(marked.defaults);\n return marked;\n};\nmarked.getDefaults = getDefaults;\nmarked.defaults = defaults;\nmarked.use = function(...args) {\n const opts = merge({}, ...args);\n const extensions = marked.defaults.extensions || {renderers: {}, childTokens: {}};\n let hasExtensions;\n args.forEach((pack) => {\n if (pack.extensions) {\n hasExtensions = true;\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error(\"extension name required\");\n }\n if (ext.renderer) {\n const prevRenderer = extensions.renderers ? extensions.renderers[ext.name] : null;\n if (prevRenderer) {\n extensions.renderers[ext.name] = function(...args2) {\n let ret = ext.renderer.apply(this, args2);\n if (ret === false) {\n ret = prevRenderer.apply(this, args2);\n }\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if (ext.tokenizer) {\n if (!ext.level || ext.level !== \"block\" && ext.level !== \"inline\") {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n if (extensions[ext.level]) {\n extensions[ext.level].unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) {\n if (ext.level === \"block\") {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n } else {\n extensions.startBlock = [ext.start];\n }\n } else if (ext.level === \"inline\") {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n } else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n if (ext.childTokens) {\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n }\n if (pack.renderer) {\n const renderer = marked.defaults.renderer || new Renderer();\n for (const prop in pack.renderer) {\n const prevRenderer = renderer[prop];\n renderer[prop] = (...args2) => {\n let ret = pack.renderer[prop].apply(renderer, args2);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args2);\n }\n return ret;\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = marked.defaults.tokenizer || new Tokenizer();\n for (const prop in pack.tokenizer) {\n const prevTokenizer = tokenizer[prop];\n tokenizer[prop] = (...args2) => {\n let ret = pack.tokenizer[prop].apply(tokenizer, args2);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args2);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n if (pack.walkTokens) {\n const walkTokens2 = marked.defaults.walkTokens;\n opts.walkTokens = function(token) {\n let values = [];\n values.push(pack.walkTokens.call(this, token));\n if (walkTokens2) {\n values = values.concat(walkTokens2.call(this, token));\n }\n return values;\n };\n }\n if (hasExtensions) {\n opts.extensions = extensions;\n }\n marked.setOptions(opts);\n });\n};\nmarked.walkTokens = function(tokens, callback) {\n let values = [];\n for (const token of tokens) {\n values = values.concat(callback.call(marked, token));\n switch (token.type) {\n case \"table\": {\n for (const cell of token.header) {\n values = values.concat(marked.walkTokens(cell.tokens, callback));\n }\n for (const row of token.rows) {\n for (const cell of row) {\n values = values.concat(marked.walkTokens(cell.tokens, callback));\n }\n }\n break;\n }\n case \"list\": {\n values = values.concat(marked.walkTokens(token.items, callback));\n break;\n }\n default: {\n if (marked.defaults.extensions && marked.defaults.extensions.childTokens && marked.defaults.extensions.childTokens[token.type]) {\n marked.defaults.extensions.childTokens[token.type].forEach(function(childTokens) {\n values = values.concat(marked.walkTokens(token[childTokens], callback));\n });\n } else if (token.tokens) {\n values = values.concat(marked.walkTokens(token.tokens, callback));\n }\n }\n }\n }\n return values;\n};\nmarked.parseInline = function(src, opt) {\n if (typeof src === \"undefined\" || src === null) {\n throw new Error(\"marked.parseInline(): input parameter is undefined or null\");\n }\n if (typeof src !== \"string\") {\n throw new Error(\"marked.parseInline(): input parameter is of type \" + Object.prototype.toString.call(src) + \", string expected\");\n }\n opt = merge({}, marked.defaults, opt || {});\n checkSanitizeDeprecation(opt);\n try {\n const tokens = Lexer.lexInline(src, opt);\n if (opt.walkTokens) {\n marked.walkTokens(tokens, opt.walkTokens);\n }\n return Parser.parseInline(tokens, opt);\n } catch (e) {\n e.message += \"\\nPlease report this to https://github.com/markedjs/marked.\";\n if (opt.silent) {\n return \"<p>An error occurred:</p><pre>\" + escape(e.message + \"\", true) + \"</pre>\";\n }\n throw e;\n }\n};\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\nmarked.Renderer = Renderer;\nmarked.TextRenderer = TextRenderer;\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\nmarked.Tokenizer = Tokenizer;\nmarked.Slugger = Slugger;\nmarked.parse = marked;\nconst options = marked.options;\nconst setOptions = marked.setOptions;\nconst use = marked.use;\nconst walkTokens = marked.walkTokens;\nconst parseInline = marked.parseInline;\nconst parse = marked;\nconst parser = Parser.parse;\nconst lexer = Lexer.lex;\nexport {Lexer, Parser, Renderer, Slugger, TextRenderer, Tokenizer, defaults, getDefaults, lexer, marked, options, parse, parseInline, parser, setOptions, use, walkTokens};\nexport default null;\n", "import { marked } from '../../../static/js/marked.js'\n\nexport const toHtml = (html, { baseUrl = '' } = {}) => {\n return marked(html, {\n baseUrl,\n })\n}\n", "import * as RendererProcess from '../RendererProcess/RendererProcess.js'\n\nexport const sanitizeHtml = (html) => {\n return RendererProcess.invoke('SanitizeHtml.sanitizeHtml', html)\n}\n", "import * as ErrorCodes from '../ErrorCodes/ErrorCodes.js'\nimport * as ExtensionDisplay from '../ExtensionDisplay/ExtensionDisplay.js'\nimport * as ExtensionManagement from '../ExtensionManagement/ExtensionManagement.js'\nimport * as FileSystem from '../FileSystem/FileSystem.js'\nimport * as Icon from '../Icon/Icon.js'\nimport * as MarkDown from '../Markdown/Markdown.js'\nimport * as Path from '../Path/Path.js'\nimport * as Platform from '../Platform/Platform.js'\nimport * as PlatformType from '../PlatformType/PlatformType.js'\nimport * as SanitizeHtml from '../SanitizeHtml/SanitizeHtml.js'\nimport * as ViewletModuleId from '../ViewletModuleId/ViewletModuleId.js'\nimport * as ViewletSize from '../ViewletSize/ViewletSize.js'\n\nexport const create = (id, uri, top, left, width, height) => {\n return {\n name: '',\n uri,\n top,\n left,\n width,\n height,\n size: ViewletSize.None,\n }\n}\n\nconst loadReadmeContent = async (path) => {\n try {\n const readmeUrl = Path.join('/', path, 'README.md')\n const readmeContent = await FileSystem.readFile(readmeUrl)\n return readmeContent\n } catch (error) {\n // @ts-ignore\n if (error && error.code === ErrorCodes.ENOENT) {\n return ''\n }\n console.error(error)\n return `${error}`\n }\n}\n\n// TODO duplicate code with viewletExtensions\nconst getIconSrc = (extension) => {\n if (extension.icon) {\n return ExtensionDisplay.getIcon(extension)\n }\n if (extension.name && extension.name.startsWith('Language Basics')) {\n return Icon.EXtensionLanguageBasics\n }\n if (extension.name && extension.name.endsWith(' Theme')) {\n return Icon.ExtensionTheme\n }\n return Icon.ExtensionDefaultIcon\n}\n\nconst getBaseUrl = (extensionPath) => {\n switch (Platform.platform) {\n case PlatformType.Remote:\n case PlatformType.Electron:\n return `/remote` + extensionPath + '/'\n default:\n return extensionPath\n }\n}\n\nconst getSize = (width) => {\n if (width < 180) {\n return ViewletSize.Small\n }\n if (width < 768) {\n return ViewletSize.Normal\n }\n return ViewletSize.Large\n}\n\n// first heading is usually extension name, since it is alreay present\n// at the top, remove this heading\n// const removeFirstHeading = (readme) => {\n// console.log({ readme })\n// return readme.replace(/<h1.*?>.*?<\\/h1>/s, '')\n// }\n\n// TODO when there are multiple extension with the same id,\n// probably need to pass extension location from extensions viewlet\nexport const loadContent = async (state) => {\n const { uri, width } = state\n const id = uri.slice('extension-detail://'.length)\n const extension = await ExtensionManagement.getExtension(id)\n const readmeContent = await loadReadmeContent(extension.path)\n const baseUrl = getBaseUrl(extension.path)\n const readmeHtml = MarkDown.toHtml(readmeContent, {\n baseUrl,\n })\n const sanitizedReadmeHtml = await SanitizeHtml.sanitizeHtml(readmeHtml)\n const normalizedReadmeHtml = sanitizedReadmeHtml\n const iconSrc = getIconSrc(extension)\n const description = ExtensionDisplay.getDescription(extension)\n const name = ExtensionDisplay.getName(extension)\n const size = getSize(width)\n return {\n ...state,\n sanitizedReadmeHtml: normalizedReadmeHtml,\n iconSrc,\n name,\n description,\n size,\n }\n}\n\nexport const handleIconError = (state) => {\n const { iconSrc } = state\n if (iconSrc === Icon.ExtensionDefaultIcon) {\n return state\n }\n return {\n ...state,\n iconSrc: Icon.ExtensionDefaultIcon,\n }\n}\n\nexport const hasFunctionalResize = true\n\nexport const resize = (state, dimensions) => {\n const size = getSize(dimensions.width)\n return {\n ...state,\n ...dimensions,\n size,\n }\n}\n\nexport const hasFunctionalRender = true\n\nconst renderName = {\n isEqual(oldState, newState) {\n return oldState.name === newState.name\n },\n apply(oldState, newState) {\n return [\n /* Viewlet.send */ 'Viewlet.send',\n /* id */ ViewletModuleId.ExtensionDetail,\n /* method */ 'setName',\n /* name */ newState.name,\n ]\n },\n}\n\nconst renderDescription = {\n isEqual(oldState, newState) {\n return oldState.description === newState.description\n },\n apply(oldState, newState) {\n return [\n /* method */ 'setDescription',\n /* description */ newState.description,\n ]\n },\n}\n\nconst renderReadme = {\n isEqual(oldState, newState) {\n return oldState.sanitizedReadmeHtml === newState.sanitizedReadmeHtml\n },\n apply(oldState, newState) {\n return [\n /* method */ 'setReadmeHtml',\n /* sanizedHtml */ newState.sanitizedReadmeHtml,\n ]\n },\n}\n\nconst renderIcon = {\n isEqual(oldState, newState) {\n return oldState.iconSrc === newState.iconSrc\n },\n apply(oldState, newState) {\n return [/* method */ 'setIconSrc', /* src */ newState.iconSrc]\n },\n}\n\nconst renderSize = {\n isEqual(oldState, newState) {\n return oldState.size === newState.size\n },\n apply(oldState, newState) {\n return [\n /* method */ 'setSize',\n /* oldSize */ oldState.size,\n /* newSize */ newState.size,\n ]\n },\n}\n\nexport const render = [\n renderName,\n renderReadme,\n renderDescription,\n renderIcon,\n renderSize,\n]\n", "import * as Command from '../Command/Command.js'\nimport * as MenuEntryId from '../MenuEntryId/MenuEntryId.js'\n\nexport const handleReadmeContextMenu = async (state, x, y) => {\n await Command.execute(\n /* ContextMenu.show */ 'ContextMenu.show',\n /* x */ x,\n /* y */ y,\n /* id */ MenuEntryId.ExtensionDetailReadme\n )\n return state\n}\n", "import * as ViewletExtensionDetail from './ViewletExtensionDetail.js'\n\nexport const name = 'ExtensionDetail'\n\n// prettier-ignore\nexport const Commands = {\n handleIconError: ViewletExtensionDetail.handleIconError,\n}\n\n// prettier-ignore\nexport const LazyCommands = {\n HandleReadmeContextMenu: () => import('./ViewletExtensionDetailHandleReadmeContextMenu.js'),\n}\n\nexport const Css = [\n '/css/parts/ViewletExtensionDetail.css',\n '/css/parts/Markdown.css',\n]\n\nexport * from './ViewletExtensionDetail.js'\n", "import * as Platform from '../Platform/Platform.js'\nimport * as PlatformType from '../PlatformType/PlatformType.js'\nimport * as Preferences from '../Preferences/Preferences.js'\n\nconst getTitleBarButtonsWeb = () => {\n return []\n}\n\nconst getTitleBarButtonsRemote = () => {\n return []\n}\n\nconst getTitleBarButtonsElectron = () => {\n if (\n Preferences.get('window.titleBarStyle') === 'custom' &&\n !Preferences.get('window.controlsOverlay.enabled')\n ) {\n return [\n { label: 'Minimize', icon: 'Minimize', id: 'Minimize' },\n { label: 'Maximize', icon: 'Maximize', id: 'ToggleMaximize' },\n { label: 'Close', icon: 'Close', id: 'Close' },\n ]\n }\n return []\n}\n\nexport const get = () => {\n switch (Platform.platform) {\n case PlatformType.Electron:\n return getTitleBarButtonsElectron()\n case PlatformType.Web:\n return getTitleBarButtonsWeb()\n case PlatformType.Remote:\n return getTitleBarButtonsRemote()\n }\n}\n", "import * as TitleBarButtons from '../TitleBarButtons/TitleBarButtons.js'\nimport * as ViewletModuleId from '../ViewletModuleId/ViewletModuleId.js'\n\nexport const create = (id, uri, top, left, width, height) => {\n return {\n buttons: [],\n top,\n left,\n width,\n height,\n }\n}\n\nexport const loadContent = async (state) => {\n const buttons = TitleBarButtons.get()\n return {\n ...state,\n buttons,\n }\n}\n\nexport const dispose = (state) => {\n return {\n ...state,\n disposed: true,\n }\n}\n\nexport const hasFunctionalResize = true\n\nexport const resize = (state, dimensions) => {\n return {\n ...state,\n ...dimensions,\n }\n}\n\nexport const hasFunctionalRender = true\n\nconst renderTitleBarButtons = {\n isEqual(oldState, newState) {\n return oldState.titleBarButtons === newState.titleBarButtons\n },\n apply(oldState, newState) {\n return [\n /* method */ 'setButtons',\n /* titleBarEntries */ newState.titleBarButtons,\n ]\n },\n}\n\nexport const render = [renderTitleBarButtons]\n", "import * as Command from '../Command/Command.js'\n\nexport const handleClickClose = async (state) => {\n await Command.execute('ElectronWindow.close')\n return state\n}\n", "import * as Command from '../Command/Command.js'\n\nexport const handleClickMinimize = async (state) => {\n await Command.execute('ElectronWindow.minimize')\n return state\n}\n", "import * as Command from '../Command/Command.js'\n\nexport const handleClickToggleMaximize = async (state) => {\n // TODO need command for toggleMaximize\n await Command.execute('ElectronWindow.maximize')\n return state\n}\n", "export const name = 'TitleBarButtons'\n\n// prettier-ignore\nexport const Commands = {}\n\n// prettier-ignore\nexport const LazyCommands = {\n handleClickClose: () => import('./ViewletTitleBarButtonsHandleClickClose.js'),\n handleClickMinimize: () => import('./ViewletTitleBarButtonsHandleClickMinimize.js'),\n handleClickToggleMaximize: () => import('./ViewletTitleBarButtonsHandleClickToggleMaximize.js'),\n}\n\nexport const Css = [\n '/css/parts/ViewletTitleBarButtons.css',\n '/css/parts/MaskIcon.css',\n]\n\nexport * from './ViewletTitleBarButtons.js'\n", "import * as MenuEntries from '../MenuEntries/MenuEntries.js'\nimport * as MenuEntryId from '../MenuEntryId/MenuEntryId.js'\n\nexport const getEntries = () => {\n return MenuEntries.getMenuEntries(MenuEntryId.TitleBar)\n}\n", "import * as TitleBarMenuBarEntries from '../TitleBarMenuBarEntries/TitleBarMenuBarEntries.js'\n\nexport const create = () => {\n return {\n titleBarEntries: [],\n focusedIndex: -1,\n isMenuOpen: false,\n menus: [],\n }\n}\n\nexport const loadContent = async (state) => {\n const titleBarEntries = await TitleBarMenuBarEntries.getEntries()\n return {\n ...state,\n titleBarEntries,\n }\n}\n\nexport const hasFunctionalRender = true\n\nconst renderTitleBarEntries = {\n isEqual(oldState, newState) {\n return oldState.titleBarEntries === newState.titleBarEntries\n },\n apply(oldState, newState) {\n return [\n /* method */ 'setEntries',\n /* titleBarEntries */ newState.titleBarEntries,\n ]\n },\n}\n\nconst renderFocusedIndex = {\n isEqual(oldState, newState) {\n return (\n oldState.focusedIndex === newState.focusedIndex &&\n oldState.isMenuOpen === newState.isMenuOpen\n )\n },\n apply(oldState, newState) {\n return [\n /* method */ 'setFocusedIndex',\n /* oldFocusedIndex */ oldState.focusedIndex,\n /* newfocusedIndex */ newState.focusedIndex,\n /* oldIsMenuOpen */ oldState.isMenuOpen,\n /* newIsMenuOpen */ newState.isMenuOpen,\n ]\n },\n}\n\nconst renderMenus = {\n isEqual(oldState, newState) {\n return oldState.menus === newState.menus\n },\n apply(oldState, newState) {\n const oldMenus = oldState.menus\n const newMenus = newState.menus\n const oldLength = oldMenus.length\n const newLength = newMenus.length\n const commonLength = Math.min(oldLength, newLength)\n const changes = []\n for (let i = 0; i < commonLength; i++) {\n const oldMenu = oldMenus[i]\n const newMenu = newMenus[i]\n if (oldMenu !== newMenu) {\n changes.push([\n /* method */ 'updateMenu',\n /* newMenu */ newMenu,\n /* newLength */ newLength,\n ])\n }\n }\n const difference = newLength - oldLength\n if (difference > 0) {\n changes.push(['addMenu', newMenus.at(-1)])\n } else if (difference < 0) {\n changes.push(['closeMenus', newLength])\n }\n return [/* method */ 'setMenus', /* changes */ changes]\n },\n}\n\nexport const render = [renderTitleBarEntries, renderFocusedIndex, renderMenus]\n", "export const closeMenu = (state, keepFocus) => {\n const { focusedIndex } = state\n // TODO send to renderer process\n // 1. close menu\n // 2. focus top level entry\n const newFocusedIndex = keepFocus ? focusedIndex : -1\n return {\n ...state,\n menus: [],\n isMenuOpen: false,\n focusedIndex: newFocusedIndex,\n }\n}\n", "import * as Command from '../Command/Command.js'\nimport * as RendererProcess from '../RendererProcess/RendererProcess.js'\n// TODO lazyload menuEntries and use Command.execute (maybe)\nimport * as MenuEntries from '../MenuEntries/MenuEntries.js'\nimport * as MenuItemFlags from '../MenuItemFlags/MenuItemFlags.js'\nimport * as ViewletModuleId from '../ViewletModuleId/ViewletModuleId.js'\nimport * as ViewletStates from '../ViewletStates/ViewletStates.js'\n\nexport const state = {\n /**\n * @type {any[]}\n */\n menus: [],\n latestTimeStamp: 0,\n enterTimeout: -1,\n}\n\nexport const MENU_WIDTH = 150\n\nconst CONTEXT_MENU_ITEM_HEIGHT = 28\nconst CONTEXT_MENU_SEPARATOR_HEIGHT = 16\nconst CONTEXT_MENU_PADDING = 20\nconst CONTEXT_MENU_WIDTH = 250\n\nexport const getMenuWidth = () => {\n return CONTEXT_MENU_WIDTH\n}\n\nexport const getMenuHeight = (items) => {\n let height = CONTEXT_MENU_PADDING\n for (const item of items) {\n switch (item.flags) {\n case MenuItemFlags.Separator:\n height += CONTEXT_MENU_SEPARATOR_HEIGHT\n break\n default:\n height += CONTEXT_MENU_ITEM_HEIGHT\n break\n }\n }\n return height\n}\n\nconst getCurrentMenu = () => {\n if (state.menus.length === 0) {\n console.warn('menu not available')\n }\n return state.menus.at(-1)\n}\n\nexport const addMenuInternal = (menu) => {\n if (state.menus.length > 5) {\n throw new Error('too many menus')\n }\n state.menus.push(menu)\n return menu\n}\n\nexport const addRootMenuInternal = (menu) => {\n state.menus = [menu]\n return menu\n}\n\nconst getMenuBounds = (x, y, items) => {\n const menuWidth = CONTEXT_MENU_WIDTH\n const menuHeight = getMenuHeight(items)\n const layoutState = ViewletStates.getState(ViewletModuleId.Layout)\n const windowWidth = layoutState.points[0]\n const windowHeight = layoutState.points[1]\n // TODO maybe only send labels and keybindings to ui (id not needed on ui)\n // TODO what about separators?\n\n if (x + menuWidth > windowWidth) {\n x -= menuWidth\n }\n if (y + menuHeight > windowHeight) {\n y -= menuHeight\n }\n\n return {\n x,\n y,\n width: menuWidth,\n height: menuHeight,\n }\n}\n\nexport const show = async (x, y, id, mouseBlocking = false) => {\n const items = await MenuEntries.getMenuEntries(id)\n const bounds = getMenuBounds(x, y, items)\n const menu = addMenuInternal({\n id,\n items,\n focusedIndex: -1,\n level: state.menus.length,\n x: bounds.x,\n y: bounds.y,\n })\n await RendererProcess.invoke(\n /* Menu.show */ 'Menu.showMenu',\n /* x */ bounds.x,\n /* y */ bounds.y,\n /* width */ bounds.width,\n /* height */ bounds.height,\n /* items */ menu.items,\n /* level */ menu.level,\n /* parentIndex */ -1,\n /* mouseBlocking */ mouseBlocking\n )\n}\n\nexport const closeSubMenu = () => {\n const menu = state.menus.pop()\n const parentMenu = state.menus.at(-1)\n RendererProcess.invoke(\n /* Menu.hideSubMenu */ 7903,\n /* parentIndex */ parentMenu.focusedIndex\n )\n}\n\nconst showSubMenuAtEnter = async (level, index, enterX, enterY) => {\n // TODO delete old menus\n state.menus = state.menus.slice(0, level + 1)\n const parentMenu = state.menus[level]\n const item = parentMenu.items[index]\n const subMenuItems = await MenuEntries.getMenuEntries(item.id)\n const subMenu = addMenuInternal({\n id: item.id,\n items: subMenuItems,\n focusedIndex: -1,\n level: state.menus.length,\n y: parentMenu.y + index * 25,\n x: parentMenu.x + MENU_WIDTH,\n enterX,\n enterY,\n })\n const width = getMenuWidth()\n const height = getMenuHeight(subMenuItems)\n RendererProcess.invoke(\n /* Menu.showMenu */ 'Menu.showMenu',\n /* x */ subMenu.x,\n /* y */ subMenu.y,\n /* width */ width,\n /* height */ height,\n /* items */ subMenu.items,\n /* level */ subMenu.level,\n /* parentIndex */ index\n )\n}\n\nexport const showSubMenu = async (level, index) => {\n await showSubMenuAtEnter(level, index, -1, -1)\n}\n\nconst selectIndexNone = async (item) => {\n if (!item.command) {\n console.warn('item has missing command', item)\n return\n }\n const args = item.args || []\n await Promise.all([\n hide(/* restoreFocus */ false),\n Command.execute(item.command, ...args),\n ])\n}\n\nconst selectIndexRestoreFocus = async (item) => {\n if (!item.command) {\n console.warn('item has missing command', item)\n return\n }\n const args = item.args || []\n await Promise.all([\n hide(/* restoreFocus */ true),\n Command.execute(item.command, ...args),\n ])\n}\n\nconst selectIndexSubMenu = async (menu, index) => {\n if (menu.focusedIndex === index) {\n return\n }\n await showSubMenu(menu.level, menu.focusedIndex)\n}\n\nexport const selectIndex = async (level, index) => {\n const menu = state.menus[level]\n menu.focusedIndex = index\n const item = menu.items[menu.focusedIndex]\n switch (item.flags) {\n case MenuItemFlags.None:\n return selectIndexNone(item)\n case MenuItemFlags.SubMenu:\n return selectIndexSubMenu(menu, index)\n case MenuItemFlags.RestoreFocus:\n return selectIndexRestoreFocus(item)\n default:\n break\n }\n}\n\nexport const selectItem = (text) => {\n for (let level = 0; level < state.menus.length; level++) {\n const menu = state.menus[level]\n for (let i = 0; i < menu.items.length; i++) {\n const item = menu.items[i]\n if (item.label === text) {\n return selectIndex(level, i)\n }\n }\n }\n throw new Error(`menu item not found: ${text}`)\n}\n\nexport const selectCurrent = async (level) => {\n const menu = state.menus[level]\n await selectIndex(level, menu.focusedIndex)\n}\n\nexport const hide = async (restoreFocus = true) => {\n if (state.menus.length === 0) {\n return\n }\n state.menus = []\n await RendererProcess.invoke(\n /* Menu.hide */ 'Menu.hide',\n /* restoreFocus */ restoreFocus\n )\n}\n\n// TODO difference between focusing with mouse or keyboard\n// with mouse -> open submenu\n// with keyboard -> don't open submenu, only focus\n\nconst hideSubMenus = async (level) => {\n if (level < state.menus.length) {\n state.menus = state.menus.slice(0, level + 1)\n await RendererProcess.invoke(\n /* Menu.hideSubMenu */ 'Menu.hideSubMenu',\n /* level */ level + 1\n )\n }\n}\n\nconst MENU_DELAY_TRIANGLE = 300\n\nconst resolveAfterTimeout = (fn) => {\n setTimeout(fn, MENU_DELAY_TRIANGLE)\n}\n\nexport const handleMouseEnter = async (\n level,\n index,\n enterX,\n enterY,\n enterTimeStamp\n) => {\n state.latestTimeStamp = enterTimeStamp\n if (level >= state.menus.length) {\n return\n }\n const menu = state.menus[level]\n if (menu.focusedIndex === index) {\n return\n }\n if (level < state.menus.length - 1) {\n const subMenu = state.menus[level + 1]\n const subMenuEnterX = subMenu.enterX\n // TODO should check for triangle position here\n if (enterX >= subMenuEnterX) {\n await new Promise(resolveAfterTimeout)\n if (state.latestTimeStamp !== enterTimeStamp) {\n return\n }\n }\n }\n const item = menu.items[index]\n await focusIndex(menu, index)\n switch (item.flags) {\n case /* SubMenu */ 4:\n await showSubMenuAtEnter(menu.level, index, enterX, enterY)\n break\n default:\n await hideSubMenus(menu.level)\n break\n }\n}\n\nexport const handleMouseLeave = async () => {\n const menu = state.menus[0]\n if (menu.items.length === 0) {\n return\n }\n const oldFocusedIndex = menu.focusedIndex\n menu.focusedIndex = -1\n await RendererProcess.invoke(\n /* Menu.focusIndex */ 'Menu.focusIndex',\n /* level */ menu.level,\n /* oldFocusedIndex */ oldFocusedIndex,\n /* newFocusedIndex */ -1\n )\n}\n\nexport const focusIndex = async (menu, index) => {\n if (menu.items.length === 0) {\n return\n }\n const oldFocusedIndex = menu.focusedIndex\n menu.focusedIndex = index\n await RendererProcess.invoke(\n /* Menu.focusIndex */ 'Menu.focusIndex',\n /* level */ menu.level,\n /* oldFocusedIndex */ oldFocusedIndex,\n /* newFocusedIndex */ index\n )\n}\n\nexport const getIndexToFocusNextStartingAt = (items, startIndex) => {\n for (let i = startIndex; i < startIndex + items.length; i++) {\n const index = i % items.length\n const item = items[index]\n if (canBeFocused(item)) {\n return index\n }\n }\n return -1\n}\n\nexport const getIndexToFocusFirst = (items) => {\n return getIndexToFocusNextStartingAt(items, 0)\n}\n\nexport const focusFirst = async () => {\n const menu = getCurrentMenu()\n if (menu.items.length === 0) {\n return\n }\n const indexToFocus = getIndexToFocusFirst(menu.items)\n await focusIndex(menu, indexToFocus)\n}\n\nexport const getIndexToFocusLast = (items) => {\n return getIndexToFocusPreviousStartingAt(items, items.length - 1)\n}\n\nexport const focusLast = async () => {\n const menu = getCurrentMenu()\n const indexToFocus = getIndexToFocusPreviousStartingAt(\n menu.items,\n menu.items.length - 1\n )\n await focusIndex(menu, indexToFocus)\n}\n\n// TODO this code seems a bit too complicated, maybe it can be simplified\nexport const getIndexToFocusPreviousStartingAt = (items, startIndex) => {\n for (let i = startIndex; i > startIndex - items.length; i--) {\n const index = (i + items.length) % items.length\n const item = items[index]\n if (canBeFocused(item)) {\n return index\n }\n }\n return -1\n}\n\nexport const getIndexToFocusPrevious = (menu) => {\n const startIndex =\n menu.focusedIndex === -1 ? menu.items.length - 1 : menu.focusedIndex - 1\n return getIndexToFocusPreviousStartingAt(menu.items, startIndex)\n}\n\nexport const focusPrevious = async () => {\n const menu = getCurrentMenu()\n if (menu.items.length === 0) {\n return\n }\n const indexToFocus = getIndexToFocusPrevious(menu)\n await focusIndex(menu, indexToFocus)\n}\n\nconst canBeFocused = (item) => {\n switch (item.flags) {\n case MenuItemFlags.Separator:\n case MenuItemFlags.Disabled:\n return false\n default:\n return true\n }\n}\n\nexport const getIndexToFocusNext = (menu) => {\n const startIndex = menu.focusedIndex + 1\n return getIndexToFocusNextStartingAt(menu.items, startIndex)\n}\n\nexport const focusNext = async () => {\n const menu = getCurrentMenu()\n if (menu.items.length === 0) {\n return\n }\n const indexToFocus = getIndexToFocusNext(menu)\n await focusIndex(menu, indexToFocus)\n}\n\nexport const resetFocusedIndex = (menu) => {\n menu.focusedIndex = -1\n}\n\n// TODO handle printable letter and focus item that starts with that letter\n\n// TODO pageup / pagedown keys\n\n// TODO more tests\n", "import * as Menu from '../Menu/Menu.js'\nimport * as MenuEntries from '../MenuEntries/MenuEntries.js'\nimport * as RendererProcess from '../RendererProcess/RendererProcess.js'\n\n/**\n * @param {number} index\n * @param {boolean} shouldBeFocused\n */\nexport const openMenuAtIndex = async (state, index, shouldBeFocused) => {\n const { titleBarEntries } = state\n // TODO race conditions\n // TODO send renderer process\n // 1. open menu, items to show\n // 2. focus menu\n const id = titleBarEntries[index].id\n const items = await MenuEntries.getMenuEntries(id)\n const bounds = await RendererProcess.invoke(\n /* Viewlet.send */ 'Viewlet.send',\n /* id */ 'TitleBarMenuBar',\n /* method */ 'getMenuEntryBounds',\n /* index */ index\n )\n // TODO race condition: another menu might already be open at this point\n\n const left = bounds.left\n const top = bounds.bottom\n const width = Menu.getMenuWidth()\n const height = Menu.getMenuHeight(items)\n const menuFocusedIndex = shouldBeFocused\n ? Menu.getIndexToFocusNextStartingAt(items, 0)\n : -1\n const menu = {\n id,\n items,\n focusedIndex: menuFocusedIndex,\n level: 0,\n left,\n top,\n width,\n height,\n }\n const menus = [menu]\n return {\n ...state,\n isMenuOpen: true,\n focusedIndex: index,\n menus,\n }\n}\n", "import { openMenuAtIndex } from './ViewletTitleBarMenuBarOpenMenuAtIndex.js'\nimport * as Assert from '../Assert/Assert.js'\n\nexport const focusIndex = (state, index) => {\n Assert.object(state)\n Assert.number(index)\n const { isMenuOpen } = state\n if (isMenuOpen) {\n return openMenuAtIndex(state, index, /* focus */ false)\n }\n return {\n ...state,\n focusedIndex: index,\n }\n}\n", "import { focusIndex } from './ViewletTitleBarMenuBarFocusIndex.js'\n\nconst getIndexToFocusNextStartingAt = (items, index) => {\n return index % items.length\n}\n\nexport const focusFirst = (state) => {\n const { titleBarEntries } = state\n const indexToFocus = getIndexToFocusNextStartingAt(titleBarEntries, 0)\n return focusIndex(state, indexToFocus)\n}\n", "import { focusFirst } from './ViewletTitleBarMenuBarFocusFirst.js'\n\nexport const focus = (state) => {\n return focusFirst(state)\n}\n", "import { focusIndex } from './ViewletTitleBarMenuBarFocusIndex.js'\n\nconst getIndexToFocusPreviousStartingAt = (items, index) => {\n return (index + items.length) % items.length\n}\n\nexport const focusLast = (state) => {\n const { titleBarEntries } = state\n const indexToFocus = getIndexToFocusPreviousStartingAt(\n titleBarEntries,\n titleBarEntries.length - 1\n )\n return focusIndex(state, indexToFocus)\n}\n", "import { focusIndex } from './ViewletTitleBarMenuBarFocusIndex.js'\n\nconst getIndexToFocusNextStartingAt = (items, index) => {\n return index % items.length\n}\n\nexport const focusNext = (state) => {\n const { titleBarEntries, focusedIndex } = state\n const indexToFocus = getIndexToFocusNextStartingAt(\n titleBarEntries,\n focusedIndex + 1\n )\n return focusIndex(state, indexToFocus)\n}\n", "import { focusIndex } from './ViewletTitleBarMenuBarFocusIndex.js'\n\nconst getIndexToFocusPreviousStartingAt = (items, index) => {\n return (index + items.length) % items.length\n}\n\nexport const focusPrevious = (state) => {\n const { titleBarEntries, focusedIndex } = state\n const indexToFocus = getIndexToFocusPreviousStartingAt(\n titleBarEntries,\n focusedIndex - 1\n )\n return focusIndex(state, indexToFocus)\n}\n", "import { openMenuAtIndex } from './ViewletTitleBarMenuBarOpenMenuAtIndex.js'\n\n/**\n * @param {boolean} focus\n */\nexport const openMenu = (state, focus) => {\n const { focusedIndex } = state\n if (focusedIndex === -1) {\n return state\n }\n return openMenuAtIndex(state, focusedIndex, focus)\n}\n", "import { openMenu } from './ViewletTitleBarMenuBarOpenMenu.js'\n\nexport const handleKeyArrowDownMenuClosed = (state) => {\n return openMenu(state, /* focus */ true)\n}\n", "export const handleKeyArrowDownMenuOpen = (state) => {\n const { menus } = state\n const menu = menus.at(-1)\n const newFocusedIndex = Menu.getIndexToFocusNext(menu)\n const newMenus = [\n ...menus.slice(0, -1),\n {\n ...menu,\n focusedIndex: newFocusedIndex,\n },\n ]\n return {\n ...state,\n menus: newMenus,\n }\n}\n", "export const ifElse = (menuOpenFunction, menuClosedFunction) => {\n const ifElseFunction = (state, ...args) => {\n const { isMenuOpen } = state\n if (isMenuOpen) {\n return menuOpenFunction(state, ...args)\n }\n return menuClosedFunction(state, ...args)\n }\n return ifElseFunction\n}\n", "import { handleKeyArrowDownMenuClosed } from './ViewletTitleBarMenuBarHandleKeyArrowDownMenuClosed.js'\nimport { handleKeyArrowDownMenuOpen } from './ViewletTitleBarMenuBarHandleKeyArrowDownMenuOpen.js'\nimport { ifElse } from './ViewletTitleBarMenuBarIfElse.js'\n\nexport const handleKeyArrowDown = ifElse(\n handleKeyArrowDownMenuOpen,\n handleKeyArrowDownMenuClosed\n)\n", "import { focusPrevious } from './ViewletTitleBarMenuBarFocusPrevious.js'\n\nexport const handleKeyArrowLeftMenuClosed = (state) => {\n // TODO menu collapse\n return focusPrevious(state)\n}\n", "export const closeOneMenu = (state) => {\n const { menus } = state\n const parentMenu = menus.at(-2)\n const newParentMenu = {\n ...parentMenu,\n expanded: false,\n }\n const newMenus = [...menus.slice(0, -2), newParentMenu]\n return {\n ...state,\n menus: newMenus,\n }\n}\n", "import { closeOneMenu } from './ViewletTitleBarMenuBarCloseOneMenu.js'\nimport { focusPrevious } from './ViewletTitleBarMenuBarFocusPrevious.js'\n\nexport const handleKeyArrowLeftMenuOpen = (state) => {\n const { menus } = state\n if (menus.length > 1) {\n return closeOneMenu(state)\n }\n return focusPrevious(state)\n}\n", "import { handleKeyArrowLeftMenuClosed } from './ViewletTitleBarMenuBarHandleKeyArrowLeftMenuClosed.js'\nimport { handleKeyArrowLeftMenuOpen } from './ViewletTitleBarMenuBarHandleKeyArrowLeftMenuOpen.js'\nimport { ifElse } from './ViewletTitleBarMenuBarIfElse.js'\n\nexport const handleKeyArrowLeft = ifElse(\n handleKeyArrowLeftMenuOpen,\n handleKeyArrowLeftMenuClosed\n)\n", "import { focusNext } from './ViewletTitleBarMenuBarFocusNext.js'\n\nexport const handleKeyArrowRightMenuClosed = focusNext\n", "import { focusNext } from './ViewletTitleBarMenuBarFocusNext.js'\n// TODO menu should not be needed initially, only when item is selected and menu is opened\nimport * as Menu from '../Menu/Menu.js'\nimport * as MenuEntries from '../MenuEntries/MenuEntries.js'\nimport * as MenuItemFlags from '../MenuItemFlags/MenuItemFlags.js'\n\nexport const handleKeyArrowRightMenuOpen = async (state) => {\n const { menus } = state\n // if menu can open sub menu to the right -> do that\n const menu = menus.at(-1)\n const { items, focusedIndex, left, top } = menu\n if (focusedIndex === -1) {\n return focusNext(state)\n }\n const item = items[focusedIndex]\n if (item.flags === MenuItemFlags.SubMenu) {\n const subMenuEntries = await MenuEntries.getMenuEntries(item.id)\n const subMenu = {\n level: menus.length,\n items: subMenuEntries,\n focusedIndex: 0,\n top: top + focusedIndex * 25,\n left: left + Menu.MENU_WIDTH,\n }\n const newParentMenu = {\n ...menu,\n expanded: true,\n }\n const newMenus = [...menus.slice(0, -1), newParentMenu, subMenu]\n return {\n ...state,\n menus: newMenus,\n }\n }\n return focusNext(state)\n}\n", "import { handleKeyArrowRightMenuClosed } from './ViewletTitleBarMenuBarHandleKeyArrowRightMenuClosed.js'\nimport { handleKeyArrowRightMenuOpen } from './ViewletTitleBarMenuBarHandleKeyArrowRightMenuOpen.js'\nimport { ifElse } from './ViewletTitleBarMenuBarIfElse.js'\n\nexport const handleKeyArrowRight = ifElse(\n handleKeyArrowRightMenuOpen,\n handleKeyArrowRightMenuClosed\n)\n", "export const noop = (state) => {\n return state\n}\n", "import { noop } from './ViewletTitleBarMenuBarNoop.js'\n\nexport const handleKeyArrowUpMenuClosed = noop\n", "import * as Menu from '../Menu/Menu.js'\n\nexport const handleKeyArrowUpMenuOpen = (state) => {\n const { menus } = state\n const menu = menus.at(-1)\n const previousIndex = Menu.getIndexToFocusPrevious(menu)\n const newMenus = [\n ...menus.slice(0, menus.length - 1),\n {\n ...menu,\n focusedIndex: previousIndex,\n },\n ]\n return {\n ...state,\n menus: newMenus,\n }\n}\n", "import { handleKeyArrowUpMenuClosed } from './ViewletTitleBarMenuBarHandleKeyArrowUpMenuClosed.js'\nimport { handleKeyArrowUpMenuOpen } from './ViewletTitleBarMenuBarHandleKeyArrowUpMenuOpen.js'\nimport { ifElse } from './ViewletTitleBarMenuBarIfElse.js'\n\nexport const handleKeyArrowUp = ifElse(\n handleKeyArrowUpMenuOpen,\n handleKeyArrowUpMenuClosed\n)\n", "import { focusLast } from './ViewletTitleBarMenuBarFocusLast.js'\n\nexport const handleKeyEndMenuClosed = focusLast\n", "import * as Menu from '../Menu/Menu.js'\n\nexport const handleKeyEndMenuOpen = (state) => {\n const { menus } = state\n const menu = menus[0]\n const newFocusedIndex = Menu.getIndexToFocusLast(menu.items)\n const newMenus = [\n {\n ...menu,\n focusedIndex: newFocusedIndex,\n },\n ]\n return {\n ...state,\n menus: newMenus,\n }\n}\n", "import { handleKeyEndMenuClosed } from './ViewletTitleBarMenuBarHandleKeyEndMenuClosed.js'\nimport { handleKeyEndMenuOpen } from './ViewletTitleBarMenuBarHandleKeyEndMenuOpen.js'\nimport { ifElse } from './ViewletTitleBarMenuBarIfElse.js'\n\n// TODO this is also use for pagedown -> maybe find a better name for this function\nexport const handleKeyEnd = ifElse(handleKeyEndMenuOpen, handleKeyEndMenuClosed)\n", "import { openMenu } from './ViewletTitleBarMenuBarOpenMenu.js'\n\nexport const handleKeyEnterMenuClosed = (state) => {\n return openMenu(state, /* focus */ true)\n}\n", "export const handleKeyEnterMenuOpen = (state) => {\n // TODO\n // await Menu.selectCurrent()\n return state\n}\n", "import { handleKeyEnterMenuClosed } from './ViewletTitleBarMenuBarHandleKeyEnterMenuClosed.js'\nimport { handleKeyEnterMenuOpen } from './ViewletTitleBarMenuBarHandleKeyEnterMenuOpen.js'\nimport { ifElse } from './ViewletTitleBarMenuBarIfElse.js'\n\nexport const handleKeyEnter = ifElse(\n handleKeyEnterMenuOpen,\n handleKeyEnterMenuClosed\n)\n", "import { noop } from './ViewletTitleBarMenuBarNoop.js'\n\nexport const handleKeyEscapeMenuClosed = noop\n", "import { closeMenu } from './ViewletTitleBarMenuBarCloseMenu.js'\nimport { closeOneMenu } from './ViewletTitleBarMenuBarCloseOneMenu.js'\n\nexport const handleKeyEscapeMenuOpen = (state) => {\n const { menus } = state\n if (menus.length > 1) {\n return closeOneMenu(state)\n }\n return closeMenu(state, /* keepFocus */ true)\n}\n", "import { handleKeyEscapeMenuClosed } from './ViewletTitleBarMenuBarHandleKeyEscapeMenuClosed.js'\nimport { handleKeyEscapeMenuOpen } from './ViewletTitleBarMenuBarHandleKeyEscapeMenuOpen.js'\nimport { ifElse } from './ViewletTitleBarMenuBarIfElse.js'\n\nexport const handleKeyEscape = ifElse(\n handleKeyEscapeMenuOpen,\n handleKeyEscapeMenuClosed\n)\n", "import { focusFirst } from './ViewletTitleBarMenuBarFocusFirst.js'\n\nexport const handleKeyHomeMenuClosed = focusFirst\n", "import * as Menu from '../Menu/Menu.js'\n\nexport const handleKeyHomeMenuOpen = (state) => {\n const { menus } = state\n const menu = menus[0]\n const newFocusedIndex = Menu.getIndexToFocusFirst(menu.items)\n const newMenus = [\n {\n ...menu,\n focusedIndex: newFocusedIndex,\n },\n ]\n return {\n ...state,\n menus: newMenus,\n }\n}\n", "import { handleKeyHomeMenuClosed } from './ViewletTitleBarMenuBarHandleKeyHomeMenuClosed.js'\nimport { handleKeyHomeMenuOpen } from './ViewletTitleBarMenuBarHandleKeyHomeMenuOpen.js'\nimport { ifElse } from './ViewletTitleBarMenuBarIfElse.js'\n\nexport const handleKeyHome = ifElse(\n handleKeyHomeMenuOpen,\n handleKeyHomeMenuClosed\n)\n", "import { openMenu } from './ViewletTitleBarMenuBarOpenMenu.js'\n\nexport const handleKeySpaceMenuClosed = (state) => {\n return openMenu(state, /* focus */ true)\n}\n", "export const handleKeySpaceMenuOpen = (state) => {\n // TODO\n // await Menu.selectCurrent()\n return state\n}\n", "import { handleKeySpaceMenuClosed } from './ViewletTitleBarMenuBarHandleKeySpaceMenuClosed.js'\nimport { handleKeySpaceMenuOpen } from './ViewletTitleBarMenuBarHandleKeySpaceMenuOpen.js'\nimport { ifElse } from './ViewletTitleBarMenuBarIfElse.js'\n\n// TODO this is same as handle key enter -> merge the functions\nexport const handleKeySpace = ifElse(\n handleKeySpaceMenuOpen,\n handleKeySpaceMenuClosed\n)\n", "import * as Command from '../Command/Command.js'\n\nexport const selectIndexNone = async (state, item) => {\n const args = item.args || []\n await Command.execute(item.command, ...args)\n return {\n ...state,\n menus: [],\n isMenuOpen: false,\n }\n}\n", "import * as Command from '../Command/Command.js'\n\nexport const selectIndexRestoreFocus = async (state, item) => {\n const args = item.args || []\n await Command.execute(item.command, ...args)\n return {\n ...state,\n menus: [],\n isMenuOpen: false,\n }\n}\n", "import * as Menu from '../Menu/Menu.js'\nimport * as MenuEntries from '../MenuEntries/MenuEntries.js'\n\nexport const selectIndexSubMenu = async (state, menu, index) => {\n const { menus } = state\n const { items, top, left, level } = menu\n const item = items[index]\n const subMenuEntries = await MenuEntries.getMenuEntries(item.id)\n const subMenu = {\n level: menus.length,\n items: subMenuEntries,\n focusedIndex: -1,\n top: top + index * 25,\n left: left + Menu.MENU_WIDTH,\n }\n const newParentMenu = {\n ...menu,\n focusedIndex: index,\n }\n const newMenus = [...menus.slice(0, level - 1), newParentMenu, subMenu]\n return {\n ...state,\n menus: newMenus,\n }\n}\n", "import * as MenuItemFlags from '../MenuItemFlags/MenuItemFlags.js'\nimport { selectIndexNone } from './ViewletTitleBarMenuBarSelectIndexNone.js'\nimport { selectIndexRestoreFocus } from './ViewletTitleBarMenuBarSelectIndexRestoreFocus.js'\nimport { selectIndexSubMenu } from './ViewletTitleBarMenuBarSelectIndexSubMenu.js'\n\nexport const handleMenuMouseDown = (state, level, index) => {\n const { menus } = state\n const menu = menus[level]\n const item = menu.items[index]\n switch (item.flags) {\n case MenuItemFlags.None:\n return selectIndexNone(state, item)\n case MenuItemFlags.SubMenu:\n return selectIndexSubMenu(state, menu, index)\n case MenuItemFlags.RestoreFocus:\n return selectIndexRestoreFocus(state, item)\n default:\n return state\n }\n}\n", "import * as Menu from '../Menu/Menu.js'\nimport * as MenuEntries from '../MenuEntries/MenuEntries.js'\nimport * as MenuItemFlags from '../MenuItemFlags/MenuItemFlags.js'\n\nexport const handleMenuMouseOver = async (state, level, index) => {\n const { menus } = state\n const menu = menus[level]\n const { items, focusedIndex, top, left } = menu\n const item = items[index]\n if (focusedIndex === index) {\n if (index === -1) {\n return state\n }\n if (item.flags === MenuItemFlags.SubMenu && level === menus.length - 2) {\n const subMenu = menus[level + 1]\n if (subMenu.focusedIndex !== -1) {\n const newSubMenu = {\n ...subMenu,\n focusedIndex: -1,\n }\n const newMenus = [...menus.slice(0, -1), newSubMenu]\n return {\n ...state,\n menus: newMenus,\n }\n }\n }\n return state\n }\n if (index === -1) {\n const newMenus = [\n ...menus.slice(0, level),\n {\n ...menu,\n focusedIndex: -1,\n },\n ]\n return {\n ...state,\n menus: newMenus,\n }\n }\n if (item.flags === MenuItemFlags.SubMenu) {\n const item = items[index]\n const subMenuEntries = await MenuEntries.getMenuEntries(item.id)\n const subMenu = {\n level: menus.length,\n items: subMenuEntries,\n focusedIndex: -1,\n top: top + index * 25,\n left: left + Menu.MENU_WIDTH,\n }\n const newParentMenu = {\n ...menu,\n focusedIndex: index,\n }\n const newMenus = [...menus.slice(0, level - 1), newParentMenu, subMenu]\n return {\n ...state,\n menus: newMenus,\n }\n }\n const newMenus = [\n ...menus.slice(0, level),\n {\n ...menu,\n focusedIndex: index,\n },\n ]\n return {\n ...state,\n menus: newMenus,\n }\n}\n", "import { noop } from './ViewletTitleBarMenuBarNoop.js'\n\nexport const handleMouseOverMenuClosed = noop\n", "import { focusIndex } from './ViewletTitleBarMenuBarFocusIndex.js'\n\nexport const handleMouseOverMenuOpen = focusIndex\n", "import { handleMouseOverMenuClosed } from './ViewletTitleBarMenuBarHandleMouseOverMenuClosed.js'\nimport { handleMouseOverMenuOpen } from './ViewletTitleBarMenuBarHandleMouseOverMenuOpen.js'\nimport { ifElse } from './ViewletTitleBarMenuBarIfElse.js'\n\nexport const handleMouseOver = ifElse(\n handleMouseOverMenuOpen,\n handleMouseOverMenuClosed\n)\n", "import { closeMenu } from './ViewletTitleBarMenuBarCloseMenu.js'\nimport { openMenuAtIndex } from './ViewletTitleBarMenuBarOpenMenuAtIndex.js'\n\nexport const toggleIndex = (state, index) => {\n const { isMenuOpen, focusedIndex } = state\n if (isMenuOpen && focusedIndex === index) {\n return closeMenu(state, /* keepFocus */ true)\n }\n return openMenuAtIndex(state, index, /* focus */ false)\n}\n", "import { closeMenu } from './ViewletTitleBarMenuBarCloseMenu.js'\nimport { openMenu } from './ViewletTitleBarMenuBarOpenMenu.js'\n\nexport const toggleMenu = (state) => {\n const { isMenuOpen } = state\n if (isMenuOpen) {\n return closeMenu(state, /* keepFocus */ true)\n }\n return openMenu(state, /* focus */ false)\n}\n", "export const name = 'TitleBarMenuBar'\n\n// prettier-ignore\nexport const LazyCommands={\n closeMenu: () => import('./ViewletTitleBarMenuBarCloseMenu.js'),\n focus: () => import('./ViewletTitleBarMenuBarFocus.js'),\n focusFirst: () => import('./ViewletTitleBarMenuBarFocusFirst.js'),\n focusIndex: () => import('./ViewletTitleBarMenuBarFocusLast.js'),\n focusLast: () => import('./ViewletTitleBarMenuBarFocusIndex.js'),\n focusNext: () => import('./ViewletTitleBarMenuBarFocusNext.js'),\n focusPrevious: () => import('./ViewletTitleBarMenuBarFocusPrevious.js'),\n handleKeyArrowDown: () => import('./ViewletTitleBarMenuBarHandleKeyArrowDown.js'),\n handleKeyArrowLeft: () => import('./ViewletTitleBarMenuBarHandleKeyArrowLeft.js'),\n handleKeyArrowRight: () => import('./ViewletTitleBarMenuBarHandleKeyArrowRight.js'),\n handleKeyArrowUp: () => import('./ViewletTitleBarMenuBarHandleKeyArrowUp.js'),\n handleKeyEnd: () => import('./ViewletTitleBarMenuBarHandleKeyEnd.js'),\n handleKeyEnter: () => import('./ViewletTitleBarMenuBarHandleKeyEnter.js'),\n handleKeyEscape: () => import('./ViewletTitleBarMenuBarHandleKeyEscape.js'),\n handleKeyHome: () => import('./ViewletTitleBarMenuBarHandleKeyHome.js'),\n handleKeySpace: () => import('./ViewletTitleBarMenuBarHandleKeySpace.js'),\n handleMenuMouseDown: () => import('./ViewletTitleBarMenuBarHandleMenuMouseDown.js'),\n handleMenuMouseOver: () => import('./ViewletTitleBarMenuBarHandleMenuMouseOver.js'),\n handleMouseOver: () => import('./ViewletTitleBarMenuBarHandleMouseOver.js'),\n toggleIndex: () => import('./ViewletTitleBarMenuBarToggleIndex.js'),\n toggleMenu: () => import('./ViewletTitleBarMenuBarToggleMenu.js'),\n}\n\nexport const Css = '/css/parts/ViewletTitleBarMenuBar.css'\n\nexport * from './ViewletTitleBarMenuBar.js'\n", "export const Panel = 'Panel'\nexport const SideBar = 'SideBar'\nexport const None = ''\n", "export const Horizontal = 'horizontal'\n\nexport const Vertical = 'vertical'\n", "import * as Assert from '../Assert/Assert.js'\nimport * as Clamp from '../Clamp/Clamp.js'\nimport * as Platform from '../Platform/Platform.js'\nimport * as PlatformType from '../PlatformType/PlatformType.js'\nimport * as Preferences from '../Preferences/Preferences.js'\nimport * as RendererProcess from '../RendererProcess/RendererProcess.js'\nimport * as SashType from '../SashType/SashType.js'\nimport * as SideBarLocationType from '../SideBarLocationType/SideBarLocationType.js'\nimport { VError } from '../VError/VError.js'\nimport * as Viewlet from '../Viewlet/Viewlet.js'\nimport * as ViewletManager from '../ViewletManager/ViewletManager.js'\nimport * as ViewletModule from '../ViewletModule/ViewletModule.js'\nimport * as ViewletModuleId from '../ViewletModuleId/ViewletModuleId.js'\nimport * as SashDirectionType from '../SashDirectionType/SashDirectionType.js'\n\nconst kWindowWidth = 0\nconst kWindowHeight = 1\n\nconst kMainVisible = 2\nconst kMainTop = 3\nconst kMainLeft = 4\nconst kMainWidth = 5\nconst kMainHeight = 6\n\nconst kActivityBarVisible = 7\nconst kActivityBarTop = 8\nconst kActivityBarLeft = 9\nconst kActivityBarWidth = 10\nconst kActivityBarHeight = 11\n\nconst kSideBarVisible = 12\nconst kSideBarTop = 13\nconst kSideBarLeft = 14\nconst kSideBarWidth = 15\nconst kSideBarHeight = 16\nconst kSideBarMinWidth = 17\nconst kSideBarMaxWidth = 18\n\nconst kPanelVisible = 19\nconst kpanelTop = 20\nconst kPanelLeft = 21\nconst kPanelWidth = 22\nconst kPanelHeight = 23\nconst kPanelMinHeight = 24\nconst kPanelMaxHeight = 25\n\nconst kStatusBarVisible = 26\nconst kStatusBarTop = 27\nconst kStatusBarLeft = 28\nconst kStatusBarWidth = 29\nconst kStatusBarHeight = 30\n\nconst kTitleBarVisible = 31\nconst kTitleBarTop = 32\nconst kTitleBarLeft = 33\nconst kTitleBarWidth = 34\nconst kTitleBarHeight = 35\n\nconst kTotal = 36\n\nconst kSashId = 'sashId'\n\nconst mMain = {\n moduleId: ViewletModuleId.Main,\n kVisible: kMainVisible,\n kTop: kMainTop,\n kLeft: kMainLeft,\n kWidth: kMainWidth,\n kHeight: kMainHeight,\n}\n\nconst mActivityBar = {\n moduleId: ViewletModuleId.ActivityBar,\n kVisible: kActivityBarVisible,\n kTop: kActivityBarTop,\n kLeft: kActivityBarLeft,\n kWidth: kActivityBarWidth,\n kHeight: kActivityBarHeight,\n}\n\nconst mSideBar = {\n moduleId: ViewletModuleId.SideBar,\n kVisible: kSideBarVisible,\n kTop: kSideBarTop,\n kLeft: kSideBarLeft,\n kWidth: kSideBarWidth,\n kHeight: kSideBarHeight,\n}\n\nconst mTitleBar = {\n moduleId: ViewletModuleId.TitleBar,\n kVisible: kTitleBarVisible,\n kTop: kTitleBarTop,\n kLeft: kTitleBarLeft,\n kWidth: kTitleBarWidth,\n kHeight: kTitleBarHeight,\n}\n\nconst mStatusBar = {\n moduleId: ViewletModuleId.StatusBar,\n kVisible: kStatusBarVisible,\n kTop: kStatusBarTop,\n kLeft: kStatusBarLeft,\n kWidth: kStatusBarWidth,\n kHeight: kStatusBarHeight,\n}\n\nconst mPanel = {\n moduleId: ViewletModuleId.Panel,\n kVisible: kPanelVisible,\n kTop: kpanelTop,\n kLeft: kPanelLeft,\n kWidth: kPanelWidth,\n kHeight: kPanelHeight,\n}\n\nconst getDefaultTitleBarHeight = () => {\n switch (Platform.platform) {\n case PlatformType.Electron:\n return 28\n default:\n return 20\n }\n}\n\nexport const getPoints = (\n source,\n destination,\n sideBarLocation = SideBarLocationType.Right\n) => {\n const activityBarVisible = source[kActivityBarVisible]\n const panelVisible = source[kPanelVisible]\n const sideBarVisible = source[kSideBarVisible]\n const statusBarVisible = source[kStatusBarVisible]\n const titleBarVisible = source[kTitleBarVisible]\n const windowWidth = source[kWindowWidth]\n const windowHeight = source[kWindowHeight]\n const sideBarMinWidth = source[kSideBarMinWidth]\n const sideBarMaxWidth = source[kSideBarMaxWidth]\n const panelMinHeight = source[kPanelMinHeight]\n const panelMaxHeight = source[kPanelMaxHeight]\n const titleBarHeight = source[kTitleBarHeight]\n const sideBarWidth = source[kSideBarWidth]\n const panelHeight = source[kPanelHeight]\n const activityBarWidth = source[kActivityBarWidth]\n const statusBarHeight = source[kStatusBarHeight]\n\n const newSideBarWidth = Clamp.clamp(\n sideBarWidth,\n sideBarMinWidth,\n sideBarMaxWidth\n )\n\n const newPanelHeight = Clamp.clamp(\n panelHeight,\n panelMinHeight,\n panelMaxHeight\n ) // TODO check that it is in bounds of window\n\n if (sideBarLocation === SideBarLocationType.Right) {\n const p1 = /* Top */ 0\n let p2 = /* End of Title Bar */ 0\n let p3 = /* End of Main */ 0\n let p4 = /* End of Panel */ 0\n const p5 = /* End of StatusBar */ windowHeight\n\n const p6 = /* Left */ 0\n let p7 = /* End of Main */ windowWidth - activityBarWidth\n let p8 = /* End of SideBar */ windowWidth\n const p9 = /* End of ActivityBar */ windowWidth\n\n if (titleBarVisible) {\n p2 = titleBarHeight\n }\n if (statusBarVisible) {\n p4 = windowHeight - statusBarHeight\n }\n p3 = p4\n if (panelVisible) {\n p3 -= newPanelHeight\n }\n if (activityBarVisible) {\n p8 = windowWidth - activityBarWidth\n }\n if (sideBarVisible) {\n p7 = p8 - newSideBarWidth\n }\n destination[kActivityBarLeft] = p8\n destination[kActivityBarTop] = p2\n destination[kActivityBarWidth] = 48\n destination[kActivityBarHeight] = p4 - p2\n destination[kActivityBarVisible] = activityBarVisible\n\n destination[kMainLeft] = p6\n destination[kMainTop] = p2\n destination[kMainWidth] = p7 - p6\n destination[kMainHeight] = p3 - p2\n destination[kMainVisible] = 1\n\n destination[kPanelLeft] = p6\n destination[kpanelTop] = p3\n destination[kPanelWidth] = p8 - p6\n destination[kPanelHeight] = p4 - p3\n destination[kPanelVisible] = panelVisible\n\n destination[kSideBarLeft] = p7\n destination[kSideBarTop] = p2\n destination[kSideBarWidth] = p8 - p7\n destination[kSideBarHeight] = p3 - p2\n destination[kSideBarVisible] = sideBarVisible\n\n destination[kStatusBarLeft] = p1\n destination[kStatusBarTop] = p4\n destination[kStatusBarWidth] = windowWidth\n destination[kStatusBarHeight] = 20\n destination[kStatusBarVisible] = statusBarVisible\n\n destination[kTitleBarLeft] = p6\n destination[kTitleBarTop] = p1\n destination[kTitleBarWidth] = windowWidth\n destination[kTitleBarHeight] = getDefaultTitleBarHeight()\n destination[kTitleBarVisible] = titleBarVisible\n } else {\n const p1 = /* Top */ 0\n let p2 = /* End of Title Bar */ 0\n let p3 = /* End of Main */ 0\n let p4 = /* End of Panel */ 0\n const p5 = /* End of StatusBar */ windowHeight\n\n const p6 = /* Left */ 0\n let p7 = /* End of ActivityBar */ 0\n let p8 = /* End of SideBar */ 0\n const p9 = /* End of Main */ 0\n\n if (titleBarVisible) {\n p2 = titleBarHeight\n }\n if (statusBarVisible) {\n p4 = windowHeight - statusBarHeight\n }\n p3 = p4\n if (panelVisible) {\n p3 -= newPanelHeight\n }\n if (activityBarVisible) {\n p7 = activityBarWidth\n }\n if (sideBarVisible) {\n p8 = p7 + sideBarWidth\n }\n destination[kActivityBarLeft] = p6\n destination[kActivityBarTop] = p2\n destination[kActivityBarWidth] = 48\n destination[kActivityBarHeight] = p4 - p2\n destination[kActivityBarVisible] = activityBarVisible\n\n destination[kMainLeft] = p8\n destination[kMainTop] = p2\n destination[kMainWidth] = windowWidth - p8\n destination[kMainHeight] = p3 - p2\n destination[kMainVisible] = 1\n\n destination[kPanelLeft] = p6\n destination[kpanelTop] = p3\n destination[kPanelWidth] = p8 - p6\n destination[kPanelHeight] = p4 - p3\n destination[kPanelVisible] = panelVisible\n\n destination[kSideBarLeft] = p7\n destination[kSideBarTop] = p2\n destination[kSideBarWidth] = p8 - p7\n destination[kSideBarHeight] = p3 - p2\n destination[kSideBarVisible] = sideBarVisible\n\n destination[kStatusBarLeft] = p1\n destination[kStatusBarTop] = p4\n destination[kStatusBarWidth] = windowWidth\n destination[kStatusBarHeight] = 20\n destination[kStatusBarVisible] = statusBarVisible\n\n destination[kTitleBarLeft] = p6\n destination[kTitleBarTop] = p1\n destination[kTitleBarWidth] = windowWidth\n destination[kTitleBarHeight] = titleBarHeight\n destination[kTitleBarVisible] = titleBarVisible\n }\n}\n\nexport const create = () => {\n return {\n points: new Uint16Array(kTotal),\n sideBarViewletId: '',\n [kSashId]: SashType.None,\n sideBarLocation: SideBarLocationType.Right,\n }\n}\n\nexport const saveState = (state) => {\n const { points } = state\n const pointsArray = [...points]\n return {\n points: pointsArray,\n }\n}\n\nconst getSideBarLocationType = () => {\n const location = Preferences.get('workbench.sideBarLocation')\n switch (location) {\n case 'left':\n return SideBarLocationType.Left\n default:\n return SideBarLocationType.Right\n }\n}\n\nconst getSavedPoints = (savedState) => {\n if (savedState.LocalStorage && savedState.LocalStorage.savedState) {\n let parsed\n try {\n parsed = JSON.parse(savedState.LocalStorage.savedState)\n } catch {}\n if (\n parsed &&\n parsed.instances &&\n parsed.instances.Layout &&\n parsed.instances.Layout.points &&\n Array.isArray(parsed.instances.Layout.points) &&\n parsed.instances.Layout.points.length === kTotal\n ) {\n return new Uint16Array(parsed.instances.Layout.points)\n }\n }\n return new Uint16Array(kTotal)\n}\n\nexport const loadContent = (state, savedState) => {\n const { Layout } = savedState\n const { bounds } = Layout\n const { windowWidth, windowHeight } = bounds\n const sideBarLocation = getSideBarLocationType()\n const newPoints = getSavedPoints(savedState)\n newPoints[kActivityBarVisible] = 1\n newPoints[kActivityBarWidth] = 48\n newPoints[kMainVisible] = 1\n newPoints[kPanelHeight] = 160\n newPoints[kPanelMaxHeight] = 600\n newPoints[kPanelMinHeight] = 150\n newPoints[kSideBarMaxWidth] = 9999999\n newPoints[kSideBarMinWidth] = 170\n newPoints[kSideBarVisible] = 1\n newPoints[kSideBarWidth] ||= 240\n newPoints[kStatusBarHeight] = 20\n newPoints[kStatusBarVisible] = 1\n newPoints[kTitleBarHeight] = 20\n newPoints[kTitleBarVisible] = 1\n newPoints[kWindowHeight] = windowHeight\n newPoints[kWindowWidth] = windowWidth\n // TODO get side bar min width from preferences\n getPoints(newPoints, newPoints, sideBarLocation)\n return {\n ...state,\n points: newPoints,\n sideBarLocation,\n }\n}\n\nconst show = async (state, module, currentViewletId) => {\n const { points } = state\n const { kVisible, kTop, kLeft, kWidth, kHeight, moduleId } = module\n const newPoints = new Uint16Array(points)\n newPoints[kVisible] = 1\n getPoints(newPoints, newPoints)\n const top = newPoints[kTop]\n const left = newPoints[kLeft]\n const width = newPoints[kWidth]\n const height = newPoints[kHeight]\n const commands = await ViewletManager.load(\n {\n getModule: ViewletModule.load,\n id: moduleId,\n type: 0,\n // @ts-ignore\n uri: '',\n show: false,\n focus: false,\n top,\n left,\n width,\n height,\n },\n false,\n false,\n {\n currentViewletId,\n }\n )\n if (commands) {\n commands.push(['Viewlet.append', 'Layout', moduleId])\n }\n const resizeCommands = getResizeCommands(points, newPoints)\n commands.push(...resizeCommands)\n return {\n newState: {\n ...state,\n points: newPoints,\n },\n commands,\n }\n}\n\nconst hide = (state, module) => {\n const { points } = state\n const { kVisible, moduleId } = module\n const newPoints = new Uint16Array(points)\n newPoints[kVisible] = 0\n getPoints(newPoints, newPoints)\n // TODO also resize other viewlets if necessary\n const commands = Viewlet.disposeFunctional(moduleId)\n const resizeCommands = getResizeCommands(points, newPoints)\n commands.push(...resizeCommands)\n return {\n newState: {\n ...state,\n points: newPoints,\n },\n commands,\n }\n}\n\nconst toggle = (state, module, moduleId) => {\n const { points } = state\n const { kVisible } = module\n if (points[kVisible]) {\n return hide(state, module)\n }\n return show(state, module, moduleId)\n}\n\nexport const showSideBar = (state) => {\n return show(state, mSideBar)\n}\n\nexport const hideSideBar = (state) => {\n return hide(state, mSideBar)\n}\n\nexport const toggleSideBar = (state) => {\n return toggle(state, mSideBar)\n}\n\nexport const showPanel = (state) => {\n return show(state, mPanel)\n}\n\nexport const hidePanel = (state) => {\n return hide(state, mPanel)\n}\n\nexport const togglePanel = (state, moduleId = ViewletModuleId.None) => {\n return toggle(state, mPanel, moduleId)\n}\n\nexport const showActivityBar = (state) => {\n return show(state, mActivityBar)\n}\n\nexport const hideActivityBar = (state) => {\n return hide(state, mActivityBar)\n}\n\nexport const toggleActivityBar = (state) => {\n return toggle(state, mActivityBar)\n}\n\nexport const showStatusBar = (state) => {\n return show(state, mStatusBar)\n}\n\nexport const hideStatusBar = (state) => {\n return hide(state, mStatusBar)\n}\n\nexport const toggleStatusBar = (state) => {\n return toggle(state, mStatusBar)\n}\n\nexport const showTitleBar = (state) => {\n return show(state, mTitleBar)\n}\n\nexport const hideTitleBar = (state) => {\n return hide(state, mTitleBar)\n}\n\nexport const toggleTitleBar = (state) => {\n return toggle(state, mTitleBar)\n}\n\nexport const showMain = (state) => {\n return show(state, mMain)\n}\n\nexport const hideMain = (state) => {\n return hide(state, mMain)\n}\n\nexport const toggleMain = (state) => {\n return toggle(state, mMain)\n}\n\nconst getReferenceNodes = (sideBarLocation) => {\n if (sideBarLocation === SideBarLocationType.Left) {\n return [\n ViewletModuleId.TitleBar,\n ViewletModuleId.ActivityBar,\n 'SashSideBar',\n ViewletModuleId.SideBar,\n ViewletModuleId.Main,\n 'SashPanel',\n ViewletModuleId.Panel,\n ViewletModuleId.StatusBar,\n ]\n }\n return [\n ViewletModuleId.TitleBar,\n ViewletModuleId.Main,\n ViewletModuleId.SideBar,\n 'SashSideBar',\n ViewletModuleId.ActivityBar,\n 'SashPanel',\n ViewletModuleId.Panel,\n ViewletModuleId.StatusBar,\n ]\n}\n\nconst loadIfVisible = async (state, module) => {\n const { points, sideBarLocation } = state\n const { kVisible, kTop, kLeft, kWidth, kHeight, moduleId } = module\n const visible = points[kVisible]\n const top = points[kTop]\n const left = points[kLeft]\n const width = points[kWidth]\n const height = points[kHeight]\n let commands = []\n if (visible) {\n commands = await ViewletManager.load(\n {\n getModule: ViewletModule.load,\n id: moduleId,\n type: 0,\n // @ts-ignore\n uri: '',\n show: false,\n focus: false,\n top,\n left,\n width,\n height,\n },\n false,\n true\n )\n if (commands) {\n const referenceNodes = getReferenceNodes(sideBarLocation)\n commands.push(['Viewlet.append', 'Layout', moduleId, referenceNodes])\n }\n }\n return {\n newState: state,\n commands,\n }\n}\n\nexport const loadMainIfVisible = (state) => {\n return loadIfVisible(state, mMain)\n}\n\nexport const loadSideBarIfVisible = (state) => {\n return loadIfVisible(state, mSideBar)\n}\n\nexport const loadPanelIfVisible = (state) => {\n return loadIfVisible(state, mPanel)\n}\n\nexport const loadActivityBarIfVisible = (state) => {\n return loadIfVisible(state, mActivityBar)\n}\n\nexport const loadStatusBarIfVisible = (state) => {\n return loadIfVisible(state, mStatusBar)\n}\n\nexport const loadTitleBarIfVisible = (state) => {\n return loadIfVisible(state, mTitleBar)\n}\n\nexport const handleSashPointerDown = (state, sashId) => {\n return {\n ...state,\n [kSashId]: sashId,\n }\n}\n\nconst getNewStatePointerMoveSideBar = (points, x, y) => {\n const windowWidth = points[kWindowWidth]\n const activityBarWidth = points[kActivityBarWidth]\n const sideBarMinWidth = points[kSideBarMinWidth]\n const newSideBarWidth = windowWidth - activityBarWidth - x\n const newPoints = new Uint16Array(points)\n if (newSideBarWidth <= sideBarMinWidth / 2) {\n newPoints[kSideBarVisible] = 0\n newPoints[kMainWidth] = windowWidth - activityBarWidth\n } else if (newSideBarWidth <= sideBarMinWidth) {\n newPoints[kSideBarWidth] = sideBarMinWidth\n newPoints[kMainWidth] = windowWidth - activityBarWidth - sideBarMinWidth\n newPoints[kSideBarLeft] = windowWidth - activityBarWidth - sideBarMinWidth\n newPoints[kSideBarVisible] = 1\n } else {\n newPoints[kSideBarVisible] = 1\n newPoints[kMainWidth] = x\n newPoints[kSideBarLeft] = x\n newPoints[kSideBarWidth] = newSideBarWidth\n }\n return newPoints\n}\n\nconst getNewStatePointerMovePanel = (points, x, y) => {\n const windowHeight = points[kWindowHeight]\n const statusBarHeight = points[kStatusBarHeight]\n const titleBarHeight = points[kTitleBarHeight]\n const activityBarHeight = points[kActivityBarHeight]\n const panelMinHeight = points[kPanelMinHeight]\n const newPanelHeight = windowHeight - statusBarHeight - y\n const newPoints = new Uint16Array(points)\n if (newPanelHeight < panelMinHeight / 2) {\n newPoints[kPanelVisible] = 0\n newPoints[kMainHeight] = windowHeight - statusBarHeight - titleBarHeight\n } else if (newPanelHeight <= panelMinHeight) {\n newPoints[kPanelVisible] = 1\n newPoints[kPanelHeight] = panelMinHeight\n newPoints[kMainHeight] = windowHeight - activityBarHeight - panelMinHeight\n } else {\n newPoints[kPanelVisible] = 1\n newPoints[kMainHeight] = y - titleBarHeight\n newPoints[kpanelTop] = y\n newPoints[kPanelHeight] = windowHeight - statusBarHeight - y\n }\n return newPoints\n}\n\nconst getNewStatePointerMove = (sashId, points, x, y) => {\n switch (sashId) {\n case SashType.SideBar:\n return getNewStatePointerMoveSideBar(points, x, y)\n case SashType.Panel:\n return getNewStatePointerMovePanel(points, x, y)\n default:\n throw new Error(`unsupported sash type ${sashId}`)\n }\n}\n\nconst isEqual = (oldPoints, newPoints, kTop, kLeft, kWidth, kHeight) => {\n return (\n oldPoints[kTop] === newPoints[kTop] &&\n oldPoints[kLeft] === newPoints[kLeft] &&\n oldPoints[kWidth] === newPoints[kWidth] &&\n oldPoints[kHeight] === newPoints[kHeight]\n )\n}\n\nconst getResizeCommands = (oldPoints, newPoints) => {\n const modules = [mMain, mActivityBar, mSideBar, mTitleBar, mStatusBar, mPanel]\n const commands = []\n for (const module of modules) {\n const { kTop, kLeft, kWidth, kHeight, moduleId } = module\n if (!isEqual(oldPoints, newPoints, kTop, kLeft, kWidth, kHeight)) {\n const newTop = newPoints[kTop]\n const newLeft = newPoints[kLeft]\n const newWidth = newPoints[kWidth]\n const newHeight = newPoints[kHeight]\n Assert.number(newTop)\n Assert.number(newLeft)\n Assert.number(newWidth)\n Assert.number(newHeight)\n const resizeCommands = Viewlet.resize(moduleId, {\n top: newTop,\n left: newLeft,\n width: newWidth,\n height: newHeight,\n })\n commands.push(...resizeCommands)\n commands.push([\n 'Viewlet.setBounds',\n moduleId,\n newLeft,\n newTop,\n newWidth,\n newHeight,\n ])\n }\n }\n return commands\n}\n\nconst showAsync = async (points, module) => {\n try {\n const { moduleId, kTop, kLeft, kWidth, kHeight } = module\n const commands = await ViewletManager.load({\n getModule: ViewletModule.load,\n id: moduleId,\n type: 0,\n // @ts-ignore\n uri: '',\n show: false,\n focus: false,\n top: points[kTop],\n left: points[kLeft],\n width: points[kWidth],\n height: points[kHeight],\n })\n if (commands) {\n commands.push(['Viewlet.append', 'Layout', moduleId])\n }\n await RendererProcess.invoke('Viewlet.sendMultiple', commands)\n // TODO\n // 2. load module\n // 3. if module is still visible, replace placeholder with actual viewlet\n // 4. else do nothing\n } catch (error) {\n throw new VError(error, `Failed to show ${module.moduleId}`)\n }\n}\n\nconst showPlaceholder = (points, module) => {\n const { moduleId, kTop, kLeft, kWidth, kHeight } = module\n return [\n 'Viewlet.createPlaceholder',\n /* id */ moduleId,\n /* parentId */ 'Layout',\n /* top */ points[kTop],\n /* left */ points[kLeft],\n /* width */ points[kWidth],\n /* height */ points[kHeight],\n ]\n}\n\nexport const handleSashPointerMove = (state, x, y) => {\n const { points, sashId } = state\n const newPoints = getNewStatePointerMove(sashId, points, x, y)\n getPoints(newPoints, newPoints)\n // TODO resize commands, resize viewlets recursively\n const allCommands = getResizeCommands(points, newPoints)\n const newState = {\n ...state,\n points: newPoints,\n }\n const modules = [mPanel, mSideBar]\n for (const module of modules) {\n const { kVisible, moduleId } = module\n if (points[kVisible] !== newPoints[kVisible]) {\n if (newPoints[kVisible]) {\n showAsync(newPoints, module) // TODO avoid side effect\n const commands = showPlaceholder(newPoints, module)\n allCommands.push(commands)\n } else {\n const commands = Viewlet.disposeFunctional(moduleId)\n allCommands.push(...commands)\n }\n }\n }\n return {\n newState,\n commands: allCommands,\n }\n}\n\nexport const handleResize = (state, windowWidth, windowHeight) => {\n const { points } = state\n const newPoints = new Uint16Array(points)\n newPoints[kWindowWidth] = windowWidth\n newPoints[kWindowHeight] = windowHeight\n getPoints(newPoints, newPoints)\n // TODO duplicate code with handleSashPointerMove\n const commands = getResizeCommands(points, newPoints)\n return {\n newState: {\n ...state,\n points: newPoints,\n },\n commands,\n }\n}\n\nconst handleSashDoubleClickPanel = (state) => {\n const { points } = state\n if (points[kPanelVisible]) {\n const newPoints = new Uint16Array(points)\n newPoints[kPanelHeight] = 200\n getPoints(newPoints, newPoints)\n const commands = getResizeCommands(points, newPoints)\n return {\n newState: {\n ...state,\n points: newPoints,\n },\n commands,\n }\n }\n return {\n newState: state,\n commands: [],\n }\n}\n\n// TODO return commands and newState\nconst handleSashDoubleClickSideBar = (state) => {\n const { points } = state\n if (points[kSideBarVisible]) {\n const newPoints = new Uint16Array(points)\n newPoints[kSideBarWidth] = 240\n getPoints(newPoints, newPoints)\n const commands = getResizeCommands(points, newPoints)\n return {\n newState: {\n ...state,\n points: newPoints,\n },\n commands,\n }\n }\n return {\n newState: state,\n commands: [],\n }\n}\n\nexport const moveSideBar = (state, position) => {\n const { points } = state\n const newPoints = new Uint16Array(points)\n getPoints(newPoints, newPoints, position)\n // TODO update preferences\n const resizeCommands = getResizeCommands(points, newPoints)\n return {\n newState: {\n ...state,\n points: newPoints,\n sideBarLocation: position,\n },\n commands: resizeCommands,\n }\n}\n\nexport const moveSideBarLeft = (state) => {\n return moveSideBar(state, SideBarLocationType.Left)\n}\n\nexport const moveSideBarRight = (state) => {\n return moveSideBar(state, SideBarLocationType.Right)\n}\n\nexport const toggleSideBarPosition = (state) => {\n const { sideBarLocation } = state\n if (sideBarLocation === SideBarLocationType.Left) {\n return moveSideBarRight(state)\n } else {\n return moveSideBarLeft(state)\n }\n}\n\nexport const handleSashDoubleClick = (state, sashId) => {\n switch (sashId) {\n case SashType.Panel:\n return handleSashDoubleClickPanel(state)\n case SashType.SideBar:\n return handleSashDoubleClickSideBar(state)\n default:\n throw new Error(`unsupported sash type ${sashId}`)\n }\n}\n\nexport const isSideBarVisible = (state) => {\n const { points } = state\n return points[kSideBarVisible]\n}\n\nexport const getInitialPlaceholderCommands = (state) => {\n const { points } = state\n const commands = []\n const modules = [mTitleBar, mMain, mSideBar, mActivityBar, mPanel, mStatusBar]\n for (const module of modules) {\n const { kVisible, kTop, kLeft, kWidth, kHeight, moduleId } = module\n if (points[kVisible]) {\n commands.push([\n 'Viewlet.createPlaceholder',\n moduleId,\n ViewletModuleId.Layout,\n points[kTop],\n points[kLeft],\n points[kWidth],\n points[kHeight],\n ])\n }\n }\n return commands\n}\n\nexport const hasFunctionalRender = true\n\nconst renderSashes = {\n isEqual(oldState, newState) {\n return false\n },\n apply(oldState, newState) {\n const { points } = newState\n const sideBarLeft = points[kSideBarLeft]\n const sideBarTop = points[kSideBarTop]\n const sideBarHeight = points[kSideBarHeight]\n const panelTop = points[kpanelTop]\n const panelLeft = points[kPanelLeft]\n const panelWidth = points[kPanelWidth]\n return [\n 'Viewlet.send',\n ViewletModuleId.Layout,\n 'setSashes',\n {\n id: 'SashSideBar',\n top: sideBarTop,\n left: sideBarLeft,\n width: 4,\n height: sideBarHeight,\n direction: SashDirectionType.Horizontal,\n },\n {\n id: 'SashPanel',\n top: panelTop,\n left: panelLeft,\n width: panelWidth,\n height: 4,\n direction: SashDirectionType.Vertical,\n },\n ]\n },\n}\n\nexport const render = [renderSashes]\n", "import * as ViewletLayout from './ViewletLayout.js'\n\nexport const name = 'Layout'\n\n// prettier-ignore\nexport const Commands = {\n 'Layout.handleSashPointerDown': ViewletLayout.handleSashPointerDown,\n}\n\nexport const CommandsWithSideEffects = {\n handleResize: ViewletLayout.handleResize,\n handleSashDoubleClick: ViewletLayout.handleSashDoubleClick,\n handleSashPointerMove: ViewletLayout.handleSashPointerMove,\n hideActivityBar: ViewletLayout.hideActivityBar,\n hideMain: ViewletLayout.hideMain,\n hidePanel: ViewletLayout.hidePanel,\n hideSideBar: ViewletLayout.hideSideBar,\n hideStatusBar: ViewletLayout.hideStatusBar,\n hideTitleBar: ViewletLayout.hideTitleBar,\n loadActivityBarIfVisible: ViewletLayout.loadActivityBarIfVisible,\n loadMainIfVisible: ViewletLayout.loadMainIfVisible,\n loadPanelIfVisible: ViewletLayout.loadPanelIfVisible,\n loadSideBarIfVisible: ViewletLayout.loadSideBarIfVisible,\n loadStatusBarIfVisible: ViewletLayout.loadStatusBarIfVisible,\n loadTitleBarIfVisible: ViewletLayout.loadTitleBarIfVisible,\n showActivityBar: ViewletLayout.showActivityBar,\n showMain: ViewletLayout.showMain,\n showPanel: ViewletLayout.showPanel,\n showSideBar: ViewletLayout.showSideBar,\n showStatusBar: ViewletLayout.showStatusBar,\n showTitleBar: ViewletLayout.showTitleBar,\n toggleActivityBar: ViewletLayout.toggleActivityBar,\n toggleMain: ViewletLayout.toggleMain,\n togglePanel: ViewletLayout.togglePanel,\n toggleSideBar: ViewletLayout.toggleSideBar,\n toggleStatusBar: ViewletLayout.toggleStatusBar,\n toggleTitleBar: ViewletLayout.toggleTitleBar,\n moveSideBarLeft: ViewletLayout.moveSideBarLeft,\n moveSideBarRight: ViewletLayout.moveSideBarRight,\n toggleSideBarPosition: ViewletLayout.toggleSideBarPosition,\n}\n\nexport * from './ViewletLayout.js'\n", "import * as ElectronProcess from '../ElectronProcess/ElectronProcess.js'\n\nexport const resizeBrowserView = (id, left, top, width, height) => {\n return ElectronProcess.invoke(\n 'ElectronBrowserViewFunctions.resizeBrowserView',\n id,\n left,\n top,\n width,\n height\n )\n}\n\nexport const setIframeSrc = async (id, iframeSrc) => {\n return ElectronProcess.invoke(\n 'ElectronBrowserViewFunctions.setIframeSrc',\n id,\n iframeSrc\n )\n}\n\nexport const focus = (id) => {\n return ElectronProcess.invoke('ElectronBrowserViewFunctions.focus', id)\n}\n\nexport const openDevtools = (id) => {\n return ElectronProcess.invoke('ElectronBrowserViewFunctions.openDevtools', id)\n}\n\nexport const reload = (id) => {\n return ElectronProcess.invoke('ElectronBrowserViewFunctions.reload', id)\n}\n\nexport const forward = (id) => {\n return ElectronProcess.invoke('ElectronBrowserViewFunctions.forward', id)\n}\n\nexport const backward = (id) => {\n return ElectronProcess.invoke('ElectronBrowserViewFunctions.backward', id)\n}\n\nexport const cancelNavigation = (id) => {\n return ElectronProcess.invoke(\n 'ElectronBrowserViewFunctions.cancelNavigation',\n id\n )\n}\n\nexport const show = (id) => {\n return ElectronProcess.invoke('ElectronBrowserViewFunctions.show', id)\n}\n\nexport const hide = (id) => {\n return ElectronProcess.invoke('ElectronBrowserViewFunctions.hide', id)\n}\n\nexport const inspectElement = (id, x, y) => {\n return ElectronProcess.invoke(\n 'ElectronBrowserViewFunctions.inspectElement',\n id,\n x,\n y\n )\n}\n\nexport const copyImageAt = (id, x, y) => {\n return ElectronProcess.invoke(\n 'ElectronBrowserViewFunctions.copyImageAt',\n id,\n x,\n y\n )\n}\n\nexport const setFallthroughKeyBindings = (fallthroughKeyBindings) => {\n return ElectronProcess.invoke(\n 'ElectronBrowserViewFunctions.setFallthroughKeyBindings',\n fallthroughKeyBindings\n )\n}\n\nexport const getStats = (id) => {\n return ElectronProcess.invoke('ElectronBrowserViewFunctions.getStats', id)\n}\n", "const isValidHttpUrl = (string) => {\n if (!string.startsWith('http:') && !string.startsWith('https:')) {\n return false\n }\n try {\n const url = new URL(string)\n return url.protocol === 'http:' || url.protocol === 'https:'\n } catch {\n return false\n }\n}\n\nconst createUrl = (baseUrl, params) => {\n return baseUrl + '?' + new URLSearchParams(params).toString()\n}\n\nconst createSearchUrlWithGoogle = (input) => {\n const searchUrl = 'https://www.google.com/search'\n const params = {\n q: input,\n }\n return createUrl(searchUrl, params)\n}\n\n// TODO add preference option for search engine\nconst createSearchUrl = (input) => {\n return createSearchUrlWithGoogle(input)\n}\n\nconst isValidFileUrl = (input) => {\n return input.startsWith('file://')\n}\n\nconst isValidFilePath = (input) => {\n return input.startsWith('/')\n}\n\nexport const toIframeSrc = (input) => {\n if (isValidHttpUrl(input) || isValidFileUrl(input)) {\n return input\n }\n if (isValidFilePath(input)) {\n return 'file://' + input\n }\n const dotIndex = input.indexOf('.')\n if (dotIndex !== -1 && dotIndex !== input.length - 1) {\n return 'https://' + input\n }\n return createSearchUrl(input)\n}\n", "import * as Command from '../Command/Command.js'\nimport * as ErrorHandling from '../ErrorHandling/ErrorHandling.js'\nimport * as RendererProcess from '../RendererProcess/RendererProcess.js'\nimport { VError } from '../VError/VError.js'\n\nexport const getKeyBindings = async () => {\n return Command.execute(\n /* KeyBindingsInitial.getKeyBindings */ 'KeyBindingsInitial.getKeyBindings'\n )\n}\n\nexport const hydrate = async () => {\n try {\n const keyBindings = await getKeyBindings()\n await RendererProcess.invoke(\n /* KeyBindings.hydrate */ 'KeyBindings.hydrate',\n /* keyBindings */ keyBindings\n )\n } catch (error) {\n ErrorHandling.handleError(new VError(error, 'Failed to load KeyBindings'))\n }\n}\n\n// TODO where to store keybindings? need them here and in renderer process\n// how to avoid duplicate loading / where to store them and keep them in sync?\nexport const lookupKeyBinding = (commandId) => {\n switch (commandId) {\n case 'scm.acceptInput':\n return 'Ctrl+Enter'\n default:\n return ''\n }\n}\n\nexport const handleKeyBinding = async (keyBinding) => {\n await Command.execute(\n /* command */ keyBinding.command,\n // TODO should args always be defined? (probably yes -> monomorphism & simpler code since all objects are the same)\n ...(keyBinding.args || [])\n )\n // TODO\n // else if (typeof keyBinding.command === 'string') {\n // // TODO should calling command be async ? (actually don't care if it resolves -> can just send error event in case of error)\n // await SharedProcess.invoke(\n // /* ExtensionHost.executeCommand */ 'ExtensionHost.executeCommand',\n // /* commandId */ keyBinding.command,\n // ...(keyBinding.args || [])\n // )\n // }\n}\n", "// based on vscode's simple browser by Microsoft (https://github.com/microsoft/vscode/blob/e8fe2d07d31f30698b9262dd5e1fcc59a85c6bb1/extensions/simple-browser/src/extension.ts, License MIT)\n\nimport * as Assert from '../Assert/Assert.js'\nimport * as ElectronBrowserView from '../ElectronBrowserView/ElectronBrowserView.js'\nimport * as ElectronBrowserViewFunctions from '../ElectronBrowserViewFunctions/ElectronBrowserViewFunctions.js'\nimport * as IframeSrc from '../IframeSrc/IframeSrc.js'\nimport * as KeyBindings from '../KeyBindings/KeyBindings.js'\nimport * as ViewletModuleId from '../ViewletModuleId/ViewletModuleId.js'\n\nexport const create = (id, uri, left, top, width, height) => {\n return {\n id,\n uri,\n top,\n left,\n width,\n height,\n headerHeight: 30,\n iframeSrc: '',\n inputValue: '',\n title: '',\n browserViewId: 0,\n canGoForward: true,\n canGoBack: true,\n isLoading: false,\n }\n}\n\nconst isFallThroughKeyBinding = (keyBinding) => {\n return !keyBinding.when\n}\n\nconst getFallThroughKeyBindings = (keyBindings) => {\n return keyBindings.filter(isFallThroughKeyBinding)\n}\n\nexport const saveState = (state) => {\n const { iframeSrc } = state\n return {\n iframeSrc,\n }\n}\n\nconst getUrlFromSavedState = (savedState) => {\n if (savedState && savedState.iframeSrc) {\n return savedState.iframeSrc\n }\n return 'https://example.com'\n}\n\nexport const backgroundLoadContent = async (state, savedState) => {\n // TODO duplicate code with loadContent\n const { top, left, width, height, headerHeight } = state\n const iframeSrc = getUrlFromSavedState(savedState)\n // TODO since browser view is not visible at this point\n // it is not necessary to load keybindings for it\n const keyBindings = await KeyBindings.getKeyBindings()\n const fallThroughKeyBindings = getFallThroughKeyBindings(keyBindings)\n const browserViewId = await ElectronBrowserView.createBrowserView(0)\n await ElectronBrowserViewFunctions.setFallthroughKeyBindings(\n fallThroughKeyBindings\n )\n Assert.number(browserViewId)\n await ElectronBrowserViewFunctions.resizeBrowserView(\n browserViewId,\n top + headerHeight,\n left,\n width,\n height - headerHeight\n )\n const { newTitle } = await ElectronBrowserViewFunctions.setIframeSrc(\n browserViewId,\n iframeSrc\n )\n return {\n title: newTitle,\n uri: `simple-browser://${browserViewId}`,\n iframeSrc,\n }\n}\n\nconst getId = (idPart) => {\n if (!idPart) {\n return 0\n }\n return parseInt(idPart)\n}\n\nexport const loadContent = async (state, savedState) => {\n const { top, left, width, height, headerHeight, uri } = state\n const idPart = uri.slice('simple-browser://'.length)\n const id = getId(idPart)\n const iframeSrc = getUrlFromSavedState(savedState)\n // TODO load keybindings in parallel with creating browserview\n const keyBindings = await KeyBindings.getKeyBindings()\n if (id) {\n const actualId = await ElectronBrowserView.createBrowserView(id)\n await ElectronBrowserViewFunctions.setFallthroughKeyBindings(keyBindings)\n await ElectronBrowserViewFunctions.resizeBrowserView(\n actualId,\n top + headerHeight,\n left,\n width,\n height - headerHeight\n )\n if (id !== actualId) {\n await ElectronBrowserViewFunctions.setIframeSrc(actualId, iframeSrc)\n }\n return {\n ...state,\n iframeSrc,\n title: 'Simple Browser',\n browserViewId: actualId,\n }\n }\n\n const fallThroughKeyBindings = getFallThroughKeyBindings(keyBindings)\n const browserViewId = await ElectronBrowserView.createBrowserView(\n /* restoreId */ 0\n )\n await ElectronBrowserViewFunctions.setFallthroughKeyBindings(\n fallThroughKeyBindings\n )\n await ElectronBrowserViewFunctions.resizeBrowserView(\n browserViewId,\n top + headerHeight,\n left,\n width,\n height - headerHeight\n )\n Assert.number(browserViewId)\n await ElectronBrowserViewFunctions.setIframeSrc(browserViewId, iframeSrc)\n const { title, canGoBack, canGoForward } =\n await ElectronBrowserViewFunctions.getStats(browserViewId)\n return {\n ...state,\n iframeSrc,\n title,\n browserViewId,\n canGoBack,\n canGoForward,\n uri: `simple-browser://${browserViewId}`,\n }\n}\n\nexport const show = async (state) => {\n const { browserViewId } = state\n await ElectronBrowserViewFunctions.show(browserViewId)\n}\n\nexport const hide = async (state) => {\n const { browserViewId } = state\n await ElectronBrowserViewFunctions.hide(browserViewId)\n}\n\nexport const handleInput = (state, value) => {\n // TODO maybe show autocomplete for urls like browsers do\n return {\n ...state,\n inputValue: value,\n }\n}\n\nexport const go = (state) => {\n const { inputValue, browserViewId } = state\n const iframeSrc = IframeSrc.toIframeSrc(inputValue)\n // TODO await promises\n void ElectronBrowserViewFunctions.setIframeSrc(browserViewId, iframeSrc)\n void ElectronBrowserViewFunctions.focus(browserViewId)\n return {\n ...state,\n iframeSrc,\n isLoading: true,\n }\n}\n\nexport const hasFunctionalRender = true\n\nexport const handleWillNavigate = (state, url, canGoBack, canGoForward) => {\n return {\n ...state,\n iframeSrc: url,\n canGoBack,\n canGoForward,\n isLoading: true,\n }\n}\n\nexport const handleDidNavigate = (state, url, canGoBack, canGoForward) => {\n return {\n ...state,\n iframeSrc: url,\n canGoBack,\n canGoForward,\n isLoading: false,\n }\n}\n\nexport const handleDidNavigationCancel = (state, url) => {\n return {\n ...state,\n isLoading: false,\n }\n}\n\nexport const handleTitleUpdated = (state, title) => {\n return {\n ...state,\n title,\n }\n}\n\nexport const hasFunctionalResize = true\n\nexport const resize = (state, dimensions) => {\n return {\n ...state,\n ...dimensions,\n }\n}\n\nexport const resizeEffect = async (state) => {\n const { headerHeight, browserViewId, top, left, width, height } = state\n await ElectronBrowserViewFunctions.resizeBrowserView(\n browserViewId,\n top + headerHeight,\n left,\n width,\n height - headerHeight\n )\n}\n\nexport const dispose = async (state) => {\n const { browserViewId } = state\n await ElectronBrowserView.disposeBrowserView(browserViewId)\n}\n\nconst renderIframeSrc = {\n isEqual(oldState, newState) {\n return oldState.iframeSrc === newState.iframeSrc\n },\n apply(oldState, newState) {\n return ['setIframeSrc', newState.iframeSrc]\n },\n}\n\n// TODO this component shouldn't depend on Main\nconst renderTitle = {\n isEqual(oldState, newState) {\n return oldState.title === newState.title\n },\n apply(oldState, newState) {\n return [\n 'Viewlet.send',\n ViewletModuleId.Main,\n 'updateTab',\n 0,\n newState.title,\n ]\n },\n}\n\nconst renderButtonsEnabled = {\n isEqual(oldState, newState) {\n return (\n oldState.canGoBack === newState.canGoBack &&\n oldState.canGoForward === newState.canGoForward\n )\n },\n apply(oldState, newState) {\n return [\n /* method */ 'setButtonsEnabled',\n /* canGoBack */ newState.canGoBack,\n /* canGoFoward */ newState.canGoForward,\n ]\n },\n}\n\nconst renderLoading = {\n isEqual(oldState, newState) {\n return oldState.isLoading === newState.isLoading\n },\n apply(oldState, newState) {\n return [/* method */ 'setLoading', /* isLoading */ newState.isLoading]\n },\n}\n\nexport const render = [\n renderIframeSrc,\n renderTitle,\n renderButtonsEnabled,\n renderLoading,\n]\n", "import * as Command from '../Command/Command.js'\n\nexport const openExternal = async (state) => {\n const { iframeSrc } = state\n await Command.execute('Open.openExternal', iframeSrc)\n return state\n}\n", "import * as Command from '../Command/Command.js'\n\nexport const openBackgroundTab = async (state, url) => {\n const simpleBrowserUrl = `simple-browser://`\n await Command.execute('Main.openBackgroundTab', simpleBrowserUrl, {\n iframeSrc: url,\n })\n // TODO\n return state\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as ElectronMenu from '../ElectronMenu/ElectronMenu.js'\nimport * as MenuEntryId from '../MenuEntryId/MenuEntryId.js'\n\nexport const handleContextMenu = async (state, params) => {\n Assert.object(state)\n Assert.object(params)\n const { x, y } = params\n const { top, headerHeight, left } = state\n const actualX = left + x\n const actualY = top + headerHeight + y\n const args = [actualX, actualY, params]\n await ElectronMenu.openContextMenu(\n actualX,\n actualY,\n MenuEntryId.SimpleBrowser,\n ...args\n )\n return state\n}\n", "import * as ElectronBrowserViewFunctions from '../ElectronBrowserViewFunctions/ElectronBrowserViewFunctions.js'\n\nexport const inspectElement = async (state, x, y) => {\n const { browserViewId } = state\n await ElectronBrowserViewFunctions.inspectElement(browserViewId, x, y)\n return state\n}\n", "import * as ElectronBrowserViewFunctions from '../ElectronBrowserViewFunctions/ElectronBrowserViewFunctions.js'\n\nexport const copyImage = async (state, x, y) => {\n const { browserViewId } = state\n await ElectronBrowserViewFunctions.copyImageAt(browserViewId, x, y)\n return state\n}\n", "import * as ElectronBrowserViewFunctions from '../ElectronBrowserViewFunctions/ElectronBrowserViewFunctions.js'\n\nexport const backward = async (state) => {\n const { browserViewId } = state\n await ElectronBrowserViewFunctions.backward(browserViewId)\n const { url, canGoBack, canGoForward } =\n await ElectronBrowserViewFunctions.getStats(browserViewId)\n return {\n ...state,\n isLoading: false,\n canGoBack,\n canGoForward,\n iframeSrc: url,\n }\n}\n", "import * as ElectronBrowserViewFunctions from '../ElectronBrowserViewFunctions/ElectronBrowserViewFunctions.js'\n\nexport const forward = async (state) => {\n const { browserViewId, canGoForward } = state\n if (!canGoForward) {\n return {\n ...state,\n isLoading: false,\n }\n }\n const newCanGoForward = await ElectronBrowserViewFunctions.forward(\n browserViewId\n )\n return {\n ...state,\n isLoading: true,\n canGoBack: true,\n canGoForward: newCanGoForward,\n }\n}\n", "import * as ElectronBrowserViewFunctions from '../ElectronBrowserViewFunctions/ElectronBrowserViewFunctions.js'\n\n\nexport const openDevtools = async (state) => {\n const { browserViewId } = state\n await ElectronBrowserViewFunctions.openDevtools(browserViewId)\n return state\n}\n", "import * as ElectronBrowserViewFunctions from '../ElectronBrowserViewFunctions/ElectronBrowserViewFunctions.js'\n\nexport const reload = async (state) => {\n const { browserViewId } = state\n await ElectronBrowserViewFunctions.reload(browserViewId)\n return {\n ...state,\n isLoading: true,\n }\n}\n", "import * as ElectronBrowserViewFunctions from '../ElectronBrowserViewFunctions/ElectronBrowserViewFunctions.js'\n\nexport const cancelNavigation = async (state) => {\n const { browserViewId } = state\n await ElectronBrowserViewFunctions.cancelNavigation(browserViewId)\n const { url, canGoBack, canGoForward } =\n await ElectronBrowserViewFunctions.getStats(browserViewId)\n return {\n ...state,\n isLoading: false,\n iframeSrc: url,\n canGoBack,\n canGoForward,\n }\n}\n", "import * as SimpleBrowser from './ViewletSimpleBrowser.js'\n\nexport const name = 'SimpleBrowser'\n\n// prettier-ignore\nexport const Commands = {\n go: SimpleBrowser.go,\n handleDidNavigate: SimpleBrowser.handleDidNavigate,\n handleDidNavigationCancel: SimpleBrowser.handleDidNavigationCancel,\n handleInput: SimpleBrowser.handleInput,\n handleTitleUpdated: SimpleBrowser.handleTitleUpdated,\n handleWillNavigate: SimpleBrowser.handleWillNavigate,\n}\n\nexport const LazyCommands = {\n openExternal: () => import('./ViewletSimpleBrowserOpenExternal.js'),\n openBackgroundTab: () => import('./ViewletSimpleBrowserOpenBackgroundTab.js'),\n handleContextMenu: () => import('./ViewletSimpleBrowserHandleContextMenu.js'),\n inspectElement: () => import('./ViewletSimpleBrowserInspectElement.js'),\n copyImage: () => import('./ViewletSimpleBrowserCopyImage.js'),\n backward: () => import('./ViewletSimpleBrowserBackward.js'),\n forward: () => import('./ViewletSimpleBrowserForward.js'),\n openDevtools: () => import('./ViewletSimpleBrowserOpenDevtools.js'),\n reload: () => import('./ViewletSimpleBrowserReload.js'),\n cancelNavigation: () => import('./ViewletSimpleBrowserCancelNavigation.js'),\n}\n\nexport const Css = [\n '/css/parts/ViewletSimpleBrowser.css',\n '/css/parts/IconButton.css',\n '/css/parts/InputBox.css',\n]\n\nexport * from './ViewletSimpleBrowser.js'\n", "import * as Callback from '../Callback/Callback.js'\nimport * as RendererProcess from '../RendererProcess/RendererProcess.js'\nimport * as Assert from '../Assert/Assert.js'\n\nexport const create = async (canvasId) => {\n Assert.number(canvasId)\n const response = await new Promise(async (resolve, reject) => {\n const id = Callback.register(resolve, reject)\n await RendererProcess.invoke('OffscreenCanvas.create', canvasId, id)\n })\n const canvas = response.params[0]\n return canvas\n}\n", "import * as IpcParent from '../IpcParent/IpcParent.js'\n\nexport const create = async ({ method }) => {\n const url = new URL(\n '../../../../pdf-worker/src/pdfWorkerMain.js',\n import.meta.url\n ).toString()\n const worker = await IpcParent.create({\n method,\n url,\n name: 'Pdf Worker',\n })\n return worker\n}\n", "import * as Callback from '../Callback/Callback.js'\nimport * as PdfWorkerIpc from '../PdfWorkerIpc/PdfWorkerIpc.js'\n\nconst handleMessage = (message) => {\n if ('id' in message) {\n if ('result' in message) {\n Callback.resolve(message.id, message.result)\n } else if ('error' in message) {\n Callback.reject(message.id, new Error(message.error))\n }\n }\n}\n\nexport const create = async ({ method }) => {\n const ipc = await PdfWorkerIpc.create({ method })\n ipc.onmessage = handleMessage\n return {\n send(message) {\n ipc.send(message)\n },\n sendAndTransfer(message, transfer) {\n ipc.sendAndTransfer(message, transfer)\n },\n }\n}\n", "import * as Callback from '../Callback/Callback.js'\nimport * as JsonRpcVersion from '../JsonRpcVersion/JsonRpcVersion.js'\n\nexport const invoke = (ipc, method, ...params) => {\n return new Promise((resolve, reject) => {\n const callbackId = Callback.register(resolve, reject)\n ipc.send({\n jsonrpc: JsonRpcVersion.Two,\n id: callbackId,\n method,\n params,\n })\n })\n}\n\nexport const invokeAndTransfer = (ipc, method, transfer, ...params) => {\n return new Promise((resolve, reject) => {\n const callbackId = Callback.register(resolve, reject)\n ipc.sendAndTransfer(\n {\n jsonrpc: JsonRpcVersion.Two,\n id: callbackId,\n method,\n params,\n },\n transfer\n )\n })\n}\n\nexport const sendCanvas = (ipc, canvasId, offscreenCanvas) => {\n return invokeAndTransfer(\n ipc,\n 'Canvas.addCanvas',\n [offscreenCanvas],\n canvasId,\n offscreenCanvas\n )\n}\n\nexport const setContent = (ipc, canvasId, content) => {\n return invoke(ipc, 'Canvas.setContent', canvasId, content)\n}\n\nexport const resize = (ipc, canvasId, width, height) => {\n return invoke(ipc, 'Canvas.resize', canvasId, width, height)\n}\nexport const render = (ipc, canvasId) => {\n return invoke(ipc, 'Canvas.render', canvasId)\n}\n\nexport const focusPage = (ipc, canvasId, page) => {\n return invoke(ipc, 'Canvas.focusPage', canvasId, page)\n}\n", "import * as EncodingType from '../EncodingType/EncodingType.js'\nimport * as FileSystem from '../FileSystem/FileSystem.js'\nimport * as Id from '../Id/Id.js'\nimport * as IpcParentType from '../IpcParentType/IpcParentType.js'\nimport * as OffscreenCanvas from '../OffscreenCanvas/OffscreenCanvas.js'\nimport * as PdfWorker from '../PdfWorker/PdfWorker.js'\nimport * as PdfWorkerFunctions from '../PdfWorkerFunctions/PdfWorkerFunctions.js'\nimport * as ViewletModuleId from '../ViewletModuleId/ViewletModuleId.js'\n\nexport const create = (id, uri, top, left, width, height) => {\n return {\n id,\n uri,\n top,\n left,\n width,\n height,\n content: '',\n ipc: undefined,\n canvas: undefined,\n canvasId: 0,\n page: 0,\n numberOfPages: 0,\n }\n}\n\nexport const saveState = (state) => {\n const { uri } = state\n return {\n uri,\n }\n}\n\nexport const loadContent = async (state) => {\n const { uri, width, height } = state\n const content = await FileSystem.readFile(uri, EncodingType.Binary)\n const canvasId = Id.create()\n const ipc = await PdfWorker.create({\n method: IpcParentType.ModuleWorker,\n })\n const canvas = await OffscreenCanvas.create(canvasId)\n await PdfWorkerFunctions.sendCanvas(ipc, canvasId, canvas)\n const { numberOfPages } = await PdfWorkerFunctions.setContent(\n ipc,\n canvasId,\n content\n )\n await PdfWorkerFunctions.resize(ipc, canvasId, width, height)\n return {\n ...state,\n content,\n ipc,\n canvas,\n canvasId,\n numberOfPages,\n }\n}\n\nexport const hasFunctionalResize = true\n\nexport const resize = (state, dimensions) => {\n return { ...state, ...dimensions }\n}\n\nexport const resizeEffect = async (state) => {\n const { canvasId, width, height, ipc } = state\n await PdfWorkerFunctions.resize(ipc, canvasId, width, height)\n}\n\nexport const hasFunctionalRender = true\n\nconst renderCanvas = {\n isEqual(oldState, newState) {\n return oldState.canvasId === newState.canvasId\n },\n apply(oldState, newState) {\n return ['Viewlet.send', 'Pdf', 'setCanvas', newState.canvasId]\n },\n}\n\nconst renderNumberOfPages = {\n isEqual(oldState, newState) {\n return oldState.numberOfPages === newState.numberOfPages\n },\n apply(oldState, newState) {\n return [\n 'Viewlet.send',\n ViewletModuleId.Pdf,\n 'setNumberOfPages',\n newState.numberOfPages,\n ]\n },\n}\n\nconst renderPageNumber = {\n isEqual(oldState, newState) {\n return oldState.page === newState.page\n },\n apply(oldState, newState) {\n return ['Viewlet.send', ViewletModuleId.Pdf, 'setPageNumber', newState.page]\n },\n}\n\nexport const render = [renderCanvas, renderNumberOfPages, renderPageNumber]\n", "import * as PdfWorkerFunctions from '../PdfWorkerFunctions/PdfWorkerFunctions.js'\n\nexport const focusPage = async (state, page) => {\n const { canvasId, ipc } = state\n await PdfWorkerFunctions.focusPage(ipc, canvasId, page)\n await PdfWorkerFunctions.render(ipc, canvasId)\n return {\n ...state,\n page,\n }\n}\n", "import { focusPage } from './ViewletPdfFocusPage.js'\n\nexport const previous = (state) => {\n const { page } = state\n if (page <= 0) {\n return state\n }\n return focusPage(state, page - 1)\n}\n", "import { focusPage } from './ViewletPdfFocusPage.js'\n\nexport const next = (state) => {\n const { page, numberOfPages } = state\n if (page >= numberOfPages - 1) {\n return state\n }\n return focusPage(state, page + 1)\n}\n", "export const zoomIn = (state) => {\n throw new Error('not implemented')\n}\n", "export const zoomOut = (state) => {\n throw new Error('not implemented')\n}\n", "export const print = (state) => {\n throw new Error('not implemented')\n}\n", "export const name = 'Pdf'\n\nexport const LazyCommands = {\n previous: () => import('./ViewletPdfPrevious.js'),\n next: () => import('./ViewletPdfNext.js'),\n focusPage: () => import('./ViewletPdfFocusPage.js'),\n zoomIn: () => import('./ViewletPdfZoomIn.js'),\n zoomOut: () => import('./ViewletPdfZoomOut.js'),\n print: () => import('./ViewletPdfPrint.js'),\n}\n\nexport const Css = [\n '/css/parts/ViewletPdf.css',\n '/css/parts/IconButton.css',\n '/css/parts/InputBox.css',\n]\n\nexport * from './ViewletPdf.js'\n", "import * as BlobSrc from '../BlobSrc/BlobSrc.js'\nimport * as ViewletModuleId from '../ViewletModuleId/ViewletModuleId.js'\n\nexport const create = (id, uri) => {\n return {\n uri,\n src: '',\n audioErrorMessage: '',\n }\n}\n\nexport const loadContent = async (state) => {\n // TODO get src from uri\n const { uri } = state\n const src = await BlobSrc.getSrc(uri)\n return {\n ...state,\n src,\n }\n}\n\nconst getImprovedErrorMessage = (message) => {\n return `Failed to load audio: ${message}`\n}\n\nexport const handleAudioError = (state, code, message) => {\n const improvedMessage = getImprovedErrorMessage(message)\n return {\n ...state,\n audioErrorMessage: improvedMessage,\n }\n}\n\nexport const dispose = async (state) => {\n const { src } = state\n await BlobSrc.disposeSrc(src)\n return state\n}\n\nexport const hasFunctionalRender = true\n\nexport const renderSrc = {\n isEqual(oldState, newState) {\n return oldState.src === newState.src\n },\n apply(oldState, newState) {\n return [/* method */ 'setSrc', /* src */ newState.src]\n },\n}\n\nconst renderAudioErrorMessage = {\n isEqual(oldState, newState) {\n return oldState.audioErrorMessage === newState.audioErrorMessage\n },\n apply(oldState, newState) {\n return [\n /* method */ 'setAudioErrorMessage',\n /* src */ newState.audioErrorMessage,\n ]\n },\n}\n\nexport const render = [renderSrc, renderAudioErrorMessage]\n", "import * as ViewletAudio from './ViewletAudio.js'\n\nexport const name = 'Audio'\n\nexport const Commands = {\n handleAudioError: ViewletAudio.handleAudioError,\n}\n\nexport const Css = ['/css/parts/ViewletAudio.css']\n\nexport * from './ViewletAudio.js'\n", "import * as ViewletModuleId from '../ViewletModuleId/ViewletModuleId.js'\n\nexport const load = (moduleId) => {\n switch (moduleId) {\n case ViewletModuleId.Explorer:\n return import('../ViewletExplorer/ViewletExplorer.ipc.js')\n case ViewletModuleId.RunAndDebug:\n return import('../ViewletRunAndDebug/ViewletRunAndDebug.ipc.js')\n case ViewletModuleId.Search:\n return import('../ViewletSearch/ViewletSearch.ipc.js')\n case ViewletModuleId.SourceControl:\n return import('../ViewletSourceControl/ViewletSourceControl.ipc.js')\n case ViewletModuleId.Terminal:\n return import('../ViewletTerminal/ViewletTerminal.ipc.js')\n case ViewletModuleId.DebugConsole:\n return import('../ViewletDebugConsole/ViewletDebugConsole.ipc.js')\n case ViewletModuleId.Extensions:\n return import('../ViewletExtensions/ViewletExtensions.ipc.js')\n case ViewletModuleId.Output:\n return import('../ViewletOutput/ViewletOutput.ipc.js')\n case ViewletModuleId.Problems:\n return import('../ViewletProblems/ViewletProblems.ipc.js')\n case ViewletModuleId.Noop:\n return import('../ViewletNoop/ViewletNoop.ipc.js')\n case ViewletModuleId.EditorText:\n return import('../ViewletEditorText/ViewletEditorText.ipc.js')\n case ViewletModuleId.EditorPlainText:\n return import('../ViewletEditorPlainText/ViewletEditorPlainText.ipc.js')\n case ViewletModuleId.EditorImage:\n return import('../ViewletEditorImage/ViewletEditorImage.ipc.js')\n case ViewletModuleId.Clock:\n return import('../ViewletClock/ViewletClock.ipc.js')\n case ViewletModuleId.ActivityBar:\n return import('../ViewletActivityBar/ViewletActivityBar.ipc.js')\n case ViewletModuleId.Panel:\n return import('../ViewletPanel/ViewletPanel.ipc.js')\n case ViewletModuleId.SideBar:\n return import('../ViewletSideBar/ViewletSideBar.ipc.js')\n case ViewletModuleId.TitleBar:\n return import('../ViewletTitleBar/ViewletTitleBar.ipc.js')\n case ViewletModuleId.StatusBar:\n return import('../ViewletStatusBar/ViewletStatusBar.ipc.js')\n case ViewletModuleId.Main:\n return import('../ViewletMain/ViewletMain.ipc.js')\n case ViewletModuleId.EditorCompletion:\n return import('../ViewletEditorCompletion/ViewletEditorCompletion.ipc.js')\n case ViewletModuleId.References:\n return import('../ViewletReferences/ViewletReferences.ipc.js')\n case ViewletModuleId.Implementations:\n return import('../ViewletImplementations/ViewletImplementations.ipc.js')\n case ViewletModuleId.QuickPick:\n return import('../ViewletQuickPick/ViewletQuickPick.ipc.js')\n case ViewletModuleId.KeyBindings:\n return import('../ViewletKeyBindings/ViewletKeyBindings.ipc.js')\n case ViewletModuleId.FindWidget:\n return import('../ViewletFindWidget/ViewletFindWidget.ipc.js')\n case ViewletModuleId.ExtensionDetail:\n return import('../ViewletExtensionDetail/ViewletExtensionDetail.ipc.js')\n case ViewletModuleId.TitleBarButtons:\n return import('../ViewletTitleBarButtons/ViewletTitleBarButtons.ipc.js')\n case ViewletModuleId.TitleBarMenuBar:\n return import('../ViewletTitleBarMenuBar/ViewletTitleBarMenuBar.ipc.js')\n case ViewletModuleId.Layout:\n return import('../ViewletLayout/ViewletLayout.ipc.js')\n case ViewletModuleId.SimpleBrowser:\n return import('../ViewletSimpleBrowser/ViewletSimpleBrowser.ipc.js')\n case ViewletModuleId.Pdf:\n return import('../ViewletPdf/ViewletPdf.ipc.js')\n case ViewletModuleId.Audio:\n return import('../ViewletAudio/ViewletAudio.ipc.js')\n default:\n throw new Error(`unknown module \"${moduleId}\"`)\n }\n}\n", "import * as ElectronProcess from '../ElectronProcess/ElectronProcess.js'\n\nexport const createBrowserViewQuickPick = (top, left, width, height) => {\n return ElectronProcess.invoke(\n 'ElectronBrowserViewQuickPick.createBrowserViewQuickPick',\n top,\n left,\n width,\n height\n )\n}\n\nexport const disposeBrowserViewQuickPick = () => {\n return ElectronProcess.invoke(\n 'ElectronBrowserViewQuickPick.disposeBrowserViewQuickPick'\n )\n}\n", "import * as ElectronBrowserView from '../ElectronBrowserView/ElectronBrowserView.js'\nimport * as ElectronBrowserViewQuickPick from '../ElectronBrowserViewQuickPick/ElectronBrowserViewQuickPick.js'\nimport * as ElectronWindow from '../ElectronWindow/ElectronWindow.js'\nimport * as IpcParent from '../IpcParent/IpcParent.js'\nimport * as IpcParentType from '../IpcParentType/IpcParentType.js'\nimport * as KeyBindings from '../KeyBindings/KeyBindings.js'\nimport * as RendererProcess from '../RendererProcess/RendererProcess.js'\nimport * as ViewletManager from '../ViewletManager/ViewletManager.js'\nimport * as ViewletModule from '../ViewletModule/ViewletModule.js'\nimport * as ViewletStates from '../ViewletStates/ViewletStates.js'\nimport * as ViewletModuleId from '../ViewletModuleId/ViewletModuleId.js'\nimport * as JsonRpcVersion from '../JsonRpcVersion/JsonRpcVersion.js'\n\nexport const state = {\n isQuickPickOpen: false,\n}\n\nconst isQuickPickKeyBinding = (keyBinding) => {\n return keyBinding.when === 'focus.quickPickInput'\n}\n\nconst getQuickPickKeyBindings = (keyBindings) => {\n return keyBindings.filter(isQuickPickKeyBinding)\n}\n\nexport const isQuickPickOpen = () => {\n return state.isQuickPickOpen\n}\n\nexport const openElectronQuickPick = async (...args) => {\n // TODO avoid side effect\n state.isQuickPickOpen = true\n const id = ViewletModuleId.QuickPick\n const width = 600\n const height = 300\n const viewletLayout = ViewletStates.getState(ViewletModuleId.Layout)\n const windowWidth = viewletLayout.points[0]\n const left = Math.round((windowWidth - width) / 2)\n const top = 50\n const keyBindings = await KeyBindings.getKeyBindings()\n const quickPickKeyBindings = getQuickPickKeyBindings(keyBindings)\n await ElectronBrowserViewQuickPick.createBrowserViewQuickPick(\n top,\n left,\n width,\n height\n )\n const ipc = await IpcParent.create({\n method: IpcParentType.ElectronMessagePort,\n type: 'quickpick',\n })\n const type = args[0]\n const commands = await ViewletManager.load({\n getModule: ViewletModule.load,\n id,\n type: 0,\n // @ts-ignore\n uri: `quickPick://${type}`,\n show: false,\n focus: true,\n })\n\n const handleMessage = async (event) => {\n const { method, params } = event\n const instance = ViewletStates.getInstance(id)\n const oldState = instance.state\n if (method === 'Viewlet.closeWidget') {\n return closeWidgetElectronQuickPick()\n }\n const newState = await instance.factory.Commands[method](\n oldState,\n ...params\n )\n const commands = ViewletManager.render(instance.factory, oldState, newState)\n ipc.send({\n jsonrpc: JsonRpcVersion.Two,\n method: 'executeCommands',\n params: commands,\n })\n instance.state = newState\n }\n ipc.onmessage = handleMessage\n commands.push([\n 'Viewlet.send',\n 'QuickPick',\n 'setKeyBindings',\n quickPickKeyBindings,\n ])\n ipc.send({\n jsonrpc: JsonRpcVersion.Two,\n method: 'executeCommands',\n params: commands,\n })\n}\n\nexport const openWidget = async (id, ...args) => {\n const hasInstance = ViewletStates.hasInstance(id)\n const type = args[0]\n if (ElectronBrowserView.isOpen() && id === 'QuickPick') {\n // TODO recycle quickpick instance\n if (hasInstance) {\n await closeWidgetElectronQuickPick()\n }\n return openElectronQuickPick(...args)\n }\n const commands = await ViewletManager.load({\n getModule: ViewletModule.load,\n id,\n type: 0,\n // @ts-ignore\n uri: `quickPick://${type}`,\n show: false,\n focus: true,\n })\n if (!commands) {\n throw new Error('expected commands to be of type array')\n }\n\n if (hasInstance) {\n commands.unshift(['Viewlet.dispose', id])\n }\n await RendererProcess.invoke('Viewlet.executeCommands', commands)\n // TODO commands should be like this\n // viewlet.create quickpick\n // quickpick.setItems\n // quickpick.setFocusedIndex\n // quickpick.setValue\n // viewlet.show quickpick\n //\n}\n\nexport const closeWidgetElectronQuickPick = async () => {\n const id = ViewletModuleId.QuickPick\n state.isQuickPickOpen = false\n ViewletStates.remove(id)\n await ElectronBrowserViewQuickPick.disposeBrowserViewQuickPick()\n // TODO restore focus to previously focused element\n await ElectronWindow.focus()\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as ElectronBrowserView from '../ElectronBrowserView/ElectronBrowserView.js'\nimport * as GlobalEventBus from '../GlobalEventBus/GlobalEventBus.js'\nimport * as RendererProcess from '../RendererProcess/RendererProcess.js'\nimport * as ViewletManager from '../ViewletManager/ViewletManager.js'\nimport * as ViewletModule from '../ViewletModule/ViewletModule.js'\nimport * as ViewletModuleId from '../ViewletModuleId/ViewletModuleId.js'\nimport * as ViewletStates from '../ViewletStates/ViewletStates.js'\nimport * as ViewletElectron from './ViewletElectron.js'\n\nexport const focus = async (id) => {\n const instance = ViewletStates.getInstance(id)\n if (!instance) {\n return\n }\n const commands = []\n if (instance && instance.factory.focus) {\n const oldState = instance.state\n const newState = instance.factory.focus(oldState)\n commands.push(\n ...ViewletManager.render(instance.factory, oldState, newState)\n )\n }\n const oldInstance = ViewletStates.getFocusedInstance()\n if (oldInstance) {\n if (oldInstance && oldInstance.factory.handleBlur) {\n const oldState = oldInstance.state\n const newState = oldInstance.factory.handleBlur(oldState)\n commands.push(\n ...ViewletManager.render(oldInstance.factory, oldState, newState)\n )\n }\n }\n ViewletStates.setFocusedInstance(instance)\n await RendererProcess.invoke('Viewlet.sendMultiple', commands)\n}\n// export const createOrFocus = async id=>{\n// const instance = state.instances[id] || await create(id)\n// }\n\n/**\n * @deprecated\n */\nexport const refreshInstance = async (instance, id) => {\n if (!instance) {\n return\n }\n if (instance.status === 'refreshing' || instance.status === 'disposed') {\n return\n }\n instance.status = 'refreshing'\n try {\n await instance.factory.refresh(instance.state)\n } catch (error) {\n if (instance.factory.handleError) {\n try {\n await instance.factory.handleError(error)\n } catch (innerError) {\n console.error(innerError)\n console.error(error)\n return\n }\n }\n // TODO use ErrorHandling.handleError\n // TODO show notification maybe\n console.error(error)\n instance.status = 'error'\n return\n }\n instance.status = 'refreshed'\n}\n\n// TODO should refresh instance?\n/**\n * @deprecated\n */\nexport const refresh = async (id) => {\n const instance = ViewletStates.getInstance(id)\n if (!instance) {\n return\n }\n await refreshInstance(instance, id)\n}\n\n/**\n * @deprecated\n */\nexport const send = (id, method, ...args) => {\n const instance = ViewletStates.getInstance(id)\n if (!instance) {\n console.info('instance disposed', { id, method, args })\n return\n }\n const fn = instance.factory[method]\n Assert.fn(fn)\n fn(instance.state, ...args)\n}\n\n/**\n * @deprecated\n */\nexport const dispose = async (id) => {\n if (!id) {\n console.warn('no instance to dispose')\n return\n }\n const instance = ViewletStates.getInstance(id)\n if (!instance) {\n console.info('instance may already be disposed')\n return\n }\n // TODO status should have enum\n instance.status = 'disposing'\n try {\n if (!instance.factory) {\n throw new Error(`${id} is missing a factory function`)\n }\n instance.factory.dispose(instance.state)\n await RendererProcess.invoke(\n /* Viewlet.dispose */ 'Viewlet.dispose',\n /* id */ id\n )\n } catch (error) {\n console.error(error)\n // TODO use Error.cause once proper stack traces are supported by chrome\n throw new Error(`Failed to dispose viewlet ${id}: ${error}`)\n }\n instance.status = 'disposed'\n ViewletStates.remove(id)\n await GlobalEventBus.emitEvent(`Viewlet.dispose.${id}`)\n}\n\nexport const disposeFunctional = (id) => {\n try {\n if (!id) {\n console.warn('no instance to dispose')\n return []\n }\n const instance = ViewletStates.getInstance(id)\n if (!instance) {\n console.info('instance may already be disposed')\n return []\n }\n // TODO status should have enum\n instance.status = 'disposing'\n if (!instance.factory) {\n throw new Error(`${id} is missing a factory function`)\n }\n if (instance.factory.dispose) {\n instance.factory.dispose(instance.state)\n }\n instance.status = 'disposed'\n ViewletStates.remove(id)\n return [[/* Viewlet.dispose */ 'Viewlet.dispose', /* id */ id]]\n } catch (error) {\n console.error(error)\n // TODO use Error.cause once proper stack traces are supported by chrome\n throw new Error(`Failed to dispose viewlet ${id}: ${error}`)\n }\n}\n\n/**\n * @deprecated\n */\nexport const replace = () => {}\n\nexport const resize = (id, dimensions) => {\n const instance = ViewletStates.getInstance(id)\n if (!instance || !instance.factory || !instance.factory.resize) {\n console.warn('cannot resize', id)\n return []\n }\n const oldState = instance.state\n let newState\n let commands\n if (instance.factory.hasFunctionalResize) {\n newState = instance.factory.resize(oldState, dimensions)\n if ('newState' in newState) {\n throw new Error(\n `functional resize not supported in ${instance.factory.name}`\n )\n }\n if (instance.factory.resizeEffect) {\n // TODO handle promise rejection gracefully\n instance.factory.resizeEffect(newState)\n }\n commands = ViewletManager.render(instance.factory, instance.state, newState)\n } else {\n const result = instance.factory.resize(oldState, dimensions)\n newState = result.newState\n commands = result.commands\n }\n Assert.object(newState)\n Assert.array(commands)\n ViewletStates.setState(id, newState)\n return commands\n}\n\nexport const getState = (id) => {\n const instance = ViewletStates.getInstance(id)\n return instance.state\n}\n\nexport const setState = async (id, newState) => {\n const instance = ViewletStates.getInstance(id)\n if (instance && instance.factory && instance.factory.hasFunctionalRender) {\n const oldState = instance.state\n const commands = ViewletManager.render(instance.factory, oldState, newState)\n instance.state = newState\n await RendererProcess.invoke(\n /* Viewlet.sendMultiple */ 'Viewlet.sendMultiple',\n /* commands */ commands\n )\n }\n}\n\nexport const getAllStates = () => {\n const states = Object.create(null)\n for (const [key, value] of Object.entries(ViewletStates.getAllInstances())) {\n states[key] = value.state\n }\n return states\n}\n\nexport const openWidget = async (id, ...args) => {\n const hasInstance = ViewletStates.hasInstance(id)\n const type = args[0]\n if (ElectronBrowserView.isOpen() && id === ViewletModuleId.QuickPick) {\n // TODO recycle quickpick instance\n if (hasInstance) {\n await ViewletElectron.closeWidgetElectronQuickPick()\n }\n return ViewletElectron.openElectronQuickPick(...args)\n }\n const commands = await ViewletManager.load({\n getModule: ViewletModule.load,\n id,\n type: 0,\n // @ts-ignore\n uri: `quickPick://${type}`,\n show: false,\n focus: true,\n })\n if (!commands) {\n throw new Error('expected commands to be of type array')\n }\n\n if (hasInstance) {\n commands.unshift(['Viewlet.dispose', id])\n }\n commands.push(['Viewlet.append', 'Layout', id])\n commands.push(['Viewlet.focus', id])\n await RendererProcess.invoke('Viewlet.executeCommands', commands)\n // TODO commands should be like this\n // viewlet.create quickpick\n // quickpick.setItems\n // quickpick.setFocusedIndex\n // quickpick.setValue\n // viewlet.show quickpick\n //\n}\n\nexport const closeWidget = async (id) => {\n if (\n ElectronBrowserView.isOpen() &&\n id === ViewletElectron.isQuickPickOpen()\n ) {\n return ViewletElectron.closeWidgetElectronQuickPick()\n }\n ViewletStates.remove(id)\n await RendererProcess.invoke(\n /* Viewlet.dispose */ 'Viewlet.dispose',\n /* id */ id\n )\n // TODO restore focus\n}\n\nconst getFn = async (module, fnName) => {\n const fn = module.Commands[fnName]\n if (fn) {\n return fn\n }\n const lazyImport = module.LazyCommands[fnName]\n if (!lazyImport) {\n throw new Error(`Command not found ${module.name}.${fnName}`)\n }\n const importedModule = await lazyImport()\n const lazyFn = importedModule[fnName]\n if (!lazyFn) {\n throw new Error(`Command not found ${module.name}.${fnName}`)\n }\n return lazyFn\n}\n\nexport const executeViewletCommand = async (\n moduleId,\n uidKey,\n uidValue,\n fnName,\n ...args\n) => {\n const instances = ViewletStates.state.instances\n for (const instance of Object.values(instances)) {\n if (\n instance.factory.name === moduleId &&\n instance.state[uidKey] === uidValue\n ) {\n const fn = await getFn(instance.factory, fnName)\n const oldState = instance.state\n const newState = await fn(oldState, ...args)\n const commands = ViewletManager.render(\n instance.factory,\n oldState,\n newState\n )\n ViewletStates.setState(moduleId, newState)\n await RendererProcess.invoke(\n /* Viewlet.sendMultiple */ 'Viewlet.sendMultiple',\n /* commands */ commands\n )\n return\n }\n }\n}\n", "import * as DirentType from '../DirentType/DirentType.js'\nimport * as I18nString from '../I18NString/I18NString.js'\nimport * as MenuItemFlags from '../MenuItemFlags/MenuItemFlags.js'\nimport * as Viewlet from '../Viewlet/Viewlet.js'\n\nexport const UiStrings = {\n NewFile: 'New File',\n NewFolder: 'New Folder',\n OpenContainingFolder: 'Open Containing Folder',\n OpenInIntegratedTerminal: 'Open in integrated Terminal',\n Separator: 'Separator',\n Cut: 'Cut',\n Copy: 'Copy',\n Paste: 'Paste',\n CopyPath: 'Copy Path',\n CopyRelativePath: 'Copy Relative Path',\n Rename: 'Rename',\n Delete: 'Delete',\n}\n\nconst menuEntryNewFile = {\n id: 'newFile',\n label: I18nString.i18nString(UiStrings.NewFile),\n flags: MenuItemFlags.None,\n command: 'Explorer.newFile',\n}\n\nconst menuEntryNewFolder = {\n id: 'newFolder',\n label: I18nString.i18nString(UiStrings.NewFolder),\n flags: MenuItemFlags.None,\n command: 'Explorer.newFolder',\n}\n\nconst menuEntryOpenContainingFolder = {\n id: 'openContainingFolder',\n label: I18nString.i18nString(UiStrings.OpenContainingFolder),\n flags: MenuItemFlags.RestoreFocus,\n command: 'Explorer.openContainingFolder',\n}\n\nconst menuEntryOpenInIntegratedTerminal = {\n id: 'openInIntegratedTerminal',\n label: I18nString.i18nString(UiStrings.OpenInIntegratedTerminal),\n flags: MenuItemFlags.None,\n command: /* TODO */ -1,\n}\n\nconst menuEntrySeparator = {\n id: '',\n label: I18nString.i18nString(UiStrings.Separator),\n flags: MenuItemFlags.Separator,\n command: /* TODO */ -1,\n}\n\nconst menuEntryCut = {\n id: 'cut',\n label: I18nString.i18nString(UiStrings.Cut),\n flags: MenuItemFlags.RestoreFocus,\n command: /* TODO */ -1,\n}\n\nconst menuEntryCopy = {\n id: 'copy',\n label: I18nString.i18nString(UiStrings.Copy),\n flags: MenuItemFlags.RestoreFocus,\n command: 'Explorer.handleCopy',\n}\n\nconst menuEntryPaste = {\n id: 'paste',\n label: I18nString.i18nString(UiStrings.Paste),\n flags: MenuItemFlags.None,\n command: 'Explorer.handlePaste',\n}\n\nconst menuEntryCopyPath = {\n id: 'copyPath',\n label: I18nString.i18nString(UiStrings.CopyPath),\n flags: MenuItemFlags.RestoreFocus,\n command: 'Explorer.copyPath',\n}\n\nconst menuEntryCopyRelativePath = {\n id: 'copyRelativePath',\n label: I18nString.i18nString(UiStrings.CopyRelativePath),\n flags: MenuItemFlags.RestoreFocus,\n command: 'Explorer.copyRelativePath',\n}\n\nconst menuEntryRename = {\n id: 'rename',\n label: I18nString.i18nString(UiStrings.Rename),\n flags: MenuItemFlags.None,\n command: 'Explorer.renameDirent',\n}\n\nconst menuEntryDelete = {\n id: 'delete',\n label: I18nString.i18nString(UiStrings.Delete),\n flags: MenuItemFlags.None,\n command: 'Explorer.removeDirent',\n}\n\nconst ALL_ENTRIES = [\n menuEntryNewFile,\n menuEntryNewFolder,\n menuEntryOpenContainingFolder,\n menuEntryOpenInIntegratedTerminal,\n menuEntrySeparator,\n menuEntryCut,\n menuEntryCopy,\n menuEntryPaste,\n menuEntrySeparator,\n menuEntryCopyPath,\n menuEntryCopyRelativePath,\n menuEntrySeparator,\n menuEntryRename,\n menuEntryDelete,\n]\n\n// TODO there are two possible ways of getting the focused dirent of explorer\n// 1. directly access state of explorer (bad because it directly accesses state of another component)\n// 2. expose getFocusedDirent method in explorer (bad because explorer code should not know about for menuEntriesExplorer, which needs that method)\nconst getFocusedDirent = () => {\n const explorerState = Viewlet.getState('Explorer')\n if (!explorerState || explorerState.focusedIndex < 0) {\n return undefined\n }\n return explorerState.items[explorerState.focusedIndex]\n}\n\nconst getMenuEntriesDirectory = () => {\n return ALL_ENTRIES\n}\nconst getMenuEntriesFile = () => {\n return [\n menuEntryOpenContainingFolder,\n menuEntryOpenInIntegratedTerminal,\n menuEntrySeparator,\n menuEntryCut,\n menuEntryCopy,\n menuEntryPaste,\n menuEntrySeparator,\n menuEntryCopyPath,\n menuEntryCopyRelativePath,\n menuEntrySeparator,\n menuEntryRename,\n menuEntryDelete,\n ]\n}\n\nconst getMenuEntriesDefault = () => {\n return ALL_ENTRIES\n}\n\nconst getMenuEntriesRoot = () => {\n return [\n menuEntryNewFile,\n menuEntryNewFolder,\n menuEntryOpenContainingFolder,\n menuEntryOpenInIntegratedTerminal,\n menuEntrySeparator,\n menuEntryPaste,\n menuEntrySeparator,\n menuEntryCopyPath,\n menuEntryCopyRelativePath,\n ]\n}\n\nexport const getMenuEntries = () => {\n const focusedDirent = getFocusedDirent()\n if (!focusedDirent) {\n return getMenuEntriesRoot()\n }\n switch (focusedDirent.type) {\n case DirentType.Directory:\n return getMenuEntriesDirectory()\n case DirentType.File:\n return getMenuEntriesFile()\n default:\n return getMenuEntriesDefault()\n }\n}\n", "import * as I18nString from '../I18NString/I18NString.js'\nimport * as MenuItemFlags from '../MenuItemFlags/MenuItemFlags.js'\nimport * as MenuEntryId from '../MenuEntryId/MenuEntryId.js'\n\n/**\n * @enum {string}\n */\nexport const UiStrings = {\n NewFile: 'New File',\n NewWindow: 'New Window',\n Separator: 'Separator',\n OpenFile: 'Open File',\n OpenFolder: 'Open Folder',\n OpenRecent: 'Open Recent',\n Exit: 'Exit',\n}\n\nexport const getMenuEntries = () => {\n return [\n {\n id: 'newFile',\n label: I18nString.i18nString(UiStrings.NewFile),\n flags: MenuItemFlags.None,\n command: -1,\n },\n {\n id: 'newWindow',\n label: I18nString.i18nString(UiStrings.NewWindow),\n flags: MenuItemFlags.None,\n command: /* Window.openNew */ 'Window.openNew',\n },\n {\n id: 'separator',\n label: I18nString.i18nString(UiStrings.Separator),\n flags: MenuItemFlags.Separator,\n command: '',\n },\n {\n id: 'openFile',\n label: I18nString.i18nString(UiStrings.OpenFile),\n flags: MenuItemFlags.None,\n command: 'Dialog.openFile',\n },\n {\n id: 'openFolder',\n label: I18nString.i18nString(UiStrings.OpenFolder),\n flags: MenuItemFlags.None,\n command: 'Dialog.openFolder',\n },\n {\n id: MenuEntryId.OpenRecent,\n label: I18nString.i18nString(UiStrings.OpenRecent),\n flags: MenuItemFlags.SubMenu,\n command: '',\n },\n {\n id: 'separator',\n label: I18nString.i18nString(UiStrings.Separator),\n flags: MenuItemFlags.Separator,\n command: '',\n },\n {\n id: 'exit',\n label: I18nString.i18nString(UiStrings.Exit),\n flags: MenuItemFlags.None,\n command: 'Chrome.exit',\n },\n ]\n}\n", "export const getMenuEntries = () => {\n return []\n}\n", "import * as I18nString from '../I18NString/I18NString.js'\nimport * as MenuItemFlags from '../MenuItemFlags/MenuItemFlags.js'\n\nexport const UiStrings = {\n About: 'About',\n ToggleDeveloperTools: 'Toggle Developer Tools',\n OpenProcessExplorer: 'Open Process Explorer',\n}\n\nexport const getMenuEntries = () => {\n return [\n {\n id: 'toggleDeveloperTools',\n label: I18nString.i18nString(UiStrings.ToggleDeveloperTools),\n flags: MenuItemFlags.None,\n command: 'Developer.toggleDeveloperTools',\n },\n {\n id: 'openProcessExplorer',\n label: I18nString.i18nString(UiStrings.OpenProcessExplorer),\n flags: MenuItemFlags.None,\n command: 'Developer.openProcessExplorer',\n },\n {\n id: 'about',\n label: I18nString.i18nString(UiStrings.About),\n flags: MenuItemFlags.None,\n command: 'Dialog.showAbout',\n },\n ]\n}\n", "import * as I18nString from '../I18NString/I18NString.js'\nimport * as MenuItemFlags from '../MenuItemFlags/MenuItemFlags.js'\n\nexport const UiStrings = {\n Enable: 'Enable',\n Disable: 'Disable',\n Uninstall: 'Uninstall',\n InstallAnotherVersion: 'Install Another Version',\n}\n\nexport const getMenuEntries = () => {\n return [\n {\n id: 'enable',\n label: I18nString.i18nString(UiStrings.Enable),\n flags: MenuItemFlags.None,\n command: -1,\n },\n {\n id: 'disable',\n label: I18nString.i18nString(UiStrings.Disable),\n flags: MenuItemFlags.None,\n command: -1,\n },\n {\n id: 'uninstall',\n label: I18nString.i18nString(UiStrings.Disable),\n flags: MenuItemFlags.None,\n command: -1,\n },\n {\n id: 'installAnotherVersion',\n label: I18nString.i18nString(UiStrings.InstallAnotherVersion),\n flags: MenuItemFlags.None,\n command: -1,\n },\n ]\n}\n", "import * as Command from '../Command/Command.js'\nimport * as I18nString from '../I18NString/I18NString.js'\nimport * as MenuItemFlags from '../MenuItemFlags/MenuItemFlags.js'\nimport * as ViewletModuleId from '../ViewletModuleId/ViewletModuleId.js'\n\n/**\n * @enum {string}\n */\nexport const UiStrings = {\n Separator: 'Separator',\n More: 'More ...',\n ClearRecentlyOpened: 'Clear Recently Opened',\n}\n\nconst MAX_MENU_RECENT_ENTRIES = 10\n\nconst toMenuItem = (folder) => {\n return {\n label: folder,\n flags: MenuItemFlags.None,\n command: 'Workspace.setPath',\n args: [folder],\n }\n}\n\nconst getRecentlyOpened = () => {\n return Command.execute(\n /* RecentlyOpened.getRecentlyOpened */ 'RecentlyOpened.getRecentlyOpened'\n )\n}\n\nexport const getMenuEntries = async () => {\n const allItems = await getRecentlyOpened()\n const itemsToShow = allItems.slice(0, MAX_MENU_RECENT_ENTRIES)\n const items = []\n if (itemsToShow.length > 0) {\n items.push(...itemsToShow.map(toMenuItem), {\n id: 'separator',\n label: I18nString.i18nString(UiStrings.Separator),\n flags: MenuItemFlags.Separator,\n command: MenuItemFlags.None,\n })\n }\n items.push(\n {\n id: 'more',\n label: I18nString.i18nString(UiStrings.More),\n flags: MenuItemFlags.None,\n command: 'Viewlet.openWidget',\n args: [ViewletModuleId.QuickPick, 'recent'],\n },\n {\n id: 'separator',\n label: I18nString.i18nString(UiStrings.More),\n flags: MenuItemFlags.Separator,\n command: MenuItemFlags.None,\n },\n {\n id: 'clearRecentlyOpened',\n label: I18nString.i18nString(UiStrings.ClearRecentlyOpened),\n flags: MenuItemFlags.None,\n command: 'RecentlyOpened.clearRecentlyOpened',\n }\n )\n return items\n}\n", "export const getMenuEntries = () => {\n return []\n}\n", "import * as I18nString from '../I18NString/I18NString.js'\nimport * as MenuItemFlags from '../MenuItemFlags/MenuItemFlags.js'\n\nexport const UiStrings = {\n SelectAll: 'Select All',\n CopyLineUp: 'Copy Line Up',\n CopyLineDown: 'Copy Line Down',\n MoveLineUp: 'Move Line Up',\n MoveLineDown: 'Move Line Down',\n DuplicateSelection: 'Duplicate Selection',\n}\n\nexport const getMenuEntries = () => {\n return [\n {\n id: 'selectAll',\n label: I18nString.i18nString(UiStrings.SelectAll),\n flags: MenuItemFlags.None,\n command: 'Editor.selectAll',\n },\n {\n id: 'copyLineUp',\n label: I18nString.i18nString(UiStrings.CopyLineUp),\n flags: MenuItemFlags.None,\n command: 'Editor.copyLineUp',\n },\n {\n id: 'copyLineDown',\n label: I18nString.i18nString(UiStrings.CopyLineDown),\n flags: MenuItemFlags.None,\n command: 'Editor.copyLineDown',\n },\n {\n id: 'moveLineUp',\n label: I18nString.i18nString(UiStrings.MoveLineUp),\n flags: MenuItemFlags.Disabled,\n command: 'Editor.moveLineUp',\n },\n {\n id: 'moveLineDown',\n label: I18nString.i18nString(UiStrings.MoveLineDown),\n flags: MenuItemFlags.Disabled,\n command: 'Editor.moveLineDown',\n },\n ]\n}\n", "import * as I18nString from '../I18NString/I18NString.js'\nimport * as MenuItemFlags from '../MenuItemFlags/MenuItemFlags.js'\n\n/**\n * @enum {string}\n */\nexport const UiStrings = {\n CommandPalette: 'Command Palette',\n Settings: 'Settings',\n KeyboardShortcuts: 'Keyboard Shortcuts',\n ColorTheme: 'Color Theme',\n CheckForUpdates: 'Check For Updates',\n}\n\nconst keyBindingsUri = 'app://keybindings'\n\nexport const getMenuEntries = () => {\n return [\n {\n id: 'commandPalette',\n label: I18nString.i18nString(UiStrings.CommandPalette),\n flags: MenuItemFlags.None,\n command: 'Viewlet.openWidget',\n args: ['QuickPick', 'everything'],\n },\n {\n id: 'settings',\n label: I18nString.i18nString(UiStrings.Settings),\n flags: MenuItemFlags.None,\n command: 'Preferences.openSettingsJson',\n },\n {\n id: 'keyboardShortcuts',\n label: I18nString.i18nString(UiStrings.KeyboardShortcuts),\n flags: MenuItemFlags.None,\n command: 'Main.openUri',\n args: [keyBindingsUri],\n },\n {\n id: 'colorTheme',\n label: I18nString.i18nString(UiStrings.ColorTheme),\n flags: MenuItemFlags.None,\n command: 'Viewlet.openWidget',\n args: ['QuickPick', 'color-theme'],\n },\n {\n id: 'checkForUpdates',\n label: I18nString.i18nString(UiStrings.CheckForUpdates),\n flags: MenuItemFlags.None,\n command: /* TODO */ -1,\n },\n ]\n}\n", "import * as I18nString from '../I18NString/I18NString.js'\nimport * as MenuItemFlags from '../MenuItemFlags/MenuItemFlags.js'\nimport * as ViewletStates from '../ViewletStates/ViewletStates.js'\n\nconst UiStrings = {\n Close: 'Close',\n CloseOthers: 'Close Others',\n CloseToTheRight: 'Close To The Right',\n CloseAll: 'Close All',\n RevealInExplorer: 'Reveal in Explorer',\n}\n\n// TODO should pass tab uri as argument or tab index\nexport const getMenuEntries = () => {\n const mainState = ViewletStates.getState('Main')\n const editor = mainState.editors[mainState.focusedIndex]\n const uri = editor.uri\n return [\n {\n id: 'tabClose',\n label: I18nString.i18nString(UiStrings.Close),\n flags: MenuItemFlags.None,\n command: 'Main.closeFocusedTab',\n },\n {\n id: 'tabCloseOthers',\n label: I18nString.i18nString(UiStrings.CloseOthers),\n flags: MenuItemFlags.None,\n command: 'Main.closeOthers',\n },\n {\n id: 'tabCloseToTheRight',\n label: I18nString.i18nString(UiStrings.CloseToTheRight),\n flags: MenuItemFlags.None,\n command: 'Main.closeTabsToTheRight',\n },\n {\n id: 'tabCloseAll',\n label: I18nString.i18nString(UiStrings.CloseAll),\n flags: MenuItemFlags.None,\n command: /* TODO */ -1,\n },\n {\n id: 'revealInExplorer',\n label: I18nString.i18nString(UiStrings.RevealInExplorer),\n flags: MenuItemFlags.None,\n command: 'Explorer.revealItem',\n args: [uri],\n },\n ]\n}\n", "export const getMenuEntries = () => {\n return []\n}\n", "import * as I18nString from '../I18NString/I18NString.js'\nimport * as MenuEntryId from '../MenuEntryId/MenuEntryId.js'\nimport * as MenuItemFlags from '../MenuItemFlags/MenuItemFlags.js'\n\nconst UiStrings = {\n File: 'File',\n Edit: 'Edit',\n Selection: 'Selection',\n View: 'View',\n Go: 'Go',\n Run: 'Run',\n Terminal: 'Terminal',\n Help: 'Help',\n}\n\nexport const getMenuEntries = () => {\n return [\n {\n id: MenuEntryId.File,\n name: I18nString.i18nString(UiStrings.File),\n flags: MenuItemFlags.None,\n },\n {\n id: MenuEntryId.Edit,\n name: I18nString.i18nString(UiStrings.Edit),\n flags: MenuItemFlags.None,\n },\n {\n id: MenuEntryId.Selection,\n name: I18nString.i18nString(UiStrings.Selection),\n flags: MenuItemFlags.None,\n },\n {\n id: MenuEntryId.View,\n name: I18nString.i18nString(UiStrings.View),\n flags: MenuItemFlags.None,\n },\n {\n id: MenuEntryId.Go,\n name: I18nString.i18nString(UiStrings.Go),\n flags: MenuItemFlags.None,\n },\n ]\n}\n", "import * as I18nString from '../I18NString/I18NString.js'\nimport * as MenuEntryId from '../MenuEntryId/MenuEntryId.js'\nimport * as MenuItemFlags from '../MenuItemFlags/MenuItemFlags.js'\n\nconst UiStrings = {\n File: 'File',\n Edit: 'Edit',\n Selection: 'Selection',\n View: 'View',\n Go: 'Go',\n Run: 'Run',\n Terminal: 'Terminal',\n Help: 'Help',\n}\n\nexport const getMenuEntries = () => {\n return [\n {\n id: MenuEntryId.File,\n name: I18nString.i18nString(UiStrings.File),\n flags: MenuItemFlags.None,\n },\n {\n id: MenuEntryId.Edit,\n name: I18nString.i18nString(UiStrings.Edit),\n flags: MenuItemFlags.None,\n },\n {\n id: MenuEntryId.Selection,\n name: I18nString.i18nString(UiStrings.Selection),\n flags: MenuItemFlags.None,\n },\n {\n id: MenuEntryId.View,\n name: I18nString.i18nString(UiStrings.View),\n flags: MenuItemFlags.None,\n },\n {\n id: MenuEntryId.Go,\n name: I18nString.i18nString(UiStrings.Go),\n flags: MenuItemFlags.None,\n },\n {\n id: MenuEntryId.Run,\n name: I18nString.i18nString(UiStrings.Run),\n keyboardShortCut: 'Alt+r',\n flags: MenuItemFlags.None,\n },\n {\n id: MenuEntryId.Terminal,\n name: I18nString.i18nString(UiStrings.Terminal),\n keyboardShortCut: 'Alt+t',\n flags: MenuItemFlags.None,\n },\n {\n id: MenuEntryId.Help,\n name: I18nString.i18nString(UiStrings.Help),\n keyboardShortCut: 'Alt+h',\n flags: MenuItemFlags.None,\n },\n ]\n}\n", "import * as Platform from '../Platform/Platform.js'\nimport * as PlatformType from '../PlatformType/PlatformType.js'\n\nconst getModule = () => {\n switch (Platform.platform) {\n case PlatformType.Web:\n return import('./MenuEntriesTitleBarWeb.js')\n default:\n return import('./MenuEntriesTitleBarRemote.js')\n }\n}\n\nexport const getMenuEntries = async () => {\n const module = await getModule()\n return module.getMenuEntries()\n}\n", "export const getMenuEntries = () => {\n return []\n}\n", "import * as Command from '../Command/Command.js'\nimport * as MenuItemFlags from '../MenuItemFlags/MenuItemFlags.js'\n\nconst toContextMenuItem = (activityBarItem) => {\n return {\n label: activityBarItem.id,\n id: 8000, // TODO\n flags: MenuItemFlags.None,\n command: -1,\n }\n}\n\nexport const getMenuEntries = async () => {\n const hiddenActivityBarItems = await Command.execute(\n /* ActivityBar.getHiddenItems */ 8011\n )\n return hiddenActivityBarItems.map(toContextMenuItem)\n}\n", "import * as I18nString from '../I18NString/I18NString.js'\nimport * as MenuItemFlags from '../MenuItemFlags/MenuItemFlags.js'\n\n/**\n * @enum {string}\n */\nexport const UiStrings = {\n CopyPath: 'Copy Path',\n}\n\nexport const getMenuEntries = () => {\n return [\n {\n id: 'copyPath',\n label: I18nString.i18nString(UiStrings.CopyPath),\n flags: MenuItemFlags.None,\n command: /* TODO */ -1,\n },\n ]\n}\n", "import * as I18nString from '../I18NString/I18NString.js'\nimport * as MenuItemFlags from '../MenuItemFlags/MenuItemFlags.js'\n\n/**\n * @enum {string}\n */\nexport const UiStrings = {\n Copy: 'Copy',\n CopyPath: 'Copy Path',\n}\n\nexport const getMenuEntries = () => {\n return [\n {\n id: 'copy',\n label: I18nString.i18nString(UiStrings.Copy),\n flags: MenuItemFlags.None,\n command: 'EditorImage.copyImage',\n },\n {\n id: 'copyToClipBoard',\n label: I18nString.i18nString(UiStrings.CopyPath),\n flags: MenuItemFlags.None,\n command: 'EditorImage.copyPath',\n },\n ]\n}\n", "import * as I18nString from '../I18NString/I18NString.js'\nimport * as MenuItemFlags from '../MenuItemFlags/MenuItemFlags.js'\n\n/**\n * @enum {string}\n */\nexport const UiStrings = {\n Copy: 'Copy',\n}\n\nexport const getMenuEntries = () => {\n return [\n {\n id: 'copy',\n label: I18nString.i18nString(UiStrings.Copy),\n flags: MenuItemFlags.None,\n command: 'ClipBoard.execCopy',\n },\n ]\n}\n", "import * as I18nString from '../I18NString/I18NString.js'\nimport * as MenuItemFlags from '../MenuItemFlags/MenuItemFlags.js'\nimport * as Path from '../Path/Path.js'\nimport * as PathSeparatorType from '../PathSeparatorType/PathSeparatorType.js'\n\n/**\n * @enum {string}\n */\nexport const UiStrings = {\n InspectElement: 'Inspect Element',\n Cut: 'Cut',\n Copy: 'Copy',\n Paste: 'Paste',\n OpenLinkInNewTab: 'Open Link in New Tab',\n CopyLinkAddress: 'Copy Link Address',\n SaveImageAs: 'Save Image',\n CopyImage: 'Copy Image',\n}\n\nconst getMenuEntriesLink = (x, y, params) => {\n const { linkURL } = params\n return [\n {\n id: 'open-link-in-new-tab',\n label: I18nString.i18nString(UiStrings.OpenLinkInNewTab),\n flags: MenuItemFlags.None,\n command: 'SimpleBrowser.openBackgroundTab',\n args: [linkURL],\n },\n {\n id: 'copy-link-address',\n label: I18nString.i18nString(UiStrings.CopyLinkAddress),\n flags: MenuItemFlags.None,\n command: 'ElectronClipBoard.writeText',\n args: [linkURL],\n },\n ]\n}\n\nconst getMenuEntriesDefault = (x, y, params) => {\n return [\n {\n id: 'inspect-element',\n label: I18nString.i18nString(UiStrings.InspectElement),\n flags: MenuItemFlags.None,\n command: 'SimpleBrowser.inspectElement',\n args: [x, y],\n },\n ]\n}\n\nconst getMenuEntriesSelectionText = (x, y, params) => {\n const { selectionText } = params\n return [\n {\n id: 'copy',\n label: I18nString.i18nString(UiStrings.Copy),\n flags: MenuItemFlags.None,\n command: 'ElectronClipBoard.writeText',\n args: [selectionText],\n },\n ]\n}\n\nconst getMenuEntriesImage = (x, y, params) => {\n const { srcURL } = params\n const fileName = Path.getBaseName(PathSeparatorType.Slash, srcURL)\n return [\n {\n id: 'save-image',\n label: I18nString.i18nString(UiStrings.SaveImageAs),\n flags: MenuItemFlags.None,\n command: 'Download.downloadToDownloadsFolder',\n args: [fileName, srcURL],\n },\n {\n id: 'copy-image',\n label: I18nString.i18nString(UiStrings.CopyImage),\n flags: MenuItemFlags.None,\n command: 'SimpleBrowser.copyImage',\n args: [x, y],\n },\n ]\n}\n\nexport const getMenuEntries = (x, y, params) => {\n const menuItems = []\n if (params.linkURL) {\n menuItems.push(...getMenuEntriesLink(x, y, params))\n }\n if (params.selectionText) {\n menuItems.push(...getMenuEntriesSelectionText(x, y, params))\n }\n if (params.mediaType === 'image') {\n menuItems.push(...getMenuEntriesImage(x, y, params))\n }\n menuItems.push(...getMenuEntriesDefault(x, y, params))\n return menuItems\n}\n", "import * as MenuEntryId from '../MenuEntryId/MenuEntryId.js'\nimport * as ViewletStates from '../ViewletStates/ViewletStates.js'\n\n// prettier-ignore\nconst getModule = (id) => {\n switch (id) {\n case MenuEntryId.ActivityBar:\n return import('../MenuEntriesActivityBar/MenuEntriesActivityBar.js')\n case MenuEntryId.Edit:\n return import('../MenuEntriesEdit/MenuEntriesEdit.js')\n case MenuEntryId.Editor:\n return import('../MenuEntriesEditor/MenuEntriesEditor.js')\n case MenuEntryId.Explorer:\n return import('../MenuEntriesExplorer/MenuEntriesExplorer.js')\n case MenuEntryId.File:\n return import('../MenuEntriesFile/MenuEntriesFile.js')\n case MenuEntryId.Go:\n return import('../MenuEntriesGo/MenuEntriesGo.js')\n case MenuEntryId.Help:\n return import('../MenuEntriesHelp/MenuEntriesHelp.js')\n case MenuEntryId.ManageExtension:\n return import('../MenuEntriesManageExtension/MenuEntriesManageExtension.js')\n case MenuEntryId.OpenRecent:\n return import('../MenuEntriesOpenRecent/MenuEntriesOpenRecent.js')\n case MenuEntryId.Run:\n return import('../MenuEntriesRun/MenuEntriesRun.js')\n case MenuEntryId.Selection:\n return import('../MenuEntriesSelection/MenuEntriesSelection.js')\n case MenuEntryId.Settings:\n return import('../MenuEntriesSettings/MenuEntriesSettings.js')\n case MenuEntryId.Tab:\n return import('../MenuEntriesTab/MenuEntriesTab.js')\n case MenuEntryId.Terminal:\n return import('../MenuEntriesTerminal/MenuEntriesTerminal.js')\n case MenuEntryId.TitleBar:\n return import('../MenuEntriesTitleBar/MenuEntriesTitleBar.js')\n case MenuEntryId.View:\n return import('../MenuEntriesView/MenuEntriesView.js')\n case MenuEntryId.ActivityBarAdditionalViews:\n return import('../MenuEntriesActivityBarAdditionalViews/MenuEntriesActivityBarAdditionalViews.js')\n case MenuEntryId.Search:\n return import('../MenuEntriesSearch/MenuEntriesSearch.js')\n case MenuEntryId.EditorImage:\n return import('../MenuEntriesEditorImage/MenuEntriesEditorImage.js')\n case MenuEntryId.ExtensionDetailReadme:\n return import('../MenuEntriesExtensionDetailReadme/MenuEntriesExtensionDetailReadme.js')\n case MenuEntryId.SimpleBrowser:\n return import('../MenuEntriesSimpleBrowser/MenuEntriesSimpleBrowser.js')\n default:\n throw new Error(`module not found \"${id}\"`)\n }\n}\n\nexport const getMenuEntries = async (id, ...args) => {\n const module = await getModule(id)\n // @ts-ignore\n const inject = module.inject || []\n const viewletStates = inject.map(ViewletStates.getState)\n return module.getMenuEntries(...viewletStates, ...args)\n}\n", "import * as ElectronMenuItemFlags from '../ElectronMenuItemFlags/ElectronMenuItemFlags.js'\nimport * as ElectronProcess from '../ElectronProcess/ElectronProcess.js'\nimport * as MenuEntries from '../MenuEntries/MenuEntries.js'\nimport * as MenuItemFlags from '../MenuItemFlags/MenuItemFlags.js'\nimport * as Command from '../Command/Command.js'\n\nconst EMPTY_MENU = []\n\nexport const state = {\n pendingMenus: EMPTY_MENU,\n}\n\nconst convertMenuItem = (menuItem) => {\n const { flags, label } = menuItem\n switch (flags) {\n case MenuItemFlags.Separator:\n return {\n type: ElectronMenuItemFlags.Separator,\n }\n default:\n return {\n label,\n }\n }\n}\n\nconst convertMenuItems = (menuItems) => {\n return menuItems.map(convertMenuItem)\n}\n\nexport const openContextMenu = async (x, y, id, ...args) => {\n const entries = await MenuEntries.getMenuEntries(id, ...args)\n state.pendingMenus = entries\n const electronMenuItems = convertMenuItems(entries)\n return ElectronProcess.invoke(\n 'ElectronMenu.openContextMenu',\n electronMenuItems,\n x,\n y\n )\n}\n\nexport const handleMenuClose = () => {\n state.pendingMenus = EMPTY_MENU\n}\n\nconst getItem = (items, label) => {\n for (const item of items) {\n if (item.label === label) {\n return item\n }\n }\n return undefined\n}\n\nexport const handleSelect = async (label) => {\n const items = state.pendingMenus\n state.pendingMenus = EMPTY_MENU\n const item = getItem(items, label)\n if (!item) {\n return\n }\n const args = item.args || []\n await Command.execute(item.command, ...args)\n}\n", "import * as ElectronMenu from '../ElectronMenu/ElectronMenu.js'\n\nexport const show = (x, y, id) => {\n return ElectronMenu.openContextMenu(x, y, id)\n}\n", "import * as Menu from '../Menu/Menu.js'\nimport * as Assert from '../Assert/Assert.js'\nimport * as Platform from '../Platform/Platform.js'\nimport * as PlatformType from '../PlatformType/PlatformType.js'\nimport * as MenuEntries from '../MenuEntries/MenuEntries.js'\nimport * as ElectronMenu from '../ElectronMenu/ElectronMenu.js'\n\nexport const show = async (x, y, id) => {\n await Menu.hide()\n // TODO handle error\n // TODO race condition\n await Menu.show(x, y, id, /* mouseBlocking */ true)\n // TODO maybe only send labels and keybindings to ui (id not needed on ui)\n // TODO what about separators?\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as Platform from '../Platform/Platform.js'\nimport * as PlatformType from '../PlatformType/PlatformType.js'\nimport * as Preferences from '../Preferences/Preferences.js'\n\nconst hasContextMenuNativePreference = () => {\n const value = Preferences.get('window.titleBarStyle')\n return value === 'native'\n}\n\nconst getModule = () => {\n if (\n Platform.platform === PlatformType.Electron &&\n hasContextMenuNativePreference()\n ) {\n return import('./ContextMenuElectron.js')\n }\n return import('./ContextMenuBrowser.js')\n}\n\nexport const show = async (x, y, id) => {\n Assert.number(x)\n Assert.number(y)\n Assert.number(id)\n const module = await getModule()\n return module.show(x, y, id)\n}\n", "import * as ContextMenu from './ContextMenu.js'\n\nexport const name = 'ContextMenu'\n\nexport const Commands = {\n show: ContextMenu.show,\n}\n", "import * as ElectronProcess from '../ElectronProcess/ElectronProcess.js'\n\nexport const crashMainProcess = () => {\n return ElectronProcess.invoke('ElectronDeveloper.crashMainProcess')\n}\n\nexport const getPerformanceEntries = () => {\n return ElectronProcess.invoke('ElectronDeveloper.getPerformanceEntries')\n}\n", "const BYTE_UNITS = [\n \"B\",\n \"kB\",\n \"MB\",\n \"GB\",\n \"TB\",\n \"PB\",\n \"EB\",\n \"ZB\",\n \"YB\"\n];\nconst BIBYTE_UNITS = [\n \"B\",\n \"kiB\",\n \"MiB\",\n \"GiB\",\n \"TiB\",\n \"PiB\",\n \"EiB\",\n \"ZiB\",\n \"YiB\"\n];\nconst BIT_UNITS = [\n \"b\",\n \"kbit\",\n \"Mbit\",\n \"Gbit\",\n \"Tbit\",\n \"Pbit\",\n \"Ebit\",\n \"Zbit\",\n \"Ybit\"\n];\nconst BIBIT_UNITS = [\n \"b\",\n \"kibit\",\n \"Mibit\",\n \"Gibit\",\n \"Tibit\",\n \"Pibit\",\n \"Eibit\",\n \"Zibit\",\n \"Yibit\"\n];\nconst toLocaleString = (number, locale, options) => {\n let result = number;\n if (typeof locale === \"string\" || Array.isArray(locale)) {\n result = number.toLocaleString(locale, options);\n } else if (locale === true || options !== void 0) {\n result = number.toLocaleString(void 0, options);\n }\n return result;\n};\nfunction prettyBytes(number, options) {\n if (!Number.isFinite(number)) {\n throw new TypeError(`Expected a finite number, got ${typeof number}: ${number}`);\n }\n options = {\n bits: false,\n binary: false,\n ...options\n };\n const UNITS = options.bits ? options.binary ? BIBIT_UNITS : BIT_UNITS : options.binary ? BIBYTE_UNITS : BYTE_UNITS;\n if (options.signed && number === 0) {\n return ` 0 ${UNITS[0]}`;\n }\n const isNegative = number < 0;\n const prefix = isNegative ? \"-\" : options.signed ? \"+\" : \"\";\n if (isNegative) {\n number = -number;\n }\n let localeOptions;\n if (options.minimumFractionDigits !== void 0) {\n localeOptions = {minimumFractionDigits: options.minimumFractionDigits};\n }\n if (options.maximumFractionDigits !== void 0) {\n localeOptions = {maximumFractionDigits: options.maximumFractionDigits, ...localeOptions};\n }\n if (number < 1) {\n const numberString2 = toLocaleString(number, options.locale, localeOptions);\n return prefix + numberString2 + \" \" + UNITS[0];\n }\n const exponent = Math.min(Math.floor(options.binary ? Math.log(number) / Math.log(1024) : Math.log10(number) / 3), UNITS.length - 1);\n number /= (options.binary ? 1024 : 1e3) ** exponent;\n if (!localeOptions) {\n number = number.toPrecision(3);\n }\n const numberString = toLocaleString(Number(number), options.locale, localeOptions);\n const unit = UNITS[exponent];\n return prefix + numberString + \" \" + unit;\n}\nexport default prettyBytes;\n", "import prettyBytes from '../../../static/js/pretty-bytes.js'\n\nexport const formatBytes = (bytes) => {\n return prettyBytes(bytes)\n}\n", "import * as ElectronProcess from '../ElectronProcess/ElectronProcess.js'\n\nexport const open = async () => {\n await ElectronProcess.invoke('ElectronWindowProcessExplorer.open')\n}\n", "import * as ElectronWindowProcessExplorer from '../ElectronWindowProcessExplorer/ElectronWindowProcessExplorer.js'\n\nexport const open = () => {\n return ElectronWindowProcessExplorer.open()\n}\n", "export const open = () => {\n throw new Error('not implemented')\n}\n", "export const open = () => {\n throw new Error('not implemented')\n}\n", "import * as Platform from '../Platform/Platform.js'\nimport * as PlatformType from '../PlatformType/PlatformType.js'\n\nconst getModule = () => {\n switch (Platform.platform) {\n case PlatformType.Electron:\n return import('./ProcessExplorerElectron.js')\n case PlatformType.Remote:\n return import('./ProcessExplorerRemote.js')\n case PlatformType.Web:\n return import('./ProcessExplorerWeb.js')\n default:\n throw new Error('unsupported platform')\n }\n}\n\nexport const open = async () => {\n const module = await getModule()\n return module.open()\n}\n", "import * as ColorTheme from '../ColorTheme/ColorTheme.js'\nimport * as Command from '../Command/Command.js'\nimport * as ElectronDeveloper from '../ElectronDeveloper/ElectronDeveloper.js'\nimport * as ElectronWindow from '../ElectronWindow/ElectronWindow.js'\nimport * as IconTheme from '../IconTheme/IconTheme.js'\nimport * as Platform from '../Platform/Platform.js'\nimport * as PlatformType from '../PlatformType/PlatformType.js'\nimport * as PrettyBytes from '../PrettyBytes/PrettyBytes.js'\nimport * as ProcessExplorer from '../ProcessExplorer/ProcessExplorer.js'\nimport * as RendererProcess from '../RendererProcess/RendererProcess.js'\nimport * as SharedProcess from '../SharedProcess/SharedProcess.js'\nimport * as SplitLines from '../SplitLines/SplitLines.js'\n\n// TODO vscode's version of this is shorter\n// if it is a bottleneck, check performance of this function (not very optimized now)\n\n// TODO no export, this is internal only\nconst toMarkdownTable = (header, rows) => {\n const numberOfColumns = header.length\n const numberOfRows = rows.length\n const maxLengths = [...new Array(numberOfColumns).fill(0)]\n for (let i = 0; i < numberOfColumns; i++) {\n maxLengths[i] = header[i].length\n for (let j = 0; j < numberOfRows; j++) {\n maxLengths[i] = Math.max(maxLengths[i], rows[j][i].length)\n }\n }\n let result = ''\n for (let i = 0; i < numberOfColumns; i++) {\n result += '|'\n result += ' '\n result += header[i]\n result += ' '.repeat(maxLengths[i] - header[i].length)\n result += ' '\n }\n result += '|\\n'\n for (let i = 0; i < numberOfColumns; i++) {\n result += '|'\n result += '-'.repeat(maxLengths[i] + 2)\n }\n result += '|\\n'\n for (const row of rows) {\n for (let i = 0; i < numberOfColumns; i++) {\n result += '|'\n result += ' '\n result += row[i]\n result += ' '.repeat(maxLengths[i] - row[i].length)\n result += ' '\n }\n result += '|\\n'\n }\n return result\n}\n\nconst formatStartupPerformanceEntries = (entries, firstTimeOrigin) => {\n const diff = entries.timeOrigin - firstTimeOrigin\n const header = ['Name', 'Start Time', 'Duration']\n const formatEntry = (entry) => {\n const name = entry.name\n if (!name) {\n return ['n/a', 'n/a', 'n/a']\n }\n const startTime = `${(entry.startTime + diff).toFixed(2)}ms`\n const duration = `${entry.duration.toFixed(2)}ms`\n return [name, startTime, duration]\n }\n const rows = entries.entries.map(formatEntry)\n return toMarkdownTable(header, rows)\n}\n\nconst formatWebVitals = (vitals) => {\n const header = ['Name', 'Start Time']\n const rows = vitals.map((entry) => {\n const name = entry.name\n const startTime = `${entry.startTime.toFixed(2)}ms`\n return [name, startTime]\n })\n return toMarkdownTable(header, rows)\n}\n\nconst getWebVitals = async () => {\n let firstPaint = -1\n let firstContentfulPaint = -1\n let largestContentfulPaint = -1\n const paintEntries = performance.getEntriesByType('paint')\n for (const paintEntry of paintEntries) {\n switch (paintEntry.name) {\n case 'first-paint':\n firstPaint = paintEntry.startTime\n break\n case 'first-contentful-paint':\n firstContentfulPaint = paintEntry.startTime\n break\n }\n }\n const performanceObserver = new PerformanceObserver(() => {})\n performanceObserver.observe({\n type: 'largest-contentful-paint',\n buffered: true,\n })\n const records = performanceObserver.takeRecords()\n performanceObserver.disconnect()\n if (records.length > 0) {\n largestContentfulPaint = records[0].startTime\n }\n\n return [\n {\n name: 'first-paint',\n startTime: firstPaint,\n },\n {\n name: 'firstContentfulPaint',\n startTime: firstContentfulPaint,\n },\n {\n name: 'largestContentfulPaint',\n startTime: largestContentfulPaint,\n },\n ]\n}\n\nconst formatNodeTiming = (nodeStartupTiming) => {\n const header = ['Name', 'Value']\n const rows = Object.entries(nodeStartupTiming).map(([key, value]) => {\n if (typeof value === 'number' && value > 0) {\n return [key, `${value.toFixed(2)}ms`]\n }\n return [key, `${value}`]\n })\n return toMarkdownTable(header, rows)\n}\n\nconst getNodeTiming = () => {\n if (Platform.platform === PlatformType.Web) {\n return undefined\n }\n return SharedProcess.invoke(/* command */ 'Developer.getNodeStartupTime')\n}\n\nconst getFirstTimeOrigin = ({ measureEntries, electronEntries }) => {\n if (electronEntries) {\n return electronEntries.timeOrigin\n }\n if (measureEntries) {\n return measureEntries.timeOrigin\n }\n return 0\n}\n\nconst formatStartupPerformance = ({\n measureEntries,\n webVitals,\n nodeStartupTiming,\n electronEntries,\n}) => {\n const firstTimeOrigin = getFirstTimeOrigin({\n measureEntries,\n electronEntries,\n })\n const lines = []\n lines.push('# Startup Performance')\n lines.push('')\n if (electronEntries) {\n const formattedElectronEntries = formatStartupPerformanceEntries(\n electronEntries,\n firstTimeOrigin\n )\n lines.push('## main-process')\n lines.push('')\n lines.push(...SplitLines.splitLines(formattedElectronEntries))\n lines.push('')\n }\n if (measureEntries) {\n const formattedMeasureEntries = formatStartupPerformanceEntries(\n measureEntries,\n firstTimeOrigin\n )\n if (electronEntries) {\n const deltaTimeOrigin = (\n measureEntries.timeOrigin - electronEntries.timeOrigin\n ).toFixed(2)\n lines.push(`## renderer-worker (+${deltaTimeOrigin}ms)`)\n } else {\n lines.push('## renderer-worker')\n }\n lines.push('')\n lines.push(...SplitLines.splitLines(formattedMeasureEntries))\n lines.push('')\n }\n if (webVitals) {\n const formattedWebVitals = formatWebVitals(webVitals)\n lines.push('## Web Vitals')\n lines.push('')\n lines.push(...SplitLines.splitLines(formattedWebVitals))\n lines.push('')\n }\n if (nodeStartupTiming) {\n const formattedNodeStartupTiming = formatNodeTiming(nodeStartupTiming)\n lines.push('## Node Startup Timing')\n lines.push('')\n lines.push(...SplitLines.splitLines(formattedNodeStartupTiming))\n lines.push('')\n }\n lines.push('## Extension Host')\n lines.push('')\n const content = lines.join('\\n')\n return content\n}\n\nconst getMeasureEntries = () => {\n const measureEntries = performance.getEntriesByType('measure')\n const timeOrigin = performance.timeOrigin\n return {\n entries: measureEntries,\n timeOrigin,\n }\n}\n\nconst getElectronEntries = async () => {\n if (\n Platform.platform === PlatformType.Web ||\n Platform.platform === PlatformType.Remote\n ) {\n return undefined\n }\n const result = await ElectronDeveloper.getPerformanceEntries()\n return result\n}\n\n// TODO should open file perf://startup-performance -> calls fs provider -> provides statistics\n// that would work well for restoring editor\nexport const getStartupPerformanceContent = async () => {\n // TODO how to update content once workbench startup has finished?\n // await new Promise((resolve) =>\n // LifeCycle.once(LifeCycle.PHASE_FIFTEEN, resolve)\n // )\n let nodeStartupTiming\n if (Platform.platform !== PlatformType.Web) {\n nodeStartupTiming = await getNodeTiming()\n }\n const measureEntries = getMeasureEntries()\n const webVitals = await getWebVitals()\n let electronEntries\n if (Platform.platform === 'electron') {\n electronEntries = await getElectronEntries()\n }\n const text = formatStartupPerformance({\n nodeStartupTiming,\n measureEntries,\n webVitals,\n electronEntries,\n })\n return text\n}\n\nexport const showStartupPerformance = async () => {\n await Command.execute(\n /* Main.openUri */ 'Main.openUri',\n /* uri */ 'app://startup-performance'\n )\n}\n\nconst formatNodeMemoryUsage = (memoryUsage) => {\n if (!memoryUsage) {\n return ['']\n }\n const header = ['Name', 'Memory']\n const rows = Object.entries(memoryUsage).map(([key, value]) => {\n return [key, PrettyBytes.formatBytes(value)]\n })\n return toMarkdownTable(header, rows)\n}\n\nconst formatRendererWorkerData = ({\n userAgentSpecificMemory,\n sent,\n received,\n}) => {\n let content = ''\n if (userAgentSpecificMemory) {\n const header = ['Name', 'Value']\n const rows = []\n if (userAgentSpecificMemory.bytes) {\n rows.push([\n 'Bytes',\n PrettyBytes.formatBytes(userAgentSpecificMemory.bytes),\n ])\n }\n if (userAgentSpecificMemory.breakdown) {\n for (const item of userAgentSpecificMemory.breakdown) {\n if (!item.bytes) {\n continue\n }\n rows.push([item.types[0] || 'n/a', PrettyBytes.formatBytes(item.bytes)])\n }\n }\n content += toMarkdownTable(header, rows)\n }\n return content\n}\n\nconst formatRendererProcessData = ({ memoryUsage }) => {\n if (!memoryUsage) {\n return 'No Information available.'\n }\n const header = ['Name', 'Value']\n const rows = [\n ['jsHeapSizeLimit', PrettyBytes.formatBytes(memoryUsage.jsHeapSizeLimit)],\n ['Total JS HeapSize', PrettyBytes.formatBytes(memoryUsage.totalJSHeapSize)],\n ['Used JS HeapSize', PrettyBytes.formatBytes(memoryUsage.usedJSHeapSize)],\n ]\n return toMarkdownTable(header, rows)\n}\n\nconst getSharedProcessMemoryUsage = () => {\n return SharedProcess.invoke(\n /* Developer.sharedProcessMemoryUsage */ 'Developer.sharedProcessMemoryUsage'\n )\n}\n\nconst getPerformanceMemory = () => {\n return RendererProcess.invoke('Performance.getMemory')\n}\n\nconst getPerformanceUserAgentSpecificMemory = () => {\n return RendererProcess.invoke('Performance.measureUserAgentSpecificMemory')\n}\n\n// TODO handle case when renderer process and renderer worker are same process communicating via messagePort\nexport const getMemoryUsageContent = async () => {\n const sharedProcessMemoryUsage = await getSharedProcessMemoryUsage()\n const formattedSharedProcessMemoryUsage = formatNodeMemoryUsage(\n sharedProcessMemoryUsage\n )\n const userAgentSpecificMemory = await getPerformanceUserAgentSpecificMemory()\n const totalSent = SharedProcess.state.totalSent\n const totalReceived = SharedProcess.state.totalReceived\n const formattedRendererWorkerMemoryUsage = formatRendererWorkerData({\n userAgentSpecificMemory,\n sent: totalSent,\n received: totalReceived,\n })\n const rendererProcessMemoryUsage = await getPerformanceMemory()\n const formattedRendererProcessMemoryUsage = formatRendererProcessData({\n memoryUsage: rendererProcessMemoryUsage,\n })\n\n const isWorker = typeof WorkerGlobalScope !== 'undefined'\n console.log({ isWorker, rendererWorkerMemoryUsage: userAgentSpecificMemory })\n const text = isWorker\n ? `## Shared Process\n\n${formattedSharedProcessMemoryUsage}\n\n\n## Renderer Worker\n\n${formattedRendererWorkerMemoryUsage}\n\n## Renderer Process\n\n${formattedRendererProcessMemoryUsage}\n`\n : `## Renderer Worker / Renderer Process\n\n${formattedRendererWorkerMemoryUsage}\n\n## Shared Process\n\n${formattedSharedProcessMemoryUsage}\n\n`\n return text\n}\n\nexport const showMemoryUsage = () => {\n return Command.execute(\n /* Main.openUri */ 'Main.openUri',\n /* uri */ 'app://memory-usage'\n )\n}\n\n// TODO not sure if this function is useful\nexport const allocateMemoryInSharedProcess = () => {\n return SharedProcess.invoke(\n /* Developer.allocateMemoryInSharedProcess */ 'Developer.allocateMemoryInSharedProcess'\n )\n}\n\nexport const crashSharedProcess = () => {\n return SharedProcess.invoke(\n /* Developer.crashSharedProcess */ 'Developer.crashSharedProcess'\n )\n}\n\nexport const crashRendererProcess = () => {}\n\nexport const crashRendererWorker = () => {}\n\nexport const crashMainProcess = () => {\n return SharedProcess.invoke(\n /* Electron.crashMainProcess */ 'Electron.crashMainProcess'\n )\n}\n\nexport const openExtensionsFolder = () => {\n // TODO only possible in local file system\n}\n\nexport const openLogsFolder = async () => {\n // TODO only in electron or in remote when it is the same machine\n if (Platform.platform === PlatformType.Web) {\n return\n }\n const logsFolder = await Platform.getLogsDir()\n await Command.execute(\n /* OpenNativeFolder.openNativeFolder */ 'OpenNativeFolder.openNativeFolder',\n /* path */ logsFolder\n )\n}\n\nexport const toggleDeveloperTools = () => {\n return ElectronWindow.toggleDevtools()\n}\n\nexport const showIconThemeCss = async () => {\n // const iconThemeCss = await IconTheme.getIconThemeCss()\n // Main.openRawText('css://icon-theme.css', iconThemeCss)\n}\n\nexport const createSharedProcessHeapSnapshot = async () => {\n await SharedProcess.invoke(\n /* Developer.createSharedProcessHeapSnapshot */ 'Developer.createSharedProcessHeapSnapshot'\n )\n}\n\nexport const createSharedProcessProfile = async () => {\n await SharedProcess.invoke(\n /* Developer.createProfile */ 'Developer.createProfile'\n )\n}\n\nexport const reloadIconTheme = async () => {\n await IconTheme.hydrate()\n}\n\nexport const reloadColorTheme = async () => {\n await ColorTheme.hydrate()\n}\n\nexport const showColorThemeCss = async () => {\n // @ts-ignore\n const colorThemeCss = await ColorTheme.getColorThemeCssCacheFirst()\n // @ts-ignore\n Main.openRawText('css://color-theme.css', colorThemeCss)\n}\n\nexport const clearCache = async () => {\n await Command.execute(/* CacheStorage.clearCache */ 'CacheStorage.clearCache')\n await Command.execute(/* LocalStorage.clear */ 'LocalStorage.clear')\n await Command.execute(/* SessionStorage.clear */ 'SessionStorage.clear')\n}\n\nexport const editors = {\n 'performance://monitor': {},\n 'performance://startup': {},\n}\n\nexport const openConfigFolder = async () => {\n const configFolder = await Platform.getConfigPath()\n await Command.execute(\n /* OpenNativeFolder.openNativeFolder */ 'OpenNativeFolder.openNativeFolder',\n /* path */ configFolder\n )\n}\n\nexport const openCacheFolder = async () => {\n const cacheFolder = await Platform.getCachePath()\n await Command.execute(\n /* OpenNativeFolder.openNativeFolder */ 'OpenNativeFolder.openNativeFolder',\n /* path */ cacheFolder\n )\n}\n\nexport const openDataFolder = async () => {\n const dataFolder = await SharedProcess.invoke(\n /* Platform.getDataDir */ 'Platform.getDataDir'\n )\n await Command.execute(\n /* OpenNativeFolder.openNativeFolder */ 'OpenNativeFolder.openNativeFolder',\n /* path */ dataFolder\n )\n}\n\nexport const showMessageBox = () => {}\n\nexport const openProcessExplorer = () => {\n return ProcessExplorer.open()\n}\n\nexport const downloadViewletState = async () => {\n const states = await Command.execute('Viewlet.getAllStates')\n await Command.execute(\n 'Download.downloadJson',\n /* json */ states,\n /* fileName */ 'viewlets.json'\n )\n}\n", "import * as Developer from './Developer.js'\n\nexport const name = 'Developer'\n\n// prettier-ignore\nexport const Commands = {\n // TODO certain commands are only available in electron -> treeshake them out\n allocateMemoryInSharedProcess: Developer.allocateMemoryInSharedProcess,\n clearCache: Developer.clearCache,\n crashMainProcess: Developer.crashMainProcess,\n crashSharedProcess: Developer.crashSharedProcess,\n createSharedProcessHeapSnapshot: Developer.createSharedProcessHeapSnapshot,\n createSharedProcessProfile: Developer.createSharedProcessProfile,\n downloadViewletState: Developer.downloadViewletState,\n getMemoryUsageContent: Developer.getMemoryUsageContent,\n getStartupPerformanceContent: Developer.getStartupPerformanceContent,\n openCacheFolder: Developer.openCacheFolder,\n openConfigFolder: Developer.openConfigFolder,\n openDataFolder: Developer.openDataFolder,\n openLogsFolder: Developer.openLogsFolder,\n openProcessExplorer: Developer.openProcessExplorer,\n reloadColorTheme: Developer.reloadColorTheme,\n reloadIconTheme: Developer.reloadIconTheme,\n showColorThemeCss: Developer.showColorThemeCss,\n showIconThemeCss: Developer.showIconThemeCss,\n showMemoryUsage: Developer.showMemoryUsage,\n showStartupPerformance: Developer.showStartupPerformance,\n startupPerformance: Developer.showStartupPerformance,\n toggleDeveloperTools: Developer.toggleDeveloperTools,\n}\n", "import * as ElectronProcess from '../ElectronProcess/ElectronProcess.js'\n\nexport const showOpenDialog = (title, properties) => {\n return ElectronProcess.invoke(\n 'ElectronDialog.showOpenDialog',\n title,\n properties\n )\n}\n\nexport const showMessageBox = (message, buttons) => {\n return ElectronProcess.invoke(\n 'ElectronDialog.showMessageBox',\n message,\n buttons\n )\n}\n", "import * as ElectronProcess from '../ElectronProcess/ElectronProcess.js'\n\nexport const open = async () => {\n await ElectronProcess.invoke('ElectronWindowAbout.open')\n}\n", "import * as Command from '../Command/Command.js'\nimport * as ElectronDialog from '../ElectronDialog/ElectronDialog.js'\nimport * as ElectronWindowAbout from '../ElectronWindowAbout/ElectronWindowAbout.js'\nimport * as Platform from '../Platform/Platform.js'\nimport * as RendererProcess from '../RendererProcess/RendererProcess.js'\nimport * as PlatformType from '../PlatformType/PlatformType.js'\nimport { VError } from '../VError/VError.js'\n\nexport const state = {\n dialog: undefined,\n}\n\nconst isAbortError = (error) => {\n if (error && error.message === 'The user aborted a request.') {\n return true\n }\n return false\n}\n\nconst openFolderWeb = async () => {\n try {\n const result = await Command.execute('FilePicker.showDirectoryPicker', {\n startIn: 'pictures',\n mode: 'readwrite',\n })\n await Command.execute('PersistentFileHandle.addHandle',`html://${result.name}`, result)\n await Command.execute('Workspace.setPath', `html://${result.name}`)\n } catch (error) {\n if (isAbortError(error)) {\n return\n }\n throw new VError(error, `Failed to open folder`)\n }\n}\n\nconst openFolderRemote = async () => {\n const path = await RendererProcess.invoke(\n /* Dialog.prompt */ 'Dialog.prompt',\n /* message */ 'Choose path:'\n )\n if (!path) {\n return\n }\n await Command.execute(\n /* Workspace.setPath */ 'Workspace.setPath',\n /* path */ path\n )\n}\n\nconst openFolderElectron = async () => {\n const folders = await ElectronDialog.showOpenDialog(\n /* title */ 'Open Folder',\n /* properties */ ['openDirectory', 'dontAddToRecent', 'showHiddenFiles']\n )\n if (!folders || folders.length === 0) {\n return\n }\n const path = folders[0]\n await Command.execute(\n /* Workspace.setPath */ 'Workspace.setPath',\n /* path */ path\n )\n}\n\nexport const openFolder = () => {\n switch (Platform.platform) {\n case PlatformType.Web:\n return openFolderWeb()\n case PlatformType.Remote:\n return openFolderRemote()\n case PlatformType.Electron:\n return openFolderElectron()\n default:\n return\n }\n}\n\nconst openFileWeb = () => {\n console.warn('open file - not implemented')\n}\n\nconst openFileRemote = () => {\n console.warn('open file - not implemented')\n}\n\nconst openFileElectron = async () => {\n const [file] = await ElectronDialog.showOpenDialog('Open File', [\n 'openFile',\n 'dontAddToRecent',\n 'showHiddenFiles',\n ])\n await Command.execute('Main.openUri', file)\n}\n\nexport const openFile = () => {\n switch (Platform.platform) {\n case PlatformType.Web:\n return openFileWeb()\n case PlatformType.Remote:\n return openFileRemote()\n case PlatformType.Electron:\n return openFileElectron()\n default:\n return\n }\n}\n\nconst showAboutWeb = () => {\n console.warn('show about - not implemented')\n}\n\nconst showAboutRemote = () => {\n console.warn('show about - not implemented')\n}\n\nconst showAboutElectron = async () => {\n await ElectronWindowAbout.open()\n}\n\nexport const showAbout = async () => {\n switch (Platform.platform) {\n case 'web':\n return showAboutWeb()\n case 'remote':\n return showAboutRemote()\n case 'electron':\n return showAboutElectron()\n default:\n return\n }\n}\n\nexport const showMessage = async (message, options) => {\n if (state.dialog) {\n console.info('cannot show multiple dialogs at the same time', message)\n return\n }\n // TODO implement actual dialog component for web\n // RendererProcess.invoke(/* Dialog.alert */ 7834, /* message */ message)\n // TODO on electron use native dialog\n if (!options) {\n options = ['Show Command Output', 'Cancel', 'Open Git Log']\n }\n // @ts-ignore\n state.dialog = {\n message,\n options,\n }\n\n if (Platform.platform === 'electron') {\n const index = await ElectronDialog.showMessageBox(\n /* message */ message.message,\n /* buttons */ options\n )\n\n if (index === -1) {\n // TODO can this even happen?\n return\n }\n await handleClick(index)\n } else {\n await RendererProcess.invoke(\n /* Dialog.showErrorDialogWithOptions */ 'Dialog.showErrorDialogWithOptions',\n /* message */ message,\n /* options */ options\n )\n }\n}\n\nexport const close = async () => {\n // TODO support closing of electron dialogs\n if (!state.dialog) {\n console.info('no dialog to close')\n return\n }\n state.dialog = undefined\n await RendererProcess.invoke(/* Dialog.close */ 7836)\n}\n\nexport const handleClick = async (index) => {\n const dialog = state.dialog\n const option = dialog.options[index]\n // TODO handle case when index is out of bounds\n switch (option) {\n case 'Show Command Output':\n await close()\n const uri = `data://${dialog.message.stderr}`\n await Command.execute(/* Main.openUri */ 'Main.openUri', uri)\n // TODO show stderr in editor\n // TODO close dialog\n break\n default:\n break\n }\n}\n", "import * as Dialog from './Dialog.js'\n\nexport const name = 'Dialog'\n\nexport const Commands = {\n close: Dialog.close,\n handleClick: Dialog.handleClick,\n openFile: Dialog.openFile,\n openFolder: Dialog.openFolder,\n showAbout: Dialog.showAbout,\n showMessage: Dialog.showMessage,\n}\n", "export const createObjectUrl = (blob) => {\n return URL.createObjectURL(blob)\n}\n\nexport const revokeObjectUrl = (url) => {\n return URL.revokeObjectURL(url)\n}\n", "import * as Assert from '../Assert/Assert.js'\nimport * as Json from '../Json/Json.js'\nimport * as RendererProcess from '../RendererProcess/RendererProcess.js'\nimport * as SharedProcess from '../SharedProcess/SharedProcess.js'\nimport * as Platform from '../Platform/Platform.js'\nimport { VError } from '../VError/VError.js'\nimport * as Url from '../Url/Url.js'\n\nexport const downloadFile = async (fileName, url) => {\n Assert.string(fileName)\n Assert.string(url)\n await RendererProcess.invoke(\n /* Download.downloadFile */ 'Download.downloadFile',\n /* fileName */ fileName,\n /* url */ url\n )\n}\n\nexport const downloadToDownloadsFolder = async (fileName, url) => {\n const downloadFolder = await Platform.getDownloadDir()\n const outFile = `${downloadFolder}/${fileName}`\n await SharedProcess.invoke(\n /* Download.download */ 'Download.download',\n /* url */ url,\n /* outFile */ outFile\n )\n}\n\nexport const downloadJson = async (json, fileName) => {\n let url = ''\n try {\n const stringified = Json.stringify(json)\n const blob = new Blob([stringified], {\n type: 'application/json',\n })\n url = Url.createObjectUrl(blob)\n await downloadFile(fileName, url)\n } catch (error) {\n throw new VError(error, `Failed to download ${fileName}`)\n } finally {\n Url.revokeObjectUrl(url)\n }\n}\n", "import * as Download from './Download.js'\n\nexport const name = 'Download'\n\nexport const Commands = {\n downloadFile: Download.downloadFile,\n downloadJson: Download.downloadJson,\n downloadToDownloadsFolder: Download.downloadToDownloadsFolder,\n}\n", "import * as ExtensionHostDiagnostics from '../ExtensionHost/ExtensionHostDiagnostic.js'\nimport * as Platform from '../Platform/Platform.js'\nimport * as RendererProcess from '../RendererProcess/RendererProcess.js'\nimport * as PlatformType from '../PlatformType/PlatformType.js'\n\nconst getDiagnostics = async (editor) => {\n if (Platform.platform === PlatformType.Web) {\n console.info('diagnostics not yet implemented for web')\n return []\n }\n const diagnostics = await ExtensionHostDiagnostics.executeDiagnosticProvider(\n editor\n )\n return diagnostics\n}\n\nconst getDiagnosticType = (diagnostic) => {\n return diagnostic.type\n}\n\nconst getVisibleDiagnostics = (editor, diagnostics) => {\n const visibleDiagnostics = []\n for (const diagnostic of diagnostics) {\n visibleDiagnostics.push({\n top: (diagnostic.rowIndex - editor.minLineY) * editor.rowHeight,\n left: diagnostic.columnIndex * editor.columnWidth,\n width: 20,\n height: editor.rowHeight,\n type: getDiagnosticType(diagnostic),\n })\n }\n return visibleDiagnostics\n}\n\nconst getScrollBarDiagnostics = (editor, diagnostics) => {\n const scrollBarDecorations = []\n for (const diagnostic of diagnostics) {\n scrollBarDecorations.push({\n top: (diagnostic.rowIndex / editor.lines.length) * editor.height,\n height: 2,\n })\n }\n return scrollBarDecorations\n}\n\nexport const runDiagnostics = async (editor) => {\n // Editor.sync(editor)\n const diagnostics = await getDiagnostics(editor)\n const visibleDiagnostics = getVisibleDiagnostics(editor, diagnostics)\n const scrollBarDiagnostics = getScrollBarDiagnostics(editor, diagnostics)\n // TODO only send visible diagnostics\n await RendererProcess.invoke(\n /* Editor.renderDiagnostics */ 770,\n /* id */ editor.id,\n /* diagnostics */ visibleDiagnostics,\n /* scrollBarDiagnostics */ scrollBarDiagnostics\n )\n}\n\nconst runDiagnosticsAll = () => {\n // TODO loop over all editors\n // const editor = Main.state.activeEditor\n // if (!editor) {\n // return\n // }\n // runDiagnostics(editor)\n}\n\nconst onceIdle = (fn) => {\n // TODO treeshake the if/else away in production\n // @ts-ignore\n if (typeof window !== 'undefined' && 'requestIdleCallback' in window) {\n // @ts-ignore\n requestIdleCallback(fn)\n } else {\n setTimeout(fn, 0)\n }\n}\n\nexport const scheduleDiagnosticsAll = () => {\n onceIdle(runDiagnosticsAll)\n}\n\nexport const hydrate = () => {\n // TODO use global event bus to listen to text document changes\n // TODO use debounce with a configurable delay/debounce time specified in settings.json\n // setInterval(scheduleDiagnostics, 1000)\n // setTimeout(scheduleDiagnostics, 1000)\n // TextDocument.map({\n // created: scheduleDiagnosticsAll,\n // changed: scheduleDiagnosticsAll,\n // saved() {},\n // })\n}\n\n// TODO use audio cues for screenreader users,\n// vscode has implemented something recently, maybe can also use this\n//\n// var utterance = new SpeechSynthesisUtterance();\n// utterance.text = \"error on line 10, column 11\";\n// window.speechSynthesis.speak(utterance);\n\n// see also https://tink.uk/using-the-web-speech-api-to-simulate-css-speech-support/\n", "import * as EditorDiagnostics from './EditorDiagnostics.js'\n\nexport const name = 'EditorDiagnostics'\n\nexport const Commands = {\n hydrate: EditorDiagnostics.hydrate,\n}\n", "import * as EditorPosition from '../EditorCommand/EditorCommandPosition.js'\nimport * as RendererProcess from '../RendererProcess/RendererProcess.js'\n\nexport const show = async (editor, message, rowIndex, columnIndex) => {\n const x = EditorPosition.x(editor, rowIndex, columnIndex)\n const y = EditorPosition.y(editor, rowIndex, columnIndex)\n await RendererProcess.invoke(\n /* EditorError.show */ 'EditorError.show',\n /* message */ message,\n /* x */ x,\n /* y */ y\n )\n}\n", "import * as EditorError from './EditorError.js'\n\nexport const Commands = {\n 3900: EditorError.show,\n}\n", "import * as ExtensionHostActivationEvent from '../ExtensionHostActivationEvent/ExtensionHostActivationEvent.js'\nimport * as ExtensionHostEditor from './ExtensionHostEditor.js'\n\nconst combineResultsPrepareRename = (results) => {\n return results[0]\n}\n\nexport const executePrepareRenameProvider = (editor, offset) => {\n return ExtensionHostEditor.execute({\n editor,\n event: ExtensionHostActivationEvent.OnRename,\n method: 'ExtensionHostRename.executePrepareRename',\n args: [offset],\n noProviderFoundMessage: 'No rename provider found',\n combineResults: combineResultsPrepareRename,\n })\n}\n\nconst combineResultsRename = (results) => {\n return results[0]\n}\n\nexport const executeRenameProvider = (editor, offset, newName) => {\n return ExtensionHostEditor.execute({\n editor,\n event: ExtensionHostActivationEvent.OnRename,\n method: 'ExtensionHostRename.executeRename',\n args: [offset, newName],\n noProviderFoundMessage: 'No rename provider found',\n combineResults: combineResultsPrepareRename,\n })\n}\n", "import * as Command from '../Command/Command.js'\nimport * as Editor from '../Editor/Editor.js'\nimport * as EditorPosition from '../EditorCommand/EditorCommandPosition.js'\nimport * as ExtensionHostRename from '../ExtensionHost/ExtensionHostRename.js'\nimport * as RendererProcess from '../RendererProcess/RendererProcess.js'\nimport * as TextDocument from '../TextDocument/TextDocument.js'\nimport * as SplitLines from '../SplitLines/SplitLines.js'\nimport * as Assert from '../Assert/Assert.js'\n\n// TODO memory leak\nexport const state = {\n editor: undefined,\n}\n\nconst prepareRename = async (editor, rowIndex, columnIndex) => {\n const offset = TextDocument.offsetAt(editor, rowIndex, columnIndex)\n return ExtensionHostRename.executePrepareRenameProvider(editor, offset)\n}\n\nconst rename = (editor, rowIndex, columnIndex, newName) => {\n const offset = TextDocument.offsetAt(editor, rowIndex, columnIndex)\n return ExtensionHostRename.executeRenameProvider(editor, offset)\n}\n\nexport const open = async (editor) => {\n const rowIndex = editor.selections[0]\n const columnIndex = editor.selections[1]\n Assert.number(rowIndex)\n Assert.number(columnIndex)\n\n // TODO handle error and add tests for handled error\n const prepareRenameResult = await prepareRename(editor, rowIndex, columnIndex)\n\n // TODO race condition, what is when editor is closed before promise resolves\n\n if (prepareRenameResult.canRename) {\n const x = EditorPosition.x(editor, rowIndex, columnIndex)\n const y = EditorPosition.y(editor, rowIndex, columnIndex)\n // const prepareRenameResult = await prepareRename(editor)\n // console.log({ prepareRenameResult })\n await RendererProcess.invoke(\n /* EditorRename.openWidget */ 4512,\n /* x */ x,\n /* y */ y\n )\n } else {\n // TODO also show error when promise rejects\n await Command.execute(\n /* EditorError.show */ 3900,\n /* editor */ editor,\n /* message */ 'You cannot rename this element',\n /* rowIndex */ rowIndex,\n /* columnIndex */ columnIndex\n )\n }\n}\n\nconst toPositionBasedEdits = (textDocument, edits) => {\n const positionBasedEdits = []\n for (const edit of edits) {\n const start = TextDocument.positionAt(textDocument, edit.offset)\n const end = TextDocument.positionAt(\n textDocument,\n edit.offset + edit.inserted.length - edit.deleted\n )\n positionBasedEdits.push({\n start,\n end,\n inserted: SplitLines.splitLines(edit.inserted),\n deleted: [''],\n })\n console.log(edit)\n }\n return positionBasedEdits\n}\n\n// TODO how to best apply workspace edit?\nconst applyWorkspaceEdits = async (editor, workspaceEdits) => {\n if (workspaceEdits.length === 0) {\n return\n }\n const workspaceEdit = workspaceEdits[0]\n const positionBasedEdits = toPositionBasedEdits(\n editor.textDocument,\n workspaceEdit.edits\n )\n Editor.scheduleDocumentAndCursorsSelections(editor, positionBasedEdits)\n}\n\nexport const finish = async (editor) => {\n // TODO what if cursor position changes while rename is in progress?\n // TODO what happens if file content changes while rename is in progress?\n // TODO what happens when file is closed while rename is in progress?\n const rowIndex = editor.selections[0]\n const columnIndex = editor.selections[1]\n const newName = await RendererProcess.invoke(/* EditorRename.finish */ 4513)\n // TODO support canceling rename (e.g. when user presses escape)\n const workspaceEdits = await rename(editor, rowIndex, columnIndex, newName)\n await applyWorkspaceEdits(editor, workspaceEdits)\n // console.log({ workspaceEdits })\n // Editor.scheduleDocumentAndSelections(editor)\n // console.log({ workspaceEdits })\n}\n\nexport const abort = async () => {\n await RendererProcess.invoke(/* EditorRename.closeWidget */ 4514)\n}\n", "import * as EditorRename from './EditorRename.js'\n\nexport const name = 'EditorRename'\n\nexport const Commands = {\n abort: EditorRename.abort,\n finish: EditorRename.finish,\n open: EditorRename.open,\n}\n", "import * as ElectronApp from './ElectronApp.js'\n\nexport const name = 'ElectronApp'\n\n// prettier-ignore\nexport const Commands = {\n exit: ElectronApp.exit,\n}\n", "import * as ElectronBrowserView from './ElectronBrowserView.js'\n\n// prettier-ignore\nexport const Commands = {\n}\n", "import * as ElectronProcess from '../ElectronProcess/ElectronProcess.js'\n\nexport const writeText = (text) => {\n return ElectronProcess.invoke('ElectronClipBoard.writeText', text)\n}\n", "import * as ElectronClipBoard from './ElectronClipBoard.js'\n\nexport const name = 'ElectronClipBoard'\n\n// prettier-ignore\nexport const Commands = {\n writeText: ElectronClipBoard.writeText,\n}\n", "import * as ElectronMenu from './ElectronMenu.js'\n\nexport const name = 'ElectronMenu'\n\n// prettier-ignore\nexport const Commands = {\n handleMenuClose: ElectronMenu.handleMenuClose,\n handleSelect: ElectronMenu.handleSelect,\n}\n", "import * as ElectronWindow from './ElectronWindow.js'\n\nexport const name = 'ElectronWindow'\n\nexport const Commands = {\n close: ElectronWindow.close,\n maximize: ElectronWindow.maximize,\n minimize: ElectronWindow.minimize,\n toggleDevtools: ElectronWindow.toggleDevtools,\n unmaximize: ElectronWindow.unmaximize,\n zoomIn: ElectronWindow.zoomIn,\n zoomOut: ElectronWindow.zoomOut,\n}\n", "import * as ErrorHandling from './ErrorHandling.js'\n\nexport const name = 'ErrorHandling'\n\nexport const Commands = {\n handleError: ErrorHandling.handleError,\n}\n", "import * as RendererProcess from '../RendererProcess/RendererProcess.js'\n\n/*\n * should only be used for testing\n */\nexport const evalInRendererProcess = (code) => {\n return RendererProcess.invoke('Eval.evalCode', code)\n}\n", "import * as Eval from './Eval.js'\n\nexport const name = 'Eval'\n\nexport const Commands = {\n evalInRendererProcess: Eval.evalInRendererProcess,\n}\n", "import * as ExtensionHostCore from './ExtensionHostCore.js'\n\n// prettier-ignore\nexport const Commands={\n\n 'ExtensionHost.loadWebExtension': ExtensionHostCore.loadWebExtension,\n 'ExtensionHost.startWebExtensionHost': ExtensionHostCore.startWebExtensionHost,\n}\n", "import * as ExtensionMeta from './ExtensionMeta.js'\n\nexport const name = 'ExtensionMeta'\n\n// prettier-ignore\nexport const Commands = {\n addNodeExtension: ExtensionMeta.addNodeExtension,\n addWebExtension: ExtensionMeta.addWebExtension,\n}\n", "import * as OpenNativeFolder from '../OpenNativeFolder/OpenNativeFolder.js'\nimport * as Platform from '../Platform/Platform.js'\n\nexport const openExtensionsFolder = async () => {\n const extensionsFolder = await Platform.getExtensionsPath()\n await OpenNativeFolder.openNativeFolder(extensionsFolder)\n}\n\nexport const openCachedExtensionsFolder = async () => {\n const cachedExtensionsFolder = await Platform.getCachedExtensionsPath()\n await OpenNativeFolder.openNativeFolder(cachedExtensionsFolder)\n}\n", "import * as Extensions from './Extensions.js'\n\n// prettier-ignore\nexport const Commands = {\n 'Extensions.openCachedExtensionsFolder': Extensions.openCachedExtensionsFolder,\n 'Extensions.openExtensionsFolder': Extensions.openExtensionsFolder,\n}\n", "import * as RendererProcess from '../RendererProcess/RendererProcess.js'\n\nexport const showDirectoryPicker = async (options) => {\n try {\n return await RendererProcess.invoke(\n 'FilePicker.showDirectoryPicker',\n options\n )\n } catch (error) {\n if (\n error &&\n // @ts-ignore\n error.message === 'window.showDirectoryPicker is not a function'\n ) {\n throw new Error(`showDirectoryPicker not supported on this browser`)\n }\n throw error\n }\n}\n\nexport const showFilePicker = (options) => {\n return RendererProcess.invoke('FilePicker.showFilePicker', options)\n}\n\nexport const showSaveFilePicker = (options) => {\n return RendererProcess.invoke('FilePicker.showSaveFilePicker', options)\n}\n", "import * as FilePicker from './FilePicker.js'\n\nexport const name = 'FilePicker'\n\nexport const Commands = {\n showDirectoryPicker: FilePicker.showDirectoryPicker,\n showFilePicker: FilePicker.showFilePicker,\n showSaveFilePicker: FilePicker.showSaveFilePicker,\n}\n", "import * as FileSystem from './FileSystem.js'\n\nexport const name = 'FileSystem'\n\n// prettier-ignore\nexport const Commands = {\n chmod: FileSystem.chmod,\n getPathSeparator: FileSystem.getPathSeparator,\n mkdir: FileSystem.mkdir,\n readDirWithFileTypes: FileSystem.readDirWithFileTypes,\n readFile: FileSystem.readFile,\n remove: FileSystem.remove,\n writeFile: FileSystem.writeFile,\n}\n", "import * as Format from './Format.js'\n\nexport const name = 'Format'\n\nexport const Commands = {\n 'Format.hydrate': Format.hydrate,\n}\n", "import * as IconTheme from './IconTheme.js'\n\nexport const name = 'IconTheme'\n\nexport const Commands = {\n hydrate: IconTheme.hydrate,\n setIconTheme: IconTheme.setIconTheme,\n // TODO command necessary?\n // TODO hydrate should be an alias for reload/load\n}\n", "import * as RendererProcess from '../RendererProcess/RendererProcess.js'\nimport * as FileSystem from '../FileSystem/FileSystem.js'\n\nexport const state = {\n uri: '',\n versionId: 0,\n}\n\nconst WIDTH = 170 // TODO how to keep in sync with css?\nconst SPACE = 10\nconst TRIANGLE_OFFSET_TOP = 22\nconst TRIANGLE_HEIGHT = 22\nconst TREE_ITEM_HEIGHT = 22\nconst TOP = TRIANGLE_OFFSET_TOP + (TREE_ITEM_HEIGHT - TRIANGLE_HEIGHT) / 2\n\nexport const show = async (uri, top, left) => {\n try {\n const version = ++state.versionId\n // TODO what to do on web? probably need to create blob url\n // or use https url for external images\n const blobUrl = await FileSystem.getBlobUrl(uri)\n if (version !== state.versionId) {\n return\n }\n await RendererProcess.invoke(\n /* Viewlet.hydrate */ 3028,\n /* id */ 'ImagePreview',\n /* imageUrl */ blobUrl,\n /* top */ top - TOP,\n /* left */ left - WIDTH - SPACE\n )\n } catch (error) {\n console.error(error)\n await RendererProcess.invoke(\n /* Viewlet.hydrate */ 3028,\n /* id */ 'ImagePreview',\n /* message */ 'Image could not be loaded',\n /* top */ top - TOP,\n /* left */ left - WIDTH - SPACE\n )\n }\n}\n\nexport const hide = async () => {\n ++state.versionId\n await RendererProcess.invoke(\n /* Viewlet.dispose */ 'Viewlet.dispose',\n /* id */ 'ImagePreview'\n )\n}\n", "import * as ImagePreview from './ImagePreview.js'\n\n// TODO only use ImagePreview module via ipc -> that way is is always lazyloaded\n\nexport const name = 'ImagePreview'\n\nexport const Commands = {\n hide: ImagePreview.hide,\n show: ImagePreview.show,\n}\n", "import * as IndexedDb from './IndexedDb.js'\n\nexport const name = 'IndexedDb'\n\nexport const Commands = {\n addHandle: IndexedDb.addHandle,\n getHandle: IndexedDb.getHandle,\n}\n", "import * as KeyBindings from './KeyBindings.js'\n\nexport const Commands = {\n 'KeyBindings.handleKeyBinding': KeyBindings.handleKeyBinding,\n 'KeyBindings.hydrate': KeyBindings.hydrate,\n}\n", "import * as KeyBindingsInitial from './KeyBindingsInitial.js'\n\n// prettier-ignore\nexport const Commands = {\n 'KeyBindingsInitial.getKeyBindings': KeyBindingsInitial.getKeyBindings,\n}\n", "import * as Listener from './Listener.js'\n\nexport const Commands = {\n 3444: Listener.execute,\n}\n", "import * as LocalStorage from './LocalStorage.js'\n\n// TODO only use LocalStorage module via ipc -> that way is is always lazyloaded\n\nexport const name = 'LocalStorage'\n\nexport const Commands = {\n clear: LocalStorage.clear,\n getJson: LocalStorage.getJson,\n getText: LocalStorage.getText,\n setJson: LocalStorage.setJson,\n setText: LocalStorage.setText,\n}\n", "import * as Menu from './Menu.js'\n\nexport const name = 'Menu'\n\nexport const Commands = {\n focusFirst: Menu.focusFirst,\n focusIndex: Menu.focusIndex,\n focusLast: Menu.focusLast,\n focusNext: Menu.focusNext,\n focusPrevious: Menu.focusPrevious,\n handleMouseEnter: Menu.handleMouseEnter,\n handleMouseLeave: Menu.handleMouseLeave,\n hide: Menu.hide,\n selectIndex: Menu.selectIndex,\n selectItem: Menu.selectItem,\n show: Menu.show,\n}\n", "// based on https://github.com/microsoft/vscode/blob/bd782eb059e133d3a20fdb446b8feb0010a278ad/src/vs/base/common/mime.ts (License MIT)\n\nexport const mapExtToTextMimes = {\n '.css': 'text/css',\n '.csv': 'text/csv',\n '.htm': 'text/html',\n '.html': 'text/html',\n '.ics': 'text/calendar',\n '.js': 'text/javascript',\n '.mjs': 'text/javascript',\n '.txt': 'text/plain',\n '.xml': 'text/xml',\n}\n\nexport const mapExtToMediaMimes = {\n '.aac': 'audio/x-aac',\n '.avi': 'video/x-msvideo',\n '.bmp': 'image/bmp',\n '.flv': 'video/x-flv',\n '.gif': 'image/gif',\n '.ico': 'image/x-icon',\n '.jpe': 'image/jpg',\n '.jpeg': 'image/jpg',\n '.jpg': 'image/jpg',\n '.m1v': 'video/mpeg',\n '.m2a': 'audio/mpeg',\n '.m2v': 'video/mpeg',\n '.m3a': 'audio/mpeg',\n '.mid': 'audio/midi',\n '.midi': 'audio/midi',\n '.mk3d': 'video/x-matroska',\n '.mks': 'video/x-matroska',\n '.mkv': 'video/x-matroska',\n '.mov': 'video/quicktime',\n '.movie': 'video/x-sgi-movie',\n '.mp2': 'audio/mpeg',\n '.mp2a': 'audio/mpeg',\n '.mp3': 'audio/mpeg',\n '.mp4': 'video/mp4',\n '.mp4a': 'audio/mp4',\n '.mp4v': 'video/mp4',\n '.mpe': 'video/mpeg',\n '.mpeg': 'video/mpeg',\n '.mpg': 'video/mpeg',\n '.mpg4': 'video/mp4',\n '.mpga': 'audio/mpeg',\n '.oga': 'audio/ogg',\n '.ogg': 'audio/ogg',\n '.opus': 'audio/opus',\n '.ogv': 'video/ogg',\n '.png': 'image/png',\n '.psd': 'image/vnd.adobe.photoshop',\n '.qt': 'video/quicktime',\n '.spx': 'audio/ogg',\n '.svg': 'image/svg+xml',\n '.tga': 'image/x-tga',\n '.tif': 'image/tiff',\n '.tiff': 'image/tiff',\n '.wav': 'audio/x-wav',\n '.webm': 'video/webm',\n '.webp': 'image/webp',\n '.wma': 'audio/x-ms-wma',\n '.wmv': 'video/x-ms-wmv',\n '.woff': 'application/font-woff',\n '.avif': 'image/avif',\n}\n\nexport const defaultMimeType = ''\n", "import * as MimeTypes from '../MimeTypes/MimeTypes.js'\nimport * as Path from '../Path/Path.js'\n\nexport const getTextMime = (uri) => {\n const extension = Path.fileExtension(uri)\n return MimeTypes.mapExtToTextMimes[extension] || MimeTypes.defaultMimeType\n}\n\nexport const getMediaMimeType = (uri) => {\n const extension = Path.fileExtension(uri)\n return MimeTypes.mapExtToMediaMimes[extension] || MimeTypes.defaultMimeType\n}\n", "import * as Mime from './Mime.js'\n\nexport const name = 'Mime'\n\nexport const Commands = {\n getMediaMimeType: Mime.getMediaMimeType,\n getTextMime: Mime.getTextMime,\n}\n", "// TODO maybe rename this module to Focus\n\nimport * as RendererProcess from '../RendererProcess/RendererProcess.js'\n\nconst PART_TITLE_BAR = 1\nconst PART_MAIN = 2\nconst PART_PANEL = 3\nconst PART_STATUS_BAR = 4\nconst PART_SIDE_BAR = 5\nconst PART_ACTIVITY_BAR = 6\n\nexport const state = {\n focusedPart: PART_TITLE_BAR,\n}\n\nexport const focusActivityBar = async () => {\n await RendererProcess.invoke(/* ActivityBar.focus */ 717115)\n}\n\nexport const focusStatusBar = async () => {\n await RendererProcess.invoke(/* StatusBar.focus */ 8882)\n}\n\nexport const focusPanel = async () => {\n await RendererProcess.invoke(/* Panel.focus */ 6664)\n}\n\nexport const focusSideBar = async () => {\n await RendererProcess.invoke(/* SideBar.focus */ 5554)\n}\n\nexport const focusTitleBar = async () => {\n await RendererProcess.invoke(/* TitleBar.focus */ 1331)\n}\n\nexport const focusMain = async () => {\n await RendererProcess.invoke(/* Main.focus */ 2145)\n}\n\nexport const focusNextTerminal = () => {\n // TODO\n}\n\nexport const focusPreviousTerminal = () => {\n // TODO\n}\n\nexport const focusPart = (part) => {\n state.focusedPart = part\n switch (state.focusedPart) {\n case PART_TITLE_BAR:\n return focusTitleBar()\n case PART_MAIN:\n return focusMain()\n case PART_PANEL:\n return focusPanel()\n case PART_STATUS_BAR:\n return focusStatusBar()\n case PART_SIDE_BAR:\n return focusSideBar()\n case PART_ACTIVITY_BAR:\n return focusActivityBar()\n default:\n throw console.warn(`unknown part ${part}`)\n }\n}\n\nconst getNextPart = (part) => {\n switch (part) {\n case PART_TITLE_BAR:\n return PART_MAIN\n case PART_MAIN:\n return PART_PANEL\n case PART_PANEL:\n return PART_STATUS_BAR\n case PART_STATUS_BAR:\n return PART_SIDE_BAR\n case PART_SIDE_BAR:\n return PART_ACTIVITY_BAR\n case PART_ACTIVITY_BAR:\n return PART_TITLE_BAR\n default:\n throw console.warn(`unknown part ${part}`)\n }\n}\n\nconst getPreviousPart = (part) => {\n switch (part) {\n case PART_TITLE_BAR:\n return PART_ACTIVITY_BAR\n case PART_MAIN:\n return PART_TITLE_BAR\n case PART_PANEL:\n return PART_MAIN\n case PART_STATUS_BAR:\n return PART_PANEL\n case PART_SIDE_BAR:\n return PART_STATUS_BAR\n case PART_ACTIVITY_BAR:\n return PART_SIDE_BAR\n default:\n throw console.warn(`unknown part ${part}`)\n }\n}\n\nconst isVisiblePart = (part) => {\n // TODO\n return true\n}\n\nconst getVisiblePart = (part, fn) => {\n const nextPart = fn(part)\n if (isVisiblePart(nextPart)) {\n return nextPart\n }\n return getVisiblePart(nextPart, fn)\n}\n\nconst getVisiblePartNext = (part) => {\n return getVisiblePart(part, getNextPart)\n}\n\nconst getVisiblePartPrevious = (part) => {\n return getVisiblePart(part, getPreviousPart)\n}\n\nconst getCurrentPart = () => {\n // TODO ask renderer process\n return state.focusedPart\n}\n\nexport const focusNextPart = async () => {\n const currentPart = getCurrentPart()\n const nextPart = getVisiblePartNext(currentPart)\n await focusPart(nextPart)\n}\n\nexport const focusPreviousPart = async () => {\n const currentPart = getCurrentPart()\n const previousPart = getVisiblePartPrevious(currentPart)\n await focusPart(previousPart)\n}\n", "import * as Navigation from './Navigation.js'\n\nexport const Commands = {\n 'Navigation.focusActivityBar': Navigation.focusActivityBar,\n 'Navigation.focusMain': Navigation.focusMain,\n 'Navigation.focusNextPart': Navigation.focusNextPart,\n 'Navigation.focusPanel': Navigation.focusPanel,\n 'Navigation.focusPreviousPart': Navigation.focusPreviousPart,\n 'Navigation.focusSideBar': Navigation.focusSideBar,\n 'Navigation.focusStatusBar': Navigation.focusStatusBar,\n 'Navigation.focusTitleBar': Navigation.focusTitleBar,\n}\n", "import * as RendererProcess from '../RendererProcess/RendererProcess.js'\n\nexport const state = {\n notifications: [],\n}\n\nexport const create = async (type, text) => {\n state.notifications.push({ type, text })\n await RendererProcess.invoke(\n /* Notification.create */ 'Notification.create',\n /* type */ type,\n /* text */ text\n )\n}\n\nexport const showWithOptions = async (type, text, options) => {\n state.notifications.push({ type, text, options })\n console.log({ type, text, options })\n await RendererProcess.invoke(\n /* Notification.createWithOptions */ 993,\n /* type */ type,\n /* text */ text,\n /* options */ options\n )\n}\n\nexport const handleClick = (index) => {\n console.log('handle click')\n const notification = state.notifications[0]\n if (!notification.options) {\n throw new Error('notification has no options that can be clicked')\n }\n const option = notification.options[index]\n console.log({ notification, index, option })\n}\n\nexport const dispose = async (id) => {\n await RendererProcess.invoke(\n /* Notification.dispose */ 'Notification.dispose',\n /* id */ id\n )\n}\n", "import * as Notification from './Notification.js'\n\nexport const name = 'Notification'\n\nexport const Commands = {\n create: Notification.create,\n dispose: Notification.dispose,\n handleClick: Notification.handleClick,\n showWithOptions: Notification.showWithOptions,\n}\n", "import * as ElectronShell from '../ElectronShell/ElectronShell.js'\nimport * as ElectronWindow from '../ElectronWindow/ElectronWindow.js'\nimport * as Platform from '../Platform/Platform.js'\nimport * as PlatformType from '../PlatformType/PlatformType.js'\nimport * as RendererProcess from '../RendererProcess/RendererProcess.js'\nimport { VError } from '../VError/VError.js'\n\nconst openUrlWeb = async (url) => {\n try {\n await RendererProcess.invoke(\n /* Open.openUrl */ 'Open.openUrl',\n /* url */ url\n )\n } catch (error) {\n throw new VError(error, `Failed to open url ${url}`)\n }\n}\n\nconst openUrlElectron = async (url) => {\n await ElectronWindow.openNew(url)\n}\n\nexport const openUrl = async (url) => {\n switch (Platform.platform) {\n case PlatformType.Electron:\n return openUrlElectron(url)\n default:\n return openUrlWeb(url)\n }\n}\n\nconst openExternalElectron = async (url) => {\n await ElectronShell.openExternal(url)\n}\n\nexport const openExternal = (url) => {\n switch (Platform.platform) {\n case PlatformType.Electron:\n return openExternalElectron(url)\n default:\n throw new Error('not implemented')\n }\n}\n", "import * as Open from './Open.js'\n\nexport const name = 'Open'\n\nexport const Commands = {\n openExternal: Open.openExternal,\n openUrl: Open.openUrl,\n}\n", "import * as OpenNativeFolder from './OpenNativeFolder.js'\n\nexport const Commands = {\n 'OpenNativeFolder.openNativeFolder': OpenNativeFolder.openNativeFolder,\n}\n", "import * as FileHandle from './PersistentFileHandle.js'\n\nexport const name = 'PersistentFileHandle'\n\nexport const Commands = {\n addHandle: FileHandle.addHandle,\n getHandle: FileHandle.getHandle,\n removeHandle: FileHandle.removeHandle,\n}\n", "import * as Preferences from './Preferences.js'\n\nexport const name = 'Preferences'\n\n// prettier-ignore\nexport const Commands = {\n // TODO is this needed?\n // TODO rename to openKeyBindingsJson -> similar to openSettingsJson\n hydrate: Preferences.hydrate,\n openKeyBindingsJson: Preferences.openKeyBindingsJson,\n openSettingsJson: Preferences.openSettingsJson,\n}\n", "import * as FileSystem from '../FileSystem/FileSystem.js'\nimport * as GlobalEventBus from '../GlobalEventBus/GlobalEventBus.js'\nimport * as Json from '../Json/Json.js'\nimport * as Workspace from '../Workspace/Workspace.js'\nimport * as Platform from '../Platform/Platform.js'\nimport * as SharedProcess from '../SharedProcess/SharedProcess.js'\n\n// TODO maybe put this together with workspace\n\nconst isValid = (recentlyOpened) => {\n return recentlyOpened && Array.isArray(recentlyOpened)\n}\n\nexport const getRecentlyOpened = async () => {\n try {\n const content = await FileSystem.readFile('app://recently-opened.json')\n const parsed = Json.parse(content)\n if (!isValid(parsed)) {\n return []\n }\n // TODO handle error gracefully if this is not an array of strings\n return parsed\n } catch (error) {\n // TODO should check for error.code\n if (error.message.includes('File not found')) {\n // ignore\n } else if (error.message.includes('failed to parse json')) {\n // ignore\n } else {\n error.message = `Failed to read recently opened: ${error.message}`\n console.warn(error)\n }\n return []\n }\n}\n\nconst setRecentlyOpened = async (newRecentlyOpened) => {\n const stringified = Json.stringify(newRecentlyOpened)\n await FileSystem.writeFile('app://recently-opened.json', stringified)\n}\n\nexport const clearRecentlyOpened = async () => {\n await setRecentlyOpened([])\n}\n\nconst getNewRecentlyOpened = (recentlyOpened, path) => {\n const index = recentlyOpened.indexOf(path)\n if (index === -1) {\n return [path, ...recentlyOpened]\n }\n return [\n path,\n ...recentlyOpened.slice(0, index),\n ...recentlyOpened.slice(index + 1),\n ]\n}\n\nconst addToRecentlyOpenedWeb = async (path) => {\n const recentlyOpened = await getRecentlyOpened()\n const newRecentlyOpened = getNewRecentlyOpened(recentlyOpened, path)\n await setRecentlyOpened(newRecentlyOpened)\n}\n\nconst addToRecentlyOpenedRemote = async (path) => {\n await SharedProcess.invoke('RecentlyOpened.addPath', path)\n}\n\nexport const addToRecentlyOpened = async (path) => {\n switch (Platform.platform) {\n case 'electron':\n case 'remote':\n return addToRecentlyOpenedRemote(path)\n case 'web':\n return addToRecentlyOpenedWeb(path)\n default:\n return\n }\n}\n\nconst addWorkspacePathToRecentlyOpened = async () => {\n const workspacePath = Workspace.getWorkspacePath()\n if (!workspacePath) {\n return\n }\n // TODO add event listener that listens for workspace changes\n try {\n await addToRecentlyOpened(workspacePath)\n } catch {\n // ignore\n }\n}\n\n// TODO if it is somehow possible to make this more efficient\nexport const hydrate = async () => {\n await addWorkspacePathToRecentlyOpened()\n GlobalEventBus.addListener(\n 'workspace.change',\n addWorkspacePathToRecentlyOpened\n )\n}\n", "import * as RecentlyOpened from './RecentlyOpened.js'\n\n// prettier-ignore\nexport const Commands = {\n 'RecentlyOpened.addToRecentlyOpened': RecentlyOpened.addToRecentlyOpened,\n 'RecentlyOpened.clearRecentlyOpened': RecentlyOpened.clearRecentlyOpened,\n 'RecentlyOpened.getRecentlyOpened': RecentlyOpened.getRecentlyOpened,\n 'RecentlyOpened.hydrate': RecentlyOpened.hydrate,\n}\n", "import * as SaveState from './SaveState.js'\n\n// prettier-ignore\nexport const Commands = {\n 'SaveState.handleVisibilityChange': SaveState.handleVisibilityChange,\n 'SaveState.hydrate': SaveState.hydrate,\n}\n", "import * as Platform from '../Platform/Platform.js'\nimport * as Preferences from '../Preferences/Preferences.js'\nimport * as RendererProcess from '../RendererProcess/RendererProcess.js'\n\nconst SERVICE_WORKER_URL = '/serviceWorker.js'\n\nexport const hydrate = async () => {\n if (Platform.platform === 'electron') {\n return\n }\n if (!Preferences.get('serviceWorker.enabled')) {\n return\n }\n try {\n await RendererProcess.invoke(\n /* ServiceWorker.register */ 43725,\n /* url */ SERVICE_WORKER_URL\n )\n } catch (error) {\n if (error.message === 'A Service Worker has been blocked for this domain') {\n // ignore\n } else {\n console.info(`service worker could not be registered: ${error}`)\n }\n }\n}\n\nexport const uninstall = async () => {\n if (Platform.platform === 'electron') {\n return\n }\n try {\n await RendererProcess.invoke(/* ServiceWorker.uninstall */ 42726)\n } catch (error) {\n console.info(`service worker could not be unregistered: ${error}`)\n }\n}\n", "import * as ServiceWorker from './ServiceWorker.js'\n\nexport const Commands = {\n 'ServiceWorker.hydrate': ServiceWorker.hydrate,\n 'ServiceWorker.uninstall': ServiceWorker.uninstall,\n}\n", "import * as SessionReplay from './SessionReplay.js'\n\n// prettier-ignore\nexport const Commands = {\n 'SessionReplay.downloadSession': SessionReplay.downloadSession,\n 'SessionReplay.openSession': SessionReplay.openSession,\n 'SessionReplay.replayCurrentSession': SessionReplay.replayCurrentSession,\n 'SessionReplay.replaySession': SessionReplay.replaySession,\n}\n", "import * as SessionStorage from './SessionStorage.js'\n\n// TODO only use SessionStorage module via ipc -> that way is is always lazyloaded\n\nexport const name = 'SessionStorage'\n\nexport const Commands = {\n clear: SessionStorage.clear,\n getJson: SessionStorage.getJson,\n}\n", "import { VError } from '../VError/VError.js'\n\nexport const importScript = async (url) => {\n try {\n return await import(url)\n } catch (error) {\n throw new VError(error, `Failed to import script ${url}`)\n }\n}\n", "export const state = {\n /**\n * @type {any[]}\n */\n pendingTests: [],\n}\n\nexport const addTest = (name, fn) => {\n state.pendingTests.push({ name, fn })\n}\n\nexport const getTests = () => {\n const tests = state.pendingTests\n state.pendingTests = []\n return tests\n}\n", "import * as RendererProcess from '../RendererProcess/RendererProcess.js'\n\nexport const create = (selector, options) => {\n return new Locator(selector, options)\n}\n\nconst Locator = function (selector, { nth = -1, hasText = '' } = {}) {\n this._selector = selector\n this._nth = nth\n this._hasText = hasText\n}\n\nconst performAction = async (locator, fnName, options) => {\n return RendererProcess.invoke(\n 'TestFrameWork.performAction',\n locator,\n fnName,\n options\n )\n}\n\nconst toButtonNumber = (buttonType) => {\n switch (buttonType) {\n case 'left':\n return 0\n case 'middle':\n return 1\n case 'right':\n return 2\n default:\n throw new Error(`unsupported button type: ${buttonType}`)\n }\n}\n\nLocator.prototype.click = async function ({ button = 'left' } = {}) {\n const options = {\n cancable: true,\n bubbles: true,\n button: toButtonNumber(button),\n detail: 1,\n }\n return performAction(this, 'click', options)\n}\n\nLocator.prototype.hover = async function () {\n const options = {\n cancable: true,\n bubbles: true,\n }\n return performAction(this, 'hover', options)\n}\n\nLocator.prototype.first = function () {\n return create(this._selector, {\n nth: 0,\n })\n}\n\nLocator.prototype.locator = function (subSelector) {\n return create(`${this._selector} ${subSelector}`)\n}\n\nLocator.prototype.nth = function (nth) {\n return create(this._selector, { nth })\n}\n\nLocator.prototype.type = async function (text) {\n const options = { text }\n return performAction(this, 'type', options)\n}\n\nLocator.prototype.dispatchEvent = async function (type, init) {\n return performAction(this, 'dispatchEvent', { type, init })\n}\n", "import * as NameAnonymousFunction from '../NameAnonymousFunction/NameAnonymousFunction.js'\nimport * as RendererProcess from '../RendererProcess/RendererProcess.js'\nimport * as TestState from '../TestState/TestState.js'\nexport { create as Locator } from './Locator.js'\n\nexport const getTmpDir = async () => {\n return `memfs://`\n}\n\nexport const test = async (name, fn) => {\n NameAnonymousFunction.nameAnonymousFunction(fn, `test/${name}`)\n TestState.addTest(name, fn)\n}\n\ntest.skip = async (id, fn) => {\n const state = 'skip'\n const background = 'yellow'\n const text = `test skipped ${id}`\n await RendererProcess.invoke(\n 'TestFrameWork.showOverlay',\n state,\n background,\n text\n )\n}\n\nconst Assert = {\n string(value, message) {\n if (typeof value !== 'string') {\n throw new Error(message)\n }\n },\n number(value, message) {\n if (typeof value !== 'number' || isNaN(value)) {\n throw new Error(message)\n }\n },\n}\n\nexport const expect = (locator) => {\n return {\n async checkSingleElementCondition(fnName, options) {\n Assert.string(fnName)\n return RendererProcess.invoke(\n 'TestFrameWork.checkSingleElementCondition',\n locator,\n fnName,\n options\n )\n },\n async checkMultiElementCondition(fnName, options) {\n return RendererProcess.invoke(\n 'TestFrameWork.checkMultiElementCondition',\n locator,\n fnName,\n options\n )\n },\n async toBeVisible() {\n if (this.negated) {\n throw new Error(`use toBeHidden instead of not.toBeVisible`)\n }\n return this.checkSingleElementCondition('toBeVisible', {})\n },\n async toHaveText(text) {\n Assert.string(text, 'text must be of type string')\n return this.checkSingleElementCondition('toHaveText', { text })\n },\n async toHaveValue(value) {\n Assert.string(value, 'value must be of type string')\n return this.checkSingleElementCondition('toHaveValue', { value })\n },\n async toBeFocused() {\n return this.checkSingleElementCondition('toBeFocused')\n },\n async toHaveCSS(key, value) {\n return this.checkSingleElementCondition('toHaveCss', {\n key,\n value,\n })\n },\n async toHaveAttribute(key, value) {\n Assert.string(key, 'key must be of type string')\n // Assert.string(value, 'value must be of type string')\n return this.checkSingleElementCondition('toHaveAttribute', {\n key,\n value,\n })\n },\n async toHaveClass(className) {\n Assert.string(className, 'className must be of type string')\n return await this.checkSingleElementCondition('toHaveClass', {\n className,\n })\n },\n async toHaveId(id) {\n Assert.string(id, 'id must be of type string')\n return await this.checkSingleElementCondition('toHaveId', {\n id,\n })\n },\n async toHaveCount(count) {\n Assert.number(count, 'count must be of type string')\n return this.checkMultiElementCondition('toHaveCount', { count })\n },\n async toBeHidden() {\n return this.checkMultiElementCondition('toBeHidden', {})\n },\n get not() {\n this.negated = true\n return this\n },\n }\n}\n", "import * as Command from '../Command/Command.js'\n\nexport const focus = async () => {\n await Command.execute('ActivityBar.focus')\n}\n\nexport const focusFirst = async () => {\n await Command.execute('ActivityBar.focusFirst')\n}\n\nexport const focusLast = async () => {\n await Command.execute('ActivityBar.focusLast')\n}\n\nexport const focusNext = async () => {\n await Command.execute('ActivityBar.focusNext')\n}\n\nexport const focusPrevious = async () => {\n await Command.execute('ActivityBar.focusPrevious')\n}\n\nexport const handleClick = async (index) => {\n await Command.execute('ActivityBar.handleClick', index)\n}\n\nexport const handleContextMenu = async () => {\n await Command.execute('ActivityBar.handleContextMenu')\n}\n\nexport const selectCurrent = async () => {\n await Command.execute('ActivityBar.selectCurrent')\n}\n", "import * as ExtensionHostCommand from '../ExtensionHost/ExtensionHostCommands.js'\n\nexport const execute = async (id, ...args) => {\n await ExtensionHostCommand.executeCommand(id)\n}\n", "import * as Command from '../Command/Command.js'\n\nexport const selectItem = async (text) => {\n await Command.execute('Menu.selectItem', text)\n}\n", "import * as Command from '../Command/Command.js'\n\nexport const setCursor = async (rowIndex, columnIndex) => {\n await Command.execute('Editor.cursorSet', rowIndex, columnIndex)\n}\n\nexport const openCompletion = async () => {\n await Command.execute('Editor.openCompletion')\n}\n\nexport const openEditorContextMenu = async () => {\n await Command.execute('Editor.handleContextMenu', 0, 0)\n}\n\nexport const executeTabCompletion = async () => {\n await Command.execute('Editor.tabCompletion')\n}\n\nexport const executeBraceCompletion = async (text) => {\n await Command.execute('Editor.braceCompletion', text)\n}\n\nexport const cursorCharacterRight = async () => {\n await Command.execute('Editor.cursorCharacterRight')\n}\n\nexport const cursorCharacterLeft = async () => {\n await Command.execute('Editor.cursorCharacterLeft')\n}\n\nexport const copyLineDown = async () => {\n await Command.execute('Editor.copyLineDown')\n}\n\nexport const cursorDown = async () => {\n await Command.execute('Editor.cursorDown')\n}\n\nexport const cursorUp = async () => {\n await Command.execute('Editor.cursorUp')\n}\n\nexport const cursorWordLeft = async () => {\n await Command.execute('Editor.cursorWordLeft')\n}\n\nexport const cursorWordRight = async () => {\n await Command.execute('Editor.cursorWordRight')\n}\n\nexport const goToDefinition = async () => {\n await Command.execute('Editor.goToDefinition')\n}\n\nexport const goToTypeDefinition = async () => {\n await Command.execute('Editor.goToTypeDefinition')\n}\n\nexport const type = async (text) => {\n await Command.execute('Editor.type')\n}\n\nexport const findAllReferences = async () => {\n await Command.execute('SideBar.show', 'References', /* focus */ true)\n}\n\nexport const setSelections = async (selections) => {\n await Command.execute('Editor.setSelections', selections)\n}\n\nexport const openFindWidget = async () => {\n await Command.execute('Editor.openFind')\n}\n\nexport const setDeltaY = async (deltaY) => {\n await Command.execute('Editor.setDeltaY', deltaY)\n}\n\nexport const format = async () => {\n await Command.execute('Editor.format')\n}\n", "import * as Command from '../Command/Command.js'\n\nexport const focusNext = async () => {\n await Command.execute('FindWidget.focusNext')\n}\n\nexport const setValue = async (value) => {\n await Command.execute('FindWidget.handleInput', value)\n}\n", "import * as Command from '../Command/Command.js'\n\nexport const evalInRendererProcess = async (code) => {\n await Command.execute('Eval.evalInRendererProcess', code)\n}\n", "import * as Command from '../Command/Command.js'\n\nexport const openContextMenu = async (index) => {\n await Command.execute('Explorer.handleContextMenuKeyboard', index)\n}\n\nexport const focus = async () => {\n await Command.execute('Explorer.focusIndex', -1)\n}\n\nexport const focusNext = async () => {\n await Command.execute('Explorer.focusNext')\n}\n\nexport const focusIndex = async (index) => {\n await Command.execute('Explorer.focusIndex', index)\n}\n\nexport const clickCurrent = async () => {\n await Command.execute('Explorer.handleClickCurrent')\n}\n\nexport const handleArrowLeft = async () => {\n await Command.execute('Explorer.handleArrowLeft')\n}\n\nexport const focusLast = async () => {\n await Command.execute('Explorer.focusLast')\n}\n\nexport const focusFirst = async () => {\n await Command.execute('Explorer.focusFirst')\n}\n\nexport const removeDirent = async () => {\n await Command.execute('Explorer.removeDirent')\n}\n\nexport const expandRecursively = async () => {\n await Command.execute('Explorer.expandRecursively')\n}\n\nexport const newFile = async () => {\n await Command.execute('Explorer.newFile')\n}\n\nexport const handleClick = async (index) => {\n await Command.execute('Explorer.handleClick', index)\n}\n\nexport const rename = async () => {\n await Command.execute('Explorer.rename')\n}\n\nexport const cancelEdit = async () => {\n await Command.execute('Explorer.cancelEdit')\n}\n\nexport const acceptEdit = async () => {\n await Command.execute('Explorer.acceptEdit')\n}\n\nexport const updateEditingValue = async (value) => {\n await Command.execute('Explorer.updateEditingValue', value)\n}\n", "import * as Command from '../Command/Command.js'\n\nexport const addWebExtension = async (relativePath) => {\n // TODO compute absolutePath\n const absolutePath = relativePath\n await Command.execute('ExtensionMeta.addWebExtension', absolutePath)\n}\n\nexport const addNodeExtension = async (relativePath) => {\n // TODO compute absolutePath\n const absolutePath = relativePath\n await Command.execute('ExtensionMeta.addNodeExtension', absolutePath)\n}\n", "import * as Command from '../Command/Command.js'\nimport * as FileSystemProtocol from '../FileSystemProtocol/FileSystemProtocol.js'\nimport * as PathSeparatorType from '../PathSeparatorType/PathSeparatorType.js'\nimport * as Platform from '../Platform/Platform.js'\n\nexport const writeFile = async (path, content) => {\n await Command.execute('FileSystem.writeFile', path, content)\n}\n\nexport const mkdir = async (path) => {\n await Command.execute('FileSystem.mkdir', path)\n}\n\nexport const getTmpDir = async ({ scheme = FileSystemProtocol.Memfs } = {}) => {\n switch (scheme) {\n case FileSystemProtocol.Memfs:\n return 'memfs://'\n default:\n return Platform.getTmpDir()\n }\n}\n\nexport const chmod = async (uri, permissions) => {\n await Command.execute('FileSystem.chmod', uri, permissions)\n}\n\nexport const createExecutable = async (content) => {\n const tmpDir = await getTmpDir({ scheme: 'file' })\n const nodePath = await Platform.getNodePath()\n const gitPath = `${tmpDir}/git`\n await writeFile(\n gitPath,\n `#!${nodePath}\n ${content}`\n )\n await chmod(gitPath, '755')\n return gitPath\n}\n\nexport const createExecutableFrom = async (path) => {\n const testPath = await Platform.getTestPath()\n const absolutePath = testPath + PathSeparatorType.Slash + path\n const content = await Command.execute('Ajax.getText', absolutePath)\n return createExecutable(content)\n}\n", "import * as RendererProcess from '../RendererProcess/RendererProcess.js'\n\nconst getKeyOptions = (rawKey) => {\n if (rawKey.includes('+')) {\n const parts = rawKey.split('+')\n let ctrlKey = false\n let altKey = false\n let spaceKey = false\n let key = ''\n for (const part of parts) {\n switch (part) {\n case 'Control':\n ctrlKey = true\n break\n case 'Space':\n key = ' '\n break\n case 'Alt':\n altKey = true\n break\n default:\n key = part\n break\n }\n }\n return {\n key,\n ctrlKey,\n altKey,\n }\n }\n return { key: rawKey }\n}\n\nexport const press = async (key) => {\n const keyOptions = getKeyOptions(key)\n const options = {\n cancelable: true,\n bubbles: true,\n ...keyOptions,\n }\n await RendererProcess.invoke(\n 'TestFrameWork.performKeyBoardAction',\n 'press',\n options\n )\n}\n", "import * as Command from '../Command/Command.js'\n\nexport const openUri = async (uri) => {\n await Command.execute('Main.openUri', uri)\n}\n", "import * as Platform from '../Platform/Platform.js'\n\nexport const getNodePath = () => {\n return Platform.getNodePath()\n}\n", "import * as Command from '../Command/Command.js'\nimport * as ViewletModuleId from '../ViewletModuleId/ViewletModuleId.js'\n\nexport const open = async () => {\n await Command.execute(\n 'Viewlet.openWidget',\n ViewletModuleId.QuickPick,\n 'everything'\n )\n}\n\nexport const setValue = async (value) => {\n await Command.execute('QuickPick.handleInput', value, 0)\n}\n\nexport const focusNext = async () => {\n await Command.execute('QuickPick.focusNext')\n}\n\nexport const focusIndex = async (index) => {\n await Command.execute('QuickPick.focusIndex', index)\n}\n\nexport const focusPrevious = async () => {\n await Command.execute('QuickPick.focusPrevious')\n}\n\nexport const selectItem = async (label) => {\n await Command.execute('QuickPick.selectItem', label)\n}\n", "import * as Command from '../Command/Command.js'\n\nexport const setValue = async (value) => {\n await Command.execute('Search.setValue', value)\n}\n", "import * as Preferences from '../Preferences/Preferences.js'\n\nexport const update = async (settings) => {\n await Preferences.update(settings)\n}\n", "import * as Command from '../Command/Command.js'\n\nexport const open = async (id) => {\n await Command.execute('SideBar.openViewlet', id)\n}\n", "import * as Command from '../Command/Command.js'\n\nexport const closeMenu = async () => {\n await Command.execute('TitleBarMenuBar.closeMenu')\n}\n\nexport const focus = async () => {\n await Command.execute('TitleBarMenuBar.focus')\n}\n\nexport const focusFirst = async () => {\n await Command.execute('TitleBarMenuBar.focusFirst')\n}\n\nexport const focusIndex = async (index) => {\n await Command.execute('TitleBarMenuBar.focusIndex', index)\n}\n\nexport const focusLast = async () => {\n await Command.execute('TitleBarMenuBar.focusLast')\n}\n\nexport const focusNext = async () => {\n await Command.execute('TitleBarMenuBar.focusNext')\n}\n\nexport const focusPrevious = async () => {\n await Command.execute('TitleBarMenuBar.focusPrevious')\n}\n\nexport const handleKeyArrowDown = async () => {\n await Command.execute('TitleBarMenuBar.handleKeyArrowDown')\n}\n\nexport const handleKeyArrowLeft = async () => {\n await Command.execute('TitleBarMenuBar.handleKeyArrowLeft')\n}\n\nexport const handleKeyArrowRight = async () => {\n await Command.execute('TitleBarMenuBar.handleKeyArrowRight')\n}\n\nexport const handleKeyArrowUp = async () => {\n await Command.execute('TitleBarMenuBar.handleKeyArrowUp')\n}\n\nexport const handleKeyEnd = async () => {\n await Command.execute('TitleBarMenuBar.handleKeyEnd')\n}\n\nexport const handleKeyHome = async () => {\n await Command.execute('TitleBarMenuBar.handleKeyHome')\n}\nexport const handleKeySpace = async () => {\n await Command.execute('TitleBarMenuBar.handleKeySpace')\n}\n\nexport const handleKeyEscape = async () => {\n await Command.execute('TitleBarMenuBar.handleKeyEscape')\n}\n\nexport const toggleIndex = async (index) => {\n await Command.execute('TitleBarMenuBar.toggleIndex', index)\n}\n\nexport const toggleMenu = async () => {\n await Command.execute('TitleBarMenuBar.toggleMenu')\n}\n", "import * as Command from '../Command/Command.js'\n\nexport const setPath = async (path) => {\n await Command.execute('Workspace.setPath', path)\n}\n", "import * as Command from '../Command/Command.js'\n\nexport const setIconTheme = async (id) => {\n await Command.execute('IconTheme.setIconTheme', id)\n}\n", "import * as Platform from '../Platform/Platform.js'\n\nexport const getBaseUrl = () => {\n return `${location.origin}/${Platform.getAssetDir()}`\n}\n", "export * as ActivityBar from './TestFrameworkComponentActivityBar.js'\nexport * as Command from './TestFrameWorkComponentCommand.js'\nexport * as ContextMenu from './TestFrameWorkComponentContextMenu.js'\nexport * as Editor from './TestFrameWorkComponentEditor.js'\nexport * as FindWidget from './TestFrameWorkComponentFindWidget.js'\nexport * as Eval from './TestFrameWorkComponentEval.js'\nexport * as Explorer from './TestFrameWorkComponentExplorer.js'\nexport * as Extension from './TestFrameWorkComponentExtension.js'\nexport * as FileSystem from './TestFrameWorkComponentFileSystem.js'\nexport * as KeyBoard from './TestFrameWorkComponentKeyBoard.js'\nexport * as Main from './TestFrameWorkComponentMain.js'\nexport * as Platform from './TestFrameWorkComponentPlatform.js'\nexport * as QuickPick from './TestFrameWorkComponentQuickPick.js'\nexport * as Search from './TestFrameWorkComponentSearch.js'\nexport * as Settings from './TestFrameWorkComponentSettings.js'\nexport * as SideBar from './TestFrameWorkComponentSideBar.js'\nexport * as TitleBarMenuBar from './TestFrameWorkComponentTitleBarMenuBar.js'\nexport * as Workspace from './TestFrameWorkComponentWorkspace.js'\nexport * as IconTheme from './TestFrameWorkComponentIconTheme.js'\nexport * as BaseUrl from './TestFrameWorkComponentBaseUrl.js'\n", "import * as ImportScript from '../ImportScript/ImportScript.js'\nimport * as RendererProcess from '../RendererProcess/RendererProcess.js'\nimport * as TestFrameWork from '../TestFrameWork/TestFrameWork.js'\nimport * as TestFrameWorkComponent from '../TestFrameWorkComponent/TestFrameWorkComponent.js'\nimport * as TestState from '../TestState/TestState.js'\nimport * as Timestamp from '../Timestamp/Timestamp.js'\nimport * as Workspace from '../Workspace/Workspace.js'\n\nexport const state = {\n tests: [],\n}\n\nconst exposeGlobals = (global, object) => {\n for (const [key, value] of Object.entries(object)) {\n global[key] = value\n }\n}\n\nconst printError = (error) => {\n if (error && error.constructor.name === 'AssertionError') {\n console.error(error.message)\n } else {\n console.error(error)\n }\n}\n\nconst executeTest = async (name, fn) => {\n let _error\n let _start\n let _end\n let _duration\n try {\n _start = Timestamp.now()\n await fn()\n _end = Timestamp.now()\n _duration = `${_end - _start}ms`\n console.info(`[test passed] ${name} in ${_duration}`)\n } catch (error) {\n console.log({ error })\n // @ts-ignore\n _error = error.message\n // @ts-ignore\n error.message = `Test failed: ${name}: ${error.message}`\n printError(error)\n }\n let state\n let background\n let text\n if (_error) {\n state = 'fail'\n background = 'red'\n text = `test failed: ${_error}`\n } else {\n background = 'green'\n text = `test passed in ${_duration}`\n state = 'pass'\n }\n await RendererProcess.invoke(\n 'TestFrameWork.showOverlay',\n state,\n background,\n text\n )\n}\n\nexport const execute = async (href) => {\n exposeGlobals(globalThis, TestFrameWorkComponent)\n exposeGlobals(globalThis, TestFrameWork)\n // TODO\n // 0. wait for page to be ready\n // 1. get script to import from renderer process (url or from html)\n const scriptUrl = href\n // 2. import that script\n const module = await ImportScript.importScript(scriptUrl)\n if (module.mockExec) {\n // TODO this should not be in workspace but in another module\n Workspace.state.mockExec = module.mockExec\n }\n console.log({ module })\n\n const tests = TestState.getTests()\n for (const test of tests) {\n await executeTest(test.name, test.fn)\n }\n // 3. if import fails, display error message\n\n // 4. run the test\n // 5. if test fails, display error message\n // 6. if test succeeds, display success message\n}\n", "import * as Test from './Test.js'\n\nexport const name = 'Test'\n\nexport const Commands = {\n execute: Test.execute,\n}\n", "import * as Url from './Url.js'\n\nexport const name = 'Url'\n\nexport const Commands = {\n createObjectUrl: Url.createObjectUrl,\n revokeObjectUrl: Url.revokeObjectUrl,\n}\n", "import * as Viewlet from './Viewlet.js'\n\nexport const Commands = {\n 'Viewlet.closeWidget': Viewlet.closeWidget,\n 'Viewlet.executeViewletCommand': Viewlet.executeViewletCommand,\n 'Viewlet.focus': Viewlet.focus,\n 'Viewlet.getAllStates': Viewlet.getAllStates,\n 'Viewlet.openWidget': Viewlet.openWidget,\n 2133: Viewlet.send,\n}\n", "import * as Chrome from '../Chrome/Chrome.js'\nimport * as Window from './Window.js'\n\nexport const name = 'Window'\n\nexport const Commands = {\n close: Chrome.close,\n exit: Chrome.exit,\n maximize: Chrome.maximize,\n minimize: Chrome.minimize,\n openNew: Chrome.openNew,\n reload: Window.reload,\n unmaximize: Chrome.unmaximize,\n zoomIn: Chrome.zoomIn,\n zoomOut: Chrome.zoomOut,\n}\n", "import * as Workbench from './Workbench.js'\n\nexport const Commands = {}\n", "import * as Workspace from './Workspace.js'\n\nexport const Commands = {\n 'Workspace.hydrate': Workspace.hydrate,\n 'Workspace.setPath': Workspace.setPath,\n 'Workspace.setUri': Workspace.setUri,\n}\n", "import * as ModuleId from '../ModuleId/ModuleId.js'\n\nexport const load = (moduleId) => {\n switch (moduleId) {\n case ModuleId.Ajax:\n return import('../Ajax/Ajax.ipc.js')\n case ModuleId.Audio:\n return import('../Audio/Audio.ipc.js')\n case ModuleId.Base64:\n return import('../Base64/Base64.ipc.js')\n case ModuleId.Blob:\n return import('../Blob/Blob.ipc.js')\n case ModuleId.CacheStorage:\n return import('../CacheStorage/CacheStorage.ipc.js')\n case ModuleId.Callback:\n return import('../Callback/Callback.ipc.js')\n case ModuleId.Chrome:\n return import('../Chrome/Chrome.ipc.js')\n case ModuleId.ChromeExtension:\n return import('../ChromeExtension/ChromeExtension.ipc.js')\n case ModuleId.ClipBoard:\n return import('../ClipBoard/ClipBoard.ipc.js')\n case ModuleId.ColorPicker:\n return import('../ColorPicker/ColorPicker.ipc.js')\n case ModuleId.ColorTheme:\n return import('../ColorTheme/ColorTheme.ipc.js')\n case ModuleId.ColorThemeFromJson:\n return import('../ColorThemeFromJson/ColorThemeFromJson.ipc.js')\n case ModuleId.ContentTracing:\n return import('../ContentTracing/ContentTracing.ipc.js')\n case ModuleId.ContextMenu:\n return import('../ContextMenu/ContextMenu.ipc.js')\n case ModuleId.Developer:\n return import('../Developer/Developer.ipc.js')\n case ModuleId.Dialog:\n return import('../Dialog/Dialog.ipc.js')\n case ModuleId.Download:\n return import('../Download/Download.ipc.js')\n case ModuleId.EditorDiagnostics:\n return import('../EditorDiagnostics/EditorDiagnostics.ipc.js')\n case ModuleId.EditorError:\n return import('../EditorError/EditorError.ipc.js')\n case ModuleId.EditorRename:\n return import('../EditorRename/EditorRename.ipc.js')\n case ModuleId.ElectronApp:\n return import('../ElectronApp/ElectronApp.ipc.js')\n case ModuleId.ElectronBrowserView:\n return import('../ElectronBrowserView/ElectronBrowserView.ipc.js')\n case ModuleId.ElectronClipBoard:\n return import('../ElectronClipBoard/ElectronClipBoard.ipc.js')\n case ModuleId.ElectronMenu:\n return import('../ElectronMenu/ElectronMenu.ipc.js')\n case ModuleId.ElectronWindow:\n return import('../ElectronWindow/ElectronWindow.ipc.js')\n case ModuleId.ErrorHandling:\n return import('../ErrorHandling/ErrorHandling.ipc.js')\n case ModuleId.Eval:\n return import('../Eval/Eval.ipc.js')\n case ModuleId.ExtensionHostCode:\n return import('../ExtensionHost/ExtensionHostCore.ipc.js')\n case ModuleId.ExtensionMeta:\n return import('../ExtensionMeta/ExtensionMeta.ipc.js')\n case ModuleId.Extensions:\n return import('../Extensions/Extensions.ipc.js')\n case ModuleId.FilePicker:\n return import('../FilePicker/FilePicker.ipc.js')\n case ModuleId.FileSystem:\n return import('../FileSystem/FileSystem.ipc.js')\n case ModuleId.Format:\n return import('../Format/Format.ipc.js')\n case ModuleId.IconTheme:\n return import('../IconTheme/IconTheme.ipc.js')\n case ModuleId.ImagePreview:\n return import('../ImagePreview/ImagePreview.ipc.js')\n case ModuleId.IndexedDb:\n return import('../IndexedDb/IndexedDb.ipc.js')\n case ModuleId.KeyBindings:\n return import('../KeyBindings/KeyBindings.ipc.js')\n case ModuleId.KeyBindingsInitial:\n return import('../KeyBindingsInitial/KeyBindingsInitial.ipc.js')\n case ModuleId.Listener:\n return import('../Listener/Listener.ipc.js')\n case ModuleId.LocalStorage:\n return import('../LocalStorage/LocalStorage.ipc.js')\n case ModuleId.Menu:\n return import('../Menu/Menu.ipc.js')\n case ModuleId.Mime:\n return import('../Mime/Mime.ipc.js')\n case ModuleId.Navigatiom:\n return import('../Navigation/Navigation.ipc.js')\n case ModuleId.Notification:\n return import('../Notification/Notification.ipc.js')\n case ModuleId.Open:\n return import('../Open/Open.ipc.js')\n case ModuleId.OpenNativeFolder:\n return import('../OpenNativeFolder/OpenNativeFolder.ipc.js')\n case ModuleId.PersistentFileHandle:\n return import('../PersistentFileHandle/PersistentFileHandle.ipc.js')\n case ModuleId.Preferences:\n return import('../Preferences/Preferences.ipc.js')\n case ModuleId.RecentlyOpened:\n return import('../RecentlyOpened/RecentlyOpened.ipc.js')\n case ModuleId.SaveState:\n return import('../SaveState/SaveState.ipc.js')\n case ModuleId.ServiceWorker:\n return import('../ServiceWorker/ServiceWorker.ipc.js')\n case ModuleId.SessionReplay:\n return import('../SessionReplay/SessionReplay.ipc.js')\n case ModuleId.SessionStorage:\n return import('../SessionStorage/SessionStorage.ipc.js')\n case ModuleId.Test:\n return import('../Test/Test.ipc.js')\n case ModuleId.TestFramework:\n return import('../TestFrameWork/TestFrameWork.js')\n case ModuleId.TestFrameworkComponent:\n return import('../TestFrameWorkComponent/TestFrameWorkComponent.js')\n case ModuleId.Url:\n return import('../Url/Url.ipc.js')\n case ModuleId.Viewlet:\n return import('../Viewlet/Viewlet.ipc.js')\n case ModuleId.Window:\n return import('../Window/Window.ipc.js')\n case ModuleId.Workbench:\n return import('../Workbench/Workbench.ipc.js')\n case ModuleId.Workspace:\n return import('../Workspace/Workspace.ipc.js')\n default:\n throw new Error(`module ${moduleId} not found`)\n }\n}\n", "import * as ModuleId from '../ModuleId/ModuleId.js'\n\nexport const getModuleId = (commandId) => {\n switch (commandId) {\n // TODO this should be in layout module\n case 'Ajax.getBlob':\n case 'Ajax.getJson':\n case 'Ajax.getText':\n return ModuleId.Ajax\n case 'Audio.playBell':\n return ModuleId.Audio\n case 'Base64.decode':\n case 'Base64.encode':\n return ModuleId.Base64\n case 'Blob.base64StringToBlob':\n case 'Blob.binaryStringToBlob':\n case 'Blob.blobToBinaryString':\n return ModuleId.Blob\n case 'CacheStorage.clearCache':\n case 'CacheStorage.getJson':\n case 'CacheStorage.setJson':\n return ModuleId.CacheStorage\n case 'Callback.reject':\n case 'Callback.resolve':\n return ModuleId.Callback\n case 'Chrome.close':\n case 'Chrome.exit':\n case 'Chrome.maximize':\n case 'Chrome.minimize':\n case 'Chrome.unmaximize':\n return ModuleId.Chrome\n case 'ChromeExtension.install':\n case 'ChromeExtension.uninstall':\n return ModuleId.ChromeExtension\n case 'ClipBoard.execCopy':\n case 'ClipBoard.readNativeFiles':\n case 'ClipBoard.readText':\n case 'ClipBoard.writeImage':\n case 'ClipBoard.writeNativeFiles':\n case 'ClipBoard.writeText':\n return ModuleId.ClipBoard\n case 'ColorPicker.close':\n case 'ColorPicker.open':\n return ModuleId.ColorPicker\n case 'ColorTheme.hydrate':\n case 'ColorTheme.reload':\n case 'ColorTheme.setColorTheme':\n return ModuleId.ColorTheme\n case 'ColorThemeFromJson.createColorThemeFromJson':\n return ModuleId.ColorThemeFromJson\n case 'ContentTracing.start':\n case 'ContentTracing.stop':\n return ModuleId.ContentTracing\n case 'ContextMenu.focusFirst':\n case 'ContextMenu.focusLast':\n case 'ContextMenu.focusNext':\n case 'ContextMenu.focusPrevious':\n case 'ContextMenu.hide':\n case 'ContextMenu.select':\n case 'ContextMenu.selectCurrent':\n case 'ContextMenu.show':\n return ModuleId.ContextMenu\n case 'Developer.allocateMemoryInSharedProcess':\n case 'Developer.clearCache':\n case 'Developer.crashMainProcess':\n case 'Developer.crashSharedProcess':\n case 'Developer.createSharedProcessHeapSnapshot':\n case 'Developer.createSharedProcessProfile':\n case 'Developer.downloadViewletState':\n case 'Developer.getMemoryUsageContent':\n case 'Developer.getStartupPerformanceContent':\n case 'Developer.installChromeExtensionIStillDontCareAboutCookies':\n case 'Developer.installChromeExtensionUBlockOrigin':\n case 'Developer.openCacheFolder':\n case 'Developer.openConfigFolder':\n case 'Developer.openDataFolder':\n case 'Developer.openLogsFolder':\n case 'Developer.openProcessExplorer':\n case 'Developer.reloadColorTheme':\n case 'Developer.reloadIconTheme':\n case 'Developer.showColorThemeCss':\n case 'Developer.showIconThemeCss':\n case 'Developer.showMemoryUsage':\n case 'Developer.showStartupPerformance':\n case 'Developer.startupPerformance':\n case 'Developer.toggleDeveloperTools':\n return ModuleId.Developer\n case 'Dialog.close':\n case 'Dialog.handleClick':\n case 'Dialog.openFile':\n case 'Dialog.openFolder':\n case 'Dialog.showAbout':\n case 'Dialog.showMessage':\n return ModuleId.Dialog\n case 'Download.downloadFile':\n case 'Download.downloadJson':\n case 'Download.downloadToDownloadsFolder':\n return ModuleId.Download\n case 'EditorDiagnostics.hydrate':\n return ModuleId.EditorDiagnostics\n case 3900:\n return ModuleId.EditorError\n case 'EditorRename.abort':\n case 'EditorRename.finish':\n case 'EditorRename.open':\n return ModuleId.EditorRename\n case 'ElectronApp.exit':\n return ModuleId.ElectronApp\n case 'ElectronBrowserView.createBrowserViewQuickpick':\n case 'ElectronBrowserView.openBrowserViewQuickPick':\n return ModuleId.ElectronBrowserView\n case 'ElectronClipBoard.writeText':\n return ModuleId.ElectronClipBoard\n case 'ElectronMenu.handleMenuClose':\n case 'ElectronMenu.handleSelect':\n return ModuleId.ElectronMenu\n case 'ElectronWindow.close':\n case 'ElectronWindow.maximize':\n case 'ElectronWindow.minimize':\n case 'ElectronWindow.toggleDevtools':\n case 'ElectronWindow.unmaximize':\n case 'ElectronWindow.zoomIn':\n case 'ElectronWindow.zoomOut':\n return ModuleId.ElectronWindow\n case 'ErrorHandling.handleError':\n return ModuleId.ErrorHandling\n case 'Eval.evalInRendererProcess':\n return ModuleId.Eval\n case 'ExtensionHost.loadWebExtension':\n case 'ExtensionHost.startWebExtensionHost':\n return ModuleId.ExtensionHostCode\n case 'ExtensionMeta.addExtension':\n case 'ExtensionMeta.addNodeExtension':\n case 'ExtensionMeta.addWebExtension':\n return ModuleId.ExtensionMeta\n case 'Extensions.openCachedExtensionsFolder':\n case 'Extensions.openExtensionsFolder':\n return ModuleId.Extensions\n case 'FilePicker.showDirectoryPicker':\n case 'FilePicker.showFilePicker':\n case 'FilePicker.showSaveFilePicker':\n return ModuleId.FilePicker\n case 'FileSystem.getPathSeparator':\n case 'FileSystem.mkdir':\n case 'FileSystem.readDirWithFileTypes':\n case 'FileSystem.readFile':\n case 'FileSystem.remove':\n case 'FileSystem.writeFile':\n return ModuleId.FileSystem\n case 'Format.hydrate':\n return ModuleId.Format\n case 'IconTheme.addIcons':\n case 'IconTheme.getIconThemeCss':\n case 'IconTheme.hydrate':\n case 'IconTheme.setIconTheme':\n return ModuleId.IconTheme\n case 'ImagePreview.hide':\n case 'ImagePreview.show':\n return ModuleId.ImagePreview\n case 'IndexedDb.addHandle':\n case 'IndexedDb.getHandle':\n return ModuleId.IndexedDb\n case 'KeyBindings.handleKeyBinding':\n case 'KeyBindings.hydrate':\n return ModuleId.KeyBindings\n case 'KeyBindingsInitial.getKeyBindings':\n return ModuleId.KeyBindingsInitial\n case 3444:\n return ModuleId.Listener\n case 'LocalStorage.clear':\n case 'LocalStorage.getItem':\n case 'LocalStorage.getJson':\n case 'LocalStorage.getText':\n case 'LocalStorage.setJson':\n case 'LocalStorage.setText':\n return ModuleId.LocalStorage\n case 'Menu.focusFirst':\n case 'Menu.focusIndex':\n case 'Menu.focusLast':\n case 'Menu.focusNext':\n case 'Menu.focusPrevious':\n case 'Menu.handleMouseEnter':\n case 'Menu.hide':\n case 'Menu.selectIndex':\n case 'Menu.selectItem':\n case 'Menu.show':\n return ModuleId.Menu\n case 'Mime.getMediaMimeType':\n case 'Mime.getTextMime':\n return ModuleId.Mime\n case 'Navigation.focusActivityBar':\n case 'Navigation.focusMain':\n case 'Navigation.focusNextPart':\n case 'Navigation.focusPanel':\n case 'Navigation.focusPreviousPart':\n case 'Navigation.focusSideBar':\n case 'Navigation.focusStatusBar':\n case 'Navigation.focusTitleBar':\n return ModuleId.Navigatiom\n case 'Notification.create':\n case 'Notification.dispose':\n case 'Notification.handleClick':\n case 'Notification.showWithOptions':\n return ModuleId.Notification\n case 'Open.openExternal':\n case 'Open.openUrl':\n return ModuleId.Open\n case 'OpenNativeFolder.openNativeFolder':\n return ModuleId.OpenNativeFolder\n case 'PersistentFileHandle.addHandle':\n case 'PersistentFileHandle.getHandle':\n case 'PersistentFileHandle.removeHandle':\n return ModuleId.PersistentFileHandle\n case 'Preferences.hydrate':\n case 'Preferences.openKeyBindingsJson':\n case 'Preferences.openSettingsJson':\n return ModuleId.Preferences\n case 'RecentlyOpened.addToRecentlyOpened':\n case 'RecentlyOpened.clearRecentlyOpened':\n case 'RecentlyOpened.getRecentlyOpened':\n case 'RecentlyOpened.hydrate':\n return ModuleId.RecentlyOpened\n case 'SaveState.handleVisibilityChange':\n case 'SaveState.hydrate':\n return ModuleId.SaveState\n case 'ServiceWorker.hydrate':\n case 'ServiceWorker.uninstall':\n return ModuleId.ServiceWorker\n case 'SessionReplay.downloadSession':\n case 'SessionReplay.openSession':\n case 'SessionReplay.replayCurrentSession':\n case 'SessionReplay.replaySession':\n return ModuleId.SessionReplay\n case 'SessionStorage.clear':\n case 'SessionStorage.getJson':\n return ModuleId.SessionStorage\n case 'Test.execute':\n return ModuleId.Test\n case '001':\n return ModuleId.TestFramework\n case '002':\n return ModuleId.TestFrameworkComponent\n case 'Url.createObjectUrl':\n case 'Url.revokeObjectUrl':\n return ModuleId.Url\n case 'Viewlet.closeWidget':\n case 'Viewlet.executeViewletCommand':\n case 'Viewlet.focus':\n case 'Viewlet.getAllStates':\n case 'Viewlet.openWidget':\n case 2133:\n return ModuleId.Viewlet\n case 'Window.close':\n case 'Window.exit':\n case 'Window.makeScreenshot':\n case 'Window.maximize':\n case 'Window.minimize':\n case 'Window.openNew':\n case 'Window.reload':\n case 'Window.unmaximize':\n case 'Window.zoomIn':\n case 'Window.zoomOut':\n return ModuleId.Window\n case 'Workbench.unload':\n return ModuleId.Workbench\n case 'Workspace.hydrate':\n case 'Workspace.setPath':\n case 'Workspace.setUri':\n return ModuleId.Workspace\n default:\n throw new Error(`command ${commandId} not found`)\n }\n}\n", "import * as Module from '../Module/Module.js'\nimport * as ModuleMap from '../ModuleMap/ModuleMap.js'\n\nexport const state = {\n commands: Object.create(null),\n pendingModules: Object.create(null),\n}\n\nconst initializeModule = (module) => {\n if (module.Commands) {\n for (const [key, value] of Object.entries(module.Commands)) {\n if (module.name) {\n const actualKey = `${module.name}.${key}`\n register(actualKey, value)\n } else {\n register(key, value)\n }\n }\n return\n }\n throw new Error(\n `module ${module.name} is missing an initialize function and commands`\n )\n}\n\nconst getOrLoadModule = (moduleId) => {\n if (!state.pendingModules[moduleId]) {\n const importPromise = Module.load(moduleId)\n state.pendingModules[moduleId] = importPromise.then(initializeModule)\n }\n return state.pendingModules[moduleId]\n}\n\nconst loadCommand = (command) => getOrLoadModule(ModuleMap.getModuleId(command))\n\nexport const register = (commandId, listener) => {\n state.commands[commandId] = listener\n}\n\nexport const registerMultiple = (commands) => {\n Object.assign(state.commands, commands)\n}\n\nconst hasThrown = new Set()\n\nexport const execute = (command, ...args) => {\n if (command in state.commands) {\n if (typeof state.commands[command] !== 'function') {\n throw new Error(`[renderer-worker] Command ${command} is not a function`)\n }\n return state.commands[command](...args)\n }\n return (\n loadCommand(command)\n // TODO can skip then block in prod (only to prevent endless loop in dev)\n .then(() => {\n if (!(command in state.commands)) {\n if (hasThrown.has(command)) {\n return\n }\n hasThrown.add(command)\n throw new Error(`Command did not register \"${command}\"`)\n }\n return execute(command, ...args)\n })\n )\n}\n", "import * as RendererProcess from '../RendererProcess/RendererProcess.js'\n\nexport const setThemeColor = async (themeColor) => {\n await RendererProcess.invoke(\n /* Meta.setThemeColor */ 'Meta.setThemeColor',\n /* color */ themeColor\n )\n}\n", "import * as Command from '../Command/Command.js'\nimport * as Css from '../Css/Css.js'\nimport * as Meta from '../Meta/Meta.js'\nimport * as Platform from '../Platform/Platform.js'\nimport * as Preferences from '../Preferences/Preferences.js'\nimport * as SharedProcess from '../SharedProcess/SharedProcess.js'\nimport * as PlatformType from '../PlatformType/PlatformType.js'\nimport { VError } from '../VError/VError.js'\n// TODO by default color theme should come from local storage, session storage, cache storage, indexeddb or blob url -> fast initial load\n// actual color theme can be computed after workbench has loaded (most times will be the same and doesn't need to be computed)\n\nexport const state = {\n watchedTheme: '',\n}\n\nconst FALLBACK_COLOR_THEME_ID = 'slime'\n\nconst getColorThemeJsonFromSharedProcess = async (colorThemeId) => {\n // const extensions = await ExtensionMeta.getExtensions()\n // for(const extension of extensions){\n // if(extension.status==='rejected'){\n // continue\n // }\n // if(!extension.colorThemes){\n // continue\n // }\n // for(const colorTheme of extension.colorThemes){\n // if(colorTheme.id !== colorThemeId){\n // continue\n // }\n // const absolutePath = `${extension.path}/${colorTheme.path}`\n // }\n // }\n return SharedProcess.invoke(\n /* ExtensionHost.getColorThemeJson */ 'ExtensionHost.getColorThemeJson',\n /* colorThemeId */ colorThemeId\n )\n}\n\nconst getColorThemeUrlWeb = (colorThemeId) => {\n return `/extensions/builtin.theme-${colorThemeId}/color-theme.json`\n}\n\nconst getColorThemeJsonFromStaticFolder = (colorThemeId) => {\n const url = getColorThemeUrlWeb(colorThemeId)\n // TODO handle error ?\n return Command.execute(/* Ajax.getJson */ 'Ajax.getJson', /* url */ url)\n}\n\nconst getFallbackColorTheme = async () => {\n const assetDir = Platform.getAssetDir()\n const url = `${assetDir}/themes/fallback_theme.json`\n return Command.execute(/* Ajax.getJson */ 'Ajax.getJson', /* url */ url)\n}\n\n// TODO json parsing should also happen in renderer worker\n// so that all validation is here (json parsing errors, invalid shape, ...)\n\nconst getColorThemeJson = (colorThemeId) => {\n if (Platform.platform === PlatformType.Web) {\n return getColorThemeJsonFromStaticFolder(colorThemeId)\n }\n return getColorThemeJsonFromSharedProcess(colorThemeId)\n}\n\nexport const getColorThemeCss = async (colorThemeId, colorThemeJson) => {\n const colorThemeCss = await Command.execute(\n /* ColorThemeFromJson.createColorThemeFromJson */ 'ColorThemeFromJson.createColorThemeFromJson',\n /* colorThemeId */ colorThemeId,\n /* colorThemeJson */ colorThemeJson\n )\n return colorThemeCss\n // TODO generate color theme from jsonc\n}\n\nconst getMetaThemeColor = (colorThemeJson) => {\n return (\n colorThemeJson &&\n colorThemeJson.colors &&\n colorThemeJson.colors.TitleBarBackground\n )\n}\nconst applyColorTheme = async (colorThemeId) => {\n try {\n state.colorTheme = colorThemeId\n const colorThemeJson = await getColorThemeJson(colorThemeId)\n const colorThemeCss = await getColorThemeCss(colorThemeId, colorThemeJson)\n await Css.setInlineStyle('ContributedColorTheme', colorThemeCss)\n if (Platform.platform === PlatformType.Web) {\n const themeColor = getMetaThemeColor(colorThemeJson) || ''\n await Meta.setThemeColor(themeColor)\n }\n if (\n Platform.platform !== PlatformType.Web &&\n Preferences.get('development.watchColorTheme')\n ) {\n watch(colorThemeId)\n }\n } catch (error) {\n throw new VError(error, `Failed to apply color theme \"${colorThemeId}\"`)\n }\n}\n\nexport const setColorTheme = async (colorThemeId) => {\n await applyColorTheme(colorThemeId)\n // TODO should preferences throw errors or should it call handleError directly?\n await Preferences.set('workbench.colorTheme', colorThemeId)\n}\n\nexport const watch = (id) => {\n if (state.watchedTheme === id) {\n return\n }\n state.watchedTheme = id\n SharedProcess.send('ExtensionHost.watchColorTheme', id)\n}\n\nexport const reload = async () => {\n const colorThemeId = Preferences.get('workbench.colorTheme')\n await applyColorTheme(colorThemeId)\n}\n\n// TODO test this, and also the error case\n// TODO have icon theme, color theme together (maybe)\nexport const hydrate = async () => {\n const colorThemeId = Preferences.get('workbench.colorTheme')\n try {\n await applyColorTheme(colorThemeId)\n } catch (error) {\n if (colorThemeId === FALLBACK_COLOR_THEME_ID) {\n throw error\n }\n console.warn(error)\n await applyColorTheme(FALLBACK_COLOR_THEME_ID)\n }\n}\n", "import * as RendererProcess from '../RendererProcess/RendererProcess.js'\n\nexport const getInitData = async () => {\n const rendererProcessInitData = await RendererProcess.invoke(\n 'InitData.getInitData'\n )\n // TODO get the following items\n // - location.href\n // - workspace\n // - color theme\n // - preferences\n // - restoredState\n // - layout bounds\n // - keybindings\n // - icon theme\n // - languages\n return rendererProcessInitData\n}\n", "export const mark = (id) => {\n performance.mark(id)\n}\n\nexport const measure = (measureName, start, end) => {\n performance.measure(measureName, start, end)\n}\n", "import * as ColorTheme from '../ColorTheme/ColorTheme.js'\nimport * as Command from '../Command/Command.js'\nimport * as ErrorHandling from '../ErrorHandling/ErrorHandling.js'\nimport * as IconTheme from '../IconTheme/IconTheme.js'\nimport * as InitData from '../InitData/InitData.js'\nimport * as KeyBindings from '../KeyBindings/KeyBindings.js'\nimport * as Languages from '../Languages/Languages.js'\nimport * as LifeCycle from '../LifeCycle/LifeCycle.js'\nimport * as LifeCyclePhase from '../LifeCyclePhase/LifeCyclePhase.js'\nimport * as Location from '../Location/Location.js'\nimport * as Performance from '../Performance/Performance.js'\nimport * as Platform from '../Platform/Platform.js'\nimport * as PlatformType from '../PlatformType/PlatformType.js'\nimport * as Preferences from '../Preferences/Preferences.js'\nimport * as RecentlyOpened from '../RecentlyOpened/RecentlyOpened.js'\nimport * as RendererProcess from '../RendererProcess/RendererProcess.js'\nimport * as SaveState from '../SaveState/SaveState.js'\nimport * as ServiceWorker from '../ServiceWorker/ServiceWorker.js'\nimport * as SessionReplay from '../SessionReplay/SessionReplay.js'\nimport * as SharedProcess from '../SharedProcess/SharedProcess.js'\nimport * as ViewletManager from '../ViewletManager/ViewletManager.js'\nimport * as ViewletModule from '../ViewletModule/ViewletModule.js'\nimport * as ViewletModuleId from '../ViewletModuleId/ViewletModuleId.js'\nimport * as ViewletStates from '../ViewletStates/ViewletStates.js'\nimport * as Workspace from '../Workspace/Workspace.js'\n\n// TODO lazyload parts one by one (Main, SideBar, ActivityBar, TitleBar, StatusBar)\nexport const startup = async (config) => {\n onunhandledrejection = ErrorHandling.handleUnhandledRejection\n onerror = ErrorHandling.handleUnhandledError\n LifeCycle.mark(LifeCyclePhase.Zero)\n\n Performance.mark('willStartupWorkbench')\n await RendererProcess.listen()\n if (Platform.platform !== PlatformType.Web) {\n await SharedProcess.listen()\n }\n\n LifeCycle.mark(LifeCyclePhase.One)\n\n const initData = await InitData.getInitData()\n\n if (initData.Location.href.includes('?replayId')) {\n const url = new URL(initData.Location.href)\n const replayId = url.searchParams.get('replayId')\n await SessionReplay.replaySession(replayId)\n return\n }\n\n Performance.mark('code/willLoadPreferences')\n await Preferences.hydrate()\n Performance.mark('code/didLoadPreferences')\n\n // TODO only load this if session replay is enabled in preferences\n if (Preferences.get('sessionReplay.enabled')) {\n Performance.mark('code/willLoadSessionReplay')\n await SessionReplay.startRecording()\n Performance.mark('code/didLoadSessionReplay')\n }\n\n LifeCycle.mark(LifeCyclePhase.Twelve)\n\n Performance.mark('code/willOpenWorkspace')\n await Workspace.hydrate(initData.Location)\n Performance.mark('code/didOpenWorkspace')\n\n LifeCycle.mark(LifeCyclePhase.Three)\n\n Performance.mark('code/willLoadColorTheme')\n await ColorTheme.hydrate()\n Performance.mark('code/didLoadColorTheme')\n\n LifeCycle.mark(LifeCyclePhase.Four)\n\n Performance.mark('code/willShowLayout')\n const layout = ViewletManager.create(\n ViewletModule.load,\n ViewletModuleId.Layout,\n '',\n '',\n 0,\n 0,\n 0,\n 0\n )\n const commands = await ViewletManager.load(\n {\n getModule: ViewletModule.load,\n id: ViewletModuleId.Layout,\n type: 0,\n uri: '',\n show: false,\n focus: false,\n },\n false,\n false,\n initData\n )\n commands.splice(1, 1)\n const layoutModule = ViewletStates.getInstance(ViewletModuleId.Layout)\n const placeholderCommands =\n layoutModule.factory.getInitialPlaceholderCommands(layoutModule.state)\n commands.push(...placeholderCommands)\n commands.push(['Viewlet.appendToBody', ViewletModuleId.Layout])\n await RendererProcess.invoke('Viewlet.executeCommands', commands)\n // await Layout.hydrate(initData)\n Performance.mark('code/didShowLayout')\n\n Performance.mark('code/willLoadLanguages')\n await Languages.hydrate()\n Performance.mark('code/didLoadLanguages')\n\n LifeCycle.mark(LifeCyclePhase.Five)\n\n Performance.mark('code/willLoadMain')\n await Command.execute('Layout.loadMainIfVisible')\n Performance.mark('code/didLoadMain')\n\n LifeCycle.mark(LifeCyclePhase.Six)\n\n Performance.mark('code/willLoadKeyBindings')\n await KeyBindings.hydrate()\n Performance.mark('code/didLoadKeyBindings')\n\n LifeCycle.mark(LifeCyclePhase.Seven)\n\n Performance.mark('code/willLoadSideBar')\n await Command.execute('Layout.loadSideBarIfVisible')\n Performance.mark('code/didLoadSideBar')\n\n LifeCycle.mark(LifeCyclePhase.Eight)\n\n Performance.mark('code/willLoadPanel')\n await Command.execute('Layout.loadPanelIfVisible')\n Performance.mark('code/didLoadPanel')\n\n LifeCycle.mark(LifeCyclePhase.Nine)\n\n Performance.mark('code/willLoadActivityBar')\n await Command.execute('Layout.loadActivityBarIfVisible')\n Performance.mark('code/didLoadActivityBar')\n\n LifeCycle.mark(LifeCyclePhase.Ten)\n\n Performance.mark('code/willLoadStatusBar')\n await Command.execute('Layout.loadStatusBarIfVisible')\n Performance.mark('code/didLoadStatusBar')\n\n LifeCycle.mark(LifeCyclePhase.Eleven)\n\n Performance.mark('code/willLoadIconTheme')\n // TODO check preferences if icon theme is enabled\n await IconTheme.hydrate()\n Performance.mark('code/didLoadIconTheme')\n\n LifeCycle.mark(LifeCyclePhase.Twelve)\n\n LifeCycle.mark(LifeCyclePhase.Thirteen)\n\n LifeCycle.mark(LifeCyclePhase.Fourteen)\n\n Performance.mark('code/willLoadTitleBar')\n await Command.execute('Layout.loadTitleBarIfVisible')\n Performance.mark('code/didLoadTitleBar')\n\n LifeCycle.mark(LifeCyclePhase.Fifteen)\n\n if (Workspace.isTest()) {\n const testPath = await Platform.getTestPath()\n const jsPath = initData.Location.href\n .replace('/tests', `${testPath}/src`)\n .replace(/\\.html$/, '.js')\n await Command.execute('Test.execute', jsPath)\n } else {\n Performance.mark('code/willLoadSaveState')\n await SaveState.hydrate()\n Performance.mark('code/didLoadSaveState')\n }\n\n LifeCycle.mark(LifeCyclePhase.Sixteen)\n\n Performance.mark('code/willLoadRecentlyOpened')\n await RecentlyOpened.hydrate()\n Performance.mark('code/didLoadRecentlyOpened')\n\n // TODO tree shake out service worker in electron build\n\n Performance.mark('code/willLoadServiceWorker')\n await ServiceWorker.hydrate()\n Performance.mark('code/didLoadServiceWorker')\n\n Performance.mark('code/willLoadLocation')\n await Location.hydrate()\n Performance.mark('code/didLoadLocation')\n\n Performance.measure(\n 'code/loadKeyBindings',\n 'code/willLoadKeyBindings',\n 'code/didLoadKeyBindings'\n )\n Performance.measure(\n 'code/openWorkspace',\n 'code/willOpenWorkspace',\n 'code/didOpenWorkspace'\n )\n Performance.measure('code/loadMain', 'code/willLoadMain', 'code/didLoadMain')\n Performance.measure(\n 'code/loadSideBar',\n 'code/willLoadSideBar',\n 'code/didLoadSideBar'\n )\n Performance.measure(\n 'code/showLayout',\n 'code/willShowLayout',\n 'code/didShowLayout'\n )\n Performance.measure(\n 'code/loadPanel',\n 'code/willLoadPanel',\n 'code/didLoadPanel'\n )\n Performance.measure(\n 'code/loadActivityBar',\n 'code/willLoadActivityBar',\n 'code/didLoadActivityBar'\n )\n Performance.measure(\n 'code/loadStatusBar',\n 'code/willLoadStatusBar',\n 'code/didLoadStatusBar'\n )\n Performance.measure(\n 'code/loadPreferences',\n 'code/willLoadPreferences',\n 'code/didLoadPreferences'\n )\n Performance.measure(\n 'code/loadColorTheme',\n 'code/willLoadColorTheme',\n 'code/didLoadColorTheme'\n )\n Performance.measure(\n 'code/loadIconTheme',\n 'code/willLoadIconTheme',\n 'code/didLoadIconTheme'\n )\n}\n", "import * as Workbench from './parts/Workbench/Workbench.js'\n\nconst main = async () => {\n await Workbench.startup({})\n}\n\nmain()\n"],
5
+ "mappings": "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K;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAgBC;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAgBC;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AACH,iBAAgB;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAgB;AAAA,QAClB;AACE,gBAAM,IAAI,MAAM,WAAW,qBAAqB;AAAA,MACpD;AAAA,IACF;AAAA;AAAA;;;AChRA,IAGaC,SAKP,kBAiBA,iBAQA,aAEOC,WAQP,WAEO;AA7Cb;AAAA;AAAA;AAAA;AACA;AAEO,IAAMD,UAAQ;AAAA,MACnB,UAAU,uBAAO,OAAO,IAAI;AAAA,MAC5B,gBAAgB,uBAAO,OAAO,IAAI;AAAA,IACpC;AAEA,IAAM,mBAAmB,CAAC,WAAW;AACnC,UAAI,OAAO,UAAU;AACnB,mBAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,OAAO,QAAQ,GAAG;AAC1D,cAAI,OAAO,MAAM;AACf,kBAAM,YAAY,GAAG,OAAO,QAAQ;AACpC,YAAAC,UAAS,WAAW,KAAK;AAAA,UAC3B,OAAO;AACL,YAAAA,UAAS,KAAK,KAAK;AAAA,UACrB;AAAA,QACF;AACA;AAAA,MACF;AACA,YAAM,IAAI;AAAA,QACR,UAAU,OAAO;AAAA,MACnB;AAAA,IACF;AAEA,IAAM,kBAAkB,CAAC,aAAa;AACpC,UAAI,CAACD,QAAM,eAAe,WAAW;AACnC,cAAM,gBAAuBE,MAAK,QAAQ;AAC1C,QAAAF,QAAM,eAAe,YAAY,cAAc,KAAK,gBAAgB;AAAA,MACtE;AACA,aAAOA,QAAM,eAAe;AAAA,IAC9B;AAEA,IAAM,cAAc,CAAC,YAAY,gBAA0B,YAAY,OAAO,CAAC;AAExE,IAAMC,YAAW,CAAC,WAAW,aAAa;AAC/C,MAAAD,QAAM,SAAS,aAAa;AAAA,IAC9B;AAMA,IAAM,YAAY,oBAAI,IAAI;AAEnB,IAAM,UAAU,CAAC,YAAY,SAAS;AAC3C,UAAI,WAAWA,QAAM,UAAU;AAC7B,YAAI,OAAOA,QAAM,SAAS,aAAa,YAAY;AACjD,gBAAM,IAAI,MAAM,6BAA6B,2BAA2B;AAAA,QAC1E;AACA,eAAOA,QAAM,SAAS,SAAS,GAAG,IAAI;AAAA,MACxC;AACA,aACE,YAAY,OAAO,EAEhB,KAAK,MAAM;AACV,YAAI,EAAE,WAAWA,QAAM,WAAW;AAChC,cAAI,UAAU,IAAI,OAAO,GAAG;AAC1B;AAAA,UACF;AACA,oBAAU,IAAI,OAAO;AACrB,gBAAM,IAAI,MAAM,6BAA6B,UAAU;AAAA,QACzD;AACA,eAAO,QAAQ,SAAS,GAAG,IAAI;AAAA,MACjC,CAAC;AAAA,IAEP;AAAA;AAAA;;;AClEA,IAEa;AAFb;AAAA;AAAA;AAAA;AAEO,IAAM,gBAAgB,OAAO,eAAe;AACjD,YAAsB;AAAA,QACK;AAAA,QACb;AAAA,MACd;AAAA,IACF;AAAA;AAAA;;;ACPA,IAWaG,SAIP,yBAEA,oCAsBA,qBAIA,mCAeA,mBAOO,kBAUP,mBAOA,iBAqBO,eAMAC,QAQA,QAOA;AA5Hb;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIO,IAAMD,UAAQ;AAAA,MACnB,cAAc;AAAA,IAChB;AAEA,IAAM,0BAA0B;AAEhC,IAAM,qCAAqC,OAAO,iBAAiB;AAgBjE,aAAqBE;AAAA,QACmB;AAAA,QACnB;AAAA,MACrB;AAAA,IACF;AAEA,IAAM,sBAAsB,CAAC,iBAAiB;AAC5C,aAAO,6BAA6B;AAAA,IACtC;AAEA,IAAM,oCAAoC,CAAC,iBAAiB;AAC1D,YAAM,MAAM,oBAAoB,YAAY;AAE5C,aAAe,QAA2B,gBAA0B,GAAG;AAAA,IACzE;AAWA,IAAM,oBAAoB,CAAC,iBAAiB;AAC1C,UAAaC,cAA0B,KAAK;AAC1C,eAAO,kCAAkC,YAAY;AAAA,MACvD;AACA,aAAO,mCAAmC,YAAY;AAAA,IACxD;AAEO,IAAM,mBAAmB,OAAO,cAAc,mBAAmB;AACtE,YAAM,gBAAgB,MAAc;AAAA,QACgB;AAAA,QAC/B;AAAA,QACE;AAAA,MACvB;AACA,aAAO;AAAA,IAET;AAEA,IAAM,oBAAoB,CAAC,mBAAmB;AAC5C,aACE,kBACA,eAAe,UACf,eAAe,OAAO;AAAA,IAE1B;AACA,IAAM,kBAAkB,OAAO,iBAAiB;AAC9C,UAAI;AACF,QAAAH,QAAM,aAAa;AACnB,cAAM,iBAAiB,MAAM,kBAAkB,YAAY;AAC3D,cAAM,gBAAgB,MAAM,iBAAiB,cAAc,cAAc;AACzE,cAAU,eAAe,yBAAyB,aAAa;AAC/D,YAAaG,cAA0B,KAAK;AAC1C,gBAAM,aAAa,kBAAkB,cAAc,KAAK;AACxD,gBAAW,cAAc,UAAU;AAAA,QACrC;AACA,YACWA,cAA0B,OACvB,IAAI,6BAA6B,GAC7C;AACA,UAAAF,OAAM,YAAY;AAAA,QACpB;AAAA,MACF,SAAS,OAAP;AACA,cAAM,IAAI,OAAO,OAAO,gCAAgC,eAAe;AAAA,MACzE;AAAA,IACF;AAEO,IAAM,gBAAgB,OAAO,iBAAiB;AACnD,YAAM,gBAAgB,YAAY;AAElC,YAAkBG,KAAI,wBAAwB,YAAY;AAAA,IAC5D;AAEO,IAAMH,SAAQ,CAAC,OAAO;AAC3B,UAAID,QAAM,iBAAiB,IAAI;AAC7B;AAAA,MACF;AACA,MAAAA,QAAM,eAAe;AACrB,MAAcK,MAAK,iCAAiC,EAAE;AAAA,IACxD;AAEO,IAAM,SAAS,YAAY;AAChC,YAAM,eAA2B,IAAI,sBAAsB;AAC3D,YAAM,gBAAgB,YAAY;AAAA,IACpC;AAIO,IAAM,UAAU,YAAY;AACjC,YAAM,eAA2B,IAAI,sBAAsB;AAC3D,UAAI;AACF,cAAM,gBAAgB,YAAY;AAAA,MACpC,SAAS,OAAP;AACA,YAAI,iBAAiB,yBAAyB;AAC5C,gBAAM;AAAA,QACR;AACA,gBAAQ,KAAK,KAAK;AAClB,cAAM,gBAAgB,uBAAuB;AAAA,MAC/C;AAAA,IACF;AAAA;AAAA;;;ACvIA,IAEa;AAFb;AAAA;AAAA;AAAA;AAEO,IAAM,cAAc,YAAY;AACrC,YAAM,0BAA0B,MAAsB;AAAA,QACpD;AAAA,MACF;AAWA,aAAO;AAAA,IACT;AAAA;AAAA;;;ACjBA,IAAaC,OAIA;AAJb;AAAA;AAAA;AAAO,IAAMA,QAAO,CAAC,OAAO;AAC1B,kBAAY,KAAK,EAAE;AAAA,IACrB;AAEO,IAAM,UAAU,CAAC,aAAaC,QAAO,QAAQ;AAClD,kBAAY,QAAQ,aAAaA,QAAO,GAAG;AAAA,IAC7C;AAAA;AAAA;;;ACNA,IA2Ba;AA3Bb;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGO,IAAM,UAAU,OAAO,WAAW;AACvC,6BAAqC;AACrC,gBAAwB;AACxB,MAAU,KAAoB,IAAI;AAElC,MAAYC,MAAK,sBAAsB;AACvC,YAAsBC,QAAO;AAC7B,UAAaC,cAA0B,KAAK;AAC1C,cAAoBD,QAAO;AAAA,MAC7B;AAEA,MAAU,KAAoB,GAAG;AAEjC,YAAM,WAAW,MAAe,YAAY;AAE5C,UAAI,SAAS,SAAS,KAAK,SAAS,WAAW,GAAG;AAChD,cAAM,MAAM,IAAI,IAAI,SAAS,SAAS,IAAI;AAC1C,cAAM,WAAW,IAAI,aAAa,IAAI,UAAU;AAChD,cAAoB,cAAc,QAAQ;AAC1C;AAAA,MACF;AAEA,MAAYD,MAAK,0BAA0B;AAC3C,YAAkBG,SAAQ;AAC1B,MAAYH,MAAK,yBAAyB;AAG1C,UAAgB,IAAI,uBAAuB,GAAG;AAC5C,QAAYA,MAAK,4BAA4B;AAC7C,cAAoBI,gBAAe;AACnC,QAAYJ,MAAK,2BAA2B;AAAA,MAC9C;AAEA,MAAU,KAAoB,MAAM;AAEpC,MAAYA,MAAK,wBAAwB;AACzC,YAAgBG,SAAQ,SAAS,QAAQ;AACzC,MAAYH,MAAK,uBAAuB;AAExC,MAAU,KAAoB,KAAK;AAEnC,MAAYA,MAAK,yBAAyB;AAC1C,YAAiB,QAAQ;AACzB,MAAYA,MAAK,wBAAwB;AAEzC,MAAU,KAAoB,IAAI;AAElC,MAAYA,MAAK,qBAAqB;AACtC,YAAM,SAAwBK;AAAA,QACdC;AAAA,QACE;AAAA,QAChB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA,YAAM,WAAW,MAAqB;AAAA,QACpC;AAAA,UACE,WAAyBA;AAAA,UACzB,IAAoB;AAAA,UACpB,MAAM;AAAA,UACN,KAAK;AAAA,UACL,MAAM;AAAA,UACN,OAAO;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA,eAAS,OAAO,GAAG,CAAC;AACpB,YAAM,eAA6B,YAA4B,MAAM;AACrE,YAAM,sBACJ,aAAa,QAAQ,8BAA8B,aAAa,KAAK;AACvE,eAAS,KAAK,GAAG,mBAAmB;AACpC,eAAS,KAAK,CAAC,wBAAwC,MAAM,CAAC;AAC9D,YAAsB,OAAO,2BAA2B,QAAQ;AAEhE,MAAYN,MAAK,oBAAoB;AAErC,MAAYA,MAAK,wBAAwB;AACzC,YAAgBG,SAAQ;AACxB,MAAYH,MAAK,uBAAuB;AAExC,MAAU,KAAoB,IAAI;AAElC,MAAYA,MAAK,mBAAmB;AACpC,YAAc,QAAQ,0BAA0B;AAChD,MAAYA,MAAK,kBAAkB;AAEnC,MAAU,KAAoB,GAAG;AAEjC,MAAYA,MAAK,0BAA0B;AAC3C,YAAkBG,SAAQ;AAC1B,MAAYH,MAAK,yBAAyB;AAE1C,MAAU,KAAoB,KAAK;AAEnC,MAAYA,MAAK,sBAAsB;AACvC,YAAc,QAAQ,6BAA6B;AACnD,MAAYA,MAAK,qBAAqB;AAEtC,MAAU,KAAoB,KAAK;AAEnC,MAAYA,MAAK,oBAAoB;AACrC,YAAc,QAAQ,2BAA2B;AACjD,MAAYA,MAAK,mBAAmB;AAEpC,MAAU,KAAoB,IAAI;AAElC,MAAYA,MAAK,0BAA0B;AAC3C,YAAc,QAAQ,iCAAiC;AACvD,MAAYA,MAAK,yBAAyB;AAE1C,MAAU,KAAoB,GAAG;AAEjC,MAAYA,MAAK,wBAAwB;AACzC,YAAc,QAAQ,+BAA+B;AACrD,MAAYA,MAAK,uBAAuB;AAExC,MAAU,KAAoB,MAAM;AAEpC,MAAYA,MAAK,wBAAwB;AAEzC,YAAgBG,SAAQ;AACxB,MAAYH,MAAK,uBAAuB;AAExC,MAAU,KAAoB,MAAM;AAEpC,MAAU,KAAoB,QAAQ;AAEtC,MAAU,KAAoB,QAAQ;AAEtC,MAAYA,MAAK,uBAAuB;AACxC,YAAc,QAAQ,8BAA8B;AACpD,MAAYA,MAAK,sBAAsB;AAEvC,MAAU,KAAoB,OAAO;AAErC,UAAc,OAAO,GAAG;AACtB,cAAM,WAAW,MAAe,YAAY;AAC5C,cAAM,SAAS,SAAS,SAAS,KAC9B,QAAQ,UAAU,GAAG,cAAc,EACnC,QAAQ,WAAW,KAAK;AAC3B,cAAc,QAAQ,gBAAgB,MAAM;AAAA,MAC9C,OAAO;AACL,QAAYA,MAAK,wBAAwB;AACzC,cAAgBG,SAAQ;AACxB,QAAYH,MAAK,uBAAuB;AAAA,MAC1C;AAEA,MAAU,KAAoB,OAAO;AAErC,MAAYA,MAAK,6BAA6B;AAC9C,YAAqBG,UAAQ;AAC7B,MAAYH,MAAK,4BAA4B;AAI7C,MAAYA,MAAK,4BAA4B;AAC7C,YAAoBG,UAAQ;AAC5B,MAAYH,MAAK,2BAA2B;AAE5C,MAAYA,MAAK,uBAAuB;AACxC,YAAeG,SAAQ;AACvB,MAAYH,MAAK,sBAAsB;AAEvC,MAAY;AAAA,QACV;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA,MAAY;AAAA,QACV;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA,MAAY,QAAQ,iBAAiB,qBAAqB,kBAAkB;AAC5E,MAAY;AAAA,QACV;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA,MAAY;AAAA,QACV;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA,MAAY;AAAA,QACV;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA,MAAY;AAAA,QACV;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA,MAAY;AAAA,QACV;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA,MAAY;AAAA,QACV;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA,MAAY;AAAA,QACV;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA,MAAY;AAAA,QACV;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA;AAAA;;;ACtPA;AAEA,IAAM,OAAO,YAAY;AACvB,QAAgB,QAAQ,CAAC,CAAC;AAC5B;AAEA,KAAK;",
6
+ "names": ["Blob", "Menu", "Viewlet", "options", "resolve", "reject", "fn", "type", "defaults", "type", "options", "state", "state", "resolve", "reject", "listen", "listen", "listen", "state", "listen", "ipc", "resolve", "reject", "Commands", "name", "fn", "x", "decode", "encode", "Commands", "name", "decode", "encode", "resolve", "reject", "type", "base64StringToBlob", "binaryStringToBlob", "blobToBinaryString", "string", "type", "Commands", "name", "base64StringToBlob", "binaryStringToBlob", "blobToBinaryString", "MessagePort", "ModuleWorker", "ReferencePort", "WebSocket", "invoke", "resolve", "reject", "create", "options", "type", "state", "resolve", "reject", "port", "handleMessage", "create", "resolve", "handleMessage", "create", "name", "resolve", "reject", "handleMessage", "create", "resolve", "handleMessage", "Blob", "create", "protocol", "ipc", "handleMessage", "getModule", "create", "MessagePort", "ModuleWorker", "ReferencePort", "WebSocket", "options", "listen", "create", "state", "listen", "send", "invoke", "WebSocket", "ipc", "platform", "invoke", "assetDir", "getJson", "platform", "Commands", "name", "getJson", "Commands", "name", "platform", "Commands", "name", "name", "invoke", "Commands", "text", "type", "platform", "invoke", "Commands", "name", "close", "Commands", "name", "close", "Commands", "name", "Commands", "state", "getIpc", "invoke", "create", "ipc", "restoredError", "options", "invoke", "invoke", "invoke", "platform", "stop", "platform", "Commands", "name", "stop", "create", "start", "number", "invoke", "getLanguages", "getLanguageConfiguration", "assetDir", "getLanguages", "getLanguageConfiguration", "platform", "state", "fn", "state", "hydrate", "getLanguageConfiguration", "getLanguages", "create", "state", "invoke", "platform", "array", "start", "getText", "text", "state", "state", "hydrate", "exit", "invoke", "reload", "minimize", "unmaximize", "maximize", "close", "openNew", "zoomIn", "zoomOut", "invoke", "reload", "platform", "state", "hydrate", "pathSeparator", "invoke", "platform", "create", "name", "ModuleWorker", "canActivate", "ipc", "name", "canActivate", "ipc", "name", "WebSocket", "listen", "create", "restoreError", "handleMessage", "listen", "restoredError", "ipc", "invoke", "state", "name", "ipc", "listen", "state", "platform", "text", "getText", "handleEditorChange", "handleWorkspaceChange", "execute", "combineResults", "getPathSeparator", "remove", "protocol", "Web", "readFile", "writeFile", "readFile", "writeFile", "getText", "getJson", "setJson", "LocalStorage", "SessionStorage", "clear", "getText", "getJson", "setText", "setJson", "LocalStorage", "getPath", "defaultContent", "platform", "getText", "assetDir", "readFile", "dirname", "mkdir", "writeFile", "error", "readFile", "writeFile", "readFile", "writeFile", "state", "resolve", "reject", "object", "name", "target", "state", "db", "state", "handleMessage", "startRecording", "invoke", "resolve", "reject", "now", "ipc", "name", "readFile", "writeFile", "canBeRestored", "getPathSeparator", "mkdir", "name", "readDirWithFileTypes", "readFile", "remove", "rename", "writeFile", "getModule", "getPathSeparator", "mkdir", "name", "readDirWithFileTypes", "readFile", "remove", "rename", "writeFile", "canBeRestored", "copy", "ensureFile", "getBlobUrl", "getPathSeparator", "mkdir", "name", "readDirWithFileTypes", "readFile", "remove", "rename", "writeFile", "invoke", "platform", "canBeRestored", "chmod", "getPathSeparator", "mkdir", "name", "readDirWithFileTypes", "readFile", "remove", "state", "writeFile", "assetDir", "text", "Blob", "readFile", "getBlobUrl", "getPathSeparator", "name", "readDirWithFileTypes", "readFile", "state", "getType", "Blob", "name", "options", "pathSeparator", "state", "addHandle", "getHandle", "Directory", "File", "Directory", "File", "canBeRestored", "getPathSeparator", "readDirWithFileTypes", "readFile", "writeFile", "getChildHandles", "getFileHandle", "name", "type", "getHandle", "dirname", "text", "chmod", "getPathSeparator", "mkdir", "name", "readDirWithFileTypes", "readFile", "remove", "state", "writeFile", "getDirent", "canBeRestored", "createFile", "createFolder", "getPathSeparator", "mkdir", "name", "readDirWithFileTypes", "readFile", "remove", "rename", "state", "writeFile", "getDirent", "state", "readFile", "remove", "rename", "mkdir", "writeFile", "createFile", "readDirWithFileTypes", "getBlobUrl", "copy", "getRealPath", "stat", "chmod", "Web", "protocol", "state", "hydrate", "set", "platform", "assetDir", "invoke", "writeFile", "File", "Separator", "ActivityBar", "EditorImage", "Explorer", "Extensions", "KeyBindings", "Main", "None", "Search", "SimpleBrowser", "Terminal", "TitleBar", "Audio", "Separator", "ActivityBar", "UiStrings", "getMenuEntries", "Separator", "UiStrings", "getMenuEntries", "state", "invoke", "assetDir", "text", "fn", "name", "clear", "getJson", "setJson", "SessionStorage", "hydrate", "object", "fn", "state", "setJson", "getJson", "state", "create", "fn", "getModule", "name", "register", "focus", "instanceSavedState", "newState", "commands", "error", "None", "File", "None", "state", "hydrate", "platform", "assetDir", "invoke", "File", "None", "setState", "state", "state", "x", "y", "pathSeparator", "type", "stat", "readDirWithFileTypes", "newDirent", "create", "getPathSeparator", "getPath", "dispose", "render", "None", "map", "name", "type", "pathSeparator", "state", "remove", "newDirent", "rename", "createFile", "mkdir", "state2", "getState", "x", "y", "getRealPath", "stat", "writeFile", "fileExtension", "dirent", "fn", "state", "pathSeparator", "dirent", "childDirents", "focus", "state", "state", "state", "lastIndex", "state", "state", "state", "state", "x", "y", "state", "x", "y", "state", "x", "y", "mergeDirents", "pathSeparator", "from", "copy", "state", "handleDrop", "mergeDirents", "getMergedDirents", "pathSeparator", "name", "Directory", "writeFile", "state", "getModule", "platform", "state", "state", "pathSeparator", "from", "copy", "handleDrop", "state", "x", "y", "getState", "state2", "state3", "state", "copy", "getState", "rename", "Commands", "create", "dispose", "name", "render", "create", "loadContent", "dispose", "hasFunctionalRender", "hasFunctionalResize", "render", "resize", "state", "Commands", "Css", "create", "dispose", "hasFunctionalRender", "hasFunctionalResize", "loadContent", "name", "render", "resize", "File", "invoke", "textSearch", "state", "textSearch", "textSearch", "create", "setDeltaY", "handleWheel", "state", "UiStrings", "create", "saveState", "loadContent", "updateIcon", "handleIconThemeChange", "dispose", "getPath", "handleContextMenuMouseAt", "handleContextMenuKeyboard", "handleClick", "hasFunctionalResize", "resize", "hasFunctionalRender", "getVisible", "renderItems", "render", "state", "textSearch", "File", "x", "y", "focusIndex", "state", "focusFirst", "state", "focusIndex", "focusLast", "state", "focusIndex", "focusNext", "state", "focusFirst", "focusIndex", "state", "focusIndex", "focusPrevious", "state", "focusIndex", "state", "focusIndex", "resolve", "reject", "setDeltaY", "state", "setState", "setDeltaY", "state", "state", "setDeltaY", "state", "handleWheel", "state", "setDeltaY", "state", "y", "setDeltaY", "getNewDeltaPercent", "state", "y", "setDeltaY", "LazyCommands", "Commands", "Css", "LazyCommands", "UiStrings", "create", "dispose", "handleClick", "handleContextMenuKeyboard", "handleContextMenuMouseAt", "handleIconThemeChange", "hasFunctionalRender", "hasFunctionalResize", "loadContent", "name", "render", "resize", "saveState", "text", "create", "dispose", "acceptInput", "getChangedFiles", "loadContent", "handleClick", "hasFunctionalResize", "resize", "hasFunctionalRender", "renderValue", "render", "state", "text", "readFile", "Commands", "Css", "acceptInput", "create", "dispose", "handleClick", "hasFunctionalRender", "hasFunctionalResize", "loadContent", "name", "render", "resize", "create", "loadContent", "write", "dispose", "resize", "clear", "state", "send", "invoke", "Commands", "Css", "clear", "create", "dispose", "loadContent", "name", "resize", "write", "create", "loadContent", "dispose", "hasFunctionalRender", "render", "state", "Commands", "Css", "create", "dispose", "hasFunctionalRender", "loadContent", "name", "render", "install", "uninstall", "getExtension", "invoke", "Disabled", "Disabled", "Extensions", "Search", "SourceControl", "getIcon", "getId", "platform", "getExtensions", "getId", "getIcon", "getExtensions", "None", "getListHeight", "state", "create", "getVisible", "handleInput", "loadContent", "dispose", "handleBlur", "hasFunctionalResize", "resize", "hasFunctionalRender", "renderHeight", "renderNegativeMargin", "renderFocusedIndex", "renderScrollBar", "render", "None", "state", "getListHeight", "Extensions", "install", "uninstall", "x", "y", "handleClick", "state", "focusIndex", "handleClickCurrent", "state", "handleClick", "handleClickCurrentButKeepFocus", "state", "handleClick", "Commands", "Css", "LazyCommands", "create", "dispose", "handleBlur", "handleInput", "hasFunctionalRender", "hasFunctionalResize", "loadContent", "name", "render", "resize", "state", "getWebExtensionManifest", "invoke", "ipc", "platform", "invoke", "create", "loadContent", "handleData", "dispose", "handleError", "render", "state", "options", "invoke", "Commands", "Css", "create", "dispose", "handleData", "handleError", "loadContent", "name", "render", "execute", "combineResults", "combineResults", "execute", "UiStrings", "create", "loadContent", "focusIndex", "dispose", "hasFunctionalRender", "renderFocusedIndex", "renderMessage", "render", "state", "Commands", "Css", "create", "dispose", "focusIndex", "hasFunctionalRender", "loadContent", "name", "render", "create", "loadContent", "dispose", "state", "Commands", "create", "dispose", "loadContent", "state", "getVisible", "visibleCursors", "setDeltaY", "state", "fn", "array", "start", "getVisible", "init_EditorSelection", "start", "newPosition", "i", "tokenizeLine", "getVisible", "tokenizeLine", "type", "TokenMap", "start", "text", "create", "setDeltaY", "setText", "renderScrollBar", "render", "init_EditorSelection", "getVisible", "text", "combineResults", "execute", "create", "saveState", "getLanguageId", "loadContent", "contentLoaded", "contentLoadedEffects", "handleLanguagesChanged", "resize", "hasFunctionalRender", "render", "focus", "shouldApplyNewState", "readFile", "state", "setState", "setText", "applyEdit", "removeListener", "state", "fn", "Format", "combineResults", "execute", "origin", "start", "x", "y", "state", "x", "y", "text", "changes", "handleContextMenu", "x", "y", "moveRangeToPosition", "moveRangeToPosition", "create", "create", "last", "next", "getNewSelections", "getNewSelections", "getNewSelections", "getPosition", "getEdgePosition", "text", "changes", "getChanges", "changes", "start", "close", "handleBlur", "x", "y", "create", "load", "text", "removeListener", "dispose", "state", "copy", "text", "state", "setSelections", "execute", "format", "edit", "start", "Format", "combineResults", "execute", "getLocation", "getNoLocationFoundMessage", "getErrorMessage", "isNoProviderFoundError", "displayErrorMessage", "UiStrings", "getErrorMessage", "combineResults", "execute", "UiStrings", "getLocation", "getNoLocationFoundMessage", "getErrorMessage", "isNoProviderFoundError", "getChanges", "RE_WORD_START", "RE_WORD_END", "getNewSelections", "x", "y", "x", "y", "getTokenIndex", "x", "y", "state", "y", "handleScrollBarMove", "getNewPercent", "state", "y", "state", "getNewSelections", "newSelections", "state", "x", "y", "fn", "combineResults", "execute", "tabCompletion", "getChanges", "line", "getErrorMessage", "tabCompletion", "state", "RE_CHARACTER", "text", "getChanges", "i", "handleTouchStart", "state", "handleTouchEnd", "state", "setDeltaY", "setDeltaYFixedValue", "handleTouchMove", "state", "setDeltaYFixedValue", "getNewSelections", "x", "y", "getChanges", "i", "getChanges", "start", "editor", "editor", "state", "x", "y", "x", "y", "text", "text", "format", "getText", "writeFile", "getNewSelections", "start", "newSelections", "getNewSelections", "getNewSelections", "getNewSelections", "RE_ALPHA_NUMERIC", "isAlphaNumeric", "getWordStartIndex", "getWordEndIndex", "getWordMatchAtPosition", "line", "endColumnIndex", "start", "getSelectUpChanges", "start", "getLanguageConfiguration", "line", "startColumnIndex", "endColumnIndex", "RE_WHITESPACE_AT_START", "getLanguageConfiguration", "edit", "state", "last", "documentEdits", "cursorEdits", "start", "Commands", "Css", "Events", "LazyCommands", "contentLoaded", "contentLoadedEffects", "create", "focus", "handleLanguagesChanged", "hasFunctionalRender", "loadContent", "name", "render", "resize", "saveState", "shouldApplyNewState", "create", "loadContent", "dispose", "hasFunctionalRender", "render", "state", "readFile", "Commands", "create", "dispose", "hasFunctionalRender", "loadContent", "name", "render", "readFile", "protocol", "Blob", "create", "create", "loadContent", "dispose", "handleWheel", "hasFunctionalRender", "render", "state", "x", "y", "state", "copyPath", "state", "handleContextMenu", "state", "x", "y", "Commands", "Css", "LazyCommands", "create", "dispose", "handleWheel", "hasFunctionalRender", "loadContent", "name", "render", "create", "loadContent", "dispose", "state", "update", "Commands", "create", "dispose", "loadContent", "name", "Tab", "focusIndex", "state", "UiStrings", "create", "loadContent", "handleContextMenu", "handleBlur", "focus", "hasFunctionalResize", "resize", "renderFocusedIndex", "render", "hasFunctionalRender", "state", "Explorer", "Tab", "Search", "SourceControl", "Extensions", "activityBarItem", "x", "y", "focusIndex", "focus", "state", "focusIndex", "focusFirst", "state", "focusIndex", "focusLast", "state", "focusIndex", "focusNext", "state", "focusIndex", "focusPrevious", "state", "focusIndex", "handleClick", "state", "x", "y", "getPosition", "state", "handleClick", "Commands", "Css", "Events", "LazyCommands", "create", "focus", "handleBlur", "handleContextMenu", "hasFunctionalRender", "hasFunctionalResize", "loadContent", "name", "render", "resize", "create", "loadContent", "dispose", "selectIndex", "hasFunctionalRender", "renderSelectedIndex", "render", "hasFunctionalResize", "resize", "state", "Terminal", "focus", "load", "Commands", "Css", "create", "dispose", "hasFunctionalRender", "hasFunctionalResize", "loadContent", "name", "render", "resize", "selectIndex", "create", "getSavedViewletId", "loadContent", "getContentDimensions", "getChildren", "openViewlet", "dispose", "close", "resize", "focus", "hasFunctionalRender", "render", "Explorer", "state", "load", "ActivityBar", "Commands", "Css", "close", "create", "dispose", "focus", "getChildren", "hasFunctionalRender", "loadContent", "name", "openViewlet", "render", "resize", "create", "loadContent", "getChildren", "hasFunctionalRender", "render", "hasFunctionalResize", "resize", "state", "Commands", "Css", "create", "getChildren", "hasFunctionalRender", "hasFunctionalResize", "loadContent", "name", "render", "resize", "state", "register", "execute", "combineResults", "register", "execute", "create", "loadContent", "contentLoadedEffects", "getIndex", "handleClick", "hasFunctionalResize", "resize", "hasFunctionalRender", "renderItems", "render", "state", "name", "text", "Commands", "Css", "contentLoadedEffects", "create", "handleClick", "hasFunctionalRender", "hasFunctionalResize", "loadContent", "name", "render", "resize", "state", "get", "state", "getId", "EditorImage", "Audio", "fileExtension", "type", "KeyBindings", "SimpleBrowser", "canBeRestored", "create", "saveState", "loadContent", "getChildren", "contentLoaded", "save", "focus", "handleDrop", "getId", "dispose", "focusIndex", "focusFirst", "focusLast", "focusPrevious", "focusNext", "resize", "hasFunctionalRender", "render", "state", "Main", "load", "options", "instance", "invoke", "x", "y", "get", "Commands", "Css", "contentLoaded", "create", "dispose", "focus", "focusFirst", "focusIndex", "focusLast", "focusNext", "focusPrevious", "getChildren", "handleDrop", "hasFunctionalRender", "loadContent", "name", "render", "resize", "save", "saveState", "combineResults", "execute", "getIcon", "filterCompletionItems", "create", "loadContent", "handleError", "handleSelectionChange", "advance", "dispose", "hasFunctionalRender", "renderItems", "renderFocusedIndex", "render", "getState", "state", "filterCompletionItems", "x", "y", "getIcon", "selectIndex", "state", "Commands", "Css", "LazyCommands", "advance", "create", "dispose", "handleError", "handleSelectionChange", "handleWheel", "hasFunctionalRender", "loadContent", "name", "render", "setDeltaY", "combineResults", "execute", "create", "dispose", "focusFirst", "focusIndex", "focusLast", "focusNext", "focusPrevious", "hasFunctionalRender", "loadContent", "render", "selectCurrent", "selectIndex", "UiStrings", "getMessage", "getName", "renderMessage", "renderFocusedIndex", "name", "state", "getReferences", "create", "loadContent", "contentLoaded", "dispose", "hasFunctionalRender", "render", "state", "Commands", "Css", "contentLoaded", "create", "dispose", "hasFunctionalRender", "loadContent", "name", "render", "combineResults", "execute", "create", "loadContent", "contentLoaded", "dispose", "hasFunctionalRender", "render", "state", "Commands", "contentLoaded", "create", "dispose", "hasFunctionalRender", "loadContent", "name", "render", "InsertLineBreak", "RE_ALPHA_NUMERIC", "isAlphaNumeric", "getFn", "newValue", "before", "after", "InsertLineBreak", "fn", "File", "Noop", "Number", "ColorTheme", "Symbol", "View", "UiStrings", "name", "Symbol", "WorkspaceSymbol", "View", "None", "UiStrings", "getFilterValue", "getLabel", "getNoResults", "getPicks", "getPlaceholder", "name", "selectPick", "assetDir", "platform", "builtinPicks", "UiStrings", "getFilterValue", "getHelpEntries", "getNoResults", "getPicks", "getPlaceholder", "name", "selectPick", "UiStrings", "getFilterValue", "getHelpEntries", "getNoResults", "getPicks", "getPlaceholder", "name", "selectPick", "getFilterValue", "getHelpEntries", "getNoResults", "getPicks", "getPlaceholder", "name", "selectPick", "UiStrings", "getFilterValue", "getHelpEntries", "getPicks", "getPlaceholder", "selectPick", "state", "searchFile", "state", "searchFile", "removeLeadingSlash", "state", "assetDir", "searchFile", "invoke", "getModule", "searchFile", "protocol", "Web", "getFilterValue", "getHelpEntries", "getLabel", "getNoResults", "getPicks", "getPlaceholder", "name", "selectPick", "UiStrings", "searchFile", "getIcon", "state", "getFilterValue", "getHelpEntries", "getLabel", "getNoResults", "getPicks", "getPlaceholder", "name", "selectPick", "state", "Symbol", "WorkspaceSymbol", "View", "None", "UiStrings", "getHelpEntries", "getNoResults", "getPicks", "getPlaceholder", "name", "selectPick", "UiStrings", "getFilterValue", "getHelpEntries", "getLabel", "getNoResults", "getPicks", "getPlaceholder", "selectPick", "toPick", "UiStrings", "getFilterValue", "getLabel", "getNoResults", "getPicks", "getPlaceholder", "selectPick", "setColorTheme", "toPick", "platform", "assetDir", "invoke", "load", "File", "Noop", "Number", "ColorTheme", "Symbol", "View", "create", "getVisible", "loadContent", "dispose", "handleBlur", "selectIndex", "handleInput", "handleClickAt", "hasFunctionalRender", "renderValue", "renderItems", "renderFocusedIndex", "renderHeight", "render", "state", "load", "x", "y", "focusIndex", "state", "minLineY", "maxLineY", "focusFirst", "state", "focusIndex", "focusLast", "state", "focusIndex", "focusNext", "state", "focusIndex", "focusPrevious", "state", "focusIndex", "Commands", "Css", "LazyCommands", "create", "dispose", "handleBlur", "handleClickAt", "handleInput", "handleWheel", "hasFunctionalRender", "loadContent", "name", "render", "selectIndex", "setDeltaY", "assetDir", "type", "UiStrings", "getVisible", "renderValue", "renderScrollBar", "render", "create", "saveState", "getSavedValue", "loadContent", "handleInput", "setDeltaY", "handleWheel", "handleClick", "hasFunctionalRender", "state", "Commands", "Css", "create", "handleClick", "handleInput", "handleWheel", "hasFunctionalRender", "loadContent", "name", "render", "saveState", "setDeltaY", "UiStrings", "create", "getPosition", "loadContent", "handleInput", "focusIndex", "focusFirst", "focusLast", "focusNext", "focusPrevious", "hasFunctionalRender", "renderValue", "render", "state", "Commands", "Css", "create", "focusFirst", "focusIndex", "focusLast", "focusNext", "focusPrevious", "getPosition", "handleInput", "hasFunctionalRender", "loadContent", "name", "render", "encode", "name", "text", "start", "text2", "next", "type", "create", "getSize", "loadContent", "hasFunctionalResize", "resize", "hasFunctionalRender", "renderSize", "render", "None", "readFile", "getIcon", "platform", "state", "getExtension", "name", "state", "x", "y", "Commands", "Css", "LazyCommands", "create", "hasFunctionalRender", "hasFunctionalResize", "loadContent", "name", "render", "resize", "get", "platform", "create", "loadContent", "dispose", "hasFunctionalResize", "resize", "hasFunctionalRender", "render", "state", "get", "state", "state", "state", "Commands", "Css", "LazyCommands", "create", "dispose", "hasFunctionalRender", "hasFunctionalResize", "loadContent", "name", "render", "resize", "getMenuEntries", "create", "loadContent", "hasFunctionalRender", "renderFocusedIndex", "render", "state", "state", "state", "selectIndex", "selectItem", "handleMouseEnter", "handleMouseLeave", "focusIndex", "focusFirst", "focusLast", "focusPrevious", "focusNext", "Separator", "x", "y", "getMenuEntries", "text", "fn", "state", "getMenuEntries", "focusIndex", "state", "focusFirst", "getIndexToFocusNextStartingAt", "state", "focusIndex", "focus", "state", "focusFirst", "focusLast", "getIndexToFocusPreviousStartingAt", "state", "focusIndex", "focusNext", "getIndexToFocusNextStartingAt", "state", "focusIndex", "focusPrevious", "getIndexToFocusPreviousStartingAt", "state", "focusIndex", "state", "focus", "state", "state", "state", "state", "focusPrevious", "state", "state", "focusPrevious", "focusNext", "state", "focusNext", "getMenuEntries", "state", "state", "focusLast", "state", "state", "state", "state", "focusFirst", "state", "state", "state", "selectIndexNone", "state", "selectIndexRestoreFocus", "state", "selectIndexSubMenu", "state", "getMenuEntries", "state", "selectIndexNone", "selectIndexSubMenu", "selectIndexRestoreFocus", "state", "newMenus", "item", "getMenuEntries", "focusIndex", "state", "state", "Css", "LazyCommands", "create", "hasFunctionalRender", "loadContent", "name", "render", "Panel", "SideBar", "None", "create", "saveState", "loadContent", "show", "hide", "isEqual", "hasFunctionalRender", "render", "Main", "ActivityBar", "TitleBar", "platform", "None", "state", "location", "Layout", "load", "x", "y", "SideBar", "Panel", "resize", "Commands", "create", "hasFunctionalRender", "loadContent", "name", "render", "saveState", "focus", "reload", "show", "hide", "invoke", "x", "y", "string", "getKeyBindings", "hydrate", "create", "saveState", "getId", "loadContent", "show", "hide", "handleInput", "hasFunctionalRender", "hasFunctionalResize", "resize", "dispose", "renderTitle", "renderButtonsEnabled", "render", "state", "getKeyBindings", "focus", "Main", "openExternal", "state", "openBackgroundTab", "state", "handleContextMenu", "state", "x", "y", "inspectElement", "state", "x", "y", "copyImage", "state", "x", "y", "backward", "state", "forward", "state", "openDevtools", "state", "reload", "state", "cancelNavigation", "state", "Commands", "Css", "LazyCommands", "create", "dispose", "handleInput", "hasFunctionalRender", "hasFunctionalResize", "hide", "loadContent", "name", "render", "resize", "saveState", "show", "create", "resolve", "reject", "create", "handleMessage", "create", "ipc", "invoke", "resize", "render", "ipc", "resolve", "reject", "create", "saveState", "loadContent", "hasFunctionalResize", "resize", "resizeEffect", "hasFunctionalRender", "render", "state", "readFile", "ipc", "ModuleWorker", "focusPage", "state", "ipc", "render", "state", "focusPage", "state", "focusPage", "zoomIn", "state", "zoomOut", "state", "state", "Css", "LazyCommands", "create", "hasFunctionalRender", "hasFunctionalResize", "loadContent", "name", "render", "resize", "resizeEffect", "saveState", "create", "loadContent", "dispose", "hasFunctionalRender", "renderSrc", "render", "state", "Commands", "Css", "create", "dispose", "hasFunctionalRender", "loadContent", "name", "render", "renderSrc", "load", "Explorer", "Search", "Terminal", "Extensions", "EditorImage", "ActivityBar", "TitleBar", "Main", "KeyBindings", "SimpleBrowser", "Audio", "invoke", "state", "getKeyBindings", "ipc", "create", "type", "load", "handleMessage", "commands", "focus", "send", "dispose", "resize", "getState", "setState", "getFn", "fn", "hasInstance", "type", "load", "state", "UiStrings", "getMenuEntries", "getFocusedDirent", "Separator", "getState", "UiStrings", "getMenuEntries", "Separator", "getMenuEntries", "UiStrings", "getMenuEntries", "UiStrings", "getMenuEntries", "UiStrings", "getMenuEntries", "getRecentlyOpened", "Separator", "getMenuEntries", "UiStrings", "getMenuEntries", "UiStrings", "getMenuEntries", "getMenuEntries", "UiStrings", "getMenuEntries", "getMenuEntries", "UiStrings", "File", "getMenuEntries", "UiStrings", "File", "getMenuEntries", "getModule", "platform", "getMenuEntries", "getMenuEntries", "toContextMenuItem", "UiStrings", "getMenuEntries", "UiStrings", "getMenuEntries", "UiStrings", "getMenuEntries", "UiStrings", "getMenuEntries", "getMenuEntriesDefault", "x", "y", "getModule", "getMenuEntries", "File", "inject", "state", "Separator", "x", "y", "getMenuEntries", "invoke", "show", "x", "y", "show", "x", "y", "getModule", "show", "platform", "x", "y", "Commands", "name", "show", "invoke", "number", "options", "open", "invoke", "open", "open", "open", "getModule", "open", "platform", "clearCache", "name", "platform", "invoke", "text", "state", "hydrate", "open", "Commands", "name", "clearCache", "invoke", "open", "invoke", "state", "close", "handleClick", "platform", "open", "options", "Commands", "name", "close", "handleClick", "invoke", "Commands", "name", "hydrate", "Commands", "name", "hydrate", "show", "x", "y", "Commands", "show", "execute", "rename", "open", "x", "y", "edit", "start", "Commands", "name", "open", "Commands", "name", "exit", "Commands", "writeText", "text", "invoke", "Commands", "name", "writeText", "Commands", "name", "Commands", "name", "close", "maximize", "minimize", "unmaximize", "zoomIn", "zoomOut", "Commands", "name", "Commands", "name", "Commands", "Commands", "name", "Commands", "options", "Commands", "name", "Commands", "name", "chmod", "mkdir", "readDirWithFileTypes", "readFile", "remove", "writeFile", "Commands", "name", "Commands", "name", "hydrate", "state", "show", "hide", "getBlobUrl", "Commands", "name", "hide", "show", "Commands", "name", "Commands", "hydrate", "Commands", "Commands", "execute", "Commands", "name", "clear", "getJson", "getText", "setJson", "setText", "Commands", "name", "focusFirst", "focusIndex", "focusLast", "focusNext", "focusPrevious", "handleMouseEnter", "handleMouseLeave", "selectIndex", "selectItem", "Commands", "name", "state", "fn", "Commands", "state", "create", "handleClick", "dispose", "type", "text", "options", "Commands", "name", "create", "dispose", "handleClick", "openExternal", "openNew", "platform", "Commands", "name", "openExternal", "Commands", "Commands", "name", "addHandle", "getHandle", "Commands", "name", "hydrate", "isValid", "getRecentlyOpened", "hydrate", "readFile", "writeFile", "invoke", "platform", "Commands", "getRecentlyOpened", "hydrate", "Commands", "hydrate", "hydrate", "uninstall", "platform", "Commands", "hydrate", "uninstall", "Commands", "Commands", "name", "clear", "getJson", "state", "name", "fn", "create", "options", "text", "type", "create", "getTmpDir", "name", "fn", "state", "text", "options", "focus", "focusFirst", "focusLast", "focusNext", "focusPrevious", "handleClick", "handleContextMenu", "selectCurrent", "execute", "selectItem", "text", "copyLineDown", "cursorCharacterLeft", "cursorCharacterRight", "cursorDown", "cursorUp", "cursorWordLeft", "cursorWordRight", "format", "goToDefinition", "goToTypeDefinition", "openCompletion", "openFindWidget", "setDeltaY", "setSelections", "type", "text", "focusNext", "setValue", "evalInRendererProcess", "acceptEdit", "cancelEdit", "expandRecursively", "focus", "focusFirst", "focusIndex", "focusLast", "focusNext", "handleArrowLeft", "handleClick", "newFile", "openContextMenu", "removeDirent", "rename", "updateEditingValue", "addNodeExtension", "addWebExtension", "chmod", "getTmpDir", "mkdir", "writeFile", "options", "openUri", "getNodePath", "focusIndex", "focusNext", "focusPrevious", "open", "selectItem", "setValue", "setValue", "update", "open", "closeMenu", "focus", "focusFirst", "focusIndex", "focusLast", "focusNext", "focusPrevious", "handleKeyArrowDown", "handleKeyArrowLeft", "handleKeyArrowRight", "handleKeyArrowUp", "handleKeyEnd", "handleKeyEscape", "handleKeyHome", "handleKeySpace", "toggleIndex", "toggleMenu", "setPath", "setIconTheme", "getBaseUrl", "printError", "execute", "object", "name", "fn", "state", "text", "test", "Commands", "name", "execute", "Commands", "name", "Commands", "focus", "send", "Commands", "name", "reload", "Commands", "Commands", "hydrate", "load", "Blob", "Menu", "Viewlet", "Blob", "Menu", "Viewlet", "state", "register", "load", "state", "watch", "invoke", "platform", "set", "send", "mark", "start", "mark", "listen", "platform", "hydrate", "startRecording", "create", "load"]
7
+ }